FFmpeg
Loading...
Searching...
No Matches
vf_lut2.c File Reference
#include "config_components.h"
#include "libavutil/attributes.h"
#include "libavutil/common.h"
#include "libavutil/eval.h"
#include "libavutil/mem.h"
#include "libavutil/opt.h"
#include "libavutil/pixdesc.h"
#include "avfilter.h"
#include "filters.h"
#include "formats.h"
#include "video.h"
#include "framesync.h"

Go to the source code of this file.

Data Structures

struct  LUT2Context
 
struct  ThreadData
 Used for passing data between threads. More...
 

Macros

#define OFFSET(x)
 
#define FLAGS   AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
 
#define TFLAGS   AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_RUNTIME_PARAM
 
#define BIT8_FMTS
 
#define BIT9_FMTS
 
#define BIT10_FMTS
 
#define BIT12_FMTS
 
#define BIT14_FMTS
 
#define BIT16_FMTS
 
#define DEFINE_LUT2(zname, xname, yname, ztype, xtype, ytype, zdiv, xdiv, ydiv)
 
#define lut2_options   options
 

Enumerations

enum  var_name {
  VAR_W , VAR_H , VAR_X , VAR_Y ,
  VAR_BITDEPTHX , VAR_BITDEPTHY , VAR_VARS_NB
}
 

Functions

static av_cold void uninit (AVFilterContext *ctx)
 
static int query_formats (const AVFilterContext *ctx, AVFilterFormatsConfig **cfg_in, AVFilterFormatsConfig **cfg_out)
 
static int config_inputx (AVFilterLink *inlink)
 
static int config_inputy (AVFilterLink *inlink)
 
static int process_frame (FFFrameSync *fs)
 
static int config_output (AVFilterLink *outlink)
 
static int lut2_config_output (AVFilterLink *outlink)
 
static int activate (AVFilterContext *ctx)
 
static int process_command (AVFilterContext *ctx, const char *cmd, const char *args, char *res, int res_len, int flags)
 
 FRAMESYNC_DEFINE_CLASS (lut2, LUT2Context, fs)
 

Variables

static const char *const var_names []
 
static const AVOption options []
 
static const AVFilterPad inputs []
 
static const AVFilterPad outputs []
 
const FFFilter ff_vf_lut2
 

Macro Definition Documentation

◆ OFFSET

#define OFFSET ( x)
Value:
offsetof(LUT2Context, x)

Definition at line 82 of file vf_lut2.c.

◆ FLAGS

Definition at line 83 of file vf_lut2.c.

◆ TFLAGS

◆ BIT8_FMTS

#define BIT8_FMTS
Value:
@ AV_PIX_FMT_YUV420P
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
Definition pixfmt.h:73
@ AV_PIX_FMT_YUV440P
planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples)
Definition pixfmt.h:106
@ AV_PIX_FMT_YUV422P
planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples)
Definition pixfmt.h:77
@ AV_PIX_FMT_GRAY8
Y , 8bpp.
Definition pixfmt.h:81
@ AV_PIX_FMT_YUVA420P
planar YUV 4:2:0, 20bpp, (1 Cr & Cb sample per 2x2 Y & A samples)
Definition pixfmt.h:108
@ AV_PIX_FMT_YUVJ440P
planar YUV 4:4:0 full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV440P and setting color_range
Definition pixfmt.h:107
@ AV_PIX_FMT_YUV410P
planar YUV 4:1:0, 9bpp, (1 Cr & Cb sample per 4x4 Y samples)
Definition pixfmt.h:79
@ AV_PIX_FMT_YUV411P
planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples)
Definition pixfmt.h:80
@ AV_PIX_FMT_YUV444P
planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples)
Definition pixfmt.h:78
@ AV_PIX_FMT_YUVA444P
planar YUV 4:4:4 32bpp, (1 Cr & Cb sample per 1x1 Y & A samples)
Definition pixfmt.h:174
@ AV_PIX_FMT_YUVJ411P
planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) full scale (JPEG), deprecated in favor ...
Definition pixfmt.h:283
@ AV_PIX_FMT_GBRAP
planar GBRA 4:4:4:4 32bpp
Definition pixfmt.h:212
@ AV_PIX_FMT_YUVJ422P
planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV422P and setting col...
Definition pixfmt.h:86
@ AV_PIX_FMT_YUVA422P
planar YUV 4:2:2 24bpp, (1 Cr & Cb sample per 2x1 Y & A samples)
Definition pixfmt.h:173
@ AV_PIX_FMT_GBRP
planar GBR 4:4:4 24bpp
Definition pixfmt.h:165
@ AV_PIX_FMT_YUVJ444P
planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV444P and setting col...
Definition pixfmt.h:87
@ AV_PIX_FMT_YUVJ420P
planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV420P and setting col...
Definition pixfmt.h:85

Definition at line 111 of file vf_lut2.c.

Referenced by query_formats().

◆ BIT9_FMTS

