Structure WAVEFORMATEXTENSIBLE (mmreg.h)
[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture in Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation au lieu de DirectShow, si 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.]
La structure WAVEFORMATEXTENSIBLE définit le format des données audio de forme d’onde pour les formats ayant plus de deux canaux ou des résolutions d’exemples supérieures à celles autorisées par WAVEFORMATEX. Il peut également être utilisé pour définir n’importe quel format qui peut être défini par WAVEFORMATEX.
Syntaxe
typedef struct {
WAVEFORMATEX Format;
union {
WORD wValidBitsPerSample;
WORD wSamplesPerBlock;
WORD wReserved;
} Samples;
DWORD dwChannelMask;
GUID SubFormat;
} WAVEFORMATEXTENSIBLE, *PWAVEFORMATEXTENSIBLE;
Membres
Format
Structure WAVEFORMATEX qui spécifie le format de base. Le membre wFormatTag doit être WAVE_FORMAT_EXTENSIBLE. Le membre cbSize doit être d’au moins 22.
Samples
Union décrivant l’exemple de format.
Samples.wValidBitsPerSample
Nombre de bits de précision dans le signal. Généralement égal à WAVEFORMATEX.wBitsPerSample. Toutefois, wBitsPerSample est la taille du conteneur et doit être un multiple de 8, tandis que wValidBitsPerSample peut être n’importe quelle valeur ne dépassant pas la taille du conteneur. Par exemple, si le format utilise des exemples 20 bits, wBitsPerSample doit être d’au moins 24, mais wValidBitsPerSample est 20.
Samples.wSamplesPerBlock
Nombre d’exemples contenus dans un bloc compressé de données audio. Cette valeur est utilisée dans l’estimation de la mémoire tampon. Cette valeur est utilisée avec les formats compressés qui ont un nombre fixe d’exemples dans chaque bloc. Cette valeur peut être définie sur 0 si un nombre variable d’échantillons est contenu dans chaque bloc de données audio compressées. Dans ce cas, l’estimation de la mémoire tampon et les informations de position doivent être obtenues d’autres manières.
Samples.wReserved
Réservé à une utilisation interne par le système d’exploitation. Définit la valeur 0.
dwChannelMask
Masque de bits spécifiant l’affectation des canaux dans le flux aux positions de l’orateur.
SubFormat
Sous-format des données, par exemple KSDATAFORMAT_SUBTYPE_PCM. Les informations de sous-format sont similaires à celles fournies par la balise dans le membre wFormatTag de la structure WAVEFORMATEX.
Notes
WAVEFORMATEXTENSIBLE peut décrire n’importe quel format qui peut être décrit par WAVEFORMATEX, mais fournit une prise en charge supplémentaire pour plus de deux canaux, pour une plus grande précision du nombre de bits par échantillon et pour de nouveaux schémas de compression.
WAVEFORMATEXTENSIBLE peut être converti en toute sécurité en WAVEFORMATEX, car il configure simplement les octets supplémentaires spécifiés par WAVEFORMATEX.cbSize.
Le membre dwChannelMask spécifie les canaux présents dans le flux multicanal. Le bit le moins significatif correspond au haut-parleur avant gauche, le bit le moins significatif suivant correspond au haut-parleur avant droit, et ainsi de suite. Les bits, dans l’ordre de signification, sont définis comme suit.
Position de l’orateur | Bit d’indicateur |
---|---|
SPEAKER_FRONT_LEFT | 0x1 |
SPEAKER_FRONT_RIGHT | 0x2 |
SPEAKER_FRONT_CENTER | 0x4 |
SPEAKER_LOW_FREQUENCY | 0x8 |
SPEAKER_BACK_LEFT | 0x10 |
SPEAKER_BACK_RIGHT | 0x20 |
SPEAKER_FRONT_LEFT_OF_CENTER | 0x40 |
SPEAKER_FRONT_RIGHT_OF_CENTER | 0x80 |
SPEAKER_BACK_CENTER | 0x100 |
SPEAKER_SIDE_LEFT | 0x200 |
SPEAKER_SIDE_RIGHT | 0x400 |
SPEAKER_TOP_CENTER | 0x800 |
SPEAKER_TOP_FRONT_LEFT | 0x1000 |
SPEAKER_TOP_FRONT_CENTER | 0x2000 |
SPEAKER_TOP_FRONT_RIGHT | 0x4000 |
SPEAKER_TOP_BACK_LEFT | 0x8000 |
SPEAKER_TOP_BACK_CENTER | 0x10000 |
SPEAKER_TOP_BACK_RIGHT | 0x20000 |
Les canaux spécifiés dans dwChannelMask doivent être présents dans l’ordre prescrit (à partir du bit le moins significatif). Par exemple, si seuls SPEAKER_FRONT_LEFT et SPEAKER_FRONT_RIGHT sont spécifiés, les exemples de l’orateur avant gauche doivent figurer en premier dans le flux entrelacé. Le nombre de bits défini dans dwChannelMask doit être identique au nombre de canaux spécifié dans WAVEFORMATEX.nChannels.
À des fins de compatibilité descendante, tout format d’onde qui peut être spécifié par une structure WAVEFORMATEX autonome peut également être défini par une structure WAVEFORMATEXTENSIBLE . Ainsi, chaque balise de format d’onde dans mmreg.h a un GUID de sous-mise en forme correspondant. Le tableau suivant présente certaines balises de format d’onde typiques et leurs GUID de sous-format correspondants. Ces GUID sont définis dans Ksmedia.h.
balise Wave-Format | GUID de sous-mise en forme |
---|---|
WAVE_FORMAT_PCM | KSDATAFORMAT_SUBTYPE_PCM |
WAVE_FORMAT_IEEE_FLOAT | KSDATAFORMAT_SUBTYPE_IEEE_FLOAT |
WAVE_FORMAT_DRM | KSDATAFORMAT_SUBTYPE_DRM |
WAVE_FORMAT_ALAW | KSDATAFORMAT_SUBTYPE_ALAW |
WAVE_FORMAT_MULAW | KSDATAFORMAT_SUBTYPE_MULAW |
WAVE_FORMAT_ADPCM | KSDATAFORMAT_SUBTYPE_ADPCM |
Étant donné que WAVEFORMATEXTENSIBLE est une version étendue de WAVEFORMATEX, elle peut décrire des formats supplémentaires qui ne peuvent pas être décrits par WAVEFORMATEX seul. Les fournisseurs sont libres de définir leurs propres GUID de sous-format pour identifier les formats propriétaires pour lesquels il n’existe aucune étiquette de format onde.
Les structures suivantes, pour des formats étendus particuliers, sont définies en tant que WAVEFORMATEXTENSIBLE.
Définition | Valeur de SubFormat |
---|---|
WAVEFORMATIEEEFLOATEX | KSDATAFORMAT_SUBTYPE_IEEE_FLOAT |
WAVEFORMATPCMEX | KSDATAFORMAT_SUBTYPE_PCM |
Configuration requise
Client minimal pris en charge | Windows XP [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2003 [applications de bureau uniquement] |
En-tête | mmreg.h |