Commit 98bdee84 authored by vaclav's avatar vaclav
Browse files
parents 470ce0f5 b408c3b4
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -53,7 +53,7 @@ fi
# Replace only the first occurrence, as "basop" may be present in the later description
# Replace only the first occurrence, as "basop" may be present in the later description
# If the format is correct, then before "_basop", only numbers can occur
# If the format is correct, then before "_basop", only numbers can occur
float_ref_branchname="${branchname/basop/ref}"
float_ref_branchname="${branchname/basop/ref}"
git_result=$(git branch -av)
git_result=$(git branch -a)


# If the branch does not exist, default to "float-pc"
# If the branch does not exist, default to "float-pc"
if [[ "$git_result" =~ "$float_ref_branchname" ]]; then
if [[ "$git_result" =~ "$float_ref_branchname" ]]; then
+5 −0
Original line number Original line Diff line number Diff line
@@ -3706,8 +3706,13 @@ void ivas_dirac_dec_render_sf(
    Decoder_Struct *st_ivas,                                    /* i/o: IVAS decoder structure                  */
    Decoder_Struct *st_ivas,                                    /* i/o: IVAS decoder structure                  */
    float *output_f[],                                          /* i/o: synthesized core-coder transport channels/DirAC output  */
    float *output_f[],                                          /* i/o: synthesized core-coder transport channels/DirAC output  */
    const int16_t nchan_transport,                              /* i  : number of transport channels            */
    const int16_t nchan_transport,                              /* i  : number of transport channels            */
#ifdef FIX_1319_STACK_SBA_DECODER
    float *pppQMfFrame_ts_re[HOA3_CHANNELS][CLDFB_NO_COL_MAX],
    float *pppQMfFrame_ts_im[HOA3_CHANNELS][CLDFB_NO_COL_MAX]
#else
    float *pppQMfFrame_ts_re[IVAS_MAX_FB_MIXER_IN_CH][CLDFB_NO_COL_MAX],
    float *pppQMfFrame_ts_re[IVAS_MAX_FB_MIXER_IN_CH][CLDFB_NO_COL_MAX],
    float *pppQMfFrame_ts_im[IVAS_MAX_FB_MIXER_IN_CH][CLDFB_NO_COL_MAX]
    float *pppQMfFrame_ts_im[IVAS_MAX_FB_MIXER_IN_CH][CLDFB_NO_COL_MAX]
#endif
);
);


void computeDiffuseness_mdft(
void computeDiffuseness_mdft(
+1 −0
Original line number Original line Diff line number Diff line
@@ -164,6 +164,7 @@
#define FIX_1320_STACK_CPE_DECODER                      /* VA: issue 1320: Optimize the stack memory consumption in the CPE decoder */
#define FIX_1320_STACK_CPE_DECODER                      /* VA: issue 1320: Optimize the stack memory consumption in the CPE decoder */
#define FIX_NCHAN_BUFFERS                               /* VA: issue 1322: Correct the number of float buffers (channels) at the decoder */
#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 */
#define FIX_RENDERER_STACK                              /* VA: issue 1322: reduction of renderers' buffers size */
#define FIX_1319_STACK_SBA_DECODER                      /* VA: issue 1319: Optimize the definition of buffer lengths in the SBA decoder */


/* #################### End BE switches ################################## */
/* #################### End BE switches ################################## */


+131 −2
Original line number Original line Diff line number Diff line
@@ -1644,6 +1644,80 @@ void ivas_dirac_dec_render(
    return;
    return;
}
}


#ifdef FIX_1319_STACK_SBA_DECODER
/*-------------------------------------------------------------------------
 * Local functions to perform binaural rendering with optimized stack
 *------------------------------------------------------------------------*/

static void binRenderer_split(
    BINAURAL_RENDERER_HANDLE hBinRenderer,                                                                    /* i/o: binaural renderer handle                      */
    ISAR_DEC_SPLIT_REND_WRAPPER_HANDLE hSplitBinRend,                                                         /* i/o: ISAR split binaural rendering handle          */
    COMBINED_ORIENTATION_HANDLE hCombinedOrientationData,                                                     /* i  : combined head and external orientation handle */
    const int16_t numTimeSlots,                                                                               /* i  : number of time slots to render                */
    float Cldfb_RealBuffer_Binaural[][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o  : Rotated Binaural signals                      */
    float Cldfb_ImagBuffer_Binaural[][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o  : Rotated Binaural signals                      */
    float RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX],                                   /* i  : LS signals                                    */
    float ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX],                                   /* i  : LS signals                                    */
    const int16_t slot_idx_start,
    const int16_t num_freq_bands,
    const int16_t nchan_out )
{
    int16_t pos_idx, slot_idx, ch;
    float Cldfb_RealBuffer_Binaural_loc[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX];
    float Cldfb_ImagBuffer_Binaural_loc[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX];

    /* Perform binaural rendering */
    ivas_binRenderer( hBinRenderer, &hSplitBinRend->splitrend.multiBinPoseData, hCombinedOrientationData, numTimeSlots,
#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG
                      NULL,
#endif
                      Cldfb_RealBuffer_Binaural_loc, Cldfb_ImagBuffer_Binaural_loc, RealBuffer, ImagBuffer );

    for ( slot_idx = 0; slot_idx < numTimeSlots; slot_idx++ )
    {
        for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ )
        {
            mvr2r( Cldfb_RealBuffer_Binaural_loc[0][ch][slot_idx], Cldfb_RealBuffer_Binaural[0][ch][slot_idx], num_freq_bands );
            mvr2r( Cldfb_ImagBuffer_Binaural_loc[0][ch][slot_idx], Cldfb_ImagBuffer_Binaural[0][ch][slot_idx], num_freq_bands );
        }
    }

    for ( pos_idx = 0; pos_idx < hBinRenderer->numPoses; pos_idx++ )
    {
        for ( slot_idx = 0; slot_idx < numTimeSlots; slot_idx++ )
        {
            for ( ch = 0; ch < nchan_out; ch++ )
            {
                mvr2r( Cldfb_RealBuffer_Binaural_loc[pos_idx][ch][slot_idx], hSplitBinRend->hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[( pos_idx * BINAURAL_CHANNELS ) + ch][slot_idx_start + slot_idx], num_freq_bands );
                mvr2r( Cldfb_ImagBuffer_Binaural_loc[pos_idx][ch][slot_idx], hSplitBinRend->hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[( pos_idx * BINAURAL_CHANNELS ) + ch][slot_idx_start + slot_idx], num_freq_bands );
            }
        }
    }

    return;
}


