FFmpeg
Macros | Functions
vp9dsp_init_16bpp_arm_template.c File Reference
#include <stdint.h>
#include "libavutil/attributes.h"
#include "libavutil/internal.h"
#include "libavutil/mem_internal.h"
#include "libavutil/arm/cpu.h"
#include "vp9dsp_init.h"

Go to the source code of this file.

Macros

#define declare_fpel(type, sz, suffix)
 
#define decl_mc_func(op, filter, dir, sz, bpp)
 
#define define_8tap_2d_fn(op, filter, sz, bpp)
 
#define decl_filter_funcs(op, dir, sz, bpp)
 
#define decl_mc_funcs(sz, bpp)
 
#define define_8tap_2d_funcs(sz, bpp)
 
#define init_fpel(idx1, idx2, sz, type, suffix)
 
#define init_copy_avg(idx, sz1, sz2)
 
#define init_mc_func(idx1, idx2, op, filter, fname, dir, mx, my, sz, pfx, bpp)   dsp->mc[idx1][filter][idx2][mx][my] = pfx##op##_##fname##sz##_##dir##_##bpp##_neon
 
#define init_mc_funcs(idx, dir, mx, my, sz, pfx, bpp)
 
#define init_mc_funcs_dirs(idx, sz, bpp)
 
#define define_itxfm2(type_a, type_b, sz, bpp)
 
#define define_itxfm(type_a, type_b, sz, bpp)   define_itxfm2(type_a, type_b, sz, bpp)
 
#define define_itxfm_funcs(sz, bpp)
 
#define init_itxfm2(tx, sz, bpp)
 
#define init_itxfm(tx, sz, bpp)   init_itxfm2(tx, sz, bpp)
 
#define init_idct2(tx, nm, bpp)
 
#define init_idct(tx, nm, bpp)   init_idct2(tx, nm, bpp)
 
#define define_loop_filter(dir, wd, size, bpp)   void ff_vp9_loop_filter_##dir##_##wd##_##size##_##bpp##_neon(uint8_t *dst, ptrdiff_t stride, int E, int I, int H)
 
#define define_loop_filters(wd, size, bpp)
 
#define init_lpf_func_8(idx1, idx2, dir, wd, bpp)   dsp->loop_filter_8[idx1][idx2] = ff_vp9_loop_filter_##dir##_##wd##_8_##bpp##_neon
 
#define init_lpf_func_16(idx, dir, bpp)   dsp->loop_filter_16[idx] = ff_vp9_loop_filter_##dir##_16_16_##bpp##_neon
 
#define init_lpf_func_mix2(idx1, idx2, idx3, dir, wd, bpp)   dsp->loop_filter_mix2[idx1][idx2][idx3] = ff_vp9_loop_filter_##dir##_##wd##_16_##bpp##_neon
 
#define init_lpf_funcs_8_wd(idx, wd, bpp)
 
#define init_lpf_funcs_16(bpp)
 
#define init_lpf_funcs_mix2_wd(idx1, idx2, wd, bpp)
 
#define init_lpf_funcs_8(bpp)
 
#define init_lpf_funcs_mix2(bpp)
 

Functions

 declare_fpel (copy, 128,)
 
 declare_fpel (copy, 64,)
 
 declare_fpel (copy, 32,)
 
 declare_fpel (copy, 16,)
 
 declare_fpel (copy, 8,)
 
 declare_fpel (avg, 64, _16)
 
 declare_fpel (avg, 32, _16)
 
 declare_fpel (avg, 16, _16)
 
 declare_fpel (avg, 8, _16)
 
 declare_fpel (avg, 4, _16)
 
 decl_mc_funcs (64, BPP)
 
 decl_mc_funcs (32, BPP)
 
 decl_mc_funcs (16, BPP)
 
 decl_mc_funcs (8, BPP)
 
 decl_mc_funcs (4, BPP)
 
 define_8tap_2d_funcs (64, BPP)
 
 define_itxfm_funcs (4, BPP)
 
 define_itxfm_funcs (8, BPP)
 
 define_itxfm_funcs (16, BPP)
 
 define_itxfm (idct, idct, 32, BPP)
 
 define_itxfm (iwht, iwht, 4, BPP)
 
