首页 > 其他分享 >Android Media Framework(五)Tunnel Mode

Android Media Framework(五)Tunnel Mode

时间:2024-06-11 23:58:10浏览次数:28  
标签:Tunnel Media buffer Mode 组件 Android IL

本篇将聚焦Android Tunnel Mode,详细解析组件之间隧道连接过程、数据传递过程、组件销毁过程。通过阅读本篇内容,我们应能对tunneled组件的连接过程和buffer分配过程有所了解。

1、Tunnel Mode介绍

IL Spec详细描述了Tunnel Component的实现方式,但内容较为晦涩难懂,网上相关的资料也比较少,使得学习Tunnel Mode变得相当困难。此外,由于Android对Tunnel Mode进行了一些修改,因此Tunnel组件的具体实现会与Spec存在差异,不同厂商的实现方式可能各不相同,我们要做的是参照Spec了解Tunnel Mode的工作过程。

IL Spec定义的是通用Tunnel Mode,是任意两个组件隧道连接的标准。Android上的Tunnel Mode用于OMX组件与渲染组件之间,只有在解码渲染流程会使用。

image

上图展示了一个普通的数据处理流程,Decoder会先将处理好的数据填充到output buffer中,随后OMX组件会调用FillBufferDone函数将填充好的buffer传递给IL Client,IL Client在做好音画同步后,会将这个output buffer送入native window进行渲染。

image

上图展示了Tunnel Mode的数据处理流程。与普通流程相比,Tunnel Mode流程中增加了一个tunnel组件,该组件直接与native window连接,实际工作过程中output buffer将不再被回传到IL Client,而是通过tunnel组件直接传送到native window进行渲染。Tunnel Mode中的音画同步(avsync)将在硬件中实现,具体实现由各个厂商来完成。

Tunnel Mode将音画同步和渲染工作从应用处理器(ACPU)转移到数字信号处理器(DSP)进行,对于需要高性能处理的4K60FPS等高端音视频内容,Tunnel Mode能够显著降低性能消耗,保证流畅播放。此外Tunnel Mode通过硬件同步,可以确保音频和视频数据的精确同步,提升用户体验。

Tunnel Mode的缺点也很明显,实现复杂且需要硬件级支持!

2、supply and supplier

supply翻译为供应、提供, supplier翻译为供应方、提供者。

这两个词用于描述隧道组件端口的角色是buffer分配者还是buffer使用者,spec中有描述:在一对建立隧道的端口中,调用UseBuffer的一方被称为supplier port,另一方被称为non-supplier port。

image

3、ComponentTunnelRequest

4、隧道建立

5、隧道模式下的buffer释放

6、隧道模式下的端口使能与禁用


全文阅读:Android Media Framework(五)Tunnel Mode

image

标签:Tunnel,Media,buffer,Mode,组件,Android,IL
From: https://www.cnblogs.com/rongmiao/p/18243032

相关文章

  • 安卓应用开发——Android Studio中滚动布局的应用
    一、前情提要 现如今,许多软件的主界面都采用了滚动条的功能,以展示软件中长条的商品又或是广告,经典的社交软件与购物软件等软件都不可避免的需要实现这一功能,今天我们来简单学习在AndroidStudio中实现一个属于自己的滚动布局页面。二、简单思路 本次功能设计需要一个页面......
  • Android14之向build.prop添加属性(二百一十九)
    简介:CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!优质专栏:Audio工程师进阶系列【原创干货持续更新中……】......
  • 使用Cordova运行项目到android
    ApacheCordovaisanopen-sourcemobiledevelopmentframework.Itallowsyoutousestandardwebtechnologies-HTML5,CSS3,andJavaScriptforcross-platformdevelopment.Applicationsexecutewithinwrapperstargetedtoeachplatform,andrelyonstandar......
  • Android studio(创建、监听器intent菜单)
    创建报错connectrunout可以查看这篇文章1.自动创建  2.设置输出日志信息logt+tab键之后会为当前的类自动生成一个TAG常量 关于日志过滤器 这时候在只有Log.v里面的消息,Log.d、i、w、e都没有出现。当输入MainActivity的时候过滤到与其相关的 3.手动创建选......
  • Android 11.0 mtk浏览器Browser下载应用不能安装问题的解决办法
    1.前言 在系统11.0的ROM定制化开发中,在开发mtk平台的时候,在系统默认浏览器Browser中发现在下载某些app的时候,结果显示的确实在下载到内部存储的时候,点击安装的时候安装失败,所以就需要从Browser的下载流程中出发分析相关源码来实现具体的功能2.mtk浏览器Browser下载应用不能......
  • Android studio实现图标方式展示信息(折线图等)时com.github.mikephil.charting.charts.
    参考连接——https://blog.csdn.net/m0_37919094/article/details/122416408 去https://gitcode.com/PhilJay/MPAndroidChart/overview?utm_source=csdn_github_accelerator&isLogin=1下载MPAndroidChart的zip包,解压 在Androidstudio中操作file——》new——》importm......
  • Android studio 连接sqlist数据库,账号密码错误仍能登录的原因
    昨天在写Androidstudio的大作业,写到连接sqlist数据库实现登录的时候明明账号密码都不正确,但是用户却可以登录,我原先以为是我sql语句写错了,将sql语句从Cursorcursor=db.rawQuery("select*fromuserwherenamelike?andpasswordlike?",newString[]{name,password});改......
  • Android RecyclerView使用详解(含通过网络请求得到数据)
    RecyclerView概述RecyclerView是Android中非常受欢迎的控件,RecyclerView是官方在Android5.0之后新添加的控件,推出用来替代传统的ListView和GridView列表控件,所以如果你还在使用ListView的话可以替换为RecyclerView了。对于RecyclerView的使用根据实际项目进行说明,一些功能可......
  • android主线程与子线程
    创建子线程创建子线程在android中穿件子线程的方案很简单创建子线程的几种方法///////第一种///////classThreadoneextendsThread{@Overridepublicvoidrun(){}//重写run方法,这个方法就是子线程一旦启用就会执行的方法}newThreadone().start()//启动子线程/......
  • Android大作业 - 瑞德记账app - 演示视频
    韩婴在《韩诗外传》有言:“家有千金之玉不知治,犹之贫也。”如果不知道如何管理和利用所拥有的丰富资源,依然会陷入贫困的境地。在当今社会,记账app对于个人财务管理有着重大意义。首先,它可以帮助用户建立并保持清晰的财务记录。通过记录每笔支出和收入,用户可以清楚地了解自己的财......