aosp12/external/libhevc/common/ihevc_chroma_intra_pred.h

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_ */