0

我最近将一个视频解码器(用 C 编写)移植到了 android 平台。它的输出是 YUV 格式。所以我不得不将它转换为 RGB8888 以使用本机代码中的 ANativeWindow API 显示它。尽管移植成功,但对于 416x240 的输入,我能够渲染的输出约为 8.5fps,在使用优化级别 -O2(LOCAL_C_FLAG) 之后也是如此。

  • 有没有一种方法可以更快地渲染视频而无需进行 c 和汇编级别的优化?
  • 即使解码速度较慢,有没有办法让它看起来好像视频运行得更快?

任何有用的建议将不胜感激。

4

1 回答 1

1

您可以使用 GLSurfaceView/Renderer 对来进行渲染。

  1. 在您自己的 GLSurfaceView.Renderer 实现中,使用本机方法覆盖 OnDrawFrame。

  2. 在您的本机实现中,使用 OpenGL ES.20 片段着色器进行色彩空间转换(以及缩放)。

通过这种方式,您不必担心视图/位图/UI 同步的细节。而且 OpenGL ES 真的很快。

于 2013-02-26T22:25:43.447 回答