FFmpeg
Loading...
Searching...
No Matches
vf_fftfilt.c File Reference

FFT domain filtering. More...

#include "filters.h"
#include "video.h"
#include "libavutil/common.h"
#include "libavutil/cpu.h"
#include "libavutil/mem.h"
#include "libavutil/opt.h"
#include "libavutil/pixdesc.h"
#include "libavutil/tx.h"
#include "libavutil/eval.h"

Go to the source code of this file.

Data Structures

struct  FFTFILTContext
 

Macros

#define MAX_THREADS   32
 
#define MAX_PLANES   4
 
#define OFFSET(x)
 
#define FLAGS   AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
 

Enumerations

enum  EvalMode { EVAL_MODE_INIT , EVAL_MODE_FRAME , EVAL_MODE_NB }
 
enum  {
  VAR_X , VAR_Y , VAR_W , VAR_H ,
  VAR_N , VAR_WS , VAR_HS , VAR_VARS_NB
}
 
enum  { Y = 0 , U , V }
 

Functions

 AVFILTER_DEFINE_CLASS (fftfilt)
 
static double lum (void *priv, double x, double y, int plane)
 
static double weight_Y (void *priv, double x, double y)
 
static double weight_U (void *priv, double x, double y)
 
static double weight_V (void *priv, double x, double y)
 
static void copy_rev (float *dest, int w, int w2)
 
