Compartilhar via


Estrutura WAVEFORMATEX (mmeapi.h)

A estrutura WAVEFORMATEX define o formato dos dados de áudio em ondas. Somente as informações de formato comuns a todos os formatos de dados de áudio de forma de onda estão incluídas nessa estrutura. Para formatos que exigem informações adicionais, essa estrutura é incluída como o primeiro membro em outra estrutura, juntamente com as informações adicionais.

Formatos que dão suporte a mais de dois canais ou tamanhos de exemplo de mais de 16 bits podem ser descritos em uma estrutura WAVEFORMATEXTENSIBLE , que inclui a estrutura WAVEFORMAT .

Sintaxe

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

Membros

wFormatTag

Tipo de formato waveform-audio. As marcas de formato são registradas na Microsoft Corporation para muitos algoritmos de compactação. Uma lista completa de marcas de formato pode ser encontrada no arquivo de cabeçalho Mmreg.h. Para dados pcm de um ou dois canais, esse valor deve ser WAVE_FORMAT_PCM. Quando essa estrutura é incluída em uma estrutura WAVEFORMATEXTENSIBLE , esse valor deve ser WAVE_FORMAT_EXTENSIBLE.

nChannels

Número de canais nos dados de áudio de forma de onda. Os dados monaural usam um canal e os dados estéreo usam dois canais.

nSamplesPerSec

Taxa de amostragem, em amostras por segundo (hertz). Se wFormatTag for WAVE_FORMAT_PCM, os valores comuns para nSamplesPerSec serão de 8,0 kHz, 11,025 kHz, 22,05 kHz e 44,1 kHz. Para formatos não PCM, esse membro deve ser calculado de acordo com a especificação do fabricante da marca de formato.

nAvgBytesPerSec

Taxa média de transferência de dados necessária, em bytes por segundo, para a marca de formato. Se wFormatTag for WAVE_FORMAT_PCM, nAvgBytesPerSec deverá ser igual ao produto de nSamplesPerSec e nBlockAlign. Para formatos não PCM, esse membro deve ser calculado de acordo com a especificação do fabricante da marca de formato.

nBlockAlign

Alinhamento de bloco, em bytes. O alinhamento do bloco é a unidade atômica mínima de dados para o tipo de formato wFormatTag . Se wFormatTag for WAVE_FORMAT_PCM ou WAVE_FORMAT_EXTENSIBLE, nBlockAlign deverá ser igual ao produto de nChannels e wBitsPerSample dividido por 8 (bits por byte). Para formatos não PCM, esse membro deve ser calculado de acordo com a especificação do fabricante da marca de formato.

O software deve processar um múltiplo de nBlockAlign bytes de dados por vez. Os dados gravados e lidos de um dispositivo sempre devem começar no início de um bloco. Por exemplo, é inválido iniciar a reprodução de dados pcm no meio de uma amostra (ou seja, em um limite não alinhado a blocos).

wBitsPerSample

Bits por exemplo para o tipo de formato wFormatTag . Se wFormatTag for WAVE_FORMAT_PCM, wBitsPerSample deverá ser igual a 8 ou 16. Para formatos não PCM, esse membro deve ser definido de acordo com a especificação do fabricante da marca de formato. Se wFormatTag for WAVE_FORMAT_EXTENSIBLE, esse valor poderá ser qualquer número inteiro múltiplo de 8 e representará o tamanho do contêiner, não necessariamente o tamanho da amostra; por exemplo, um tamanho de amostra de 20 bits está em um contêiner de 24 bits. Alguns esquemas de compactação não podem definir um valor para wBitsPerSample, portanto, esse membro pode ser 0.

cbSize

Tamanho, em bytes, de informações de formato extra acrescentadas ao final da estrutura WAVEFORMATEX . Essas informações podem ser usadas por formatos não PCM para armazenar atributos extras para o wFormatTag. Se nenhuma informação extra for exigida pelo wFormatTag, esse membro deverá ser definido como 0. Para formatos de WAVE_FORMAT_PCM (e apenas formatos WAVE_FORMAT_PCM), esse membro é ignorado. Quando essa estrutura é incluída em uma estrutura WAVEFORMATEXTENSIBLE , esse valor deve ser pelo menos 22.

Comentários

Um exemplo de um formato que usa informações extras é o formato MS-ADPCM (Adaptive Delta Pulse Code Modulation). O wFormatTag para MS-ADPCM é WAVE_FORMAT_ADPCM. O membro cbSize normalmente será definido como 32. As informações extras armazenadas para WAVE_FORMAT_ADPCM são pares coeficientes necessários para codificar e decodificar os dados de áudio de forma de onda.

Requisitos

   
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Cabeçalho mmeapi.h (inclua Mmreg.h)

Confira também

Áudio de forma de onda

Estruturas de forma de onda