xref: /aosp_15_r20/external/libavc/common/ih264_inter_pred_filters.h (revision 495ae853bb871d1e5a258cb02c2cc13cde8ddb9a)
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 * @remarks
33 *  none
34 *
35 *******************************************************************************
36 */
37 
38 #ifndef _IH264_INTER_PRED_FILTERS_H_
39 #define _IH264_INTER_PRED_FILTERS_H_
40 
41 /*****************************************************************************/
42 /* Constant Data variables                                                   */
43 /*****************************************************************************/
44 
45 extern const WORD32 ih264_g_six_tap[3];/* coefficients for 6 tap filtering*/
46 
47 /*****************************************************************************/
48 /* Extern Function Declarations                                              */
49 /*****************************************************************************/
50 
51 typedef void ih264_inter_pred_luma_ft(UWORD8 *pu1_src,
52                                       UWORD8 *pu1_dst,
53                                       WORD32 src_strd,
54                                       WORD32 dst_strd,
55                                       WORD32 ht,
56                                       WORD32 wd,
57                                       UWORD8* pu1_tmp,
58                                       WORD32 dydx);
59 
60 typedef void ih264_interleave_copy_ft(UWORD8 *pu1_src,
61                                       UWORD8 *pu1_dst,
62                                       WORD32 src_strd,
63                                       WORD32 dst_strd,
64                                       WORD32 ht,
65                                       WORD32 wd);
66 
67 typedef void ih264_inter_pred_luma_bilinear_ft(UWORD8 *pu1_src1,
68                                                UWORD8 *pu1_src2,
69                                                UWORD8 *pu1_dst,
70                                                WORD32 src_strd1,
71                                                WORD32 src_strd2,
72                                                WORD32 dst_strd,
73                                                WORD32 height,
74                                                WORD32 width);
75 
76 typedef void ih264_inter_pred_chroma_ft(UWORD8 *pu1_src,
77                                         UWORD8 *pu1_dst,
78                                         WORD32 src_strd,
79                                         WORD32 dst_strd,
80                                         WORD32 dx,
81                                         WORD32 dy,
82                                         WORD32 ht,
83                                         WORD32 wd);
84 
85 /* C Declarations */
86 ih264_inter_pred_luma_ft ih264_inter_pred_luma_copy;
87 ih264_interleave_copy_ft ih264_interleave_copy;
88 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz;
89 ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert;
90 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_hpel;
91 ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_qpel;
92 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel;
93 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_qpel;
94 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_hpel;
95 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_qpel;
96 ih264_inter_pred_luma_bilinear_ft ih264_inter_pred_luma_bilinear;
97 ih264_inter_pred_chroma_ft ih264_inter_pred_chroma;
98 
99 /* A9 NEON Declarations */
100 ih264_inter_pred_luma_ft ih264_inter_pred_luma_copy_a9q;
101 ih264_interleave_copy_ft ih264_interleave_copy_a9;
102 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_a9q;
103 ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_a9q;
104 ih264_inter_pred_luma_bilinear_ft ih264_inter_pred_luma_bilinear_a9q;
105 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_hpel_a9q;
106 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_a9q;
107 ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_qpel_a9q;
108 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_qpel_a9q;
109 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_hpel_a9q;
110 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_qpel_a9q;
111 ih264_inter_pred_chroma_ft ih264_inter_pred_chroma_a9q;
112 
113 /* AV8 NEON Declarations */
114 ih264_inter_pred_luma_ft ih264_inter_pred_luma_copy_av8;
115 ih264_interleave_copy_ft ih264_interleave_copy_av8;
116 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_av8;
117 ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_av8;
118 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_hpel_av8;
119 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_av8;
120 ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_qpel_av8;
121 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_qpel_av8;
122 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_hpel_av8;
123 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_qpel_av8;
124 ih264_inter_pred_chroma_ft ih264_inter_pred_chroma_av8;
125 ih264_inter_pred_chroma_ft ih264_inter_pred_chroma_dx_zero_av8;
126 ih264_inter_pred_chroma_ft ih264_inter_pred_chroma_dy_zero_av8;
127 
128 /* SSSE3 Intrinsic Declarations */
129 ih264_inter_pred_luma_ft ih264_inter_pred_luma_copy_ssse3;
130 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_ssse3;
131 ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_ssse3;
132 ih264_inter_pred_luma_bilinear_ft ih264_inter_pred_luma_bilinear_ssse3;
133 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_hpel_ssse3;
134 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_ssse3;
135 ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_qpel_ssse3;
136 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_qpel_ssse3;
137 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_hpel_ssse3;
138 ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_qpel_ssse3;
139 ih264_inter_pred_chroma_ft ih264_inter_pred_chroma_ssse3;
140 
141 #endif /* _IH264_INTER_PRED_FILTERS_H_ */
142