From 7883c1879f1398e854abbbb2571f8cdc4d6e2cde Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Fri, 7 Nov 2025 15:37:10 +0100 Subject: [PATCH 1/3] [fix] add FIX_1437_LC3PLUS_EXTREND_HIRES, align renderer API function to decoder --- apps/renderer.c | 9 +++++++++ lib_com/options.h | 1 + lib_isar/isar_splitRendererPre.c | 3 +++ lib_rend/lib_rend.c | 10 +++++++++- lib_rend/lib_rend.h | 5 +++++ 5 files changed, 27 insertions(+), 1 deletion(-) diff --git a/apps/renderer.c b/apps/renderer.c index e434c0ca2a..094ab6038d 100644 --- a/apps/renderer.c +++ b/apps/renderer.c @@ -1421,7 +1421,16 @@ int main( audioWriter = NULL; } +#ifdef FIX_1437_LC3PLUS_EXTREND_HIRES + if ( ( error = IVAS_REND_GetSplitRendBitstreamHeader( hIvasRend, + &bitsBuffer.config.codec, + &bitsBuffer.config.poseCorrection, + &bitsBuffer.config.codec_frame_size_ms, + &bitsBuffer.config.isar_frame_size_ms, + &bitsBuffer.config.lc3plus_highres ) ) != IVAS_ERR_OK ) +#else if ( ( error = IVAS_REND_GetSplitRendBitstreamHeader( hIvasRend, &bitsBuffer.config.codec, &bitsBuffer.config.poseCorrection, &bitsBuffer.config.codec_frame_size_ms, &bitsBuffer.config.isar_frame_size_ms ) ) != IVAS_ERR_OK ) +#endif { fprintf( stderr, "\nError in IVAS_REND_GetSplitRendBitstreamHeader()!\n" ); goto cleanup; diff --git a/lib_com/options.h b/lib_com/options.h index 4594bc79fa..3dec1104b9 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -171,6 +171,7 @@ #define TMP_1342_WORKAROUND_DEC_FLUSH_BROKEN_IN_SR /* FhG: Temporary workaround for incorrect implementation of decoder flush with split rendering */ #define FIX_1413_IGF_INIT_PRINTOUT /* FhG: use correct variable for IGF initiliazation */ #define RENDERER_MD_SYNC_DELAY_TO_INTEGER /* FhG: change data type of metadata sync delay in ext renderer to int16_t for better BASOP portability (and nicer code) */ +#define FIX_1437_LC3PLUS_EXTREND_HIRES /* FhG: fix external renderer split bitstream header writing causing a crash for LC3plus High-res mode */ /* #################### End BE switches ################################## */ diff --git a/lib_isar/isar_splitRendererPre.c b/lib_isar/isar_splitRendererPre.c index 370e02398d..bd1c9c1b2d 100644 --- a/lib_isar/isar_splitRendererPre.c +++ b/lib_isar/isar_splitRendererPre.c @@ -1894,6 +1894,9 @@ ivas_error splitRendLc3plusEncodeAndWrite( pBits->pose_correction = hSplitBin->multiBinPoseData.poseCorrectionMode; pBits->codec_frame_size_ms = (int16_t) ( hSplitBin->hLc3plusEnc->config.lc3plus_frame_duration_us / 1000 ); pBits->isar_frame_size_ms = (int16_t) ( hSplitBin->hLc3plusEnc->config.isar_frame_duration_us / 1000 ); +#ifdef FIX_1437_LC3PLUS_EXTREND_HIRES + pBits->lc3plus_highres = hSplitBin->hLc3plusEnc->config.high_res_mode_enabled; +#endif return IVAS_ERR_OK; } diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index b0435968b3..7afb12a5b4 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -8038,7 +8038,12 @@ ivas_error IVAS_REND_GetSplitRendBitstreamHeader( ISAR_SPLIT_REND_CODEC *pCodec, /* o : pointer to codec setting */ ISAR_SPLIT_REND_POSE_CORRECTION_MODE *poseCorrection, /* o : pointer to pose correction mode */ int16_t *pCodec_frame_size_ms, /* o : pointer to codec frame size setting */ - int16_t *pIsar_frame_size_ms /* o : pointer to ISAR frame size setting */ +#ifdef FIX_1437_LC3PLUS_EXTREND_HIRES + int16_t *pIsar_frame_size_ms, /* o : pointer to ISAR frame size setting */ + int16_t *pLc3plusHighRes /* o : pointer to LC3plus High-Res setting */ +#else + int16_t *pIsar_frame_size_ms /* o : pointer to ISAR frame size setting */ +#endif ) { if ( hIvasRend == NULL || hIvasRend->hRendererConfig == NULL ) @@ -8050,6 +8055,9 @@ ivas_error IVAS_REND_GetSplitRendBitstreamHeader( *pCodec_frame_size_ms = hIvasRend->hRendererConfig->split_rend_config.codec_frame_size_ms; *pIsar_frame_size_ms = hIvasRend->hRendererConfig->split_rend_config.isar_frame_size_ms; *poseCorrection = hIvasRend->hRendererConfig->split_rend_config.poseCorrectionMode; +#ifdef FIX_1437_LC3PLUS_EXTREND_HIRES + *pLc3plusHighRes = hIvasRend->hRendererConfig->split_rend_config.lc3plus_highres; +#endif return IVAS_ERR_OK; } diff --git a/lib_rend/lib_rend.h b/lib_rend/lib_rend.h index 4d84f194f9..d61916e484 100644 --- a/lib_rend/lib_rend.h +++ b/lib_rend/lib_rend.h @@ -285,7 +285,12 @@ ivas_error IVAS_REND_GetSplitRendBitstreamHeader( ISAR_SPLIT_REND_CODEC *pCodec, /* o : pointer to codec setting */ ISAR_SPLIT_REND_POSE_CORRECTION_MODE *poseCorrection, /* o : pointer to pose correction mode */ int16_t *pCodec_frame_size_ms, /* o : pointer to codec frame size setting */ +#ifdef FIX_1437_LC3PLUS_EXTREND_HIRES + int16_t *pIsar_frame_size_ms, /* o : pointer to ISAR frame size setting */ + int16_t *pLc3plusHighRes /* o : pointer to LC3plus High-Res setting */ +#else int16_t *pIsar_frame_size_ms /* o : pointer to ISAR frame size setting */ +#endif ); ivas_error IVAS_REND_SetHeadRotation( -- GitLab From a376d698c7103f69c47594e3210ed3a3a5fc3b14 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Mon, 10 Nov 2025 19:12:01 +0100 Subject: [PATCH 2/3] add update to renderer config from lf --- .../split_renderer_config_3dofhq_768k_lc3plus.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/split_rendering/renderer_configs/split_renderer_config_3dofhq_768k_lc3plus.txt b/tests/split_rendering/renderer_configs/split_renderer_config_3dofhq_768k_lc3plus.txt index d9df2f2254..e27375a0af 100644 --- a/tests/split_rendering/renderer_configs/split_renderer_config_3dofhq_768k_lc3plus.txt +++ b/tests/split_rendering/renderer_configs/split_renderer_config_3dofhq_768k_lc3plus.txt @@ -3,3 +3,4 @@ BITRATE = 768000; DOF = 3; HQMODE = 1; CODEC = LC3PLUS; +LC3PLUS_HIGHRES = 1; -- GitLab From 42b5701ed722cc7c2d4af9611fcfeb09d932b675 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Mon, 10 Nov 2025 20:42:25 +0100 Subject: [PATCH 3/3] Revert "add update to renderer config from lf" This reverts commit a376d698c7103f69c47594e3210ed3a3a5fc3b14. --- .../split_renderer_config_3dofhq_768k_lc3plus.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/split_rendering/renderer_configs/split_renderer_config_3dofhq_768k_lc3plus.txt b/tests/split_rendering/renderer_configs/split_renderer_config_3dofhq_768k_lc3plus.txt index e27375a0af..d9df2f2254 100644 --- a/tests/split_rendering/renderer_configs/split_renderer_config_3dofhq_768k_lc3plus.txt +++ b/tests/split_rendering/renderer_configs/split_renderer_config_3dofhq_768k_lc3plus.txt @@ -3,4 +3,3 @@ BITRATE = 768000; DOF = 3; HQMODE = 1; CODEC = LC3PLUS; -LC3PLUS_HIGHRES = 1; -- GitLab