From 5ab859fd08536af373bfd8f7d75c3c5a85b5754d Mon Sep 17 00:00:00 2001 From: Guillaume BIENKOWSKI Date: Thu, 27 Mar 2014 09:36:11 +0100 Subject: [PATCH] Apply the proposed fix for the garbling of vp8 here: https://code.google.com/p/webm/issues/detail?id=603#c45 --- submodules/build/builders.d/libvpx.mk | 15 ++++++-- submodules/build/builders.d/libvpx.patch | 49 ++++++++---------------- 2 files changed, 27 insertions(+), 37 deletions(-) diff --git a/submodules/build/builders.d/libvpx.mk b/submodules/build/builders.d/libvpx.mk index 567bf3b38..90c4681d4 100644 --- a/submodules/build/builders.d/libvpx.mk +++ b/submodules/build/builders.d/libvpx.mk @@ -2,7 +2,7 @@ libvpx_configure_options=\ --enable-static --disable-shared \ --enable-error-concealment --disable-examples \ --enable-realtime-only --enable-spatial-resampling \ - --enable-vp8 --enable-multithread + --enable-vp8 --enable-multithread --disable-vp9 ifneq (,$(findstring armv6,$(host))) libvpx_configure_options+= --target=armv6-darwin-gcc --cpu=arm1176jzf-s @@ -20,11 +20,17 @@ all_p+=armv7-darwin-gcc #neon Cortex-A8 all_p+=armv7s-darwin-gcc #neon Cortex-A8 -$(BUILDER_BUILD_DIR)/$(libvpx_dir)/config.mk: +$(BUILDER_SRC_DIR)/$(libvpx_dir)/patched.stamp: + cd $(BUILDER_SRC_DIR)/$(libvpx_dir) \ + && git apply $(BUILDER_SRC_DIR)/build/builders.d/libvpx.patch \ + && touch $@ + + +$(BUILDER_BUILD_DIR)/$(libvpx_dir)/config.mk: $(BUILDER_SRC_DIR)/$(libvpx_dir)/patched.stamp mkdir -p $(BUILDER_BUILD_DIR)/$(libvpx_dir) cd $(BUILDER_BUILD_DIR)/$(libvpx_dir)/ \ && host_alias=${host} . $(BUILDER_SRC_DIR)/build/$(config_site) \ - && export all_platforms="${all_p}" && $(BUILDER_SRC_DIR)/$(libvpx_dir)/configure --prefix=$(prefix) --sdk-path=$$SDK_BIN_PATH/../../ --libc=$$SYSROOT_PATH $(libvpx_configure_options) --extra-cflags="-O1 -fno-strict-aliasing" + && export all_platforms="${all_p}" && $(BUILDER_SRC_DIR)/$(libvpx_dir)/configure --prefix=$(prefix) --sdk-path=$$SDK_BIN_PATH/../../ --libc=$$SYSROOT_PATH $(libvpx_configure_options) --extra-cflags="-fno-strict-aliasing" build-libvpx: $(BUILDER_BUILD_DIR)/$(libvpx_dir)/config.mk cd $(BUILDER_BUILD_DIR)/$(libvpx_dir) \ @@ -37,7 +43,8 @@ clean-libvpx: veryclean-libvpx: -cd $(BUILDER_BUILD_DIR)/$(libvpx_dir) && make distclean cd $(BUILDER_SRC_DIR)/$(libvpx_dir) \ - && git clean -f && git reset --hard + && git clean -f && git reset --hard \ + && rm -f patched.stamp rm -rf $(BUILDER_BUILD_DIR)/$(libvpx_dir) clean-makefile-libvpx: diff --git a/submodules/build/builders.d/libvpx.patch b/submodules/build/builders.d/libvpx.patch index 1bdb3f9d4..ff22c185b 100644 --- a/submodules/build/builders.d/libvpx.patch +++ b/submodules/build/builders.d/libvpx.patch @@ -1,34 +1,17 @@ -diff --git a/build/make/configure.sh b/build/make/configure.sh -index c99a01c..7fdf10d 100755 ---- a/build/make/configure.sh -+++ b/build/make/configure.sh -@@ -889,13 +889,13 @@ process_common_toolchain() { - SDK_PATH=${sdk_path} - fi - TOOLCHAIN_PATH=${SDK_PATH}/usr/bin -- CXX=${TOOLCHAIN_PATH}/g++ -- CC=${TOOLCHAIN_PATH}/gcc -- AR=${TOOLCHAIN_PATH}/ar -- LD=${TOOLCHAIN_PATH}/arm-apple-darwin10-llvm-gcc-4.2 -- AS=${TOOLCHAIN_PATH}/as -- STRIP=${TOOLCHAIN_PATH}/strip -- NM=${TOOLCHAIN_PATH}/nm -+ CXX=`xcrun --find clang++` -+ CC=`xcrun --find clang` -+ AR=`xcrun --find ar` -+ LD=`xcrun --find clang` -+ AS=`xcrun --find as` -+ STRIP=`xcrun --find strip` -+ NM=`xcrun --find nm` - AS_SFX=.s +diff --git a/vp8/decoder/decodframe.c b/vp8/decoder/decodframe.c +index 16da78a..fd9ca61 100644 +--- a/vp8/decoder/decodframe.c ++++ b/vp8/decoder/decodframe.c +@@ -248,7 +248,11 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd, - # ASFLAGS is written here instead of using check_add_asflags -@@ -904,7 +904,7 @@ process_common_toolchain() { - ASFLAGS="-version -arch ${tgt_isa} -g" - - add_cflags -arch ${tgt_isa} -- add_ldflags -arch_only ${tgt_isa} -+ add_ldflags -arch ${tgt_isa} - - if [ -z "${alt_libc}" ]; then - alt_libc=${SDK_PATH}/SDKs/iPhoneOS5.1.sdk + vp8_short_inv_walsh4x4(&b->dqcoeff[0], + xd->qcoeff); +- vpx_memset(b->qcoeff, 0, 16 * sizeof(b->qcoeff[0])); ++ // TODO(johannkoenig): figure out why bzero below ++ // works great on iOS Release but memset or ++ // vpx_memset create terrible corruption on decode ++ // (https://code.google.com/p/webm/issues/detail?id=603). ++ bzero(b->qcoeff, 16 * sizeof(b->qcoeff[0])); + } + else + {