27 float *synth_buf_ptr,
int *synth_buf_offset,
28 float synth_buf2[32],
const float window[512],
29 float out[32],
float in[32],
float scale,
32 float *synth_buf = synth_buf_ptr + *synth_buf_offset;
35 imdct_fn(imdct, synth_buf, in,
sizeof(
float));
37 for (
i = 0;
i < 16;
i++) {
38 float a = synth_buf2[
i ];
39 float b = synth_buf2[
i + 16];
42 for (j = 0; j < 512 - *synth_buf_offset; j += 64) {
43 a +=
window[
i + j ] * (-synth_buf[15 -
i + j ]);
44 b +=
window[
i + j + 16] * ( synth_buf[
i + j ]);
45 c +=
window[
i + j + 32] * ( synth_buf[16 +
i + j ]);
46 d +=
window[
i + j + 48] * ( synth_buf[31 -
i + j ]);
48 for ( ; j < 512; j += 64) {
49 a +=
window[
i + j ] * (-synth_buf[15 -
i + j - 512]);
50 b +=
window[
i + j + 16] * ( synth_buf[
i + j - 512]);
51 c +=
window[
i + j + 32] * ( synth_buf[16 +
i + j - 512]);
52 d +=
window[
i + j + 48] * ( synth_buf[31 -
i + j - 512]);
57 synth_buf2[
i + 16] = d;
60 *synth_buf_offset = (*synth_buf_offset - 32) & 511;
64 float *synth_buf_ptr,
int *synth_buf_offset,
65 float synth_buf2[64],
const float window[1024],
66 float out[64],
float in[64],
float scale,
69 float *synth_buf = synth_buf_ptr + *synth_buf_offset;
72 imdct_fn(imdct, synth_buf, in,
sizeof(
float));
74 for (
i = 0;
i < 32;
i++) {
75 float a = synth_buf2[
i ];
76 float b = synth_buf2[
i + 32];
79 for (j = 0; j < 1024 - *synth_buf_offset; j += 128) {
80 a +=
window[
i + j ] * (-synth_buf[31 -
i + j ]);
81 b +=
window[
i + j + 32] * ( synth_buf[
i + j ]);
82 c +=
window[
i + j + 64] * ( synth_buf[32 +
i + j ]);
83 d +=
window[
i + j + 96] * ( synth_buf[63 -
i + j ]);
85 for ( ; j < 1024; j += 128) {
86 a +=
window[
i + j ] * (-synth_buf[31 -
i + j - 1024]);
87 b +=
window[
i + j + 32] * ( synth_buf[
i + j - 1024]);
88 c +=
window[
i + j + 64] * ( synth_buf[32 +
i + j - 1024]);
89 d +=
window[
i + j + 96] * ( synth_buf[63 -
i + j - 1024]);
94 synth_buf2[
i + 32] = d;
97 *synth_buf_offset = (*synth_buf_offset - 64) & 1023;
101 int32_t *synth_buf_ptr,
int *synth_buf_offset,
105 int32_t *synth_buf = synth_buf_ptr + *synth_buf_offset;
110 for (
i = 0;
i < 16;
i++) {
111 int64_t a = synth_buf2[
i ] * (INT64_C(1) << 21);
112 int64_t b = synth_buf2[
i + 16] * (INT64_C(1) << 21);
115 for (j = 0; j < 512 - *synth_buf_offset; j += 64) {
121 for ( ; j < 512; j += 64) {
130 synth_buf2[
i + 16] =
norm21(d);
133 *synth_buf_offset = (*synth_buf_offset - 32) & 511;
137 int32_t *synth_buf_ptr,
int *synth_buf_offset,
141 int32_t *synth_buf = synth_buf_ptr + *synth_buf_offset;
146 for (
i = 0;
i < 32;
i++) {
147 int64_t a = synth_buf2[
i ] * (INT64_C(1) << 20);
148 int64_t b = synth_buf2[
i + 32] * (INT64_C(1) << 20);
151 for (j = 0; j < 1024 - *synth_buf_offset; j += 128) {
157 for ( ; j < 1024; j += 128) {
166 synth_buf2[
i + 32] =
norm20(d);
169 *synth_buf_offset = (*synth_buf_offset - 64) & 1023;