From 2a0bd2bfc957abe3fab97cc27e6d997099082841 Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos Date: Sat, 2 Apr 2011 00:48:43 +0200 Subject: Make a plausibility check when setting channel layout for TrueHD. TrueHD supports more channels than FFmpeg, so a valid sample could set the channel layout to a value that represents less channels than the sample actually consists of. --- libavcodec/mlp_parser.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'libavcodec/mlp_parser.c') diff --git a/libavcodec/mlp_parser.c b/libavcodec/mlp_parser.c index 90b0d00f8a..38b80e0dfc 100644 --- a/libavcodec/mlp_parser.c +++ b/libavcodec/mlp_parser.c @@ -325,6 +325,10 @@ static int mlp_parse(AVCodecParserContext *s, avctx->channels = truehd_channels(mh.channels_thd_stream1); avctx->channel_layout = truehd_layout(mh.channels_thd_stream1); } + if (av_get_channel_layout_nb_channels(avctx->channel_layout) != avctx->channels) { + avctx->channel_layout = 0; + av_log_ask_for_sample(avctx, "Unknown channel layout."); + } } if (!mh.is_vbr) /* Stream is CBR */ -- cgit v1.2.3