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