FFmpeg
Loading...
Searching...
No Matches
vp9dsp_init_arm.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 "libavcodec/vp9dsp.h"
#include "vp9dsp_init.h"

Go to the source code of this file.

Macros

#define declare_fpel(type, sz)
 
#define declare_copy_avg(sz)
 
#define decl_mc_func(op, filter, dir, sz)
 
#define define_8tap_2d_fn(op, filter, sz)
 
#define decl_filter_funcs(op, dir, sz)
 
#define decl_mc_funcs(sz)
 
#define define_8tap_2d_funcs(sz)
 
#define init_fpel(idx1, idx2, sz, type)
 
#define init_copy_avg(idx, sz)
 
#define init_mc_func(idx1, idx2, op, filter, fname, dir, mx, my, sz, pfx)
 
#define init_mc_funcs(idx, dir, mx, my, sz, pfx)
 
#define init_mc_funcs_dirs(idx, sz)
 
#define define_itxfm(type_a, type_b, sz)
 
#define define_itxfm_funcs(sz)
 
#define init_itxfm(tx, sz)
 
#define init_idct(tx, nm)
 
#define define_loop_filter(dir, wd, size)
 
#define define_loop_filters(wd, size)
 
#define lf_mix_fn(dir, wd1, wd2, stridea)
 
#define lf_mix_fns(wd1, wd2)
 

Functions

 declare_copy_avg (64)
 
 declare_copy_avg (32)
 
 declare_copy_avg (16)
 
 declare_copy_avg (8)
 
 declare_copy_avg (4)
 
 decl_mc_funcs (64)
 
 decl_mc_funcs (32)
 
 decl_mc_funcs (16)
 
 decl_mc_funcs (8)
 
 decl_mc_funcs (4)
 
 define_8tap_2d_funcs (64)
 
 define_itxfm_funcs (4)
 
 define_itxfm_funcs (8)
 
 define_itxfm_funcs (16)
 
 define_itxfm (idct, idct, 32)
 
 define_itxfm (iwht, iwht, 4)
 
static av_cold void vp9dsp_itxfm_init_arm (VP9DSPContext *dsp)
 
 define_loop_filters (4, 8)
 
 define_loop_filters (8, 8)
 
 define_loop_filters (16, 8)
 
 define_loop_filters (16, 16)
 
 define_loop_filters (44, 16)
 
 lf_mix_fns (4, lf_mix_fns(8)
 
av_cold void ff_vp9dsp_init_arm (VP9DSPContext *dsp, int bpp)
 

Macro Definition Documentation

◆ declare_fpel

#define declare_fpel ( type,
sz )
Value:
void ff_vp9_##type##sz##_neon(uint8_t *dst, ptrdiff_t dst_stride, \
const uint8_t *src, ptrdiff_t src_stride, \
int h, int mx, int my)
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t my
Definition dsp.h:57
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t mx
Definition dsp.h:57
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
Definition dsp.h:87
cl_device_type type
#define src
Definition vp8dsp.c:248

Definition at line 30 of file vp9dsp_init_arm.c.

◆ declare_copy_avg

#define declare_copy_avg ( sz)
Value:
declare_fpel(avg , sz)
#define avg(a, b, c, d)
static void copy(const float *p1, float *p2, const int length)
#define declare_fpel(type, sz, suffix)

Definition at line 35 of file vp9dsp_init_arm.c.

◆ decl_mc_func

#define decl_mc_func ( op,
filter,
dir,
sz )
Value:
void ff_vp9_##op##_##filter##sz##_##dir##_neon(uint8_t *dst, ptrdiff_t dst_stride, \
const uint8_t *src, ptrdiff_t src_stride, \
int h, int mx, int my)
#define _
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
void(* filter)(uint8_t *src, ptrdiff_t stride, int qscale)
Definition h263dsp.c:29

Definition at line 39 of file vp9dsp_init_arm.c.

◆ define_8tap_2d_fn

