upload android base code part8
This commit is contained in:
parent
841ae54672
commit
5425409085
57075 changed files with 9846578 additions and 0 deletions
|
@ -0,0 +1,593 @@
|
|||
<html devsite><head>
|
||||
<title>音频术语</title>
|
||||
<meta name="project_path" value="/_project.yaml"/>
|
||||
<meta name="book_path" value="/_book.yaml"/>
|
||||
</head>
|
||||
<body>
|
||||
<!--
|
||||
Copyright 2017 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<p>
|
||||
本词汇表收录了与音频相关的术语,其中包括广泛使用的通用术语和 Android 专用术语。
|
||||
</p>
|
||||
|
||||
<h2 id="genericTerm">通用术语</h2>
|
||||
|
||||
<p>
|
||||
与音频相关的通用术语的含义都采用其约定俗成的解释。
|
||||
</p>
|
||||
|
||||
<h3 id="digitalAudioTerms">数字音频</h3>
|
||||
<p>
|
||||
数字音频术语涉及使用以数字格式编码的音频信号处理声音。如需了解详情,请参阅<a href="http://en.wikipedia.org/wiki/Digital_audio">数字音频</a>。
|
||||
</p>
|
||||
|
||||
<dl>
|
||||
|
||||
<dt>声学</dt>
|
||||
<dd>
|
||||
对声音的机械属性的研究,例如换能器(音响设备、麦克风等)在设备中的物理位置如何影响听者感知到的音频质量。
|
||||
</dd>
|
||||
|
||||
<dt>衰减</dt>
|
||||
<dd>
|
||||
小于或等于 1.0 的乘法因数,应用于音频信号以降低信号电平。与“增益”对应。<em></em>
|
||||
</dd>
|
||||
|
||||
<dt>音响发烧友</dt>
|
||||
<dd>
|
||||
追求极致音乐欣赏体验的人,尤其是愿意为音质而在其他方面(花费、组件大小和房间设计等)做出巨大让步的人。如需了解详情,请参阅<a href="http://en.wikipedia.org/wiki/Audiophile">音响发烧友</a>。
|
||||
</dd>
|
||||
|
||||
<dt>每样本位数或位深</dt>
|
||||
<dd>
|
||||
每个样本的信息位数。
|
||||
</dd>
|
||||
|
||||
<dt>声道</dt>
|
||||
<dd>
|
||||
单个音频信息流,通常与一个录音位置或播放位置相对应。
|
||||
</dd>
|
||||
|
||||
<dt>缩混</dt>
|
||||
<dd>
|
||||
减少声道的数量,例如从立体声到单声道或从 5.1 到立体声。缩混通过减少声道、混合声道或更高级的信号处理技术来实现。如果简单地混合声道而不进行衰减或加以限制,则可能会出现溢出或削波的情况。与“扩混”对应。<em></em>
|
||||
</dd>
|
||||
|
||||
<dt>DSD</dt>
|
||||
<dd>
|
||||
直接数字流。基于<a href="http://en.wikipedia.org/wiki/Pulse-density_modulation">脉冲密度调制</a>的专有音频编码技术。脉冲编码调制 (PCM) 可将波形编码为多位的个体音频样本序列,而 DSD 可以非常高的采样率将波形编码为位数序列(不涉及样本这一概念)。PCM 和 DSD 均代表按独立序列划分的多个声道。由于我们很难将传统的数字信号处理 (DSP) 算法应用于 DSD,因此 DSD 更适用于内容分发,而不是作为内在体现对象进行处理。DSD 可用于<a href="http://en.wikipedia.org/wiki/Super_Audio_CD">超音频 CD (SACD)</a>,以及针对 USB 的 DoP (DSD over PCM)。如需了解详情,请参阅<a href="http://en.wikipedia.org/wiki/Direct_Stream_Digital">直接数字流</a>。
|
||||
</dd>
|
||||
|
||||
<dt>闪避</dt>
|
||||
<dd>
|
||||
当另一个音频流变得活跃时,暂时降低音频流的音量。例如,如果播放音乐时收到一条通知,则音乐会在通知播放时闪避。与“静音”对应。<em></em>
|
||||
</dd>
|
||||
|
||||
<dt>FIFO</dt>
|
||||
<dd>
|
||||
先进先出。用于实现数据队列<a href="http://en.wikipedia.org/wiki/FIFO">先进先出</a>的硬件模块或软件数据结构。谈到音频时,存储在队列中的数据通常是音频帧。FIFO 可通过<a href="http://en.wikipedia.org/wiki/Circular_buffer">环形缓冲区</a>来实现。
|
||||
</dd>
|
||||
|
||||
<dt>帧</dt>
|
||||
<dd>
|
||||
某个时间点上的样本集,每个声道对应一个样本。
|
||||
</dd>
|
||||
|
||||
<dt>每缓冲区帧数</dt>
|
||||
<dd>
|
||||
同时从一个模块传递到另一个模块的帧数。音频 HAL 接口会使用每缓冲区帧数这一概念。
|
||||
</dd>
|
||||
|
||||
<dt>增益</dt>
|
||||
<dd>
|
||||
大于或等于 1.0 的乘法因数,应用于音频信号以提高信号电平。与“衰减”对应。<em></em>
|
||||
</dd>
|
||||
|
||||
<dt>HD 音频</dt>
|
||||
<dd>
|
||||
高清晰度音频。高解析度音频的同义词(但与 Intel 高清晰度音频不同)。
|
||||
</dd>
|
||||
|
||||
<dt>Hz</dt>
|
||||
<dd>
|
||||
采样率或帧率的单位。
|
||||
</dd>
|
||||
|
||||
<dt>高解析度音频</dt>
|
||||
<dd>
|
||||
与 CD(立体声 16 位 PCM,44.1 kHz)相比,代表更高的位深和采样率,且支持无损数据压缩。相当于 HD 音频。如需了解详情,请参阅<a href="http://en.wikipedia.org/wiki/High-resolution_audio">高解析度音频</a>。
|
||||
</dd>
|
||||
|
||||
<dt>延时</dt>
|
||||
<dd>
|
||||
信号通过系统时的延迟时间。
|
||||
</dd>
|
||||
|
||||
<dt>无损</dt>
|
||||
<dd>
|
||||
可在编码和解码的过程中保持位精度的<a href="http://en.wikipedia.org/wiki/Lossless_compression">无损数据压缩算法</a>;使用这种算法时,如果对之前编码的数据进行解码,得到的结果与原始数据相当。无损音频内容分发格式包括 <a href="http://en.wikipedia.org/wiki/Compact_disc">CD</a>、<a href="http://en.wikipedia.org/wiki/WAV">WAV</a> 中的 PCM,以及 <a href="http://en.wikipedia.org/wiki/FLAC">FLAC</a> 等。创作过程可能会导致位深或采样率相较于<a href="http://en.wikipedia.org/wiki/Audio_mastering">母版</a>有所下降;可保持母版的解析度和位精确度的分发格式是高解析度音频的载体。
|
||||
</dd>
|
||||
|
||||
<dt>有损</dt>
|
||||
<dd>
|
||||
尝试在编码和解码的过程中保留最重要媒体特征的<a href="http://en.wikipedia.org/wiki/Lossy_compression">有损数据压缩算法</a>;使用这种算法时,如果对之前编码的数据进行解码,得到的结果与原始数据看似相似,但并不完全相同。使用有损音频压缩算法的格式包括 MP3 和 AAC 等。由于模拟值来自连续的域,而数字值是离散的,因此就振幅而言,ADC 和 DAC 属于有损转换。另请参阅“透明度”。<em></em>
|
||||
</dd>
|
||||
|
||||
<dt>单声道</dt>
|
||||
<dd>
|
||||
一个声道。
|
||||
</dd>
|
||||
|
||||
<dt>多声道</dt>
|
||||
<dd>
|
||||
请参阅环绕声。<em></em>严格来讲,立体声指多个声道,可以视为多声道;不过,由于这种用法会令人感到困惑,因此请避免使用。<em></em>
|
||||
</dd>
|
||||
|
||||
<dt>静音</dt>
|
||||
<dd>
|
||||
暂时强制将音量降为 0;独立于通常使用的音量控件。
|
||||
</dd>
|
||||
|
||||
<dt>溢出</dt>
|
||||
<dd>
|
||||
未能在一定的时间内接受提供的数据而导致的听得到的<a href="http://en.wikipedia.org/wiki/Glitch">短时脉冲波干扰</a>。如需了解详情,请参阅<a href="http://en.wikipedia.org/wiki/Buffer_underrun">缓冲区欠载</a>。与“欠载”对应。<em></em>
|
||||
</dd>
|
||||
|
||||
<dt>平移</dt>
|
||||
<dd>
|
||||
将一个信号移至立体声或多声道音场中的相应位置。
|
||||
</dd>
|
||||
|
||||
<dt>PCM</dt>
|
||||
<dd>
|
||||
脉冲编码调制。最常见的低级别数字音频编码形式。以有规律的间隔对音频信号取样(称为采样率),然后根据位深对特定范围内的离散值进行量化。例如,对于 16 位 PCM,样本值是介于 -32768 到 +32767 之间的整数值。
|
||||
</dd>
|
||||
|
||||
<dt>斜坡</dt>
|
||||
<dd>
|
||||
逐渐提高或降低特定音频参数(如音量或某种音效的强度)的级别。音量斜坡一般用于暂停和继续播放音乐,以免出现听得到的生硬过渡。
|
||||
</dd>
|
||||
|
||||
<dt>样本</dt>
|
||||
<dd>
|
||||
代表某个时间点上一个声道的音频值的数字。
|
||||
</dd>
|
||||
|
||||
<dt>采样率或帧率</dt>
|
||||
<dd>
|
||||
每秒帧数。“帧率”这一用法更为准确,但业内习惯使用“采样率”来表示帧率。<em></em><em></em>
|
||||
</dd>
|
||||
|
||||
<dt>可听化</dt>
|
||||
<dd>
|
||||
使用声音表达反馈或信息,例如触摸音效和键盘音效。
|
||||
</dd>
|
||||
|
||||
<dt>立体声</dt>
|
||||
<dd>
|
||||
两个声道。
|
||||
</dd>
|
||||
|
||||
<dt>立体声展宽</dt>
|
||||
<dd>
|
||||
应用于立体声信号的一种音效,能使可听得到的另一立体声信号更饱满丰富。该音效也可应用于单声道信号;在单声道信号中,它属于扩混。
|
||||
</dd>
|
||||
|
||||
<dt>环绕声</dt>
|
||||
<dd>
|
||||
增强听众感知声音位置(不仅仅是立体声的左右声道)的能力的技术。
|
||||
</dd>
|
||||
|
||||
<dt>透明度</dt>
|
||||
<dd>
|
||||
有损数据压缩的理想效果。如果人类主体从感觉上无法区分原始音频和压缩结果,则表示有损数据转换是透明的。如需了解详情,请参阅<a href="http://en.wikipedia.org/wiki/Transparency_%28data_compression%29">透明度</a>。
|
||||
|
||||
</dd>
|
||||
|
||||
<dt>欠载</dt>
|
||||
<dd>
|
||||
未能在一定的时间内提供所需数据而导致的听得到的<a href="http://en.wikipedia.org/wiki/Glitch">短时脉冲波干扰</a>。如需了解详情,请参阅<a href="http://en.wikipedia.org/wiki/Buffer_underrun">缓冲区欠载</a>。与“溢出”对应。<em></em>
|
||||
</dd>
|
||||
|
||||
<dt>扩混</dt>
|
||||
<dd>
|
||||
增加声道的数量,例如从单声道到立体声或从立体声到环绕声。扩混通过复制、平移或更高级的信号处理技术来实现。与“缩混”对应。<em></em>
|
||||
</dd>
|
||||
|
||||
<dt>虚拟音效</dt>
|
||||
<dd>
|
||||
尝试使音频声道空间化的音效,例如,尝试模拟更多扬声器,或给人一种声音来自某个位置的错觉。
|
||||
</dd>
|
||||
|
||||
<dt>音量</dt>
|
||||
<dd>
|
||||
响度,音频信号的主观强度。
|
||||
</dd>
|
||||
|
||||
</dl>
|
||||
|
||||
<h3 id="interDeviceTerms">设备间互连</h3>
|
||||
|
||||
<p>
|
||||
设备间互连技术用于将各设备的音频和视频组件连接起来,用户可通过外部连接器从视觉上直观感受到这些技术。HAL 实现人员和最终用户应了解以下术语。
|
||||
</p>
|
||||
|
||||
<dl>
|
||||
|
||||
<dt>蓝牙</dt>
|
||||
<dd>
|
||||
近距离无线技术。要详细了解与音频相关的<a href="http://en.wikipedia.org/wiki/Bluetooth_profile">蓝牙规范</a>和<a href="http://en.wikipedia.org/wiki/Bluetooth_protocols">蓝牙协议</a>,请参阅 <a href="http://en.wikipedia.org/wiki/Bluetooth_profile#Advanced_Audio_Distribution_Profile_.28A2DP.29">A2DP</a> 了解音乐方面的信息、参阅 <a href="http://en.wikipedia.org/wiki/Bluetooth_protocols#Synchronous_connection-oriented_.28SCO.29_link">SCO</a> 了解电话方面的信息,以及<a href="http://en.wikipedia.org/wiki/List_of_Bluetooth_profiles#Audio.2FVideo_Remote_Control_Profile_.28AVRCP.29">音频/视频远程控制规范 (AVRCP)</a>。
|
||||
</dd>
|
||||
|
||||
<dt>DisplayPort</dt>
|
||||
<dd>
|
||||
视频电子标准协会 (VESA) 制订的数字显示接口。
|
||||
</dd>
|
||||
|
||||
<dt>外接小配件</dt>
|
||||
<dd>
|
||||
<a href="https://en.wikipedia.org/wiki/Dongle">外接小配件</a>是一种小工具,特指可直接插入到其他设备上的小工具。
|
||||
</dd>
|
||||
|
||||
<dt>HDMI</dt>
|
||||
<dd>
|
||||
高清晰度多媒体接口,用于传输音频和视频数据。移动设备上会使用微型 HDMI(D 型)或 MHL 连接器。
|
||||
</dd>
|
||||
|
||||
<dt>Intel HDA</dt>
|
||||
<dd>
|
||||
Intel 高清晰度音频(请不要与泛指的“高清晰度音频”或“高解析度音频”混淆);<em></em><em></em>一种前面板连接器规范。如需了解详情,请参阅 <a href="http://en.wikipedia.org/wiki/Intel_High_Definition_Audio">Intel 高清晰度音频</a>。
|
||||
</dd>
|
||||
|
||||
<dt>接口</dt>
|
||||
<dd>
|
||||
<a href="https://en.wikipedia.org/wiki/Interface_(computing)">接口</a>可将信号从一种表现形式转换为另一种。常见的接口包括 USB 音频接口和 MIDI 接口。
|
||||
</dd>
|
||||
|
||||
<dt>线缆电平</dt>
|
||||
<dd>
|
||||
<a href="http://en.wikipedia.org/wiki/Line_level">线路电平</a>是指在不同音频组件(而非换能器)之间传输的模拟音频信号的强度。
|
||||
</dd>
|
||||
|
||||
<dt>MHL</dt>
|
||||
<dd>
|
||||
移动高清连接技术。一种移动音频/视频接口,通常通过 micro-USB 连接器进行数据传输。
|
||||
</dd>
|
||||
|
||||
<dt>手机连接器</dt>
|
||||
<dd>
|
||||
连接设备和有线头戴式耳机、耳麦或线路电平放大器的小型或超小型组件。
|
||||
</dd>
|
||||
|
||||
<dt>SlimPort</dt>
|
||||
<dd>
|
||||
micro-USB 转 HDMI 的适配器。
|
||||
</dd>
|
||||
|
||||
<dt>S/PDIF</dt>
|
||||
<dd>
|
||||
Sony/Philips 数字接口格式,用于未压缩的 PCM 音频的互连。如需了解详情,请参阅 <a href="http://en.wikipedia.org/wiki/S/PDIF">S/PDIF</a>。S/PDIF 是 <a href="https://en.wikipedia.org/wiki/AES3">AES3</a> 的消费级版本。
|
||||
</dd>
|
||||
|
||||
<dt>Thunderbolt</dt>
|
||||
<dd>
|
||||
与 USB 和 HDMI 竞争的一种多媒体接口,用于连接高端外围设备。如需了解详情,请参阅 <a href="http://en.wikipedia.org/wiki/Thunderbolt_%28interface%29">Thunderbolt</a>。
|
||||
</dd>
|
||||
|
||||
<dt>TOSLINK</dt>
|
||||
<dd>
|
||||
<a href="https://en.wikipedia.org/wiki/TOSLINK">TOSLINK</a> 是一种配合 S/PDIF 使用的光纤音频数据线。<em></em></dd>
|
||||
|
||||
<dt>USB</dt>
|
||||
<dd>
|
||||
通用串行总线。如需了解详情,请参阅 <a href="http://en.wikipedia.org/wiki/USB">USB</a>。
|
||||
</dd>
|
||||
|
||||
</dl>
|
||||
|
||||
<h3 id="intraDeviceTerms">设备内互连</h3>
|
||||
|
||||
<p>
|
||||
设备内互连技术用于将一台设备内的不同音频组件连接起来,如果不拆开设备,则无法从视觉上直观感受到这些技术。HAL 实现人员可能需要了解以下术语,但最终用户不需要。要详细了解设备内互连,请参阅下列文章:
|
||||
</p>
|
||||
<ul>
|
||||
<li><a href="http://en.wikipedia.org/wiki/General-purpose_input/output">GPIO</a></li>
|
||||
<li><a href="http://en.wikipedia.org/wiki/I%C2%B2C">I²C</a>,用于控制声道</li>
|
||||
<li><a href="http://en.wikipedia.org/wiki/I%C2%B2S">I²S</a>,用于音频数据,比 SLIMbus 简单</li>
|
||||
<li><a href="http://en.wikipedia.org/wiki/McASP">McASP</a></li>
|
||||
<li><a href="http://en.wikipedia.org/wiki/SLIMbus">SLIMbus</a></li>
|
||||
<li><a href="http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus">SPI</a></li>
|
||||
<li><a href="http://en.wikipedia.org/wiki/AC%2797">AC'97</a></li>
|
||||
<li><a href="http://en.wikipedia.org/wiki/Intel_High_Definition_Audio">Intel HDA</a></li>
|
||||
<li><a href="http://mipi.org/specifications/soundwire">SoundWire</a></li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
在 <a href="http://www.alsa-project.org/main/index.php/ASoC">ALSA 系统芯片 (ASoC)</a> 中,以上统称为<a href="https://www.kernel.org/doc/Documentation/sound/alsa/soc/DAI.txt">数字音频接口</a> (DAI)。
|
||||
</p>
|
||||
|
||||
<h3 id="signalTerms">音频信号路径</h3>
|
||||
|
||||
<p>
|
||||
音频信号路径术语涉及音频数据从应用传输到换能器(反之亦然)的信号路径。
|
||||
</p>
|
||||
|
||||
<dl>
|
||||
|
||||
<dt>ADC</dt>
|
||||
<dd>
|
||||
模拟转数字转换器。用于将模拟信号(在时间和振幅上保持连续的信号)转换为数字信号(在时间和振幅上离散的信号)的模块。从概念上讲,一个 ADC 包含一个周期性采样保持器,后跟一个量化器(尽管并不一定需要采用这种方式)。ADC 前面通常有一个低通滤波器,用来滤除通过目标采样率无法呈现的所有高频分量。如需了解详情,请参阅<a href="http://en.wikipedia.org/wiki/Analog-to-digital_converter">模拟转数字转换器</a>。
|
||||
</dd>
|
||||
|
||||
<dt>AP</dt>
|
||||
<dd>
|
||||
应用处理器。移动设备上的主要通用计算系统。
|
||||
</dd>
|
||||
|
||||
<dt>编解码器</dt>
|
||||
<dd>
|
||||
编码器和解码器,用于将音频信号从一种表现形式编码和/或解码成另一种表现形式(通常是从模拟信号到 PCM 或从 PCM 到模拟信号)。严格来讲,“编解码器”同时指编码和解码模块,但也可仅泛指其中一个。<em></em>如需了解详情,请参阅<a href="http://en.wikipedia.org/wiki/Audio_codec">音频编解码器</a>。
|
||||
</dd>
|
||||
|
||||
<dt>DAC</dt>
|
||||
<dd>
|
||||
数字转模拟转换器,用于将数字信号(在时间和振幅上离散的信号)转换为模拟信号(在时间和振幅上保持连续的信号)的模块。DAC 后面通常有一个低通滤波器,用来滤除由数字量化引入的高频分量。如需了解详情,请参阅<a href="http://en.wikipedia.org/wiki/Digital-to-analog_converter">数字转模拟转换器</a>。
|
||||
</dd>
|
||||
|
||||
<dt>DSP</dt>
|
||||
<dd>
|
||||
数字信号处理器。可选组件,通常位于应用处理器之后(用于输出)或之前(用于输入)。主要用途是减轻应用处理器的负担,并以较低的功耗提供信号处理功能。
|
||||
</dd>
|
||||
|
||||
<dt>PDM</dt>
|
||||
<dd>
|
||||
脉冲密度调制。用于按数字信号表示模拟信号的调制形式,其中相对密度 1s 和 0s 表示信号电平。通常用于数字转模拟转换器。如需了解详情,请参阅<a href="http://en.wikipedia.org/wiki/Pulse-density_modulation">脉冲密度调制</a>。
|
||||
</dd>
|
||||
|
||||
<dt>PWM</dt>
|
||||
<dd>
|
||||
脉冲宽度调制。用于按数字信号表示模拟信号的调制形式,其中数字脉冲的相对宽度表示信号电平。通常用于模拟转数字转换器。如需了解详情,请参阅<a href="http://en.wikipedia.org/wiki/Pulse-width_modulation">脉冲宽度调制</a>。
|
||||
</dd>
|
||||
|
||||
<dt>换能器</dt>
|
||||
<dd>
|
||||
将现实世界物理量中的变量转换为电信号。在音频中,物理量是声压,而换能器是扬声器和麦克风。如需了解详情,请参阅<a href="http://en.wikipedia.org/wiki/Transducer">换能器</a>。
|
||||
</dd>
|
||||
|
||||
</dl>
|
||||
|
||||
<h3 id="srcTerms">采样率转换</h3>
|
||||
<p>
|
||||
采样率转换术语涉及从一种采样率转换为另一种采样率的过程。
|
||||
</p>
|
||||
|
||||
<dl>
|
||||
|
||||
<dt>降采样</dt>
|
||||
<dd>重新采样,其中接收器采样率 < 信号源采样率。</dd>
|
||||
|
||||
<dt>奈奎斯特频率</dt>
|
||||
<dd>
|
||||
可由离散信号以指定采样率的一半表示的最大频率分量。例如,由于人类的听力范围可达到近 20 kHz,因此数字音频信号的采样率必须至少有 40 kHz 才能代表该范围。在实践中,44.1 kHz 和 48 kHz 的采样率比较常用,而比较常用的奈奎斯特频率则为 22.05 kHz 和 24 kHz。如需了解详情,请参阅<a href="http://en.wikipedia.org/wiki/Nyquist_frequency">奈奎斯特频率</a>和<a href="http://en.wikipedia.org/wiki/Hearing_range">听力范围</a>。
|
||||
</dd>
|
||||
|
||||
<dt>重采样器</dt>
|
||||
<dd>采样率转换器的同义词。</dd>
|
||||
|
||||
<dt>重新采样</dt>
|
||||
<dd>转换采样率的过程。</dd>
|
||||
|
||||
<dt>采样率转换器</dt>
|
||||
<dd>执行重新采样的模块。</dd>
|
||||
|
||||
<dt>接收器</dt>
|
||||
<dd>重采样器的输出。</dd>
|
||||
|
||||
<dt>信源</dt>
|
||||
<dd>重采样器的输入。</dd>
|
||||
|
||||
<dt>升采样</dt>
|
||||
<dd>重新采样,其中接收器采样率 > 信源采样率。</dd>
|
||||
|
||||
</dl>
|
||||
|
||||
<h2 id="androidSpecificTerms">Android 专用术语</h2>
|
||||
|
||||
<p>
|
||||
Android 专用术语包括仅在 Android 音频框架中使用的术语,以及在 Android 中具有特殊意义的通用术语。
|
||||
</p>
|
||||
|
||||
<dl>
|
||||
|
||||
<dt>ALSA</dt>
|
||||
<dd>
|
||||
高级 Linux 声音体系。Linux 的音频框架,对其他系统也有影响。要了解通用定义,请参阅 <a href="http://en.wikipedia.org/wiki/Advanced_Linux_Sound_Architecture">ALSA</a>。在 Android 中,ALSA 指的是内核音频框架和驱动程序,而不是用户模式 API。另请参阅“tinyalsa”。<em></em>
|
||||
</dd>
|
||||
|
||||
<dt>音频设备</dt>
|
||||
<dd>
|
||||
以 HAL 为基础的音频 I/O 端点。
|
||||
</dd>
|
||||
|
||||
<dt>AudioEffect</dt>
|
||||
<dd>
|
||||
用于输出(处理后)音效与输入(处理前)音效的 API 和实现框架。该 API 在 <a href="http://developer.android.com/reference/android/media/audiofx/AudioEffect.html">android.media.audiofxAudioEffect</a> 中进行了定义。
|
||||
</dd>
|
||||
|
||||
<dt>AudioFlinger</dt>
|
||||
<dd>
|
||||
Android 声音服务器实现用例。AudioFlinger 在 mediaserver 进程中运行。要了解通用定义,请参阅<a href="http://en.wikipedia.org/wiki/Sound_server">声音服务器</a>。
|
||||
</dd>
|
||||
|
||||
<dt>音频焦点</dt>
|
||||
<dd>
|
||||
跨多个独立应用管理音频互动的 API 集。如需了解详情,请参阅<a href="http://developer.android.com/training/managing-audio/audio-focus.html">管理音频焦点</a>以及与焦点相关的方法和 <a href="http://developer.android.com/reference/android/media/AudioManager.html">android.media.AudioManager</a> 的常量。
|
||||
</dd>
|
||||
|
||||
<dt>AudioMixer</dt>
|
||||
<dd>
|
||||
AudioFlinger 中的模块,负责合并多个音轨以及应用衰减(音量)和音效。要了解通用定义,请参阅<a href="http://en.wikipedia.org/wiki/Audio_mixing_(recorded_music)">混音(录制的音乐)</a>(将混合器作为一个硬件设备或软件应用而非系统中的软件模块)。
|
||||
</dd>
|
||||
|
||||
<dt>音频政策</dt>
|
||||
<dd>
|
||||
负责所有需要先做出政策决策的操作的服务,例如打开新的 I/O 音频流、更改后重新路由,以及音频流音量管理。
|
||||
</dd>
|
||||
|
||||
<dt>AudioRecord</dt>
|
||||
<dd>
|
||||
用于从麦克风等音频输入设备接收数据的主要低级别客户端 API。相应数据通常为 PCM 格式。该 API 在 <a href="http://developer.android.com/reference/android/media/AudioRecord.html">android.media.AudioRecord</a> 中进行了定义。
|
||||
</dd>
|
||||
|
||||
<dt>AudioResampler</dt>
|
||||
<dd>
|
||||
AudioFlinger 中的模块,负责<a href="src.html">采样率转换</a>。
|
||||
</dd>
|
||||
|
||||
<dt>音频来源</dt>
|
||||
<dd>
|
||||
常量的一种枚举,用于为捕获音频输入指明目标使用情形。如需了解详情,请参阅<a href="http://developer.android.com/reference/android/media/MediaRecorder.AudioSource.html">音频来源</a>。对于 21 级及以上级别的 API,建议使用<a href="attributes.html">音频属性</a>。
|
||||
</dd>
|
||||
|
||||
<dt>AudioTrack</dt>
|
||||
<dd>
|
||||
用于向音响设备等音频输出设备发送数据的主要低级别客户端 API。相应数据通常为 PCM 格式。该 API 在 <a href="http://developer.android.com/reference/android/media/AudioTrack.html">android.media.AudioTrack</a> 中进行了定义。
|
||||
</dd>
|
||||
|
||||
<dt>audio_utils</dt>
|
||||
<dd>
|
||||
PCM 格式转换、WAV 文件 I/O 以及<a href="avoiding_pi.html#nonBlockingAlgorithms">非阻塞 FIFO</a> 等功能的音频实用程序库,很大程度上独立于 Android 平台。
|
||||
</dd>
|
||||
|
||||
<dt>客户端</dt>
|
||||
<dd>
|
||||
通常指一个应用或应用客户端。不过,AudioFlinger 客户端可以是一个在 mediaserver 系统进程中运行的线程,例如,播放由 MediaPlayer 对象解码的媒体内容时。
|
||||
</dd>
|
||||
|
||||
<dt>HAL</dt>
|
||||
<dd>
|
||||
硬件抽象层。HAL 在 Android 中是通用术语;涉及音频时,它是介于 AudioFlinger 和内核设备驱动程序之间的一个层,具有一个 C 语言编写的 API(取代了 C++ libaudio)。
|
||||
</dd>
|
||||
|
||||
<dt>FastCapture</dt>
|
||||
<dd>
|
||||
AudioFlinger 中的线程。经配置,它会向延迟时间较短的 fast track 发送音频数据,并驱动输入设备的运行,以缩短延迟时间。
|
||||
</dd>
|
||||
|
||||
<dt>FastMixer</dt>
|
||||
<dd>
|
||||
AudioFlinger 中的线程。经配置,它会从延迟时间较短的 fast track 接收并混合音频数据,同时驱动主要输出设备的运行,以缩短延迟时间。
|
||||
</dd>
|
||||
|
||||
<dt>fast track</dt>
|
||||
<dd>
|
||||
部分设备和路由中具有较短延迟时间但功能较少的 AudioTrack 或 AudioRecord 客户端。
|
||||
</dd>
|
||||
|
||||
<dt>MediaPlayer</dt>
|
||||
<dd>
|
||||
比 AudioTrack 级别更高的客户端 API。播放已编码的内容或包含多媒体音频和视频音轨的内容。
|
||||
</dd>
|
||||
|
||||
<dt>media.log</dt>
|
||||
<dd>
|
||||
仅在定制版本中提供的 AudioFlinger 调试功能。用于在环形缓冲区中记录音频事件,然后可以根据需要倒回去撤消这些活动。
|
||||
</dd>
|
||||
|
||||
<dt>mediaserver</dt>
|
||||
<dd>
|
||||
Android 系统进程,包含 AudioFlinger 等与媒体相关的服务。
|
||||
</dd>
|
||||
|
||||
<dt>NBAIO</dt>
|
||||
<dd>
|
||||
非阻塞音频输入/输出,AudioFlinger 端口的抽象表示。此术语有一定的歧义,因为部分 NBAIO API 实现用例支持阻塞。NBAIO 的主要实现用例适用于不同的管道类型。
|
||||
</dd>
|
||||
|
||||
<dt>常规混合器</dt>
|
||||
<dd>
|
||||
AudioFlinger 中的线程,可用于大部分功能完善的 AudioTrack 客户端。它能直接驱动输出设备的运行,或通过管道将其子混音输入 FastMixer。
|
||||
</dd>
|
||||
|
||||
<dt>OpenSL ES</dt>
|
||||
<dd>
|
||||
<a href="http://www.khronos.org/">Khronos 集团</a>推行的音频 API 标准。API 级别为 9 或更高级别的 Android 版本都支持原生音频 API(基于 <a href="http://www.khronos.org/opensles/">OpenSL ES 1.0.1</a> 的部分标准)。
|
||||
</dd>
|
||||
|
||||
<dt>静音模式</dt>
|
||||
<dd>
|
||||
可由用户设置、用于将手机振铃器和通知设为静音而不会影响媒体内容播放(音乐、视频和游戏)或闹钟的功能。
|
||||
</dd>
|
||||
|
||||
<dt>SoundPool</dt>
|
||||
<dd>
|
||||
比 AudioTrack 级别更高的客户端 API,用于播放通过采样得到的音频片段。适用于触发界面反馈、游戏音效等。该 API 在 <a href="http://developer.android.com/reference/android/media/SoundPool.html">android.media.SoundPool</a> 中进行了定义。
|
||||
</dd>
|
||||
|
||||
<dt>Stagefright</dt>
|
||||
<dd>
|
||||
请参阅<a href="/devices/media.html">媒体</a>。
|
||||
</dd>
|
||||
|
||||
<dt>StateQueue</dt>
|
||||
<dd>
|
||||
AudioFlinger 中的模块,负责同步线程之间的状态。NBAIO 用于传递数据,而 StateQueue 用于传递控制信息。
|
||||
</dd>
|
||||
|
||||
<dt>策略</dt>
|
||||
<dd>
|
||||
具有类似行为的音频流类型构成的组,用于音频政策服务。
|
||||
</dd>
|
||||
|
||||
<dt>音频流类型</dt>
|
||||
<dd>
|
||||
表示音频输出使用情形的枚举。音频政策的实现使用音频流类型以及其他参数来确定音量和路由决策。要查看音频流类型的列表,请参阅 <a href="http://developer.android.com/reference/android/media/AudioManager.html">android.media.AudioManager</a>。
|
||||
</dd>
|
||||
|
||||
<dt>tee sink</dt>
|
||||
<dd>
|
||||
请参阅<a href="debugging.html#teeSink">音频调试</a>。
|
||||
</dd>
|
||||
|
||||
<dt>tinyalsa</dt>
|
||||
<dd>
|
||||
ALSA 内核之上具有 BSD 许可的小型用户模式 API。建议用于实现 HAL。
|
||||
</dd>
|
||||
|
||||
<dt>ToneGenerator</dt>
|
||||
<dd>
|
||||
比 AudioTrack 级别更高的客户端 API,用于播放双音多频 (DTMF) 信号。如需了解详情,请参阅<a href="http://en.wikipedia.org/wiki/Dual-tone_multi-frequency_signaling">双音多频信号</a>和 <a href="http://developer.android.com/reference/android/media/ToneGenerator.html">android.media.ToneGenerator</a> 中的 API 定义。
|
||||
</dd>
|
||||
|
||||
<dt>音轨</dt>
|
||||
<dd>
|
||||
音频流。由 AudioTrack 或 AudioRecord API 控制。
|
||||
</dd>
|
||||
|
||||
<dt>音量衰减曲线</dt>
|
||||
<dd>
|
||||
对于给定输出,音量衰减曲线指从通用音量指数到特定衰减因数的设备专属映射。
|
||||
</dd>
|
||||
|
||||
<dt>音量指数</dt>
|
||||
<dd>
|
||||
表示某个音频流的目标相对音量的整数(没有单位)。<a href="http://developer.android.com/reference/android/media/AudioManager.html">android.media.AudioManager</a> 的与音量相关的 API 在运行时会采用音量指数(而非绝对的衰减因数)。
|
||||
</dd>
|
||||
|
||||
</dl>
|
||||
|
||||
</body></html>
|
|
@ -0,0 +1,109 @@
|
|||
<html devsite><head>
|
||||
<title>使用 GDB</title>
|
||||
<meta name="project_path" value="/_project.yaml"/>
|
||||
<meta name="book_path" value="/_book.yaml"/>
|
||||
</head>
|
||||
<body>
|
||||
<!--
|
||||
Copyright 2017 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<p>GNU 项目调试程序 (GDB) 是常用的 Unix 调试程序。本页详细介绍了如何使用 <code>gdb</code> 调试 Android 应用和进程。</p>
|
||||
|
||||
<h2 id="running">调试运行中的应用或进程</h2>
|
||||
|
||||
<p>要连接到已在运行的应用或本机守护进程,请配合使用 <code>gdbclient</code> 和 PID。例如,要调试 PID 为 1234 的进程,请运行:</p>
|
||||
|
||||
<pre class="devsite-terminal devsite-click-to-copy">
|
||||
gdbclient 1234
|
||||
</pre>
|
||||
|
||||
<p>此脚本会设置端口转发,在设备上启动相应的 <code>gdbserver</code>,在主机上启动相应的 <code>gdb</code>,配置 <code>gdb</code> 以找出符号,然后将 <code>gdb</code> 连接到远程 <code>gdbserver</code>。</p>
|
||||
|
||||
<h2 id="starts">调试本机进程启动</h2>
|
||||
|
||||
<p>要在进程启动时对其进行调试,请使用 <code>gdbserver</code> 或 <code>gdbserver64</code>(适用于 64 位进程)。例如:</p>
|
||||
|
||||
<pre class="devsite-terminal devsite-click-to-copy">
|
||||
adb shell gdbserver :5039 /system/bin/<var>MY_TEST_APP</var>
|
||||
</pre>
|
||||
|
||||
<p>输出示例:</p>
|
||||
<pre class="devsite-click-to-copy">
|
||||
Process <var>MY_TEST_APP</var> created; pid = 3460
|
||||
Listening on port 5039
|
||||
</pre>
|
||||
|
||||
<p>接下来,从 <code>gdbserver</code> 输出中找出应用 PID,并将其用于其他终端窗口。</p>
|
||||
|
||||
<pre class="devsite-terminal devsite-click-to-copy">
|
||||
gdbclient <var>APP_PID</var>
|
||||
</pre>
|
||||
|
||||
<p>最后,在 <code>gdb</code> 提示处输入 <strong>continue</strong>。</p>
|
||||
|
||||
<p class="note"><strong>注意</strong>:如果您指定了错误的 <code>gdbserver</code>,将会收到没任何帮助的错误消息(例如“<code>Reply contains invalid hex digit 59</code>”)。</p>
|
||||
|
||||
<h2 id="app-startup">调试应用启动</h2>
|
||||
|
||||
<p>有时,您需要在应用启动时对其进行调试;例如在应用发生崩溃时,您需要逐步检查代码,以查看崩溃之前<em></em>发生的情况。
|
||||
<a href="#running">附加</a>调试程序有时能解决问题,有时不能解决问题,因为应用可能会在您可以附加调试程序之前崩溃。<code>logwrapper</code> 方法(用于 <code>strace</code> 和 <code>valgrind</code>)不一定能解决所有的问题,因为应用可能没有权限打开端口,而 <code>gdbserver</code> 会继承这项限制。</p>
|
||||
|
||||
<p>要调试应用启动,请使用“设置”中的开发者选项,指示应用等待附加 Java 调试程序:</p>
|
||||
|
||||
<ol>
|
||||
<li>请依次转到“设置”>“开发者选项”>“选择调试应用”<em></em>,并从列表中选择您的应用,然后按<strong>等待调试程序</strong>。</li>
|
||||
|
||||
<li>启动应用,您可以从启动器启动,也可以在命令行中运行以下命令来启动:<pre class="devsite-terminal devsite-click-to-copy">
|
||||
am start -a android.intent.action.MAIN -n <var>APP_NAME</var>/.<var>APP_ACTIVITY</var>
|
||||
</pre></li>
|
||||
|
||||
<li>等待应用加载,然后等待系统显示一个对话框提示您应用正在等待附加调试程序。</li>
|
||||
|
||||
<li>正常附加 <code>gdbserver</code>/<code>gdbclient</code>,设置断点,然后继续运行该进程。</li></ol>
|
||||
|
||||
<p>要让应用实际运行,请附加 Java 调试网络协议 (JDWP) 调试程序,例如 Java 调试程序 (jdb):</p>
|
||||
<pre class="devsite-click-to-copy">
|
||||
<code class="devsite-terminal">adb forward tcp:12345 jdwp:<var>XXX</var> # (Where XXX is the pid of the debugged process.)</code>
|
||||
<code class="devsite-terminal">jdb -attach localhost:12345</code>
|
||||
</pre>
|
||||
|
||||
<h2 id="crash">调试崩溃的应用或进程</h2>
|
||||
|
||||
<p>如果您希望 <code>debuggerd</code> 暂停崩溃的进程,以便您可以附加 <code>gdb</code>,请设置相应的属性:</p>
|
||||
|
||||
<pre class="devsite-click-to-copy">
|
||||
# Android 7.0 Nougat and later.
|
||||
<code class="devsite-terminal">adb shell setprop debug.debuggerd.wait_for_gdb true</code>
|
||||
</pre>
|
||||
|
||||
<pre class="devsite-click-to-copy">
|
||||
# Android 6.0 Marshmallow and earlier.
|
||||
<code class="devsite-terminal">adb shell setprop debug.db.uid 999999</code>
|
||||
</pre>
|
||||
|
||||
<p>在寻常的崩溃输出结束后,<code>debuggerd</code> 会提供有关如何使用命令连接 <code>gdb</code> 的说明:</p><pre class="devsite-terminal devsite-click-to-copy">
|
||||
gdbclient <var>PID</var>
|
||||
</pre>
|
||||
|
||||
<h2 id="symbols">无符号调试</h2>
|
||||
|
||||
<p>对于 32 位 ARM,如果您没有符号,<code>gdb</code> 就会搞不清楚要反汇编的指令集(ARM 或 Thumb)。要在缺失符号信息时指定已选为默认项的指令集,请设置以下属性:</p>
|
||||
|
||||
<pre class="devsite-terminal devsite-click-to-copy">
|
||||
set arm fallback-mode arm # or thumb
|
||||
</pre>
|
||||
|
||||
</body></html>
|
Loading…
Add table
Add a link
Reference in a new issue