FFmpeg
Macros | Functions | Variables
ops.c File Reference
#include <float.h>
#include "libavutil/avassert.h"
#include "libavutil/mem.h"
#include "../ops_chain.h"

Go to the source code of this file.

Macros

#define DECL_ENTRY(TYPE, MASK, NAME, ...)
 Copyright (C) 2025 Niklas Haas. More...
 
#define DECL_ASM(TYPE, MASK, NAME, ...)
 
#define DECL_PATTERN(TYPE, NAME, X, Y, Z, W, ...)
 
#define REF_PATTERN(NAME, X, Y, Z, W)   &op_p##X##Y##Z##W##_##NAME
 
#define DECL_COMMON_PATTERNS(TYPE, NAME, ...)
 
#define REF_COMMON_PATTERNS(NAME)
 
#define DECL_RW(EXT, TYPE, NAME, OP, ELEMS, PACKED, FRAC)
 
#define DECL_PACKED_RW(EXT, DEPTH)
 
#define DECL_PACK_UNPACK(EXT, TYPE, X, Y, Z, W)
 
#define DECL_SWAP_BYTES(EXT, TYPE, X, Y, Z, W)
 
#define DECL_CLEAR_ALPHA(EXT, IDX)
 
#define DECL_CLEAR_ZERO(EXT, IDX)
 
#define DECL_CLEAR(EXT, X, Y, Z, W)
 
#define DECL_SWIZZLE(EXT, X, Y, Z, W)
 
#define DECL_CONVERT(EXT, FROM, TO)
 
#define DECL_EXPAND(EXT, FROM, TO)
 
#define DECL_SHIFT16(EXT)
 
#define DECL_MIN_MAX(EXT)
 
#define DECL_SCALE(EXT)
 
#define DECL_EXPAND_BITS(EXT, BITS)
 
#define DECL_DITHER0(EXT)
 
#define DECL_DITHER(EXT, SIZE)
 
#define DECL_LINEAR(EXT, NAME, MASK)
 
#define DECL_FILTER(EXT, TYPE, DIR, NAME, ELEMS, ...)
 
#define DECL_FILTERS(EXT, TYPE, DIR, NAME, ...)
 
#define DECL_FILTERS_GENERIC(EXT, TYPE)
 
#define REF_FILTERS(NAME, SUFFIX)
 
#define DECL_FUNCS_8(SIZE, EXT, FLAG)
 
#define DECL_FUNCS_16(SIZE, EXT, FLAG)
 
#define DECL_FUNCS_32(SIZE, EXT, FLAG)
 
#define ASSIGN_SHUFFLE_FUNC(IN, OUT, EXT)
 
#define ASSIGN_PROCESS_FUNC(NAME)
 

Functions

static int setup_rw (const SwsImplParams *params, SwsImplResult *out)
 
static int setup_swap_bytes (const SwsImplParams *params, SwsImplResult *out)
 
static int setup_clear (const SwsImplParams *params, SwsImplResult *out)
 
static int setup_shift (const SwsImplParams *params, SwsImplResult *out)
 
static int setup_dither (const SwsImplParams *params, SwsImplResult *out)
 
static int setup_linear (const SwsImplParams *params, SwsImplResult *out)
 
static bool check_filter_fma (const SwsImplParams *params)
 
static int setup_filter_v (const SwsImplParams *params, SwsImplResult *out)
 
static int hscale_sizeof_weight (const SwsOp *op)
 
static int setup_filter_h (const SwsImplParams *params, SwsImplResult *out)
 
static bool check_filter_4x4_h (const SwsImplParams *params)
 
static int setup_filter_4x4_h (const SwsImplParams *params, SwsImplResult *out)
 
static av_const int get_mmsize (const int cpu_flags)
 
static bool op_is_type_invariant (const SwsOp *op)
 Returns true if the operation's implementation only depends on the block size, and not the underlying pixel type. More...
 
static int movsize (const int bytes, const int mmsize)
 
static int solve_shuffle (const SwsOpList *ops, int mmsize, SwsCompiledOp *out)
 
