diff options
author | Carl Eugen Hoyos <cehoyos@ag.or.at> | 2011-04-02 00:48:43 +0200 |
---|---|---|
committer | Carl Eugen Hoyos <cehoyos@ag.or.at> | 2011-04-02 00:48:43 +0200 |
commit | 2a0bd2bfc957abe3fab97cc27e6d997099082841 (patch) | |
tree | f475bf8c5fdfe80ddfbdb90c6b0966c4faeecb7a | |
parent | e1cfe04c766c1a703bc3671fde7d651f2b79b230 (diff) | |
download | ffmpeg-2a0bd2bfc957abe3fab97cc27e6d997099082841.tar.gz |
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.
-rw-r--r-- | libavcodec/mlp_parser.c | 4 |
1 files changed, 4 insertions, 0 deletions
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 */ |