# H.264

H.264, ou MPEG-4 AVC (Advanced Video Coding), ou MPEG-4 Part 10, est une norme de codage vidéo développée conjointement par l'UIT-T Q.6/SG16 Video Coding Experts Group (VCEG) ainsi que l'ISO/CEI Moving Picture Experts Group (MPEG) et est le produit d'un effort de partenariat connu sous le nom Joint Video Team (JVT). La norme UIT-T H.264 et la norme ISO/CEI MPEG-4 Part 10 (ISO/CEI 14496-10) sont techniquement identiques, et la technologie employée est aussi connue sous le nom AVC, pour Advanced Video Coding. La première version de la norme a été approuvée en mai 2003 et la plus récente date d'avril 2012.
Le JVT a ensuite travaillé sur le concept d'extensibilité en élaborant une extension à la norme H.264 (annexe G) : les spécifications Scalable Video Coding (SVC), puis sur la norme H.265/HEVC (High Efficiency Video Coding).
Le H.264 est mieux connu comme étant le format d'encodage vidéo le plus couramment utilisé sur les disques Blu-ray. Il est également largement utilisé par les sources Internet de streaming, telles que les vidéos de Netflix, Hulu, Amazon Prime Video, Vimeo, YouTube et l'iTunes Store, les logiciels Web tels que Adobe Flash Player et Microsoft Silverlight ainsi que diverses émissions de TVHD.

## Historique

Le nom H.264 provient de la famille de normes vidéo H.26x définies par l'UIT-T. Cependant, ce codec a été développé dans le cadre du MPEG, l'UIT-T se contentant de l'adopter ensuite et de l'éditer en son sein. Dans le cadre du MPEG, le sigle AVC (Advanced Video Coding) fut choisi par analogie avec le codec audio AAC MPEG-2 part 7 qui avait été nommé ainsi pour le différencier du codec audio MPEG-2 part 3 (le fameux MP3). La norme est habituellement appelée H.264/AVC (ou AVC/H.264, H.264/MPEG-4 AVC ou MPEG-4/H.264 AVC) pour souligner l'héritage commun. Le nom H.26L, rappelant son lien avec l'UIT-T est nettement moins commun mais toujours utilisé. De temps en temps, il est aussi appelé « le codec JVT », en référence à l'organisation JVT (Joint Video Team) qui l'a développé. Il existe un précédent dans l'élaboration d'une norme de codage vidéo commune entre le MPEG et l'UIT-T avec MPEG-2 et H.262 qui sont identiques.

## Objectifs et applications

