Browse Source

Also set the MLP/TrueHD channel layout in the decoder.

Applications might not use the parser,
tags/n0.8
Carl Eugen Hoyos 15 years ago
parent
commit
d3f126df4b
1 changed files with 17 additions and 0 deletions
  1. +17
    -0
      libavcodec/mlpdec.c

+ 17
- 0
libavcodec/mlpdec.c View File

@@ -329,6 +329,23 @@ static int read_major_sync(MLPDecodeContext *m, GetBitContext *gb)
for (substr = 0; substr < MAX_SUBSTREAMS; substr++)
m->substream[substr].restart_seen = 0;

if (mh.stream_type == 0xbb) {
/* MLP stream */
m->avctx->channel_layout = ff_mlp_layout[mh.channels_mlp];
} else { /* mh.stream_type == 0xba */
/* TrueHD stream */
if (mh.channels_thd_stream2) {
m->avctx->channel_layout = ff_truehd_layout(mh.channels_thd_stream2);
} else {
m->avctx->channel_layout = ff_truehd_layout(mh.channels_thd_stream1);
}
if (m->avctx->channels &&
av_get_channel_layout_nb_channels(m->avctx->channel_layout) != m->avctx->channels) {
m->avctx->channel_layout = 0;
av_log_ask_for_sample(m->avctx, "Unknown channel layout.");
}
}

m->needs_reordering = mh.channels_mlp >= 18 && mh.channels_mlp <= 20;

return 0;


Loading…
Cancel
Save