Représentation des formats pour les transmissions IEC 61937

Avec l’augmentation du nombre de périphériques de stockage multimédia qui nécessitent des formats audio compressés, les applications doivent identifier, décrire et utiliser une variété de nouveaux contenus audio encodés pour transmettre du contenu à partir de PC vers des appareils tels que hdmi ou récepteur DisplayPort.

Pour représenter un flux audio encodé à transmettre via une interface compatible IEC 61937, une application doit fournir :

  • Caractéristiques d’un flux audio encodé à transmettre.

  • Caractéristiques d’un flux audio décodé sur l’appareil cible.

Dans les systèmes d’exploitation Windows Vista et antérieurs, une application peut déduire le niveau de qualité d’un format audio à partir du nombre de canaux, de la taille de l’exemple et du débit de données d’un flux audio qui utilise le format. Pour un format PCM, ces informations sont disponibles à partir des membres nChannels, nSamplesPerSec et nAvgBytesPerSec de la structure WAVEFORMATEX qui spécifie le format. Pour un format non PCM, ces trois membres ont été réquisitionnés pour stocker des informations sur les données compressées dans le flux audio. Par conséquent, la structure WAVEFORMATEX ne dispose pas d’informations sur le nombre effectif de canaux, la taille de l’échantillon et le débit de données du flux audio non-PCM une fois que le flux est décompressé et lu. En fonction des informations contenues dans cette structure, un utilisateur ou une application peut avoir des difficultés à déduire le niveau de qualité du flux non PCM.

Le WAVEFORMATEX a été étendu à la structure WAVEFORMATEXTENSIBLE pour fournir les caractéristiques de flux supplémentaires. Toutefois, cette structure n’est pas non plus adéquate pour décrire le flux pour les transmissions iec 61937, car il était destiné à représenter un ensemble unique de caractéristiques et utilisé pour les données PCM multicanal non compressées.

Dans Windows 7, le système d’exploitation résout ce problème en fournissant la prise en charge d’une nouvelle structure, WAVEFORMATEXTENSIBLE_IEC61937 qui étend la structure WAVEFORMATEXTENSIBLE pour stocker deux ensembles de caractéristiques de flux audio : le format audio encodé avant la transmission et les caractéristiques du flux audio après son décodage. La nouvelle structure spécifie explicitement le nombre effectif de canaux, la taille de l’échantillon et le débit de données d’un format non PCM. Avec ces informations, une application peut déduire le niveau de qualité du flux non-PCM après avoir été décompressé et lu.

La structure WAVEFORMATEXTENSIBLE_IEC61937 est déclarée dans l’en-tête KsMedia.h inclus dans le Kit de développement logiciel (SDK) Windows 7. Le membre FormatExt est la structure WAVEFORMATEXTENSIBLE qui stocke les caractéristiques du flux à transmettre. Le membre Format de la structure WAVEFORMATEXTENSIBLE est la structure WAVEFORMATEX . Le contenu de ce WAVEFORMATEX et de WAVEFORMATEXTENSIBLE indique à une application si la structure peut être interprétée comme une structure WAVEFORMATEXTENSIBLE_IEC61937 . Pour une structure WAVEFORMATEXTENSIBLE_IEC61937 :

  • Le membre wFormatTag de WAVEFORMATEX doit contenir WAVE_FORMAT_EXTENSIBLE (FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE).

  • Le membre SubFormat de la structure WAVEFORMATEXTENSIBLE spécifie le GUID du format encodé à transmettre. Par exemple, FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL indique le format Dolby Digital Plus. Pour connaître les GUID pris en charge, consultez GUID de sous-format.

  • La taille indiquée par le membre cbSize du WAVEFORMATEX est de 34 octets. (FormatExt.Format.cbSize = 34). La taille totale de WAVEFORMATEXTENSIBLE_IEC61937 est de 52 octets.

Les membres dwEncodedSamplesPerSec, dwEncodedChannelCount et dwAverageBytesPerSec de WAVEFORMATEXTENSIBLE_IEC61937 décrivent le taux d’échantillonnage, le nombre de canaux et le débit binaire en octets du flux audio après son décodage.

GUID de sous-format

Dans Windows 7, l’en-tête KsMedia.h contient des définitions pour les GUID de sous-format pour les formats audio compressés définis par CEA-861-D. Les GUID sont spécifiés dans le membre SubFormat de WAVEFORMATEXTENSIBLE, spécifié dans le membre FormatExt de la structure WAVEFORMATEXTENSIBLE_IEC61937 (WAVEFORMATEXTENSIBLE_IEC61937.FormatExt.Subformat).

Les GUID pour les formats audio compressés disponibles en tant que formats audio encodés IEC 61937 standard sont répertoriés dans le tableau suivant. Ces formats sont similaires aux représentations existantes au format De codage actif 3 (AC-3) et au format DTS (Digital Theater Sound) dans Windows.

