Re: Small DSD/DFF compression test: WavPack vs xz
Reply #11 – 2019-02-24 20:52:42
The regular mode is useful if you're going to be decoding and reencoding a lot because it's much faster After the pure decoding speed obtained with foobar2000 dedicated tools, I made a real reencoding test to get the true impact of complexity on reencoding speed. For that purpose I used a 11xSACD boxset (Bruckner complete symphonies, 35 tracks, 9:54:19.160).Sources formats were : uncompressed DFF/DSF — DST encoding — WavPack default — WavPack high (and for curiosity, I also add FLAC 88,2 KHz and FLAC 352 KHz).Decoders were : • WavPack : foobar2000 native decoder and foo_input_sacd • DFF : foo_input_sacd and foo_input_DSDIFF • DST : foo_input_sacd only (kode54's foo_input_DSDIFF also supports DST format but it's highly unoptimized: I reached ~1.0x…1.1x speed and therefore aborted the process)Output format : Everything was converted to AAC at ~160 Kbps using qaac (iTunes AAC encoder) -v82 [qaac 2.67, CoreAudioToolbox 7.10.9.0, AAC-LC Encoder, TVBR q82, Quality 96] which resulted to 156 Kbps, 48000 Hz AAC files. It's 36 time smaller than the original and it still sounds gorgeous!total time: 9:54:19.160 (12 580 551 648 samples) DST to AAC: Total encoding time: 46:06.031, 12.88x realtime 4'39"/Hour of music DSF (foo_input_sacd) to AAC: Total encoding time: 12:56.516, 45.92x realtime 1'18"/H DFF (foo_input_dsdiff) to AAC: Total encoding time: 10:38.125, 55.88x realtime 1'04"/H WV -default (foo_input_sacd) to AAC: Total encoding time: 15:23.859, 38.59x realtime 1'33"/H WV -default (foobar2000 native) to AAC: Total encoding time: 16:53.360, 35.18x realtime 1'42"/H WV -high (foo_input_sacd) to AAC: Total encoding time: 25:36.625, 23.20x realtime 2'35"/H WV -high (foobar2000 native) to AAC: Total encoding time: 26:48.954, 22.16x realtime 2'42"/H FLAC 24/88 -8 to AAC: Total encoding time: 7:05.657, 83.77x realtime 0'43"/H FLAC 24/352 -8 to AAC: Total encoding time: 15:44.172, 37.76x realtime 1'35"/H DSF: 23.4 GB (25 161 255 266 bytes) 5645 Kbps 100% DST: 8.36 GB (8 984 891 932 bytes) 2016 Kbps 35.7% WV -high: 10.2 GB (11 011 315 269 bytes) 2470 Kbps 43.8% WV -default: 12.2 GB (13 179 996 136 bytes) 2957 Kbps 52.4% FLAC 24/88.2: 10.3 GB (11 063 193 787 bytes) 2482 Kbps 43.9% FLAC 24/352: 58.9 GB (63 246 205 254 bytes) 14189 Kbps 251.4% • On my computer, the difference between WavPack -default and WavPack -high is one minute of encoding time per hour of music. It's not dramatic but could be really boring for big playlist conversion. • During this test, foo_input_sacd was slightly faster than foobar's native component. Eight threads were used. I don't understand why the result doesn't match the foo_benchmark results I get earlier. • Kode54's component really makes a difference compared to foo_input_sacd: more than 20% on DFF uncompressed file. Reencoding time was 15 seconds less per hour of DSD64 music. • PCM sourced encoding with FLAC at 88,2 KHz is ~twice faster than WavPack -default for reencoding purpose. • PCM sourced encoding with FLAC at 352 KHz needs the same amount of CPU ressouces than WavPack -default for reencoding tasks. Why 352 KHz? Because WavPack 5 decodes internally DSD64 to PCM at 354 KHz if I'm not wrong. I wonder if WavPack's decoding and reencoding performances couldn't significantly increase if internal decoder could work at lower samplerate. • DST really hurts reencoding speed: it's twice slower than WavPack -high and up to three time slower than WavPack -default. • Uncompressed DFF is still faster on this test than WavPack (it wasn't necessary the case with foo_benchmark): up to 30 seconds per hour of reencoded music.
Wavpack Hybrid: one encoder, one encoding for all scenarios WavPack -c4.5hx6 (44100Hz & 48000Hz) ≈ 390 kbps + correction file WavPack -c4hx6 (96000Hz) ≈ 768 kbps + correction file WavPack -h (SACD & DSD) ≈ 2400 kbps at 2.8224 MHz