Livrable 2.1 Rapport d`analyse et de restructuration

Transcription

Livrable 2.1 Rapport d`analyse et de restructuration
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].
Mettre en
ordre
Codage
entropique
(Courant)
EM
MC
(Référence)
1 ou 2 trame(s)
préalablement
codée(s)
Sélection
du mode
intra
Intra
prédiction
Filtrage
Reconstruit
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
Bloc fonctionnel
(Figure 1)
Variété de formes et de tailles de
blocs
Compensation du
mouvement
et Estimation du
mouvement
Transformée Hadamard
T et T-1
Optimisation liée à la relation Compensation du
débit-distortion
mouvement,
Estimation du
mouvement et
Sélection du mode
intra
Codage entropique CABAC
Codage
Entropique
Précision fine des vecteurs de
Estimation du
mouvement
mouvement
Champ élargi de recherche des
Estimation du
vecteurs de mouvement
mouvement
Plusieurs images de référence
Estimation du
mouvement
Augmentation
en complexité
2,5%
Réduction de
débit (pour
qualité égale)
4-20%
20%
120%
inconnu
9%
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
Processus simple
Pas dernier processus
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.
Statique
Besoin d'IDR
Devant IDR
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_macroblock_write_cavlc
x264_cabac_mb_skip
x264_macroblock_write_cabac
x264_macroblock_cache_save
x264_ratecontrol_mb
Oui
CABAC?
Non
x264_cabac_encode_terminal
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.
Macroblock
ty pe
Pskipped
Bskipped
Autrement
I
Encodage I16x16
x264_macroblock_encode_pskip
x264_mb_mc
x264_mb_encode_i16x16
x264_mb_mc
Sans perd
x264_mb_encode_i8x8
Oui
Non
x264_mb_encode_i4x4
x264_macroblock_encode_skip
Macroblock encodage
sub_zigzag_4x4full
x264_denoise_dct
sub16x16_dct8
sub16x16_dct
x264_quant_8x8_trellis
x264_quant_4x4_trellis
quant_8x8
quant_4x4
scan_zigzag_8x8full
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
I type
P type
B type
x264_macroblock_probe_pskip
Choisissant la taille
(16x16,8x8,16x8,8x16)
Verifiant le
mode SKIP
Choisissant la taille
(16,8,4)
Choisissant la taille
(16x16,8x8,16x8,8x16)
Figure 12: Procédure pour choisir le type / taille de bloc.
Macroblock
ty pe
Pskipped
Bskipped
Autrement
I
Encodage I16x16
x264_macroblock_encode_pskip
x264_mb_mc
x264_mb_encode_i16x16
x264_mb_mc
Sans perd
x264_mb_encode_i8x8
Oui
Non
x264_mb_encode_i4x4
x264_macroblock_encode_skip
Macroblock encodage
sub_zigzag_4x4full
x264_denoise_dct
sub16x16_dct8
x264_quant_8x8_trellis
sub16x16_dct
x264_quant_4x4_trellis
quant_8x8
scan_zigzag_8x8full
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]
[9]
[10]
[11]
[12]
http://www.arcsoft.com/, homepage of ArcSoft,Inc.
http://www.ateme.com/, homepage of Ateme.
http://www.elecard.com/, homepage if Elecard Ltd.
http://www.iis.fraunhofer.de/, homepage of Fraunhofer Institute for Integrated Circuits.
http://www.divx.com/ homepage of Divx Inc.

Documents pareils