CEA 861 Type GUID de sous-format Description
0x00 Reportez-vous au flux.
0x01 000000000-0000-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_WAVEFORMATEX
IEC 60958 PCM
0x02 00000092-0000-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL
AC-3
0x03 00000003-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_MPEG1
MPEG-1 (couche 1 & 2)
0x04 00000004-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_MPEG3
MPEG-3 (couche 3)
0x05 00000005-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_MPEG2
MPEG-2 (multicanal)
0x06 00000006-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_AAC
Codage audio avancé (MPEG-2/4 AAC dans ADTS)
0x07 000000008-0000-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DTS
DTS
0x0A 0000000a-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS
Dolby Digital Plus
0x0A 0000010a-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS_ATMOS
Dolby Atmos encodé avec Dolby Digital Plus
0x0f Réservé inutilisé

 

Les GUID des formats audio compressés transmis dans des exemples de paquets audio à débit élevé sont répertoriés dans le tableau suivant.

CEA 861 Type GUID de sous-format Description
0x0b 00000000b-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DTS_HD
DTS-HD (24 bits, 96Khz)
0x0c 00000000c-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MLP
Dolby MAT 1.0 :
Dolby TrueHD (MLP – Méridien Lossless Packing) – 24 bits 192 KHz/jusqu’à 18 Mbits/s, 8 canaux)
0x0c 0000010c-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MAT20
Dolby MAT 2.0 :
Dolby TrueHD : 24 bits 192 KHz/jusqu’à 18 Mbits/s, 8 canaux ou LPCM jusqu’à 24 Mbits/s.
0x0c 0000030c-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MAT21
Dolby MAT 2.1 :
Dolby TrueHD : 24 bits 192 KHz/jusqu’à 18 Mbits/s, 8 canaux ou LPCM jusqu’à 24 Mbits/s.
0x0e 00000164-0000-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_WMA_PRO
Windows Media Audio (WMA) Pro
0x0b 0000000b-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DTS_HD
DTS HD
0x0b 0000010b-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DTSX_E1
DTS:X E1
0x0b 0000030b-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DTSX_E2
DTS:X E2

 

Le pilote de classe Audio HD fourni par Microsoft prend en charge les formats PCM, AC3, DTS, AAC, Dolby Digital Plus, WMA Pro et MAT(MLP). Les GUID des formats audio compressés qui ne sont pas pris en charge par le pilote de classe audio HD et qui peuvent être implémentés par des solutions tierces sont répertoriés dans le tableau suivant.

CEA 861 Type GUID de sous-mise en forme Description
0x08 00000008-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_ATRAC
Codage acoustique de transformation adaptative (ATRAC)
0x09 00000009-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_ONE_BIT_AUDIO
audio One-Bit
0x0d 0000000d-0cea-0010-8000-00aa00389b71
KSDATAFORMAT_SUBTYPE_IEC61937_DST
Direct Stream Transport (DST) : DSD compressé sans perte (Direct Stream Digital).

 

Dolby Digital Plus Format

Lorsque le contenu Dolby Digital Plus est transmis selon la norme IEC 60958, le taux d’échantillonnage des liens doit être quatre fois supérieur au taux d’échantillonnage du contenu. Dolby Digital Plus prend en charge des taux d’échantillonnage de contenu de 32 KHz, 44,1 KHz et 48 KHz. Les interfaces telles que HDMI ne prennent pas en charge 128 KHz (32 KHz x 4). Par conséquent, seuls les taux d’échantillonnage de contenu de 44,1 et 48 KHz peuvent être pris en charge.

Les valeurs définies par une application dans la structure WAVEFORMATEXTENSIBLE_IEC61937 pour représenter le format Dolby Digital Plus à une fréquence d’échantillonnage de contenu de 48 KHz sont illustrées dans l’exemple suivant.

WAVEFORMATEXTENSIBLE_IEC61937 wfext;
Wfext.FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
wfext.FormatExt.Format.nChannels = 2;              // One IEC 60958 Line.
wfext.FormatExt.Format.nSamplesPerSec = 192000;    // Link runs at 192 KHz.
wfext.FormatExt.Format.nAvgBytesPerSec = 768000;   // 192 KHz * 4.
wfext.FormatExt.Format.nBlockAlign = 4;            // 16 bits * 2 channels.
wfext.FormatExt.Format.wBitsPerSample = 16;        // Always at 16 bits over IEC 60958.
wfext.FormatExt.Format.cbSize = 34;                // Indicates that Format is part of a 
                                                   // WAVEFORMATEXTENSIBLE_IEC61937 structure.
