WAVEFORMATEX
The 
WAVEFORMATEX structure defines the format of waveform-audio data. Only format information
common to all waveform-audio data formats is included in this structure. For
formats that require additional information, this structure is included as the
first member in another structure, along with the additional information.
typedef struct {  
    WORD  wFormatTag; 
    WORD  nChannels; 
    DWORD nSamplesPerSec; 
    DWORD nAvgBytesPerSec; 
    WORD  nBlockAlign; 
    WORD  wBitsPerSample; 
    WORD  cbSize; 
} WAVEFORMATEX; 
 
Members
wFormatTag
Waveform-audio format type. Format tags are registered with Microsoft
Corporation for many compression algorithms. A complete list of format tags can be
found in the MMREG.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), that each channel should be played
or recorded. If 
wFormatTag is WAVE_FORMAT_PCM, then 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 by 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, then 
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. Note that for WAVE_FORMAT_PCM formats (and
only WAVE_FORMAT_PCM formats), this member is ignored.
 
Remarks
An example of a format that uses extra information is the Microsoft Adaptive
Delta Pulse Code Modulation (MS-ADPCM) format. The 
wFormatTag for MS-ADPCM is WAVE_FORMAT_ADPCM. The 
cbSize member will typically be set to 32. The extra information stored for
WAVE_FORMAT_ADPCM is coefficient pairs required for encoding and decoding the
waveform-audio data.
			
				- Software for developers
				
- 
				Delphi Components
 .Net Components
 Software for Android Developers
- More information resources
				
- 
				MegaDetailed.Net
 Unix Manual Pages
 Delphi Examples