static void normalize_clear (SwsOp *op)
 
static int compile (SwsContext *ctx, SwsOpList *ops, SwsCompiledOp *out)
 

Variables

static const SwsOpTable *const tables []
 
const SwsOpBackend backend_x86
 

Macro Definition Documentation

◆ DECL_ENTRY

#define DECL_ENTRY (   TYPE,
  MASK,
  NAME,
  ... 
)
Value:
static const SwsOpEntry op_##NAME = { \
.type = SWS_PIXEL_##TYPE, \
.mask = MASK, \
__VA_ARGS__ \
}

Copyright (C) 2025 Niklas Haas.

This file is part of FFmpeg.

FFmpeg is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

FFmpeg is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with FFmpeg; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

Definition at line 28 of file ops.c.

◆ DECL_ASM

#define DECL_ASM (   TYPE,
  MASK,
  NAME,
  ... 
)
Value:
void ff_##NAME(void); \
DECL_ENTRY(TYPE, MASK, NAME, \
.func = ff_##NAME, \
__VA_ARGS__)

Definition at line 35 of file ops.c.

◆ DECL_PATTERN

#define DECL_PATTERN (   TYPE,
  NAME,
  X,
  Y,
  Z,
  W,
  ... 
)
Value:
DECL_ASM(TYPE, SWS_COMP_MASK(X, Y, Z, W), p##X##Y##Z##W##_##NAME, \
__VA_ARGS__ \
)

Definition at line 41 of file ops.c.

◆ REF_PATTERN

#define REF_PATTERN (   NAME,
  X,
  Y,
  Z,
  W 
)    &op_p##X##Y##Z##W##_##NAME

Definition at line 46 of file ops.c.

◆ DECL_COMMON_PATTERNS

#define DECL_COMMON_PATTERNS (   TYPE,
  NAME,
  ... 
)
Value:
DECL_PATTERN(TYPE, NAME, 1, 0, 0, 0, __VA_ARGS__); \
DECL_PATTERN(TYPE, NAME, 1, 0, 0, 1, __VA_ARGS__); \
DECL_PATTERN(TYPE, NAME, 1, 1, 1, 0, __VA_ARGS__); \
DECL_PATTERN(TYPE, NAME, 1, 1, 1, 1, __VA_ARGS__) \

Definition at line 49 of file ops.c.

◆ REF_COMMON_PATTERNS

#define REF_COMMON_PATTERNS (   NAME)
Value:
REF_PATTERN(NAME, 1, 0, 0, 0), \
REF_PATTERN(NAME, 1, 0, 0, 1), \
REF_PATTERN(NAME, 1, 1, 1, 0), \
REF_PATTERN(NAME, 1, 1, 1, 1)

Definition at line 55 of file ops.c.

◆ DECL_RW

#define DECL_RW (   EXT,
  TYPE,
  NAME,
  OP,
  ELEMS,
  PACKED,
  FRAC 
)
Value:
.op = SWS_OP_##OP, \
.rw = { .elems = ELEMS, .packed = PACKED, .frac = FRAC }, \
.setup = setup_rw, \
);

Definition at line 76 of file ops.c.

◆ DECL_PACKED_RW

