|
|
|
@@ -1184,21 +1184,22 @@ static void sbr_qmf_synthesis(DSPContext *dsp, FFTContext *mdct, |
|
|
|
*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 ]; |
|
|
|
|