Skip to main content

Topic: [dev.] Does -8 use rice coding 3? That’s not compliant, so what to do? (Read 6327 times) previous topic - next topic

0 Members and 1 Guest are viewing this topic.
  • filoe
  • [*]
[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.

  • tuffy
  • [*][*][*]
[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.

  • filoe
  • [*]
[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.