mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-26 19:01:44 +02:00
Fix channel order for some less common TrueHD layouts.
Reported and tested by TDiTP_ Fixes ticket #779.
This commit is contained in:
parent
b9d8af0327
commit
1af0ace3a4
@ -480,6 +480,14 @@ static int read_restart_header(MLPDecodeContext *m, GetBitContext *gbp,
|
|||||||
m->avctx->channel_layout == AV_CH_LAYOUT_7POINT1_WIDE)) {
|
m->avctx->channel_layout == AV_CH_LAYOUT_7POINT1_WIDE)) {
|
||||||
FFSWAP(int, s->ch_assign[4], s->ch_assign[6]);
|
FFSWAP(int, s->ch_assign[4], s->ch_assign[6]);
|
||||||
FFSWAP(int, s->ch_assign[5], s->ch_assign[7]);
|
FFSWAP(int, s->ch_assign[5], s->ch_assign[7]);
|
||||||
|
} else if (m->avctx->codec_id == CODEC_ID_TRUEHD &&
|
||||||
|
(m->avctx->channel_layout == AV_CH_LAYOUT_6POINT1 ||
|
||||||
|
m->avctx->channel_layout == (AV_CH_LAYOUT_6POINT1 | AV_CH_TOP_CENTER) ||
|
||||||
|
m->avctx->channel_layout == (AV_CH_LAYOUT_6POINT1 | AV_CH_TOP_FRONT_CENTER))) {
|
||||||
|
int i = s->ch_assign[6];
|
||||||
|
s->ch_assign[6] = s->ch_assign[5];
|
||||||
|
s->ch_assign[5] = s->ch_assign[4];
|
||||||
|
s->ch_assign[4] = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
checksum = ff_mlp_restart_checksum(buf, get_bits_count(gbp) - start_count);
|
checksum = ff_mlp_restart_checksum(buf, get_bits_count(gbp) - start_count);
|
||||||
|
Loading…
Reference in New Issue
Block a user