Commit e3c654ed authored by Archit Tamarapu's avatar Archit Tamarapu
Browse files

[fix] 0DOF with LCLD codec was unsupported resulting in sanitizer errors

parent 5e212aac
Loading
Loading
Loading
Loading
Loading
+26 −1
Original line number Diff line number Diff line
@@ -7175,6 +7175,7 @@ static ivas_error renderSplitBinauralWithPostRot(
        /*copy pose correction after MD is parsed*/
        hSplitBin->multiBinPoseData.poseCorrectionMode = bits.pose_correction;

        /* decode audio */
        if ( splitBinInput->base.inConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_SPLIT_CODED )
        {
            if ( bits.codec == IVAS_SPLIT_REND_CODEC_LCLD )
@@ -7201,7 +7202,31 @@ static ivas_error renderSplitBinauralWithPostRot(
            copyBufferTo2dArray( splitBinInput->base.inputBuffer, tmpCrendBuffer );
        }

        if ( bits.pose_correction == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB )
        /* apply pose correction if enabled */
        if ( bits.pose_correction == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_NONE && isPostRendInputCldfb )
        {
            /* 0DOF with LCLD codec requires CLDFB synthesis */
            int16_t ch_idx, slot_idx;

            for ( ch_idx = 0; ch_idx < BINAURAL_CHANNELS; ch_idx++ )
            {
                float *RealBuffer[CLDFB_NO_COL_MAX];
                float *ImagBuffer[CLDFB_NO_COL_MAX];

                for ( slot_idx = 0; slot_idx < CLDFB_NO_COL_MAX; slot_idx++ )
                {
                    RealBuffer[slot_idx] = Cldfb_RealBuffer_Binaural[ch_idx][slot_idx];
                    ImagBuffer[slot_idx] = Cldfb_ImagBuffer_Binaural[ch_idx][slot_idx];
                }

                cldfbSynthesis( RealBuffer,
                                ImagBuffer,
                                &( tmpCrendBuffer[ch_idx][0] ),
                                hSplitBin->hBinHrSplitPostRend->cldfbSyn[0]->no_channels * CLDFB_NO_COL_MAX,
                                hSplitBin->hBinHrSplitPostRend->cldfbSyn[ch_idx] );
            }
        }
        else if ( bits.pose_correction == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB )
        {
            ivas_rend_CldfbSplitPostRendProcess(
                hSplitBin->hBinHrSplitPostRend,