aboutsummaryrefslogtreecommitdiff
path: root/zh-cn/devices/audio/latency/measurements.html
blob: f61d99f40be6fc1bdd321fc2336b04db4de3be70 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
<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><a href="http://en.wikipedia.org/wiki/Latency_%28engineering%29">延迟时间</a>是一项重要的系统性能指标。<a href="latency.html">音频延迟时间</a>指标有多种类型,其中一个很实用且易于理解的指标是<a href="latency_measure.html#measuringRoundTrip">往返延迟时间</a>。根据该指标的定义,往返延迟时间是指音频信号进入移动设备的输入组件,由应用处理器上运行的应用进行处理,然后从输出组件传出,这整个过程所花费的时间。</p>

<img src="/devices/audio/images/round_trip_on_device.png" alt="设备上的往返音频延迟时间" id="figure1"/>
<p class="img-caption"><strong>图 1. </strong> 设备上的往返音频延迟时间:T<sub>output</sub> - T<sub>input</sub></p>

<p>本页提供了选定 Nexus/Pixel 设备和 Android 平台版本的往返音频延迟时间测量结果。</p>

<h2 id="why">为什么要测量延迟时间</h2>

<p>Google 会测量和报告延迟时间,以便 Android 应用开发者获取所需数据,从而针对实际设备上的可用延迟时间做出明智决策。我们会分享选定 Nexus 和 Pixel 设备的延迟时间数值,以此鼓励整个 Android 社区的成员来测量、发布和减少所有 Android 设备上的延迟时间。<em></em>欢迎加入我们,一起为减少音频延迟时间而努力!</p>

<h2 id="app">应用对延迟时间的影响</h2>

<p>信号处理技术可能会在延迟时间中添加以下类型的延迟:</p>
<ul>
<li><strong>算法</strong>:这是一种固有延迟,不会因 CPU 而异。例如由<a href="http://en.wikipedia.org/wiki/Finite_impulse_response">有限脉冲响应</a> (FIR) 过滤器增加的延迟。</li>
<li><strong>计算</strong>:这种延迟与所需的 CPU 周期数有关。例如,信号的衰减通常通过乘法运算完成,而该运算所需的周期数则取决于 CPU。</li>
</ul>

<h2 id="how">如何测量</h2>

<p>我们使用 <a href="loopback.html">Dr. Rick O'Rang 音频环回软件狗</a>和<a href="latency_measure.html#larsenTest">音频反馈(拉尔森效应)测试</a>得出了本页列出的测量结果。测量假设应用信号处理技术的算法延迟时间为零,并且计算延迟时间接近零。</p>

<p>我们通过耳机连接器来测量往返延迟时间有以下几个原因:</p>
<img src="/devices/audio/images/round_trip_via_headset_connector.png" alt="通过耳机连接器测量的往返延迟时间" id="figure2"/>
<p class="img-caption"><strong>图 2. </strong> 通过耳机连接器测量的往返延迟时间:T<sub>output</sub> - T<sub>input</sub></p>
<ul>
<li>重要的音乐应用(如吉他和语音处理)一般会使用耳机连接器。</li>
<li>测量设备上的麦克风和扬声器之间的往返延迟时间可能会比较麻烦,因为在露天环境下难以避免反馈环进入不受控制的振荡状态。</li>
<li>设备上的换能器都很小,为了实现它们的小尺寸则需要牺牲频率响应。出于补偿目的,换能器会应用数字信号处理技术,但这会增加设备上路径的算法延迟时间。</li>
</ul>

<p>在有些情况下,设备上的麦克风和扬声器延迟时间确实会带来影响,但这通常是针对单向延迟而不是往返延迟。<em></em><a href="latency_measure.html#measuringOutput">测量输出设备延迟时间</a>和<a href="latency_measure.html#measuringInput">测量输入设备延迟时间</a>中介绍了测量单向延迟时间的相关技巧。</p>

<h2 id="examples">测量结果示例</h2>

<p>下面列出的是特定于某个<a href="/setup/build-numbers.html">版本号</a>的测量结果。设备按初始版本和平台版本的大致顺序列出;您也可以<a href="#chart">查看图表中的延迟时间</a>。测试应用会使用 Android 原生音频 API(基于 OpenSL ES)。</p>

