]> git.sesse.net Git - ffmpeg/commitdiff
alacdec: fix packed sample output with 5.1
authorMichael Niedermayer <michaelni@gmx.at>
Sat, 21 Jul 2012 04:39:01 +0000 (06:39 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Sat, 21 Jul 2012 04:39:01 +0000 (06:39 +0200)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/alac.c

index f1462383271633df953fc707539ae9fd40227023..4fa328539c9fd4fb8291b076d35a412f3be153d1 100644 (file)
@@ -440,23 +440,29 @@ static int decode_element(AVCodecContext *avctx, void *data, int ch_index,
         switch(alac->sample_size) {
         case 16: {
             int16_t *outbuffer = ((int16_t *)alac->frame.extended_data[0]) + ch_index;
-            for (i = 0; i < alac->nb_samples; i++)
+            for (i = 0; i < alac->nb_samples; i++) {
                 for (ch = 0; ch < channels; ch++)
                     *outbuffer++ = alac->output_samples_buffer[ch][i];
+                outbuffer += alac->channels - channels;
+            }
             }
             break;
         case 24: {
             int32_t *outbuffer = ((int32_t *)alac->frame.extended_data[0]) + ch_index;
-            for (i = 0; i < alac->nb_samples; i++)
+            for (i = 0; i < alac->nb_samples; i++) {
                 for (ch = 0; ch < channels; ch++)
                     *outbuffer++ = alac->output_samples_buffer[ch][i] << 8;
+                outbuffer += alac->channels - channels;
+            }
             }
             break;
         case 32: {
             int32_t *outbuffer = ((int32_t *)alac->frame.extended_data[0]) + ch_index;
-            for (i = 0; i < alac->nb_samples; i++)
+            for (i = 0; i < alac->nb_samples; i++) {
                 for (ch = 0; ch < channels; ch++)
                     *outbuffer++ = alac->output_samples_buffer[ch][i];
+                outbuffer += alac->channels - channels;
+            }
             }
             break;
         }