static void binRenderer(
    BINAURAL_RENDERER_HANDLE hBinRenderer,                                                                    /* i/o: binaural renderer handle                      */
    COMBINED_ORIENTATION_HANDLE hCombinedOrientationData,                                                     /* i  : combined head and external orientation handle */
    const int16_t numTimeSlots,                                                                               /* i  : number of time slots to render                */
    float Cldfb_RealBuffer_Binaural[][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o  : Rotated Binaural signals                      */
    float Cldfb_ImagBuffer_Binaural[][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o  : Rotated Binaural signals                      */
    float RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX],                                   /* i  : LS signals                                    */
    float ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]                                    /* i  : LS signals                                    */
)
{
    /* Perform binaural rendering */
    ivas_binRenderer( hBinRenderer, NULL, hCombinedOrientationData, numTimeSlots,
#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG
                      NULL,
#endif
                      Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, RealBuffer, ImagBuffer );

    return;
}
#endif


/*-------------------------------------------------------------------------
/*-------------------------------------------------------------------------
 * ivas_dirac_dec_render_sf()
 * ivas_dirac_dec_render_sf()
@@ -1655,8 +1729,14 @@ void ivas_dirac_dec_render_sf(
    Decoder_Struct *st_ivas,       /* i/o: IVAS decoder structure                                  */
    Decoder_Struct *st_ivas,       /* i/o: IVAS decoder structure                                  */
    float *output_f[],             /* i/o: synthesized core-coder transport channels/DirAC output  */
    float *output_f[],             /* i/o: synthesized core-coder transport channels/DirAC output  */
    const int16_t nchan_transport, /* i  : number of transport channels                            */
    const int16_t nchan_transport, /* i  : number of transport channels                            */
#ifdef FIX_1319_STACK_SBA_DECODER
    float *pppQMfFrame_ts_re[HOA3_CHANNELS][CLDFB_NO_COL_MAX],
    float *pppQMfFrame_ts_im[HOA3_CHANNELS][CLDFB_NO_COL_MAX]
#else
    float *pppQMfFrame_ts_re[IVAS_MAX_FB_MIXER_IN_CH][CLDFB_NO_COL_MAX],
    float *pppQMfFrame_ts_re[IVAS_MAX_FB_MIXER_IN_CH][CLDFB_NO_COL_MAX],
    float *pppQMfFrame_ts_im[IVAS_MAX_FB_MIXER_IN_CH][CLDFB_NO_COL_MAX] )
    float *pppQMfFrame_ts_im[IVAS_MAX_FB_MIXER_IN_CH][CLDFB_NO_COL_MAX]