static int rdft_horizontal8 (AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
 
static int rdft_horizontal16 (AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
 
static int irdft_horizontal8 (AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
 
static int irdft_horizontal16 (AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
 
static av_cold int initialize (AVFilterContext *ctx)
 
static void do_eval (FFTFILTContext *s, AVFilterLink *inlink, int plane)
 
static int config_props (AVFilterLink *inlink)
 
static int multiply_data (AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
 
static int copy_vertical (AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
 
static int rdft_vertical (AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
 
static int irdft_vertical (AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
 
static int copy_horizontal (AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs)
 
static int filter_frame (AVFilterLink *inlink, AVFrame *in)
 
static av_cold void uninit (AVFilterContext *ctx)
 

Variables

static const char *const var_names [] = { "X", "Y", "W", "H", "N", "WS", "HS", NULL }
 
static const AVOption fftfilt_options []
 
static enum AVPixelFormat pixel_fmts_fftfilt []
 
static const AVFilterPad fftfilt_inputs []
 
const FFFilter ff_vf_fftfilt
 

Detailed Description

FFT domain filtering.

Definition in file vf_fftfilt.c.

Macro Definition Documentation

◆ MAX_THREADS

#define MAX_THREADS   32

Definition at line 37 of file vf_fftfilt.c.

◆ MAX_PLANES

#define MAX_PLANES   4

Definition at line 38 of file vf_fftfilt.c.

◆ OFFSET

#define OFFSET ( x)
Value:

Definition at line 89 of file vf_fftfilt.c.

◆ FLAGS

Definition at line 90 of file vf_fftfilt.c.

Enumeration Type Documentation

◆ EvalMode

enum EvalMode
Enumerator
EVAL_MODE_INIT 
EVAL_MODE_FRAME 
EVAL_MODE_NB 

Definition at line 40 of file vf_fftfilt.c.

◆ anonymous enum

anonymous enum
Enumerator
VAR_X 
VAR_Y 
VAR_W 
VAR_H 
VAR_N 
VAR_WS 
VAR_HS 
VAR_VARS_NB 

Definition at line 85 of file vf_fftfilt.c.

◆ anonymous enum

anonymous enum
Enumerator

Definition at line 87 of file vf_fftfilt.c.

Function Documentation

◆ AVFILTER_DEFINE_CLASS()

AVFILTER_DEFINE_CLASS ( fftfilt )

◆ lum()

static double lum ( void * priv,
double x,
double y,
int plane )
inlinestatic

◆ weight_Y()

static double weight_Y ( void * priv,
double x,
double y )
static

Definition at line 113 of file vf_fftfilt.c.

Referenced by initialize().

◆ weight_U()

static double weight_U ( void * priv,
double x,
double y )
static

Definition at line 114 of file vf_fftfilt.c.

Referenced by initialize().

◆ weight_V()

static double weight_V ( void * priv,
double x,
double y )
static

Definition at line 115 of file vf_fftfilt.c.

Referenced by initialize().

◆ copy_rev()

static void copy_rev ( float * dest,
int w,
int w2 )
static

Definition at line 117 of file vf_fftfilt.c.

Referenced by copy_vertical(), rdft_horizontal16(), and rdft_horizontal8().

◆ rdft_horizontal8()

static int rdft_horizontal8 ( AVFilterContext * ctx,
void * arg,
int jobnr,
int nb_jobs )
static

Definition at line 128 of file vf_fftfilt.c.

Referenced by config_props().

◆ rdft_horizontal16()

static int rdft_horizontal16 ( AVFilterContext * ctx,
void * arg,
int jobnr,
int nb_jobs )
static

Definition at line 159 of file vf_fftfilt.c.

Referenced by config_props().

◆ irdft_horizontal8()

static int irdft_horizontal8 ( AVFilterContext * ctx,
void * arg,
int jobnr,
int nb_jobs )
static

Definition at line 190 of file vf_fftfilt.c.

Referenced by config_props().

◆ irdft_horizontal16()

static int irdft_horizontal16 ( AVFilterContext * ctx,
void * arg,
int jobnr,
int nb_jobs )
static

Definition at line 220 of file vf_fftfilt.c.

Referenced by config_props().

◆ initialize()

static av_cold int initialize ( AVFilterContext * ctx)
static

Definition at line 251 of file vf_fftfilt.c.

◆ do_eval()

static void do_eval ( FFTFILTContext * s,
AVFilterLink * inlink,
int plane )
static

Definition at line 285 of file vf_fftfilt.c.

Referenced by config_props(), and filter_frame().

◆ config_props()

static int config_props ( AVFilterLink * inlink)
static

Definition at line 307 of file vf_fftfilt.c.

◆ multiply_data()

static int multiply_data ( AVFilterContext * ctx,
void * arg,
int jobnr,
int nb_jobs )
static

Definition at line 393 of file vf_fftfilt.c.

Referenced by filter_frame().

◆ copy_vertical()

static int copy_vertical ( AVFilterContext * ctx,
void * arg,
int jobnr,
int nb_jobs )
static

Definition at line 414 of file vf_fftfilt.c.

Referenced by filter_frame().

◆ rdft_vertical()

static int rdft_vertical ( AVFilterContext * ctx,
void * arg,
int jobnr,
int nb_jobs )
static

Definition at line 439 of file vf_fftfilt.c.

Referenced by filter_frame().

◆ irdft_vertical()

static int irdft_vertical ( AVFilterContext * ctx,
void * arg,
int jobnr,
int nb_jobs )
static

Definition at line 458 of file vf_fftfilt.c.

Referenced by filter_frame().

◆ copy_horizontal()

static int copy_horizontal ( AVFilterContext * ctx,
void * arg,
int jobnr,
int nb_jobs )
static

Definition at line 477 of file vf_fftfilt.c.

Referenced by filter_frame().

◆ filter_frame()

static int filter_frame ( AVFilterLink * inlink,
AVFrame * in )
static

Definition at line 499 of file vf_fftfilt.c.

◆ uninit()

static av_cold void uninit ( AVFilterContext * ctx)
static

Definition at line 547 of file vf_fftfilt.c.

Variable Documentation

◆ var_names

const char* const var_names[] = { "X", "Y", "W", "H", "N", "WS", "HS", NULL }
static

Definition at line 84 of file vf_fftfilt.c.

◆ fftfilt_options

const AVOption fftfilt_options[]
static
Initial value:
= {
{ "dc_Y", "adjust gain in Y plane", OFFSET(dc[Y]), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1000, FLAGS },
{ "dc_U", "adjust gain in U plane", OFFSET(dc[U]), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1000, FLAGS },
{ "dc_V", "adjust gain in V plane", OFFSET(dc[V]), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1000, FLAGS },
{ "weight_Y", "set luminance expression in Y plane", OFFSET(weight_str[Y]), AV_OPT_TYPE_STRING, {.str = "1"}, 0, 0, FLAGS },
{ "weight_U", "set chrominance expression in U plane", OFFSET(weight_str[U]), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, FLAGS },
{ "weight_V", "set chrominance expression in V plane", OFFSET(weight_str[V]), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, FLAGS },
{ "eval", "specify when to evaluate expressions", OFFSET(eval_mode), AV_OPT_TYPE_INT, {.i64 = EVAL_MODE_INIT}, 0, EVAL_MODE_NB-1, FLAGS, .unit = "eval" },
{ "init", "eval expressions once during initialization", 0, AV_OPT_TYPE_CONST, {.i64=EVAL_MODE_INIT}, .flags = FLAGS, .unit = "eval" },
{ "frame", "eval expressions per-frame", 0, AV_OPT_TYPE_CONST, {.i64=EVAL_MODE_FRAME}, .flags = FLAGS, .unit = "eval" },
{NULL},
}
@ EVAL_MODE_NB
Definition af_volume.h:42
@ EVAL_MODE_FRAME
Definition af_volume.h:41
#define U(x)
Definition vpx_arith.h:37
#define V
Definition avdct.c:32
#define Y
Definition boxblur.h:37
#define FLAGS
Definition cmdutils.c:598
#define NULL
Definition coverity.c:32
#define OFFSET(x)
@ AV_OPT_TYPE_CONST
Special option type for declaring named constants.
Definition opt.h:298
@ 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
@ EVAL_MODE_INIT
Definition vf_fftfilt.c:41

Definition at line 92 of file vf_fftfilt.c.

◆ pixel_fmts_fftfilt

enum AVPixelFormat pixel_fmts_fftfilt[]
static
Initial value:
= {
}
#define AV_PIX_FMT_YUV420P16
Definition pixfmt.h:556
#define AV_PIX_FMT_YUV444P12
Definition pixfmt.h:552
#define AV_PIX_FMT_YUV444P9
Definition pixfmt.h:544
#define AV_PIX_FMT_YUV420P10
Definition pixfmt.h:545
#define AV_PIX_FMT_GRAY9
Definition pixfmt.h:524
#define AV_PIX_FMT_YUV422P9
Definition pixfmt.h:543
#define AV_PIX_FMT_YUV420P12
Definition pixfmt.h:549
#define AV_PIX_FMT_YUV422P12
Definition pixfmt.h:550
#define AV_PIX_FMT_YUV422P10
Definition pixfmt.h:546
#define AV_PIX_FMT_GRAY12
Definition pixfmt.h:526
#define AV_PIX_FMT_YUV420P9
Definition pixfmt.h:542
#define AV_PIX_FMT_YUV420P14
Definition pixfmt.h:553
@ AV_PIX_FMT_NONE
Definition pixfmt.h:72
@ 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_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_YUV444P
planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples)
Definition pixfmt.h:78
@ 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_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
#define AV_PIX_FMT_YUV422P14
Definition pixfmt.h:554
#define AV_PIX_FMT_GRAY10
Definition pixfmt.h:525
#define AV_PIX_FMT_GRAY14
Definition pixfmt.h:527
#define AV_PIX_FMT_YUV422P16
Definition pixfmt.h:557
#define AV_PIX_FMT_GRAY16
Definition pixfmt.h:528
#define AV_PIX_FMT_YUV444P14
Definition pixfmt.h:555
#define AV_PIX_FMT_YUV444P16
Definition pixfmt.h:558
#define AV_PIX_FMT_YUV444P10
Definition pixfmt.h:548

Definition at line 567 of file vf_fftfilt.c.

◆ fftfilt_inputs

const AVFilterPad fftfilt_inputs[]
static
Initial value:
= {
{
.name = "default",
.config_props = config_props,
.filter_frame = filter_frame,
},
}
static int filter_frame(DBEDecodeContext *s, AVFrame *frame)
Definition dolby_e.c:1067
@ AVMEDIA_TYPE_VIDEO
Definition avutil.h:200
static int config_props(AVBitStreamFilterLink *link)
Definition source.c:181

Definition at line 586 of file vf_fftfilt.c.

◆ ff_vf_fftfilt

const FFFilter ff_vf_fftfilt
Initial value:
= {
.p.name = "fftfilt",
.p.description = NULL_IF_CONFIG_SMALL("Apply arbitrary expressions to pixels in frequency domain."),
.p.priv_class = &fftfilt_class,
.priv_size = sizeof(FFTFILTContext),
.init = initialize,
.uninit = uninit,
}
#define AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC
Some filters support a generic "enable" expression option that can be used to enable or disable a fil...
Definition avfilter.h:196
#define AVFILTER_FLAG_SLICE_THREADS
The filter supports multithreading by splitting frames into multiple parts and processing them concur...
Definition avfilter.h:166
static av_cold void uninit(AVBitStreamFilterContext *ctx)
#define FILTER_INPUTS(array)
Definition filters.h:264
#define FILTER_OUTPUTS(array)
Definition filters.h:265
#define FILTER_PIXFMTS_ARRAY(array)
Definition filters.h:244
static int initialize(AVFilterContext *ctx)
Definition vf_eq.c:159
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
Definition internal.h:88
static enum AVPixelFormat pixel_fmts_fftfilt[]
Definition vf_convolve.c:94
static const AVFilterPad fftfilt_inputs[]
Definition vf_fftfilt.c:586
const AVFilterPad ff_video_default_filterpad[1]
An AVFilterPad array whose only entry has name "default" and is of type AVMEDIA_TYPE_VIDEO.
Definition video.c:37

Definition at line 595 of file vf_fftfilt.c.