#define DECL_PACKED_RW (   EXT,
  DEPTH 
)
Value:
DECL_RW(EXT, U##DEPTH, read##DEPTH##_packed, READ, 2, true, 0) \
DECL_RW(EXT, U##DEPTH, read##DEPTH##_packed, READ, 3, true, 0) \
DECL_RW(EXT, U##DEPTH, read##DEPTH##_packed, READ, 4, true, 0) \
DECL_RW(EXT, U##DEPTH, write##DEPTH##_packed, WRITE, 2, true, 0) \
DECL_RW(EXT, U##DEPTH, write##DEPTH##_packed, WRITE, 3, true, 0) \
DECL_RW(EXT, U##DEPTH, write##DEPTH##_packed, WRITE, 4, true, 0) \

Definition at line 83 of file ops.c.

◆ DECL_PACK_UNPACK

#define DECL_PACK_UNPACK (   EXT,
  TYPE,
  X,
  Y,
  Z,
  W 
)
Value:
DECL_ASM(TYPE, SWS_COMP(0), pack_##X##Y##Z##W##EXT, \
.pack.pattern = {X, Y, Z, W}, \
); \
DECL_ASM(TYPE, SWS_COMP_MASK(X, Y, Z, W), unpack_##X##Y##Z##W##EXT, \
.pack.pattern = {X, Y, Z, W}, \
); \

Definition at line 91 of file ops.c.

◆ DECL_SWAP_BYTES

#define DECL_SWAP_BYTES (   EXT,
  TYPE,
  X,
  Y,
  Z,
  W 
)
Value:
p##X##Y##Z##W##_swap_bytes_##TYPE##EXT, \
.func = ff_p##X##Y##Z##W##_shuffle##EXT, \
.setup = setup_swap_bytes, \
);

Definition at line 110 of file ops.c.

◆ DECL_CLEAR_ALPHA

#define DECL_CLEAR_ALPHA (   EXT,
  IDX 
)
Value:
DECL_ASM(U8, SWS_COMP_ALL, clear_alpha##IDX##EXT, \
.clear.mask = SWS_COMP(IDX), \
.clear.value[IDX] = { -1, 1 }, \
); \

Definition at line 118 of file ops.c.

◆ DECL_CLEAR_ZERO

#define DECL_CLEAR_ZERO (   EXT,
  IDX 
)
Value:
DECL_ASM(U8, SWS_COMP_ALL, clear_zero##IDX##EXT, \
.clear.mask = SWS_COMP(IDX), \
.clear.value[IDX] = { 0, 1 }, \
);

Definition at line 125 of file ops.c.

◆ DECL_CLEAR

#define DECL_CLEAR (   EXT,
  X,
  Y,
  Z,
  W 
)
Value:
DECL_ASM(U8, SWS_COMP_ALL, p##X##Y##Z##W##_clear##EXT, \
.setup = setup_clear, \
.clear.mask = SWS_COMP_MASK(X, Y, Z, W), \
);

Definition at line 140 of file ops.c.

◆ DECL_SWIZZLE

#define DECL_SWIZZLE (   EXT,
  X,
  Y,
  Z,
  W 
)
Value:
DECL_ASM(U8, SWS_COMP_ALL, swizzle_##X##Y##Z##W##EXT, \
.swizzle.in = {X, Y, Z, W}, \
);

Definition at line 147 of file ops.c.

◆ DECL_CONVERT

#define DECL_CONVERT (   EXT,
  FROM,
  TO 
)
Value:
DECL_COMMON_PATTERNS(FROM, convert_##FROM##_##TO##EXT, \
.convert.to = SWS_PIXEL_##TO, \
);

Definition at line 153 of file ops.c.

◆ DECL_EXPAND

#define DECL_EXPAND (   EXT,
  FROM,
  TO 
)
Value:
DECL_COMMON_PATTERNS(FROM, expand_##FROM##_##TO##EXT, \
.convert.to = SWS_PIXEL_##TO, \
.convert.expand = true, \
);

Definition at line 159 of file ops.c.

◆ DECL_SHIFT16

#define DECL_SHIFT16 (   EXT)
Value:
DECL_COMMON_PATTERNS(U16, lshift16##EXT, \
.setup = setup_shift, \
.flexible = true, \
); \
DECL_COMMON_PATTERNS(U16, rshift16##EXT, \
.setup = setup_shift, \
.flexible = true, \
);

Definition at line 172 of file ops.c.

◆ DECL_MIN_MAX

#define DECL_MIN_MAX (   EXT)
Value:
.op = SWS_OP_MIN, \
.setup = ff_sws_setup_clamp, \
.flexible = true, \
); \
.op = SWS_OP_MAX, \
.setup = ff_sws_setup_clamp, \
.flexible = true, \
);

Definition at line 185 of file ops.c.

◆ DECL_SCALE

#define DECL_SCALE (   EXT)
Value:
.setup = ff_sws_setup_scale, \
.flexible = true, \
);

