URL: https://linuxfr.org/news/h-265-est-finalise Title: H.265 est finalisé Authors: flagos Davy Defaud, NeoX, baud123, Bruno Michel, Pierre Jarillon, Benoît Sibaud et patrick_g Date: 2013年01月26日T19:17:40+01:00 License: CC By-SA Tags: h264, h265 et vidéo Score: 86 La norme de codage vidéo H.265/HEVC _— High Efficiency Video Coding —_ vient d’être annoncée comme finalisée par l’ITU, à savoir l’organisme qui gère sa définition. Après douze réunions et trois ans de travaux, le consortium s’est mis d’accord sur la définition de ce nouveau standard vidéo qui viendra remplacer à terme les standards MPEG-2 et H.264/AVC. Cette dépêche traite des avancées techniques apportées par ce nouveau standard. Les questions portant sur les brevets n’y sont pas traitées. ---- [H.265 sur Wikipédia](http://fr.wikipedia.org/wiki/H.265/HEVC) [H.265 specification](http://phenix.int-evry.fr/jct/) ---- # Généralités sur le décodage vidéo ## La compression image JPEG La compression JPEG peut se représenter sous la forme de cet organigramme : ![organigramme JPEG](http://upload.wikimedia.org/wikipedia/commons/thumb/e/e3/Compression_JPEG.svg/700px-Compression_JPEG.svg.png) Au travers des fonctions de transformations de couleurs et de sous-échantillonnage, les pixels sont tout d’abord transformés du plan des 3 couleurs primaires rouge, vert et bleu, vers le plan YUV (luminance, chrominances bleu [Cb] et rouge [Cr]). L’œil humain étant moins sensible à la chrominance, il est fréquent de ne garder qu’un pixel sur quatre pour la chrominance : c’est le sous-échantillonnage 420. Ainsi, la transformation de couleurs est sans perte, tandis que le sous-échantillonnage produit de la perte d’information. Les pixels subissent ensuite une DCT : il s’agit d’une [transformée de Fourier](http://fr.wikipedia.org/wiki/Transform%C3%A9e_de_Fourier) permettant le passage de pixels issus d’un échantillonnage vers une information de type fréquentielle. Cette transformation se fait sans perte. L’intérêt de cette transformation est que les éléments de fréquence basse sont ceux qui sont le plus visibles pour l’œil. Ceux de fréquence haute ne font qu’améliorer la qualité de l’image. La quantification est justement l’étape qui permet de filtrer, plus ou moins selon la qualité désirée, les hautes fréquences par rapport aux basses et d’augmenter le pas de résolution de cette information. Plus ce filtrage est fort, plus la compression est importante, moins la qualité est bonne en sortie. De ce fait, la quantification est une étape avec pertes. Les données issues de cette étapes sont appelées les résidus. Ces derniers sont ensuite encodés par un algorithme de type [_Variable Length Coding_](http://fr.wikipedia.org/wiki/Codage_%C3%A0_longueur_variable), permettant d’encoder avec moins de bits les éléments les plus probables. ## La compression vidéo MPEG-2/H.264 La compression vidéo ajoute principalement deux étapes à celles de la compression JPEG. Il s’agit de deux mécanismes de prédiction de pixels : la prédiction intra-image et la prédiction inter-image. ### La prédiction intra-image Elle consiste à utiliser les résidus déjà décodés dans l’image comme prédiction. Il s’agit en général des pixels présents en haut ou a gauche du bloc concerné. Les résidus qui sont ensuite décodés sont alors additionnés au résultat de la prédiction intra. L’intérêt de cette étape réside dans le fait que les résidus à encoder ont alors une grande chance statistique de se trouver autour de 0, rendant les encodages de type _Variable Length Coding_ extrêmement performants. ### La prédiction inter-image Cette prédiction consiste à utiliser les pixels d’une image déjà décodée comme prédiction. On fait donc appel à une image déjà décodée et on lui applique un vecteur de mouvement permettant d’appliquer un déplacement à un groupe de pixels. Ainsi, une séquence avec un plan fixe et une voiture qui se déplace sur une route peut être encodée de manière très performante par ce type de prédiction. Cependant, cette prédiction oblige le décodeur à avoir décodé l’image de référence. Si toutes les images utilisent la prédiction inter-image, il devient impossible pour l’utilisateur d’entamer un flux vidéo s’il ne l’a pas décodé depuis le début. Pour gérer ce problème, on insère à intervalles réguliers des images dites _« key frames »_ qui garantissent au décodeur que les images suivantes ne feront jamais appel à une image antérieure. Cet artifice explique que l’utilisateur qui change de chaîne sur sa TV doive attendre un certain laps de temps qu’une _key frame_ lui parvienne. # H.265 Voyons désormais les principales nouveautés introduites dans cette nouvelle version du standard. ## Le codage CABAC Introduit par H.264 et réservé aux profils les plus élevés, le [codage arithmétique CABAC](http://fr.wikipedia.org/wiki/CABAC) est désormais systématique pour remplacer les codages de type _Variable Length Coding_. Cet encodage, relativement complexe, n’encode pas les éléments de syntaxe un à un, mais va le faire par paquets d’éléments de syntaxe, en encodant ceux-ci par rapport à leurs valeurs les plus probables. On considère le gain du CABAC par rapport au VLC de l’ordre de 10 %. ## La fin des macro-blocs pour un découpage des pixels adapté à chaque fonction Jusque là, dans un flux vidéo, les pixels sont découpés en carrés de 16 pixels de large (les macro-blocs), eux-mêmes sous-divisés en blocs de 8 pixels de large. Les algorithmes travaillent ensuite sur cette unité de données. En H.265, les pixels sont divisés en _Coded Tree Unit_ (CTU) de 16, 32 ou 64 pixels de largeur. Ces dernières sont ensuite partitionnées en _coding unit_ (CU). Une CTU peut être divisées en 4 CU, qui peuvent elles-mêmes se diviser en 4 CU, et ainsi de suite. Cette récursivité s’applique au maximum 3 fois, donnant un passage CTU vers CU de ce type : ![split CTB](https://linuxfr.org/images/historique/images_perdues/h-265-est-finalise-ctb.png) Les CU peuvent ensuite être découpées en _Transform Unit_ (TU) et en _Prediction Unit_ (PU), pour respectivement les fonctions qui concernent les résidus et les prédictions. ![split PU](https://linuxfr.org/images/historique/images_perdues/h-265-est-finalise-82894685.png) Ce découpage adaptatif permet aux encodeurs d’appliquer les meilleurs découpages possibles, permettant un meilleur gain et une meilleure qualité d’image. Il rend en revanche la tâche plus compliquée pour les décodeurs matériels qui doivent constamment adapter leur flux de données aux dimensions données par le flux vidéo. ## Prédiction intra-image angulaire H.264 apportait une prédiction intra-angulaire de type 45°. On pouvait donc prédire les résidus en les prenant à gauche, en haut mais aussi en biais. H.265 va plus loin en permettant d’utiliser un plus grand nombre d’angles, comme le montre cette image : ![pred intra angulaire](https://linuxfr.org/images/historique/images_perdues/h-265-est-finalise-intra.png) ## Prédiction inter-image La prédiction inter-image évolue, notamment sur les vecteurs de mouvement indiquant le déplacement des pixels à effectuer sur l’image de référence. Ceux-ci sont désormais donnés avec une précision au quart de pixel (au lieu d’un demi-pixel en H.264) et peuvent désormais être plus grands (de -8192 à 8192). ## Wavefront H.265 ajoute un mode de décodage qui permet de paralléliser le décodage d’un flux vidéo. Toute la difficulté est que dans un flux vidéo, on se sert généralement des données précédemment décodées pour décoder la donnée courante. Il a donc été créé ce mécanisme de _Wavefront_. On lance un _thread_ de décodage sur chaque ligne de CTB, la première ligne étant en légère avance de phase par rapport à la deuxième, etc. Cela permet de faire en sorte que les données soient à peu près disponibles lorsqu’un _thread_ fait appel aux résidus de la CTB du dessus. ![Wavefront](https://linuxfr.org/images/historique/images_perdues/h-265-est-finalise-wavefront.png) ## Sample adaptative offset Un nouveau filtrage appliqué en sortie de l’image, en plus du filtrage de _deblocking_, est désormais appliqué afin de réduire le bruit sur l’image. H.265 a porté un souci constant pour améliorer les filtres d’images. Cela permet de compresser plus les données, tout en retrouvant une qualité d’image acceptable. ## Résolution d’image Bien que le permettant, H.264 n’était pas adapté aux résolutions de type 4k2k. H.265 permet aujourd’hui de passer à des résolutions jusqu’au 8k. ## Gain de bande passante H.265 ayant énormément porté l’effort sur les boucles de filtrage, le consortium a décidé d’appliquer des mesures de gain de bande passante par comparaisons subjectives. Des novices en termes de décodage vidéo ont été confrontés à des flux en H.264 et des flux H.265, et, à qualité visuelle égale, on peut voir un gain de bande passante en moyenne aux alentours de 50 %, avec des pics à 60 % sur certains profils.

AltStyle によって変換されたページ (->オリジナル) /