Make "channels" variable mean the number of channels, not the number of
authorVitor Sessak <vitor1001@gmail.com>
Fri, 13 Jul 2007 00:06:46 +0000 (00:06 +0000)
committerVitor Sessak <vitor1001@gmail.com>
Fri, 13 Jul 2007 00:06:46 +0000 (00:06 +0000)
channels minus one

Originally committed as revision 9617 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/alac.c

index e648f95..b281024 100644 (file)
@@ -487,7 +487,7 @@ static int alac_decode_frame(AVCodecContext *avctx,
 
     init_get_bits(&alac->gb, inbuffer, input_buffer_size * 8);
 
-    channels = get_bits(&alac->gb, 3);
+    channels = get_bits(&alac->gb, 3) + 1;
 
         /* 2^result = something to do with output waiting.
          * perhaps matters if we read > 1 frame in a pass?
@@ -510,10 +510,10 @@ static int alac_decode_frame(AVCodecContext *avctx,
             outputsamples = alac->setinfo_max_samples_per_frame;
 
         *outputsize = outputsamples * alac->bytespersample;
-        readsamplesize = alac->setinfo_sample_size - (wasted_bytes * 8) + channels;
+        readsamplesize = alac->setinfo_sample_size - (wasted_bytes * 8) + channels - 1;
 
     switch(channels) {
-    case 0: { /* 1 channel */
+    case 1: { /* 1 channel */
         int ricemodifier;
 
         if (!isnotcompressed) {
@@ -624,7 +624,7 @@ static int alac_decode_frame(AVCodecContext *avctx,
         }
         break;
     }
-    case 1: { /* 2 channels */
+    case 2: { /* 2 channels */
         uint8_t interlacing_shift;
         uint8_t interlacing_leftweight;