1 /*
2 * Copyright(c) 2018 Intel Corporation
3 * SPDX - License - Identifier: BSD - 2 - Clause - Patent
4 */
5 
6 #ifndef EbSampleAdaptiveOffset_SSE2_h
7 #define EbSampleAdaptiveOffset_SSE2_h
8 
9 #include "EbDefinitions.h"
10 
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 EB_ERRORTYPE GatherSaoStatisticsLcu_OnlyEo_90_45_135_16bit_SSE2_INTRIN(
16     EB_U16                   *inputSamplePtr,        // input parameter, source Picture Ptr
17     EB_U32                   inputStride,           // input parameter, source stride
18     EB_U16                   *reconSamplePtr,        // input parameter, deblocked Picture Ptr
19     EB_U32                   reconStride,           // input parameter, deblocked stride
20     EB_U32                   lcuWidth,              // input parameter, LCU width
21     EB_U32                   lcuHeight,             // input parameter, LCU height
22     EB_S32                   eoDiff[SAO_EO_TYPES][SAO_EO_CATEGORIES + 1],    // output parameter, used to store Edge Offset diff, eoDiff[SAO_EO_TYPES] [SAO_EO_CATEGORIES]
23     EB_U16                   eoCount[SAO_EO_TYPES][SAO_EO_CATEGORIES + 1]);   // output parameter, used to store Edge Offset count, eoCount[SAO_EO_TYPES] [SAO_EO_CATEGORIES]
24 
25 extern EB_ERRORTYPE SAOApplyBO16bit_SSE2_INTRIN(
26 	EB_U16                          *reconSamplePtr,
27 	EB_U32                           reconStride,
28 	EB_U32                           saoBandPosition,
29 	EB_S8                           *saoOffsetPtr,
30 	EB_U32                           lcuHeight,
31 	EB_U32                           lcuWidth);
32 
33 extern EB_ERRORTYPE SAOApplyEO_45_16bit_SSE2_INTRIN(
34     EB_U16                           *reconSamplePtr,
35     EB_U32                           reconStride,
36     EB_U16                           *temporalBufferLeft,
37     EB_U16                           *temporalBufferUpper,
38     EB_S8                           *saoOffsetPtr,
39     EB_U32                           lcuHeight,
40     EB_U32                           lcuWidth);
41 
42 extern EB_ERRORTYPE SAOApplyEO_135_16bit_SSE2_INTRIN(
43     EB_U16                           *reconSamplePtr,
44     EB_U32                           reconStride,
45     EB_U16                          *temporalBufferLeft,
46     EB_U16                           *temporalBufferUpper,
47     EB_S8                           *saoOffsetPtr,
48     EB_U32                           lcuHeight,
49     EB_U32                           lcuWidth);
50 
51 extern EB_ERRORTYPE SAOApplyEO_90_16bit_SSE2_INTRIN(
52     EB_U16                          *reconSamplePtr,
53     EB_U32                           reconStride,
54     EB_U16                          *temporalBufferUpper,
55     EB_S8                           *saoOffsetPtr,
56     EB_U32                           lcuHeight,
57     EB_U32                           lcuWidth);
58 
59 extern EB_ERRORTYPE SAOApplyEO_0_16bit_SSE2_INTRIN(
60     EB_U16                          *reconSamplePtr,
61     EB_U32                           reconStride,
62     EB_U16                          *temporalBufferLeft,
63     EB_S8                           *saoOffsetPtr,
64     EB_U32                           lcuHeight,
65     EB_U32                           lcuWidth);
66 
67 #ifdef __cplusplus
68 }
69 #endif
70 #endif