1 /* 2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 12 #ifndef VP8_COMMON_VARIANCE_H_ 13 #define VP8_COMMON_VARIANCE_H_ 14 15 #include "vpx_config.h" 16 17 #ifdef __cplusplus 18 extern "C" { 19 #endif 20 21 typedef unsigned int(*vp8_sad_fn_t)( 22 const unsigned char *src_ptr, 23 int source_stride, 24 const unsigned char *ref_ptr, 25 int ref_stride, 26 unsigned int max_sad); 27 28 typedef void (*vp8_copy32xn_fn_t)( 29 const unsigned char *src_ptr, 30 int source_stride, 31 const unsigned char *ref_ptr, 32 int ref_stride, 33 int n); 34 35 typedef void (*vp8_sad_multi_fn_t)( 36 const unsigned char *src_ptr, 37 int source_stride, 38 const unsigned char *ref_ptr, 39 int ref_stride, 40 unsigned int *sad_array); 41 42 typedef void (*vp8_sad_multi1_fn_t) 43 ( 44 const unsigned char *src_ptr, 45 int source_stride, 46 const unsigned char *ref_ptr, 47 int ref_stride, 48 unsigned short *sad_array 49 ); 50 51 typedef void (*vp8_sad_multi_d_fn_t) 52 ( 53 const unsigned char *src_ptr, 54 int source_stride, 55 const unsigned char * const ref_ptr[], 56 int ref_stride, 57 unsigned int *sad_array 58 ); 59 60 typedef unsigned int (*vp8_variance_fn_t) 61 ( 62 const unsigned char *src_ptr, 63 int source_stride, 64 const unsigned char *ref_ptr, 65 int ref_stride, 66 unsigned int *sse 67 ); 68 69 typedef unsigned int (*vp8_subpixvariance_fn_t) 70 ( 71 const unsigned char *src_ptr, 72 int source_stride, 73 int xoffset, 74 int yoffset, 75 const unsigned char *ref_ptr, 76 int Refstride, 77 unsigned int *sse 78 ); 79 80 typedef void (*vp8_ssimpf_fn_t) 81 ( 82 unsigned char *s, 83 int sp, 84 unsigned char *r, 85 int rp, 86 unsigned long *sum_s, 87 unsigned long *sum_r, 88 unsigned long *sum_sq_s, 89 unsigned long *sum_sq_r, 90 unsigned long *sum_sxr 91 ); 92 93 typedef unsigned int (*vp8_getmbss_fn_t)(const short *); 94 95 typedef unsigned int (*vp8_get16x16prederror_fn_t) 96 ( 97 const unsigned char *src_ptr, 98 int source_stride, 99 const unsigned char *ref_ptr, 100 int ref_stride 101 ); 102 103 typedef struct variance_vtable 104 { 105 vp8_sad_fn_t sdf; 106 vp8_variance_fn_t vf; 107 vp8_subpixvariance_fn_t svf; 108 vp8_variance_fn_t svf_halfpix_h; 109 vp8_variance_fn_t svf_halfpix_v; 110 vp8_variance_fn_t svf_halfpix_hv; 111 vp8_sad_multi_fn_t sdx3f; 112 vp8_sad_multi1_fn_t sdx8f; 113 vp8_sad_multi_d_fn_t sdx4df; 114 #if ARCH_X86 || ARCH_X86_64 115 vp8_copy32xn_fn_t copymem; 116 #endif 117 } vp8_variance_fn_ptr_t; 118 119 #ifdef __cplusplus 120 } // extern "C" 121 #endif 122 123 #endif // VP8_COMMON_VARIANCE_H_ 124