There are certain MPEG-H files that cannot be decoded properly with Ittiam decoder, libmpegh constantly spouting IA_MPEGH_DEC_INIT_FATAL_INVALID_MCT_ENTRIES error.
Unfortunately we cannot share the files but here is the description of what happens (and hopefully you can reproduce it locally by disabling parsing MAE data):
- the first frame initialises everything properly
- next frame causes internal state reset in
impegh_3daudio_config_dec() because of missing audio scene description (by invoking memset(mpeghd_state_struct->ia_audio_specific_config, 0, sizeof(ia_audio_specific_config_struct));) ;
- afterwards most of the data gets re-initialised but MCT part in USAC core decoder does not (it is done in
impeghd_mc_init() which is called only in ia_core_coder_dec_process_frame_zero() and not for e.g. second frame);
- so when MCT data in USAC is being decoded, the decoder presumes it has zero channels and refuses to decode non-silent data returning the aforementioned error code;
- because of that decoder is fully reset and re-initialised and the cycle repeats.
We can see two possible solutions for this situation: either omit resetting USAC state in that case, zeroing only selected fields of mpeghd_state_struct->ia_audio_specific_config or re-initialise multichannel information as part of the reset procedure.
There are certain MPEG-H files that cannot be decoded properly with Ittiam decoder,
libmpeghconstantly spoutingIA_MPEGH_DEC_INIT_FATAL_INVALID_MCT_ENTRIESerror.Unfortunately we cannot share the files but here is the description of what happens (and hopefully you can reproduce it locally by disabling parsing MAE data):
impegh_3daudio_config_dec()because of missing audio scene description (by invokingmemset(mpeghd_state_struct->ia_audio_specific_config, 0, sizeof(ia_audio_specific_config_struct));) ;impeghd_mc_init()which is called only inia_core_coder_dec_process_frame_zero()and not for e.g. second frame);We can see two possible solutions for this situation: either omit resetting USAC state in that case, zeroing only selected fields of
mpeghd_state_struct->ia_audio_specific_configor re-initialise multichannel information as part of the reset procedure.