Loading lib_com/options.h +2 −0 Original line number Diff line number Diff line Loading @@ -156,6 +156,8 @@ #define SPLIT_REND_WITH_HEAD_ROT_PARAMBIN /* Nokia: Issue 623: Split rendering support for parambin renderer */ #define FIX_658_SPLIT_REND_MASA /*Dlb : Fix for issue 658, uninitialized memory access in MASA in Split rendering 0DOF mode*/ #define OSBA_SPLIT_RENDERING #define ROM_TO_RAM /*Dlb : ROM optimization in SR mode*/ #define FIX_712_713_SPLIT_REND_MASA_MC /*Dlb : Fix for issue 712 and 713*/ #endif #define FIX_732_PLANAR_SBA_OSBA /* Dlb : issue 732: fix for crash in planar mode in OSBA format*/ Loading lib_rend/ivas_lcld_decoder.c +1 −1 Original line number Diff line number Diff line Loading @@ -701,7 +701,7 @@ void DeleteLCLDDecoder( LCLDDecoder *psLCLDDecoder ) } #ifdef ROM_TO_RAM for ( uint32_t n = 0; n < ALLOC_TABLE_SIZE * 2; n++ ) for ( n = 0; n < ALLOC_TABLE_SIZE * 2; n++ ) { if ( psLCLDDecoder->num_decode_table[n] > 1 ) { Loading lib_rend/lib_rend.c +26 −0 Original line number Diff line number Diff line Loading @@ -6957,6 +6957,11 @@ static ivas_error renderMcToSplitBinaural( /* copy input to tdrend input/output buffer */ copyBufferTo2dArray( mcInput->base.inputBuffer, tmpRendBuffer ); #ifdef FIX_712_713_SPLIT_REND_MASA_MC /* perform rotation in source format to tmpRotBuffer */ pCombinedOrientationDataLocal = &combinedOrientationDataLocal; #endif /* Render */ if ( ( error = ivas_td_binaural_renderer_ext( ( pos_idx == 0 ) ? &mcInput->tdRendWrapper : &mcInput->splitTdRendWrappers[pos_idx - 1], mcInput->base.inConfig, Loading Loading @@ -8214,8 +8219,29 @@ static void renderMasaToBinaural( copyBufferTo2dArray( masaInput->base.inputBuffer, tmpBuffer_buff ); copyMasaMetadataToDiracRenderer( &masaInput->masaMetadata, masaInput->decDummy->hSpatParamRendCom ); #ifdef FIX_712_713_SPLIT_REND_MASA_MC if ( is_split_rend_mode ) { int16_t sf, i, j; COMBINED_ORIENTATION_HANDLE pCombinedOrientationData; pCombinedOrientationData = *masaInput->base.ctx.pCombinedOrientationData; for ( sf = 1; sf < pCombinedOrientationData->num_subframes; sf++ ) { pCombinedOrientationData->Quaternions[sf] = pCombinedOrientationData->Quaternions[0]; for ( i = 0; i < 3; i++ ) { for ( j = 0; j < 3; j++ ) { pCombinedOrientationData->Rmat[sf][i][j] = pCombinedOrientationData->Rmat[0][i][j]; } } } } #endif ivas_dirac_dec_binaural( masaInput->decDummy, *masaInput->base.ctx.pCombinedOrientationData, tmpBuffer, masaInput->base.inputBuffer.config.numChannels, getNumSubframesInBuffer( &outAudio, *masaInput->base.ctx.pOutSampleRate ) ); #ifdef SPLIT_REND_WITH_HEAD_ROT if ( is_split_rend_mode ) { Loading tests/renderer/constants.py +12 −0 Original line number Diff line number Diff line Loading @@ -130,6 +130,18 @@ FORMAT_TO_FILE_COMPARETEST = { "ISM4": TESTV_DIR.joinpath("stv4ISM48s.wav"), "MASA1": TESTV_DIR.joinpath("stv1MASA1TC48c.wav"), "MASA2": TESTV_DIR.joinpath("stv2MASA2TC48c.wav"), "OSBA_1_1": TESTV_DIR.joinpath("stvOSBA_1ISM_FOA48c.wav"), "OSBA_1_2": TESTV_DIR.joinpath("stvOSBA_1ISM_2OA48c.wav"), "OSBA_1_3": TESTV_DIR.joinpath("stvOSBA_1ISM_3OA48c.wav"), "OSBA_2_1": TESTV_DIR.joinpath("stvOSBA_2ISM_FOA48c.wav"), "OSBA_2_2": TESTV_DIR.joinpath("stvOSBA_2ISM_2OA48c.wav"), "OSBA_2_3": TESTV_DIR.joinpath("stvOSBA_2ISM_3OA48c.wav"), "OSBA_3_1": TESTV_DIR.joinpath("stvOSBA_3ISM_FOA48c.wav"), "OSBA_3_2": TESTV_DIR.joinpath("stvOSBA_3ISM_2OA48c.wav"), "OSBA_3_3": TESTV_DIR.joinpath("stvOSBA_3ISM_3OA48c.wav"), "OSBA_4_1": TESTV_DIR.joinpath("stvOSBA_4ISM_FOA48c.wav"), "OSBA_4_2": TESTV_DIR.joinpath("stvOSBA_4ISM_2OA48c.wav"), "OSBA_4_3": TESTV_DIR.joinpath("stvOSBA_4ISM_3OA48c.wav"), "META": TEST_VECTOR_DIR.joinpath("mixed_scene.txt"), "16ch_8+4+4": TESTV_DIR.joinpath("stv3OA48c.wav"), "4d4": TESTV_DIR.joinpath("stv71MC48c.wav"), Loading tests/split_rendering/README.md +4 −1 Original line number Diff line number Diff line Loading @@ -41,18 +41,21 @@ The tests cover the following IVAS formats: * Multi-Channel * ISM * MASA * OSBA The tests include both split rendering operating modes: * Full chain: encoder, decoder, external renderer * External: external renderer only Note: MASA format only supports the full chain split rendering mode. Note: OSBA format only supports the full chain split rendering mode. Furthermore, the tests iterate over the following parameters: * Renderer config file which specifies DoF (degrees of freedom), split rendering bitrate, and split rendering codec * Trajectory file * Encoder/decoder bitrate (only for full-chain split rendering mode) Some PLC and BINAURAL_SPLIT_PCM tests are also implemented. ## Directory Structure ``` Loading Loading
lib_com/options.h +2 −0 Original line number Diff line number Diff line Loading @@ -156,6 +156,8 @@ #define SPLIT_REND_WITH_HEAD_ROT_PARAMBIN /* Nokia: Issue 623: Split rendering support for parambin renderer */ #define FIX_658_SPLIT_REND_MASA /*Dlb : Fix for issue 658, uninitialized memory access in MASA in Split rendering 0DOF mode*/ #define OSBA_SPLIT_RENDERING #define ROM_TO_RAM /*Dlb : ROM optimization in SR mode*/ #define FIX_712_713_SPLIT_REND_MASA_MC /*Dlb : Fix for issue 712 and 713*/ #endif #define FIX_732_PLANAR_SBA_OSBA /* Dlb : issue 732: fix for crash in planar mode in OSBA format*/ Loading
lib_rend/ivas_lcld_decoder.c +1 −1 Original line number Diff line number Diff line Loading @@ -701,7 +701,7 @@ void DeleteLCLDDecoder( LCLDDecoder *psLCLDDecoder ) } #ifdef ROM_TO_RAM for ( uint32_t n = 0; n < ALLOC_TABLE_SIZE * 2; n++ ) for ( n = 0; n < ALLOC_TABLE_SIZE * 2; n++ ) { if ( psLCLDDecoder->num_decode_table[n] > 1 ) { Loading
lib_rend/lib_rend.c +26 −0 Original line number Diff line number Diff line Loading @@ -6957,6 +6957,11 @@ static ivas_error renderMcToSplitBinaural( /* copy input to tdrend input/output buffer */ copyBufferTo2dArray( mcInput->base.inputBuffer, tmpRendBuffer ); #ifdef FIX_712_713_SPLIT_REND_MASA_MC /* perform rotation in source format to tmpRotBuffer */ pCombinedOrientationDataLocal = &combinedOrientationDataLocal; #endif /* Render */ if ( ( error = ivas_td_binaural_renderer_ext( ( pos_idx == 0 ) ? &mcInput->tdRendWrapper : &mcInput->splitTdRendWrappers[pos_idx - 1], mcInput->base.inConfig, Loading Loading @@ -8214,8 +8219,29 @@ static void renderMasaToBinaural( copyBufferTo2dArray( masaInput->base.inputBuffer, tmpBuffer_buff ); copyMasaMetadataToDiracRenderer( &masaInput->masaMetadata, masaInput->decDummy->hSpatParamRendCom ); #ifdef FIX_712_713_SPLIT_REND_MASA_MC if ( is_split_rend_mode ) { int16_t sf, i, j; COMBINED_ORIENTATION_HANDLE pCombinedOrientationData; pCombinedOrientationData = *masaInput->base.ctx.pCombinedOrientationData; for ( sf = 1; sf < pCombinedOrientationData->num_subframes; sf++ ) { pCombinedOrientationData->Quaternions[sf] = pCombinedOrientationData->Quaternions[0]; for ( i = 0; i < 3; i++ ) { for ( j = 0; j < 3; j++ ) { pCombinedOrientationData->Rmat[sf][i][j] = pCombinedOrientationData->Rmat[0][i][j]; } } } } #endif ivas_dirac_dec_binaural( masaInput->decDummy, *masaInput->base.ctx.pCombinedOrientationData, tmpBuffer, masaInput->base.inputBuffer.config.numChannels, getNumSubframesInBuffer( &outAudio, *masaInput->base.ctx.pOutSampleRate ) ); #ifdef SPLIT_REND_WITH_HEAD_ROT if ( is_split_rend_mode ) { Loading
tests/renderer/constants.py +12 −0 Original line number Diff line number Diff line Loading @@ -130,6 +130,18 @@ FORMAT_TO_FILE_COMPARETEST = { "ISM4": TESTV_DIR.joinpath("stv4ISM48s.wav"), "MASA1": TESTV_DIR.joinpath("stv1MASA1TC48c.wav"), "MASA2": TESTV_DIR.joinpath("stv2MASA2TC48c.wav"), "OSBA_1_1": TESTV_DIR.joinpath("stvOSBA_1ISM_FOA48c.wav"), "OSBA_1_2": TESTV_DIR.joinpath("stvOSBA_1ISM_2OA48c.wav"), "OSBA_1_3": TESTV_DIR.joinpath("stvOSBA_1ISM_3OA48c.wav"), "OSBA_2_1": TESTV_DIR.joinpath("stvOSBA_2ISM_FOA48c.wav"), "OSBA_2_2": TESTV_DIR.joinpath("stvOSBA_2ISM_2OA48c.wav"), "OSBA_2_3": TESTV_DIR.joinpath("stvOSBA_2ISM_3OA48c.wav"), "OSBA_3_1": TESTV_DIR.joinpath("stvOSBA_3ISM_FOA48c.wav"), "OSBA_3_2": TESTV_DIR.joinpath("stvOSBA_3ISM_2OA48c.wav"), "OSBA_3_3": TESTV_DIR.joinpath("stvOSBA_3ISM_3OA48c.wav"), "OSBA_4_1": TESTV_DIR.joinpath("stvOSBA_4ISM_FOA48c.wav"), "OSBA_4_2": TESTV_DIR.joinpath("stvOSBA_4ISM_2OA48c.wav"), "OSBA_4_3": TESTV_DIR.joinpath("stvOSBA_4ISM_3OA48c.wav"), "META": TEST_VECTOR_DIR.joinpath("mixed_scene.txt"), "16ch_8+4+4": TESTV_DIR.joinpath("stv3OA48c.wav"), "4d4": TESTV_DIR.joinpath("stv71MC48c.wav"), Loading
tests/split_rendering/README.md +4 −1 Original line number Diff line number Diff line Loading @@ -41,18 +41,21 @@ The tests cover the following IVAS formats: * Multi-Channel * ISM * MASA * OSBA The tests include both split rendering operating modes: * Full chain: encoder, decoder, external renderer * External: external renderer only Note: MASA format only supports the full chain split rendering mode. Note: OSBA format only supports the full chain split rendering mode. Furthermore, the tests iterate over the following parameters: * Renderer config file which specifies DoF (degrees of freedom), split rendering bitrate, and split rendering codec * Trajectory file * Encoder/decoder bitrate (only for full-chain split rendering mode) Some PLC and BINAURAL_SPLIT_PCM tests are also implemented. ## Directory Structure ``` Loading