Eliminate redundant redundancy code.
authorGregory Maxwell <greg@xiph.org>
Mon, 3 Oct 2011 17:07:17 +0000 (13:07 -0400)
committerGregory Maxwell <greg@xiph.org>
Mon, 3 Oct 2011 17:12:54 +0000 (13:12 -0400)
The redundancy_bytes<0 test always fails because of the ec_tell(&dec)+29 test above.

src/opus_decoder.c

index 66de96c..2fef286 100644 (file)
@@ -322,17 +322,8 @@ static int opus_decode_frame(OpusDecoder *st, const unsigned char *data,
         if (redundancy)
         {
             celt_to_silk = ec_dec_bit_logp(&dec, 1);
-            if (mode == MODE_HYBRID)
-               redundancy_bytes = 2 + ec_dec_uint(&dec, 256);
-            else {
-               redundancy_bytes = len - ((ec_tell(&dec)+7)>>3);
-               /* Can only happen on an invalid packet */
-               if (redundancy_bytes<0)
-               {
-                       redundancy_bytes = 0;
-                       redundancy = 0;
-               }
-            }
+            /*Due to the ec_tell check above redundancy_bytes will be at least two for hybrid*/
+            redundancy_bytes = mode==MODE_HYBRID ? ec_dec_uint(&dec, 256)+2 : len-((ec_tell(&dec)+7)>>3);
             len -= redundancy_bytes;
             if (len<0)
             {