FFmpeg
Typedefs | Functions | Variables
videodsp_init.c File Reference
#include "config.h"
#include "libavutil/attributes.h"
#include "libavutil/avassert.h"
#include "libavutil/common.h"
#include "libavutil/cpu.h"
#include "libavutil/x86/asm.h"
#include "libavutil/x86/cpu.h"
#include "libavcodec/videodsp.h"

Go to the source code of this file.

Typedefs

typedef void emu_edge_vfix_func(uint8_t *dst, x86_reg dst_stride, const uint8_t *src, x86_reg src_stride, x86_reg start_y, x86_reg end_y, x86_reg bh)
 
typedef void emu_edge_vvar_func(uint8_t *dst, x86_reg dst_stride, const uint8_t *src, x86_reg src_stride, x86_reg start_y, x86_reg end_y, x86_reg bh, x86_reg w)
 
typedef void emu_edge_hfix_func(uint8_t *dst, x86_reg dst_stride, x86_reg start_x, x86_reg bh)
 
typedef void emu_edge_hvar_func(uint8_t *dst, x86_reg dst_stride, x86_reg start_x, x86_reg n_words, x86_reg bh)
 

Functions

static av_always_inline void emulated_edge_mc (uint8_t *dst, const uint8_t *src, ptrdiff_t dst_stride, ptrdiff_t src_stride, x86_reg block_w, x86_reg block_h, x86_reg src_x, x86_reg src_y, x86_reg w, x86_reg h, emu_edge_vfix_func *const *vfix_tbl, emu_edge_vvar_func *v_extend_var, emu_edge_hfix_func *const *hfix_tbl, emu_edge_hvar_func *h_extend_var)
 
static av_noinline void emulated_edge_mc_sse2 (uint8_t *buf, const uint8_t *src, ptrdiff_t buf_stride, ptrdiff_t src_stride, int block_w, int block_h, int src_x, int src_y, int w, int h)
 
void ff_prefetch_mmxext (const uint8_t *buf, ptrdiff_t stride, int h)
 
av_cold void ff_videodsp_init_x86 (VideoDSPContext *ctx, int bpc)
 

Variables

emu_edge_vfix_func ff_emu_edge_vfix1_sse2
 
emu_edge_vfix_func ff_emu_edge_vfix2_sse2
 
emu_edge_vfix_func ff_emu_edge_vfix3_sse2
 
emu_edge_vfix_func ff_emu_edge_vfix4_sse2
 
emu_edge_vfix_func ff_emu_edge_vfix5_sse2
 
emu_edge_vfix_func ff_emu_edge_vfix6_sse2
 
emu_edge_vfix_func ff_emu_edge_vfix7_sse2
 
emu_edge_vfix_func ff_emu_edge_vfix8_sse2
 
emu_edge_vfix_func ff_emu_edge_vfix9_sse2
 
emu_edge_vfix_func ff_emu_edge_vfix10_sse2
 
emu_edge_vfix_func ff_emu_edge_vfix11_sse2
 
emu_edge_vfix_func ff_emu_edge_vfix12_sse2
 
emu_edge_vfix_func ff_emu_edge_vfix13_sse2
 
emu_edge_vfix_func ff_emu_edge_vfix14_sse2
 
emu_edge_vfix_func ff_emu_edge_vfix15_sse2
 
emu_edge_vfix_func ff_emu_edge_vfix16_sse2
 
emu_edge_vfix_func ff_emu_edge_vfix17_sse2
 
emu_edge_vfix_func ff_emu_edge_vfix18_sse2
 
emu_edge_vfix_func ff_emu_edge_vfix19_sse2
 
emu_edge_vfix_func ff_emu_edge_vfix20_sse2
 
emu_edge_vfix_func ff_emu_edge_vfix21_sse2
 
emu_edge_vfix_func ff_emu_edge_vfix22_sse2
 
static emu_edge_vfix_func *const vfixtbl_sse2 [22]
 
emu_edge_vvar_func ff_emu_edge_vvar_sse
 
emu_edge_hfix_func ff_emu_edge_hfix2_sse2
 
