aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCarl Eugen Hoyos <cehoyos@ag.or.at>2011-04-02 00:48:43 +0200
committerCarl Eugen Hoyos <cehoyos@ag.or.at>2011-04-02 00:48:43 +0200
commit2a0bd2bfc957abe3fab97cc27e6d997099082841 (patch)
treef475bf8c5fdfe80ddfbdb90c6b0966c4faeecb7a
parente1cfe04c766c1a703bc3671fde7d651f2b79b230 (diff)
downloadffmpeg-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.c4
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 */