FFmpeg
Data Structures | Macros | Functions
ops_backend.h File Reference
#include <assert.h>
#include <float.h>
#include <stdint.h>
#include "libavutil/attributes.h"
#include "libavutil/mem.h"
#include "ops_chain.h"

Go to the source code of this file.

Data Structures

struct  SwsOpIter
 Copyright (C) 2025 Niklas Haas. More...
 

Macros

#define SWS_FUNC   __attribute__((optimize("tree-vectorize")))
 
#define SWS_LOOP   AV_PRAGMA(GCC ivdep)
 
#define bitfn2(name, ext)   name ## _ ## ext
 
#define bitfn(name, ext)   bitfn2(name, ext)
 
#define FN_SUFFIX   AV_JOIN(FMT_CHAR, BIT_DEPTH)
 
#define fn(name)   bitfn(name, FN_SUFFIX)
 
#define av_q2pixel(q)   ((q).den ? (pixel_t) (q).num / (q).den : 0)
 
#define DECL_FUNC(NAME, ...)
 
#define DECL_READ(NAME, ...)
 
#define DECL_WRITE(NAME, ...)
 
#define CALL(FUNC, ...)   fn(FUNC)(iter, impl, x, y, z, w, __VA_ARGS__)
 
#define CALL_READ(FUNC, ...)
 
#define CALL_WRITE(FUNC, ...)
 
#define DECL_IMPL(NAME)
 
#define CONTINUE(TYPE, ...)
 
#define DECL_SETUP(NAME)   static int fn(NAME)(const SwsOp *op, SwsOpPriv *out)
 
#define SETUP_MEMDUP(c)   ff_setup_memdup(&(c), sizeof(c), out)
 
#define DECL_ENTRY(NAME, ...)
 
#define DECL_PATTERN(NAME)   DECL_FUNC(NAME, const bool X, const bool Y, const bool Z, const bool W)
 
#define WRAP_PATTERN(FUNC, X, Y, Z, W, ...)
 
#define WRAP_COMMON_PATTERNS(FUNC, ...)
 
#define REF_COMMON_PATTERNS(NAME)
 

Functions

static int ff_setup_memdup (const void *c, size_t size, SwsOpPriv *out)
 

Macro Definition Documentation

◆ SWS_FUNC

#define SWS_FUNC   __attribute__((optimize("tree-vectorize")))

Definition at line 56 of file ops_backend.h.

◆ SWS_LOOP

#define SWS_LOOP   AV_PRAGMA(GCC ivdep)

Definition at line 57 of file ops_backend.h.

◆ bitfn2

#define bitfn2 (   name,
  ext 
)    name ## _ ## ext

Definition at line 64 of file ops_backend.h.

◆ bitfn

#define bitfn (   name,
  ext 
)    bitfn2(name, ext)

Definition at line 65 of file ops_backend.h.

◆ FN_SUFFIX

#define FN_SUFFIX   AV_JOIN(FMT_CHAR, BIT_DEPTH)

Definition at line 67 of file ops_backend.h.

◆ fn

#define fn (   name)    bitfn(name, FN_SUFFIX)

Definition at line 68 of file ops_backend.h.

◆ av_q2pixel

#define av_q2pixel (   q)    ((q).den ? (pixel_t) (q).num / (q).den : 0)

Definition at line 70 of file ops_backend.h.

◆ DECL_FUNC

#define DECL_FUNC (   NAME,
  ... 
)
Value:
static av_always_inline void fn(NAME)(SwsOpIter *restrict iter, \
const SwsOpImpl *restrict impl, \
block_t x, block_t y, \
block_t z, block_t w, \
__VA_ARGS__)

Definition at line 73 of file ops_backend.h.

◆ DECL_READ

#define DECL_READ (   NAME,
  ... 
)
Value:
static av_always_inline void fn(NAME)(SwsOpIter *restrict iter, \
const SwsOpImpl *restrict impl, \
const pixel_t *restrict in0, \
const pixel_t *restrict in1, \
const pixel_t *restrict in2, \
const pixel_t *restrict in3, \
__VA_ARGS__)

Definition at line 80 of file ops_backend.h.

◆ DECL_WRITE

#define DECL_WRITE (   NAME,
  ... 
)
Value:
DECL_FUNC(NAME, pixel_t *restrict out0, pixel_t *restrict out1, \
pixel_t *restrict out2, pixel_t *restrict out3, \
__VA_ARGS__)

Definition at line 89 of file ops_backend.h.

◆ CALL

#define CALL (   FUNC,
  ... 
)    fn(FUNC)(iter, impl, x, y, z, w, __VA_ARGS__)

Definition at line 95 of file ops_backend.h.

◆ CALL_READ

#define CALL_READ (   FUNC,
  ... 
)
Value:
fn(FUNC)(iter, impl, (const pixel_t *) iter->in[0], \
(const pixel_t *) iter->in[1], \
(const pixel_t *) iter->in[2], \
(const pixel_t *) iter->in[3], __VA_ARGS__)

Definition at line 98 of file ops_backend.h.

◆ CALL_WRITE

