/// Current access unit being read has a major sync.
int is_major_sync_unit;
+ /// Size of the major sync unit, in bytes
+ int major_sync_header_size;
+
/// Set if a valid major sync block has been read. Otherwise no decoding is possible.
uint8_t params_valid;
return AVERROR_PATCHWELCOME;
}
+ m->major_sync_header_size = mh.header_size;
+
m->access_unit_size = mh.access_unit_size;
m->access_unit_size_pow2 = mh.access_unit_size_pow2;
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->frame_size = mh.access_unit_size;
s->max_channel = max_channel;
s->max_matrix_channel = max_matrix_channel;
-#if FF_API_REQUEST_CHANNELS
-FF_DISABLE_DEPRECATION_WARNINGS
- if (m->avctx->request_channels > 0 &&
- m->avctx->request_channels <= s->max_channel + 1 &&
- m->max_decoded_substream > substr) {
- av_log(m->avctx, AV_LOG_DEBUG,
- "Extracting %d-channel downmix from substream %d. "
- "Further substreams will be skipped.\n",
- s->max_channel + 1, substr);
- m->max_decoded_substream = substr;
- } else
-FF_ENABLE_DEPRECATION_WARNINGS
-#endif
if (m->avctx->request_channel_layout && (s->ch_layout & m->avctx->request_channel_layout) ==
m->avctx->request_channel_layout && m->max_decoded_substream > substr) {
av_log(m->avctx, AV_LOG_DEBUG,
/* Default audio coding is 24-bit raw PCM. */
cp->huff_offset = 0;
- cp->sign_huff_offset = (-1) << 23;
+ cp->sign_huff_offset = -(1 << 23);
cp->codebook = 0;
cp->huff_lsbs = 24;
}
if (read_major_sync(m, &gb) < 0)
goto error;
m->is_major_sync_unit = 1;
- header_size += 28;
+ header_size += m->major_sync_header_size;
}
if (!m->params_valid) {
.priv_data_size = sizeof(MLPDecodeContext),
.init = mlp_decode_init,
.decode = read_access_unit,
- .capabilities = CODEC_CAP_DR1,
+ .capabilities = AV_CODEC_CAP_DR1,
};
#if CONFIG_TRUEHD_DECODER
.priv_data_size = sizeof(MLPDecodeContext),
.init = mlp_decode_init,
.decode = read_access_unit,
- .capabilities = CODEC_CAP_DR1,
+ .capabilities = AV_CODEC_CAP_DR1,
};
#endif /* CONFIG_TRUEHD_DECODER */