Type de méthodes pour la parallélisation du décodage

Type de méthodes pour la parallélisation du décodage

CONCEPTS DE BASE

Le présent travail a pour objectif principal la réalisation d’un décodeur supportant le standard de compression H.264/MPEG-4 AVC. Ce décodeur doit être implémenté sur un DSP multicoeur (ou multiprocesseur) asynchrone et doit être dédié principalement pour le domaine de la téléphonie mobile (c.-à-d. le décodage doit se faire en temps réel). Une revue des concepts de base sur les différents aspects entourant cette implémentation devient donc nécessaire pour bien comprendre chacun des aspects concernant ce travail, comme le standard H.264/MPEG-4 AVC et les contraintes d’implémentations sur un réseau mobile.
Ce chapitre est divisé en trois sections principales. À la section 1.1, nous décrivons le DSP asynchrone sur lequel le décodeur H.264 sera implémenté. Par la suite, à la section 1.2, nous décrivons la spécification du décodeur H.264/MPEG-4 AVC. Pour terminer, nous concluons sur les points discutés dans ce chapitre à la section 1.3.

Description du DSP asynchrone

Le DSP asynchrone d’Octasic, nommé OCT1010, est composé de quinze (15) processeurs provenant de la technologie Opus (Octasic, 2010). Ces derniers contiennent chacun 16 unités arithmétiques logiques (ALU). Ce DSP consomme très peu de puissance, entre autres grâce à son architecture asynchrone. La plateforme utilisant cette technologie se nomme Vocallo et est une passerelle multimédia voix et vidéo (Arnold et Associates, 2010). La plateforme logicielle Vocallo est composée d’une interface de communication (I/O interface device), d’une mémoire externe (mobile DDR), ainsi que d’un processeur DSP asynchrone (OCT1010 processing device) (voir la figure 1.1). Cette passerelle est principalement dédiée à la téléphonie mobile sur réseaux IP, donc elle opère sous une contrainte de temps réel, ainsi que sous une contrainte de communication via des paquets Ethernet.
Le DSP OCT1010 est basé sur une architecture Von Neumann (Null et Lobur, 2006). L’une des principales caractéristiques de cette architecture est que la mémoire locale emmagasine Tirée de Octasic (2010) autant les données que les instructions. Chaque coeur DSP de la technologie OPUS possède 96 kilo-octets (Ko) de mémoire locale et ces derniers sont tous reliés à un bus mémoire se nommant Foundation DMA Bus. Les différents coeurs DSP peuvent effectuer des accès en mémoire externe via ce bus et peuvent faire des accès internes en écriture à l’intérieur de la mémoire locale d’un autre coeur DSP via ce même bus.

Le décodeur H.264/MPEG-4 AVC

