Commit 7e5d4fcc authored by Archit Tamarapu's avatar Archit Tamarapu
Browse files

Merge branch 'split_rend_fixes_mc_ism' into 'main'

[split-non-be] Adding in fixes for split rending on mc and ism

See merge request !1309
parents a2f7b206 4ce25cba
Loading
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -1556,6 +1556,9 @@ typedef enum
#define MAX_SPLIT_MD_SUBFRAMES                  1
#define COMPLEX_MD_BAND_THRESH                  MAX_SPLIT_REND_MD_BANDS
#define COMPLEX_MD_BAND_THRESH_LOW              5
#ifdef SPLIT_REND_HF_TUNING
#define SPLIT_REND_RO_MD_BAND_THRESH            4
#endif

#define IVAS_SPLIT_REND_NUM_QUANT_STRATS        4
#define IVAS_SPLIT_REND_PRED_63QUANT_PNTS       63
+6 −0
Original line number Diff line number Diff line
@@ -163,6 +163,12 @@
#define NONBE_FIX_944_FEC_OMASA_1SEP_OBJ_MASA                 /* Nokia: issue 944: fix FEC error in OMASA */
#define NONBE_FIX_949_MC_5MS_FRAMING                          /* Dlb: issue 949: fix for issue 949, distorted output in MC mode with 5ms framing*/

#ifdef SPLIT_REND_WITH_HEAD_ROT
#define SPLIT_REND_HF_TUNING                                  /* Dlb: issue 950: split rendering MD tuning change at high frequencies*/
#define SPLIT_REND_MC_FIX_LFE                                 /* Dlb: issue 950: split rendering LFE fix for 7.1 and 5.1 MC mode*/
#define SPLIT_EXT_REND_FIX_LIMITER_POS                        /* Dlb: issue 950: fixing limiter position in split rendering mode in external renderer*/
#endif

/* ##################### End NON-BE switches ########################### */

/* ################## End DEVELOPMENT switches ######################### */
+10 −0
Original line number Diff line number Diff line
@@ -1535,6 +1535,9 @@ void ivas_binaural_add_LFE(
{
    int16_t render_lfe, idx_lfe;
    float gain;
#ifdef SPLIT_REND_MC_FIX_LFE
    float lfe_tc[L_FRAME48k];
#endif

    if ( st_ivas->hBinRenderer != NULL )
    {
@@ -1558,10 +1561,17 @@ void ivas_binaural_add_LFE(

        for ( idx_lfe = 0; idx_lfe < st_ivas->hIntSetup.num_lfe; idx_lfe++ )
        {
#ifdef SPLIT_REND_MC_FIX_LFE
            v_multc( input_f[st_ivas->hIntSetup.index_lfe[idx_lfe]], gain, lfe_tc, output_frame );
            /* copy LFE to left and right channels */
            v_add( output_f[0], lfe_tc, output_f[0], output_frame );
            v_add( output_f[1], lfe_tc, output_f[1], output_frame );
#else
            v_multc( input_f[st_ivas->hIntSetup.index_lfe[idx_lfe]], gain, input_f[st_ivas->hIntSetup.index_lfe[idx_lfe]], output_frame );
            /* copy LFE to left and right channels */
            v_add( output_f[0], input_f[st_ivas->hIntSetup.index_lfe[idx_lfe]], output_f[0], output_frame );
            v_add( output_f[1], input_f[st_ivas->hIntSetup.index_lfe[idx_lfe]], output_f[1], output_frame );
#endif
        }
    }

+12 −0
Original line number Diff line number Diff line
@@ -342,6 +342,18 @@ ivas_error ivas_td_binaural_renderer_sf_splitBinaural(
        {
            return error;
        }

#ifdef SPLIT_REND_MC_FIX_LFE
        if ( st_ivas->ivas_format == MC_FORMAT )
        {
            float *p_tc[MAX_TRANSPORT_CHANNELS];
            for ( i = 0; i < st_ivas->nchan_transport; i++ )
            {
                p_tc[i] = st_ivas->hTcBuffer->tc[i] + st_ivas->hTcBuffer->n_samples_rendered;
            }
            ivas_binaural_add_LFE( st_ivas, nSamplesRendered, p_tc, p_bin_output );
        }
#endif
    }

    for ( i = 0; i < pMultiBinPoseData->num_poses * BINAURAL_CHANNELS; i++ )
+25 −0
Original line number Diff line number Diff line
@@ -1051,6 +1051,9 @@ ivas_error IVAS_DEC_GetSplitBinauralBitstream(
    int16_t pcm_out_flag;
    int16_t td_input;
    int16_t numPoses;
#ifdef SPLIT_REND_HF_TUNING
    int16_t ro_md_flag;
#endif

    error = IVAS_ERR_OK;
    st_ivas = hIvasDec->st_ivas;
@@ -1153,6 +1156,26 @@ ivas_error IVAS_DEC_GetSplitBinauralBitstream(
    pcm_out_flag = ( output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ? 1 : 0;
    td_input = st_ivas->renderer_type != RENDERER_BINAURAL_FASTCONV && st_ivas->renderer_type != RENDERER_BINAURAL_PARAMETRIC && st_ivas->renderer_type != RENDERER_BINAURAL_PARAMETRIC_ROOM && st_ivas->renderer_type != RENDERER_STEREO_PARAMETRIC;

#ifdef SPLIT_REND_HF_TUNING
    if ( st_ivas->hBinRendererTd != NULL )
    {
        ro_md_flag = 1;
    }
    else
    {
        ro_md_flag = 0;
    }

    if ( ( error = ivas_renderMultiBinToSplitBinaural( &hSplitBinRend->splitrend,
                                                       st_ivas->hHeadTrackData->Quaternions[0],
                                                       st_ivas->hRenderConfig->split_rend_config.splitRendBitRate,
                                                       st_ivas->hRenderConfig->split_rend_config.codec,
                                                       st_ivas->hRenderConfig->split_rend_config.codec_frame_size_ms,
                                                       hSplitBinRend->hSplitRendBits,
                                                       hSplitBinRend->hMultiBinCldfbData->Cldfb_RealBuffer_Binaural,
                                                       hSplitBinRend->hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural,
                                                       max_band, pOutput, 1, !td_input, pcm_out_flag, ro_md_flag ) ) != IVAS_ERR_OK )
#else
    if ( ( error = ivas_renderMultiBinToSplitBinaural( &hSplitBinRend->splitrend,
                                                       st_ivas->hHeadTrackData->Quaternions[0],
                                                       st_ivas->hRenderConfig->split_rend_config.splitRendBitRate,
@@ -1162,6 +1185,7 @@ ivas_error IVAS_DEC_GetSplitBinauralBitstream(
                                                       hSplitBinRend->hMultiBinCldfbData->Cldfb_RealBuffer_Binaural,
                                                       hSplitBinRend->hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural,
                                                       max_band, pOutput, 1, !td_input, pcm_out_flag ) ) != IVAS_ERR_OK )
#endif
    {
        return error;
    }
@@ -3699,6 +3723,7 @@ static ivas_error set_pcm_buffer_to_zero(
{
    ivas_error error;

    error = IVAS_ERR_OK;
    switch ( pcmType )
    {
        case IVAS_DEC_PCM_FLOAT:
Loading