Windows Media Audio Pro: Difference between revisions
Jump to navigation
Jump to search
(Minor fixes) |
(Added one more extradata dump) |
||
Line 12: | Line 12: | ||
byte 7-14 Not used | byte 7-14 Not used | ||
byte 15-16 Decoding flags, bitfield used for calculating samples per frame amongst others (int16_t) | byte 15-16 Decoding flags, bitfield used for calculating samples per frame amongst others (int16_t) | ||
byte 17-18 | byte 17-18 Probably some flags for low bitrate files. | ||
Example extradata dump of a 5.1 file: | Example extradata dump of a 5.1 file: | ||
Line 21: | Line 21: | ||
[[18] [0]] [[3] [0] [0] [0]] [0] [0] [0] [0] [0] [0] [0] [0] [[e0] [0]] [0] [0] | [[18] [0]] [[3] [0] [0] [0]] [0] [0] [0] [0] [0] [0] [0] [0] [[e0] [0]] [0] [0] | ||
Example extradata dump of a low bitrate stereo file: | |||
[[10] [0]] [[3] [0] [0] [0]] [0] [0] [0] [0] [0] [0] [0] [0] [[e0] [0]] [[42] [c0]] | |||
== Channel configuration == | == Channel configuration == |
Revision as of 14:55, 30 December 2007
- Microsoft Audio ID: 0x0162
- Company: Microsoft
- Samples: http://samples.mplayerhq.hu/A-codecs/WMA9/
- Wikipedia info: http://en.wikipedia.org/wiki/Windows_Media_Audio#Windows_Media_Audio_Professional
The next generation of Windows Media audio codecs.
Extra data layout
This is a rough guess of the extra data from the asf container (little endian order).
byte 1-2 Bits per sample (wBitsPerSample) (http://msdn2.microsoft.com/en-us/library/ms791274.aspx) byte 3-6 Channel mask (dwChannelMask) (http://msdn2.microsoft.com/en-us/library/ms790436.aspx) byte 7-14 Not used byte 15-16 Decoding flags, bitfield used for calculating samples per frame amongst others (int16_t) byte 17-18 Probably some flags for low bitrate files.
Example extradata dump of a 5.1 file:
[[18] [0]] [[3f] [0] [0] [0]] [0] [0] [0] [0] [0] [0] [0] [0] [[e0] [0]] [0] [0]
Example extradata dump of a stereo file:
[[18] [0]] [[3] [0] [0] [0]] [0] [0] [0] [0] [0] [0] [0] [0] [[e0] [0]] [0] [0]
Example extradata dump of a low bitrate stereo file:
[[10] [0]] [[3] [0] [0] [0]] [0] [0] [0] [0] [0] [0] [0] [0] [[e0] [0]] [[42] [c0]]
Channel configuration
Wma pro uses the dwChannelMask for channel configuration.
SPEAKER_FRONT_LEFT 0x00001 SPEAKER_FRONT_RIGHT 0x00002 SPEAKER_FRONT_CENTER 0x00004 SPEAKER_LOW_FREQUENCY 0x00008 SPEAKER_BACK_LEFT 0x00010 SPEAKER_BACK_RIGHT 0x00020 SPEAKER_FRONT_LEFT_OF_CENTER 0x00040 SPEAKER_FRONT_RIGHT_OF_CENTER 0x00080 SPEAKER_BACK_CENTER 0x00100 SPEAKER_SIDE_LEFT 0x00200 SPEAKER_SIDE_RIGHT 0x00400 SPEAKER_TOP_CENTER 0x00800 SPEAKER_TOP_FRONT_LEFT 0x01000 SPEAKER_TOP_FRONT_CENTER 0x02000 SPEAKER_TOP_FRONT_RIGHT 0x04000 SPEAKER_TOP_BACK_LEFT 0x08000 SPEAKER_TOP_BACK_CENTER 0x10000 SPEAKER_TOP_BACK_RIGHT 0x20000
And the following configurations are valid (incorrect, will fix later):
channelmasks[8] = { NULL, SPEAKER_FRONT_LEFT, SPEAKER_FRONT_LEFT|SPEAKER_FRONT_RIGHT, SPEAKER_FRONT_LEFT|SPEAKER_FRONT_RIGHT|SPEAKER_FRONT_CENTER, SPEAKER_FRONT_LEFT|SPEAKER_FRONT_RIGHT|SPEAKER_FRONT_CENTER|SPEAKER_LOW_FREQUENCY, SPEAKER_FRONT_LEFT|SPEAKER_FRONT_RIGHT|SPEAKER_FRONT_CENTER|SPEAKER_LOW_FREQUENCY|SPEAKER_BACK_LEFT, SPEAKER_FRONT_LEFT|SPEAKER_FRONT_RIGHT|SPEAKER_FRONT_CENTER|SPEAKER_LOW_FREQUENCY|SPEAKER_BACK_LEFT|SPEAKER_BACK_RIGHT, SPEAKER_FRONT_LEFT|SPEAKER_FRONT_RIGHT|SPEAKER_FRONT_CENTER|SPEAKER_LOW_FREQUENCY|SPEAKER_BACK_LEFT|SPEAKER_BACK_RIGHT|SPEAKER_FRONT_LEFT_OF_CENTER, }
To get the active channel configuration use the channels parameter from the container and do a look up in this table.
channelmask = channelmasks[container channels]
Note that this makes the extradata channel mask redundant.