Creé un reproductor de películas basado en FFmpeg. Funciona bien. La decodificación es bastante rápida, en LG P970 (Cortex A8 con Neon) tengo un promedio de 70 fps con una secuencia de video de resolución de 640 x 424, incluida la conversión YUV2RGB. Sin embargo, hay un cuello de botella. Está dibujando en Canvas.Cómo aumentar el rendimiento del dibujo de mapas de bits en Android
Utilizo la biblioteca nativa jnigraphics para rellenar los datos de imagen en el mapa de bits en el lado nativo y luego dibujo este mapa de bits en Canvas en SurfaceView. Es un enfoque bastante simple y común, pero el dibujo lleva 44 ms para mapa de bits con una resolución de 640 x 424 que reduce fps a 23 y hace que esta técnica no se pueda usar ... ¡Se necesita mucho más que la decodificación de cuadros de A/V!
¿Hay algún método para dibujar mapas de bits significativamente más rápido? Preferiría renderizar completamente en el código nativo usando OpenGLES 2, pero lo he leído también podría ser slow. ¿Y ahora qué ...?
¿Cómo puedo representar mapas de bits lo más rápido posible?
¿no hay una forma de acceder al búfer de SurfaceView directamente desde el código nativo? La vista previa de la cámara hace esto afaik. – zapl
AFAIK no, al menos no forma estándar utilizando NDK. Por supuesto, es posible enlazar con fuentes de Android, pero podría causar problemas con la compatibilidad ... – vitakot