COMPRESSION D`UN SIGNAL CODEC AUDIO, VIDEO I

Transcription

COMPRESSION D`UN SIGNAL CODEC AUDIO, VIDEO I
COMPRESSION D’UN SIGNAL
CODEC AUDIO, VIDEO
Avant de transmettre, le signal numérisé on peut vouloir changer sa représentation en éliminant des redondances =>
Compression. Il y a 2 types de compression
- Avec pertes = supprimer ce qui est mal perçu => lié à la perception
=> Après décompression on a perdu des informations,
- Sans perte = supprimer les redondances.
=> Après décompression, on a au bit près le message d'origine.
Le codec est caractérisé par:
Débit de sortie
Temps de calcul nécessaire
Complexité de calcul = Ressources nécessaires
Perte de qualité
I) Compressions sans perte
RLE
Chaque fois qu’un caractère se répète, on transmet un code de contrôle, le nombre de fois qu’il se répète et le caractère
=> Efficace si on a beaucoup de répétitions ( pixels d'une image ).
Exemple : ABBAAAAACBBBDDD devient A%2B%5AC%3B%3D
Huffman : 1940
On change la taille des codes: Codage statistique ou entropique.
On affecte aux caractères - fréquents un codage court,
- rares un codage long.
=> Souvent des codes courts, rarement des longs => Gain
Mais il faut aussi transmettre au récepteur le dictionnaire pour qu'il fasse le décodage.
Exemple : ABBAAAAACBBBDDD devient 1000011111011000000010010010 car A=1, B=00,C=011,D=010
LZW ou V42bis : 1984 ( fichiers zip, arj,…, GIF, TIFF5 pour les images ).
Huffman travaille sur des caractères séparés, LZW prend en compte des chaînes de caractères.
Principe:
L'émetteur lit les caractères du fichier ( exemple : 8 bits ).
Il fabrique un tableau avec les caractères et les caractères précédents.
Il transmet l’adresse de la chaîne de caractère dans le tableau.
( exemple : adresse sur 12 bits = table de 4096 chaînes ).
Si on a un caractère, on transmet l'adresse 12 bits à la place du caractère 8 bits => Pas de compression.
Mais dès que l'on a des combinaisons de 2, 3 ou plus de caractères, l'adresse 12 bits est plus petite => Gain.
ALGORITHME DE
COMPRESSION :
Initialisation de la table : Placer les caractères 0 à 255 aux adresses 0 à 255 de la table.
Chaîne = vide
Faire
Lire le caractère C
Si chaîne + C est dans la table
chaîne = chaîne + C
ne rien émettre
sinon
émettre l’adresse de chaîne
ajouter chaine+C à la table
chaîne = C
Jusqu’à ce que le caractère lu = fin
En plus de l’efficacité, il n’y a pas à transmettre le dictionnaire car le récepteur va construire la table de la même
manière qu'il a été construit.
J. Millet
1
Codecs
II) Transformée de Fourier en cosinus discrets : DCT
On a besoin de connaître les fréquences d'une information en 2 dimensions x,y. Au lieu de la FFT, on utilise la DCT:
DCT (i, j ) =
N −1N −1
c( i ) c( j ) ∑ ∑
2N
x =0 y=0
1
 (2 x + 1) i π 
 (2 y + 1) j π 
Pix ( x, y) cos
 cos





