ih264d: Modify to compile with AppleClang & for M1

This commit is contained in:
Exverge 2024-07-01 17:46:22 -04:00
parent 08630f5c04
commit d2a9c317d6
No known key found for this signature in database
GPG key ID: 19AAFC0AC6A9B35A
10 changed files with 149 additions and 93 deletions

View file

@ -140,7 +140,7 @@ target_sources(ih264d PRIVATE
"decoder/x86/ih264d_function_selector_sse42.c" "decoder/x86/ih264d_function_selector_sse42.c"
"decoder/x86/ih264d_function_selector_ssse3.c" "decoder/x86/ih264d_function_selector_ssse3.c"
) )
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64")
enable_language( C CXX ASM ) enable_language( C CXX ASM )
set(LIBAVCDEC_ARM_INCLUDES "common/armv8" "decoder/arm") set(LIBAVCDEC_ARM_INCLUDES "common/armv8" "decoder/arm")
include_directories("common/" "decoder/" ${LIBAVCDEC_ARM_INCLUDES}) include_directories("common/" "decoder/" ${LIBAVCDEC_ARM_INCLUDES})

View file

@ -53,10 +53,13 @@
.text .text
.p2align 2 .p2align 2
.include "ih264_neon_macros.s" .include "ih264_neon_macros.s"
#ifdef __APPLE__
.extern _ih264_gai1_intrapred_chroma_plane_coeffs1
.extern _ih264_gai1_intrapred_chroma_plane_coeffs2
#else
.extern ih264_gai1_intrapred_chroma_plane_coeffs1 .extern ih264_gai1_intrapred_chroma_plane_coeffs1
.extern ih264_gai1_intrapred_chroma_plane_coeffs2 .extern ih264_gai1_intrapred_chroma_plane_coeffs2
#endif
///** ///**
@ -429,8 +432,13 @@ ih264_intra_pred_chroma_8x8_mode_plane_av8:
rev64 v7.4h, v2.4h rev64 v7.4h, v2.4h
ld1 {v3.2s}, [x10] ld1 {v3.2s}, [x10]
sub x5, x3, #8 sub x5, x3, #8
#ifdef __APPLE__
adrp x12, _ih264_gai1_intrapred_chroma_plane_coeffs1@GOTPAGE
ldr x12, [x12, _ih264_gai1_intrapred_chroma_plane_coeffs1@GOTPAGEOFF]
#else
adrp x12, :got:ih264_gai1_intrapred_chroma_plane_coeffs1 adrp x12, :got:ih264_gai1_intrapred_chroma_plane_coeffs1
ldr x12, [x12, #:got_lo12:ih264_gai1_intrapred_chroma_plane_coeffs1] ldr x12, [x12, #:got_lo12:ih264_gai1_intrapred_chroma_plane_coeffs1]
#endif
usubl v10.8h, v5.8b, v1.8b usubl v10.8h, v5.8b, v1.8b
ld1 {v8.8b, v9.8b}, [x12] // Load multiplication factors 1 to 8 into D3 ld1 {v8.8b, v9.8b}, [x12] // Load multiplication factors 1 to 8 into D3
mov v8.d[1], v9.d[0] mov v8.d[1], v9.d[0]
@ -484,10 +492,13 @@ ih264_intra_pred_chroma_8x8_mode_plane_av8:
zip1 v1.8h, v0.8h, v2.8h zip1 v1.8h, v0.8h, v2.8h
zip2 v2.8h, v0.8h, v2.8h zip2 v2.8h, v0.8h, v2.8h
mov v0.16b, v1.16b mov v0.16b, v1.16b
#ifdef __APPLE__
adrp x12, _ih264_gai1_intrapred_chroma_plane_coeffs2@GOTPAGE
ldr x12, [x12, _ih264_gai1_intrapred_chroma_plane_coeffs2@GOTPAGEOFF]
#else
adrp x12, :got:ih264_gai1_intrapred_chroma_plane_coeffs2 adrp x12, :got:ih264_gai1_intrapred_chroma_plane_coeffs2
ldr x12, [x12, #:got_lo12:ih264_gai1_intrapred_chroma_plane_coeffs2] ldr x12, [x12, #:got_lo12:ih264_gai1_intrapred_chroma_plane_coeffs2]
#endif
ld1 {v8.2s, v9.2s}, [x12] ld1 {v8.2s, v9.2s}, [x12]
mov v8.d[1], v9.d[0] mov v8.d[1], v9.d[0]
mov v10.16b, v8.16b mov v10.16b, v8.16b

View file

@ -53,7 +53,11 @@
.text .text
.p2align 2 .p2align 2
.include "ih264_neon_macros.s" .include "ih264_neon_macros.s"
#ifdef __APPLE__
.extern _ih264_gai1_intrapred_luma_plane_coeffs
#else
.extern ih264_gai1_intrapred_luma_plane_coeffs .extern ih264_gai1_intrapred_luma_plane_coeffs
#endif
@ -431,10 +435,13 @@ ih264_intra_pred_luma_16x16_mode_plane_av8:
mov x10, x1 //top_left mov x10, x1 //top_left
mov x4, #-1 mov x4, #-1
ld1 {v2.2s}, [x1], x8 ld1 {v2.2s}, [x1], x8
#ifdef __APPLE__
adrp x7, _ih264_gai1_intrapred_luma_plane_coeffs@GOTPAGE
ldr x7, [x7, _ih264_gai1_intrapred_luma_plane_coeffs@GOTPAGEOFF]
#else
adrp x7, :got:ih264_gai1_intrapred_luma_plane_coeffs adrp x7, :got:ih264_gai1_intrapred_luma_plane_coeffs
ldr x7, [x7, #:got_lo12:ih264_gai1_intrapred_luma_plane_coeffs] ldr x7, [x7, #:got_lo12:ih264_gai1_intrapred_luma_plane_coeffs]
#endif
ld1 {v0.2s}, [x1] ld1 {v0.2s}, [x1]
rev64 v2.8b, v2.8b rev64 v2.8b, v2.8b
ld1 {v6.2s, v7.2s}, [x7] ld1 {v6.2s, v7.2s}, [x7]

View file

@ -56,8 +56,11 @@
.text .text
.p2align 2 .p2align 2
.include "ih264_neon_macros.s" .include "ih264_neon_macros.s"
#ifdef __APPLE__
.extern _ih264_gai1_intrapred_luma_8x8_horz_u
#else
.extern ih264_gai1_intrapred_luma_8x8_horz_u .extern ih264_gai1_intrapred_luma_8x8_horz_u
#endif
@ -1029,9 +1032,13 @@ ih264_intra_pred_luma_8x8_mode_horz_u_av8:
mov v3.d[0], v2.d[1] mov v3.d[0], v2.d[1]
ext v4.16b, v2.16b , v2.16b , #1 ext v4.16b, v2.16b , v2.16b , #1
mov v5.d[0], v4.d[1] mov v5.d[0], v4.d[1]
#ifdef __APPLE__
adrp x12, _ih264_gai1_intrapred_luma_8x8_horz_u@GOTPAGE
ldr x12, [x12, _ih264_gai1_intrapred_luma_8x8_horz_u@GOTPAGEOFF]
#else
adrp x12, :got:ih264_gai1_intrapred_luma_8x8_horz_u adrp x12, :got:ih264_gai1_intrapred_luma_8x8_horz_u
ldr x12, [x12, #:got_lo12:ih264_gai1_intrapred_luma_8x8_horz_u] ldr x12, [x12, #:got_lo12:ih264_gai1_intrapred_luma_8x8_horz_u]
#endif
uaddl v20.8h, v0.8b, v2.8b uaddl v20.8h, v0.8b, v2.8b
uaddl v22.8h, v1.8b, v3.8b uaddl v22.8h, v1.8b, v3.8b
uaddl v24.8h, v2.8b, v4.8b uaddl v24.8h, v2.8b, v4.8b

View file

@ -40,6 +40,11 @@
/*****************************************************************************/ /*****************************************************************************/
/* Extern Function Declarations */ /* Extern Function Declarations */
/*****************************************************************************/ /*****************************************************************************/
#ifdef __APPLE__
#define av8(name) name __asm__(#name)
#else
#define av8(name) name
#endif
typedef void ih264_deblk_edge_bslt4_ft(UWORD8 *pu1_src, typedef void ih264_deblk_edge_bslt4_ft(UWORD8 *pu1_src,
WORD32 src_strd, WORD32 src_strd,
@ -133,34 +138,34 @@ ih264_deblk_chroma_edge_bslt4_ft ih264_deblk_chroma_vert_bslt4_mbaff_a9;
ih264_deblk_chroma_edge_bslt4_ft ih264_deblk_chroma_horz_bslt4_mbaff_a9; ih264_deblk_chroma_edge_bslt4_ft ih264_deblk_chroma_horz_bslt4_mbaff_a9;
/*AV8*/ /*AV8*/
ih264_deblk_edge_bs4_ft ih264_deblk_luma_horz_bs4_av8; ih264_deblk_edge_bs4_ft av8(ih264_deblk_luma_horz_bs4_av8);
ih264_deblk_edge_bs4_ft ih264_deblk_luma_vert_bs4_av8; ih264_deblk_edge_bs4_ft av8(ih264_deblk_luma_vert_bs4_av8);
ih264_deblk_edge_bs4_ft ih264_deblk_luma_vert_bs4_mbaff_av8; ih264_deblk_edge_bs4_ft av8(ih264_deblk_luma_vert_bs4_mbaff_av8);
ih264_deblk_edge_bs4_ft ih264_deblk_chroma_horz_bs4_bp_av8; ih264_deblk_edge_bs4_ft av8(ih264_deblk_chroma_horz_bs4_bp_av8);
ih264_deblk_edge_bs4_ft ih264_deblk_chroma_vert_bs4_bp_av8; ih264_deblk_edge_bs4_ft av8(ih264_deblk_chroma_vert_bs4_bp_av8);
ih264_deblk_edge_bs4_ft ih264_deblk_chroma_vert_bs4_mbaff_bp_av8; ih264_deblk_edge_bs4_ft av8(ih264_deblk_chroma_vert_bs4_mbaff_bp_av8);
ih264_deblk_edge_bslt4_ft ih264_deblk_luma_horz_bslt4_av8; ih264_deblk_edge_bslt4_ft av8(ih264_deblk_luma_horz_bslt4_av8);
ih264_deblk_edge_bslt4_ft ih264_deblk_luma_vert_bslt4_av8; ih264_deblk_edge_bslt4_ft av8(ih264_deblk_luma_vert_bslt4_av8);
ih264_deblk_edge_bslt4_ft ih264_deblk_luma_vert_bslt4_mbaff_av8; ih264_deblk_edge_bslt4_ft av8(ih264_deblk_luma_vert_bslt4_mbaff_av8);
ih264_deblk_edge_bslt4_ft ih264_deblk_chroma_horz_bslt4_bp_av8; ih264_deblk_edge_bslt4_ft av8(ih264_deblk_chroma_horz_bslt4_bp_av8);
ih264_deblk_edge_bslt4_ft ih264_deblk_chroma_vert_bslt4_bp_av8; ih264_deblk_edge_bslt4_ft av8(ih264_deblk_chroma_vert_bslt4_bp_av8);
ih264_deblk_edge_bslt4_ft ih264_deblk_chroma_vert_bslt4_mbaff_bp_av8; ih264_deblk_edge_bslt4_ft av8(ih264_deblk_chroma_vert_bslt4_mbaff_bp_av8);
ih264_deblk_chroma_edge_bs4_ft ih264_deblk_chroma_vert_bs4_av8; ih264_deblk_chroma_edge_bs4_ft av8(ih264_deblk_chroma_vert_bs4_av8);
ih264_deblk_chroma_edge_bs4_ft ih264_deblk_chroma_horz_bs4_av8; ih264_deblk_chroma_edge_bs4_ft av8(ih264_deblk_chroma_horz_bs4_av8);
ih264_deblk_chroma_edge_bs4_ft ih264_deblk_chroma_vert_bs4_mbaff_av8; ih264_deblk_chroma_edge_bs4_ft av8(ih264_deblk_chroma_vert_bs4_mbaff_av8);
ih264_deblk_chroma_edge_bs4_ft ih264_deblk_chroma_horz_bs4_mbaff_av8; ih264_deblk_chroma_edge_bs4_ft av8(ih264_deblk_chroma_horz_bs4_mbaff_av8);
ih264_deblk_chroma_edge_bslt4_ft ih264_deblk_chroma_vert_bslt4_av8; ih264_deblk_chroma_edge_bslt4_ft av8(ih264_deblk_chroma_vert_bslt4_av8);
ih264_deblk_chroma_edge_bslt4_ft ih264_deblk_chroma_horz_bslt4_av8; ih264_deblk_chroma_edge_bslt4_ft av8(ih264_deblk_chroma_horz_bslt4_av8);
ih264_deblk_chroma_edge_bslt4_ft ih264_deblk_chroma_vert_bslt4_mbaff_av8; ih264_deblk_chroma_edge_bslt4_ft av8(ih264_deblk_chroma_vert_bslt4_mbaff_av8);
ih264_deblk_chroma_edge_bslt4_ft ih264_deblk_chroma_horz_bslt4_mbaff_av8; ih264_deblk_chroma_edge_bslt4_ft av8(ih264_deblk_chroma_horz_bslt4_mbaff_av8);
/*SSE3*/ /*SSE3*/
ih264_deblk_edge_bs4_ft ih264_deblk_luma_horz_bs4_ssse3; ih264_deblk_edge_bs4_ft ih264_deblk_luma_horz_bs4_ssse3;

View file

@ -100,6 +100,12 @@ extern const WORD32 ih264_g_six_tap[3];/* coefficients for 6 tap filtering*/
/* Extern Function Declarations */ /* Extern Function Declarations */
/*****************************************************************************/ /*****************************************************************************/
#ifdef __APPLE__
#define av8(name) name __asm__(#name)
#else
#define av8(name) name
#endif
typedef void ih264_inter_pred_luma_ft(UWORD8 *pu1_src, typedef void ih264_inter_pred_luma_ft(UWORD8 *pu1_src,
UWORD8 *pu1_dst, UWORD8 *pu1_dst,
WORD32 src_strd, WORD32 src_strd,
@ -186,31 +192,31 @@ ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_qpel_a9q;
ih264_inter_pred_chroma_ft ih264_inter_pred_chroma_a9q; ih264_inter_pred_chroma_ft ih264_inter_pred_chroma_a9q;
/* AV8 NEON Declarations */ /* AV8 NEON Declarations */
ih264_inter_pred_luma_ft ih264_inter_pred_luma_copy_av8; ih264_inter_pred_luma_ft av8(ih264_inter_pred_luma_copy_av8);
ih264_interleave_copy_ft ih264_interleave_copy_av8; ih264_interleave_copy_ft av8(ih264_interleave_copy_av8);
ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_av8; ih264_inter_pred_luma_ft av8(ih264_inter_pred_luma_horz_av8);
ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_av8; ih264_inter_pred_luma_ft av8(ih264_inter_pred_luma_vert_av8);
ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_hpel_av8; ih264_inter_pred_luma_ft av8(ih264_inter_pred_luma_horz_hpel_vert_hpel_av8);
ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_av8; ih264_inter_pred_luma_ft av8(ih264_inter_pred_luma_horz_qpel_av8);
ih264_inter_pred_luma_ft ih264_inter_pred_luma_vert_qpel_av8; ih264_inter_pred_luma_ft av8(ih264_inter_pred_luma_vert_qpel_av8);
ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_qpel_av8; ih264_inter_pred_luma_ft av8(ih264_inter_pred_luma_horz_qpel_vert_qpel_av8);
ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_qpel_vert_hpel_av8; ih264_inter_pred_luma_ft av8(ih264_inter_pred_luma_horz_qpel_vert_hpel_av8);
ih264_inter_pred_luma_ft ih264_inter_pred_luma_horz_hpel_vert_qpel_av8; ih264_inter_pred_luma_ft av8(ih264_inter_pred_luma_horz_hpel_vert_qpel_av8);
ih264_inter_pred_chroma_ft ih264_inter_pred_chroma_av8; ih264_inter_pred_chroma_ft av8(ih264_inter_pred_chroma_av8);
ih264_inter_pred_chroma_ft ih264_inter_pred_chroma_dx_zero_av8; ih264_inter_pred_chroma_ft av8(ih264_inter_pred_chroma_dx_zero_av8);
ih264_inter_pred_chroma_ft ih264_inter_pred_chroma_dy_zero_av8; ih264_inter_pred_chroma_ft av8(ih264_inter_pred_chroma_dy_zero_av8);
/* SSSE3 Intrinsic Declarations */ /* SSSE3 Intrinsic Declarations */

View file

@ -46,6 +46,12 @@
#define FILT121(a,b,c) ((a + (b<<1) + c + 2)>>2) #define FILT121(a,b,c) ((a + (b<<1) + c + 2)>>2)
/*! Filter (1,1) i.e (a + b) / 2 */ /*! Filter (1,1) i.e (a + b) / 2 */
#define FILT11(a,b) ((a + b + 1)>>1) #define FILT11(a,b) ((a + b + 1)>>1)
#ifdef __APPLE__
#define av8(name) name __asm__(#name)
#else
#define av8(name) name
#endif
/*****************************************************************************/ /*****************************************************************************/
/* Global Variables */ /* Global Variables */
/*****************************************************************************/ /*****************************************************************************/
@ -60,7 +66,6 @@ extern const WORD8 ih264_gai1_intrapred_luma_8x8_horz_u[];
/* Extern Function Declarations */ /* Extern Function Declarations */
/*****************************************************************************/ /*****************************************************************************/
typedef void ih264_intra_pred_ref_filtering_ft(UWORD8 *pu1_left, typedef void ih264_intra_pred_ref_filtering_ft(UWORD8 *pu1_left,
UWORD8 *pu1_topleft, UWORD8 *pu1_topleft,
UWORD8 *pu1_top, UWORD8 *pu1_top,
@ -270,62 +275,62 @@ ih264_intra_pred_chroma_ft ih264_intra_pred_chroma_8x8_mode_plane_ssse3;
/* AV8 Definition */ /* AV8 Definition */
/* Luma 4x4 Intra pred filters */ /* Luma 4x4 Intra pred filters */
ih264_intra_pred_luma_ft ih264_intra_pred_luma_4x4_mode_vert_av8; ih264_intra_pred_luma_ft av8(ih264_intra_pred_luma_4x4_mode_vert_av8);
ih264_intra_pred_luma_ft ih264_intra_pred_luma_4x4_mode_horz_av8; ih264_intra_pred_luma_ft av8(ih264_intra_pred_luma_4x4_mode_horz_av8);
ih264_intra_pred_luma_ft ih264_intra_pred_luma_4x4_mode_dc_av8; ih264_intra_pred_luma_ft av8(ih264_intra_pred_luma_4x4_mode_dc_av8);
ih264_intra_pred_luma_ft ih264_intra_pred_luma_4x4_mode_diag_dl_av8; ih264_intra_pred_luma_ft av8(ih264_intra_pred_luma_4x4_mode_diag_dl_av8);
ih264_intra_pred_luma_ft ih264_intra_pred_luma_4x4_mode_diag_dr_av8; ih264_intra_pred_luma_ft av8(ih264_intra_pred_luma_4x4_mode_diag_dr_av8);
ih264_intra_pred_luma_ft ih264_intra_pred_luma_4x4_mode_vert_r_av8; ih264_intra_pred_luma_ft av8(ih264_intra_pred_luma_4x4_mode_vert_r_av8);
ih264_intra_pred_luma_ft ih264_intra_pred_luma_4x4_mode_horz_d_av8; ih264_intra_pred_luma_ft av8(ih264_intra_pred_luma_4x4_mode_horz_d_av8);
ih264_intra_pred_luma_ft ih264_intra_pred_luma_4x4_mode_vert_l_av8; ih264_intra_pred_luma_ft av8(ih264_intra_pred_luma_4x4_mode_vert_l_av8);
ih264_intra_pred_luma_ft ih264_intra_pred_luma_4x4_mode_horz_u_av8; ih264_intra_pred_luma_ft av8(ih264_intra_pred_luma_4x4_mode_horz_u_av8);
/* Luma 8x8 Intra pred filters */ /* Luma 8x8 Intra pred filters */
ih264_intra_pred_luma_ft ih264_intra_pred_luma_8x8_mode_vert_av8; ih264_intra_pred_luma_ft av8(ih264_intra_pred_luma_8x8_mode_vert_av8);
ih264_intra_pred_luma_ft ih264_intra_pred_luma_8x8_mode_horz_av8; ih264_intra_pred_luma_ft av8(ih264_intra_pred_luma_8x8_mode_horz_av8);
ih264_intra_pred_luma_ft ih264_intra_pred_luma_8x8_mode_dc_av8; ih264_intra_pred_luma_ft av8(ih264_intra_pred_luma_8x8_mode_dc_av8);
ih264_intra_pred_luma_ft ih264_intra_pred_luma_8x8_mode_diag_dl_av8; ih264_intra_pred_luma_ft av8(ih264_intra_pred_luma_8x8_mode_diag_dl_av8);
ih264_intra_pred_luma_ft ih264_intra_pred_luma_8x8_mode_diag_dr_av8; ih264_intra_pred_luma_ft av8(ih264_intra_pred_luma_8x8_mode_diag_dr_av8);
ih264_intra_pred_luma_ft ih264_intra_pred_luma_8x8_mode_vert_r_av8; ih264_intra_pred_luma_ft av8(ih264_intra_pred_luma_8x8_mode_vert_r_av8);
ih264_intra_pred_luma_ft ih264_intra_pred_luma_8x8_mode_horz_d_av8; ih264_intra_pred_luma_ft av8(ih264_intra_pred_luma_8x8_mode_horz_d_av8);
ih264_intra_pred_luma_ft ih264_intra_pred_luma_8x8_mode_vert_l_av8; ih264_intra_pred_luma_ft av8(ih264_intra_pred_luma_8x8_mode_vert_l_av8);
ih264_intra_pred_luma_ft ih264_intra_pred_luma_8x8_mode_horz_u_av8; ih264_intra_pred_luma_ft av8(ih264_intra_pred_luma_8x8_mode_horz_u_av8);
/* Luma 16x16 Intra pred filters */ /* Luma 16x16 Intra pred filters */
ih264_intra_pred_luma_ft ih264_intra_pred_luma_16x16_mode_vert_av8; ih264_intra_pred_luma_ft av8(ih264_intra_pred_luma_16x16_mode_vert_av8);
ih264_intra_pred_luma_ft ih264_intra_pred_luma_16x16_mode_horz_av8; ih264_intra_pred_luma_ft av8(ih264_intra_pred_luma_16x16_mode_horz_av8);
ih264_intra_pred_luma_ft ih264_intra_pred_luma_16x16_mode_dc_av8; ih264_intra_pred_luma_ft av8(ih264_intra_pred_luma_16x16_mode_dc_av8);
ih264_intra_pred_luma_ft ih264_intra_pred_luma_16x16_mode_plane_av8; ih264_intra_pred_luma_ft av8(ih264_intra_pred_luma_16x16_mode_plane_av8);
/* Chroma 8x8 Intra pred filters */ /* Chroma 8x8 Intra pred filters */
ih264_intra_pred_chroma_ft ih264_intra_pred_chroma_8x8_mode_dc_av8; ih264_intra_pred_chroma_ft av8(ih264_intra_pred_chroma_8x8_mode_dc_av8);
ih264_intra_pred_chroma_ft ih264_intra_pred_chroma_8x8_mode_horz_av8; ih264_intra_pred_chroma_ft av8(ih264_intra_pred_chroma_8x8_mode_horz_av8);
ih264_intra_pred_chroma_ft ih264_intra_pred_chroma_8x8_mode_vert_av8; ih264_intra_pred_chroma_ft av8(ih264_intra_pred_chroma_8x8_mode_vert_av8);
ih264_intra_pred_chroma_ft ih264_intra_pred_chroma_8x8_mode_plane_av8; ih264_intra_pred_chroma_ft av8(ih264_intra_pred_chroma_8x8_mode_plane_av8);
#endif /* IH264_INTRA_PRED_FILTERS_H_ */ #endif /* IH264_INTRA_PRED_FILTERS_H_ */

View file

@ -40,6 +40,11 @@
/*****************************************************************************/ /*****************************************************************************/
/* Function Declarations */ /* Function Declarations */
/*****************************************************************************/ /*****************************************************************************/
#ifdef __APPLE__
#define av8(name) name __asm__(#name)
#else
#define av8(name) name
#endif
typedef void ih264_pad(UWORD8 *, WORD32, WORD32, WORD32); typedef void ih264_pad(UWORD8 *, WORD32, WORD32, WORD32);
@ -59,11 +64,11 @@ ih264_pad ih264_pad_right_luma_a9q;
ih264_pad ih264_pad_right_chroma_a9q; ih264_pad ih264_pad_right_chroma_a9q;
/* AV8 function declarations */ /* AV8 function declarations */
ih264_pad ih264_pad_top_av8; ih264_pad av8(ih264_pad_top_av8);
ih264_pad ih264_pad_left_luma_av8; ih264_pad av8(ih264_pad_left_luma_av8);
ih264_pad ih264_pad_left_chroma_av8; ih264_pad av8(ih264_pad_left_chroma_av8);
ih264_pad ih264_pad_right_luma_av8; ih264_pad av8(ih264_pad_right_luma_av8);
ih264_pad ih264_pad_right_chroma_av8; ih264_pad av8(ih264_pad_right_chroma_av8);
ih264_pad ih264_pad_left_luma_ssse3; ih264_pad ih264_pad_left_luma_ssse3;

View file

@ -39,7 +39,11 @@
/*****************************************************************************/ /*****************************************************************************/
/* Extern Function Declarations */ /* Extern Function Declarations */
/*****************************************************************************/ /*****************************************************************************/
#ifdef __APPLE__
#define av8(name) name __asm__(#name)
#else
#define av8(name) name
#endif
typedef void ih264_resi_trans_dctrans_quant_ft(UWORD8*pu1_src, typedef void ih264_resi_trans_dctrans_quant_ft(UWORD8*pu1_src,
UWORD8 *pu1_pred, UWORD8 *pu1_pred,
@ -199,18 +203,18 @@ ih264_hadamard_quant_ft ih264_hadamard_quant_4x4_a9;
ih264_hadamard_quant_ft ih264_hadamard_quant_2x2_uv_a9; ih264_hadamard_quant_ft ih264_hadamard_quant_2x2_uv_a9;
/*Av8 Declarations*/ /*Av8 Declarations*/
ih264_resi_trans_quant_ft ih264_resi_trans_quant_4x4_av8; ih264_resi_trans_quant_ft av8(ih264_resi_trans_quant_4x4_av8);
ih264_resi_trans_quant_ft ih264_resi_trans_quant_chroma_4x4_av8; ih264_resi_trans_quant_ft av8(ih264_resi_trans_quant_chroma_4x4_av8);
ih264_iquant_itrans_recon_ft ih264_iquant_itrans_recon_4x4_av8; ih264_iquant_itrans_recon_ft av8(ih264_iquant_itrans_recon_4x4_av8);
ih264_iquant_itrans_recon_ft ih264_iquant_itrans_recon_8x8_av8; ih264_iquant_itrans_recon_ft av8(ih264_iquant_itrans_recon_8x8_av8);
ih264_iquant_itrans_recon_ft ih264_iquant_itrans_recon_4x4_dc_av8; ih264_iquant_itrans_recon_ft av8(ih264_iquant_itrans_recon_4x4_dc_av8);
ih264_iquant_itrans_recon_ft ih264_iquant_itrans_recon_8x8_dc_av8; ih264_iquant_itrans_recon_ft av8(ih264_iquant_itrans_recon_8x8_dc_av8);
ih264_iquant_itrans_recon_chroma_ft ih264_iquant_itrans_recon_chroma_4x4_av8; ih264_iquant_itrans_recon_chroma_ft av8(ih264_iquant_itrans_recon_chroma_4x4_av8);
ih264_iquant_itrans_recon_chroma_ft ih264_iquant_itrans_recon_chroma_4x4_dc_av8; ih264_iquant_itrans_recon_chroma_ft av8(ih264_iquant_itrans_recon_chroma_4x4_dc_av8);
ih264_ihadamard_scaling_ft ih264_ihadamard_scaling_4x4_av8; ih264_ihadamard_scaling_ft av8(ih264_ihadamard_scaling_4x4_av8);
ih264_ihadamard_scaling_ft ih264_ihadamard_scaling_2x2_uv_av8; ih264_ihadamard_scaling_ft av8(ih264_ihadamard_scaling_2x2_uv_av8);
ih264_hadamard_quant_ft ih264_hadamard_quant_4x4_av8; ih264_hadamard_quant_ft av8(ih264_hadamard_quant_4x4_av8);
ih264_hadamard_quant_ft ih264_hadamard_quant_2x2_uv_av8; ih264_hadamard_quant_ft av8(ih264_hadamard_quant_2x2_uv_av8);
/*SSSE3 Declarations*/ /*SSSE3 Declarations*/
ih264_iquant_itrans_recon_ft ih264_iquant_itrans_recon_4x4_ssse3; ih264_iquant_itrans_recon_ft ih264_iquant_itrans_recon_4x4_ssse3;

View file

@ -68,6 +68,12 @@
/*****************************************************************************/ /*****************************************************************************/
/* Extern Function Declarations */ /* Extern Function Declarations */
/*****************************************************************************/ /*****************************************************************************/
#ifdef __APPLE__
#define av8(name) name __asm__(#name)
#else
#define av8(name) name
#endif
typedef void ih264_default_weighted_pred_ft(UWORD8 *puc_src1, typedef void ih264_default_weighted_pred_ft(UWORD8 *puc_src1,
UWORD8 *puc_src2, UWORD8 *puc_src2,
UWORD8 *puc_dst, UWORD8 *puc_dst,
@ -132,17 +138,17 @@ ih264_weighted_bi_pred_ft ih264_weighted_bi_pred_chroma_a9q;
/* AV8 NEON Declarations */ /* AV8 NEON Declarations */
ih264_default_weighted_pred_ft ih264_default_weighted_pred_luma_av8; ih264_default_weighted_pred_ft av8(ih264_default_weighted_pred_luma_av8);
ih264_default_weighted_pred_ft ih264_default_weighted_pred_chroma_av8; ih264_default_weighted_pred_ft av8(ih264_default_weighted_pred_chroma_av8);
ih264_weighted_pred_ft ih264_weighted_pred_luma_av8; ih264_weighted_pred_ft av8(ih264_weighted_pred_luma_av8);
ih264_weighted_pred_ft ih264_weighted_pred_chroma_av8; ih264_weighted_pred_ft av8(ih264_weighted_pred_chroma_av8);
ih264_weighted_bi_pred_ft ih264_weighted_bi_pred_luma_av8; ih264_weighted_bi_pred_ft av8(ih264_weighted_bi_pred_luma_av8);
ih264_weighted_bi_pred_ft ih264_weighted_bi_pred_chroma_av8; ih264_weighted_bi_pred_ft av8(ih264_weighted_bi_pred_chroma_av8);
/* SSE42 Intrinsic Declarations */ /* SSE42 Intrinsic Declarations */