FastLED 3.9.15
Loading...
Searching...
No Matches

◆ imdct12()

static __inline void fl::third_party::imdct12 ( int32_t * x,
int32_t * out )
static

Definition at line 485 of file imdct.hpp.

486{
487 int32_t a0, a1, a2;
488 int32_t x0, x1, x2, x3, x4, x5;
489
490 x0 = *x; x+=3; x1 = *x; x+=3;
491 x2 = *x; x+=3; x3 = *x; x+=3;
492 x4 = *x; x+=3; x5 = *x; x+=3;
493
494 x4 -= x5;
495 x3 -= x4;
496 x2 -= x3;
497 x3 -= x5;
498 x1 -= x2;
499 x0 -= x1;
500 x1 -= x3;
501
502 x0 >>= 1;
503 x1 >>= 1;
504
505 a0 = MULSHIFT32(c3_0, x2) * 2L;
506 a1 = x0 + (x4 >> 1);
507 a2 = x0 - x4;
508 x0 = a1 + a0;
509 x2 = a2;
510 x4 = a1 - a0;
511
512 a0 = MULSHIFT32(c3_0, x3) * 2L;
513 a1 = x1 + (x5 >> 1);
514 a2 = x1 - x5;
515
516 /* cos window odd samples, mul by 2, eat sign bit */
517 x1 = MULSHIFT32(c6[0], a1 + a0) * 4L;
518 x3 = MULSHIFT32(c6[1], a2) * 4L;
519 x5 = MULSHIFT32(c6[2], a1 - a0) * 4L;
520
521 *out = x0 + x1; out++;
522 *out = x2 + x3; out++;
523 *out = x4 + x5; out++;
524 *out = x4 - x5; out++;
525 *out = x2 - x3; out++;
526 *out = x0 - x1;
527}
static int32_t c3_0
Definition imdct.hpp:479
__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.
Definition assembly.h:503
static int32_t c6[3]
Definition imdct.hpp:480
fl::i32 int32_t
Definition coder.h:220

References c3_0, c6, FL_NOEXCEPT, MULSHIFT32(), and fl::x.

Referenced by IMDCT12x3().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: