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