Commit 187bdc2b authored by Dominik Weckbecker's avatar Dominik Weckbecker 💬
Browse files

port required part of object-editing API under FIX_189_OBJ_EDITING_API

parent a85ad5d8
Loading
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -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                   */
);
+2 −0
Original line number Diff line number Diff line
@@ -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 */
+4 −0
Original line number Diff line number Diff line
@@ -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 )
            {
+45 −0
Original line number Diff line number Diff line
@@ -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