Home | History | Annotate | Download | only in arm
      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 #include "ihevc_func_types.h"
     40 
     41 #define    INTER_PRED_LUMA_COPY                     C
     42 #define    INTER_PRED_LUMA_HORZ                     C
     43 #define    INTER_PRED_LUMA_VERT                     C
     44 #define    INTER_PRED_LUMA_COPY_W16OUT              C
     45 #define    INTER_PRED_LUMA_HORZ_W16OUT              C
     46 
     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    PAD_VERT                                 C
     68 #define    PAD_HORZ                                 C
     69 #define    PAD_LEFT_LUMA                            C
     70 #define    PAD_LEFT_CHROMA                          C
     71 #define    PAD_RIGHT_LUMA                           C
     72 #define    PAD_RIGHT_CHROMA                         C
     73 
     74 #define     DEBLOCKING_ASM                          C
     75 #define     DEBLK_LUMA_HORZ                         C
     76 #define     DEBLK_LUMA_VERT                         C
     77 #define     DEBLK_CHROMA_HORZ                       C
     78 #define     DEBLK_CHROMA_VERT                       C
     79 
     80 #define     SAO_BAND_OFFSET_LUMA                    C
     81 #define     SAO_BAND_OFFSET_CHROMA                  C
     82 #define     SAO_EDGE_OFFSET_CLASS0_LUMA             C
     83 #define     SAO_EDGE_OFFSET_CLASS1_LUMA             C
     84 #define     SAO_EDGE_OFFSET_CLASS2_LUMA             C
     85 #define     SAO_EDGE_OFFSET_CLASS3_LUMA             C
     86 #define     SAO_EDGE_OFFSET_CLASS0_CHROMA           C
     87 #define     SAO_EDGE_OFFSET_CLASS1_CHROMA           C
     88 #define     SAO_EDGE_OFFSET_CLASS2_CHROMA           C
     89 #define     SAO_EDGE_OFFSET_CLASS3_CHROMA           C
     90 
     91 #define     INTRA_PRED_LUMA_REF_SUBSTITUTION        C
     92 #define     INTRA_PRED_REF_FILTERING                 C
     93 #define     INTRA_PRED_LUMA_PLANAR                  C
     94 #define     INTRA_PRED_LUMA_DC                      C
     95 #define     INTRA_PRED_LUMA_HORZ                    C
     96 #define     INTRA_PRED_LUMA_VER                     C
     97 #define     INTRA_PRED_LUMA_MODE_2                  C
     98 #define     INTRA_PRED_LUMA_MODE_18_34              C
     99 #define     INTRA_PRED_LUMA_MODE_3_T0_9             C
    100 #define     INTRA_PRED_LUMA_MODE_11_T0_17           C
    101 #define     INTRA_PRED_LUMA_MODE_19_T0_25           C
    102 #define     INTRA_PRED_LUMA_MODE_27_T0_33           C
    103 
    104 #define     INTRA_PRED_CHROMA_PLANAR                C
    105 #define     INTRA_PRED_CHROMA_DC                    C
    106 #define     INTRA_PRED_CHROMA_HOR                   C
    107 #define     INTRA_PRED_CHROMA_VER                   C
    108 #define     INTRA_PRED_CHROMA_MODE_2                C
    109 #define     INTRA_PRED_CHROMA_18_34                 C
    110 #define     INTRA_PRED_CHROMA_3_T0_9                C
    111 #define     INTRA_PRED_CHROMA_11_T0_17              C
    112 #define     INTRA_PRED_CHROMA_19_T0_25              C
    113 #define     INTRA_PRED_CHROMA_27_T0_33              C
    114 #define     INTRA_PRED_CHROMA_REF_SUBSTITUTION      C
    115 
    116 /* Forward transform functions */
    117 /* Luma */
    118 #define RESI_TRANS_QUANT_4X4_TTYPE1                 C
    119 #define RESI_TRANS_QUANT_4X4                        C
    120 #define RESI_TRANS_QUANT_8X8                        C
    121 #define RESI_TRANS_QUANT_16X16                      C
    122 #define RESI_TRANS_QUANT_32X32                      C
    123 
    124 #define RESI_QUANT_4X4_TTYPE1                       C
    125 #define RESI_QUANT_4X4                              C
    126 #define RESI_QUANT_8X8                              C
    127 #define RESI_QUANT_16X16                            C
    128 #define RESI_QUANT_32X32                            C
    129 
    130 #define RESI_TRANS_4X4_TTYPE1                       C
    131 #define RESI_TRANS_4X4                              C
    132 #define RESI_TRANS_8X8                              C
    133 #define RESI_TRANS_16X16                            C
    134 #define RESI_TRANS_32X32                            C
    135 
    136 #define RESI_4X4_TTYPE1                             C
    137 #define RESI_4X4                                    C
    138 #define RESI_8X8                                    C
    139 #define RESI_16X16                                  C
    140 #define RESI_32X32                                  C
    141 
    142 #define TRANS_4X4_TTYPE1                            C
    143 #define TRANS_4X4                                   C
    144 #define TRANS_8X8                                   C
    145 #define TRANS_16X16                                 C
    146 #define TRANS_32X32                                 C
    147 
    148 #define QUANT_4X4_TTYPE1                            C
    149 #define QUANT_4X4                                   C
    150 #define QUANT_8X8                                   C
    151 #define QUANT_16X16                                 C
    152 #define QUANT_32X32                                 C
    153 
    154 /* Chroma interleaved*/
    155 #define CHROMA_RESI_TRANS_QUANT_4X4                        C
    156 #define CHROMA_RESI_TRANS_QUANT_8X8                        C
    157 #define CHROMA_RESI_TRANS_QUANT_16X16                      C
    158 
    159 #define CHROMA_RESI_QUANT_4X4                              C
    160 #define CHROMA_RESI_QUANT_8X8                              C
    161 #define CHROMA_RESI_QUANT_16X16                            C
    162 
    163 #define CHROMA_RESI_TRANS_4X4                              C
    164 #define CHROMA_RESI_TRANS_8X8                              C
    165 #define CHROMA_RESI_TRANS_16X16                            C
    166 
    167 #define CHROMA_RESI_4X4                                    C
    168 #define CHROMA_RESI_8X8                                    C
    169 #define CHROMA_RESI_16X16                                  C
    170 
    171 /* Inverse transform functions */
    172 /* Luma */
    173 #define IQUANT_ITRANS_RECON_4X4_TTYPE1              C
    174 #define IQUANT_ITRANS_RECON_4X4                     C
    175 #define IQUANT_ITRANS_RECON_8X8                     C
    176 #define IQUANT_ITRANS_RECON_16X16                   C
    177 #define IQUANT_ITRANS_RECON_32X32                   C
    178 
    179 #define IQUANT_RECON_4X4_TTYPE1                     C
    180 #define IQUANT_RECON_4X4                            C
    181 #define IQUANT_RECON_8X8                            C
    182 #define IQUANT_RECON_16X16                          C
    183 #define IQUANT_RECON_32X32                          C
    184 
    185 #define ITRANS_RECON_4X4_TTYPE1                     C
    186 #define ITRANS_RECON_4X4                            C
    187 #define ITRANS_RECON_8X8                            C
    188 #define ITRANS_RECON_16X16                          C
    189 #define ITRANS_RECON_32X32                          C
    190 
    191 #define RECON_4X4_TTYPE1                            C
    192 #define RECON_4X4                                   C
    193 #define RECON_8X8                                   C
    194 #define RECON_16X16                                 C
    195 #define RECON_32X32                                 C
    196 
    197 #define ITRANS_4X4_TTYPE1                           C
    198 #define ITRANS_4X4                                  C
    199 #define ITRANS_8X8                                  C
    200 #define ITRANS_16X16                                C
    201 #define ITRANS_32X32                                C
    202 
    203 /* Chroma interleaved */
    204 #define CHROMA_IQUANT_ITRANS_RECON_4X4                     C
    205 #define CHROMA_IQUANT_ITRANS_RECON_8X8                     C
    206 #define CHROMA_IQUANT_ITRANS_RECON_16X16                   C
    207 
    208 #define CHROMA_IQUANT_RECON_4X4                            C
    209 #define CHROMA_IQUANT_RECON_8X8                            C
    210 #define CHROMA_IQUANT_RECON_16X16                          C
    211 
    212 #define CHROMA_ITRANS_RECON_4X4                            C
    213 #define CHROMA_ITRANS_RECON_8X8                            C
    214 #define CHROMA_ITRANS_RECON_16X16                          C
    215 
    216 #define CHROMA_RECON_4X4                                   C
    217 #define CHROMA_RECON_8X8                                   C
    218 #define CHROMA_RECON_16X16                                 C
    219 
    220 #define IHEVC_MEMCPY                                C
    221 #define IHEVC_MEMSET                                C
    222 #define IHEVC_MEMSET_16BIT                          C
    223 #define IHEVC_MEMCPY_MUL_8                          C
    224 #define IHEVC_MEMSET_MUL_8                          C
    225 #define IHEVC_MEMSET_16BIT_MUL_8                    C
    226 
    227 #endif  /* __IHEVC_FUNC_SELECTOR_H__ */
    228