28
28
#include "common/common.h"
30
30
/* NASM functions */
31
extern void x264_pixel_avg_w4_mmxext( uint8_t *, int, uint8_t *, int, uint8_t *, int, int );
32
extern void x264_pixel_avg_w8_mmxext( uint8_t *, int, uint8_t *, int, uint8_t *, int, int );
33
extern void x264_pixel_avg_w16_mmxext( uint8_t *, int, uint8_t *, int, uint8_t *, int, int );
34
extern void x264_pixel_avg_w20_mmxext( uint8_t *, int, uint8_t *, int, uint8_t *, int, int );
35
extern void x264_pixel_avg_w16_sse2( uint8_t *, int, uint8_t *, int, uint8_t *, int, int );
31
extern void x264_pixel_avg_16x16_mmxext( uint8_t *, int, uint8_t *, int );
32
extern void x264_pixel_avg_16x8_mmxext( uint8_t *, int, uint8_t *, int );
33
extern void x264_pixel_avg_8x16_mmxext( uint8_t *, int, uint8_t *, int );
34
extern void x264_pixel_avg_8x8_mmxext( uint8_t *, int, uint8_t *, int );
35
extern void x264_pixel_avg_8x4_mmxext( uint8_t *, int, uint8_t *, int );
36
extern void x264_pixel_avg_4x8_mmxext( uint8_t *, int, uint8_t *, int );
37
extern void x264_pixel_avg_4x4_mmxext( uint8_t *, int, uint8_t *, int );
38
extern void x264_pixel_avg_4x2_mmxext( uint8_t *, int, uint8_t *, int );
39
extern void x264_pixel_avg2_w4_mmxext( uint8_t *, int, uint8_t *, int, uint8_t *, int );
40
extern void x264_pixel_avg2_w8_mmxext( uint8_t *, int, uint8_t *, int, uint8_t *, int );
41
extern void x264_pixel_avg2_w16_mmxext( uint8_t *, int, uint8_t *, int, uint8_t *, int );
42
extern void x264_pixel_avg2_w20_mmxext( uint8_t *, int, uint8_t *, int, uint8_t *, int );
36
43
extern void x264_pixel_avg_weight_4x4_mmxext( uint8_t *, int, uint8_t *, int, int );
37
44
extern void x264_pixel_avg_weight_w8_mmxext( uint8_t *, int, uint8_t *, int, int, int );
38
45
extern void x264_pixel_avg_weight_w16_mmxext( uint8_t *, int, uint8_t *, int, int, int );
43
50
extern void x264_plane_copy_mmxext( uint8_t *, int, uint8_t *, int, int w, int h);
44
51
extern void x264_prefetch_fenc_mmxext( uint8_t *, int, uint8_t *, int, int );
45
52
extern void x264_prefetch_ref_mmxext( uint8_t *, int, int );
48
static void x264_pixel_avg_ ## W ## x ## H ## _mmxext( uint8_t *dst, int i_dst, uint8_t *src, int i_src ) \
50
x264_pixel_avg_w ## W ## _mmxext( dst, i_dst, dst, i_dst, src, i_src, H ); \
53
extern void x264_hpel_filter_mmxext( uint8_t *dsth, uint8_t *dstv, uint8_t *dstc, uint8_t *src,
54
int i_stride, int i_width, int i_height );
61
56
#define AVG_WEIGHT(W,H) \
62
57
void x264_pixel_avg_weight_ ## W ## x ## H ## _mmxext( uint8_t *dst, int i_dst, uint8_t *src, int i_src, int i_weight_dst ) \
72
static void (* const x264_pixel_avg_wtab_mmxext[6])( uint8_t *, int, uint8_t *, int, uint8_t *, int, int ) =
67
static void (* const x264_pixel_avg_wtab_mmxext[6])( uint8_t *, int, uint8_t *, int, uint8_t *, int ) =
75
x264_pixel_avg_w4_mmxext,
76
x264_pixel_avg_w8_mmxext,
77
x264_pixel_avg_w16_mmxext,
78
x264_pixel_avg_w16_mmxext,
79
x264_pixel_avg_w20_mmxext,
70
x264_pixel_avg2_w4_mmxext,
71
x264_pixel_avg2_w8_mmxext,
72
x264_pixel_avg2_w16_mmxext,
73
x264_pixel_avg2_w16_mmxext,
74
x264_pixel_avg2_w20_mmxext,
81
76
static void (* const x264_mc_copy_wtab_mmx[5])( uint8_t *, int, uint8_t *, int, int ) =
89
84
static const int hpel_ref0[16] = {0,1,1,1,0,1,1,1,2,3,3,3,0,1,1,1};
90
85
static const int hpel_ref1[16] = {0,0,0,0,2,2,3,2,2,2,3,2,2,2,3,2};
92
void mc_luma_mmx( uint8_t *src[4], int i_src_stride,
93
uint8_t *dst, int i_dst_stride,
87
void mc_luma_mmx( uint8_t *dst, int i_dst_stride,
88
uint8_t *src[4], int i_src_stride,
95
90
int i_width, int i_height )