Add support for FLAC's new RICE2 entropy coding method. Patch by Josh Coalson.
authorJosh Coalson <>
Sat, 3 Nov 2007 23:54:50 +0000 (23:54 +0000)
committerJustin Ruggles <justin.ruggles@gmail.com>
Sat, 3 Nov 2007 23:54:50 +0000 (23:54 +0000)
Originally committed as revision 10915 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/flac.c

index 480ede2..e949a46 100644 (file)
@@ -217,7 +217,7 @@ static int decode_residuals(FLACContext *s, int channel, int pred_order)
     int sample = 0, samples;
 
     method_type = get_bits(&s->gb, 2);
-    if (method_type != 0){
+    if (method_type > 1){
         av_log(s->avctx, AV_LOG_DEBUG, "illegal residual coding method %d\n", method_type);
         return -1;
     }
@@ -234,8 +234,8 @@ static int decode_residuals(FLACContext *s, int channel, int pred_order)
     i= pred_order;
     for (partition = 0; partition < (1 << rice_order); partition++)
     {
-        tmp = get_bits(&s->gb, 4);
-        if (tmp == 15)
+        tmp = get_bits(&s->gb, method_type == 0 ? 4 : 5);
+        if (tmp == (method_type == 0 ? 15 : 31))
         {
             av_log(s->avctx, AV_LOG_DEBUG, "fixed len partition\n");
             tmp = get_bits(&s->gb, 5);