Structure WAVEFORMATEX (mmeapi.h)

La structure WAVEFORMATEX définit le format des données audio .wav. Seules les informations de format communes à tous les formats de données audio de forme d’onde sont incluses dans cette structure. Pour les formats qui nécessitent des informations supplémentaires, cette structure est incluse en tant que premier membre d’une autre structure, avec les informations supplémentaires.

Les formats qui prennent en charge plus de deux canaux ou des exemples de tailles de plus de 16 bits peuvent être décrits dans une structure WAVEFORMATEXTENSIBLE , qui inclut la structure WAVEFORMAT .

Syntaxe

typedef struct tWAVEFORMATEX {
  WORD  wFormatTag;
  WORD  nChannels;
  DWORD nSamplesPerSec;
  DWORD nAvgBytesPerSec;
  WORD  nBlockAlign;
  WORD  wBitsPerSample;
  WORD  cbSize;
} WAVEFORMATEX, *PWAVEFORMATEX, *NPWAVEFORMATEX, *LPWAVEFORMATEX;

Membres

wFormatTag

Type de format audio de forme d’onde. Les balises de format sont inscrites auprès de Microsoft Corporation pour de nombreux algorithmes de compression. Vous trouverez la liste complète des balises de format dans le fichier d’en-tête Mmreg.h. Pour les données PCM à un ou deux canaux, cette valeur doit être WAVE_FORMAT_PCM. Lorsque cette structure est incluse dans une structure WAVEFORMATEXTENSIBLE , cette valeur doit être WAVE_FORMAT_EXTENSIBLE.

nChannels

Nombre de canaux dans les données audio de forme d’onde. Les données monaurales utilisent un seul canal et les données stéréo utilisent deux canaux.

nSamplesPerSec

Taux d’échantillonnage, en échantillons par seconde (hertz). Si wFormatTag est WAVE_FORMAT_PCM, les valeurs courantes pour nSamplesPerSec sont 8,0 kHz, 11,025 kHz, 22,05 kHz et 44,1 kHz. Pour les formats non PCM, ce membre doit être calculé en fonction de la spécification du fabricant de la balise de format.

nAvgBytesPerSec

Débit moyen de transfert de données requis, en octets par seconde, pour la balise de format. Si wFormatTag est WAVE_FORMAT_PCM, nAvgBytesPerSec doit être égal au produit de nSamplesPerSec et nBlockAlign. Pour les formats non PCM, ce membre doit être calculé en fonction de la spécification du fabricant de la balise de format.

nBlockAlign

Alignement des blocs, en octets. L’alignement de blocs est l’unité atomique minimale de données pour le type de format wFormatTag . Si wFormatTag est WAVE_FORMAT_PCM ou WAVE_FORMAT_EXTENSIBLE, nBlockAlign doit être égal au produit de nChannels et wBitsPerSample divisé par 8 (bits par octet). Pour les formats non PCM, ce membre doit être calculé en fonction de la spécification du fabricant de la balise de format.

Le logiciel doit traiter un multiple de nBlockAlign octets de données à la fois. Les données écrites et lues à partir d’un appareil doivent toujours commencer au début d’un bloc. Par exemple, il n’est pas autorisé à démarrer la lecture de données PCM au milieu d’un exemple (c’est-à-dire sur une limite non alignée sur un bloc).

wBitsPerSample

Bits par exemple pour le type de format wFormatTag . Si wFormatTag est WAVE_FORMAT_PCM, wBitsPerSample doit être égal à 8 ou 16. Pour les formats non PCM, ce membre doit être défini en fonction de la spécification du fabricant de la balise de format. Si wFormatTag est WAVE_FORMAT_EXTENSIBLE, cette valeur peut être n’importe quel multiple entier de 8 et représente la taille du conteneur, pas nécessairement la taille de l’exemple ; par exemple, une taille d’exemple de 20 bits se trouve dans un conteneur 24 bits. Certains schémas de compression ne peuvent pas définir une valeur pour wBitsPerSample, ce membre peut donc être 0.

cbSize

Taille, en octets, des informations de format supplémentaires ajoutées à la fin de la structure WAVEFORMATEX . Ces informations peuvent être utilisées par des formats non PCM pour stocker des attributs supplémentaires pour le wFormatTag. Si aucune information supplémentaire n’est requise par wFormatTag, ce membre doit avoir la valeur 0. Pour les formats WAVE_FORMAT_PCM (et uniquement WAVE_FORMAT_PCM formats), ce membre est ignoré. Lorsque cette structure est incluse dans une structure WAVEFORMATEXTENSIBLE , cette valeur doit être au moins 22.

Notes

Le format MS-ADPCM (Adaptive Delta Pulse Code Modulation) est un exemple de format qui utilise des informations supplémentaires. Le wFormatTag pour MS-ADPCM est WAVE_FORMAT_ADPCM. Le membre cbSize est généralement défini sur 32. Les informations supplémentaires stockées pour WAVE_FORMAT_ADPCM sont les paires de coefficients requises pour l’encodage et le décodage des données audio de forme d’onde.

Spécifications

   
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
En-tête mmeapi.h (inclure Mmreg.h)

Voir aussi

Audio de forme d’onde

Structures de forme d’onde