ac3dec: Increment channel pointers only once per channel
authorMartin Storsjö <martin@martin.st>
Thu, 11 Jul 2013 13:30:18 +0000 (16:30 +0300)
committerMartin Storsjö <martin@martin.st>
Sat, 13 Jul 2013 15:55:07 +0000 (18:55 +0300)
If the channel mapping map multiple output channels to one
input channel, we should only increment the actual pointer once.

Cc: libav-stable@libav.org
Signed-off-by: Martin Storsjö <martin@martin.st>
libavcodec/ac3dec.c

index abfd380..01da328 100644 (file)
@@ -1393,10 +1393,10 @@ static int ac3_decode_frame(AVCodecContext * avctx, void *data,
         if (err)
             for (ch = 0; ch < s->out_channels; ch++)
                 memcpy(s->outptr[channel_map[ch]], output[ch], 1024);
-        for (ch = 0; ch < s->out_channels; ch++) {
+        for (ch = 0; ch < s->out_channels; ch++)
             output[ch] = s->outptr[channel_map[ch]];
-            s->outptr[channel_map[ch]] += AC3_BLOCK_SIZE;
-        }
+        for (ch = 0; ch < s->channels; ch++)
+            s->outptr[ch] += AC3_BLOCK_SIZE;
     }
 
     /* keep last block for error concealment in next frame */