HydrogenAudio

Lossless Audio Compression => FLAC => Topic started by: filoe on 2012-09-10 17:32:46

Title: [dev.] Does -8 use rice coding 3? That’s not compliant, so what to do?
Post by: filoe on 2012-09-10 17:32:46
I am writing a flac decoder and for creating test files I am using AudaCity.
If I choose compression level 8 I sometimes get RICE_CODING_METHOD of 3.
But if I am correct Flac only supports 0 (RICE) and 2 (RICE2).
And if you read here: http://flac.sourceforge.net/format.html#residual (http://flac.sourceforge.net/format.html#residual)
You can see that the value of 11b is reserved. And 3 equals 11b.
But Winamp is able to play the file and I would say winamp uses libflac.
So what to do now?
Title: [dev.] Does -8 use rice coding 3? That’s not compliant, so what to do?
Post by: Justin Ruggles on 2012-09-10 17:52:24
My guess is that you have a bug elsewhere in your decoder that throws off your bit position.
Title: [dev.] Does -8 use rice coding 3? That’s not compliant, so what to do?
Post by: tuffy on 2012-09-10 17:53:24
Unless your file has more than 16bps, the reference encoder should always use a coding method of 0 (RESIDUAL_CODING_METHOD_PARTITIONED_RICE) for all the partitions.  Anything else is a good indicator that you're reading too many residuals, not enough, or ones with the wrong value.  The reference decoder's analysis option can help you here ("flac -a --residual-text <file.flac>") by allowing you to compare the values the reference decoder sees with what your own decoder sees.
Title: [dev.] Does -8 use rice coding 3? That’s not compliant, so what to do?
Post by: filoe on 2012-09-10 21:37:51
ok thanks i will check that. But I its nice that I was right that 11 is impossible.