NAME: III_overlap() DESCRIPTION: perform overlap-add of windowed IMDCT outputs */
| 2295 | DESCRIPTION: perform overlap-add of windowed IMDCT outputs |
| 2296 | */ |
| 2297 | static |
| 2298 | void III_overlap(mad_fixed_t const output[36], mad_fixed_t overlap[18], |
| 2299 | mad_fixed_t sample[18][32], unsigned int sb) |
| 2300 | { |
| 2301 | unsigned int i; |
| 2302 | stack(__FUNCTION__, __FILE__, __LINE__); |
| 2303 | |
| 2304 | # if defined(ASO_INTERLEAVE2) |
| 2305 | { |
| 2306 | register mad_fixed_t tmp1, tmp2; |
| 2307 | |
| 2308 | tmp1 = overlap[0]; |
| 2309 | tmp2 = overlap[1]; |
| 2310 | |
| 2311 | for (i = 0; i < 16; i += 2) { |
| 2312 | sample[i + 0][sb] = output[i + 0 + 0] + tmp1; |
| 2313 | overlap[i + 0] = output[i + 0 + 18]; |
| 2314 | tmp1 = overlap[i + 2]; |
| 2315 | |
| 2316 | sample[i + 1][sb] = output[i + 1 + 0] + tmp2; |
| 2317 | overlap[i + 1] = output[i + 1 + 18]; |
| 2318 | tmp2 = overlap[i + 3]; |
| 2319 | } |
| 2320 | |
| 2321 | sample[16][sb] = output[16 + 0] + tmp1; |
| 2322 | overlap[16] = output[16 + 18]; |
| 2323 | sample[17][sb] = output[17 + 0] + tmp2; |
| 2324 | overlap[17] = output[17 + 18]; |
| 2325 | } |
| 2326 | # elif 0 |
| 2327 | for (i = 0; i < 18; i += 2) { |
| 2328 | sample[i + 0][sb] = output[i + 0 + 0] + overlap[i + 0]; |
| 2329 | overlap[i + 0] = output[i + 0 + 18]; |
| 2330 | |
| 2331 | sample[i + 1][sb] = output[i + 1 + 0] + overlap[i + 1]; |
| 2332 | overlap[i + 1] = output[i + 1 + 18]; |
| 2333 | } |
| 2334 | # else |
| 2335 | for (i = 0; i < 18; ++i) { |
| 2336 | sample[i][sb] = output[i + 0] + overlap[i]; |
| 2337 | overlap[i] = output[i + 18]; |
| 2338 | } |
| 2339 | # endif |
| 2340 | } |
| 2341 | |
| 2342 | /* |
| 2343 | NAME: III_overlap_z() |