打开APP
未登录
开通VIP,畅享免费电子书等14项超值服
开通VIP
首页
好书
留言交流
下载APP
联系客服
OpenMAX大意(六)
开花结果
>《Openmax》
2010.09.15
关注
OpenMAX过滤器
OpenMAX过滤器基类由OpenMAX直接继承,在omx_base_port.c中定义。
Filter组件含输入输出各一个端口。
Filter组件主要定义了BufferMgmtFunction方法,即Filter组件进行数据处理的通常行为。
函数主体是一个在OMX_StateIdle、OMX_StateExecuting或OMX_StatePause状态下,或OMX_TransStateLoadedToIdle转换过程中执行的死循环。
if 输入或输出端口正在被冲刷
等待冲刷完毕
if 需要输入缓冲且该缓冲队列信号量pInputSem非正(输入缓冲不可得),且当前状态并非Loaded或Invalid
阻塞本线程在bMgmtSem,等待情况发生变化
if 组件状态转为Loaded或Invalid
退出循环
if 需要输出缓冲且该缓冲队列信号量pOutputSem非正(输入缓冲不可得),且当前状态并非Loaded或Invalid
阻塞本线程在bMgmtSem,等待情况发生变化
if 组件状态转为Loaded或Invalid
退出循环
if 需要输入缓冲且缓冲队列信号量pInputSem为正
尝试从队列获取输入缓冲
if 需要输出缓冲且缓冲队列信号量pOutputSem为正
尝试从队列获取输出缓冲
if 输入和输出端口的Buffer都已得到
Mark处理,以及Mark事件。
输出缓冲的TimeStamp同步到输入缓冲。
调用BufferMgmtCallback回调函数进行Filter处理。
if 输入缓冲消耗殆尽(输入缓冲nFlags的EOS位置位)
将isInputBufferNeeded置为TRUE,表示后续需要获取输入缓冲。
if 输入码流完毕
将输入缓冲的nFlags赋给输出缓冲,并将输入缓冲的nFlags置为0
事件通知应用层
if 组件处于Pause态,并且其端口并未处于冲刷状态
阻塞在bStateSem信号量上(该信号量在Pause切换到Idle或Executing过程中脉冲)
if 输出码流非空或者输入殆尽 // 返还输出缓冲
调用ReturnBufferFunction返还输出端口缓冲pOutputBuffer并将isOutputBufferNeeded置为TRUE,表示将输出缓冲送给后级,并后续需要再获取输出缓冲。
if 组件处于Pause态,并且其端口并未处于冲刷状态
阻塞在bStateSem信号量上(该信号量在Pause切换到Idle或Executing过程中脉冲)
if 需要输入缓冲且当前输入缓冲pInputBuffer指针非空 // 返还输入缓冲
调用ReturnBufferFunction将pInputBuffer返还
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报
。
打开APP,阅读全文并永久保存
查看更多类似文章
猜你喜欢
类似文章
【热】
打开小程序,算一算2024你的财运
OpenMAX Call Sequences
设备管理(五)
Cache与Buffer区别
VHDL程序实体
射频混频器介绍
PLC输入和输出端口怎么接线?老电工对着电路图一根根教你接PLC!
更多类似文章 >>
生活服务
热点新闻
留言交流
回顶部
联系我们
分享
收藏
点击这里,查看已保存的文章
导长图
关注
一键复制
下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!
联系客服
微信登录中...
请勿关闭此页面
先别划走!
送你5元优惠券,购买VIP限时立减!
5
元
优惠券
优惠券还有
10:00
过期
马上使用
×