Loading apps/decoder.c +24 −26 Original line number Diff line number Diff line Loading @@ -162,14 +162,12 @@ static ivas_error decodeG192( DecArguments arg, BS_READER_HANDLE hBsReader, RotF #else static ivas_error decodeG192( DecArguments arg, BS_READER_HANDLE hBsReader, RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, IVAS_DEC_HANDLE hIvasDec, int16_t *pcmBuf ); #endif static ivas_error decodeVoIP( DecArguments arg, BS_READER_HANDLE hBsReader, #ifdef NONBE_UNIFIED_DECODING_PATHS RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, #ifndef NONBE_UNIFIED_DECODING_PATHS static ivas_error decodeVoIP( DecArguments arg, BS_READER_HANDLE hBsReader, IVAS_DEC_HANDLE hIvasDec ); #else static ivas_error decodeVoIP( DecArguments arg, BS_READER_HANDLE hBsReader, RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, IVAS_DEC_HANDLE hIvasDec ); #endif IVAS_DEC_HANDLE hIvasDec ); #ifdef DEBUGGING static ivas_error printBitstreamInfoVoip( DecArguments arg, BS_READER_HANDLE hBsReader, IVAS_DEC_HANDLE hIvasDec ); static int16_t app_own_random( int16_t *seed ); Loading Loading @@ -436,16 +434,14 @@ int main( * Configure the decoder *------------------------------------------------------------------------------------------*/ if ( ( error = IVAS_DEC_Configure( hIvasDec, arg.output_Fs, arg.outputConfig, arg.tsmEnabled, #ifndef NONBE_UNIFIED_DECODING_PATHS arg.enable5ms, if ( ( error = IVAS_DEC_Configure( hIvasDec, arg.output_Fs, arg.outputConfig, arg.tsmEnabled, arg.enable5ms, arg.customLsOutputEnabled, arg.hrtfReaderEnabled, arg.enableHeadRotation, arg.enableExternalOrientation, arg.orientation_tracking, arg.renderConfigEnabled, arg.Opt_non_diegetic_pan, arg.non_diegetic_pan_gain, arg.Opt_dpid_on, arg.acousticEnvironmentId, arg.delayCompensationEnabled ) ) != IVAS_ERR_OK ) #else arg.renderFramesize, if ( ( error = IVAS_DEC_Configure( hIvasDec, arg.output_Fs, arg.outputConfig, arg.tsmEnabled, arg.renderFramesize, arg.customLsOutputEnabled, arg.hrtfReaderEnabled, arg.enableHeadRotation, arg.enableExternalOrientation, arg.orientation_tracking, arg.renderConfigEnabled, arg.Opt_non_diegetic_pan, arg.non_diegetic_pan_gain, arg.Opt_dpid_on, arg.acousticEnvironmentId, arg.delayCompensationEnabled ) ) != IVAS_ERR_OK ) #endif arg.customLsOutputEnabled, arg.hrtfReaderEnabled, arg.enableHeadRotation, arg.enableExternalOrientation, arg.orientation_tracking, arg.renderConfigEnabled, arg.Opt_non_diegetic_pan, arg.non_diegetic_pan_gain, arg.Opt_dpid_on, arg.acousticEnvironmentId, arg.delayCompensationEnabled ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nConfigure failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; Loading @@ -466,12 +462,14 @@ int main( fprintf( stderr, "\nConfigure failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } #ifdef NONBE_UNIFIED_DECODING_PATHS if ( ( error = IVAS_DEC_GetRenderFramesize( hIvasDec, &arg.renderFramesize ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nConfigure failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } if ( arg.renderFramesize != asked_frame_size ) { fprintf( stderr, "\nChanged render framesize, only 20ms are allowed for split rendering!\n" ); Loading Loading @@ -631,14 +629,13 @@ int main( } #ifdef SPLIT_REND_WITH_HEAD_ROT if ( #ifdef NONBE_UNIFIED_DECODING_PATHS arg.renderFramesize == IVAS_RENDER_FRAMESIZE_5MS && if ( arg.renderFramesize == IVAS_RENDER_FRAMESIZE_5MS && ( renderConfig.split_rend_config.poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_NONE || renderConfig.split_rend_config.dof == 0 ) ) #else arg.enable5ms && #endif ( renderConfig.split_rend_config.poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_NONE || if ( arg.enable5ms && ( renderConfig.split_rend_config.poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_NONE || renderConfig.split_rend_config.dof == 0 ) ) #endif { /*TODO : needs to be refined as this wont work with LCLD codec*/ #ifdef NONBE_UNIFIED_DECODING_PATHS Loading @@ -655,6 +652,7 @@ int main( arg.enable5ms = true; #endif } #ifdef NONBE_UNIFIED_DECODING_PATHS if ( ( error = IVAS_DEC_SetRenderFramesize( hIvasDec, arg.renderFramesize ) ) != IVAS_ERR_OK ) #else Loading Loading @@ -804,11 +802,11 @@ int main( if ( arg.voipMode ) { error = decodeVoIP( arg, hBsReader, #ifdef NONBE_UNIFIED_DECODING_PATHS headRotReader, externalOrientationFileReader, refRotReader, referenceVectorReader, error = decodeVoIP( arg, hBsReader, headRotReader, externalOrientationFileReader, refRotReader, referenceVectorReader, hIvasDec ); #else error = decodeVoIP( arg, hBsReader, hIvasDec ); #endif hIvasDec ); } else { Loading Loading @@ -1611,8 +1609,8 @@ static bool parseCmdlIVAS_dec( { arg->enable5ms = false; } #endif #endif return true; } Loading Loading @@ -1997,11 +1995,11 @@ static ivas_error initOnFirstGoodFrame( #ifndef NONBE_UNIFIED_DECODING_PATHS int16_t enable5ms; #endif if ( numOutSamples == NULL || vec_pos_len == NULL ) { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } #ifdef NONBE_UNIFIED_DECODING_PATHS /* real setting of the 5ms mode for split rendering is only known after the decoded first good frame, reset the variables needed in the main decoding loop accordingly here*/ if ( ( error = IVAS_DEC_GetRenderFramesizeSamples( hIvasDec, numOutSamples ) ) != IVAS_ERR_OK ) Loading Loading @@ -2176,6 +2174,7 @@ static ivas_error decodeG192( vec_pos_len = 1; } #endif /*------------------------------------------------------------------------------------------* * Loop for every packet (frame) of bitstream data * - Read the bitstream packet Loading Loading @@ -2220,6 +2219,7 @@ static ivas_error decodeG192( goto cleanup; } } #ifndef NONBE_UNIFIED_DECODING_PATHS int16_t enable5ms, num_subframes; if ( ( error = IVAS_DEC_Get5msFlag( hIvasDec, &enable5ms ) ) != IVAS_ERR_OK ) Loading Loading @@ -3190,10 +3190,8 @@ static ivas_error decodeVoIP( } } } #endif /* read all packets with a receive time smaller than the system time */ while ( nextPacketRcvTime_ms <= systemTime_ms ) { Loading apps/renderer.c +4 −2 Original line number Diff line number Diff line Loading @@ -2369,7 +2369,8 @@ static bool parseDiegeticPan( #ifdef NONBE_UNIFIED_DECODING_PATHS static bool parseRenderFramesize( char *value, static bool parseRenderFramesize( char *value, IVAS_RENDER_FRAMESIZE *render_framesize ) { int32_t tmp; Loading @@ -2394,6 +2395,7 @@ static bool parseRenderFramesize( char *value, default: return false; } return true; } #endif Loading lib_com/common_api_types.h +1 −0 Original line number Diff line number Diff line Loading @@ -157,6 +157,7 @@ typedef enum IVAS_RENDER_FRAMESIZE_5MS = 1, IVAS_RENDER_FRAMESIZE_10MS = 2, IVAS_RENDER_FRAMESIZE_20MS = 4 } IVAS_RENDER_FRAMESIZE; #endif Loading lib_dec/ivas_binRenderer_internal.c +13 −17 Original line number Diff line number Diff line Loading @@ -1701,10 +1701,12 @@ void ivas_binaural_cldfb( } } #endif #ifdef NONBE_UNIFIED_DECODING_PATHS /* update combined orientation access index */ ivas_combined_orientation_update_index( st_ivas->hCombinedOrientationData, maxBand * MAX_PARAM_SPATIAL_SUBFRAMES ); #endif /* Implement CLDFB synthesis */ for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) { Loading Loading @@ -1845,6 +1847,7 @@ void ivas_binaural_cldfb_sf( Cldfb_ImagBuffer_Binaural, Cldfb_RealBuffer, Cldfb_ImagBuffer ); #ifdef SPLIT_REND_WITH_HEAD_ROT if ( st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) { Loading @@ -1862,10 +1865,12 @@ void ivas_binaural_cldfb_sf( } } #endif #ifdef NONBE_UNIFIED_DECODING_PATHS /* update combined orientation access index */ ivas_combined_orientation_update_index( st_ivas->hCombinedOrientationData, maxBand * st_ivas->hTcBuffer->subframe_nbslots[subframeIdx] ); #endif /* Implement CLDFB synthesis */ for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) { Loading Loading @@ -1962,49 +1967,40 @@ void ivas_binRenderer( #endif /* Head rotation in HOA3 or CICPx */ if ( hCombinedOrientationData != NULL && #ifdef NONBE_UNIFIED_DECODING_PATHS hCombinedOrientationData->enableCombinedOrientation[hCombinedOrientationData->subframe_idx] if ( hCombinedOrientationData != NULL && hCombinedOrientationData->enableCombinedOrientation[hCombinedOrientationData->subframe_idx] && hBinRenderer->rotInCldfb ) #else hCombinedOrientationData->enableCombinedOrientation[subframe_idx] if ( hCombinedOrientationData != NULL && hCombinedOrientationData->enableCombinedOrientation[subframe_idx] && hBinRenderer->rotInCldfb ) #endif && hBinRenderer->rotInCldfb ) { if ( hBinRenderer->hInputSetup->is_loudspeaker_setup == 0 ) { /* Rotation in SHD (HOA3) */ if ( hCombinedOrientationData->shd_rot_max_order == -1 ) { rotateFrame_shd_cldfb( RealBuffer, ImagBuffer, #ifdef NONBE_UNIFIED_DECODING_PATHS hCombinedOrientationData->Rmat[hCombinedOrientationData->subframe_idx], rotateFrame_shd_cldfb( RealBuffer, ImagBuffer, hCombinedOrientationData->Rmat[hCombinedOrientationData->subframe_idx], hBinRenderer->hInputSetup->nchan_out_woLFE, numTimeSlots, 3 ); #else hCombinedOrientationData->Rmat[subframe_idx], rotateFrame_shd_cldfb( RealBuffer, ImagBuffer, hCombinedOrientationData->Rmat[subframe_idx], hBinRenderer->hInputSetup->nchan_out_woLFE, numTimeSlots, 3 ); #endif hBinRenderer->hInputSetup->nchan_out_woLFE, numTimeSlots, 3 ); } else if ( hCombinedOrientationData->shd_rot_max_order > 0 ) { rotateFrame_shd_cldfb( RealBuffer, ImagBuffer, #ifdef NONBE_UNIFIED_DECODING_PATHS hCombinedOrientationData->Rmat[hCombinedOrientationData->subframe_idx], rotateFrame_shd_cldfb( RealBuffer, ImagBuffer, hCombinedOrientationData->Rmat[hCombinedOrientationData->subframe_idx], hBinRenderer->hInputSetup->nchan_out_woLFE, numTimeSlots, hCombinedOrientationData->shd_rot_max_order ); #else hCombinedOrientationData->Rmat[subframe_idx], rotateFrame_shd_cldfb( RealBuffer, ImagBuffer, hCombinedOrientationData->Rmat[subframe_idx], hBinRenderer->hInputSetup->nchan_out_woLFE, numTimeSlots, hCombinedOrientationData->shd_rot_max_order ); #endif hBinRenderer->hInputSetup->nchan_out_woLFE, numTimeSlots, hCombinedOrientationData->shd_rot_max_order ); } } else { /* Rotation in SD (CICPx) */ rotateFrame_sd_cldfb( #ifdef NONBE_UNIFIED_DECODING_PATHS hCombinedOrientationData->Rmat[hCombinedOrientationData->subframe_idx], rotateFrame_sd_cldfb( hCombinedOrientationData->Rmat[hCombinedOrientationData->subframe_idx], RealBuffer, ImagBuffer, hBinRenderer->hInputSetup, hBinRenderer->hEFAPdata, numTimeSlots, hBinRenderer->conv_band ); #else hCombinedOrientationData->Rmat[subframe_idx], rotateFrame_sd_cldfb( hCombinedOrientationData->Rmat[subframe_idx], RealBuffer, ImagBuffer, hBinRenderer->hInputSetup, hBinRenderer->hEFAPdata, numTimeSlots, hBinRenderer->conv_band ); #endif RealBuffer, ImagBuffer, hBinRenderer->hInputSetup, hBinRenderer->hEFAPdata, numTimeSlots, hBinRenderer->conv_band ); } } Loading lib_dec/ivas_dec.c +3 −2 Original line number Diff line number Diff line Loading @@ -94,7 +94,7 @@ ivas_error ivas_dec( } /*----------------------------------------------------------------* * Combine orientations * Update combined orientation access index *----------------------------------------------------------------*/ #ifndef NONBE_UNIFIED_DECODING_PATHS Loading @@ -105,6 +105,7 @@ ivas_error ivas_dec( #else ivas_combined_orientation_set_to_start_index( st_ivas->hCombinedOrientationData ); #endif #ifdef SPLIT_REND_WITH_HEAD_ROT /*----------------------------------------------------------------* * Binaural split rendering setup Loading @@ -114,8 +115,8 @@ ivas_error ivas_dec( { ivas_set_split_rend_ht_setup( &st_ivas->hSplitBinRend, st_ivas->hCombinedOrientationData ); } #endif #endif /*----------------------------------------------------------------* * Decoding + Rendering *----------------------------------------------------------------*/ Loading Loading
apps/decoder.c +24 −26 Original line number Diff line number Diff line Loading @@ -162,14 +162,12 @@ static ivas_error decodeG192( DecArguments arg, BS_READER_HANDLE hBsReader, RotF #else static ivas_error decodeG192( DecArguments arg, BS_READER_HANDLE hBsReader, RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, IVAS_DEC_HANDLE hIvasDec, int16_t *pcmBuf ); #endif static ivas_error decodeVoIP( DecArguments arg, BS_READER_HANDLE hBsReader, #ifdef NONBE_UNIFIED_DECODING_PATHS RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, #ifndef NONBE_UNIFIED_DECODING_PATHS static ivas_error decodeVoIP( DecArguments arg, BS_READER_HANDLE hBsReader, IVAS_DEC_HANDLE hIvasDec ); #else static ivas_error decodeVoIP( DecArguments arg, BS_READER_HANDLE hBsReader, RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, IVAS_DEC_HANDLE hIvasDec ); #endif IVAS_DEC_HANDLE hIvasDec ); #ifdef DEBUGGING static ivas_error printBitstreamInfoVoip( DecArguments arg, BS_READER_HANDLE hBsReader, IVAS_DEC_HANDLE hIvasDec ); static int16_t app_own_random( int16_t *seed ); Loading Loading @@ -436,16 +434,14 @@ int main( * Configure the decoder *------------------------------------------------------------------------------------------*/ if ( ( error = IVAS_DEC_Configure( hIvasDec, arg.output_Fs, arg.outputConfig, arg.tsmEnabled, #ifndef NONBE_UNIFIED_DECODING_PATHS arg.enable5ms, if ( ( error = IVAS_DEC_Configure( hIvasDec, arg.output_Fs, arg.outputConfig, arg.tsmEnabled, arg.enable5ms, arg.customLsOutputEnabled, arg.hrtfReaderEnabled, arg.enableHeadRotation, arg.enableExternalOrientation, arg.orientation_tracking, arg.renderConfigEnabled, arg.Opt_non_diegetic_pan, arg.non_diegetic_pan_gain, arg.Opt_dpid_on, arg.acousticEnvironmentId, arg.delayCompensationEnabled ) ) != IVAS_ERR_OK ) #else arg.renderFramesize, if ( ( error = IVAS_DEC_Configure( hIvasDec, arg.output_Fs, arg.outputConfig, arg.tsmEnabled, arg.renderFramesize, arg.customLsOutputEnabled, arg.hrtfReaderEnabled, arg.enableHeadRotation, arg.enableExternalOrientation, arg.orientation_tracking, arg.renderConfigEnabled, arg.Opt_non_diegetic_pan, arg.non_diegetic_pan_gain, arg.Opt_dpid_on, arg.acousticEnvironmentId, arg.delayCompensationEnabled ) ) != IVAS_ERR_OK ) #endif arg.customLsOutputEnabled, arg.hrtfReaderEnabled, arg.enableHeadRotation, arg.enableExternalOrientation, arg.orientation_tracking, arg.renderConfigEnabled, arg.Opt_non_diegetic_pan, arg.non_diegetic_pan_gain, arg.Opt_dpid_on, arg.acousticEnvironmentId, arg.delayCompensationEnabled ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nConfigure failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; Loading @@ -466,12 +462,14 @@ int main( fprintf( stderr, "\nConfigure failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } #ifdef NONBE_UNIFIED_DECODING_PATHS if ( ( error = IVAS_DEC_GetRenderFramesize( hIvasDec, &arg.renderFramesize ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nConfigure failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } if ( arg.renderFramesize != asked_frame_size ) { fprintf( stderr, "\nChanged render framesize, only 20ms are allowed for split rendering!\n" ); Loading Loading @@ -631,14 +629,13 @@ int main( } #ifdef SPLIT_REND_WITH_HEAD_ROT if ( #ifdef NONBE_UNIFIED_DECODING_PATHS arg.renderFramesize == IVAS_RENDER_FRAMESIZE_5MS && if ( arg.renderFramesize == IVAS_RENDER_FRAMESIZE_5MS && ( renderConfig.split_rend_config.poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_NONE || renderConfig.split_rend_config.dof == 0 ) ) #else arg.enable5ms && #endif ( renderConfig.split_rend_config.poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_NONE || if ( arg.enable5ms && ( renderConfig.split_rend_config.poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_NONE || renderConfig.split_rend_config.dof == 0 ) ) #endif { /*TODO : needs to be refined as this wont work with LCLD codec*/ #ifdef NONBE_UNIFIED_DECODING_PATHS Loading @@ -655,6 +652,7 @@ int main( arg.enable5ms = true; #endif } #ifdef NONBE_UNIFIED_DECODING_PATHS if ( ( error = IVAS_DEC_SetRenderFramesize( hIvasDec, arg.renderFramesize ) ) != IVAS_ERR_OK ) #else Loading Loading @@ -804,11 +802,11 @@ int main( if ( arg.voipMode ) { error = decodeVoIP( arg, hBsReader, #ifdef NONBE_UNIFIED_DECODING_PATHS headRotReader, externalOrientationFileReader, refRotReader, referenceVectorReader, error = decodeVoIP( arg, hBsReader, headRotReader, externalOrientationFileReader, refRotReader, referenceVectorReader, hIvasDec ); #else error = decodeVoIP( arg, hBsReader, hIvasDec ); #endif hIvasDec ); } else { Loading Loading @@ -1611,8 +1609,8 @@ static bool parseCmdlIVAS_dec( { arg->enable5ms = false; } #endif #endif return true; } Loading Loading @@ -1997,11 +1995,11 @@ static ivas_error initOnFirstGoodFrame( #ifndef NONBE_UNIFIED_DECODING_PATHS int16_t enable5ms; #endif if ( numOutSamples == NULL || vec_pos_len == NULL ) { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } #ifdef NONBE_UNIFIED_DECODING_PATHS /* real setting of the 5ms mode for split rendering is only known after the decoded first good frame, reset the variables needed in the main decoding loop accordingly here*/ if ( ( error = IVAS_DEC_GetRenderFramesizeSamples( hIvasDec, numOutSamples ) ) != IVAS_ERR_OK ) Loading Loading @@ -2176,6 +2174,7 @@ static ivas_error decodeG192( vec_pos_len = 1; } #endif /*------------------------------------------------------------------------------------------* * Loop for every packet (frame) of bitstream data * - Read the bitstream packet Loading Loading @@ -2220,6 +2219,7 @@ static ivas_error decodeG192( goto cleanup; } } #ifndef NONBE_UNIFIED_DECODING_PATHS int16_t enable5ms, num_subframes; if ( ( error = IVAS_DEC_Get5msFlag( hIvasDec, &enable5ms ) ) != IVAS_ERR_OK ) Loading Loading @@ -3190,10 +3190,8 @@ static ivas_error decodeVoIP( } } } #endif /* read all packets with a receive time smaller than the system time */ while ( nextPacketRcvTime_ms <= systemTime_ms ) { Loading
apps/renderer.c +4 −2 Original line number Diff line number Diff line Loading @@ -2369,7 +2369,8 @@ static bool parseDiegeticPan( #ifdef NONBE_UNIFIED_DECODING_PATHS static bool parseRenderFramesize( char *value, static bool parseRenderFramesize( char *value, IVAS_RENDER_FRAMESIZE *render_framesize ) { int32_t tmp; Loading @@ -2394,6 +2395,7 @@ static bool parseRenderFramesize( char *value, default: return false; } return true; } #endif Loading
lib_com/common_api_types.h +1 −0 Original line number Diff line number Diff line Loading @@ -157,6 +157,7 @@ typedef enum IVAS_RENDER_FRAMESIZE_5MS = 1, IVAS_RENDER_FRAMESIZE_10MS = 2, IVAS_RENDER_FRAMESIZE_20MS = 4 } IVAS_RENDER_FRAMESIZE; #endif Loading
lib_dec/ivas_binRenderer_internal.c +13 −17 Original line number Diff line number Diff line Loading @@ -1701,10 +1701,12 @@ void ivas_binaural_cldfb( } } #endif #ifdef NONBE_UNIFIED_DECODING_PATHS /* update combined orientation access index */ ivas_combined_orientation_update_index( st_ivas->hCombinedOrientationData, maxBand * MAX_PARAM_SPATIAL_SUBFRAMES ); #endif /* Implement CLDFB synthesis */ for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) { Loading Loading @@ -1845,6 +1847,7 @@ void ivas_binaural_cldfb_sf( Cldfb_ImagBuffer_Binaural, Cldfb_RealBuffer, Cldfb_ImagBuffer ); #ifdef SPLIT_REND_WITH_HEAD_ROT if ( st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) { Loading @@ -1862,10 +1865,12 @@ void ivas_binaural_cldfb_sf( } } #endif #ifdef NONBE_UNIFIED_DECODING_PATHS /* update combined orientation access index */ ivas_combined_orientation_update_index( st_ivas->hCombinedOrientationData, maxBand * st_ivas->hTcBuffer->subframe_nbslots[subframeIdx] ); #endif /* Implement CLDFB synthesis */ for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) { Loading Loading @@ -1962,49 +1967,40 @@ void ivas_binRenderer( #endif /* Head rotation in HOA3 or CICPx */ if ( hCombinedOrientationData != NULL && #ifdef NONBE_UNIFIED_DECODING_PATHS hCombinedOrientationData->enableCombinedOrientation[hCombinedOrientationData->subframe_idx] if ( hCombinedOrientationData != NULL && hCombinedOrientationData->enableCombinedOrientation[hCombinedOrientationData->subframe_idx] && hBinRenderer->rotInCldfb ) #else hCombinedOrientationData->enableCombinedOrientation[subframe_idx] if ( hCombinedOrientationData != NULL && hCombinedOrientationData->enableCombinedOrientation[subframe_idx] && hBinRenderer->rotInCldfb ) #endif && hBinRenderer->rotInCldfb ) { if ( hBinRenderer->hInputSetup->is_loudspeaker_setup == 0 ) { /* Rotation in SHD (HOA3) */ if ( hCombinedOrientationData->shd_rot_max_order == -1 ) { rotateFrame_shd_cldfb( RealBuffer, ImagBuffer, #ifdef NONBE_UNIFIED_DECODING_PATHS hCombinedOrientationData->Rmat[hCombinedOrientationData->subframe_idx], rotateFrame_shd_cldfb( RealBuffer, ImagBuffer, hCombinedOrientationData->Rmat[hCombinedOrientationData->subframe_idx], hBinRenderer->hInputSetup->nchan_out_woLFE, numTimeSlots, 3 ); #else hCombinedOrientationData->Rmat[subframe_idx], rotateFrame_shd_cldfb( RealBuffer, ImagBuffer, hCombinedOrientationData->Rmat[subframe_idx], hBinRenderer->hInputSetup->nchan_out_woLFE, numTimeSlots, 3 ); #endif hBinRenderer->hInputSetup->nchan_out_woLFE, numTimeSlots, 3 ); } else if ( hCombinedOrientationData->shd_rot_max_order > 0 ) { rotateFrame_shd_cldfb( RealBuffer, ImagBuffer, #ifdef NONBE_UNIFIED_DECODING_PATHS hCombinedOrientationData->Rmat[hCombinedOrientationData->subframe_idx], rotateFrame_shd_cldfb( RealBuffer, ImagBuffer, hCombinedOrientationData->Rmat[hCombinedOrientationData->subframe_idx], hBinRenderer->hInputSetup->nchan_out_woLFE, numTimeSlots, hCombinedOrientationData->shd_rot_max_order ); #else hCombinedOrientationData->Rmat[subframe_idx], rotateFrame_shd_cldfb( RealBuffer, ImagBuffer, hCombinedOrientationData->Rmat[subframe_idx], hBinRenderer->hInputSetup->nchan_out_woLFE, numTimeSlots, hCombinedOrientationData->shd_rot_max_order ); #endif hBinRenderer->hInputSetup->nchan_out_woLFE, numTimeSlots, hCombinedOrientationData->shd_rot_max_order ); } } else { /* Rotation in SD (CICPx) */ rotateFrame_sd_cldfb( #ifdef NONBE_UNIFIED_DECODING_PATHS hCombinedOrientationData->Rmat[hCombinedOrientationData->subframe_idx], rotateFrame_sd_cldfb( hCombinedOrientationData->Rmat[hCombinedOrientationData->subframe_idx], RealBuffer, ImagBuffer, hBinRenderer->hInputSetup, hBinRenderer->hEFAPdata, numTimeSlots, hBinRenderer->conv_band ); #else hCombinedOrientationData->Rmat[subframe_idx], rotateFrame_sd_cldfb( hCombinedOrientationData->Rmat[subframe_idx], RealBuffer, ImagBuffer, hBinRenderer->hInputSetup, hBinRenderer->hEFAPdata, numTimeSlots, hBinRenderer->conv_band ); #endif RealBuffer, ImagBuffer, hBinRenderer->hInputSetup, hBinRenderer->hEFAPdata, numTimeSlots, hBinRenderer->conv_band ); } } Loading
lib_dec/ivas_dec.c +3 −2 Original line number Diff line number Diff line Loading @@ -94,7 +94,7 @@ ivas_error ivas_dec( } /*----------------------------------------------------------------* * Combine orientations * Update combined orientation access index *----------------------------------------------------------------*/ #ifndef NONBE_UNIFIED_DECODING_PATHS Loading @@ -105,6 +105,7 @@ ivas_error ivas_dec( #else ivas_combined_orientation_set_to_start_index( st_ivas->hCombinedOrientationData ); #endif #ifdef SPLIT_REND_WITH_HEAD_ROT /*----------------------------------------------------------------* * Binaural split rendering setup Loading @@ -114,8 +115,8 @@ ivas_error ivas_dec( { ivas_set_split_rend_ht_setup( &st_ivas->hSplitBinRend, st_ivas->hCombinedOrientationData ); } #endif #endif /*----------------------------------------------------------------* * Decoding + Rendering *----------------------------------------------------------------*/ Loading