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