Skip to content

Commit

Permalink
Update global brightness math to fix overflows
Browse files Browse the repository at this point in the history
  • Loading branch information
extesy authored and focalintent committed Jan 20, 2019
1 parent 010edf0 commit 9ead847
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions chipsets.h
Expand Up @@ -239,10 +239,10 @@ class APA102Controller : public CPixelLEDController<RGB_ORDER> {
uint8_t s0 = pixels.getScale0(), s1 = pixels.getScale1(), s2 = pixels.getScale2();
#if FASTLED_USE_GLOBAL_BRIGHTNESS == 1
const uint16_t maxBrightness = 0x1F;
uint16_t brightness = (max(max(s0, s1), s2) * maxBrightness >> 8) + 1;
s0 = ((uint16_t)s0 + 1) * maxBrightness / brightness - 1;
s1 = ((uint16_t)s1 + 1) * maxBrightness / brightness - 1;
s2 = ((uint16_t)s2 + 1) * maxBrightness / brightness - 1;
uint16_t brightness = ((((uint16_t)max(max(s0, s1), s2) + 1) * maxBrightness - 1) >> 8) + 1;
s0 = (maxBrightness * s0 + (brightness >> 1)) / brightness;
s1 = (maxBrightness * s1 + (brightness >> 1)) / brightness;
s2 = (maxBrightness * s2 + (brightness >> 1)) / brightness;
#else
const uint8_t brightness = 0x1F;
#endif
Expand Down Expand Up @@ -304,10 +304,10 @@ class SK9822Controller : public CPixelLEDController<RGB_ORDER> {
uint8_t s0 = pixels.getScale0(), s1 = pixels.getScale1(), s2 = pixels.getScale2();
#if FASTLED_USE_GLOBAL_BRIGHTNESS == 1
const uint16_t maxBrightness = 0x1F;
uint16_t brightness = (max(max(s0, s1), s2) * maxBrightness >> 8) + 1;
s0 = ((uint16_t)s0 + 1) * maxBrightness / brightness - 1;
s1 = ((uint16_t)s1 + 1) * maxBrightness / brightness - 1;
s2 = ((uint16_t)s2 + 1) * maxBrightness / brightness - 1;
uint16_t brightness = ((((uint16_t)max(max(s0, s1), s2) + 1) * maxBrightness - 1) >> 8) + 1;
s0 = (maxBrightness * s0 + (brightness >> 1)) / brightness;
s1 = (maxBrightness * s1 + (brightness >> 1)) / brightness;
s2 = (maxBrightness * s2 + (brightness >> 1)) / brightness;
#else
const uint8_t brightness = 0x1F;
#endif
Expand Down

0 comments on commit 9ead847

Please sign in to comment.