openmax

通过EmptyThisBuffer传递未解码的buffer给component,component收到该命令后会去读取input port buffer中的数据,将其组装为帧之后进行解码,buffer处理完成后会通过EmptyBufferDone通知上层输入使用完成,上层收到命令可以继续送输入帧流程。输出buffer方面,通过FillThisBuffer传递填充输出的空buffer给component,component在解码之后通过FillBufferDone通知上层输出填写完成,上层可以继续送待填充的输出帧流程。

  2缓冲区对象

 3组件通信方式

tunnel模式

IL Client通过OMX_AllocateBuffer() 在组件A的输出端口上创建缓冲区对象,这个缓冲区对象直接返回给 IL Client。
IL Client再将这个缓冲区对象,通过 OMX_UseBuffer()指定给组件B的输入端口使用这个缓冲区对象。
IL Client调用 OMX Core的 OMX_SetupTunnel(hCompA, nOutPortIdx, hCompB, nInPortIdx) 函数来将两个组件的输入输出端口建立隧道通信方式。注:这个函数内部实现会调用两个组件的内部函数ComponentTunnelRequest()来传递组件本身的信息。
Push数据方式:组件A数据准备完毕后,直接调用组件B上的 OMX_EmptyThisBuffer()方法让组件B取数据,组件B获取完数据后,将OMX_EmptyBufferDone()通知直接回调给组件A,通知组件A这个缓冲区已经清空,可以继续使用了。
Pull数据方式:组件B需要数据的时候,直接调用组件A上的 OMX_FillThisBuffer()方法让组件A填充数据,组件A填充完成后,将OMX_FillBufferDone()通知直接回调给组件B,通知组件B这个缓冲区上数据可以使用了。
与 Non-tunnel方式主要的差异就是:建立隧道后,组件之间的数据通信不需要IL Client参与了,两个组件内部直接进行。 通常支持Tunnel通信方式的组件都有内部线程,方便数据同步处理

non-tunnel模式

IL Client通过OMX_AllocateBuffer() 在组件A的输出端口上创建缓冲区对象,这个缓冲区对象直接返回给 IL Client。
IL Client再将这个缓冲区对象,通过 OMX_UseBuffer()指定给组件B的输入端口使用这个缓冲区对象。
在循环的数据处理过程中,IL Client调用OMX_FillThisBuffer() 命令组件A将处理好要输出的数据填入这个缓冲区中,注意:这个调用是异步的,这个调用返回后,缓冲区数据可能还没有填充好。
组件A内部先进行数据处理,处理完成后将输出数据填入缓冲区,然后通过 OMX_FillBufferDone()回调函数通知IL Client数据已经准备好。
IL Client接收到回调后,调用OMX_EmptyThisBuffer()命令组件B来取缓冲区中的数据,注意:这个调用也是异步的,这个调用返回后,缓冲区数据可能还没有取走。
组件B内部根据优先处理顺序,将缓冲区中的数据全部取走后,然后通过OMX_EmptyBufferDone()回调函数通知IL Client缓冲区已经清空,可以继续使用。 如此反复来传递缓冲区对象,使得两个组件通过一个缓冲区来进行通信。
最后在组件A上释放这个缓冲区对象
proprietary模式

组件之间有类似DMA之类的直接通信机制,不需要外部提供缓冲区和控制缓冲区对象传递。
IL Client 只需要调用 OMX Core的 OMX_SetupTunnel(hCompA, nOutPortIdx, hCompB, nInPortIdx) 函数来将两个组件的输入输出端口建立关联即可。
通常这种情况下的组件都是由硬件来实现,直接通过硬件或者系统内部的共享缓冲区来访问数据
通信时也不再有 OMX_FillBufferDone() 和 OMX_EmptyBufferDone() 的回调

ref:

openmax用法-CSDN博客

il手册官网:https://www.khronos.org/files/openmax_il_spec_1_0.pdf

中文翻译:GitHub - xfdingustc/OpenMAX: 本文对OpenMAX IL协议的1.0版本进行的中文的翻译,同时也有英文版的对照

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/448381.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Duplicate entry ‘2020045-2-1‘ for key ‘index_uid‘ 解决方案

