Deceisions for V0.09This time i need some advice, because i am not sure what would be the best for the next version.
V0.08 has brought the prefilter:
- Activated on presets HIGH and EXTRA.
- Gives on average about 0.20 to 0.25 percent better compression, up to 4 percent on specific files.
- Slows down encoding a bit and decoding on average by 10 to 15 percent, up to 35 percent on specific files.
Within my previous post i allready wrote, that the advantage of the PreFilter probably is beeing caused by at least two seperate effects on the signal.
The first effect produces the huge advantage (up to 4 percent) on some specific files.
The second effect is mostly responsible for the average advantage (0.20 to 0.25), that the PreFilter achieves on most file sets. It helps here, because it reduces the precision required for the accurate storage of the predictor coefficients, which need less space within the file stream when the PreFilter is applied.
To verify this, i implemented another usually more efficient way to store the predictor coefficients and tried it with the PreFilter turned off. And indeed i achieved about the same average compression advantage as with the PreFilter.
Details: Previous versions directly stored the predictor coefficients while the current implementation stores the parcor coefficients. Usually one would expect a bigger advantage for the parcor representation, but because of an initial transformation, that my codec performs on the signal, the storage requirement for the direct coefficients is only slightly bigger.
Advantages of the parcor representation over the PreFilter:
- While it doesn't encode faster than the PreFilter on the higher presets, it is much faster with lower predictor orders and therefore can be used for presets FAST and NORMAL and increase their compression.
- HIGH performs very well without the Optimize Quantization option and therefore is about 20 percent faster,
General disadvantages:
- The decoding speed of NORMAL, HIGH and EXTRA is beeing reduced by about the same amount as with the PreFilter.
Time for some data of my two main test file sets:
CODE
rw Fast Normal High Extra
Compression 0,12 0,20 0,12 0,17 %
Encode -6,59 -1,96 20,77 -27,65 %
Decode -0,60 -6,68 -13,70 -10,25 %
songs Fast Normal High Extra
Compression 0,15 0,24 0,15 0,22 %
Encode -3,00 -1,91 25,54 -29,06 %
Decode -2,54 -7,35 -12,63 -11,44 %
The table compares the current implementation of V0.09 with V0.07 (which has no PreFilter). Compression is the improvement of the compression ratio, Encode and decode show the change in encoding and decoding speed. Decoding has been performed without file output.
Short summary for V0.08 with PreFilter (was to lazy to build another table): No difference (fields would contain 0.00) to V0.07 for presets FAST and NORMAL, HIGH would compress only 0.03 percent better than V0.09 but with 30 percent less encoding speed. Decoding speed on HIGH identical to V0.09.
Preset HIGH of V0.09 uses neither the PreFilter nor the Optimize Quantization option. Both options have been moved to EXTRA.
What i like:
- The compression advantage for FAST and especially NORMAL.
- The 20 percent higher encoding speed for HIGH (30 percent better compared to V0.08).
Current preference for V0.09:Use the configuration described above: New way to store the coefficients, PreFilter moved to preset EXTRA. I don't want to remove it, because it has such a huge effect on some (for instance Joseph Pohm's files).
Question:The main advantage of Yalac is the high decoding performance. But V0.08 and V0.09 both reduce the decoding speed. Is the compression advantage worth the speed penality? Contrary to the PreFilter, there will be no option to disable the new way to store the prdictor coefficients.
Things to remember:
- The decoding performance has been measured without file output. With output turned on the speed difference would be smaller on most systems.
- The reduction of the decoding performance is directly related to the predictor order the encoder has choosen. If you want better decoding performance, you can always reduce the maximum predictor order the encoder is allowed to use.