我正在寻找最快的方法,将从MediaCodec解码器接收到的图像帧绘制到Android设备屏幕上。以下是重要的约束和说明:
不能使用MediaPlayer。不允许使用中间应用程序。
必须尽可能快地将MediaCodec解码器的输出帧绘制到屏幕上(最小化延迟)。
可用的解码器输出格式如下:
ColorFormat[0] 0x00000013 COLOR_FormatYUV420Planar
ColorFormat[1] 0x00000015 COLOR_FormatYUV420SemiPlanar
ColorFormat[2] 0x7F000001 OMX_SEC_COLOR_FormatNV12TPhysicalAddress
ColorFormat[3] 0x7FC00002 OMX_SEC_COLOR_FormatNV12Tiled视频分辨率以及每个输出帧的分辨率都为960x720。
目标平台是Galaxy Note II,方法可以针对该平台进行优化(例如利用可用的硬件功能)。这不需要在其他平台上运行或成为通用解决方案。
EGLDisplay
。每当调用updateTexImage()
时,必须设置EGLDisplay
和EGLContext
并且它们的值必须相同。这些是使用eglMakeCurrent()
针对每个线程进行设置的。请参阅SurfaceTexture
文档中的最后一段,特别注意不能直接从onFrameAvailable()
回调中调用updateTexImage()
。 - fadden