emu_edge_hfix_func ff_emu_edge_hfix4_sse2
 
emu_edge_hfix_func ff_emu_edge_hfix6_sse2
 
emu_edge_hfix_func ff_emu_edge_hfix8_sse2
 
emu_edge_hfix_func ff_emu_edge_hfix10_sse2
 
emu_edge_hfix_func ff_emu_edge_hfix12_sse2
 
emu_edge_hfix_func ff_emu_edge_hfix14_sse2
 
emu_edge_hfix_func ff_emu_edge_hfix16_sse2
 
emu_edge_hfix_func ff_emu_edge_hfix18_sse2
 
emu_edge_hfix_func ff_emu_edge_hfix20_sse2
 
emu_edge_hfix_func ff_emu_edge_hfix22_sse2
 
static emu_edge_hfix_func *const hfixtbl_sse2 [11]
 
emu_edge_hvar_func ff_emu_edge_hvar_sse2
 

Typedef Documentation

◆ emu_edge_vfix_func

typedef void emu_edge_vfix_func(uint8_t *dst, x86_reg dst_stride, const uint8_t *src, x86_reg src_stride, x86_reg start_y, x86_reg end_y, x86_reg bh)

Definition at line 31 of file videodsp_init.c.

◆ emu_edge_vvar_func

typedef void emu_edge_vvar_func(uint8_t *dst, x86_reg dst_stride, const uint8_t *src, x86_reg src_stride, x86_reg start_y, x86_reg end_y, x86_reg bh, x86_reg w)

Definition at line 34 of file videodsp_init.c.

◆ emu_edge_hfix_func

typedef void emu_edge_hfix_func(uint8_t *dst, x86_reg dst_stride, x86_reg start_x, x86_reg bh)

Definition at line 73 of file videodsp_init.c.

◆ emu_edge_hvar_func

typedef void emu_edge_hvar_func(uint8_t *dst, x86_reg dst_stride, x86_reg start_x, x86_reg n_words, x86_reg bh)

Definition at line 75 of file videodsp_init.c.

Function Documentation

◆ emulated_edge_mc()

static av_always_inline void emulated_edge_mc ( uint8_t *  dst,
const uint8_t *  src,
ptrdiff_t  dst_stride,
ptrdiff_t  src_stride,
x86_reg  block_w,
x86_reg  block_h,
x86_reg  src_x,
x86_reg  src_y,
x86_reg  w,
x86_reg  h,
emu_edge_vfix_func *const *  vfix_tbl,
emu_edge_vvar_func v_extend_var,
emu_edge_hfix_func *const *  hfix_tbl,
emu_edge_hvar_func h_extend_var 
)
static

Definition at line 114 of file videodsp_init.c.

Referenced by emulated_edge_mc_sse2().

◆ emulated_edge_mc_sse2()

static av_noinline void emulated_edge_mc_sse2 ( uint8_t *  buf,
const uint8_t *  src,
ptrdiff_t  buf_stride,
ptrdiff_t  src_stride,
int  block_w,
int  block_h,
int  src_x,
int  src_y,
int  w,
int  h 
)
static

Definition at line 190 of file videodsp_init.c.

Referenced by ff_videodsp_init_x86().

◆ ff_prefetch_mmxext()

void ff_prefetch_mmxext ( const uint8_t *  buf,
ptrdiff_t  stride,
int  h 
)

Referenced by ff_videodsp_init_x86().

◆ ff_videodsp_init_x86()

av_cold void ff_videodsp_init_x86 ( VideoDSPContext ctx,
int  bpc 
)

Definition at line 218 of file videodsp_init.c.

Referenced by ff_videodsp_init().

Variable Documentation

◆ ff_emu_edge_vfix1_sse2

emu_edge_vfix_func ff_emu_edge_vfix1_sse2

◆ ff_emu_edge_vfix2_sse2

emu_edge_vfix_func ff_emu_edge_vfix2_sse2

◆ ff_emu_edge_vfix3_sse2

emu_edge_vfix_func ff_emu_edge_vfix3_sse2

◆ ff_emu_edge_vfix4_sse2

