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  * @file
23  *  ih264_deblk_edge_filters.h
24  *
25  * @brief
26  *  This file contains declarations of functions used for deblocking
27  *
28  * @author
29  *  Ittiam
30  *
31  * @remarks
32  *  None
33  *
34  *******************************************************************************
35  */
36 
37 #ifndef IH264_DEBLK_H_
38 #define IH264_DEBLK_H_
39 
40 /*****************************************************************************/
41 /* Extern Function Declarations                                              */
42 /*****************************************************************************/
43 
44 typedef void ih264_deblk_edge_bslt4_ft(UWORD8 *pu1_src,
45                                        WORD32 src_strd,
46                                        WORD32 alpha,
47                                        WORD32 beta,
48                                        UWORD32 u4_bs,
49                                        const UWORD8 *pu1_cliptab );
50 
51 typedef void ih264_deblk_edge_bs4_ft(UWORD8 *pu1_src,
52                                      WORD32 src_strd,
53                                      WORD32 alpha,
54                                      WORD32 beta );
55 
56 typedef void ih264_deblk_chroma_edge_bslt4_ft(UWORD8 *pu1_src,
57                                               WORD32 src_strd,
58                                               WORD32 alpha_cb,
59                                               WORD32 beta_cb,
60                                               WORD32 alpha_cr,
61                                               WORD32 beta_cr,
62                                               UWORD32 u4_bs,
63                                               const UWORD8 *pu1_cliptab_cb,
64                                               const UWORD8 *pu1_cliptab_cr);
65 
66 typedef void ih264_deblk_chroma_edge_bs4_ft(UWORD8 *pu1_src,
67                                             WORD32 src_strd,
68                                             WORD32 alpha_cb,
69                                             WORD32 beta_cb,
70                                             WORD32 alpha_cr,
71                                             WORD32 beta_cr);
72 
73 
74 
75 ih264_deblk_edge_bs4_ft ih264_deblk_luma_horz_bs4;
76 ih264_deblk_edge_bs4_ft ih264_deblk_luma_vert_bs4;
77 ih264_deblk_edge_bs4_ft ih264_deblk_luma_vert_bs4_mbaff;
78 
79 
80 ih264_deblk_edge_bs4_ft ih264_deblk_chroma_horz_bs4_bp;
81 ih264_deblk_edge_bs4_ft ih264_deblk_chroma_vert_bs4_bp;
82 ih264_deblk_edge_bs4_ft ih264_deblk_chroma_vert_bs4_mbaff_bp;
83 
84 
85 ih264_deblk_edge_bslt4_ft ih264_deblk_luma_horz_bslt4;
86 ih264_deblk_edge_bslt4_ft ih264_deblk_luma_vert_bslt4;
87 ih264_deblk_edge_bslt4_ft ih264_deblk_luma_vert_bslt4_mbaff;
88 
89 
90 ih264_deblk_edge_bslt4_ft ih264_deblk_chroma_horz_bslt4_bp;
91 ih264_deblk_edge_bslt4_ft ih264_deblk_chroma_vert_bslt4_bp;
92 ih264_deblk_edge_bslt4_ft ih264_deblk_chroma_vert_bslt4_mbaff_bp;
93 
94 ih264_deblk_chroma_edge_bs4_ft ih264_deblk_chroma_vert_bs4;
95 ih264_deblk_chroma_edge_bs4_ft ih264_deblk_chroma_horz_bs4;
96 ih264_deblk_chroma_edge_bs4_ft ih264_deblk_chroma_vert_bs4_mbaff;
97 ih264_deblk_chroma_edge_bs4_ft ih264_deblk_chroma_horz_bs4_mbaff;
98 
99 ih264_deblk_chroma_edge_bslt4_ft ih264_deblk_chroma_vert_bslt4;
100 ih264_deblk_chroma_edge_bslt4_ft ih264_deblk_chroma_horz_bslt4;
101 ih264_deblk_chroma_edge_bslt4_ft ih264_deblk_chroma_vert_bslt4_mbaff;
102 ih264_deblk_chroma_edge_bslt4_ft ih264_deblk_chroma_horz_bslt4_mbaff;
103 
104 
105 /*A9*/
106 ih264_deblk_edge_bs4_ft ih264_deblk_luma_horz_bs4_a9;
107 ih264_deblk_edge_bs4_ft ih264_deblk_luma_vert_bs4_a9;
108 ih264_deblk_edge_bs4_ft ih264_deblk_luma_vert_bs4_mbaff_a9;
109 
110 
111 ih264_deblk_edge_bs4_ft ih264_deblk_chroma_horz_bs4_bp_a9;
112 ih264_deblk_edge_bs4_ft ih264_deblk_chroma_vert_bs4_bp_a9;
113 ih264_deblk_edge_bs4_ft ih264_deblk_chroma_vert_bs4_mbaff_bp_a9;
114 
115 
116 ih264_deblk_edge_bslt4_ft ih264_deblk_luma_horz_bslt4_a9;
117 ih264_deblk_edge_bslt4_ft ih264_deblk_luma_vert_bslt4_a9;
118 ih264_deblk_edge_bslt4_ft ih264_deblk_luma_vert_bslt4_mbaff_a9;
119 
120 
121 ih264_deblk_edge_bslt4_ft ih264_deblk_chroma_horz_bslt4_bp_a9;
122 ih264_deblk_edge_bslt4_ft ih264_deblk_chroma_vert_bslt4_bp_a9;
123 ih264_deblk_edge_bslt4_ft ih264_deblk_chroma_vert_bslt4_mbaff_bp_a9;
124 
125 ih264_deblk_chroma_edge_bs4_ft ih264_deblk_chroma_vert_bs4_a9;
126 ih264_deblk_chroma_edge_bs4_ft ih264_deblk_chroma_horz_bs4_a9;
127 ih264_deblk_chroma_edge_bs4_ft ih264_deblk_chroma_vert_bs4_mbaff_a9;
128 ih264_deblk_chroma_edge_bs4_ft ih264_deblk_chroma_horz_bs4_mbaff_a9;
129 
130 ih264_deblk_chroma_edge_bslt4_ft ih264_deblk_chroma_vert_bslt4_a9;
131 ih264_deblk_chroma_edge_bslt4_ft ih264_deblk_chroma_horz_bslt4_a9;
132 ih264_deblk_chroma_edge_bslt4_ft ih264_deblk_chroma_vert_bslt4_mbaff_a9;
133 ih264_deblk_chroma_edge_bslt4_ft ih264_deblk_chroma_horz_bslt4_mbaff_a9;
134 
135 /*AV8*/
136 ih264_deblk_edge_bs4_ft ih264_deblk_luma_horz_bs4_av8;
137 ih264_deblk_edge_bs4_ft ih264_deblk_luma_vert_bs4_av8;
138 ih264_deblk_edge_bs4_ft ih264_deblk_luma_vert_bs4_mbaff_av8;
139 
140 
141 ih264_deblk_edge_bs4_ft ih264_deblk_chroma_horz_bs4_bp_av8;
142 ih264_deblk_edge_bs4_ft ih264_deblk_chroma_vert_bs4_bp_av8;
143 ih264_deblk_edge_bs4_ft ih264_deblk_chroma_vert_bs4_mbaff_bp_av8;
144 
145 
146 ih264_deblk_edge_bslt4_ft ih264_deblk_luma_horz_bslt4_av8;
147 ih264_deblk_edge_bslt4_ft ih264_deblk_luma_vert_bslt4_av8;
148 ih264_deblk_edge_bslt4_ft ih264_deblk_luma_vert_bslt4_mbaff_av8;
149 
150 
151 ih264_deblk_edge_bslt4_ft ih264_deblk_chroma_horz_bslt4_bp_av8;
152 ih264_deblk_edge_bslt4_ft ih264_deblk_chroma_vert_bslt4_bp_av8;
153 ih264_deblk_edge_bslt4_ft ih264_deblk_chroma_vert_bslt4_mbaff_bp_av8;
154 
155 ih264_deblk_chroma_edge_bs4_ft ih264_deblk_chroma_vert_bs4_av8;
156 ih264_deblk_chroma_edge_bs4_ft ih264_deblk_chroma_horz_bs4_av8;
157 ih264_deblk_chroma_edge_bs4_ft ih264_deblk_chroma_vert_bs4_mbaff_av8;
158 ih264_deblk_chroma_edge_bs4_ft ih264_deblk_chroma_horz_bs4_mbaff_av8;
159 
160 ih264_deblk_chroma_edge_bslt4_ft ih264_deblk_chroma_vert_bslt4_av8;
161 ih264_deblk_chroma_edge_bslt4_ft ih264_deblk_chroma_horz_bslt4_av8;
162 ih264_deblk_chroma_edge_bslt4_ft ih264_deblk_chroma_vert_bslt4_mbaff_av8;
163 ih264_deblk_chroma_edge_bslt4_ft ih264_deblk_chroma_horz_bslt4_mbaff_av8;
164 
165 /*SSE3*/
166 ih264_deblk_edge_bs4_ft ih264_deblk_luma_horz_bs4_ssse3;
167 ih264_deblk_edge_bs4_ft ih264_deblk_luma_vert_bs4_ssse3;
168 ih264_deblk_edge_bs4_ft ih264_deblk_luma_vert_bs4_mbaff_ssse3;
169 
170 
171 ih264_deblk_edge_bs4_ft ih264_deblk_chroma_horz_bs4_bp_ssse3;
172 ih264_deblk_edge_bs4_ft ih264_deblk_chroma_vert_bs4_bp_ssse3;
173 ih264_deblk_edge_bs4_ft ih264_deblk_chroma_vert_bs4_mbaff_bp_ssse3;
174 
175 
176 ih264_deblk_edge_bslt4_ft ih264_deblk_luma_horz_bslt4_ssse3;
177 ih264_deblk_edge_bslt4_ft ih264_deblk_luma_vert_bslt4_ssse3;
178 ih264_deblk_edge_bslt4_ft ih264_deblk_luma_vert_bslt4_mbaff_ssse3;
179 
180 
181 ih264_deblk_edge_bslt4_ft ih264_deblk_chroma_horz_bslt4_bp_ssse3;
182 ih264_deblk_edge_bslt4_ft ih264_deblk_chroma_vert_bslt4_bp_ssse3;
183 ih264_deblk_edge_bslt4_ft ih264_deblk_chroma_vert_bslt4_mbaff_bp_ssse3;
184 
185 ih264_deblk_chroma_edge_bs4_ft ih264_deblk_chroma_vert_bs4_ssse3;
186 ih264_deblk_chroma_edge_bs4_ft ih264_deblk_chroma_horz_bs4_ssse3;
187 ih264_deblk_chroma_edge_bs4_ft ih264_deblk_chroma_vert_bs4_mbaff_ssse3;
188 ih264_deblk_chroma_edge_bs4_ft ih264_deblk_chroma_horz_bs4_mbaff_ssse3;
189 
190 ih264_deblk_chroma_edge_bslt4_ft ih264_deblk_chroma_vert_bslt4_ssse3;
191 ih264_deblk_chroma_edge_bslt4_ft ih264_deblk_chroma_horz_bslt4_ssse3;
192 ih264_deblk_chroma_edge_bslt4_ft ih264_deblk_chroma_vert_bslt4_mbaff_ssse3;
193 ih264_deblk_chroma_edge_bslt4_ft ih264_deblk_chroma_horz_bslt4_mbaff_ssse3;
194 
195 #endif /* IH264_DEBLK_H_ */
196