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/*****************************************************************************/ 42typedef 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 50typedef 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 58typedef 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 66typedef 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 74typedef 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 82typedef 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 90typedef 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 98typedef 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 106typedef 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 114typedef 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 122typedef 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 131typedef 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 140typedef 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 149typedef 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 157typedef 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 166typedef 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 176typedef 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 184typedef 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 193typedef 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 203typedef 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 212typedef 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 221typedef 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 */ 232ihevc_intra_pred_chroma_planar_ft ihevc_intra_pred_chroma_planar; 233ihevc_intra_pred_chroma_dc_ft ihevc_intra_pred_chroma_dc; 234ihevc_intra_pred_chroma_horz_ft ihevc_intra_pred_chroma_horz; 235ihevc_intra_pred_chroma_ver_ft ihevc_intra_pred_chroma_ver; 236ihevc_intra_pred_chroma_mode2_ft ihevc_intra_pred_chroma_mode2; 237ihevc_intra_pred_chroma_mode_18_34_ft ihevc_intra_pred_chroma_mode_18_34; 238ihevc_intra_pred_chroma_mode_3_to_9_ft ihevc_intra_pred_chroma_mode_3_to_9; 239ihevc_intra_pred_chroma_mode_11_to_17_ft ihevc_intra_pred_chroma_mode_11_to_17; 240ihevc_intra_pred_chroma_mode_19_to_25_ft ihevc_intra_pred_chroma_mode_19_to_25; 241ihevc_intra_pred_chroma_mode_27_to_33_ft ihevc_intra_pred_chroma_mode_27_to_33; 242ihevc_intra_pred_chroma_ref_substitution_ft ihevc_intra_pred_chroma_ref_substitution; 243 244ihevc_hbd_intra_pred_chroma_planar_ft ihevc_hbd_intra_pred_chroma_planar; 245ihevc_hbd_intra_pred_chroma_dc_ft ihevc_hbd_intra_pred_chroma_dc; 246ihevc_hbd_intra_pred_chroma_horz_ft ihevc_hbd_intra_pred_chroma_horz; 247ihevc_hbd_intra_pred_chroma_ver_ft ihevc_hbd_intra_pred_chroma_ver; 248ihevc_hbd_intra_pred_chroma_mode2_ft ihevc_hbd_intra_pred_chroma_mode2; 249ihevc_hbd_intra_pred_chroma_mode_18_34_ft ihevc_hbd_intra_pred_chroma_mode_18_34; 250ihevc_hbd_intra_pred_chroma_mode_3_to_9_ft ihevc_hbd_intra_pred_chroma_mode_3_to_9; 251ihevc_hbd_intra_pred_chroma_mode_11_to_17_ft ihevc_hbd_intra_pred_chroma_mode_11_to_17; 252ihevc_hbd_intra_pred_chroma_mode_19_to_25_ft ihevc_hbd_intra_pred_chroma_mode_19_to_25; 253ihevc_hbd_intra_pred_chroma_mode_27_to_33_ft ihevc_hbd_intra_pred_chroma_mode_27_to_33; 254ihevc_hbd_intra_pred_chroma_ref_substitution_ft ihevc_hbd_intra_pred_chroma_ref_substitution; 255 256/* C function declarations */ 257ihevc_intra_pred_chroma_planar_ft ihevc_intra_pred_chroma_planar; 258ihevc_intra_pred_chroma_dc_ft ihevc_intra_pred_chroma_dc; 259ihevc_intra_pred_chroma_horz_ft ihevc_intra_pred_chroma_horz; 260ihevc_intra_pred_chroma_ver_ft ihevc_intra_pred_chroma_ver; 261ihevc_intra_pred_chroma_mode2_ft ihevc_intra_pred_chroma_mode2; 262ihevc_intra_pred_chroma_mode_18_34_ft ihevc_intra_pred_chroma_mode_18_34; 263ihevc_intra_pred_chroma_mode_3_to_9_ft ihevc_intra_pred_chroma_mode_3_to_9; 264ihevc_intra_pred_chroma_mode_11_to_17_ft ihevc_intra_pred_chroma_mode_11_to_17; 265ihevc_intra_pred_chroma_mode_19_to_25_ft ihevc_intra_pred_chroma_mode_19_to_25; 266ihevc_intra_pred_chroma_mode_27_to_33_ft ihevc_intra_pred_chroma_mode_27_to_33; 267ihevc_intra_pred_chroma_ref_substitution_ft ihevc_intra_pred_chroma_ref_substitution; 268 269/* A9Q function declarations */ 270ihevc_intra_pred_chroma_planar_ft ihevc_intra_pred_chroma_planar_a9q; 271ihevc_intra_pred_chroma_dc_ft ihevc_intra_pred_chroma_dc_a9q; 272ihevc_intra_pred_chroma_horz_ft ihevc_intra_pred_chroma_horz_a9q; 273ihevc_intra_pred_chroma_ver_ft ihevc_intra_pred_chroma_ver_a9q; 274ihevc_intra_pred_chroma_mode2_ft ihevc_intra_pred_chroma_mode2_a9q; 275ihevc_intra_pred_chroma_mode_18_34_ft ihevc_intra_pred_chroma_mode_18_34_a9q; 276ihevc_intra_pred_chroma_mode_3_to_9_ft ihevc_intra_pred_chroma_mode_3_to_9_a9q; 277ihevc_intra_pred_chroma_mode_11_to_17_ft ihevc_intra_pred_chroma_mode_11_to_17_a9q; 278ihevc_intra_pred_chroma_mode_19_to_25_ft ihevc_intra_pred_chroma_mode_19_to_25_a9q; 279ihevc_intra_pred_chroma_mode_27_to_33_ft ihevc_intra_pred_chroma_mode_27_to_33_a9q; 280ihevc_intra_pred_chroma_ref_substitution_ft ihevc_intra_pred_chroma_ref_substitution_a9q; 281 282/* SSE4.2 function declarations */ 283ihevc_intra_pred_chroma_planar_ft ihevc_intra_pred_chroma_planar_neonintr; 284ihevc_intra_pred_chroma_dc_ft ihevc_intra_pred_chroma_dc_neonintr; 285ihevc_intra_pred_chroma_horz_ft ihevc_intra_pred_chroma_horz_neonintr; 286ihevc_intra_pred_chroma_ver_ft ihevc_intra_pred_chroma_ver_neonintr; 287ihevc_intra_pred_chroma_mode2_ft ihevc_intra_pred_chroma_mode2_neonintr; 288ihevc_intra_pred_chroma_mode_18_34_ft ihevc_intra_pred_chroma_mode_18_34_neonintr; 289ihevc_intra_pred_chroma_mode_3_to_9_ft ihevc_intra_pred_chroma_mode_3_to_9_neonintr; 290ihevc_intra_pred_chroma_mode_11_to_17_ft ihevc_intra_pred_chroma_mode_11_to_17_neonintr; 291ihevc_intra_pred_chroma_mode_19_to_25_ft ihevc_intra_pred_chroma_mode_19_to_25_neonintr; 292ihevc_intra_pred_chroma_mode_27_to_33_ft ihevc_intra_pred_chroma_mode_27_to_33_neonintr; 293ihevc_intra_pred_chroma_ref_substitution_ft ihevc_intra_pred_chroma_ref_substitution_neonintr; 294 295/* SSSE3 function declarations */ 296ihevc_intra_pred_chroma_planar_ft ihevc_intra_pred_chroma_planar_ssse3; 297ihevc_intra_pred_chroma_dc_ft ihevc_intra_pred_chroma_dc_ssse3; 298ihevc_intra_pred_chroma_horz_ft ihevc_intra_pred_chroma_horz_ssse3; 299ihevc_intra_pred_chroma_ver_ft ihevc_intra_pred_chroma_ver_ssse3; 300ihevc_intra_pred_chroma_mode2_ft ihevc_intra_pred_chroma_mode2_ssse3; 301ihevc_intra_pred_chroma_mode_18_34_ft ihevc_intra_pred_chroma_mode_18_34_ssse3; 302ihevc_intra_pred_chroma_mode_3_to_9_ft ihevc_intra_pred_chroma_mode_3_to_9_ssse3; 303ihevc_intra_pred_chroma_mode_11_to_17_ft ihevc_intra_pred_chroma_mode_11_to_17_ssse3; 304ihevc_intra_pred_chroma_mode_19_to_25_ft ihevc_intra_pred_chroma_mode_19_to_25_ssse3; 305ihevc_intra_pred_chroma_mode_27_to_33_ft ihevc_intra_pred_chroma_mode_27_to_33_ssse3; 306ihevc_intra_pred_chroma_ref_substitution_ft ihevc_intra_pred_chroma_ref_substitution_ssse3; 307 308/* SSE4.2 function declarations */ 309ihevc_intra_pred_chroma_planar_ft ihevc_intra_pred_chroma_planar_sse42; 310ihevc_intra_pred_chroma_dc_ft ihevc_intra_pred_chroma_dc_sse42; 311ihevc_intra_pred_chroma_ref_substitution_ft ihevc_intra_pred_chroma_ref_substitution_sse42; 312 313ihevc_hbd_intra_pred_chroma_planar_ft ihevc_hbd_intra_pred_chroma_planar_sse42; 314ihevc_hbd_intra_pred_chroma_dc_ft ihevc_hbd_intra_pred_chroma_dc_sse42; 315ihevc_hbd_intra_pred_chroma_horz_ft ihevc_hbd_intra_pred_chroma_horz_sse42; 316ihevc_hbd_intra_pred_chroma_ver_ft ihevc_hbd_intra_pred_chroma_ver_sse42; 317ihevc_hbd_intra_pred_chroma_mode2_ft ihevc_hbd_intra_pred_chroma_mode2_sse42; 318ihevc_hbd_intra_pred_chroma_mode_18_34_ft ihevc_hbd_intra_pred_chroma_mode_18_34_sse42; 319ihevc_hbd_intra_pred_chroma_mode_3_to_9_ft ihevc_hbd_intra_pred_chroma_mode_3_to_9_sse42; 320ihevc_hbd_intra_pred_chroma_mode_11_to_17_ft ihevc_hbd_intra_pred_chroma_mode_11_to_17_sse42; 321ihevc_hbd_intra_pred_chroma_mode_19_to_25_ft ihevc_hbd_intra_pred_chroma_mode_19_to_25_sse42; 322ihevc_hbd_intra_pred_chroma_mode_27_to_33_ft ihevc_hbd_intra_pred_chroma_mode_27_to_33_sse42; 323ihevc_hbd_intra_pred_chroma_ref_substitution_ft ihevc_hbd_intra_pred_chroma_ref_substitution_sse42; 324 325ihevc_intra_pred_chroma_planar_ft ihevc_intra_pred_chroma_planar_a9a; 326ihevc_intra_pred_chroma_dc_ft ihevc_intra_pred_chroma_dc_a9a; 327ihevc_intra_pred_chroma_horz_ft ihevc_intra_pred_chroma_horz_a9a; 328ihevc_intra_pred_chroma_ver_ft ihevc_intra_pred_chroma_ver_a9a; 329ihevc_intra_pred_chroma_mode2_ft ihevc_intra_pred_chroma_mode2_a9a; 330ihevc_intra_pred_chroma_mode_18_34_ft ihevc_intra_pred_chroma_mode_18_34_a9a; 331ihevc_intra_pred_chroma_mode_3_to_9_ft ihevc_intra_pred_chroma_mode_3_to_9_a9a; 332ihevc_intra_pred_chroma_mode_11_to_17_ft ihevc_intra_pred_chroma_mode_11_to_17_a9a; 333ihevc_intra_pred_chroma_mode_19_to_25_ft ihevc_intra_pred_chroma_mode_19_to_25_a9a; 334ihevc_intra_pred_chroma_mode_27_to_33_ft ihevc_intra_pred_chroma_mode_27_to_33_a9a; 335ihevc_intra_pred_chroma_ref_substitution_ft ihevc_intra_pred_chroma_ref_substitution_a9a; 336 337/* AVX function declaration*/ 338ihevc_intra_pred_chroma_dc_ft ihevc_intra_pred_chroma_dc_avx; 339ihevc_intra_pred_chroma_mode_18_34_ft ihevc_intra_pred_chroma_mode_18_34_avx; 340ihevc_intra_pred_chroma_ver_ft ihevc_intra_pred_chroma_ver_avx; 341 342ihevc_hbd_intra_pred_chroma_dc_ft ihevc_hbd_intra_pred_chroma_dc_avx; 343ihevc_hbd_intra_pred_chroma_mode_18_34_ft ihevc_hbd_intra_pred_chroma_mode_18_34_avx; 344ihevc_hbd_intra_pred_chroma_ver_ft ihevc_hbd_intra_pred_chroma_ver_avx; 345 346/* armv8 function declarations */ 347ihevc_intra_pred_chroma_planar_ft ihevc_intra_pred_chroma_planar_av8; 348ihevc_intra_pred_chroma_dc_ft ihevc_intra_pred_chroma_dc_av8; 349ihevc_intra_pred_chroma_horz_ft ihevc_intra_pred_chroma_horz_av8; 350ihevc_intra_pred_chroma_ver_ft ihevc_intra_pred_chroma_ver_av8; 351ihevc_intra_pred_chroma_mode2_ft ihevc_intra_pred_chroma_mode2_av8; 352ihevc_intra_pred_chroma_mode_18_34_ft ihevc_intra_pred_chroma_mode_18_34_av8; 353ihevc_intra_pred_chroma_mode_3_to_9_ft ihevc_intra_pred_chroma_mode_3_to_9_av8; 354ihevc_intra_pred_chroma_mode_11_to_17_ft ihevc_intra_pred_chroma_mode_11_to_17_av8; 355ihevc_intra_pred_chroma_mode_19_to_25_ft ihevc_intra_pred_chroma_mode_19_to_25_av8; 356ihevc_intra_pred_chroma_mode_27_to_33_ft ihevc_intra_pred_chroma_mode_27_to_33_av8; 357ihevc_intra_pred_chroma_ref_substitution_ft ihevc_intra_pred_chroma_ref_substitution_av8; 358#endif /* IHEVC_CHROMA_INTRA_PRED_H_ */ 359