A latência é uma importante métrica de desempenho do sistema. Embora existam muitos tipos de métricas de latência de áudio , uma métrica útil e bem compreendida é a latência de ida e volta , definida como o tempo que leva para um sinal de áudio entrar na entrada de um dispositivo móvel e ser processado por um aplicativo em execução no aplicativo. processador e saia da saída.
Esta página fornece medições de latência de áudio de ida e volta para dispositivos Nexus/Pixel selecionados e versões da plataforma Android.
Por que medimos a latência
O Google mede e relata a latência para que os desenvolvedores de aplicativos Android tenham os dados necessários para tomar decisões informadas sobre a latência disponível em dispositivos reais. Ao compartilhar números de latência para dispositivos Nexus e Pixel selecionados, esperamos incentivar toda a comunidade Android a medir, publicar e reduzir a latência em todos os dispositivos Android. Junte-se a nós em nosso compromisso de reduzir a latência de áudio!
Impacto do aplicativo na latência
O processamento de sinal pode adicionar os seguintes tipos de atraso à latência:
- Algorítmico . Este atraso é inerente e não varia com a CPU. Um exemplo é o atraso adicionado por um filtro de resposta ao impulso finito (FIR).
- Computacional . Esse atraso está relacionado ao número de ciclos de CPU necessários. Por exemplo, a atenuação de um sinal geralmente é feita por uma operação de multiplicação que leva um número variável de ciclos dependendo da CPU.
Como medimos
Fizemos as medições listadas nesta página usando o dongle de loopback de áudio do Dr. Rick O'Rang e um teste de feedback de áudio (efeito Larsen) . As medições assumem que o processamento do sinal do aplicativo adiciona atraso algorítmico zero e atraso computacional próximo de zero.
Medimos a latência de ida e volta através do conector do fone de ouvido por vários motivos:
- Aplicativos musicais importantes (como guitarra e processamento de voz) usam o conector de fone de ouvido.
- Medir a latência de ida e volta do microfone e do alto-falante do dispositivo pode ser complicado, pois é difícil evitar que um loop de feedback ao ar livre entre em oscilação descontrolada.
- Os transdutores no dispositivo são pequenos e sacrificam a resposta de frequência para atingir seu tamanho pequeno. Para compensar, o processamento de sinal digital é aplicado, mas aumenta o atraso algorítmico para o caminho no dispositivo.
Há casos em que as latências do microfone e do alto-falante no dispositivo são importantes, mas geralmente são para uma direção, não para ida e volta. As técnicas para medir a latência unidirecional são descritas em Medindo a latência de saída e Medindo a latência de entrada .
Medições de exemplo
As medidas listadas abaixo são específicas para um número de compilação . Os dispositivos estão listados em ordem aproximada de lançamento inicial e por versão da plataforma; você também pode visualizar as latências em um gráfico . O aplicativo de teste usa a API de áudio nativa do Android baseada em OpenSL ES.
Modelo | Plataforma versão | Construir número | Taxa de amostragem (Hz) | Tamanho do buffer (quadros) | Tamanho do buffer (EM) | Ida e volta latência (ms) ± um buffer |
---|---|---|---|---|---|---|
Nexus Um | 2.3.6 | GRK39F | 44100 | 768 | 17.4 | 345 |
Nexus S | 2.3.6 | GRK39F | 44100 | 1024 | 23.2 | 260 |
Nexus S | 4.0.4 | IMM76D | 44100 | 1024 | 23.2 | 260 |
Nexus S | 4.1.2 | JZO54K | 44100 | 880 | 20 | 210 |
Galáxia Nexus | 4.0.1 | ITL41D | 44100 | 976 | 22.1 | 270 |
Galáxia Nexus | 4.3 | JWR66Y | 44100 | 144 | 3.3 | 130 |
Nexus 4 | 4.2.2 | JDQ39E | 48.000 | 240 | 5 | 195 |
Nexus 4 | 5.1 | LMY47O | 48.000 | 240 | 5 | 58 |
Nexus 10 | 5.0.2 | LRX22G | 44100 | 256 | 5.8 | 36 |
Nexus 10 | 5.1 | LMY47D | 44100 | 256 | 5.8 | 35 |
Nexus 7 2013 | 4.3 | JSR78D | 48.000 | 240 | 5 | 149 |
Nexus 7 2013 | 4.4 | KRT16S | 48.000 | 240 | 5 | 85 |
Nexus 7 2013 | 5.0.2 | LRX22G | 48.000 | 240 | 5 | 64 |
Nexus 7 2013 | 5.1 | LMY47O | 48.000 | 240 | 5 | 55 |
Nexus 7 2013 | 6,0 | MRA58K | 48.000 | 240 | 5 | 55 |
Nexus 5 | 4.4.4 | KTU84P | 48.000 | 240 | 5 | 95 |
Nexus 5 | 5.0.0 | LRX21O | 48.000 | 240 | 5 | 47 |
Nexus 5 | 5.1 | LMY47I | 48.000 | 240 | 5 | 42 |
Nexus 5 | 6,0 | MRA58K | 48.000 | 192 | 4 | 38 |
Nexus 9 | 5.0.0 | LRX21L | 48.000 | 256 | 5.3 | 35 |
Nexus 9 | 5.0.1 | LRX22C | 48.000 | 256 | 5.3 | 38 |
Nexus 9 | 5.1.1 | LMY47X | 48.000 | 256 | 5.3 | 32 |
Nexus 9 | 6,0 | MRA58K | 48.000 | 128 | 2.6 | 15 |
Nexus 6 | 5.0.1 | LRX22C | 48.000 | 240 | 5 | 65 |
Nexus 6 | 5.1 | LMY47I | 48.000 | 240 | 5 | 42 |
Nexus 6 | 6,0 | MRA58K | 48.000 | 192 | 4 | 33 |
Nexus 5X | 6,0 | MDA89E | 48.000 | 192 | 4 | 18 |
Nexus 5X | 8.0.0 | OPR4.170623.020 | 48.000 | 192 | 4 | 18 |
Nexus 5X | 8.1.0 | OPM2.171019.029.C1 | 48.000 | 192 | 4 | 18 |
Nexus 6P | 6,0 | MDA89D | 48.000 | 192 | 4 | 18 |
Nexus 6P | 8.0.0 | OPR5.170623.014 | 48.000 | 192 | 4 | 18 |
Nexus 6P | 8.1.0 | OPM5.171019.019 | 48.000 | 192 | 4 | 18 |
Pixel | 7.1.2 | NHG47L | 48.000 | 192 | 4 | 18 |
Pixel | 8.0.0 | OPR3.170623.013 | 48.000 | 192 | 4 | 18 |
Pixel | 8.1.0 | OPM1.171019.021 | 48.000 | 192 | 4 | 18 |
PixelXL | 7.1.2 | NHG47L | 48.000 | 192 | 4 | 18 |
PixelXL | 8.0.0 | OPR3.170623.013 | 48.000 | 192 | 4 | 18 |