1 /*
2 * Copyright(c) 2019 Intel Corporation
3 * SPDX - License - Identifier: BSD - 2 - Clause - Patent
4 */
5 
6 #ifndef EbComputeSAD_C_h
7 #define EbComputeSAD_C_h
8 
9 #include "EbDefinitions.h"
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
13 
14 uint32_t eb_vp9_fast_loop_nx_m_sad_kernel(
15     uint8_t  *src,                            // input parameter, source samples Ptr
16     uint32_t  src_stride,                     // input parameter, source stride
17     uint8_t  *ref,                            // input parameter, reference samples Ptr
18     uint32_t  ref_stride,                     // input parameter, reference stride
19     uint32_t  height,                         // input parameter, block height (M)
20     uint32_t  width);                         // input parameter, block width (N)
21 
22 uint32_t eb_vp9_combined_averaging_sad(
23     uint8_t  *src,
24     uint32_t  src_stride,
25     uint8_t  *ref1,
26     uint32_t  ref1_stride,
27     uint8_t  *ref2,
28     uint32_t  ref2_stride,
29     uint32_t  height,
30     uint32_t  width);
31 
32 uint32_t compute8x4_sad_kernel(
33     uint8_t  *src,                            // input parameter, source samples Ptr
34     uint32_t  src_stride,                     // input parameter, source stride
35     uint8_t  *ref,                            // input parameter, reference samples Ptr
36     uint32_t  ref_stride);                    // input parameter, reference stride
37 
38 void eb_vp9_sad_loop_kernel(
39     uint8_t  *src,                            // input parameter, source samples Ptr
40     uint32_t  src_stride,                     // input parameter, source stride
41     uint8_t  *ref,                            // input parameter, reference samples Ptr
42     uint32_t  ref_stride,                     // input parameter, reference stride
43     uint32_t  height,                         // input parameter, block height (M)
44     uint32_t  width,                          // input parameter, block width (N)
45     uint64_t *best_sad,
46     int16_t  *x_search_center,
47     int16_t  *y_search_center,
48     uint32_t  src_stride_raw,                 // input parameter, source stride (no line skipping)
49     int16_t  search_area_width,
50     int16_t  search_area_height);
51 
52 void eb_vp9_sad_loop_kernel_sparse(
53     uint8_t  *src,                            // input parameter, source samples Ptr
54     uint32_t  src_stride,                     // input parameter, source stride
55     uint8_t  *ref,                            // input parameter, reference samples Ptr
56     uint32_t  ref_stride,                     // input parameter, reference stride
57     uint32_t  height,                         // input parameter, block height (M)
58     uint32_t  width,                          // input parameter, block width (N)
59     uint64_t *best_sad,
60     int16_t  *x_search_center,
61     int16_t  *y_search_center,
62     uint32_t  src_stride_raw,                 // input parameter, source stride (no line skipping)
63     int16_t   search_area_width,
64     int16_t   search_area_height);
65 
66 void eb_vp9_get_eight_horizontal_search_point_results_8x8_16x16_pu(
67     uint8_t   *src,
68     uint32_t   src_stride,
69     uint8_t   *ref,
70     uint32_t   ref_stride,
71     uint32_t  *p_best_sad8x8,
72     uint32_t  *p_best_mv8x8,
73     uint32_t  *p_best_sad16x16,
74     uint32_t  *p_best_mv16x16,
75     uint32_t   mv,
76     uint16_t  *p_sad16x16);
77 
78 void eb_vp9_get_eight_horizontal_search_point_results_32x32_64x64(
79     uint16_t  *p_sad16x16,
80     uint32_t  *p_best_sad32x32,
81     uint32_t  *p_best_sad64x64,
82     uint32_t  *p_best_mv32x32,
83     uint32_t  *p_best_mv64x64,
84     uint32_t   mv);
85 
86 #ifdef __cplusplus
87 }
88 #endif
89 #endif // EbComputeSAD_C_h
90