Détail du fonctionnement d`un décodeur MP3

Transcription

Détail du fonctionnement d`un décodeur MP3
NOTE D'APPLICATION
Détail du fonctionnement d'un décodeur MP3
Pierre Peixoto GE3 2010
page 1 / 16
SOMMAIRE
Introduction..............................................................................................page 3
Principe de compression..........................................................................page 3
PCM.........................................................................................................page 4
Principe de décodage MPEG-1 Layer 3...................................................page 5
Norme MPEG-1 Layer 3..........................................................................page 7
Anatomie d'un fichier MP3......................................................................page 7
Pierre Peixoto GE3 2010
page 2 / 16
Introduction
La norme MPEG-1 Layer 3 est apparue dans les années 80 à l'initiative de l'Organisation
Internationale de Standardisation (ISO), pour palier au problème de stockage et de transmission de
signaux audio de qualité CD. En effet, le besoin de réduire ce volume de données devenait de plus en
plus important. Ainsi un groupe d'experts, nommé Moving Pictures Experts Group (MPEG), a été
chargé de développer un standard pour compresser de l'audio et de la vidéo. La partie audio est
décomposée en 3 modes de complexité croissante. Nous allons nous intéresser ici au troisième mode
appelé Layer 3 ou plus communément appelé MP3.
Avant de s'intéresser au principe de décodage MP3, une première partie donnera un aperçu du principe
utilisé pour arriver à compresser un signal audio. On donnera ensuite quelques détails sur la norme
MP3 et on finira par détailler l'architecture d'un fichier MP3.
Principe de compression
Pour comprendre comment un fichier MP3 peut contenir une musique ou un signal audio en
utilisant moins de données qu'un fichier audio de qualité CD, il faut s'intéresser au fonctionnement de
l'oreille humaine et à la perception des sons par un être humain.
Tout d'abord il faut savoir que l'être humain peut percevoir des sons situés dans un gamme de
20hz à 20 khz, la limite haute diminuant avec l'âge. L'idée sous-jacente à la compression d'un signal
audio repose sur un principe physiologique de l'être humain. Comme notre cerveau ne peut pas traiter
toutes les données en provenance de nos cinq sens au même instant, on peut considérer que les données
sont filtrées avant d'atteindre notre cerveau. Par conséquent, comme toutes les fréquences d'un signal
audio de qualité CD parvenant à nos oreilles ne sont pas perceptibles, on les considérera inutiles et
donc on ne stockera pas les parties inaudibles pour l'être humain. On appel cet effet le masquage. Il y a
deux types de masquages, le masquage temporel et le masquage simultané. On a donc bien affaire à une
compression avec perte de données et on va donc dégrader le signal original.
Principe du masquage temporel
Quand on se place dans le domaine temporel, un forte tonalité va en masquer une autre si elle
apparaît dans un petit intervalle de temps avant et après cette tonalité masquante. Typiquement, le prémasquage va durer environ 50 ms et le post-masquage entre 50 et 300 ms suivant la durée et la
Pierre Peixoto GE3 2010
page 3 / 16
puissance de la tonalité masquante. La figure 1 illustre ce principe.
Figure 1 : principe du masquage temporel
Principe du masquage simultané
Les expériences ont montré que l'oreille humaine peut être décomposée en 24 bandes de
fréquence. Les fréquences à l'intérieur de ces bandes critiques sont difficiles à distinguer entre elles.
Une tonalité dominante, à l'intérieur d'une bande critique, va introduire un seuil de masquage qui va
masquer les fréquences dans cette même bande critique. La figure 2 illustre ce principe de masquage.
Figure 2 : principe du masquage simultané
PCM
Le format PCM (Pulse Code Modulation) est un standard pour le stockage et la transmission de
signaux audio numériques non compressés, utilisé par exemple avec les CD audio. Il y a 2 variables
importantes pour le format PCM : la fréquence d'échantillonnage en Hz et le bitrate en Bit. La
fréquence d'échantillonnage donne le nombre d'échantillons par seconde constituant l'enregistrement.
Pierre Peixoto GE3 2010
page 4 / 16
Le bitrate donne le nombre de bits utilisés pour coder un échantillon. Un CD audio a une fréquence
d'échantillonnage de 44 100 Hz et un bitrate de 16 bits.
Après décodage d'un fichier MP3, on obtiendra un signal audio de type PCM. En utilisant la
compression MP3, on peut en moyenne compresser un signal PCM original d'un facteur 12 sans perte
de qualité importante.
Principe de décodage MPEG-1 Layer 3
Lors de l'encodage d'un fichier MP3, on va stocker l'amplitude des raies fréquentielles du signal.
On va donc se placer dans le domaine fréquentiel, en appliquant une transformée en cosinus discrète
modifiée (TCDM), ou modified discrete cosine transform (MDCT) en Anglais, au signal d'entrée qui
aura, au préalable, été filtré en 32 bandes de fréquence. C'est une fonction qui, pour 2N échantillons en
entrée, renvoie N échantillons en sortie. f : ℜ2N  ℜN (avec ℜ l'ensemble des nombres réels).
2N −1

1 N
1
X k = ∑ x n cos [  n   k  ]
N
2 2
2
n=0
Pour améliorer les propriétés de cette transformée, on va multiplier les échantillons x n par une

1
 n ] . La norme MPEG-1 Layer 3 autorise l'utilisation
