OpenMAX大意 二 组件缓冲处理

二、组件缓冲处理

当组件完成数据输出(Fill Buffer)后会调用FillBufferDone回调函数以通知应用层准备数据(仅非Tunneled模式)
函数C代码原型:
FillBufferDone(OMX_OUT OMX_HANDLETYPE hComponent, OMX_OUT OMX_PTR pAppData, OMX_OUT OMX_BUFFERHEADERTYPE *pBuffer)
其中hComponent是组件句柄;pAppData为GetHandle时赋入的应用数据;pBuffer为缓冲地址。由于该缓冲已经填写完毕(通常是一帧完成),回调函数将改数据输出到适当位置,完后再次调用OMX_FillThisBuffer,链入下一轮工作。

当组件完成数据消耗(Empty Buffer)后会调用EmptyBufferDone回调函数以通知应用层准备数据(仅非Tunneled模式)
函数C代码原型:
EmptyBufferDone(OMX_OUT OMX_HANDLETYPE hComponent, OMX_OUT OMX_PTR pAppData, OMX_OUT OMX_BUFFERHEADERTYPE *pBuffer)
三个参数含义同上。由于改缓冲已经消耗殆尽,回调函数将读入数据载入缓冲,完后再次调用OMX_EmptyThisBuffer,链入下一轮工作。

上述缓冲操作是组件运行的一个环节,OpenMAX组件运行于一个独立线程。
 

猜你喜欢

转载自blog.csdn.net/qq_36449541/article/details/81484661