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,
libmpegh
constantly spoutingIA_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):
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_config
or re-initialise multichannel information as part of the reset procedure.