Android Audio 2: Audio相关术语
https://source.android.com/devices/audio/terminology.html
Audio相关的术语包含广泛运用的通用术语和Android专属的术语。
1.通用术语
Audio通用术语具有传统和符合人们通用习惯的含义。
1.1 数字音频(Digital Audio)
数字音频相关的术语涉及处理那些使用数字形式编码的音频信号。更多详细的信息,可以参考维基百科https://en.wikipedia.org/wiki/Digital_audio
acoustics
声音机械特性的研究学,比如一个设备的传感器(transducers),比如扬声器、麦克风的位置如何影响人们对音频质量的感知。attenuation
乘法系数小于或者等于1,适用于音频信号递减信号电平的情况。相比较于gainaudiophile
俗称发烧友,追求超级音乐体验的一类人,尤其是为了声音的质量愿意付出(金钱,器件的尺寸,房屋的设计等)的人。bits per sample or bit depth
每一个sample的信息比特的数目channel
俗称声道,音频信息的单个流(stream),通常对应于录音或者播放的一个位置(location)downmixing
减少channel的数量,比如从立体声到单声道或者从5.1到立体声。donwmixing是通过丢弃channel,混合channel或者其他高级的信号处理技术完成的。没有attenuation或者limiting的简单混合技术有overflow和clipping的风险。DSD
Direct Stream Digital.直接比特流数字,所有的音频编码基于脉冲密度调制(PDM). 脉冲编码调制(PCM)是把一个波形编码成多位的独立音频samples的序列,然后DSD是采用一个非常高的采样率把一个波形编码成二进制序列(没有samples的概念)。PCM和DSD都通过独立的序列来表征多声道。DSD比起内部表征的处理更适用于content distribution,因为传统的DSP算法比较难适用于DSD.DSD运用在SACD(Super Audio CD)和USB当中的DoP(DSD over PCM).更多详细的内容,参考:https://en.wikipedia.org/wiki/Direct_Stream_Digitalduck
当其他stream激活的时候临时降低当前stream的音量。比如,当播放音乐的时候来了一个通知(notification), 通知播放并且音乐的音量会暂时降低。相比较于mute.FIFO
先进,先出。实现先进先出数据排列的硬件模块或者软件数据结构。在音频领域,存储在队列中的数据是典型的音频帧(audio frames).FIFO可以通过环形缓冲(circular buffer)实现。环形缓冲详见:https://en.wikipedia.org/wiki/Circular_bufferframe
某个时间点,一个声道的samples的集合。frames per buffer
某个时间,从一个模块到下一个模块,被处理的frame的数量。音频硬件抽象层会使用frames per buffer的概念。gain
乘法系数大于或者等于1.0,适用于音频信号增加信号电平的情况,相比较于attenuation.HD audio
High-Definition audio.高清晰音频,是High-resolution audio的同义词.(但不同于Intel High Definition Audio)Hz
赫兹,采样率或者帧率的单位。high-resolution audio
相比CDs(stereo 16-bit PCM at 44.1kHz)有更大的位深和更高的采样率,没有失真的数据压缩。和HD audio是相同的,详细的可以参考:
https://en.wikipedia.org/wiki/High-resolution_audiolatency
一个信号通过一个系统的时间lossless
无损的,无损数据压缩算法在编码和解码的过程中保持着位的精度。解码后的数据和解码前的原始数据是相同的。无损的音频格式包括CDs, WAV中的PCM(PCM within WAV), FLAC.在Audio matering的制作过程中可能会减少位深和采样率,Audio mastering可以参考:https://en.wikipedia.org/wiki/Audio_mastering。保存masters的高清晰度和位精度的容器格式是High-resolution audio的子集。lossy
有损的,有损数据压缩算法在编码和解码的过程中尝试保存媒体最重要的功能,解码后和解码前的数据从感知的角度来说类似,但实际上并不一样。有损的音频格式包括MP3和AAC. 由于模拟信号是连续值而数字信号是离散值,ADC和DAC都是关于振幅的有损转换。也可以参见transparency.mono
单声道multichannel
多声道,见surround sound.严格来说,stereo不止一个声道,可以被认为是多声道。然后,这样的用法容易造成困扰,因此需要避免使用。mute
临时把音量变成0,这和通常的音量控制是独立的。overrun
在充足的时间里无法接收提供的数据。详细的可参见:
http://en.wikipedia.org/wiki/Buffer_underrun,相比较于underrun.panning
把信号直接打到带有立体声或者多声道属性的指定位置。PCM
脉冲编码调制,通用的低级别的数字音频编码.音频信号被采样,然后根据位深在合适的范围内被量化成离散值。比如,对于16位的PCM, 采样值是介于-32768到+32767之间。ramp
逐步的减少或者增加某个特殊音频参数的的等级,比如某个音效的音量或者强度。音量的ramp通常适用于暂停和恢复音乐,以避免急速的声音变化。sample
某个时间单声道的音频值sample rate or frame rate
每秒的帧数,frame rate更准确,采样率照惯例用来表示帧率sonification
触摸的声音,按键音等stereo
两个声道stereo widening
用在立体声信号的音效,可以制造另一个立体声信号来使声音更饱满。也可以用在单声道上面,这是一种upmixingsurround sound
提高听者判断声音位置的能力的技术,不局限于左声道还是右声道transparency
有损数据压缩的理想结果,当人类感知不到和原始数据的差别的时候,有损数据转换就是透明的。详见:
https://en.wikipedia.org/wiki/Transparency_%28data_compression%29underrun
在充足的时间内不能提供足够的数据upmixing
提高声道的数量,比如从单声道到立体声或者从立体声到surround sound.upmixing可以通过复制,panning或者更多先进的信号处理技术来完成。相比较于downmixingvirtualizer
尝试让音频通道空间化的音效,比如尝试模拟多个speakervolume
响度,音频信号的主观强度。
1.2 跨设备互连
跨设备互连技术连接不通设备之间的音频和视频,HAL实现者和终端用户应该注意这些术语。
Bluetooth
短距离无线技术,关于audio相关的蓝牙配置和蓝牙协议,参考与音乐相关的A2DP和通话相关的SCO, 以及AVRCP.详细的信息可参考:
https://en.wikipedia.org/wiki/List_of_Bluetooth_protocolsDisplayPort
视频电子标准协会定义的数字显示接口dongle
挂断其他设备的小部件HDMI
高清晰度多媒体接口。传输音频和视频数据的接口,对于手机设备,需要使用一个迷你HDMI或者MHL连接器Intel HDA
Intel High Definition Audio(不要和普通的HD audio或者High-resolution audio混淆),参见:https://en.wikipedia.org/wiki/Intel_High_Definition_Audiointerface
接口把信号从一种形式转换为另一种形式,常用的接口包括USB音频接口和MIDI接口line level
通过音频组件,而不是transducers的模拟信号的强度。MHL
移动终端高清影音接口,移动终端音频/视频接口,通常建立在微型USB连接器上。phone connector
迷你或者超迷你的组件,用于连接设备到有些耳机等。SlimPort
连接迷你USB到HDMI的适配器S/PDIF
Sony/Philips Digital Interface Format. 互连没有压缩的PCM.参见:
http://en.wikipedia.org/wiki/S/PDIF,S/PDIF是AES3的一个变种Thunderbolt
与USB,HDMI同级的多媒体接口,用于连接高端设备。参见:
http://en.wikipedia.org/wiki/Thunderbolt_%28interface%29TOSLINK
和S/PDIF一起使用的音频电缆,它是可选的。USB
Universal Serial Bus.
1.3 设备内部连接
设备内部连接技术连接指定设备内的音频组件,如果不拆卸设备,它们是不可见的。HAL实现者需要注意这些术语,终端用户不需要。
- GPIO
- I²C
- I²S
- McASP
- SLIMbus
- SPI
- AC’97
- Intel HDA
- SoundWire
在ALSA上,这些被统一称作DAI(Digital Audio Interfaces)
1.4 音频信号路径
音频信号路径相关的术语涉及到从应用到传感器的音频数据流或者从传感器到应用的音频数据流。
ADC
模数转化器,ADC前面通常要摆放一个低通滤波器来过滤掉高频部分,这些部分不能作为采样率的代表AP
Application processor.手机设备上主要的”计算机”Codec
编解码,把音频信号从一种形式编码(解码)成另一种形式的模块(典型的是模拟信号到PCM或者PCM到模拟信号)。严格意义上讲,codec是需要同时编码和解码,但也可以只是其中的某一种DAC
数模转换器,DAC前面通常要放一个低通过滤器来过滤掉高频部分。DSP
是一个可选组件,位于AP的后面(output)或者AP的前面(input).主要的目的是offload AP,提供数字信号处理的功能,以达到省电的目的。PDM
脉冲密度调制,是一种用数字信号表示模拟信号的调制形式。主要用于数字信号到模拟信号的转换PWM
脉冲宽度调制,是一种用数字信号表示模拟信号的调制形式。主要用于模拟信号到数字信号的转换。transducer
转化器,把现实世界的声音转化成电信号。Audio中,转换器是loudspeaker和microphone.
1.5 采样率转换
downsample
重采样,sink sample rate < source sample rate.Nyquist frequency
奈奎斯特抽样定律resample
重采样,采样率转换器的同义词resampling
转换采样率的过程sample rate converter
重采样的器件sink
重采样(resampler)的输出source
重采样的输入upsample
重采样, sink sample rate > source sample rate.
2. Android特有的术语
包含只在Android audio中使用的术语和在Android中有特殊含义的通用术语。
ALSA
在Android中,ALSA涉及到audio 的kernel和driver部分,不涉及用户空间。参考 tinyalsa.audio device
基于HAL实现的audio 输入输出流的终点AudioEffect
android.media.audiofx.AudioEffectAudioFlinger
audio sound服务的实现,它运行在mediaserver进程中audio focus
管理多个独立应用之间audio相互作用的一系列API。可以参考开发者网站
https://developer.android.com/training/managing-audio/audio-focus.html的内容和AudioManager.java中的相关内容。AudioMixer
AudioFinger的模块,用于组合多个track和降低音量,音效。audio policy
所有audio策略的执行者,比如打开一个新的I/O, 重新路由和音量管理。AudioRecord
从输入设备比如麦克风接收数据的API,数据通常是PCM形式,参考
AudioRecord.javaAudioResampler
AudioFlinger中的模块,用于重采样。audio source
代表抓取音频输入的一系列常量的集合,比如MIC,VOICE_CALL. API level 21及以后,更偏向于使用audio attributes.AudioTrack
发送数据到输出设备比如speaker的API,数据通常是PCM形式,参考
AudioTrack.javaaudio_utils
音频工具库的功能,如PCM格式转换,WAV文件I / O和非阻塞FIFO,
这些在很大程度上是独立于Android平台。client
通常指应用,然而,一个audioflinger client可以使跑在mediaserver进程中的线程。HAL
硬件抽象层FastCapture
AudioFlinger中的线程,发送音频数据到低延迟的fast tracks。FastMixer
和FastCapture相反fast track
在某些设备和路由上面具有更少特征的带有低延迟特性的AudioTrack或者AudioRecord clientMediaPlayer
比AudioRecord更高lever的API.media.log
AudioFlinger的debug功能mediaserver
Android系统进程,包含媒体相关的服务,比如AudioFlinger.NBAIO
Non-blocking audio input/output. AudioFlinger端口的抽象。normal mixer
AudioFlinger的一个进程,服务于大部分的全功能AudioTrack客户端。OpenSL ES
silent mode
用于可以设置的功能,用来使来电铃声和通知静音,不影响播放音乐,视频和游戏。SoundPool
android.media.SoundPool- Stagefright
见https://source.android.com/devices/media/index.html StateQueue
AudioFlinger的一个模块,用于同步不同线程的状态。NBAIO用来传输数据,StateQueue用来传输控制信息。Strategy
音频策略,由AudioPolicyService控制stream type
流类型,见AudioManager.javatee sink
详见https://source.android.com/devices/audio/debugging.html#teeSinktinyalsa
ALSA的精简版ToneGenerator
播放DTMF信号,见android.media.ToneGeneratortrack
Audio stream,由AudioTrack或者AudioRecord API控制volume attenuation curve
音量衰减曲线- volume index
用来表示流的相对音量的无符号整数。
注: 只是粗略的介绍各个术语,详细的解释可以在需要的时候细查。
Android Audio 2: Audio相关术语相关推荐
- Android开发之Audio播放:竞争Audio之Audio Focus的应用
Android是多任务系统,Audio系统是竞争资源.Android2.2之前,没有内建的机制来解决多个程序竞争Audio的问题,2.2引入了称作AudioFocus的机制来管理对Audio资源的竞争 ...
- Android 7.0 Audio的Resample过程详解
Android 7.0 Audio的Resample过程详解 Qidi 2017.02.23 (Markdown & Haroopad) [前言] 处理过音频文件的工程师都知道音频数据存在采样 ...
- Android深入浅出之Audio
Android深入浅出之Audio 第一部分 AudioTrack分析 一 目的 本文的目的是通过从Audio系统来分析Android的代码,包括Android自定义的那套机制和一些常见类的使用,比如 ...
- Android 8.1 Audio框架(二)AudioPolicy路由策略实例分析
概述 这里以蓝牙耳机连接手机这一场景为例分析Audio路由策略是如何进行设备切换和管理输出的.蓝牙耳机连接上Android系统后,AudioService的handleDeviceConnection ...
- mtk+android+之mt6577驱动笔记,MTK6577+Android之音频(audio)移植
MTK6577+Android之音频(audio)移植 备注:audio PA音频功放(power amplifier) 先借用<Y1MT6577 design notice V0.1>关 ...
- Android camera 相关术语(四) 之 变焦和对焦的区别VCM 闭环和开环在硬件上有什么区别
Android camera 相关术语(四) 之 变焦和对焦的区别VCM 闭环和开环在硬件上有什么区别 VCM 闭环马达(即close loop)与开环马达(即open loop)一般有两个硬件上的 ...
- Android 音视频开发相关知识
音视频开发技能 要在Android上进行音视频开发,需要掌握以下技能: Android开发:首先,您需要掌握Android应用程序的基本开发技能,包括Java或Kotlin编程语言,Android S ...
- android – 多屏幕适配相关
android – 多屏幕适配相关 作者: 曲天日期: 2011/10/27 1.基本概念 屏幕大小(screen size) – 屏幕的实际大小,用屏幕对角线长度来衡量(比如3.4寸,3.8寸).a ...
- 移动安全常用技术相关术语总结
一. 移动端常用技术术语 1.1 逆向分析与反编译 逆向分析 简称逆向,是一种方法论.采用逆向思维,利用反编译等工具,对目标程序进行分析,进而了解和熟悉其行为,技术原理,程序执行流程,源代码. 几个要 ...
最新文章
- centos7 docker升级到最新稳定版本
- leetcode 73 矩阵置零 Python
- [?]Oracle 10g sqlplus 的Bug?
- 如何计算机械能,问:损失的机械能如何计算?
- 使用MONGODB 集群的OPLOG 日志进行数据恢复
- python基础知识资料包-Python基础知识总结——史上最全系列
- 百度地图显示服务器地址,百度地图_根据地图上标记位置获取街道信息,以及经纬度信息...
- 【华为云实战开发】14.如何使用Node爬虫利器Puppteer进行自动化测试
- alians mysql_Linux学习——Shell基础
- vfp 打开服务器文件,VFP下客户机访问任意映射服务器的方法
- R9000P2021版拯救者 装ubuntu系统相关问题(WiFi、蓝牙、亮度调节,驱动安装)记录总结
- pythonQQ连连看秒杀脚本
- Django博客项目实战
- matlab小波变换学习入门
- echarts拓扑图
- i7服务器cpu型号推荐,CPU型号那么多 详细数据教你选_键鼠新闻-中关村在线
- Excel如何快速划分等级或成绩评级
- Docker安装好后默认路径
- JavaScript常用的字符串操作对象方法
- flutter 运行失败 The SDK directory 'xxxxx' does not exist.
热门文章
- mysql 计算近30天总金额_电商网站销售数据分析(MYSQL)
- 一键启动多应用(windows版)
- 花12个月做成功网站
- Intellij-出现Module ** must not contain source root **. The root already belongs to module **
- linux环境下查看ibm mq mb日志
- 猿人学第1题(一天搞一个)
- 国内CRM竞品分析【纷享销客 VS 销售易 VS 用友】
- python实现tensorrt推理
- Win10:远程关机,拒绝访问
- android开发 之 Canvas绘制文字,图片