Commit 206e675b authored by TYAGIRIS's avatar TYAGIRIS
Browse files

stack optimization with default rend options

parent 775112f0
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -209,6 +209,7 @@
#define ROM_TO_RAM                                      /*switch to convert CQMF decoder tables to RAM*/
#define SPLIT_REND_CLANG_SAN_FIX
#define SPLIT_REND_CLDFB_HUFF_SAN_FIX
#define SPLIT_REND_STACK_OPT
#endif

/* ################## End DEVELOPMENT switches ######################### */
+45 −6
Original line number Diff line number Diff line
@@ -6077,6 +6077,30 @@ static ivas_error renderSbaToMultiBinaural(
}
#endif

#ifdef SPLIT_REND_STACK_OPT
static ivas_error renderSbaToMultiBinauralCldfb( input_sba *sbaInput,
                                                 float Cldfb_Out_Real[][BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX],
                                                 float Cldfb_Out_Imag[][BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX],
                                                 const int16_t low_res_pre_rend_rot )
{
    float Cldfb_RealBuffer[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX];
    float Cldfb_ImagBuffer[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX];

    copyBufferToCLDFBarray( sbaInput->base.inputBuffer, Cldfb_RealBuffer, Cldfb_ImagBuffer );

    ivas_rend_CldfbMultiBinRendProcess(
        sbaInput->cldfbRendWrapper.hCldfbRend,
        sbaInput->base.ctx.pHeadRotData,
        &sbaInput->splitRendWrapper.multiBinPoseData,
        Cldfb_RealBuffer,
        Cldfb_ImagBuffer,
        Cldfb_Out_Real,
        Cldfb_Out_Imag,
        low_res_pre_rend_rot );
    return IVAS_ERR_OK;
}
#endif

static ivas_error renderSbaToSplitBinaural(
    input_sba *sbaInput,
#ifdef SPLIT_REND_WITH_HEAD_ROT
@@ -6112,6 +6136,13 @@ static ivas_error renderSbaToSplitBinaural(
#if ( defined DEBUGGING ) || ( defined SPLIT_REND_WITH_HEAD_ROT )
    if ( sbaInput->base.ctx.hhRendererConfig[0]->renderer_type_override == RENDER_TYPE_OVERRIDE_FASTCONV )
    {

#ifdef SPLIT_REND_STACK_OPT
        renderSbaToMultiBinauralCldfb( sbaInput,
                                       Cldfb_RealBuffer_Binaural,
                                       Cldfb_ImagBuffer_Binaural,
                                       low_res_pre_rend_rot );
#else
        float Cldfb_RealBuffer[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX];
        float Cldfb_ImagBuffer[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX];

@@ -6126,6 +6157,7 @@ static ivas_error renderSbaToSplitBinaural(
            Cldfb_RealBuffer_Binaural,
            Cldfb_ImagBuffer_Binaural,
            low_res_pre_rend_rot );
#endif
        max_band = sbaInput->cldfbRendWrapper.hCldfbRend->max_band;
    }
    else
@@ -6164,13 +6196,12 @@ static ivas_error renderSbaToSplitBinaural(
}
#endif

static ivas_error renderSbaToBinaural(
static ivas_error
renderSbaToBinaural(
    input_sba *sbaInput,
    const IVAS_REND_AudioConfig outConfig,
    IVAS_REND_AudioBuffer outAudio )
{
    float tmpCrendBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k];

    ivas_error error;
    IVAS_REND_AudioBuffer tmpRotBuffer;

@@ -6179,10 +6210,16 @@ static ivas_error renderSbaToBinaural(
#if defined DEBUGGING && defined SPLIT_REND_WITH_HEAD_ROT
    if ( sbaInput->base.ctx.hhRendererConfig[0]->renderer_type_override == RENDER_TYPE_OVERRIDE_FASTCONV )
    {
        float Cldfb_RealBuffer[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX];
        float Cldfb_ImagBuffer[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX];
        float Cldfb_RealBuffer_Binaural[1][BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX];
        float Cldfb_ImagBuffer_Binaural[1][BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX];
#ifdef SPLIT_REND_STACK_OPT
        renderSbaToMultiBinauralCldfb( sbaInput,
                                       Cldfb_RealBuffer_Binaural,
                                       Cldfb_ImagBuffer_Binaural,
                                       0 );
#else
        float Cldfb_RealBuffer[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX];
        float Cldfb_ImagBuffer[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX];

        copyBufferToCLDFBarray( sbaInput->base.inputBuffer, Cldfb_RealBuffer, Cldfb_ImagBuffer );

@@ -6195,12 +6232,14 @@ static ivas_error renderSbaToBinaural(
            Cldfb_RealBuffer_Binaural,
            Cldfb_ImagBuffer_Binaural,
            0 );

#endif
        accumulateCLDFBArrayToBuffer( Cldfb_RealBuffer_Binaural[0], Cldfb_ImagBuffer_Binaural[0], &outAudio );
    }
    else
#endif
    {
        float tmpCrendBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k];

        tmpRotBuffer = sbaInput->base.inputBuffer;
        tmpRotBuffer.data = malloc( tmpRotBuffer.config.numSamplesPerChannel * tmpRotBuffer.config.numChannels * sizeof( float ) );