Le codec provenant de la spécification H.264/MPEG-4 AVC, qui est aussi nommé H.264 tout au long de ce travail, est basé sur les mêmes principes de codage que les standards de compression vidéo précédents. Cependant ce dernier a pour particularités qu’il possède un gain de codage accru grâce, entre autres, à plusieurs nouvelles fonctionnalités et à de nouveaux outils de compression (Wiegand et al., 2003; ITU, 2007; Richardson, 2003). Ces nouvelles fonctionnalités et ces nouveaux outils de compression apportent évidemment une complexité plus élevée pour le codage et le décodage d’images. Il existe à ce jour dix-huit (18) profils différents pour coder une séquence vidéo avec la norme H.264 et chacun de ces profils possède une liste de fonctionnalités et d’outils de compression qui lui est propre. La figure 1.2 illustre le schéma bloc général du décodeur provenant de la spécification H.264. Ce dernier comporte sept (7) principaux modules de décodage.
Le premier module du standard H.264 est celui du décodage de l’entropie et de l’analyse syntaxique. Ce dernier possède deux nouveaux outils qui se nomment Context Adaptive Variable Length Coding (CAVLC) et Context Adaptive Binary Arithmetic Coding (CABAC). L’entropie de type CAVLC peut être utilisée par chacun des dix-huit profils. Par contre, l’entropie de type CABAC ne peut pas être utilisée par le profil de base (baseline profile), le profil de base restreint (restricted baseline profile) ainsi que par le profil Intra 4 :4 :4 (4 :4 :4 Intra profile).
Comme l’entropie fait partie intégrante du processus de décodage de la syntaxe du standard H.264, ce processus doit alors se faire de manière séquentielle. Cette limitation restreint donc la parallélisation de ce module.
Les deuxième et troisième modules sont la quantification et la transformée inverse. La nouvelle transformée du standard H.264 est généralement faite sur des blocs ayant une taille de 4 pixels par 4 pixels. Il existe une transformée pour des blocs de taille 8 pixels par 8 pixels, mais seulement les profils de type élevé (high profile) peuvent employer celle-ci. De plus, cette deuxième transformée doit obligatoirement être combinée au module d’entropie de type CABAC. Toutes les opérations de quantification et de transformée sont faites à l’aide d’une représentation en virgule fixe, ce qui différencie ce standard des autres, car ces derniers utilisent une représentation en virgule flottante.
Le quatrième module est celui du décodage de la prédiction spatiale, aussi nommée prédiction intra. La prédiction spatiale s’opère séparément pour chacune des composantes d’un macrobloc, soit pour les composantes représentant la luminance et représentant la chrominance. Il existe trois types de prédiction spatiale pour la composante de luminance. Le premier type est la prédiction pour des blocs 4 pixels par 4 pixels, aussi appelée prédiction intra 4×4. Celle-ci contient 9 modes (voir la figure 1.4). Le deuxième type est la prédiction pour des blocs 16 pixels par 16 pixels, aussi appelée intra 16×16. Cette dernière contient 4 modes (voir la figure 1.3). Le troisième et dernier type est la prédiction pour les blocs 8 pixels par 8 pixels, aussi appelée intra 8×8. Ce type de prédiction contient exactement les mêmes 9 modes que la prédiction intra 4×4. La prédiction intra 8×8 est réservée au profil de type élevé (high profile) et doit être obligatoirement combinée à la transformée 8 pixels par 8 pixels. La composante de la chrominance utilise une prédiction 8 pixels par 8 pixels. Celle-ci contient les mêmes 4 modes que la prédiction de luminance intra 16×16. La prédiction d’un macrobloc (ou bloc) courant se fait à l’aide du macrobloc (ou bloc) voisin de gauche ainsi que du macrobloc (ou bloc) voisin du haut.
Le cinquième module est celui du décodage de la prédiction temporelle, aussi nommé compensation de mouvement. Les figures 1.5 et 1.6 illustrent les types de partitions et de souspartitions de macroblocs que possède ce module pour le standard H.264. Les standards précédents peuvent utiliser un vecteur de mouvement, et dans certains cas jusqu’à 4 vecteurs de mouvement, alors que le standard H.264 peut utiliser 1, 2, 4, ou 16 vecteurs de mouvement. Ces vecteurs de mouvement sont extraits par le premier module présenté à la figure 1.2, soit celui qui gère le décodage de l’entropie et de la syntaxe. Pour extraire les vecteurs de mouvement, le macrobloc courant dépend du macrobloc voisin de gauche, du macrobloc voisin du haut, ainsi que du macrobloc voisin du haut à droite. Dans certains cas d’exception, soit lorsque le macrobloc voisin du haut à droite n’est pas disponible, l’algorithme d’extraction de vecteurs de mouvement utilise le macrobloc voisin du haut à gauche.
Le sixième module du standard H.264 est celui de la reconstruction et le septième module est celui se nommant filtre antiblocs (in loop deblocking filter, ou Loop Filter). Le module de reconstruction utilise les coefficients ayant subi une transformée inverse combinée au résultat de décodage de la prédiction spatiale ou temporelle provenant des troisième, quatrième et cinquième modules présentés à la figure 1.2. Le filtre antiblocs est un filtre servant à enlever les artefacts d’effet de bloc engendrés par la transformée de blocs. Il peut être appliqué de manière séquentielle au fur et à mesure que les macroblocs sont décodés, ou il peut être appliqué tout simplement à la fin du décodage de l’image entière. La figure 1.7 illustre la séquence de filtrage définie dans la spécification du codec H.264. Les étapes 1 et 5 représentent un filtrage entre les bordures du macrobloc courant et les bordures des macroblocs voisins de gauche et du haut respectivement, tandis que les étapes 2, 3, 4, 6, 7, et 8 représentent un filtrage entre les blocs internes du macrobloc courant.

Le rapport de stage ou le pfe est un document d’analyse, de synthèse et d’évaluation de votre apprentissage, c’est pour cela chatpfe.com propose le téléchargement des modèles complet de projet de fin d’étude, rapport de stage, mémoire, pfe, thèse, pour connaître la méthodologie à avoir et savoir comment construire les parties d’un projet de fin d’étude.