static av_cold void vp9dsp_itxfm_init_arm (VP9DSPContext *dsp)
 
 define_loop_filters (4, 8, BPP)
 
 define_loop_filters (8, 8, BPP)
 
 define_loop_filters (16, 8, BPP)
 
 define_loop_filters (16, 16, BPP)
 
 define_loop_filters (44, 16, BPP)
 
 define_loop_filters (48, 16, BPP)
 
 define_loop_filters (84, 16, BPP)
 
 define_loop_filters (88, 16, BPP)
 
static av_cold void vp9dsp_loopfilter_init_arm (VP9DSPContext *dsp)
 
av_cold void INIT_FUNC (VP9DSPContext *dsp)
 

Macro Definition Documentation

◆ declare_fpel

#define declare_fpel (   type,
  sz,
  suffix 
)
Value:
void ff_vp9_##type##sz##suffix##_neon(uint8_t *dst, ptrdiff_t dst_stride, \
const uint8_t *src, ptrdiff_t src_stride, \
int h, int mx, int my)

Definition at line 29 of file vp9dsp_init_16bpp_arm_template.c.

◆ decl_mc_func

#define decl_mc_func (   op,
  filter,
  dir,
  sz,
  bpp 
)
Value:
void ff_vp9_##op##_##filter##sz##_##dir##_##bpp##_neon(uint8_t *dst, ptrdiff_t dst_stride, \
const uint8_t *src, ptrdiff_t src_stride, \
int h, int mx, int my)

Definition at line 34 of file vp9dsp_init_16bpp_arm_template.c.

◆ define_8tap_2d_fn

#define define_8tap_2d_fn (   op,
  filter,
  sz,
  bpp 
)
Value:
static void op##_##filter##sz##_hv_##bpp##_neon(uint8_t *dst, ptrdiff_t dst_stride, \
const uint8_t *src, \
ptrdiff_t src_stride, \
int h, int mx, int my) \
{ \
LOCAL_ALIGNED_16(uint8_t, temp, [((1 + (sz < 64)) * sz + 8) * sz * 2]); \
/* We only need h + 7 lines, but the horizontal filter assumes an \
* even number of rows, so filter h + 8 lines here. */ \
ff_vp9_put_##filter##sz##_h_##bpp##_neon(temp, 2 * sz, \
src - 3 * src_stride, src_stride, \
h + 8, mx, 0); \
ff_vp9_##op##_##filter##sz##_v_##bpp##_neon(dst, dst_stride, \
temp + 3 * 2 * sz, 2 * sz, \
h, 0, my); \
}

Definition at line 39 of file vp9dsp_init_16bpp_arm_template.c.

◆ decl_filter_funcs

#define decl_filter_funcs (   op,
  dir,
  sz,
  bpp 
)
Value:
decl_mc_func(op, regular, dir, sz, bpp); \
decl_mc_func(op, sharp, dir, sz, bpp); \
decl_mc_func(op, smooth, dir, sz, bpp)

Definition at line 55 of file vp9dsp_init_16bpp_arm_template.c.

◆ decl_mc_funcs

#define decl_mc_funcs (   sz,
  bpp 
)
Value:
decl_filter_funcs(put, h, sz, bpp); \
decl_filter_funcs(avg, h, sz, bpp); \
decl_filter_funcs(put, v, sz, bpp); \
decl_filter_funcs(avg, v, sz, bpp); \
decl_filter_funcs(put, hv, sz, bpp); \
decl_filter_funcs(avg, hv, sz, bpp)

Definition at line 60 of file vp9dsp_init_16bpp_arm_template.c.

◆ define_8tap_2d_funcs

#define define_8tap_2d_funcs (   sz,
  bpp 
)
Value:
define_8tap_2d_fn(put, regular, sz, bpp) \
define_8tap_2d_fn(put, sharp, sz, bpp) \
define_8tap_2d_fn(put, smooth, sz, bpp) \
define_8tap_2d_fn(avg, regular, sz, bpp) \
define_8tap_2d_fn(avg, sharp, sz, bpp) \
define_8tap_2d_fn(avg, smooth, sz, bpp)

Definition at line 85 of file vp9dsp_init_16bpp_arm_template.c.

◆ init_fpel

#define init_fpel (   idx1,
  idx2,
  sz,
  type,
  suffix 
)
Value:
dsp->mc[idx1][FILTER_8TAP_SMOOTH ][idx2][0][0] = \
dsp->mc[idx1][FILTER_8TAP_REGULAR][idx2][0][0] = \
dsp->mc[idx1][FILTER_8TAP_SHARP ][idx2][0][0] = \
dsp->mc[idx1][FILTER_BILINEAR ][idx2][0][0] = ff_vp9_##type##sz##suffix##_neon

◆ init_copy_avg

#define init_copy_avg (   idx,
  sz1,
  sz2 
)
Value:
init_fpel(idx, 0, sz2, copy, ); \
init_fpel(idx, 1, sz1, avg, _16)

◆ init_mc_func

#define init_mc_func (   idx1,
  idx2,
  op,
  filter,
  fname,
  dir,
  mx,
  my,
  sz,
  pfx,
  bpp 
)    dsp->mc[idx1][filter][idx2][mx][my] = pfx##op##_##fname##sz##_##dir##_##bpp##_neon

◆ init_mc_funcs

#define init_mc_funcs (   idx,
  dir,
  mx,
  my,
  sz,
  pfx,
  bpp 
)
Value:
init_mc_func(idx, 0, put, FILTER_8TAP_REGULAR, regular, dir, mx, my, sz, pfx, bpp); \
init_mc_func(idx, 0, put, FILTER_8TAP_SHARP, sharp, dir, mx, my, sz, pfx, bpp); \
init_mc_func(idx, 0, put, FILTER_8TAP_SMOOTH, smooth, dir, mx, my, sz, pfx, bpp); \
init_mc_func(idx, 1, avg, FILTER_8TAP_REGULAR, regular, dir, mx, my, sz, pfx, bpp); \
init_mc_func(idx, 1, avg, FILTER_8TAP_SHARP, sharp, dir, mx, my, sz, pfx, bpp); \
init_mc_func(idx, 1, avg, FILTER_8TAP_SMOOTH, smooth, dir, mx, my, sz, pfx, bpp)

◆ init_mc_funcs_dirs

#define init_mc_funcs_dirs (   idx,
  sz,
  bpp 
)
Value:
init_mc_funcs(idx, h, 1, 0, sz, ff_vp9_, bpp); \
init_mc_funcs(idx, v, 0, 1, sz, ff_vp9_, bpp); \
init_mc_funcs(idx, hv, 1, 1, sz, , bpp)

◆ define_itxfm2

#define define_itxfm2 (   type_a,
  type_b,
  sz,
  bpp 
)
Value:
void ff_vp9_##type_a##_##type_b##_##sz##x##sz##_add_##bpp##_neon(uint8_t *_dst, \
ptrdiff_t stride, \
int16_t *_block, int eob)

Definition at line 145 of file vp9dsp_init_16bpp_arm_template.c.

◆ define_itxfm

#define define_itxfm (   type_a,
  type_b,
  sz,
  bpp 
)    define_itxfm2(type_a, type_b, sz, bpp)

Definition at line 149 of file vp9dsp_init_16bpp_arm_template.c.

◆ define_itxfm_funcs

#define define_itxfm_funcs (   sz,
  bpp 
)
Value:
define_itxfm(idct, idct, sz, bpp); \
define_itxfm(iadst, idct, sz, bpp); \
define_itxfm(idct, iadst, sz, bpp); \
define_itxfm(iadst, iadst, sz, bpp)

Definition at line 151 of file vp9dsp_init_16bpp_arm_template.c.

◆ init_itxfm2

#define init_itxfm2 (   tx,
  sz,
  bpp 
)
Value:
dsp->itxfm_add[tx][DCT_DCT] = ff_vp9_idct_idct_##sz##_add_##bpp##_neon; \
dsp->itxfm_add[tx][DCT_ADST] = ff_vp9_iadst_idct_##sz##_add_##bpp##_neon; \
dsp->itxfm_add[tx][ADST_DCT] = ff_vp9_idct_iadst_##sz##_add_##bpp##_neon; \
dsp->itxfm_add[tx][ADST_ADST] = ff_vp9_iadst_iadst_##sz##_add_##bpp##_neon

◆ init_itxfm

#define init_itxfm (   tx,
  sz,
  bpp 
)    init_itxfm2(tx, sz, bpp)

◆ init_idct2

#define init_idct2 (   tx,
  nm,
  bpp 
)
Value:
dsp->itxfm_add[tx][DCT_DCT] = \
dsp->itxfm_add[tx][ADST_DCT] = \
dsp->itxfm_add[tx][DCT_ADST] = \
dsp->itxfm_add[tx][ADST_ADST] = ff_vp9_##nm##_add_##bpp##_neon

◆ init_idct

#define init_idct (   tx,
  nm,
  bpp 
)    init_idct2(tx, nm, bpp)

◆ define_loop_filter

#define define_loop_filter (   dir,
  wd,
  size,
  bpp 
)    void ff_vp9_loop_filter_##dir##_##wd##_##size##_##bpp##_neon(uint8_t *dst, ptrdiff_t stride, int E, int I, int H)

Definition at line 191 of file vp9dsp_init_16bpp_arm_template.c.

◆ define_loop_filters

#define define_loop_filters (   wd,
  size,
  bpp 
)
Value:
define_loop_filter(h, wd, size, bpp); \
define_loop_filter(v, wd, size, bpp)

Definition at line 194 of file vp9dsp_init_16bpp_arm_template.c.

◆ init_lpf_func_8

#define init_lpf_func_8 (   idx1,
  idx2,
  dir,
  wd,
  bpp 
)    dsp->loop_filter_8[idx1][idx2] = ff_vp9_loop_filter_##dir##_##wd##_8_##bpp##_neon

◆ init_lpf_func_16

#define init_lpf_func_16 (   idx,
  dir,
  bpp 
)    dsp->loop_filter_16[idx] = ff_vp9_loop_filter_##dir##_16_16_##bpp##_neon

◆ init_lpf_func_mix2

#define init_lpf_func_mix2 (   idx1,
  idx2,
  idx3,
  dir,
  wd,
  bpp 
)    dsp->loop_filter_mix2[idx1][idx2][idx3] = ff_vp9_loop_filter_##dir##_##wd##_16_##bpp##_neon

◆ init_lpf_funcs_8_wd

#define init_lpf_funcs_8_wd (   idx,
  wd,
  bpp 
)
Value:
init_lpf_func_8(idx, 0, h, wd, bpp); \
init_lpf_func_8(idx, 1, v, wd, bpp)

◆ init_lpf_funcs_16

#define init_lpf_funcs_16 (   bpp)
Value:
init_lpf_func_16(0, h, bpp); \
init_lpf_func_16(1, v, bpp)

◆ init_lpf_funcs_mix2_wd

#define init_lpf_funcs_mix2_wd (   idx1,
  idx2,
  wd,
  bpp 
)
Value:
init_lpf_func_mix2(idx1, idx2, 0, h, wd, bpp); \
init_lpf_func_mix2(idx1, idx2, 1, v, wd, bpp)

◆ init_lpf_funcs_8

#define init_lpf_funcs_8 (   bpp)
Value:
init_lpf_funcs_8_wd(0, 4, bpp); \
init_lpf_funcs_8_wd(1, 8, bpp); \
init_lpf_funcs_8_wd(2, 16, bpp)

