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

◆ bilinearInterpolate()

uint8_t fl::bilinearInterpolate ( uint8_t v00,
uint8_t v10,
uint8_t v01,
uint8_t v11,
uint16_t dx,
uint16_t dy )

Definition at line 65 of file upscale.cpp.

66 {
67 uint16_t dx_inv = 256 - dx;
68 uint16_t dy_inv = 256 - dy;
69
70 uint32_t w00 = (uint32_t)dx_inv * dy_inv;
71 uint32_t w10 = (uint32_t)dx * dy_inv;
72 uint32_t w01 = (uint32_t)dx_inv * dy;
73 uint32_t w11 = (uint32_t)dx * dy;
74
75 uint32_t sum = v00 * w00 + v10 * w10 + v01 * w01 + v11 * w11;
76
77 // Normalize the result by dividing by 65536 (shift right by 16 bits),
78 // with rounding
79 uint8_t result = (uint8_t)((sum + 32768) >> 16);
80
81 return result;
82}

Referenced by upscaleArbitrary().

+ Here is the caller graph for this function: