Mercurial > libavcodec.hg
comparison aacsbr.c @ 11849:f2c42ef01008 libavcodec
Base downsampled SBR synthesis filterbank on a single IMDCT.
Based on Han-Wen Hsu, et al. "Fast Complex Quadrature Mirror Filterbanks for
MPEG-4 HE-AAC"
author | alexc |
---|---|
date | Tue, 08 Jun 2010 01:57:06 +0000 |
parents | 6b52f0c3263d |
children | 954d05e65641 |
comparison
equal
deleted
inserted
replaced
11848:6b52f0c3263d | 11849:f2c42ef01008 |
---|---|
1182 *v_off = SBR_SYNTHESIS_BUF_SIZE - saved_samples - (128 >> div); | 1182 *v_off = SBR_SYNTHESIS_BUF_SIZE - saved_samples - (128 >> div); |
1183 } else { | 1183 } else { |
1184 *v_off -= 128 >> div; | 1184 *v_off -= 128 >> div; |
1185 } | 1185 } |
1186 v = v0 + *v_off; | 1186 v = v0 + *v_off; |
1187 if (div) { | |
1188 for (n = 0; n < 32; n++) { | |
1189 X[0][i][ n] = -X[0][i][n]; | |
1190 X[0][i][32+n] = X[1][i][31-n]; | |
1191 } | |
1192 ff_imdct_half(mdct, mdct_buf[0], X[0][i]); | |
1193 for (n = 0; n < 32; n++) { | |
1194 v[ n] = mdct_buf[0][63 - 2*n]; | |
1195 v[63 - n] = -mdct_buf[0][62 - 2*n]; | |
1196 } | |
1197 } else { | |
1187 for (n = 1; n < 64 >> div; n+=2) { | 1198 for (n = 1; n < 64 >> div; n+=2) { |
1188 X[1][i][n] = -X[1][i][n]; | 1199 X[1][i][n] = -X[1][i][n]; |
1189 } | 1200 } |
1190 if (div) { | |
1191 memset(X[0][i]+32, 0, 32*sizeof(float)); | |
1192 memset(X[1][i]+32, 0, 32*sizeof(float)); | |
1193 } | |
1194 ff_imdct_half(mdct, mdct_buf[0], X[0][i]); | 1201 ff_imdct_half(mdct, mdct_buf[0], X[0][i]); |
1195 ff_imdct_half(mdct, mdct_buf[1], X[1][i]); | 1202 ff_imdct_half(mdct, mdct_buf[1], X[1][i]); |
1196 if (div) { | |
1197 for (n = 0; n < 32; n++) { | |
1198 v[ n] = -mdct_buf[0][63 - 2*n] + mdct_buf[1][2*n ]; | |
1199 v[ 63 - n] = mdct_buf[0][62 - 2*n] + mdct_buf[1][2*n + 1]; | |
1200 } | |
1201 } else { | |
1202 for (n = 0; n < 64; n++) { | 1203 for (n = 0; n < 64; n++) { |
1203 v[ n] = -mdct_buf[0][63 - n] + mdct_buf[1][ n ]; | 1204 v[ n] = -mdct_buf[0][63 - n] + mdct_buf[1][ n ]; |
1204 v[127 - n] = mdct_buf[0][63 - n] + mdct_buf[1][ n ]; | 1205 v[127 - n] = mdct_buf[0][63 - n] + mdct_buf[1][ n ]; |
1205 } | 1206 } |
1206 } | 1207 } |