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