Definition at line 198 of file ops.c.

◆ DECL_EXPAND_BITS

#define DECL_EXPAND_BITS (   EXT,
  BITS 
)
Value:
DECL_ASM(U##BITS, SWS_COMP(0), expand_bits##BITS##EXT, \
.scale = { .num = ((1 << (BITS)) - 1), .den = 1 }, \
);

Definition at line 205 of file ops.c.

◆ DECL_DITHER0

#define DECL_DITHER0 (   EXT)
Value:
DECL_COMMON_PATTERNS(F32, dither0##EXT, \
.setup = setup_dither, \
);

Definition at line 256 of file ops.c.

◆ DECL_DITHER

#define DECL_DITHER (   EXT,
  SIZE 
)
Value:
.setup = setup_dither, \
.dither_size = SIZE, \
);

Definition at line 262 of file ops.c.

◆ DECL_LINEAR

#define DECL_LINEAR (   EXT,
  NAME,
  MASK 
)
Value:
DECL_ASM(F32, SWS_COMP_ALL, NAME##EXT, \
.setup = setup_linear, \
.linear_mask = (MASK), \
);

Definition at line 286 of file ops.c.

◆ DECL_FILTER

#define DECL_FILTER (   EXT,
  TYPE,
  DIR,
  NAME,
  ELEMS,
  ... 
)
Value:
.rw.elems = ELEMS, \
.rw.filter = SWS_OP_FILTER_##DIR, \
__VA_ARGS__ \
);

Definition at line 515 of file ops.c.

◆ DECL_FILTERS

#define DECL_FILTERS (   EXT,
  TYPE,
  DIR,
  NAME,
  ... 
)
Value:
DECL_FILTER(EXT, TYPE, DIR, NAME, 1, __VA_ARGS__) \
DECL_FILTER(EXT, TYPE, DIR, NAME, 2, __VA_ARGS__) \
DECL_FILTER(EXT, TYPE, DIR, NAME, 3, __VA_ARGS__) \
DECL_FILTER(EXT, TYPE, DIR, NAME, 4, __VA_ARGS__)

Definition at line 523 of file ops.c.

◆ DECL_FILTERS_GENERIC

#define DECL_FILTERS_GENERIC (   EXT,
  TYPE 
)
Value:
DECL_FILTERS(EXT, TYPE, V, filter_v, .setup = setup_filter_v) \
DECL_FILTERS(EXT, TYPE, V, filter_fma_v, .setup = setup_filter_v, \
DECL_FILTERS(EXT, TYPE, H, filter_h, .setup = setup_filter_h) \
DECL_FILTERS(EXT, TYPE, H, filter_4x4_h, .setup = setup_filter_4x4_h, \

Definition at line 529 of file ops.c.

◆ REF_FILTERS

#define REF_FILTERS (   NAME,
  SUFFIX 
)
Value:
&op_##NAME##1##SUFFIX, \
&op_##NAME##2##SUFFIX, \
&op_##NAME##3##SUFFIX, \
&op_##NAME##4##SUFFIX

Definition at line 537 of file ops.c.

◆ DECL_FUNCS_8

#define DECL_FUNCS_8 (   SIZE,
  EXT,
  FLAG 
)

Definition at line 543 of file ops.c.

◆ DECL_FUNCS_16

#define DECL_FUNCS_16 (   SIZE,
  EXT,
  FLAG 
)

Definition at line 673 of file ops.c.

◆ DECL_FUNCS_32

#define DECL_FUNCS_32 (   SIZE,
  EXT,
  FLAG 
)

Definition at line 715 of file ops.c.

◆ ASSIGN_SHUFFLE_FUNC

