mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +02:00
mlpdec: support TrueHD streams with an Atmos substream
The fourth substream is being discarded, since its not raw audio data, but an encoded Atmos stream which needs a specialized decoder. Fixes decoding of the true hd stream from Transformers\ -\ Age\ of\ Extinction\ 2014\ 1080P-003.mkv Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
ff34b2d6d3
commit
36bf549b27
@ -45,7 +45,7 @@
|
|||||||
/** Maximum number of substreams that can be decoded.
|
/** Maximum number of substreams that can be decoded.
|
||||||
* MLP's limit is 2. TrueHD supports at least up to 3.
|
* MLP's limit is 2. TrueHD supports at least up to 3.
|
||||||
*/
|
*/
|
||||||
#define MAX_SUBSTREAMS 3
|
#define MAX_SUBSTREAMS 4
|
||||||
|
|
||||||
/** which multiple of 48000 the maximum sample rate is */
|
/** which multiple of 48000 the maximum sample rate is */
|
||||||
#define MAX_RATEFACTOR 4
|
#define MAX_RATEFACTOR 4
|
||||||
|
@ -358,7 +358,9 @@ static int read_major_sync(MLPDecodeContext *m, GetBitContext *gb)
|
|||||||
m->access_unit_size_pow2 = mh.access_unit_size_pow2;
|
m->access_unit_size_pow2 = mh.access_unit_size_pow2;
|
||||||
|
|
||||||
m->num_substreams = mh.num_substreams;
|
m->num_substreams = mh.num_substreams;
|
||||||
m->max_decoded_substream = m->num_substreams - 1;
|
|
||||||
|
/* limit to decoding 3 substreams, as the 4th is used by Dolby Atmos for non-audio data */
|
||||||
|
m->max_decoded_substream = FFMIN(m->num_substreams - 1, 2);
|
||||||
|
|
||||||
m->avctx->sample_rate = mh.group1_samplerate;
|
m->avctx->sample_rate = mh.group1_samplerate;
|
||||||
m->avctx->frame_size = mh.access_unit_size;
|
m->avctx->frame_size = mh.access_unit_size;
|
||||||
|
Loading…
Reference in New Issue
Block a user