Groupe des Ecoles des Télécommunications Institut National des Télécommunications Département ARTEMIS Advanced Research & TEchniques for Multidimensional Imaging Systems Livrable 2.1 Rapport d analyse et de restructuration de code monothread des modules P, T, Q et F de l encodage MPEG-4 AVC Projet PARA Auteurs : Son Minh Tran, Marius Preda Participants : INT/ARTEMIS, UVSQ, IRISA CAPS, CAPS ENTREPRISE Octobre 2006
Sommaire 1. INTRODUCTION... 3 2. LES COMPOSANTES DE L ENCODAGE MPEG-4 AVC... 4 3. RESULTATS... 5 3.1 L EFFICACITE DE L ENCODEUR MPEG-4 AVC... 5 3.2 LA COMPLEXITE DE L ENCODEUR AVC... 6 3.3 BASE DES DONNEES VIDEOS... 7 3.4 PLATE-FORME LOGICIELLE... 7 3.5 ANALYSE DE L IMPLANTATION X264... 9 4. SOMMAIRE ET PERSPECTIVES... 13 REFERENCES... 13
1. Introduction Selon les prévisions dans le developement materiel, les encodeurs implantant la nouvelle norme MPEG-4 AVC (Advanced Video Coding) seront capables d encoder la vidéo en temps réel, en qualité HD avec un débit de 1 Mbps à l horizon 2009. Cette hypothèse a comme base principale les prévisions en développement matériel concernant la puissance de calcul. L objectif du projet PARA est de prouver l hypothèse q un développement joint matériel et logiciel peut avancer cette prévision. En effet, l encodage MPEG-4 AVC, le dernier dans la famille des encodeurs MPEG-4 fournit des outils efficaces pour obtenir une compression vidéo meilleure (au moins 50%) par rapport au MPEG-2 et MPEG-4 v2 faisant appel a une complexité augmenté (10 fois plus pour les encodeurs) des calculs. Ce livrable présent une analyse de l encodeur MPEG-4 AVC en spécifiant et détaillent les parties qui nécessitent le plus de temps de calcul. Ce rapport servira comme base dans l étape de l optimisation du code, prévue aussi au niveau algorithmique que celui de l implantation logicielle. Les participants à ce projet sont les suivants: INT Evry Son Minh Tran Marius Preda Université de Versailles Saint-Quentin en Yvelines Denis Barthou Henri-Pierre Charles Minhaj Khan Jean-Thomas Aquaviva IRISA Rennes Sébastien Matz Les partenaires ont collaborés et ont partagés leurs savoir-faire sur des sujets qu ils expertisent et qui sont liés à réaliser le but commun final. L INT, l UVSQ et l IRISA ont apporté son expertise sure les algorithmes de compression MPEG, l optimisation de code et le calcul sur carte graphique dédiées respectivement.
2. Les composantes de l encodage MPEG-4 AVC MPEG-4 AVC, également connue sous les nomes H264 et JVT, est une norme de codage vidéo développée conjointement par l'uit-t Q.6/SG16 Video Coding Experts Group (VCEG) et ISO/IEC Moving Picture Experts Group (MPEG). Les standards UIT-T H.264 et ISO/IEC MPEG-4 Part 10 (ISO/IEC 14496-10) sont techniquement identiques. La première version du standard a été approuvée en mai 2003 et la plus récente date de mars 2005. Figure 1 illustre les composantes de base de l encodeur AVC. Comme les normes précédentes de la famille MPEG, le codeur AVC est implanté selon un schéma classique contenant 4 modules principaux: Prédiction, Transformé, Quantification, Codage entropique. La nouvelle norme AVC comporte les améliorations dans chacune des composantes. Dans le module Prédiction, le standard introduit les prédictions spatiales pour le mode Intra (bloc Sélection du mode Intra), les tailles variables (de 16x16 au 4x4) pour le mode Inter (les blocs Estimation du Mouvement EM et Compensation du Mouvement CM). De plus, la prédiction Inter peut être effectué sur des séquences plus longues, et chaque block prédit peut dépendre des plusieurs blocks, dans la même ou dans différentes images de référence. Cela implique une recherche des vecteurs de mouvement plus étendu, d où la nécessité d une puissance de calcule plus importante dans le cas de codage temps réel. Le module Transformée (T) consiste dans la décomposition du signal vidéo comme une somme pondérée des signaux à fréquence unique. En MPEG-4 AVC deux transformées sont retenues: l approximation pour des nombres entières de la DCT (la transformée C) et la transformée Hadamard. L utilisation de la transformée C à la place de la DCT permet des calculs plus rapides. L introduction de la transformée Hadamard sur les coefficients DC de la transformée initiale (C) augmente la compression dans les parties uniformes de l image. Le module Quantification (Q) introduit un contrôle plus large que les standards précédents, permettant ainsi de couvrir bas et haut débit. Le module Codage entropique implante un codeur arithmétique avec contexte. La probabilité de chaque symbole est calculée et un code de dimension optimale et obtenu. Pour une présentation plus complète sur les quatre modules, on renvoie aux [1] et [2].
(Courant) Mettre en ordre Codage entropique EM (Référence) 1 ou 2 trame(s) préalablement codée(s) Sélection du mode intra MC Intra prédiction Reconstruit Filtrage Figure 1: Schéma de l encodeur AVC. 3. Résultats 3.1 L efficacité de l encodeur MPEG-4 AVC MPEG-4 AVC inclut de nombreuses techniques nouvelles qui permettent de compresser les vidéos beaucoup plus efficacement que les normes précédentes (H.261, MPEG-1, MPEG-2, MPEG-4) et fournit plus de flexibilité aux applications en environnement réseau. Figure 2 montre l efficacité de la compression MPEG-4 AVC Main Profile (MP) en terme du PSNR luminance / débit par rapport aux normes précédentes telles que MPEG-4 Advanced Simple Profile, H.263 High Latency Profile et MPEG-2. Figure 2: PSNR par rapport au débit moyen pour différentes nomes de compression, mesuré sur le vidéo Tempete.
Figure 3 montre l efficacité du profile Base Profile du MPEG-4 AVC par rapport aux H.263 Baseline, H.263 Conversation High Compression et MPEG-4 Simple Profile. Figure 3: PSNR par rapport au débit moyen pour différentes nomes de compression, mesuré sur le vidéo Paris. La tendance ne change pas dans la Figure 4, où la comparaison est effectuée entre MPEG-4 AVC en intra mode uniquement et Motion JPEG2000. En général, en utilisant le codeur MPEG-4 AVC le gain en débit est approximativement de 30% et 50% par rapport aux MPEG-4 ASP et MPEG-2 respectivement. Figure 4: PSNR par rapport au débit moyen pour MPEG-4 H264 et MJP2000, mesuré sur le vidéo Canoe. 3.2 La complexité de l encodeur AVC Bien que la norme MPEG-4 AVC n apporte pas une rupture technologique par rapport aux normes de codage vidéo précédentes, elle comporte plusieurs modifications impliquent des calculs très complexes, a toutes les niveaux du schéma générale de codage.
Tableau 1 résume les performances des fonctionnalités principales de l encodeur AVC [4]. Il résulte le choix de prédiction (qui contient Sélection du mode intra, Intra prédiction, EM et CM) et le Codage entropique permettent la réduction du débit en s appuyant sur une complexité supérieur de calcul. Pour cette raison, nous considérons ces modules en détails, étant parmi les candidates à l amélioration algorithmiques et en ce qui concerne l implantation logicielle. Tableau 1: Complexité du calcul par rapport de débit gagné pour les principales fonctionnalités de MPEG-4 AVC Outils MPEG-4 AVC Variété de formes et de tailles de blocs Bloc fonctionnel (Figure 1) Compensation du mouvement et Estimation du mouvement Augmentation en complexité Réduction de débit (pour qualité égale) 2,5% 4-20% Transformée Hadamard T et T -1 20% inconnu Optimisation liée à la relation 120% 9% débit-distortion Codage entropique CABAC Précision fine des vecteurs de mouvement Champ élargi de recherche des vecteurs de mouvement Plusieurs images de référence Compensation du mouvement, Estimation du mouvement et Sélection du mode intra Codage Entropique Estimation du mouvement Estimation du mouvement Estimation du mouvement 25-30% 16% 10% 30% 60% inconnu 25% 2-14% 3.3 Base des données vidéos Afin de tester des conditions diverses qu on puisse retrouver dans les vidéos naturelles, nous avons mise en place une base des données. Nous avons sélectionné des vidéos qui contiennent du mouvement rapide ou/et lent, dont les textures sont complexes ou simples, et des vidéos qui contient des components synthétiques. Les détails concernant les vidéos de la base sont décrites dans [6] et les vidéos sont disponibles sur le site web suivant: http://www-artemis.intevry.fr/~preda/myprojects/para/ 3.4 Plate-forme logicielle La première étape dans le choix de la plateforme logicielle à été l analyse des différentes implantations du codec MPEG-4 AVC. Nous avons examiné 5 encodeurs AVC [5]: x264 [7], ArtSoft [8], Elecard [10], Ateme [9] et Fraunhofer IIS [11]. Pour comparer aux performances du MPEG-4 V2, nous avons considéré l implantation Divx [12]. Les résultats suivants sont obtenus par les encodeurs avec le réglage de meilleure
qualité. On peut observer les différences entre les codeurs selon plusieurs critères: PSNR pour la composante luminance Figure 5, l effet de block Figure 6 et le temps de calcul Figure 7. Des comportements similaires sont retrouvés pour vidéos différentes [5]. Notons une bonne performance du l encodeur x264 en ce qui concerna le débit. Ce codeur, disponible en source libre comporte toutefois un traitement trop long, d où la nécessite d améliorer son implantation. Figure 5: Performance des encodeurs AVC concernant le PSNR pour la luminance. Les réglages pour chaque encodeur sont pour la meilleure qualité. La vidéo testée est Foreman. Figure 6: Performance des encodeurs AVC concernant l effet block. Les réglages pour chaque encodeur sont pour la meilleure qualité. La vidéo testée est Foreman.
Figure 7: Temps de calcul Les réglages pour chaque encodeur sont pour la meilleure qualité. La vidéo testée est Foreman. 3.5 Analyse de l implantation x264 Les performances de l implantation x264 en termes de débit nous a conduit à la choisir comme point de départ. Afin d optimiser l exemption de l encodeur nous avons mis en évidence les procédures les plus coûteuses en temps de calcul. L étude porte sur la structure de l encodeur et les opérations par trame vidéo afin d identifier les outils prévues par le standard MPEG-4 AVC. Figure 8 indique les opérations effectuées par l encodeur pour chaque trame vidéo.
Trame Initialisation x264_slicetype_decide Encodeur initialisation x264_ratecontrol_threads_start Pas dernier processus Processus simple Dernier processus Copiant contexte x264_slice_write x264_slice_write Joindrant contexte Mettant à jour l'état du encodeur x264_reference_update Figure 8: Principe de l encodage des trames en x264. La décision du type de trame (x264_slicetype_decide), première étape de la compensation en mouvement est détaillée dans la Figure 9. Elle est basée sur l évaluation d un coût pour chaque type de prédiction et est dépendante des paramètres de codage. Besoin d'idr Devant IDR Statique Autrement x264_ratecontrol_slice_type x264_lowres_context_init Choisissant type P x264_slicetype_frame_cost x264_slicetype_mb_cost Choisissant le type prope Verifiant les constraintes statique Figure 9: Procédure pour sélectionner le type de prédiction (x264_slicetype_decide).
Les blocs des trames, dont le type a été décidé est encodé comme illustré dans la Figure 10. x264_nal_start x264_slice_header_write Non CABAC? Oui x264_cabac_context_init x264_cabac_encoder_init Dernier MB? Non x264_macroblock_cache_load Oui x264_macroblock_analyse x264_macroblock_encode Oui CABAC? Non x264_cabac_encode_terminal x264_cabac_mb_skip x264_macroblock_write_cavlc x264_macroblock_write_cabac x264_macroblock_cache_save x264_ratecontrol_mb x264_cabac_encode_terminal Oui CABAC? Non bs_write_ue x264_cabac_encode_flush bs_rbsp_trailling x264_nal_end Figure 10: Procédure de encodage appliquée au chaque tranche. La fonction x264_macroblock_analyse contient toutes les fonctionnalités de l Estimation du Mouvement, la Compensation du Mouvement, la Sélection du mode Intra et la Prédiction Intra telles que présentés dans Figure 1. Les blocs T, Q, T -1 et Q -1 sont réalisés par la fonction x264_macroblock_encode. On retrouve également les fonctions Mettre en Ordre et Codage Entropique en Figure 10. Le choix du type du bloc est illustré dans Figure 11 et Figure 12 respectivement. Dans le livrable [6] nous présentons une liste détaillée de temps d exécution de chaque fonction.
Pskipped Bskipped Macroblock ty pe I Autrement x264_macroblock_encode_pskip Encodage I16x16 x264_mb_mc x264_mb_encode_i16x16 x264_mb_mc x264_mb_encode_i8x8 x264_mb_encode_i4x4 Non Sans perd Oui x264_macroblock_encode_skip Macroblock encodage x264_denoise_dct sub_zigzag_4x4full sub16x16_dct8 x264_quant_8x8_trellis quant_8x8 scan_zigzag_8x8full sub16x16_dct x264_quant_4x4_trellis quant_4x4 scan_zigzag_4x4full Macroblock decodage dequant_8x8 dequant_4x4 add8x8_idct8 add8x8_idct x264_mb_encode_8x8_chrome Calcul de motif array_non_zero_count array_non_zero Figure 11: Procédure de transformation, quantification et leur inverses appliqués à chaque bloc P type I type B type x264_macroblock_probe_pskip Choisissant la taille (16x16,8x8,16x8,8x16) Verifiant le mode SKIP Choisissant la taille (16x16,8x8,16x8,8x16) Choisissant la taille (16,8,4) Figure 12: Procédure pour choisir le type / taille de bloc.
Pskipped Bskipped Macroblock ty pe I Autrement x264_macroblock_encode_pskip Encodage I16x16 x264_mb_mc x264_mb_encode_i16x16 x264_mb_mc x264_mb_encode_i8x8 x264_mb_encode_i4x4 Non Sans perd Oui x264_macroblock_encode_skip Macroblock encodage x264_denoise_dct sub_zigzag_4x4full sub16x16_dct8 x264_quant_8x8_trellis quant_8x8 scan_zigzag_8x8full sub16x16_dct x264_quant_4x4_trellis quant_4x4 scan_zigzag_4x4full Macroblock decodage dequant_8x8 dequant_4x4 add8x8_idct8 add8x8_idct x264_mb_encode_8x8_chrome Calcul de motif array_non_zero_count array_non_zero Figure 13: Procédure de transformation, quantification et leur inverses appliqués à chaque bloc. 4. Sommaire et perspectives Ce rapport décrit en détails les principes que nous avons appliqués pour le choix d un encodeur MPEG-4 AVC. Une analyse de l implantation retenue, x264, nous a permis d identifier les points clef à optimiser et notamment les procédures concernant la prédiction et l encodage arithmétique. L optimisation sera réalisée au niveau algorithmique et implantation logicielle et fera l objet de livrable 2.2. Références [1] T. Wiegand, G. J. Sullivan, G. Bjontegaard, A. Luthra, Overview of the H.264/AVC Video Coding Standard, IEEE Transactions on Circuits and Systems for Video Technology, Vol. 13, No. 7, July 2003. [2] Draft of version 4 of ISO/IEC 14496-10, April 2005, Busan, Korea. [3] Report on the formal verification tests on AVC, MPEG2003/N6231, Dec 2003. [4] J. Ostermann, J. Bormans, P. List, D. Marpe, M. Narroschke, F. Pereira, T. Stockhammer, T. Wedi, Video Coding with H.264/AVC: Tools, Performance and Complexity, IEEE Circuits and Systems Magazine, first quarter 2004. [5] http://compression.ru/video/codec_comparison/mpeg-4_avc_h264_2005_en.html, second annual MSU MPEG-4 AVC/H.264 Video Codec Comparison, December 2005. [6] H-P. Charles, Projet FAME 2 livrable 4.2.1, Août 2006. [7] http://developers.videolan.org/x264.html, hompage of x264 Open Source Code project
[8] http://www.arcsoft.com/, homepage of ArcSoft,Inc. [9] http://www.ateme.com/, homepage of Ateme. [10] http://www.elecard.com/, homepage if Elecard Ltd. [11] http://www.iis.fraunhofer.de/, homepage of Fraunhofer Institute for Integrated Circuits. [12] http://www.divx.com/ homepage of Divx Inc.