Commit 829228ec authored by vaclav's avatar vaclav
Browse files

Merge branch...

Merge branch '2138-ref-PortMr2114-from-float-resolve-osba-object-editing-on-uninitialized-values' into 'ivas-float-update'

Port MR2114 and MR2222 from float to FLP-ref - Resolve "OSBA object-editing on uninitialized values

See merge request !2425
parents b1c0bbd9 9981ea82
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -469,11 +469,15 @@
    <ClCompile Include="..\lib_com\ivas_lfe_com.c">
      <Filter>common_ivas_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\ivas_rotation_com.c" />
    <ClCompile Include="..\lib_com\ivas_limiter.c" />
    <ClCompile Include="..\lib_com\ivas_osba_com.c">
      <Filter>common_ivas_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\ivas_rotation_com.c">
      <Filter>common_ivas_c</Filter>
    </ClCompile>
    <ClCompile Include="..\lib_com\ivas_limiter.c">
      <Filter>common_ivas_c</Filter>
    </ClCompile>
  </ItemGroup>
  <ItemGroup>
    <ClInclude Include="..\lib_com\basop_proto_func.h">
+3 −1
Original line number Diff line number Diff line
@@ -190,6 +190,8 @@
#define FIX_1288_SPLIT_REND_XSAN                        /* Dlb: Fix asan, msan and usan issues in split rendering mode*/
#define LIB_DEC_REVISION                                /* VA: cleaning and simplification of lib_dec.c */
#define UNIFIED_DECODING_PATHS_LEFTOVERS                /* VA: issue 880: remove leftovers after NONBE_UNIFIED_DECODING_PATHS */
#define FIX_NCHAN_BUFFERS                               /* VA: issue 1322: Correct the number of float buffers (channels) at the decoder */
#define FIX_RENDERER_STACK                              /* VA: issue 1322: reduction of renderers' buffers size */

// object-editing feature porting
#define FIX_HRTF_LOAD_API                               // solves API conflicts between HRTF and object-editing features
@@ -199,7 +201,7 @@
#define FIX_1217_OBJECT_EDIT_FILE_INTERFACE             /* Nokia: issue #1217: add decoder functionality to read object edit instructions from a file */
#define NONBE_1217_OBJ_EDIT_FOA                         /* VA/Nokia: isse 1217: fix crash in object editing to FOA output in ParamISM */
#define NONBE_FIX_1255_OBJ_EDIT_JBM                     /* VA: issue 1255: restore object editing in JBM */

#define FIX_1372_OSBA_OBJECT_EDITING                    /* VA: issue 1372: Fix OSBA object-editing in BINAURAL_ROOM_IR */

/* #################### End BASOP porting switches ############################ */