fenêtre, comme par exemple w n=sin [
2N
2
de quatre fenêtres différentes. Lors de l'encodage, le numéro de la fenêtre sera enregistré pour
permettre au décodeur de procéder à la transformation inverse.
Ces amplitudes vont êtres codées en utilisant un codage de Huffman. Le codage de Huffman s'appuie
sur la probabilité d'apparition d'une valeur d'amplitude de raie fréquentielle dans notre cas. La valeur
qui a la probabilité d'apparition la plus forte est codée avec le moins de bits possible et on ajoute des
bits pour coder les valeurs d'une probabilité plus faible. Cela implique donc d'analyser la séquence à
coder avant de coder les valeurs des raies fréquentielles. Un certain nombre de tables de
correspondances sont données par la norme MPEG-1 Layer 3. L'encodeur MP3, après analyse des
valeurs à coder, va choisir la table la plus appropriée pour encoder les valeurs des raies. La ou les
numéros de tables utilisées seront enregistrés dans le fichier MP3 pour permettre au décodeur MP3 de
décoder les raies fréquentielles.
En plus des raies fréquentielles, on va aussi stocker ce que l'on appelle les scalefactors. Ce sont des
coefficients appliqués à l'amplitude des raies fréquentielles, pour diminuer le bruit et l'aliasing causé
par le filtrage en 32 sous-bandes de fréquence du signal original.
Pierre Peixoto GE3 2010
page 5 / 16
La figure 3 illustre les étapes à suivre pour décoder un flux MP3.
Bitstream
Synchronisation et vérification d'erreur
Décodage des
scalefactors
Décodage informations
de décodage Huffman
Décodage
Huffman
Scalefactors
Raies
fréquentielles
Re quantification
Ré ordonnancement
Décodage stéréo
Réduction d'alias
Réduction d'alias
IMDCT
IMDCT
Inversion de phase
Inversion de phase
« synthesis
polyphase
filterbank »
« synthesis
polyphase
filterbank »
gauche
Domaine
fréquentiel
Domaine
temporel
droite
PCM
Figure 3 : étapes du décodage MP3
IMDCT (inverse modified discrete cosine transform ) :
yn =
Pierre Peixoto GE3 2010
1
N
N −1
∑ X k cos [ N  n 12  N2  k  12 ]
k=0
page 6 / 16
Norme MPEG-1 Layer 3
Deux variables importantes caractérisent un fichier MP3. La fréquence d'échantillonnage en Hz
et le bitrate en Bit/s. La fréquence d'échantillonnage donne le nombre de fois par seconde que le signal
est stocké. La norme MPEG-1 Layer 3 définit des fréquences d'échantillonnage de 32 kHz, 44.1 kHz et
48 kHz. Le bitrate donne la quantité de données autorisée à être stockée pour chaque seconde d'un
signal audio non compressé. La norme MPEG-1 Layer 3 définit des bitrate de 8 kbit/s à 320 kbit/s.
Ce standard spécifie deux types de bitrate : un bitrate constant (CBR) et un bitrate variable (VBR).
Quand un bitrate constant est utilisé, chaque partie de l'enregistrement est codé avec le même bitrate.
Quand un bitrate variable est utilisé, certaines parties de la musique très complexes vont être encodées
avec un bitrate élevé, tandis que les parties comportant du silence, par exemple, vont être encodées
avec un bitrate plus faible.
La norme MPEG-1 Layer 3 définit quatre types de canaux:
•
•
•
•
Mono
Double canal
Stéréo
Joint stéréo
Les fichiers MP3 en double canal sont constitués en réalité de deux canaux mono, c'est à dire que les
deux canaux sont encodés indépendamment l'un de l'autre. Chacun utilise exactement la moitié du
bitrate du fichier. Un exemple de leur utilisation serait par exemple d'encoder un discourt en deux
langues différentes et de ne choisir de décoder seulement celui dans la langue choisie.
Les fichiers MP3 en joint stéréo prennent en compte la redondance entre le canal gauche et le canal
droit pour optimiser le codage. Il y a deux techniques : middle/side stereo et intensity stereo. La
première est utilisée si les canaux gauche et droit sont fortement corrélés. Le canal gauche et le canal
droit sont alors respectivement transmis comme la somme et la différence des deux canaux. Dans le
mode intensity stereo, les bandes de fréquences hautes sont encodées en un signal sommé avec leur
position d'intensité. L'information stéréo est en réalité contenue dans la position de l'intensité car
seulement un canal est transmis. Il apparaît des incohérences stéréos mais négligeables pour l'oreille
humaine si elles ne sont pas très nombreuses.
Il est à noter que certains encodeurs utilisent une combinaison des deux techniques.
Anatomie d'un fichier MP3
Chaque fichier MP3 est décomposé en trames d'une durée de 26 ms. Dans chaque trame sont
stockés 1152 échantillons audio. De plus, une trame est divisée en deux parties appelées granule.
Chaque granule contient donc 576 échantillons. La taille d'une trame est donnée par la formule
144∗bitrate bit / s
 padding  octets
suivante: taille frame octets=
fréquence échantillonnage Hz 
Pierre Peixoto GE3 2010
page 7 / 16
144∗128000
≈ 417 octets
44100
Le padding peut être utilisé pour satisfaire les contraintes liées au bitrate. S'il est utilisé dans une trame,
celle-ci est paddée avec un octet.
Ex :
Tag ID3
Les fichiers MP3 peuvent être, ou pas, encapsulés autour de ce qu'on appelle un TAG ID3. C'est
un bloc contenant des informations sur l'artiste de la musique, le genre de musique etc... Il y a plusieurs
versions qui existent. La première version, d'une taille fixe, était placée en fin de fichier mp3. La
deuxième version, de taille variable, se trouve en début de fichier. Il n'est pas rare de trouver des
fichiers MP3 avec les deux versions. On trouvera de plus amples détails sur les TAG ID3 à l'adresse
suivante : http://www.id3.org
La figure 4 illustre la composition d'un fichier mp3.
Fichier mp3
ID3 V2
Trame
Trame
Trame
Trame
ID3 V1
Figure 4 : architecture d'un fichier MP3
Comme l'illustre la figure 5, une trame se compose de cinq parties :
•
•
•
•
•
header
CRC
side information
main data
ancillary data
Pierre Peixoto GE3 2010
page 8 / 16
Trame
Header
CRC
Side information
Données principales
Données annexes
Figure 5 : composition d'une trame MP3
Header d'une trame
La partie header fait 32 bits et contient un mot de synchronisation. Il faut faire attention au fait
que dans une trame on peut retrouver ce mot de synchronisation alors que ce n'en est pas un. Ainsi un
décodeur MP3 devrait vérifier ce mot de synchronisation pour deux trames consécutives ou bien
vérifier la validité des données dans la partie side information.
La figure 6 nous donne le détail de la partie header.
Header : 32 bits
Sync
ID
12
1
Layer
2
Bit de
Prot.
1
Bitrate Frequence
4
2
Bit de
padding
Bit
privé
Mode
1
2
1
Extension Copy
de mode
2
Originale Emphasis
1
1
2
Figure 6 : architecture de la partie header d'une trame MP3
Syns (12bits) : c'est le mot de synchronisation. Tous ces bits doivent être à 1 (0xFFF).
Id (1 bit) : spécifie la version MPEG. Si le bit est à 1, la trame est encodée avec la norme MPEG-1
sinon avec la norme MPEG-2.
Layer (2 bits) : voir table 6.1
00
01
10
11
réservé
Layer 3
Layer 2
Layer 1
Table 6.1 : définition des bits consacrés au layer
Bit de protection (1 bit) : si le bit de protection est à 1, le champ CRC est utilisé.
Bitrate (4 bits) : voir table 6.2. Le bitrate sera le même pour toutes les trames si l'encodage est réalisé
en bitrate constant.
Pierre Peixoto GE3 2010
page 9 / 16
bits
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Layer 1
MPEG-1
Layer 2
Layer 3
Layer 1
MPEG-2
Layer 2
Layer 3
32
64
96
128
160
192
224
256
288
320
352
384
416
448
32
48
56
64
80
96
112
128
160
192
224
256
320
384
32
40
48
56
64
80
96
112
128
160
192
224
256
320
32
64
96
128
160
192
224
256
288
320
352
384
416
448
32
48
56
64
80
96
112
128
160
192
224
256
320
384
32
40
48
56
64
80
96
112
128
160
192
224
256
320
Table 6.2 : définition du bitrate
Fréquence (2 bits) : donne la fréquence d'échantillonnage. Voir table 6.3.
bits
00
01
10
11
MPEG-1
44100 Hz
48000 Hz
32000 Hz
réservé
MPEG-2
22050 Hz
24000 Hz
16000 Hz
réservé
MPEG-2.5
11025 Hz
12000 Hz
8000 Hz
réservé
Table 6.3 : définition de la fréquence d'échantillonnage
Bit de padding (1 bit) : un flux encodé en 128 kbit/s à une fréquence d'échantillonnage de 44100 Hz va
créer des trames de 417 octets. Pour respecter exactement le bitrate, certaines trames vont devoir avoir
une taille de 418 octets. Ces trames vont avoir leur bit de padding à 1.
Bit privé (1 bit) : bit spécial pour des applications spécifiques.
Mode (2 bits) : spécifie quel mode de canal est utilisé. Voir table 6.4.
00
01
10
11
stéréo
joint stéréo
double canal
mono
Table 6.4 : mode de canal
Extension de mode (2 bits) : ces deux bits sont utilisés quand le mode joint stéréo est sélectionné.
Celui-ci peut être changé d'une trame à une autre. Voir table 6.5.
Pierre Peixoto GE3 2010
page 10 / 16
bits
00
01
10
11
Intensity stereo
off
on
off
on
MS stereo
off
off
on
on
Table 6.5 : extension de mode
Bit de copyright (1 bit) : si ce bit est à 1, le contenu est une copie illégale.
Bit original (1 bit) : ce bit, s'il est mis à 1, indique que la trame se trouve dans son média original.
Emphasis (2 bits) : cette indication permet au décodeur de savoir si le fichier doit être déemphasé, c'est
à dire s'il doit ré-égaliser le son après un traitement de suppression de bruit de type Dolby. Voir table
6.6.
00
01
10
11
rien
50/15 ms
réservé
CCITT J.17
Table 6.6 : modèle de suppression de bruit
Partie CRC (0 octet , 16 octets)
Cette partie n'existe que si le bit de protection de la partie header est à 1. Elle a pour but de
permettre la vérification d'erreurs de transmission de la partie sensible définie comme les bits 16 à 31
de la partie header et de la partie side information. Si ces valeurs sont incorrectes, elles vont corrompre
la trame entière (contrairement à une erreur dans les données qui va seulement causer de la distorsion).
Il faudra alors rendre silencieuse la trame ou bien la remplacer par la trame précédente.
Partie side information
Cette partie fournit les informations nécessaires au décodage des données principales. Sa taille
dépend du mode de canal utilisé. Si le flux est mono, sa taille sera de 17 octets, sinon cette partie aura
une taille de 32 octets. La figure 7 détaille les différentes parties composant la side information.
Début données
principales
Bits
privés
Scfsi
Side info granule 0
Side info granule 1
Side information
Figure 7 : side information
Pierre Peixoto GE3 2010
page 11 / 16
Début donnée principales (9 bits) : la norme MPEG-1 Layer 3 définit une technique appelée bit
reservoir qui autorise l'utilisation de l'espace restant dans la partie consacrée aux données principales.
La valeur donnée par le champ début données principales est un décalage négatif depuis le premier
octet de synchronisation. Comme ce champ comporte 9 bits, on peut obtenir un décalage de
29 −1∗8=4088 bits . Cela signifie que l'on peut trouver les données principales d'une trame, à
quelques trames précédentes. Il est à noter que la partie header n'est pas comprise dans la valeur de ce
décalage. Si le champ début données principales est à 0, les données principales se trouvent
directement après la partie side information.
Bits privés (5 bits mono, 3 bits sinon) : ce sont des bits réservés.
Scfsi (4 bits mono, 8 bits sinon) : l'information sur la sélection des scalefactor (ScaleFactor Selection
Information) détermine si les mêmes scalefactors seront utilisés pour les deux granules. La table 7.1
détaille les quatre groupes de scalefactors.
groupe
0
1
2
3
bandes de scalefactor
0,1,2,3,4,5
6,7,8,9,10
11,12,13,14,15
16,7,18,19,20
Table 7.1 : groupes de scalefactors
4 bits par canal sont transmis, un pour chaque bande de scalefactor. Si un bit appartenant à une bande
de scalafactor est à 0, les scalefactors pour cette bande sont transmis pour chaque granule. Un bit à 1
signifie que les scalefactors sont valident pour le granule 0 et le granule 1.
Side information pour chaque granule : les deux dernières parties de la side information ont la même
architecture. La figure 7.2 détaille cette architecture.
longueur partie 2 et 3
Drapeau de fenêtre
gain sous bloc
échelle des scalefactors
grosses valeurs
type fenêtre
compteur région 0
sélection de table
gain global
drapeau de bloc
compteur région 1
compression scalefactor
sélection de table
Pré-drapeau
Figure 7.2 : architecture de la side information pour chaque granule
Longueur partie 2 et 3 (12 bits mono, 24 bits sinon) : donne le nombre de bits alloués dans la partie
données principales pour les scalefactors et les données encodées par les tables de Huffman. Ce champ
peut être utilisé pour calculer la localisation du prochain granule ou bien des données auxiliaires si
elles sont utilisées.
Grosses valeurs (9 bits mono, 18 bits sinon) : les 576 raies fréquentielles de chaque granule ne sont pas
codées avec les mêmes tables de Huffman pour améliorer les performances du codage. On découpe la
gamme de fréquence (de 0 à la fréquence de Nyquist) en cinq parties, comme indiqué sur la figure 7.3.
Pierre Peixoto GE3 2010
page 12 / 16
Ce champ indique la taille de la région des grosses valeurs.
1
Région grosses valeurs
Région 0
Région 1
Région count1
Région rzero
576
Région 2
Figure 7.3 : découpage du spectre de fréquence en régions
Gain global (8 bits mono, 16 bits sinon) : spécifie la taille du pas de quantification utilisé lors du
décodage MP3.
Compression scalefactor (4 bits mono, 2 bits sinon) : donne le nombre de bits utilisés pour la
transmission des scalfactors. Un granule peut être divisé en 12 ou 21 bandes de scalfactors suivant le
type de fenêtre utilisé. La figure 7.4 donne la taille du premier groupe et du second groupe des
scalfactors.
compression scalfactors
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Groupe 1
0
0
0
0
3
1
1
1
2
2
2
3
3
3
4
4
Groupe 2
0
1
2
3
0
1
2
3
1
2
3
1
2
3
2
3
Table 7.4 : nombre de bits alloués aux scalefactors pour le groupe 1 et 2
Drapeau de fenêtre (1 bit mono, 2 bits sinon) : ce bit indique si une fenêtre autre que la fenêtre normale
est utilisée (voir la partie MDCT). Les champs type de bloc, drapeau de bloc et gain sous bloc sont
seulement utilisés si le bit est à 1 et la région 2 (voir champ grosses valeurs) sera alors non utilisée.
Type fenêtre (2 bits mono, 4 bits sinon) : seulement utilisé si le bit de drapeau de fenêtre est utilisé.
Comme l'indique la table 7.5, ce champ indique le type de fenêtre utilisée.
Pierre Peixoto GE3 2010
page 13 / 16
type fenêtre
00
interdit
01
début
10 fenêtre courte
11
fin
Table 7.5 : type de fenêtre utilisée
Drapeau de bloc (1 bit mono, 2 bits sinon) : seulement utilisé si le bit de drapeau de fenêtre est utilisé.
S'il est à 1, ce bit indique que plusieurs types de fenêtres sont utilisés pour les basses et hautes
fréquences, les 2 plus basses sous-bandes sont transformées avec une fenêtre normale tandis que les 30
autres sous-bandes utilisent une fenêtre spécifique indiquée par le champ type fenêtre.
Sélection de table (10 bits mono, 20 bits sinon ou 15 bits mono, 30 bits sinon) : ce champ indique l'une
des 32 tables de Huffman (données par la norme) à utiliser (codée sur 5 bits car 32 tables de Huffman
possibles). Si le bit drapeau de fenêtre est à 1 (la région 2 est vide), en mode mono ce champ fera
5*2*1 = 10 bits ou 5*2*2 = 20 bits sinon et si le bit du drapeau de fenêtre est à 0, ce champ fera
5*3*1 = 15 bits en mono ou 5*3*2 = 30 bits sinon.
Gain sous bloc (9 bits mono, 18 bits sinon) : seulement utilisé si le bit de drapeau de fenêtre est utilisé
et si le type fenêtre est '10'. 3 bits indiquent le décalage de gain pour chaque petit bloc.
Compteur région 0 (4 bits mono, 8 bits sinon) et Compteur région 1 (3 bits mono, 6 bits sinon) : ces
champs contiennent respectivement le nombre de bandes de scalefactors moins 1, pour la région 0 et
pour la région 1. Si une fenêtre courte est utilisée, chaque fenêtre est comptée et on aura par exemple si
compteur région 0 vaut 8, 9/3 = 3 bandes de scalefactors dans la région 0.
Pré drapeau (1 bit mono, 2 bits sinon) : si le bit est à 1, les valeurs d'une table donnée par la norme sont
ajoutées aux scalefactors. Si le type de fenêtre utilisé est '10' (fenêtre courte), ce champ n'est pas utilisé.
Échelle des scalefactors (1 bit mono, 2 bits sinon) : indique quel pas de quantification est utilisé pour
les scalefactors, comme l'indique la table 7.6.
Échelle des scalefactors
0
1
taille de pas
v2
2
Figure 7.6 : taille de pas utilisé pour la quantification des scalefactors
Pierre Peixoto GE3 2010
page 14 / 16
Sélection de table (1 bit mono, 2 bits stéréo) : ce champ spécifie laquelle des 2 tables de Huffman
utiliser pour la région 1.
Partie données principales
La figure 8 détaille l'architecture des données principales:
Données principales
Granule 0
Canal gauche
Scalefactors Code Huffman
Canal droit
Scalefactors Code Huffman
Granule 1
Canal gauche
Canal droit
Scalefactors Code Huffman
Scalefactors Code Huffman
Figure 8 : architecture des données principales
Chaque division du spectre de fréquence en bandes de scalefactors est indiquée par des tables données
par la norme MPEG-1 Layer 3. Cette division dépend de la fréquence d'échantillonnage et de la taille
du type de fenêtre utilisée.
Scalefactors : le but des scalefactors est de réduire le bruit de quantification. Un scalefactor est
transmis par bande de scalefactor. Le nombre de bit pour coder cette valeur est donné par le champ
compression scalefactor.
Code Huffman : on a vu que la plage de fréquence à encoder était découpée en cinq partie comme le
rappel la figure8.1. Ces cinq parties se retrouvent dans le champ code huffman.
1
Région grosses valeurs
Région 0
Région 1
Région count1
Région rzero
576
Région 2
Figure 8.1 : découpage du spectre de fréquence en régions
Pour la région des grosses valeurs, ce sont des paires de raies fréquentielles qui sont encodées. On
utilisera une des tables de Huffman indiquée dans la partie side information pour décoder ces valeurs.
Dans la région count 1 se sont des quadruplets de valeur de raies fréquentielles qui sont encodées. La
région rzero ne contient seulement que des zeros et n'est donc pas encodée en utilisant le codage de
Huffman. Il utilise le codage par plages ou « runlength » (RLE) en Anglais. C'est un codage très utilisé
en compression d'image. Par exemple, pour une image noire et blanc au lieu de coder un bit par point,
Pierre Peixoto GE3 2010
page 15 / 16
on dispose d'un compteur indiquant combien de points blancs ou noirs se suivent. Dans notre cas, la
région rzero nous donnera le nombre de zeros.
Partie données auxiliaires
Cette partie est optionnelle. Elle indique où sont situées les données principales de la prochaine
trame MP3.
CONCLUSION
Cette note d'application détaille les étapes à réaliser pour procéder au décodage d'un fichier
MP3. Malgré cela, de plus amples informations pourront être données dans les spécifications de la
norme ISO/IEC 11172-3 « coding of moving pictures and associated audio for digital storage media at
up to about 1,5 Mbit/s – Part 3 ».
http://en.wikipedia.org/wiki/Huffman_coding
http://en.wikipedia.org/wiki/Aliasing
http://en.wikipedia.org/wiki/Modified_discrete_cosine_transform
http://www.id3.org/
http://www.mp3-tech.org/
Pierre Peixoto GE3 2010
page 16 / 16