Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: [dev.] Does -8 use rice coding 3? That’s not compliant, so what to do? (Read 7268 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

[dev.] Does -8 use rice coding 3? That’s not compliant, so what to do?

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
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?

[dev.] Does -8 use rice coding 3? That’s not compliant, so what to do?

Reply #1
My guess is that you have a bug elsewhere in your decoder that throws off your bit position.

[dev.] Does -8 use rice coding 3? That’s not compliant, so what to do?

Reply #2
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.

[dev.] Does -8 use rice coding 3? That’s not compliant, so what to do?

Reply #3
ok thanks i will check that. But I its nice that I was right that 11 is impossible.