@@ -4,6 +4,7 @@ static void proc_imdct_core_ldac(SCALAR* p_y, SCALAR* p_x, int nlnn) {
44 int loop1 , loop2 ;
55 int coef , index0 , index1 , offset ;
66 const int nsmpl = npow2_ldac (nlnn );
7+ const int nsmpl_half = nsmpl >> 1 ;
78 const int * p_rp ;
89 const SCALAR * p_w , * p_c , * p_s ;
910 SCALAR a_work [LDAC_MAXLSU ];
@@ -12,6 +13,7 @@ static void proc_imdct_core_ldac(SCALAR* p_y, SCALAR* p_x, int nlnn) {
1213
1314 i = nlnn - LDAC_1FSLNN ;
1415 p_w = gaa_bwin_ldac [i ];
16+ #if !(CONFIG_USED_CSI_DSP )
1517 p_c = gaa_wcos_ldac [i ];
1618 p_s = gaa_wsin_ldac [i ];
1719 p_rp = gaa_rev_perm_ldac [i ];
@@ -68,24 +70,25 @@ static void proc_imdct_core_ldac(SCALAR* p_y, SCALAR* p_x, int nlnn) {
6870 index1 += 2 - nsmpl ;
6971 }
7072 }
71- const int nsmpl_half = nsmpl >> 1 ;
72- if (nsmpl_half > 0 ) {
73- i = 0 ;
74- do {
75- p_y [2 * i ] = p_s [coef + i ] * a_work [2 * i + 1 ] + p_c [coef + i ] * a_work [2 * i ];
76- p_y [nsmpl - 2 * i - 1 ] = p_s [coef + i ] * a_work [2 * i ] - a_work [2 * i + 1 ] * p_c [coef + i ];
77- i ++ ;
78- } while (nsmpl_half != i );
79- i = 0 ;
80- do {
81- p_x [i ] = p_y [nsmpl_half + i ] * p_w [i ] - p_w [nsmpl - 1 - i ] * p_x [nsmpl + i ];
82- p_x [nsmpl_half + i ] = - p_w [nsmpl_half - 1 - i ] * p_x [nsmpl + nsmpl_half + i ] -
83- p_y [nsmpl - 1 - i ] * p_w [nsmpl_half + i ];
84- p_x [nsmpl + i ] = p_y [nsmpl_half - 1 - i ];
85- p_x [nsmpl + nsmpl_half + i ] = p_y [i ];
86- i ++ ;
87- } while (nsmpl_half != i );
88- }
73+
74+ i = 0 ;
75+ do {
76+ p_y [2 * i ] = p_s [coef + i ] * a_work [2 * i + 1 ] + p_c [coef + i ] * a_work [2 * i ];
77+ p_y [nsmpl - 2 * i - 1 ] = p_s [coef + i ] * a_work [2 * i ] - a_work [2 * i + 1 ] * p_c [coef + i ];
78+ i ++ ;
79+ } while (nsmpl_half != i );
80+ #else
81+ csi_dct4_f32 (& dct4f32 , a_work , p_y );
82+ #endif
83+ i = 0 ;
84+ do {
85+ p_x [i ] = p_y [nsmpl_half + i ] * p_w [i ] - p_w [nsmpl - 1 - i ] * p_x [nsmpl + i ];
86+ p_x [nsmpl_half + i ] = - p_w [nsmpl_half - 1 - i ] * p_x [nsmpl + nsmpl_half + i ] -
87+ p_y [nsmpl - 1 - i ] * p_w [nsmpl_half + i ];
88+ p_x [nsmpl + i ] = p_y [nsmpl_half - 1 - i ];
89+ p_x [nsmpl + nsmpl_half + i ] = p_y [i ];
90+ i ++ ;
91+ } while (nsmpl_half != i );
8992}
9093
9194DECLFUNC void proc_imdct_ldac (SFINFO * p_sfinfo , int nlnn ) {
0 commit comments