ittiam-systems / libmpegh

MPEG-H 3D Audio Low Complexity Profile Decoder. Encoder: https://github.com/ittiam-systems/libmpeghe
http://www.ittiam.com/
BSD 3-Clause Clear License
86 stars 19 forks source link

Support for CompatibleProfileLevelSet() missing in MPEG-H decoder #52

Closed SakethSathuvalli closed 1 year ago

SakethSathuvalli commented 1 year ago
          Hi Christof,

thank you for your insightful comment.

Based on my understanding if LC4 is used by stream, this check in decoder/ia_core_coder_init_config.c will fail:

   if (dec_proc_core_chans > MAX_NUM_CHANNELS_LVL3 || ref_layout_chans > MAX_NUM_CHANNELS_LVL3)
    {
      return IA_MPEGH_DEC_INIT_FATAL_STREAM_CHAN_GT_MAX;
    }

because

decoder/ia_core_coder_cnst.h:#define MAX_NUM_CHANNELS_LVL3 16

Hence why we were not able to decode the stream.

If I understand your comment correctly libmpegh may in case of LC4 and CompatibleProfileLevelSet() flag revert to BP3 and in that case in code check vs MAX_NUM_CHANNELS(24) will be used instead and the stream may potentially play.

  case MPEGH_PROFILE_LC_LVL_3:
    if (dec_proc_core_chans > MAX_NUM_CHANNELS || ref_layout_chans > MAX_NUM_CHANNELS ||

However since this is decoder internals I assume the patch would have to be done to the libmpegh as AFAIK there is no way to produce this behavior just by using the decoder API.

Adam

Originally posted by @miartad in https://github.com/ittiam-systems/libmpegh/issues/49#issuecomment-1470087273

SakethSathuvalli commented 1 year ago

Support for processing compatibleProfileLevelSet is available on latest master.