wfext.FormatExt.Samples.wValidBitsPerSample = 16;
wfext.FormatExt.dwChannelMask = KSAUDIO_SPEAKER_5POINT1;    // Dolby 5.1 Surround.
wfext.FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS;
wfext.dwEncodedSamplesPerSec = 48000;                       // Sample rate of encoded content.
wfext.dwEncodedChannelCount = 6;                            // Encoded data contains 6 channels.
wfext.dwAverageBytesPerSec = 0;                             // Ignored for this format.

Dolby TrueHD (MAT)

Le contenu Dolby TrueHD est transmis sur la norme IEC 60958 à 176,4 kHz/8 canaux (nécessitant une fréquence d’images IEC 60958 de 705,6 kHz) pour des taux d’échantillonnage de contenu de 44,1, 88,2 et 176,4 kHz, et 192 kHz/8 canaux (nécessitant une fréquence d’images IEC 60958 de 768 kHz) pour les taux d’échantillonnage de contenu de 48, 96 et 192 kHz.

Les valeurs définies par une application dans la structure WAVEFORMATEXTENSIBLE_IEC61937 pour représenter Dolby TrueHD à un taux d’échantillonnage de contenu de 96 KHz sont présentées dans les exemples suivants.

Dolby MAT 1.0

WAVEFORMATEXTENSIBLE_IEC61937 wfext;
Wfext.FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
wfext.FormatExt.Format.nChannels = 8;                // Four IEC 60958 Lines.
wfext.FormatExt.Format.nSamplesPerSec = 192000;      // Link runs at 192 KHz.
wfext.FormatExt.Format.nAvgBytesPerSec = 3072000;    // 192 KHz * 16.
wfext.FormatExt.Format.nBlockAlign = 16;             // 16-bits * 8 channels.
wfext.FormatExt.Format.wBitsPerSample = 16;          // Always at 16 bits over IEC 60958.
wfext.FormatExt.Format.cbSize = 34;                  // Indicates that Format is part of a 
                                                     // WAVEFORMATEXTENSIBLE_IEC61937 structure.
wfext.FormatExt.Samples.wValidBitsPerSample = 16;
wfext.FormatExt.dwChannelMask = KSAUDIO_SPEAKER_7POINT1;    // Dolby 7.1 Surround.
wfext.FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MLP; // This structure indicates MLP (MAT 1.0) support.
wfext.dwEncodedSamplesPerSec = 96000;                       // Sample rate of encoded content.
wfext.dwEncodedChannelCount = 8;                            // Encoded data contains 8 channels.
wfext.dwAverageBytesPerSec = 0;                             // Ignored for this format.

Dolby MAT 2.0

WAVEFORMATEXTENSIBLE_IEC61937 wfext;
Wfext.FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
wfext.FormatExt.Format.nChannels = 8;                // Four IEC 60958 Lines.
wfext.FormatExt.Format.nSamplesPerSec = 192000;      // Link runs at 192 KHz.
wfext.FormatExt.Format.nAvgBytesPerSec = 3072000;    // 192 KHz * 16.
wfext.FormatExt.Format.nBlockAlign = 16;             // 16-bits * 8 channels.
wfext.FormatExt.Format.wBitsPerSample = 16;          // Always at 16 bits over IEC 60958.
wfext.FormatExt.Format.cbSize = 34;                  // Indicates that Format is part of a 
                                                     // WAVEFORMATEXTENSIBLE_IEC61937 structure.
wfext.FormatExt.Samples.wValidBitsPerSample = 16;
wfext.FormatExt.dwChannelMask = KSAUDIO_SPEAKER_7POINT1;    // Dolby 7.1 Surround.
wfext.FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MAT20; // This structure indicates MAT 2.0 support.
wfext.dwEncodedSamplesPerSec = 96000;                       // Sample rate of encoded content.
wfext.dwEncodedChannelCount = 8;                            // Encoded data contains 8 channels.
wfext.dwAverageBytesPerSec = 0;                             // Ignored for this format.

Dolby MAT 2.1

WAVEFORMATEXTENSIBLE_IEC61937 wfext;
Wfext.FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
wfext.FormatExt.Format.nChannels = 8;                // Four IEC 60958 Lines.
wfext.FormatExt.Format.nSamplesPerSec = 192000;      // Link runs at 192 KHz.
wfext.FormatExt.Format.nAvgBytesPerSec = 3072000;    // 192 KHz * 16.
wfext.FormatExt.Format.nBlockAlign = 16;             // 16-bits * 8 channels.
wfext.FormatExt.Format.wBitsPerSample = 16;          // Always at 16 bits over IEC 60958.
wfext.FormatExt.Format.cbSize = 34;                  // Indicates that Format is part of a 
                                                     // WAVEFORMATEXTENSIBLE_IEC61937 structure.
