152{
155 int32_t a0, a1, a2, a3, a4, a5, a6, a7;
156 int32_t b0, b1, b2, b3, b4, b5, b6, b7;
158
159
160
161
162
163 es = 0;
164 if (gb < 6) {
165 es = 6 - gb;
166 for (i = 0; i < 32; i++)
167 buf[i] >>= es;
168 }
169
170
179
180
181 for (i = 4; i > 0; i--) {
182 a0 = buf[0]; a7 = buf[7]; a3 = buf[3]; a4 = buf[4];
183 b0 = a0 + a7; b7 =
MULSHIFT32(*cptr++, a0 - a7) * 2L;
184 b3 = a3 + a4; b4 =
MULSHIFT32(*cptr++, a3 - a4) * 8L;
185 a0 = b0 + b3; a3 =
MULSHIFT32(*cptr, b0 - b3) * 2L;
186 a4 = b4 + b7; a7 =
MULSHIFT32(*cptr++, b7 - b4) * 2L;
187
188 a1 = buf[1]; a6 = buf[6]; a2 = buf[2]; a5 = buf[5];
189 b1 = a1 + a6; b6 =
MULSHIFT32(*cptr++, a1 - a6) * 2L;
190 b2 = a2 + a5; b5 =
MULSHIFT32(*cptr++, a2 - a5) * 2L;
191 a1 = b1 + b2; a2 =
MULSHIFT32(*cptr, b1 - b2) * 4L;
192 a5 = b5 + b6; a6 =
MULSHIFT32(*cptr++, b6 - b5) * 4L;
193
196 buf[0] = b0; buf[1] = b1;
197 buf[2] = b2 + b3; buf[3] = b3;
198
201 b6 += b7;
202 buf[4] = b4 + b6; buf[5] = b5 + b7;
203 buf[6] = b5 + b6; buf[7] = b7;
204
205 buf += 8;
206 }
207 buf -= 32;
208
209
211 s = buf[ 0]; d[0] = d[8] = s;
212
213
215
216 s = buf[ 1]; d[0] = d[8] = s; d += 64;
217
218 tmp = buf[25] + buf[29];
219 s = buf[17] + tmp; d[0] = d[8] = s; d += 64;
220 s = buf[ 9] + buf[13]; d[0] = d[8] = s; d += 64;
221 s = buf[21] + tmp; d[0] = d[8] = s; d += 64;
222
223 tmp = buf[29] + buf[27];
224 s = buf[ 5]; d[0] = d[8] = s; d += 64;
225 s = buf[21] + tmp; d[0] = d[8] = s; d += 64;
226 s = buf[13] + buf[11]; d[0] = d[8] = s; d += 64;
227 s = buf[19] + tmp; d[0] = d[8] = s; d += 64;
228
229 tmp = buf[27] + buf[31];
230 s = buf[ 3]; d[0] = d[8] = s; d += 64;
231 s = buf[19] + tmp; d[0] = d[8] = s; d += 64;
232 s = buf[11] + buf[15]; d[0] = d[8] = s; d += 64;
233 s = buf[23] + tmp; d[0] = d[8] = s; d += 64;
234
235 tmp = buf[31];
236 s = buf[ 7]; d[0] = d[8] = s; d += 64;
237 s = buf[23] + tmp; d[0] = d[8] = s; d += 64;
238 s = buf[15]; d[0] = d[8] = s; d += 64;
239 s = tmp; d[0] = d[8] = s;
240
241
243
244 s = buf[ 1]; d[0] = d[8] = s; d += 64;
245
246 tmp = buf[30] + buf[25];
247 s = buf[17] + tmp; d[0] = d[8] = s; d += 64;
248 s = buf[14] + buf[ 9]; d[0] = d[8] = s; d += 64;
249 s = buf[22] + tmp; d[0] = d[8] = s; d += 64;
250 s = buf[ 6]; d[0] = d[8] = s; d += 64;
251
252 tmp = buf[26] + buf[30];
253 s = buf[22] + tmp; d[0] = d[8] = s; d += 64;
254 s = buf[10] + buf[14]; d[0] = d[8] = s; d += 64;
255 s = buf[18] + tmp; d[0] = d[8] = s; d += 64;
256 s = buf[ 2]; d[0] = d[8] = s; d += 64;
257
258 tmp = buf[28] + buf[26];
259 s = buf[18] + tmp; d[0] = d[8] = s; d += 64;
260 s = buf[12] + buf[10]; d[0] = d[8] = s; d += 64;
261 s = buf[20] + tmp; d[0] = d[8] = s; d += 64;
262 s = buf[ 4]; d[0] = d[8] = s; d += 64;
263
264 tmp = buf[24] + buf[28];
265 s = buf[20] + tmp; d[0] = d[8] = s; d += 64;
266 s = buf[ 8] + buf[12]; d[0] = d[8] = s; d += 64;
267 s = buf[16] + tmp; d[0] = d[8] = s;
268
269
270
271
272
273 if (es) {
275 s = d[0];
CLIP_2N(s, 31 - es); d[0] = d[8] = (s << es);
276
278 for (i = 16; i <= 31; i++) {
279 s = d[0];
CLIP_2N(s, 31 - es); d[0] = d[8] = (s << es); d += 64;
280 }
281
283 for (i = 15; i >= 0; i--) {
284 s = d[0];
CLIP_2N(s, 31 - es); d[0] = d[8] = (s << es); d += 64;
285 }
286 }
287}
#define D32FP(i, s0, s1, s2)
fl::UISlider offset("Offset", 0.0f, 0.0f, 1.0f, 0.01f)
__inline int32_t MULSHIFT32(int32_t x, int32_t y) FL_NOEXCEPT
Multiply together two 32-bit numbers and return the top 32-bits of the result.
static const int32_t dcttab[48]