◆ init_lpf_funcs_mix2

#define init_lpf_funcs_mix2 (   bpp)
Value:
init_lpf_funcs_mix2_wd(0, 0, 44, bpp); \
init_lpf_funcs_mix2_wd(0, 1, 48, bpp); \
init_lpf_funcs_mix2_wd(1, 0, 84, bpp); \
init_lpf_funcs_mix2_wd(1, 1, 88, bpp)

Function Documentation

◆ declare_fpel() [1/10]

declare_fpel ( copy  ,
128   
)

◆ declare_fpel() [2/10]

declare_fpel ( copy  ,
64   
)

◆ declare_fpel() [3/10]

declare_fpel ( copy  ,
32   
)

◆ declare_fpel() [4/10]

declare_fpel ( copy  ,
16   
)

◆ declare_fpel() [5/10]

declare_fpel ( copy  ,
 
)

◆ declare_fpel() [6/10]

declare_fpel ( avg  ,
64  ,
_16   
)

◆ declare_fpel() [7/10]

declare_fpel ( avg  ,
32  ,
_16   
)

◆ declare_fpel() [8/10]

declare_fpel ( avg  ,
16  ,
_16   
)

◆ declare_fpel() [9/10]

declare_fpel ( avg  ,
,
_16   
)

◆ declare_fpel() [10/10]

declare_fpel ( avg  ,
,
_16   
)

◆ decl_mc_funcs() [1/5]

decl_mc_funcs ( 64  ,
BPP   
)

◆ decl_mc_funcs() [2/5]

decl_mc_funcs ( 32  ,
BPP   
)

◆ decl_mc_funcs() [3/5]

decl_mc_funcs ( 16  ,
BPP   
)

◆ decl_mc_funcs() [4/5]

decl_mc_funcs ( ,
BPP   
)

◆ decl_mc_funcs() [5/5]

decl_mc_funcs ( ,
BPP   
)

◆ define_8tap_2d_funcs()

define_8tap_2d_funcs ( 64  ,
BPP   
)

Definition at line 93 of file vp9dsp_init_16bpp_arm_template.c.

◆ define_itxfm_funcs() [1/3]

define_itxfm_funcs ( ,
BPP   
)

◆ define_itxfm_funcs() [2/3]

define_itxfm_funcs ( ,
BPP   
)

◆ define_itxfm_funcs() [3/3]

define_itxfm_funcs ( 16  ,
BPP   
)

◆ define_itxfm() [1/2]

define_itxfm ( idct  ,
idct  ,
32  ,
BPP   
)

◆ define_itxfm() [2/2]

define_itxfm ( iwht  ,
iwht  ,
,
BPP   
)

◆ vp9dsp_itxfm_init_arm()

static av_cold void vp9dsp_itxfm_init_arm ( VP9DSPContext dsp)
static

Definition at line 164 of file vp9dsp_init_16bpp_arm_template.c.

Referenced by INIT_FUNC().

◆ define_loop_filters() [1/8]

define_loop_filters ( ,
,
BPP   
)

◆ define_loop_filters() [2/8]

define_loop_filters ( ,
,
BPP   
)

◆ define_loop_filters() [3/8]

define_loop_filters ( 16  ,
,
BPP   
)

◆ define_loop_filters() [4/8]

define_loop_filters ( 16  ,
16  ,
BPP   
)

◆ define_loop_filters() [5/8]

define_loop_filters ( 44  ,
16  ,
BPP   
)

◆ define_loop_filters() [6/8]

define_loop_filters ( 48  ,
16  ,
BPP   
)

◆ define_loop_filters() [7/8]

define_loop_filters ( 84  ,
16  ,
BPP   
)

◆ define_loop_filters() [8/8]

define_loop_filters ( 88  ,
16  ,
BPP   
)

◆ vp9dsp_loopfilter_init_arm()

static av_cold void vp9dsp_loopfilter_init_arm ( VP9DSPContext dsp)
static