#define ASSIGN_SHUFFLE_FUNC (   IN,
  OUT,
  EXT 
)
Value:
do { \
SWS_DECL_FUNC(ff_packed_shuffle##IN##_##OUT##_##EXT); \
if (in_total == IN && out_total == OUT) \
out->func = ff_packed_shuffle##IN##_##OUT##_##EXT; \
} while (0)

◆ ASSIGN_PROCESS_FUNC

#define ASSIGN_PROCESS_FUNC (   NAME)
Value:
do { \
SWS_DECL_FUNC(NAME); \
out->func = NAME; \
} while (0)

Function Documentation

◆ setup_rw()

static int setup_rw ( const SwsImplParams params,
SwsImplResult out 
)
static

Definition at line 61 of file ops.c.

◆ setup_swap_bytes()

static int setup_swap_bytes ( const SwsImplParams params,
SwsImplResult out 
)
static

Definition at line 102 of file ops.c.

◆ setup_clear()

static int setup_clear ( const SwsImplParams params,
SwsImplResult out 
)
static

Definition at line 132 of file ops.c.

◆ setup_shift()

static int setup_shift ( const SwsImplParams params,
SwsImplResult out 
)
static

Definition at line 166 of file ops.c.

◆ setup_dither()

static int setup_dither ( const SwsImplParams params,
SwsImplResult out 
)
static

Definition at line 211 of file ops.c.

◆ setup_linear()

static int setup_linear ( const SwsImplParams params,
SwsImplResult out 
)
static

Definition at line 269 of file ops.c.

◆ check_filter_fma()

static bool check_filter_fma ( const SwsImplParams params)
static

Definition at line 293 of file ops.c.

◆ setup_filter_v()

static int setup_filter_v ( const SwsImplParams params,
SwsImplResult out 
)
static

Definition at line 318 of file ops.c.

◆ hscale_sizeof_weight()

static int hscale_sizeof_weight ( const SwsOp op)
static

Definition at line 338 of file ops.c.

Referenced by setup_filter_4x4_h(), and setup_filter_h().

◆ setup_filter_h()

static int setup_filter_h ( const SwsImplParams params,
SwsImplResult out 
)
static

vpgatherdd gathers 32 bits at a time; so if we're filtering a smaller size, we need to gather 2/4 taps simultaneously and unroll the inner loop over several packed samples.

Transpose filter weights to group (aligned) taps by block

Definition at line 348 of file ops.c.

◆ check_filter_4x4_h()

static bool check_filter_4x4_h ( const SwsImplParams params)
static

Otherwise, prefer it above a certain filter size. Empirically, this kernel seems to be faster whenever the reference/gather kernel crosses a breakpoint for the number of gathers needed, but this filter doesn't.

Tested on a Lunar Lake (Intel Core Ultra 7 258V) system.

Definition at line 432 of file ops.c.

◆ setup_filter_4x4_h()

static int setup_filter_4x4_h ( const SwsImplParams params,
SwsImplResult out 
)
static

Desired memory layout: [w][taps][pixels_align][taps_align]

Example with taps_align=8, pixels_align=4: [a0, a1, ... a7] weights for pixel 0, taps 0..7 [b0, b1, ... b7] weights for pixel 1, taps 0..7 [c0, c1, ... c7] weights for pixel 2, taps 0..7 [d0, d1, ... d7] weights for pixel 3, taps 0..7 [a8, a9, ... a15] weights for pixel 0, taps 8..15 ... repeat for all taps, then move on to pixels 4..7, etc.

Definition at line 456 of file ops.c.

◆ get_mmsize()

static av_const int get_mmsize ( const int  cpu_flags)
static

Definition at line 856 of file ops.c.

Referenced by compile().

◆ op_is_type_invariant()

static bool op_is_type_invariant ( const SwsOp op)
static

Returns true if the operation's implementation only depends on the block size, and not the underlying pixel type.

Definition at line 872 of file ops.c.

Referenced by compile().

◆ movsize()

static int movsize ( const int  bytes,
const int  mmsize 
)
static

Definition at line 886 of file ops.c.

Referenced by solve_shuffle().

◆ solve_shuffle()

static int solve_shuffle ( const SwsOpList ops,
int  mmsize,
SwsCompiledOp out 
)
static

Definition at line 893 of file ops.c.

Referenced by compile().

◆ normalize_clear()

static void normalize_clear ( SwsOp op)
static

Definition at line 958 of file ops.c.

Referenced by compile().

◆ compile()

static int compile ( SwsContext ctx,
SwsOpList ops,
SwsCompiledOp out 
)
static

Definition at line 983 of file ops.c.

Variable Documentation

◆ tables

const SwsOpTable* const tables[]
static
Initial value:
= {
&ops8_m1_sse4,
&ops8_m1_avx2,
&ops8_m2_sse4,
&ops8_m2_avx2,
&ops16_m1_avx2,
&ops16_m2_avx2,
&ops32_avx2,
}

Definition at line 846 of file ops.c.

Referenced by compile().

◆ backend_x86

const SwsOpBackend backend_x86
Initial value:
= {
.name = "x86",
.compile = compile,
.hw_format = AV_PIX_FMT_NONE,
}

Definition at line 1057 of file ops.c.

SWS_OP_READ
@ SWS_OP_READ
Definition: ops.h:50
func
int(* func)(AVBPrint *dst, const char *in, const char *arg)
Definition: jacosubdec.c:66
check_filter_fma
static bool check_filter_fma(const SwsImplParams *params)
Definition: ops.c:293
SWS_OP_SWIZZLE
@ SWS_OP_SWIZZLE
Definition: ops.h:53
DECL_ENTRY
#define DECL_ENTRY(TYPE, MASK, NAME,...)
Copyright (C) 2025 Niklas Haas.
Definition: ops.c:28
SWS_OP_LSHIFT
@ SWS_OP_LSHIFT
Definition: ops.h:58
SWS_OP_UNPACK
@ SWS_OP_UNPACK
Definition: ops.h:56
SWS_OP_CLEAR
@ SWS_OP_CLEAR
Definition: ops.h:62
ff_sws_setup_scale
int ff_sws_setup_scale(const SwsImplParams *params, SwsImplResult *out)
Definition: ops_chain.c:250
SWS_OP_DITHER
@ SWS_OP_DITHER
Definition: ops.h:70
ELEMS
#define ELEMS
SwsOpEntry::type
SwsPixelType type
Definition: ops_chain.h:122
max
#define max(a, b)
Definition: cuda_runtime.h:33
SWS_COMP_ELEMS
#define SWS_COMP_ELEMS(N)
Definition: ops.h:91
setup_linear
static int setup_linear(const SwsImplParams *params, SwsImplResult *out)
Definition: ops.c:269
convert
static void convert(float y, float u, float v, float *b, float *g, float *r)
Definition: exr.c:974
SWS_COMP_MASK
#define SWS_COMP_MASK(X, Y, Z, W)
Definition: ops.h:92
READ
#define READ
Definition: cbs_apv.c:82
setup_dither
static int setup_dither(const SwsImplParams *params, SwsImplResult *out)
Definition: ops.c:211
DECL_RW
#define DECL_RW(EXT, TYPE, NAME, OP, ELEMS, PACKED, FRAC)
Definition: ops.c:76
SWS_OP_SCALE
@ SWS_OP_SCALE
Definition: ops.h:66
check
#define check(x, y, S, v)
Definition: motion_est_template.c:405
W
#define W(a, i, v)
Definition: jpegls.h:119
dither
static const uint16_t dither[8][8]
Definition: vf_gradfun.c:46
op
static int op(uint8_t **dst, const uint8_t *dst_end, GetByteContext *gb, int pixel, int count, int *x, int width, int linesize)
Perform decode operation.
Definition: anm.c:76
setup_clear
static int setup_clear(const SwsImplParams *params, SwsImplResult *out)
Definition: ops.c:132
SWS_OP_MIN
@ SWS_OP_MIN
Definition: ops.h:64
SWS_OP_LINEAR
@ SWS_OP_LINEAR
Definition: ops.h:69
WRITE
#define WRITE
Definition: cbs_apv.c:120
U16
@ U16
Definition: sw_ops.c:40
SWS_OP_PACK
@ SWS_OP_PACK
Definition: ops.h:57
TYPE
#define TYPE
Definition: ffv1dec.c:96
V
#define V
Definition: avdct.c:32
check_filter_4x4_h
static bool check_filter_4x4_h(const SwsImplParams *params)
Definition: ops.c:432
setup_rw
static int setup_rw(const SwsImplParams *params, SwsImplResult *out)
Definition: ops.c:61
setup_filter_4x4_h
static int setup_filter_4x4_h(const SwsImplParams *params, SwsImplResult *out)
Definition: ops.c:456
MASK
#define MASK
Definition: median_template.c:42
DECL_FILTER
#define DECL_FILTER(EXT, TYPE, DIR, NAME, ELEMS,...)
Definition: ops.c:515
SWS_COMP
#define SWS_COMP(X)
Definition: ops.h:88
BITS
#define BITS
Definition: h264_mb.c:793
SWS_COMP_ALL
@ SWS_COMP_ALL
Definition: ops.h:87
ff_sws_setup_clamp
int ff_sws_setup_clamp(const SwsImplParams *params, SwsImplResult *out)
Definition: ops_chain.c:265
F32
@ F32
Definition: sw_ops.c:42
SWS_OP_RSHIFT
@ SWS_OP_RSHIFT
Definition: ops.h:59
SIZE
#define SIZE
Definition: bitstream_template.c:36
setup_swap_bytes
static int setup_swap_bytes(const SwsImplParams *params, SwsImplResult *out)
Definition: ops.c:102
H
#define H
Definition: pixlet.c:39
SwsOpEntry
Definition: ops_chain.h:119
IN
#define IN(x)
Definition: vp9dsp_template.c:1200
OUT
@ OUT
Definition: af_loudnorm.c:41
Y
#define Y
Definition: boxblur.h:37
compile
static int compile(SwsContext *ctx, SwsOpList *ops, SwsCompiledOp *out)
Definition: ops.c:983
DEPTH
#define DEPTH
Definition: v210enc.c:43
DECL_FILTERS
#define DECL_FILTERS(EXT, TYPE, DIR, NAME,...)
Definition: ops.c:523
SWS_OP_MAX
@ SWS_OP_MAX
Definition: ops.h:65
setup_shift
static int setup_shift(const SwsImplParams *params, SwsImplResult *out)
Definition: ops.c:166
U
#define U(x)
Definition: vpx_arith.h:37
OP
#define OP(gb, pixel, count)
AV_PIX_FMT_NONE
@ AV_PIX_FMT_NONE
Definition: pixfmt.h:72
SWS_OP_SWAP_BYTES
@ SWS_OP_SWAP_BYTES
Definition: ops.h:52
DECL_ASM
#define DECL_ASM(TYPE, MASK, NAME,...)
Definition: ops.c:35
REF_PATTERN
#define REF_PATTERN(NAME, X, Y, Z, W)
Definition: ops.c:46
Windows::Graphics::DirectX::Direct3D11::p
IDirect3DDxgiInterfaceAccess _COM_Outptr_ void ** p
Definition: vsrc_gfxcapture_winrt.hpp:53
DECL_COMMON_PATTERNS
#define DECL_COMMON_PATTERNS(TYPE, NAME,...)
Definition: ops.c:49
DECL_PATTERN
#define DECL_PATTERN(TYPE, NAME, X, Y, Z, W,...)
Definition: ops.c:41
_
#define _
scale
static void scale(int *out, const int *in, const int w, const int h, const int shift)
Definition: intra.c:278
setup_filter_v
static int setup_filter_v(const SwsImplParams *params, SwsImplResult *out)
Definition: ops.c:318
SWS_OP_CONVERT
@ SWS_OP_CONVERT
Definition: ops.h:63
X
@ X
Definition: vf_addroi.c:27
read
static uint32_t BS_FUNC() read(BSCTX *bc, unsigned int n)
Return n bits from the buffer, n has to be in the 0-32 range.
Definition: bitstream_template.h:239
U8
@ U8
Definition: sw_ops.c:39
min
float min
Definition: vorbis_enc_data.h:429
setup_filter_h
static int setup_filter_h(const SwsImplParams *params, SwsImplResult *out)
Definition: ops.c:348