<table>
<tbody><tr>
  <th>型号</th>
  <th>平台<br />版本</th>
  <th>版本<br />号</th>
  <th>抽样频率<br />(Hz)</th>
  <th>缓冲区空间<br />(帧)</th>
  <th>缓冲区空间<br />(毫秒)</th>
  <th>往返<br />延迟时间(毫秒)<br />± 1 个缓冲区</th>
</tr>

<tr>
  <td>Nexus One</td>
  <td>2.3.6</td>
  <td>GRK39F</td>
  <td>44100</td>
  <td>768</td>
  <td>17.4</td>
  <td>345</td>
</tr>

<tr>
  <td>Nexus S</td>
  <td>2.3.6</td>
  <td>GRK39F</td>
  <td>44100</td>
  <td>1024</td>
  <td>23.2</td>
  <td>260</td>
</tr>

<tr>
  <td>Nexus S</td>
  <td>4.0.4</td>
  <td>IMM76D</td>
  <td>44100</td>
  <td>1024</td>
  <td>23.2</td>
  <td>260</td>
</tr>

<tr>
  <td>Nexus S</td>
  <td>4.1.2</td>
  <td>JZO54K</td>
  <td>44100</td>
  <td>880</td>
  <td>20</td>
  <td>210</td>
</tr>

<tr>
  <td>Galaxy Nexus</td>
  <td>4.0.1</td>
  <td>ITL41D</td>
  <td>44100</td>
  <td>976</td>
  <td>22.1</td>
  <td>270</td>
</tr>

<tr>
  <td>Galaxy Nexus</td>
  <td>4.3</td>
  <td>JWR66Y</td>
  <td>44100</td>
  <td>144</td>
  <td>3.3</td>
  <td>130</td>
</tr>

<tr>
  <td>Nexus 4</td>
  <td>4.2.2</td>
  <td>JDQ39E</td>
  <td>48000</td>
  <td>240</td>
  <td>5</td>
  <td>195</td>
</tr>

<tr>
  <td>Nexus 4</td>
  <td>5.1</td>
  <td>LMY47O</td>
  <td>48000</td>
  <td>240</td>
  <td>5</td>
  <td>58</td>
</tr>

<tr>
  <td>Nexus 10</td>
  <td>5.0.2</td>
  <td>LRX22G</td>
  <td>44100</td>
  <td>256</td>
  <td>5.8</td>
  <td>36</td>
</tr>

<tr>
  <td>Nexus 10</td>
  <td>5.1</td>
  <td>LMY47D</td>
  <td>44100</td>
  <td>256</td>
  <td>5.8</td>
  <td>35</td>
</tr>

<tr>
  <td>Nexus 7<br />2013</td>
  <td>4.3</td>
  <td>JSR78D</td>
  <td>48000</td>
  <td>240</td>
  <td>5</td>
  <td>149</td>
</tr>

<tr>
  <td>Nexus 7<br />2013</td>
  <td>4.4</td>
  <td>KRT16S</td>
  <td>48000</td>
  <td>240</td>
  <td>5</td>
  <td>85</td>
</tr>

<tr>
  <td>Nexus 7<br />2013</td>
  <td>5.0.2</td>
  <td>LRX22G</td>
  <td>48000</td>
  <td>240</td>
  <td>5</td>
  <td>64</td>
</tr>

<tr>
  <td>Nexus 7<br />2013</td>
  <td>5.1</td>
  <td>LMY47O</td>
  <td>48000</td>
  <td>240</td>
  <td>5</td>
  <td>55</td>
</tr>

<tr>
  <td>Nexus 7<br />2013</td>
  <td>6.0</td>
  <td>MRA58K</td>
  <td>48000</td>
  <td>240</td>
  <td>5</td>
  <td>55</td>
</tr>

<tr>
  <td>Nexus 5</td>
  <td>4.4.4</td>
  <td>KTU84P</td>
  <td>48000</td>
  <td>240</td>
  <td>5</td>
  <td>95</td>
</tr>

<tr>
  <td>Nexus 5</td>
  <td>5.0.0</td>
  <td>LRX21O</td>
  <td>48000</td>
  <td>240</td>
  <td>5</td>
  <td>47</td>
</tr>

<tr>
  <td>Nexus 5</td>
  <td>5.1</td>
  <td>LMY47I</td>
  <td>48000</td>
  <td>240</td>
  <td>5</td>
  <td>42</td>
</tr>

