Commit c865e3f0 authored by Vladimir Malenovsky's avatar Vladimir Malenovsky
Browse files

Merge branch 'isar_lcld_crash_codec_fr_LT_isar_fr' into 'main'

Crash in ISAR post-renderer when running LCLD codec with frame size shorter than the ISAR frame size

See merge request !2575
parents aecf0f5e aaefdbcb
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -176,6 +176,7 @@
#define FIX_FLOAT_1569_REND_RENDER_CONFIG_CHECKS        /* Nokia: float issue 1569: fix render config checks in renderer */
#define FIX_1571_BFI_COPY_ARRAY_CORRECT_LEN             /* FhG: issue 1571: use correct channel signal length for copying signal to buffer */
#define FIX_FLOAT_1573_POSITION_UPDATE                  /* Eri: Float issue 1573: For static orientation and listener movement, the PoseUpdated flag is cleared and prevents 5 ms update rate. */
#define FIX_1576_LCLD_CRASH_DIFFERENT_CODEC_ISAR_FRAME_SIZE  /* Dolby: float issue 1576: fix for crash in LCLD mode when codec frame size is less than isar frame size */

/* ##################### End NON-BE switches ########################### */

+19 −0
Original line number Diff line number Diff line
@@ -153,10 +153,29 @@ ivas_error ISAR_PRE_REND_open(
        }
        else
        {
#ifndef FIX_1576_LCLD_CRASH_DIFFERENT_CODEC_ISAR_FRAME_SIZE
            int16_t iNumBlocksPerFrame;
            iNumBlocksPerFrame = ( CLDFB_NO_COL_MAX * pSplitRendConfig->codec_frame_size_ms ) / 20;
#else
            int16_t iNumBlocksPerFrame, iNumLCLDIterationsPerFrame;
            if ( pSplitRendConfig->codec_frame_size_ms > 0 )
            {
                iNumLCLDIterationsPerFrame = (int16_t) pSplitRendConfig->isar_frame_size_ms / ( pSplitRendConfig->codec_frame_size_ms );
                iNumLCLDIterationsPerFrame = max( 1, iNumLCLDIterationsPerFrame );
                iNumBlocksPerFrame = CLDFB_NO_COL_MAX * pSplitRendConfig->codec_frame_size_ms / 20;
            }
            else
            {
                iNumLCLDIterationsPerFrame = 1;
                iNumBlocksPerFrame = CLDFB_NO_COL_MAX;
            }
#endif

#ifndef FIX_1576_LCLD_CRASH_DIFFERENT_CODEC_ISAR_FRAME_SIZE
            if ( ( error = isar_splitBinLCLDEncOpen( &hSplitBinRend->hSplitBinLCLDEnc, output_Fs, BINAURAL_CHANNELS, isar_get_lcld_bitrate( pSplitRendConfig->splitRendBitRate, hSplitBinRend->multiBinPoseData.poseCorrectionMode ), iNumBlocksPerFrame, 1 ) ) != IVAS_ERR_OK )
#else
            if ( ( error = isar_splitBinLCLDEncOpen( &hSplitBinRend->hSplitBinLCLDEnc, output_Fs, BINAURAL_CHANNELS, isar_get_lcld_bitrate( pSplitRendConfig->splitRendBitRate, hSplitBinRend->multiBinPoseData.poseCorrectionMode ), iNumBlocksPerFrame, iNumLCLDIterationsPerFrame ) ) != IVAS_ERR_OK )
#endif
            {
                return error;
            }