Android Media Framework(五)Tunnel Mode

本篇将聚焦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

请添加图片描述

相关推荐

  1. JUC(

    2024-06-16 02:52:02       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-16 02:52:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-16 02:52:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-16 02:52:02       87 阅读
  4. Python语言-面向对象

    2024-06-16 02:52:02       96 阅读

热门阅读

  1. Milvus向量数据库

    2024-06-16 02:52:02       30 阅读
  2. 第一页总结

    2024-06-16 02:52:02       23 阅读
  3. macbook pro 鼠标键 导致鼠标失灵

    2024-06-16 02:52:02       32 阅读
  4. PHP入门教程1:PHP的基础概念和基本语法

    2024-06-16 02:52:02       34 阅读
  5. 47-4 内网渗透 - MSF介绍

    2024-06-16 02:52:02       28 阅读
  6. collections.defaultdict(int)

    2024-06-16 02:52:02       34 阅读
  7. MQTT TCP HTTP 协议对比

    2024-06-16 02:52:02       24 阅读
  8. 基于SpringCloudAlibaba的高并发流量系统设计

    2024-06-16 02:52:02       34 阅读
  9. 区分前端HTML标签中的href和src

    2024-06-16 02:52:02       25 阅读
  10. Vue的computed大致细节

    2024-06-16 02:52:02       33 阅读