/****************************************************************************** * * 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_intra_pred.h * * @brief * Declarations for the fucntions defined in ihevc_intra_pred_filters * * @author * Mamatha * * * @remarks * None * ******************************************************************************* */ #ifndef IHEVC_CHROMA_INTRA_PRED_H_ #define IHEVC_CHROMA_INTRA_PRED_H_ /*****************************************************************************/ /* Function Declarations */ /*****************************************************************************/ typedef void ihevc_intra_pred_chroma_planar_ft( UWORD8 *pu1_ref, WORD32 src_strd, UWORD8 *pu1_dst, WORD32 dst_strd, WORD32 nt, WORD32 mode); typedef void ihevc_intra_pred_chroma_dc_ft( UWORD8 *pu1_ref, WORD32 src_strd, UWORD8 *pu1_dst, WORD32 dst_strd, WORD32 nt, WORD32 mode); typedef void ihevc_intra_pred_chroma_horz_ft( UWORD8 *pu1_ref, WORD32 src_strd, UWORD8 *pu1_dst, WORD32 dst_strd, WORD32 nt, WORD32 mode); typedef void ihevc_intra_pred_chroma_ver_ft( UWORD8 *pu1_ref, WORD32 src_strd, UWORD8 *pu1_dst, WORD32 dst_strd, WORD32 nt, WORD32 mode); typedef void ihevc_intra_pred_chroma_mode2_ft( UWORD8 *pu1_ref, WORD32 src_strd, UWORD8 *pu1_dst, WORD32 dst_strd, WORD32 nt, WORD32 mode); typedef void ihevc_intra_pred_chroma_mode_18_34_ft( UWORD8 *pu1_ref, WORD32 src_strd, UWORD8 *pu1_dst, WORD32 dst_strd, WORD32 nt, WORD32 mode); typedef void ihevc_intra_pred_chroma_mode_3_to_9_ft( UWORD8 *pu1_ref, WORD32 src_strd, UWORD8 *pu1_dst, WORD32 dst_strd, WORD32 nt, WORD32 mode); typedef void ihevc_intra_pred_chroma_mode_11_to_17_ft( UWORD8 *pu1_ref, WORD32 src_strd, UWORD8 *pu1_dst, WORD32 dst_strd, WORD32 nt, WORD32 mode); typedef void ihevc_intra_pred_chroma_mode_19_to_25_ft( UWORD8 *pu1_ref, WORD32 src_strd, UWORD8 *pu1_dst, WORD32 dst_strd, WORD32 nt, WORD32 mode); typedef void ihevc_intra_pred_chroma_mode_27_to_33_ft( UWORD8 *pu1_ref, WORD32 src_strd, UWORD8 *pu1_dst, WORD32 dst_strd, WORD32 nt, WORD32 mode); typedef void ihevc_intra_pred_chroma_ref_substitution_ft(UWORD8 *pu1_top_left, UWORD8 *pu1_top, UWORD8 *pu1_left, WORD32 src_strd, WORD32 nt, WORD32 nbr_flags, UWORD8 *pu1_dst, WORD32 dst_strd); typedef void ihevc_hbd_intra_pred_chroma_planar_ft( UWORD16 *pu2_ref, WORD32 src_strd, UWORD16 *pu2_dst, WORD32 dst_strd, WORD32 nt, WORD32 mode); typedef void ihevc_hbd_intra_pred_chroma_dc_ft( UWORD16 *pu2_ref, WORD32 src_strd, UWORD16 *pu2_dst, WORD32 dst_strd, WORD32 nt, WORD32 mode); typedef void ihevc_hbd_intra_pred_chroma_horz_ft( UWORD16 *pu2_ref, WORD32 src_strd, UWORD16 *pu2_dst, WORD32 dst_strd, WORD32 nt, WORD32 mode); typedef void ihevc_hbd_intra_pred_chroma_ver_ft( UWORD16 *pu2_ref, WORD32 src_strd, UWORD16 *pu2_dst, WORD32 dst_strd, WORD32 nt, WORD32 mode); typedef void ihevc_hbd_intra_pred_chroma_mode2_ft( UWORD16 *pu2_ref, WORD32 src_strd, UWORD16 *pu2_dst, WORD32 dst_strd, WORD32 nt, WORD32 mode); typedef void ihevc_hbd_intra_pred_chroma_mode_18_34_ft( UWORD16 *pu2_ref, WORD32 src_strd, UWORD16 *pu2_dst, WORD32 dst_strd, WORD32 nt, WORD32 mode); typedef void ihevc_hbd_intra_pred_chroma_mode_3_to_9_ft( UWORD16 *pu2_ref, WORD32 src_strd, UWORD16 *pu2_dst, WORD32 dst_strd, WORD32 nt, WORD32 mode); typedef void ihevc_hbd_intra_pred_chroma_mode_11_to_17_ft( UWORD16 *pu2_ref, WORD32 src_strd, UWORD16 *pu2_dst, WORD32 dst_strd, WORD32 nt, WORD32 mode); typedef void ihevc_hbd_intra_pred_chroma_mode_19_to_25_ft( UWORD16 *pu2_ref, WORD32 src_strd, UWORD16 *pu2_dst, WORD32 dst_strd, WORD32 nt, WORD32 mode); typedef void ihevc_hbd_intra_pred_chroma_mode_27_to_33_ft( UWORD16 *pu2_ref, WORD32 src_strd, UWORD16 *pu2_dst, WORD32 dst_strd, WORD32 nt, WORD32 mode); typedef void ihevc_hbd_intra_pred_chroma_ref_substitution_ft(UWORD16 *pu2_top_left, UWORD16 *pu2_top, UWORD16 *pu2_left, WORD32 src_strd, WORD32 nt, WORD32 nbr_flags, UWORD16 *pu2_dst, WORD32 dst_strd, UWORD8 bit_depth); /* C function declarations */ ihevc_intra_pred_chroma_planar_ft ihevc_intra_pred_chroma_planar; ihevc_intra_pred_chroma_dc_ft ihevc_intra_pred_chroma_dc; ihevc_intra_pred_chroma_horz_ft ihevc_intra_pred_chroma_horz; ihevc_intra_pred_chroma_ver_ft ihevc_intra_pred_chroma_ver; ihevc_intra_pred_chroma_mode2_ft ihevc_intra_pred_chroma_mode2; ihevc_intra_pred_chroma_mode_18_34_ft ihevc_intra_pred_chroma_mode_18_34; ihevc_intra_pred_chroma_mode_3_to_9_ft ihevc_intra_pred_chroma_mode_3_to_9; ihevc_intra_pred_chroma_mode_11_to_17_ft ihevc_intra_pred_chroma_mode_11_to_17; ihevc_intra_pred_chroma_mode_19_to_25_ft ihevc_intra_pred_chroma_mode_19_to_25; ihevc_intra_pred_chroma_mode_27_to_33_ft ihevc_intra_pred_chroma_mode_27_to_33; ihevc_intra_pred_chroma_ref_substitution_ft ihevc_intra_pred_chroma_ref_substitution; ihevc_hbd_intra_pred_chroma_planar_ft ihevc_hbd_intra_pred_chroma_planar; ihevc_hbd_intra_pred_chroma_dc_ft ihevc_hbd_intra_pred_chroma_dc; ihevc_hbd_intra_pred_chroma_horz_ft ihevc_hbd_intra_pred_chroma_horz; ihevc_hbd_intra_pred_chroma_ver_ft ihevc_hbd_intra_pred_chroma_ver; ihevc_hbd_intra_pred_chroma_mode2_ft ihevc_hbd_intra_pred_chroma_mode2; ihevc_hbd_intra_pred_chroma_mode_18_34_ft ihevc_hbd_intra_pred_chroma_mode_18_34; ihevc_hbd_intra_pred_chroma_mode_3_to_9_ft ihevc_hbd_intra_pred_chroma_mode_3_to_9; ihevc_hbd_intra_pred_chroma_mode_11_to_17_ft ihevc_hbd_intra_pred_chroma_mode_11_to_17; ihevc_hbd_intra_pred_chroma_mode_19_to_25_ft ihevc_hbd_intra_pred_chroma_mode_19_to_25; ihevc_hbd_intra_pred_chroma_mode_27_to_33_ft ihevc_hbd_intra_pred_chroma_mode_27_to_33; ihevc_hbd_intra_pred_chroma_ref_substitution_ft ihevc_hbd_intra_pred_chroma_ref_substitution; /* C function declarations */ ihevc_intra_pred_chroma_planar_ft ihevc_intra_pred_chroma_planar; ihevc_intra_pred_chroma_dc_ft ihevc_intra_pred_chroma_dc; ihevc_intra_pred_chroma_horz_ft ihevc_intra_pred_chroma_horz; ihevc_intra_pred_chroma_ver_ft ihevc_intra_pred_chroma_ver; ihevc_intra_pred_chroma_mode2_ft ihevc_intra_pred_chroma_mode2; ihevc_intra_pred_chroma_mode_18_34_ft ihevc_intra_pred_chroma_mode_18_34; ihevc_intra_pred_chroma_mode_3_to_9_ft ihevc_intra_pred_chroma_mode_3_to_9; ihevc_intra_pred_chroma_mode_11_to_17_ft ihevc_intra_pred_chroma_mode_11_to_17; ihevc_intra_pred_chroma_mode_19_to_25_ft ihevc_intra_pred_chroma_mode_19_to_25; ihevc_intra_pred_chroma_mode_27_to_33_ft ihevc_intra_pred_chroma_mode_27_to_33; ihevc_intra_pred_chroma_ref_substitution_ft ihevc_intra_pred_chroma_ref_substitution; /* A9Q function declarations */ ihevc_intra_pred_chroma_planar_ft ihevc_intra_pred_chroma_planar_a9q; ihevc_intra_pred_chroma_dc_ft ihevc_intra_pred_chroma_dc_a9q; ihevc_intra_pred_chroma_horz_ft ihevc_intra_pred_chroma_horz_a9q; ihevc_intra_pred_chroma_ver_ft ihevc_intra_pred_chroma_ver_a9q; ihevc_intra_pred_chroma_mode2_ft ihevc_intra_pred_chroma_mode2_a9q; ihevc_intra_pred_chroma_mode_18_34_ft ihevc_intra_pred_chroma_mode_18_34_a9q; ihevc_intra_pred_chroma_mode_3_to_9_ft ihevc_intra_pred_chroma_mode_3_to_9_a9q; ihevc_intra_pred_chroma_mode_11_to_17_ft ihevc_intra_pred_chroma_mode_11_to_17_a9q; ihevc_intra_pred_chroma_mode_19_to_25_ft ihevc_intra_pred_chroma_mode_19_to_25_a9q; ihevc_intra_pred_chroma_mode_27_to_33_ft ihevc_intra_pred_chroma_mode_27_to_33_a9q; ihevc_intra_pred_chroma_ref_substitution_ft ihevc_intra_pred_chroma_ref_substitution_a9q; /* SSE4.2 function declarations */ ihevc_intra_pred_chroma_planar_ft ihevc_intra_pred_chroma_planar_neonintr; ihevc_intra_pred_chroma_dc_ft ihevc_intra_pred_chroma_dc_neonintr; ihevc_intra_pred_chroma_horz_ft ihevc_intra_pred_chroma_horz_neonintr; ihevc_intra_pred_chroma_ver_ft ihevc_intra_pred_chroma_ver_neonintr; ihevc_intra_pred_chroma_mode2_ft ihevc_intra_pred_chroma_mode2_neonintr; ihevc_intra_pred_chroma_mode_18_34_ft ihevc_intra_pred_chroma_mode_18_34_neonintr; ihevc_intra_pred_chroma_mode_3_to_9_ft ihevc_intra_pred_chroma_mode_3_to_9_neonintr; ihevc_intra_pred_chroma_mode_11_to_17_ft ihevc_intra_pred_chroma_mode_11_to_17_neonintr; ihevc_intra_pred_chroma_mode_19_to_25_ft ihevc_intra_pred_chroma_mode_19_to_25_neonintr; ihevc_intra_pred_chroma_mode_27_to_33_ft ihevc_intra_pred_chroma_mode_27_to_33_neonintr; ihevc_intra_pred_chroma_ref_substitution_ft ihevc_intra_pred_chroma_ref_substitution_neonintr; /* SSSE3 function declarations */ ihevc_intra_pred_chroma_planar_ft ihevc_intra_pred_chroma_planar_ssse3; ihevc_intra_pred_chroma_dc_ft ihevc_intra_pred_chroma_dc_ssse3; ihevc_intra_pred_chroma_horz_ft ihevc_intra_pred_chroma_horz_ssse3; ihevc_intra_pred_chroma_ver_ft ihevc_intra_pred_chroma_ver_ssse3; ihevc_intra_pred_chroma_mode2_ft ihevc_intra_pred_chroma_mode2_ssse3; ihevc_intra_pred_chroma_mode_18_34_ft ihevc_intra_pred_chroma_mode_18_34_ssse3; ihevc_intra_pred_chroma_mode_3_to_9_ft ihevc_intra_pred_chroma_mode_3_to_9_ssse3; ihevc_intra_pred_chroma_mode_11_to_17_ft ihevc_intra_pred_chroma_mode_11_to_17_ssse3; ihevc_intra_pred_chroma_mode_19_to_25_ft ihevc_intra_pred_chroma_mode_19_to_25_ssse3; ihevc_intra_pred_chroma_mode_27_to_33_ft ihevc_intra_pred_chroma_mode_27_to_33_ssse3; ihevc_intra_pred_chroma_ref_substitution_ft ihevc_intra_pred_chroma_ref_substitution_ssse3; /* SSE4.2 function declarations */ ihevc_intra_pred_chroma_planar_ft ihevc_intra_pred_chroma_planar_sse42; ihevc_intra_pred_chroma_dc_ft ihevc_intra_pred_chroma_dc_sse42; ihevc_intra_pred_chroma_ref_substitution_ft ihevc_intra_pred_chroma_ref_substitution_sse42; ihevc_hbd_intra_pred_chroma_planar_ft ihevc_hbd_intra_pred_chroma_planar_sse42; ihevc_hbd_intra_pred_chroma_dc_ft ihevc_hbd_intra_pred_chroma_dc_sse42; ihevc_hbd_intra_pred_chroma_horz_ft ihevc_hbd_intra_pred_chroma_horz_sse42; ihevc_hbd_intra_pred_chroma_ver_ft ihevc_hbd_intra_pred_chroma_ver_sse42; ihevc_hbd_intra_pred_chroma_mode2_ft ihevc_hbd_intra_pred_chroma_mode2_sse42; ihevc_hbd_intra_pred_chroma_mode_18_34_ft ihevc_hbd_intra_pred_chroma_mode_18_34_sse42; ihevc_hbd_intra_pred_chroma_mode_3_to_9_ft ihevc_hbd_intra_pred_chroma_mode_3_to_9_sse42; ihevc_hbd_intra_pred_chroma_mode_11_to_17_ft ihevc_hbd_intra_pred_chroma_mode_11_to_17_sse42; ihevc_hbd_intra_pred_chroma_mode_19_to_25_ft ihevc_hbd_intra_pred_chroma_mode_19_to_25_sse42; ihevc_hbd_intra_pred_chroma_mode_27_to_33_ft ihevc_hbd_intra_pred_chroma_mode_27_to_33_sse42; ihevc_hbd_intra_pred_chroma_ref_substitution_ft ihevc_hbd_intra_pred_chroma_ref_substitution_sse42; ihevc_intra_pred_chroma_planar_ft ihevc_intra_pred_chroma_planar_a9a; ihevc_intra_pred_chroma_dc_ft ihevc_intra_pred_chroma_dc_a9a; ihevc_intra_pred_chroma_horz_ft ihevc_intra_pred_chroma_horz_a9a; ihevc_intra_pred_chroma_ver_ft ihevc_intra_pred_chroma_ver_a9a; ihevc_intra_pred_chroma_mode2_ft ihevc_intra_pred_chroma_mode2_a9a; ihevc_intra_pred_chroma_mode_18_34_ft ihevc_intra_pred_chroma_mode_18_34_a9a; ihevc_intra_pred_chroma_mode_3_to_9_ft ihevc_intra_pred_chroma_mode_3_to_9_a9a; ihevc_intra_pred_chroma_mode_11_to_17_ft ihevc_intra_pred_chroma_mode_11_to_17_a9a; ihevc_intra_pred_chroma_mode_19_to_25_ft ihevc_intra_pred_chroma_mode_19_to_25_a9a; ihevc_intra_pred_chroma_mode_27_to_33_ft ihevc_intra_pred_chroma_mode_27_to_33_a9a; ihevc_intra_pred_chroma_ref_substitution_ft ihevc_intra_pred_chroma_ref_substitution_a9a; /* AVX function declaration*/ ihevc_intra_pred_chroma_dc_ft ihevc_intra_pred_chroma_dc_avx; ihevc_intra_pred_chroma_mode_18_34_ft ihevc_intra_pred_chroma_mode_18_34_avx; ihevc_intra_pred_chroma_ver_ft ihevc_intra_pred_chroma_ver_avx; ihevc_hbd_intra_pred_chroma_dc_ft ihevc_hbd_intra_pred_chroma_dc_avx; ihevc_hbd_intra_pred_chroma_mode_18_34_ft ihevc_hbd_intra_pred_chroma_mode_18_34_avx; ihevc_hbd_intra_pred_chroma_ver_ft ihevc_hbd_intra_pred_chroma_ver_avx; /* armv8 function declarations */ ihevc_intra_pred_chroma_planar_ft ihevc_intra_pred_chroma_planar_av8; ihevc_intra_pred_chroma_dc_ft ihevc_intra_pred_chroma_dc_av8; ihevc_intra_pred_chroma_horz_ft ihevc_intra_pred_chroma_horz_av8; ihevc_intra_pred_chroma_ver_ft ihevc_intra_pred_chroma_ver_av8; ihevc_intra_pred_chroma_mode2_ft ihevc_intra_pred_chroma_mode2_av8; ihevc_intra_pred_chroma_mode_18_34_ft ihevc_intra_pred_chroma_mode_18_34_av8; ihevc_intra_pred_chroma_mode_3_to_9_ft ihevc_intra_pred_chroma_mode_3_to_9_av8; ihevc_intra_pred_chroma_mode_11_to_17_ft ihevc_intra_pred_chroma_mode_11_to_17_av8; ihevc_intra_pred_chroma_mode_19_to_25_ft ihevc_intra_pred_chroma_mode_19_to_25_av8; ihevc_intra_pred_chroma_mode_27_to_33_ft ihevc_intra_pred_chroma_mode_27_to_33_av8; ihevc_intra_pred_chroma_ref_substitution_ft ihevc_intra_pred_chroma_ref_substitution_av8; #endif /* IHEVC_CHROMA_INTRA_PRED_H_ */