aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>2011-11-26 03:09:22 +0059
committerBernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>2011-11-26 03:09:22 +0059
commit47fdbb9d840edc146b126dedaa6521334e653c26 (patch)
treeb28447ea0e63e742261d3fc66b1022b2c90e350d
parent3a40da0d96da5c520e7707aa14f48a80956e20d7 (diff)
downloadlibvpx-linaro_android_4.0.1.tar.gz
Build the encoder into libvpx so ffmpeg can use it Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>
-rw-r--r--Android.mk58
-rw-r--r--asm_com_offsets.asm14
-rw-r--r--asm_enc_offsets.asm46
-rw-r--r--vp8/encoder/variance.h1
-rw-r--r--vpx_config.h42
5 files changed, 140 insertions, 21 deletions
diff --git a/Android.mk b/Android.mk
index 4e8c2b1ab..28b543053 100644
--- a/Android.mk
+++ b/Android.mk
@@ -5,6 +5,7 @@ LOCAL_SRC_FILES = \
mkvparser/mkvparser.cpp \
vpx/src/vpx_codec.c \
vpx/src/vpx_decoder.c \
+ vpx/src/vpx_encoder.c \
vpx/src/vpx_image.c \
vpx_mem/vpx_mem.c \
vpx_scale/generic/vpxscale.c \
@@ -53,8 +54,41 @@ LOCAL_SRC_FILES = \
vp8/decoder/onyxd_if.c \
vp8/decoder/reconintra_mt.c \
vp8/decoder/threading.c \
+ vp8/encoder/asm_enc_offsets.c \
+ vp8/encoder/bitstream.c \
+ vp8/encoder/boolhuff.c \
+ vp8/encoder/dct.c \
+ vp8/encoder/encodeframe.c \
+ vp8/encoder/encodeintra.c \
+ vp8/encoder/encodemb.c \
+ vp8/encoder/encodemv.c \
+ vp8/encoder/ethreading.c \
+ vp8/encoder/firstpass.c \
+ vp8/encoder/mcomp.c \
+ vp8/encoder/modecosts.c \
+ vp8/encoder/onyx_if.c \
+ vp8/encoder/parms.cpp \
+ vp8/encoder/pickinter.c \
+ vp8/encoder/picklpf.c \
+ vp8/encoder/psnr.c \
+ vp8/encoder/quantize.c \
+ vp8/encoder/ratectrl.c \
+ vp8/encoder/rdopt.c \
+ vp8/encoder/sad_c.c \
+ vp8/encoder/segmentation.c \
+ vp8/encoder/temporal_filter.c \
+ vp8/encoder/tokenize.c \
+ vp8/encoder/treewriter.c \
+ vp8/encoder/variance_c.c \
+ vp8/encoder/generic/csystemdependent.c \
+ vp8/encoder/arm/arm_csystemdependent.c \
+ vp8/encoder/arm/dct_arm.c \
+ vp8/encoder/arm/picklpf_arm.c \
+ vp8/encoder/arm/quantize_arm.c \
+ vp8/encoder/arm/variance_arm.c \
vpx_config.c \
- vp8/decoder/arm/neon/idct_blk_neon.c
+ vp8/decoder/arm/neon/idct_blk_neon.c \
+ vp8/decoder/idct_blk.c
LOCAL_CFLAGS := \
-DHAVE_CONFIG_H=vpx_config.h
@@ -68,7 +102,9 @@ intermediates := $(call local-intermediates-dir)
LOCAL_SRC_FILES += \
vp8/common/arm/loopfilter_arm.c \
+ vp8/common/arm/neon/recon_neon.c \
vp8/decoder/arm/dequantize_arm.c \
+ vpx_ports/arm_cpudetect.c
ifeq ($(ARCH_ARM_HAVE_NEON),true)
@@ -104,8 +140,25 @@ ASM_FILES = \
vp8/decoder/arm/neon/idct_dequant_dc_0_2x_neon.s \
vp8/decoder/arm/neon/idct_dequant_dc_full_2x_neon.s \
vp8/decoder/arm/neon/idct_dequant_full_2x_neon.s \
+ vp8/encoder/arm/neon/fastfdct4x4_neon.s \
+ vp8/encoder/arm/neon/shortfdct_neon.s \
+ vp8/encoder/arm/neon/vp8_shortwalsh4x4_neon.s \
+ vp8/encoder/arm/neon/fastfdct8x4_neon.s \
+ vp8/encoder/arm/neon/subtract_neon.s \
+ vp8/encoder/arm/neon/vp8_subpixelvariance16x16_neon.s \
+ vp8/encoder/arm/neon/fastquantizeb_neon.s \
+ vp8/encoder/arm/neon/variance_neon.s \
+ vp8/encoder/arm/neon/vp8_subpixelvariance16x16s_neon.s \
+ vp8/encoder/arm/neon/sad16_neon.s \
+ vp8/encoder/arm/neon/vp8_memcpy_neon.s \
+ vp8/encoder/arm/neon/vp8_subpixelvariance8x8_neon.s \
+ vp8/encoder/arm/neon/sad8_neon.s \
+ vp8/encoder/arm/neon/vp8_mse16x16_neon.s \
vp8/common/arm/neon/loopfilter_neon.s \
vp8/common/arm/neon/mbloopfilter_neon.s \
+ vpx_scale/arm/neon/vp8_vpxyv12_copyframeyonly_neon.s \
+ vpx_scale/arm/neon/vp8_vpxyv12_copysrcframe_func_neon.s \
+ vpx_scale/arm/neon/vp8_vpxyv12_extendframeborders_neon.s \
else ifeq ($(ARCH_ARM_HAVE_ARMV7A),true)
@@ -147,6 +200,9 @@ $(VPX_GEN) : PRIVATE_PATH := $(LOCAL_PATH)
$(VPX_GEN) : PRIVATE_CUSTOM_TOOL = cat $< | perl external/libvpx/build/make/ads2gas.pl > $@
$(VPX_GEN) : $(intermediates)/%.s : $(LOCAL_PATH)/%.asm
$(transform-generated-source)
+$(intermediates)/encoder/arm/neon/subtract_neon.s : $(intermediates)/asm_enc_offsets.asm
+$(intermediates)/encoder/arm/neon/fastquantizeb_neon.s : $(intermediates)/asm_enc_offsets.asm
+$(intermediates)/asm_enc_offsets.asm : external/libvpx/asm_enc_offsets.asm
LOCAL_GENERATED_SOURCES += $(VPX_GEN)
diff --git a/asm_com_offsets.asm b/asm_com_offsets.asm
new file mode 100644
index 000000000..2b5be63af
--- /dev/null
+++ b/asm_com_offsets.asm
@@ -0,0 +1,14 @@
+@ This file was created from a .asm file
+@ using the ads2gas.pl script.
+ .equ DO1STROUNDING, 0
+.equ yv12_buffer_config_y_width , 0
+.equ yv12_buffer_config_y_height , 4
+.equ yv12_buffer_config_y_stride , 8
+.equ yv12_buffer_config_uv_width , 12
+.equ yv12_buffer_config_uv_height , 16
+.equ yv12_buffer_config_uv_stride , 20
+.equ yv12_buffer_config_y_buffer , 24
+.equ yv12_buffer_config_u_buffer , 28
+.equ yv12_buffer_config_v_buffer , 32
+.equ yv12_buffer_config_border , 40
+ .section .note.GNU-stack,"",%progbits
diff --git a/asm_enc_offsets.asm b/asm_enc_offsets.asm
new file mode 100644
index 000000000..0e1816981
--- /dev/null
+++ b/asm_enc_offsets.asm
@@ -0,0 +1,46 @@
+@ This file was created from a .asm file
+@ using the ads2gas.pl script.
+ .equ DO1STROUNDING, 0
+.equ vp8_block_coeff , 4
+.equ vp8_block_zbin , 20
+.equ vp8_block_round , 28
+.equ vp8_block_quant , 8
+.equ vp8_block_quant_fast , 12
+.equ vp8_block_zbin_extra , 32
+.equ vp8_block_zrun_zbin_boost , 24
+.equ vp8_block_quant_shift , 16
+.equ vp8_blockd_qcoeff , 0
+.equ vp8_blockd_dequant , 16
+.equ vp8_blockd_dqcoeff , 4
+.equ vp8_blockd_eob , 44
+.equ vp8_block_base_src , 36
+.equ vp8_block_src , 40
+.equ vp8_block_src_diff , 0
+.equ vp8_block_src_stride , 44
+.equ vp8_blockd_predictor , 8
+.equ vp8_writer_lowvalue , 0
+.equ vp8_writer_range , 4
+.equ vp8_writer_value , 8
+.equ vp8_writer_count , 12
+.equ vp8_writer_pos , 16
+.equ vp8_writer_buffer , 20
+.equ tokenextra_token , 6
+.equ tokenextra_extra , 4
+.equ tokenextra_context_tree , 0
+.equ tokenextra_skip_eob_node , 7
+.equ TOKENEXTRA_SZ , 8
+.equ vp8_extra_bit_struct_sz , 16
+.equ vp8_token_value , 0
+.equ vp8_token_len , 4
+.equ vp8_extra_bit_struct_tree , 0
+.equ vp8_extra_bit_struct_prob , 4
+.equ vp8_extra_bit_struct_len , 8
+.equ vp8_extra_bit_struct_base_val , 12
+.equ vp8_comp_tplist , 180568
+.equ vp8_comp_common , 104640
+.equ vp8_comp_bc2 , 127712
+.equ tokenlist_start , 0
+.equ tokenlist_stop , 4
+.equ TOKENLIST_SZ , 8
+.equ vp8_common_mb_rows , 12984
+ .section .note.GNU-stack,"",%progbits
diff --git a/vp8/encoder/variance.h b/vp8/encoder/variance.h
index bf17ea8b6..f373937f4 100644
--- a/vp8/encoder/variance.h
+++ b/vp8/encoder/variance.h
@@ -11,6 +11,7 @@
#ifndef VARIANCE_H
#define VARIANCE_H
+#include <vpx_config.h>
#define prototype_sad(sym)\
unsigned int (sym)\
diff --git a/vpx_config.h b/vpx_config.h
index 598d21568..d93e2f34d 100644
--- a/vpx_config.h
+++ b/vpx_config.h
@@ -3,31 +3,26 @@
#define FORCEINLINE
#define RESTRICT
+#undef ARCH_ARM // On Android, ARCH_ARM is defined to nothing in AndroidConfig.h - get rid of that
#if defined(__arm__)
-
#define ARCH_ARM 1
-#define HAVE_ARMV5TE 0
#else
#define ARCH_ARM 0
#endif
-#if defined(__ARM_HAVE_NEON)
-#define HAVE_ARMV7 1
-#else
-#define HAVE_ARMV7 0
-#endif
-
-#if defined(__ARM_HAVE_ARMV6)
-#define HAVE_ARMV6 1
-#else
-#define HAVE_ARMV6 0
-#endif
-
#define ARCH_MIPS 0
#define ARCH_X86 0
#define ARCH_X86_64 0
#define ARCH_PPC32 0
#define ARCH_PPC64 0
+#define HAVE_ARMV5TE 0
+#define HAVE_ARMV6 0
+
+#if defined(__ARM_HAVE_NEON)
+#define HAVE_ARMV7 1
+#else
+#define HAVE_ARMV7 0
+#endif
#define HAVE_IWMMXT 0
#define HAVE_IWMMXT2 0
@@ -37,12 +32,14 @@
#define HAVE_SSE2 0
#define HAVE_SSE3 0
#define HAVE_SSSE3 0
+#define HAVE_SSE4_1 0
#define HAVE_ALTIVEC 0
#define HAVE_VPX_PORTS 1
#define HAVE_STDINT_H 1
#define HAVE_ALT_TREE_LAYOUT 0
#define HAVE_PTHREAD_H 1
#define HAVE_SYS_MMAN_H 1
+#define HAVE_UNISTD_H 1
#define CONFIG_EXTERNAL_BUILD 0
#define CONFIG_INSTALL_DOCS 0
#define CONFIG_INSTALL_BINS 1
@@ -65,14 +62,13 @@
#define CONFIG_MD5 1
#define CONFIG_DEQUANT_TOKENS 0
#define CONFIG_DC_RECON 0
-#define CONFIG_NEW_TOKENS 0
-#define CONFIG_EVAL_LIMIT 0
-#define CONFIG_RUNTIME_CPU_DETECT 0
-#define CONFIG_POSTPROC 0
-#define CONFIG_POSTPROC_GENERIC 0
-#define CONFIG_OS_SUPPORT 1
+#define CONFIG_RUNTIME_CPU_DETECT 1
+#define CONFIG_POSTPROC 1
+/* FIXME if we want to be really smart, set
+ CONFIG_MULTITHREAD to 0 if TARGET_CPU_SMP is false */
#define CONFIG_MULTITHREAD 1
#define CONFIG_PSNR 0
+#define CONFIG_INTERNAL_STATS 0
#define CONFIG_VP8_ENCODER 1
#define CONFIG_VP8_DECODER 1
#define CONFIG_VP8 1
@@ -81,3 +77,9 @@
#define CONFIG_STATIC_MSVCRT 0
#define CONFIG_SPATIAL_RESAMPLING 1
#define CONFIG_REALTIME_ONLY 0
+#define CONFIG_ERROR_CONCEALMENT 0
+#define CONFIG_SHARED 0
+#define CONFIG_STATIC 1
+#define CONFIG_SMALL 0
+#define CONFIG_POSTPROC_VISUALIZER 0
+#define CONFIG_OS_SUPPORT 1