Fas 0. Sidan mäter nätet, ljudkedjan och AAC:ens encoder-delay på just den här telefonen. Resultatet skickas till serverns logg.
Spridningen är det som avgör hur mycket offsetvärdet går att lita på. Under några ms är bra; stiger den är nätet för oroligt för att lita på en enskild mätning.
Knappen behövs för att iOS över huvud taget ska släppa fram ljud. AudioContext får bara startas i en användargest.
Skillnaden är den fördröjning AAC lägger till enligt den här webbläsaren. Är den olika på iOS och Android får flocken en konstant plattformsoffset som ingen klocksynk kan rätta. Den måste kompenseras separat.
Telefonen tickar fem gånger och lyssnar på sig själv. Mikrofonen används bara under mätningen och släpps direkt efteråt. Knappen blir tillgänglig när ljudmätningen ovan är klar.
Slingan är hela vägen från schemalagd sampel till ljudet är tillbaka i
inspelningen. Utgångslatensen är en del av den och kan aldrig vara
större. Påstår outputLatency mer än slingan är påståendet
omöjligt, och telefonen kommer att ligga konstant fel i flocken.
Spridningen mellan de fem ticken säger hur mycket mätningen går att lita
på: under en millisekund är bra.
Kör samma mätning mot en påhittad fördröjning inuti telefonen. Svarar den rätt fungerar inspelningen och tidräkningen, och en avvikande akustisk mätning beror då på rummet och inte på koden.
Lutningen är domen. Ökar den påhittade fördröjningen med hundra millisekunder ska mätvärdet göra detsamma, alltså lutning 1,0000. Den fasta delen är telefonens egen buffring och ska inte vara noll.
Ljudhårdvaran går på sin egen kristall. Driften är varför två telefoner glider isär över tid även när de startade exakt samtidigt.