#define BIT9_FMTS
Value:
#define AV_PIX_FMT_YUV444P9
Definition pixfmt.h:544
#define AV_PIX_FMT_GRAY9
Definition pixfmt.h:524
#define AV_PIX_FMT_GBRP9
Definition pixfmt.h:563
#define AV_PIX_FMT_YUV422P9
Definition pixfmt.h:543
#define AV_PIX_FMT_YUVA422P9
Definition pixfmt.h:594
#define AV_PIX_FMT_YUV420P9
Definition pixfmt.h:542
#define AV_PIX_FMT_YUVA420P9
Definition pixfmt.h:593
#define AV_PIX_FMT_YUVA444P9
Definition pixfmt.h:595

Definition at line 119 of file vf_lut2.c.

Referenced by query_formats().

◆ BIT10_FMTS

#define BIT10_FMTS
Value:
#define AV_PIX_FMT_YUV420P10
Definition pixfmt.h:545
#define AV_PIX_FMT_YUVA444P10
Definition pixfmt.h:598
#define AV_PIX_FMT_YUVA420P10
Definition pixfmt.h:596
#define AV_PIX_FMT_GBRP10
Definition pixfmt.h:564
#define AV_PIX_FMT_YUV422P10
Definition pixfmt.h:546
#define AV_PIX_FMT_YUVA422P10
Definition pixfmt.h:597
#define AV_PIX_FMT_GRAY10
Definition pixfmt.h:525
#define AV_PIX_FMT_GBRAP10
Definition pixfmt.h:568
#define AV_PIX_FMT_YUV444P10
Definition pixfmt.h:548

Definition at line 124 of file vf_lut2.c.

Referenced by query_formats().

◆ BIT12_FMTS

#define BIT12_FMTS
Value:
#define AV_PIX_FMT_GBRAP12
Definition pixfmt.h:569
#define AV_PIX_FMT_YUV444P12
Definition pixfmt.h:552
#define AV_PIX_FMT_YUV440P12
Definition pixfmt.h:551
#define AV_PIX_FMT_YUV420P12
Definition pixfmt.h:549
#define AV_PIX_FMT_YUV422P12
Definition pixfmt.h:550
#define AV_PIX_FMT_GRAY12
Definition pixfmt.h:526
#define AV_PIX_FMT_GBRP12
Definition pixfmt.h:565
#define AV_PIX_FMT_YUVA422P12
Definition pixfmt.h:599
#define AV_PIX_FMT_YUVA444P12
Definition pixfmt.h:600

Definition at line 129 of file vf_lut2.c.

Referenced by query_formats().

◆ BIT14_FMTS

#define BIT14_FMTS
Value:
#define AV_PIX_FMT_YUV420P14
Definition pixfmt.h:553
#define AV_PIX_FMT_YUV422P14
Definition pixfmt.h:554
#define AV_PIX_FMT_GRAY14
Definition pixfmt.h:527
#define AV_PIX_FMT_YUV444P14
Definition pixfmt.h:555
#define AV_PIX_FMT_GBRP14
Definition pixfmt.h:566

Definition at line 134 of file vf_lut2.c.

Referenced by query_formats().

◆ BIT16_FMTS

#define BIT16_FMTS
Value:
#define AV_PIX_FMT_YUV420P16
Definition pixfmt.h:556
#define AV_PIX_FMT_GBRAP16
Definition pixfmt.h:571
#define AV_PIX_FMT_YUVA420P16
Definition pixfmt.h:601
#define AV_PIX_FMT_YUV422P16
Definition pixfmt.h:557
#define AV_PIX_FMT_GRAY16
Definition pixfmt.h:528
#define AV_PIX_FMT_YUVA444P16
Definition pixfmt.h:603
#define AV_PIX_FMT_YUVA422P16
Definition pixfmt.h:602
#define AV_PIX_FMT_GBRP16
Definition pixfmt.h:567
#define AV_PIX_FMT_YUV444P16
Definition pixfmt.h:558

Definition at line 138 of file vf_lut2.c.

Referenced by query_formats().

◆ DEFINE_LUT2

#define DEFINE_LUT2 ( zname,
xname,
yname,
ztype,
xtype,
ytype,
zdiv,
xdiv,
ydiv )

Definition at line 248 of file vf_lut2.c.

◆ lut2_options

#define lut2_options   options

Definition at line 563 of file vf_lut2.c.

Enumeration Type Documentation

◆ var_name

enum var_name
Enumerator
VAR_W 
VAR_H 
VAR_X 
VAR_Y 
VAR_BITDEPTHX 
VAR_BITDEPTHY 
VAR_VARS_NB 

Definition at line 45 of file vf_lut2.c.

Function Documentation

◆ uninit()

static av_cold void uninit ( AVFilterContext * ctx)
static

Definition at line 95 of file vf_lut2.c.

◆ query_formats()

static int query_formats ( const AVFilterContext * ctx,
AVFilterFormatsConfig ** cfg_in,
AVFilterFormatsConfig ** cfg_out )
static

Definition at line 143 of file vf_lut2.c.

◆ config_inputx()

