Well, it looks as if i will be able to release TAK 2.0 this year... Therefore it's very unlikely that there will be an 1.1.3 release unless a bug fix for 1.1.2 is needed.
There are several good reasons for me to open a TAK 2.0 development thread now:
- Most of the new or improved algorithms have been implemented.
- Therefore i can now provide some performance data which will not differ very much from the final release.
- At some point i may need help from interested users to tune the new algorithms.
- It's easier for me to ask for help or opinions if there is already an appropriate thread.
- With this thread started and my goal stated, i have to stop digging even deeper for further improvements...
What to expect from V2.0:
It will introduce a new codec, but no new features from my todo list. The new codec will be no revolution, but an evolution. When i arrived at hydrogen and published first evaluation versions of YALAC, i was focussing more on maximum compression than on maximum speed. But it didn't take long to get aware of what users liked most of YALAC/TAK: It should be as fast as the fastest existing codecs but provide significantly higher compression. Despite of this clear mission statement, it took quite long for me to fully follow this order. Probably the reduction of the maximum predictor count from 256 to 160 in TAK 1.1.0 marks the last step of this process.
The goal of the TAK 2.0 development can be defined as follows:
Get the most bang for the buck. More specifically:
- Try to make it faster.
- Try to make it stronger (compression wise) but without sacrificing (decoding-) speed.
With these constraints present, i haven't managed to perform something revolutionary. But please don't forget, that many users already regarded the efficiency of the TAK 1.x line as revolutionary...
Ok, now for some data. First the results of my primary sample set. It consists of 46 files taken from rarewares.org, combined in one file. This set has proven (in my evaluations) to stress lossless codecs in many different ways and it's my primary choice if i want a quite representative result covering different genres of music. Surely, i could think of an even more representative set, but this one is nice, because it's publically available.
Here we go with a comparison of V1.1.2 and 2.0:
Test system: AMD Sempron 2,2 GHz
CODE
Preset Compression Enco-Speed Deco-Speed
1.1.2 2.0 Win 1.1.2 2.0 Win 1.1.2 2.0 Win
-p0 58.83 58.78 0.05 264.10 278.26 5.36% 283.52 293.90 3.66%
-p0e 58.67 58.34 0.33 200.29 146.38 -26.92% 284.84 293.52 3.05%
-p0m 58.53 58.27 0.26 88.43 85.90 -2.86% 285.66 293.83 2.86%
-p1 57.98 57.90 0.08 193.18 199.29 3.16% 275.80 285.30 3.44%
-p1e 57.86 57.59 0.27 123.55 114.51 -7.32% 276.19 285.75 3.46%
-p1m 57.73 57.46 0.27 64.98 63.13 -2.85% 276.48 286.04 3.46%
-p2 57.07 56.95 0.12 131.39 133.28 1.44% 250.36 259.74 3.75%
-p2e 56.89 56.80 0.09 81.92 85.53 4.41% 250.04 259.36 3.73%
-p2m 56.78 56.68 0.10 44.80 43.25 -3.46% 249.90 261.00 4.44%
-p3 56.52 56.43 0.09 55.97 61.21 9.36% 190.88 220.69 15.62%
-p3e 56.44 56.33 0.11 43.16 41.62 -3.57% 188.53 219.72 16.54%
-p3m 56.37 56.25 0.12 25.44 23.66 -7.00% 187.45 219.03 16.85%
-p4 56.16 56.10 0.06 32.07 32.94 2.71% 166.89 176.79 5.93%
-p4e 56.10 56.01 0.09 18.57 26.34 41.84% 166.27 176.15 5.94%
-p4m 56.07 55.95 0.12 17.81 13.81 -22.46% 166.47 177.37 6.55%
1.1.2 2.0 Win 1.1.2 2.0 Win 1.1.2 2.0 Win
-p0 58.83 58.78 0.05 264.10 278.26 5.36% 283.52 293.90 3.66%
-p0e 58.67 58.34 0.33 200.29 146.38 -26.92% 284.84 293.52 3.05%
-p0m 58.53 58.27 0.26 88.43 85.90 -2.86% 285.66 293.83 2.86%
-p1 57.98 57.90 0.08 193.18 199.29 3.16% 275.80 285.30 3.44%
-p1e 57.86 57.59 0.27 123.55 114.51 -7.32% 276.19 285.75 3.46%
-p1m 57.73 57.46 0.27 64.98 63.13 -2.85% 276.48 286.04 3.46%
-p2 57.07 56.95 0.12 131.39 133.28 1.44% 250.36 259.74 3.75%
-p2e 56.89 56.80 0.09 81.92 85.53 4.41% 250.04 259.36 3.73%
-p2m 56.78 56.68 0.10 44.80 43.25 -3.46% 249.90 261.00 4.44%
-p3 56.52 56.43 0.09 55.97 61.21 9.36% 190.88 220.69 15.62%
-p3e 56.44 56.33 0.11 43.16 41.62 -3.57% 188.53 219.72 16.54%
-p3m 56.37 56.25 0.12 25.44 23.66 -7.00% 187.45 219.03 16.85%
-p4 56.16 56.10 0.06 32.07 32.94 2.71% 166.89 176.79 5.93%
-p4e 56.10 56.01 0.09 18.57 26.34 41.84% 166.27 176.15 5.94%
-p4m 56.07 55.95 0.12 17.81 13.81 -22.46% 166.47 177.37 6.55%
Compression is relative to the original file size, Enco- and Deco-Speed expressed as multiple of real time.
Some remarks:
- Faster decoding for any preset, especially for -p3x.
- Faster encoding for any basic preset (without additional evaluation level).
- Some compression improvements for any preset.
- -p4m is now compressing a bit stronger than any TAK version before, and this despite the reduction of the maximum predictor count from 256 to 160 in V1.1.0.
- Nice improvement of 0.12 percent for the default preset.
- Highest improvements for p0e/p0m,p1e/p1m, which -while only using 4 respectively 12 predictors- will easily (on average) outperform FLAC -8 with 12 predictors.
Now only the basic presets:
AMD Sempron 2.2 GHz
CODE
Preset Compression Enco-Speed Deco-Speed
1.1.2 2.0 Win 1.1.2 2.0 Win 1.1.2 2.0 Win
-p0 58.83 58.78 0.05 264.10 278.26 5.36% 283.52 293.90 3.66%
-p1 57.98 57.90 0.08 193.18 199.29 3.16% 275.80 285.30 3.44%
-p2 57.07 56.95 0.12 131.39 133.28 1.44% 250.36 259.74 3.75%
-p3 56.52 56.43 0.09 55.97 61.21 9.36% 190.88 220.69 15.62%
-p4 56.16 56.10 0.06 32.07 32.94 2.71% 166.89 176.79 5.93%
-p4m 56.07 55.95 0.12 17.81 13.81 -22.46% 166.47 177.37 6.55%
1.1.2 2.0 Win 1.1.2 2.0 Win 1.1.2 2.0 Win
-p0 58.83 58.78 0.05 264.10 278.26 5.36% 283.52 293.90 3.66%
-p1 57.98 57.90 0.08 193.18 199.29 3.16% 275.80 285.30 3.44%
-p2 57.07 56.95 0.12 131.39 133.28 1.44% 250.36 259.74 3.75%
-p3 56.52 56.43 0.09 55.97 61.21 9.36% 190.88 220.69 15.62%
-p4 56.16 56.10 0.06 32.07 32.94 2.71% 166.89 176.79 5.93%
-p4m 56.07 55.95 0.12 17.81 13.81 -22.46% 166.47 177.37 6.55%
Some speed differences on a Intel Pentium Dual Core 2 GHz:
CODE
Preset Compression Enco-Speed Deco-Speed
1.1.2 2.0 Win 1.1.2 2.0 Win 1.1.2 2.0 Win
-p0 58.83 58.78 0.05 261.83 271.77 3.80% 298.67 314.33 5.24%
-p1 57.98 57.90 0.08 201.75 205.87 2.04% 291.72 306.68 5.13%
-p2 57.07 56.95 0.12 146.14 144.41 -1.18% 262.58 272.50 3.78%
-p3 56.52 56.43 0.09 64.64 68.20 5.51% 214.36 240.91 12.39%
-p4 56.16 56.10 0.06 36.90 36.37 -1.44% 193.97 206.40 6.41%
-p4m 56.07 55.95 0.12 21.07 15.76 -25.20%
Compression advantage for other bit depths than 16:
CODE
24 Bit 8 Bit
44-48 KHz 96 KHz 192 KHz 8-44 KHz
-p0 0.02 0.05 0.31 1.24
-p1 0.10 0.16 0.41 1.32
-p2 0.17 0.30 2.07 1.41
-p3 0.03 0.01 1.03 1.48
-p4 -0.02 -0.08 1.03 1.00
-p4m 0.01 -0.03 1.12 0.99
44-48 KHz 96 KHz 192 KHz 8-44 KHz
-p0 0.02 0.05 0.31 1.24
-p1 0.10 0.16 0.41 1.32
-p2 0.17 0.30 2.07 1.41
-p3 0.03 0.01 1.03 1.48
-p4 -0.02 -0.08 1.03 1.00
-p4m 0.01 -0.03 1.12 0.99
Some remarks:
- Currently there is some regression for 96 KHz. The new algorithms need some fine-tuning.
- In my evaluations only Optimfrog can beat TAK's compression of 192 KHz sample data.
Last but not least some results for LossyWav:
CODE
Quality Preset Compression
1.1.2 2.0 Win
-q00 -p2m 19.37 19.05 0.32
-p4m 19.43 19.04 0.39
-q25 -p2m 26.38 26.12 0.26
-p4m 26.40 26.11 0.29
-q50 -p2m 32.34 32.10 0.24
-p4m 32.36 32.08 0.28
1.1.2 2.0 Win
-q00 -p2m 19.37 19.05 0.32
-p4m 19.43 19.04 0.39
-q25 -p2m 26.38 26.12 0.26
-p4m 26.40 26.11 0.29
-q50 -p2m 32.34 32.10 0.24
-p4m 32.36 32.08 0.28
And no, that's not the results of the dedicated LossyWav codec i intend to develop later.
Well, i hope you are not disappointed!
Thomas