À l'origine, l'UIT-T lança le projet H.26L en 1998 dans le but de créer une nouvelle architecture de codec ayant pour but un gain en efficacité de codage d'un rapport au moins égal à 2 par rapport aux standards existants (MPEG-2, H.263 et MPEG-4 Part 2). Un autre but était de créer une interface simple pour pouvoir adapter le codec aux différents protocoles de transport (commutation de paquets et de circuits). Le codec a été développé en s'assurant qu'il serait transposable sur plates-formes à un coût raisonnable, c'est-à-dire en tenant compte des progrès réalisés par l'industrie des semi-conducteurs en matière de design et des procédés.
En 2001, le projet H.26L avait atteint ses objectifs en taux de compression comme le démontrèrent des tests subjectifs réalisés par MPEG. C'est à ce moment que l'UIT-T et MPEG décidèrent d'un commun accord de créer le Joint Video Team (JVT) dans le but de standardiser le codec ensemble et de l'adapter aux différents besoins de l'industrie (vidéophonie, streaming, télévision, mobile). En effet, les applications traditionnellement visées par l'UIT-T concernent les bas débits (vidéophonie, mobile), applications pour lesquelles H.26L était optimisé, alors que les membres de MPEG désiraient l'adapter à d'autres formats (télévision, HD). Des outils algorithmiques comme le support de l'entrelacé ont été ajoutés et une réduction de la complexité a été accomplie.
Le codec H.264/AVC est donc adapté à une très grande variété de réseaux et de systèmes (par exemple, pour la diffusion de la télévision, le stockage HD DVD et Blu-ray, le streaming RTP/IP, et des systèmes de téléphonie propre à l'UIT-T).
À la suite de la première version de la norme, le JVT a développé quelques extensions, connues sous le nom Fidelity Range Extensions (FRExt). Ces extensions ont pour but de prendre en charge une précision de quantification accrue (ajout des codages 10-bit et 12-bit) et une meilleure définition de la chrominance (ajout des structures de quantification YUV 4:2:2 et YUV 4:4:4) et visent des applications professionnelles (Studio). Plusieurs autres fonctionnalités ont aussi été adoptées pour améliorer la qualité subjective en haute définition (ajout d'une transformée 8×8 en plus de la transformée 4×4 existante, ajout de matrices de quantification) ou pour des besoins spécifiques (codage sans perte, support d'autres espaces de couleurs). Le travail de conception sur les Fidelity Range Extensions a été finalisé en juillet 2004, et figé en septembre 2004.
Depuis la fin du développement de la version originale de la norme en mai 2003, le JVT a fait publier 4 versions approuvées par l'UIT-T et MPEG, correspondant à l'ajout de FRExt et à des corrections.

## Caractéristiques détaillées

H.264/AVC (MPEG-4 Part 10) comprend de nombreuses techniques nouvelles qui lui permettent de compresser beaucoup plus efficacement les vidéos que les normes précédentes (H.261, MPEG-1, MPEG-2, MPEG-4 Part 2/ASP) et fournit plus de flexibilité aux applications dans un grand nombre d'environnements réseau. Ces fonctionnalités principales comprennent :
* Prédiction Inter-trame ou Prédiction temporelle ((en) Inter-frame prediction)
** L'estimation et la compensation de mouvement peuvent être effectuées par rapport à plusieurs images de référence déjà codées. Le choix de l'image de référence intervient au niveau macrobloc et sous-macrobloc. Ceci permet d'utiliser dans certains cas jusqu'à 32 images de référence (contrairement aux précédentes normes, qui étaient limitées à une ou dans le cas d’images B conventionnelles, à deux) et jusqu'à 4 références différentes pour un même macrobloc. Cette fonctionnalité particulière permet habituellement des améliorations modestes au niveau du débit et de la qualité dans la plupart des scènes. Mais dans certains types de scènes, comme les scènes contenant des flashs rapides et répétitifs ou des scènes réapparaissant fréquemment, il permet une réduction du débit réellement significative.
** Une compensation de mouvement pouvant utiliser 7 tailles de blocs différentes (16×16, 16×8, 8×16, 8×8, 8×4, 4×8, 4×4) permet une segmentation très précise de zones se déplaçant.
** Une précision au quart de pixel pour la compensation de mouvement, permettant une description très précise du déplacement des zones en mouvement. Pour la chrominance, la précision de la compensation de mouvement se fait même au huitième de pixel.
** Une compensation de mouvement pondérée ((en) Weighted Prediction) par des poids et des décalages permettant à un codeur de construire des prédictions s'adaptant au changement de luminance et de chrominance de la scène courante. Ceci apporte en particulier un gain pour les scènes comportant des transitions dues à des flashs ou des fondus entre scènes effectués au montage.
* Intra-prédiction ou Prédiction spatiale : sur le bord des blocs voisins pour un codage « intra » (plutôt que la seule prédiction sur les coefficients continus présente dans MPEG-2 Part 2 et la prédiction sur les coefficients de la transformée de H.263+ et MPEG-4 Part 2).
* Adaptation des transformées discrètes :
** Une transformée entière effectuée sur des blocs de taille 4×4 pixels (proche de la DCT classique). Pour les nouveaux profils issus des extensions FRExt, une transformée supplémentaire de taille 8×8 a été ajoutée.
** Une transformée de Hadamard effectuée sur les coefficients moyens de la transformée spatiale primaire (pour la chrominance et éventuellement la luminance dans certains cas) pour obtenir encore plus de compression là où l'image est adoucie.
* Plusieurs codeurs entropiques :
** CABAC ((en) Context-adaptive binary arithmetic coding) : Il s'agit d'un codage arithmétique. C'est une technique sophistiquée de codage entropique qui produit d'excellents résultats en ce qui concerne la compression mais possède une grande complexité (non disponible dans les profils baseline et extended).
** CAVLC ((en) Context-adaptive Huffman variable-length coding) : Il s'agit d'un codage adaptatif de type Huffman à longueur variable, qui est une alternative moins complexe que CABAC pour le codage des tables de coefficients de transformation. Bien que moins complexe que CABAC, CAVLC est plus élaboré et plus efficace que les méthodes habituellement utilisées jusqu'à présent pour coder les coefficients.
** Une technique simple et hautement structurée de codage à longueur variable ou ((en) Variable length coding) pour de nombreux éléments de syntaxe non codés par CABAC ou CAVLC, considéré comme du code exponentiel-Golomb (Exp-Golomb).
* Un filtrage anti-blocs ou deblocking filter, effectué dans la boucle de codage et opéré sur les blocs 4×4, permettant de réduire les artefacts caractéristiques du codage avec transformation en bloc.
* Deux modes d'entrelacement :
** Codage en Picture-adaptive frame-field (PAFF ou PicAFF) : l'encodeur choisit d'adapter le codage de la trame courante soit de façon progressive (une seule trame), soit par entrelacement (deux champs ou fields).
** Codage en Macroblock-adaptive frame-field (MBAFF) : même principe que pour le PAFF sauf que l'application ne s'effectue pas au niveau de la trame mais au niveau des macroblocs 16x16. Le sens du codage est légèrement différent puisqu'il traite deux lignes de macroblocs en même temps au lieu d'une seule habituellement. En effet, dans le cas de l'entrelacement, les deux fields sont respectivement les premiers blocs 16x8 et les seconds blocs 16x8 des deux macroblocs appairés.
* Une couche d'abstraction réseau ((en) NAL : Network abstraction layer) est définie pour permettre l'usage de la même syntaxe vidéo dans de nombreux environnements réseau, ceci inclut des possibilités telles que des paramètres de séquence ((en) SPS : Sequence parameter set) et d'image ((en) PPS : picture parameter set) qui offrent plus de robustesse et de flexibilité que les conceptions antérieures.
* Les tranches de commutation (appelées SP et SI) permettent à un codeur de diriger un décodeur pour que ce dernier puisse s'insérer dans un flux vidéo entrant, ceci permet du streaming vidéo à débit variable et un fonctionnement en « trick mode » (mode truqué). Quand un décodeur saute au milieu d'un flux vidéo en utilisant cette technique, il peut se synchroniser avec les images présentes à cet endroit malgré l'utilisation d'autres images (ou pas d'images) comme références préalables au déplacement.
* L'ordonnancement flexible des macroblocs ((en) FMO : Flexible macroblock ordering, alias slice groups) et l'ordonnancement arbitraire des tranches ((en) ASO : Arbitrary slice ordering) sont des techniques de restructuration de l'ordonnancement des régions fondamentales de l'image (macroblocs). Typiquement utilisées pour améliorer la résistance aux erreurs et aux pertes, ces techniques peuvent également être utilisées à d'autres fins.
* Le partitionnement des données ((en) DP : Data partitioning) donne la possibilité de séparer les éléments de syntaxe d'importance plus ou moins élevée dans différents paquets de données. Ceci permet d'appliquer un niveau de protection inégal ((en) UEP : Unequal error protection) aux erreurs en fonction de l'importance des données et d'améliorer ainsi la fiabilité du flux.
* Les tranches redondantes ((en) RS : Redundant slices) permettent d'améliorer la résistance aux erreurs et aux pertes en permettant au codeur de transmettre une version additionnelle de tout ou partie de l'image dans une qualité moindre qui pourra être utilisée si le flux principal est corrompu ou perdu.
* Un processus automatisé simple de prévention contre la création accidentelle de faux codes de démarrage. Il s'agit de séquences binaires spéciales qui sont placées au sein des données, permettant un accès aléatoire au flux de données ainsi qu'une resynchronisation en cas de perte temporaire du flux.
* Des informations supplémentaires d'amélioration ((en) SEI : Supplemental enhancement information) et des informations d'état qualitatif de la vidéo ((en) VUI : Video usability information) sont des informations supplémentaires qui peuvent être insérées dans le flux pour améliorer son usage pour un grand nombre d'applications.
* Des images auxiliaires peuvent être utilisées pour des usages tels que le mixage par alpha channel.
* La numérotation des images permet la création de sous-séquences (permettant une scalabilité temporelle par l'inclusion optionnelle d'images supplémentaires entre d'autres images) ainsi que la détection et la dissimulation de la perte d'images entières (qui peuvent se produire en cas de perte de paquets réseau ou d'erreurs de transmission).
* Le comptage de l'ordre des images permet de conserver l'ordre des images et du son dans des images décodées isolément des informations de minutage (ce qui permet à un système de transporter, contrôler et/ou changer l'information de minutage sans affecter le contenu des images).
Ces techniques, ainsi que plusieurs autres, aident H.264 à dépasser significativement les standards précédents, dans une grande variété de circonstances et dans une grande variété d'environnements d'application. H.264 peut fonctionner souvent nettement mieux que la vidéo MPEG-2 en obtenant la même qualité avec un débit binaire diminué de moitié, voire plus.
Comme de nombreuses autres normes vidéo du groupe ISO/CEI MPEG, le H.264/AVC dispose d'une application logicielle de référence, qui peut être gratuitement téléchargée (voir la section Liens externes ci-dessous).
Le principal objectif de cette application est de donner des exemples des différentes possibilités du H.264/AVC, plutôt que de fournir un produit réellement utilisable et performant.
Une application matérielle de référence est aussi en cours de normalisation par le groupe MPEG.

## Profils

Le standard inclut les six ensembles de caractéristiques suivants, qui sont appelés des profils, chacun ciblant une classe d'applications précise :
* Baseline Profile (BP) : principalement pour les applications à bas-coût qui utilisent peu de ressources, ce profil est très utilisé dans les applications mobiles et de visioconférence.
* Main Profile (MP) : à l'origine, prévu pour les applications grand public de diffusion et de stockage, ce profil a perdu de l'importance quand le profil High a été ajouté avec le même objectif.
* Extended Profile (XP) : prévu pour la diffusion en flux (streaming) des vidéos, ce profil a des capacités de robustesse à la perte de données et de changement de flux.
* High Profile (HiP) : le profil principal pour la diffusion et le stockage sur disque, en particulier pour la télévision haute définition (ce profil a été adopté pour les disques HD DVD et Blu-ray ainsi que pour la télévision numérique française haute définition).
* High 10 Profile (Hi10P) : ce profil va au-delà des applications grand public et s'appuie sur le profil High — ajoutant jusqu'à 10 bits de précision par pixel.
* High 4:2:2 Profile (Hi422P) : Le profil principal pour les applications professionnelles, il s'appuie sur le profil High 10 — ajoutant le support pour la quantification 4:2:2 jusqu'à 10 bits par pixel.
* High 4:4:4 Profile (Hi444P) [obsolète] : ce profil s'appuie sur le profil High 4:2:2 — ajoutant le support pour la quantification 4:4:4, jusqu'à 12 bits par pixel et en plus le support pour un mode sans perte efficace. Note : Le profil High 4:4:4 a été déprécié du standard en 2006 en faveur d'un nouveau profil 4:4:4 en cours de développement.
| | Baseline | Main | Extended | High | High 10 | High 4:2:2 | High 4:4:4 |
| tranches I et P | Oui | Oui | Oui | Oui | Oui | Oui | Oui |
| tranches B | Non | Oui | Oui | Oui | Oui | Oui | Oui |
| tranches SI et SP | Non | Non | Oui | Non | Non | Non | Non |
| Image de Références Multiples | Oui | Oui | Oui | Oui | Oui | Oui | Oui |
| Filtre anti-blocs | Oui | Oui | Oui | Oui | Oui | Oui | Oui |
| codage CAVLC | Oui | Oui | Oui | Oui | Oui | Oui | Oui |
| codage CABAC | Non | Oui | Non | Oui | Oui | Oui | Oui |
| ordonnancement flexible des macroblocs (FMO) | Oui | Non | Oui | Non | Non | Non | Non |
| ordonnancement arbitraire des tranches (ASO) | Oui | Non | Oui | Non | Non | Non | Non |
| tranches redondantes (RS) | Oui | Non | Oui | Non | Non | Non | Non |
| partitionnement des données (DP) | Non | Non | Oui | Non | Non | Non | Non |
| codage entrelacé (PicAFF, MBAFF) | Non | Oui | Oui | Oui | Oui | Oui | Oui |
| format 4:2:0 | Oui | Oui | Oui | Oui | Oui | Oui | Oui |
| format monochrome (4:0:0) | Non | Non | Non | Oui | Oui | Oui | Oui |
| format 4:2:2 | Non | Non | Non | Non | Non | Oui | Oui |
| format 4:4:4 | Non | Non | Non | Non | Non | Non | Oui |
| pixel 8 Bit | Oui | Oui | Oui | Oui | Oui | Oui | Oui |
| pixel 9 et 10 Bit | Non | Non | Non | Non | Oui | Oui | Oui |
| pixel 11 et 12 Bit | Non | Non | Non | Non | Non | Non | Oui |
| transformée 8×8 | Non | Non | Non | Oui | Oui | Oui | Oui |
| matrices de quantification | Non | Non | Non | Oui | Oui | Oui | Oui |
| quantification Cb et Cr séparée | Non | Non | Non | Oui | Oui | Oui | Oui |
| codage sans-perte | Non | Non | Non | Non | Non | Non | Oui |
| | Baseline | Main | Extended | High | High 10 | High 4:2:2 | High 4:4:4 |

## Niveaux

Les niveaux ((en) levels) sont des limitations sur un certain nombre de paramètres qui permettent aux décodeurs de limiter les ressources mémoires et calculatoires nécessaires pour décoder une vidéo.
Note : un macrobloc est une zone de 16×16 pixels.
| Numéro de niveau | macroblocs par seconde maximum | taille maximum de l'image en macroblocs | débit en bit maximum pour les profils Baseline, Extended et Main Profile | débit en bit maximum pour le profil High | débit en bit maximum pour le profil High 10 | débit en bit maximum pour les profils High 4:2:2 et 4:4:4 | exemple de définition et images par seconde dans ce niveau. |
| 1 | 1 485 | 99 | 64 kbit/s | 80 kbit/s | 192 kbit/s | 256 kbit/s | 128×96/30,9 176×144/15,0 |
| 1b | 1 485 | 99 | 128 kbit/s | 160 kbit/s | 384 kbit/s | 512 kbit/s | 128×96/30,9 176×144/15,0 |
| 1.1 | 3 000 | 396 | 192 kbit/s | 240 kbit/s | 576 kbit/s | 768 kbit/s | 176×144/30,3 320×240/10,0 |
| 1.2 | 6 000 | 396 | 384 kbit/s | 480 kbit/s | 1152 kbit/s | 1536 kbit/s | 176×144/60,6 320×240/20,0 352×288/15,2 |
| 1.3 | 11 880 | 396 | 768 kbit/s | 960 kbit/s | 2304 kbit/s | 3072 kbit/s | 352×288/30,0 |
| 2 | 11 880 | 396 | 2 Mbit/s | 2,5 Mbit/s | 6 Mbit/s | 8 Mbit/s | 352×288/30,0 |
| 2.1 | 19 800 | 792 | 4 Mbit/s | 5 Mbit/s | 12 Mbit/s | 16 Mbit/s | 352×480/30,0 352×576/25,0 |
| 2.2 | 20 250 | 1 620 | 4 Mbit/s | 5 Mbit/s | 12 Mbit/s | 16 Mbit/s | 720×480/15,0 352×576/25,6 |
| 3 | 40 500 | 1 620 | 10 Mbit/s | 12,5 Mbit/s | 30 Mbit/s | 40 Mbit/s | 720×480/30,0 720×576/25,0 |
| 3.1 | 108 000 | 3 600 | 14 Mbit/s | 17,5 Mbit/s | 42 Mbit/s | 56 Mbit/s | 1280×720/30,0 720×576/66,7 |
| 3.2 | 216 000 | 5 120 | 20 Mbit/s | 25 Mbit/s | 60 Mbit/s | 80 Mbit/s | 1280×720/60,0 |
| 4 | 245 760 | 8 192 | 20 Mbit/s | 25 Mbit/s | 60 Mbit/s | 80 Mbit/s | 1920×1080/30.1 2048×1024/30,0 |
| 4.1 | 245 760 | 8 192 | 50 Mbit/s | 62,5 Mbit/s | 150 Mbit/s | 200 Mbit/s | 1920×1080/30,1 2048×1024/30,0 |
| 4.2 | 522 240 | 8 704 | 50 Mbit/s | 62,5 Mbit/s | 150 Mbit/s | 200 Mbit/s | 1920×1080/64,0 2048×1088/60,0 |
| 5 | 589 824 | 22 080 | 135 Mbit/s | 168,75 Mbit/s | 405 Mbit/s | 540 Mbit/s | 1920×1080/72,3 2560×1920/30,7 |
| 5.1 | 983 040 | 36 864 | 240 Mbit/s | 300 Mbit/s | 720 Mbit/s | 960 Mbit/s | 1920×1 080/120,5 4096×2048/30,0 |
| 5.2 | 2 073 600 | 36 864 | 240 Mbit/s | 300 Mbit/s | 720 Mbit/s | 960 Mbit/s | 1 920×1 080/172,0 4 096×2 160/60,0 |
| 6 | 4 177 920 | 139 264 | 240 Mbit/s | 300 Mbit/s | 720 Mbit/s | 960 Mbit/s | 2048×1536@300 4096×2160@120 8192×4320@30 |
| 6.1 | 8 355 840 | 139 264 | 480 Mbit/s | 600 Mbit/s | 1440 Mbit/s | 1920 Mbit/s | 2048×1536@300 4096×2160@240 8192×4320@60 |
| 6.2 | 16 711 680 | 139 264 | 800 Mbit/s | 1000 Mbit/s | 2400 Mbit/s | 3200 Mbit/s | 4096*2304@300 8192×4320@120 |
| Numéro de niveau | macroblocs par seconde maximum | taille maximum de l'image en macroblocs | débit maximum pour les profils Baseline, Extended et Main Profile | débit maximum pour le profil High | débit maximum pour le profil High 10 | débit maximum pour les profils High 4:2:2 et 4:4:4 | exemple de définition et images par seconde dans ce niveau. |

## Brevets

Comme pour les formats MPEG-2 Parts 1 et 2 ainsi que MPEG-4 Part 2, les revendeurs de produits et services utilisant la norme H.264/AVC doivent payer des droits pour l'utilisation d'une technologie brevetée. Le principal bénéficiaire de ces droits concernant cette norme est une organisation privée : MPEG-LA, LLC (qui n'est absolument pas affiliée avec la "MPEG standardization organization", mais qui gère également des brevets pour des systèmes utilisant MPEG-2 Part 1, des vidéos MPEG-2 Part 2 et MPEG-4 Part 2 ainsi que d'autres technologies).
Le fait de savoir si ces licences sont nécessaires pour une implémentation logicielle en Europe fait l'objet d'une controverse.

## Applications

Les deux principaux candidats incluent le « H.264/AVC High Profile » en tant que caractéristique obligatoire des lecteurs avec notamment :
* le format HD DVD du DVD Forum ;
* le format disque Blu-ray de la Blu-ray Disc Association (BDA) ;
* le format de caméscope AVCHD.
En Europe, l'organisation de standardisation Digital Video Broadcast (DVB) a approuvé le H.264/AVC pour la diffusion de la télévision en Europe à la fin 2004.
Le Premier ministre français a annoncé que le H.264/AVC était obligatoire dans les récepteurs HD TV et pour les chaînes payantes de la télévision numérique terrestre (TNT) en France, fin 2004.
L'organisation de standardisation Advanced Television Systems Committee (ATSC) aux États-Unis est en train d'envisager l'utilisation de la norme H.264/AVC pour la télévision diffusée aux États-Unis.
Le service Digital Multimedia Broadcast (DMB) - équivalent à la TNT européenne - prévu pour être diffusé en République de Corée utilisera le format H.264/AVC.
Les opérateurs de diffusion terrestre mobile au Japon utiliseront le codec H.264/AVC, dont :
* NHK ;
* Tokyo Broadcasting System (TBS) ;
* Nippon Television (NTV) ;
* TV Asahi ;
* Fuji TV ;
* TV Tokyo.
Les services de TV Direct broadcast satellite (diffusion directe par satellite) utiliseront ce nouveau standard, dont :
* News Corp. / DirecTV (aux États-Unis) ;
* Echostar / Dish Network / Voom TV (aux États-Unis) ;
* Euro1080 (en Europe) ;
* Premiere (en Allemagne) ;
* BSkyB (en Grande-Bretagne et en Irlande).
Le 3rd Generation Partnership Project (3GPP) a approuvé l'introduction de H.264/AVC comme un service optionnel dans la version 6 des spécifications fonctionnelles pour le mobile multimédia.
Le Motion Imagery Standards Board (MISB) du département de la Défense des États-Unis a adopté H.264/AVC comme codec vidéo préféré pour toutes les applications.
L'organisation Internet Engineering Task Force (IETF) a fourni un format de mise en paquet du contenu (RFC 3984) pour le transport de vidéo H.264/AVC en utilisant son Real-time Transport Protocol (RTP).
L'organisation Internet Streaming Media Alliance (ISMA) a adopté H.264/AVC pour les spécifications de ISMA 2.0.
L'organisation Moving Picture Experts Group (MPEG) a intégré avec succès le support de H.264/AVC dans ses standards (par exemple les systèmes MPEG-2 and MPEG-4) ainsi que dans les spécifications du format de fichier média ISO.
L'Union internationale des télécommunications - Secteur Standardisation (UIT-T) a adopté H.264/AVC dans les spécifications de systèmes de téléphonie multimédia H.32x. Basé sur les standards de l'UIT-T, H.264/AVC est déjà largement utilisé pour la vidéoconférence, notamment par deux sociétés importantes du marché, (Polycom et Tandberg). Tous les nouveaux produits de vidéoconférence incluent dorénavant le support de H.264/AVC.
H.264 sera probablement utilisé dans les services de vidéo à la demande sur Internet afin de fournir des films et des émissions de télévision sur ordinateur. Il est également probable que le même type de contenu sera proposé via échange de fichiers sur réseau, de manière légale ou pas.

## Produits et mises en œuvre
### Transpositions logicielles

* x264 est un codeur H.264 distribué sous les termes de la licence GPL utilisé dans les logiciels de transcodage VideoLAN et MEncoder. Début 2006, x264 est la seule transposition complète et libre des profiles Main et High de H.264, entrelacé exclu. x264 a remporté une comparaison d'encodeurs vidéo organisé par Doom9.org en décembre 2005.
* Libavcodec contient un décodeur H.264 sous licence LGPL. Il supporte les profils Main et High de H.264, entrelacé exclu. Il est utilisé dans de nombreuses applications comme les lecteurs VLC media player et MPlayer, et les décodeurs ffdshow et FFmpeg.
* CoreAVC est un décodeur de flux vidéo H.264 complet utilisant la technologie CUDA (seules les cartes graphiques nVidia possèdent cette technologie), permettant de libérer le CPU pour d'autres tâches et de gagner en performance$^,$.
* Le paquetage Nero Digital, codéveloppé par Nero AG et Ateme, comporte un décodeur et un encodeur H.264, et supporte d'autres technologies MPEG-4. En septembre 2005, il supporte le profile Main, entrelacé exclu, et devrait bientôt supporter aussi le profil High et l'entrelacé.
* Apple a intégré le H.264 dans Mac OS X version 10.4 (Tiger), ainsi que Quicktime version 7, qui est fourni avec Tiger. En avril 2005, Apple a mis à jour sa version de DVD Studio Pro pour permettre la création de contenu HD. DVD Studio Pro permet de graver du contenu HD DVD à la fois aux standards des médias DVD et HD DVD (même si aucun graveur n'est disponible). Pour visualiser ces HD DVD, il faut les regraver sur des DVD standard. Apple requiert un PowerPC G5, Apple DVD Player v4.6, et Mac OS X v10.4 ou supérieur.
* L'application de visioconférence iChat d'Apple fonctionne avec ce codec depuis la version 3.
* Sorenson offre une application de H.264. Le codec Sorenson AVC Pro codec est disponible dans le logiciel Sorenson Squeeze 4.1 for MPEG-4.
* La société DivX Inc a incorporé le H.264 à la version 7 du codec DivX (janvier 2009).
* La société Adobe a incorporé le H.264 dans le lecteur Flash 10.n (vérifier la version exacte). Bien que ce codec soit disponible via le composant FLVPlayBack uniquement depuis Flash CS4, une vidéo codée en H264 peut être pilotée depuis Flash player 6 à partir de la classe NetStream, en ActionScript 2 et pour des players plus récents, en ActionScript 3.
* Un décodeur H.264 est présent dans le système Android.
* En octobre 2013, la société Cisco Systems a proposé un codec ouvert appelé OpenH264. Bien que le codec source soit accessible, seul le binaire provenant de Cisco peut être utilisé légalement: les brevets ne permettant pas les modifications. L'utilisateur peut refaire le codec et vérifier s'il est conforme à celui proposé par Cisco. Mozilla a déclaré son intention de télécharger ce codec dans Firefox si celui-ci en éprouve le besoin. Leur refus du codec opensource x264 s'explique par son absence de redevance à la MPEG LA ce que ne permettent pas les brevets liés, ce qui est illégal dans certains pays. Au contraire, Cisco se porte garant de cette redevance pour tout usage qui pourra être fait de leur codec.

### Applications matérielles

Plusieurs entreprises produisent des puces capables de décoder des vidéos H.264/AVC. Les puces capables de décoder en temps réel des vidéos haute définition sont entre autres les suivantes :
* Broadcom BCM7411 ;
* Conexant CX2418X ;
* Sigma Designs SMP8634, SMP8635, EM8622L, et EM8624L ;
* STMicroelectronics STB7100, STB7109, NOMADIK (série STn 8800/8810/8815) ;
* WISchip (Micronas USA, Inc.) DeCypher 8100 ;
* Neotion NP4 - NEOTION Processor 4.
Ce type de puces permet un large déploiement de matériel à bas coût capable de jouer des vidéos H.264/AVC aux définitions de télévision standard et hautes.
De nombreux matériels sont d'ores et déjà disponibles en juin 2006, cela va des produits de grande consommation peu onéreux à des codeurs temps réel à base de FPGA pour la diffusion :
* Archos propose des baladeurs numériques multimédia capable de décoder le H.264 (entre autres) depuis la 4e génération (sortie en 2006 (Archos 604)) ;
* Modulus Video livre des codeurs H.264 temps réel de qualité TV standard aux diffuseurs (opérateurs téléphoniques compris) et a annoncé ses codeurs temps réel haute définition (ME6000) pour la mi-2005. La technologie de codage Modulus Video HD a été montrée au NAB d'avril 2004 où elle a obtenu le prix « Pick Hit ». L'encodage Modulus emploie la technologie de LSI Logic ;
* Harmonic propose une gamme variée de codeurs vidéo professionnels supportant H.264 en définition SD et HD (DiviCom MV 3500 & Electra 5000) ;
* Tandberg television a annoncé un encodeur temps réel haute définition (le EN5990). DirecTV a choisi ce produit pour son déploiement DBS ;
* chez ATI, la série de processeurs graphiques Radeon X1000 comporte une accélération matérielle du décodage H.264 avec les pilotes Catalyst 5.13. Le décodage H.264 est une partie de la technologie multimédia "AVIVO3 (en)" d'ATI$^,$$^,$ ;
* les pilotes NVIDIA supportent le décodage H.264 matériel pour certains processeurs graphiques, la liste est disponible sur la page PureVideo de NVidia ;
* la console PlayStation Portable de Sony contient un décodeur matériel de fichiers vidéo au format H.264 ;
* en octobre 2005, Apple a dévoilé la cinquième version de son célèbre baladeur iPod capable de lire des vidéos au format H.264 sur son écran ou sur une télévision. Il supporte le profil Baseline jusqu'à la définition de 640×480, à 30 images par seconde et au débit de 768 kbit/s ;
* les iPod, Zune et les Walkman haut de gamme supportent également le H.264. Ils permettent, via la sortie vidéo, de lire sur une télévision ou n'importe quel écran, des vidéos dans une définition de 720×480 à 30 images par seconde ;
* WorldGate vend les téléphones portables Ojo, qui utilisent H.264 en profil Baseline à la définition QCIF (176×144) avec des débits de 80 à 500 kbit/s à 30 images par seconde.