Home | History | Annotate | Download | only in x86
      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_func_selector.h
     22 *
     23 * @brief
     24 *  For each function decide whether to use C function,  or Neon intrinsics
     25 * or Cortex A8 intrinsics or Neon  assembly or cortex a8 assembly
     26 *
     27 * @author
     28 *  Harish
     29 *
     30 * @remarks
     31 *  None
     32 *
     33 *******************************************************************************
     34 */
     35 
     36 #ifndef __IHEVC_FUNC_SELECTOR_H__
     37 #define __IHEVC_FUNC_SELECTOR_H__
     38 
     39 
     40 #include "ihevc_func_types.h"
     41 
     42 #define     INTER_PRED_LUMA_COPY                    C
     43 #define     INTER_PRED_LUMA_HORZ                    C
     44 #define     INTER_PRED_LUMA_VERT                    C
     45 #define     INTER_PRED_LUMA_COPY_W16OUT             C
     46 #define     INTER_PRED_LUMA_HORZ_W16OUT             C
     47 #define     INTER_PRED_LUMA_VERT_W16OUT             C
     48 #define     INTER_PRED_LUMA_VERT_W16INP             C
     49 #define     INTER_PRED_LUMA_VERT_W16INP_W16OUT      C
     50 
     51 #define     INTER_PRED_CHROMA_COPY                  C
     52 #define     INTER_PRED_CHROMA_HORZ                  C
     53 #define     INTER_PRED_CHROMA_VERT                  C
     54 #define     INTER_PRED_CHROMA_COPY_W16OUT           C
     55 #define     INTER_PRED_CHROMA_HORZ_W16OUT           C
     56 #define     INTER_PRED_CHROMA_VERT_W16OUT           C
     57 #define     INTER_PRED_CHROMA_VERT_W16INP           C
     58 #define     INTER_PRED_CHROMA_VERT_W16INP_W16OUT    C
     59 
     60 #define     WEIGHTED_PRED_UNI                       C
     61 #define     WEIGHTED_PRED_BI                        C
     62 #define     WEIGHTED_PRED_BI_DEFAULT                C
     63 #define    WEIGHTED_PRED_CHROMA_UNI                 C
     64 #define    WEIGHTED_PRED_CHROMA_BI                  C
     65 #define    WEIGHTED_PRED_CHROMA_BI_DEFAULT          C
     66 
     67 #define     INTRA_PRED_LUMA_REF_SUBSTITUTION        C
     68 #define     INTRA_PRED_REF_FILTERING                C
     69 #define     INTRA_PRED_LUMA_PLANAR                  C
     70 #define     INTRA_PRED_LUMA_DC                      C
     71 #define     INTRA_PRED_LUMA_HORZ                    C
     72 #define     INTRA_PRED_LUMA_VER                     C
     73 #define     INTRA_PRED_LUMA_MODE_2                  C
     74 #define     INTRA_PRED_LUMA_MODE_18_34              C
     75 #define     INTRA_PRED_LUMA_MODE_3_TO_9             C
     76 #define     INTRA_PRED_LUMA_MODE_11_TO_17           C
     77 #define     INTRA_PRED_LUMA_MODE_19_TO_25           C
     78 #define     INTRA_PRED_LUMA_MODE_27_TO_33           C
     79 
     80 
     81 #define     INTRA_PRED_CHROMA_PLANAR                C
     82 #define     INTRA_PRED_CHROMA_DC                    C
     83 #define     INTRA_PRED_CHROMA_HOR                   C
     84 #define     INTRA_PRED_CHROMA_VER                   C
     85 #define     INTRA_PRED_CHROMA_MODE_2                C
     86 #define     INTRA_PRED_CHROMA_18_34                 C
     87 #define     INTRA_PRED_CHROMA_3_T0_9                C
     88 #define     INTRA_PRED_CHROMA_11_T0_17              C
     89 #define     INTRA_PRED_CHROMA_19_T0_25              C
     90 #define     INTRA_PRED_CHROMA_27_T0_33              C
     91 #define     INTRA_PRED_CHROMA_REF_SUBSTITUTION      C
     92 
     93 #define     PAD_VERT                                C
     94 #define     PAD_HORZ                                C
     95 
     96 #define     DEBLK_LUMA_HORZ                         C
     97 #define     DEBLK_LUMA_VERT                         C
     98 #define     DEBLK_CHROMA_HORZ                       C
     99 #define     DEBLK_CHROMA_VERT                       C
    100 
    101 #define     SAO_BAND_OFFSET_LUMA                    C
    102 #define     SAO_BAND_OFFSET_CHROMA                  C
    103 #define     SAO_EDGE_OFFSET_CLASS0_LUMA             C
    104 #define     SAO_EDGE_OFFSET_CLASS1_LUMA             C
    105 #define     SAO_EDGE_OFFSET_CLASS2_LUMA             C
    106 #define     SAO_EDGE_OFFSET_CLASS3_LUMA             C
    107 #define     SAO_EDGE_OFFSET_CLASS0_CHROMA           C
    108 #define     SAO_EDGE_OFFSET_CLASS1_CHROMA           C
    109 #define     SAO_EDGE_OFFSET_CLASS2_CHROMA           C
    110 #define     SAO_EDGE_OFFSET_CLASS3_CHROMA           C
    111 
    112 /* Forward transform functions */
    113 /* Luma */
    114 #define RESI_TRANS_QUANT_4X4_TTYPE1                 C
    115 #define RESI_TRANS_QUANT_4X4                        C
    116 #define RESI_TRANS_QUANT_8X8                        C
    117 #define RESI_TRANS_QUANT_16X16                      C
    118 #define RESI_TRANS_QUANT_32X32                      C
    119 
    120 #define RESI_QUANT_4X4_TTYPE1                       C
    121 #define RESI_QUANT_4X4                              C
    122 #define RESI_QUANT_8X8                              C
    123 #define RESI_QUANT_16X16                            C
    124 #define RESI_QUANT_32X32                            C
    125 
    126 #define RESI_TRANS_4X4_TTYPE1                       C
    127 #define RESI_TRANS_4X4                              C
    128 #define RESI_TRANS_8X8                              C
    129 #define RESI_TRANS_16X16                            C
    130 #define RESI_TRANS_32X32                            C
    131 
    132 #define RESI_4X4_TTYPE1                             C
    133 #define RESI_4X4                                    C
    134 #define RESI_8X8                                    C
    135 #define RESI_16X16                                  C
    136 #define RESI_32X32                                  C
    137 
    138 #define TRANS_4X4_TTYPE1                            C
    139 #define TRANS_4X4                                   C
    140 #define TRANS_8X8                                   C
    141 #define TRANS_16X16                                 C
    142 #define TRANS_32X32                                 C
    143 
    144 #define QUANT_4X4_TTYPE1                            C
    145 #define QUANT_4X4                                   C
    146 #define QUANT_8X8                                   C
    147 #define QUANT_16X16                                 C
    148 #define QUANT_32X32                                 C
    149 
    150 /* Chroma interleaved*/
    151 #define CHROMA_RESI_TRANS_QUANT_4X4                        C
    152 #define CHROMA_RESI_TRANS_QUANT_8X8                        C
    153 #define CHROMA_RESI_TRANS_QUANT_16X16                      C
    154 
    155 #define CHROMA_RESI_QUANT_4X4                              C
    156 #define CHROMA_RESI_QUANT_8X8                              C
    157 #define CHROMA_RESI_QUANT_16X16                            C
    158 
    159 #define CHROMA_RESI_TRANS_4X4                              C
    160 #define CHROMA_RESI_TRANS_8X8                              C
    161 #define CHROMA_RESI_TRANS_16X16                            C
    162 
    163 #define CHROMA_RESI_4X4                                    C
    164 #define CHROMA_RESI_8X8                                    C
    165 #define CHROMA_RESI_16X16                                  C
    166 
    167 /* Inverse transform functions */
    168 /* Luma */
    169 #define IQUANT_ITRANS_RECON_4X4_TTYPE1              C
    170 #define IQUANT_ITRANS_RECON_4X4                     C
    171 #define IQUANT_ITRANS_RECON_8X8                     C
    172 #define IQUANT_ITRANS_RECON_16X16                   C
    173 #define IQUANT_ITRANS_RECON_32X32                   C
    174 
    175 #define IQUANT_RECON_4X4_TTYPE1                     C
    176 #define IQUANT_RECON_4X4                            C
    177 #define IQUANT_RECON_8X8                            C
    178 #define IQUANT_RECON_16X16                          C
    179 #define IQUANT_RECON_32X32                          C
    180 
    181 #define ITRANS_RECON_4X4_TTYPE1                     C
    182 #define ITRANS_RECON_4X4                            C
    183 #define ITRANS_RECON_8X8                            C
    184 #define ITRANS_RECON_16X16                          C
    185 #define ITRANS_RECON_32X32                          C
    186 
    187 #define RECON_4X4_TTYPE1                            C
    188 #define RECON_4X4                                   C
    189 #define RECON_8X8                                   C
    190 #define RECON_16X16                                 C
    191 #define RECON_32X32                                 C
    192 
    193 #define ITRANS_4X4_TTYPE1                           C
    194 #define ITRANS_4X4                                  C
    195 #define ITRANS_8X8                                  C
    196 #define ITRANS_16X16                                C
    197 #define ITRANS_32X32                                C
    198 
    199 /* Chroma interleaved */
    200 #define CHROMA_IQUANT_ITRANS_RECON_4X4                     C
    201 #define CHROMA_IQUANT_ITRANS_RECON_8X8                     C
    202 #define CHROMA_IQUANT_ITRANS_RECON_16X16                   C
    203 
    204 #define CHROMA_IQUANT_RECON_4X4                            C
    205 #define CHROMA_IQUANT_RECON_8X8                            C
    206 #define CHROMA_IQUANT_RECON_16X16                          C
    207 
    208 #define CHROMA_ITRANS_RECON_4X4                            C
    209 #define CHROMA_ITRANS_RECON_8X8                            C
    210 #define CHROMA_ITRANS_RECON_16X16                          C
    211 
    212 #define CHROMA_RECON_4X4                                   C
    213 #define CHROMA_RECON_8X8                                   C
    214 #define CHROMA_RECON_16X16                                 C
    215 
    216 #define IHEVC_MEMCPY                                C
    217 #define IHEVC_MEMSET                                C
    218 #define IHEVC_MEMSET_16BIT                          C
    219 #define IHEVC_MEMCPY_MUL_8                          C
    220 #define IHEVC_MEMSET_MUL_8                          C
    221 #define IHEVC_MEMSET_16BIT_MUL_8                    C
    222 
    223 #endif /* __IHEVC_FUNC_SELECTOR_H__ */
    224 
    225