#endif
)
{
{
    int16_t i, ch, idx_in, idx_lfe;
    int16_t i, ch, idx_in, idx_lfe;
    DIRAC_DEC_HANDLE hDirAC;
    DIRAC_DEC_HANDLE hDirAC;
@@ -1670,13 +1750,20 @@ void ivas_dirac_dec_render_sf(
    float *p_Rmat;
    float *p_Rmat;
    int16_t slot_idx_start, slot_idx_start_cldfb_synth, md_idx;
    int16_t slot_idx_start, slot_idx_start_cldfb_synth, md_idx;


    /*CLDFB: last output channels reserved to LFT for CICPx*/
    /*CLDFB: last output channels reserved to LFE for CICPx*/
#ifdef FIX_1319_STACK_SBA_DECODER
    float Cldfb_RealBuffer[MAX_OUTPUT_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX];
    float Cldfb_ImagBuffer[MAX_OUTPUT_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX];
    float Cldfb_RealBuffer_Binaural[1][BINAURAL_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX];
    float Cldfb_ImagBuffer_Binaural[1][BINAURAL_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX];
#else
    float Cldfb_RealBuffer[MAX_OUTPUT_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX];
    float Cldfb_RealBuffer[MAX_OUTPUT_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX];
    float Cldfb_ImagBuffer[MAX_OUTPUT_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX];
    float Cldfb_ImagBuffer[MAX_OUTPUT_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX];
    float Cldfb_RealBuffer_Binaural[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX];
    float Cldfb_RealBuffer_Binaural[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX];
    float Cldfb_ImagBuffer_Binaural[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX];
    float Cldfb_ImagBuffer_Binaural[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX];
    float Cldfb_RealBuffer_Temp[2][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX];
    float Cldfb_RealBuffer_Temp[2][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX];
    float Cldfb_ImagBuffer_Temp[2][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX];
    float Cldfb_ImagBuffer_Temp[2][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX];
#endif
    int16_t index, num_freq_bands;
    int16_t index, num_freq_bands;


    /* local copies of azi, ele, diffuseness */
    /* local copies of azi, ele, diffuseness */
@@ -1853,17 +1940,29 @@ void ivas_dirac_dec_render_sf(
            /* CLDFB Analysis*/
            /* CLDFB Analysis*/
            for ( ch = 0; ch < nchan_transport; ch++ )
            for ( ch = 0; ch < nchan_transport; ch++ )
            {
            {
#ifdef FIX_1319_STACK_SBA_DECODER
                cldfbAnalysis_ts( &( st_ivas->hTcBuffer->tc[hDirACRend->sba_map_tc[ch]][hSpatParamRendCom->num_freq_bands * index_slot] ),
                                  Cldfb_RealBuffer_Binaural[0][ch][slot_idx], /* note: it is a tmp. buffer at this point */
                                  Cldfb_ImagBuffer_Binaural[0][ch][slot_idx], /* note: it is a tmp. buffer at this point */
                                  hSpatParamRendCom->num_freq_bands,
                                  st_ivas->cldfbAnaDec[ch] );
#else
                cldfbAnalysis_ts( &( st_ivas->hTcBuffer->tc[hDirACRend->sba_map_tc[ch]][hSpatParamRendCom->num_freq_bands * index_slot] ),
                cldfbAnalysis_ts( &( st_ivas->hTcBuffer->tc[hDirACRend->sba_map_tc[ch]][hSpatParamRendCom->num_freq_bands * index_slot] ),
                                  Cldfb_RealBuffer_Temp[ch][slot_idx],
                                  Cldfb_RealBuffer_Temp[ch][slot_idx],
                                  Cldfb_ImagBuffer_Temp[ch][slot_idx],
                                  Cldfb_ImagBuffer_Temp[ch][slot_idx],
                                  hSpatParamRendCom->num_freq_bands,
                                  hSpatParamRendCom->num_freq_bands,
                                  st_ivas->cldfbAnaDec[ch] );
                                  st_ivas->cldfbAnaDec[ch] );
#endif
            }
            }
        }
        }


        if ( st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ )
        if ( st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ )
        {
        {
#ifdef FIX_1319_STACK_SBA_DECODER
            ivas_omasa_preProcessStereoTransportsForEditedObjects( st_ivas, Cldfb_RealBuffer_Binaural[0], Cldfb_ImagBuffer_Binaural[0], hSpatParamRendCom->num_freq_bands, subframe_idx );
#else
            ivas_omasa_preProcessStereoTransportsForEditedObjects( st_ivas, Cldfb_RealBuffer_Temp, Cldfb_ImagBuffer_Temp, hSpatParamRendCom->num_freq_bands, subframe_idx );
            ivas_omasa_preProcessStereoTransportsForEditedObjects( st_ivas, Cldfb_RealBuffer_Temp, Cldfb_ImagBuffer_Temp, hSpatParamRendCom->num_freq_bands, subframe_idx );
#endif
        }
        }
    }
    }


