Commit ec500adf authored by multrus's avatar multrus
Browse files

port float MR1736 to main

parent 23efb2ad
Loading
Loading
Loading
Loading
Loading
+41 −12
Original line number Diff line number Diff line
@@ -3706,11 +3706,16 @@ void ivas_dirac_dec_render_sf_fx(
        test();
        IF( ( ( EQ_16( st_ivas->ivas_format, SBA_ISM_FORMAT ) && EQ_16( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) ) && EQ_16( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) ) )
        {
#ifndef NONBE_FIX_1141_OSBA_ROOM_RENDERING
            Word16 in_ch;
            FOR( in_ch = 0; in_ch < st_ivas->nchan_ism; in_ch++ )
            {
                Word16 j, k, j2, l;
                Word16 num_objects, nchan_out_woLFE, lfe_index;
#endif
                Word16 j, k, l;
#ifndef NONBE_FIX_1141_OSBA_ROOM_RENDERING
                Word16 j2, lfe_index;
#endif
                Word16 num_objects, nchan_out_woLFE;
                Word16 n_slots_to_render;
                Word16 n_samples_to_render;
#ifndef NONBE_FIX_1141_OSBA_ROOM_RENDERING
@@ -3761,10 +3766,15 @@ void ivas_dirac_dec_render_sf_fx(
                        }
                    }

#ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING
                    FOR( j = 0; j < nchan_out_woLFE; j++ )
#else
                lfe_index = 0;
                move16();
                for ( j = 0, j2 = 0; j < nchan_out_woLFE; j++, j2++ )
#endif
                    {
#ifndef NONBE_FIX_1141_OSBA_ROOM_RENDERING
                        test();
                        IF( ( st_ivas->hIntSetup.num_lfe > 0 && ( EQ_16( st_ivas->hIntSetup.index_lfe[lfe_index], j ) ) ) )
                        {
@@ -3778,6 +3788,7 @@ void ivas_dirac_dec_render_sf_fx(
                                j2 = add( j2, 1 );
                            }
                        }
#endif
                        gain_fx = st_ivas->hIsmRendererData->gains_fx[i][j];
                        move32();
                        prev_gain_fx = st_ivas->hIsmRendererData->prev_gains_fx[i][j];
@@ -3804,17 +3815,33 @@ void ivas_dirac_dec_render_sf_fx(
                                g_fx = Madd_32_16( Mpy_32_16_1( gain_fx, *w1_fx ), prev_gain_fx, w2_fx ); // Q15
                                FOR( l = 0; l < hSpatParamRendCom->num_freq_bands; l++ )
                                {
#ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING
#ifdef FIX_CDLFB_BUFFER_SCALING
                                    Cldfb_RealBuffer_fx[j][k][l] = Madd_32_32( Cldfb_RealBuffer_fx[j][k][l], g_fx, L_shl( *tc_re_fx, 1 ) );
#else
                                    Cldfb_RealBuffer_fx[j][k][l] = Madd_32_32( Cldfb_RealBuffer_fx[j][k][l], g_fx, *tc_re_fx );
#endif
#else
#ifdef FIX_CDLFB_BUFFER_SCALING
                                Cldfb_RealBuffer_fx[j2][k][l] = Madd_32_32( Cldfb_RealBuffer_fx[j2][k][l], g_fx, L_shl( *tc_re_fx, 1 ) );
#else
                                Cldfb_RealBuffer_fx[j2][k][l] = Madd_32_32( Cldfb_RealBuffer_fx[j2][k][l], g_fx, *tc_re_fx );
#endif
#endif
                                    move32();
                                    tc_re_fx++;
#ifdef NONBE_FIX_1141_OSBA_ROOM_RENDERING
#ifdef FIX_CDLFB_BUFFER_SCALING
                                    Cldfb_ImagBuffer_fx[j][k][l] = Madd_32_32( Cldfb_ImagBuffer_fx[j][k][l], g_fx, L_shl( *tc_im_fx, 1 ) );
#else
                                    Cldfb_ImagBuffer_fx[j][k][l] = Madd_32_32( Cldfb_ImagBuffer_fx[j][k][l], g_fx, *tc_im_fx );
#endif
#else
#ifdef FIX_CDLFB_BUFFER_SCALING
                                Cldfb_ImagBuffer_fx[j2][k][l] = Madd_32_32( Cldfb_ImagBuffer_fx[j2][k][l], g_fx, L_shl( *tc_im_fx, 1 ) );
#else
                                Cldfb_ImagBuffer_fx[j2][k][l] = Madd_32_32( Cldfb_ImagBuffer_fx[j2][k][l], g_fx, *tc_im_fx );
#endif
#endif
                                    move32();
#ifdef FIX_1917_DIRAC_RENDER_PTR_INCR
@@ -3835,7 +3862,9 @@ void ivas_dirac_dec_render_sf_fx(
                        }
                    }
                }
#ifndef NONBE_FIX_1141_OSBA_ROOM_RENDERING
            }
#endif
#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