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

Voir aussi

Audio de forme d’onde

Structures de forme d’onde