34 extern emu_edge_core_func ff_emu_edge_core_mmx;
35 extern emu_edge_core_func ff_emu_edge_core_sse;
39 int block_w,
int block_h,
42 emu_edge_core_func *core_fn)
44 int start_y, start_x, end_y, end_x, src_y_add = 0;
47 src_y_add = h - 1 - src_y;
49 }
else if (src_y <= -block_h) {
50 src_y_add = 1 - block_h - src_y;
56 }
else if (src_x <= -block_w) {
57 src += 1 - block_w - src_x;
61 start_y =
FFMAX(0, -src_y);
62 start_x =
FFMAX(0, -src_x);
63 end_y =
FFMIN(block_h, h-src_y);
64 end_x =
FFMIN(block_w, w-src_x);
65 assert(start_x < end_x && block_w > 0);
66 assert(start_y < end_y && block_h > 0);
69 src += (src_y_add + start_y) * linesize + start_x;
71 core_fn(buf, src, linesize, start_y, end_y,
72 block_h, start_x, end_x, block_w);
78 int block_w,
int block_h,
79 int src_x,
int src_y,
int w,
int h)
81 emulated_edge_mc(buf, src, linesize, block_w, block_h, src_x, src_y,
82 w, h, &ff_emu_edge_core_mmx);
88 int block_w,
int block_h,
89 int src_x,
int src_y,
int w,
int h)
91 emulated_edge_mc(buf, src, linesize, block_w, block_h, src_x, src_y,
92 w, h, &ff_emu_edge_core_sse);
void(* prefetch)(uint8_t *buf, ptrdiff_t stride, int h)
Prefetch memory into cache (if supported by hardware).
memory handling functions
#define AV_CPU_FLAG_MMXEXT
void ff_prefetch_3dnow(uint8_t *buf, ptrdiff_t stride, int h)
void(* emulated_edge_mc)(uint8_t *buf, const uint8_t *src, ptrdiff_t linesize, int block_w, int block_h, int src_x, int src_y, int w, int h)
Copy a rectangular area of samples to a temporary buffer and replicate the border samples...
void ff_videodsp_init_x86(VideoDSPContext *ctx, int bpc)
#define AV_CPU_FLAG_3DNOW
int av_get_cpu_flags(void)
Return the flags which specify extensions supported by the CPU.
void ff_prefetch_mmxext(uint8_t *buf, ptrdiff_t stride, int h)
common internal and external API header
Core video DSP helper functions.