Of course you’ve heard about AVC, the famous audio codec from On2 (and not the codec used as a base for VP7 and VP8). Out of curiosity I tried to look at it and found out that it was as creative as video codecs.
So here’s how it looks:
- It is 1024-point MDCT based codec.
- It codes samples either in one window or in eight 128-sample windows. There are four modes because of that — long window, short windows and two transitional modes.
- Windows are organised into bands, 49 bands for the long window, 12 bands for each short window (band widths are the same for all sampling frequencies though).
- Frame data consists of: windowing mode, grouping information for short windows, some band flags, run-coded information about used codebooks, scales, coefficients.
- Scales are stored this way: first scale is explicitly coded 7-bit value, other scales are coded as differences and restored as
prev_scale + scale_diff - 60
. - Codebook 0 means no coefficients codec, codebooks 1-8 code quartets of coefficients, codebooks 9-15 code pairs of coefficients, additionally codebook 15 allows escape values to be coded.
- Unscaling is performed as
*dst++ = val * sqrt(val) * scale
.
Do not blame me if that reminds you of some other codec. Bitstream format is different after all. And the second letter of the codec name too.