2N
2N
où c(n) =
2
si n=0 et c(n) =1 sinon.
2
On applique cette transformation à des blocs de pixels 8×8 ( représentation spatiale ).
=> On obtient une représentation spectrale 8×8 ( fréquence horizontale × fréquence verticale ).
Le schéma indique ce que sont :
- Fréquences basses: Peu de variations
( bloc en haut à gauche )
- Fréquences verticales croissantes
( descendre une colonne )
- Fréquences horizontales croissantes
( ligne de gauche à droite )
- Fréquences hautes: Variations rapides
( bloc en bas à droite )
Le point (0,0) d’un bloc est la valeur moyenne des pixels du bloc ( fréquence 0 ).
L'oeil humain est moins sensible aux hautes fréquences => Mauvais codage pour gagner de la place.
La DCT est une autre transformation que la transformation de Fourier discrète ( TFD ) bidimensionnelle ( ou sa
version simplifiée FFT ). Elle en découle mais a en plus les avantages (moins de distorsion après troncature et transformée inverse).
III) Compression audio
Codecs d'origine Télécoms
Selon la technique de codage ( codec ), on a des variations de qualité ( dégradations ), de débit, de latence
=> Indice de qualité:
- Indice MOS ( Mean Opinion Score = Note moyenne d’opinion ) : Norme UIT P800.
C’est une note donnée par des gens choisis comme testeurs => Relativement subjectif
La note va de 5 à 1( 5 = excellent, 4 = bon, 3 = correct, 2 = médiocre, 1 = mauvais )
- Indice PSQM ( Perceptual Speech Quality Measure ) : Norme UIT P861
Compare le message source au message reçu.
- Indice R : Norme UIT G109
R = Ro – IS – Id – Ie + A qui intègre Ro pour les effets de bruit, IS pour les effets de la numérisation, Id pour les
effets d’écho, Ie pour les dégradations causés par les équipements utilisés ( transcodage, perte de paquets,…), A qui
est le facteur d’expectative = diminution d’indice acceptée par un usager pour le système utilisé.
De 100 à 90 qualité optimale, 90 à 80 qualité haute, 80 à 70 qualité moyenne
De 70 à 60 qualité médiocre, 60 à 0 qualité mauvaise.
Exemple : pour RTC, A =0, pour GSM A=10
J. Millet
2
Codecs
Cas de
l’indice
MOS
son parfait
( face à face )
Indice MOS
( mean opinion
score ) de
qualité
4,2
Nom
Norme
Débit kbit/s
Temps
Complexité
en MIPS
4
4
3,6
4
3,9
3,5
MIC
MICDA
LD-CELP
RPE-LTP
CS-CELP
ACELP
CELP
G711
G726
G728
GSM 06-10
G729
G723.1
DOD FS 1016
64
125 µs
32
300 µs
16
625 µs
13
20 ms
8
15 ms
6,3
37,5 ms
4,8
50 ms
0,1
12
33
2,5
20
16
16
millions d’instructions/s
NB : Ce tableau donne la qualité du codage seul ! ! ! ( sans transmission ).
Dans le cas d’indice R :
J. Millet
3
Codecs
Codecs audio Mpeg
Les normes de transmission audio les plus courantes sont celles utilisées en téléphonie :
G711 ou PCM ( moi en µ ou en A ) : MIC 64 kbit/s ( voir TD: MIC 12 bits 8 kHz puis compression 8 bits ).
GSM: Full Rate 13 kbit/s, Half Rate 5,6 kbit/s
G729: payant ! il faut acheter des licences pour l'utiliser. 8 kbit/s
Il en existe beaucoup d’autres en particulier pour les téléphones portables ( codec 3G ). Mais la compression audio la
plus importante car la plus efficace est la compression MP3 = MPEG1 Layer 3.
a) Propriétés psychoacoustiques
La compression MP3 tient compte des propriétés de l’oreille :
* Propriété 1 : Seuil de perception
Cette courbe montre la puissance minimale pour qu’un son soit audible selon sa fréquence.
=> Une fréquence sous la courbe de perception est inaudible => On peut la supprimer.
* Propriété 2 : Effet de masquage
La courbe de seuil est modifiée par la présence d’une fréquence de forte puissance
=> Réduction de la sensibilité à un son en présence d’un autre.
80
80
Trames MP3
60
60
40
40
20
20
0
0
0
5
10
15
0
Présence d’une fréquence
J. Millet
5
10
15
Présence de 3 fréquences
4
Codecs
b) Codage audio MPEG1 couche 1 ( layer 1 )
MPEG détermine les fréquences présentes dans une fenêtre de mesure : 384 échantillons : 8ms à Fe = 48 kHz.
Puis élimine les fréquences sous le seuil.
On traite 32 bandes de fréquences ( banque de 32 filtres en parallèle ):
La sortie des filtres ( 12 valeurs ) donne le spectre => On en déduit le masquage à appliquer ( Puissance dans une bande
sous le seuil de masquage => on ne la code pas. )
On utilise aussi un facteur d’échelle par sous bande = gain pour ne pas avoir de quantification de volume faible
=> Cela diminue le bruit de quantification ( quantification non uniforme ).
Ce facteur d’échelle sera transmis pour que le décodeur puisse faire l’opération inverse.
c) Codage audio MPEG1 couche 2 ( layer 2 )
Une FFT à 512 points est faite pour déterminer le modèle de masquage avec plus de précision => Il faut augmenter le
temps de calcul pour une bonne résolution en fréquence.
=> On utilise 3 trames pour faire les traitements : 1152 échantillons qui sont divisés en 2 groupes, des granules de 576
échantillons chacun. On aura 2 granules de 32 sous-bandes.
d) Codage audio MPEG1 couche 3 ( layer 3 ) = MP3
- On utilise des filtres plus précis, des fenêtres de correction d’effets indésirables dus aux filtres et une transformée
MDCT ( modified DCT ) puis on réduit des effets de repliement dus aux filtres.
- On tient compte aussi de masquage temporel : Non seulement une fréquence puissante masque les autres en
même temps, mais l’oreille ayant une perception lente ( 1 ms ), elle masque aussi les sons auparavant et après.
- Outils liés aux redondances de la stéréo (JS Joint Stereo: IS Intensity St = Mono+Infos sup ou M/S St Mid/Side = L+R et L-R).
- On utilise un codage de Huffman des données.
J. Millet
5
Codecs
V) Compression avec perte d’image : Elimination de redondances spatiales
JPEG ( Joint Photographic Experts Group) = Groupe de travail commun à l’IUT ( Union Internationale des Télécoms ) et l’ISO
( Organisation Internationale de Standardisation ) sur la compression d’image. Début en 1987 et 1er standard en 1991.
T81 = norme JPEG pour l’UIT
Définition d’une image
Une image est faite de pixels ( picture elements ), points élémentaires. Pour avoir la couleur, on doit définir 3
plans. Une caméra donne Rouge, Vert, Bleu ( RVB ou RGB ).
Image 256 couleurs : couleur d’un pixel RVB sur 8 bits => Indexation
Fichier BMP 256 couleurs : Pixels codés sur un octet = n° de couleur
( En début de fichier , une table ou index associe 256 couleurs RVB 24 bits à un numéro ).
Pour une image 16 millions de couleurs : couleur d’un pixel sur 24 bits.
Fichier BMP 24 bits : Pixels codés sur 3 octets : Niveau R, niveau V, niveau B.
Les systèmes noir et blanc utilise l'intensité des niveaux de gris = luminance Y. Pour pouvoir lire une image
noir et blanc dans un signal couleur, on transforme RVB en YUV.
- Y Luminance : Variable à laquelle l’œil est très sensible => qui sera peu dégradée au codage,
- U, V Chrominance : 2 variables liées à la couleur => que l’on peut plus dégrader.
Luminance Y et chrominances Cb=U et Cr=V sont des combinaisons linéaires des niveaux R V B :
Y = 0.299 R + 0.587 G + 0.114 B
U = Cb = B - Y = -0.169 R - 0.331 G + 0.500 B
V = Cr = R - Y = 0.500 R - 0.419 G - 0.081 B
Principe de JPEG ( UIT-T T81 )
Soit une image 640x480 RGB 24 bits/pixel.
• 1ère étape : Transformation et ré-échantillonnage.
- On passe en représentation Y U V = Y Cb Cr => On a 3 matrices RVB 640x480.
- On réduit U et V à des matrices 320x240 = sous échantillonnage 4 :2 :0
Ligne 1 -> Y Y Y Y
Ligne 2 ->
Cr
Cr
Y Y Y Y
Cb
Cb
- Chaque point de chaque matrice est codé sur 8 bits donc valeurs de 0 à 255.
- On soustrait 128 à chaque élément => Mise à zéro du milieu de la gamme de valeur possible :-128 à +127.
- Enfin chaque matrice est partagée en blocs de 8x8.
J. Millet
6
Codecs
•
2ème étape: DCT.
La DCT sur les blocs 8x8 passe ces points du domaine spatial au domaine fréquentiel. Les axes X et Y
représentent les fréquences du signal en deux dimensions. Elle donne une matrice 8x8 de coefficients de
fréquence: l'élément (0,0) représente la valeur moyenne du bloc, les autres indiquent la puissance spectrale pour
chaque fréquence spatiale.
•
3ème étape : La quantification.
Les coefficients les moins importants pour la restitution de l’image ( hautes fréquences auxquelles l’œil est
moins sensible ) sont amoindris en divisant chaque élément par l'élément correspondant de la table de
quantification. C’est la principale source de perte.
16
12
14
14
18
24
49
72
11
12
13
17
22
35
64
92
10
14
16
22
37
55
78
95
16
19
24
29
56
64
87
98
24 40 51 61
26 58 60 55
40 57 69 56
51 87 80 62
68 109 103 77
81 104 113 92
103 121 120 101
112 100 103 99
Table de quantification
recommandée pour la luminance
17
18
24
47
99
99
99
99
18
21
26
66
99
99
99
99
24
26
56
99
99
99
99
99
47
66
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
Table de quantification
recommandée pour les chrominances Cb Cr
•
4ème étape : remplacement des éléments (0,0)
La DCT après quantification fournit de petites valeurs sauf en (0,0). On remplace chaque premier élément (0,0)
des blocs (8x8) par sa différence avec l'élément correspondant du bloc précédent = Codage DPCM.
Comme ces éléments sont les moyennes de leur bloc respectif, ils varient lentement => Différences petites =>
nombres qui prendront moins de place mémoire.
•
5ème étape : lecture zig-zag
On lit le bloc en zig-zag. A cause des propriétés de la DCT quantifiée, cela donne une suite de 64 nombres avec
les éléments de même valeur proche les uns des autres. Ceci permettra d’améliorer la suite des opérations.
•
6ème étape : Compression RLE
La lecture zig-zag donne beaucoup de répétitions de codes. L’algorithme RLE est donc très efficace.
•
7ème étape : Compression de Huffman
On réalise une compression de Huffman. Cela suppose que l’on aura un dictionnaire à transmettre.
J. Millet
7
Codecs
Résumé :
Remarque : JPEG 2000, la nouvelle version, utilise une transformation en ondelettes => Plus efficace et plus rapide.
VI) Compression avec perte de vidéos : Elimination de redondances spatiales et temporelles
MPEG ( Moving Picture Experts Group ) = groupe de travail d’un sous-comité de l’ISO ( MPEG1 en 1992, MPEG2 en 1994, MPEG4
en 2000)
H263 = approximativement norme MPEG2 pour l’UIT.
H264 = approximativement norme MPEG4 pour l’UIT.
H261 ( norme UIT pour la visioconférence )
On a les formats CIF ( Common Intermediate format ) 352*288 ou QCIF ( Quarter CIF ) 176*144, de 7,5 à 30 images/s selon le
débit disponible.
Une image est décomposée 12 groupes de blocs ( GOB ) comprenant 33 macroblocs faits de 4 blocs de 8*8 pixels.
Le sous échantillonnage est alors réalisé 4 :2 :0 comme JPEG.
J. Millet
8
Codecs
La vidéo est décomposée en images
- image I INTRA : Codage très proche de JPEG = Compression spatiale
Quantification
par
valeur constante ( pas
de table comme en
jpeg )
Le calcul se fait
sur des blocs
d’image
- image P PREDICTIVE : Compression temporelle
Le calcul de
mouvement se fait sur
des macroblocs.
( 48 par 64 )
J. Millet
9
Codecs
La vidéo H261 est faite
des successions de trames I et P :
Le nombre de trames dépendra du débit qui va de 64 kbit/s à 30×64 kbit/s ( groupements de canaux B RNIS ).
Remarque : H263 = évolution de H261 ( 1996 ) proche de MPEG2.
La compensation de mouvement est plus performante en introduisant des trames B ( voir MPEG ).
On définit aussi de nouveaux formats :
SQCIF : 128×96 pour Y, 64×48 pour chrominances,
QCIF : 176×144, 88×72
4CIF : 706×576, 352×288
16CIF : 1408×1152, 706×576
CIF : 352×288, 176×144
Objectif: transmission sur RTC ( débit ≈ 28,8 kbit/s en SubQCIF à 10 images/s=> Qualité médiocre ).
MPEG1
MPEG reprend les bases de H261 :
On code l’image quasiment comme en JPEG => Compression spatiale
Images I Intra
Images P
Predictive
Images B
Bidirectionnelle
( Bidirectionally
predictive )
Moins d’images I à transmettre
indépendante des autres images.
Comme en H261, on calcule un vecteur de mouvement pour des macroblocs par rapport à
l’image I ou P précédente.
S’il y a modification, on code cette évolution, sinon on ne code rien pour le macrobloc
=> Compression importante ( ½ d’une image I ).
On réalise une comparaison avec des images I ou P, une image suivante et une précédente ( les
plus proches ).
=> Recherche d’un macrobloc dans une image précédente et une suivante.
=> Plus de compression, moins de débit.
=> Transmission plus sensible aux erreurs.
Pour éviter qu’une erreur se propage trop, on utilise des GOP ( group of picture ) de 12 à 15 images
Remarque : Le codage demandera de
mémoriser des images
codage I puis
codage P par rapport à I puis
codage B1 puis B2 par rapport à I et P
=> B1 et B2 non codées sont mémorisées )
L’ordre de transmission sera modifié avec cet ordre pour faciliter le décodage ( voir la suite ).
= RVB
J. Millet
10
Codecs
Le décodage se fait à l’inverse du processus de codage :
1) Décompression de l’image I
2) Décompression de l’image P ( avec utilisation de l'image RVB décodée liée à I précédente )
Le décodeur utilise les macroblocs de I et le décodage de P pour restaurer les macroblocs redondants éliminés
des images P. Les vecteurs de mouvement indiquent leur localisation.
3) Décompression de l’image B1 => On sait les modifications de cette image par rapport à l’image I qui la précède et à
l’image P qui la suit. Or on a déjà reconstitué I et P => On en déduit l’image B non compressé.
4) Idem pour B2 où les données de I précédente et P suivante sont disponibles.
5) On remet dans l’ordre les images décodées : I, B1, B2, P ( sous entendu RVB liée à .. ).
6) …
image
compressée
sous entendu
image RVB
liée à …
L’image B Bidirectionnelle est construite selon la méthode suivante :
La trame inclut des repères permettant un accès aléatoire au flux vidéo.
Une image est découpée non seulement en macroblocs et blocs , mais aussi d’une autre manière, en « slice ». Cela
permet de retrouver la synchronisation malgré des données perdues ou corrompues.
J. Millet
11
Codecs
MPEG2
On reprend le principe de MPEG1 mais on ajoute un niveau de complexité avec le multiplexage de différentes sources
=> Trames enrichies.
1) Compression audio et vidéo.
2) Insertion des données compressées et d’informations de contrôle dans le multiplex.
3) Transport du multiplex sur le réseau.
Ces différentes sources peuvent être de qualités différentes. On définit alors une source par un profil ( qualité ) et un
niveau ( LEVEL : résolution ).
Simple
Main profile SNR profile
profile (SP)
(MP)
I, P
I, P,B
I, P,B
Spatial
profile
I, P,B
High profile
1920 × 1152,
30 images/s
80 Mbit/s
1440 × 1152,
30 images/s
60 Mbit/s
720 × 576,
30 images/s
15 Mbit/s
352 × 288,
30 images/s
4 Mbit/s
Non défini
Non défini
Non défini
1440 × 1152,
30 images/s
60 Mbit/s
Non défini
1920 × 1152,
30 images/s
100 Mbit/s
1440 × 1152,
30 images/s
80 Mbit/s
720 × 576,
30 images/s
20 Mbit/s
Non défini
HIGH LEVEL
(HL)
Non défini
HIGH-1440
(H-14)
Non défini
MAIN LEVEL
(ML)
720 × 576,
30 images/s
15 Mbit/s
Non défini
LOW LEVEL
(LL) = CIF
720 × 576,
30 images/s
15 Mbit/s
352 × 288,
30 images/s
4 Mbit/s
Non défini
I, P,B
MPEG4
MPEG-4 se décompose en une suite de normes = les parties contenant : - profils (collection d'algorithmes)
et - niveaux (contraintes quantitatives)
Les 2 parties importantes concernant le codage vidéo sont les parties:
- partie 2: Un des profils est l'ASP (Advanced Simple Profile) = codec de compression pour signaux vidéo.
- partie 10: AVC (Advanced Video Codec) appelé aussi H264 = codec avancé de compression vidéo.
La partie 2 est en fait du mpeg2 amélioré (DivX, Xvid, Quicktime 7 ).
La partie 10 en revanche, le codec mpeg4 AVC est la vraie nouveauté ( H264 reprend en fait seulement certaines parties
de cette norme mpeg4 AVC ). On a alors un fonctionnement complètement différent de mpeg2: En plus d'une meilleure
compression, le flux peut être décomposé en 2 parties ( minimum basse qualité à débit limité, un supplément qui va
augmenter la qualité, la résolution ).
Exemples: DVB recommande uniquement les profiles Main@L3/4 et High@L4 de H264.
=> TV numérique standard sera du Main@L3 .
TV numérique HD en Main ou High @level 4.
Décomposition de l'image en objet ( plus en blocs ) => AVO ( audio visual object )
Scène
Personne
Voix
Décor 2D
Visage
Mobilier
Chaise
Musique
Bureau
Le BIFS ( BInary Format for Scene description ) permet de décrire les objets présents.
H265
Cette compression n’utilise plus de macrobloc mais le codage arithmétique CABAC (Context-adaptive binary arithmetic coding)
Voir http://linuxfr.org/news/h-265-est-finalise
J. Millet
12
Codecs
VII) Formats de vidéo
Affichage entrelacé / progressif
Une vidéo est faite d'une suite d'images qui défilent => Au moins 15 images/s pour que l'oeil humain voit un mouvement
fluide ( cinéma 24 images/s, vidéo 25 à 30 images/s: PAL, SECAM à 25 images/s, NTSC à 29,97 images/s ).
Le signal du téléviseur à tube cathodique se base sur la fréquence du réseau électrique ( 50 Hz en Europe, 60 Hz aux
USA ).
Téléviseur cathodique
PAL SECAM: 625 lignes en 50 Hz ( 576 utiles, 49 de services: synchro, télétexte ).
NTSC: 525 lignes en 60 Hz ( 480 utiles ) => donne en numérique VGA en 4:3 640×480.
Entrelacement( I Interleaved ): Si le téléviseur affiche ligne après ligne à 50 Hz, l'oeil percevra l'évolution entre 2
images successives = scintillement => Il balaie une demi image ( lignes impaires) puis l'autre ( paires ).
La persistance rétinienne fait que l'homme ne voit qu'une image.
Cela s'oppose à l'affichage progressif ( P progressive scan ): On affiche une image entière sans entrelacement
( utilisation de fréquence interne d'affichage plus rapide que celle du réseau électrique ).
Signal numérique
Résolution native: nombre de pixels horizontaux × verticaux
i = affichage entrelacé, p = affichage progressif
format SD ( standard, non HD, ratio 4:3 ) = 576 i
720×576 en entrelacé ( interleaved )
format HD Ready ( ratio 16:9 ) = HD 720p
1280×720 en progressif ( progressive )
format full HD ( ratio 16:9 ) = HD 1080i
1920×1080 en entrelacé ( interleaved )
Remarque: Quad full HD ( ratio 16:9 )
3840x2160 (différent du 4K du cinéma 4096x2160)
Remarque: Choix de la source = Choix Fluidité / Définition pour un récepteur fullHD
Pour un écran FullHD, si on a le choix côté source entre 720p et 1080i ( si l'écran ne fait pas 1080p... ).
=> Choix entre fluidité ( 720p est plus rafraîchi ) ou précision ( 1080i ).
J. Millet
13
Codecs
Formats d'écran
J. Millet
14
Codecs
Conteneur
Le conteneur est un format de fichier ou de trames permettant d'identifier, d'entrelacer et de localiser :
- des flux vidéo: Codec identifié par le code FOURCC ( 4 character code = 4 codes ASCII )
- des flux audio
- des soustitres
- des informations de navigation, sur les programmes ( programmes, menus, chapitres )
- des metadonnées ( metadata ou tag ): type du programme, horaires, émission suivante,
abonnement, paiement.
Le but des développeurs est de permettre:
- Le diffusion par internet ( HTTP, RTP )
- Recherche rapide dans le fichier => Identification et synchronisation.
- Résistance aux erreurs = Correction d'erreurs
- Menus permettant de pointer vers des parties de fichier => Sélection.
- Chapitrage: Découpage des fichiers.
- Sous titres => Synchronisé avec les flux audio et vidéo, à incruster dans la vidéo.
- Choix entre plusieurs pistes audio
- Extension vers de nouvelles utilisations.
Conteneurs courants
Nom du
conteneur
VOB
Définition
Références
DVD Versioned Object Base: Utilisé dans les DVD => http://www.mpucoder.com/DVD/vobov.html
codage mpeg2.
http://dvd.sourceforge.net
Si on change l'extension du fichier en mpg, le fichier
est lisible.
Un DVD est fait de titres vidéos: VTS ( Video Title Set )
Un VTS contient des VOB.
Un VOB contient
- un fichier de contrôle VTSI ( Video Title Set
Information ) = données de navigation.
- un ou des VOB ( vidéo, audio et images
multiplexées ).
Le VOB ne dépasse pas 1 Go.
Il est composé de «cellules» (Cells)
( avance rapide sur DVD ).
- une copie du VTSI ( VTSI Backup ).
En plus des VOB, un DVD contient des infos de
navigation: fichier IFO ( Information ) et BUP ( Backup
du fichier IFO ).
Video_TS.IFO = infos du menu principal accompagné de
Video_TS.vob = animation du menu principal.
AVI
ASF
MPEG TS
MPEG PS
MOV
OGG
RM,
RMVB
J. Millet
Audio Video Interleaved: Format de Microsoft dérivé
d'un format plus général: RIFF ( Resource Interchange
File Format )
( voir plus loin )
Advanced Systems Format/ développé par Microsoft,
dédié au streaming
MPEG Transport Stream
( voir plus loin )
MPEG Program Stream
( voir plus loin )
Quicktime MOVie ( QT1 en 1991, ... QT7 en 2005 )
On trouve aussi le nom OGM = OGG Media file
dédié pour la voix au codec Vorbis, pour la vidéo au
codec Theora.
RealMedia = Conteneur de RealNetworks
( RM Streaming en CBR, RMVB = Streaming en VBR débit
variable )
Codec audio RA ( RealAudio ), video RV ( RealVideo version 10
qui utilise le codec RV40 !!! RV10 et RV20 basés sur H263, RV30
et RV40 propriétaires )
15
"AVI Specification" sur le site MSDN
( Microsoft Developper Network )
"ASF Specification" sur la site Microsoft
norme ISO 13818-1
Norme ISO 13818-1
http://developer.apple.com/technotes
www.xiph.org
RFC3533 et RFC3534
https://common.helixcommunity.org/
http://www.realnetworks.com/products/codec
Codecs
NSV
MKV
3GP
Nullsoft Streaming Video ( développeur de Winamp )
Matroska
Recherche "NSV specification"
www.mastroka.org/technical
( format specification )
Conteneur du 3GPP ( 3rd Generation PartnerShip http://www.3gpp.org/specs/specs.htm
Project ) = Normalisation du téléphone 3G ( UMTS ). puis chercher 26.244
Version simplifiée de MP4 ( video en H263=MPEG4 ASP part 2 ou
H264 = MPEG4 AVC part 10, audio en AMR-NB ou AAC-LC =
AAC Low Complexity ).
REmarque: Il existe le format 3g2 pour le groupe de normalisation
3GPP2.
MP4
Basé sur le format MOV.
Norme MPEG4 partie 12 = ISO 14496-12.
Partie 12 spécification commune aux parties 14, 15, de Quicktime
MOV, de 3GP ( 3GPP 26.244 ), MPEG21 ( ISO21000-9) et
JPEG2000 ( ISO15444-3 )
( Partie 14 = liée à MPEG4, Partie 15 = liée à AVC )
Exemple: MPEG2 TS ( Transport Stream )
On transmet flux audio, vidéo et de données dans des paquets de 188 octets.
Le contenu d'un paquet ( audio, vidéo ou données ) est identifié par le champ PID ( Program Identifier ) situé
dans l'entête du paquet.
Exemples détaillés MPEG2 TS, MPEG2 PS, AVI: Voir annexe
J. Millet
16
Codecs
VoIP Voix sur IP
I) Contexte économique et technologique
Pour les systèmes de transferts multimédia ( voix, données, images ), on observe 2 approches:
- évolution : Intégrer IP aux systèmes téléphoniques.
Intégrer IP à des systèmes voix ( PABX )
- révolution : Intégrer la téléphonie aux systèmes IP.
Intégrer la voix à des systèmes IP ( routeur )
Dans les 2 cas, pour mettre de la voix sur un réseau IP, il faut résoudre le problème de la nature de ces réseaux de
données, basés sur la commutation de paquets qui va contre la nature temps réel et interactive de la voix.
=> Qualité et fiabilité sur un réseau IP dépendent de plus de paramètres qu'en TDM ( Time Division
Multiplex = circuits ). Un système informatique même dédié n’atteint pas le niveau de fiabilité d’un PABX
(
99,8% ). Les fournisseurs suggèrent d'augmenter les capacités des lignes, d'utiliser des redondances.
Mais l’aspect économique ( utilisation d’internet pour regrouper voix et données ) et les possibilités de
convergence Téléphonie-Informatique font que ces techniques se sont développées.
II) Fonctionnement d’un appareil dans un réseau à commutation de paquet: Modèle OSI
On a vu les 2 types principaux de commutation:
Commutation de traitements successifs dépendant du protocole et des autres communications
paquet
=> imprévisible car on partage les ressources mais sans savoir avec qui.
Commutation de établir un chemin privé => Une fois établi on le garde, on ne fait que transmettre
circuit
d’un bout à l’autre des données
=> On est sûr de disposer des ressources de transmission en permanence.
La commutation de circuit est adaptée au transfert de la voix car c’est une transmission temps réel ( pas de trous dans la
transmission ou de variation ).
Le pari de la voix sur IP est de faire passer ce type de communication temps réel sur un réseau à commutation de paquet
adaptée au transfert de données.
Appareil électronique dans un réseau à commutation de paquet
On peut schématiser l’organisation d’un appareil en commutation de paquet.
Mémoires
UE
Unité d’échange
µP
UE
Unité d’échange
L’UE ( Unité d’échange ) reçoit des signaux électriques sur son interface réseau.
UE = contrôleur USB pour USB, Ethernet pour ethernet, codec AMI pour TO/SO, codec HDB3 pour T2,...
L’UE tire des signaux des trames qu’elle transmet au µP qui les stocke en mémoire.
Le µP traite ces données quand il en a la capacité:
- Analyse: Validité ( contrôle d’erreur ), adresses, signification...
- Modification des données pour les transmettre à l’étape suivante
- Transmission à l’UE de sortie => Tronçon suivant de la transmission.
Or un µP a une puissance de calcul limitée ( MIPS ) et une fréquence de travail.
17
VoIP
Traitement des données échangées
a) Niveau 1: Physique
Transmettre à distance = utiliser un phénomène physique qui se propage => Atténuation, dispersion et bruit
La représentation de l’information s’appelle un signal.
=> Lien informations binaire ( 0 et 1 ) et évolutions du phénomène physique.
Exemples: Electrique
Code NRZ: ( 0 = un niveau sur tout le bit, 1 = un autre niveau.
=> port série ( 1 = -12V, 0 = +12V )
Code Manchester utilisé en ethernet ( 0 = front montant
, 1 = front descendant
)
Exemple: Réseau ethernet sur câble coaxial 10 Mbit/s.
b) Niveau 2: Liaison ( trame )
Protocole utilisé entre 2 appareils successifs dans la transmission.
Il comprend surtout
- un moyen de synchroniser ( trouver le début de trame ),
- un moyen de détecter des erreurs.
- un découpage en champs qui ont un sens ( code contenu dans champ = demande d’action ou réponse ),
- une manière d’enchaîner les actions.
c) Niveau 3: Réseau ( paquet )
Protocole utilisé entre source et destinataire dans la transmission.
Il comprend surtout
- un découpage en champs qui ont un sens ( code contenu dans champ = demande d’action ou réponse ),
- une manière d’enchaîner les actions.
Traitements réalisés selon les appareils
HUB
Niveau physique
Niveau liaison
remise en forme
retransmission à tous
COMMUTATEUR
( SWITCH )
remise en forme
Remise en forme
décodage de trame
analyse de contrôle d’erreur
si erreur
élimination de trame
sinon
analyse adr niveau 2
retransmission vers adr desti
Décodage de trame
Analyse de contrôle d’erreur
si erreur
élimination de trame
sinon
analyse adr niveau 2
analyse de trame
Décodage du paquet
analyse adr niveau 3
analyse du paquet
ajout protocole niveau 2
retransmission vers adr desti
Niveau réseau
J. Millet
ROUTEUR
18
VoIP
III) Sources de perte de qualité en commutation de paquet
On a vu comment se faisait la transmission. Quelles en sont les conséquences en terme de qualité ?
va créer
Codec
Distorsion
du signal
Ligne de
Transmission
Perte de
paquet
Perte de
Qualité
Congestion
du réseau
Temps de latence
( latency )
Commutation
Routage
Gigue
( Jitter = variation du
temps de latence )
Perte de paquet: - Si l’on détecte une erreur ( ne recevant pas d’acquittement l’émetteur renverra ) à cause de déformation sur la ligne.
- Si la mémoire de l’appareil est remplie ( congestion ou dépassement de capacité de traitements ) => Suppressions.
Distorsion du signal:
- Au codage, en particulier pour les bas débit, on créera une distorsion entre signal codé et réel.
- Les pertes de paquets créeront une distorsion entre signal codé et réel.
Temps de latence: Temps mis pour transmettre.
Dans le cas de la voix:
- Temps de codage du codec,
- Temps de propagation de la ligne de transmission,
- Temps d’attente dans les mémoires des appareils avant traitement.
Retard total
0 à 150 ms
150 à 300 ms
300 ms à 700 ms
plus de 700 ms
Conséquence
acceptable
acceptable s’il y a peu d’interactivité
communication half duplex ( chacun son tour avec patience )
inutilisable sauf en half duplex avec des règles de parole
( communication militaire: parlé, reçu, terminé,... )
Dans le cas de la commutation de circuit, seul le temps de propagation intervient => Ordre de µs.
Gigue: Variation du temps de transmission.
émis à
reçu à
émis à
paquet 1
t1
paquet 2
t2
t1+∆t1
t2
.
.
.
t3
t2+∆t2
t3
reçu à
t1
avance
t4
t4
t3+∆t3
t4+∆t4
retard
Sans gigue
∆t1 = ∆t2 = ∆t3 = ...
J. Millet
Avec gigue
19
VoIP
A cela s’ajoute dans le cas de la voix le phénomène d’écho:
- Les passerelles doivent traiter l’écho électrique généré par le passage 2 fils / 4 fils ( rupture d’impédance). Avec un affaiblissement de
l’écho courant de seulement 15 dB, la qualité de la communication est inacceptable à partir d’un temps de latence de 25 ms par sens ( norme UIT
G131 ).
- Il y a en plus l’écho acoustique sur les PC multimédia avec haut-parleurs ( leur son revient par le micro ).
CONCLUSIONS:
Communication de voix acceptable: latence < 200 ms
gigue < 30 ms
perte de paquet < 1%
=> obligation de gérer la qualité de service,
=> intérêt à avoir un débit minimum par rapport à la bande passante disponible.
- augmenter la bande passante de la liaison ( cout plus élevé ),
- diminuer celle de la voix ( Mais cela augmente le temps de numérisation
=> délai de transmission plus long et aussi amener une perte de qualité ).
On doit donc trouver un compromis = choix codec.
IV) QoS : Qualité de service
L’appareil reçoit des données de flux qui demandent un traitement différent = Multimédia ( voix, données,
images ). On distingue les trafics selon les besoins en terme de:
Disponibilité du service
Rapport entre le temps de fonctionnement et temps d’établissement du service
Bande passante
Quantité de données à transmettre par rapport au temps. Elle peut être garantie (
réservation ) ou partagée.
Délai de transmission
Ou Latence
Temps que requiert un élément d’information pour aller de la source au destinataire.
Elle dépend
Du temps de propagation ( selon le support : électrique, optique, onde ) ,
Du temps de traitement des noeuds du réseau ( selon le protocole ),
Du rendement du protocole ( rapport entre données de gestion et utiles ).
norme UIT G114
Variation du délai de
transmission
Ou Gigue ( Jitter )
Variation des délais d’acheminement au cours d’une communication.
Taux d’erreur
( BER bit error rate )
Rapport du nombre de bits erronés sur les bits reçus. Il dépend
De la qualité des liaisons ( compensation des affaiblissements,… )
De la charge du réseau pour certains protocoles ( trames éliminées )
Perte de paquets
J. Millet
Au dessus de 20%, le signal est inaudible.
Le renvoi de paquets augmentera en plus le temps de latence.
Perte de paquet ( % )
Qualité
Parfait
0
Bon
3
Moyen
10
Mauvais
25
20
VoIP
Selon l’application, on aura certaines contraintes fortes:
Voix: Contrainte temps réel ( tps de transfert faible et constant ), erreurs acceptées.
Data normale: Pas de contrainte temps réel, pas d’erreur acceptée ( fiabilité ).
Data de contrôle: Latence faible et pas d'erreur acceptée.
La voix est codée sous forme d’échantillons successifs que l’on place dans des paquets IP. Ces paquets doivent
être transmis sur les réseaux ( LAN, WAN ) parmi les autres types d’informations.
Or la voix a un caractère temps réel qui impose une gestion particulière pour ce type d’information d’où la
nécessité de qualité de service QoS.
VLAN = Séparation ( logique ) des flux
Voir cours info, normes 802.1
Protocole RTCP et RSVP
RTCP : Real Time Control Protocol
- Gestion de l’ordre des paquets, détection de paquets manquants,
- Mais pas de gestion de la bande passante.
RSVP : Ressource Reservation Protocol :
La surcharge et la complexité de ces protocoles font qu’ils sont difficilement mis en œuvre. En revanche on a
élaboré de nouveaux systèmes de gestion de QoS. Le plus développé avec MPLS est Diffserv.
Protocole Diffserv = Hiérarchisation des flux
Diffserv utilise pour cela le champ TOS de l’entête Ipv4 :
En IPv4 le TOS est peu utilisé.
La partie Precedence n’est pas utilisée.
On a 5 valeurs pour la partie Type Of Service :
8 = minimise le délai ( Telnet )
4 = Maximalise le débit ( FTP )
2 = Maximalise la fiabilité ( SNMP )
1 = Minimalise le coût ( nombre de routeurs sur le trajet = gestion du Time To Live )
0 = Normal ( ICMP )
Diffserv assure une hiérarchisation des paquets IP => Pas de gestion de bande passante mais une optimisation du
fonctionnement des routeurs ( priorité à VoIP sur UDP plutôt qu’à un téléchargement FTP sur TCP ).
J. Millet
21
VoIP
Le champ TOS est maintenant champ DSCP ( Differentiated Service Codepoint ).
Champ DSCP
Sélecteur de classe
Réservé
3 bits
6 bits
On définit 3 types de classes de trafic :
2 bits
- BE ( Best effort ) : Pas de gestion de QoS : DSCP = 000000
- EF ( Expedite Forwarding : RFC2598 ) : DSCP = 101110
Proche du comportement d’une L.L. : Débit garanti mais ne dépassant pas celui prévu,
Temps de bufferisation limité.
- AF ( Assured Forwarded : RFC2597 ) : DSCP = autres valeurs
On définit des sous-classes : AF1, AF2,…
Un nœud réserve des ressources pour chaque classe.
La classe AFi est prioritaire sur les autres AFj si i<j.
En pratique
La QoS est difficile à mettre en œuvre car elle demande d’avoir des matériels respectant une norme commune
sur toute la liaison.
Exemple: QoS niveau 2 vlan et QoS niveau 3 diffserv
=> Les téléphones taggent les flux IP émis ( configuration des téléphones )
=> Le serveur tagge les flux IP qu'il envoie ( pour Asterisk dans sip.conf on mettra
tos_sip=ef et tos_audio=ef )
=> Les commutateurs du réseau gèrent les flux taggés, font passer en priorité la voix.
La tendance est plutôt
- à surdimensionner la bande passante grâce au gigabit ethernet,
- à la séparation des flux par l’utilisation de VLAN pour la voix.
- à la fragmentation des paquets de données :
Ne pas attendre les paquets de voix sinon:
Voix
Fichier data
Voix
délai de transmission de plus de 30 ms
On fragmente toutes les données
Voix
Data
Data
Data
Data
Data
Data
Data
Voix
Cela n’est pas suffisant, on a encore un délai trop grand
On intercale les paquets de voix au bon moment => Mécanisme de QoS.
Voix
Data
Data
Voix
Data
délai de 30 ms
Data
délai de 30 ms
Voix
Data
Data
délai de 30 ms
Mais cela n’est valable que pour un LAN. Pour le WAN, la transmission de paquets de voix sur IP reste un
problème sans QoS ( Espoirs dans Ipv6... ).
Remarque: En pratique on laisse de côté la QoS et on augmente la bande passante ( Gigabit ethernet ).
=> acceptable en local, mais plus valable sur WAN où le débit est limité.
J. Millet
22
VoIP
V) Codage de la voix: Choix du codec
On a vu les moyens de gérer les flux sur le réseau. Mais si on veut avoir le moins de problème possible en ligne, le plus
efficace est de réduire la représentation de la voix. Ainsi on aura moins de perte en ligne.
Pour cela on peut choisir le codec qui fera le codage de la voix selon des critères
- de débit à transmettre ( volume de données à transmettre par seconde )
- de temps de calcul => Un temps qui participera au temps de latence
- de dégradation de qualité liée au codec qui sera caractérisée par un indice de qualité.
Codec 1 : Petit débit
=> Plus de perte au codage
=> Moins de problème sur le réseau => Moins de perte en ligne.
Codec 2 : Gros débit
=> Moins de perte au codage
=> Plus de problème sur le réseau => Plus de perte en ligne.
L’idéal est le codec bas débit ( => faible perte de qualité en ligne ) avec faible perte de qualité au codage.
Mais bas débit sans trop de perte au codage signifie un grand temps de calcul => Délais accrus.
Chaque liaison est un cas particulier avec un compromis à trouver. Les codecs courants sont indiqués ensuite.
J. Millet
23
VoIP