vit*_*kot 7 android ffmpeg opengl-es android-ndk
我创建了一个基于FFmpeg的电影播放器.它工作正常.解码速度非常快,在LG P970(带霓虹灯的Cortex A8)上,平均70 fps,640 x 424分辨率视频流,包括YUV2RGB转换.但是,存在一个瓶颈.它是在Canvas上绘制的.
我使用jnigraphics本机库将图片数据填充到本机侧的位图中,然后在SurfaceView中的Canvas上绘制这个位图.这是非常简单和常见的方法,但绘图需要44毫秒的位图,640 x 424分辨率,将fps降低到23并使这种技术无法使用......它需要比整个A/V帧解码更多!
有没有什么方法可以更快地绘制位图?我更喜欢使用OpenGLES 2在本机代码中完全呈现,但我读过它也可能很慢.所以现在怎么办?...
如何尽可能快地渲染位图?
在 GLES1.x 中绘制它们。您不需要使用 GLES2,因为您对着色器没有用处,或者至少在您的问题的上下文中没有用处,这将是使用 GLES2.x 的一般主要原因。因此,为了简单起见,GLES1.x 将是理想的选择。您所需要做的就是将字节缓冲区绘制到屏幕上。在我的 Galaxy S (Vibrant) 上,这大约需要 3 毫秒。我的壁纸中 byte[] 的大小是 800x480x3 或 1152000,这比您正在使用的要大得多。
我相信本指南应该为您指明正确的方向。
http://qdevarena.blogspot.com/2009/02/how-to-load-texture-in-android-opengl.html
至于从本机代码访问画布的概念,我会完全避免这种情况,并通过尽可能将所有内容卸载到 GPU 来遵循 OpenGL 实现。
| 归档时间: |
|
| 查看次数: |
2347 次 |
| 最近记录: |