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 VARIANCE_H
13#define VARIANCE_H
14
15#include "vpx_config.h"
16
17typedef unsigned int(*vp8_sad_fn_t)(
18    const unsigned char *src_ptr,
19    int source_stride,
20    const unsigned char *ref_ptr,
21    int ref_stride,
22    unsigned int max_sad);
23
24typedef void (*vp8_copy32xn_fn_t)(
25    const unsigned char *src_ptr,
26    int source_stride,
27    const unsigned char *ref_ptr,
28    int ref_stride,
29    int n);
30
31typedef void (*vp8_sad_multi_fn_t)(
32    const unsigned char *src_ptr,
33    int source_stride,
34    const unsigned char *ref_ptr,
35    int  ref_stride,
36    unsigned int *sad_array);
37
38typedef void (*vp8_sad_multi1_fn_t)
39    (
40     const unsigned char *src_ptr,
41     int source_stride,
42     const unsigned char *ref_ptr,
43     int  ref_stride,
44     unsigned short *sad_array
45    );
46
47typedef void (*vp8_sad_multi_d_fn_t)
48    (
49     const unsigned char *src_ptr,
50     int source_stride,
51     const unsigned char * const ref_ptr[],
52     int  ref_stride,
53     unsigned int *sad_array
54    );
55
56typedef unsigned int (*vp8_variance_fn_t)
57    (
58     const unsigned char *src_ptr,
59     int source_stride,
60     const unsigned char *ref_ptr,
61     int  ref_stride,
62     unsigned int *sse
63    );
64
65typedef unsigned int (*vp8_subpixvariance_fn_t)
66    (
67      const unsigned char  *src_ptr,
68      int  source_stride,
69      int  xoffset,
70      int  yoffset,
71      const unsigned char *ref_ptr,
72      int Refstride,
73      unsigned int *sse
74    );
75
76typedef void (*vp8_ssimpf_fn_t)
77      (
78        unsigned char *s,
79        int sp,
80        unsigned char *r,
81        int rp,
82        unsigned long *sum_s,
83        unsigned long *sum_r,
84        unsigned long *sum_sq_s,
85        unsigned long *sum_sq_r,
86        unsigned long *sum_sxr
87      );
88
89typedef unsigned int (*vp8_getmbss_fn_t)(const short *);
90
91typedef unsigned int (*vp8_get16x16prederror_fn_t)
92    (
93     const unsigned char *src_ptr,
94     int source_stride,
95     const unsigned char *ref_ptr,
96     int  ref_stride
97    );
98
99typedef struct variance_vtable
100{
101    vp8_sad_fn_t            sdf;
102    vp8_variance_fn_t       vf;
103    vp8_subpixvariance_fn_t svf;
104    vp8_variance_fn_t       svf_halfpix_h;
105    vp8_variance_fn_t       svf_halfpix_v;
106    vp8_variance_fn_t       svf_halfpix_hv;
107    vp8_sad_multi_fn_t      sdx3f;
108    vp8_sad_multi1_fn_t     sdx8f;
109    vp8_sad_multi_d_fn_t    sdx4df;
110#if ARCH_X86 || ARCH_X86_64
111    vp8_copy32xn_fn_t       copymem;
112#endif
113} vp8_variance_fn_ptr_t;
114
115#endif
116