@@ -1890,8 +1989,13 @@ void ivas_dirac_dec_render_sf(
        {
        {
            for ( ch = 0; ch < nchan_transport; ch++ )
            for ( ch = 0; ch < nchan_transport; ch++ )
            {
            {
#ifdef FIX_1319_STACK_SBA_DECODER
                mvr2r( Cldfb_RealBuffer_Binaural[0][ch][slot_idx], Cldfb_RealBuffer[ch][0], hSpatParamRendCom->num_freq_bands );
                mvr2r( Cldfb_ImagBuffer_Binaural[0][ch][slot_idx], Cldfb_ImagBuffer[ch][0], hSpatParamRendCom->num_freq_bands );
#else
                mvr2r( Cldfb_RealBuffer_Temp[ch][slot_idx], Cldfb_RealBuffer[ch][0], hSpatParamRendCom->num_freq_bands );
                mvr2r( Cldfb_RealBuffer_Temp[ch][slot_idx], Cldfb_RealBuffer[ch][0], hSpatParamRendCom->num_freq_bands );
                mvr2r( Cldfb_ImagBuffer_Temp[ch][slot_idx], Cldfb_ImagBuffer[ch][0], hSpatParamRendCom->num_freq_bands );
                mvr2r( Cldfb_ImagBuffer_Temp[ch][slot_idx], Cldfb_ImagBuffer[ch][0], hSpatParamRendCom->num_freq_bands );
#endif
            }
            }
        }
        }
        else
        else
@@ -2334,6 +2438,20 @@ void ivas_dirac_dec_render_sf(
            }
            }
        }
        }


#ifdef FIX_1319_STACK_SBA_DECODER
        /* Perform binaural rendering */
        if ( st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM )
        {
            binRenderer_split( st_ivas->hBinRenderer, st_ivas->hSplitBinRend, st_ivas->hCombinedOrientationData, hSpatParamRendCom->subframe_nbslots[subframe_idx],
                               Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, Cldfb_RealBuffer, Cldfb_ImagBuffer, slot_idx_start, hSpatParamRendCom->num_freq_bands, st_ivas->hDecoderConfig->nchan_out );
        }
        else
        {
            binRenderer( st_ivas->hBinRenderer, st_ivas->hCombinedOrientationData, hSpatParamRendCom->subframe_nbslots[subframe_idx],
                         Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, Cldfb_RealBuffer, Cldfb_ImagBuffer );
        }

#else
        /* Perform binaural rendering */
        /* Perform binaural rendering */
        ivas_binRenderer( st_ivas->hBinRenderer, ( st_ivas->hSplitBinRend == NULL ) ? NULL : &st_ivas->hSplitBinRend->splitrend.multiBinPoseData, st_ivas->hCombinedOrientationData, hSpatParamRendCom->subframe_nbslots[subframe_idx],
        ivas_binRenderer( st_ivas->hBinRenderer, ( st_ivas->hSplitBinRend == NULL ) ? NULL : &st_ivas->hSplitBinRend->splitrend.multiBinPoseData, st_ivas->hCombinedOrientationData, hSpatParamRendCom->subframe_nbslots[subframe_idx],
#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG
#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG
@@ -2356,13 +2474,19 @@ void ivas_dirac_dec_render_sf(
                }
                }
            }
            }
        }
        }
