音频透传背后的技术实现

现在市面上流行的电视盒大部分都是Android,“音频透传”是一个经常见到的词,那到底什么是音频透传、音频透传背后的技术实现到底如何,引起了我的兴趣,因此花了点时间研究了一下。由于是针对全志H8的电视盒方案进行分析,因此分析的结果不具有普遍性,可能其它的方案在技术实现上有所不同。

在开始分析前先查找了一下关于“透传”这个概念的解释,根据度娘的说法是“透传即是透明传送,即传送网络无论传输业务如何,只负责将需要传送的业务传送到目的节点,同时保证传输的质量即可,而不对传输的业务进行处理”,尽管和音频不搭界,但是基本意思就是“数据不经任何修改从发送端到达接收端”,大致可以判断音频透传也是类似的意思。

接下来看一下Android中关于音频输出的一些属性定义,以及之前研究音频子系统时做的一些信息搜集和分析工作结论(基于kitkat):

typedef enum {
  AUDIO_OUTPUT_FLAG_NONE = 0x0,
  AUDIO_OUTPUT_FLAG_DIRECT = 0x1,
  AUDIO_OUTPUT_FLAG_PRIMARY = 0x2,
  AUDIO_OUTPUT_FLAG_FAST = 0x4,
  AUDIO_OUTPUT_FLAG_DEEP_BUFFER = 0x8,
  AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD = 0x10,
  AUDIO_OUTPUT_FLAG_NON_BLOCKING = 0x20
} audio_output_flags_t;

在这些属性中,分别具有各自的特点:

DIRECT:不进行软件混音直接交HAL进行处理;

PRIMARY:软件解码、软件混音、采样率转换(SRC)什么的一个都不能少;

FAST:不进行采样率转换(SRC);

DEEP_BUFFER:原始数据就是未压缩的PCM,经处理后直接交HAL进行处理;

COMPRESS_OFFLOAD:编码数据直接交HAL进行处理(往往需要有DSP进行硬解码);

NON_BLOCKING:不如你告诉我;

下面的这张示意图表明了PRIMARY和FAST的关系(基于jellybean,kitkat大致也差不多):

下面的这张示意图表明了PRIMARY、FAST、DEEP_BUFFER的关系(应该是基于kitkat):

从这张图看出,DEEP_BUFFER是在例如关屏状态下播放音乐使用,而且需要HAL的支持,实际工作中我也没有遇到过这种工作方式;在这个图中,DIRECT方式并没有得到体现,和PRIMARY的差异就在于回放方式的不同,前者是通过DirectOutputThread所以无法软件混音,后者是MixerThread所以可以软件混音。

说完了音频子系统的粗略分析,现在可以来看一下度娘提供的H8电视盒方案的框图了:

HDMI控制器输入信号可以是视频信号组合或单独视频信号,前者的输出信号进入电视后由电视的喇叭发声,但由于电视喇叭音质的问题,可以选择后者将音频信号通过功放由音箱发声。在H8的电视盒方案中,音频PCM数据(极有可能是通过I2S)透传到AXP818进行DA转换后经功放由音箱发声,因此使用排除法后初步可以在DIRECT、DEEP_BUFFER、COMPRESS_OFFLOAD三种方式中确定一种,COMPRESS_OFFLOAD依赖于DSP的存在可以先否定,DIRECT和DEEP_BUFFER都有可能,但是基于两点考虑我认为DIRECT的可能性最大,第一,谷歌的audio_policy.conf示例中,HDMI就是使用的DIRECT方式;第二,DEEP_BUFFER比较小众,DIRECT开发和维护更容易一点。当然,音频透传是基于HDMI的DIRECT方式是因为对DEEP_BUFFER不了解的情况下做出的个人结论了。

时间: 2024-10-08 17:14:50

音频透传背后的技术实现的相关文章

二层透传介绍