wfext.FormatExt.Samples.wValidBitsPerSample = 16;
wfext.FormatExt.dwChannelMask = KSAUDIO_SPEAKER_7POINT1;    // Dolby 7.1 Surround.
wfext.FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MAT21; // This structure indicates MAT 2.1 support.
wfext.dwEncodedSamplesPerSec = 96000;                       // Sample rate of encoded content.
wfext.dwEncodedChannelCount = 8;                            // Encoded data contains 8 channels.
wfext.dwAverageBytesPerSec = 0;                             // Ignored for this format.

Notes

La prise en charge d’une version de Dolby MAT n’implique pas la prise en charge de Dolby MAT avec un numéro de version inférieur. Étant donné que Dolby MAT 2.1 est rétrocompatible avec les versions précédentes de Dolby MAT, un pilote de classe qui indique la prise en charge de Dolby MAT 2.1 indique généralement également la prise en charge de Dolby MAT 2.0 et Dolby MAT 1.0, à l’aide d’une structure de WAVEFORMATEXTENSIBLE_IEC61937 distincte pour chaque version.

 

WMA Pro

Le contenu audio WMA Pro peut être encodé dans l’un des quatre profils répertoriés dans le tableau suivant.

Profil Propriété - Valeur Description
M0 Débit maximal : 192 000 bps
Taux d’échantillonnage maximal : 48 KHz
Nombre maximal de canaux : 2
Taille maximale de la mémoire tampon : 600*1 024 bits
Nombre maximal d’échantillons par image – 2048
Nombre maximal de bits par image - 655536
Recommandé pour la musique et la diffusion en continu.
La vitesse de transmission maximale dans une trame audio est de 1536 000 bps.
M1 Débit maximal : 385 000 bps
Taux d’échantillonnage maximal : 48 KHz
Nombre maximal de canaux : 6
Taille maximale de la mémoire tampon : 600*1 024 bits
Nombre maximal d’échantillons par image : 4096
Nombre maximal de bits par image - 131072
Recommandé pour les films de définition standard de son surround.
La vitesse de transmission maximale dans une trame audio est de 1536 000 bps.
M2 Débit maximal : 769 000 bps
Taux d’échantillonnage maximal : 96 KHz
Nombre maximal de canaux : 6
Taille maximale de la mémoire tampon : 1200*1 024 bits
Nombre maximal d’échantillons par image : 4096
Nombre maximal de bits par image - 131072
Recommandé pour les films en haute définition de son surround.
La vitesse maximale dans une trame audio est de 3072 000 bps.
M3 Débit maximal : 3000000 bps
Taux d’échantillonnage maximal : 96 KHz
Nombre maximal de canaux : 8
Taille maximale de la mémoire tampon : 2400*1 024 bits
Nombre maximal d’échantillons par image : 4096
Nombre maximal de bits par image - 131072
Recommandé pour le théâtre numérique.
La vitesse maximale dans une trame audio est de 3072 000 bps.

 

Les profils M0 et M1 s’intègrent dans un flux IEC 60958 de 48 KHz/16 bits/Stéréo (1536000 bps). Les profils M2 et M3 s’intègrent dans un flux IEC 60958 de 96 KHz/16 bits/stéréo (3072 000 bps).

Les valeurs définies par une application dans la structure WAVEFORMATEXTENSIBLE_IEC61937 pour représenter WMA Pro en tant que profil M2 sont présentées dans l’exemple suivant.

WAVEFORMATEXTENSIBLE_IEC61937 wfext;
Wfext.FormatExt.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
wfext.FormatExt.Format.nChannels = 2;             // One IEC 60958 Line.
wfext.FormatExt.Format.nSamplesPerSec = 96000;    // Link runs at 96 KHz.
wfext.FormatExt.Format.nAvgBytesPerSec = 384000;  // 96 KHz * 4.
wfext.FormatExt.Format.nBlockAlign = 4;           // 16 bits * 8 channels.
wfext.FormatExt.Format.wBitsPerSample = 16;       // Always at 16 bits over link.
wfext.FormatExt.Format.cbSize = 34;               // Indicates that Format is part of a 
                                                  // WAVEFORMATEXTENSIBLE_IEC61937 structure.
wfext.FormatExt.Samples.wValidBitsPerSample = 16;
wfext.FormatExt.dwChannelMask = KSAUDIO_SPEAKER_5POINT1;    // 5.1 Surround.
wfext.FormatExt.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_WMA_PRO;
wfext.dwEncodedSamplesPerSec = 96000;                       // Sample rate of encoded content.
wfext.dwEncodedChannelCount = 6;                            // Encoded data contains 6 channels.
wfext.dwAverageBytesPerSec = 0;                             // Ignored for this format.

Formats d’appareil