FFmpeg
Macros | Functions
vp9dsp_init_16bpp_aarch64_template.c File Reference
#include <stdint.h>
#include "libavutil/attributes.h"
#include "libavutil/internal.h"
#include "libavutil/mem_internal.h"
#include "libavutil/aarch64/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 ff_vp9_copy32_neon   ff_vp9_copy32_aarch64
 
#define ff_vp9_copy64_neon   ff_vp9_copy64_aarch64
 
#define ff_vp9_copy128_neon   ff_vp9_copy128_aarch64
 
#define define_8tap_2d_funcs(sz, bpp)
 
#define init_fpel(idx1, idx2, sz, type, suffix)
 
#define init_copy(idx, sz, suffix)   init_fpel(idx, 0, sz, copy, suffix)
 
#define init_avg(idx, sz, suffix)   init_fpel(idx, 1, sz, avg, 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_aarch64 (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_aarch64 (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_aarch64_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_aarch64_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_aarch64_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_aarch64_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_aarch64_template.c.

◆ ff_vp9_copy32_neon

#define ff_vp9_copy32_neon   ff_vp9_copy32_aarch64

Definition at line 68 of file vp9dsp_init_16bpp_aarch64_template.c.

◆ ff_vp9_copy64_neon

#define ff_vp9_copy64_neon   ff_vp9_copy64_aarch64

Definition at line 69 of file vp9dsp_init_16bpp_aarch64_template.c.

◆ ff_vp9_copy128_neon

#define ff_vp9_copy128_neon   ff_vp9_copy128_aarch64

Definition at line 70 of file vp9dsp_init_16bpp_aarch64_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 89 of file vp9dsp_init_16bpp_aarch64_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

◆ init_copy

#define init_copy (   idx,
  sz,
  suffix 
)    init_fpel(idx, 0, sz, copy, suffix)

◆ init_avg

#define init_avg (   idx,
  sz,
  suffix 
)    init_fpel(idx, 1, sz, avg, suffix)

◆ init_copy_avg

#define init_copy_avg (   idx,
  sz1,
  sz2 
)
Value:
init_copy(idx, sz2, _neon); \
init_avg (idx, sz1, _16_neon)

◆ 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, v, 0, 1, sz, ff_vp9_, bpp); \
init_mc_funcs(idx, h, 1, 0, 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 161 of file vp9dsp_init_16bpp_aarch64_template.c.

◆ define_itxfm

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

Definition at line 165 of file vp9dsp_init_16bpp_aarch64_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 167 of file vp9dsp_init_16bpp_aarch64_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 207 of file vp9dsp_init_16bpp_aarch64_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 210 of file vp9dsp_init_16bpp_aarch64_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 97 of file vp9dsp_init_16bpp_aarch64_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_aarch64()

static av_cold void vp9dsp_itxfm_init_aarch64 ( VP9DSPContext dsp)
static

Definition at line 180 of file vp9dsp_init_16bpp_aarch64_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_aarch64()

static av_cold void vp9dsp_loopfilter_init_aarch64 ( VP9DSPContext dsp)
static

Definition at line 225 of file vp9dsp_init_16bpp_aarch64_template.c.

Referenced by INIT_FUNC().

◆ INIT_FUNC()

av_cold void INIT_FUNC ( VP9DSPContext dsp)

Definition at line 268 of file vp9dsp_init_16bpp_aarch64_template.c.

init_lpf_func_16
#define init_lpf_func_16(idx, dir, bpp)
init_mc_funcs
#define init_mc_funcs(idx, dir, mx, my, sz, pfx, bpp)
filter
filter_frame For filters that do not use the this method is called when a frame is pushed to the filter s input It can be called at any time except in a reentrant way If the input frame is enough to produce then the filter should push the output frames on the output link immediately As an exception to the previous rule if the input frame is enough to produce several output frames then the filter needs output only at least one per link The additional frames can be left buffered in the filter
Definition: filter_design.txt:228
decl_filter_funcs
#define decl_filter_funcs(op, dir, sz, bpp)
Definition: vp9dsp_init_16bpp_aarch64_template.c:55
init_lpf_funcs_mix2_wd
#define init_lpf_funcs_mix2_wd(idx1, idx2, wd, bpp)
init_lpf_func_mix2
#define init_lpf_func_mix2(idx1, idx2, idx3, dir, wd, bpp)
decl_mc_func
#define decl_mc_func(op, filter, dir, sz, bpp)
Definition: vp9dsp_init_16bpp_aarch64_template.c:34
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:166
define_loop_filter
#define define_loop_filter(dir, wd, size, bpp)
Definition: vp9dsp_init_16bpp_aarch64_template.c:207
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
DCT_ADST
@ DCT_ADST
Definition: vp9.h:39
define_8tap_2d_fn
#define define_8tap_2d_fn(op, filter, sz, bpp)
Definition: vp9dsp_init_16bpp_aarch64_template.c:39
FILTER_BILINEAR
@ FILTER_BILINEAR
Definition: vp9.h:68
DCT_DCT
@ DCT_DCT
Definition: vp9.h:38
FILTER_8TAP_REGULAR
@ FILTER_8TAP_REGULAR
Definition: vp9.h:66
init_mc_func
#define init_mc_func(idx1, idx2, op, filter, fname, dir, mx, my, sz, pfx, bpp)
size
int size
Definition: twinvq_data.h:10344
avg
#define avg(a, b, c, d)
Definition: colorspacedsp_template.c:28
define_itxfm
#define define_itxfm(type_a, type_b, sz, bpp)
Definition: vp9dsp_init_16bpp_aarch64_template.c:165
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
init_lpf_funcs_8_wd
#define init_lpf_funcs_8_wd(idx, wd, bpp)
suffix
const char * suffix
Definition: checkasm.c:252
temp
else temp
Definition: vf_mcdeint.c:263
_
#define _
smooth
static float smooth(DeshakeOpenCLContext *deshake_ctx, float *gauss_kernel, int length, float max_val, AVFifo *values)
Definition: vf_deshake_opencl.c:888
src
INIT_CLIP pixel * src
Definition: h264pred_template.c:418
init_copy
#define init_copy(idx, sz, suffix)
ADST_DCT
@ ADST_DCT
Definition: vp9.h:40
h
h
Definition: vp9dsp_template.c:2038
init_lpf_func_8
#define init_lpf_func_8(idx1, idx2, dir, wd, bpp)