diff --git a/libavcodec/mlp_parser.c b/libavcodec/mlp_parser.c index 1831f64a4b..2cc4b9153a 100644 --- a/libavcodec/mlp_parser.c +++ b/libavcodec/mlp_parser.c @@ -157,6 +157,7 @@ int ff_mlp_read_major_sync(void *log, MLPHeaderInfo *mh, GetBitContext *gb) skip_bits(gb, 11); + mh->channel_arrangement= channel_arrangement = get_bits(gb, 5); mh->channels_mlp = mlp_channels[channel_arrangement]; mh->channel_layout_mlp = ff_mlp_layout[channel_arrangement]; @@ -170,6 +171,7 @@ int ff_mlp_read_major_sync(void *log, MLPHeaderInfo *mh, GetBitContext *gb) skip_bits(gb, 8); + mh->channel_arrangement= channel_arrangement = get_bits(gb, 5); mh->channels_thd_stream1 = truehd_channels(channel_arrangement); mh->channel_layout_thd_stream1 = ff_truehd_layout(channel_arrangement); diff --git a/libavcodec/mlp_parser.h b/libavcodec/mlp_parser.h index f9638bb868..9967abbad2 100644 --- a/libavcodec/mlp_parser.h +++ b/libavcodec/mlp_parser.h @@ -39,6 +39,7 @@ typedef struct MLPHeaderInfo int group1_samplerate; ///< Sample rate of first substream int group2_samplerate; ///< Sample rate of second substream (MLP only) + int channel_arrangement; int channels_mlp; ///< Channel count for MLP streams int channels_thd_stream1; ///< Channel count for substream 1 of TrueHD streams ("6-channel presentation") int channels_thd_stream2; ///< Channel count for substream 2 of TrueHD streams ("8-channel presentation") diff --git a/libavcodec/mlpdec.c b/libavcodec/mlpdec.c index 4532b3760e..ebd0b484a1 100644 --- a/libavcodec/mlpdec.c +++ b/libavcodec/mlpdec.c @@ -386,7 +386,7 @@ static int read_major_sync(MLPDecodeContext *m, GetBitContext *gb) } } - m->needs_reordering = mh.channels_mlp >= 18 && mh.channels_mlp <= 20; + m->needs_reordering = mh.channel_arrangement >= 18 && mh.channel_arrangement <= 20; return 0; }