Commit 27d572c4 authored by Archit Tamarapu's avatar Archit Tamarapu
Browse files

[cleanup] interface for ivas_rend_crendProcessSplitBin()

parent 77356aab
Loading
Loading
Loading
Loading
+22 −2
Original line number Diff line number Diff line
@@ -511,7 +511,17 @@ ivas_error ivas_dec(
                if ( ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ||
                     ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
                {
                    ivas_rend_crendProcessSplitBin( st_ivas, output, output_frame );
                    ivas_rend_crendProcessSplitBin(
                        st_ivas->hCrendWrapper,
                        st_ivas->intern_config,
                        st_ivas->hOutSetup.output_config,
                        &st_ivas->splitBinRend.splitrend.multiBinPoseData,
                        st_ivas->hDecoderConfig,
                        st_ivas->hCombinedOrientationData,
                        &st_ivas->hIntSetup,
                        st_ivas->hEFAPdata,
                        p_output,
                        output_Fs );
                }
                else
                {
@@ -599,7 +609,17 @@ ivas_error ivas_dec(
                if ( ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ||
                     ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) )
                {
                    ivas_rend_crendProcessSplitBin( st_ivas, output, output_frame );
                    ivas_rend_crendProcessSplitBin(
                        st_ivas->hCrendWrapper,
                        st_ivas->intern_config,
                        st_ivas->hOutSetup.output_config,
                        &st_ivas->splitBinRend.splitrend.multiBinPoseData,
                        st_ivas->hDecoderConfig,
                        st_ivas->hCombinedOrientationData,
                        &st_ivas->hIntSetup,
                        st_ivas->hEFAPdata,
                        p_output,
                        output_Fs );
                }
                else
                {
+29 −22
Original line number Diff line number Diff line
@@ -1751,27 +1751,32 @@ ivas_error ivas_rend_crendProcessSubframe(
 *-----------------------------------------------------------------------------------------*/

ivas_error ivas_rend_crendProcessSplitBin(
    Decoder_Struct *st_ivas,    /* i/o: IVAS decoder structure            */
    float output[][L_FRAME48k], /* i/o: SCE channels / Binaural synthesis */
    const int16_t output_frame  /* i  : output frame length               */
)
    const CREND_WRAPPER *pCrend,
    const AUDIO_CONFIG inConfig,
    const AUDIO_CONFIG outConfig,
    const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData,
    DECODER_CONFIG_HANDLE hDecoderConfig,
    COMBINED_ORIENTATION_HANDLE hCombinedOrientationData,
    const IVAS_OUTPUT_SETUP_HANDLE hIntSetup,
    EFAP_HANDLE hEFAPdata,
    float *output[],
    const int32_t output_Fs )
{
    int16_t i, j, sf;
    int16_t pos_idx;
    int16_t pos_idx, output_frame;
    ivas_error error;
    float gain_lfe;
    float tmpLfeBuffer[L_FRAME48k];
    float tmpInputBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k];
    float *p_tmpInputBuffer[MAX_OUTPUT_CHANNELS];
    float tmpSplitBinBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k];
    MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData;
    COMBINED_ORIENTATION_DATA combinedOrientationDataLocal;
    COMBINED_ORIENTATION_HANDLE pCombinedOrientationDataLocal;

    pMultiBinPoseData = &st_ivas->splitBinRend.splitrend.multiBinPoseData;
    output_frame = (int16_t) ( output_Fs / FRAMES_PER_SEC );

    /* copy input */
    for ( i = 0; i < st_ivas->hIntSetup.nchan_out_woLFE; ++i )
    for ( i = 0; i < hIntSetup->nchan_out_woLFE; ++i )
    {
        mvr2r( output[i], tmpInputBuffer[i], output_frame );
    }
@@ -1782,7 +1787,7 @@ ivas_error ivas_rend_crendProcessSplitBin(
    }

    /* save current head positions */
    pCombinedOrientationDataLocal = st_ivas->hCombinedOrientationData;
    pCombinedOrientationDataLocal = hCombinedOrientationData;
    combinedOrientationDataLocal = *pCombinedOrientationDataLocal;
    if ( pMultiBinPoseData->poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB )
    {
@@ -1800,10 +1805,12 @@ ivas_error ivas_rend_crendProcessSplitBin(
    }

    /* copy LFE to tmpLfeBuffer and apply gain only once */
    if ( st_ivas->hIntSetup.num_lfe > 0 && st_ivas->hIntSetup.index_lfe[0] != -1 )
    if ( hIntSetup->num_lfe > 0 && hIntSetup->index_lfe[0] != -1 )
    {
        mvr2r( output[st_ivas->hIntSetup.index_lfe[0]], tmpLfeBuffer, output_frame );
        gain_lfe = ( ( st_ivas->hCrendWrapper != NULL ) && ( st_ivas->hCrendWrapper->hHrtfCrend != NULL ) ) ? st_ivas->hCrendWrapper->hHrtfCrend->gain_lfe : GAIN_LFE;
        mvr2r( output[hIntSetup->index_lfe[0]], tmpLfeBuffer, output_frame );
        gain_lfe = ( ( pCrend != NULL ) && ( pCrend->hHrtfCrend != NULL ) )
                       ? pCrend->hHrtfCrend->gain_lfe
                       : GAIN_LFE;
        v_multc( tmpLfeBuffer, gain_lfe, tmpLfeBuffer, output_frame );
    }
    else
@@ -1833,24 +1840,24 @@ ivas_error ivas_rend_crendProcessSplitBin(

        for ( i = 0; i < 3; i++ )
        {
            mvr2r( st_ivas->hCombinedOrientationData->Rmat_prev[pos_idx][i], pCombinedOrientationDataLocal->Rmat_prev[0][i], 3 );
            mvr2r( hCombinedOrientationData->Rmat_prev[pos_idx][i], pCombinedOrientationDataLocal->Rmat_prev[0][i], 3 );
        }
        if ( ( error = ivas_rend_crendProcess( st_ivas->hCrendWrapper,
                                               st_ivas->intern_config,
                                               st_ivas->hOutSetup.output_config,
                                               st_ivas->hDecoderConfig,
        if ( ( error = ivas_rend_crendProcess( pCrend,
                                               inConfig,
                                               outConfig,
                                               hDecoderConfig,
                                               pCombinedOrientationDataLocal,
                                               &st_ivas->hIntSetup,
                                               st_ivas->hEFAPdata,
                                               hIntSetup,
                                               hEFAPdata,
                                               p_tmpInputBuffer,
                                               st_ivas->hDecoderConfig->output_Fs,
                                               output_Fs,
                                               pos_idx ) ) != IVAS_ERR_OK )
        {
            return error;
        }
        for ( i = 0; i < 3; i++ )
        {
            mvr2r( pCombinedOrientationDataLocal->Rmat_prev[0][i], st_ivas->hCombinedOrientationData->Rmat_prev[pos_idx][i], 3 );
            mvr2r( pCombinedOrientationDataLocal->Rmat_prev[0][i], hCombinedOrientationData->Rmat_prev[pos_idx][i], 3 );
        }

        for ( i = 0; i < BINAURAL_CHANNELS; ++i )
@@ -1863,7 +1870,7 @@ ivas_error ivas_rend_crendProcessSplitBin(
        }

        /* overwrite rendered channels with input again for next iteration */
        for ( i = 0; i < st_ivas->hIntSetup.nchan_out_woLFE; ++i )
        for ( i = 0; i < hIntSetup->nchan_out_woLFE; ++i )
        {
            mvr2r( output[i], tmpInputBuffer[i], output_frame );
        }
+10 −4
Original line number Diff line number Diff line
@@ -633,11 +633,17 @@ ivas_error ivas_rend_crendProcessSubframe(
);

#ifdef SPLIT_REND_WITH_HEAD_ROT
/* TODO tmu : interface cleanup */
ivas_error ivas_rend_crendProcessSplitBin(
    Decoder_Struct *st_ivas,
    float output[][L_FRAME48k],
    const int16_t output_frame 
    const CREND_WRAPPER *pCrend,
    const AUDIO_CONFIG inConfig,
    const AUDIO_CONFIG outConfig,
    const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData,
    DECODER_CONFIG_HANDLE hDecoderConfig,
    COMBINED_ORIENTATION_HANDLE hCombinedOrientationData,
    const IVAS_OUTPUT_SETUP_HANDLE hIntSetup,
    EFAP_HANDLE hEFAPdata,
    float *output[],
    const int32_t output_Fs
);
#endif

+1 −1
Original line number Diff line number Diff line
@@ -8403,7 +8403,7 @@ ivas_error IVAS_REND_GetSamples(
        float Cldfb_ImagBuffer_Binaural[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX];
        float tmpBinaural[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][L_FRAME48k];

        if ( ( outAudio.config.is_cldfb == 1 ) )
        if ( outAudio.config.is_cldfb == 1 )
        {
            td_input = 0;
            copyBufferToCLDFBarray( outAudio, Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural );