summaryrefslogtreecommitdiff
path: root/libavfilter/vf_selectivecolor.c
diff options
context:
space:
mode:
authorClément Bœsch <u@pkh.me>2018-08-09 19:22:02 +0200
committerClément Bœsch <u@pkh.me>2018-08-09 19:56:26 +0200
commiteb1860e0174df1e55fce09084421847a1847424a (patch)
tree1d88a626806b3d1d717f9adea181c5db17a64cca /libavfilter/vf_selectivecolor.c
parente0539f0349e945793c11cd88c468d9a2f3fedce9 (diff)
downloadffmpeg-eb1860e0174df1e55fce09084421847a1847424a.tar.gz
lavfi/selectivecolor: fix neutral color filtering
Neutrals are supposed to be anything not black (0,0,0) and not white (N,N,N). Previous neutral filtering code was too strict by excluding colors with any of its RGB component maxed instead of just the white color. Reported-by: Royi Avital <royiavital@yahoo.com>
Diffstat (limited to 'libavfilter/vf_selectivecolor.c')
-rw-r--r--libavfilter/vf_selectivecolor.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/libavfilter/vf_selectivecolor.c b/libavfilter/vf_selectivecolor.c
index c4d51bb70d..b99f31bef2 100644
--- a/libavfilter/vf_selectivecolor.c
+++ b/libavfilter/vf_selectivecolor.c
@@ -344,7 +344,7 @@ static inline int selective_color_##nbits(AVFilterContext *ctx, ThreadData *td,
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_neutral = (r || g || b) && \
- r != (1<<nbits)-1 && g != (1<<nbits)-1 && b != (1<<nbits)-1; \
+ (r != (1<<nbits)-1 || g != (1<<nbits)-1 || b != (1<<nbits)-1); \
const int is_black = (r < 1<<(nbits-1) && g < 1<<(nbits-1) && b < 1<<(nbits-1)); \
const uint32_t range_flag = (r == max_color) << RANGE_REDS \
| (r == min_color) << RANGE_CYANS \