Definition at line 209 of file vp9dsp_init_16bpp_arm_template.c.

Referenced by ff_vp9dsp_init_arm(), and INIT_FUNC().

◆ INIT_FUNC()

av_cold void INIT_FUNC ( VP9DSPContext dsp)

Definition at line 252 of file vp9dsp_init_16bpp_arm_template.c.

_dst
uint8_t * _dst
Definition: dsp.h:52
decl_mc_func
#define decl_mc_func(op, filter, dir, sz, bpp)
Definition: vp9dsp_init_16bpp_arm_template.c:34
init_lpf_funcs_mix2_wd
#define init_lpf_funcs_mix2_wd(idx1, idx2, wd, bpp)
define_8tap_2d_fn
#define define_8tap_2d_fn(op, filter, sz, bpp)
Definition: vp9dsp_init_16bpp_arm_template.c:39
filter
void(* filter)(uint8_t *src, int stride, int qscale)
Definition: h263dsp.c:29
decl_filter_funcs
#define decl_filter_funcs(op, dir, sz, bpp)
Definition: vp9dsp_init_16bpp_arm_template.c:55
init_mc_funcs
#define init_mc_funcs(idx, dir, mx, my, sz, pfx, bpp)
mx
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t mx
Definition: dsp.h:53
type
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 type
Definition: writing_filters.txt:86
FILTER_8TAP_SHARP
@ FILTER_8TAP_SHARP
Definition: vp9.h:67
idct
static void idct(int16_t block[64])
Definition: 4xm.c:167
define_loop_filter
#define define_loop_filter(dir, wd, size, bpp)
Definition: vp9dsp_init_16bpp_arm_template.c:191
init_lpf_func_16
#define init_lpf_func_16(idx, dir, bpp)
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
my
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t my
Definition: dsp.h:53
DCT_ADST
@ DCT_ADST
Definition: vp9.h:39
FILTER_BILINEAR
@ FILTER_BILINEAR
Definition: vp9.h:68
init_mc_func
#define init_mc_func(idx1, idx2, op, filter, fname, dir, mx, my, sz, pfx, bpp)
DCT_DCT
@ DCT_DCT
Definition: vp9.h:38
copy
static void copy(const float *p1, float *p2, const int length)
Definition: vf_vaguedenoiser.c:186
dst
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
Definition: dsp.h:83
FILTER_8TAP_REGULAR
@ FILTER_8TAP_REGULAR
Definition: vp9.h:66
size
int size
Definition: twinvq_data.h:10344
avg
#define avg(a, b, c, d)
Definition: colorspacedsp_template.c:28
init_lpf_func_8
#define init_lpf_func_8(idx1, idx2, dir, wd, bpp)
ADST_ADST
@ ADST_ADST
Definition: vp9.h:41
FILTER_8TAP_SMOOTH
@ FILTER_8TAP_SMOOTH
Definition: vp9.h:65
stride
#define stride
Definition: h264pred_template.c:537
suffix
const char * suffix
Definition: checkasm.c:309
temp
else temp
Definition: vf_mcdeint.c:263
init_lpf_funcs_8_wd
#define init_lpf_funcs_8_wd(idx, wd, bpp)
define_itxfm
#define define_itxfm(type_a, type_b, sz, bpp)
Definition: vp9dsp_init_16bpp_arm_template.c:149
_
#define _
smooth
static float smooth(DeshakeOpenCLContext *deshake_ctx, float *gauss_kernel, int length, float max_val, AVFifo *values)
Definition: vf_deshake_opencl.c:887
ADST_DCT
@ ADST_DCT
Definition: vp9.h:40
h
h
Definition: vp9dsp_template.c:2070
init_fpel
#define init_fpel(idx1, idx2, sz, type, suffix)
src
#define src
Definition: vp8dsp.c:248
init_lpf_func_mix2
#define init_lpf_func_mix2(idx1, idx2, idx3, dir, wd, bpp)