diff --git a/libavfilter/vf_selectivecolor.c b/libavfilter/vf_selectivecolor.c index ebbba9157f..9d789a6d8b 100644 --- a/libavfilter/vf_selectivecolor.c +++ b/libavfilter/vf_selectivecolor.c @@ -328,6 +328,9 @@ static inline int selective_color_##nbits(AVFilterContext *ctx, ThreadData *td, const uint8_t goffset = s->rgba_map[G]; \ const uint8_t boffset = s->rgba_map[B]; \ const uint8_t aoffset = s->rgba_map[A]; \ + const int mid = 1<<(nbits-1); \ + const int max = (1<data[0] + y * dst_linesize); \ @@ -339,10 +342,10 @@ static inline int selective_color_##nbits(AVFilterContext *ctx, ThreadData *td, const int b = src[x + boffset]; \ const int min_color = FFMIN3(r, g, b); \ const int max_color = FFMAX3(r, g, b); \ - const int is_white = (r > 1<<(nbits-1) && g > 1<<(nbits-1) && b > 1<<(nbits-1)); \ + const int is_white = (r > mid && g > mid && b > mid); \ const int is_neutral = (r || g || b) && \ - (r != (1<nb_process_ranges; i++) { \