In the previous post I gave general overview of codec changes, now I’m going to look more deeply at the filter changes with time.
- 3950 — current mode with up to three layers of IIR filters
- 3930 — simpler filters: no third layer (there was no insane compression level back then) and the difference between predicted and actual value was not used.
For the older versions there are differences in the implementations of the filters for the different compression modes.
Fast compression:
- 3200 — order 2 adaptive prediction (i.e. previously decoded and adjustable prediction value are used in prediction)
- 0000 — almost the same but with different rules for adjustment factor updating
Normal compression:
- 3800 — two layers of filters: order 4 adaptive prediction and order 2 afterwards
- 3200 — the same structure, different rules for updating
- 0000 — three layers with orders 3, 2 and 1 and different updating rules
High compression:
- 3700 — first it tries first order adaptive prediction with the delay of 2-16 (i.e. the next to previous element is used for prediction) and normal mode decompression afterwards (different decoding for 3800 of course)
- 3600 — the same but delays are 2-13
- 3200 — the same but delays are 2-7
- 0000 — orders 5 and 4 and different updating rules
Extra high compression:
- 3830 — an IIR filter resembling the one used in the newer Monkey’s Audio versions
- 3800 — some filter parameters were half as much as in 3830 and there was no delay 2-8 filtering
- 3600 — delay filtering plus high filtering (which is delay filtering plus normal filtering, which can be expressed as a layer of filtering over fast filtering)
- 0000 — essentially the same but with different prefiltering