xref: /aosp_15_r20/external/libhevc/common/ihevc_inter_pred.h (revision c83a76b084498d55f252f48b2e3786804cdf24b7)
1*c83a76b0SSuyog Pawar /******************************************************************************
2*c83a76b0SSuyog Pawar *
3*c83a76b0SSuyog Pawar * Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore
4*c83a76b0SSuyog Pawar *
5*c83a76b0SSuyog Pawar * Licensed under the Apache License, Version 2.0 (the "License");
6*c83a76b0SSuyog Pawar * you may not use this file except in compliance with the License.
7*c83a76b0SSuyog Pawar * You may obtain a copy of the License at:
8*c83a76b0SSuyog Pawar *
9*c83a76b0SSuyog Pawar * http://www.apache.org/licenses/LICENSE-2.0
10*c83a76b0SSuyog Pawar *
11*c83a76b0SSuyog Pawar * Unless required by applicable law or agreed to in writing, software
12*c83a76b0SSuyog Pawar * distributed under the License is distributed on an "AS IS" BASIS,
13*c83a76b0SSuyog Pawar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*c83a76b0SSuyog Pawar * See the License for the specific language governing permissions and
15*c83a76b0SSuyog Pawar * limitations under the License.
16*c83a76b0SSuyog Pawar *
17*c83a76b0SSuyog Pawar ******************************************************************************/
18*c83a76b0SSuyog Pawar /**
19*c83a76b0SSuyog Pawar *******************************************************************************
20*c83a76b0SSuyog Pawar * @file
21*c83a76b0SSuyog Pawar *  ihevc_inter_pred.h
22*c83a76b0SSuyog Pawar *
23*c83a76b0SSuyog Pawar * @brief
24*c83a76b0SSuyog Pawar *  Declarations for the fucntions defined in  ihevc_inter_pred_ft.c
25*c83a76b0SSuyog Pawar *
26*c83a76b0SSuyog Pawar * @author
27*c83a76b0SSuyog Pawar *  Srinivas T
28*c83a76b0SSuyog Pawar *
29*c83a76b0SSuyog Pawar * @par List of Functions:
30*c83a76b0SSuyog Pawar *
31*c83a76b0SSuyog Pawar * @remarks
32*c83a76b0SSuyog Pawar *  None
33*c83a76b0SSuyog Pawar *
34*c83a76b0SSuyog Pawar *******************************************************************************
35*c83a76b0SSuyog Pawar */
36*c83a76b0SSuyog Pawar #ifndef _IHEVC_INTER_PRED_H_
37*c83a76b0SSuyog Pawar #define _IHEVC_INTER_PRED_H_
38*c83a76b0SSuyog Pawar 
39*c83a76b0SSuyog Pawar #define NTAPS_LUMA 8
40*c83a76b0SSuyog Pawar #define NTAPS_CHROMA 4
41*c83a76b0SSuyog Pawar #define SHIFT_14_MINUS_BIT_DEPTH (14 - BIT_DEPTH)
42*c83a76b0SSuyog Pawar #define OFFSET_14_MINUS_BIT_DEPTH (1 << (SHIFT_14_MINUS_BIT_DEPTH - 1))
43*c83a76b0SSuyog Pawar #define OFFSET14 (1 << (14 - 1))
44*c83a76b0SSuyog Pawar #define FILTER_PREC 6
45*c83a76b0SSuyog Pawar 
46*c83a76b0SSuyog Pawar #define REF_WIDTH 1280
47*c83a76b0SSuyog Pawar #define REF_HEIGHT 720
48*c83a76b0SSuyog Pawar 
49*c83a76b0SSuyog Pawar /*****************************************************************************/
50*c83a76b0SSuyog Pawar /* Function Declarations                                                     */
51*c83a76b0SSuyog Pawar /*****************************************************************************/
52*c83a76b0SSuyog Pawar 
53*c83a76b0SSuyog Pawar typedef void ihevc_inter_pred_ft(
54*c83a76b0SSuyog Pawar                 UWORD8 *pu1_src,
55*c83a76b0SSuyog Pawar                 UWORD8 *pu1_dst,
56*c83a76b0SSuyog Pawar                 WORD32 src_strd,
57*c83a76b0SSuyog Pawar                 WORD32 dst_strd,
58*c83a76b0SSuyog Pawar                 WORD8 *pi1_coeff,
59*c83a76b0SSuyog Pawar                 WORD32 ht,
60*c83a76b0SSuyog Pawar                 WORD32 wd);
61*c83a76b0SSuyog Pawar 
62*c83a76b0SSuyog Pawar typedef void ihevc_inter_pred_w16out_ft(
63*c83a76b0SSuyog Pawar                 UWORD8 *pu1_src,
64*c83a76b0SSuyog Pawar                 WORD16 *pi2_dst,
65*c83a76b0SSuyog Pawar                 WORD32 src_strd,
66*c83a76b0SSuyog Pawar                 WORD32 dst_strd,
67*c83a76b0SSuyog Pawar                 WORD8 *pi1_coeff,
68*c83a76b0SSuyog Pawar                 WORD32 ht,
69*c83a76b0SSuyog Pawar                 WORD32 wd);
70*c83a76b0SSuyog Pawar 
71*c83a76b0SSuyog Pawar typedef void ihevc_inter_pred_w16inp_ft(
72*c83a76b0SSuyog Pawar                 WORD16 *pi2_src,
73*c83a76b0SSuyog Pawar                 UWORD8 *pu1_dst,
74*c83a76b0SSuyog Pawar                 WORD32 src_strd,
75*c83a76b0SSuyog Pawar                 WORD32 dst_strd,
76*c83a76b0SSuyog Pawar                 WORD8 *pi1_coeff,
77*c83a76b0SSuyog Pawar                 WORD32 ht,
78*c83a76b0SSuyog Pawar                 WORD32 wd);
79*c83a76b0SSuyog Pawar 
80*c83a76b0SSuyog Pawar typedef void ihevc_inter_pred_w16inp_w16out_ft(
81*c83a76b0SSuyog Pawar                 WORD16 *pi2_src,
82*c83a76b0SSuyog Pawar                 WORD16 *pi2_dst,
83*c83a76b0SSuyog Pawar                 WORD32 src_strd,
84*c83a76b0SSuyog Pawar                 WORD32 dst_strd,
85*c83a76b0SSuyog Pawar                 WORD8 *pi1_coeff,
86*c83a76b0SSuyog Pawar                 WORD32 ht,
87*c83a76b0SSuyog Pawar                 WORD32 wd);
88*c83a76b0SSuyog Pawar 
89*c83a76b0SSuyog Pawar 
90*c83a76b0SSuyog Pawar typedef void ihevc_hbd_inter_pred_ft(UWORD16 *pu2_src,
91*c83a76b0SSuyog Pawar                                      UWORD16 *pu2_dst,
92*c83a76b0SSuyog Pawar                                      WORD32 src_strd,
93*c83a76b0SSuyog Pawar                                      WORD32 dst_strd,
94*c83a76b0SSuyog Pawar                                      WORD8 *pi1_coeff,
95*c83a76b0SSuyog Pawar                                      WORD32 ht,
96*c83a76b0SSuyog Pawar                                      WORD32 wd,
97*c83a76b0SSuyog Pawar                                      UWORD8 bit_depth);
98*c83a76b0SSuyog Pawar 
99*c83a76b0SSuyog Pawar 
100*c83a76b0SSuyog Pawar typedef void ihevc_hbd_inter_pred_w16out_ft(
101*c83a76b0SSuyog Pawar                 UWORD16 *pu2_src,
102*c83a76b0SSuyog Pawar                 WORD16 *pi2_dst,
103*c83a76b0SSuyog Pawar                 WORD32 src_strd,
104*c83a76b0SSuyog Pawar                 WORD32 dst_strd,
105*c83a76b0SSuyog Pawar                 WORD8 *pi1_coeff,
106*c83a76b0SSuyog Pawar                 WORD32 ht,
107*c83a76b0SSuyog Pawar                 WORD32 wd,
108*c83a76b0SSuyog Pawar                 UWORD8 bit_depth);
109*c83a76b0SSuyog Pawar 
110*c83a76b0SSuyog Pawar 
111*c83a76b0SSuyog Pawar typedef void ihevc_hbd_inter_pred_w16inp_ft(
112*c83a76b0SSuyog Pawar                 WORD16 *pi2_src,
113*c83a76b0SSuyog Pawar                 UWORD16 *pu2_dst,
114*c83a76b0SSuyog Pawar                 WORD32 src_strd,
115*c83a76b0SSuyog Pawar                 WORD32 dst_strd,
116*c83a76b0SSuyog Pawar                 WORD8 *pi1_coeff,
117*c83a76b0SSuyog Pawar                 WORD32 ht,
118*c83a76b0SSuyog Pawar                 WORD32 wd,
119*c83a76b0SSuyog Pawar                 UWORD8 bit_depth);
120*c83a76b0SSuyog Pawar 
121*c83a76b0SSuyog Pawar 
122*c83a76b0SSuyog Pawar typedef void ihevc_hbd_inter_pred_w16inp_w16out_ft(
123*c83a76b0SSuyog Pawar                 WORD16 *pi2_src,
124*c83a76b0SSuyog Pawar                 WORD16 *pi2_dst,
125*c83a76b0SSuyog Pawar                 WORD32 src_strd,
126*c83a76b0SSuyog Pawar                 WORD32 dst_strd,
127*c83a76b0SSuyog Pawar                 WORD8 *pi1_coeff,
128*c83a76b0SSuyog Pawar                 WORD32 ht,
129*c83a76b0SSuyog Pawar                 WORD32 wd,
130*c83a76b0SSuyog Pawar                 UWORD8 bit_depth);
131*c83a76b0SSuyog Pawar 
132*c83a76b0SSuyog Pawar typedef void ihevc_hbd_weighted_pred_uni_ft(
133*c83a76b0SSuyog Pawar                 WORD16 *pi2_src,
134*c83a76b0SSuyog Pawar                 UWORD16 *pu2_dst,
135*c83a76b0SSuyog Pawar                 WORD32 src_strd,
136*c83a76b0SSuyog Pawar                 WORD32 dst_strd,
137*c83a76b0SSuyog Pawar                 WORD32 wgt0,
138*c83a76b0SSuyog Pawar                 WORD32 off0,
139*c83a76b0SSuyog Pawar                 WORD32 shift,
140*c83a76b0SSuyog Pawar                 WORD32 lvl_shift,
141*c83a76b0SSuyog Pawar                 WORD32 ht,
142*c83a76b0SSuyog Pawar                 WORD32 wd,
143*c83a76b0SSuyog Pawar                 UWORD8 bit_depth);
144*c83a76b0SSuyog Pawar 
145*c83a76b0SSuyog Pawar 
146*c83a76b0SSuyog Pawar typedef void ihevc_hbd_weighted_pred_bi_ft(
147*c83a76b0SSuyog Pawar                 WORD16 *pi2_src1,
148*c83a76b0SSuyog Pawar                 WORD16 *pi2_src2,
149*c83a76b0SSuyog Pawar                 UWORD16 *pu2_dst,
150*c83a76b0SSuyog Pawar                 WORD32 src_strd1,
151*c83a76b0SSuyog Pawar                 WORD32 src_strd2,
152*c83a76b0SSuyog Pawar                 WORD32 dst_strd,
153*c83a76b0SSuyog Pawar                 WORD32 wgt0,
154*c83a76b0SSuyog Pawar                 WORD32 off0,
155*c83a76b0SSuyog Pawar                 WORD32 wgt1,
156*c83a76b0SSuyog Pawar                 WORD32 off1,
157*c83a76b0SSuyog Pawar                 WORD32 shift,
158*c83a76b0SSuyog Pawar                 WORD32 lvl_shift1,
159*c83a76b0SSuyog Pawar                 WORD32 lvl_shift2,
160*c83a76b0SSuyog Pawar                 WORD32 ht,
161*c83a76b0SSuyog Pawar                 WORD32 wd,
162*c83a76b0SSuyog Pawar                 UWORD8 bit_depth);
163*c83a76b0SSuyog Pawar 
164*c83a76b0SSuyog Pawar 
165*c83a76b0SSuyog Pawar typedef void ihevc_hbd_weighted_pred_bi_default_ft(
166*c83a76b0SSuyog Pawar                 WORD16 *pi2_src1,
167*c83a76b0SSuyog Pawar                 WORD16 *pi2_src2,
168*c83a76b0SSuyog Pawar                 UWORD16 *pu2_dst,
169*c83a76b0SSuyog Pawar                 WORD32 src_strd1,
170*c83a76b0SSuyog Pawar                 WORD32 src_strd2,
171*c83a76b0SSuyog Pawar                 WORD32 dst_strd,
172*c83a76b0SSuyog Pawar                 WORD32 lvl_shift1,
173*c83a76b0SSuyog Pawar                 WORD32 lvl_shift2,
174*c83a76b0SSuyog Pawar                 WORD32 ht,
175*c83a76b0SSuyog Pawar                 WORD32 wd,
176*c83a76b0SSuyog Pawar                 UWORD8 bit_depth);
177*c83a76b0SSuyog Pawar typedef void ihevc_hbd_weighted_pred_chroma_uni_ft(WORD16 *pi2_src,
178*c83a76b0SSuyog Pawar                                                    UWORD16 *pu2_dst,
179*c83a76b0SSuyog Pawar                                                    WORD32 src_strd,
180*c83a76b0SSuyog Pawar                                                    WORD32 dst_strd,
181*c83a76b0SSuyog Pawar                                                    WORD32 wgt0_cb,
182*c83a76b0SSuyog Pawar                                                    WORD32 wgt0_cr,
183*c83a76b0SSuyog Pawar                                                    WORD32 off0_cb,
184*c83a76b0SSuyog Pawar                                                    WORD32 off0_cr,
185*c83a76b0SSuyog Pawar                                                    WORD32 shift,
186*c83a76b0SSuyog Pawar                                                    WORD32 lvl_shift,
187*c83a76b0SSuyog Pawar                                                    WORD32 ht,
188*c83a76b0SSuyog Pawar                                                    WORD32 wd,
189*c83a76b0SSuyog Pawar                                                    UWORD8 bit_depth);
190*c83a76b0SSuyog Pawar 
191*c83a76b0SSuyog Pawar typedef void ihevc_hbd_weighted_pred_chroma_bi_ft(WORD16 *pi2_src1,
192*c83a76b0SSuyog Pawar                                                   WORD16 *pi2_src2,
193*c83a76b0SSuyog Pawar                                                   UWORD16 *pu2_dst,
194*c83a76b0SSuyog Pawar                                                   WORD32 src_strd1,
195*c83a76b0SSuyog Pawar                                                   WORD32 src_strd2,
196*c83a76b0SSuyog Pawar                                                   WORD32 dst_strd,
197*c83a76b0SSuyog Pawar                                                   WORD32 wgt0_cb,
198*c83a76b0SSuyog Pawar                                                   WORD32 wgt0_cr,
199*c83a76b0SSuyog Pawar                                                   WORD32 off0_cb,
200*c83a76b0SSuyog Pawar                                                   WORD32 off0_cr,
201*c83a76b0SSuyog Pawar                                                   WORD32 wgt1_cb,
202*c83a76b0SSuyog Pawar                                                   WORD32 wgt1_cr,
203*c83a76b0SSuyog Pawar                                                   WORD32 off1_cb,
204*c83a76b0SSuyog Pawar                                                   WORD32 off1_cr,
205*c83a76b0SSuyog Pawar                                                   WORD32 shift,
206*c83a76b0SSuyog Pawar                                                   WORD32 lvl_shift1,
207*c83a76b0SSuyog Pawar                                                   WORD32 lvl_shift2,
208*c83a76b0SSuyog Pawar                                                   WORD32 ht,
209*c83a76b0SSuyog Pawar                                                   WORD32 wd,
210*c83a76b0SSuyog Pawar                                                   UWORD8 bit_depth);
211*c83a76b0SSuyog Pawar 
212*c83a76b0SSuyog Pawar typedef void ihevc_hbd_weighted_pred_chroma_bi_default_ft(WORD16 *pi2_src1,
213*c83a76b0SSuyog Pawar                                                           WORD16 *pi2_src2,
214*c83a76b0SSuyog Pawar                                                           UWORD16 *pu2_dst,
215*c83a76b0SSuyog Pawar                                                           WORD32 src_strd1,
216*c83a76b0SSuyog Pawar                                                           WORD32 src_strd2,
217*c83a76b0SSuyog Pawar                                                           WORD32 dst_strd,
218*c83a76b0SSuyog Pawar                                                           WORD32 lvl_shift1,
219*c83a76b0SSuyog Pawar                                                           WORD32 lvl_shift2,
220*c83a76b0SSuyog Pawar                                                           WORD32 ht,
221*c83a76b0SSuyog Pawar                                                           WORD32 wd,
222*c83a76b0SSuyog Pawar                                                           UWORD8 bit_depth);
223*c83a76b0SSuyog Pawar /* C function declarations */
224*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_luma_copy;
225*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_luma_horz;
226*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_luma_vert;
227*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_luma_copy_w16out;
228*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_luma_horz_w16out;
229*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_luma_vert_w16out;
230*c83a76b0SSuyog Pawar ihevc_inter_pred_w16inp_ft ihevc_inter_pred_luma_vert_w16inp;
231*c83a76b0SSuyog Pawar ihevc_inter_pred_w16inp_w16out_ft ihevc_inter_pred_luma_vert_w16inp_w16out;
232*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_chroma_copy;
233*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_chroma_horz;
234*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_chroma_vert;
235*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_chroma_copy_w16out;
236*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_chroma_horz_w16out;
237*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_chroma_vert_w16out;
238*c83a76b0SSuyog Pawar ihevc_inter_pred_w16inp_ft ihevc_inter_pred_chroma_vert_w16inp;
239*c83a76b0SSuyog Pawar ihevc_inter_pred_w16inp_w16out_ft ihevc_inter_pred_chroma_vert_w16inp_w16out;
240*c83a76b0SSuyog Pawar 
241*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_ft ihevc_hbd_inter_pred_luma_copy;
242*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_ft ihevc_hbd_inter_pred_luma_horz;
243*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_ft ihevc_hbd_inter_pred_luma_vert;
244*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_w16out_ft ihevc_hbd_inter_pred_luma_copy_w16out;
245*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_w16out_ft ihevc_hbd_inter_pred_luma_horz_w16out;
246*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_w16out_ft ihevc_hbd_inter_pred_luma_vert_w16out;
247*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_w16inp_ft ihevc_hbd_inter_pred_luma_vert_w16inp;
248*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_w16inp_w16out_ft ihevc_hbd_inter_pred_luma_vert_w16inp_w16out;
249*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_ft ihevc_hbd_inter_pred_chroma_copy;
250*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_ft ihevc_hbd_inter_pred_chroma_horz;
251*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_ft ihevc_hbd_inter_pred_chroma_vert;
252*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_w16out_ft ihevc_hbd_inter_pred_chroma_copy_w16out;
253*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_w16out_ft ihevc_hbd_inter_pred_chroma_horz_w16out;
254*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_w16out_ft ihevc_hbd_inter_pred_chroma_vert_w16out;
255*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_w16inp_ft ihevc_hbd_inter_pred_chroma_vert_w16inp;
256*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_w16inp_w16out_ft ihevc_hbd_inter_pred_chroma_vert_w16inp_w16out;
257*c83a76b0SSuyog Pawar ihevc_hbd_weighted_pred_uni_ft ihevc_hbd_weighted_pred_uni;
258*c83a76b0SSuyog Pawar ihevc_hbd_weighted_pred_bi_ft ihevc_hbd_weighted_pred_bi;
259*c83a76b0SSuyog Pawar ihevc_hbd_weighted_pred_bi_default_ft ihevc_hbd_weighted_pred_bi_default;
260*c83a76b0SSuyog Pawar ihevc_hbd_weighted_pred_chroma_uni_ft ihevc_hbd_weighted_pred_chroma_uni;
261*c83a76b0SSuyog Pawar ihevc_hbd_weighted_pred_chroma_bi_ft ihevc_hbd_weighted_pred_chroma_bi;
262*c83a76b0SSuyog Pawar ihevc_hbd_weighted_pred_chroma_bi_default_ft ihevc_hbd_weighted_pred_chroma_bi_default;
263*c83a76b0SSuyog Pawar 
264*c83a76b0SSuyog Pawar /* A9 Q function declarations */
265*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_luma_copy_a9q;
266*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_luma_horz_a9q;
267*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_luma_vert_a9q;
268*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_luma_copy_w16out_a9q;
269*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_luma_horz_w16out_a9q;
270*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_luma_vert_w16out_a9q;
271*c83a76b0SSuyog Pawar ihevc_inter_pred_w16inp_ft ihevc_inter_pred_luma_vert_w16inp_a9q;
272*c83a76b0SSuyog Pawar ihevc_inter_pred_w16inp_w16out_ft ihevc_inter_pred_luma_vert_w16inp_w16out_a9q;
273*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_chroma_copy_a9q;
274*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_chroma_horz_a9q;
275*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_chroma_vert_a9q;
276*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_chroma_copy_w16out_a9q;
277*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_chroma_horz_w16out_a9q;
278*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_chroma_vert_w16out_a9q;
279*c83a76b0SSuyog Pawar ihevc_inter_pred_w16inp_ft ihevc_inter_pred_chroma_vert_w16inp_a9q;
280*c83a76b0SSuyog Pawar ihevc_inter_pred_w16inp_w16out_ft ihevc_inter_pred_chroma_vert_w16inp_w16out_a9q;
281*c83a76b0SSuyog Pawar 
282*c83a76b0SSuyog Pawar /* A9 A function declarations */
283*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_luma_copy_a9a;
284*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_luma_horz_a9a;
285*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_luma_vert_a9a;
286*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_luma_copy_w16out_a9a;
287*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_luma_horz_w16out_a9a;
288*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_luma_vert_w16out_a9a;
289*c83a76b0SSuyog Pawar ihevc_inter_pred_w16inp_ft ihevc_inter_pred_luma_vert_w16inp_a9a;
290*c83a76b0SSuyog Pawar ihevc_inter_pred_w16inp_w16out_ft ihevc_inter_pred_luma_vert_w16inp_w16out_a9a;
291*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_chroma_copy_a9a;
292*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_chroma_horz_a9a;
293*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_chroma_vert_a9a;
294*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_chroma_copy_w16out_a9a;
295*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_chroma_horz_w16out_a9a;
296*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_chroma_vert_w16out_a9a;
297*c83a76b0SSuyog Pawar ihevc_inter_pred_w16inp_ft ihevc_inter_pred_chroma_vert_w16inp_a9a;
298*c83a76b0SSuyog Pawar ihevc_inter_pred_w16inp_w16out_ft ihevc_inter_pred_chroma_vert_w16inp_w16out_a9a;
299*c83a76b0SSuyog Pawar 
300*c83a76b0SSuyog Pawar /* NEONINTR function declarations */
301*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_luma_copy_neonintr;
302*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_luma_horz_neonintr;
303*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_luma_vert_neonintr;
304*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_luma_copy_w16out_neonintr;
305*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_luma_horz_w16out_neonintr;
306*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_luma_vert_w16out_neonintr;
307*c83a76b0SSuyog Pawar ihevc_inter_pred_w16inp_ft ihevc_inter_pred_luma_vert_w16inp_neonintr;
308*c83a76b0SSuyog Pawar ihevc_inter_pred_w16inp_w16out_ft ihevc_inter_pred_luma_vert_w16inp_w16out_neonintr;
309*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_chroma_copy_neonintr;
310*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_chroma_horz_neonintr;
311*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_chroma_vert_neonintr;
312*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_chroma_copy_w16out_neonintr;
313*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_chroma_horz_w16out_neonintr;
314*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_chroma_vert_w16out_neonintr;
315*c83a76b0SSuyog Pawar ihevc_inter_pred_w16inp_ft ihevc_inter_pred_chroma_vert_w16inp_neonintr;
316*c83a76b0SSuyog Pawar ihevc_inter_pred_w16inp_w16out_ft ihevc_inter_pred_chroma_vert_w16inp_w16out_neonintr;
317*c83a76b0SSuyog Pawar 
318*c83a76b0SSuyog Pawar /* SSSE31 function declarations */
319*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_luma_copy_ssse3;
320*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_luma_horz_ssse3;
321*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_luma_vert_ssse3;
322*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_luma_copy_w16out_ssse3;
323*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_luma_horz_w16out_ssse3;
324*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_luma_vert_w16out_ssse3;
325*c83a76b0SSuyog Pawar ihevc_inter_pred_w16inp_ft ihevc_inter_pred_luma_vert_w16inp_ssse3;
326*c83a76b0SSuyog Pawar ihevc_inter_pred_w16inp_w16out_ft ihevc_inter_pred_luma_vert_w16inp_w16out_ssse3;
327*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_chroma_copy_ssse3;
328*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_chroma_horz_ssse3;
329*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_chroma_vert_ssse3;
330*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_chroma_copy_w16out_ssse3;
331*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_chroma_horz_w16out_ssse3;
332*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_chroma_vert_w16out_ssse3;
333*c83a76b0SSuyog Pawar ihevc_inter_pred_w16inp_ft ihevc_inter_pred_chroma_vert_w16inp_ssse3;
334*c83a76b0SSuyog Pawar ihevc_inter_pred_w16inp_w16out_ft ihevc_inter_pred_chroma_vert_w16inp_w16out_ssse3;
335*c83a76b0SSuyog Pawar 
336*c83a76b0SSuyog Pawar /* SSE42 function declarations */
337*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_luma_copy_w16out_sse42;
338*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_chroma_copy_sse42;
339*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_chroma_copy_w16out_sse42;
340*c83a76b0SSuyog Pawar 
341*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_ft ihevc_hbd_inter_pred_luma_copy_sse42;
342*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_ft ihevc_hbd_inter_pred_luma_horz_sse42;
343*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_ft ihevc_hbd_inter_pred_luma_vert_sse42;
344*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_w16out_ft ihevc_hbd_inter_pred_luma_copy_w16out_sse42;
345*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_w16out_ft ihevc_hbd_inter_pred_luma_horz_w16out_sse42;
346*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_w16out_ft ihevc_hbd_inter_pred_luma_vert_w16out_sse42;
347*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_w16inp_ft ihevc_hbd_inter_pred_luma_vert_w16inp_sse42;
348*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_w16inp_w16out_ft ihevc_hbd_inter_pred_luma_vert_w16inp_w16out_sse42;
349*c83a76b0SSuyog Pawar 
350*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_ft ihevc_hbd_inter_pred_chroma_copy_sse42;
351*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_ft ihevc_hbd_inter_pred_chroma_horz_sse42;
352*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_ft ihevc_hbd_inter_pred_chroma_vert_sse42;
353*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_w16out_ft ihevc_hbd_inter_pred_chroma_copy_w16out_sse42;
354*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_w16out_ft ihevc_hbd_inter_pred_chroma_horz_w16out_sse42;
355*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_w16out_ft ihevc_hbd_inter_pred_chroma_vert_w16out_sse42;
356*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_w16inp_ft ihevc_hbd_inter_pred_chroma_vert_w16inp_sse42;
357*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_w16inp_w16out_ft ihevc_hbd_inter_pred_chroma_vert_w16inp_w16out_sse42;
358*c83a76b0SSuyog Pawar 
359*c83a76b0SSuyog Pawar ihevc_hbd_weighted_pred_uni_ft ihevc_hbd_weighted_pred_uni_sse42;
360*c83a76b0SSuyog Pawar ihevc_hbd_weighted_pred_bi_ft ihevc_hbd_weighted_pred_bi_sse42;
361*c83a76b0SSuyog Pawar ihevc_hbd_weighted_pred_bi_default_ft ihevc_hbd_weighted_pred_bi_default_sse42;
362*c83a76b0SSuyog Pawar ihevc_hbd_weighted_pred_chroma_uni_ft ihevc_hbd_weighted_pred_chroma_uni_sse42;
363*c83a76b0SSuyog Pawar ihevc_hbd_weighted_pred_chroma_bi_ft ihevc_hbd_weighted_pred_chroma_bi_sse42;
364*c83a76b0SSuyog Pawar ihevc_hbd_weighted_pred_chroma_bi_default_ft ihevc_hbd_weighted_pred_chroma_bi_default_sse42;
365*c83a76b0SSuyog Pawar 
366*c83a76b0SSuyog Pawar #ifndef DISABLE_AVX2
367*c83a76b0SSuyog Pawar /* AVX2 function declarations */
368*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_luma_copy_avx2;
369*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_luma_horz_avx2;
370*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_luma_vert_avx2;
371*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_luma_copy_w16out_avx2;
372*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_luma_horz_w16out_avx2;
373*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_luma_vert_w16out_avx2;
374*c83a76b0SSuyog Pawar ihevc_inter_pred_w16inp_ft ihevc_inter_pred_luma_vert_w16inp_avx2;
375*c83a76b0SSuyog Pawar ihevc_inter_pred_w16inp_w16out_ft ihevc_inter_pred_luma_vert_w16inp_w16out_avx2;
376*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_chroma_copy_avx2;
377*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_chroma_horz_avx2;
378*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_chroma_vert_avx2;
379*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_chroma_copy_w16out_avx2;
380*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_chroma_horz_w16out_avx2;
381*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_chroma_vert_w16out_avx2;
382*c83a76b0SSuyog Pawar ihevc_inter_pred_w16inp_ft ihevc_inter_pred_chroma_vert_w16inp_avx2;
383*c83a76b0SSuyog Pawar ihevc_inter_pred_w16inp_w16out_ft ihevc_inter_pred_chroma_vert_w16inp_w16out_avx2;
384*c83a76b0SSuyog Pawar 
385*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_ft ihevc_hbd_inter_pred_luma_copy_avx2;
386*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_ft ihevc_hbd_inter_pred_luma_horz_avx2;
387*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_ft ihevc_hbd_inter_pred_luma_vert_avx2;
388*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_w16out_ft ihevc_hbd_inter_pred_luma_copy_w16out_avx2;
389*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_w16out_ft ihevc_hbd_inter_pred_luma_horz_w16out_avx2;
390*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_w16out_ft ihevc_hbd_inter_pred_luma_vert_w16out_avx2;
391*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_w16inp_ft ihevc_hbd_inter_pred_luma_vert_w16inp_avx2;
392*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_w16inp_w16out_ft ihevc_hbd_inter_pred_luma_vert_w16inp_w16out_avx2;
393*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_ft ihevc_hbd_inter_pred_chroma_copy_avx2;
394*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_ft ihevc_hbd_inter_pred_chroma_horz_avx2;
395*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_ft ihevc_hbd_inter_pred_chroma_vert_avx2;
396*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_w16out_ft ihevc_hbd_inter_pred_chroma_copy_w16out_avx2;
397*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_w16out_ft ihevc_hbd_inter_pred_chroma_horz_w16out_avx2;
398*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_w16out_ft ihevc_hbd_inter_pred_chroma_vert_w16out_avx2;
399*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_w16inp_ft ihevc_hbd_inter_pred_chroma_vert_w16inp_avx2;
400*c83a76b0SSuyog Pawar ihevc_hbd_inter_pred_w16inp_w16out_ft ihevc_hbd_inter_pred_chroma_vert_w16inp_w16out_avx2;
401*c83a76b0SSuyog Pawar #endif
402*c83a76b0SSuyog Pawar 
403*c83a76b0SSuyog Pawar /* armv8 function declarations */
404*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_luma_copy_av8;
405*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_luma_horz_av8;
406*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_luma_vert_av8;
407*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_luma_copy_w16out_av8;
408*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_luma_horz_w16out_av8;
409*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_luma_vert_w16out_av8;
410*c83a76b0SSuyog Pawar ihevc_inter_pred_w16inp_ft ihevc_inter_pred_luma_vert_w16inp_av8;
411*c83a76b0SSuyog Pawar ihevc_inter_pred_w16inp_w16out_ft ihevc_inter_pred_luma_vert_w16inp_w16out_av8;
412*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_chroma_copy_av8;
413*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_chroma_horz_av8;
414*c83a76b0SSuyog Pawar ihevc_inter_pred_ft ihevc_inter_pred_chroma_vert_av8;
415*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_chroma_copy_w16out_av8;
416*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_chroma_horz_w16out_av8;
417*c83a76b0SSuyog Pawar ihevc_inter_pred_w16out_ft ihevc_inter_pred_chroma_vert_w16out_av8;
418*c83a76b0SSuyog Pawar ihevc_inter_pred_w16inp_ft ihevc_inter_pred_chroma_vert_w16inp_av8;
419*c83a76b0SSuyog Pawar ihevc_inter_pred_w16inp_w16out_ft ihevc_inter_pred_chroma_vert_w16inp_w16out_av8;
420*c83a76b0SSuyog Pawar #endif /*_IHEVC_INTER_PRED_H_*/
421