Vue d’ensemble des systèmes MPEG-2
[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement au nouveau code d’utiliser MediaPlayer, IMFMediaEngine et La capture audio/vidéo dans Media Foundation au lieu de DirectShow, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]
Cette section donne une vue d’ensemble générale et non technique de la couche Systèmes MPEG-2. MPEG-2 Systems est la norme qui définit la façon dont les flux audio et vidéo sont multiplexés dans MPEG-2.
Flux élémentaires
Le multiplexing MPEG-2 commence par un ou plusieurs flux d’octets, appelés flux élémentaires (ES), qui contiennent des données vidéo, audio ou autres. Par exemple, une ES vidéo contient des images vidéo compressées, ainsi que des en-têtes de séquence, des en-têtes de groupe d’images (GOP) et tout ce dont le décodeur a besoin pour décoder le flux. La couche Systèmes ne définit pas le contenu du flux d’octets ES.
Un flux élémentaire est divisé en paquets, formant un flux élémentaire par paquets (PES). Les paquets PES ont une longueur variable. Le contenu du paquet est appelé charge utile. Chaque paquet PES comprend également un en-tête. Le multiplexeur affecte un ID de flux de 1 octet à chaque PES ; Les paquets PES individuels sont identifiés par l’ID de flux dans l’en-tête du paquet. Pour les flux audio, l’ID de flux a la forme 110xxxxx. Pour la vidéo, l’ID de flux a la forme 1110yyyy.
La norme MPEG-2 définit deux façons de fournir des flux élémentaires par paquets : les flux de programme et les fluxde transport.
Flux de programmes
Les flux de programme sont conçus pour des environnements relativement exempts d’erreurs, tels que le stockage de fichiers locaux. Dans un flux de programme, les paquets PES sont multiplexés et organisés en unités appelées packs. Tous les flux PES d’un flux de programme sont synchronisés avec la même horloge.
Flux de transport
Les flux de transport (TS) sont conçus pour les environnements peu fiables ou sujets aux erreurs, tels que les diffusions réseau. En outre, ils peuvent contenir plusieurs programmes qui sont synchronisés avec différentes horloges. Un flux de transport ajoute une deuxième couche de paquets : les flux PES sont empaquetés à l’intérieur de paquets de flux de transport, qui ont une taille fixe de 188 octets par paquet. Les paquets TS peuvent également contenir des flux d’informations sur le programme, qui sont décrits dans la section suivante.
Chaque paquet TS a un en-tête de 4 octets, plus un champ d’adaptation facultatif qui contient des informations d’en-tête supplémentaires. Le multiplexeur affecte un ID de programme (PID) à chaque flux PES ou flux d’informations de programme. Les PID sont utilisés pour identifier les paquets TS, de la même manière que les ID de flux identifient les paquets PES. (Si un flux de transport contient plusieurs programmes, les ID de flux peuvent ne pas être uniques, mais les affectations PID sont uniques au sein du flux de transport.)
Informations spécifiques au programme
Étant donné qu’un flux de transport peut transporter plusieurs programmes, il doit y avoir un moyen d’associer les différents paquets PES aux programmes auxquels ils appartiennent. Pour ce faire, utilisez des tables qui identifient les flux du programme. Collectivement, ces données sont appelées Informations spécifiques du programme (PSI). Les données PSI sont transportées dans des paquets TS, tout comme les données PES. Il existe différents types de données PSI, notamment :
Table d’association de programmes (PAT). Le PAT est toujours affecté à l'0x000 PID. Chaque entrée du PAT est un PID qui identifie les paquets PMT pour ce programme (voir l’élément suivant).
Table de mappage de programmes (PMT). Chaque PMT définit un programme. Le PMT contient une liste de flux ; chaque entrée de table donne le PID pour ce flux, plus un code qui identifie le type de flux. ISO/IEC 13818-1 définit certains types de flux standard ; une liste abrégée est illustrée dans le tableau suivant.
stream_type Description 0x01 Vidéo MPEG-1 0x02 Vidéo MPEG-2 0x03 Audio MPEG-1 0x04 Audio MPEG-2 0x80 - 0xFF Utilisateur privé D’autres normes basées sur MPEG-2, telles qu’ATSC, peuvent définir des types de flux supplémentaires dans la plage « utilisateur privé ». Par exemple, ATSC définit 0x81 comme audio Dolby AC-3.
Tables d’accès conditionnel (CAT)
Tables d’identification réseau (NIT)
Rubriques connexes