Commit f2aaa722 authored by vaclav's avatar vaclav
Browse files

port FIX_NCHAN_BUFFERS andFIX_RENDERER_STACK

parent f58f5ee3
Loading
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">
+2 −0
Original line number Diff line number Diff line
@@ -189,6 +189,8 @@
#define FIX_1388_MSAN_ivas_init_decoder                 /* VA: issue 1388: fix use-of-uninitialized value in ivas_init_decoder() */
#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 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 TMP_FIX_SPLIT_REND                              // temporary fix to split-rendering (it follows the later state of the framework but it is needed now because of current test-conditions)
+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]; // VE2SB: TBV
#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 )
+0 −1
Original line number Diff line number Diff line
@@ -2313,7 +2313,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