28 float *synth_buf_ptr,
int *synth_buf_offset,
29 float synth_buf2[32],
const float window[512],
30 float out[32],
const float in[32],
float scale)
32 float *synth_buf = synth_buf_ptr + *synth_buf_offset;
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],
const float in[64],
float scale)
68 float *synth_buf = synth_buf_ptr + *synth_buf_offset;
73 for (
i = 0;
i < 32;
i++) {
74 float a = synth_buf2[
i ];
75 float b = synth_buf2[
i + 32];
78 for (j = 0; j < 1024 - *synth_buf_offset; j += 128) {
79 a +=
window[
i + j ] * (-synth_buf[31 -
i + j ]);
80 b +=
window[
i + j + 32] * ( synth_buf[
i + j ]);
81 c +=
window[
i + j + 64] * ( synth_buf[32 +
i + j ]);
82 d +=
window[
i + j + 96] * ( synth_buf[63 -
i + j ]);
84 for ( ; j < 1024; j += 128) {
85 a +=
window[
i + j ] * (-synth_buf[31 -
i + j - 1024]);
86 b +=
window[
i + j + 32] * ( synth_buf[
i + j - 1024]);
87 c +=
window[
i + j + 64] * ( synth_buf[32 +
i + j - 1024]);
88 d +=
window[
i + j + 96] * ( synth_buf[63 -
i + j - 1024]);
93 synth_buf2[
i + 32] =
d;
96 *synth_buf_offset = (*synth_buf_offset - 64) & 1023;
100 int32_t *synth_buf_ptr,
int *synth_buf_offset,
104 int32_t *synth_buf = synth_buf_ptr + *synth_buf_offset;
109 for (
i = 0;
i < 16;
i++) {
110 int64_t
a = synth_buf2[
i ] * (INT64_C(1) << 21);
111 int64_t
b = synth_buf2[
i + 16] * (INT64_C(1) << 21);
114 for (j = 0; j < 512 - *synth_buf_offset; j += 64) {
115 a += (int64_t)
window[
i + j ] * synth_buf[
i + j ];
116 b += (int64_t)
window[
i + j + 16] * synth_buf[15 -
i + j ];
117 c += (int64_t)
window[
i + j + 32] * synth_buf[16 +
i + j ];
118 d += (int64_t)
window[
i + j + 48] * synth_buf[31 -
i + j ];
120 for ( ; j < 512; j += 64) {
121 a += (int64_t)
window[
i + j ] * synth_buf[
i + j - 512];
122 b += (int64_t)
window[
i + j + 16] * synth_buf[15 -
i + j - 512];
123 c += (int64_t)
window[
i + j + 32] * synth_buf[16 +
i + j - 512];
124 d += (int64_t)
window[
i + j + 48] * synth_buf[31 -
i + j - 512];
132 *synth_buf_offset = (*synth_buf_offset - 32) & 511;
136 int32_t *synth_buf_ptr,
int *synth_buf_offset,
140 int32_t *synth_buf = synth_buf_ptr + *synth_buf_offset;
145 for (
i = 0;
i < 32;
i++) {
146 int64_t
a = synth_buf2[
i ] * (INT64_C(1) << 20);
147 int64_t
b = synth_buf2[
i + 32] * (INT64_C(1) << 20);
150 for (j = 0; j < 1024 - *synth_buf_offset; j += 128) {
151 a += (int64_t)
window[
i + j ] * synth_buf[
i + j ];
152 b += (int64_t)
window[
i + j + 32] * synth_buf[31 -
i + j ];
153 c += (int64_t)
window[
i + j + 64] * synth_buf[32 +
i + j ];
154 d += (int64_t)
window[
i + j + 96] * synth_buf[63 -
i + j ];
156 for ( ; j < 1024; j += 128) {
157 a += (int64_t)
window[
i + j ] * synth_buf[
i + j - 1024];
158 b += (int64_t)
window[
i + j + 32] * synth_buf[31 -
i + j - 1024];
159 c += (int64_t)
window[
i + j + 64] * synth_buf[32 +
i + j - 1024];
160 d += (int64_t)
window[
i + j + 96] * synth_buf[63 -
i + j - 1024];
168 *synth_buf_offset = (*synth_buf_offset - 64) & 1023;