Home | History | Annotate | Download | only in common
      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