History

avfilter/vf_selectivecolor: refactor some repeating calculations

Paul B Mahol committed 5 years ago

Commit 69f4fdd1 parent 2b787ef1 file · +9 −6Browse files

Unified · Split

libavfilter/vf_selectivecolor.c+9−6
@@ -328,6 +328,9 @@ static inline int selective_color_##nbits(AVFilterContext *ctx, ThreadData *td, · 327 unmodified lines
328 const uint8_t goffset = s->rgba_map[G]; \328 const uint8_t goffset = s->rgba_map[G]; \
329 const uint8_t boffset = s->rgba_map[B]; \329 const uint8_t boffset = s->rgba_map[B]; \
330 const uint8_t aoffset = s->rgba_map[A]; \330 const uint8_t aoffset = s->rgba_map[A]; \
331 const int mid = 1<<(nbits-1); \
332 const int max = (1<<nbits)-1; \
333 const float scale = 1.f / max; \
331 \334 \
332 for (y = slice_start; y < slice_end; y++) { \335 for (y = slice_start; y < slice_end; y++) { \
333 uint##nbits##_t *dst = ( uint##nbits##_t *)(out->data[0] + y * dst_linesize); \336 uint##nbits##_t *dst = ( uint##nbits##_t *)(out->data[0] + y * dst_linesize); \
@@ -339,10 +342,10 @@ static inline int selective_color_##nbits(AVFilterContext *ctx, ThreadData *td, · 5 unmodified lines
339 const int b = src[x + boffset]; \342 const int b = src[x + boffset]; \
340 const int min_color = FFMIN3(r, g, b); \343 const int min_color = FFMIN3(r, g, b); \
341 const int max_color = FFMAX3(r, g, b); \344 const int max_color = FFMAX3(r, g, b); \
342 const int is_white = (r > 1<<(nbits-1) && g > 1<<(nbits-1) && b > 1<<(nbits-1)); \345 const int is_white = (r > mid && g > mid && b > mid); \
343 const int is_neutral = (r || g || b) && \346 const int is_neutral = (r || g || b) && \
344 (r != (1<<nbits)-1 || g != (1<<nbits)-1 || b != (1<<nbits)-1); \347 (r != max || g != max || b != max); \
345 const int is_black = (r < 1<<(nbits-1) && g < 1<<(nbits-1) && b < 1<<(nbits-1)); \348 const int is_black = (r < mid && g < mid && b < mid); \
346 const uint32_t range_flag = (r == max_color) << RANGE_REDS \349 const uint32_t range_flag = (r == max_color) << RANGE_REDS \
347 | (r == min_color) << RANGE_CYANS \350 | (r == min_color) << RANGE_CYANS \
348 | (g == max_color) << RANGE_GREENS \351 | (g == max_color) << RANGE_GREENS \
@@ -353,9 +356,9 @@ static inline int selective_color_##nbits(AVFilterContext *ctx, ThreadData *td, · 4 unmodified lines
353 | is_neutral << RANGE_NEUTRALS \356 | is_neutral << RANGE_NEUTRALS \
354 | is_black << RANGE_BLACKS; \357 | is_black << RANGE_BLACKS; \
355 \358 \
356 const float rnorm = r * (1.f / ((1<<nbits)-1)); \359 const float rnorm = r * scale; \
357 const float gnorm = g * (1.f / ((1<<nbits)-1)); \360 const float gnorm = g * scale; \
358 const float bnorm = b * (1.f / ((1<<nbits)-1)); \361 const float bnorm = b * scale; \
359 int adjust_r = 0, adjust_g = 0, adjust_b = 0; \362 int adjust_r = 0, adjust_g = 0, adjust_b = 0; \
360 \363 \
361 for (i = 0; i < s->nb_process_ranges; i++) { \364 for (i = 0; i < s->nb_process_ranges; i++) { \

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t