static int config_inputx ( AVFilterLink * inlink)
static

Definition at line 202 of file vf_lut2.c.

◆ config_inputy()

static int config_inputy ( AVFilterLink * inlink)
static

Definition at line 229 of file vf_lut2.c.

◆ process_frame()

static int process_frame ( FFFrameSync * fs)
static

Definition at line 295 of file vf_lut2.c.

◆ config_output()

static int config_output ( AVFilterLink * outlink)
static

Definition at line 331 of file vf_lut2.c.

Referenced by lut2_config_output(), and process_command().

◆ lut2_config_output()

static int lut2_config_output ( AVFilterLink * outlink)
static

Definition at line 404 of file vf_lut2.c.

◆ activate()

static int activate ( AVFilterContext * ctx)
static

Definition at line 525 of file vf_lut2.c.

◆ process_command()

static int process_command ( AVFilterContext * ctx,
const char * cmd,
const char * args,
char * res,
int res_len,
int flags )
static

Definition at line 552 of file vf_lut2.c.

◆ FRAMESYNC_DEFINE_CLASS()

FRAMESYNC_DEFINE_CLASS ( lut2 ,
LUT2Context ,
fs  )

Variable Documentation

◆ var_names

const char* const var_names[]
static
Initial value:
= {
"w",
"h",
"x",
"y",
"bdx",
"bdy",
}
#define NULL
Definition coverity.c:32

Definition at line 35 of file vf_lut2.c.

◆ options

const AVOption options[]
static
Initial value:
= {
{ "c0", "set component #0 expression", OFFSET(comp_expr_str[0]), AV_OPT_TYPE_STRING, { .str = "x" }, .flags = TFLAGS },
{ "c1", "set component #1 expression", OFFSET(comp_expr_str[1]), AV_OPT_TYPE_STRING, { .str = "x" }, .flags = TFLAGS },
{ "c2", "set component #2 expression", OFFSET(comp_expr_str[2]), AV_OPT_TYPE_STRING, { .str = "x" }, .flags = TFLAGS },
{ "c3", "set component #3 expression", OFFSET(comp_expr_str[3]), AV_OPT_TYPE_STRING, { .str = "x" }, .flags = TFLAGS },
{ "d", "set output depth", OFFSET(odepth), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 16, .flags = FLAGS },
{ NULL }
}
#define TFLAGS
Definition af_afade.c:66
#define FLAGS
Definition cmdutils.c:598
#define OFFSET(x)
@ AV_OPT_TYPE_INT
Underlying C type is int.
Definition opt.h:258
@ AV_OPT_TYPE_STRING
Underlying C type is a uint8_t* that is either NULL or points to a C string allocated with the av_mal...
Definition opt.h:275

Definition at line 86 of file vf_lut2.c.

◆ inputs

const AVFilterPad inputs[]
static
Initial value:
= {
{
.name = "srcx",
.config_props = config_inputx,
},
{
.name = "srcy",
.config_props = config_inputy,
},
}
@ AVMEDIA_TYPE_VIDEO
Definition avutil.h:200
static int config_inputx(AVFilterLink *inlink)
Definition vf_lut2.c:202
static int config_inputy(AVFilterLink *inlink)
Definition vf_lut2.c:229

Definition at line 531 of file vf_lut2.c.

◆ outputs

const AVFilterPad outputs[]
static
Initial value:
= {
{
.name = "default",
.config_props = lut2_config_output,
},
}
static int lut2_config_output(AVFilterLink *outlink)
Definition vf_lut2.c:404

Definition at line 544 of file vf_lut2.c.

◆ ff_vf_lut2

const FFFilter ff_vf_lut2
Initial value:
= {
.p.name = "lut2",
.p.description = NULL_IF_CONFIG_SMALL("Compute and apply a lookup table from two video inputs."),
.p.priv_class = &lut2_class,
.preinit = lut2_framesync_preinit,
.priv_size = sizeof(LUT2Context),
.process_command = process_command,
}
static int query_formats(const AVFilterContext *ctx, AVFilterFormatsConfig **cfg_in, AVFilterFormatsConfig **cfg_out)
Definition aeval.c:246
static const AVFilterPad inputs[]
Definition af_aap.c:299
static const AVFilterPad outputs[]
Definition af_aap.c:310
static int process_command(AVFilterContext *ctx, const char *cmd, const char *args, char *res, int res_len, int flags)
#define AVFILTER_FLAG_SLICE_THREADS
The filter supports multithreading by splitting frames into multiple parts and processing them concur...
Definition avfilter.h:166
#define AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL
Same as AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC, except that the filter will have its filter_frame() c...
Definition avfilter.h:204
static av_cold void uninit(AVBitStreamFilterContext *ctx)
static int activate(AVBitStreamFilterContext *ctx)
#define FILTER_INPUTS(array)
Definition filters.h:264
#define FILTER_OUTPUTS(array)
Definition filters.h:265
#define FILTER_QUERY_FUNC2(func)
Definition filters.h:241
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
Definition internal.h:88

Definition at line 567 of file vf_lut2.c.