La latenza è una metrica importante per le prestazioni del sistema. Sebbene esistano molti tipi di metriche sulla latenza audio, una metrica utile e ben compresa è la latenza di andata e ritorno, definita come il tempo necessario a un segnale audio per entrare nell'input di un dispositivo mobile, essere elaborato da un'app in esecuzione sull'app processor ed uscire dall'output.

Figura 1. Latenza audio su entrambi i sensi sul dispositivo: Tuscita - Tingresso
Questa pagina fornisce misurazioni della latenza audio di andata e ritorno per alcuni dispositivi Nexus/Pixel e versioni della piattaforma Android.
Perché misuriamo la latenza
Google misura e registra la latenza in modo che gli sviluppatori di applicazioni per Android abbiano i dati di cui hanno bisogno per prendere decisioni consapevoli sulla latenza disponibile sui dispositivi effettivi. Con la condivisione dei valori di latenza per alcuni dispositivi Nexus e Pixel, ci auguriamo di incoraggiare l'intera community Android a misurare, pubblicare e ridurre la latenza su tutti i dispositivi Android. Unisciti a noi nel nostro impegno per ridurre la latenza audio.
Impatto delle app sulla latenza
L'elaborazione degli indicatori può aggiungere i seguenti tipi di ritardo alla latenza:
- Algoritmico. Questo ritardo è inerente e non varia con la CPU. Un esempio è il ritardo aggiunto da un filtro FIR (finite impulse response).
- Computazionale. Questo ritardo è correlato al numero di ciclo della CPU richiesti. Ad esempio, l'attenuazione di un segnale viene solitamente eseguita tramite un'operazione di moltiplicazione che richiede un numero variabile di cicli a seconda della CPU.
Come misuriamo
Abbiamo effettuato le misurazioni elencate in questa pagina utilizzando il dongle di loopback audio del Dr. Rick O'Rang e un test di feedback audio (effetto Larsen). Le misurazioni presuppongono che l'elaborazione del segnale dell'applicazione non aggiunga ritardo algoritmico e un ritardo computazionale quasi nullo.
Misuriamo la latenza di andata e ritorno tramite il connettore dell'auricolare per diversi motivi:

Figura 2. Latenza di andata e ritorno tramite connettore per cuffie: Tuscita - Tingresso
- Le applicazioni musicali importanti (come l'elaborazione di chitarra e voce) utilizzano il connettore per cuffie.
- La misurazione della latenza di andata e ritorno del microfono e dell'altoparlante sul dispositivo può essere laboriosa, in quanto è difficile impedire a un loop di feedback all'aperto di entrare in oscillazione incontrollata.
- I trasduttori sul dispositivo sono piccoli e sacrificano la risposta in frequenza per ottenere queste dimensioni ridotte. Per compensare, viene applicata l'elaborazione del segnale digitale, ma aumenta il ritardo algoritmico per il percorso sul dispositivo.
In alcuni casi le latenze del microfono e dell'altoparlante sul dispositivo sono importanti, ma in genere si riferiscono a una sola direzione, non al viaggio di andata e ritorno. Le tecniche per misurare la latenza unidirezionale sono descritte in Misurare la latenza in uscita e Misurare la latenza in entrata.
Misurazioni di esempio
Le misurazioni elencate di seguito sono specifiche per un numero di build. I dispositivi sono elencati in ordine approssimativo della release iniziale e in base alla versione della piattaforma. Puoi anche visualizzare le latenze in un grafico. L'applicazione di test utilizza l'API audio nativa di Android basata su OpenSL ES.
Modello | Versione piattaforma |
Numero build |
Frequenza di campionamento (Hz) |
Dimensione del buffer (fotogrammi) |
Dimensione del buffer (ms) |
Latenza di andata e ritorno (ms) ± un buffer |
---|---|---|---|---|---|---|
Nexus One | 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 |
Galaxy Nexus | 4.0.1 | ITL41D | 44100 | 976 | 22.1 | 270 |
Galaxy Nexus | 4.3 | JWR66Y | 44100 | 144 | 3.3 | 130 |
Nexus 4 | 4.2.2 | JDQ39E | 48000 | 240 | 5 | 195 |
Nexus 4 | 5.1 | LMY47O | 48000 | 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 | 48000 | 240 | 5 | 149 |
Nexus 7 2013 |
4.4 | KRT16S | 48000 | 240 | 5 | 85 |
Nexus 7 2013 |
5.0.2 | LRX22G | 48000 | 240 | 5 | 64 |
Nexus 7 2013 |
5.1 | LMY47O | 48000 | 240 | 5 | 55 |
Nexus 7 2013 |
6.0 | MRA58K | 48000 | 240 | 5 | 55 |
Nexus 5 | 4.4.4 | KTU84P | 48000 | 240 | 5 | 95 |
Nexus 5 | 5.0.0 | LRX21O | 48000 | 240 | 5 | 47 |
Nexus 5 | 5.1 | LMY47I | 48000 | 240 | 5 | 42 |
Nexus 5 | 6.0 | MRA58K | 48000 | 192 | 4 | 38 |
Nexus 9 | 5.0.0 | LRX21L | 48000 | 256 | 5.3 | 35 |
Nexus 9 | 5.0.1 | LRX22C | 48000 | 256 | 5.3 | 38 |
Nexus 9 | 5.1.1 | LMY47X | 48000 | 256 | 5.3 | 32 |
Nexus 9 | 6.0 | MRA58K | 48000 | 128 | 2.6 | 15 |
Nexus 6 | 5.0.1 | LRX22C | 48000 | 240 | 5 | 65 |
Nexus 6 | 5.1 | LMY47I | 48000 | 240 | 5 | 42 |
Nexus 6 | 6.0 | MRA58K | 48000 | 192 | 4 | 33 |
Nexus 5X | 6.0 | MDA89E | 48000 | 192 | 4 | 18 |
Nexus 5X | 8.0.0 | OPR4.170623.020 | 48000 | 192 | 4 | 18 |
Nexus 5X | 8.1.0 | OPM2.171019.029.C1 | 48000 | 192 | 4 | 18 |
Nexus 6P | 6.0 | MDA89D | 48000 | 192 | 4 | 18 |
Nexus 6P | 8.0.0 | OPR5.170623.014 | 48000 | 192 | 4 | 18 |
Nexus 6P | 8.1.0 | OPM5.171019.019 | 48000 | 192 | 4 | 18 |
Pixel | 7.1.2 | NHG47L | 48000 | 192 | 4 | 18 |
Pixel | 8.0.0 | OPR3.170623.013 | 48000 | 192 | 4 | 18 |
Pixel | 8.1.0 | OPM1.171019.021 | 48000 | 192 | 4 | 18 |
Pixel XL | 7.1.2 | NHG47L | 48000 | 192 | 4 | 18 |
Pixel XL | 8.0.0 | OPR3.170623.013 | 48000 | 192 | 4 | 18 |
Figura 3. Latenze di andata e ritorno