mlpdec: move ch_assign setup code down to after ch layout is set.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
6747b0be9b
commit
8071288601
@ -519,19 +519,6 @@ static int read_restart_header(MLPDecodeContext *m, GetBitContext *gbp,
|
|||||||
s->ch_assign[ch_assign] = ch;
|
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);
|
checksum = ff_mlp_restart_checksum(buf, get_bits_count(gbp) - start_count);
|
||||||
|
|
||||||
if (checksum != get_bits(gbp, 8))
|
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) {
|
if (substr == m->max_decoded_substream) {
|
||||||
m->avctx->channels = s->max_matrix_channel + 1;
|
m->avctx->channels = s->max_matrix_channel + 1;
|
||||||
m->avctx->channel_layout = s->ch_layout;
|
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;
|
return 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user