二层协议透明传输的基本原理 工作流程 1.在骨干网的用户接入侧替换原始二层协议报文的组播目的MAC地址为特定的组播MAC地址.(修改源组播MAC地址) 2.修改MAC地址后的报文在骨干网中根据配置的透明传输方式决定是否对报文进行处理.(查看骨干网透传规则) 3.当该二层协议报文到达出节点时,通过匹配设备上配置的特殊组播目的MAC和二层协议的映射关系,将报文的组播目的MAC还原成该二层协议标准的组播目的MAC地址,并根据配置的透明传输方式决定是否处理该报文.(转换找出映射关系,还原组播MAC地址,

关于“吴亦凡入伍”H5背后的技术—兼容android

在“吴亦凡入伍”H5刷爆朋友圈之后,看到网上有较多同学对背后的技术感兴趣,正好借着机会跟大家分享一下.如果你正好也遇到在android下视频自动播放和两个视频连续播放(中间不需要触发)的问题,希望本文会对你有所帮助. 关于这个H5大概的实现原理,网上已经有人分析的很详细,我这里就不多做介绍了. 这次要分享是在兼容android下遇到的难点和兼容的思路: 第一个问题就是为了实现 Page1中里面图片中的人物要突然动起来,然后走出页面,那么video在初始化的时候就不能出现播放的icon,在IOS下

视频流网络透传分析

最近在翻看以前写的文档,把这篇word文档复制下来,保留一下. 序号 版本 作者 描述 1 V0.1 YJ.Yan 初始版本 2 V0.2 YJ.Yan 添加方案细节描述以及可参考方案 1.      基本概念 a)       NAT 网络地址转换(NAT,Network AddressTranslation)属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型Internet接入方式和各种类型的网络中.原因很简单,NAT不仅完美地解决了IP

推送、透传、MQ

推送: 网页推送,是指将经过整理的信息资源以网页的形式迅速转发至用户的界面,实现用户的多层次需求,使得用户能够自己设定所需要的信息频道,并直接在用户端接收定制信息的实现方式. 推送功能:在手机通信中,大多智能机都支持推送功能.比如,你手机上有一个即时消息软件,当它在运行时它是和服务器相连的:但是一旦退出后,你就失去了连接.这时推送服务就开始工作了. 程序后台运行时都将会采用这样的一种提醒方式,比如提醒你升级,实时更新消息等. 官方的解释:所谓信息推送,就是"web广播",是通过一定的技

AB433A1无线485透传终端说明

prev next AB433A1无线485透传终端 AB433A无线透传终端可以直接代替有线的RS485网和RS232网,实现无线485.无线232组网.传输距离10m-20km窄带物联网抗干扰技术,免编程,无需挖沟布线接口:4路无线开关量输入输出. 原文地址:http://blog.51cto.com/13890458/2151099

揭秘央视春晚直播背后的技术硬实力

2020年1月24日晚间8点,一首开年贺岁歌舞<春潮颂>拉开了鼠年春晚的序幕.<这就是街舞>.2019第一神曲<野狼Disco>的改编版本<过年迪斯科>.<风雪饺子情>.<走过场>等众多的节目更是将春晚推向了一波又一波的高潮. 今年的春晚不仅演员阵容庞大,就连主持人阵容进行了"大换血",各种创新的节目更是赢得观众的阵阵喝彩.本届春晚堪称一场科技的视觉盛宴,其中春晚舞台首次打造三层立体舞美,同时运用飞屏技术营造出36

kvm实现GPU透传(GPU passthrough)

为了方便对人工智能服务器进行自动管理或者实现某种特定功能,我们需要对显卡进行虚拟化.对于显卡这种硬件而言,英伟达有专门支持GPU虚拟化的显卡,比如GRID GPU系列.以NVIDIA GRID K2为例,显存8GB,可虚拟出2块GPU.不过这种自带虚拟化功能的显卡,价格都非常昂贵. 对于GTX系列的显卡,如果Host主机为linux系统,想将显卡给虚拟机(windows或者linux)使用,则需要用到GPU透传(GPU passthrough)技术.目前这方面的资料非常少,断断续续摸索了两周,G

SIM800L透传模式配置

UART1_SendString("AT+CIPCLOSE=1"); //关闭连接 delay_ms(100); Second_AT_Command("AT+CIPSHUT","SHUT OK",2); //关闭移动场景 Second_AT_Command("AT+CGCLASS=\"B\"","OK",2);//设置GPRS移动台类别为B,支持包交换和数据交换 Second_AT_Co

CC1101 433无线模块,STM8串口透传

CC1101 433无线模块,STM8串口透传 原理图:http://download.csdn.net/detail/cp1300/7496509 下面是STM8程序 CC1101.C [cpp] view plaincopy /************************************************************************************************************* * 文件名: CC1101.c * 功能:  S