From 0276cdb99df9e2fce1c125bf46a8e0269394d3b3 Mon Sep 17 00:00:00 2001 From: Vladimir Malenovsky Date: Fri, 7 Nov 2025 17:48:42 +0100 Subject: [PATCH 1/4] ISAR PLC crash fix --- lib_com/options.h | 2 ++ lib_isar/isar_splitRend_lcld_dec.c | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/lib_com/options.h b/lib_com/options.h index f658a0ace..9158b9ec8 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -101,6 +101,8 @@ #define FIX_2184_EVS_STEREO_DMX_CHANNEL_DISAPPEARING /* Orange: Fix for issue 2184 - to prevent one channel from becoming inaudible in the mono downmix output */ #define FIX_2148_OBJ_EDIT_ISSUE_WITH_OSBA /* Nokia: Add missing code to solve issue */ +#define FIX_2200_ISAR_PLC_CRASH /* Dolby: Fix for ISAR PLC crash observed with newly added BASOP tests */ + /* ################### End FIXES switches ########################### */ /* #################### Start BASOP porting switches ############################ */ diff --git a/lib_isar/isar_splitRend_lcld_dec.c b/lib_isar/isar_splitRend_lcld_dec.c index e1ddadf35..56446b755 100644 --- a/lib_isar/isar_splitRend_lcld_dec.c +++ b/lib_isar/isar_splitRend_lcld_dec.c @@ -225,6 +225,7 @@ void isar_splitBinLCLDDecProcess( #endif IF( AnyDecodingFailed( hSplitBinLCLDDec->psLCLDDecoder ) ) { +#ifndef FIX_2200_ISAR_PLC_CRASH IF( NE_16( *Q_cldfb_final, 11 ) ) { FOR( n = 0; n < hSplitBinLCLDDec->iChannels; n++ ) @@ -240,12 +241,20 @@ void isar_splitBinLCLDDecProcess( } *Q_cldfb_final = 11; } +#else + *Q_cldfb_final = hSplitBinLCLDDec->hSplitRendPLC->CldfbPLC_state.Q_Prev_Bin_fx; +#endif + /* continue concealing */ isar_splitBinRendPLC( hSplitBinLCLDDec->hSplitRendPLC, Cldfb_Out_Real_fx, Cldfb_Out_Imag_fx, (Word16) hSplitBinLCLDDec->iChannels, hSplitBinLCLDDec->iNumBlocks, hSplitBinLCLDDec->iNumIterations, GetDecodingFailedStatus( hSplitBinLCLDDec->psLCLDDecoder ), *Q_cldfb_final ); } IF( AnyDecodingFailedPrev( hSplitBinLCLDDec->psLCLDDecoder ) ) { +#ifndef FIX_2200_ISAR_PLC_CRASH IF( NE_16( *Q_cldfb_final, 11 ) ) +#else + IF( GT_16( *Q_cldfb_final, hSplitBinLCLDDec->hSplitRendPLC->CldfbPLC_state.Q_Prev_Bin_fx ) ) +#endif { FOR( n = 0; n < hSplitBinLCLDDec->iChannels; n++ ) { @@ -253,12 +262,21 @@ void isar_splitBinLCLDDecProcess( { FOR( Word16 j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ ) { +#ifndef FIX_2200_ISAR_PLC_CRASH hSplitBinLCLDDec->pppfDecLCLDReal_fx[n][k][j] = L_shl_r( hSplitBinLCLDDec->pppfDecLCLDReal_fx[n][k][j], sub( 11, *Q_cldfb_final ) ); // Q11 hSplitBinLCLDDec->pppfDecLCLDImag_fx[n][k][j] = L_shl_r( hSplitBinLCLDDec->pppfDecLCLDImag_fx[n][k][j], sub( 11, *Q_cldfb_final ) ); // Q11 +#else + hSplitBinLCLDDec->pppfDecLCLDReal_fx[n][k][j] = L_shl_r( hSplitBinLCLDDec->pppfDecLCLDReal_fx[n][k][j], sub( hSplitBinLCLDDec->hSplitRendPLC->CldfbPLC_state.Q_Prev_Bin_fx, *Q_cldfb_final ) ); // hSplitBinLCLDDec->hSplitRendPLC->CldfbPLC_state.Q_Prev_Bin_fx + hSplitBinLCLDDec->pppfDecLCLDImag_fx[n][k][j] = L_shl_r( hSplitBinLCLDDec->pppfDecLCLDImag_fx[n][k][j], sub( hSplitBinLCLDDec->hSplitRendPLC->CldfbPLC_state.Q_Prev_Bin_fx, *Q_cldfb_final ) ); // hSplitBinLCLDDec->hSplitRendPLC->CldfbPLC_state.Q_Prev_Bin_fx +#endif } } } +#ifndef FIX_2200_ISAR_PLC_CRASH *Q_cldfb_final = 11; +#else + *Q_cldfb_final = hSplitBinLCLDDec->hSplitRendPLC->CldfbPLC_state.Q_Prev_Bin_fx; +#endif } /* cross-fade recovered frame into good frame */ isar_splitBinRendPLC_xf_fx( hSplitBinLCLDDec->hSplitRendPLC, Cldfb_Out_Real_fx, Cldfb_Out_Imag_fx, (Word16) hSplitBinLCLDDec->iChannels, hSplitBinLCLDDec->iNumBlocks, hSplitBinLCLDDec->iNumIterations, GetDecodingFailedStatus( hSplitBinLCLDDec->psLCLDDecoder ), GetDecodingFailedPrevStatus( hSplitBinLCLDDec->psLCLDDecoder ), *Q_cldfb_final ); @@ -270,6 +288,10 @@ void isar_splitBinLCLDDecProcess( /* set states in decoder */ SetDecodingUnresolved( hSplitBinLCLDDec->psLCLDDecoder ); +#ifdef FIX_2200_ISAR_PLC_CRASH + *Q_cldfb_final = hSplitBinLCLDDec->hSplitRendPLC->CldfbPLC_state.Q_Prev_Bin_fx; +#endif + /* do PLC for lost split renderer frame */ isar_splitBinRendPLC( hSplitBinLCLDDec->hSplitRendPLC, Cldfb_Out_Real_fx, Cldfb_Out_Imag_fx, (Word16) hSplitBinLCLDDec->iChannels, hSplitBinLCLDDec->iNumBlocks, hSplitBinLCLDDec->iNumIterations, GetDecodingFailedStatus( hSplitBinLCLDDec->psLCLDDecoder ), *Q_cldfb_final ); } -- GitLab From c96090f272ca50a5e0fea57bc5749c937bf01d92 Mon Sep 17 00:00:00 2001 From: Vladimir Malenovsky Date: Fri, 7 Nov 2025 18:00:08 +0100 Subject: [PATCH 2/4] Dummy commit -- GitLab From 398f1cd94f7a8b0de2cf699571187ffcd23b411c Mon Sep 17 00:00:00 2001 From: Vladimir Malenovsky Date: Sat, 8 Nov 2025 16:15:39 +0100 Subject: [PATCH 3/4] temporary modification to test the fix --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 93d77386f..52a9ddfa1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,8 @@ variables: # note: GitLab cannot reference variables defined by users in the include ref:, we need to use a YAML anchor for this # see https://docs.gitlab.com/ci/yaml/includes/#use-variables-with-include for more information - IVAS_CODEC_CI_REF: &IVAS_CODEC_CI_REF main + # IVAS_CODEC_CI_REF: &IVAS_CODEC_CI_REF main + IVAS_CODEC_CI_REF: &IVAS_CODEC_CI_REF vlad/ci-test-fix-2200-ISAR_crash include: - project: ivas-codec-pc/ivas-codec-ci -- GitLab From 00ccfe9ce400b966454fc241d1e2102f52a17ef6 Mon Sep 17 00:00:00 2001 From: Vladimir Malenovsky Date: Sun, 9 Nov 2025 17:34:52 +0100 Subject: [PATCH 4/4] restore the pointer to the main ref branch in CI --- .gitlab-ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 52a9ddfa1..93d77386f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,8 +1,7 @@ variables: # note: GitLab cannot reference variables defined by users in the include ref:, we need to use a YAML anchor for this # see https://docs.gitlab.com/ci/yaml/includes/#use-variables-with-include for more information - # IVAS_CODEC_CI_REF: &IVAS_CODEC_CI_REF main - IVAS_CODEC_CI_REF: &IVAS_CODEC_CI_REF vlad/ci-test-fix-2200-ISAR_crash + IVAS_CODEC_CI_REF: &IVAS_CODEC_CI_REF main include: - project: ivas-codec-pc/ivas-codec-ci -- GitLab