转自 http://blog.sina.com.cn/foreverlovelost
buffer的处理主要由以下4个命令来进行驱动
buffer的处理主要由以下4个命令来进行驱动
OMXCodec使用OMX_EmptyThisBuffer传递未解码的buffer给component,
component收到该命令后会读取input port buffer中的数据,将其组装成帧进行解码,
读取buffer中的数据完成后会调用EmptyBufferDone通知OMXCodec
compoment使用EmptyBufferDone通知OMXCodec已完成inputportbuffer的读取,
OMXCodec收到该命令后会通过mVideoTrack读取新的视频buffer到inputport的buffer中,
并调用OMX_EmptyThisBuffer通知component
OMXCodec使用OMX_FillThisBuffer传递空的bffer给component用于存储解码后的帧,
component收到该命令后将解码好的帧数据复制到该buffer上,
然后调用FillBufferDone通知OMXCodec
compoment使用FillBufferDone通知OMXCodec已完成outputportbuffer的填充,
OMXCodec收到该命令后将解码好的帧传递给mISurface进行图像绘制,
绘制完毕后使用OMX_FillThisBuffer通知component有空的buffer可填充。