Intel Music Coder: Difference between revisions
No edit summary |
No edit summary |
||
(6 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
* Format: 0x401 | * Format: 0x401 | ||
* Company: [[Intel]] | * Company: [[Intel]] | ||
* Samples: | * Samples: http://samples.mplayerhq.hu/A-codecs/IMC/ | ||
Perceptual audio codec developed by | Perceptual audio codec developed by Intel. It features a 256-point MDCT transform and constant bitrate (all known samples are mono and have 512-bit frames). These coefficients are grouped into 32 bands, the first bands hold 3-4 coefficients and the last bands contain 12 coefficients per band. Bit allocation for each coefficient is done adaptively for each frame. The window for MDCT overlap is a simple sine window normalized with sqrt(2). | ||
== Frame Structure == | == Frame Structure == | ||
All bits are packed into 16-bit little-endian words, MSB first. | All bits are packed into 16-bit little-endian words, MSB first. | ||
9 bits - should be | 9 bits - should always be 0x21 | ||
3 bits - frame type | 3 bits - frame type | ||
1 bit - flag (used in bit allocation) | 1 bit - flag (used in bit allocation) | ||
Line 17: | Line 17: | ||
=== Band Coefficients === | === Band Coefficients === | ||
Each band should have one coefficient. If frame type has bit 0x4 set then first band coefficient should be read explicitly otherwise it should be read using one of 16 Huffman trees depending on frame type and band number (frame type specifies one of 4 sets which contain four static Huffman trees and array pointing to one of those trees for each band number). If returned Huffman code is 17 then read additional | Each band should have one coefficient. If the frame type has bit 0x4 set then the first band coefficient should be read explicitly otherwise it should be read using one of 16 Huffman trees depending on frame type and band number (frame type specifies one of 4 sets which contain four static Huffman trees and an array pointing to one of those trees for each band number). If the returned Huffman code is 17 then read 4 additional bits and add their value to the result. | ||
=== Band Flags === | === Band Flags === | ||
Each band except bands with coefficient == 16 should have own flag. | Each band except bands with coefficient == 16 should have its own flag. | ||
=== Coefficient Flags === | === Coefficient Flags === | ||
Line 33: | Line 33: | ||
Coefficients are stored in 1-6 bits with length calculated depending on bits left and bits per band. | Coefficients are stored in 1-6 bits with length calculated depending on bits left and bits per band. | ||
[[Category: | [[Category:Audio Codecs]] | ||
[[Category: MDCT Audio Codecs]] |
Latest revision as of 09:51, 27 December 2006
- Format: 0x401
- Company: Intel
- Samples: http://samples.mplayerhq.hu/A-codecs/IMC/
Perceptual audio codec developed by Intel. It features a 256-point MDCT transform and constant bitrate (all known samples are mono and have 512-bit frames). These coefficients are grouped into 32 bands, the first bands hold 3-4 coefficients and the last bands contain 12 coefficients per band. Bit allocation for each coefficient is done adaptively for each frame. The window for MDCT overlap is a simple sine window normalized with sqrt(2).
Frame Structure
All bits are packed into 16-bit little-endian words, MSB first.
9 bits - should always be 0x21 3 bits - frame type 1 bit - flag (used in bit allocation) <band coefficients> <band flags> <coefficient flags> <coefficients>
Band Coefficients
Each band should have one coefficient. If the frame type has bit 0x4 set then the first band coefficient should be read explicitly otherwise it should be read using one of 16 Huffman trees depending on frame type and band number (frame type specifies one of 4 sets which contain four static Huffman trees and an array pointing to one of those trees for each band number). If the returned Huffman code is 17 then read 4 additional bits and add their value to the result.
Band Flags
Each band except bands with coefficient == 16 should have its own flag.
Coefficient Flags
Coefficient flags are stored either as bits or may be coded as pairs:
0 -> 1, 1 11 -> 0, 1 100 -> 1, 0 101 -> 0, 0
Coefficients
Coefficients are stored in 1-6 bits with length calculated depending on bits left and bits per band.