#endif


        /* Inverse CLDFB*/
        /* Inverse CLDFB*/
        for ( ch = 0; ch < st_ivas->hDecoderConfig->nchan_out; ch++ )
        for ( ch = 0; ch < st_ivas->hDecoderConfig->nchan_out; ch++ )
        {
        {
            /* open CLDFB buffer up to CLDFB_NO_CHANNELS_MAX bands for 48kHz */
            /* open CLDFB buffer up to CLDFB_NO_CHANNELS_MAX bands for 48kHz */
#ifdef FIX_1319_STACK_SBA_DECODER
            float *RealBuffer[CLDFB_SLOTS_PER_SUBFRAME];
            float *ImagBuffer[CLDFB_SLOTS_PER_SUBFRAME];
#else
            float *RealBuffer[MAX_PARAM_SPATIAL_SUBFRAMES];
            float *RealBuffer[MAX_PARAM_SPATIAL_SUBFRAMES];
            float *ImagBuffer[MAX_PARAM_SPATIAL_SUBFRAMES];
            float *ImagBuffer[MAX_PARAM_SPATIAL_SUBFRAMES];
#endif


            for ( i = 0; i < hSpatParamRendCom->subframe_nbslots[subframe_idx]; i++ )
            for ( i = 0; i < hSpatParamRendCom->subframe_nbslots[subframe_idx]; i++ )
            {
            {
@@ -2386,8 +2510,13 @@ void ivas_dirac_dec_render_sf(
    }
    }
    else
    else
    {
    {
#ifdef FIX_1319_STACK_SBA_DECODER
        float *RealBuffer[CLDFB_SLOTS_PER_SUBFRAME];
        float *ImagBuffer[CLDFB_SLOTS_PER_SUBFRAME];
#else
        float *RealBuffer[MAX_PARAM_SPATIAL_SUBFRAMES];
        float *RealBuffer[MAX_PARAM_SPATIAL_SUBFRAMES];
        float *ImagBuffer[MAX_PARAM_SPATIAL_SUBFRAMES];
        float *ImagBuffer[MAX_PARAM_SPATIAL_SUBFRAMES];
#endif
        int16_t outchannels;
        int16_t outchannels;


        idx_in = 0;
        idx_in = 0;
+17 −0
Original line number Original line Diff line number Diff line
@@ -1367,15 +1367,28 @@ void ivas_spar_dec_upmixer_sf(
)
)
{
{
    int16_t cldfb_band, num_cldfb_bands, numch_in, numch_out;
    int16_t cldfb_band, num_cldfb_bands, numch_in, numch_out;
#ifdef FIX_1319_STACK_SBA_DECODER
    float *cldfb_in_ts_re[HOA3_CHANNELS][CLDFB_NO_COL_MAX];
    float *cldfb_in_ts_im[HOA3_CHANNELS][CLDFB_NO_COL_MAX];
#else
    float *cldfb_in_ts_re[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS][CLDFB_NO_COL_MAX];
    float *cldfb_in_ts_re[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS][CLDFB_NO_COL_MAX];
    float *cldfb_in_ts_im[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS][CLDFB_NO_COL_MAX];
    float *cldfb_in_ts_im[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS][CLDFB_NO_COL_MAX];
#endif
    int16_t i, b, ts, out_ch, in_ch;
    int16_t i, b, ts, out_ch, in_ch;
    int16_t num_spar_bands, spar_band, nchan_transport;
    int16_t num_spar_bands, spar_band, nchan_transport;
    int16_t num_in_ingest, split_band;
    int16_t num_in_ingest, split_band;
    int16_t slot_size, slot_idx_start;
    int16_t slot_size, slot_idx_start;
#ifdef FIX_1319_STACK_SBA_DECODER
    float *p_tc[HOA3_CHANNELS];
#else
    float *p_tc[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS];
    float *p_tc[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS];
#endif
    int16_t md_idx;
    int16_t md_idx;
#ifdef FIX_1319_STACK_SBA_DECODER
    float Pcm_tmp[HOA3_CHANNELS][2 /* Re, Im*/ * L_FRAME48k / MAX_PARAM_SPATIAL_SUBFRAMES];
#else
    float Pcm_tmp[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS][L_FRAME48k];
    float Pcm_tmp[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS][L_FRAME48k];
#endif
    int16_t numch_out_dirac;
    int16_t numch_out_dirac;
    float mixer_mat[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH][IVAS_MAX_NUM_BANDS];
    float mixer_mat[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH][IVAS_MAX_NUM_BANDS];
    int16_t b_skip_mat[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH];
    int16_t b_skip_mat[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH];
@@ -1490,7 +1503,11 @@ void ivas_spar_dec_upmixer_sf(
    if ( hDecoderConfig->output_config != IVAS_AUDIO_CONFIG_FOA )
    if ( hDecoderConfig->output_config != IVAS_AUDIO_CONFIG_FOA )
    {
    {
        /* at this point, output channels are used as intermediate procesing buffers */
        /* at this point, output channels are used as intermediate procesing buffers */
#ifdef FIX_1319_STACK_SBA_DECODER
        for ( in_ch = 0; in_ch < HOA3_CHANNELS; in_ch++ )
#else
        for ( in_ch = 0; in_ch < MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS; in_ch++ )
        for ( in_ch = 0; in_ch < MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS; in_ch++ )
#endif
        {
        {
            for ( ts = 0; ts < MAX_PARAM_SPATIAL_SUBFRAMES; ts++ )
            for ( ts = 0; ts < MAX_PARAM_SPATIAL_SUBFRAMES; ts++ )
            {
            {
Loading