SAD_X 4, 4, 4
-%macro PDE_CHECK 0
- movd eax, mm0
- cmp eax, parm5d ; prev_score
- jl .continue
- ret
-ALIGN 4
-.continue:
-%endmacro
-
-;-----------------------------------------------------------------------------
-; int x264_pixel_sad_pde_16x16_mmxext (uint8_t *, int, uint8_t *, int, int )
-;-----------------------------------------------------------------------------
-%macro SAD_PDE 2
-cglobal x264_pixel_sad_pde_%1x%2_mmxext
- SAD_START
-%rep %2/4
- SAD_INC_2x%1P
-%endrep
-
- movd eax, mm0
- cmp eax, parm5d ; prev_score
- jl .continue
- ret
-ALIGN 4
-.continue:
-
-%rep %2/4
- SAD_INC_2x%1P
-%endrep
- SAD_END
-%endmacro
-
-SAD_PDE 16, 16
-SAD_PDE 16 , 8
-SAD_PDE 8, 16
-
-
-
%macro SSD_START 0
pxor mm7, mm7 ; zero
pxor mm0, mm0 ; mm0 holds the sum
SAD_X 4, 4, 4
-;-----------------------------------------------------------------------------
-; int __cdecl x264_pixel_sad_pde_16x16_mmxext (uint8_t *, int, uint8_t *, int, int )
-;-----------------------------------------------------------------------------
-%macro SAD_PDE 2
-cglobal x264_pixel_sad_pde_%1x%2_mmxext
- SAD_START
-%rep %2/4
- SAD_INC_2x%1P
-%endrep
-
- movd ebx, mm0
- cmp ebx, [esp+24] ; prev_score
- jl .continue
- pop ebx
- mov eax, 0xffff
- ret
-ALIGN 4
-.continue:
- mov ebx, [esp+12]
-
-%rep %2/4
- SAD_INC_2x%1P
-%endrep
- SAD_END
-%endmacro
-
-SAD_PDE 16, 16
-SAD_PDE 16 , 8
-SAD_PDE 8, 16
-
-
-
%macro SSD_START 0
push ebx
void x264_pixel_sad_x4_4x8_mmxext( uint8_t *, uint8_t *, uint8_t *, uint8_t *, uint8_t *, int, int * );
void x264_pixel_sad_x4_4x4_mmxext( uint8_t *, uint8_t *, uint8_t *, uint8_t *, uint8_t *, int, int * );
-int x264_pixel_sad_pde_16x16_mmxext( uint8_t *, int, uint8_t *, int, int );
-int x264_pixel_sad_pde_16x8_mmxext( uint8_t *, int, uint8_t *, int, int );
-int x264_pixel_sad_pde_8x16_mmxext( uint8_t *, int, uint8_t *, int, int );
-
int x264_pixel_ssd_16x16_mmx( uint8_t *, int, uint8_t *, int );
int x264_pixel_ssd_16x8_mmx( uint8_t *, int, uint8_t *, int );
int x264_pixel_ssd_8x16_mmx( uint8_t *, int, uint8_t *, int );
INIT( sad_x4, _mmxext );
INIT( satd, _mmxext );
- pixf->sad_pde[PIXEL_16x16] = x264_pixel_sad_pde_16x16_mmxext;
- pixf->sad_pde[PIXEL_16x8 ] = x264_pixel_sad_pde_16x8_mmxext;
- pixf->sad_pde[PIXEL_8x16 ] = x264_pixel_sad_pde_8x16_mmxext;
-
pixf->ads[PIXEL_16x16] = x264_pixel_ads4_mmxext;
pixf->ads[PIXEL_16x8 ] = x264_pixel_ads2_mmxext;
pixf->ads[PIXEL_8x8 ] = x264_pixel_ads1_mmxext;
#define _PIXEL_H 1
typedef int (*x264_pixel_cmp_t) ( uint8_t *, int, uint8_t *, int );
-typedef int (*x264_pixel_cmp_pde_t) ( uint8_t *, int, uint8_t *, int, int );
typedef void (*x264_pixel_cmp_x3_t) ( uint8_t *, uint8_t *, uint8_t *, uint8_t *, int, int[3] );
typedef void (*x264_pixel_cmp_x4_t) ( uint8_t *, uint8_t *, uint8_t *, uint8_t *, uint8_t *, int, int[4] );
const uint8_t *pix2, int stride2, int sums[2][4] );
float (*ssim_end4)( int sum0[5][4], int sum1[5][4], int width );
- /* partial distortion elimination:
- * terminate early if partial score is worse than a threshold.
- * may be NULL, in which case just use sad instead. */
- x264_pixel_cmp_pde_t sad_pde[7];
-
/* multiple parallel calls to sad. */
x264_pixel_cmp_x3_t sad_x3[7];
x264_pixel_cmp_x4_t sad_x4[7];