emu_edge_vfix_func ff_emu_edge_vfix4_sse2

◆ ff_emu_edge_vfix5_sse2

emu_edge_vfix_func ff_emu_edge_vfix5_sse2

◆ ff_emu_edge_vfix6_sse2

emu_edge_vfix_func ff_emu_edge_vfix6_sse2

◆ ff_emu_edge_vfix7_sse2

emu_edge_vfix_func ff_emu_edge_vfix7_sse2

◆ ff_emu_edge_vfix8_sse2

emu_edge_vfix_func ff_emu_edge_vfix8_sse2

◆ ff_emu_edge_vfix9_sse2

emu_edge_vfix_func ff_emu_edge_vfix9_sse2

◆ ff_emu_edge_vfix10_sse2

emu_edge_vfix_func ff_emu_edge_vfix10_sse2

◆ ff_emu_edge_vfix11_sse2

emu_edge_vfix_func ff_emu_edge_vfix11_sse2

◆ ff_emu_edge_vfix12_sse2

emu_edge_vfix_func ff_emu_edge_vfix12_sse2

◆ ff_emu_edge_vfix13_sse2

emu_edge_vfix_func ff_emu_edge_vfix13_sse2

◆ ff_emu_edge_vfix14_sse2

emu_edge_vfix_func ff_emu_edge_vfix14_sse2

◆ ff_emu_edge_vfix15_sse2

emu_edge_vfix_func ff_emu_edge_vfix15_sse2

◆ ff_emu_edge_vfix16_sse2

emu_edge_vfix_func ff_emu_edge_vfix16_sse2

◆ ff_emu_edge_vfix17_sse2

emu_edge_vfix_func ff_emu_edge_vfix17_sse2

◆ ff_emu_edge_vfix18_sse2

emu_edge_vfix_func ff_emu_edge_vfix18_sse2

◆ ff_emu_edge_vfix19_sse2

emu_edge_vfix_func ff_emu_edge_vfix19_sse2

◆ ff_emu_edge_vfix20_sse2

emu_edge_vfix_func ff_emu_edge_vfix20_sse2

◆ ff_emu_edge_vfix21_sse2

emu_edge_vfix_func ff_emu_edge_vfix21_sse2

◆ ff_emu_edge_vfix22_sse2

emu_edge_vfix_func ff_emu_edge_vfix22_sse2

◆ vfixtbl_sse2

emu_edge_vfix_func* const vfixtbl_sse2[22]
static

◆ ff_emu_edge_vvar_sse

emu_edge_vvar_func ff_emu_edge_vvar_sse

Referenced by emulated_edge_mc_sse2().

◆ ff_emu_edge_hfix2_sse2

emu_edge_hfix_func ff_emu_edge_hfix2_sse2

◆ ff_emu_edge_hfix4_sse2

emu_edge_hfix_func ff_emu_edge_hfix4_sse2

◆ ff_emu_edge_hfix6_sse2

emu_edge_hfix_func ff_emu_edge_hfix6_sse2

◆ ff_emu_edge_hfix8_sse2

emu_edge_hfix_func ff_emu_edge_hfix8_sse2

◆ ff_emu_edge_hfix10_sse2

emu_edge_hfix_func ff_emu_edge_hfix10_sse2

◆ ff_emu_edge_hfix12_sse2

emu_edge_hfix_func ff_emu_edge_hfix12_sse2

◆ ff_emu_edge_hfix14_sse2

emu_edge_hfix_func ff_emu_edge_hfix14_sse2

◆ ff_emu_edge_hfix16_sse2

emu_edge_hfix_func ff_emu_edge_hfix16_sse2

◆ ff_emu_edge_hfix18_sse2

emu_edge_hfix_func ff_emu_edge_hfix18_sse2

◆ ff_emu_edge_hfix20_sse2

emu_edge_hfix_func ff_emu_edge_hfix20_sse2

◆ ff_emu_edge_hfix22_sse2

emu_edge_hfix_func ff_emu_edge_hfix22_sse2

◆ hfixtbl_sse2

emu_edge_hfix_func* const hfixtbl_sse2[11]
static

