Go to the source code of this file.
|  | 
| #define | R   0 | 
|  | 
| #define | G   1 | 
|  | 
| #define | B   2 | 
|  | 
| #define | A   3 | 
|  | 
| #define | OFFSET(x)   offsetof(SelectiveColorContext, x) | 
|  | 
| #define | FLAGS   AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM | 
|  | 
| #define | RANGE_OPTION(color_name,  range)   { color_name"s", "adjust "color_name" regions", OFFSET(opt_cmyk_adjust[range]), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 0, FLAGS } | 
|  | 
| #define | DECLARE_RANGE_SCALE_FUNCS(nbits) | 
|  | 
| #define | READ16(dst) | 
|  | 
| #define | DECLARE_SELECTIVE_COLOR_FUNC(nbits) | 
|  | 
| #define | DEF_SELECTIVE_COLOR_FUNC(name,  direct,  correction_method,  nbits) | 
|  | 
| #define | DEF_SELECTIVE_COLOR_FUNCS(nbits) | 
|  | 
|  | 
| enum | color_range { RANGE_REDS, 
RANGE_YELLOWS, 
RANGE_GREENS, 
RANGE_CYANS,
 RANGE_BLUES, 
RANGE_MAGENTAS, 
RANGE_WHITES, 
RANGE_NEUTRALS,
 RANGE_BLACKS, 
NB_RANGES
 }
 | 
|  | 
| enum | correction_method { CORRECTION_METHOD_ABSOLUTE, 
CORRECTION_METHOD_RELATIVE, 
NB_CORRECTION_METHODS
 } | 
|  | 
|  | 
|  | AVFILTER_DEFINE_CLASS (selectivecolor) | 
|  | 
| static int | get_rgb_scale (int r, int g, int b, int min_val, int max_val) | 
|  | 
| static int | get_cmy_scale (int r, int g, int b, int min_val, int max_val) | 
|  | 
| static int | register_range (SelectiveColorContext *s, int range_id) | 
|  | 
| static int | parse_psfile (AVFilterContext *ctx, const char *fname) | 
|  | 
| static int | config_input (AVFilterLink *inlink) | 
|  | 
| static int | comp_adjust (int scale, float value, float adjust, float k, int correction_method) | 
|  | 
| static int | filter_frame (AVFilterLink *inlink, AVFrame *in) | 
|  | 
◆ OFFSET
◆ FLAGS
◆ RANGE_OPTION
      
        
          | #define RANGE_OPTION | ( |  | color_name, | 
        
          |  |  |  | range | 
        
          |  | ) |  | { color_name"s", "adjust "color_name" regions", OFFSET(opt_cmyk_adjust[range]), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 0, FLAGS } | 
      
 
 
◆ DECLARE_RANGE_SCALE_FUNCS
      
        
          | #define DECLARE_RANGE_SCALE_FUNCS | ( |  | nbits | ) |  | 
      
 
Value:static int get_neutrals_scale##nbits(
int r, 
int g, 
int b, 
int min_val, 
int max_val)         \
 
{                                                                                           \
                                                           \
    return (((1<<nbits)-1)*2 - (  
abs((max_val<<1) - ((1<<nbits)-1))                        \
                                + 
abs((min_val<<1) - ((1<<nbits)-1))) + 1) >> 1;            \
}                                                                                           \
                                                                                            \
static 
int get_whites_scale##nbits(
int r, 
int g, 
int b, 
int min_val, 
int max_val)           \
{                                                                                           \
                                                                       \
    return (min_val<<1) - ((1<<nbits)-1);                                                   \
}                                                                                           \
                                                                                            \
static 
int get_blacks_scale##nbits(
int r, 
int g, 
int b, 
int min_val, 
int max_val)           \
{                                                                                           \
                                                                       \
    return ((1<<nbits)-1) - (max_val<<1);                                                   \
}                                                                                           \
Definition at line 127 of file vf_selectivecolor.c.
 
 
◆ READ16
Value:    do {                \
        goto end;                       \
    }                                   \
    buf  += 2;                          \
    size -= 2;                          \
} while (0)
 
 
◆ DECLARE_SELECTIVE_COLOR_FUNC
      
        
          | #define DECLARE_SELECTIVE_COLOR_FUNC | ( |  | nbits | ) |  | 
      
 
 
◆ DEF_SELECTIVE_COLOR_FUNC
◆ DEF_SELECTIVE_COLOR_FUNCS
      
        
          | #define DEF_SELECTIVE_COLOR_FUNCS | ( |  | nbits | ) |  | 
      
 
 
