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) |