From 062864f4cc2179b6f222ae337538c18bfd08037a Mon Sep 17 00:00:00 2001 From: Johann Date: Mon, 24 Oct 2011 15:24:07 -0700 Subject: [PATCH] Fix incorrect pointer definition Global function pointers can not be defined in header files. Restructure vpx_scale pointer configuration. Change-Id: I6f568a263ad770d32f530abad6007f990fd1003a --- vpx_scale/arm/scalesystemdependent.c | 54 ++------------------------------ vpx_scale/arm/yv12extend_arm.h | 3 ++ vpx_scale/generic/scalesystemdependent.c | 8 +++++ vpx_scale/vpx_scale.mk | 5 ++- vpx_scale/yv12extend.h | 7 +++-- 5 files changed, 19 insertions(+), 58 deletions(-) diff --git a/vpx_scale/arm/scalesystemdependent.c b/vpx_scale/arm/scalesystemdependent.c index 549736a..a6ba5bd 100644 --- a/vpx_scale/arm/scalesystemdependent.c +++ b/vpx_scale/arm/scalesystemdependent.c @@ -14,61 +14,11 @@ #include "vpx_scale/vpxscale.h" #include "vpx_scale/yv12extend.h" -/**************************************************************************** - * - * ROUTINE : vp8_scale_machine_specific_config - * - * INPUTS : UINT32 Version : Codec version number. - * - * OUTPUTS : None. - * - * RETURNS : void - * - * FUNCTION : Checks for machine specifc features such as MMX support - * sets appropriate flags and function pointers. - * - * SPECIAL NOTES : None. - * - ****************************************************************************/ -void vp8_scale_machine_specific_config() +void vp8_arch_arm_vpx_scale_init() { -#if HAVE_ARMV7 && CONFIG_RUNTIME_CPU_DETECT - int flags; -#endif - /* - vp8_horizontal_line_1_2_scale = horizontal_line_1_2_scale_armv4; - vp8_vertical_band_1_2_scale = vertical_band_1_2_scale_armv4; - vp8_last_vertical_band_1_2_scale = vp8cx_last_vertical_band_1_2_scale_c; - vp8_horizontal_line_3_5_scale = horizontal_line_3_5_scale_armv4; - vp8_vertical_band_3_5_scale = vertical_band_3_5_scale_armv4; - vp8_last_vertical_band_3_5_scale = vp8cx_last_vertical_band_3_5_scale_c; - vp8_horizontal_line_3_4_scale = horizontal_line_3_4_scale_armv4; - vp8_vertical_band_3_4_scale = vertical_band_3_4_scale_armv4; - vp8_last_vertical_band_3_4_scale = vp8cx_last_vertical_band_3_4_scale_c; - vp8_horizontal_line_2_3_scale = horizontal_line_2_3_scale_armv4; - vp8_vertical_band_2_3_scale = vertical_band_2_3_scale_armv4; - vp8_last_vertical_band_2_3_scale = vp8cx_last_vertical_band_2_3_scale_c; - vp8_horizontal_line_4_5_scale = horizontal_line_4_5_scale_armv4; - vp8_vertical_band_4_5_scale = vertical_band_4_5_scale_armv4; - vp8_last_vertical_band_4_5_scale = vp8cx_last_vertical_band_4_5_scale_c; - - vp8_vertical_band_5_4_scale = vp8cx_vertical_band_5_4_scale_c; - vp8_vertical_band_5_3_scale = vp8cx_vertical_band_5_3_scale_c; - vp8_vertical_band_2_1_scale = vp8cx_vertical_band_2_1_scale_c; - vp8_vertical_band_2_1_scale_i = vp8cx_vertical_band_2_1_scale_i_c; - vp8_horizontal_line_2_1_scale = vp8cx_horizontal_line_2_1_scale_c; - vp8_horizontal_line_5_3_scale = vp8cx_horizontal_line_5_3_scale_c; - vp8_horizontal_line_5_4_scale = vp8cx_horizontal_line_5_4_scale_c; - */ - -#if !HAVE_ARMV7 || CONFIG_RUNTIME_CPU_DETECT - vp8_yv12_extend_frame_borders_ptr = vp8_yv12_extend_frame_borders; - vp8_yv12_copy_y_ptr = vp8_yv12_copy_y_c; - vp8_yv12_copy_frame_ptr = vp8_yv12_copy_frame; -#endif #if HAVE_ARMV7 #if CONFIG_RUNTIME_CPU_DETECT - flags = arm_cpu_caps(); + int flags = arm_cpu_caps(); if (flags & HAS_NEON) #endif { diff --git a/vpx_scale/arm/yv12extend_arm.h b/vpx_scale/arm/yv12extend_arm.h index a7e4c16..adfca81 100644 --- a/vpx_scale/arm/yv12extend_arm.h +++ b/vpx_scale/arm/yv12extend_arm.h @@ -12,8 +12,10 @@ #ifndef YV12_EXTEND_ARM_H #define YV12_EXTEND_ARM_H +#include "vpx_config.h" #include "vpx_scale/yv12config.h" +#if HAVE_ARMV7 void vp8_yv12_extend_frame_borders_neon(YV12_BUFFER_CONFIG *ybf); /* Copy Y,U,V buffer data from src to dst, filling border of dst as well. */ @@ -21,5 +23,6 @@ /* Copy Y buffer data from src_ybc to dst_ybc without filling border data */ void vp8_yv12_copy_y_neon(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst_ybc); +#endif #endif /* YV12_EXTEND_ARM_H */ diff --git a/vpx_scale/generic/scalesystemdependent.c b/vpx_scale/generic/scalesystemdependent.c index 3f5d2ce..24baef0 100644 --- a/vpx_scale/generic/scalesystemdependent.c +++ b/vpx_scale/generic/scalesystemdependent.c @@ -13,6 +13,11 @@ #include "vpx_scale/vpxscale.h" #include "vpx_scale/yv12extend.h" +void (*vp8_yv12_extend_frame_borders_ptr)(YV12_BUFFER_CONFIG *ybf); +void (*vp8_yv12_copy_frame_ptr)(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst_ybc); +void (*vp8_yv12_copy_y_ptr)(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst_ybc); + +extern void vp8_arch_arm_vpx_scale_init(); /**************************************************************************** * @@ -63,4 +68,7 @@ void vp8_scale_machine_specific_config() vp8_yv12_copy_y_ptr = vp8_yv12_copy_y_c; vp8_yv12_copy_frame_ptr = vp8_yv12_copy_frame; +#if ARCH_ARM + vp8_arch_arm_vpx_scale_init(); +#endif } diff --git a/vpx_scale/vpx_scale.mk b/vpx_scale/vpx_scale.mk index e91120d..c8385fe 100644 --- a/vpx_scale/vpx_scale.mk +++ b/vpx_scale/vpx_scale.mk @@ -11,9 +11,8 @@ SCALE_SRCS-yes += generic/scalesystemdependent.c SCALE_SRCS-$(CONFIG_SPATIAL_RESAMPLING) += generic/gen_scalers.c #arm -SCALE_SRCS-$(HAVE_ARMV7) += arm/yv12extend_arm.h -SCALE_SRCS-$(HAVE_ARMV7) += arm/scalesystemdependent.c -SCALE_SRCS_REMOVE-$(HAVE_ARMV7) += generic/scalesystemdependent.c +SCALE_SRCS-$(ARCH_ARM) += arm/yv12extend_arm.h +SCALE_SRCS-$(ARCH_ARM) += arm/scalesystemdependent.c #neon SCALE_SRCS-$(HAVE_ARMV7) += arm/neon/vp8_vpxyv12_copyframe_func_neon$(ASM) diff --git a/vpx_scale/yv12extend.h b/vpx_scale/yv12extend.h index 80a0f98..c8bf955 100644 --- a/vpx_scale/yv12extend.h +++ b/vpx_scale/yv12extend.h @@ -12,6 +12,7 @@ #ifndef YV12_EXTEND_H #define YV12_EXTEND_H +#include "vpx_config.h" #include "vpx_scale/yv12config.h" #include "vpx_scale/generic/yv12extend_generic.h" @@ -24,13 +25,13 @@ extern "C" { #endif - void (*vp8_yv12_extend_frame_borders_ptr)(YV12_BUFFER_CONFIG *ybf); + extern void (*vp8_yv12_extend_frame_borders_ptr)(YV12_BUFFER_CONFIG *ybf); /* Copy Y,U,V buffer data from src to dst, filling border of dst as well. */ - void (*vp8_yv12_copy_frame_ptr)(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst_ybc); + extern void (*vp8_yv12_copy_frame_ptr)(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst_ybc); /* Copy Y buffer data from src_ybc to dst_ybc without filling border data */ - void (*vp8_yv12_copy_y_ptr)(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst_ybc); + extern void (*vp8_yv12_copy_y_ptr)(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst_ybc); #ifdef __cplusplus } -- 2.7.4