Loading lib_com/ivas_prot.h +3 −0 Original line number Diff line number Diff line Loading @@ -3683,6 +3683,9 @@ void generate_masking_noise_lb_dirac( HANDLE_FD_CNG_COM hFdCngCom, /* i/o: FD_CNG structure containing all buffers and variables */ float *tdBuffer, /* i/o: time-domain signal, if NULL no LB-CNA */ const int16_t nCldfbTs, /* i : number of CLDFB slots that will be rendered */ #ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, #endif const int16_t cna_flag /* i : CNA flag for LB and HB */ ); Loading lib_dec/fd_cng_dec.c +37 −1 Original line number Diff line number Diff line Loading @@ -1805,6 +1805,9 @@ void generate_masking_noise_lb_dirac( HANDLE_FD_CNG_COM hFdCngCom, /* i/o: FD_CNG structure containing all buffers and variables */ float *tdBuffer, /* i/o: time-domain signal, if NULL no LB-CNA */ const int16_t nCldfbTs, /* i : number of CLDFB slots that will be rendered */ #ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, #endif const int16_t cna_flag /* i : CNA flag for LB and HB */ ) { Loading Loading @@ -1940,8 +1943,41 @@ void generate_masking_noise_lb_dirac( n_samples_out -= hFdCngCom->frameSize; n_samples_start += hFdCngCom->frameSize; } #ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING { /* move generated noise to the 5ms subframe starts in the tc buffer according to the output sampling frequency to avoid overwriting it with the synthesis in case of shared tc and synth channel memory, i.e. non-TSM mode */ int16_t cur_subframe; int16_t cur_subframe_start_outfs; int16_t cur_subframe_start_cngfs; int16_t slot_size_cng; cur_subframe_start_outfs = 0; cur_subframe_start_cngfs = 0; slot_size_cng = hFdCngCom->frameSize / DEFAULT_JBM_CLDFB_TIMESLOTS; /* move start indices forward to the last subframe */ for ( cur_subframe = 0; cur_subframe < hSpatParamRendCom->nb_subframes - 1; cur_subframe++ ) { cur_subframe_start_outfs += hSpatParamRendCom->subframe_nbslots[cur_subframe] * hSpatParamRendCom->slot_size; cur_subframe_start_cngfs += hSpatParamRendCom->subframe_nbslots[cur_subframe] * slot_size_cng; } /* go from the last subframe back and move the LB noise */ for ( cur_subframe = cur_subframe < hSpatParamRendCom->nb_subframes; cur_subframe >= 0; cur_subframe-- ) { int16_t move_size, subframe_size_outfs; move_size = slot_size_cng * hSpatParamRendCom->subframe_nbslots[cur_subframe]; subframe_size_outfs = hSpatParamRendCom->subframe_nbslots[cur_subframe] * hSpatParamRendCom->slot_size; /* move cna */ mvr2r( tdBuffer + cur_subframe_start_cngfs, tdBuffer + cur_subframe_start_outfs, move_size ); /* set everything else to zero */ set_zero( tdBuffer + cur_subframe_start_outfs + move_size, subframe_size_outfs - move_size ); } } #endif } pop_wmops(); return; Loading lib_dec/ivas_dirac_dec.c +8 −0 Original line number Diff line number Diff line Loading @@ -1943,10 +1943,18 @@ void ivas_dirac_dec_render_sf( generate_masking_noise_dirac( st->hFdCngDec->hFdCngCom, st_ivas->cldfbAnaDec[1], #ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING &st_ivas->hTcBuffer->tc[1][hSpatParamRendCom->num_freq_bands * hSpatParamRendCom->slots_rendered], #else st_ivas->hTcBuffer->tc[1], #endif Cldfb_RealBuffer[1][0], Cldfb_ImagBuffer[1][0], #ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING slot_idx, #else index_slot, #endif st->cna_dirac_flag && st->flag_cna, ( st->core_brate == FRAME_NO_DATA || st->core_brate == SID_2k40 ) && st->cng_type == FD_CNG && st->cng_sba_flag ); } Loading lib_dec/ivas_jbm_dec.c +1 −9 Original line number Diff line number Diff line Loading @@ -950,9 +950,6 @@ ivas_error ivas_jbm_dec_render( #ifdef SPLIT_REND_WITH_HEAD_ROT int16_t nchan_out_syn_output; #endif #ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING float tmp_output[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS][L_FRAME48k]; #endif push_wmops( "ivas_dec_render" ); /*----------------------------------------------------------------* Loading Loading @@ -990,12 +987,7 @@ ivas_error ivas_jbm_dec_render( p_tc[n] = &st_ivas->hTcBuffer->tc[n][st_ivas->hTcBuffer->n_samples_rendered]; } } #ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING for ( n = 0; n < MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS; n++ ) { p_output[n] = tmp_output[n]; } #endif /*----------------------------------------------------------------* * Update combined orientation access index *----------------------------------------------------------------*/ Loading lib_dec/ivas_sba_dec.c +4 −0 Original line number Diff line number Diff line Loading @@ -759,7 +759,11 @@ void ivas_sba_dec_digest_tc( ( ( st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC ) && ( nchan_transport == 1 && st_ivas->nchan_transport != 2 && st_ivas->hSCE[0]->hCoreCoder[0] != NULL && st_ivas->hSCE[0]->hCoreCoder[0]->cng_sba_flag ) ) ) { Decoder_State *st = st_ivas->hSCE[0]->hCoreCoder[0]; #ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING generate_masking_noise_lb_dirac( st->hFdCngDec->hFdCngCom, st_ivas->hTcBuffer->tc[1], nCldfbSlots, st_ivas->hSpatParamRendCom, st->cna_dirac_flag && st->flag_cna ); #else generate_masking_noise_lb_dirac( st->hFdCngDec->hFdCngCom, st_ivas->hTcBuffer->tc[1], nCldfbSlots, st->cna_dirac_flag && st->flag_cna ); #endif } return; Loading Loading
lib_com/ivas_prot.h +3 −0 Original line number Diff line number Diff line Loading @@ -3683,6 +3683,9 @@ void generate_masking_noise_lb_dirac( HANDLE_FD_CNG_COM hFdCngCom, /* i/o: FD_CNG structure containing all buffers and variables */ float *tdBuffer, /* i/o: time-domain signal, if NULL no LB-CNA */ const int16_t nCldfbTs, /* i : number of CLDFB slots that will be rendered */ #ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, #endif const int16_t cna_flag /* i : CNA flag for LB and HB */ ); Loading
lib_dec/fd_cng_dec.c +37 −1 Original line number Diff line number Diff line Loading @@ -1805,6 +1805,9 @@ void generate_masking_noise_lb_dirac( HANDLE_FD_CNG_COM hFdCngCom, /* i/o: FD_CNG structure containing all buffers and variables */ float *tdBuffer, /* i/o: time-domain signal, if NULL no LB-CNA */ const int16_t nCldfbTs, /* i : number of CLDFB slots that will be rendered */ #ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, #endif const int16_t cna_flag /* i : CNA flag for LB and HB */ ) { Loading Loading @@ -1940,8 +1943,41 @@ void generate_masking_noise_lb_dirac( n_samples_out -= hFdCngCom->frameSize; n_samples_start += hFdCngCom->frameSize; } #ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING { /* move generated noise to the 5ms subframe starts in the tc buffer according to the output sampling frequency to avoid overwriting it with the synthesis in case of shared tc and synth channel memory, i.e. non-TSM mode */ int16_t cur_subframe; int16_t cur_subframe_start_outfs; int16_t cur_subframe_start_cngfs; int16_t slot_size_cng; cur_subframe_start_outfs = 0; cur_subframe_start_cngfs = 0; slot_size_cng = hFdCngCom->frameSize / DEFAULT_JBM_CLDFB_TIMESLOTS; /* move start indices forward to the last subframe */ for ( cur_subframe = 0; cur_subframe < hSpatParamRendCom->nb_subframes - 1; cur_subframe++ ) { cur_subframe_start_outfs += hSpatParamRendCom->subframe_nbslots[cur_subframe] * hSpatParamRendCom->slot_size; cur_subframe_start_cngfs += hSpatParamRendCom->subframe_nbslots[cur_subframe] * slot_size_cng; } /* go from the last subframe back and move the LB noise */ for ( cur_subframe = cur_subframe < hSpatParamRendCom->nb_subframes; cur_subframe >= 0; cur_subframe-- ) { int16_t move_size, subframe_size_outfs; move_size = slot_size_cng * hSpatParamRendCom->subframe_nbslots[cur_subframe]; subframe_size_outfs = hSpatParamRendCom->subframe_nbslots[cur_subframe] * hSpatParamRendCom->slot_size; /* move cna */ mvr2r( tdBuffer + cur_subframe_start_cngfs, tdBuffer + cur_subframe_start_outfs, move_size ); /* set everything else to zero */ set_zero( tdBuffer + cur_subframe_start_outfs + move_size, subframe_size_outfs - move_size ); } } #endif } pop_wmops(); return; Loading
lib_dec/ivas_dirac_dec.c +8 −0 Original line number Diff line number Diff line Loading @@ -1943,10 +1943,18 @@ void ivas_dirac_dec_render_sf( generate_masking_noise_dirac( st->hFdCngDec->hFdCngCom, st_ivas->cldfbAnaDec[1], #ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING &st_ivas->hTcBuffer->tc[1][hSpatParamRendCom->num_freq_bands * hSpatParamRendCom->slots_rendered], #else st_ivas->hTcBuffer->tc[1], #endif Cldfb_RealBuffer[1][0], Cldfb_ImagBuffer[1][0], #ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING slot_idx, #else index_slot, #endif st->cna_dirac_flag && st->flag_cna, ( st->core_brate == FRAME_NO_DATA || st->core_brate == SID_2k40 ) && st->cng_type == FD_CNG && st->cng_sba_flag ); } Loading
lib_dec/ivas_jbm_dec.c +1 −9 Original line number Diff line number Diff line Loading @@ -950,9 +950,6 @@ ivas_error ivas_jbm_dec_render( #ifdef SPLIT_REND_WITH_HEAD_ROT int16_t nchan_out_syn_output; #endif #ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING float tmp_output[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS][L_FRAME48k]; #endif push_wmops( "ivas_dec_render" ); /*----------------------------------------------------------------* Loading Loading @@ -990,12 +987,7 @@ ivas_error ivas_jbm_dec_render( p_tc[n] = &st_ivas->hTcBuffer->tc[n][st_ivas->hTcBuffer->n_samples_rendered]; } } #ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING for ( n = 0; n < MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS; n++ ) { p_output[n] = tmp_output[n]; } #endif /*----------------------------------------------------------------* * Update combined orientation access index *----------------------------------------------------------------*/ Loading
lib_dec/ivas_sba_dec.c +4 −0 Original line number Diff line number Diff line Loading @@ -759,7 +759,11 @@ void ivas_sba_dec_digest_tc( ( ( st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC ) && ( nchan_transport == 1 && st_ivas->nchan_transport != 2 && st_ivas->hSCE[0]->hCoreCoder[0] != NULL && st_ivas->hSCE[0]->hCoreCoder[0]->cng_sba_flag ) ) ) { Decoder_State *st = st_ivas->hSCE[0]->hCoreCoder[0]; #ifdef NONBE_FIX_951_MCMASA_5MS_RENDERING generate_masking_noise_lb_dirac( st->hFdCngDec->hFdCngCom, st_ivas->hTcBuffer->tc[1], nCldfbSlots, st_ivas->hSpatParamRendCom, st->cna_dirac_flag && st->flag_cna ); #else generate_masking_noise_lb_dirac( st->hFdCngDec->hFdCngCom, st_ivas->hTcBuffer->tc[1], nCldfbSlots, st->cna_dirac_flag && st->flag_cna ); #endif } return; Loading