Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVittorio Giovara <vittorio.giovara@gmail.com>2017-04-26 18:08:17 +0300
committerVittorio Giovara <vittorio.giovara@gmail.com>2017-04-27 21:19:54 +0300
commit970c76f32283bddf3a5afd24fe52db7a96186244 (patch)
tree8cb1e90fd6e480ef48cfd8ed89977b21a8ed04ad /libavcodec/mlp_parser.c
parentdd3aa85b68c017c419acb0c39ff6aa890ce89e87 (diff)
mlp_parser: Drop in-parser downmix functionality
request_channel_layout is a decoder option and it makes no sense to have it in a parser. This feature was needed in the past when the decoder was allowed to reuse the avctx from the demuxer. Nowadays the decoder receives only the parameters from it, already containing the real channel layout (and the correct request_channel_layout option). After initialization the decoder overwrites the channel layout with the downmixed one that is actually output, so there is no need to preserve this functionality in the parser. Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
Diffstat (limited to 'libavcodec/mlp_parser.c')
-rw-r--r--libavcodec/mlp_parser.c23
1 files changed, 3 insertions, 20 deletions
diff --git a/libavcodec/mlp_parser.c b/libavcodec/mlp_parser.c
index 7d73058e4c..bff6258cba 100644
--- a/libavcodec/mlp_parser.c
+++ b/libavcodec/mlp_parser.c
@@ -120,11 +120,6 @@ static uint64_t truehd_layout(int chanmap)
return layout;
}
-int ff_mlp_channel_layout_subset(uint64_t channel_layout, uint64_t mask)
-{
- return channel_layout && ((channel_layout & mask) == channel_layout);
-}
-
static int mlp_get_major_sync_size(const uint8_t * buf, int bufsize)
{
int has_extension, extensions = 0;
@@ -336,8 +331,6 @@ static int mlp_parse(AVCodecParserContext *s,
} else {
BitstreamContext bc;
MLPHeaderInfo mh;
- int stereo_requested = ff_mlp_channel_layout_subset(avctx->request_channel_layout,
- AV_CH_LAYOUT_STEREO);
bitstream_init8(&bc, buf + 4, buf_size - 4);
if (ff_mlp_read_major_sync(avctx, &mh, &bc) < 0)
@@ -353,21 +346,11 @@ static int mlp_parse(AVCodecParserContext *s,
if (mh.stream_type == 0xbb) {
/* MLP stream */
- if (stereo_requested && mh.num_substreams > 1) {
- avctx->channels = 2;
- avctx->channel_layout = AV_CH_LAYOUT_STEREO;
- } else {
- avctx->channels = mh.channels_mlp;
- avctx->channel_layout = mh.channel_layout_mlp;
- }
+ avctx->channels = mh.channels_mlp;
+ avctx->channel_layout = mh.channel_layout_mlp;
} else { /* mh.stream_type == 0xba */
/* TrueHD stream */
- if (stereo_requested && mh.num_substreams > 1) {
- avctx->channels = 2;
- avctx->channel_layout = AV_CH_LAYOUT_STEREO;
- } else if (!mh.channels_thd_stream2 ||
- ff_mlp_channel_layout_subset(avctx->request_channel_layout,
- mh.channel_layout_thd_stream1)) {
+ if (!mh.channels_thd_stream2) {
avctx->channels = mh.channels_thd_stream1;
avctx->channel_layout = mh.channel_layout_thd_stream1;
} else {