]> git.sesse.net Git - ffmpeg/commitdiff
mlpdec: move ch_assign setup code down to after ch layout is set.
authorMichael Niedermayer <michaelni@gmx.at>
Wed, 23 Jan 2013 18:28:43 +0000 (19:28 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Wed, 23 Jan 2013 18:39:42 +0000 (19:39 +0100)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/mlpdec.c

index ebd0b484a15e15123671888141bf5511629ef9c2..d96ad677e89c1a60c37b5c93571efc73933b412d 100644 (file)
@@ -519,19 +519,6 @@ static int read_restart_header(MLPDecodeContext *m, GetBitContext *gbp,
         s->ch_assign[ch_assign] = ch;
     }
 
-    if (m->avctx->codec_id == AV_CODEC_ID_MLP && m->needs_reordering) {
-        if (m->avctx->channel_layout == (AV_CH_LAYOUT_QUAD|AV_CH_LOW_FREQUENCY) ||
-            m->avctx->channel_layout == AV_CH_LAYOUT_5POINT0_BACK) {
-            int i = s->ch_assign[4];
-            s->ch_assign[4] = s->ch_assign[3];
-            s->ch_assign[3] = s->ch_assign[2];
-            s->ch_assign[2] = i;
-        } else if (m->avctx->channel_layout == AV_CH_LAYOUT_5POINT1_BACK) {
-            FFSWAP(int, s->ch_assign[2], s->ch_assign[4]);
-            FFSWAP(int, s->ch_assign[3], s->ch_assign[5]);
-        }
-    }
-
     checksum = ff_mlp_restart_checksum(buf, get_bits_count(gbp) - start_count);
 
     if (checksum != get_bits(gbp, 8))
@@ -563,6 +550,20 @@ static int read_restart_header(MLPDecodeContext *m, GetBitContext *gbp,
     if (substr == m->max_decoded_substream) {
         m->avctx->channels       = s->max_matrix_channel + 1;
         m->avctx->channel_layout = s->ch_layout;
+
+        if (m->avctx->codec_id == AV_CODEC_ID_MLP && m->needs_reordering) {
+            if (m->avctx->channel_layout == (AV_CH_LAYOUT_QUAD|AV_CH_LOW_FREQUENCY) ||
+                m->avctx->channel_layout == AV_CH_LAYOUT_5POINT0_BACK) {
+                int i = s->ch_assign[4];
+                s->ch_assign[4] = s->ch_assign[3];
+                s->ch_assign[3] = s->ch_assign[2];
+                s->ch_assign[2] = i;
+            } else if (m->avctx->channel_layout == AV_CH_LAYOUT_5POINT1_BACK) {
+                FFSWAP(int, s->ch_assign[2], s->ch_assign[4]);
+                FFSWAP(int, s->ch_assign[3], s->ch_assign[5]);
+            }
+        }
+
     }
 
     return 0;