G.711
G.711 was een ITU-standaard voor audiocompressie en -expansie. Het wordt voornamelijk gebruikt in telefonietoepassingen. De standaard werd in 1972 vrijgegeven.
De G.711-standaard comprimeert PCM monsters, die met een bemonsteringsfrequentie van 8000 monsters per seconde zijn genomen, tot 8-bit waardes. Hierdoor resulteert de G.711-standaard in een gecodeerde bitrate van 64 kbit/s.
Binnen de standaard bestaan twee algoritmen, het zogenoemde μ-law-algoritme (uitgesproken als mu-law en soms ook geschreven als 'mu-law', of als 'u-law') en het A-law-algoritme. μ-law wordt voornamelijk in Noord-Amerika en Japan gebruikt, A-law in de rest van de wereld. Beiden gebruiken een logaritmische schaal. De signaalwaarde x wordt via een logaritmisch functievoorschrift afgebeeld op een waarde y; op de y-waardes vindt lineaire kwantisatie (ook wel uniforme kwantisatie genoemd) plaats met 8 bits per signaalmonster. A-law is iets recenter dan μ-law, en is specifiek ontwikkeld om simpel in een computerprogramma te kunnen implementeren.
De specificaties van de algoritmen zijn:
- μ-law:
y = ln(1 + μx) / ln(1 + μ) waarin μ = 255
- A-law:
y = Ax / (1 + ln A) voor x <= 1/A en waarin A = 87.6
y = (1 + ln Ax) / (1 + ln A) voor 1/A <= x <= 1
De A-law-codering kan ook worden weergegeven in onderstaande tabel, waarin het ingangssignaal een 16-bit lineaire bemonsteringswaarde is, en het uitgangssignaal een 8-bit A-law gecomprimeerd signaal.
Lineaire ingangswaarde | Gecomprimeerde code |
---|---|
s0000000WXYZdddd | s000WXYZ |
s0000001WXYZdddd | s001WXYZ |
s000001WXYZddddd | s010WXYZ |
s00001WXYZdddddd | s011WXYZ |
s0001WXYZddddddd | s100WXYZ |
s001WXYZdddddddd | s101WXYZ |
s01WXYZddddddddd | s110WXYZ |
s1WXYZdddddddddd | s111WXYZ |
Hierin is s het tekenbit, WXYZ zijn 4 afzonderlijke bits van de bemonsteringswaarde, en d zijn don't care bits (aangezien deze in het gecodeerde signaal toch weggegooid worden).
Volgens deze regel wordt een 16-bit-monster van 1000000010101111 dus als 10001010 gecodeerd (eerste regel van de tabel) en 0000000110101111 wordt als 00011010 gecodeerd (tweede regel van de tabel).
De gecodeerde waarde kan ook gezien worden als een floating point getal met een 4-bit mantisse en een 3-bit exponent.
Naast de bovenstaande regel specificeert de standaard dat elk even bit wordt geïnverteerd (een 1 vertaald naar een 0 en een 0 vertaald naar een 1), voordat het monster wordt verstuurd. De bedoeling hiervan is om, ook wanneer het bemonsterde signaal uitsluitend stilte bevat (dus alleen nullen in de lineaire ingangswaarden en dientengevolge ook in de gecodeerde waarden), toch voldoende enen te versturen om zodoende de ontvanger in staat te stellen het gebruikte clock-signaal te reconstrueren.
Externe links
- (en) ITU-T G.711
- (en) G.711 codec process