blob: c439ab8429f4f22d438d3212f9379f6498939da7 [file] [log] [blame]
Hamsalekha S8d3d3032015-03-13 21:24:58 +05301/******************************************************************************
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
97extern const WORD32 ih264_g_six_tap[3];/* coefficients for 6 tap filtering*/
98
99/*****************************************************************************/
100/* Extern Function Declarations */
101/*****************************************************************************/
102
103typedef 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
112typedef 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
119typedef 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
128typedef 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
139ih264_inter_pred_luma_ft ih264_inter_pred_luma_copy;
140
141ih264_interleave_copy_ft ih264_interleave_copy;
142
143ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz;
144
145ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert;
146
147ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_hpel;
148
149ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_qpel;
150
151ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel;
152
153ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_qpel;
154
155ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_hpel;
156
157ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_qpel;
158
159ih264_inter_pred_luma_bilinear_ft ih264_inter_pred_luma_bilinear;
160
161ih264_inter_pred_chroma_ft ih264_inter_pred_chroma;
162
163/* A9 NEON Declarations */
164ih264_inter_pred_luma_ft ih264_inter_pred_luma_copy_a9q;
165
166ih264_interleave_copy_ft ih264_interleave_copy_a9;
167
168ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_a9q;
169
170ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_a9q;
171
172ih264_inter_pred_luma_bilinear_ft ih264_inter_pred_luma_bilinear_a9q;
173
174ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_hpel_a9q;
175
176ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_a9q;
177
178ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_qpel_a9q;
179
180ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_qpel_a9q;
181
182ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_hpel_a9q;
183
184ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_qpel_a9q;
185
186ih264_inter_pred_chroma_ft ih264_inter_pred_chroma_a9q;
187
188/* AV8 NEON Declarations */
189ih264_inter_pred_luma_ft ih264_inter_pred_luma_copy_av8;
190
191ih264_interleave_copy_ft ih264_interleave_copy_av8;
192
193ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_av8;
194
195ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_av8;
196
197ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_hpel_av8;
198
199ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_av8;
200
201ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_qpel_av8;
202
203ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_qpel_av8;
204
205ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_hpel_av8;
206
207ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_qpel_av8;
208
209ih264_inter_pred_chroma_ft ih264_inter_pred_chroma_av8;
210
211ih264_inter_pred_chroma_ft ih264_inter_pred_chroma_dx_zero_av8;
212
213ih264_inter_pred_chroma_ft ih264_inter_pred_chroma_dy_zero_av8;
214
215
216/* SSSE3 Intrinsic Declarations */
217ih264_inter_pred_luma_ft ih264_inter_pred_luma_copy_ssse3;
218
219ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_ssse3;
220
221ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_ssse3;
222
223ih264_inter_pred_luma_bilinear_ft ih264_inter_pred_luma_bilinear_ssse3;
224
225ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_hpel_ssse3;
226
227ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_ssse3;
228
229ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_qpel_ssse3;
230
231ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_qpel_ssse3;
232
233ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_hpel_ssse3;
234
235ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_qpel_ssse3;
236
237ih264_inter_pred_chroma_ft ih264_inter_pred_chroma_ssse3;
238
239#endif
240
241/** Nothing past this point */