Table des matières

INTRODUCTION
CHAPITRE 1 CONCEPTS DE BASE
1.1 Description du DSP asynchrone
1.2 Le décodeur H.264/MPEG-4 AVC
1.2.1 Structures de données
1.2.2 Dépendances des macroblocs
1.2.3 Groupage des données par paquets sur un lien en temps réel
1.3 Conclusion
CHAPITRE 2 ÉTAT DE L’ART DU DÉCODAGE PARALLÈLE H.264/MPEG-4 AVC
2.1 Type de méthodes pour la parallélisation du décodage
2.2 Séparation basée sur la fonctionnalité
2.3 Séparation basée sur les données
2.3.1 Granularité des méthodes de décodage en parallèle
2.3.2 Approche en rangée simple
2.3.3 Approche multicolonnes
2.3.4 Approche multi-tranches
2.3.5 Approche diagonale
2.3.6 Sommaire sur les approches basées sur les données
2.4 Conclusion
CHAPITRE 3 SOLUTION PROPOSÉE AU DÉCODAGE PARALLÈLE
3.1 Types de parallélisation appliquée au décodeur
3.1.1 Processus du décodage de l’entropie et de l’analyse syntaxique
3.1.2 Processus de la reconstruction et du filtrage antibloc
3.1.3 Pipelinage des deux fonctionnalités
3.2 Extensibilité du décodeur
3.2.1 Modèle mémoire
3.2.1.1 Mécanisme d’abstraction de la résolution
3.2.1.2 Paramètres et membres du conteneur générique
3.2.1.3 Interface du conteneur générique
3.2.1.4 Optimisation des transferts mémoires en lecture
3.2.1.5 Conteneurs génériques utilisés par le décodeur
3.2.2 Modèle de synchronisation et d’intercommunication
3.2.2.1 Tâches indépendantes
3.2.2.2 Tâches avec dépendances de données
3.2.2.3 Protocole de communication entre les esclaves
3.3 Conclusion
CHAPITRE 4 OPTIMISATION DU DÉCODAGE DE L’ENTROPIE DE TYPE CAVLC
4.1 Les cinq étapes du décodage de l’entropie de type CAVLC
4.2 Extraction du nombre total de zéros pour un bloc 4×4
4.3 Nouvel algorithme pour l’extraction du nombre total de zéros dans un bloc 4×4
4.3.1 Méthodes avancées pour l’extraction du code total_zeros
4.3.2 Nouvelle méthode proposée pour l’extraction du code total_zeros
4.3.2.1 Analyse de la table VLC pour l’extraction du code total_zeros
4.3.2.2 Génération de deux tables de correspondance
4.3.2.3 Génération d’une table de contrôle
4.3.2.4 Pseudo code de l’algorithme et exemples d’utilisation
4.4 Conclusion
CHAPITRE 5 RÉSULTATS DE SIMULATIONS ET ANALYSE
5.1 Description des paramètres de test
5.2 Résultats obtenus pour l’optimisation du décodage de l’entropie de type CAVLC
5.3 Résultats obtenus pour l’implémentation du décodeur H.264/MPEG4-AVC
5.3.1 Intervalle de notification de la position d’un indice de MB
5.3.2 Répartition du nombre de coeurs DSP alloués pour chaque processus
5.3.3 Résultats d’accélérations du décodeur
5.4 Conclusion
CONCLUSION GÉNÉRALE
ANNEXE I RÉSULTATS DÉTAILLÉS DE SIMULATIONS 
1 Résultats obtenus pour l’optimisation du décodage de l’entropie de type CAVLC
1.1 Résolution 360p
1.2 Résolution NTSC 
2 Intervalle de notification de la position d’un indice de MB
2.1 Résolution 360p
2.2 Résolution NTSC
2.3 Résolution 720p
3 Répartition du nombre de coeurs DSP alloués pour chaque processus
3.1 Résolution 360p
3.2 Résolution NTSC 
3.3 Résolution 720p
4 Résultats d’accélérations du décodeur H.264/MPEG-4 AVC
4.1 Résolution 360p
4.2 Résolution NTSC
4.3 Résolution 720p
BIBLIOGRAPHIE

Rapport PFE, mémoire et thèse PDFTélécharger le rapport complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *