From 39b61dd9e6fd047dcbd0ada2dac7041ebd64f121 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Tue, 9 Aug 2011 12:44:09 +0200 Subject: [PATCH] android: libvpx integration to build system --- .gitmodules | 3 + jni/Android.mk | 2 + jni/Application.mk | 2 +- submodules/externals/build/libvpx/Android.mk | 234 ++++++++++++++++++ .../build/libvpx/asm_com_offsets.asm | 14 ++ .../externals/build/libvpx/asm_conversion.sh | 7 + .../build/libvpx/asm_enc_offsets.asm | 46 ++++ .../externals/build/libvpx/vpx_config.h | 69 ++++++ .../externals/build/libvpx/vpx_version.h | 7 + submodules/externals/libvpx | 1 + submodules/linphone | 2 +- 11 files changed, 385 insertions(+), 2 deletions(-) create mode 100755 submodules/externals/build/libvpx/Android.mk create mode 100644 submodules/externals/build/libvpx/asm_com_offsets.asm create mode 100755 submodules/externals/build/libvpx/asm_conversion.sh create mode 100644 submodules/externals/build/libvpx/asm_enc_offsets.asm create mode 100644 submodules/externals/build/libvpx/vpx_config.h create mode 100644 submodules/externals/build/libvpx/vpx_version.h create mode 160000 submodules/externals/libvpx diff --git a/.gitmodules b/.gitmodules index 9ab2bb205..24718d357 100644 --- a/.gitmodules +++ b/.gitmodules @@ -37,3 +37,6 @@ [submodule "submodules/msamr"] path = submodules/msamr url = git://git.linphone.org/msamr +[submodule "submodules/externals/libvpx"] + path = submodules/externals/libvpx + url = git://review.webmproject.org/libvpx.git diff --git a/jni/Android.mk b/jni/Android.mk index 07efba1cd..404bb77b5 100755 --- a/jni/Android.mk +++ b/jni/Android.mk @@ -76,6 +76,8 @@ include $(root-dir)/submodules/externals/prebuilts/ffmpeg.mk endif endif #armeabi-v7a +include $(root-dir)/submodules/externals/build/libvpx/Android.mk + ifeq ($(BUILD_GPLV3_ZRTP), 1) ifeq ($(wildcard $(root-dir)/submodules/externals/prebuilts/zrtpcpp.mk),) diff --git a/jni/Application.mk b/jni/Application.mk index efaf31b67..ce9a953d5 100644 --- a/jni/Application.mk +++ b/jni/Application.mk @@ -7,7 +7,7 @@ APP_MODULES +=libmsilbc endif ifeq ($(LINPHONE_VIDEO),1) -APP_MODULES += libavutil libavcore libavcodec libswscale +APP_MODULES += libavutil libavcore libavcodec libswscale libvpx endif ifeq ($(BUILD_AMR),1) diff --git a/submodules/externals/build/libvpx/Android.mk b/submodules/externals/build/libvpx/Android.mk new file mode 100755 index 000000000..eb00e45bf --- /dev/null +++ b/submodules/externals/build/libvpx/Android.mk @@ -0,0 +1,234 @@ + +LOCAL_PATH:= $(call my-dir)/../../libvpx +include $(CLEAR_VARS) + +LOCAL_MODULE := libvpx + +ifeq ($(TARGET_ARCH_ABI),armeabi-v7a) + LOCAL_ARM_NEON := true +endif + +LOCAL_ARM_MODE := arm +ASM := s + +# vpx subfolder [vpx_codec.mk] +LOCAL_SRC_FILES = \ + vpx/src/vpx_decoder.c \ + vpx/src/vpx_decoder_compat.c \ + vpx/src/vpx_encoder.c \ + vpx/src/vpx_codec.c \ + vpx/src/vpx_image.c + +# vp8 subfolder [vp8_common.mk] +LOCAL_SRC_FILES += \ + vp8/common/alloccommon.c \ + vp8/common/blockd.c \ + vp8/common/debugmodes.c \ + vp8/common/defaultcoefcounts.c \ + vp8/common/entropy.c \ + vp8/common/entropymode.c \ + vp8/common/entropymv.c \ + vp8/common/extend.c \ + vp8/common/filter.c \ + vp8/common/findnearmv.c \ + vp8/common/generic/systemdependent.c \ + vp8/common/idctllm.c \ + vp8/common/invtrans.c \ + vp8/common/loopfilter.c \ + vp8/common/loopfilter_filters.c \ + vp8/common/mbpitch.c \ + vp8/common/modecont.c \ + vp8/common/modecontext.c \ + vp8/common/quant_common.c \ + vp8/common/recon.c \ + vp8/common/reconinter.c \ + vp8/common/reconintra.c \ + vp8/common/reconintra4x4.c \ + vp8/common/setupintrarecon.c \ + vp8/common/swapyv12buffer.c \ + vp8/common/treecoder.c \ + vp8/common/asm_com_offsets.c \ + vp8/common/arm/arm_systemdependent.c \ + vp8/common/arm/bilinearfilter_arm.c \ + vp8/common/arm/filter_arm.c \ + vp8/common/arm/loopfilter_arm.c \ + vp8/common/arm/reconintra_arm.c \ + vp8/common/arm/neon/recon_neon.c + +ASM_FILES = \ + vp8/common/arm/armv6/bilinearfilter_v6.$(ASM) \ + vp8/common/arm/armv6/copymem8x4_v6.$(ASM) \ + vp8/common/arm/armv6/copymem8x8_v6.$(ASM) \ + vp8/common/arm/armv6/copymem16x16_v6.$(ASM) \ + vp8/common/arm/armv6/dc_only_idct_add_v6.$(ASM) \ + vp8/common/arm/armv6/iwalsh_v6.$(ASM) \ + vp8/common/arm/armv6/filter_v6.$(ASM) \ + vp8/common/arm/armv6/idct_v6.$(ASM) \ + vp8/common/arm/armv6/loopfilter_v6.$(ASM) \ + vp8/common/arm/armv6/recon_v6.$(ASM) \ + vp8/common/arm/armv6/simpleloopfilter_v6.$(ASM) \ + vp8/common/arm/armv6/sixtappredict8x4_v6.$(ASM) \ + vp8/common/arm/neon/bilinearpredict4x4_neon.$(ASM) \ + vp8/common/arm/neon/bilinearpredict8x4_neon.$(ASM) \ + vp8/common/arm/neon/bilinearpredict8x8_neon.$(ASM) \ + vp8/common/arm/neon/bilinearpredict16x16_neon.$(ASM) \ + vp8/common/arm/neon/copymem8x4_neon.$(ASM) \ + vp8/common/arm/neon/copymem8x8_neon.$(ASM) \ + vp8/common/arm/neon/copymem16x16_neon.$(ASM) \ + vp8/common/arm/neon/dc_only_idct_add_neon.$(ASM) \ + vp8/common/arm/neon/iwalsh_neon.$(ASM) \ + vp8/common/arm/neon/loopfilter_neon.$(ASM) \ + vp8/common/arm/neon/loopfiltersimplehorizontaledge_neon.$(ASM) \ + vp8/common/arm/neon/loopfiltersimpleverticaledge_neon.$(ASM) \ + vp8/common/arm/neon/mbloopfilter_neon.$(ASM) \ + vp8/common/arm/neon/recon2b_neon.$(ASM) \ + vp8/common/arm/neon/recon4b_neon.$(ASM) \ + vp8/common/arm/neon/reconb_neon.$(ASM) \ + vp8/common/arm/neon/shortidct4x4llm_1_neon.$(ASM) \ + vp8/common/arm/neon/shortidct4x4llm_neon.$(ASM) \ + vp8/common/arm/neon/sixtappredict4x4_neon.$(ASM) \ + vp8/common/arm/neon/sixtappredict8x4_neon.$(ASM) \ + vp8/common/arm/neon/sixtappredict8x8_neon.$(ASM) \ + vp8/common/arm/neon/sixtappredict16x16_neon.$(ASM) \ + vp8/common/arm/neon/recon16x16mb_neon.$(ASM) \ + vp8/common/arm/neon/buildintrapredictorsmby_neon.$(ASM) \ + vp8/common/arm/neon/save_neon_reg.$(ASM) \ + +# vp8 subfolder [vp8cx.mk] +LOCAL_SRC_FILES += \ + vp8/vp8_cx_iface.c \ + vp8/encoder/asm_enc_offsets.c \ + vp8/encoder/bitstream.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/generic/csystemdependent.c \ + vp8/encoder/lookahead.c \ + vp8/encoder/mcomp.c \ + vp8/encoder/modecosts.c \ + vp8/encoder/onyx_if.c \ + 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/tokenize.c \ + vp8/encoder/treewriter.c \ + vp8/encoder/variance_c.c + +# vp8 subfolder [vp8cx_arm.mk] +LOCAL_SRC_FILES += \ + vp8/encoder/arm/arm_csystemdependent.c \ + vp8/encoder/arm/quantize_arm.c \ + vp8/encoder/arm/picklpf_arm.c \ + vp8/encoder/arm/dct_arm.c \ + vp8/encoder/arm/variance_arm.c \ + vp8/encoder/arm/boolhuff_arm.c + +ASM_FILES += \ + vp8/encoder/arm/armv5te/boolhuff_armv5te.$(ASM) \ + vp8/encoder/arm/armv5te/vp8_packtokens_armv5.$(ASM) \ + vp8/encoder/arm/armv5te/vp8_packtokens_mbrow_armv5.$(ASM) \ + vp8/encoder/arm/armv5te/vp8_packtokens_partitions_armv5.$(ASM) \ + vp8/encoder/arm/armv6/vp8_subtract_armv6.$(ASM) \ + vp8/encoder/arm/armv6/vp8_fast_fdct4x4_armv6.$(ASM) \ + vp8/encoder/arm/armv6/vp8_fast_quantize_b_armv6.$(ASM) \ + vp8/encoder/arm/armv6/vp8_sad16x16_armv6.$(ASM) \ + vp8/encoder/arm/armv6/vp8_variance16x16_armv6.$(ASM) \ + vp8/encoder/arm/armv6/vp8_variance_halfpixvar16x16_h_armv6.$(ASM) \ + vp8/encoder/arm/armv6/vp8_variance_halfpixvar16x16_v_armv6.$(ASM) \ + vp8/encoder/arm/armv6/vp8_variance_halfpixvar16x16_hv_armv6.$(ASM) \ + vp8/encoder/arm/armv6/vp8_mse16x16_armv6.$(ASM) \ + vp8/encoder/arm/armv6/vp8_variance8x8_armv6.$(ASM) \ + vp8/encoder/arm/armv6/walsh_v6.$(ASM) \ + vp8/encoder/arm/neon/fastfdct4x4_neon.$(ASM) \ + vp8/encoder/arm/neon/fastfdct8x4_neon.$(ASM) \ + vp8/encoder/arm/neon/fastquantizeb_neon.$(ASM) \ + vp8/encoder/arm/neon/sad8_neon.$(ASM) \ + vp8/encoder/arm/neon/sad16_neon.$(ASM) \ + vp8/encoder/arm/neon/shortfdct_neon.$(ASM) \ + vp8/encoder/arm/neon/subtract_neon.$(ASM) \ + vp8/encoder/arm/neon/variance_neon.$(ASM) \ + vp8/encoder/arm/neon/vp8_mse16x16_neon.$(ASM) \ + vp8/encoder/arm/neon/vp8_subpixelvariance8x8_neon.$(ASM) \ + vp8/encoder/arm/neon/vp8_subpixelvariance16x16_neon.$(ASM) \ + vp8/encoder/arm/neon/vp8_subpixelvariance16x16s_neon.$(ASM) \ + vp8/encoder/arm/neon/vp8_memcpy_neon.$(ASM) \ + vp8/encoder/arm/neon/vp8_shortwalsh4x4_neon.$(ASM) \ + +# vp8 subfolder [vp8dx.mk] +LOCAL_SRC_FILES += \ + vp8/vp8_dx_iface.c \ + vp8/decoder/dboolhuff.c \ + vp8/decoder/decodemv.c \ + vp8/decoder/decodframe.c \ + vp8/decoder/dequantize.c \ + vp8/decoder/detokenize.c \ + vp8/decoder/error_concealment.c \ + vp8/decoder/generic/dsystemdependent.c \ + vp8/decoder/onyxd_if.c \ + vp8/decoder/idct_blk.c \ + vp8/decoder/threading.c \ + vp8/decoder/reconintra_mt.c + +# vp8 subfolder [vp8dx_arm.mk] +LOCAL_SRC_FILES += \ + vp8/decoder/arm/arm_dsystemdependent.c \ + vp8/decoder/asm_dec_offsets.c \ + vp8/decoder/arm/dequantize_arm.c \ + vp8/decoder/arm/neon/idct_blk_neon.c \ + vp8/decoder/arm/armv6/idct_blk_v6.c + +ASM_FILES += \ + vp8/decoder/arm/neon/idct_dequant_dc_full_2x_neon.$(ASM) \ + vp8/decoder/arm/neon/idct_dequant_dc_0_2x_neon.$(ASM) \ + vp8/decoder/arm/neon/dequant_idct_neon.$(ASM) \ + vp8/decoder/arm/neon/idct_dequant_full_2x_neon.$(ASM) \ + vp8/decoder/arm/neon/idct_dequant_0_2x_neon.$(ASM) \ + vp8/decoder/arm/neon/dequantizeb_neon.$(ASM) \ + vp8/decoder/arm/armv6/dequant_dc_idct_v6.$(ASM) \ + vp8/decoder/arm/armv6/dequant_idct_v6.$(ASM) \ + vp8/decoder/arm/armv6/dequantize_v6.$(ASM) + +# vpx_mem subfolder [vpx_mem.mk] +LOCAL_SRC_FILES += vpx_mem/vpx_mem.c + +# vpx_scale subfolder [vpx_scale.mk] +LOCAL_SRC_FILES += \ + vpx_scale/generic/vpxscale.c \ + vpx_scale/generic/yv12config.c \ + vpx_scale/generic/yv12extend.c \ + vpx_scale/arm/scalesystemdependent.c \ + vpx_scale/arm/yv12extend_arm.c \ + vpx_scale/generic/scalesystemdependent.c +ASM_FILES += \ + vpx_scale/arm/neon/vp8_vpxyv12_copyframe_func_neon.$(ASM) \ + vpx_scale/arm/neon/vp8_vpxyv12_copyframeyonly_neon.$(ASM) \ + vpx_scale/arm/neon/vp8_vpxyv12_copysrcframe_func_neon.$(ASM) \ + vpx_scale/arm/neon/vp8_vpxyv12_extendframeborders_neon.$(ASM) \ + +LOCAL_SRC_FILES += $(ASM_FILES) + +LOCAL_CFLAGS += \ + -D__ARM_HAVE_NEON \ + -mfpu=neon + +LOCAL_MODULE_CLASS := STATIC_LIBRARIES + +LOCAL_C_INCLUDES += \ + $(LOCAL_PATH) \ + $(LOCAL_PATH)/vpx_ports \ + $(LOCAL_PATH)/vp8/common \ + $(LOCAL_PATH)/vp8/encoder \ + $(LOCAL_PATH)/vp8/decoder \ + $(LOCAL_PATH)/vp8 \ + $(LOCAL_PATH)/vpx_codec + +include $(BUILD_STATIC_LIBRARY) + diff --git a/submodules/externals/build/libvpx/asm_com_offsets.asm b/submodules/externals/build/libvpx/asm_com_offsets.asm new file mode 100644 index 000000000..2b5be63af --- /dev/null +++ b/submodules/externals/build/libvpx/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/submodules/externals/build/libvpx/asm_conversion.sh b/submodules/externals/build/libvpx/asm_conversion.sh new file mode 100755 index 000000000..a78c8f0cb --- /dev/null +++ b/submodules/externals/build/libvpx/asm_conversion.sh @@ -0,0 +1,7 @@ +#/bin/sh +for i in `find ../../libvpx/ -name "*asm"`; +do + newname=`echo ${i} |sed 's/\.asm/.s/'` + echo "Converting : ${i} -> ${newname}" + cat ${i}|perl ../../libvpx/build/make/ads2gas.pl > ${newname}; +done diff --git a/submodules/externals/build/libvpx/asm_enc_offsets.asm b/submodules/externals/build/libvpx/asm_enc_offsets.asm new file mode 100644 index 000000000..8add5f458 --- /dev/null +++ b/submodules/externals/build/libvpx/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 , 177724 +.equ vp8_comp_common , 104640 +.equ vp8_comp_bc2 , 124848 +.equ tokenlist_start , 0 +.equ tokenlist_stop , 4 +.equ TOKENLIST_SZ , 8 +.equ vp8_common_mb_rows , 13224 + .section .note.GNU-stack,"",%progbits diff --git a/submodules/externals/build/libvpx/vpx_config.h b/submodules/externals/build/libvpx/vpx_config.h new file mode 100644 index 000000000..88e0aec32 --- /dev/null +++ b/submodules/externals/build/libvpx/vpx_config.h @@ -0,0 +1,69 @@ +/* This file automatically generated by configure. Do not edit! */ +#ifndef VPX_CONFIG_H +#define VPX_CONFIG_H +#define RESTRICT +#define ARCH_ARM 1 +#define ARCH_MIPS 0 +#define ARCH_X86 0 +#define ARCH_X86_64 0 +#define ARCH_PPC32 0 +#define ARCH_PPC64 0 +#define HAVE_ARMV5TE 1 +#define HAVE_ARMV6 1 +#define HAVE_ARMV7 1 +#define HAVE_IWMMXT 0 +#define HAVE_IWMMXT2 0 +#define HAVE_MIPS32 0 +#define HAVE_MMX 0 +#define HAVE_SSE 0 +#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 +#define CONFIG_INSTALL_LIBS 1 +#define CONFIG_INSTALL_SRCS 0 +#define CONFIG_DEBUG 0 +#define CONFIG_GPROF 0 +#define CONFIG_GCOV 0 +#define CONFIG_RVCT 0 +#define CONFIG_GCC 1 +#define CONFIG_MSVS 0 +#define CONFIG_PIC 1 +#define CONFIG_BIG_ENDIAN 0 +#define CONFIG_CODEC_SRCS 0 +#define CONFIG_DEBUG_LIBS 0 +#define CONFIG_FAST_UNALIGNED 1 +#define CONFIG_MEM_MANAGER 0 +#define CONFIG_MEM_TRACKER 0 +#define CONFIG_MEM_CHECKS 0 +#define CONFIG_MD5 1 +#define CONFIG_DEQUANT_TOKENS 0 +#define CONFIG_DC_RECON 0 +#define CONFIG_RUNTIME_CPU_DETECT 0 +#define CONFIG_POSTPROC 0 +#define CONFIG_MULTITHREAD 1 +#define CONFIG_INTERNAL_STATS 0 +#define CONFIG_VP8_ENCODER 1 +#define CONFIG_VP8_DECODER 1 +#define CONFIG_VP8 1 +#define CONFIG_ENCODERS 1 +#define CONFIG_DECODERS 1 +#define CONFIG_STATIC_MSVCRT 0 +#define CONFIG_SPATIAL_RESAMPLING 1 +#define CONFIG_REALTIME_ONLY 1 +#define CONFIG_ERROR_CONCEALMENT 1 +#define CONFIG_SHARED 0 +#define CONFIG_SMALL 0 +#define CONFIG_POSTPROC_VISUALIZER 0 +#define CONFIG_OS_SUPPORT 1 +#endif /* VPX_CONFIG_H */ diff --git a/submodules/externals/build/libvpx/vpx_version.h b/submodules/externals/build/libvpx/vpx_version.h new file mode 100644 index 000000000..1d8ba965d --- /dev/null +++ b/submodules/externals/build/libvpx/vpx_version.h @@ -0,0 +1,7 @@ +#define VERSION_MAJOR 0 +#define VERSION_MINOR 9 +#define VERSION_PATCH 6 +#define VERSION_EXTRA "" +#define VERSION_PACKED ((VERSION_MAJOR<<16)|(VERSION_MINOR<<8)|(VERSION_PATCH)) +#define VERSION_STRING_NOSP "v0.9.6" +#define VERSION_STRING " v0.9.6" diff --git a/submodules/externals/libvpx b/submodules/externals/libvpx new file mode 160000 index 000000000..b84e8f20c --- /dev/null +++ b/submodules/externals/libvpx @@ -0,0 +1 @@ +Subproject commit b84e8f20c3aca0f2a65265cf704cc7c15a2c93d4 diff --git a/submodules/linphone b/submodules/linphone index 743ef7d0c..a0b9b0250 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 743ef7d0cf511161ff4c2300315df775e601bae3 +Subproject commit a0b9b02506a8a4eb97f7eb44e376ea1999e4bd9b