Loi A
# Loi A

La loi A (en anglais A-Law) est un système de quantification logarithmique d'un signal audio, utilisé principalement à des fins de compression pour les applications traitant la voix humaine. Elle est standardisée sous la référence ITU-T G.711. Utilisée principalement en Europe, elle est semblable à la loi Mu utilisée aux États-Unis et au Japon.

## Caractéristiques principales de la loi A

* C'est un algorithme standardisé, défini dans le standard ITU-T G.711
* Sa complexité est faible
* Il est utilisé pour des applications de traitement de la voix humaine
* Il n'introduit presque aucun retard, grâce à sa faible complexité
* Il est adapté aux systèmes de transmission par multiplexage temporel
* Il n'est pas adapté à la transmission par paquets
* Son facteur de compression est d'environ 2:1

## Description

### Transformation linéaire

L'équation de sortie de la loi A est :

    $F(x)=\operatorname {sgn}(x){\begin{cases}{\dfrac {A|x|}{1+\ln(A)}},&\mathrm {pour} \ |x|<{1 \over A}\\[6pt]{\dfrac {1+\ln(A|x|)}{1+\ln(A)}},&\mathrm {pour} \ {1 \over A}\leq |x|\leq 1\end{cases}}$,

où A est le paramètre de compression. En Europe, on prend la valeur A = 87,7. La valeur A = 87,6 est parfois utilisée.

La fonction inverse est la suivante :

    $F^{-1}(y)=\operatorname {sgn}(y){\begin{cases}{\dfrac {|y|(1+\ln(A))}{A}},&\mathrm {pour} \ |y|<{\frac {1}{1+\ln(A)}}\\[6pt]{\dfrac {\exp(|y|(1+\ln(A))-1)}{A}},&\mathrm {pour} \ {\frac {1}{1+\ln(A)}}\leq |y|<1\end{cases}}$

### Transformation discrète

Dans le codec G.711, on n'utilise pas cette formule qui serait trop longue à calculer, mais un algorithme de transformation binaire qui donne des résultats approchants.

Cet algorithme prend en entrée un échantillon linéaire sur 12 bits (dont un bit de signe s), et donne en sortie un code sur 8 bits :

| Échantillon linéaire | Code compressé |
| - | - |
| s0000000wxyz | s000wxyz |
| s0000001wxyz | s001wxyz |
| s000001wxyza | s010wxyz |
| s00001wxyzab | s011wxyz |
| s0001wxyzabc | s100wxyz |
| s001wxyzabcd | s101wxyz |
| s01wxyzabcde | s110wxyz |
| s1wxyzabcdef | s111wxyz |

Ce codage est similaire à une représentation en virgule flottante en base deux avec un bit de signe, une mantisse de 4 bits et un exposant de 3 bits.

