Loading lib_com/ivas_prot.h +12 −0 Original line number Diff line number Diff line Loading @@ -5611,6 +5611,18 @@ ivas_error ivas_osba_render_sf( float *output_f[] /* o : rendered time signal */ ); #ifdef FIX_1849_OBJ_EDITING_API void ivas_osba_stereo_add_channels( float *tc_f[], /* i : transport channels */ float *output_f[], /* i/o: output channels */ const float gain, /* i : gain bed value */ const int16_t nchan_out, /* i : number of output channels */ const int16_t nchan_ism, /* i : number of ISM channels */ const int16_t ism_mode, /* i : ISM mode */ const int16_t n_samples_to_render /* i : output frame length per channel */ ); #endif void ivas_osba_data_close( SBA_ISM_DATA_HANDLE *hSbaIsmData /* i/o: OSBA rendering handle */ ); Loading lib_com/options.h +2 −0 Original line number Diff line number Diff line Loading @@ -205,6 +205,8 @@ #define NONBE_FIX_981_PARAMBIN_DEFAULT_EARLY_PART /* Nokia: Set default early part energy correction to unity for BINAURAL_ROOM_REVERB */ #define NONBE_FIX_1174_MCMASA_LBR_LOOP_ERROR /* Nokia: Fix issue 1174 by removing the unnecessary inner loop causing problems. */ #define FIX_1849_OBJ_EDITING_API /* #################### End BASOP porting switches ############################ */ /* clang-format on */ Loading lib_dec/ivas_jbm_dec.c +4 −0 Original line number Diff line number Diff line Loading @@ -1238,10 +1238,14 @@ ivas_error ivas_jbm_dec_render( ivas_ism_render_sf( st_ivas, st_ivas->renderer_type, p_output, *nSamplesRendered ); /* add already rendered SBA part */ #ifdef FIX_1849_OBJ_EDITING_API ivas_osba_stereo_add_channels( p_tc, p_output, 1.0f, nchan_out, st_ivas->nchan_ism, st_ivas->ism_mode, *nSamplesRendered ); #else for ( n = 0; n < nchan_out; n++ ) { v_add( p_output[n], p_tc[n + st_ivas->nchan_ism], p_output[n], *nSamplesRendered ); } #endif } else if ( st_ivas->renderer_type == RENDERER_OSBA_AMBI || st_ivas->renderer_type == RENDERER_OSBA_LS || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) { Loading lib_dec/ivas_osba_dec.c +45 −0 Original line number Diff line number Diff line Loading @@ -302,3 +302,48 @@ ivas_error ivas_osba_render_sf( return IVAS_ERR_OK; } #ifdef FIX_1849_OBJ_EDITING_API /*-------------------------------------------------------------------------* * ivas_osba_stereo_add_channels() * * *-------------------------------------------------------------------------*/ void ivas_osba_stereo_add_channels( float *tc_f[], /* i : transport channels */ float *output_f[], /* i/o: output channels */ const float gain, /* i : gain bed value */ const int16_t nchan_out, /* i : number of output channels */ const int16_t nchan_ism, /* i : number of ISM channels */ const int16_t ism_mode, /* i : ISM mode */ const int16_t n_samples_to_render /* i : output frame length per channel */ ) { int16_t n; if ( ism_mode == ISM_SBA_MODE_DISC ) { if ( gain != 1.0f ) { assert(0 && "Object editing is not implemented in this branch!"); } else { for ( n = 0; n < nchan_out; n++ ) { v_add( output_f[n], tc_f[n + nchan_ism], output_f[n], n_samples_to_render ); } } } else { for ( n = 0; n < nchan_out; n++ ) { v_add( output_f[n], tc_f[n + nchan_ism], output_f[n], n_samples_to_render ); } } return; } #endif No newline at end of file Loading
lib_com/ivas_prot.h +12 −0 Original line number Diff line number Diff line Loading @@ -5611,6 +5611,18 @@ ivas_error ivas_osba_render_sf( float *output_f[] /* o : rendered time signal */ ); #ifdef FIX_1849_OBJ_EDITING_API void ivas_osba_stereo_add_channels( float *tc_f[], /* i : transport channels */ float *output_f[], /* i/o: output channels */ const float gain, /* i : gain bed value */ const int16_t nchan_out, /* i : number of output channels */ const int16_t nchan_ism, /* i : number of ISM channels */ const int16_t ism_mode, /* i : ISM mode */ const int16_t n_samples_to_render /* i : output frame length per channel */ ); #endif void ivas_osba_data_close( SBA_ISM_DATA_HANDLE *hSbaIsmData /* i/o: OSBA rendering handle */ ); Loading
lib_com/options.h +2 −0 Original line number Diff line number Diff line Loading @@ -205,6 +205,8 @@ #define NONBE_FIX_981_PARAMBIN_DEFAULT_EARLY_PART /* Nokia: Set default early part energy correction to unity for BINAURAL_ROOM_REVERB */ #define NONBE_FIX_1174_MCMASA_LBR_LOOP_ERROR /* Nokia: Fix issue 1174 by removing the unnecessary inner loop causing problems. */ #define FIX_1849_OBJ_EDITING_API /* #################### End BASOP porting switches ############################ */ /* clang-format on */ Loading
lib_dec/ivas_jbm_dec.c +4 −0 Original line number Diff line number Diff line Loading @@ -1238,10 +1238,14 @@ ivas_error ivas_jbm_dec_render( ivas_ism_render_sf( st_ivas, st_ivas->renderer_type, p_output, *nSamplesRendered ); /* add already rendered SBA part */ #ifdef FIX_1849_OBJ_EDITING_API ivas_osba_stereo_add_channels( p_tc, p_output, 1.0f, nchan_out, st_ivas->nchan_ism, st_ivas->ism_mode, *nSamplesRendered ); #else for ( n = 0; n < nchan_out; n++ ) { v_add( p_output[n], p_tc[n + st_ivas->nchan_ism], p_output[n], *nSamplesRendered ); } #endif } else if ( st_ivas->renderer_type == RENDERER_OSBA_AMBI || st_ivas->renderer_type == RENDERER_OSBA_LS || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) { Loading
lib_dec/ivas_osba_dec.c +45 −0 Original line number Diff line number Diff line Loading @@ -302,3 +302,48 @@ ivas_error ivas_osba_render_sf( return IVAS_ERR_OK; } #ifdef FIX_1849_OBJ_EDITING_API /*-------------------------------------------------------------------------* * ivas_osba_stereo_add_channels() * * *-------------------------------------------------------------------------*/ void ivas_osba_stereo_add_channels( float *tc_f[], /* i : transport channels */ float *output_f[], /* i/o: output channels */ const float gain, /* i : gain bed value */ const int16_t nchan_out, /* i : number of output channels */ const int16_t nchan_ism, /* i : number of ISM channels */ const int16_t ism_mode, /* i : ISM mode */ const int16_t n_samples_to_render /* i : output frame length per channel */ ) { int16_t n; if ( ism_mode == ISM_SBA_MODE_DISC ) { if ( gain != 1.0f ) { assert(0 && "Object editing is not implemented in this branch!"); } else { for ( n = 0; n < nchan_out; n++ ) { v_add( output_f[n], tc_f[n + nchan_ism], output_f[n], n_samples_to_render ); } } } else { for ( n = 0; n < nchan_out; n++ ) { v_add( output_f[n], tc_f[n + nchan_ism], output_f[n], n_samples_to_render ); } } return; } #endif No newline at end of file