<tr>
  <td>Nexus 5</td>
  <td>6.0</td>
  <td>MRA58K</td>
  <td>48000</td>
  <td>192</td>
  <td>4</td>
  <td>38</td>
</tr>

<tr>
  <td>Nexus 9</td>
  <td>5.0.0</td>
  <td>LRX21L</td>
  <td>48000</td>
  <td>256</td>
  <td>5.3</td>
  <td>35</td>
</tr>

<tr>
  <td>Nexus 9</td>
  <td>5.0.1</td>
  <td>LRX22C</td>
  <td>48000</td>
  <td>256</td>
  <td>5.3</td>
  <td>38</td>
</tr>

<tr>
  <td>Nexus 9</td>
  <td>5.1.1</td>
  <td>LMY47X</td>
  <td>48000</td>
  <td>256</td>
  <td>5.3</td>
  <td>32</td>
</tr>

<tr>
  <td>Nexus 9</td>
  <td>6.0</td>
  <td>MRA58K</td>
  <td>48000</td>
  <td>128</td>
  <td>2.6</td>
  <td>15</td>
</tr>

<tr>
  <td>Nexus 6</td>
  <td>5.0.1</td>
  <td>LRX22C</td>
  <td>48000</td>
  <td>240</td>
  <td>5</td>
  <td>65</td>
</tr>

<tr>
  <td>Nexus 6</td>
  <td>5.1</td>
  <td>LMY47I</td>
  <td>48000</td>
  <td>240</td>
  <td>5</td>
  <td>42</td>
</tr>

<tr>
  <td>Nexus 6</td>
  <td>6.0</td>
  <td>MRA58K</td>
  <td>48000</td>
  <td>192</td>
  <td>4</td>
  <td>33</td>
</tr>

<tr>
  <td>Nexus 5X</td>
  <td>6.0</td>
  <td>MDA89E</td>
  <td>48000</td>
  <td>192</td>
  <td>4</td>
  <td>18</td>
</tr>

<tr>
  <td>Nexus 5X</td>
  <td>8.0.0</td>
  <td>OPR4.170623.020</td>
  <td>48000</td>
  <td>192</td>
  <td>4</td>
  <td>18</td>
</tr>

<tr>
  <td>Nexus 5X</td>
  <td>8.1.0</td>
  <td>OPM2.171019.029.C1</td>
  <td>48000</td>
  <td>192</td>
  <td>4</td>
  <td>18</td>
</tr>

<tr>
  <td>Nexus 6P</td>
  <td>6.0</td>
  <td>MDA89D</td>
  <td>48000</td>
  <td>192</td>
  <td>4</td>
  <td>18</td>
</tr>

<tr>
  <td>Nexus 6P</td>
  <td>8.0.0</td>
  <td>OPR5.170623.014</td>
  <td>48000</td>
  <td>192</td>
  <td>4</td>
  <td>18</td>
</tr>

<tr>
  <td>Nexus 6P</td>
  <td>8.1.0</td>
  <td>OPM5.171019.019</td>
  <td>48000</td>
  <td>192</td>
  <td>4</td>
  <td>18</td>
</tr>

<tr>
  <td>Pixel</td>
  <td>7.1.2</td>
  <td>NHG47L</td>
  <td>48000</td>
  <td>192</td>
  <td>4</td>
  <td>18</td>
</tr>

<tr>
  <td>Pixel</td>
  <td>8.0.0</td>
  <td>OPR3.170623.013</td>
  <td>48000</td>
  <td>192</td>
  <td>4</td>
  <td>18</td>
</tr>

<tr>
  <td>Pixel</td>
  <td>8.1.0</td>
  <td>OPM1.171019.021</td>
  <td>48000</td>
  <td>192</td>
  <td>4</td>
  <td>18</td>
</tr>

<tr>
  <td>Pixel XL</td>
  <td>7.1.2</td>
  <td>NHG47L</td>
  <td>48000</td>
  <td>192</td>
  <td>4</td>
  <td>18</td>
</tr>

<tr>
  <td>Pixel XL</td>
  <td>8.0.0</td>
  <td>OPR3.170623.013</td>
  <td>48000</td>
  <td>192</td>
  <td>4</td>
  <td>18</td>
</tr>

</tbody></table>

<a id="chart"></a>
<img src="/devices/audio/images/round-trip-latencies.png"/>
<p class="img-caption"><strong>图 3. </strong> 往返延迟时间。</p>

</body></html>