◆ get_range_scale_func
◆ selective_color_func_type
◆ color_range
| Enumerator | 
|---|
| RANGE_REDS |  | 
| RANGE_YELLOWS |  | 
| RANGE_GREENS |  | 
| RANGE_CYANS |  | 
| RANGE_BLUES |  | 
| RANGE_MAGENTAS |  | 
| RANGE_WHITES |  | 
| RANGE_NEUTRALS |  | 
| RANGE_BLACKS |  | 
| NB_RANGES |  | 
Definition at line 44 of file vf_selectivecolor.c.
 
 
◆ correction_method
| Enumerator | 
|---|
| CORRECTION_METHOD_ABSOLUTE |  | 
| CORRECTION_METHOD_RELATIVE |  | 
| NB_CORRECTION_METHODS |  | 
Definition at line 58 of file vf_selectivecolor.c.
 
 
◆ AVFILTER_DEFINE_CLASS()
      
        
          | AVFILTER_DEFINE_CLASS | ( | selectivecolor |  | ) |  | 
      
 
 
◆ get_rgb_scale()
◆ get_cmy_scale()
◆ register_range()
◆ parse_psfile()
◆ config_input()
◆ comp_adjust()
  
  | 
        
          | static int comp_adjust | ( | int | scale, |  
          |  |  | float | value, |  
          |  |  | float | adjust, |  
          |  |  | float | k, |  
          |  |  | int | correction_method |  
          |  | ) |  |  |  | inlinestatic | 
 
 
◆ filter_frame()
◆ color_names
Initial value:= {
    "red", "yellow", "green", "cyan", "blue", "magenta", "white", "neutral", "black"
}
Definition at line 64 of file vf_selectivecolor.c.
Referenced by config_input(), register_range(), and test_av_parse_color().
 
 
◆ selectivecolor_options
◆ pix_fmts
◆ selectivecolor_inputs
◆ selectivecolor_outputs
◆ ff_vf_selectivecolor
Initial value:= {
    .name          = "selectivecolor",
    .priv_class    = &selectivecolor_class,
}
Definition at line 484 of file vf_selectivecolor.c.
 
 
 
static void direct(const float *in, const FFTComplex *ir, int len, float *out)
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf default minimum maximum flags name is the option name
#define FILTER_PIXFMTS_ARRAY(array)
@ AV_PIX_FMT_BGR24
packed RGB 8:8:8, 24bpp, BGRBGR...
@ AV_PIX_FMT_BGRA
packed BGRA 8:8:8:8, 32bpp, BGRABGRA...
#define FILTER_INPUTS(array)
@ AV_PIX_FMT_RGBA
packed RGBA 8:8:8:8, 32bpp, RGBARGBA...
#define AV_PIX_FMT_RGBA64
@ AV_PIX_FMT_BGR0
packed BGR 8:8:8, 32bpp, BGRXBGRX... X=unused/undefined
@ AV_PIX_FMT_ABGR
packed ABGR 8:8:8:8, 32bpp, ABGRABGR...
@ CORRECTION_METHOD_ABSOLUTE
@ AV_PIX_FMT_RGB24
packed RGB 8:8:8, 24bpp, RGBRGB...
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
@ AV_PIX_FMT_RGB0
packed RGB 8:8:8, 32bpp, RGBXRGBX... X=unused/undefined
static int config_input(AVFilterLink *inlink)
#define AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC
Some filters support a generic "enable" expression option that can be used to enable or disable a fil...
@ AV_PIX_FMT_ARGB
packed ARGB 8:8:8:8, 32bpp, ARGBARGB...
#define AV_PIX_FMT_BGRA64
#define DECLARE_SELECTIVE_COLOR_FUNC(nbits)
@ AV_PIX_FMT_0BGR
packed BGR 8:8:8, 32bpp, XBGRXBGR... X=unused/undefined
#define RANGE_OPTION(color_name, range)
static const AVFilterPad selectivecolor_outputs[]
static const AVFilterPad selectivecolor_inputs[]
#define AVFILTER_FLAG_SLICE_THREADS
The filter supports multithreading by splitting frames into multiple parts and processing them concur...
static enum AVPixelFormat pix_fmts[]
#define FILTER_OUTPUTS(array)
@ AV_PIX_FMT_0RGB
packed RGB 8:8:8, 32bpp, XRGBXRGB... X=unused/undefined
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
static int filter_frame(AVFilterLink *inlink, AVFrame *in)
@ CORRECTION_METHOD_RELATIVE
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_WL32 unsigned int_TMPL AV_WL24 unsigned int_TMPL AV_WL16 uint64_t_TMPL AV_WB64 unsigned int_TMPL AV_WB32 unsigned int_TMPL AV_WB24 unsigned int_TMPL AV_RB16