Share via


Note

Please see Azure Cognitive Services for Speech documentation for the latest supported speech solutions.

Microsoft Speech Platform

WAVEFORMATEX

WAVEFORMATEX defines the format of waveform-audio data. Only format information common to all waveform-audio data formats is included in this structure. For formats requiring additional information, this structure is included as the first member in another structure, along with the additional information.

<pre IsFakePre="true" xmlns="http://www.w3.org/1999/xhtml"> <strong>typedef struct WAVEFORMATEX</strong> <strong>{</strong> <strong> WORD</strong> <em>wFormatTag</em>; <strong> WORD</strong> <em>nChannels</em>; <strong> DWORD</strong> <em>nSamplesPerSec</em>; <strong> DWORD</strong> <em>nAvgBytesPerSec</em>; <strong> WORD</strong> <em>nBlockAlign</em>; <strong> WORD</strong> <em>wBitsPerSample</em>; <strong> WORD</strong> <em>cbSize</em>; <strong>} WAVEFORMATEX;</strong></pre>

Members

  • wFormatTag
    Waveform-audio format type. Format tags are registered with Microsoft Corporation for many compression algorithms. A complete list of format tags is located in the Mmsystem.h header file.

  • nChannels
    Number of channels in the waveform-audio data. Monaural data uses one channel and stereo data uses two channels.

  • nSamplesPerSec
    Sample rate, in samples per second (hertz) at which each channel should be played or recorded. If wFormatTag is WAVE_FORMAT_PCM, common values for nSamplesPerSec are 8.0 kHz, 11.025 kHz, 22.05 kHz, and 44.1 kHz. For non-PCM formats, this member must be computed according to the manufacturer's specification of the format tag.

  • nAvgBytesPerSec
    Required average data-transfer rate, in bytes per second, for the format tag. If wFormatTag is WAVE_FORMAT_PCM, nAvgBytesPerSec should be equal to the product of nSamplesPerSec and nBlockAlign. For non-PCM formats, this member must be computed according to the manufacturer's specification of the format tag.

    Playback and record software can estimate buffer sizes using the nAvgBytesPerSec member.

  • nBlockAlign
    Block alignment, in bytes. The block alignment is the minimum atomic unit of data for the wFormatTag format type. If wFormatTag is WAVE_FORMAT_PCM, nBlockAlign should be equal to the product of nChannels and wBitsPerSample divided by 8 (bits per byte). For non-PCM formats, this member must be computed according to the manufacturer's specification of the format tag.

    Playback and record software must process a multiple of nBlockAlign bytes of data at a time. Data written and read from a device must always start at the beginning of a block. For example, it is illegal to start playback of PCM data in the middle of a sample (that is, on a non-block-aligned boundary).

  • wBitsPerSample
    Bits per sample for the wFormatTag format type. If wFormatTag is WAVE_FORMAT_PCM, wBitsPerSample should be equal to 8 or 16. For non-PCM formats, this member must be set according to the manufacturer's specification of the format tag. Note that some compression schemes cannot define a value for wBitsPerSample, so this member can be zero.

  • cbSize
    Size, in bytes, of extra format information appended to the end of the WAVEFORMATEX structure. This information can be used by non-PCM formats to store extra attributes for the wFormatTag. If no extra information is required by the wFormatTag, this member must be set to zero. For WAVE_FORMAT_PCM formats only, this member is ignored.