mirror of
https://github.com/vortexgpgpu/vortex.git
synced 2025-04-22 04:47:56 -04:00
83 lines
2.6 KiB
C
83 lines
2.6 KiB
C
/***************************************************************************
|
|
*cr
|
|
*cr (C) Copyright 2007 The Board of Trustees of the
|
|
*cr University of Illinois
|
|
*cr All Rights Reserved
|
|
*cr
|
|
***************************************************************************/
|
|
|
|
/* Search offsets within 16 pixels of (0,0) */
|
|
#define SEARCH_RANGE 16
|
|
|
|
/* The total search area is 33 pixels square */
|
|
#define SEARCH_DIMENSION (2*SEARCH_RANGE+1)
|
|
|
|
/* The total number of search positions is 33^2 */
|
|
#define MAX_POS 1089
|
|
|
|
/* This is padded to a multiple of 8 when allocating memory */
|
|
#define MAX_POS_PADDED 1096
|
|
|
|
/* VBSME block indices in the SAD array for different
|
|
* block sizes. The index is computed from the
|
|
* image size in macroblocks. Block sizes are (height, width):
|
|
* 1: 16 by 16 pixels, one block per macroblock
|
|
* 2: 8 by 16 pixels, 2 blocks per macroblock
|
|
* 3: 16 by 8 pixels, 2 blocks per macroblock
|
|
* 4: 8 by 8 pixels, 4 blocks per macroblock
|
|
* 5: 4 by 8 pixels, 8 blocks per macroblock
|
|
* 6: 8 by 4 pixels, 8 blocks per macroblock
|
|
* 7: 4 by 4 pixels, 16 blocks per macroblock
|
|
*/
|
|
#define SAD_TYPE_1_IX(image_size) 0
|
|
#define SAD_TYPE_2_IX(image_size) ((image_size)*MAX_POS_PADDED)
|
|
#define SAD_TYPE_3_IX(image_size) ((image_size)*(3*MAX_POS_PADDED))
|
|
#define SAD_TYPE_4_IX(image_size) ((image_size)*(5*MAX_POS_PADDED))
|
|
#define SAD_TYPE_5_IX(image_size) ((image_size)*(9*MAX_POS_PADDED))
|
|
#define SAD_TYPE_6_IX(image_size) ((image_size)*(17*MAX_POS_PADDED))
|
|
#define SAD_TYPE_7_IX(image_size) ((image_size)*(25*MAX_POS_PADDED))
|
|
|
|
#define SAD_TYPE_IX(n, image_size) \
|
|
((n == 1) ? SAD_TYPE_1_IX(image_size) : \
|
|
((n == 2) ? SAD_TYPE_2_IX(image_size) : \
|
|
((n == 3) ? SAD_TYPE_3_IX(image_size) : \
|
|
((n == 4) ? SAD_TYPE_4_IX(image_size) : \
|
|
((n == 5) ? SAD_TYPE_5_IX(image_size) : \
|
|
((n == 6) ? SAD_TYPE_6_IX(image_size) : \
|
|
(SAD_TYPE_7_IX(image_size) \
|
|
)))))))
|
|
|
|
#define SAD_TYPE_1_CT 1
|
|
#define SAD_TYPE_2_CT 2
|
|
#define SAD_TYPE_3_CT 2
|
|
#define SAD_TYPE_4_CT 4
|
|
#define SAD_TYPE_5_CT 8
|
|
#define SAD_TYPE_6_CT 8
|
|
#define SAD_TYPE_7_CT 16
|
|
|
|
#define SAD_TYPE_CT(n) \
|
|
((n == 1) ? SAD_TYPE_1_CT : \
|
|
((n == 2) ? SAD_TYPE_2_CT : \
|
|
((n == 3) ? SAD_TYPE_3_CT : \
|
|
((n == 4) ? SAD_TYPE_4_CT : \
|
|
((n == 5) ? SAD_TYPE_5_CT : \
|
|
((n == 6) ? SAD_TYPE_6_CT : \
|
|
(SAD_TYPE_7_CT \
|
|
)))))))
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
void sad4_cpu(unsigned short *blk_sad,
|
|
unsigned short *frame,
|
|
unsigned short *ref,
|
|
int mb_width,
|
|
int mb_height);
|
|
|
|
void larger_sads(unsigned short *sads,
|
|
int mbs);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|