UNE ÉTAPE D'UNE CHAÎNE — CE QUI ENTRE, CE QUI SORT, CE QUI CASSE ENSUITE
Où cette étape se situe dans la chaîne d'encodage
Un encodeur vidéo n'est pas un algorithme mais huit étapes dans un ordre fixe, et cet ordre n'est pas arbitraire : chaque étape existe parce que la précédente a rendu son travail possible. Cet outil modélise l'une d'elles. La chaîne ci-dessous renvoie aux sept autres.
Visualisateur de structure GOP — décide quelles images sont codées seules et lesquelles le sont comme différences
- Ce qui entre
- Une suite d'images échantillonnées, aucune encore codée.
- Ce qui sort
- Une affectation : images I codées seules, images P et B codées contre des images de référence.
- Ce que suppose l'étape suivante
- L'estimation de mouvement ne tourne que sur les images P et B. Une image I la saute entièrement.
- Ce qui se casse ici
- Cette étape décide si la suivante s'exécute ou non pour une image donnée : elle commande l'étape 04 plutôt que de simplement la précéder. De longs intervalles entre images I compressent bien mieux et dégradent la navigation, car le lecteur doit décoder depuis la dernière image I pour atteindre un point quelconque.
Problème entièrement résolu
-
Répartition et taille moyenne des images pour 48 images à 24 fps 6 étapes
Un groupe d'images (GOP) de type Blu-ray : 48 images, 3 images B consécutives entre références, lu à 24 fps. Posez qu'une image I coûte 100 unités relatives, une image P 12 et une image B 6. Trouvez la répartition des images et la taille moyenne par image, puis calculez le supplément de compression qu'un GOP plus long pourrait encore apporter.
-
Une image I ouvre le groupe, ce qui laisse 47 emplacements. Ces emplacements répètent un motif de 4 images — 3 images B et l'image P qui les ancre — et 47 n'est pas un multiple de 4. 47 = 11 × 4 + 3, soit 11 motifs complets et une fin de 3 images B laissées en suspens.
-
Cela donne 11 images P et 33 + 3 = 36 images B. Vérification : 1 + 11 + 36 = 48.
-
Pondérez chaque type par son coût. 100 + 132 + 216 = 448 unités pour le groupe entier, et 448 / 48 = 9,3 par image. Un flux entièrement intra dépense 100 pour chaque image, cette structure est donc 10,7 fois plus petite pour les mêmes 48 images.
-
La facture pour cela arrive sous forme de latence. Vous ne pouvez pas commencer le décodage au milieu d'un groupe — chaque image P et B est définie par rapport à autre chose — donc la recherche vous amène sur l'image I et vous décodez ensuite vers l'avant à partir de là. Le pire cas est la totalité des 48 images, ce qui à 24 fps donne 2 s.
-
Déterminons maintenant le plancher. Chaque motif répété coûte 3 × 6 + 12 = 30 unités pour 4 images, soit 7,5 par image, et rallonger le GOP ne fait qu'ajouter davantage de ces motifs. Soustrayez ce taux du groupe et il reste 448 - 7,5 × 48 = 88 unités.
-
Ces 88 représentent un nombre unique : 100 - 12, le surcoût de l'image I par rapport à l'image P qu'elle remplace. Ce surcoût n'augmente pas avec le groupe, il vaut donc 88 quelle que soit la longueur, et la moyenne s'écrit S̄ = 7,5 + 88/N. Testez à une longueur double : N = 96 donne 7,5 + 88/96 = 8,4 unités par image.
Réponse
9,3 unités par image, contre un plancher de 7,5 sous lequel aucune longueur de GOP ne peut descendre. Les deux termes du compromis évoluent dans des directions opposées et aucun des deux n'est linéaire contrairement aux apparences : ce qu'il vous reste à gagner décroît en 88/N tandis que la latence d'accès augmente en N/24. À 48 images, vous êtes 1,8 unité au-dessus du plancher. Doubler à 96 permet de récupérer 0,9 de cet écart — soit moins de 10 % de la taille d'une image — et coûte 2 s de plus de latence dans le pire des cas. Doubler à nouveau permet de récupérer 0,46 et coûte 4 s de plus. La longueur de GOP à choisir est donc fixée par la latence que vous êtes prêt à accepter, et non par la compression que vous poursuivez encore : au-delà de quelques dizaines d'images, une image I amortie un peu plus loin est tout ce qu'il reste à gagner.
-
Références (1)
- Where I, P and B pictures and the GOP structure are specified: ITU-T Recommendation H.264, Advanced video coding for generic audiovisual services.