On Tue, Oct 21, 2003 at 06:25:31PM +0000, Dan Stowell wrote: > Date: Sun, 19 Oct 2003 00:59:22 +0200 > > On Sat, Oct 18, 2003 at 07:21:08PM +0000, Dan Stowell wrote: > > > I asked a few questions about the flac format a couple of weeks > ago. > > > One more (if you don't mind) about the Rice coding. The Rice > > > parameter "k" can't be zero (unless I'm mistaken), yet the FLAC spec > > > says the Rice parameter can range from 0 to 15. > > > > > > I guessed, and tried adding one before using the parameter (i.e. > > > assuming the range was really 1 to 16), and that didn't fix it. > > > > > > How should I interpret those four little bits? > > > > The spec is ok, Rice parameter can be 0 to 14, 15 is escape code. And > > Rice parameter 0 means that only the unary part is used. For example > > 000001000010001001011 is -3 2 -2 1 -1 0. > > Thanks again Miroslav. So if I understand your example correctly, I can > interpret a single number in this unary code using > > return ( (q&1)==1 ? -((q>>1)+1) : (q>>1) ); > > if 'q' is the number of zeroes found before bumping into a 1.
Yes, and you can use this for all Rice codes, not just for codes with k = 0. (A faster version would be (q >> 1) ^ -(q & 1)). In file src/libFLAC/bitbuffer.c from FLAC sources there is FLAC__bitbuffer_read_rice_signed function, it is short and readable. > Is this a standard component of Rice coding, or is it developed for > FLAC? I didn't read about it when I read up on Rice coding. I think it is a normal Rice code with parameter k = 0, and that is identical to the Golomb code with parameter m = 1. -- Miroslav Lichvar ------------------------------------------------------- This SF.net email is sponsored by OSDN developer relations Here's your chance to show off your extensive product knowledge We want to know what you know. Tell us and you have a chance to win $100 http://www.zoomerang.com/survey.zgi?HRPT1X3RYQNC5V4MLNSV3E54 _______________________________________________ Flac-dev mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/flac-dev
