• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /******************************************************************************
2  *
3  * Copyright (C) 2022 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  *  isvc_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 _ISVC_INTER_PRED_FILTERS_H_
91 #define _ISVC_INTER_PRED_FILTERS_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 FT_INTER_PRED_LUMA(UWORD8 *pu1_src, UWORD8 *pu1_dst, WORD32 src_strd, WORD32 dst_strd,
104                                 WORD32 ht, WORD32 wd, UWORD8 *pu1_tmp, WORD32 dydx);
105 
106 typedef void FT_INTERLEAVE_COPY(UWORD8 *pu1_src, UWORD8 *pu1_dst, WORD32 src_strd, WORD32 dst_strd,
107                                 WORD32 ht, WORD32 wd);
108 
109 typedef void FT_INTER_PRED_LUMA_BILINEAR(UWORD8 *pu1_src1, UWORD8 *pu1_src2, UWORD8 *pu1_dst,
110                                          WORD32 src_strd1, WORD32 src_strd2, WORD32 dst_strd,
111                                          WORD32 height, WORD32 width);
112 
113 typedef void FT_INTER_PRED_CHROMA(UWORD8 *pu1_src, UWORD8 *pu1_dst, WORD32 src_strd,
114                                   WORD32 dst_strd, WORD32 dx, WORD32 dy, WORD32 ht, WORD32 wd);
115 
116 /* No NEON Declarations */
117 
118 FT_INTER_PRED_LUMA ih264_inter_pred_luma_copy;
119 
120 FT_INTERLEAVE_COPY ih264_interleave_copy;
121 
122 FT_INTER_PRED_LUMA ih264_inter_pred_luma_horz;
123 
124 FT_INTER_PRED_LUMA ih264_inter_pred_luma_vert;
125 
126 FT_INTER_PRED_LUMA ih264_inter_pred_luma_horz_hpel_vert_hpel;
127 
128 FT_INTER_PRED_LUMA ih264_inter_pred_luma_vert_qpel;
129 
130 FT_INTER_PRED_LUMA ih264_inter_pred_luma_horz_qpel;
131 
132 FT_INTER_PRED_LUMA ih264_inter_pred_luma_horz_qpel_vert_qpel;
133 
134 FT_INTER_PRED_LUMA ih264_inter_pred_luma_horz_qpel_vert_hpel;
135 
136 FT_INTER_PRED_LUMA ih264_inter_pred_luma_horz_hpel_vert_qpel;
137 
138 FT_INTER_PRED_LUMA_BILINEAR ih264_inter_pred_luma_bilinear;
139 
140 FT_INTER_PRED_CHROMA ih264_inter_pred_chroma;
141 
142 /* A9 NEON Declarations */
143 FT_INTER_PRED_LUMA ih264_inter_pred_luma_copy_a9q;
144 
145 FT_INTERLEAVE_COPY ih264_interleave_copy_a9;
146 
147 FT_INTER_PRED_LUMA ih264_inter_pred_luma_horz_a9q;
148 
149 FT_INTER_PRED_LUMA ih264_inter_pred_luma_vert_a9q;
150 
151 FT_INTER_PRED_LUMA_BILINEAR ih264_inter_pred_luma_bilinear_a9q;
152 
153 FT_INTER_PRED_LUMA ih264_inter_pred_luma_horz_hpel_vert_hpel_a9q;
154 
155 FT_INTER_PRED_LUMA ih264_inter_pred_luma_horz_qpel_a9q;
156 
157 FT_INTER_PRED_LUMA ih264_inter_pred_luma_vert_qpel_a9q;
158 
159 FT_INTER_PRED_LUMA ih264_inter_pred_luma_horz_qpel_vert_qpel_a9q;
160 
161 FT_INTER_PRED_LUMA ih264_inter_pred_luma_horz_qpel_vert_hpel_a9q;
162 
163 FT_INTER_PRED_LUMA ih264_inter_pred_luma_horz_hpel_vert_qpel_a9q;
164 
165 FT_INTER_PRED_CHROMA ih264_inter_pred_chroma_a9q;
166 
167 /* AV8 NEON Declarations */
168 FT_INTER_PRED_LUMA ih264_inter_pred_luma_copy_av8;
169 
170 FT_INTERLEAVE_COPY ih264_interleave_copy_av8;
171 
172 FT_INTER_PRED_LUMA ih264_inter_pred_luma_horz_av8;
173 
174 FT_INTER_PRED_LUMA ih264_inter_pred_luma_vert_av8;
175 
176 FT_INTER_PRED_LUMA ih264_inter_pred_luma_horz_hpel_vert_hpel_av8;
177 
178 FT_INTER_PRED_LUMA ih264_inter_pred_luma_horz_qpel_av8;
179 
180 FT_INTER_PRED_LUMA ih264_inter_pred_luma_vert_qpel_av8;
181 
182 FT_INTER_PRED_LUMA ih264_inter_pred_luma_horz_qpel_vert_qpel_av8;
183 
184 FT_INTER_PRED_LUMA ih264_inter_pred_luma_horz_qpel_vert_hpel_av8;
185 
186 FT_INTER_PRED_LUMA ih264_inter_pred_luma_horz_hpel_vert_qpel_av8;
187 
188 FT_INTER_PRED_CHROMA ih264_inter_pred_chroma_av8;
189 
190 FT_INTER_PRED_CHROMA ih264_inter_pred_chroma_dx_zero_av8;
191 
192 FT_INTER_PRED_CHROMA ih264_inter_pred_chroma_dy_zero_av8;
193 
194 /* SSSE3 Intrinsic Declarations */
195 FT_INTER_PRED_LUMA ih264_inter_pred_luma_copy_ssse3;
196 
197 FT_INTER_PRED_LUMA ih264_inter_pred_luma_horz_ssse3;
198 
199 FT_INTER_PRED_LUMA ih264_inter_pred_luma_vert_ssse3;
200 
201 FT_INTER_PRED_LUMA_BILINEAR ih264_inter_pred_luma_bilinear_ssse3;
202 
203 FT_INTER_PRED_LUMA ih264_inter_pred_luma_horz_hpel_vert_hpel_ssse3;
204 
205 FT_INTER_PRED_LUMA ih264_inter_pred_luma_horz_qpel_ssse3;
206 
207 FT_INTER_PRED_LUMA ih264_inter_pred_luma_vert_qpel_ssse3;
208 
209 FT_INTER_PRED_LUMA ih264_inter_pred_luma_horz_qpel_vert_qpel_ssse3;
210 
211 FT_INTER_PRED_LUMA ih264_inter_pred_luma_horz_qpel_vert_hpel_ssse3;
212 
213 FT_INTER_PRED_LUMA ih264_inter_pred_luma_horz_hpel_vert_qpel_ssse3;
214 
215 FT_INTER_PRED_CHROMA ih264_inter_pred_chroma_ssse3;
216 
217 /** Nothing past this point */
218 
219 #endif
220