1 /****************************************************************************** 2 * 3 * Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore 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 /** 19 ******************************************************************************* 20 * @file 21 * ihevc_intra_pred.h 22 * 23 * @brief 24 * Declarations for the fucntions defined in ihevc_intra_pred_filters 25 * 26 * @author 27 * Mamatha 28 * 29 * 30 * @remarks 31 * None 32 * 33 ******************************************************************************* 34 */ 35 36 #ifndef IHEVC_CHROMA_INTRA_PRED_H_ 37 #define IHEVC_CHROMA_INTRA_PRED_H_ 38 39 /*****************************************************************************/ 40 /* Function Declarations */ 41 /*****************************************************************************/ 42 typedef void ihevc_intra_pred_chroma_planar_ft( 43 UWORD8 *pu1_ref, 44 WORD32 src_strd, 45 UWORD8 *pu1_dst, 46 WORD32 dst_strd, 47 WORD32 nt, 48 WORD32 mode); 49 50 typedef void ihevc_intra_pred_chroma_dc_ft( 51 UWORD8 *pu1_ref, 52 WORD32 src_strd, 53 UWORD8 *pu1_dst, 54 WORD32 dst_strd, 55 WORD32 nt, 56 WORD32 mode); 57 58 typedef void ihevc_intra_pred_chroma_horz_ft( 59 UWORD8 *pu1_ref, 60 WORD32 src_strd, 61 UWORD8 *pu1_dst, 62 WORD32 dst_strd, 63 WORD32 nt, 64 WORD32 mode); 65 66 typedef void ihevc_intra_pred_chroma_ver_ft( 67 UWORD8 *pu1_ref, 68 WORD32 src_strd, 69 UWORD8 *pu1_dst, 70 WORD32 dst_strd, 71 WORD32 nt, 72 WORD32 mode); 73 74 typedef void ihevc_intra_pred_chroma_mode2_ft( 75 UWORD8 *pu1_ref, 76 WORD32 src_strd, 77 UWORD8 *pu1_dst, 78 WORD32 dst_strd, 79 WORD32 nt, 80 WORD32 mode); 81 82 typedef void ihevc_intra_pred_chroma_mode_18_34_ft( 83 UWORD8 *pu1_ref, 84 WORD32 src_strd, 85 UWORD8 *pu1_dst, 86 WORD32 dst_strd, 87 WORD32 nt, 88 WORD32 mode); 89 90 typedef void ihevc_intra_pred_chroma_mode_3_to_9_ft( 91 UWORD8 *pu1_ref, 92 WORD32 src_strd, 93 UWORD8 *pu1_dst, 94 WORD32 dst_strd, 95 WORD32 nt, 96 WORD32 mode); 97 98 typedef void ihevc_intra_pred_chroma_mode_11_to_17_ft( 99 UWORD8 *pu1_ref, 100 WORD32 src_strd, 101 UWORD8 *pu1_dst, 102 WORD32 dst_strd, 103 WORD32 nt, 104 WORD32 mode); 105 106 typedef void ihevc_intra_pred_chroma_mode_19_to_25_ft( 107 UWORD8 *pu1_ref, 108 WORD32 src_strd, 109 UWORD8 *pu1_dst, 110 WORD32 dst_strd, 111 WORD32 nt, 112 WORD32 mode); 113 114 typedef void ihevc_intra_pred_chroma_mode_27_to_33_ft( 115 UWORD8 *pu1_ref, 116 WORD32 src_strd, 117 UWORD8 *pu1_dst, 118 WORD32 dst_strd, 119 WORD32 nt, 120 WORD32 mode); 121 122 typedef void ihevc_intra_pred_chroma_ref_substitution_ft(UWORD8 *pu1_top_left, 123 UWORD8 *pu1_top, 124 UWORD8 *pu1_left, 125 WORD32 src_strd, 126 WORD32 nt, 127 WORD32 nbr_flags, 128 UWORD8 *pu1_dst, 129 WORD32 dst_strd); 130 131 typedef void ihevc_hbd_intra_pred_chroma_planar_ft( 132 UWORD16 *pu2_ref, 133 WORD32 src_strd, 134 UWORD16 *pu2_dst, 135 WORD32 dst_strd, 136 WORD32 nt, 137 WORD32 mode); 138 139 140 typedef void ihevc_hbd_intra_pred_chroma_dc_ft( 141 UWORD16 *pu2_ref, 142 WORD32 src_strd, 143 UWORD16 *pu2_dst, 144 WORD32 dst_strd, 145 WORD32 nt, 146 WORD32 mode); 147 148 149 typedef void ihevc_hbd_intra_pred_chroma_horz_ft( 150 UWORD16 *pu2_ref, 151 WORD32 src_strd, 152 UWORD16 *pu2_dst, 153 WORD32 dst_strd, 154 WORD32 nt, 155 WORD32 mode); 156 157 typedef void ihevc_hbd_intra_pred_chroma_ver_ft( 158 UWORD16 *pu2_ref, 159 WORD32 src_strd, 160 UWORD16 *pu2_dst, 161 WORD32 dst_strd, 162 WORD32 nt, 163 WORD32 mode); 164 165 166 typedef void ihevc_hbd_intra_pred_chroma_mode2_ft( 167 UWORD16 *pu2_ref, 168 WORD32 src_strd, 169 UWORD16 *pu2_dst, 170 WORD32 dst_strd, 171 WORD32 nt, 172 WORD32 mode); 173 174 175 176 typedef void ihevc_hbd_intra_pred_chroma_mode_18_34_ft( 177 UWORD16 *pu2_ref, 178 WORD32 src_strd, 179 UWORD16 *pu2_dst, 180 WORD32 dst_strd, 181 WORD32 nt, 182 WORD32 mode); 183 184 typedef void ihevc_hbd_intra_pred_chroma_mode_3_to_9_ft( 185 UWORD16 *pu2_ref, 186 WORD32 src_strd, 187 UWORD16 *pu2_dst, 188 WORD32 dst_strd, 189 WORD32 nt, 190 WORD32 mode); 191 192 193 typedef void ihevc_hbd_intra_pred_chroma_mode_11_to_17_ft( 194 UWORD16 *pu2_ref, 195 WORD32 src_strd, 196 UWORD16 *pu2_dst, 197 WORD32 dst_strd, 198 WORD32 nt, 199 WORD32 mode); 200 201 202 203 typedef void ihevc_hbd_intra_pred_chroma_mode_19_to_25_ft( 204 UWORD16 *pu2_ref, 205 WORD32 src_strd, 206 UWORD16 *pu2_dst, 207 WORD32 dst_strd, 208 WORD32 nt, 209 WORD32 mode); 210 211 212 typedef void ihevc_hbd_intra_pred_chroma_mode_27_to_33_ft( 213 UWORD16 *pu2_ref, 214 WORD32 src_strd, 215 UWORD16 *pu2_dst, 216 WORD32 dst_strd, 217 WORD32 nt, 218 WORD32 mode); 219 220 221 typedef void ihevc_hbd_intra_pred_chroma_ref_substitution_ft(UWORD16 *pu2_top_left, 222 UWORD16 *pu2_top, 223 UWORD16 *pu2_left, 224 WORD32 src_strd, 225 WORD32 nt, 226 WORD32 nbr_flags, 227 UWORD16 *pu2_dst, 228 WORD32 dst_strd, 229 UWORD8 bit_depth); 230 231 /* C function declarations */ 232 ihevc_intra_pred_chroma_planar_ft ihevc_intra_pred_chroma_planar; 233 ihevc_intra_pred_chroma_dc_ft ihevc_intra_pred_chroma_dc; 234 ihevc_intra_pred_chroma_horz_ft ihevc_intra_pred_chroma_horz; 235 ihevc_intra_pred_chroma_ver_ft ihevc_intra_pred_chroma_ver; 236 ihevc_intra_pred_chroma_mode2_ft ihevc_intra_pred_chroma_mode2; 237 ihevc_intra_pred_chroma_mode_18_34_ft ihevc_intra_pred_chroma_mode_18_34; 238 ihevc_intra_pred_chroma_mode_3_to_9_ft ihevc_intra_pred_chroma_mode_3_to_9; 239 ihevc_intra_pred_chroma_mode_11_to_17_ft ihevc_intra_pred_chroma_mode_11_to_17; 240 ihevc_intra_pred_chroma_mode_19_to_25_ft ihevc_intra_pred_chroma_mode_19_to_25; 241 ihevc_intra_pred_chroma_mode_27_to_33_ft ihevc_intra_pred_chroma_mode_27_to_33; 242 ihevc_intra_pred_chroma_ref_substitution_ft ihevc_intra_pred_chroma_ref_substitution; 243 244 ihevc_hbd_intra_pred_chroma_planar_ft ihevc_hbd_intra_pred_chroma_planar; 245 ihevc_hbd_intra_pred_chroma_dc_ft ihevc_hbd_intra_pred_chroma_dc; 246 ihevc_hbd_intra_pred_chroma_horz_ft ihevc_hbd_intra_pred_chroma_horz; 247 ihevc_hbd_intra_pred_chroma_ver_ft ihevc_hbd_intra_pred_chroma_ver; 248 ihevc_hbd_intra_pred_chroma_mode2_ft ihevc_hbd_intra_pred_chroma_mode2; 249 ihevc_hbd_intra_pred_chroma_mode_18_34_ft ihevc_hbd_intra_pred_chroma_mode_18_34; 250 ihevc_hbd_intra_pred_chroma_mode_3_to_9_ft ihevc_hbd_intra_pred_chroma_mode_3_to_9; 251 ihevc_hbd_intra_pred_chroma_mode_11_to_17_ft ihevc_hbd_intra_pred_chroma_mode_11_to_17; 252 ihevc_hbd_intra_pred_chroma_mode_19_to_25_ft ihevc_hbd_intra_pred_chroma_mode_19_to_25; 253 ihevc_hbd_intra_pred_chroma_mode_27_to_33_ft ihevc_hbd_intra_pred_chroma_mode_27_to_33; 254 ihevc_hbd_intra_pred_chroma_ref_substitution_ft ihevc_hbd_intra_pred_chroma_ref_substitution; 255 256 /* C function declarations */ 257 ihevc_intra_pred_chroma_planar_ft ihevc_intra_pred_chroma_planar; 258 ihevc_intra_pred_chroma_dc_ft ihevc_intra_pred_chroma_dc; 259 ihevc_intra_pred_chroma_horz_ft ihevc_intra_pred_chroma_horz; 260 ihevc_intra_pred_chroma_ver_ft ihevc_intra_pred_chroma_ver; 261 ihevc_intra_pred_chroma_mode2_ft ihevc_intra_pred_chroma_mode2; 262 ihevc_intra_pred_chroma_mode_18_34_ft ihevc_intra_pred_chroma_mode_18_34; 263 ihevc_intra_pred_chroma_mode_3_to_9_ft ihevc_intra_pred_chroma_mode_3_to_9; 264 ihevc_intra_pred_chroma_mode_11_to_17_ft ihevc_intra_pred_chroma_mode_11_to_17; 265 ihevc_intra_pred_chroma_mode_19_to_25_ft ihevc_intra_pred_chroma_mode_19_to_25; 266 ihevc_intra_pred_chroma_mode_27_to_33_ft ihevc_intra_pred_chroma_mode_27_to_33; 267 ihevc_intra_pred_chroma_ref_substitution_ft ihevc_intra_pred_chroma_ref_substitution; 268 269 /* A9Q function declarations */ 270 ihevc_intra_pred_chroma_planar_ft ihevc_intra_pred_chroma_planar_a9q; 271 ihevc_intra_pred_chroma_dc_ft ihevc_intra_pred_chroma_dc_a9q; 272 ihevc_intra_pred_chroma_horz_ft ihevc_intra_pred_chroma_horz_a9q; 273 ihevc_intra_pred_chroma_ver_ft ihevc_intra_pred_chroma_ver_a9q; 274 ihevc_intra_pred_chroma_mode2_ft ihevc_intra_pred_chroma_mode2_a9q; 275 ihevc_intra_pred_chroma_mode_18_34_ft ihevc_intra_pred_chroma_mode_18_34_a9q; 276 ihevc_intra_pred_chroma_mode_3_to_9_ft ihevc_intra_pred_chroma_mode_3_to_9_a9q; 277 ihevc_intra_pred_chroma_mode_11_to_17_ft ihevc_intra_pred_chroma_mode_11_to_17_a9q; 278 ihevc_intra_pred_chroma_mode_19_to_25_ft ihevc_intra_pred_chroma_mode_19_to_25_a9q; 279 ihevc_intra_pred_chroma_mode_27_to_33_ft ihevc_intra_pred_chroma_mode_27_to_33_a9q; 280 ihevc_intra_pred_chroma_ref_substitution_ft ihevc_intra_pred_chroma_ref_substitution_a9q; 281 282 /* SSE4.2 function declarations */ 283 ihevc_intra_pred_chroma_planar_ft ihevc_intra_pred_chroma_planar_neonintr; 284 ihevc_intra_pred_chroma_dc_ft ihevc_intra_pred_chroma_dc_neonintr; 285 ihevc_intra_pred_chroma_horz_ft ihevc_intra_pred_chroma_horz_neonintr; 286 ihevc_intra_pred_chroma_ver_ft ihevc_intra_pred_chroma_ver_neonintr; 287 ihevc_intra_pred_chroma_mode2_ft ihevc_intra_pred_chroma_mode2_neonintr; 288 ihevc_intra_pred_chroma_mode_18_34_ft ihevc_intra_pred_chroma_mode_18_34_neonintr; 289 ihevc_intra_pred_chroma_mode_3_to_9_ft ihevc_intra_pred_chroma_mode_3_to_9_neonintr; 290 ihevc_intra_pred_chroma_mode_11_to_17_ft ihevc_intra_pred_chroma_mode_11_to_17_neonintr; 291 ihevc_intra_pred_chroma_mode_19_to_25_ft ihevc_intra_pred_chroma_mode_19_to_25_neonintr; 292 ihevc_intra_pred_chroma_mode_27_to_33_ft ihevc_intra_pred_chroma_mode_27_to_33_neonintr; 293 ihevc_intra_pred_chroma_ref_substitution_ft ihevc_intra_pred_chroma_ref_substitution_neonintr; 294 295 /* SSSE3 function declarations */ 296 ihevc_intra_pred_chroma_planar_ft ihevc_intra_pred_chroma_planar_ssse3; 297 ihevc_intra_pred_chroma_dc_ft ihevc_intra_pred_chroma_dc_ssse3; 298 ihevc_intra_pred_chroma_horz_ft ihevc_intra_pred_chroma_horz_ssse3; 299 ihevc_intra_pred_chroma_ver_ft ihevc_intra_pred_chroma_ver_ssse3; 300 ihevc_intra_pred_chroma_mode2_ft ihevc_intra_pred_chroma_mode2_ssse3; 301 ihevc_intra_pred_chroma_mode_18_34_ft ihevc_intra_pred_chroma_mode_18_34_ssse3; 302 ihevc_intra_pred_chroma_mode_3_to_9_ft ihevc_intra_pred_chroma_mode_3_to_9_ssse3; 303 ihevc_intra_pred_chroma_mode_11_to_17_ft ihevc_intra_pred_chroma_mode_11_to_17_ssse3; 304 ihevc_intra_pred_chroma_mode_19_to_25_ft ihevc_intra_pred_chroma_mode_19_to_25_ssse3; 305 ihevc_intra_pred_chroma_mode_27_to_33_ft ihevc_intra_pred_chroma_mode_27_to_33_ssse3; 306 ihevc_intra_pred_chroma_ref_substitution_ft ihevc_intra_pred_chroma_ref_substitution_ssse3; 307 308 /* SSE4.2 function declarations */ 309 ihevc_intra_pred_chroma_planar_ft ihevc_intra_pred_chroma_planar_sse42; 310 ihevc_intra_pred_chroma_dc_ft ihevc_intra_pred_chroma_dc_sse42; 311 ihevc_intra_pred_chroma_ref_substitution_ft ihevc_intra_pred_chroma_ref_substitution_sse42; 312 313 ihevc_hbd_intra_pred_chroma_planar_ft ihevc_hbd_intra_pred_chroma_planar_sse42; 314 ihevc_hbd_intra_pred_chroma_dc_ft ihevc_hbd_intra_pred_chroma_dc_sse42; 315 ihevc_hbd_intra_pred_chroma_horz_ft ihevc_hbd_intra_pred_chroma_horz_sse42; 316 ihevc_hbd_intra_pred_chroma_ver_ft ihevc_hbd_intra_pred_chroma_ver_sse42; 317 ihevc_hbd_intra_pred_chroma_mode2_ft ihevc_hbd_intra_pred_chroma_mode2_sse42; 318 ihevc_hbd_intra_pred_chroma_mode_18_34_ft ihevc_hbd_intra_pred_chroma_mode_18_34_sse42; 319 ihevc_hbd_intra_pred_chroma_mode_3_to_9_ft ihevc_hbd_intra_pred_chroma_mode_3_to_9_sse42; 320 ihevc_hbd_intra_pred_chroma_mode_11_to_17_ft ihevc_hbd_intra_pred_chroma_mode_11_to_17_sse42; 321 ihevc_hbd_intra_pred_chroma_mode_19_to_25_ft ihevc_hbd_intra_pred_chroma_mode_19_to_25_sse42; 322 ihevc_hbd_intra_pred_chroma_mode_27_to_33_ft ihevc_hbd_intra_pred_chroma_mode_27_to_33_sse42; 323 ihevc_hbd_intra_pred_chroma_ref_substitution_ft ihevc_hbd_intra_pred_chroma_ref_substitution_sse42; 324 325 ihevc_intra_pred_chroma_planar_ft ihevc_intra_pred_chroma_planar_a9a; 326 ihevc_intra_pred_chroma_dc_ft ihevc_intra_pred_chroma_dc_a9a; 327 ihevc_intra_pred_chroma_horz_ft ihevc_intra_pred_chroma_horz_a9a; 328 ihevc_intra_pred_chroma_ver_ft ihevc_intra_pred_chroma_ver_a9a; 329 ihevc_intra_pred_chroma_mode2_ft ihevc_intra_pred_chroma_mode2_a9a; 330 ihevc_intra_pred_chroma_mode_18_34_ft ihevc_intra_pred_chroma_mode_18_34_a9a; 331 ihevc_intra_pred_chroma_mode_3_to_9_ft ihevc_intra_pred_chroma_mode_3_to_9_a9a; 332 ihevc_intra_pred_chroma_mode_11_to_17_ft ihevc_intra_pred_chroma_mode_11_to_17_a9a; 333 ihevc_intra_pred_chroma_mode_19_to_25_ft ihevc_intra_pred_chroma_mode_19_to_25_a9a; 334 ihevc_intra_pred_chroma_mode_27_to_33_ft ihevc_intra_pred_chroma_mode_27_to_33_a9a; 335 ihevc_intra_pred_chroma_ref_substitution_ft ihevc_intra_pred_chroma_ref_substitution_a9a; 336 337 /* AVX function declaration*/ 338 ihevc_intra_pred_chroma_dc_ft ihevc_intra_pred_chroma_dc_avx; 339 ihevc_intra_pred_chroma_mode_18_34_ft ihevc_intra_pred_chroma_mode_18_34_avx; 340 ihevc_intra_pred_chroma_ver_ft ihevc_intra_pred_chroma_ver_avx; 341 342 ihevc_hbd_intra_pred_chroma_dc_ft ihevc_hbd_intra_pred_chroma_dc_avx; 343 ihevc_hbd_intra_pred_chroma_mode_18_34_ft ihevc_hbd_intra_pred_chroma_mode_18_34_avx; 344 ihevc_hbd_intra_pred_chroma_ver_ft ihevc_hbd_intra_pred_chroma_ver_avx; 345 346 /* armv8 function declarations */ 347 ihevc_intra_pred_chroma_planar_ft ihevc_intra_pred_chroma_planar_av8; 348 ihevc_intra_pred_chroma_dc_ft ihevc_intra_pred_chroma_dc_av8; 349 ihevc_intra_pred_chroma_horz_ft ihevc_intra_pred_chroma_horz_av8; 350 ihevc_intra_pred_chroma_ver_ft ihevc_intra_pred_chroma_ver_av8; 351 ihevc_intra_pred_chroma_mode2_ft ihevc_intra_pred_chroma_mode2_av8; 352 ihevc_intra_pred_chroma_mode_18_34_ft ihevc_intra_pred_chroma_mode_18_34_av8; 353 ihevc_intra_pred_chroma_mode_3_to_9_ft ihevc_intra_pred_chroma_mode_3_to_9_av8; 354 ihevc_intra_pred_chroma_mode_11_to_17_ft ihevc_intra_pred_chroma_mode_11_to_17_av8; 355 ihevc_intra_pred_chroma_mode_19_to_25_ft ihevc_intra_pred_chroma_mode_19_to_25_av8; 356 ihevc_intra_pred_chroma_mode_27_to_33_ft ihevc_intra_pred_chroma_mode_27_to_33_av8; 357 ihevc_intra_pred_chroma_ref_substitution_ft ihevc_intra_pred_chroma_ref_substitution_av8; 358 #endif /* IHEVC_CHROMA_INTRA_PRED_H_ */ 359