5.4 Implantation des op´ erations sp´ ecifiques ` a H.264
5.4.1 Optimisation du raffinement subpix´ elique
H.264 am´eliore la pr´ecision de l’estimation de mouvement par rapport `a ses pr´ed´ecesseurs. La pr´ecision des vecteurs dans MPEG-2 est au demi-pixel. H.264 intro- duit le quart de pixel avec des filtres d’interpolation sp´ecifiques. Le coˆut de calcul dˆu au raffinement subpix´elique est important. Nous avons pr´esent´e diff´erentes strat´egies dans le paragraphe 2.4.2. Les techniques sans interpolation [HCBC06] ne donnent pas de bons r´esultats. Nous utilisons donc une technique `a deux pas (demi-pixel puis quart de pixel) avec interpolation des donn´ees `a la vol´ee, afin d’optimiser les acc`es m´emoire. Nous pr´esentons dans ce paragraphe les implantations de ces op´erations.
5.4.1.1 Filtres d’interpolation
L’interpolation des donn´ees demi et quart de pixel implique des calculs lourds. Le filtre demi-pixel `a six coefficients de la norme est complexe. L’estimation de mouvement peut utiliser n’importe quel filtre puisque seul le vecteur de mouvement est utilis´e. L’interpolation est refaite pour calculer le r´esidus dans l’op´eration de compensation. Nous pouvons donc ´evaluer l’int´erˆet de l’utilisation d’un filtre bilin´eaire, beaucoup plus simple `a implanter.
Filtres de la norme Les deux filtres demi-pixel et quart de pixel de la norme sont implant´es, puis optimis´es avec des fonctions intrins`eques. Pour le calcul de SAD demi-pixel, un ´echantillon sur deux en horizontal et en vertical doit ˆetre mis en corres- pondance avec les pixels du bloc courant. Cela n´ecessite l’arrangement des ´echantillons dans les registres afin d’utiliser des instructions SIMD.
L’interpolation quart de pixel est plus simple, l’application du filtre lin´eaire revient `
a faire une moyenne entre deux ´echantillons demi-pixels. Pour pouvoir calculer les huit SAD autour de la meilleure position demi-pixel, les ´echantillons sont arrang´es en huit blocs correspondant aux huit positions.
Filtre bilin´eaire Le filtre bilin´eaire est plus simple `a implanter que le pr´ec´edent. Sa vectorisation est rapide car chaque valeur de sortie correspond `a la moyenne entre deux ´echantillons d’entr´ee. Les ´echantillons demi-pixel et quart de pixel sont arrang´es de mani`ere `a faciliter la vectorisation du calcul de SAD. Les donn´ees correspondant `a une SAD sont contigu¨es.
Le raffinement subpix´elique `a la vol´ee permet de r´eduire consid´erablement les contraintes d’acc`es m´emoire en conservant les valeur interpol´ees dans les m´emoire de niveau inf´erieures, plus rapides que des m´emoires externes.
5.4.1.2 R´esultats
Plusieurs s´equences vid´eos ont ´et´e encod´ees pour ´evaluer les performances des filtres d’interpolation, et des chronom´etrages sur DSP ont ´et´e r´ealis´es.
Qualit´e Les encodages vid´eo de diff´erentes s´equences nous permettent de comparer la qualit´e des champs de vecteurs issus des diff´erentes implantations d’estimateurs de mouvement HDS (Tab. 5.5) : quart de pixel avec les filtres de la norme, avec des filtres bilin´eaire, et pixel entier.
Raffinement Variation de d´ebit `a qualit´e constante (%)
quart de S´equences SD S´equences HD
pixel Formula1 Raid1 maroc Raid2 maroc Seq1 Horses1 SpinCalendar
Filtre H.264 0 0 0 0 0 0
Filtre bilin´eaire 2,2 5,33 4,8 2,7 4,8 9,4
Pixel entier 9,7 45 30 11 27 60
Tab. 5.5 – Performances d’encodage pour des s´equences SD (576p) et HD (720p)
La perte de compression lorsque le raffinement subpix´elique n’est pas activ´e est consid´erable, pouvant aller jusqu’`a 60 %. Un exemple de courbe d´ebit/distorsion est donn´e figure 5.12. Les performances des estimateurs de mouvement au quart de pixel sont visiblement meilleures qu’au pixel entier. Les r´esidus sont r´eduits, donnant une image de meilleure qualit´e `a un d´ebit plus faible. L’utilisation d’un filtre bilin´eaire introduit une perte de performance r´eduite, jusqu’`a 9 %.
30 31 32 33 34 35 36 37 38 39 40 1000 2000 3000 4000 5000 6000 7000 8000 Bitrate (Kbits/sec) S N R Y ( dB ) Filtre H.264 Filtre bilinéaire Pixel entier
5.4 implantation des op´erations sp´ecifiques `a h.264 123
Chronom´etrages sur DSP Les temps d’ex´ecution de ces implantations ont ´et´e mesur´es sur DSP C6416 `a 1 GHz. Les r´esultats sont regroup´es dans le tableau 5.6.
Implantation Filtres H.264 Filtres H.264 Filtres bilin´eaire (non optimis´e) (optimis´e) (optimis´e)
Filtre demi-pixel 1600 ns 720 ns 150 ns
raffinement demi-pixel
SAD sur 8 candidats 820 ns 210 ns 190 ns
Filtre quart de pixel 940 ns 140 ns 150 ns
raffinement quart de pixel
SAD sur 8 candidats 560 ns 130 ns 140 ns
Total (bloc 8x8) 3900 ns 1200 ns 630 ns
Total image 720p 56 ms 17.3 ms 9 ms
Tab. 5.6 – Implantations du raffinement subpix´elique sur DSP pour un bloc 8x8 Comme pr´evu, le filtre bilin´eaire acc´el`ere le raffinement subpix´elique d’un facteur proche de deux. Le temps n´ecessaire `a l’estimation d’un champ de vecteur doit prendre en compte la recherche au pixel entier, soit pour une image 720p : 30 ms avec les filtres H.264 et 22 ms avec le filtre bilin´eaire. On peut noter que dans le cas du raffinement subpix´elique avec le filtre H.264, le raffinement demande plus de temps que l’estimation de mouvement pixel entier, alors que la fenˆetre de recherche est tr`es r´eduite (amplitude < 1 pixel).
L’augmentation de la pr´ecision des vecteurs de mouvement apporte un gain en per- formance de compression, mais aussi une charge de calcul suppl´ementaire cons´equente. L’utilisation d’un filtre bilin´eaire r´eduit de moiti´e la charge de calcul sur DSP, et limite la perte de performances de l’encodeur. Il peut ˆetre un bon candidat `a un estimateur de mouvement ´economique.