Intel Music Coder

From MultimediaWiki
Revision as of 22:07, 8 October 2006 by Kostya (talk | contribs) (Fill primary info about IMC)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
  • Format: 0x401
  • Company: Intel
  • Samples: [1]

Perceptual audio codec developed by [[Intel]. It features 256-point transform and constant bitrate (all known samples are mono and have 512-bit frames). These coefficients are grouped into 32 bands, first bands hold 3-4 coefficients and last bands contain 12 coefficients per band. Bit allocation for each coefficient is done adaptively for each frame.

Frame Structure

All bits are packed into 16-bit little-endian words, MSB first.

 9 bits - should be always 0x21
 3 bits - frame type
 1 bit  - flag (used in bit allocation)
 <band coefficients>
 <band flags>
 <coefficient flags>

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 4 bits and add their value to result.

Band Flags

Each band except bands with coefficient == 16 should have 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 are stored in 1-6 bits with length calculated depending on bits left and bits per band.