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

Android Media Framework(五)Tunnel Mode

时间:2024-06-16 11:32:42浏览次数:11  
标签: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组件与渲染组件之间,只有在解码渲染流程会使用。

请添加图片描述

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

请添加图片描述

上图展示了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。
请添加图片描述

3、ComponentTunnelRequest

4、隧道建立

5、隧道模式下的buffer释放

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


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

请添加图片描述

标签:Tunnel,Media,buffer,Mode,组件,Android,IL
From: https://blog.csdn.net/qq_41828351/article/details/139611237

相关文章

  • 安装ZLMediaKit流媒体服务器
    1安装ZLMediaKit#更新安装源sudoapt-getupdate#安装编译器sudoapt-getinstallbuild-essential#安装cmakesudoapt-getinstallcmake#安装依赖库(必选)sudoapt-getinstalllibssl-dev#安装依赖库(可选)sudoapt-getinstallffmpegsudoapt-getinstalll......
  • Android基础-系统启动流程
    一、引言Android系统的启动流程是一个复杂而精密的过程,它涉及到硬件的初始化、软件的加载以及服务的启动等多个环节。这个过程不仅关系到设备的稳定性和性能,还直接影响到用户的使用体验。本文将详细阐述Android系统的启动流程,并结合相关参考文章中的信息,对各个环节进行深入的......
  • android录屏开发总结
    开始之前先说明一下关键几个类的作用:MediaProjectionManager:录屏主要管理类,发出截屏意图提醒、创建录屏等IBinder:IBinder是Android中的一个接口,它定义了一组用于进程间通信的方法。通过IBinder,我们可以在不同的进程之间传递数据和调用方法,实现进程间的交互。在Android系统中,每......
  • flutter AndroidStudio 模拟器无网络连接
    Error:SocketException:Failedhostlookup:''(OSError:Noaddressassociatedwithhostname,errno=7) 命令启动模拟器1.找到你的模拟器名字,默认在C:\users\xx\.android\avd目录下,如图3-3。如果找不到可以在AndroidStudio->AVDManager->showondisk定位到此目录......
  • UE Puerts 在 Android 的调试方法
    配置流程在JsEnv.Build.cs添加WITH_INSPECTOR编译添加这个宏就开启了全平台调试功能看到这里就知道V8Inspector之前仅在三个平台会编译,现在会在任意平台编译了打包的时候会发现存在编译错误(如果没有就是后续Puerts版本修复了这个问题),接下来修复这个错误(没有IOS......
  • QT6安装Android SDK出现"Android SDK Command-line Tools run"出错解决办法
    前言以下提供的方案,是在QT6,Androidstudio均有安装的前提下,安装完javaJDK,在设置安卓SDK时出现的问题,具体表现如标题所言本文目的是以做笔记学习,交流为主,推荐参考参考链接参考链接https://blog.csdn.net/yy_xzz/article/details/132135255操作流程确定NDK路径......
  • android studio 启动虚拟机长时间无响应,无法启动(二)
    书接上回,MAC更新到11.0需要40GB,但是我的电脑一共120GB,系统内存占了70GB,更新完MAC是剩不下空间了,因此不选择更新版本,重新安装了较低版本的AndroidstudioAndroidstudio官网又出现了新的问题。。。问题PANIC:BrokenAVDsystempath.CheckyourANDROID_SDK_ROOTvalu......
  • Android 12.0 MTK平台关机充电动画横屏显示修改
    1.前言在12.0的系统rom定制化开发中,在关于MTK平台的产品中,系统默认的充电动画是竖屏显示的,但是在像平板的产品中竖屏动画肯定不符合规范,所以需要在平板TV产品中,充电动画同时也是需要修改为横屏显示的,接下来就来分析下充电动画的相关绘制流程,然后实现功能2.MTK平台关机充电动......
  • android 播放视频
    播放视频文件新建一个activity_main.xml文件,文件中放置了3个按钮,分别用于控制视频的播放、暂停和重新播放。另外在按钮的下面又放置了一个VideoView,稍后的视频就将在这里显示。<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools......
  • # android studio启动虚拟机长时间无响应,无法启动
    问题虚拟设备长时间不响应,无法启动设备方案根据androidstudio启动虚拟器失败尝试删除锁文件失败,.android目录下不存在锁文件电脑内存或计算配置不足查看了模拟器需要的内存,我的电脑还有10GB,应该是绰绰有余模拟器版本不对重新下载了30版本的,依然不响应,真......