#define define_8tap_2d_fn ( op,
filter,
sz )
Value:
static void op##_##filter##sz##_hv_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]); \
/* 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_neon(temp, sz, \
src - 3 * src_stride, src_stride, \
h + 8, mx, 0); \
ff_vp9_##op##_##filter##sz##_v_neon(dst, dst_stride, \
temp + 3 * sz, sz, \
h, 0, my); \
}
else temp
Definition vf_mcdeint.c:275

Definition at line 44 of file vp9dsp_init_arm.c.

◆ decl_filter_funcs

#define decl_filter_funcs ( op,
dir,
sz )
Value:
decl_mc_func(op, regular, dir, sz); \
decl_mc_func(op, sharp, dir, sz); \
decl_mc_func(op, smooth, dir, sz)
static float smooth(DeshakeOpenCLContext *deshake_ctx, float *gauss_kernel, int length, float max_val, AVFifo *values)
#define decl_mc_func(op, filter, dir, sz, bpp)

Definition at line 59 of file vp9dsp_init_arm.c.

◆ decl_mc_funcs

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

Definition at line 64 of file vp9dsp_init_arm.c.

◆ define_8tap_2d_funcs

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

Definition at line 84 of file vp9dsp_init_arm.c.

◆ init_fpel

#define init_fpel ( idx1,
idx2,
sz,
type )
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##_neon
@ FILTER_8TAP_REGULAR
Definition vp9.h:66
@ FILTER_BILINEAR
Definition vp9.h:68
@ FILTER_8TAP_SHARP
Definition vp9.h:67
@ FILTER_8TAP_SMOOTH
Definition vp9.h:65

◆ init_copy_avg

#define init_copy_avg ( idx,
sz )
Value:
init_fpel(idx, 0, sz, copy); \
init_fpel(idx, 1, sz, avg)
#define init_fpel(idx1, idx2, sz, type, suffix)

Referenced by define_8tap_2d_funcs().

◆ init_mc_func

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

◆ init_mc_funcs

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

◆ init_mc_funcs_dirs

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

Referenced by define_8tap_2d_funcs().

◆ define_itxfm

#define define_itxfm ( type_a,
type_b,
sz )
Value:
void ff_vp9_##type_a##_##type_b##_##sz##x##sz##_add_neon(uint8_t *_dst, \
ptrdiff_t stride, \
int16_t *_block, int eob)
uint8_t * _dst
Definition dsp.h:56
#define stride

Definition at line 144 of file vp9dsp_init_arm.c.

◆ define_itxfm_funcs

#define define_itxfm_funcs ( sz)
Value:
define_itxfm(iadst, idct, sz); \
define_itxfm(idct, iadst, sz); \
define_itxfm(iadst, iadst, sz)
static void idct(int16_t block[64])
Definition 4xm.c:167
#define define_itxfm(type_a, type_b, sz, bpp)

Definition at line 149 of file vp9dsp_init_arm.c.

◆ init_itxfm

#define init_itxfm ( tx,
sz )
Value:
dsp->itxfm_add[tx][DCT_DCT] = ff_vp9_idct_idct_##sz##_add_neon; \
dsp->itxfm_add[tx][DCT_ADST] = ff_vp9_iadst_idct_##sz##_add_neon; \
dsp->itxfm_add[tx][ADST_DCT] = ff_vp9_idct_iadst_##sz##_add_neon; \
dsp->itxfm_add[tx][ADST_ADST] = ff_vp9_iadst_iadst_##sz##_add_neon
@ DCT_ADST
Definition vp9.h:39
@ DCT_DCT
Definition vp9.h:38
@ ADST_DCT
Definition vp9.h:40
@ ADST_ADST
Definition vp9.h:41

Referenced by vp9dsp_itxfm_init_arm().

◆ init_idct

#define init_idct ( tx,
nm )
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_neon

Referenced by vp9dsp_itxfm_init_arm().

◆ define_loop_filter

#define define_loop_filter ( dir,
wd,
size )
Value:
void ff_vp9_loop_filter_##dir##_##wd##_##size##_neon(uint8_t *dst, ptrdiff_t stride, int E, int I, int H)
#define E
Definition avdct.c:34
#define H
Definition pixlet.c:39
int size

Definition at line 187 of file vp9dsp_init_arm.c.

◆ define_loop_filters

#define define_loop_filters ( wd,
size )
Value:
define_loop_filter(v, wd, size)
#define define_loop_filter(dir, wd, size, bpp)

Definition at line 190 of file vp9dsp_init_arm.c.

◆ lf_mix_fn

#define lf_mix_fn ( dir,
wd1,
wd2,
stridea )
Value:
static void loop_filter_##dir##_##wd1##wd2##_16_neon(uint8_t *dst, \
ptrdiff_t stride, \
int E, int I, int H) \
{ \
ff_vp9_loop_filter_##dir##_##wd1##_8_neon(dst, stride, E & 0xff, I & 0xff, H & 0xff); \
ff_vp9_loop_filter_##dir##_##wd2##_8_neon(dst + 8 * stridea, stride, E >> 8, I >> 8, H >> 8); \
}

Definition at line 201 of file vp9dsp_init_arm.c.

◆ lf_mix_fns

#define lf_mix_fns ( wd1,
wd2 )
Value:
lf_mix_fn(h, wd1, wd2, stride) \
lf_mix_fn(v, wd1, wd2, sizeof(uint8_t))
#define lf_mix_fn(dir, wd1, wd2, stridea)

Definition at line 210 of file vp9dsp_init_arm.c.

Referenced by lf_8_fns(), and lf_mix_fns().

Function Documentation

◆ declare_copy_avg() [1/5]

declare_copy_avg ( 64 )

◆ declare_copy_avg() [2/5]

declare_copy_avg ( 32 )

◆ declare_copy_avg() [3/5]

declare_copy_avg ( 16 )

◆ declare_copy_avg() [4/5]

declare_copy_avg ( 8 )

◆ declare_copy_avg() [5/5]

declare_copy_avg ( 4 )

◆ decl_mc_funcs() [1/5]

decl_mc_funcs ( 64 )

◆ decl_mc_funcs() [2/5]

decl_mc_funcs ( 32 )

◆ decl_mc_funcs() [3/5]

decl_mc_funcs ( 16 )

◆ decl_mc_funcs() [4/5]

decl_mc_funcs ( 8 )

◆ decl_mc_funcs() [5/5]

decl_mc_funcs ( 4 )

◆ define_8tap_2d_funcs()

define_8tap_2d_funcs ( 64 )

Definition at line 92 of file vp9dsp_init_arm.c.

◆ define_itxfm_funcs() [1/3]

define_itxfm_funcs ( 4 )

◆ define_itxfm_funcs() [2/3]

define_itxfm_funcs ( 8 )

◆ define_itxfm_funcs() [3/3]

define_itxfm_funcs ( 16 )

◆ define_itxfm() [1/2]

define_itxfm ( idct ,
idct ,
32  )

◆ define_itxfm() [2/2]

define_itxfm ( iwht ,
iwht ,
4  )

◆ vp9dsp_itxfm_init_arm()

static av_cold void vp9dsp_itxfm_init_arm ( VP9DSPContext * dsp)
static

Definition at line 162 of file vp9dsp_init_arm.c.

Referenced by ff_vp9dsp_init_arm().

◆ define_loop_filters() [1/5]

define_loop_filters ( 4 ,
8  )

◆ define_loop_filters() [2/5]

define_loop_filters ( 8 ,
8  )

◆ define_loop_filters() [3/5]

define_loop_filters ( 16 ,
8  )

◆ define_loop_filters() [4/5]

define_loop_filters ( 16 ,
16  )

◆ define_loop_filters() [5/5]

define_loop_filters ( 44 ,
16  )

◆ lf_mix_fns()

lf_mix_fns ( 4 ,
lf_mix_fns( 8 )

Definition at line 214 of file vp9dsp_init_arm.c.

◆ ff_vp9dsp_init_arm()

av_cold void ff_vp9dsp_init_arm ( VP9DSPContext * dsp,
int bpp )

Definition at line 244 of file vp9dsp_init_arm.c.

Referenced by ff_vp9dsp_init().