#define CALL_WRITE (   FUNC,
  ... 
)
Value:
CALL(FUNC, (pixel_t *) iter->out[0], (pixel_t *) iter->out[1], \
(pixel_t *) iter->out[2], (pixel_t *) iter->out[3], __VA_ARGS__)

Definition at line 104 of file ops_backend.h.

◆ DECL_IMPL

#define DECL_IMPL (   NAME)
Value:
static SWS_FUNC void fn(NAME)(SwsOpIter *restrict iter, \
const SwsOpImpl *restrict impl, \
block_t x, block_t y, \
block_t z, block_t w) \

Definition at line 109 of file ops_backend.h.

◆ CONTINUE

#define CONTINUE (   TYPE,
  ... 
)
Value:
((void (*)(SwsOpIter *, const SwsOpImpl *, \
TYPE x, TYPE y, TYPE z, TYPE w)) impl->cont) \
(iter, &impl[1], __VA_ARGS__)

Definition at line 116 of file ops_backend.h.

◆ DECL_SETUP

#define DECL_SETUP (   NAME)    static int fn(NAME)(const SwsOp *op, SwsOpPriv *out)

Definition at line 122 of file ops_backend.h.

◆ SETUP_MEMDUP

#define SETUP_MEMDUP (   c)    ff_setup_memdup(&(c), sizeof(c), out)

Definition at line 125 of file ops_backend.h.

◆ DECL_ENTRY

#define DECL_ENTRY (   NAME,
  ... 
)
Value:
static const SwsOpEntry fn(op_##NAME) = { \
.func = (SwsFuncPtr) fn(NAME), \
.type = PIXEL_TYPE, \
__VA_ARGS__ \
}

Definition at line 133 of file ops_backend.h.

◆ DECL_PATTERN

#define DECL_PATTERN (   NAME)    DECL_FUNC(NAME, const bool X, const bool Y, const bool Z, const bool W)

Definition at line 141 of file ops_backend.h.

◆ WRAP_PATTERN

#define WRAP_PATTERN (   FUNC,
  X,
  Y,
  Z,
  W,
  ... 
)
Value:
DECL_IMPL(FUNC##_##X##Y##Z##W) \
{ \
CALL(FUNC, X, Y, Z, W); \
} \
DECL_ENTRY(FUNC##_##X##Y##Z##W, \
.unused = { !X, !Y, !Z, !W }, \
__VA_ARGS__ \
)

Definition at line 144 of file ops_backend.h.

◆ WRAP_COMMON_PATTERNS

#define WRAP_COMMON_PATTERNS (   FUNC,
  ... 
)
Value:
WRAP_PATTERN(FUNC, 1, 0, 0, 0, __VA_ARGS__); \
WRAP_PATTERN(FUNC, 1, 0, 0, 1, __VA_ARGS__); \
WRAP_PATTERN(FUNC, 1, 1, 1, 0, __VA_ARGS__); \
WRAP_PATTERN(FUNC, 1, 1, 1, 1, __VA_ARGS__)

Definition at line 155 of file ops_backend.h.

◆ REF_COMMON_PATTERNS

#define REF_COMMON_PATTERNS (   NAME)
Value:
&fn(op_##NAME##_1000), \
&fn(op_##NAME##_1001), \
&fn(op_##NAME##_1110), \
&fn(op_##NAME##_1111)

Definition at line 161 of file ops_backend.h.

Function Documentation

◆ ff_setup_memdup()

static int ff_setup_memdup ( const void *  c,
size_t  size,
SwsOpPriv out 
)
inlinestatic

Definition at line 126 of file ops_backend.h.

W
@ W
Definition: vf_addroi.c:27
WRAP_PATTERN
#define WRAP_PATTERN(FUNC, X, Y, Z, W,...)
Definition: ops_backend.h:144
block_t
#define block_t
Definition: ops_tmpl_float.c:34
w
uint8_t w
Definition: llviddspenc.c:38
SwsOpIter
Copyright (C) 2025 Niklas Haas.
Definition: ops_backend.h:46
SwsFuncPtr
void(* SwsFuncPtr)(void)
Per-kernel execution context.
Definition: ops_chain.h:66
X
@ X
Definition: vf_addroi.c:27
SwsOpImpl
Definition: ops_chain.h:67
DECL_ENTRY
#define DECL_ENTRY(NAME,...)
Definition: ops_backend.h:133
fn
#define fn(name)
Definition: ops_backend.h:68
TYPE
#define TYPE
Definition: ffv1dec.c:96
DECL_IMPL
#define DECL_IMPL(NAME)
Definition: ops_backend.h:109
DECL_FUNC
#define DECL_FUNC(NAME,...)
Definition: ops_backend.h:73
PIXEL_TYPE
#define PIXEL_TYPE
Definition: ops_tmpl_float.c:30
pixel_t
#define pixel_t
Definition: ops_tmpl_float.c:33
SWS_FUNC
#define SWS_FUNC
Definition: ops_backend.h:56
SwsOpEntry
Definition: ops_chain.h:95
Y
#define Y
Definition: boxblur.h:37
av_always_inline
#define av_always_inline
Definition: attributes.h:49
FUNC
#define FUNC(a)
Definition: bit_depth_template.c:101
CALL
#define CALL(FUNC,...)
Definition: ops_backend.h:95
_
#define _