[FFmpeg-cvslog] r23519 - trunk/libavcodec/aacsbr.c
alexc
subversion
Tue Jun 8 03:57:06 CEST 2010
Author: alexc
Date: Tue Jun 8 03:57:06 2010
New Revision: 23519
Log:
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"
Modified:
trunk/libavcodec/aacsbr.c
Modified: trunk/libavcodec/aacsbr.c
==============================================================================
--- trunk/libavcodec/aacsbr.c Tue Jun 8 02:15:23 2010 (r23518)
+++ trunk/libavcodec/aacsbr.c Tue Jun 8 03:57:06 2010 (r23519)
@@ -1184,21 +1184,22 @@ static void sbr_qmf_synthesis(DSPContext
*v_off -= 128 >> div;
}
v = v0 + *v_off;
+ if (div) {
+ for (n = 0; n < 32; n++) {
+ X[0][i][ n] = -X[0][i][n];
+ X[0][i][32+n] = X[1][i][31-n];
+ }
+ ff_imdct_half(mdct, mdct_buf[0], X[0][i]);
+ for (n = 0; n < 32; n++) {
+ v[ n] = mdct_buf[0][63 - 2*n];
+ v[63 - n] = -mdct_buf[0][62 - 2*n];
+ }
+ } else {
for (n = 1; n < 64 >> div; n+=2) {
X[1][i][n] = -X[1][i][n];
}
- if (div) {
- memset(X[0][i]+32, 0, 32*sizeof(float));
- memset(X[1][i]+32, 0, 32*sizeof(float));
- }
ff_imdct_half(mdct, mdct_buf[0], X[0][i]);
ff_imdct_half(mdct, mdct_buf[1], X[1][i]);
- if (div) {
- for (n = 0; n < 32; n++) {
- v[ n] = -mdct_buf[0][63 - 2*n] + mdct_buf[1][2*n ];
- v[ 63 - n] = mdct_buf[0][62 - 2*n] + mdct_buf[1][2*n + 1];
- }
- } else {
for (n = 0; n < 64; n++) {
v[ n] = -mdct_buf[0][63 - n] + mdct_buf[1][ n ];
v[127 - n] = mdct_buf[0][63 - n] + mdct_buf[1][ n ];
More information about the ffmpeg-cvslog
mailing list