359 lines
16 KiB
C
359 lines
16 KiB
C
/******************************************************************************
|
|
*
|
|
* 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_ */
|