Commit 820cf6a9 authored by multrus's avatar multrus
Browse files

port Float MR1685 to main

parent 8be2b744
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -137,6 +137,7 @@
#define NONBE_FIX_1052_SBA_EXT_FIX                      /* VA: SBA external output support fix - do not overwrite "output_config" parameter */

#define NONBE_1894_OSBA_SCALING                          /* FhG: do not scale OSBA inputs by 0.5 any more */
#define NONBE_FIX_1141_OSBA_ROOM_RENDERING               /* FhG: Fix for issue 1141: render objects in OSBA decoder with room effect */
#define NONBE_1360_LFE_DELAY                           /* Dlb: LFE delay alignment when rendering in CLDFB domain*/

/* #################### End BASOP porting switches ############################ */
+17 −1
Original line number Diff line number Diff line
@@ -3713,8 +3713,9 @@ void ivas_dirac_dec_render_sf_fx(
                Word16 num_objects, nchan_out_woLFE, lfe_index;
                Word16 n_slots_to_render;
                Word16 n_samples_to_render;
#ifndef NONBE_FIX_1141_OSBA_ROOM_RENDERING
                Word16 interp_offset;

#endif
                Word32 gain_fx, prev_gain_fx;

                num_objects = st_ivas->nchan_ism;
@@ -3724,16 +3725,23 @@ void ivas_dirac_dec_render_sf_fx(
                n_slots_to_render = st_ivas->hSpar->subframe_nbslots[st_ivas->hSpar->subframes_rendered];
                move16();
                n_samples_to_render = imult1616( hSpatParamRendCom->num_freq_bands, n_slots_to_render );
#ifndef NONBE_FIX_1141_OSBA_ROOM_RENDERING
                interp_offset = st_ivas->hTcBuffer->n_samples_rendered;
                move16();
#endif

                test();
                IF( st_ivas->hCombinedOrientationData && st_ivas->hCombinedOrientationData->enableCombinedOrientation[0] )
                {
                    ivas_jbm_dec_get_adapted_linear_interpolator_fx( n_samples_to_render, n_samples_to_render, st_ivas->hIsmRendererData->interpolator_fx );
#ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING
                    st_ivas->hIsmRendererData->interp_offset_fx = 0;
#else
                    interp_offset = 0;
#endif
                    move16();
                }

                FOR( i = 0; i < num_objects; i++ )
                {
                    /* Combined rotation: rotate the object positions depending the head and external orientations */
@@ -3779,7 +3787,12 @@ void ivas_dirac_dec_render_sf_fx(
                        {
                            Word32 *tc_re_fx, *tc_im_fx;
                            Word16 *w1_fx, w2_fx;

#ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING
                            w1_fx = &st_ivas->hIsmRendererData->interpolator_fx[st_ivas->hIsmRendererData->interp_offset_fx];
#else
                            w1_fx = &st_ivas->hIsmRendererData->interpolator_fx[interp_offset];
#endif
                            tc_re_fx = pppQMfFrame_ts_re_fx[nchan_transport + i][0];
                            move32();
                            tc_im_fx = pppQMfFrame_ts_im_fx[nchan_transport + i][0];
@@ -3811,6 +3824,9 @@ void ivas_dirac_dec_render_sf_fx(
                    }
                }
            }
#ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING
            st_ivas->hIsmRendererData->interp_offset_fx = add( st_ivas->hIsmRendererData->interp_offset_fx, i_mult( hSpatParamRendCom->num_freq_bands, st_ivas->hSpar->subframe_nbslots[st_ivas->hSpar->subframes_rendered] ) );
#endif
        }

        /* Perform binaural rendering */
+29 −0
Original line number Diff line number Diff line
@@ -939,9 +939,21 @@ void ivas_ism_dec_digest_tc_fx(

            test();
            test();
#ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING
            test();
            test();
            test();
#endif
#ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING
            IF( EQ_32( st_ivas->renderer_type, RENDERER_SBA_LINEAR_ENC ) ||
                EQ_32( st_ivas->renderer_type, RENDERER_OSBA_AMBI ) ||
                EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) ||
                ( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) && EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) ) )
#else
            IF( EQ_32( st_ivas->renderer_type, RENDERER_SBA_LINEAR_ENC ) ||
                EQ_32( st_ivas->renderer_type, RENDERER_OSBA_AMBI ) ||
                EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) )
#endif
            {
                st_ivas->hIsmRendererData->interpolator_fx[0] = 0;
                move16();
@@ -966,6 +978,10 @@ void ivas_ism_dec_digest_tc_fx(
            ivas_jbm_dec_get_adapted_linear_interpolator_fx( extract_l( Mpy_32_32( st_ivas->hDecoderConfig->output_Fs, ONE_BY_FRAMES_PER_SEC_Q31 ) ), st_ivas->hTcBuffer->n_samples_available, st_ivas->hIsmRendererData->interpolator_fx );
            move16();
        }
#ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING
        st_ivas->hIsmRendererData->interp_offset_fx = 0;
        move16();
#endif

        /* also get the gains here */
        FOR( i = 0; i < st_ivas->nchan_ism; i++ )
@@ -992,10 +1008,23 @@ void ivas_ism_dec_digest_tc_fx(
                test();
                test();
                test();
#ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING
                test();
                test();
                test();
#endif
#ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING
                IF( ( EQ_32( st_ivas->renderer_type, RENDERER_TD_PANNING ) ||
                      EQ_32( st_ivas->renderer_type, RENDERER_OSBA_LS ) ||
                      EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) ||
                      ( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) && EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) ) ) &&
                    st_ivas->hCombinedOrientationData == NULL )
#else
                IF( ( EQ_32( st_ivas->renderer_type, RENDERER_TD_PANNING ) ||
                      EQ_32( st_ivas->renderer_type, RENDERER_OSBA_LS ) ||
                      EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) ) &&
                    st_ivas->hCombinedOrientationData == NULL )
#endif
                {
                    if ( st_ivas->hIntSetup.is_planar_setup )
                    {
+3 −0
Original line number Diff line number Diff line
@@ -859,6 +859,9 @@ typedef struct renderer_struct
    Word32 prev_gains_fx[MAX_NUM_OBJECTS][MAX_OUTPUT_CHANNELS]; /*Q30*/
    Word16 *interpolator_fx;                                    /*Q15*/
    Word16 interpolator_len;
#ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING
    Word16 interp_offset_fx;
#endif
    Word32 gains_fx[MAX_NUM_OBJECTS][MAX_OUTPUT_CHANNELS]; /*Q30*/

} ISM_RENDERER_DATA, *ISM_RENDERER_HANDLE;