• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_inter_pred_filters.h
25  *
26  * @brief
27  *  Declarations of functions used for inter prediction
28  *
29  * @author
30  *  Ittiam
31  *
32  * @par List of Functions:
33  *  -ih264_inter_pred_luma_copy
34  *  -ih264_interleave_copy
35  *  -ih264_inter_pred_luma_horz
36  *  -ih264_inter_pred_luma_vert
37  *  -ih264_inter_pred_luma_horz_hpel_vert_hpel
38  *  -ih264_inter_pred_luma_vert_qpel
39  *  -ih264_inter_pred_luma_horz_qpel
40  *  -ih264_inter_pred_luma_horz_qpel_vert_qpel
41  *  -ih264_inter_pred_luma_horz_qpel_vert_hpel
42  *  -ih264_inter_pred_luma_horz_hpel_vert_qpel
43  *  -ih264_inter_pred_luma_bilinear
44  *  -ih264_inter_pred_chroma
45  *  -ih264_inter_pred_luma_copy_a9q
46  *  -ih264_interleave_copy_a9
47  *  -ih264_inter_pred_luma_horz_a9q
48  *  -ih264_inter_pred_luma_vert_a9q
49  *  -ih264_inter_pred_luma_bilinear_a9q
50  *  -ih264_inter_pred_luma_horz_hpel_vert_hpel_a9q
51  *  -ih264_inter_pred_luma_horz_qpel_a9q
52  *  -ih264_inter_pred_luma_vert_qpel_a9q
53  *  -ih264_inter_pred_luma_horz_qpel_vert_qpel_a9q
54  *  -ih264_inter_pred_luma_horz_qpel_vert_hpel_a9q
55  *  -ih264_inter_pred_luma_horz_hpel_vert_qpel_a9q
56  *  -ih264_inter_pred_chroma_a9q
57  *  -ih264_inter_pred_luma_copy_av8
58  *  -ih264_interleave_copy_av8
59  *  -ih264_inter_pred_luma_horz_av8
60  *  -ih264_inter_pred_luma_vert_av8
61   *  -ih264_inter_pred_luma_bilinear_av8
62  *  -ih264_inter_pred_luma_horz_hpel_vert_hpel_av8
63  *  -ih264_inter_pred_luma_horz_qpel_av8
64  *  -ih264_inter_pred_luma_vert_qpel_av8
65  *  -ih264_inter_pred_luma_horz_qpel_vert_qpel_av8
66  *  -ih264_inter_pred_luma_horz_qpel_vert_hpel_av8
67  *  -ih264_inter_pred_luma_horz_hpel_vert_qpel_av8
68  *  -ih264_inter_pred_chroma_av8
69  *  -ih264_inter_pred_chroma_dx_zero_av8
70  *  -ih264_inter_pred_chroma_dy_zero_av8
71  *  -ih264_inter_pred_luma_copy_ssse3
72  *  -ih264_inter_pred_luma_copy_ssse3
73  *  -ih264_inter_pred_luma_horz_ssse3
74  *  -ih264_inter_pred_luma_vert_ssse3
75  *  -ih264_inter_pred_luma_bilinear_ssse3
76  *  -ih264_inter_pred_luma_horz_hpel_vert_hpel_ssse3
77  *  -ih264_inter_pred_luma_horz_qpel_ssse3
78  *  -ih264_inter_pred_luma_vert_qpel_ssse3
79  *  -ih264_inter_pred_luma_horz_qpel_vert_qpel_ssse3
80  *  -ih264_inter_pred_luma_horz_qpel_vert_hpel_ssse3
81  *  -ih264_inter_pred_luma_horz_hpel_vert_qpel_ssse3
82  *  -ih264_inter_pred_chroma_ssse3
83  *
84  * @remarks
85  *  None
86  *
87  *******************************************************************************
88  */
89 
90 #ifndef _IH264_INTER_PRED_H_
91 #define _IH264_INTER_PRED_H_
92 
93 /*****************************************************************************/
94 /* Constant Data variables                                                   */
95 /*****************************************************************************/
96 
97 extern const WORD32 ih264_g_six_tap[3];/* coefficients for 6 tap filtering*/
98 
99 /*****************************************************************************/
100 /* Extern Function Declarations                                              */
101 /*****************************************************************************/
102 
103 typedef void ih264_inter_pred_luma_ft(UWORD8 *pu1_src,
104                                       UWORD8 *pu1_dst,
105                                       WORD32 src_strd,
106                                       WORD32 dst_strd,
107                                       WORD32 ht,
108                                       WORD32 wd,
109                                       UWORD8* pu1_tmp,
110                                       WORD32 dydx);
111 
112 typedef void ih264_interleave_copy_ft(UWORD8 *pu1_src,
113                                       UWORD8 *pu1_dst,
114                                       WORD32 src_strd,
115                                       WORD32 dst_strd,
116                                       WORD32 ht,
117                                       WORD32 wd);
118 
119 typedef void ih264_inter_pred_luma_bilinear_ft(UWORD8 *pu1_src1,
120                                                UWORD8 *pu1_src2,
121                                                UWORD8 *pu1_dst,
122                                                WORD32 src_strd1,
123                                                WORD32 src_strd2,
124                                                WORD32 dst_strd,
125                                                WORD32 height,
126                                                WORD32 width);
127 
128 typedef void ih264_inter_pred_chroma_ft(UWORD8 *pu1_src,
129                                         UWORD8 *pu1_dst,
130                                         WORD32 src_strd,
131                                         WORD32 dst_strd,
132                                         WORD32 dx,
133                                         WORD32 dy,
134                                         WORD32 ht,
135                                         WORD32 wd);
136 
137 /* No NEON Declarations */
138 
139 ih264_inter_pred_luma_ft ih264_inter_pred_luma_copy;
140 
141 ih264_interleave_copy_ft ih264_interleave_copy;
142 
143 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz;
144 
145 ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert;
146 
147 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_hpel;
148 
149 ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_qpel;
150 
151 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel;
152 
153 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_qpel;
154 
155 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_hpel;
156 
157 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_qpel;
158 
159 ih264_inter_pred_luma_bilinear_ft ih264_inter_pred_luma_bilinear;
160 
161 ih264_inter_pred_chroma_ft ih264_inter_pred_chroma;
162 
163 /* A9 NEON Declarations */
164 ih264_inter_pred_luma_ft ih264_inter_pred_luma_copy_a9q;
165 
166 ih264_interleave_copy_ft ih264_interleave_copy_a9;
167 
168 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_a9q;
169 
170 ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_a9q;
171 
172 ih264_inter_pred_luma_bilinear_ft ih264_inter_pred_luma_bilinear_a9q;
173 
174 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_hpel_a9q;
175 
176 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_a9q;
177 
178 ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_qpel_a9q;
179 
180 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_qpel_a9q;
181 
182 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_hpel_a9q;
183 
184 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_qpel_a9q;
185 
186 ih264_inter_pred_chroma_ft ih264_inter_pred_chroma_a9q;
187 
188 /* AV8 NEON Declarations */
189 ih264_inter_pred_luma_ft ih264_inter_pred_luma_copy_av8;
190 
191 ih264_interleave_copy_ft ih264_interleave_copy_av8;
192 
193 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_av8;
194 
195 ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_av8;
196 
197 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_hpel_av8;
198 
199 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_av8;
200 
201 ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_qpel_av8;
202 
203 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_qpel_av8;
204 
205 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_hpel_av8;
206 
207 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_qpel_av8;
208 
209 ih264_inter_pred_chroma_ft ih264_inter_pred_chroma_av8;
210 
211 ih264_inter_pred_chroma_ft ih264_inter_pred_chroma_dx_zero_av8;
212 
213 ih264_inter_pred_chroma_ft ih264_inter_pred_chroma_dy_zero_av8;
214 
215 
216 /* SSSE3 Intrinsic Declarations */
217 ih264_inter_pred_luma_ft ih264_inter_pred_luma_copy_ssse3;
218 
219 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_ssse3;
220 
221 ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_ssse3;
222 
223 ih264_inter_pred_luma_bilinear_ft ih264_inter_pred_luma_bilinear_ssse3;
224 
225 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_hpel_ssse3;
226 
227 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_ssse3;
228 
229 ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_qpel_ssse3;
230 
231 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_qpel_ssse3;
232 
233 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_hpel_ssse3;
234 
235 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_qpel_ssse3;
236 
237 ih264_inter_pred_chroma_ft ih264_inter_pred_chroma_ssse3;
238 
239 #endif
240 
241 /** Nothing past this point */
242