Ergänzung zu oben, Auszug aus aktueller mmreg.h des
PSDK. MPEGLAYER3WAVEFORMAT ist mindestens seit 1999 definiert (wahrscheinlich aber noch eher).
Code:
//
// MPEG Layer3 WAVEFORMATEX structure
// for WAVE_FORMAT_MPEGLAYER3 (0x0055)
//
#define MPEGLAYER3_WFX_EXTRA_BYTES 12
// WAVE_FORMAT_MPEGLAYER3 format sructure
//
typedef struct mpeglayer3waveformat_tag {
WAVEFORMATEX wfx;
WORD wID;
DWORD fdwFlags;
WORD nBlockSize;
WORD nFramesPerBlock;
WORD nCodecDelay;
} MPEGLAYER3WAVEFORMAT;
typedef MPEGLAYER3WAVEFORMAT *PMPEGLAYER3WAVEFORMAT;
typedef MPEGLAYER3WAVEFORMAT NEAR *NPMPEGLAYER3WAVEFORMAT;
typedef MPEGLAYER3WAVEFORMAT FAR *LPMPEGLAYER3WAVEFORMAT;
//==========================================================================;
#define MPEGLAYER3_ID_UNKNOWN 0
#define MPEGLAYER3_ID_MPEG 1
#define MPEGLAYER3_ID_CONSTANTFRAMESIZE 2
#define MPEGLAYER3_FLAG_PADDING_ISO 0x00000000
#define MPEGLAYER3_FLAG_PADDING_ON 0x00000001
#define MPEGLAYER3_FLAG_PADDING_OFF 0x00000002
Damit sieht das Hex-Beispiel von oben so aus:
Code:
00000000 5249 4646 4AE8 0F00 RIFFJ... <- "RIFF" + Dateigröße
00000008 5741 5645 WAVE
0000000C 666D 7420 1E00 0000 fmt .... <- "fmt "-Chunk + Größe
00000014 ---- WAVEFORMATEX ----
5500 $55 : wFormatTag : WAVE_FORMAT_MPEGLAYER3
0200 $02 : nChannels
2256 0000 22050 : nSamplesPerSec : Abspielfrequenz
581B 0000 7000 : nAvgBytesPerSec : Bitrate (56 kBit/s)
0100 1 : nBlockAlign
0000 0 : wBitsPerSample
0C00 12 : cbSize : MPEGLAYER3_WFX_EXTRA_BYTES
00000032 ---- MPEGLAYER3WAVEFORMAT ----
0100 1 : wID : MPEGLAYER3_ID_MPEG
0200 0000 $00000002 : fdwFlags : MPEGLAYER3_FLAG_PADDING_OFF
B600 182 : nBlockSize : Std. Framegröße für Frequenz/Bitrate/Layer/Version
0100 1 : nFramesPerBlock
7105 1393 : nCodecDelay : ? wird vom Codec eingesetzt
00000032 6661 6374 0400 0000 fact.... <- "fact"-Chunk + Größe
0000003A 31B8 6400 6600753 : Anzahl Samples (gesamt / je Kanal ??)
0000003E 6461 7461 0CE8 0F00 data.... <- "data"-Chunk + Größe