Compartir a través de


Estructura WAVEFORMATEX (mmeapi.h)

La estructura WAVEFORMATEX define el formato de datos de audio Waveform. En esta estructura solo se incluye información de formato común a todos los formatos de datos de audio de forma de onda. Para los formatos que requieren información adicional, esta estructura se incluye como el primer miembro de otra estructura, junto con la información adicional.

Los formatos que admiten más de dos canales o tamaños de muestra de más de 16 bits se pueden describir en una estructura WAVEFORMATEXTENSIBLE , que incluye la estructura WAVEFORMAT .

Sintaxis

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

Members

wFormatTag

Tipo de formato waveform-audio. Las etiquetas de formato se registran con Microsoft Corporation para muchos algoritmos de compresión. Puede encontrar una lista completa de etiquetas de formato en el archivo de encabezado Mmreg.h. Para los datos pcM de uno o dos canales, este valor debe ser WAVE_FORMAT_PCM. Cuando esta estructura se incluye en una estructura WAVEFORMATEXTENSIBLE , este valor debe ser WAVE_FORMAT_EXTENSIBLE.

nChannels

Número de canales en los datos de forma de onda y audio. Los datos monaural usan un canal y los datos estéreo usan dos canales.

nSamplesPerSec

Frecuencia de muestreo, en muestras por segundo (hercios). Si wFormatTag es WAVE_FORMAT_PCM, los valores comunes de nSamplesPerSec son 8,0 kHz, 11,025 kHz, 22,05 kHz y 44,1 kHz. En el caso de los formatos que no son PCM, este miembro debe calcularse según la especificación del fabricante de la etiqueta de formato.

nAvgBytesPerSec

Velocidad media de transferencia de datos necesaria, en bytes por segundo, para la etiqueta de formato. Si wFormatTag es WAVE_FORMAT_PCM, nAvgBytesPerSec debe ser igual al producto de nSamplesPerSec y nBlockAlign. En el caso de los formatos que no son PCM, este miembro debe calcularse según la especificación del fabricante de la etiqueta de formato.

nBlockAlign

Alineación de bloques, en bytes. La alineación del bloque es la unidad atómica mínima de datos para el tipo de formato wFormatTag . Si wFormatTag es WAVE_FORMAT_PCM o WAVE_FORMAT_EXTENSIBLE, nBlockAlign debe ser igual al producto de nChannels y wBitsPerSample dividido por 8 (bits por byte). En el caso de los formatos que no son PCM, este miembro debe calcularse según la especificación del fabricante de la etiqueta de formato.

El software debe procesar varios bytes de datos nBlockAlign a la vez. Los datos escritos y leídos desde un dispositivo siempre deben comenzar al principio de un bloque. Por ejemplo, no es válido iniciar la reproducción de datos de PCM en medio de una muestra (es decir, en un límite no alineado con bloques).

wBitsPerSample

Bits por ejemplo para el tipo de formato wFormatTag . Si wFormatTag es WAVE_FORMAT_PCM, wBitsPerSample debe ser igual a 8 o 16. Para los formatos que no son PCM, este miembro debe establecerse según la especificación del fabricante de la etiqueta de formato. Si wFormatTag es WAVE_FORMAT_EXTENSIBLE, este valor puede ser cualquier entero múltiplo de 8 y representa el tamaño del contenedor, no necesariamente el tamaño de la muestra; por ejemplo, un tamaño de muestra de 20 bits está en un contenedor de 24 bits. Algunos esquemas de compresión no pueden definir un valor para wBitsPerSample, por lo que este miembro puede ser 0.

cbSize

Tamaño, en bytes, de información de formato adicional anexada al final de la estructura WAVEFORMATEX . Los formatos que no son PCM pueden usar esta información para almacenar atributos adicionales para wFormatTag. Si el wFormatTag no requiere ninguna información adicional, este miembro debe establecerse en 0. En el caso de los formatos WAVE_FORMAT_PCM (y solo WAVE_FORMAT_PCM), este miembro se omite. Cuando esta estructura se incluye en una estructura WAVEFORMATEXTENSIBLE , este valor debe ser al menos 22.

Comentarios

Un ejemplo de un formato que usa información adicional es el formato modulación de código de pulso delta adaptable de Microsoft (MS-ADPCM). WFormatTag para MS-ADPCM es WAVE_FORMAT_ADPCM. Normalmente, el miembro cbSize se establecerá en 32. La información adicional almacenada para WAVE_FORMAT_ADPCM es los pares de coeficiente necesarios para codificar y descodificar los datos de audio de forma de onda.

Requisitos

   
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Encabezado mmeapi.h (incluya Mmreg.h)

Consulte también

Audio de forma de onda

Estructuras de forma de onda