Commit 0b4e9288 authored by emerit's avatar emerit
Browse files

Merge branch 'main' into orange/no-diegetic-pan-with-radius

parents 521f2f89 7c560c29
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -5159,10 +5159,11 @@ void ivas_binaural_cldfb_sf(
#endif
void ivas_binRenderer(
    BINAURAL_RENDERER_HANDLE hBinRenderer,                      /* i/o: fastconv binaural renderer handle                       */
    HEAD_TRACK_DATA_HANDLE hHeadTrackData,                      /* i/o: head track handle                                       */
#ifdef EXTERNAL_ORIENTATIONS
    COMBINED_ORIENTATION_HANDLE hCombinedOrientationData,       /* i  : combined head and external orientation handle           */
    int16_t subframe_idx,                                       /* i  : subframe index                                          */
#else
    HEAD_TRACK_DATA_HANDLE hHeadTrackData,                      /* i/o: head track handle                                       */
#endif
    const int16_t numTimeSlots,                                 /* i: : number of time slots to process                         */
    float Cldfb_RealBuffer_Binaural[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o  : Binaural signals             */
+1 −0
Original line number Diff line number Diff line
@@ -177,6 +177,7 @@

#define FIX_504_CLICK_NON_DIEGETIC_STATUS_SWITCHING     /* Ora : fix issue 504 click in non diegetic rendering */
#define EXTERNAL_ORIENTATIONS                           /* Nokia: Contribution 41: (external) orientation information handling */
#define FIX_541_EXT_REND_MASA_ROTATIONS                 /* Nokia: Issue 541, rotations missing in masa external renderer */

#define MASA_PREREND                                    /* Nokia: Contribution 42: Support for IVAS_rend to merge MASA + other format to MASA */
#define ISM_25k6_HZ_CORE                                /* VA: issue 540: 1ISM 48 kbps - change ACELP/TCX 16 kHz core to TCX only 25.6 kHz core */
+18 −14
Original line number Diff line number Diff line
@@ -1059,7 +1059,7 @@ void ivas_binaural_cldfb(

        /* Implement binaural rendering */
#ifdef EXTERNAL_ORIENTATIONS
        ivas_binRenderer( st_ivas->hBinRenderer, st_ivas->hHeadTrackData, st_ivas->hCombinedOrientationData, subframeIdx, JBM_CLDFB_SLOTS_IN_SUBFRAME, Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, Cldfb_RealBuffer, Cldfb_ImagBuffer );
        ivas_binRenderer( st_ivas->hBinRenderer, st_ivas->hCombinedOrientationData, subframeIdx, JBM_CLDFB_SLOTS_IN_SUBFRAME, Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, Cldfb_RealBuffer, Cldfb_ImagBuffer );
#else
        ivas_binRenderer( st_ivas->hBinRenderer, st_ivas->hHeadTrackData, JBM_CLDFB_SLOTS_IN_SUBFRAME, Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, Cldfb_RealBuffer, Cldfb_ImagBuffer );
#endif
@@ -1155,7 +1155,7 @@ void ivas_binaural_cldfb_sf(

        /* Implement binaural rendering */
#ifdef EXTERNAL_ORIENTATIONS
        ivas_binRenderer( st_ivas->hBinRenderer, st_ivas->hHeadTrackData, st_ivas->hCombinedOrientationData, subframeIdx, st_ivas->hTcBuffer->subframe_nbslots[subframeIdx], Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, Cldfb_RealBuffer, Cldfb_ImagBuffer );
        ivas_binRenderer( st_ivas->hBinRenderer, st_ivas->hCombinedOrientationData, subframeIdx, st_ivas->hTcBuffer->subframe_nbslots[subframeIdx], Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, Cldfb_RealBuffer, Cldfb_ImagBuffer );
#else
        ivas_binRenderer( st_ivas->hBinRenderer, st_ivas->hHeadTrackData, st_ivas->hTcBuffer->subframe_nbslots[subframeIdx], Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, Cldfb_RealBuffer, Cldfb_ImagBuffer );
#endif
@@ -1193,10 +1193,11 @@ void ivas_binaural_cldfb_sf(

void ivas_binRenderer(
    BINAURAL_RENDERER_HANDLE hBinRenderer, /* i/o: binaural renderer handle    */
    HEAD_TRACK_DATA_HANDLE hHeadTrackData, /* i/o: head track handle           */
#ifdef EXTERNAL_ORIENTATIONS
    COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, /* i  : combined head and external orientation handle           */
    int16_t subframe_idx,                                 /* i  : subframe index   */
#else
    HEAD_TRACK_DATA_HANDLE hHeadTrackData, /* i/o: head track handle           */
#endif
    const int16_t numTimeSlots,                                                            /* i  : number of time slots to render*/
    float Cldfb_RealBuffer_Binaural[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o  : Binaural signals */
@@ -1221,34 +1222,37 @@ void ivas_binRenderer(
    }

    /* Head rotation in HOA3 or CICPx */
    if ( hHeadTrackData
    if (
#ifdef EXTERNAL_ORIENTATIONS
         && hCombinedOrientationData != NULL && hCombinedOrientationData->enableCombinedOrientation[subframe_idx]
        hCombinedOrientationData != NULL && hCombinedOrientationData->enableCombinedOrientation[subframe_idx]
#else
         && hHeadTrackData->num_quaternions >= 0
        hHeadTrackData && hHeadTrackData->num_quaternions >= 0
#endif
        && hBinRenderer->rotInCldfb )
    {
        if ( hBinRenderer->hInputSetup->is_loudspeaker_setup == 0 )
        {
            /* Rotation in SHD (HOA3) */
            if ( hHeadTrackData->shd_rot_max_order == -1 )
            {
#ifdef EXTERNAL_ORIENTATIONS
            if ( hCombinedOrientationData->shd_rot_max_order == -1 )
            {
                rotateFrame_shd_cldfb( RealBuffer, ImagBuffer, hCombinedOrientationData->Rmat[subframe_idx], hBinRenderer->hInputSetup->nchan_out_woLFE, numTimeSlots, 3 );
            }
            else if ( hCombinedOrientationData->shd_rot_max_order > 0 )
            {
                rotateFrame_shd_cldfb( RealBuffer, ImagBuffer, hCombinedOrientationData->Rmat[subframe_idx], hBinRenderer->hInputSetup->nchan_out_woLFE, numTimeSlots, hCombinedOrientationData->shd_rot_max_order );
            }
#else
            if ( hHeadTrackData->shd_rot_max_order == -1 )
            {
                QuatToRotMat( hHeadTrackData->Quaternions[hHeadTrackData->num_quaternions++], hHeadTrackData->Rmat );
                rotateFrame_shd_cldfb( RealBuffer, ImagBuffer, hHeadTrackData->Rmat, hBinRenderer->hInputSetup->nchan_out_woLFE, numTimeSlots, 3 );
#endif
            }
            else if ( hHeadTrackData->shd_rot_max_order > 0 )
            {
#ifdef EXTERNAL_ORIENTATIONS
                rotateFrame_shd_cldfb( RealBuffer, ImagBuffer, hCombinedOrientationData->Rmat[subframe_idx], hBinRenderer->hInputSetup->nchan_out_woLFE, numTimeSlots, hHeadTrackData->shd_rot_max_order );
#else
                rotateFrame_shd_cldfb( RealBuffer, ImagBuffer, hHeadTrackData->Rmat, hBinRenderer->hInputSetup->nchan_out_woLFE, numTimeSlots, hHeadTrackData->shd_rot_max_order );
#endif
            }
#endif
        }
        else
        {
+22 −5
Original line number Diff line number Diff line
@@ -2627,7 +2627,7 @@ void ivas_dirac_dec_render_sf(
    }

#ifdef EXTERNAL_ORIENTATIONS
    if ( st_ivas->hHeadTrackData && st_ivas->hCombinedOrientationData && st_ivas->hCombinedOrientationData->enableCombinedOrientation[subframe_idx] )
    if ( st_ivas->hCombinedOrientationData && st_ivas->hCombinedOrientationData->enableCombinedOrientation[subframe_idx] )
#else
    if ( st_ivas->hHeadTrackData )
#endif
@@ -2640,7 +2640,11 @@ void ivas_dirac_dec_render_sf(
        p_Rmat = &st_ivas->hHeadTrackData->Rmat[0][0];
#endif

#ifdef EXTERNAL_ORIENTATIONS
        if ( st_ivas->hCombinedOrientationData->shd_rot_max_order == 0 )
#else
        if ( st_ivas->hHeadTrackData->shd_rot_max_order == 0 )
#endif
        {
            num_freq_bands = hDirAC->band_grouping[hDirAC->hConfig->enc_param_start_band];
#ifdef FIX_393_459_460_SBA_MD
@@ -2714,7 +2718,7 @@ void ivas_dirac_dec_render_sf(
            }
        }
#ifdef EXTERNAL_ORIENTATIONS
        if ( st_ivas->hCombinedOrientationData && st_ivas->hCombinedOrientationData->enableCombinedOrientation[subframe_idx] && st_ivas->hHeadTrackData->shd_rot_max_order == 1 )
        if ( st_ivas->hCombinedOrientationData && st_ivas->hCombinedOrientationData->enableCombinedOrientation[subframe_idx] && st_ivas->hCombinedOrientationData->shd_rot_max_order == 1 )
#else
        if ( st_ivas->hDecoderConfig->Opt_Headrotation && st_ivas->hHeadTrackData->shd_rot_max_order == 1 )
#endif
@@ -2731,7 +2735,11 @@ void ivas_dirac_dec_render_sf(
#endif
                                                          md_idx,
                                                          surCohRatio,
#ifdef EXTERNAL_ORIENTATIONS
                                                          st_ivas->hCombinedOrientationData->shd_rot_max_order,
#else
                                                          st_ivas->hHeadTrackData->shd_rot_max_order,
#endif
                                                          p_Rmat,
                                                          hodirac_flag );
        }
@@ -2821,7 +2829,7 @@ void ivas_dirac_dec_render_sf(
        if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD )
        {
#ifdef EXTERNAL_ORIENTATIONS
            if ( st_ivas->hCombinedOrientationData && st_ivas->hCombinedOrientationData->enableCombinedOrientation[subframe_idx] && st_ivas->hHeadTrackData->shd_rot_max_order == 0 )
            if ( st_ivas->hCombinedOrientationData && st_ivas->hCombinedOrientationData->enableCombinedOrientation[subframe_idx] && st_ivas->hCombinedOrientationData->shd_rot_max_order == 0 )
#else
            if ( st_ivas->hDecoderConfig->Opt_Headrotation && st_ivas->hHeadTrackData->shd_rot_max_order == 0 )
#endif
@@ -2907,7 +2915,11 @@ void ivas_dirac_dec_render_sf(
#ifdef FIX_393_459_460_SBA_MD
            mvs2s( &hDirAC->azimuth[md_idx][hDirAC->hConfig->enc_param_start_band], &azimuth[hDirAC->hConfig->enc_param_start_band], hDirAC->num_freq_bands - hDirAC->hConfig->enc_param_start_band );
            mvs2s( &hDirAC->elevation[md_idx][hDirAC->hConfig->enc_param_start_band], &elevation[hDirAC->hConfig->enc_param_start_band], hDirAC->num_freq_bands - hDirAC->hConfig->enc_param_start_band );
#ifdef EXTERNAL_ORIENTATIONS
            if ( ( st_ivas->hDecoderConfig->Opt_Headrotation || st_ivas->hDecoderConfig->Opt_ExternalOrientation ) && st_ivas->hCombinedOrientationData->shd_rot_max_order == 0 )
#else
            if ( st_ivas->hDecoderConfig->Opt_Headrotation && st_ivas->hHeadTrackData->shd_rot_max_order == 0 )
#endif
            {
                num_freq_bands = hDirAC->band_grouping[hDirAC->hConfig->enc_param_start_band];
                rotateAziEle_DirAC( azimuth, elevation, num_freq_bands, hDirAC->num_freq_bands, p_Rmat );
@@ -3072,7 +3084,7 @@ void ivas_dirac_dec_render_sf(

        /*Compute PSDs*/
#ifdef EXTERNAL_ORIENTATIONS
        if ( st_ivas->hCombinedOrientationData && st_ivas->hCombinedOrientationData->enableCombinedOrientation[subframe_idx] && st_ivas->hHeadTrackData->shd_rot_max_order > 0 )
        if ( st_ivas->hCombinedOrientationData && st_ivas->hCombinedOrientationData->enableCombinedOrientation[subframe_idx] && st_ivas->hCombinedOrientationData->shd_rot_max_order > 0 )
#else
        if ( st_ivas->hDecoderConfig->Opt_Headrotation && st_ivas->hHeadTrackData->shd_rot_max_order > 0 )
#endif
@@ -3089,7 +3101,11 @@ void ivas_dirac_dec_render_sf(
                                                          diffuseness_vector[slot_idx],
#endif
                                                          hDirAC,
#ifdef EXTERNAL_ORIENTATIONS
                                                          st_ivas->hCombinedOrientationData->shd_rot_max_order,
#else
                                                          st_ivas->hHeadTrackData->shd_rot_max_order,
#endif
                                                          p_Rmat,
                                                          st_ivas->hVBAPdata,
                                                          hDirAC->hOutSetup,
@@ -3241,10 +3257,11 @@ void ivas_dirac_dec_render_sf(
    {
        /* Perform binaural rendering */
        ivas_binRenderer( st_ivas->hBinRenderer,
                          st_ivas->hHeadTrackData,
#ifdef EXTERNAL_ORIENTATIONS
                          st_ivas->hCombinedOrientationData,
                          subframe_idx,
#else
                          st_ivas->hHeadTrackData,
#endif
                          hDirAC->subframe_nbslots[subframe_idx],
                          Cldfb_RealBuffer_Binaural,
+7 −1
Original line number Diff line number Diff line
@@ -1008,7 +1008,13 @@ void ivas_ism_dec_digest_tc(
                azimuth = (int16_t) floorf( st_ivas->hIsmMetaData[i]->azimuth + 0.5f );
                elevation = (int16_t) floorf( st_ivas->hIsmMetaData[i]->elevation + 0.5f );

                if ( ( st_ivas->renderer_type == RENDERER_TD_PANNING || st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV_ROOM ) && st_ivas->hHeadTrackData == NULL )
                if ( ( st_ivas->renderer_type == RENDERER_TD_PANNING || st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV_ROOM ) &&
#ifdef EXTERNAL_ORIENTATIONS
                     st_ivas->hCombinedOrientationData == NULL
#else
                     st_ivas->hHeadTrackData == NULL
#endif
                )
                {
                    if ( st_ivas->hIntSetup.is_planar_setup )
                    {
Loading