MPEG1WAVEFORMAT structure (mmreg.h)
[The feature associated with this page, DirectShow, is a legacy feature. It has been superseded by MediaPlayer, IMFMediaEngine, and Audio/Video Capture in Media Foundation. Those features have been optimized for Windows 10 and Windows 11. Microsoft strongly recommends that new code use MediaPlayer, IMFMediaEngine and Audio/Video Capture in Media Foundation instead of DirectShow, when possible. Microsoft suggests that existing code that uses the legacy APIs be rewritten to use the new APIs if possible.]
The MPEG1WAVEFORMAT
structure describes the format of MPEG-1 audio data.
Syntax
typedef struct mpeg1waveformat_tag {
WAVEFORMATEX wfx;
WORD fwHeadLayer;
DWORD dwHeadBitrate;
WORD fwHeadMode;
WORD fwHeadModeExt;
WORD wHeadEmphasis;
WORD fwHeadFlags;
DWORD dwPTSLow;
DWORD dwPTSHigh;
} MPEG1WAVEFORMAT;
Members
wfx
WAVEFORMATEX structure that contains information about the audio format. See Remarks.
fwHeadLayer
Specifies the MPEG audio layer, as defined by the following constants:
Value | Meaning |
---|---|
|
Layer 1 |
|
Layer 2 |
|
Layer 3 |
Some MPEG streams may contain frames from more than one layer. If so, combine the flags with a bitwise OR.
dwHeadBitrate
Specifies the bitrate, in bits per second. This value gives the actual bitrate, not the MPEG frame header code. If the bitrate is variable, or is a non-standard bitrate, set this field to zero.
fwHeadMode
Specifies the stream mode, as defined by the following constants:
Value | Meaning |
---|---|
|
Stereo |
|
Joint stereo |
|
Dual channel |
|
Single channel |
Some MPEG streams may contain frames with different modes. If so, combine the flags with a bitwise OR.
fwHeadModeExt
Specifies the mode extension for joint-stereo encoding:
Value | MPEG Frame Header Code | Layers 1 and 2 | Layer 3 |
---|---|---|---|
0x01 | '00' | Intensity stereo in bands 4 to 31 | Intensity stereo off; Middle/Side (MS) stereo off |
0x02 | '01' | Intensity stereo in bands 8 to 31 | Intensity stereo on; MS stereo off |
0x04 | '10' | Intensity stereo in bands 12 to 31 | Intensity stereo off; MS stereo on |
0x08 | '11' | Intensity stereo in bands 16 to 31 | Intensity stereo off; MS stereo on |
These values may be combined with a bitwise OR. In general, encoders will dynamically switch between extension modes according to the characteristics of the signal. Therefore, for normal joint-stereo encoding, set this field to 0x0F (the bitwise OR of all the flags). However, you can use this field to limit the encoder to a set of allowable encoding types.
This field applies only when fwHeadMode includes ACM_MPEG_JOINTSTEREO. For other modes, set this field to zero.
wHeadEmphasis
Specifies the de-emphasis required by the decoder:
Value | MPEG Frame Header | Code De-emphasis Required |
---|---|---|
1 | '00' | None |
2 | '01' | 50/15 ms emphasis |
3 | '10' | Reserved |
4 | '11' | CCITT J.17 |
fwHeadFlags
Specifies a bitwise combination of zero or more of the following flags:
An encoder will use these flags to set the corresponding bits in the MPEG audio frame headers.
dwPTSLow
Specifies the least significant 32 bits of the presentation time stamp (PTS) of the first frame of the audio stream.
dwPTSHigh
Specifies the most significant bit of the PTS. The dwPTSLow and dwPTSHigh fields can be treated as a single 64-bit value.
Remarks
For MPEG-1 audio, the WAVEFORMATEX structure defined in the wfx member must have the following values.
WAVEFORMATEX Member | Description |
---|---|
wFormatTag | Must be WAVE_FORMAT_MPEG |
nChannels | 1 for mono, 2 for stereo |
nSamplesPerSec | Specifies the sampling frequency, if the sampling frequency is fixed. If it is variable, set this field to zero. |
nAvgBytesPerSec | Specifies the average data rate. If variable bitrate encoding is used under layer 3, the value might not be a legal MPEG-1 bit rate. |
nBlockAlign | For audio streams with a fixed audio frame length, this field specifies the length of the audio frame. If the frame length is variable, set this field to 1.If the sampling frequency is 32 kHz or 48 kHz and the bit rate is constant, the audio frame size is constant. In that case, calculate nBlockAlign as follows:
|
wBitsPerSample | Not used; set to zero. |
cbSize | Specifies the size of the format data after the WAVEFORMATEX structure, in bytes. For the standard MPEG1WAVEFORMAT structure, this value is 22 bytes. |
Requirements
Requirement | Value |
---|---|
Header | mmreg.h |