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_itrans_recon.h
     22 *
     23 * @brief
     24 *  Functions declarations for inverse transform and  reconstruction
     25 *
     26 * @author
     27 *  Ittiam
     28 *
     29 * @remarks
     30 *  None
     31 *
     32 *******************************************************************************
     33 */
     34 #ifndef _IHEVC_ITRANS_RECON_H_
     35 #define _IHEVC_ITRANS_RECON_H_
     36 
     37 typedef void ihevc_itrans_recon_4x4_ttype1_ft(WORD16 *pi2_src,
     38                                               WORD16 *pi2_tmp,
     39                                               UWORD8 *pu1_pred,
     40                                               UWORD8 *pu1_dst,
     41                                               WORD32 src_strd,
     42                                               WORD32 pred_strd,
     43                                               WORD32 dst_strd,
     44                                               WORD32 zero_cols,
     45                                               WORD32 zero_rows);
     46 typedef void ihevc_hbd_itrans_recon_4x4_ttype1_ft(WORD16 *pi2_src,
     47                                                   WORD16 *pi2_tmp,
     48                                                   UWORD16 *pu2_pred,
     49                                                   UWORD16 *pu2_dst,
     50                                                   WORD32 src_strd,
     51                                                   WORD32 pred_strd,
     52                                                   WORD32 dst_strd,
     53                                                   WORD32 zero_cols,
     54                                                   WORD32 zero_rows,
     55                                                   UWORD8 bit_depth);
     56 typedef void ihevc_itrans_recon_4x4_ft(WORD16 *pi2_src,
     57                                        WORD16 *pi2_tmp,
     58                                        UWORD8 *pu1_pred,
     59                                        UWORD8 *pu1_dst,
     60                                        WORD32 src_strd,
     61                                        WORD32 pred_strd,
     62                                        WORD32 dst_strd,
     63                                        WORD32 zero_cols,
     64                                        WORD32 zero_rows);
     65 typedef void ihevc_hbd_itrans_recon_4x4_ft(WORD16 *pi2_src,
     66                                            WORD16 *pi2_tmp,
     67                                            UWORD16 *pu2_pred,
     68                                            UWORD16 *pu2_dst,
     69                                            WORD32 src_strd,
     70                                            WORD32 pred_strd,
     71                                            WORD32 dst_strd,
     72                                            WORD32 zero_cols,
     73                                            WORD32 zero_rows,
     74                                            UWORD8 bit_depth);
     75 typedef void ihevc_itrans_recon_8x8_ft(WORD16 *pi2_src,
     76                                        WORD16 *pi2_tmp,
     77                                        UWORD8 *pu1_pred,
     78                                        UWORD8 *pu1_dst,
     79                                        WORD32 src_strd,
     80                                        WORD32 pred_strd,
     81                                        WORD32 dst_strd,
     82                                        WORD32 zero_cols,
     83                                        WORD32 zero_rows);
     84 typedef void ihevc_hbd_itrans_recon_8x8_ft(WORD16 *pi2_src,
     85                                            WORD16 *pi2_tmp,
     86                                            UWORD16 *pu2_pred,
     87                                            UWORD16 *pu2_dst,
     88                                            WORD32 src_strd,
     89                                            WORD32 pred_strd,
     90                                            WORD32 dst_strd,
     91                                            WORD32 zero_cols,
     92                                            WORD32 zero_rows,
     93                                            UWORD8 bit_depth);
     94 typedef void ihevc_itrans_recon_16x16_ft(WORD16 *pi2_src,
     95                                          WORD16 *pi2_tmp,
     96                                          UWORD8 *pu1_pred,
     97                                          UWORD8 *pu1_dst,
     98                                          WORD32 src_strd,
     99                                          WORD32 pred_strd,
    100                                          WORD32 dst_strd,
    101                                          WORD32 zero_cols,
    102                                          WORD32 zero_rows);
    103 typedef void ihevc_hbd_itrans_recon_16x16_ft(WORD16 *pi2_src,
    104                                              WORD16 *pi2_tmp,
    105                                              UWORD16 *pu2_pred,
    106                                              UWORD16 *pu2_dst,
    107                                              WORD32 src_strd,
    108                                              WORD32 pred_strd,
    109                                              WORD32 dst_strd,
    110                                              WORD32 zero_cols,
    111                                              WORD32 zero_rows,
    112                                              UWORD8 bit_depth);
    113 typedef void ihevc_itrans_recon_32x32_ft(WORD16 *pi2_src,
    114                                          WORD16 *pi2_tmp,
    115                                          UWORD8 *pu1_pred,
    116                                          UWORD8 *pu1_dst,
    117                                          WORD32 src_strd,
    118                                          WORD32 pred_strd,
    119                                          WORD32 dst_strd,
    120                                          WORD32 zero_cols,
    121                                          WORD32 zero_rows);
    122 typedef void ihevc_hbd_itrans_recon_32x32_ft(WORD16 *pi2_src,
    123                                              WORD16 *pi2_tmp,
    124                                              UWORD16 *pu2_pred,
    125                                              UWORD16 *pu2_dst,
    126                                              WORD32 src_strd,
    127                                              WORD32 pred_strd,
    128                                              WORD32 dst_strd,
    129                                              WORD32 zero_cols,
    130                                              WORD32 zero_rows,
    131                                              UWORD8 bit_depth);
    132 
    133 /* C function declarations */
    134 ihevc_itrans_recon_4x4_ttype1_ft ihevc_itrans_recon_4x4_ttype1;
    135 ihevc_itrans_recon_4x4_ft ihevc_itrans_recon_4x4;
    136 ihevc_itrans_recon_8x8_ft ihevc_itrans_recon_8x8;
    137 ihevc_itrans_recon_16x16_ft ihevc_itrans_recon_16x16;
    138 ihevc_itrans_recon_32x32_ft ihevc_itrans_recon_32x32;
    139 
    140 ihevc_hbd_itrans_recon_4x4_ttype1_ft ihevc_hbd_itrans_recon_4x4_ttype1;
    141 ihevc_hbd_itrans_recon_4x4_ft ihevc_hbd_itrans_recon_4x4;
    142 ihevc_hbd_itrans_recon_8x8_ft ihevc_hbd_itrans_recon_8x8;
    143 ihevc_hbd_itrans_recon_16x16_ft ihevc_hbd_itrans_recon_16x16;
    144 ihevc_hbd_itrans_recon_32x32_ft ihevc_hbd_itrans_recon_32x32;
    145 
    146 /* A9 Q function declarations */
    147 ihevc_itrans_recon_4x4_ttype1_ft ihevc_itrans_recon_4x4_ttype1_a9q;
    148 ihevc_itrans_recon_4x4_ft ihevc_itrans_recon_4x4_a9q;
    149 ihevc_itrans_recon_8x8_ft ihevc_itrans_recon_8x8_a9q;
    150 ihevc_itrans_recon_16x16_ft ihevc_itrans_recon_16x16_a9q;
    151 ihevc_itrans_recon_32x32_ft ihevc_itrans_recon_32x32_a9q;
    152 
    153 /* A9 A function declarations */
    154 ihevc_itrans_recon_4x4_ttype1_ft ihevc_itrans_recon_4x4_ttype1_a9a;
    155 ihevc_itrans_recon_4x4_ft ihevc_itrans_recon_4x4_a9a;
    156 ihevc_itrans_recon_8x8_ft ihevc_itrans_recon_8x8_a9a;
    157 ihevc_itrans_recon_16x16_ft ihevc_itrans_recon_16x16_a9a;
    158 ihevc_itrans_recon_32x32_ft ihevc_itrans_recon_32x32_a9a;
    159 
    160 /* NEONINTR function declarations */
    161 ihevc_itrans_recon_4x4_ttype1_ft ihevc_itrans_recon_4x4_ttype1_neonintr;
    162 ihevc_itrans_recon_4x4_ft ihevc_itrans_recon_4x4_neonintr;
    163 ihevc_itrans_recon_8x8_ft ihevc_itrans_recon_8x8_neonintr;
    164 ihevc_itrans_recon_16x16_ft ihevc_itrans_recon_16x16_neonintr;
    165 ihevc_itrans_recon_32x32_ft ihevc_itrans_recon_32x32_neonintr;
    166 
    167 /* SSSE31 function declarations */
    168 ihevc_itrans_recon_4x4_ttype1_ft ihevc_itrans_recon_4x4_ttype1_ssse3;
    169 ihevc_itrans_recon_4x4_ft ihevc_itrans_recon_4x4_ssse3;
    170 ihevc_itrans_recon_8x8_ft ihevc_itrans_recon_8x8_ssse3;
    171 ihevc_itrans_recon_16x16_ft ihevc_itrans_recon_16x16_ssse3;
    172 ihevc_itrans_recon_32x32_ft ihevc_itrans_recon_32x32_ssse3;
    173 
    174 /* SSE42 function declarations */
    175 ihevc_itrans_recon_4x4_ttype1_ft ihevc_itrans_recon_4x4_ttype1_sse42;
    176 ihevc_itrans_recon_4x4_ft ihevc_itrans_recon_4x4_sse42;
    177 ihevc_itrans_recon_8x8_ft ihevc_itrans_recon_8x8_sse42;
    178 ihevc_itrans_recon_32x32_ft ihevc_itrans_recon_32x32_sse42;
    179 
    180 ihevc_hbd_itrans_recon_4x4_ttype1_ft ihevc_hbd_itrans_recon_4x4_ttype1_sse42;
    181 ihevc_hbd_itrans_recon_4x4_ft ihevc_hbd_itrans_recon_4x4_sse42;
    182 ihevc_hbd_itrans_recon_8x8_ft ihevc_hbd_itrans_recon_8x8_sse42;
    183 ihevc_hbd_itrans_recon_16x16_ft ihevc_hbd_itrans_recon_16x16_sse42;
    184 ihevc_hbd_itrans_recon_32x32_ft ihevc_hbd_itrans_recon_32x32_sse42;
    185 
    186 
    187 /* armv8 function declarations */
    188 ihevc_itrans_recon_4x4_ttype1_ft ihevc_itrans_recon_4x4_ttype1_av8;
    189 ihevc_itrans_recon_4x4_ft ihevc_itrans_recon_4x4_av8;
    190 ihevc_itrans_recon_8x8_ft ihevc_itrans_recon_8x8_av8;
    191 ihevc_itrans_recon_16x16_ft ihevc_itrans_recon_16x16_av8;
    192 ihevc_itrans_recon_32x32_ft ihevc_itrans_recon_32x32_av8;
    193 #endif /*_IHEVC_ITRANS_RECON_H_*/
    194