/******************************************************************************
*
* Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************/
/**
*******************************************************************************
* @file
* ihevc_func_selector.h
*
* @brief
* For each function decide whether to use C function, or Neon intrinsics
* or Cortex A8 intrinsics or Neon assembly or cortex a8 assembly
*
* @author
* Harish
*
* @remarks
* None
*
*******************************************************************************
*/
#ifndef __IHEVC_FUNC_SELECTOR_H__
#define __IHEVC_FUNC_SELECTOR_H__
#include "ihevc_func_types.h"
#define INTER_PRED_LUMA_COPY C
#define INTER_PRED_LUMA_HORZ C
#define INTER_PRED_LUMA_VERT C
#define INTER_PRED_LUMA_COPY_W16OUT C
#define INTER_PRED_LUMA_HORZ_W16OUT C
#define INTER_PRED_LUMA_VERT_W16OUT C
#define INTER_PRED_LUMA_VERT_W16INP C
#define INTER_PRED_LUMA_VERT_W16INP_W16OUT C
#define INTER_PRED_CHROMA_COPY C
#define INTER_PRED_CHROMA_HORZ C
#define INTER_PRED_CHROMA_VERT C
#define INTER_PRED_CHROMA_COPY_W16OUT C
#define INTER_PRED_CHROMA_HORZ_W16OUT C
#define INTER_PRED_CHROMA_VERT_W16OUT C
#define INTER_PRED_CHROMA_VERT_W16INP C
#define INTER_PRED_CHROMA_VERT_W16INP_W16OUT C
#define WEIGHTED_PRED_UNI C
#define WEIGHTED_PRED_BI C
#define WEIGHTED_PRED_BI_DEFAULT C
#define WEIGHTED_PRED_CHROMA_UNI C
#define WEIGHTED_PRED_CHROMA_BI C
#define WEIGHTED_PRED_CHROMA_BI_DEFAULT C
#define PAD_VERT C
#define PAD_HORZ C
#define PAD_LEFT_LUMA C
#define PAD_LEFT_CHROMA C
#define PAD_RIGHT_LUMA C
#define PAD_RIGHT_CHROMA C
#define DEBLOCKING_ASM C
#define DEBLK_LUMA_HORZ C
#define DEBLK_LUMA_VERT C
#define DEBLK_CHROMA_HORZ C
#define DEBLK_CHROMA_VERT C
#define SAO_BAND_OFFSET_LUMA C
#define SAO_BAND_OFFSET_CHROMA C
#define SAO_EDGE_OFFSET_CLASS0_LUMA C
#define SAO_EDGE_OFFSET_CLASS1_LUMA C
#define SAO_EDGE_OFFSET_CLASS2_LUMA C
#define SAO_EDGE_OFFSET_CLASS3_LUMA C
#define SAO_EDGE_OFFSET_CLASS0_CHROMA C
#define SAO_EDGE_OFFSET_CLASS1_CHROMA C
#define SAO_EDGE_OFFSET_CLASS2_CHROMA C
#define SAO_EDGE_OFFSET_CLASS3_CHROMA C
#define INTRA_PRED_LUMA_REF_SUBSTITUTION C
#define INTRA_PRED_REF_FILTERING C
#define INTRA_PRED_LUMA_PLANAR C
#define INTRA_PRED_LUMA_DC C
#define INTRA_PRED_LUMA_HORZ C
#define INTRA_PRED_LUMA_VER C
#define INTRA_PRED_LUMA_MODE_2 C
#define INTRA_PRED_LUMA_MODE_18_34 C
#define INTRA_PRED_LUMA_MODE_3_T0_9 C
#define INTRA_PRED_LUMA_MODE_11_T0_17 C
#define INTRA_PRED_LUMA_MODE_19_T0_25 C
#define INTRA_PRED_LUMA_MODE_27_T0_33 C
#define INTRA_PRED_CHROMA_PLANAR C
#define INTRA_PRED_CHROMA_DC C
#define INTRA_PRED_CHROMA_HOR C
#define INTRA_PRED_CHROMA_VER C
#define INTRA_PRED_CHROMA_MODE_2 C
#define INTRA_PRED_CHROMA_18_34 C
#define INTRA_PRED_CHROMA_3_T0_9 C
#define INTRA_PRED_CHROMA_11_T0_17 C
#define INTRA_PRED_CHROMA_19_T0_25 C
#define INTRA_PRED_CHROMA_27_T0_33 C
#define INTRA_PRED_CHROMA_REF_SUBSTITUTION C
/* Forward transform functions */
/* Luma */
#define RESI_TRANS_QUANT_4X4_TTYPE1 C
#define RESI_TRANS_QUANT_4X4 C
#define RESI_TRANS_QUANT_8X8 C
#define RESI_TRANS_QUANT_16X16 C
#define RESI_TRANS_QUANT_32X32 C
#define RESI_QUANT_4X4_TTYPE1 C
#define RESI_QUANT_4X4 C
#define RESI_QUANT_8X8 C
#define RESI_QUANT_16X16 C
#define RESI_QUANT_32X32 C
#define RESI_TRANS_4X4_TTYPE1 C
#define RESI_TRANS_4X4 C
#define RESI_TRANS_8X8 C
#define RESI_TRANS_16X16 C
#define RESI_TRANS_32X32 C
#define RESI_4X4_TTYPE1 C
#define RESI_4X4 C
#define RESI_8X8 C
#define RESI_16X16 C
#define RESI_32X32 C
#define TRANS_4X4_TTYPE1 C
#define TRANS_4X4 C
#define TRANS_8X8 C
#define TRANS_16X16 C
#define TRANS_32X32 C
#define QUANT_4X4_TTYPE1 C
#define QUANT_4X4 C
#define QUANT_8X8 C
#define QUANT_16X16 C
#define QUANT_32X32 C
/* Chroma interleaved*/
#define CHROMA_RESI_TRANS_QUANT_4X4 C
#define CHROMA_RESI_TRANS_QUANT_8X8 C
#define CHROMA_RESI_TRANS_QUANT_16X16 C
#define CHROMA_RESI_QUANT_4X4 C
#define CHROMA_RESI_QUANT_8X8 C
#define CHROMA_RESI_QUANT_16X16 C
#define CHROMA_RESI_TRANS_4X4 C
#define CHROMA_RESI_TRANS_8X8 C
#define CHROMA_RESI_TRANS_16X16 C
#define CHROMA_RESI_4X4 C
#define CHROMA_RESI_8X8 C
#define CHROMA_RESI_16X16 C
/* Inverse transform functions */
/* Luma */
#define IQUANT_ITRANS_RECON_4X4_TTYPE1 C
#define IQUANT_ITRANS_RECON_4X4 C
#define IQUANT_ITRANS_RECON_8X8 C
#define IQUANT_ITRANS_RECON_16X16 C
#define IQUANT_ITRANS_RECON_32X32 C
#define IQUANT_RECON_4X4_TTYPE1 C
#define IQUANT_RECON_4X4 C
#define IQUANT_RECON_8X8 C
#define IQUANT_RECON_16X16 C
#define IQUANT_RECON_32X32 C
#define ITRANS_RECON_4X4_TTYPE1 C
#define ITRANS_RECON_4X4 C
#define ITRANS_RECON_8X8 C
#define ITRANS_RECON_16X16 C
#define ITRANS_RECON_32X32 C
#define RECON_4X4_TTYPE1 C
#define RECON_4X4 C
#define RECON_8X8 C
#define RECON_16X16 C
#define RECON_32X32 C
#define ITRANS_4X4_TTYPE1 C
#define ITRANS_4X4 C
#define ITRANS_8X8 C
#define ITRANS_16X16 C
#define ITRANS_32X32 C
/* Chroma interleaved */
#define CHROMA_IQUANT_ITRANS_RECON_4X4 C
#define CHROMA_IQUANT_ITRANS_RECON_8X8 C
#define CHROMA_IQUANT_ITRANS_RECON_16X16 C
#define CHROMA_IQUANT_RECON_4X4 C
#define CHROMA_IQUANT_RECON_8X8 C
#define CHROMA_IQUANT_RECON_16X16 C
#define CHROMA_ITRANS_RECON_4X4 C
#define CHROMA_ITRANS_RECON_8X8 C
#define CHROMA_ITRANS_RECON_16X16 C
#define CHROMA_RECON_4X4 C
#define CHROMA_RECON_8X8 C
#define CHROMA_RECON_16X16 C
#define IHEVC_MEMCPY C
#define IHEVC_MEMSET C
#define IHEVC_MEMSET_16BIT C
#define IHEVC_MEMCPY_MUL_8 C
#define IHEVC_MEMSET_MUL_8 C
#define IHEVC_MEMSET_16BIT_MUL_8 C
#endif /* __IHEVC_FUNC_SELECTOR_H__ */