◆ ff_emu_edge_hvar_sse2

emu_edge_hvar_func ff_emu_edge_hvar_sse2

Referenced by emulated_edge_mc_sse2().

ff_emu_edge_hfix14_sse2
emu_edge_hfix_func ff_emu_edge_hfix14_sse2
ff_emu_edge_hfix10_sse2
emu_edge_hfix_func ff_emu_edge_hfix10_sse2
ff_emu_edge_vfix4_sse2
emu_edge_vfix_func ff_emu_edge_vfix4_sse2
ff_emu_edge_vfix2_sse2
emu_edge_vfix_func ff_emu_edge_vfix2_sse2
ff_emu_edge_vfix19_sse2
emu_edge_vfix_func ff_emu_edge_vfix19_sse2
ff_emu_edge_vfix15_sse2
emu_edge_vfix_func ff_emu_edge_vfix15_sse2
ff_emu_edge_hfix22_sse2
emu_edge_hfix_func ff_emu_edge_hfix22_sse2
ff_emu_edge_hfix6_sse2
emu_edge_hfix_func ff_emu_edge_hfix6_sse2
ff_emu_edge_vfix12_sse2
emu_edge_vfix_func ff_emu_edge_vfix12_sse2
ff_emu_edge_vfix5_sse2
emu_edge_vfix_func ff_emu_edge_vfix5_sse2
ff_emu_edge_vfix3_sse2
emu_edge_vfix_func ff_emu_edge_vfix3_sse2
ff_emu_edge_hfix20_sse2
emu_edge_hfix_func ff_emu_edge_hfix20_sse2
ff_emu_edge_vfix11_sse2
emu_edge_vfix_func ff_emu_edge_vfix11_sse2
ff_emu_edge_vfix17_sse2
emu_edge_vfix_func ff_emu_edge_vfix17_sse2
ff_emu_edge_vfix20_sse2
emu_edge_vfix_func ff_emu_edge_vfix20_sse2
ff_emu_edge_vfix6_sse2
emu_edge_vfix_func ff_emu_edge_vfix6_sse2
ff_emu_edge_vfix1_sse2
emu_edge_vfix_func ff_emu_edge_vfix1_sse2
ff_emu_edge_vfix7_sse2
emu_edge_vfix_func ff_emu_edge_vfix7_sse2
ff_emu_edge_hfix18_sse2
emu_edge_hfix_func ff_emu_edge_hfix18_sse2
ff_emu_edge_hfix16_sse2
emu_edge_hfix_func ff_emu_edge_hfix16_sse2
ff_emu_edge_vfix8_sse2
emu_edge_vfix_func ff_emu_edge_vfix8_sse2
ff_emu_edge_hfix4_sse2
emu_edge_hfix_func ff_emu_edge_hfix4_sse2
ff_emu_edge_vfix21_sse2
emu_edge_vfix_func ff_emu_edge_vfix21_sse2
ff_emu_edge_vfix10_sse2
emu_edge_vfix_func ff_emu_edge_vfix10_sse2
ff_emu_edge_vfix14_sse2
emu_edge_vfix_func ff_emu_edge_vfix14_sse2
ff_emu_edge_vfix13_sse2
emu_edge_vfix_func ff_emu_edge_vfix13_sse2
ff_emu_edge_vfix16_sse2
emu_edge_vfix_func ff_emu_edge_vfix16_sse2
ff_emu_edge_vfix18_sse2
emu_edge_vfix_func ff_emu_edge_vfix18_sse2
ff_emu_edge_hfix8_sse2
emu_edge_hfix_func ff_emu_edge_hfix8_sse2
ff_emu_edge_vfix22_sse2
emu_edge_vfix_func ff_emu_edge_vfix22_sse2
ff_emu_edge_vfix9_sse2
emu_edge_vfix_func ff_emu_edge_vfix9_sse2
ff_emu_edge_hfix2_sse2
emu_edge_hfix_func ff_emu_edge_hfix2_sse2
ff_emu_edge_hfix12_sse2
emu_edge_hfix_func ff_emu_edge_hfix12_sse2