+23 −1
Original line number Diff line number Diff line
@@ -1552,7 +1552,12 @@ void ivas_dirac_dec_render(
    uint16_t slot_size, n_samples_sf, ch, nchan_intern;
    SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom;
    float *output_f_local[MAX_OUTPUT_CHANNELS];
#ifdef FIX_RENDERER_STACK
    float *p_output_f[MAX_OUTPUT_CHANNELS];
    float output_f_local_buff[MAX_OUTPUT_CHANNELS][L_FRAME48k / MAX_PARAM_SPATIAL_SUBFRAMES];
#else
    float output_f_local_buff[MAX_OUTPUT_CHANNELS][L_FRAME48k];
#endif

    hSpatParamRendCom = st_ivas->hSpatParamRendCom;

@@ -1563,7 +1568,11 @@ void ivas_dirac_dec_render(
    for ( ch = 0; ch < nchan_intern; ch++ )
    {
        output_f_local[ch] = output_f_local_buff[ch];
#ifdef FIX_RENDERER_STACK
        p_output_f[ch] = output_f[ch];
#else
        set_zero( output_f_local_buff[ch], nSamplesAsked );
#endif
    }
    slot_size = NS2SA( st_ivas->hDecoderConfig->output_Fs, CLDFB_SLOT_NS );

@@ -1585,16 +1594,29 @@ void ivas_dirac_dec_render(
    for ( subframe_idx = first_sf; subframe_idx < last_sf; subframe_idx++ )
    {
        ivas_dirac_dec_render_sf( st_ivas, output_f_local, nchan_transport, NULL, NULL );

        n_samples_sf = hSpatParamRendCom->subframe_nbslots[subframe_idx] * hSpatParamRendCom->slot_size;

        for ( ch = 0; ch < nchan_intern; ch++ )
        {
#ifdef FIX_RENDERER_STACK
            /* move to output */
            if ( !( ( st_ivas->hDirACRend->hOutSetup.separateChannelEnabled ) && ( st_ivas->hDirACRend->hOutSetup.separateChannelIndex == ch || st_ivas->hDirACRend->hOutSetup.separateChannelIndex + 1 == ch ) ) )
            {
                mvr2r( output_f_local_buff[ch], p_output_f[ch], n_samples_sf );
            }

            p_output_f[ch] += n_samples_sf;
#else
            output_f_local[ch] += n_samples_sf;
#endif
        }

        /* update combined orientation access index */
        ivas_combined_orientation_update_index( st_ivas->hCombinedOrientationData, n_samples_sf );
    }

#ifndef FIX_RENDERER_STACK
    for ( ch = 0; ch < nchan_intern; ch++ )
    {
        if ( !( ( st_ivas->hDirACRend->hOutSetup.separateChannelEnabled ) && ( st_ivas->hDirACRend->hOutSetup.separateChannelIndex == ch || st_ivas->hDirACRend->hOutSetup.separateChannelIndex + 1 == ch ) ) )
@@ -1602,7 +1624,7 @@ void ivas_dirac_dec_render(
            mvr2r( output_f_local_buff[ch], output_f[ch], *nSamplesRendered );
        }
    }

#endif
    if ( hSpatParamRendCom->slots_rendered == hSpatParamRendCom->num_slots )
    {
        if ( st_ivas->hDirAC->hConfig->dec_param_estim == 1 )
+6 −1
Original line number Diff line number Diff line
@@ -489,7 +489,7 @@ ivas_error ivas_dec_setup(
    }

    /*-------------------------------------------------------------------*
     * Read other signling (ISM/MC mode, number of channels, etc.)
     * Read other signaling (ISM/MC mode, number of channels, etc.)
     *-------------------------------------------------------------------*/

    if ( is_DTXrate( ivas_total_brate ) == 0 )
@@ -2428,7 +2428,12 @@ ivas_error ivas_init_decoder(
     * Allocate floating-point output audio buffers
     *-----------------------------------------------------------------*/

#ifdef FIX_NCHAN_BUFFERS
    k = ivas_get_nchan_buffers_dec( st_ivas, st_ivas->sba_analysis_order, st_ivas->hDecoderConfig->ivas_total_brate );
    for ( n = 0; n < k; n++ )
#else
    for ( n = 0; n < ivas_get_nchan_buffers_dec( st_ivas, st_ivas->sba_analysis_order, st_ivas->hDecoderConfig->ivas_total_brate ); n++ )
#endif
    {
        /* note: these are intra-frame heap memories */
        if ( ( st_ivas->p_output_f[n] = (float *) malloc( ( 48000 / FRAMES_PER_SEC ) * sizeof( float ) ) ) == NULL )
+5 −1
Original line number Diff line number Diff line
@@ -859,7 +859,12 @@ void ivas_jbm_dec_feed_tc_to_renderer(
            p_data_f[n] = &st_ivas->p_output_f[n][0];
        }

#ifdef FIX_NCHAN_BUFFERS
        ch = ivas_get_nchan_buffers_dec( st_ivas, st_ivas->sba_analysis_order, st_ivas->hDecoderConfig->ivas_total_brate );
        for ( n = 0; n < ch; n++ )
#else
        for ( n = 0; n < ivas_get_nchan_buffers_dec( st_ivas, st_ivas->sba_analysis_order, st_ivas->hDecoderConfig->ivas_total_brate ); n++ )
#endif
        {
            hTcBuffer->tc[n] = st_ivas->p_output_f[n]; /* note: buffers needed in the TD decorellator */
        }
@@ -2464,7 +2469,6 @@ ivas_error ivas_jbm_dec_tc_buffer_reconfigure(

    hTcBuffer = st_ivas->hTcBuffer;


    /* if granularity changes, adapt subframe_nb_slots */
    if ( n_samples_granularity != hTcBuffer->n_samples_granularity )
    {
Loading