项目场景: 今天小编在工作中编写接口对数据库增加相同的非主键数据的时候,突然出现了这样的一个错误: 下面我来给大家解答这个错误的出现原因以及解决办法。 问题描述 Duplicate entry 2020045-2-1 for key index_uid 这个错误大概意思就是…

举个栗子!Tableau 技巧(263):按需突出显示文本表的 N 个行

我们分享过 🌰 :突出显示文本表的行或列,可以突出显示文本表中的某一行或某一列。有数据粉提出新的问题:如果想突出显示多行数据,该如何实现呢? 在 Tableau 中是可以实现的(如上图)&…

MySQL主从同步

一、配置主服务器 1、更改配置文件 vi /etc/my.cnf [mysqld] server_id100 log-bin/mnt/data/mysql8_data/log-bin 2、重启MySQL service mysql restart 3、创建主从同步用户 CREATE USER rep% IDENTIFIED BY Future2050; GRANT REPLICATION SLAVE ON *.* TO rep%; 4、查询Mas…

Linux下find命令详解

find #查找文件 #按照文件名、大小、时间、权限、类型、所属者、所属组来搜索文件 格式: find 查找路径 查找条件 具体条件(按文件名或时间大小等) 操作 注意: find命令默认的操作是print输出 find是检索…

2024/2/2学习记录

Mock.js Mock.mock(template) 根据数据模板生成模拟数据 Mock.mock(rurl,template) 记录数据模板,当拦截到 rurl 的 ajax 请求时,将根据数据模板 template 生成模拟数据,并作为响应数据 返回 Mock.mock(rurl,function(options)) 记…

OpenCV-Python图形图像处理:自用的一些工具函数源代码(统信UOS Linux版)

☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython 一、引言 在《OpenCV-Python图形图像处理:自用的一些工具函数功能及调用语法介绍》介绍了笔者自用的一些函数的语法及功能,在《OpenCV-Python图形图像处理:自用的一些工具函数源代码》介绍了老猿实现的代…

代码随想录算法训练营DAY10 | 栈与队列 (1)

理论基础及Java实现参考文章:栈和队列 一、LeetCode 232 用栈实现队列 题目链接:232.用栈实现队列https://leetcode.cn/problems/implement-queue-using-stacks/ 思路:使用两个栈stack1、stack2实现队列;stack1用来存储入队元素&…

元素的显示与隐藏,精灵图,字体图标,CSSC三角

元素的显示与隐藏 类似网站广告,当我们点击关闭就不见了,但是我们重新刷新页面,会重新出现 本质:让元素在页面中隐藏或者显示出来。 1.display显示隐藏 2.visibility显示隐藏 3.overflow溢出显示隐藏 1.display属性(…

QT研究笔记(二)Qt 5.14.2 简单使用-使用vs2022创建第一个QT项目

前一篇文章,我们介绍了什么是Qt ?为什么要使用Qt?以及Qt在windows 环境下的安装和部署。喜欢的小伙伴,可以前往查看。 QT研究笔记(一)windows 开发环境安装部署。 从这篇文章开始,我们正式开始…

django+flask警务案件信息管理系统python-5dg53-vue

1)用户在后台页面各种操作可及时得到反馈。 (2)该平台是提供给多个用户使用的平台,警员使用之前需要注册登录。登录验证后,警员才可进行各种操作[10]。 (3)管理员用户拥有信息新增,修…

基于SpringBoot Vue学生成绩管理系统

大家好✌!我是Dwzun。很高兴你能来阅读我,我会陆续更新Java后端、前端、数据库、项目案例等相关知识点总结,还为大家分享优质的实战项目,本人在Java项目开发领域有多年的经验,陆续会更新更多优质的Java实战项目&#x…

SpringBoot统一功能处理,拦截器,统一数据格式,捕捉异常

目录 拦截器:是Spring框架提供的核心功能之一,主要用来拦截用户的请求,在指定方法前后,根据业务需要执行预先设定的代码: 自定义拦截器 统一数据格式,要包含状态码,错误信息​编辑 出现针对String类型的错误​​​…