# A-law

Das A-law-Verfahren ist ein primär in Europa verwendetes Kompandierungsverfahren für analoge Audiosignale im Telekommunikationsbereich, das in der Empfehlung G.711 der Internationalen Fernmeldeunion (ITU-T) standardisiert ist. Dabei wird das Signal bei der Digitalisierung mit einer nichtlinearen Kennlinie, der sogenannten A-Kennlinie, quantisiert. Ziel ist es, ein möglichst einheitliches Signal-Rausch-Verhältnis zu erzielen, indem große Signalauslenkungen gröber und kleine Signalauslenkungen feiner aufgelöst werden.
In Nordamerika und Japan wird das ähnliche µ-law-Verfahren eingesetzt, das dem A-law ähnelt, jedoch nicht direkt kompatibel ist. Zur Kommunikation, z. B. bei einem Telefongespräch zwischen Europa und USA, müssen die digitalen Daten durch entsprechende Konverter umgesetzt werden. Deren Funktion ist in der genannten Empfehlung G.711 festgelegt.

## Die zugrundeliegende stetige logarithmische Kennlinie

Die Kompandierung der analogen Signale würde mit einer logarithmischen Quantisierungskennlinie stattfinden. Sie ist als stetige Funktion definiert:
    $C(x)={\begin{cases}{\frac {A}{1+\ln A}}|x|&{\mbox{wenn }}0\leq |x|\leq {\frac {1}{A}}\\{\frac {1}{1+\ln A}}+{\frac {\ln(A|x|)}{1+\ln A}},&{\mbox{wenn }}{\frac {1}{A}}<|x|\leq 1\end{cases}}{\mbox{ mit }}A=87{,}56$
Die Umkehrfunktion lautet:
    $C^{-1}(y)=\operatorname {sgn}(y){\begin{cases}{|y|(1+\ln A) \over A},&{\mbox{wenn }}|y|<{1 \over 1+\ln(A)}\\{\exp(|y|(1+\ln A)-1) \over A},&{\mbox{wenn }}{1 \over 1+\ln A}\leq |y|<1.\end{cases}}{\mbox{ mit }}A=87{,}56$
Dabei gilt: $C(\pm 1)=\pm 1$

## Die 13-Segment-Kennlinie des "A-law"

Die Empfehlung G.711 beschreibt eine abschnittsweise lineare Annäherung der logarithmischen Kennlinie, die für den Einsatz in digital arbeitenden Systemen wesentlich besser geeignet ist; sie wird in der maßgeblichen Empfehlung G.711 als A-law bezeichnet. (Die gedanklich zugrundeliegende stetige Kennlinie wird dort nicht erwähnt).
Die vorgesehene PCM-Kodierung (Puls-Code-Modulation) mit 8-Bit-Worten würde bei Einsatz einer linearen Kennlinie zu einer pegelunabhängigen Auflösung von einem 1/128 der Maximalamplitude führen. Gemäß 13-Segment-Kennlinie werden kleine Signalpegel nun auf 1/2048 der Maximalamplitude genau quantisiert, große Signalpegel dagegen nur mit einer Auflösung von 1/32. Die Signale werden dazu zunächst mit 12-Bit-Genauigkeit digitalisiert. Die Aufteilung in die Segmente erfolgt so, dass sich Komprimierung und Expandierung sehr einfach durch eine 12-Bit-nach-8-Bit-Umrechnung bzw. eine 8-Bit-nach-12-Bit-Umrechnung erledigen lassen.
Das Audiosignal wird dabei zunächst linear als 12-Bit-Wert in Form einer ganzen Zahl mit Vorzeichen digitalisiert. Dieser 12-Bit-Wert wird gemäß der folgenden Tabelle als 8-Bit-Wert dargestellt:
| Linearer Input (Bit Nr.) | Linearer Input (Bit Nr.) | Linearer Input (Bit Nr.) | Linearer Input (Bit Nr.) | Linearer Input (Bit Nr.) | Linearer Input (Bit Nr.) | Linearer Input (Bit Nr.) | Linearer Input (Bit Nr.) | Linearer Input (Bit Nr.) | Linearer Input (Bit Nr.) | Linearer Input (Bit Nr.) | Linearer Input (Bit Nr.) | Kodierter Output (Bit Nr.) | Kodierter Output (Bit Nr.) | Kodierter Output (Bit Nr.) | Kodierter Output (Bit Nr.) | Kodierter Output (Bit Nr.) | Kodierter Output (Bit Nr.) | Kodierter Output (Bit Nr.) | Kodierter Output (Bit Nr.) |
| 11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 |
| s | 0 | 0 | 0 | 0 | 0 | 0 | 0 | w | x | y | z | n | 0 | 0 | 0 | w | x | y | z |
| s | 0 | 0 | 0 | 0 | 0 | 0 | 1 | w | x | y | z | n | 0 | 0 | 1 | w | x | y | z |
| s | 0 | 0 | 0 | 0 | 0 | 1 | w | x | y | z | ... | n | 0 | 1 | 0 | w | x | y | z |
| s | 0 | 0 | 0 | 0 | 1 | w | x | y | z | ... | ... | n | 0 | 1 | 1 | w | x | y | z |
| s | 0 | 0 | 0 | 1 | w | x | y | z | ... | ... | ... | n | 1 | 0 | 0 | w | x | y | z |
| s | 0 | 0 | 1 | w | x | y | z | ... | ... | ... | ... | n | 1 | 0 | 1 | w | x | y | z |
| s | 0 | 1 | w | x | y | z | ... | ... | ... | ... | ... | n | 1 | 1 | 0 | w | x | y | z |
| s | 1 | w | x | y | z | ... | ... | ... | ... | ... | ... | n | 1 | 1 | 1 | w | x | y | z |
Das Vorzeichen-Bit s wird im Ergebnis invers verwendet (n = not s).
Man kann diese Codierung als 1.3.4-Gleitkommazahl mit 8 Bit (sog. Minifloat) und einem ganzzahligen Wert betrachten (1 Bit Vorzeichen, 3 Bit Exponent, 4 Bit Mantisse).