1 /******************************************************************************
2  *
3  * Copyright (C) 2015 The Android Open Source Project
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at:
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  *****************************************************************************
18  * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19 */
20 
21 /**
22 *******************************************************************************
23 * @file
24 *  ih264_weighted_pred.h
25 *
26 * @brief
27 *  Declarations of functions used for weighted prediction
28 *
29 * @author
30 *  Ittiam
31 *
32 * @par List of Functions:
33 *  -ih264_default_weighted_pred_luma
34 *  -ih264_default_weighted_pred_chroma
35 *  -ih264_weighted_pred_luma
36 *  -ih264_weighted_pred_chroma
37 *  -ih264_weighted_bi_pred_luma
38 *  -ih264_weighted_bi_pred_chroma
39 *  -ih264_default_weighted_pred_luma_a9q
40 *  -ih264_default_weighted_pred_chroma_a9q
41 *  -ih264_weighted_pred_luma_a9q
42 *  -ih264_weighted_pred_luma_a9q
43 *  -ih264_weighted_bi_pred_luma_a9q
44 *  -ih264_weighted_bi_pred_chroma_a9q
45 *  -ih264_default_weighted_pred_luma_av8
46 *  -ih264_default_weighted_pred_chroma_av8
47 *  -ih264_weighted_pred_luma_av8
48 *  -ih264_weighted_pred_chroma_av8
49 *  -ih264_weighted_bi_pred_luma_av8
50 *  -ih264_weighted_bi_pred_chroma_av8
51 *  -ih264_default_weighted_pred_luma_sse42
52 *  -ih264_default_weighted_pred_chroma_sse42
53 *  -ih264_weighted_pred_luma_sse42
54 *  -ih264_weighted_pred_chroma_sse42
55 *  -ih264_weighted_bi_pred_luma_sse42
56 *  -ih264_weighted_bi_pred_chroma_sse42
57 *
58 *
59 * @remarks
60 *  None
61 *
62 *******************************************************************************
63 */
64 
65 #ifndef IH264_WEIGHTED_PRED_H_
66 #define IH264_WEIGHTED_PRED_H_
67 
68 /*****************************************************************************/
69 /* Extern Function Declarations                                              */
70 /*****************************************************************************/
71 typedef void ih264_default_weighted_pred_ft(UWORD8 *puc_src1,
72                                             UWORD8 *puc_src2,
73                                             UWORD8 *puc_dst,
74                                             WORD32 src_strd1,
75                                             WORD32 src_strd2,
76                                             WORD32 dst_strd,
77                                             WORD32 ht,
78                                             WORD32 wd);
79 
80 typedef void ih264_weighted_pred_ft(UWORD8 *puc_src,
81                                     UWORD8 *puc_dst,
82                                     WORD32 src_strd,
83                                     WORD32 dst_strd,
84                                     WORD32 log_wd,
85                                     WORD32 wt,
86                                     WORD32 ofst,
87                                     WORD32 ht,
88                                     WORD32 wd);
89 
90 typedef void ih264_weighted_bi_pred_ft(UWORD8 *puc_src1,
91                                        UWORD8 *puc_src2,
92                                        UWORD8 *puc_dst,
93                                        WORD32 src_strd1,
94                                        WORD32 src_strd2,
95                                        WORD32 dst_strd,
96                                        WORD32 log_wd,
97                                        WORD32 wt1,
98                                        WORD32 wt2,
99                                        WORD32 ofst1,
100                                        WORD32 ofst2,
101                                        WORD32 ht,
102                                        WORD32 wd);
103 
104 /* No NEON Declarations */
105 
106 ih264_default_weighted_pred_ft ih264_default_weighted_pred_luma;
107 
108 ih264_default_weighted_pred_ft ih264_default_weighted_pred_chroma;
109 
110 ih264_weighted_pred_ft ih264_weighted_pred_luma;
111 
112 ih264_weighted_pred_ft ih264_weighted_pred_chroma;
113 
114 ih264_weighted_bi_pred_ft ih264_weighted_bi_pred_luma;
115 
116 ih264_weighted_bi_pred_ft ih264_weighted_bi_pred_chroma;
117 
118 /* A9 NEON Declarations */
119 
120 ih264_default_weighted_pred_ft ih264_default_weighted_pred_luma_a9q;
121 
122 ih264_default_weighted_pred_ft ih264_default_weighted_pred_chroma_a9q;
123 
124 ih264_weighted_pred_ft ih264_weighted_pred_luma_a9q;
125 
126 ih264_weighted_pred_ft ih264_weighted_pred_chroma_a9q;
127 
128 ih264_weighted_bi_pred_ft ih264_weighted_bi_pred_luma_a9q;
129 
130 ih264_weighted_bi_pred_ft ih264_weighted_bi_pred_chroma_a9q;
131 
132 
133 /* AV8 NEON Declarations */
134 
135 ih264_default_weighted_pred_ft ih264_default_weighted_pred_luma_av8;
136 
137 ih264_default_weighted_pred_ft ih264_default_weighted_pred_chroma_av8;
138 
139 ih264_weighted_pred_ft ih264_weighted_pred_luma_av8;
140 
141 ih264_weighted_pred_ft ih264_weighted_pred_chroma_av8;
142 
143 ih264_weighted_bi_pred_ft ih264_weighted_bi_pred_luma_av8;
144 
145 ih264_weighted_bi_pred_ft ih264_weighted_bi_pred_chroma_av8;
146 
147 
148 /* SSE42 Intrinsic Declarations */
149 
150 ih264_default_weighted_pred_ft ih264_default_weighted_pred_luma_sse42;
151 
152 ih264_default_weighted_pred_ft ih264_default_weighted_pred_chroma_sse42;
153 
154 ih264_weighted_pred_ft ih264_weighted_pred_luma_sse42;
155 
156 ih264_weighted_pred_ft ih264_weighted_pred_chroma_sse42;
157 
158 ih264_weighted_bi_pred_ft ih264_weighted_bi_pred_luma_sse42;
159 
160 ih264_weighted_bi_pred_ft ih264_weighted_bi_pred_chroma_sse42;
161 
162 #endif /* IH264_WEIGHTED_PRED_H_ */
163 
164 /** Nothing past this point */
165