Compare commits
34 Commits
v1.2
...
openh264v1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
30b63a42af | ||
|
|
1b26a3c3fb | ||
|
|
ed9f7e0d05 | ||
|
|
dd136c2cde | ||
|
|
c607d3a248 | ||
|
|
798928ecd1 | ||
|
|
d048a7a94a | ||
|
|
7b9a3251f9 | ||
|
|
681c3e36d4 | ||
|
|
d46514bf51 | ||
|
|
696ed1888e | ||
|
|
c16f60c406 | ||
|
|
5f6d439008 | ||
|
|
facc77bad9 | ||
|
|
66dcbf20bf | ||
|
|
a1639711c9 | ||
|
|
9a5eb54b0a | ||
|
|
62ed30c5b0 | ||
|
|
bf037d2576 | ||
|
|
118a1939ed | ||
|
|
60dd3ea531 | ||
|
|
5536071efd | ||
|
|
6b5d73afc9 | ||
|
|
31c27c57a9 | ||
|
|
904c47530d | ||
|
|
d5ae502ce6 | ||
|
|
eac4f3dec3 | ||
|
|
0f74b9951f | ||
|
|
9bcd596fd4 | ||
|
|
01db323b1b | ||
|
|
d5ee1efcdb | ||
|
|
52b67fa2a9 | ||
|
|
c6e2730519 | ||
|
|
ea70011cd7 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,6 +1,7 @@
|
||||
# Object files
|
||||
*.o
|
||||
*.obj
|
||||
codec/obj
|
||||
|
||||
# Dependency files
|
||||
*.d
|
||||
|
||||
31
.travis.yml
31
.travis.yml
@@ -1,38 +1,15 @@
|
||||
language: cpp
|
||||
|
||||
compiler:
|
||||
- g++
|
||||
- clang
|
||||
|
||||
before_install:
|
||||
- sudo apt-get update -qq
|
||||
- sudo apt-get install -qq nasm g++-4.6-multilib gcc-multilib libc6-dev-i386
|
||||
|
||||
install:
|
||||
- make gmp-bootstrap
|
||||
- make gtest-bootstrap
|
||||
|
||||
before_script:
|
||||
- WorkingDir=`pwd`
|
||||
- cd test/encoder_binary_comparison
|
||||
- ./run_PrepareAllTestData.sh 64
|
||||
- cd ${WorkingDir}
|
||||
|
||||
env:
|
||||
- TASK=UnitTest; TestParameter=""
|
||||
- TASK=BinaryCompare; TestParameter=BA_MW_D.264
|
||||
- TASK=BinaryCompare; TestParameter=LS_SVA_D.264
|
||||
- TASK=BinaryCompare; TestParameter=CVPCMNL1_SVA_C.264
|
||||
|
||||
matrix:
|
||||
exclude:
|
||||
- compiler: clang
|
||||
env: TASK=BinaryCompare; TestParameter=BA_MW_D.264
|
||||
- compiler: clang
|
||||
env: TASK=BinaryCompare; TestParameter=LS_SVA_D.264
|
||||
- compiler: clang
|
||||
env: TASK=BinaryCompare; TestParameter=CVPCMNL1_SVA_C.264
|
||||
script:
|
||||
- echo "currrent test is for ${TASK}"
|
||||
- echo "test parameter is ${TestParameter}"
|
||||
- ./run_Test.sh ${TASK} ${TestParameter}
|
||||
- make -B ENABLE64BIT=Yes BUILDTYPE=Release all plugin test
|
||||
- make -B ENABLE64BIT=Yes BUILDTYPE=Debug all plugin test
|
||||
- make -B ENABLE64BIT=No BUILDTYPE=Release all plugin test
|
||||
- make -B ENABLE64BIT=No BUILDTYPE=Debug all plugin test
|
||||
|
||||
@@ -44,9 +44,8 @@ Rory Zhang
|
||||
Volvet Zhang
|
||||
Ling Zhu
|
||||
James Zhu
|
||||
Dong Zhang
|
||||
Haibo Zhu
|
||||
Huade Shi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
117
Makefile
117
Makefile
@@ -1,10 +1,3 @@
|
||||
SRC_PATH=$(word 1, $(dir $(MAKEFILE_LIST)))
|
||||
vpath %.c $(SRC_PATH)
|
||||
vpath %.cc $(SRC_PATH)
|
||||
vpath %.cpp $(SRC_PATH)
|
||||
vpath %.asm $(SRC_PATH)
|
||||
vpath %.S $(SRC_PATH)
|
||||
|
||||
OS=$(shell uname | tr A-Z a-z | tr -d \\-[:digit:].)
|
||||
ARCH=$(shell uname -m)
|
||||
LIBPREFIX=lib
|
||||
@@ -24,16 +17,16 @@ SHARED=-shared
|
||||
OBJ=o
|
||||
PROJECT_NAME=openh264
|
||||
MODULE_NAME=gmpopenh264
|
||||
GMP_API_BRANCH=master
|
||||
GMP_API_BRANCH=Firefox32
|
||||
CCASFLAGS=$(CFLAGS)
|
||||
|
||||
ifeq (,$(wildcard $(SRC_PATH)gmp-api))
|
||||
ifeq (,$(wildcard ./gmp-api))
|
||||
HAVE_GMP_API=No
|
||||
else
|
||||
HAVE_GMP_API=Yes
|
||||
endif
|
||||
|
||||
ifeq (,$(wildcard $(SRC_PATH)gtest))
|
||||
ifeq (,$(wildcard ./gtest))
|
||||
HAVE_GTEST=No
|
||||
else
|
||||
HAVE_GTEST=Yes
|
||||
@@ -53,7 +46,7 @@ CFLAGS += -fsanitize=address
|
||||
LDFLAGS += -fsanitize=address
|
||||
endif
|
||||
|
||||
include $(SRC_PATH)build/platform-$(OS).mk
|
||||
include build/platform-$(OS).mk
|
||||
|
||||
|
||||
CFLAGS +=
|
||||
@@ -75,59 +68,56 @@ ifneq ($(V),Yes)
|
||||
endif
|
||||
|
||||
|
||||
INCLUDES += -I$(SRC_PATH)codec/api/svc -I$(SRC_PATH)codec/common/inc
|
||||
INCLUDES += -Icodec/api/svc -Icodec/common/inc
|
||||
|
||||
DECODER_INCLUDES += \
|
||||
-I$(SRC_PATH)codec/decoder/core/inc \
|
||||
-I$(SRC_PATH)codec/decoder/plus/inc
|
||||
-Icodec/decoder/core/inc \
|
||||
-Icodec/decoder/plus/inc
|
||||
|
||||
ENCODER_INCLUDES += \
|
||||
-I$(SRC_PATH)codec/encoder/core/inc \
|
||||
-I$(SRC_PATH)codec/encoder/plus/inc \
|
||||
-I$(SRC_PATH)codec/processing/interface
|
||||
-Icodec/encoder/core/inc \
|
||||
-Icodec/encoder/plus/inc \
|
||||
-Icodec/processing/interface
|
||||
|
||||
PROCESSING_INCLUDES += \
|
||||
-I$(SRC_PATH)codec/processing/interface \
|
||||
-I$(SRC_PATH)codec/processing/src/common \
|
||||
-I$(SRC_PATH)codec/processing/src/adaptivequantization \
|
||||
-I$(SRC_PATH)codec/processing/src/downsample \
|
||||
-I$(SRC_PATH)codec/processing/src/scrolldetection \
|
||||
-I$(SRC_PATH)codec/processing/src/vaacalc
|
||||
-Icodec/processing/interface \
|
||||
-Icodec/processing/src/common \
|
||||
-Icodec/processing/src/scrolldetection
|
||||
|
||||
GTEST_INCLUDES += \
|
||||
-I$(SRC_PATH)gtest \
|
||||
-I$(SRC_PATH)gtest/include
|
||||
-Igtest \
|
||||
-Igtest/include
|
||||
|
||||
CODEC_UNITTEST_INCLUDES += \
|
||||
-I$(SRC_PATH)gtest/include \
|
||||
-I$(SRC_PATH)codec/common/inc \
|
||||
-Igtest/include \
|
||||
-Icodec/common/inc \
|
||||
|
||||
CONSOLE_COMMON_INCLUDES += \
|
||||
-I$(SRC_PATH)codec/console/common/inc
|
||||
-Icodec/console/common/inc
|
||||
|
||||
H264DEC_INCLUDES += $(DECODER_INCLUDES) $(CONSOLE_COMMON_INCLUDES) -I$(SRC_PATH)codec/console/dec/inc
|
||||
H264DEC_INCLUDES += $(DECODER_INCLUDES) $(CONSOLE_COMMON_INCLUDES) -Icodec/console/dec/inc
|
||||
H264DEC_LDFLAGS = $(LINK_LOCAL_DIR) $(call LINK_LIB,decoder) $(call LINK_LIB,common) $(call LINK_LIB,console_common)
|
||||
H264DEC_DEPS = $(LIBPREFIX)decoder.$(LIBSUFFIX) $(LIBPREFIX)common.$(LIBSUFFIX) $(LIBPREFIX)console_common.$(LIBSUFFIX)
|
||||
|
||||
H264ENC_INCLUDES += $(ENCODER_INCLUDES) $(CONSOLE_COMMON_INCLUDES) -I$(SRC_PATH)codec/console/enc/inc
|
||||
H264ENC_INCLUDES += $(ENCODER_INCLUDES) $(CONSOLE_COMMON_INCLUDES) -Icodec/console/enc/inc
|
||||
H264ENC_LDFLAGS = $(LINK_LOCAL_DIR) $(call LINK_LIB,encoder) $(call LINK_LIB,processing) $(call LINK_LIB,common) $(call LINK_LIB,console_common)
|
||||
H264ENC_DEPS = $(LIBPREFIX)encoder.$(LIBSUFFIX) $(LIBPREFIX)processing.$(LIBSUFFIX) $(LIBPREFIX)common.$(LIBSUFFIX) $(LIBPREFIX)console_common.$(LIBSUFFIX)
|
||||
|
||||
CODEC_UNITTEST_LDFLAGS = $(LINK_LOCAL_DIR) $(call LINK_LIB,gtest) $(call LINK_LIB,decoder) $(call LINK_LIB,encoder) $(call LINK_LIB,processing) $(call LINK_LIB,common) $(CODEC_UNITTEST_LDFLAGS_SUFFIX)
|
||||
CODEC_UNITTEST_DEPS = $(LIBPREFIX)gtest.$(LIBSUFFIX) $(LIBPREFIX)decoder.$(LIBSUFFIX) $(LIBPREFIX)encoder.$(LIBSUFFIX) $(LIBPREFIX)processing.$(LIBSUFFIX) $(LIBPREFIX)common.$(LIBSUFFIX)
|
||||
DECODER_UNITTEST_INCLUDES += $(CODEC_UNITTEST_INCLUDES) $(DECODER_INCLUDES) -I$(SRC_PATH)test -I$(SRC_PATH)test/decoder
|
||||
ENCODER_UNITTEST_INCLUDES += $(CODEC_UNITTEST_INCLUDES) $(ENCODER_INCLUDES) -I$(SRC_PATH)test -I$(SRC_PATH)test/encoder
|
||||
PROCESSING_UNITTEST_INCLUDES += $(CODEC_UNITTEST_INCLUDES) $(PROCESSING_INCLUDES) -I$(SRC_PATH)test -I$(SRC_PATH)test/processing
|
||||
API_TEST_INCLUDES += $(CODEC_UNITTEST_INCLUDES) -I$(SRC_PATH)test -I$(SRC_PATH)test/api
|
||||
COMMON_UNITTEST_INCLUDES += $(CODEC_UNITTEST_INCLUDES) $(DECODER_INCLUDES) -I$(SRC_PATH)test -I$(SRC_PATH)test/common
|
||||
MODULE_INCLUDES += -I$(SRC_PATH)gmp-api
|
||||
DECODER_UNITTEST_INCLUDES += $(CODEC_UNITTEST_INCLUDES) $(DECODER_INCLUDES) -Itest -Itest/decoder
|
||||
ENCODER_UNITTEST_INCLUDES += $(CODEC_UNITTEST_INCLUDES) $(ENCODER_INCLUDES) -Itest -Itest/encoder
|
||||
PROCESSING_UNITTEST_INCLUDES += $(CODEC_UNITTEST_INCLUDES) $(PROCESSING_INCLUDES) -Itest -Itest/processing
|
||||
API_TEST_INCLUDES += $(CODEC_UNITTEST_INCLUDES) -Itest -Itest/api
|
||||
COMMON_UNITTEST_INCLUDES += $(CODEC_UNITTEST_INCLUDES) $(DECODER_INCLUDES) -Itest -Itest/common
|
||||
MODULE_INCLUDES += -Igmp-api
|
||||
|
||||
.PHONY: test gtest-bootstrap clean
|
||||
|
||||
all: libraries binaries
|
||||
|
||||
generate-version:
|
||||
$(QUIET)cd $(SRC_PATH) && sh ./codec/common/generate_version.sh
|
||||
sh ./codec/common/generate_version.sh
|
||||
|
||||
codec/decoder/plus/src/welsDecoderExt.$(OBJ): | generate-version
|
||||
codec/encoder/plus/src/welsEncoderExt.$(OBJ): | generate-version
|
||||
@@ -136,7 +126,7 @@ clean:
|
||||
ifeq (android,$(OS))
|
||||
clean: clean_Android
|
||||
endif
|
||||
$(QUIET)rm -f $(OBJS) $(OBJS:.$(OBJ)=.d) $(OBJS:.$(OBJ)=.obj) $(LIBRARIES) $(BINARIES) *.lib *.a *.dylib *.dll *.so
|
||||
$(QUIET)rm -f $(OBJS) $(OBJS:.$(OBJ)=.d) $(LIBRARIES) $(BINARIES)
|
||||
|
||||
gmp-bootstrap:
|
||||
if [ ! -d gmp-api ] ; then git clone https://github.com/mozilla/gmp-api gmp-api ; fi
|
||||
@@ -160,20 +150,20 @@ test:
|
||||
@echo "You do not have gtest. Run make gtest-bootstrap to get gtest"
|
||||
endif
|
||||
|
||||
include $(SRC_PATH)codec/common/targets.mk
|
||||
include $(SRC_PATH)codec/decoder/targets.mk
|
||||
include $(SRC_PATH)codec/encoder/targets.mk
|
||||
include $(SRC_PATH)codec/processing/targets.mk
|
||||
include codec/common/targets.mk
|
||||
include codec/decoder/targets.mk
|
||||
include codec/encoder/targets.mk
|
||||
include codec/processing/targets.mk
|
||||
|
||||
ifeq ($(HAVE_GMP_API),Yes)
|
||||
include $(SRC_PATH)module/targets.mk
|
||||
include module/targets.mk
|
||||
endif
|
||||
|
||||
ifneq (android, $(OS))
|
||||
ifneq (ios, $(OS))
|
||||
include $(SRC_PATH)codec/console/dec/targets.mk
|
||||
include $(SRC_PATH)codec/console/enc/targets.mk
|
||||
include $(SRC_PATH)codec/console/common/targets.mk
|
||||
include codec/console/dec/targets.mk
|
||||
include codec/console/enc/targets.mk
|
||||
include codec/console/common/targets.mk
|
||||
endif
|
||||
endif
|
||||
|
||||
@@ -191,7 +181,7 @@ $(LIBPREFIX)$(PROJECT_NAME).$(LIBSUFFIX): $(ENCODER_OBJS) $(DECODER_OBJS) $(PROC
|
||||
|
||||
$(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIX): $(ENCODER_OBJS) $(DECODER_OBJS) $(PROCESSING_OBJS) $(COMMON_OBJS)
|
||||
$(QUIET)rm -f $@
|
||||
$(QUIET_CXX)$(CXX) $(SHARED) $(CXX_LINK_O) $+ $(LDFLAGS) $(SHLDFLAGS)
|
||||
$(QUIET_CXX)$(CXX) $(SHARED) $(LDFLAGS) $(CXX_LINK_O) $+ $(SHLDFLAGS)
|
||||
|
||||
ifeq ($(HAVE_GMP_API),Yes)
|
||||
plugin: $(LIBPREFIX)$(MODULE_NAME).$(SHAREDLIBSUFFIX)
|
||||
@@ -204,7 +194,7 @@ endif
|
||||
|
||||
$(LIBPREFIX)$(MODULE_NAME).$(SHAREDLIBSUFFIX): $(MODULE_OBJS) $(ENCODER_OBJS) $(DECODER_OBJS) $(PROCESSING_OBJS) $(COMMON_OBJS)
|
||||
$(QUIET)rm -f $@
|
||||
$(QUIET_CXX)$(CXX) $(SHARED) $(CXX_LINK_O) $+ $(LDFLAGS) $(SHLDFLAGS) $(MODULE_LDFLAGS)
|
||||
$(QUIET_CXX)$(CXX) $(SHARED) $(LDFLAGS) $(CXX_LINK_O) $+ $(SHLDFLAGS) $(MODULE_LDFLAGS)
|
||||
|
||||
install-headers:
|
||||
mkdir -p $(PREFIX)/include/wels
|
||||
@@ -225,12 +215,12 @@ install: install-static install-shared
|
||||
@:
|
||||
|
||||
ifeq ($(HAVE_GTEST),Yes)
|
||||
include $(SRC_PATH)build/gtest-targets.mk
|
||||
include $(SRC_PATH)test/api/targets.mk
|
||||
include $(SRC_PATH)test/decoder/targets.mk
|
||||
include $(SRC_PATH)test/encoder/targets.mk
|
||||
include $(SRC_PATH)test/processing/targets.mk
|
||||
include $(SRC_PATH)test/common/targets.mk
|
||||
include build/gtest-targets.mk
|
||||
include test/api/targets.mk
|
||||
include test/decoder/targets.mk
|
||||
include test/encoder/targets.mk
|
||||
include test/processing/targets.mk
|
||||
include test/common/targets.mk
|
||||
|
||||
LIBRARIES += $(LIBPREFIX)ut.$(LIBSUFFIX)
|
||||
$(LIBPREFIX)ut.$(LIBSUFFIX): $(DECODER_UNITTEST_OBJS) $(ENCODER_UNITTEST_OBJS) $(PROCESSING_UNITTEST_OBJS) $(COMMON_UNITTEST_OBJS) $(API_TEST_OBJS)
|
||||
@@ -241,7 +231,7 @@ $(LIBPREFIX)ut.$(LIBSUFFIX): $(DECODER_UNITTEST_OBJS) $(ENCODER_UNITTEST_OBJS) $
|
||||
LIBRARIES +=$(LIBPREFIX)ut.$(SHAREDLIBSUFFIX)
|
||||
$(LIBPREFIX)ut.$(SHAREDLIBSUFFIX): $(DECODER_UNITTEST_OBJS) $(ENCODER_UNITTEST_OBJS) $(PROCESSING_UNITTEST_OBJS) $(API_TEST_OBJS) $(COMMON_UNITTEST_OBJS) $(CODEC_UNITTEST_DEPS)
|
||||
$(QUIET)rm -f $@
|
||||
$(QUIET_CXX)$(CXX) $(SHARED) $(CXX_LINK_O) $+ $(LDFLAGS) $(CODEC_UNITTEST_LDFLAGS)
|
||||
$(QUIET_CXX)$(CXX) $(SHARED) $(LDFLAGS) $(CXX_LINK_O) $+ $(CODEC_UNITTEST_LDFLAGS)
|
||||
|
||||
binaries: codec_unittest$(EXEEXT)
|
||||
BINARIES += codec_unittest$(EXEEXT)
|
||||
@@ -251,7 +241,6 @@ codec_unittest$(EXEEXT): $(LIBPREFIX)ut.$(LIBSUFFIX) $(LIBPREFIX)gtest.$(LIBSUFF
|
||||
|
||||
else
|
||||
ifeq (android,$(OS))
|
||||
ifeq (./,$(SRC_PATH))
|
||||
codec_unittest$(EXEEXT): $(LIBPREFIX)ut.$(SHAREDLIBSUFFIX)
|
||||
cd ./test/build/android && $(NDKROOT)/ndk-build -B APP_ABI=$(APP_ABI) && android update project -t $(TARGET) -p . && ant debug
|
||||
|
||||
@@ -260,17 +249,10 @@ clean_Android_ut:
|
||||
-cd ./test/build/android && $(NDKROOT)/ndk-build APP_ABI=$(APP_ABI) clean && ant clean
|
||||
|
||||
else
|
||||
codec_unittest$(EXEEXT):
|
||||
@:
|
||||
endif
|
||||
else
|
||||
codec_unittest$(EXEEXT): $(DECODER_UNITTEST_OBJS) $(ENCODER_UNITTEST_OBJS) $(PROCESSING_UNITTEST_OBJS) $(API_TEST_OBJS) $(COMMON_UNITTEST_OBJS) $(CODEC_UNITTEST_DEPS) | res
|
||||
codec_unittest$(EXEEXT): $(DECODER_UNITTEST_OBJS) $(ENCODER_UNITTEST_OBJS) $(PROCESSING_UNITTEST_OBJS) $(API_TEST_OBJS) $(COMMON_UNITTEST_OBJS) $(CODEC_UNITTEST_DEPS)
|
||||
$(QUIET)rm -f $@
|
||||
$(QUIET_CXX)$(CXX) $(CXX_LINK_O) $+ $(CODEC_UNITTEST_LDFLAGS) $(LDFLAGS)
|
||||
|
||||
res:
|
||||
$(QUIET)if [ ! -e res ]; then ln -s $(SRC_PATH)res .; fi
|
||||
|
||||
endif
|
||||
endif
|
||||
|
||||
@@ -280,10 +262,3 @@ binaries:
|
||||
endif
|
||||
|
||||
-include $(OBJS:.$(OBJ)=.d)
|
||||
|
||||
OBJDIRS = $(sort $(dir $(OBJS)))
|
||||
|
||||
$(OBJDIRS):
|
||||
$(QUIET)mkdir -p $@
|
||||
|
||||
$(OBJS): | $(OBJDIRS)
|
||||
|
||||
BIN
OpenH264_API_v1.1.docx
Normal file
BIN
OpenH264_API_v1.1.docx
Normal file
Binary file not shown.
Binary file not shown.
@@ -64,13 +64,14 @@ The codec and demo can be built by
|
||||
'make OS=android NDKROOT=**ANDROID_NDK** TARGET= **ANDROID_TARGET**'
|
||||
|
||||
Valid **ANDROID_TARGET** can be found in **ANDROID_SDK**/platforms, such as android-12.
|
||||
You can also set ARCH, NDKLEVEL according to your device and NDK version.
|
||||
You can also set ARCH, NDKLEVEL, GCCVERSION according to your device and NDK version.
|
||||
ARCH specifies the architecture of android device. Currently only arm and x86 are supported, the default is arm.
|
||||
NDKLEVEL specifies android api level, the api level can be 12-19, the default is 12.
|
||||
GCCVERSION specifies which gcc in NDK is used, the default is 4.8.
|
||||
|
||||
By default these commands build for the armeabi-v7a ABI. To build for the other android
|
||||
ABIs, add "ARCH=arm64", "ARCH=x86", "ARCH=x86_64", "ARCH=mips" or "ARCH=mips64".
|
||||
To build for the older armeabi ABI (which has armv5te as baseline), add "APP_ABI=armeabi" (ARCH=arm is implicit).
|
||||
ABIs, add "ARCH=mips" or "ARCH=x86". To build for the older armeabi ABI (which has
|
||||
armv5te as baseline), add "APP_ABI=armeabi" (ARCH=arm is implicit).
|
||||
|
||||
For iOS Builds
|
||||
--------------
|
||||
|
||||
23
RELEASES
23
RELEASES
@@ -1,16 +1,5 @@
|
||||
|
||||
Releases
|
||||
-----------
|
||||
v1.2.0
|
||||
------
|
||||
- Add and modify encoder APIs related to rate control and screen content encoding
|
||||
- Remove PauseFrame in encoder APIs
|
||||
- Improve rate control and compression ratio for screen content encoding
|
||||
- Improve error concealment algorithm
|
||||
- Improve validation of input parameters
|
||||
- Add ARM64 assembly
|
||||
- bug fixes
|
||||
|
||||
-----------
|
||||
v1.1.0
|
||||
------
|
||||
@@ -26,19 +15,11 @@ Binaries
|
||||
These binary releases are distributed under this license:
|
||||
http://www.openh264.org/BINARY_LICENSE.txt
|
||||
|
||||
v1.2.0
|
||||
------
|
||||
http://ciscobinary.openh264.org/libopenh264-1.2.0-android19.so.bz2
|
||||
http://ciscobinary.openh264.org/libopenh264-1.2.0-linux32.so.bz2
|
||||
http://ciscobinary.openh264.org/libopenh264-1.2.0-linux64.so.bz2
|
||||
http://ciscobinary.openh264.org/libopenh264-1.2.0-osx32.dylib.bz2
|
||||
http://ciscobinary.openh264.org/libopenh264-1.2.0-osx64.dylib.bz2
|
||||
http://ciscobinary.openh264.org/openh264-1.2.0-win32msvc.dll.bz2
|
||||
http://ciscobinary.openh264.org/openh264-1.2.0-win64msvc.dll.bz2
|
||||
|
||||
v1.1.0
|
||||
------
|
||||
http://ciscobinary.openh264.org/libopenh264-1.1.0-android19.so.bz2
|
||||
http://ciscobinary.openh264.org/libopenh264-1.1.0-ios32.a.bz2
|
||||
http://ciscobinary.openh264.org/libopenh264-1.1.0-ios64.a.bz2
|
||||
http://ciscobinary.openh264.org/libopenh264-1.1.0-linux32.so.bz2
|
||||
http://ciscobinary.openh264.org/libopenh264-1.1.0-linux64.so.bz2
|
||||
http://ciscobinary.openh264.org/libopenh264-1.1.0-osx32.dylib.bz2
|
||||
|
||||
13
autotest/performanceTest/.gitignore
vendored
13
autotest/performanceTest/.gitignore
vendored
@@ -1,13 +0,0 @@
|
||||
#performance test resource folder
|
||||
./EncoderPerfTestRes
|
||||
./DecoderPerfTestRes
|
||||
./DecoderPerfTestRes/*.*
|
||||
./EncoderPerfTestRes/*.*
|
||||
#performance test result folder
|
||||
./TestResultCSV
|
||||
#
|
||||
.DS_Store
|
||||
#.
|
||||
./android/report
|
||||
./ios/report
|
||||
|
||||
@@ -1,180 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
AUTO_TEST_ANDROID_PATH=`pwd`
|
||||
AUTO_TEST_SRC_PATH="../../../"
|
||||
AUTO_TEST_RES_PATH="${AUTO_TEST_ANDROID_PATH}/report"
|
||||
mkdir -p ${AUTO_TEST_RES_PATH}
|
||||
#Prepare android build enviroment
|
||||
echo please set the enviroment variable as:
|
||||
echo export ANDROID_HOME="path of android sdk"
|
||||
echo export ANDROID_NDK_HOME="path of android ndk"
|
||||
ANDROID_SDK_PATH=${ANDROID_HOME}
|
||||
ANDROID_NDK_PATH=${ANDROID_NDK_HOME}
|
||||
ANDROID_MAKE_PARAMS="OS=android NDKROOT=${ANDROID_NDK_PATH} TARGET=android-19"
|
||||
|
||||
if [ "#${ANDROID_SDK_PATH}" = "#" ]
|
||||
then
|
||||
echo Please set ANDROID_HOME with the path of Android SDK
|
||||
exit 1
|
||||
fi
|
||||
if [ "#${ANDROID_NDK_PATH}" = "#" ]
|
||||
then
|
||||
echo Please set ANDROID_NDK_HOME with the path of Android NDK
|
||||
exit 1
|
||||
fi
|
||||
#make build
|
||||
cd ${AUTO_TEST_SRC_PATH}
|
||||
find ./ -name *.o -exec rm -f {} \;
|
||||
find ./ -name *.d -exec rm -f {} \;
|
||||
make $ANDROID_MAKE_PARAMS
|
||||
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo Build error,check with the trace of make
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ENCDEC=$1
|
||||
#find apk
|
||||
if [ ${ENCDEC} = "enc" ]
|
||||
then
|
||||
echo Start to find enc apk
|
||||
apk_name=`find ./ -name WelsEncTest-debug.apk`
|
||||
if [ "#${apk_name}" = "#" ]
|
||||
then
|
||||
echo Fail to find encoder APK.
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo Start to find dec apk
|
||||
apk_name=`find ./ -name WelsDecTest-debug.apk`
|
||||
if [ "#${apk_name}" = "#" ]
|
||||
then
|
||||
echo Fail to find decoder APK.
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
#prepare devices
|
||||
ADB=${ANDROID_SDK_PATH}/platform-tools/adb
|
||||
|
||||
#get devices
|
||||
devices=`$ADB devices | awk -F" " '/\tdevice/{print $1}'`
|
||||
if [ "#$devices" = "#" ];then
|
||||
echo "Have not any android devices."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#run apk
|
||||
run_apk() {
|
||||
local apk=$1;
|
||||
local rand=` date +%s`
|
||||
|
||||
if [[ "${apk}" =~ "WelsDecTest-debug.apk" ]]
|
||||
then
|
||||
apk_id="com.wels.dec"
|
||||
apk_main="com.wels.dec/.WelsDecTest"
|
||||
test_path="/sdcard/welsdec"
|
||||
log_grep_params="welsdec"
|
||||
test_res=${AUTO_TEST_ANDROID_PATH}/../DecoderPerfTestRes
|
||||
report_file=${AUTO_TEST_RES_PATH}/decPerf
|
||||
|
||||
fi
|
||||
if [[ "${apk}" =~ "WelsEncTest-debug.apk" ]]
|
||||
then
|
||||
apk_id="com.wels.enc"
|
||||
apk_main="com.wels.enc/.WelsEncTest"
|
||||
test_path="/sdcard/welsenc"
|
||||
log_grep_params="welsenc"
|
||||
test_res=${AUTO_TEST_ANDROID_PATH}/../EncoderPerfTestRes
|
||||
report_file=${AUTO_TEST_RES_PATH}/encPerf
|
||||
fi
|
||||
space="limit"
|
||||
for dev in $devices; do
|
||||
dev_info_file=${AUTO_TEST_RES_PATH}/${dev}.log
|
||||
$ADB -s $dev uninstall ${apk_id}
|
||||
$ADB -s $dev install -r ${apk}
|
||||
#TODO: output more info about android device such as name,cpu,memory,and also power comsumption.
|
||||
#echo `$ADB -s $dev shell cat /system/build.prop |grep ro.product.model | awk -F"=" '{print $2}'`>${dev_info_file}
|
||||
#push resources
|
||||
#For limited devices space
|
||||
if [ ${space} = "limit" ]
|
||||
then
|
||||
test_res_bak=${test_res}_bak
|
||||
mv ${test_res} ${test_res_bak}
|
||||
mkdir -p ${test_res}
|
||||
test_case=`ls ${test_res_bak}`
|
||||
for case in ${test_case}
|
||||
do
|
||||
echo ${case}
|
||||
cp -r ${test_res_bak}/${case} ${test_res}/.
|
||||
$ADB -s $dev push ${test_res} ${test_path}
|
||||
#before start logcat,kill logcat
|
||||
pid=`$ADB -s $dev shell ps | grep logcat | awk '{print $2;}'`
|
||||
[ "#$pid" != "#" ] && $ADB -s $dev shell kill $pid >/dev/null
|
||||
$ADB -s $dev logcat -c
|
||||
$ADB -s $dev logcat |grep ${log_grep_params} >>${report_file}_${dev}_${rand}.log &
|
||||
$ADB -s $dev shell am start -n ${apk_main}
|
||||
# check whetehr the app is finished every 2 sec
|
||||
for (( ; ; )); do
|
||||
$ADB -s $dev shell ps | grep ${apk_id}
|
||||
if [ $? -ne 0 ]; then
|
||||
sleep 2
|
||||
$ADB -s $dev shell ps | grep ${apk_id}
|
||||
[ $? -ne 0 ] && break
|
||||
fi
|
||||
sleep 2
|
||||
done
|
||||
|
||||
# kill logcat
|
||||
pid=`$ADB -s $dev shell ps | grep logcat | awk '{print $2;}'`
|
||||
[ "#$pid" != "#" ] && $ADB -s $dev shell kill $pid >/dev/null
|
||||
|
||||
#delete the res
|
||||
$ADB -s $dev shell rm -rf ${test_path}
|
||||
rm -rf ${test_res}/${case}
|
||||
done
|
||||
rm -rf ${test_res}
|
||||
mv ${test_res_bak} ${test_res}
|
||||
else
|
||||
$ADB -s $dev push ${test_res} ${test_path}
|
||||
#before start logcat,kill logcat
|
||||
pid=`$ADB -s $dev shell ps | grep logcat | awk '{print $2;}'`
|
||||
[ "#$pid" != "#" ] && $ADB -s $dev shell kill $pid >/dev/null
|
||||
$ADB -s $dev logcat -c
|
||||
$ADB -s $dev logcat |grep ${log_grep_params} >${report_file}_${dev}_${rand}.log &
|
||||
$ADB -s $dev shell am start -n ${apk_main}
|
||||
# check whetehr the app is finished every 2 sec
|
||||
for (( ; ; )); do
|
||||
$ADB -s $dev shell ps | grep ${apk_id}
|
||||
if [ $? -ne 0 ]; then
|
||||
sleep 2
|
||||
$ADB -s $dev shell ps | grep ${apk_idi}
|
||||
[ $? -ne 0 ] && break
|
||||
fi
|
||||
sleep 2
|
||||
done
|
||||
|
||||
# kill logcat
|
||||
pid=`$ADB -s $dev shell ps | grep logcat | awk '{print $2;}'`
|
||||
[ "#$pid" != "#" ] && $ADB -s $dev shell kill $pid >/dev/null
|
||||
|
||||
#delete the res
|
||||
$ADB -s $dev shell rm -rf ${test_path}
|
||||
fi
|
||||
|
||||
done
|
||||
}
|
||||
for apk in ${apk_name};do
|
||||
run_apk $apk;
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo There is something wrong happened when run ${apk_name}
|
||||
exit 1
|
||||
else
|
||||
echo Finished $ENCDEC performance test on android
|
||||
echo The test result is at ./android/report/xxx.log
|
||||
echo xxxxxxxxxxxxxxxAndroid $ENCDEC Endxxxxxxxxxxxxxxxx
|
||||
fi
|
||||
done
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,193 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
##############################################################
|
||||
#Build ios test ref app
|
||||
|
||||
#set the default configuration
|
||||
CODEC_TEST_IOS_ARCH="armv7 armv7s arm64"
|
||||
CODEC_TEST_IOS_PLATFORM="iphoneos"
|
||||
CODEC_TEST_IOS_DEBUG_RELEASE="Release"
|
||||
CODEC_TEST_IOS_REPORT_SUBFOLDER="release"
|
||||
|
||||
|
||||
buildXcodeProject()
|
||||
{
|
||||
xcodebuild ARCHS="${CODEC_TEST_IOS_ARCH}" VALID_ARCHS="${CODEC_TEST_IOS_ARCH}" ONLY_ACTIVE_ARCH=YES -project $1 -target $2 -configuration $3 -sdk ${CODEC_TEST_IOS_PLATFORM} clean build
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "build $1 $3 successfully"
|
||||
else
|
||||
echo "build $1 $3 fail"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
|
||||
iosPerformanceTest()
|
||||
{
|
||||
|
||||
if [ $# -gt 2 ]; then
|
||||
echo "Please use command $0 [enc/dec] [release/debug]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for PARAM in $*; do
|
||||
if [ "enc" = "${PARAM}" ]; then
|
||||
CODEC_TEST_XCODE_PROJECT_NAME="${AUTO_TEST_SRC_PATH}/codec/build/iOS/enc/encDemo/encDemo.xcodeproj"
|
||||
CODEC_TEST_IOS_PROJECT_NAME="encDemo"
|
||||
CODEC_TEST_IOS_PROJECT_PATH="${AUTO_TEST_SRC_PATH}/codec/build/iOS/enc/encDemo/build"
|
||||
CODEC_TEST_IOS_APP=${CODEC_TEST_IOS_PROJECT_PATH}/${CODEC_TEST_IOS_DEBUG_RELEASE}-iphoneos/${CODEC_TEST_IOS_PROJECT_NAME}.app
|
||||
CODEC_TEST_IOS_APP_ID="cisco.encDemo"
|
||||
CODEC_TEST_RES=${AUTO_TEST_IOS_PATH}/../EncoderPerfTestRes
|
||||
CODEC_TEST_LOG="encPerf"
|
||||
elif [ "dec" = "${PARAM}" ]; then
|
||||
CODEC_TEST_XCODE_PROJECT_NAME="${AUTO_TEST_SRC_PATH}/codec/build/iOS/dec/demo/demo.xcodeproj/"
|
||||
CODEC_TEST_IOS_PROJECT_NAME="demo"
|
||||
CODEC_TEST_IOS_PROJECT_PATH="${AUTO_TEST_SRC_PATH}/codec/build/iOS/dec/demo/build"
|
||||
CODEC_TEST_IOS_APP=${CODEC_TEST_IOS_PROJECT_PATH}/${CODEC_TEST_IOS_DEBUG_RELEASE}-iphoneos/${CODEC_TEST_IOS_PROJECT_NAME}.app
|
||||
CODEC_TEST_IOS_APP_ID="hf.cisco.demo"
|
||||
CODEC_TEST_RES=${AUTO_TEST_IOS_PATH}/../DecoderPerfTestRes
|
||||
CODEC_TEST_LOG="decPerf"
|
||||
elif [ "release" = "${PARAM}" ]; then
|
||||
CODEC_TEST_IOS_DEBUG_RELEASE="Release"
|
||||
CODEC_TEST_IOS_REPORT_SUBFOLDER="release"
|
||||
elif [ "debug" = "${PARAM}" ]; then
|
||||
CODEC_TEST_IOS_DEBUG_RELEASE="Debug"
|
||||
CODEC_TEST_IOS_REPORT_SUBFOLDER="debug"
|
||||
else
|
||||
echo parameters are illegal!!!, please have a check.
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Codec test will run on ${CODEC_TEST_IOS_PLATFORM} with ${CODEC_TEST_IOS_DEBUG_RELEASE}"
|
||||
buildXcodeProject ${CODEC_TEST_XCODE_PROJECT_NAME} ${CODEC_TEST_IOS_PROJECT_NAME} ${CODEC_TEST_IOS_DEBUG_RELEASE} ${CODEC_TEST_IOS_PLATFORM}
|
||||
|
||||
|
||||
|
||||
|
||||
##############run on ios devices#########################
|
||||
# for real device
|
||||
if [ ! -d ${CODEC_TEST_IOS_APP} ] ; then
|
||||
echo "${CODEC_TEST_IOS_APP} is not found"
|
||||
exit 1
|
||||
else
|
||||
echo "Find app ${CODEC_TEST_IOS_APP}"
|
||||
fi
|
||||
|
||||
#ensure instruments not runing
|
||||
echo "Try to kill the runing instruments"
|
||||
pids_str=`ps x -o pid,command | grep -v grep | grep "instruments" | awk '{printf "%s,", $1}'`
|
||||
instruments_pids="${pids_str//,/ }"
|
||||
for pid in ${instruments_pids}; do
|
||||
echo "Found instruments ${pid}. Killing..."
|
||||
kill -9 ${pid} && wait ${pid} &> /dev/null
|
||||
done
|
||||
|
||||
|
||||
|
||||
DEVICES=`system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p' -e '/iPhone/,/Serial/p' | grep "Serial Number:" | awk -F ": " '{print $2}'`
|
||||
if [ "${DEVICES}#" == "#" ]
|
||||
then
|
||||
echo "Can not find any connected device! please check device is connected to MAC!"
|
||||
exit 1
|
||||
else
|
||||
rand=`date +%s`
|
||||
for DEVICE_ID in ${DEVICES}
|
||||
do
|
||||
echo "Try to run on device:${DEVICE_ID}"
|
||||
|
||||
#Encoder YUV file too large
|
||||
if [ ${ENCDEC} = "enc" ]
|
||||
then
|
||||
#For limited devices space
|
||||
BAKRES=${CODEC_TEST_RES}_bak
|
||||
mv ${CODEC_TEST_RES} ${BAKRES}
|
||||
mkdir -p ${CODEC_TEST_RES}
|
||||
CODEC_CASE=`ls ${BAKRES}`
|
||||
echo ${CODEC_CASE}
|
||||
for CASE in ${CODEC_CASE}
|
||||
do
|
||||
echo ${CASE}
|
||||
cp -r ${BAKRES}/${CASE} ${CODEC_TEST_RES}/.
|
||||
|
||||
|
||||
#uninstall the application from device to remove the last result
|
||||
./fruitstrap uninstall --bundle ${CODEC_TEST_IOS_APP_ID} --id ${DEVICE_ID}
|
||||
if [ $? -ne 0 ]; then
|
||||
echo uninstall application: ${CODEC_TEST_IOS_APP} from device: ${DEVICE_ID} is failed!
|
||||
fi
|
||||
#install the application
|
||||
./fruitstrap install --bundle ${CODEC_TEST_IOS_APP} --id ${DEVICE_ID}
|
||||
if [ $? -ne 0 ]; then
|
||||
echo install application: ${CODEC_TEST_IOS_APP} to device: ${DEVICE_ID} is failed!
|
||||
exit 1
|
||||
fi
|
||||
|
||||
./iFileTransfer -o copy -id ${DEVICE_ID} -app ${CODEC_TEST_IOS_APP_ID} -from ${CODEC_TEST_RES}
|
||||
instruments -w ${DEVICE_ID} -t /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate ${CODEC_TEST_IOS_APP} -e UIASCRIPT ./uiascript.js -e UIARRESULTPATH /tmp/
|
||||
#copy to report folder
|
||||
./iFileTransfer -o download -id ${DEVICE_ID} -app ${CODEC_TEST_IOS_APP_ID} -from /Documents/${CODEC_TEST_LOG}.log -to ${CODEC_TEST_IOS_REPORT_PATH}/${CODEC_TEST_LOG}_${DEVICE_ID}_${rand}_${CASE}.log
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "download file: ${CODEC_TEST_LOG}.log from ${CODEC_TEST_IOS_APP_ID} is failed!"
|
||||
exit 1
|
||||
fi
|
||||
cat ${CODEC_TEST_IOS_REPORT_PATH}/${CODEC_TEST_LOG}_${DEVICE_ID}_${rand}_${CASE}.log>>${CODEC_TEST_IOS_REPORT_PATH}/${CODEC_TEST_LOG}_${DEVICE_ID}_${rand}.log
|
||||
rm -f ${CODEC_TEST_IOS_REPORT_PATH}/${CODEC_TEST_LOG}_${DEVICE_ID}_${rand}_${CASE}.log
|
||||
rm -rf ${CODEC_TEST_RES}/${CASE}
|
||||
done
|
||||
rm -rf ${CODEC_TEST_RES}
|
||||
mv ${BAKRES} ${CODEC_TEST_RES}
|
||||
#Enough spaces
|
||||
else
|
||||
#uninstall the application from device to remove the last result
|
||||
./fruitstrap uninstall --bundle ${CODEC_TEST_IOS_APP_ID} --id ${DEVICE_ID}
|
||||
if [ $? -ne 0 ]; then
|
||||
echo uninstall application: ${CODEC_TEST_IOS_APP} from device: ${DEVICE_ID} is failed!
|
||||
fi
|
||||
#install the application
|
||||
./fruitstrap install --bundle ${CODEC_TEST_IOS_APP} --id ${DEVICE_ID}
|
||||
if [ $? -ne 0 ]; then
|
||||
echo install application: ${CODEC_TEST_IOS_APP} to device: ${DEVICE_ID} is failed!
|
||||
exit 1
|
||||
fi
|
||||
|
||||
./iFileTransfer -o copy -id ${DEVICE_ID} -app ${CODEC_TEST_IOS_APP_ID} -from ${CODEC_TEST_RES}
|
||||
instruments -w ${DEVICE_ID} -t /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate ${CODEC_TEST_IOS_APP} -e UIASCRIPT ./uiascript.js -e UIARRESULTPATH /tmp/
|
||||
#copy to report folder
|
||||
./iFileTransfer -o download -id ${DEVICE_ID} -app ${CODEC_TEST_IOS_APP_ID} -from /Documents/${CODEC_TEST_LOG}.log -to ${CODEC_TEST_IOS_REPORT_PATH}/${CODEC_TEST_LOG}_${DEVICE_ID}_${rand}_${CASE}.log
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "download file: ${CODEC_TEST_LOG}.log from ${CODEC_TEST_IOS_APP_ID} is failed!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
fi
|
||||
done
|
||||
|
||||
fi
|
||||
}
|
||||
|
||||
AUTO_TEST_IOS_PATH=`pwd`
|
||||
AUTO_TEST_SRC_PATH="../../.."
|
||||
CODEC_TEST_IOS_REPORT_PATH="${AUTO_TEST_IOS_PATH}/report"
|
||||
if [ ! -d ${CODEC_TEST_IOS_REPORT_PATH} ]
|
||||
then
|
||||
mkdir -p ${CODEC_TEST_IOS_REPORT_PATH}
|
||||
fi
|
||||
|
||||
ENCDEC=$1
|
||||
#start to get encoder/decoder performance data,default run the xcode with release
|
||||
iosPerformanceTest $ENCDEC release
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Running $ENCDEC demo to get encoder performance is failed!"
|
||||
exit 1
|
||||
else
|
||||
echo Finished $ENCDEC performance test on ios devices
|
||||
echo the test result is generated at ./ios/report/xx.loGbash parsePerfData.sh
|
||||
echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxIOS $ENCDEC Endxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
fi
|
||||
#TODO:according to the trace of instruments to do some analysis
|
||||
#find ./ -name *.trace -exec rm -rf {} \;
|
||||
@@ -1,19 +0,0 @@
|
||||
UIATarget.onAlert = function onAlert(alert){
|
||||
|
||||
UIALogger.logMessage("In Alert!");
|
||||
title = alert.name();
|
||||
if (title && title.indexOf("Microphone") !== -1) {
|
||||
UIALogger.logMessage("Alert with title '" + title + "' encountered!");
|
||||
var buttons = alert.buttons();
|
||||
var buttonCount = buttons.length;
|
||||
|
||||
if (buttonCount > 0) {
|
||||
var acceptButton = buttons[buttonCount - 1];
|
||||
acceptButton.tap(); // last button is accept
|
||||
}
|
||||
return true; //forbid the default cancel processing
|
||||
}
|
||||
return false; //using the default cancel processing
|
||||
}
|
||||
var target = UIATarget.localTarget();
|
||||
target.delay(6000);
|
||||
@@ -1,107 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
#usage runGetPerformanceInfo ${PerformanceLogFile}
|
||||
runGetPerformanceInfo_openh264()
|
||||
{
|
||||
|
||||
if [ ! $# -eq 2 ]
|
||||
then
|
||||
echo "not enough parameters!"
|
||||
echo "usage: ${0} [android/ios] ${PerformanceLogFile}"
|
||||
return 1
|
||||
fi
|
||||
|
||||
local PerformanceLogFile=$2
|
||||
local FileName=""
|
||||
local Width=""
|
||||
local Height=""
|
||||
local Frames=""
|
||||
local FPS=""
|
||||
local EncodeTime=""
|
||||
if [ $1 = "android" ]
|
||||
then seperatorNum=3
|
||||
else
|
||||
seperatorNum=2
|
||||
fi
|
||||
|
||||
while read line
|
||||
do
|
||||
if [[ $line =~ "enc yuv file" ]]
|
||||
then
|
||||
FileName=`echo $line | awk 'BEGIN {FS="enc yuv file"} {print $2}'`
|
||||
FileName=`echo $FileName | awk 'BEGIN {FS=":"} {print $2}'`
|
||||
fi
|
||||
if [[ $line =~ "Width" ]]
|
||||
then
|
||||
Width=`echo $line | awk 'BEGIN {FS=":"} {print $'${seperatorNum}'}'`
|
||||
fi
|
||||
if [[ $line =~ "Height" ]]
|
||||
then
|
||||
Height=`echo $line | awk 'BEGIN {FS=":"} {print $'${seperatorNum}'}'`
|
||||
fi
|
||||
if [[ $line =~ "Frames" ]]
|
||||
then
|
||||
Frames=`echo $line | awk 'BEGIN {FS=":"} {print $'${seperatorNum}'}'`
|
||||
fi
|
||||
if [[ $line =~ "FPS" ]]
|
||||
then
|
||||
FPS=`echo $line | awk 'BEGIN {FS=":"} {print $'${seperatorNum}'}'`
|
||||
FPS=`echo $FPS | awk 'BEGIN {FS="fps"} {print $1}'`
|
||||
echo "${FileName},"${Width}x${Height}",${Frames},${FPS}"
|
||||
fi
|
||||
|
||||
if [[ $line =~ "encode time" ]]
|
||||
then
|
||||
EncodeTime=`echo $line | awk 'BEGIN {FS=":"} {print $'${seperatorNum}'}'`
|
||||
fi
|
||||
if [[ $line =~ "height" ]]
|
||||
then
|
||||
Height=`echo $line | awk 'BEGIN {FS=":"} {print $'${seperatorNum}'}'`
|
||||
fi
|
||||
if [[ $line =~ "H264 source file name" ]]
|
||||
then
|
||||
FileName=`echo $line | awk 'BEGIN {FS=":"} {print $'${seperatorNum}'}'`
|
||||
if [ $1 = "ios" ]
|
||||
then
|
||||
FileName=`echo $FileName | awk -F"DecoderPerfTestRes" '{print $2}'`
|
||||
FileName=`echo $FileName | awk -F"/" '{print $2}'`
|
||||
else
|
||||
FileName=`echo $FileName | awk -F"/" '{print $4}'`
|
||||
fi
|
||||
fi
|
||||
|
||||
done <${PerformanceLogFile}
|
||||
|
||||
|
||||
}
|
||||
AUTO_TEST_RESULT_PATH="./TestResultCSV/"
|
||||
|
||||
|
||||
parseLogToCSV()
|
||||
{
|
||||
if [ $# -ne 1 ]
|
||||
then echo "Please input $0 [android/ios]"
|
||||
fi
|
||||
if [ $* = "android" ]
|
||||
then
|
||||
Result_log_path="./android/report/"
|
||||
suffix=android
|
||||
dos2unix ${Result_log_path}*.*
|
||||
else
|
||||
Result_log_path="./ios/report/"
|
||||
suffix=ios
|
||||
fi
|
||||
Result_log=`ls ${Result_log_path}`
|
||||
|
||||
for log in ${Result_log}
|
||||
do
|
||||
PerformFile=`echo $log |awk -F"." '{print $1}'`
|
||||
PerformFile=${PerformFile}_${suffix}.csv
|
||||
#inital perfermance file
|
||||
echo "$log,,,">>${AUTO_TEST_RESULT_PATH}${PerformFile}
|
||||
echo "YUV,Resolution,Encodedframes,FPS">>${AUTO_TEST_RESULT_PATH}${PerformFile}
|
||||
runGetPerformanceInfo_openh264 ${suffix} ${Result_log_path}${log}>>${AUTO_TEST_RESULT_PATH}${PerformFile}
|
||||
done
|
||||
}
|
||||
parseLogToCSV android
|
||||
parseLogToCSV ios
|
||||
@@ -1,122 +0,0 @@
|
||||
#!bin/bash
|
||||
IOS=1
|
||||
ANDROID=1
|
||||
ENC=1
|
||||
DEC=1
|
||||
AUTO_TEST_PATH=`pwd`
|
||||
|
||||
#Judge to run the test on which kind of mobile
|
||||
if [ $# -eq 0 ];then
|
||||
echo Default testing will run on android and ios devices meanwhile
|
||||
else
|
||||
for params in $*; do
|
||||
if [ $params = "ios" ];then
|
||||
echo Running the test just on ios devices
|
||||
ANDROID=0
|
||||
elif [ $params = "android" ];then
|
||||
echo Running the test just on android devices
|
||||
IOS=0
|
||||
elif [ $params = "enc" ];then
|
||||
echo Running the encoder performance test
|
||||
DEC=0
|
||||
elif [ $params = "dec" ];then
|
||||
echo Running the decoder performance test
|
||||
ENC=0
|
||||
else
|
||||
echo parameters are illegal!!!, ${0} [ios/android] [enc/dec]
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
#Prepare encoder resources
|
||||
if [ ${ENC} = "1" ]
|
||||
then
|
||||
if [ ! -d ./EncoderPerTestRes ]
|
||||
then
|
||||
mkdir -p ./EncoderPerfTestRes
|
||||
fi
|
||||
if [ "#`ls ./EncoderPerfTestRes`" = "#" ]
|
||||
then
|
||||
echo put yuv and cfg file into ./EncoderPerfTest folder as
|
||||
echo case_720p
|
||||
echo case_720p/welsenc.cfg
|
||||
echo case_720p/layer2.cfg
|
||||
echo case_720p/yuv
|
||||
echo case_720p/yuv/xxx1.yuv
|
||||
echo case_720p/yuv/xxx2.yuv
|
||||
echo case_360p
|
||||
echo case_360p/welsenc.cfg
|
||||
echo ......
|
||||
else
|
||||
#Run the encoder performance test
|
||||
if [ ${IOS} = "1" ]
|
||||
then
|
||||
echo xxxxxxxxxxxxxxxxIOS ENC Startxxxxxxxxxxxxxxxxxx
|
||||
echo Run the Encoder performance test on ios devices
|
||||
cd ./ios
|
||||
bash run_AutoTest_ios.sh enc
|
||||
cd ${AUTO_TEST_PATH}
|
||||
fi
|
||||
|
||||
if [ ${ANDROID} = "1" ]
|
||||
then
|
||||
echo xxxxxxxxxxxxxxAndroid ENC Startxxxxxxxxxxxxxxxxxxxx
|
||||
echo Run the Encoder performance test on android devices
|
||||
cd ./android
|
||||
bash run_AutoTest_android.sh enc
|
||||
cd ${AUTO_TEST_PATH}
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
#Prepare decoder resources
|
||||
if [ ${DEC} = "1" ]
|
||||
then
|
||||
if [ ! -d ./DecoderPerfTestRes ]
|
||||
then
|
||||
mkdir -p ./DecoderPerfTestRes
|
||||
fi
|
||||
|
||||
if [ "#`ls ./DecoderPerfTestRes`" = "#" ]
|
||||
then
|
||||
echo put decoded bitstreams into such folder as
|
||||
echo xxx1.264
|
||||
echo xxx2.264
|
||||
echo ........
|
||||
else
|
||||
#Run the decoder performance test
|
||||
if [ ${IOS} = "1" ]
|
||||
then
|
||||
echo xxxxxxxxxxxxxxxxIOS DEC Startxxxxxxxxxxxxxxxxxx
|
||||
echo Run the Decoder performance test on ios devices
|
||||
cd ./ios
|
||||
bash run_AutoTest_ios.sh dec
|
||||
cd ${AUTO_TEST_PATH}
|
||||
fi
|
||||
|
||||
if [ ${ANDROID} = "1" ]
|
||||
then
|
||||
echo xxxxxxxxxxxxxxAndroid DEC Startxxxxxxxxxxxxxxxxxxxx
|
||||
echo Run the Decoder performance test on android devices
|
||||
cd ./android
|
||||
bash run_AutoTest_android.sh dec
|
||||
cd ${AUTO_TEST_PATH}
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
#TODO:NOW just generate csv file to display performance data
|
||||
cd ${AUTO_TEST_PATH}
|
||||
if [[ "#`ls ./ios/report`" == "#" && "#`ls ./android/report`" == "#" ]]
|
||||
then
|
||||
echo There is nothing result log generated at ios or android devices
|
||||
else
|
||||
echo Start to generate test result csv file
|
||||
#Test result
|
||||
mkdir -p ./TestResultCSV
|
||||
bash parsePerfData.sh
|
||||
echo The csv file locate ./TestResultCSV/xxx.csv
|
||||
fi
|
||||
|
||||
|
||||
4
autotest/unitTest/.gitignore
vendored
4
autotest/unitTest/.gitignore
vendored
@@ -1,4 +0,0 @@
|
||||
.DS_Store
|
||||
./ios/report/
|
||||
./android/report/
|
||||
|
||||
@@ -1,112 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
AUTO_TEST_ANDROID_PATH=`pwd`
|
||||
AUTO_TEST_SRC_PATH="../../../"
|
||||
AUTO_TEST_RES_PATH="${AUTO_TEST_ANDROID_PATH}/report"
|
||||
if [ ! -d ${AUTO_TEST_RES_PATH} ]
|
||||
then
|
||||
mkdir -p ${AUTO_TEST_RES_PATH}
|
||||
else
|
||||
echo "Will delete those outdate xml in the report"
|
||||
rm -f ${AUTO_TEST_RES_PATH}/*.xml
|
||||
fi
|
||||
#Prepare android build enviroment
|
||||
echo please set the enviroment variable as:
|
||||
echo export ANDROID_HOME="path of android sdk"
|
||||
echo export ANDROID_NDK_HOME="path of android ndk"
|
||||
ANDROID_SDK_PATH=${ANDROID_HOME}
|
||||
ANDROID_NDK_PATH=${ANDROID_NDK_HOME}
|
||||
ANDROID_MAKE_PARAMS="OS=android NDKROOT=${ANDROID_NDK_PATH} TARGET=android-19"
|
||||
|
||||
if [ "#${ANDROID_SDK_PATH}" = "#" ]
|
||||
then
|
||||
echo Please set ANDROID_HOME with the path of Android SDK
|
||||
exit 1
|
||||
fi
|
||||
if [ "#${ANDROID_NDK_PATH}" = "#" ]
|
||||
then
|
||||
echo Please set ANDROID_NDK_HOME with the path of Android NDK
|
||||
exit 1
|
||||
fi
|
||||
#make build
|
||||
cd ${AUTO_TEST_SRC_PATH}
|
||||
find ./ -name *.o -exec rm -f {} \;
|
||||
find ./ -name *.d -exec rm -f {} \;
|
||||
make clean
|
||||
make $ANDROID_MAKE_PARAMS test
|
||||
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo Build error,check with the trace of make
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#find apk
|
||||
echo Start to find unittest apk
|
||||
apk_name=`find ./ -name MainActivity-debug.apk`
|
||||
if [ "#${apk_name}" = "#" ]
|
||||
then
|
||||
echo Fail to find encoder APK.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#prepare devices
|
||||
ADB=${ANDROID_SDK_PATH}/platform-tools/adb
|
||||
|
||||
#get devices
|
||||
devices=`$ADB devices | awk -F" " '/\tdevice/{print $1}'`
|
||||
if [ "#$devices" = "#" ];then
|
||||
echo "Have not any android devices."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#run apk
|
||||
run_apk() {
|
||||
local apk=$1;
|
||||
local rand=` date +%s`
|
||||
apk_id="com.cisco.codec.unittest"
|
||||
apk_main="com.cisco.codec.unittest/.MainActivity"
|
||||
test_path="/sdcard/welsenc"
|
||||
log_grep_params="welsenc"
|
||||
test_res=./res
|
||||
xml_file="sdcard/codec_unittest.xml"
|
||||
for dev in $devices; do
|
||||
#dev_info_file=${AUTO_TEST_RES_PATH}/${dev}.log
|
||||
report_file=${AUTO_TEST_RES_PATH}/codec_unittest_${dev}_${rand}.xml
|
||||
$ADB -s $dev uninstall ${apk_id}
|
||||
$ADB -s $dev install -r ${apk}
|
||||
#TODO: output more info about android device such as name,cpu,memory,and also power comsumption.
|
||||
echo `$ADB -s $dev shell cat /system/build.prop |grep ro.product.model | awk -F"=" '{print $2}'`>${dev_info_file}
|
||||
$ADB -s $dev push ${test_res} /sdcard/res
|
||||
$ADB -s $dev shell am start --es path "$xml_file" -n ${apk_main}
|
||||
# check whetehr the app is finished every 2 sec
|
||||
for (( ; ; )); do
|
||||
$ADB -s $dev shell ps | grep ${apk_id}
|
||||
if [ $? -ne 0 ]; then
|
||||
sleep 2
|
||||
$ADB -s $dev shell ps | grep ${apk_id}
|
||||
[ $? -ne 0 ] && break
|
||||
fi
|
||||
sleep 2
|
||||
done
|
||||
|
||||
# kill logcat
|
||||
$ADB -s $dev pull ${xml_file} ${report_file}
|
||||
#delete the res
|
||||
$ADB -s $dev shell rm -rf ${xml_file}
|
||||
$ADB -s $dev shell rm -rf /sdcard/res
|
||||
done
|
||||
}
|
||||
for apk in ${apk_name};do
|
||||
run_apk $apk;
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo There is something wrong happened when run ${apk_name}
|
||||
exit 1
|
||||
else
|
||||
echo Finished unit test on android
|
||||
echo The test result is at ./android/report/xxx.xml
|
||||
echo xxxxxxxxxxxxxxxAndroid unittest Endxxxxxxxxxxxxxxxx
|
||||
fi
|
||||
done
|
||||
|
||||
@@ -1,167 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
##############################################################
|
||||
#Build ios test ref app
|
||||
|
||||
#set the default configuration
|
||||
CODEC_TEST_IOS_ARCH="armv7"
|
||||
CODEC_TEST_IOS_PLATFORM="iphoneos"
|
||||
CODEC_TEST_IOS_DEBUG_RELEASE="Release"
|
||||
CODEC_TEST_IOS_REPORT_SUBFOLDER="release"
|
||||
|
||||
|
||||
buildXcodeProject()
|
||||
{
|
||||
xcodebuild ARCHS="${CODEC_TEST_IOS_ARCH}" VALID_ARCHS="${CODEC_TEST_IOS_ARCH}" ONLY_ACTIVE_ARCH=NO -project $1 -target $2 -configuration $3 -sdk ${CODEC_TEST_IOS_PLATFORM} clean build
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "build $1 $3 successfully"
|
||||
else
|
||||
echo "build $1 $3 fail"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
|
||||
iosUnitTest()
|
||||
{
|
||||
|
||||
if [ $# -gt 2 ]; then
|
||||
echo "Please use command $0 [armv7/armv7s/arm64] [release/debug]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
CODEC_TEST_XCODE_PROJECT_NAME="${AUTO_TEST_SRC_PATH}/test/build/ios/codec_unittest/codec_unittest.xcodeproj/"
|
||||
CODEC_TEST_IOS_PROJECT_NAME="codec_unittest"
|
||||
CODEC_TEST_IOS_PROJECT_PATH="${AUTO_TEST_SRC_PATH}/test/build/ios/codec_unittest/build"
|
||||
CODEC_TEST_IOS_APP=${CODEC_TEST_IOS_PROJECT_PATH}/${CODEC_TEST_IOS_DEBUG_RELEASE}-iphoneos/${CODEC_TEST_IOS_PROJECT_NAME}.app
|
||||
CODEC_TEST_IOS_APP_ID="com.cisco.codec-unittest"
|
||||
CODEC_TEST_RES=${AUTO_TEST_SRC_PATH}/res
|
||||
CODEC_TEST_LOG="codec_unittest"
|
||||
for PARAM in $*; do
|
||||
if [ "release" = "${PARAM}" ]; then
|
||||
CODEC_TEST_IOS_DEBUG_RELEASE="Release"
|
||||
CODEC_TEST_IOS_REPORT_SUBFOLDER="release"
|
||||
elif [ "debug" = "${PARAM}" ]; then
|
||||
CODEC_TEST_IOS_DEBUG_RELEASE="Debug"
|
||||
CODEC_TEST_IOS_REPORT_SUBFOLDER="debug"
|
||||
elif [ "armv7" = "${PARAM}" ];then
|
||||
CODEC_TEST_IOS_ARCH="armv7"
|
||||
elif [ "armv7s" = "${PARAM}" ];then
|
||||
CODEC_TEST_IOS_ARCH="armv7s"
|
||||
elif [ "arm64" = "${PARAM}" ];then
|
||||
CODEC_TEST_IOS_ARCH="arm64"
|
||||
else
|
||||
echo parameters are illegal!!!, please have a check.
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
cd ${AUTO_TEST_SRC_PATH}
|
||||
IOS_MAKE_PARAMS="OS=ios ARCH=${CODEC_TEST_IOS_ARCH}"
|
||||
############make build
|
||||
find ./ -name *.o -exec rm -rf {} \;
|
||||
find ./ -name *.d -exec rm -rf {} \;
|
||||
rm -f *.so
|
||||
make clean
|
||||
make ${IOS_MAKE_PARAMS} test
|
||||
echo "Codec test will run on ${CODEC_TEST_IOS_PLATFORM} with ${CODEC_TEST_IOS_DEBUG_RELEASE}"
|
||||
cd ${AUTO_TEST_IOS_PATH}
|
||||
buildXcodeProject ${CODEC_TEST_XCODE_PROJECT_NAME} ${CODEC_TEST_IOS_PROJECT_NAME} ${CODEC_TEST_IOS_DEBUG_RELEASE} ${CODEC_TEST_IOS_PLATFORM}
|
||||
|
||||
|
||||
|
||||
|
||||
##############run on ios devices#########################
|
||||
# for real device
|
||||
if [ ! -d ${CODEC_TEST_IOS_APP} ] ; then
|
||||
echo "${CODEC_TEST_IOS_APP} is not found"
|
||||
exit 1
|
||||
else
|
||||
echo "Find app ${CODEC_TEST_IOS_APP}"
|
||||
fi
|
||||
|
||||
#ensure instruments not runing
|
||||
echo "Try to kill the runing instruments"
|
||||
pids_str=`ps x -o pid,command | grep -v grep | grep "instruments" | awk '{printf "%s,", $1}'`
|
||||
instruments_pids="${pids_str//,/ }"
|
||||
for pid in ${instruments_pids}; do
|
||||
echo "Found instruments ${pid}. Killing..."
|
||||
kill -9 ${pid} && wait ${pid} &> /dev/null
|
||||
done
|
||||
|
||||
|
||||
|
||||
DEVICES=`system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p' -e '/iPhone/,/Serial/p' | grep "Serial Number:" | awk -F ": " '{print $2}'`
|
||||
if [ "${DEVICES}#" == "#" ]
|
||||
then
|
||||
echo "Can not find any connected device! please check device is connected to MAC!"
|
||||
exit 1
|
||||
else
|
||||
rand=`date +%s`
|
||||
for DEVICE_ID in ${DEVICES}
|
||||
do
|
||||
echo "Try to run on device:${DEVICE_ID}"
|
||||
|
||||
#uninstall the application from device to remove the last result
|
||||
${AUTO_TEST_IOS_SCRIPT_PATH}/fruitstrap uninstall --bundle ${CODEC_TEST_IOS_APP_ID} --id ${DEVICE_ID}
|
||||
if [ $? -ne 0 ]; then
|
||||
echo uninstall application: ${CODEC_TEST_IOS_APP} from device: ${DEVICE_ID} is failed!
|
||||
fi
|
||||
#install the application
|
||||
${AUTO_TEST_IOS_SCRIPT_PATH}/fruitstrap install --bundle ${CODEC_TEST_IOS_APP} --id ${DEVICE_ID}
|
||||
if [ $? -ne 0 ]; then
|
||||
echo install application: ${CODEC_TEST_IOS_APP} to device: ${DEVICE_ID} is failed!
|
||||
exit 1
|
||||
fi
|
||||
|
||||
${AUTO_TEST_IOS_SCRIPT_PATH}/iFileTransfer -o copy -id ${DEVICE_ID} -app ${CODEC_TEST_IOS_APP_ID} -from ${CODEC_TEST_RES}
|
||||
instruments -w ${DEVICE_ID} -t /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate ${CODEC_TEST_IOS_APP} -e UIASCRIPT ${AUTO_TEST_IOS_SCRIPT_PATH}/uiascript.js -e UIARRESULTPATH /tmp/
|
||||
#copy to report folder
|
||||
${AUTO_TEST_IOS_SCRIPT_PATH}/iFileTransfer -o download -id ${DEVICE_ID} -app ${CODEC_TEST_IOS_APP_ID} -from /Documents/${CODEC_TEST_LOG}.xml -to ${CODEC_TEST_IOS_REPORT_PATH}/${CODEC_TEST_LOG}_${DEVICE_ID}_${rand}_${CODEC_TEST_IOS_ARCH}.xml
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "download file: ${CODEC_TEST_LOG}.xml from ${CODEC_TEST_IOS_APP_ID} is failed!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
AUTO_TEST_IOS_PATH=`pwd`
|
||||
AUTO_TEST_SRC_PATH="../../.."
|
||||
AUTO_TEST_IOS_SCRIPT_PATH="../../performanceTest/ios"
|
||||
CODEC_TEST_IOS_REPORT_PATH="${AUTO_TEST_IOS_PATH}/report"
|
||||
if [ ! -d ${CODEC_TEST_IOS_REPORT_PATH} ]
|
||||
then
|
||||
mkdir -p ${CODEC_TEST_IOS_REPORT_PATH}
|
||||
else
|
||||
echo "Will delete those outdate xml in the report"
|
||||
rm -f ${CODEC_TEST_IOS_REPORT_PATH}/*.xml
|
||||
fi
|
||||
|
||||
#start to run unittest,default run the xcode at arch armv7 with release
|
||||
iosUnitTest armv7 release
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Running Unittest demo with armv7 is failed!"
|
||||
exit 1
|
||||
else
|
||||
echo Finished unittest with armv7 on ios devices
|
||||
echo the test result is generated at ./ios/report/xx.xml
|
||||
fi
|
||||
#start to run unittest,run the xcode at arch arm64 with release
|
||||
iosUnitTest arm64 release
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Running Unittest demo with arm64 is failed!"
|
||||
exit 1
|
||||
else
|
||||
echo Finished unittest with arm64 on ios devices
|
||||
echo the test result is generated at ./ios/report/xx.xml
|
||||
fi
|
||||
|
||||
echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxIOS unittest Endxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
|
||||
#TODO:according to the trace of instruments to do some analysis
|
||||
#find ${AUTO_TEST_IOS_SCRIPT_PATH} -name *.trace -exec rm -rf {} \;
|
||||
rm -rf *.trace
|
||||
@@ -1,70 +0,0 @@
|
||||
if [ $# -ne 1 ];then
|
||||
echo Please input $0 [report dir]
|
||||
exit 1
|
||||
fi
|
||||
|
||||
REPORT=$1
|
||||
if [ ! -e ${REPORT} ];then
|
||||
echo "The directory of ${REPORT} dose't not exit,please check the test log"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
UT_Failed_Num=0
|
||||
parse_unittest() {
|
||||
res=$1
|
||||
echo ${res}
|
||||
echo Start to parse unittest results of $res
|
||||
if [ -e $res ];then
|
||||
tests=`cat $res | grep "<testsuites" | awk -F " " '{print $2;}' | awk -F "\"" '{print $2;}'`
|
||||
fails=`cat $res | grep "<testsuites" | awk -F " " '{print $3;}' | awk -F "\"" '{print $2;}'`
|
||||
times=`cat $res | grep "<testsuites" | awk -F " " '{print $6;}' | awk -F "\"" '{print $2;}'`
|
||||
waste=`cat $res | grep "<testsuites" | awk -F " " '{print $7;}' | awk -F "\"" '{print $2;}'`
|
||||
msg="Total testcases: $tests, failed: $fails,time:$waste seconds, at$times,xml:$res"
|
||||
echo ${msg}
|
||||
UT_Failed_Num=$((${UT_Failed_Num}+${fails}))
|
||||
cat >> mail.log << EOF
|
||||
<style>
|
||||
.fail {
|
||||
background-color: yellow;
|
||||
}
|
||||
</style>
|
||||
<br>
|
||||
<table style="width:600px" cellspacing="0" border="1" width="100%">
|
||||
<thead>
|
||||
<tr>
|
||||
<td>Total unit test cases</td>
|
||||
<td>Failed</td>
|
||||
<td>Time</td>
|
||||
<td>Date</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr style="text-align:center; font-weight: bold;">
|
||||
<td>${tests}</td>
|
||||
<td><font class="fail">${fails}</font></td>
|
||||
<td>${waste}</td>
|
||||
<td>${times}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br>
|
||||
EOF
|
||||
fi
|
||||
}
|
||||
|
||||
xmlcount=`ls $REPORT | wc -l`
|
||||
xmlfiles=`ls $REPORT`
|
||||
if [ ${xmlcount} -eq 0 ];
|
||||
then echo There is nothing xml files generated at $REPORT
|
||||
exit 1
|
||||
fi
|
||||
for file in $xmlfiles;do
|
||||
parse_unittest $REPORT/$file
|
||||
done
|
||||
if [ ${UT_Failed_Num} = "0" ];then
|
||||
echo Total $xmlcount files at $REPORT,all sucessful
|
||||
exit 0
|
||||
else
|
||||
echo Total $xmlcount files at $REPORT,${UT_Failed_Num} error cases
|
||||
exit 2
|
||||
fi
|
||||
@@ -1,98 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
AUTO_TEST_PATH=`pwd`
|
||||
IOS=0
|
||||
ANDROID=0
|
||||
#Prepare GTEST
|
||||
AUTO_TEST_SRC_PATH="../../"
|
||||
cd ${AUTO_TEST_SRC_PATH}
|
||||
if [ ! -d "./gtest" ]
|
||||
then
|
||||
make gtest-bootstrap
|
||||
fi
|
||||
cd ${AUTO_TEST_PATH}
|
||||
#To find whether have android devices
|
||||
echo please set the enviroment variable as:
|
||||
echo export ANDROID_HOME="path of android sdk"
|
||||
echo export ANDROID_NDK_HOME="path of android ndk"
|
||||
ANDROID_SDK_PATH=${ANDROID_HOME}
|
||||
ANDROID_NDK_PATH=${ANDROID_NDK_HOME}
|
||||
if [ "#${ANDROID_SDK_PATH}" = "#" ]
|
||||
then
|
||||
echo Please set ANDROID_HOME with the path of Android SDK
|
||||
exit 1
|
||||
fi
|
||||
if [ "#${ANDROID_NDK_PATH}" = "#" ]
|
||||
then
|
||||
echo Please set ANDROID_NDK_HOME with the path of Android NDK
|
||||
exit 1
|
||||
fi
|
||||
#prepare devices
|
||||
ADB=${ANDROID_SDK_PATH}/platform-tools/adb
|
||||
|
||||
#get devices
|
||||
devices=`$ADB devices | awk -F" " '/\tdevice/{print $1}'`
|
||||
if [ "#$devices" = "#" ];then
|
||||
echo "Can not find any android devices!"
|
||||
else
|
||||
echo Start to run the unittest on android devices
|
||||
ANDROID=1
|
||||
cd ./android
|
||||
bash run_AutoTest_android.sh >/dev/null 2>&1
|
||||
if [ $? -ne 0 ];then
|
||||
echo There is something wrong happened when runing unittest on android devices,please to check
|
||||
else
|
||||
echo Finish run the unittest on android devices sucessfully
|
||||
fi
|
||||
cd ${AUTO_TEST_PATH}
|
||||
fi
|
||||
|
||||
#To find whether have ios devices
|
||||
DEVICES=`system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p' -e '/iPhone/,/Serial/p' | grep "Serial Number:" | awk -F ": " '{print $2}'`
|
||||
if [ "${DEVICES}#" == "#" ]
|
||||
then
|
||||
echo "Can not find any ios devices!"
|
||||
else
|
||||
echo Start to run the unittest on ios devices
|
||||
IOS=1
|
||||
cd ./ios
|
||||
bash run_AutoTest_ios.sh >/dev/null 2>&1
|
||||
if [ $? -ne 0 ];then
|
||||
echo There is something wrong happened when runing unittest on ios devices,please to check
|
||||
else
|
||||
echo Finish run the unittest on android devices sucessfully
|
||||
fi
|
||||
cd ${AUTO_TEST_PATH}
|
||||
fi
|
||||
|
||||
#To parse the unit test result file to find whether have failures
|
||||
if [ ${ANDROID} = "1" ];then
|
||||
echo "
|
||||
<style>
|
||||
.env {
|
||||
background-color: #95B9C7;
|
||||
font: 30px bold;
|
||||
}</style>">>mail.log
|
||||
echo "<br><font class="env">Run unit test on android devices</font>">>mail.log
|
||||
bash run_ParseUTxml.sh ./android/report
|
||||
ret=$?
|
||||
if [ ${ret} -eq 0 ];then
|
||||
echo Unit test run on the android devices have not any failure case
|
||||
elif [ ${ret} -eq 2 ];then
|
||||
echo Unit test have cases failed,please check
|
||||
elif [ ${ret} -eq 1 ];then
|
||||
echo Unit test run failed
|
||||
fi
|
||||
fi
|
||||
if [ ${IOS} = "1" ];then
|
||||
echo "<br><font class="env">Run unit test on ios devices with armv7 & arm64</font>">>mail.log
|
||||
bash run_ParseUTxml.sh ./ios/report
|
||||
ret=$?
|
||||
if [ $ret -eq 0 ];then
|
||||
echo Unit test run on the ios devices have not any failure case
|
||||
elif [ $ret -eq 2 ];then
|
||||
echo Unit test have cases failed,please check
|
||||
elif [ $ret -eq 1 ];then
|
||||
echo Unit test run failed
|
||||
fi
|
||||
fi
|
||||
@@ -5,7 +5,6 @@ GTEST_CPP_SRCS=\
|
||||
GTEST_OBJS += $(GTEST_CPP_SRCS:.cc=.$(OBJ))
|
||||
|
||||
OBJS += $(GTEST_OBJS)
|
||||
|
||||
$(GTEST_SRCDIR)/%.$(OBJ): $(GTEST_SRCDIR)/%.cc
|
||||
$(QUIET_CXX)$(CXX) $(CFLAGS) $(CXXFLAGS) $(INCLUDES) $(GTEST_CFLAGS) $(GTEST_INCLUDES) -c $(CXX_O) $<
|
||||
|
||||
|
||||
@@ -134,42 +134,37 @@ if len(cfiles) > 0:
|
||||
for cfile in cfiles:
|
||||
f.write("\t$(%s_SRCDIR)/%s\\\n"%(PREFIX, cfile))
|
||||
f.write("\n")
|
||||
f.write("%s_OBJS += $(%s_C_SRCS:.c=.$(OBJ))\n"%(PREFIX, PREFIX))
|
||||
f.write("%s_OBJS += $(%s_C_SRCS:.c=.$(OBJ))\n\n"%(PREFIX, PREFIX))
|
||||
|
||||
if len(asm) > 0:
|
||||
f.write("ifeq ($(ASM_ARCH), x86)\n")
|
||||
f.write("%s_ASM_SRCS=\\\n"%(PREFIX))
|
||||
for c in asm:
|
||||
f.write("\t$(%s_SRCDIR)/%s\\\n"%(PREFIX, c))
|
||||
f.write("\n")
|
||||
f.write("%s_OBJSASM += $(%s_ASM_SRCS:.asm=.$(OBJ))\n"%(PREFIX, PREFIX))
|
||||
f.write("ifeq ($(ASM_ARCH), x86)\n")
|
||||
f.write("%s_OBJS += $(%s_OBJSASM)\n"%(PREFIX,PREFIX))
|
||||
f.write("endif\n")
|
||||
f.write("OBJS += $(%s_OBJSASM)\n\n"%(PREFIX))
|
||||
f.write("%s_OBJS += $(%s_ASM_SRCS:.asm=.$(OBJ))\n"%(PREFIX, PREFIX))
|
||||
f.write("endif\n\n")
|
||||
|
||||
if len(armfiles) > 0:
|
||||
f.write("ifeq ($(ASM_ARCH), arm)\n")
|
||||
f.write("%s_ASM_ARM_SRCS=\\\n"%(PREFIX))
|
||||
for c in armfiles:
|
||||
f.write("\t$(%s_SRCDIR)/%s\\\n"%(PREFIX, c))
|
||||
f.write("\n")
|
||||
f.write("%s_OBJSARM += $(%s_ASM_ARM_SRCS:.S=.$(OBJ))\n"%(PREFIX, PREFIX))
|
||||
f.write("ifeq ($(ASM_ARCH), arm)\n")
|
||||
f.write("%s_OBJS += $(%s_OBJSARM)\n"%(PREFIX,PREFIX))
|
||||
f.write("endif\n")
|
||||
f.write("OBJS += $(%s_OBJSARM)\n\n"%(PREFIX))
|
||||
f.write("%s_OBJS += $(%s_ASM_ARM_SRCS:.S=.$(OBJ))\n"%(PREFIX, PREFIX))
|
||||
f.write("endif\n\n")
|
||||
|
||||
if len(arm64files) > 0:
|
||||
f.write("ifeq ($(ASM_ARCH), arm64)\n")
|
||||
f.write("%s_ASM_ARM64_SRCS=\\\n"%(PREFIX))
|
||||
for c in arm64files:
|
||||
f.write("\t$(%s_SRCDIR)/%s\\\n"%(PREFIX, c))
|
||||
f.write("\n")
|
||||
f.write("%s_OBJSARM64 += $(%s_ASM_ARM64_SRCS:.S=.$(OBJ))\n"%(PREFIX, PREFIX))
|
||||
f.write("ifeq ($(ASM_ARCH), arm64)\n")
|
||||
f.write("%s_OBJS += $(%s_OBJSARM64)\n"%(PREFIX,PREFIX))
|
||||
f.write("endif\n")
|
||||
f.write("OBJS += $(%s_OBJSARM64)\n\n"%(PREFIX))
|
||||
f.write("%s_OBJS += $(%s_ASM_ARM64_SRCS:.S=.$(OBJ))\n"%(PREFIX, PREFIX))
|
||||
f.write("endif\n\n")
|
||||
|
||||
f.write("OBJS += $(%s_OBJS)\n"%PREFIX)
|
||||
|
||||
f.write("OBJS += $(%s_OBJS)\n\n"%(PREFIX))
|
||||
write_cpp_rule_pattern(f)
|
||||
|
||||
if len(cfiles) > 0:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
ARCH = arm
|
||||
include $(SRC_PATH)build/arch.mk
|
||||
include build/platform-arch.mk
|
||||
SHAREDLIBSUFFIX = so
|
||||
NDKLEVEL = 12
|
||||
ifeq ($(ARCH), arm)
|
||||
@@ -9,23 +9,19 @@ ifeq ($(ARCH), arm)
|
||||
LDFLAGS += -march=armv7-a -Wl,--fix-cortex-a8
|
||||
APP_ABI = armeabi-v7a
|
||||
endif
|
||||
TOOLCHAINPREFIX = $(shell NDK_PROJECT_PATH=./codec/build/android/dec make --no-print-dir -f $(NDKROOT)/build/core/build-local.mk DUMP_TOOLCHAIN_PREFIX APP_ABI=armeabi)
|
||||
ifeq (Yes, $(USE_ASM))
|
||||
ASMFLAGS += -march=armv7-a -mfpu=neon
|
||||
endif
|
||||
else ifeq ($(ARCH), arm64)
|
||||
APP_ABI = arm64-v8a
|
||||
else ifeq ($(ARCH), x86)
|
||||
APP_ABI = x86
|
||||
APP_ABI = x86
|
||||
TOOLCHAINPREFIX = $(shell NDK_PROJECT_PATH=./codec/build/android/dec make --no-print-dir -f $(NDKROOT)/build/core/build-local.mk DUMP_TOOLCHAIN_PREFIX APP_ABI=x86)
|
||||
ifeq (Yes, $(USE_ASM))
|
||||
ASMFLAGS += -f elf
|
||||
endif
|
||||
else ifeq ($(ARCH), x86_64)
|
||||
APP_ABI = x86_64
|
||||
ifeq (Yes, $(USE_ASM))
|
||||
ASMFLAGS += -f elf64
|
||||
ASMFLAGS += -f elf32
|
||||
endif
|
||||
else
|
||||
APP_ABI = $(ARCH)
|
||||
APP_ABI = $(ARCH)
|
||||
TOOLCHAINPREFIX = $(shell NDK_PROJECT_PATH=./codec/build/android/dec make --no-print-dir -f $(NDKROOT)/build/core/build-local.mk DUMP_TOOLCHAIN_PREFIX APP_ABI=$(APP_ABI))
|
||||
endif
|
||||
|
||||
ifndef NDKROOT
|
||||
@@ -35,8 +31,6 @@ ifndef TARGET
|
||||
$(error TARGET is not set)
|
||||
endif
|
||||
|
||||
TOOLCHAINPREFIX = $(shell NDK_PROJECT_PATH=$(SRC_PATH)/codec/build/android/dec make --no-print-dir -f $(NDKROOT)/build/core/build-local.mk DUMP_TOOLCHAIN_PREFIX APP_ABI=$(APP_ABI))
|
||||
|
||||
SYSROOT = $(NDKROOT)/platforms/android-$(NDKLEVEL)/arch-$(ARCH)
|
||||
CXX = $(TOOLCHAINPREFIX)g++
|
||||
CC = $(TOOLCHAINPREFIX)gcc
|
||||
@@ -44,13 +38,7 @@ AR = $(TOOLCHAINPREFIX)ar
|
||||
CFLAGS += -DANDROID_NDK -fpic --sysroot=$(SYSROOT) -MMD -MP
|
||||
CXXFLAGS += -fno-rtti -fno-exceptions
|
||||
LDFLAGS += --sysroot=$(SYSROOT)
|
||||
SHLDFLAGS = -Wl,--no-undefined -Wl,-z,relro -Wl,-z,now -Wl,-soname,lib$(PROJECT_NAME).so
|
||||
|
||||
ifneq ($(CXX),$(wildcard $(CXX)))
|
||||
ifneq ($(CXX).exe,$(wildcard $(CXX).exe))
|
||||
$(error Compiler not found, bad NDKROOT or ARCH?)
|
||||
endif
|
||||
endif
|
||||
SHLDFLAGS = -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,-soname,lib$(PROJECT_NAME).so
|
||||
|
||||
STL_INCLUDES = \
|
||||
-I$(NDKROOT)/sources/cxx-stl/stlport/stlport
|
||||
@@ -63,7 +51,6 @@ CODEC_UNITTEST_LDFLAGS_SUFFIX = $(STL_LIB)
|
||||
MODULE_INCLUDES = $(STL_INCLUDES)
|
||||
MODULE_LDFLAGS = $(STL_LIB)
|
||||
|
||||
ifeq (./,$(SRC_PATH))
|
||||
binaries : decdemo encdemo
|
||||
|
||||
decdemo: libraries
|
||||
@@ -78,12 +65,6 @@ clean_Android_dec:
|
||||
-cd ./codec/build/android/dec && $(NDKROOT)/ndk-build APP_ABI=$(APP_ABI) clean && ant clean
|
||||
clean_Android_enc:
|
||||
-cd ./codec/build/android/enc && $(NDKROOT)/ndk-build APP_ABI=$(APP_ABI) clean && ant clean
|
||||
else
|
||||
all:
|
||||
@:
|
||||
clean_Android:
|
||||
@:
|
||||
endif
|
||||
|
||||
COMMON_INCLUDES += -I$(NDKROOT)/sources/android/cpufeatures
|
||||
COMMON_OBJS += $(COMMON_SRCDIR)/src/cpu-features.$(OBJ)
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
ifneq ($(filter %86 x86_64, $(ARCH)),)
|
||||
include $(SRC_PATH)build/x86-common.mk
|
||||
include build/platform-x86-common.mk
|
||||
endif
|
||||
ifneq ($(filter-out arm64, $(filter arm%, $(ARCH))),)
|
||||
ifeq ($(USE_ASM), Yes)
|
||||
ASM_ARCH = arm
|
||||
ASMFLAGS += -I$(SRC_PATH)codec/common/arm/
|
||||
ASMFLAGS += -Icodec/common/arm/
|
||||
CFLAGS += -DHAVE_NEON
|
||||
endif
|
||||
endif
|
||||
ifneq ($(filter arm64 aarch64, $(ARCH)),)
|
||||
ifeq ($(USE_ASM), Yes)
|
||||
ASM_ARCH = arm64
|
||||
ASMFLAGS += -I$(SRC_PATH)codec/common/arm64/
|
||||
ASMFLAGS += -Icodec/common/arm64/
|
||||
CFLAGS += -DHAVE_NEON_AARCH64
|
||||
endif
|
||||
endif
|
||||
@@ -1,4 +1,4 @@
|
||||
include $(SRC_PATH)build/arch.mk
|
||||
include build/platform-arch.mk
|
||||
SHAREDLIBSUFFIX = dylib
|
||||
SHARED = -dynamiclib
|
||||
CFLAGS += -Wall -fPIC -MMD -MP
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
include $(SRC_PATH)build/arch.mk
|
||||
include build/platform-arch.mk
|
||||
SHAREDLIBSUFFIX = so
|
||||
CFLAGS += -fPIC
|
||||
LDFLAGS += -lpthread
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
ARCH = armv7
|
||||
include $(SRC_PATH)build/platform-darwin.mk
|
||||
include build/platform-darwin.mk
|
||||
CXX = clang++
|
||||
CC = clang
|
||||
ifneq ($(filter %86 x86_64, $(ARCH)),)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
include $(SRC_PATH)build/arch.mk
|
||||
include build/platform-arch.mk
|
||||
SHAREDLIBSUFFIX = so
|
||||
CFLAGS += -Wall -fno-strict-aliasing -fPIC -MMD -MP
|
||||
LDFLAGS += -lpthread
|
||||
@@ -6,7 +6,7 @@ ifeq ($(ASM_ARCH), x86)
|
||||
ifeq ($(ENABLE64BIT), Yes)
|
||||
ASMFLAGS += -f elf64
|
||||
else
|
||||
ASMFLAGS += -f elf
|
||||
ASMFLAGS += -f elf32
|
||||
endif
|
||||
endif
|
||||
ifeq ($(ASM_ARCH), arm)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
include $(SRC_PATH)build/x86-common.mk
|
||||
include build/platform-x86-common.mk
|
||||
SHAREDLIBSUFFIX = dll
|
||||
CFLAGS += -MMD -MP
|
||||
LDFLAGS +=
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
include $(SRC_PATH)build/arch.mk
|
||||
include build/platform-arch.mk
|
||||
ifeq ($(ASM_ARCH), x86)
|
||||
ifeq ($(ENABLE64BIT), Yes)
|
||||
ASMFLAGS += -f win64
|
||||
@@ -26,7 +26,7 @@ CFLAGS += -nologo -W3 -EHsc -fp:precise -Zc:wchar_t -Zc:forScope -D_VARIADIC_MAX
|
||||
CXX_LINK_O=-nologo -Fe$@
|
||||
AR_OPTS=-nologo -out:$@
|
||||
CFLAGS_OPT=-O2 -Ob1 -Oy- -Zi -GF -Gm- -GS -Gy -DNDEBUG
|
||||
CFLAGS_DEBUG=-Od -Oy- -Zi -RTC1 -D_DEBUG
|
||||
CFLAGS_DEBUG=-Od -Oy- -ZI -RTC1 -D_DEBUG
|
||||
CFLAGS_M32=
|
||||
CFLAGS_M64=
|
||||
LINK_LOCAL_DIR=
|
||||
@@ -1,5 +1,5 @@
|
||||
ARCH = arm
|
||||
include $(SRC_PATH)build/msvc-common.mk
|
||||
include build/platform-msvc-common.mk
|
||||
CFLAGS_OPT += -MD
|
||||
CFLAGS_DEBUG += -MDd
|
||||
CFLAGS += -DWINAPI_FAMILY=WINAPI_FAMILY_PHONE_APP
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
include $(SRC_PATH)build/msvc-common.mk
|
||||
include build/platform-msvc-common.mk
|
||||
LDFLAGS += user32.lib
|
||||
CFLAGS_OPT += -MT
|
||||
CFLAGS_DEBUG += -MTd -Gm
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
CFLAGS_M32=-m32
|
||||
CFLAGS_M64=-m64
|
||||
ASM_INCLUDES = -I$(SRC_PATH)codec/common/x86/
|
||||
ASM_INCLUDES = -Icodec/common/x86/
|
||||
ifeq (, $(ENABLE64BIT))
|
||||
ifeq ($(ARCH), x86_64)
|
||||
ENABLE64BIT=Yes
|
||||
@@ -71,6 +71,12 @@ class ISVCEncoder {
|
||||
* return: 0 - success; otherwise - failed;
|
||||
*/
|
||||
virtual int EXTAPI EncodeParameterSets (SFrameBSInfo* pBsInfo) = 0;
|
||||
|
||||
/*
|
||||
* return: 0 - success; otherwise - failed;
|
||||
*/
|
||||
virtual int EXTAPI PauseFrame (const SSourcePicture* kpSrcPic, SFrameBSInfo* pBsInfo) = 0;
|
||||
|
||||
/*
|
||||
* return: 0 - success; otherwise - failed;
|
||||
*/
|
||||
@@ -106,14 +112,6 @@ class ISVCDecoder {
|
||||
unsigned char** ppDst,
|
||||
SBufferInfo* pDstInfo) = 0;
|
||||
|
||||
/*
|
||||
* This function parse input bitstream only, and rewrite possible SVC syntax to AVC syntax
|
||||
* return: 0 - success; otherwise -failed;
|
||||
*/
|
||||
virtual DECODING_STATE EXTAPI DecodeParser (const unsigned char* pSrc,
|
||||
const int iSrcLen,
|
||||
SParserBsInfo* pDstInfo) = 0;
|
||||
|
||||
/*
|
||||
* this API does not work for now!! This is for future use to support non-I420 color format output.
|
||||
*/
|
||||
@@ -153,6 +151,8 @@ int (*Uninitialize) (ISVCEncoder*);
|
||||
int (*EncodeFrame) (ISVCEncoder*, const SSourcePicture* kpSrcPic, SFrameBSInfo* pBsInfo);
|
||||
int (*EncodeParameterSets) (ISVCEncoder*, SFrameBSInfo* pBsInfo);
|
||||
|
||||
int (*PauseFrame) (ISVCEncoder*, const SSourcePicture* kpSrcPic, SFrameBSInfo* pBsInfo);
|
||||
|
||||
int (*ForceIntraFrame) (ISVCEncoder*, bool bIDR);
|
||||
|
||||
int (*SetOption) (ISVCEncoder*, ENCODER_OPTION eOptionId, void* pOption);
|
||||
@@ -177,10 +177,6 @@ DECODING_STATE (*DecodeFrame2) (ISVCDecoder*, const unsigned char* pSrc,
|
||||
unsigned char** ppDst,
|
||||
SBufferInfo* pDstInfo);
|
||||
|
||||
DECODING_STATE (*DecodeParser) (ISVCDecoder*, const unsigned char* pSrc,
|
||||
const int iSrcLen,
|
||||
SParserBsInfo* pDstInfo);
|
||||
|
||||
DECODING_STATE (*DecodeFrameEx) (ISVCDecoder*, const unsigned char* pSrc,
|
||||
const int iSrcLen,
|
||||
unsigned char* pDst,
|
||||
@@ -200,7 +196,6 @@ typedef void (*WelsTraceCallback) (void* ctx, int level, const char* string);
|
||||
int WelsCreateSVCEncoder (ISVCEncoder** ppEncoder);
|
||||
void WelsDestroySVCEncoder (ISVCEncoder* pEncoder);
|
||||
|
||||
int WelsGetDecoderCapability (SDecoderCapability* pDecCapability);
|
||||
long WelsCreateDecoder (ISVCDecoder** ppDecoder);
|
||||
void WelsDestroyDecoder (ISVCDecoder* pDecoder);
|
||||
|
||||
|
||||
@@ -89,9 +89,8 @@ typedef enum {
|
||||
|
||||
ENCODER_LTR_RECOVERY_REQUEST,
|
||||
ENCODER_LTR_MARKING_FEEDBACK,
|
||||
ENCODER_LTR_MARKING_PERIOD,
|
||||
ENCOCER_LTR_MARKING_PERIOD,
|
||||
ENCODER_OPTION_LTR,
|
||||
ENCODER_OPTION_COMPLEXITY,
|
||||
|
||||
ENCODER_OPTION_ENABLE_SSEI, //enable SSEI: true--enable ssei; false--disable ssei
|
||||
ENCODER_OPTION_ENABLE_PREFIX_NAL_ADDING, //enable prefix: true--enable prefix; false--disable prefix
|
||||
@@ -102,12 +101,6 @@ typedef enum {
|
||||
ENCODER_OPTION_TRACE_LEVEL,
|
||||
ENCODER_OPTION_TRACE_CALLBACK, // a void (*)(void* context, int level, const char* message) function which receives log messages
|
||||
ENCODER_OPTION_TRACE_CALLBACK_CONTEXT,
|
||||
|
||||
ENCODER_OPTION_GET_STATISTICS, //read only
|
||||
ENCODER_OPTION_STATISTICS_LOG_INTERVAL, // log interval in milliseconds
|
||||
|
||||
// advanced algorithmetic settings
|
||||
ENCODER_OPTION_IS_LOSSLESS_LINK
|
||||
} ENCODER_OPTION;
|
||||
|
||||
/* Option types introduced in decoder application */
|
||||
@@ -125,15 +118,13 @@ typedef enum {
|
||||
DECODER_OPTION_TRACE_CALLBACK, // a void (*)(void* context, int level, const char* message) function which receives log messages
|
||||
DECODER_OPTION_TRACE_CALLBACK_CONTEXT,
|
||||
|
||||
DECODER_OPTION_GET_STATISTICS
|
||||
|
||||
} DECODER_OPTION;
|
||||
|
||||
//enuerate the types of error concealment methods
|
||||
typedef enum {
|
||||
ERROR_CON_DISABLE = 0,
|
||||
ERROR_CON_FRAME_COPY,
|
||||
ERROR_CON_SLICE_COPY
|
||||
ERROR_CON_SLICE_COPY,
|
||||
} ERROR_CON_IDC;
|
||||
|
||||
typedef enum { //feedback that whether or not have VCL NAL in current AU
|
||||
@@ -153,14 +144,14 @@ typedef enum {
|
||||
SPATIAL_LAYER_1 = 1,
|
||||
SPATIAL_LAYER_2 = 2,
|
||||
SPATIAL_LAYER_3 = 3,
|
||||
SPATIAL_LAYER_ALL = 4
|
||||
SPATIAL_LAYER_ALL = 4,
|
||||
} LAYER_NUM;
|
||||
|
||||
//enumerate the type of video bitstream which is provided to decoder
|
||||
typedef enum {
|
||||
VIDEO_BITSTREAM_AVC = 0,
|
||||
VIDEO_BITSTREAM_SVC = 1,
|
||||
VIDEO_BITSTREAM_DEFAULT = VIDEO_BITSTREAM_SVC
|
||||
VIDEO_BITSTREAM_DEFAULT = VIDEO_BITSTREAM_SVC,
|
||||
} VIDEO_BITSTREAM_TYPE;
|
||||
|
||||
typedef enum {
|
||||
@@ -169,7 +160,7 @@ typedef enum {
|
||||
IDR_RECOVERY_REQUEST = 2,
|
||||
NO_LTR_MARKING_FEEDBACK = 3,
|
||||
LTR_MARKING_SUCCESS = 4,
|
||||
LTR_MARKING_FAILED = 5
|
||||
LTR_MARKING_FAILED = 5,
|
||||
} KEY_FRAME_REQUEST_TYPE;
|
||||
|
||||
typedef struct {
|
||||
@@ -185,10 +176,6 @@ typedef struct {
|
||||
int iLTRFrameNum; //specify current decoder frame_num
|
||||
} SLTRMarkingFeedback;
|
||||
|
||||
typedef struct {
|
||||
bool bEnableLongTermReference; // 1: on, 0: off
|
||||
int iLTRRefNum; //TODO: not supported to set it arbitrary yet
|
||||
} SLTRConfig;
|
||||
typedef struct {
|
||||
unsigned int
|
||||
uiSliceMbNum[MAX_SLICES_NUM_TMP]; //here we use a tmp fixed value since MAX_SLICES_NUM is not defined here and its definition may be changed;
|
||||
@@ -209,8 +196,8 @@ typedef enum {
|
||||
typedef enum {
|
||||
RC_QUALITY_MODE = 0, //Quality mode
|
||||
RC_BITRATE_MODE = 1, //Bitrate mode
|
||||
RC_BUFFERBASED_MODE = 2,//no bitrate control,only using buffer status,adjust the video quality
|
||||
RC_OFF_MODE = -1 // rate control off mode
|
||||
RC_LOW_BW_MODE = 2, //bitrate limited mode
|
||||
RC_OFF_MODE = -1, // rate control off mode
|
||||
} RC_MODES;
|
||||
|
||||
typedef enum {
|
||||
@@ -225,7 +212,7 @@ typedef enum {
|
||||
PRO_CAVLC444 = 244,
|
||||
|
||||
PRO_SCALABLE_BASELINE = 83,
|
||||
PRO_SCALABLE_HIGH = 86
|
||||
PRO_SCALABLE_HIGH = 86,
|
||||
} EProfileIdc;
|
||||
|
||||
typedef enum {
|
||||
@@ -282,19 +269,15 @@ typedef struct {
|
||||
|
||||
typedef enum {
|
||||
CAMERA_VIDEO_REAL_TIME, //camera video signal
|
||||
SCREEN_CONTENT_REAL_TIME //screen content signal
|
||||
SCREEN_CONTENT_REAL_TIME,//screen content signal
|
||||
} EUsageType;
|
||||
|
||||
typedef enum {
|
||||
LOW_COMPLEXITY, //the lowest compleixty,the fastest speed,
|
||||
MEDIUM_COMPLEXITY, //medium complexity, medium speed,medium quality
|
||||
HIGH_COMPLEXITY //high complexity, lowest speed, high quality
|
||||
} ECOMPLEXITY_MODE;
|
||||
// TODO: Refine the parameters definition.
|
||||
// SVC Encoding Parameters
|
||||
typedef struct TagEncParamBase {
|
||||
EUsageType
|
||||
iUsageType; //application type;// CAMERA_VIDEO_REAL_TIME: //camera video signal; SCREEN_CONTENT_REAL_TIME: screen content signal;
|
||||
int iInputCsp; // color space of input sequence
|
||||
|
||||
int iPicWidth; // width of picture in samples
|
||||
int iPicHeight; // height of picture in samples
|
||||
@@ -308,6 +291,7 @@ typedef struct TagEncParamBase {
|
||||
typedef struct TagEncParamExt {
|
||||
EUsageType
|
||||
iUsageType; //application type;// CAMERA_VIDEO_REAL_TIME: //camera video signal; SCREEN_CONTENT_REAL_TIME: screen content signal;
|
||||
int iInputCsp; // color space of input sequence
|
||||
|
||||
int iPicWidth; // width of picture in samples
|
||||
int iPicHeight; // height of picture in samples
|
||||
@@ -319,9 +303,9 @@ typedef struct TagEncParamExt {
|
||||
int iSpatialLayerNum; // layer number at spatial level
|
||||
SSpatialLayerConfig sSpatialLayers[MAX_SPATIAL_LAYER_NUM];
|
||||
|
||||
ECOMPLEXITY_MODE iComplexityMode;
|
||||
unsigned int uiIntraPeriod; // period of Intra frame
|
||||
int iNumRefFrame; // number of reference frame used
|
||||
unsigned int uiFrameToBeCoded; // frame to be encoded (at input frame rate)
|
||||
bool bEnableSpsPpsIdAddition;
|
||||
bool bPrefixNalAddingCtrl;
|
||||
bool bEnableSSEI;
|
||||
@@ -336,8 +320,8 @@ typedef struct TagEncParamExt {
|
||||
unsigned int uiMaxNalSize;
|
||||
|
||||
/*LTR settings*/
|
||||
bool bEnableLongTermReference; // 1: on, 0: off
|
||||
int iLTRRefNum; //TODO: not supported to set it arbitrary yet
|
||||
bool bEnableLongTermReference; // 0: on, 1: off
|
||||
int iLTRRefNum;
|
||||
unsigned int iLtrMarkPeriod;
|
||||
|
||||
/* multi-thread settings*/
|
||||
@@ -354,9 +338,6 @@ typedef struct TagEncParamExt {
|
||||
bool bEnableAdaptiveQuant; // adaptive quantization control
|
||||
bool bEnableFrameCroppingFlag;// enable frame cropping flag: TRUE always in application
|
||||
bool bEnableSceneChangeDetect;
|
||||
|
||||
/*LTR advanced setting*/
|
||||
bool bIsLosslessLink;
|
||||
} SEncParamExt;
|
||||
|
||||
//Define a new struct to show the property of video bitstream.
|
||||
@@ -369,11 +350,11 @@ typedef struct {
|
||||
typedef struct TagSVCDecodingParam {
|
||||
char* pFileNameRestructed; // File name of restructed frame used for PSNR calculation based debug
|
||||
|
||||
EVideoFormatType eOutputColorFormat; // color space format to be outputed, EVideoFormatType specified in codec_def.h
|
||||
int iOutputColorFormat; // color space format to be outputed, EVideoFormatType specified in codec_def.h
|
||||
unsigned int uiCpuLoad; // CPU load
|
||||
unsigned char uiTargetDqLayer; // Setting target dq layer id
|
||||
|
||||
ERROR_CON_IDC eEcActiveIdc; // Whether active error concealment feature in decoder
|
||||
unsigned char uiEcActiveFlag; // Whether active error concealment feature in decoder
|
||||
|
||||
SVideoProperty sVideoProperty;
|
||||
} SDecodingParam, *PDecodingParam;
|
||||
@@ -435,63 +416,8 @@ typedef struct TagLevelInfo {
|
||||
} SLevelInfo;
|
||||
|
||||
typedef struct TagDeliveryStatus {
|
||||
bool bDeliveryFlag; //0: the previous frame isn't delivered,1: the previous frame is delivered
|
||||
int iDropFrameType; // the frame type that is dropped; reserved
|
||||
int iDropFrameSize; // the frame size that is dropped; reserved
|
||||
int iDropNum; //the number of video frames that are dropped continuously before delivery to encoder, which is used by screen content.
|
||||
int iDropFrameType; // the frame type that is dropped
|
||||
int iDropFrameSize; // the frame size that is dropped
|
||||
} SDeliveryStatus;
|
||||
|
||||
typedef struct TagDecoderCapability {
|
||||
int iProfileIdc;
|
||||
int iProfileIop;
|
||||
int iLevelIdc;
|
||||
int iMaxMbps;
|
||||
int iMaxFs;
|
||||
int iMaxCpb;
|
||||
int iMaxDpb;
|
||||
int iMaxBr;
|
||||
bool bRedPicCap;
|
||||
} SDecoderCapability;
|
||||
|
||||
typedef struct TagParserBsInfo {
|
||||
int iNalNum; //total NAL number in current AU
|
||||
int iNalLenInByte [MAX_NAL_UNITS_IN_LAYER]; //each nal length
|
||||
unsigned char* pDstBuff; //outputted dst buffer for parsed bitstream
|
||||
int iSpsWidthInPixel; //required SPS width info
|
||||
int iSpsHeightInPixel; //required SPS height info
|
||||
} SParserBsInfo, PParserBsInfo;
|
||||
|
||||
typedef struct TagVideoEncoderStatistics {
|
||||
unsigned int uiWidth; // the width of encoded frame
|
||||
unsigned int uiHeight; // the height of encoded frame
|
||||
//following standard, will be 16x aligned, if there are multiple spatial, this is of the highest
|
||||
float fAverageFrameSpeedInMs; // Average_Encoding_Time
|
||||
|
||||
// rate control related
|
||||
float fAverageFrameRate; // the average frame rate in, calculate since encoding starts, supposed that the input timestamp is in unit of ms
|
||||
float fLatestFrameRate; // the frame rate in, in the last second, supposed that the input timestamp is in unit of ms (? useful for checking BR, but is it easy to calculate?
|
||||
unsigned int uiBitRate; // sendrate in Bits per second, calculated within the set time-window
|
||||
|
||||
unsigned int uiInputFrameCount; // number of frames
|
||||
unsigned int uiSkippedFrameCount; // number of frames
|
||||
|
||||
unsigned int uiResolutionChangeTimes; // uiResolutionChangeTimes
|
||||
unsigned int uiIDRReqNum; // number of IDR requests
|
||||
unsigned int uiIDRSentNum; // number of actual IDRs sent
|
||||
unsigned int uiLTRSentNum; // number of LTR sent/marked
|
||||
} SEncoderStatistics; // in building, coming soon
|
||||
|
||||
typedef struct TagVideoDecoderStatistics {
|
||||
unsigned int uiWidth; // the width of encode/decode frame
|
||||
unsigned int uiHeight; // the height of encode/decode frame
|
||||
float fAverageFrameSpeedInMs; // Average_Decoding_Time
|
||||
|
||||
unsigned int uiDecodedFrameCount; // number of frames
|
||||
unsigned int uiResolutionChangeTimes; // uiResolutionChangeTimes
|
||||
unsigned int
|
||||
uiAvgEcRatio; // when EC is on, the average ratio of correct or EC areas, can be an indicator of reconstruction quality
|
||||
unsigned int uiIDRReqNum; // number of actual IDR request
|
||||
unsigned int uiLTRReqNum; // number of actual LTR request
|
||||
unsigned int uiIDRRecvNum; // number of actual IDR received
|
||||
} SDecoderStatistics; // in building, coming soon
|
||||
|
||||
#endif//WELS_VIDEO_CODEC_APPLICATION_DEFINITION_H__
|
||||
|
||||
@@ -63,7 +63,7 @@ typedef enum {
|
||||
videoFrameTypeI, /* I frame type */
|
||||
videoFrameTypeP, /* P frame type */
|
||||
videoFrameTypeSkip, /* Skip the frame based encoder kernel */
|
||||
videoFrameTypeIPMixed /* Frame type introduced I and P slices are mixing */
|
||||
videoFrameTypeIPMixed, /* Frame type introduced I and P slices are mixing */
|
||||
} EVideoFrameType;
|
||||
|
||||
typedef enum {
|
||||
@@ -72,7 +72,7 @@ typedef enum {
|
||||
cmUnkonwReason,
|
||||
cmMallocMemeError, /*Malloc a memory error*/
|
||||
cmInitExpected, /*Initial action is expected*/
|
||||
cmUnsupportedData
|
||||
cmUnsupportedData,
|
||||
} CM_RETURN;
|
||||
|
||||
/* nal unit type */
|
||||
@@ -93,7 +93,7 @@ enum ENalPriority {
|
||||
NAL_PRIORITY_DISPOSABLE = 0,
|
||||
NAL_PRIORITY_LOW = 1,
|
||||
NAL_PRIORITY_HIGH = 2,
|
||||
NAL_PRIORITY_HIGHEST = 3
|
||||
NAL_PRIORITY_HIGHEST = 3,
|
||||
};
|
||||
|
||||
#define IS_PARAMETER_SET_NAL(eNalRefIdc, eNalType) \
|
||||
@@ -116,7 +116,7 @@ enum {
|
||||
ET_IR_R3 = 0x10, // Intra Refresh in predifined 10% MB
|
||||
ET_FEC_HALF = 0x20, // Forward Error Correction in 50% redundency mode
|
||||
ET_FEC_FULL = 0x40, // Forward Error Correction in 100% redundency mode
|
||||
ET_RFS = 0x80 // Reference Frame Selection
|
||||
ET_RFS = 0x80, // Reference Frame Selection
|
||||
};
|
||||
|
||||
/* information of coded Slice(=NAL)(s) */
|
||||
|
||||
@@ -3,7 +3,6 @@ package com.wels.dec;
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
import android.os.Process;
|
||||
import android.util.Log;
|
||||
|
||||
import android.view.KeyEvent;
|
||||
@@ -16,136 +15,103 @@ import java.io.*;
|
||||
import java.util.Vector;
|
||||
|
||||
public class WelsDecTest extends Activity {
|
||||
/** Called when the activity is first created. */
|
||||
private OnClickListener OnClickEvent;
|
||||
private Button mBtnLoad, mBtnStartSW;
|
||||
/** Called when the activity is first created. */
|
||||
private OnClickListener OnClickEvent;
|
||||
private Button mBtnLoad, mBtnStartSW;
|
||||
|
||||
final String mStreamPath = "/sdcard/welsdec/";
|
||||
Vector<String> mStreamFiles = new Vector<String>();
|
||||
final String mStreamPath = "/sdcard/wels-seq/";
|
||||
Vector<String> mStreamFiles = new Vector<String>();
|
||||
|
||||
@Override
|
||||
public void onCreate (Bundle savedInstanceState) {
|
||||
super.onCreate (savedInstanceState);
|
||||
final TextView tv = new TextView (this);
|
||||
System.out.println ("Here we go ...");
|
||||
Log.i (TAG, "sdcard path:" + Environment.getExternalStorageDirectory().getAbsolutePath());
|
||||
setContentView (R.layout.main);
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
final TextView tv = new TextView(this);
|
||||
System.out.println("Here we go ...");
|
||||
Log.i(TAG, "sdcard path:" + Environment.getExternalStorageDirectory().getAbsolutePath());
|
||||
setContentView(R.layout.main);
|
||||
|
||||
mBtnLoad = (Button)findViewById (R.id.cfg);
|
||||
mBtnStartSW = (Button)findViewById (R.id.buttonSW);
|
||||
mBtnLoad = (Button)findViewById(R.id.cfg);
|
||||
mBtnStartSW = (Button)findViewById(R.id.buttonSW);
|
||||
|
||||
OnClickEvent = new OnClickListener() {
|
||||
public void onClick (View v) {
|
||||
switch (v.getId()) {
|
||||
case R.id.cfg: {
|
||||
String cfgFile = mStreamPath + "BitStreams.txt";
|
||||
try {
|
||||
BufferedReader bufferedReader = new BufferedReader (new FileReader (cfgFile));
|
||||
String text;
|
||||
while ((text = bufferedReader.readLine()) != null) {
|
||||
mStreamFiles.add (mStreamPath + text);
|
||||
Log.i (TAG, mStreamPath + text);
|
||||
OnClickEvent = new OnClickListener()
|
||||
{
|
||||
public void onClick(View v)
|
||||
{
|
||||
switch(v.getId())
|
||||
{
|
||||
case R.id.cfg:
|
||||
{
|
||||
String cfgFile = mStreamPath + "BitStreams.txt";
|
||||
try {
|
||||
BufferedReader bufferedReader = new BufferedReader(new FileReader(cfgFile));
|
||||
String text;
|
||||
while((text = bufferedReader.readLine()) != null) {
|
||||
mStreamFiles.add(mStreamPath + text);
|
||||
Log.i(TAG, mStreamPath + text);
|
||||
}
|
||||
bufferedReader.close();
|
||||
} catch(IOException e) {
|
||||
Log.e("WELS_DEC", e.getMessage());
|
||||
}
|
||||
}
|
||||
break;
|
||||
case R.id.buttonSW:
|
||||
{
|
||||
System.out.println("decode sequence number = " + mStreamFiles.size());
|
||||
Log.i("WSE_DEC","after click");
|
||||
try {
|
||||
for (int k=0; k < mStreamFiles.size(); k++) {
|
||||
String inFile = mStreamFiles.get(k);
|
||||
String outFile = mStreamFiles.get(k) + ".yuv";
|
||||
Log.i(TAG, "input file:" + inFile+ " output file:" + outFile);
|
||||
DoDecoderTest(inFile, outFile);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, e.getMessage());
|
||||
}
|
||||
mStreamFiles.clear();
|
||||
tv.setText( "Decoder is completed!" );
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
bufferedReader.close();
|
||||
} catch (IOException e) {
|
||||
Log.e ("WELS_DEC", e.getMessage());
|
||||
}
|
||||
}
|
||||
break;
|
||||
case R.id.buttonSW: {
|
||||
System.out.println ("decode sequence number = " + mStreamFiles.size());
|
||||
Log.i ("WSE_DEC", "after click");
|
||||
try {
|
||||
for (int k = 0; k < mStreamFiles.size(); k++) {
|
||||
String inFile = mStreamFiles.get (k);
|
||||
String outFile = mStreamFiles.get (k) + ".yuv";
|
||||
Log.i (TAG, "input file:" + inFile + " output file:" + outFile);
|
||||
DoDecoderTest (inFile, outFile);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e (TAG, e.getMessage());
|
||||
}
|
||||
mStreamFiles.clear();
|
||||
tv.setText ("Decoder is completed!");
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
mBtnLoad.setOnClickListener (OnClickEvent);
|
||||
mBtnStartSW.setOnClickListener (OnClickEvent);
|
||||
mBtnLoad.setOnClickListener(OnClickEvent);
|
||||
mBtnStartSW.setOnClickListener(OnClickEvent);
|
||||
|
||||
System.out.println ("Done!");
|
||||
//if you want to run the demo manually, just comment following 2 lines
|
||||
runAutoDec();
|
||||
}
|
||||
public void runAutoDec() {
|
||||
Thread thread = new Thread() {
|
||||
|
||||
public void run() {
|
||||
Log.i (TAG, "decoder performance test begin");
|
||||
|
||||
File bitstreams = new File (mStreamPath);
|
||||
String[] list = bitstreams.list();
|
||||
if (list == null || list.length == 0) {
|
||||
Log.i (TAG, "have not find any coder resourse");
|
||||
finish();
|
||||
}
|
||||
for (int i = 0; i < list.length; i++) {
|
||||
|
||||
String inFile = list[i];
|
||||
inFile = mStreamPath + inFile;
|
||||
String outFile = inFile + ".yuv";
|
||||
DoDecoderTest (inFile, outFile);
|
||||
|
||||
|
||||
}
|
||||
Log.i (TAG, "decoder performance test finish");
|
||||
finish();
|
||||
}
|
||||
|
||||
};
|
||||
thread.start();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
Log.i ("WSE_DEC", "welsdecdemo onStart");
|
||||
super.onStart();
|
||||
}
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
|
||||
Log.i (TAG, "OnDestroy");
|
||||
|
||||
Process.killProcess (Process.myPid());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onKeyDown (int keyCode, KeyEvent event) {
|
||||
switch (keyCode) {
|
||||
case KeyEvent.KEYCODE_BACK:
|
||||
return true;
|
||||
default:
|
||||
return super.onKeyDown (keyCode, event);
|
||||
System.out.println("Done!");
|
||||
}
|
||||
}
|
||||
|
||||
public native void DoDecoderTest (String infilename, String outfilename);
|
||||
private static final String TAG = "welsdec";
|
||||
static {
|
||||
try {
|
||||
System.loadLibrary ("openh264");
|
||||
System.loadLibrary ("stlport_shared");
|
||||
System.loadLibrary ("welsdecdemo");
|
||||
Log.v (TAG, "Load libwelsdec successful");
|
||||
} catch (Exception e) {
|
||||
Log.e (TAG, "Failed to load welsdec" + e.getMessage());
|
||||
@Override
|
||||
public void onStart()
|
||||
{
|
||||
Log.i("WSE_DEC","welsdecdemo onStart");
|
||||
super.onStart();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
||||
switch (keyCode) {
|
||||
case KeyEvent.KEYCODE_BACK:
|
||||
return true;
|
||||
default:
|
||||
return super.onKeyDown(keyCode, event);
|
||||
}
|
||||
}
|
||||
|
||||
public native void DoDecoderTest(String infilename, String outfilename);
|
||||
private static final String TAG = "welsdec";
|
||||
static {
|
||||
try {
|
||||
System.loadLibrary("openh264");
|
||||
System.loadLibrary("stlport_shared");
|
||||
System.loadLibrary("welsdecdemo");
|
||||
Log.v(TAG, "Load libwelsdec successful");
|
||||
}
|
||||
catch(Exception e) {
|
||||
Log.e(TAG, "Failed to load welsdec"+e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -8,27 +8,6 @@
|
||||
|
||||
extern "C" int EncMain (int argc, char* argv[]);
|
||||
extern "C"
|
||||
JNIEXPORT void JNICALL Java_com_wels_enc_WelsEncTest_DoEncoderAutoTest
|
||||
(JNIEnv* env, jobject thiz, jstring jsIncfgName, jstring jsInlayerName, jstring jsInyuvName, jstring jsOutbitName) {
|
||||
/**************** Add the native codes/API *****************/
|
||||
const char* argv[]={
|
||||
(char*)("encConsole.exe"),
|
||||
(char*) ((*env).GetStringUTFChars (jsIncfgName, NULL)),
|
||||
(char*)("-org"),
|
||||
(char*) ((*env).GetStringUTFChars (jsInyuvName, NULL)),
|
||||
(char*)("-bf"),
|
||||
(char*) ((*env).GetStringUTFChars (jsOutbitName, NULL)),
|
||||
(char*)("-numl"),
|
||||
(char*)("1"),
|
||||
(char*)("-lconfig"),
|
||||
(char*)("0"),
|
||||
(char*) ((*env).GetStringUTFChars (jsInlayerName, NULL))
|
||||
};
|
||||
LOGI ("Start to run JNI module!+++");
|
||||
EncMain(sizeof(argv)/sizeof(argv[0]),(char**)&argv[0]);
|
||||
LOGI ("End to run JNI module!+++");
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_com_wels_enc_WelsEncTest_DoEncoderTest
|
||||
(JNIEnv* env, jobject thiz, jstring jsFileNameIn) {
|
||||
/**************** Add the native codes/API *****************/
|
||||
|
||||
@@ -3,7 +3,6 @@ package com.wels.enc;
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
import android.os.Process;
|
||||
import android.util.Log;
|
||||
|
||||
import android.view.KeyEvent;
|
||||
@@ -16,158 +15,104 @@ import java.io.*;
|
||||
import java.util.Vector;
|
||||
|
||||
public class WelsEncTest extends Activity {
|
||||
/** Called when the activity is first created. */
|
||||
private OnClickListener OnClickEvent;
|
||||
private Button mBtnLoad, mBtnStartSW;
|
||||
/** Called when the activity is first created. */
|
||||
private OnClickListener OnClickEvent;
|
||||
private Button mBtnLoad, mBtnStartSW;
|
||||
|
||||
final String mStreamPath = "/sdcard/welsenc/";
|
||||
Vector<String> mCfgFiles = new Vector<String>();
|
||||
final String mStreamPath = "/sdcard/wels-seq/";
|
||||
Vector<String> mCfgFiles = new Vector<String>();
|
||||
|
||||
@Override
|
||||
public void onCreate (Bundle savedInstanceState) {
|
||||
super.onCreate (savedInstanceState);
|
||||
final TextView tv = new TextView (this);
|
||||
System.out.println ("Here we go ...");
|
||||
Log.i (TAG, "sdcard path:" + Environment.getExternalStorageDirectory().getAbsolutePath());
|
||||
setContentView (R.layout.main);
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
final TextView tv = new TextView(this);
|
||||
System.out.println("Here we go ...");
|
||||
Log.i(TAG, "sdcard path:" + Environment.getExternalStorageDirectory().getAbsolutePath());
|
||||
setContentView(R.layout.main);
|
||||
|
||||
mBtnLoad = (Button)findViewById (R.id.cfg);
|
||||
mBtnStartSW = (Button)findViewById (R.id.buttonSW);
|
||||
mBtnLoad = (Button)findViewById(R.id.cfg);
|
||||
mBtnStartSW = (Button)findViewById(R.id.buttonSW);
|
||||
|
||||
|
||||
OnClickEvent = new OnClickListener() {
|
||||
public void onClick (View v) {
|
||||
switch (v.getId()) {
|
||||
case R.id.cfg: {
|
||||
String cfgFile = mStreamPath + "cfgs.txt";
|
||||
try {
|
||||
BufferedReader bufferedReader = new BufferedReader (new FileReader (cfgFile));
|
||||
String text;
|
||||
while ((text = bufferedReader.readLine()) != null) {
|
||||
mCfgFiles.add (mStreamPath + text);
|
||||
Log.i (TAG, mStreamPath + text);
|
||||
OnClickEvent = new OnClickListener()
|
||||
{
|
||||
public void onClick(View v)
|
||||
{
|
||||
switch(v.getId())
|
||||
{
|
||||
case R.id.cfg:
|
||||
{
|
||||
String cfgFile = mStreamPath + "cfgs.txt";
|
||||
try {
|
||||
BufferedReader bufferedReader = new BufferedReader(new FileReader(cfgFile));
|
||||
String text;
|
||||
while((text = bufferedReader.readLine()) != null) {
|
||||
mCfgFiles.add(mStreamPath + text);
|
||||
Log.i(TAG, mStreamPath + text);
|
||||
}
|
||||
bufferedReader.close();
|
||||
} catch(IOException e) {
|
||||
Log.e(TAG, e.getMessage());
|
||||
}
|
||||
}
|
||||
break;
|
||||
case R.id.buttonSW:
|
||||
{
|
||||
System.out.println("decode sequence number = " + mCfgFiles.size());
|
||||
Log.i(TAG,"after click");
|
||||
try {
|
||||
for (int k=0; k < mCfgFiles.size(); k++) {
|
||||
String cfgFile = mCfgFiles.get(k);
|
||||
DoEncoderTest(cfgFile);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, e.getMessage());
|
||||
}
|
||||
mCfgFiles.clear();
|
||||
tv.setText( "Decoder is completed!" );
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
bufferedReader.close();
|
||||
} catch (IOException e) {
|
||||
Log.e (TAG, e.getMessage());
|
||||
}
|
||||
}
|
||||
break;
|
||||
case R.id.buttonSW: {
|
||||
System.out.println ("encode sequence number = " + mCfgFiles.size());
|
||||
Log.i (TAG, "after click");
|
||||
try {
|
||||
for (int k = 0; k < mCfgFiles.size(); k++) {
|
||||
String cfgFile = mCfgFiles.get (k);
|
||||
DoEncoderTest (cfgFile);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e (TAG, e.getMessage());
|
||||
}
|
||||
mCfgFiles.clear();
|
||||
tv.setText ("Encoder is completed!");
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
mBtnLoad.setOnClickListener (OnClickEvent);
|
||||
mBtnStartSW.setOnClickListener (OnClickEvent);
|
||||
mBtnLoad.setOnClickListener(OnClickEvent);
|
||||
mBtnStartSW.setOnClickListener(OnClickEvent);
|
||||
|
||||
System.out.println ("Done!");
|
||||
//run the test automatically,if you not want to autotest, just comment this line
|
||||
runAutoEnc();
|
||||
}
|
||||
|
||||
public void runAutoEnc() {
|
||||
Thread thread = new Thread() {
|
||||
|
||||
public void run() {
|
||||
Log.i (TAG, "encoder performance test begin");
|
||||
String inYuvfile = null, outBitfile = null, inOrgfile = null, inLayerfile = null;
|
||||
File encCase = new File (mStreamPath);
|
||||
String[] caseNum = encCase.list();
|
||||
if (caseNum == null || caseNum.length == 0) {
|
||||
Log.i (TAG, "have not find any encoder resourse");
|
||||
finish();
|
||||
}
|
||||
|
||||
for (int i = 0; i < caseNum.length; i++) {
|
||||
String[] yuvName = null;
|
||||
File yuvPath = null;
|
||||
File encCaseNo = new File (mStreamPath + caseNum[i]);
|
||||
String[] encFile = encCaseNo.list();
|
||||
|
||||
for (int k = 0; k < encFile.length; k++) {
|
||||
if (encFile[k].compareToIgnoreCase ("welsenc.cfg") == 0)
|
||||
|
||||
inOrgfile = encCaseNo + File.separator + encFile[k];
|
||||
|
||||
else if (encFile[k].compareToIgnoreCase ("layer2.cfg") == 0)
|
||||
inLayerfile = encCaseNo + File.separator + encFile[k];
|
||||
else if (encFile[k].compareToIgnoreCase ("yuv") == 0) {
|
||||
yuvPath = new File (encCaseNo + File.separator + encFile[k]);
|
||||
yuvName = yuvPath.list();
|
||||
}
|
||||
}
|
||||
for (int m = 0; m < yuvName.length; m++) {
|
||||
inYuvfile = yuvPath + File.separator + yuvName[m];
|
||||
outBitfile = inYuvfile + ".264";
|
||||
Log.i (TAG, "enc yuv file:" + yuvName[m]);
|
||||
DoEncoderAutoTest (inOrgfile, inLayerfile, inYuvfile, outBitfile);
|
||||
}
|
||||
}
|
||||
|
||||
Log.i (TAG, "encoder performance test finish");
|
||||
finish();
|
||||
}
|
||||
|
||||
};
|
||||
thread.start();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
Log.i (TAG, "welsencdemo onStart");
|
||||
super.onStart();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
|
||||
Log.i (TAG, "OnDestroy");
|
||||
|
||||
Process.killProcess (Process.myPid());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onKeyDown (int keyCode, KeyEvent event) {
|
||||
switch (keyCode) {
|
||||
case KeyEvent.KEYCODE_BACK:
|
||||
return true;
|
||||
default:
|
||||
return super.onKeyDown (keyCode, event);
|
||||
System.out.println("Done!");
|
||||
}
|
||||
}
|
||||
|
||||
public native void DoEncoderTest (String cfgFileName);
|
||||
public native void DoEncoderAutoTest (String cfgFileName, String layerFileName, String yuvFileName,
|
||||
String outBitsName);
|
||||
private static final String TAG = "welsenc";
|
||||
static {
|
||||
try {
|
||||
System.loadLibrary ("openh264");
|
||||
System.loadLibrary ("stlport_shared");
|
||||
System.loadLibrary ("welsencdemo");
|
||||
Log.v (TAG, "Load libwelsencdemo.so successful");
|
||||
} catch (Exception e) {
|
||||
Log.e (TAG, "Failed to load welsenc" + e.getMessage());
|
||||
@Override
|
||||
public void onStart()
|
||||
{
|
||||
Log.i(TAG,"welsdecdemo onStart");
|
||||
super.onStart();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
||||
switch (keyCode) {
|
||||
case KeyEvent.KEYCODE_BACK:
|
||||
return true;
|
||||
default:
|
||||
return super.onKeyDown(keyCode, event);
|
||||
}
|
||||
}
|
||||
|
||||
public native void DoEncoderTest(String cfgFileName);
|
||||
private static final String TAG = "welsenc";
|
||||
static {
|
||||
try {
|
||||
System.loadLibrary("openh264");
|
||||
System.loadLibrary("stlport_shared");
|
||||
System.loadLibrary("welsencdemo");
|
||||
Log.v(TAG, "Load libwelsencdemo.so successful");
|
||||
}
|
||||
catch(Exception e) {
|
||||
Log.e(TAG, "Failed to load welsdec"+e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -25,9 +25,6 @@
|
||||
F5AC94FF193EB7D800F58154 /* deblocking_aarch64_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = F5AC94FE193EB7D800F58154 /* deblocking_aarch64_neon.S */; };
|
||||
F5B8D82D190757290037849A /* mc_aarch64_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = F5B8D82C190757290037849A /* mc_aarch64_neon.S */; };
|
||||
F5BB0BB8196BB5960072D50D /* copy_mb_aarch64_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = F5BB0BB7196BB5960072D50D /* copy_mb_aarch64_neon.S */; };
|
||||
F791965419D3B89D00F60C6B /* intra_pred_common_aarch64_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = F791965319D3B89D00F60C6B /* intra_pred_common_aarch64_neon.S */; };
|
||||
F791965619D3B8A600F60C6B /* intra_pred_common_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = F791965519D3B8A600F60C6B /* intra_pred_common_neon.S */; };
|
||||
F791965919D3BE2200F60C6B /* intra_pred_common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F791965819D3BE2200F60C6B /* intra_pred_common.cpp */; };
|
||||
FAABAA1818E9354A00D4186F /* sad_common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAABAA1718E9354A00D4186F /* sad_common.cpp */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
@@ -77,10 +74,6 @@
|
||||
F5AC94FE193EB7D800F58154 /* deblocking_aarch64_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = deblocking_aarch64_neon.S; path = arm64/deblocking_aarch64_neon.S; sourceTree = "<group>"; };
|
||||
F5B8D82C190757290037849A /* mc_aarch64_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = mc_aarch64_neon.S; path = arm64/mc_aarch64_neon.S; sourceTree = "<group>"; };
|
||||
F5BB0BB7196BB5960072D50D /* copy_mb_aarch64_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = copy_mb_aarch64_neon.S; path = arm64/copy_mb_aarch64_neon.S; sourceTree = "<group>"; };
|
||||
F791965319D3B89D00F60C6B /* intra_pred_common_aarch64_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = intra_pred_common_aarch64_neon.S; path = arm64/intra_pred_common_aarch64_neon.S; sourceTree = "<group>"; };
|
||||
F791965519D3B8A600F60C6B /* intra_pred_common_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = intra_pred_common_neon.S; sourceTree = "<group>"; };
|
||||
F791965719D3BA9300F60C6B /* intra_pred_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = intra_pred_common.h; sourceTree = "<group>"; };
|
||||
F791965819D3BE2200F60C6B /* intra_pred_common.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = intra_pred_common.cpp; sourceTree = "<group>"; };
|
||||
FAABAA1618E9353F00D4186F /* sad_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sad_common.h; sourceTree = "<group>"; };
|
||||
FAABAA1718E9354A00D4186F /* sad_common.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sad_common.cpp; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
@@ -100,7 +93,6 @@
|
||||
4C3406B118D96EA600DFA14A /* arm */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F791965519D3B8A600F60C6B /* intra_pred_common_neon.S */,
|
||||
4CC61F0818FF6B4B00E56EAB /* copy_mb_neon.S */,
|
||||
4C3406B218D96EA600DFA14A /* arm_arch_common_macro.S */,
|
||||
4C3406B318D96EA600DFA14A /* deblocking_neon.S */,
|
||||
@@ -113,7 +105,6 @@
|
||||
4C3406B618D96EA600DFA14A /* inc */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F791965719D3BA9300F60C6B /* intra_pred_common.h */,
|
||||
F0B204F718FD23B6005DA23F /* copy_mb.h */,
|
||||
FAABAA1618E9353F00D4186F /* sad_common.h */,
|
||||
4C3406B718D96EA600DFA14A /* cpu.h */,
|
||||
@@ -135,7 +126,6 @@
|
||||
4C3406C318D96EA600DFA14A /* src */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F791965819D3BE2200F60C6B /* intra_pred_common.cpp */,
|
||||
5BA8F2BF19603F5F00011CE4 /* common_tables.cpp */,
|
||||
F0B204F818FD23BF005DA23F /* copy_mb.cpp */,
|
||||
FAABAA1718E9354A00D4186F /* sad_common.cpp */,
|
||||
@@ -189,7 +179,6 @@
|
||||
F556A81D1906669F00E156A8 /* arm64 */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F791965319D3B89D00F60C6B /* intra_pred_common_aarch64_neon.S */,
|
||||
F5BB0BB7196BB5960072D50D /* copy_mb_aarch64_neon.S */,
|
||||
F5AC94FE193EB7D800F58154 /* deblocking_aarch64_neon.S */,
|
||||
F5B8D82C190757290037849A /* mc_aarch64_neon.S */,
|
||||
@@ -255,15 +244,12 @@
|
||||
F556A8241906673900E156A8 /* arm_arch64_common_macro.S in Sources */,
|
||||
F5AC94FF193EB7D800F58154 /* deblocking_aarch64_neon.S in Sources */,
|
||||
4C3406CE18D96EA600DFA14A /* crt_util_safe_x.cpp in Sources */,
|
||||
F791965919D3BE2200F60C6B /* intra_pred_common.cpp in Sources */,
|
||||
4C3406CF18D96EA600DFA14A /* deblocking_common.cpp in Sources */,
|
||||
5BA8F2C019603F5F00011CE4 /* common_tables.cpp in Sources */,
|
||||
F791965419D3B89D00F60C6B /* intra_pred_common_aarch64_neon.S in Sources */,
|
||||
4C3406D118D96EA600DFA14A /* WelsThreadLib.cpp in Sources */,
|
||||
4C3406CC18D96EA600DFA14A /* mc_neon.S in Sources */,
|
||||
F5BB0BB8196BB5960072D50D /* copy_mb_aarch64_neon.S in Sources */,
|
||||
4C3406CB18D96EA600DFA14A /* expand_picture_neon.S in Sources */,
|
||||
F791965619D3B8A600F60C6B /* intra_pred_common_neon.S in Sources */,
|
||||
4CC61F0918FF6B4B00E56EAB /* copy_mb_neon.S in Sources */,
|
||||
53C1C9BC193F0FB000404D8F /* expand_pic.cpp in Sources */,
|
||||
4C3406CD18D96EA600DFA14A /* cpu.cpp in Sources */,
|
||||
@@ -308,7 +294,7 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
};
|
||||
@@ -339,7 +325,7 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||
SDKROOT = iphoneos;
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
@@ -368,6 +354,8 @@
|
||||
HAVE_NEON,
|
||||
);
|
||||
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*]" = APPLE_IOS;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.1;
|
||||
ONLY_ACTIVE_ARCH = NO;
|
||||
OTHER_LDFLAGS = "-ObjC";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
@@ -395,6 +383,7 @@
|
||||
HAVE_NEON,
|
||||
);
|
||||
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*]" = APPLE_IOS;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.1;
|
||||
OTHER_LDFLAGS = "-ObjC";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
|
||||
@@ -42,20 +42,6 @@
|
||||
remoteGlobalIDString = 4CE4427918B6FC360017DF25;
|
||||
remoteInfo = welsdec;
|
||||
};
|
||||
541044A6199888F800B44931 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 4CE444FA18B72AD70017DF25 /* welsdec.xcodeproj */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 4CE4427818B6FC360017DF25;
|
||||
remoteInfo = welsdec;
|
||||
};
|
||||
541044A8199888F800B44931 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 4CE444F018B72A8F0017DF25 /* common.xcodeproj */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 4CE443D418B722CD0017DF25;
|
||||
remoteInfo = common;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
@@ -67,7 +53,7 @@
|
||||
F0E6634D1810EFA5000C888E /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
|
||||
F0E663511810EFA5000C888E /* demo-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "demo-Info.plist"; sourceTree = "<group>"; };
|
||||
F0E663531810EFA5000C888E /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
F0E663551810EFA5000C888E /* main.m */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; path = main.m; sourceTree = "<group>"; };
|
||||
F0E663551810EFA5000C888E /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
F0E663581810EFA5000C888E /* DEMOAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DEMOAppDelegate.h; sourceTree = "<group>"; };
|
||||
F0E663591810EFA5000C888E /* DEMOAppDelegate.m */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; path = DEMOAppDelegate.m; sourceTree = "<group>"; };
|
||||
F0E6635B1810EFA5000C888E /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = "<group>"; };
|
||||
@@ -220,8 +206,6 @@
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
541044A7199888F800B44931 /* PBXTargetDependency */,
|
||||
541044A9199888F800B44931 /* PBXTargetDependency */,
|
||||
);
|
||||
name = demo;
|
||||
productName = demo;
|
||||
@@ -315,19 +299,6 @@
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
541044A7199888F800B44931 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = welsdec;
|
||||
targetProxy = 541044A6199888F800B44931 /* PBXContainerItemProxy */;
|
||||
};
|
||||
541044A9199888F800B44931 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = common;
|
||||
targetProxy = 541044A8199888F800B44931 /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
F0E663521810EFA5000C888E /* InfoPlist.strings */ = {
|
||||
isa = PBXVariantGroup;
|
||||
@@ -381,7 +352,7 @@
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.1;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
@@ -406,7 +377,7 @@
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.1;
|
||||
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
@@ -427,7 +398,6 @@
|
||||
APPLE_IOS,
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"$(SRCROOT)/../../../../api/svc\"",
|
||||
"\"$(SRCROOT)/../../../../common/inc\"",
|
||||
);
|
||||
@@ -447,7 +417,6 @@
|
||||
GCC_C_LANGUAGE_STANDARD = "compiler-default";
|
||||
GCC_PREPROCESSOR_DEFINITIONS = APPLE_IOS;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"$(SRCROOT)/../../../../api/svc\"",
|
||||
"\"$(SRCROOT)/../../../../common/inc\"",
|
||||
);
|
||||
|
||||
@@ -34,91 +34,9 @@
|
||||
|
||||
#import "DEMOAppDelegate.h"
|
||||
|
||||
extern int DecMain (int argc, char* argv[]);
|
||||
|
||||
//redirect NSLog and stdout to logfile
|
||||
void redirectLogToDocumentFile() {
|
||||
NSArray* path = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
|
||||
NSString* document = [path objectAtIndex:0];
|
||||
NSString* fileName = [NSString stringWithFormat:@"decPerf.log"];
|
||||
NSString* logPath = [document stringByAppendingPathComponent:fileName];
|
||||
|
||||
NSFileManager* defaultManager = [NSFileManager defaultManager];
|
||||
[defaultManager removeItemAtPath:logPath error:nil];
|
||||
|
||||
freopen ([logPath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stdout);
|
||||
freopen ([logPath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stderr);
|
||||
}
|
||||
|
||||
|
||||
//run auto test to get encoder performance
|
||||
int AutoTestDec() {
|
||||
|
||||
|
||||
NSString* document = [[NSString alloc] init];
|
||||
NSArray* paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
|
||||
if ([paths count] == 0) {
|
||||
NSLog (@"could not find document path");
|
||||
return 2;
|
||||
}
|
||||
document = [paths objectAtIndex:0];
|
||||
|
||||
|
||||
NSString* decFilePath = [document stringByAppendingString:@"/DecoderPerfTestRes"];
|
||||
NSFileManager* manage = [NSFileManager defaultManager];
|
||||
|
||||
NSString* outYuvPath = [decFilePath stringByAppendingString:@"/yuv"];
|
||||
[manage removeItemAtPath:outYuvPath error:nil];
|
||||
[manage createDirectoryAtPath:outYuvPath withIntermediateDirectories:YES attributes:nil error: nil];
|
||||
|
||||
|
||||
NSArray* bitstreams = [manage subpathsAtPath:decFilePath];
|
||||
if (bitstreams == nil) {
|
||||
NSLog (@"could not find any bitstream under decoderperfpath");
|
||||
return 1;
|
||||
}
|
||||
|
||||
redirectLogToDocumentFile(); //output to console, just comment this line
|
||||
|
||||
for (int caseNO = 0; caseNO < [bitstreams count]; caseNO++) {
|
||||
|
||||
NSString* caseName = [bitstreams objectAtIndex:caseNO];
|
||||
if ([caseName isEqual: @"yuv"]) {
|
||||
break;
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
@autoreleasepool {
|
||||
return UIApplicationMain(argc, argv, nil, NSStringFromClass([DEMOAppDelegate class]));
|
||||
}
|
||||
NSString* bitstream = [decFilePath stringByAppendingString:@"/"];
|
||||
bitstream = [bitstream stringByAppendingString:caseName];
|
||||
NSString* yuvFileName = [caseName stringByAppendingString:@".yuv"];
|
||||
NSString* tmpyuvFileName = [outYuvPath stringByAppendingString:@"/"];
|
||||
yuvFileName = [tmpyuvFileName stringByAppendingString:yuvFileName];
|
||||
|
||||
[manage createFileAtPath:yuvFileName contents:nil attributes:nil];
|
||||
|
||||
const char* argvv[] = {
|
||||
"decConsole.exe",
|
||||
[bitstream UTF8String],
|
||||
[yuvFileName UTF8String]
|
||||
};
|
||||
DecMain (sizeof (argvv) / sizeof (argvv[0]), (char**)&argvv[0]);
|
||||
[manage removeItemAtPath:yuvFileName error:nil];//FOR limited devices spaces
|
||||
fflush (stdout); // flush the content of stdout instantly
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main (int argc, char* argv[]) {
|
||||
//***For auto testing of decoder performance, call auto test here, if you not want to do auto test, you can comment it manualy
|
||||
|
||||
if (AutoTestDec() == 0)
|
||||
NSLog (@"Auto testing running sucessfully");
|
||||
else
|
||||
NSLog (@"Auto testing running failed");
|
||||
abort();
|
||||
//********
|
||||
|
||||
@autoreleasepool {
|
||||
return UIApplicationMain (argc, argv, nil, NSStringFromClass ([DEMOAppDelegate class]));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -410,7 +410,7 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
};
|
||||
@@ -441,7 +441,7 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||
SDKROOT = iphoneos;
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
@@ -470,12 +470,13 @@
|
||||
);
|
||||
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*]" = APPLE_IOS;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(SRCROOT)/../../../../common/inc",
|
||||
"$(SRCROOT)/../../../../api/svc",
|
||||
"$(SRCROOT)/../../../../common/arm",
|
||||
"$(SRCROOT)/../../../../common/arm64",
|
||||
);
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.1;
|
||||
ONLY_ACTIVE_ARCH = NO;
|
||||
OTHER_LDFLAGS = "-ObjC";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
@@ -504,12 +505,13 @@
|
||||
);
|
||||
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*]" = APPLE_IOS;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(SRCROOT)/../../../../common/inc",
|
||||
"$(SRCROOT)/../../../../api/svc",
|
||||
"$(SRCROOT)/../../../../common/arm",
|
||||
"$(SRCROOT)/../../../../common/arm64",
|
||||
);
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.1;
|
||||
ONLY_ACTIVE_ARCH = NO;
|
||||
OTHER_LDFLAGS = "-ObjC";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
544F0DC4196F86F50092FC6F /* libprocessing.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 544F0DC3196F86EF0092FC6F /* libprocessing.a */; };
|
||||
FAA3D9D318BD729500BCD52D /* welsenc_ios.cfg in Resources */ = {isa = PBXBuildFile; fileRef = FAA3D9D218BD729500BCD52D /* welsenc_ios.cfg */; };
|
||||
FAA3D9D818BD777100BCD52D /* CiscoVT2people_320x192_12fps.yuv in Resources */ = {isa = PBXBuildFile; fileRef = FAA3D9D718BD777100BCD52D /* CiscoVT2people_320x192_12fps.yuv */; };
|
||||
FAA3D9DD18BD8A5600BCD52D /* layer2.cfg in Resources */ = {isa = PBXBuildFile; fileRef = FAA3D9DC18BD8A5600BCD52D /* layer2.cfg */; };
|
||||
@@ -22,26 +21,13 @@
|
||||
FAFB4FC218BC8DD700315438 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = FAFB4FC118BC8DD700315438 /* ViewController.m */; };
|
||||
FAFB4FC418BC8DD700315438 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FAFB4FC318BC8DD700315438 /* Images.xcassets */; };
|
||||
FAFB500318BC8F0D00315438 /* libcommon.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FAFB4FF118BC8E8600315438 /* libcommon.a */; };
|
||||
FAFB500418BC8F1100315438 /* libprocessing.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FAFB4FFA18BC8E9A00315438 /* libprocessing.a */; };
|
||||
FAFB500518BC8F1500315438 /* libwelsenc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FAFB4FE818BC8E7D00315438 /* libwelsenc.a */; };
|
||||
FAFB500B18BC8F6C00315438 /* welsenc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAFB500A18BC8F6C00315438 /* welsenc.cpp */; };
|
||||
FAFB502F18BCA50900315438 /* read_config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAFB502E18BCA50900315438 /* read_config.cpp */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
544F0DBF196F86EF0092FC6F /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 544F0DB9196F85F20092FC6F /* processing.xcodeproj */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 5499477B196A3F3900BA3D87;
|
||||
remoteInfo = processing;
|
||||
};
|
||||
544F0DC2196F86EF0092FC6F /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 544F0DB9196F85F20092FC6F /* processing.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 5499477C196A3F3900BA3D87;
|
||||
remoteInfo = processing;
|
||||
};
|
||||
FAFB4FE718BC8E7D00315438 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = FAFB4FE218BC8E7C00315438 /* welsenc.xcodeproj */;
|
||||
@@ -56,6 +42,13 @@
|
||||
remoteGlobalIDString = 4CE443D518B722CD0017DF25;
|
||||
remoteInfo = common;
|
||||
};
|
||||
FAFB4FF918BC8E9A00315438 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = FAFB4FF418BC8E9A00315438 /* processing.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 4CE4443118B724B60017DF25;
|
||||
remoteInfo = processing;
|
||||
};
|
||||
FAFB4FFD18BC8EAA00315438 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = FAFB4FEB18BC8E8600315438 /* common.xcodeproj */;
|
||||
@@ -63,6 +56,13 @@
|
||||
remoteGlobalIDString = 4CE443D418B722CD0017DF25;
|
||||
remoteInfo = common;
|
||||
};
|
||||
FAFB4FFF18BC8EAF00315438 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = FAFB4FF418BC8E9A00315438 /* processing.xcodeproj */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 4CE4443018B724B60017DF25;
|
||||
remoteInfo = processing;
|
||||
};
|
||||
FAFB500118BC8EB200315438 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = FAFB4FE218BC8E7C00315438 /* welsenc.xcodeproj */;
|
||||
@@ -73,7 +73,6 @@
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
544F0DB9196F85F20092FC6F /* processing.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = processing.xcodeproj; path = ../../processing/processing.xcodeproj; sourceTree = "<group>"; };
|
||||
FAA3D9D218BD729500BCD52D /* welsenc_ios.cfg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = welsenc_ios.cfg; path = ../../../../../../testbin/welsenc_ios.cfg; sourceTree = "<group>"; };
|
||||
FAA3D9D718BD777100BCD52D /* CiscoVT2people_320x192_12fps.yuv */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = CiscoVT2people_320x192_12fps.yuv; path = ../../../../../../res/CiscoVT2people_320x192_12fps.yuv; sourceTree = "<group>"; };
|
||||
FAA3D9DC18BD8A5600BCD52D /* layer2.cfg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = layer2.cfg; path = ../../../../../../testbin/layer2.cfg; sourceTree = "<group>"; };
|
||||
@@ -94,6 +93,7 @@
|
||||
FAFB4FC318BC8DD700315438 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
|
||||
FAFB4FE218BC8E7C00315438 /* welsenc.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = welsenc.xcodeproj; path = ../welsenc/welsenc.xcodeproj; sourceTree = "<group>"; };
|
||||
FAFB4FEB18BC8E8600315438 /* common.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = common.xcodeproj; path = ../../common/common.xcodeproj; sourceTree = "<group>"; };
|
||||
FAFB4FF418BC8E9A00315438 /* processing.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = processing.xcodeproj; path = ../../../../processing/build/iOS/processing.xcodeproj; sourceTree = "<group>"; };
|
||||
FAFB500918BC8F6600315438 /* read_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = read_config.h; sourceTree = "<group>"; };
|
||||
FAFB500A18BC8F6C00315438 /* welsenc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = welsenc.cpp; sourceTree = "<group>"; };
|
||||
FAFB502E18BCA50900315438 /* read_config.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = read_config.cpp; path = ../../common/src/read_config.cpp; sourceTree = "<group>"; };
|
||||
@@ -104,8 +104,8 @@
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
544F0DC4196F86F50092FC6F /* libprocessing.a in Frameworks */,
|
||||
FAFB500518BC8F1500315438 /* libwelsenc.a in Frameworks */,
|
||||
FAFB500418BC8F1100315438 /* libprocessing.a in Frameworks */,
|
||||
FAFB500318BC8F0D00315438 /* libcommon.a in Frameworks */,
|
||||
FAFB4FAB18BC8DD700315438 /* CoreGraphics.framework in Frameworks */,
|
||||
FAFB4FAD18BC8DD700315438 /* UIKit.framework in Frameworks */,
|
||||
@@ -116,14 +116,6 @@
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
544F0DBA196F85F20092FC6F /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
544F0DC3196F86EF0092FC6F /* libprocessing.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FAFB4F9C18BC8DD700315438 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -144,7 +136,7 @@
|
||||
FAFB4FA718BC8DD700315438 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
544F0DB9196F85F20092FC6F /* processing.xcodeproj */,
|
||||
FAFB4FF418BC8E9A00315438 /* processing.xcodeproj */,
|
||||
FAFB4FEB18BC8E8600315438 /* common.xcodeproj */,
|
||||
FAFB4FE218BC8E7C00315438 /* welsenc.xcodeproj */,
|
||||
FAFB4FA818BC8DD700315438 /* Foundation.framework */,
|
||||
@@ -200,6 +192,14 @@
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FAFB4FF518BC8E9A00315438 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FAFB4FFA18BC8E9A00315438 /* libprocessing.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FAFB500618BC8F2800315438 /* console */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -242,8 +242,8 @@
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
544F0DC0196F86EF0092FC6F /* PBXTargetDependency */,
|
||||
FAFB500218BC8EB200315438 /* PBXTargetDependency */,
|
||||
FAFB500018BC8EAF00315438 /* PBXTargetDependency */,
|
||||
FAFB4FFE18BC8EAA00315438 /* PBXTargetDependency */,
|
||||
);
|
||||
name = encDemo;
|
||||
@@ -277,8 +277,8 @@
|
||||
ProjectRef = FAFB4FEB18BC8E8600315438 /* common.xcodeproj */;
|
||||
},
|
||||
{
|
||||
ProductGroup = 544F0DBA196F85F20092FC6F /* Products */;
|
||||
ProjectRef = 544F0DB9196F85F20092FC6F /* processing.xcodeproj */;
|
||||
ProductGroup = FAFB4FF518BC8E9A00315438 /* Products */;
|
||||
ProjectRef = FAFB4FF418BC8E9A00315438 /* processing.xcodeproj */;
|
||||
},
|
||||
{
|
||||
ProductGroup = FAFB4FE318BC8E7C00315438 /* Products */;
|
||||
@@ -293,13 +293,6 @@
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXReferenceProxy section */
|
||||
544F0DC3196F86EF0092FC6F /* libprocessing.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libprocessing.a;
|
||||
remoteRef = 544F0DC2196F86EF0092FC6F /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
FAFB4FE818BC8E7D00315438 /* libwelsenc.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
@@ -314,6 +307,13 @@
|
||||
remoteRef = FAFB4FF018BC8E8600315438 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
FAFB4FFA18BC8E9A00315438 /* libprocessing.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libprocessing.a;
|
||||
remoteRef = FAFB4FF918BC8E9A00315438 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
/* End PBXReferenceProxy section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
@@ -349,16 +349,16 @@
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
544F0DC0196F86EF0092FC6F /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = processing;
|
||||
targetProxy = 544F0DBF196F86EF0092FC6F /* PBXContainerItemProxy */;
|
||||
};
|
||||
FAFB4FFE18BC8EAA00315438 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = common;
|
||||
targetProxy = FAFB4FFD18BC8EAA00315438 /* PBXContainerItemProxy */;
|
||||
};
|
||||
FAFB500018BC8EAF00315438 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = processing;
|
||||
targetProxy = FAFB4FFF18BC8EAF00315438 /* PBXContainerItemProxy */;
|
||||
};
|
||||
FAFB500218BC8EB200315438 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = welsenc;
|
||||
@@ -426,7 +426,14 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"/Applications/Xcode\\ 5.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include",
|
||||
"\"$(SRCROOT)/../../../../api/svc\"",
|
||||
"\"$(SRCROOT)/../../../../processing/interface\"",
|
||||
"\"$(SRCROOT)/../../../../encoder/core/inc\"",
|
||||
);
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
@@ -459,7 +466,14 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"/Applications/Xcode\\ 5.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include",
|
||||
"\"$(SRCROOT)/../../../../api/svc\"",
|
||||
"\"$(SRCROOT)/../../../../processing/interface\"",
|
||||
"\"$(SRCROOT)/../../../../encoder/core/inc\"",
|
||||
);
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
@@ -474,10 +488,9 @@
|
||||
GCC_PREPROCESSOR_DEFINITIONS = APPLE_IOS;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"/Applications/Xcode\\ 5.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include",
|
||||
"\"$(SRCROOT)/../../../../api/svc\"",
|
||||
"\"$(SRCROOT)/../../../../common/inc\"",
|
||||
"\"$(SRCROOT)/../../../../processing/interface\"",
|
||||
"\"$(SRCROOT)/../../../../encoder/core/inc\"",
|
||||
);
|
||||
INFOPLIST_FILE = "encDemo/encDemo-Info.plist";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
@@ -493,10 +506,9 @@
|
||||
GCC_PREPROCESSOR_DEFINITIONS = APPLE_IOS;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"/Applications/Xcode\\ 5.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include",
|
||||
"\"$(SRCROOT)/../../../../api/svc\"",
|
||||
"\"$(SRCROOT)/../../../../common/inc\"",
|
||||
"\"$(SRCROOT)/../../../../processing/interface\"",
|
||||
"\"$(SRCROOT)/../../../../encoder/core/inc\"",
|
||||
);
|
||||
INFOPLIST_FILE = "encDemo/encDemo-Info.plist";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
|
||||
@@ -70,8 +70,6 @@ extern int EncMain(int argc, char **argv);
|
||||
[bsfile UTF8String],
|
||||
"-numl",
|
||||
"1",
|
||||
"-lconfig",
|
||||
"0",
|
||||
[dlayerCfg UTF8String],
|
||||
};
|
||||
NSLog(@"WELS_INFO: enc config file: %@", encCfg);
|
||||
|
||||
@@ -35,141 +35,9 @@
|
||||
|
||||
#import "AppDelegate.h"
|
||||
|
||||
extern int EncMain (int argc, char** argv);
|
||||
|
||||
//redirect NSLog and stdout to logfile
|
||||
void redirectLogToDocumentFile() {
|
||||
NSArray* path = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
|
||||
NSString* document = [path objectAtIndex:0];
|
||||
NSString* fileName = [NSString stringWithFormat:@"encPerf.log"];
|
||||
NSString* logPath = [document stringByAppendingPathComponent:fileName];
|
||||
|
||||
NSFileManager* defaultManager = [NSFileManager defaultManager];
|
||||
[defaultManager removeItemAtPath:logPath error:nil];
|
||||
|
||||
freopen ([logPath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stdout);
|
||||
freopen ([logPath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stderr);
|
||||
}
|
||||
|
||||
//to judge whether the path is needed case path
|
||||
bool IsOneDeptDir (NSString* path) {
|
||||
BOOL isDir = NO;
|
||||
BOOL isOneDeptDir = NO;
|
||||
NSFileManager* fileManager = [NSFileManager defaultManager];
|
||||
NSArray* dirPathArray = [fileManager subpathsAtPath:path];
|
||||
if ([dirPathArray count] == 0 || dirPathArray == nil)
|
||||
isOneDeptDir = NO;
|
||||
else {
|
||||
for (NSString * dirPath in dirPathArray) {
|
||||
NSString* tmpPath = [path stringByAppendingString:@"/"];
|
||||
tmpPath = [tmpPath stringByAppendingString:dirPath];
|
||||
[fileManager fileExistsAtPath:tmpPath isDirectory:&isDir];
|
||||
if (isDir) {
|
||||
isOneDeptDir = YES;
|
||||
break;
|
||||
}
|
||||
int main(int argc, char * argv[])
|
||||
{
|
||||
@autoreleasepool {
|
||||
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
|
||||
}
|
||||
}
|
||||
return isOneDeptDir;
|
||||
}
|
||||
|
||||
//run auto test to get encoder performance
|
||||
int AutoTestEnc() {
|
||||
NSString* document = [[NSString alloc] init];
|
||||
NSArray* paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
|
||||
if ([paths count] == 0) {
|
||||
NSLog (@"could not find document path");
|
||||
return 2;
|
||||
}
|
||||
document = [paths objectAtIndex:0];
|
||||
|
||||
NSString* encFilePath = [document stringByAppendingString:@"/EncoderPerfTestRes"];
|
||||
NSFileManager* manage = [NSFileManager defaultManager];
|
||||
|
||||
NSArray* cases = [manage subpathsAtPath:encFilePath];
|
||||
if (cases == nil) {
|
||||
NSLog (@"could not find any test case under encoderperftest");
|
||||
return 1;
|
||||
|
||||
}
|
||||
redirectLogToDocumentFile();
|
||||
NSMutableArray* dirArray = [[NSMutableArray alloc] init];
|
||||
for (NSString * casePath in cases) {
|
||||
|
||||
NSString* path = [encFilePath stringByAppendingPathComponent:casePath];
|
||||
if (IsOneDeptDir (path)) {
|
||||
[dirArray addObject:casePath];
|
||||
}
|
||||
|
||||
}
|
||||
for (int caseNO = 0; caseNO < [dirArray count]; caseNO++) {
|
||||
|
||||
NSString* caseName = [dirArray objectAtIndex:caseNO];
|
||||
NSString* caseFilePath = [encFilePath stringByAppendingString:@"/"];
|
||||
caseFilePath = [caseFilePath stringByAppendingString:caseName];
|
||||
[manage changeCurrentDirectoryPath:[caseFilePath stringByExpandingTildeInPath]];
|
||||
|
||||
NSString* welscfg = [caseFilePath stringByAppendingString:@"/welsenc.cfg"];
|
||||
NSString* layercfg = [caseFilePath stringByAppendingString:@"/layer2.cfg"];
|
||||
NSString* yuvFilePath = [caseFilePath stringByAppendingString:@"/yuv"];
|
||||
NSString* bitFilePath = [caseFilePath stringByAppendingString:@"/bit"];
|
||||
[manage removeItemAtPath:bitFilePath error:nil];
|
||||
[manage createDirectoryAtPath:bitFilePath withIntermediateDirectories:YES attributes:nil error:nil];
|
||||
|
||||
|
||||
NSArray* files = [manage subpathsAtPath:yuvFilePath];
|
||||
|
||||
[manage changeCurrentDirectoryPath:[bitFilePath stringByExpandingTildeInPath]];
|
||||
|
||||
for (int i = 0; i < [files count]; i++) {
|
||||
NSString* yuvFileName = [files objectAtIndex:i];
|
||||
NSString* bitFileName = [yuvFileName stringByAppendingString:@".264"];
|
||||
|
||||
NSString* bitFileNamePath = [bitFilePath stringByAppendingString:@"/"];
|
||||
bitFileName = [bitFileNamePath stringByAppendingString:bitFileName];
|
||||
|
||||
|
||||
[manage createFileAtPath:bitFileName contents:nil attributes:nil];
|
||||
[manage changeCurrentDirectoryPath:[yuvFilePath stringByExpandingTildeInPath]];
|
||||
const char* argvv[] = {
|
||||
"dummy",
|
||||
[welscfg UTF8String],
|
||||
"-org",
|
||||
[yuvFileName UTF8String],
|
||||
"-bf",
|
||||
[bitFileName UTF8String],
|
||||
"-numl",
|
||||
"1",
|
||||
"-lconfig",
|
||||
"0",
|
||||
[layercfg UTF8String]
|
||||
};
|
||||
|
||||
NSLog (@"WELS_INFO: enc config file: %@", welscfg);
|
||||
NSLog (@"WELS_INFO: enc yuv file: %@", yuvFileName);
|
||||
EncMain (sizeof (argvv) / sizeof (argvv[0]), (char**)&argvv[0]);
|
||||
fflush (stdout); // flush the content of stdout instantly
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int main (int argc, char* argv[]) {
|
||||
|
||||
|
||||
//***For auto testing of encoder performance, call auto test here, if you not want to do auto test, you can comment it manualy
|
||||
|
||||
if (AutoTestEnc() == 0)
|
||||
NSLog (@"Auto testing running sucessfully");
|
||||
else
|
||||
NSLog (@"Auto testing running failed");
|
||||
abort();
|
||||
//************************
|
||||
@autoreleasepool {
|
||||
return UIApplicationMain (argc, argv, nil, NSStringFromClass ([AppDelegate class]));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,8 +45,6 @@
|
||||
4CE4472918BC605C0017DF25 /* svc_set_mb_syn_cavlc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE446F818BC605C0017DF25 /* svc_set_mb_syn_cavlc.cpp */; };
|
||||
4CE4472B18BC605C0017DF25 /* wels_preprocess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE446FA18BC605C0017DF25 /* wels_preprocess.cpp */; };
|
||||
4CE4472E18BC605C0017DF25 /* welsEncoderExt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4470618BC605C0017DF25 /* welsEncoderExt.cpp */; };
|
||||
6CA38DA31991CACE003EAAE0 /* svc_motion_estimation.S in Sources */ = {isa = PBXBuildFile; fileRef = 6CA38DA21991CACE003EAAE0 /* svc_motion_estimation.S */; };
|
||||
6CA38DA51991D31A003EAAE0 /* svc_motion_estimation_aarch64_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 6CA38DA41991D31A003EAAE0 /* svc_motion_estimation_aarch64_neon.S */; };
|
||||
9AED665019469FC1009A3567 /* welsCodecTrace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AED664C19469FC1009A3567 /* welsCodecTrace.cpp */; };
|
||||
9AED66661946A2B3009A3567 /* utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AED66651946A2B3009A3567 /* utils.cpp */; };
|
||||
F5617A50196A833A006E2B20 /* reconstruct_aarch64_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = F5617A4F196A833A006E2B20 /* reconstruct_aarch64_neon.S */; };
|
||||
@@ -156,8 +154,6 @@
|
||||
4CE446FE18BC605C0017DF25 /* welsEncoderExt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = welsEncoderExt.h; sourceTree = "<group>"; };
|
||||
4CE4470418BC605C0017DF25 /* wels_enc_export.def */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = wels_enc_export.def; sourceTree = "<group>"; };
|
||||
4CE4470618BC605C0017DF25 /* welsEncoderExt.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = welsEncoderExt.cpp; sourceTree = "<group>"; };
|
||||
6CA38DA21991CACE003EAAE0 /* svc_motion_estimation.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = svc_motion_estimation.S; sourceTree = "<group>"; };
|
||||
6CA38DA41991D31A003EAAE0 /* svc_motion_estimation_aarch64_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = svc_motion_estimation_aarch64_neon.S; path = arm64/svc_motion_estimation_aarch64_neon.S; sourceTree = "<group>"; };
|
||||
9AED664819469FAF009A3567 /* welsCodecTrace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = welsCodecTrace.h; path = ../../../common/inc/welsCodecTrace.h; sourceTree = "<group>"; };
|
||||
9AED664C19469FC1009A3567 /* welsCodecTrace.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = welsCodecTrace.cpp; path = ../../../common/src/welsCodecTrace.cpp; sourceTree = "<group>"; };
|
||||
9AED66651946A2B3009A3567 /* utils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = utils.cpp; path = ../../../common/src/utils.cpp; sourceTree = "<group>"; };
|
||||
@@ -181,7 +177,6 @@
|
||||
4C34066418C57D0400DFA14A /* arm */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
6CA38DA21991CACE003EAAE0 /* svc_motion_estimation.S */,
|
||||
4C34066618C57D0400DFA14A /* intra_pred_neon.S */,
|
||||
4C34066718C57D0400DFA14A /* intra_pred_sad_3_opt_neon.S */,
|
||||
4C34066918C57D0400DFA14A /* memory_neon.S */,
|
||||
@@ -194,7 +189,6 @@
|
||||
4CB8F2B219235FAC005D6386 /* arm64 */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
6CA38DA41991D31A003EAAE0 /* svc_motion_estimation_aarch64_neon.S */,
|
||||
F5BE8004196B913200ED02ED /* memory_aarch64_neon.S */,
|
||||
F5617A4F196A833A006E2B20 /* reconstruct_aarch64_neon.S */,
|
||||
4C23BC5F195A77E0003B81FC /* intra_pred_sad_3_opt_aarch64_neon.S */,
|
||||
@@ -429,7 +423,6 @@
|
||||
4CE4471D18BC605C0017DF25 /* property.cpp in Sources */,
|
||||
4CE4471018BC605C0017DF25 /* decode_mb_aux.cpp in Sources */,
|
||||
4CE4472018BC605C0017DF25 /* sample.cpp in Sources */,
|
||||
6CA38DA31991CACE003EAAE0 /* svc_motion_estimation.S in Sources */,
|
||||
4CE4471318BC605C0017DF25 /* encoder_data_tables.cpp in Sources */,
|
||||
4C34067118C57D0400DFA14A /* pixel_neon.S in Sources */,
|
||||
9AED665019469FC1009A3567 /* welsCodecTrace.cpp in Sources */,
|
||||
@@ -462,7 +455,6 @@
|
||||
4CE4471218BC605C0017DF25 /* encoder.cpp in Sources */,
|
||||
4CE4471618BC605C0017DF25 /* get_intra_predictor.cpp in Sources */,
|
||||
4CE4472E18BC605C0017DF25 /* welsEncoderExt.cpp in Sources */,
|
||||
6CA38DA51991D31A003EAAE0 /* svc_motion_estimation_aarch64_neon.S in Sources */,
|
||||
4CE4471418BC605C0017DF25 /* encoder_ext.cpp in Sources */,
|
||||
4C34067218C57D0400DFA14A /* reconstruct_neon.S in Sources */,
|
||||
);
|
||||
@@ -502,7 +494,7 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
};
|
||||
@@ -533,7 +525,7 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||
SDKROOT = iphoneos;
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
@@ -563,13 +555,14 @@
|
||||
);
|
||||
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*]" = APPLE_IOS;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(SRCROOT)/../../../../common/inc",
|
||||
"$(SRCROOT)/../../../../processing/interface",
|
||||
"$(SRCROOT)/../../../../api/svc",
|
||||
"$(SRCROOT)/../../../../common/arm",
|
||||
"$(SRCROOT)/../../../../common/arm64",
|
||||
);
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.1;
|
||||
ONLY_ACTIVE_ARCH = NO;
|
||||
OTHER_LDFLAGS = "-ObjC";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
@@ -600,13 +593,13 @@
|
||||
);
|
||||
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*]" = APPLE_IOS;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(SRCROOT)/../../../../common/inc",
|
||||
"$(SRCROOT)/../../../../processing/interface",
|
||||
"$(SRCROOT)/../../../../api/svc",
|
||||
"$(SRCROOT)/../../../../common/arm",
|
||||
"$(SRCROOT)/../../../../common/arm64",
|
||||
);
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.1;
|
||||
OTHER_LDFLAGS = "-ObjC";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
|
||||
@@ -1,356 +0,0 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXAggregateTarget section */
|
||||
54D5364C196CC907005442F9 /* openh264 */ = {
|
||||
isa = PBXAggregateTarget;
|
||||
buildConfigurationList = 54D5364D196CC907005442F9 /* Build configuration list for PBXAggregateTarget "openh264" */;
|
||||
buildPhases = (
|
||||
);
|
||||
dependencies = (
|
||||
54D53651196CCC40005442F9 /* PBXTargetDependency */,
|
||||
54D53653196CCC40005442F9 /* PBXTargetDependency */,
|
||||
54D53655196CCC40005442F9 /* PBXTargetDependency */,
|
||||
54D53657196CCC40005442F9 /* PBXTargetDependency */,
|
||||
);
|
||||
name = openh264;
|
||||
productName = openh264;
|
||||
};
|
||||
/* End PBXAggregateTarget section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
54D53638196CC8CB005442F9 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 54D53634196CC8CB005442F9 /* common.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 4CE443D518B722CD0017DF25;
|
||||
remoteInfo = common;
|
||||
};
|
||||
54D5363E196CC8DA005442F9 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 54D5363A196CC8DA005442F9 /* welsdec.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 4CE4427918B6FC360017DF25;
|
||||
remoteInfo = welsdec;
|
||||
};
|
||||
54D53644196CC8E6005442F9 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 54D53640196CC8E6005442F9 /* welsenc.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 4CE4431118B6FFA00017DF25;
|
||||
remoteInfo = welsenc;
|
||||
};
|
||||
54D5364A196CC8F3005442F9 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 54D53646196CC8F3005442F9 /* processing.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 5499477C196A3F3900BA3D87;
|
||||
remoteInfo = processing;
|
||||
};
|
||||
54D53650196CCC40005442F9 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 54D53646196CC8F3005442F9 /* processing.xcodeproj */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 5499477B196A3F3900BA3D87;
|
||||
remoteInfo = processing;
|
||||
};
|
||||
54D53652196CCC40005442F9 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 54D53640196CC8E6005442F9 /* welsenc.xcodeproj */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 4CE4431018B6FFA00017DF25;
|
||||
remoteInfo = welsenc;
|
||||
};
|
||||
54D53654196CCC40005442F9 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 54D5363A196CC8DA005442F9 /* welsdec.xcodeproj */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 4CE4427818B6FC360017DF25;
|
||||
remoteInfo = welsdec;
|
||||
};
|
||||
54D53656196CCC40005442F9 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 54D53634196CC8CB005442F9 /* common.xcodeproj */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 4CE443D418B722CD0017DF25;
|
||||
remoteInfo = common;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
54D53634196CC8CB005442F9 /* common.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = common.xcodeproj; path = ../common/common.xcodeproj; sourceTree = "<group>"; };
|
||||
54D5363A196CC8DA005442F9 /* welsdec.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = welsdec.xcodeproj; path = ../dec/welsdec/welsdec.xcodeproj; sourceTree = "<group>"; };
|
||||
54D53640196CC8E6005442F9 /* welsenc.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = welsenc.xcodeproj; path = ../enc/welsenc/welsenc.xcodeproj; sourceTree = "<group>"; };
|
||||
54D53646196CC8F3005442F9 /* processing.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = processing.xcodeproj; path = ../processing/processing.xcodeproj; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
54D53602196CC76D005442F9 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
54D5360D196CC76D005442F9 /* Frameworks */,
|
||||
54D5360C196CC76D005442F9 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
54D5360C196CC76D005442F9 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
54D5360D196CC76D005442F9 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
54D53646196CC8F3005442F9 /* processing.xcodeproj */,
|
||||
54D53640196CC8E6005442F9 /* welsenc.xcodeproj */,
|
||||
54D5363A196CC8DA005442F9 /* welsdec.xcodeproj */,
|
||||
54D53634196CC8CB005442F9 /* common.xcodeproj */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
54D53635196CC8CB005442F9 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
54D53639196CC8CB005442F9 /* libcommon.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
54D5363B196CC8DA005442F9 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
54D5363F196CC8DA005442F9 /* libwelsdec.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
54D53641196CC8E6005442F9 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
54D53645196CC8E6005442F9 /* libwelsenc.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
54D53647196CC8F3005442F9 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
54D5364B196CC8F3005442F9 /* libprocessing.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
54D53603196CC76D005442F9 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0510;
|
||||
ORGANIZATIONNAME = com.cisco;
|
||||
};
|
||||
buildConfigurationList = 54D53606196CC76D005442F9 /* Build configuration list for PBXProject "openh264" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
);
|
||||
mainGroup = 54D53602196CC76D005442F9;
|
||||
productRefGroup = 54D5360C196CC76D005442F9 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectReferences = (
|
||||
{
|
||||
ProductGroup = 54D53635196CC8CB005442F9 /* Products */;
|
||||
ProjectRef = 54D53634196CC8CB005442F9 /* common.xcodeproj */;
|
||||
},
|
||||
{
|
||||
ProductGroup = 54D53647196CC8F3005442F9 /* Products */;
|
||||
ProjectRef = 54D53646196CC8F3005442F9 /* processing.xcodeproj */;
|
||||
},
|
||||
{
|
||||
ProductGroup = 54D5363B196CC8DA005442F9 /* Products */;
|
||||
ProjectRef = 54D5363A196CC8DA005442F9 /* welsdec.xcodeproj */;
|
||||
},
|
||||
{
|
||||
ProductGroup = 54D53641196CC8E6005442F9 /* Products */;
|
||||
ProjectRef = 54D53640196CC8E6005442F9 /* welsenc.xcodeproj */;
|
||||
},
|
||||
);
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
54D5364C196CC907005442F9 /* openh264 */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXReferenceProxy section */
|
||||
54D53639196CC8CB005442F9 /* libcommon.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libcommon.a;
|
||||
remoteRef = 54D53638196CC8CB005442F9 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
54D5363F196CC8DA005442F9 /* libwelsdec.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libwelsdec.a;
|
||||
remoteRef = 54D5363E196CC8DA005442F9 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
54D53645196CC8E6005442F9 /* libwelsenc.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libwelsenc.a;
|
||||
remoteRef = 54D53644196CC8E6005442F9 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
54D5364B196CC8F3005442F9 /* libprocessing.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libprocessing.a;
|
||||
remoteRef = 54D5364A196CC8F3005442F9 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
/* End PBXReferenceProxy section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
54D53651196CCC40005442F9 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = processing;
|
||||
targetProxy = 54D53650196CCC40005442F9 /* PBXContainerItemProxy */;
|
||||
};
|
||||
54D53653196CCC40005442F9 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = welsenc;
|
||||
targetProxy = 54D53652196CCC40005442F9 /* PBXContainerItemProxy */;
|
||||
};
|
||||
54D53655196CCC40005442F9 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = welsdec;
|
||||
targetProxy = 54D53654196CCC40005442F9 /* PBXContainerItemProxy */;
|
||||
};
|
||||
54D53657196CCC40005442F9 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = common;
|
||||
targetProxy = 54D53656196CCC40005442F9 /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
54D5362C196CC76D005442F9 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
ONLY_ACTIVE_ARCH = NO;
|
||||
SDKROOT = iphoneos;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
54D5362D196CC76D005442F9 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
SDKROOT = iphoneos;
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
54D5364E196CC907005442F9 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
54D5364F196CC907005442F9 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
54D53606196CC76D005442F9 /* Build configuration list for PBXProject "openh264" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
54D5362C196CC76D005442F9 /* Debug */,
|
||||
54D5362D196CC76D005442F9 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
54D5364D196CC907005442F9 /* Build configuration list for PBXAggregateTarget "openh264" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
54D5364E196CC907005442F9 /* Debug */,
|
||||
54D5364F196CC907005442F9 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 54D53603196CC76D005442F9 /* Project object */;
|
||||
}
|
||||
@@ -1,542 +0,0 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
4CC6094F197E009D00BE8B8B /* down_sample_aarch64_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6094E197E009D00BE8B8B /* down_sample_aarch64_neon.S */; };
|
||||
4CC6095A1980F34F00BE8B8B /* vaa_calc_aarch64_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 4CC609591980F34F00BE8B8B /* vaa_calc_aarch64_neon.S */; };
|
||||
4CD0FE36199082AD00375C9A /* pixel_sad_aarch64_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 4CD0FE35199082AD00375C9A /* pixel_sad_aarch64_neon.S */; };
|
||||
54994780196A3F3900BA3D87 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5499477F196A3F3900BA3D87 /* Foundation.framework */; };
|
||||
549947DF196A3FB400BA3D87 /* AdaptiveQuantization.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947A9196A3FB400BA3D87 /* AdaptiveQuantization.cpp */; };
|
||||
549947E0196A3FB400BA3D87 /* adaptive_quantization.S in Sources */ = {isa = PBXBuildFile; fileRef = 549947AC196A3FB400BA3D87 /* adaptive_quantization.S */; };
|
||||
549947E1196A3FB400BA3D87 /* down_sample_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 549947AD196A3FB400BA3D87 /* down_sample_neon.S */; };
|
||||
549947E2196A3FB400BA3D87 /* pixel_sad_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 549947AE196A3FB400BA3D87 /* pixel_sad_neon.S */; };
|
||||
549947E3196A3FB400BA3D87 /* vaa_calc_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 549947AF196A3FB400BA3D87 /* vaa_calc_neon.S */; };
|
||||
549947E4196A3FB400BA3D87 /* BackgroundDetection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947B1196A3FB400BA3D87 /* BackgroundDetection.cpp */; };
|
||||
549947E6196A3FB400BA3D87 /* memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947B6196A3FB400BA3D87 /* memory.cpp */; };
|
||||
549947E7196A3FB400BA3D87 /* WelsFrameWork.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947BB196A3FB400BA3D87 /* WelsFrameWork.cpp */; };
|
||||
549947E8196A3FB400BA3D87 /* WelsFrameWorkEx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947BD196A3FB400BA3D87 /* WelsFrameWorkEx.cpp */; };
|
||||
549947E9196A3FB400BA3D87 /* ComplexityAnalysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947C1196A3FB400BA3D87 /* ComplexityAnalysis.cpp */; };
|
||||
549947EA196A3FB400BA3D87 /* denoise.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947C4196A3FB400BA3D87 /* denoise.cpp */; };
|
||||
549947EB196A3FB400BA3D87 /* denoise_filter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947C6196A3FB400BA3D87 /* denoise_filter.cpp */; };
|
||||
549947EC196A3FB400BA3D87 /* downsample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947C8196A3FB400BA3D87 /* downsample.cpp */; };
|
||||
549947ED196A3FB400BA3D87 /* downsamplefuncs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947CA196A3FB400BA3D87 /* downsamplefuncs.cpp */; };
|
||||
549947EE196A3FB400BA3D87 /* imagerotate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947CC196A3FB400BA3D87 /* imagerotate.cpp */; };
|
||||
549947EF196A3FB400BA3D87 /* imagerotatefuncs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947CE196A3FB400BA3D87 /* imagerotatefuncs.cpp */; };
|
||||
549947F0196A3FB400BA3D87 /* SceneChangeDetection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947D0196A3FB400BA3D87 /* SceneChangeDetection.cpp */; };
|
||||
549947F1196A3FB400BA3D87 /* ScrollDetection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947D3196A3FB400BA3D87 /* ScrollDetection.cpp */; };
|
||||
549947F2196A3FB400BA3D87 /* ScrollDetectionFuncs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947D5196A3FB400BA3D87 /* ScrollDetectionFuncs.cpp */; };
|
||||
549947F3196A3FB400BA3D87 /* vaacalcfuncs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947D8196A3FB400BA3D87 /* vaacalcfuncs.cpp */; };
|
||||
549947F4196A3FB400BA3D87 /* vaacalculation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947D9196A3FB400BA3D87 /* vaacalculation.cpp */; };
|
||||
6C749B78197E2A2000A111F9 /* adaptive_quantization_aarch64_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 6C749B77197E2A2000A111F9 /* adaptive_quantization_aarch64_neon.S */; };
|
||||
F791965B19D3BF6B00F60C6B /* intra_pred_common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F791965A19D3BF6B00F60C6B /* intra_pred_common.cpp */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
5499477A196A3F3900BA3D87 /* CopyFiles */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "include/$(PRODUCT_NAME)";
|
||||
dstSubfolderSpec = 16;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
4CC6094E197E009D00BE8B8B /* down_sample_aarch64_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = down_sample_aarch64_neon.S; path = arm64/down_sample_aarch64_neon.S; sourceTree = "<group>"; };
|
||||
4CC609591980F34F00BE8B8B /* vaa_calc_aarch64_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = vaa_calc_aarch64_neon.S; path = arm64/vaa_calc_aarch64_neon.S; sourceTree = "<group>"; };
|
||||
4CD0FE35199082AD00375C9A /* pixel_sad_aarch64_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = pixel_sad_aarch64_neon.S; path = arm64/pixel_sad_aarch64_neon.S; sourceTree = "<group>"; };
|
||||
5499477C196A3F3900BA3D87 /* libprocessing.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libprocessing.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
5499477F196A3F3900BA3D87 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
54994790196A3F3900BA3D87 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; };
|
||||
549947A6196A3FB400BA3D87 /* IWelsVP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IWelsVP.h; sourceTree = "<group>"; };
|
||||
549947A9196A3FB400BA3D87 /* AdaptiveQuantization.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AdaptiveQuantization.cpp; sourceTree = "<group>"; };
|
||||
549947AA196A3FB400BA3D87 /* AdaptiveQuantization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdaptiveQuantization.h; sourceTree = "<group>"; };
|
||||
549947AC196A3FB400BA3D87 /* adaptive_quantization.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = adaptive_quantization.S; sourceTree = "<group>"; };
|
||||
549947AD196A3FB400BA3D87 /* down_sample_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = down_sample_neon.S; sourceTree = "<group>"; };
|
||||
549947AE196A3FB400BA3D87 /* pixel_sad_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = pixel_sad_neon.S; sourceTree = "<group>"; };
|
||||
549947AF196A3FB400BA3D87 /* vaa_calc_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = vaa_calc_neon.S; sourceTree = "<group>"; };
|
||||
549947B1196A3FB400BA3D87 /* BackgroundDetection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BackgroundDetection.cpp; sourceTree = "<group>"; };
|
||||
549947B2196A3FB400BA3D87 /* BackgroundDetection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BackgroundDetection.h; sourceTree = "<group>"; };
|
||||
549947B5196A3FB400BA3D87 /* common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = "<group>"; };
|
||||
549947B6196A3FB400BA3D87 /* memory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = memory.cpp; sourceTree = "<group>"; };
|
||||
549947B7196A3FB400BA3D87 /* memory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = memory.h; sourceTree = "<group>"; };
|
||||
549947B8196A3FB400BA3D87 /* resource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = resource.h; sourceTree = "<group>"; };
|
||||
549947B9196A3FB400BA3D87 /* typedef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = typedef.h; sourceTree = "<group>"; };
|
||||
549947BA196A3FB400BA3D87 /* util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = util.h; sourceTree = "<group>"; };
|
||||
549947BB196A3FB400BA3D87 /* WelsFrameWork.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WelsFrameWork.cpp; sourceTree = "<group>"; };
|
||||
549947BC196A3FB400BA3D87 /* WelsFrameWork.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WelsFrameWork.h; sourceTree = "<group>"; };
|
||||
549947BD196A3FB400BA3D87 /* WelsFrameWorkEx.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WelsFrameWorkEx.cpp; sourceTree = "<group>"; };
|
||||
549947BE196A3FB400BA3D87 /* WelsVP.def */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WelsVP.def; sourceTree = "<group>"; };
|
||||
549947BF196A3FB400BA3D87 /* WelsVP.rc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WelsVP.rc; sourceTree = "<group>"; };
|
||||
549947C1196A3FB400BA3D87 /* ComplexityAnalysis.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ComplexityAnalysis.cpp; sourceTree = "<group>"; };
|
||||
549947C2196A3FB400BA3D87 /* ComplexityAnalysis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ComplexityAnalysis.h; sourceTree = "<group>"; };
|
||||
549947C4196A3FB400BA3D87 /* denoise.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = denoise.cpp; sourceTree = "<group>"; };
|
||||
549947C5196A3FB400BA3D87 /* denoise.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = denoise.h; sourceTree = "<group>"; };
|
||||
549947C6196A3FB400BA3D87 /* denoise_filter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = denoise_filter.cpp; sourceTree = "<group>"; };
|
||||
549947C8196A3FB400BA3D87 /* downsample.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = downsample.cpp; sourceTree = "<group>"; };
|
||||
549947C9196A3FB400BA3D87 /* downsample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = downsample.h; sourceTree = "<group>"; };
|
||||
549947CA196A3FB400BA3D87 /* downsamplefuncs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = downsamplefuncs.cpp; sourceTree = "<group>"; };
|
||||
549947CC196A3FB400BA3D87 /* imagerotate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = imagerotate.cpp; sourceTree = "<group>"; };
|
||||
549947CD196A3FB400BA3D87 /* imagerotate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = imagerotate.h; sourceTree = "<group>"; };
|
||||
549947CE196A3FB400BA3D87 /* imagerotatefuncs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = imagerotatefuncs.cpp; sourceTree = "<group>"; };
|
||||
549947D0196A3FB400BA3D87 /* SceneChangeDetection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SceneChangeDetection.cpp; sourceTree = "<group>"; };
|
||||
549947D1196A3FB400BA3D87 /* SceneChangeDetection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SceneChangeDetection.h; sourceTree = "<group>"; };
|
||||
549947D3196A3FB400BA3D87 /* ScrollDetection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollDetection.cpp; sourceTree = "<group>"; };
|
||||
549947D4196A3FB400BA3D87 /* ScrollDetection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollDetection.h; sourceTree = "<group>"; };
|
||||
549947D5196A3FB400BA3D87 /* ScrollDetectionFuncs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollDetectionFuncs.cpp; sourceTree = "<group>"; };
|
||||
549947D6196A3FB400BA3D87 /* ScrollDetectionFuncs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollDetectionFuncs.h; sourceTree = "<group>"; };
|
||||
549947D8196A3FB400BA3D87 /* vaacalcfuncs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vaacalcfuncs.cpp; sourceTree = "<group>"; };
|
||||
549947D9196A3FB400BA3D87 /* vaacalculation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vaacalculation.cpp; sourceTree = "<group>"; };
|
||||
549947DA196A3FB400BA3D87 /* vaacalculation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vaacalculation.h; sourceTree = "<group>"; };
|
||||
6C749B77197E2A2000A111F9 /* adaptive_quantization_aarch64_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = adaptive_quantization_aarch64_neon.S; path = arm64/adaptive_quantization_aarch64_neon.S; sourceTree = "<group>"; };
|
||||
F791965A19D3BF6B00F60C6B /* intra_pred_common.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = intra_pred_common.cpp; path = ../../../common/src/intra_pred_common.cpp; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
54994779196A3F3900BA3D87 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
54994780196A3F3900BA3D87 /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
4CC6094D197E008B00BE8B8B /* arm64 */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4CD0FE35199082AD00375C9A /* pixel_sad_aarch64_neon.S */,
|
||||
6C749B77197E2A2000A111F9 /* adaptive_quantization_aarch64_neon.S */,
|
||||
4CC609591980F34F00BE8B8B /* vaa_calc_aarch64_neon.S */,
|
||||
4CC6094E197E009D00BE8B8B /* down_sample_aarch64_neon.S */,
|
||||
);
|
||||
name = arm64;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
54994773196A3F3900BA3D87 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
549947A5196A3FB400BA3D87 /* interface */,
|
||||
549947A7196A3FB400BA3D87 /* src */,
|
||||
5499477E196A3F3900BA3D87 /* Frameworks */,
|
||||
5499477D196A3F3900BA3D87 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5499477D196A3F3900BA3D87 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5499477C196A3F3900BA3D87 /* libprocessing.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5499477E196A3F3900BA3D87 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5499477F196A3F3900BA3D87 /* Foundation.framework */,
|
||||
54994790196A3F3900BA3D87 /* UIKit.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
549947A5196A3FB400BA3D87 /* interface */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
549947A6196A3FB400BA3D87 /* IWelsVP.h */,
|
||||
);
|
||||
name = interface;
|
||||
path = ../../../processing/interface;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
549947A7196A3FB400BA3D87 /* src */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4CC6094D197E008B00BE8B8B /* arm64 */,
|
||||
549947A8196A3FB400BA3D87 /* adaptivequantization */,
|
||||
549947AB196A3FB400BA3D87 /* arm */,
|
||||
549947B0196A3FB400BA3D87 /* backgrounddetection */,
|
||||
549947B3196A3FB400BA3D87 /* common */,
|
||||
549947C0196A3FB400BA3D87 /* complexityanalysis */,
|
||||
549947C3196A3FB400BA3D87 /* denoise */,
|
||||
549947C7196A3FB400BA3D87 /* downsample */,
|
||||
549947CB196A3FB400BA3D87 /* imagerotate */,
|
||||
549947CF196A3FB400BA3D87 /* scenechangedetection */,
|
||||
549947D2196A3FB400BA3D87 /* scrolldetection */,
|
||||
549947D7196A3FB400BA3D87 /* vaacalc */,
|
||||
);
|
||||
name = src;
|
||||
path = ../../../processing/src;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
549947A8196A3FB400BA3D87 /* adaptivequantization */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
549947A9196A3FB400BA3D87 /* AdaptiveQuantization.cpp */,
|
||||
549947AA196A3FB400BA3D87 /* AdaptiveQuantization.h */,
|
||||
);
|
||||
path = adaptivequantization;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
549947AB196A3FB400BA3D87 /* arm */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
549947AC196A3FB400BA3D87 /* adaptive_quantization.S */,
|
||||
549947AD196A3FB400BA3D87 /* down_sample_neon.S */,
|
||||
549947AE196A3FB400BA3D87 /* pixel_sad_neon.S */,
|
||||
549947AF196A3FB400BA3D87 /* vaa_calc_neon.S */,
|
||||
);
|
||||
path = arm;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
549947B0196A3FB400BA3D87 /* backgrounddetection */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
549947B1196A3FB400BA3D87 /* BackgroundDetection.cpp */,
|
||||
549947B2196A3FB400BA3D87 /* BackgroundDetection.h */,
|
||||
);
|
||||
path = backgrounddetection;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
549947B3196A3FB400BA3D87 /* common */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F791965A19D3BF6B00F60C6B /* intra_pred_common.cpp */,
|
||||
549947B5196A3FB400BA3D87 /* common.h */,
|
||||
549947B6196A3FB400BA3D87 /* memory.cpp */,
|
||||
549947B7196A3FB400BA3D87 /* memory.h */,
|
||||
549947B8196A3FB400BA3D87 /* resource.h */,
|
||||
549947B9196A3FB400BA3D87 /* typedef.h */,
|
||||
549947BA196A3FB400BA3D87 /* util.h */,
|
||||
549947BB196A3FB400BA3D87 /* WelsFrameWork.cpp */,
|
||||
549947BC196A3FB400BA3D87 /* WelsFrameWork.h */,
|
||||
549947BD196A3FB400BA3D87 /* WelsFrameWorkEx.cpp */,
|
||||
549947BE196A3FB400BA3D87 /* WelsVP.def */,
|
||||
549947BF196A3FB400BA3D87 /* WelsVP.rc */,
|
||||
);
|
||||
path = common;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
549947C0196A3FB400BA3D87 /* complexityanalysis */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
549947C1196A3FB400BA3D87 /* ComplexityAnalysis.cpp */,
|
||||
549947C2196A3FB400BA3D87 /* ComplexityAnalysis.h */,
|
||||
);
|
||||
path = complexityanalysis;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
549947C3196A3FB400BA3D87 /* denoise */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
549947C4196A3FB400BA3D87 /* denoise.cpp */,
|
||||
549947C5196A3FB400BA3D87 /* denoise.h */,
|
||||
549947C6196A3FB400BA3D87 /* denoise_filter.cpp */,
|
||||
);
|
||||
path = denoise;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
549947C7196A3FB400BA3D87 /* downsample */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
549947C8196A3FB400BA3D87 /* downsample.cpp */,
|
||||
549947C9196A3FB400BA3D87 /* downsample.h */,
|
||||
549947CA196A3FB400BA3D87 /* downsamplefuncs.cpp */,
|
||||
);
|
||||
path = downsample;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
549947CB196A3FB400BA3D87 /* imagerotate */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
549947CC196A3FB400BA3D87 /* imagerotate.cpp */,
|
||||
549947CD196A3FB400BA3D87 /* imagerotate.h */,
|
||||
549947CE196A3FB400BA3D87 /* imagerotatefuncs.cpp */,
|
||||
);
|
||||
path = imagerotate;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
549947CF196A3FB400BA3D87 /* scenechangedetection */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
549947D0196A3FB400BA3D87 /* SceneChangeDetection.cpp */,
|
||||
549947D1196A3FB400BA3D87 /* SceneChangeDetection.h */,
|
||||
);
|
||||
path = scenechangedetection;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
549947D2196A3FB400BA3D87 /* scrolldetection */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
549947D3196A3FB400BA3D87 /* ScrollDetection.cpp */,
|
||||
549947D4196A3FB400BA3D87 /* ScrollDetection.h */,
|
||||
549947D5196A3FB400BA3D87 /* ScrollDetectionFuncs.cpp */,
|
||||
549947D6196A3FB400BA3D87 /* ScrollDetectionFuncs.h */,
|
||||
);
|
||||
path = scrolldetection;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
549947D7196A3FB400BA3D87 /* vaacalc */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
549947D8196A3FB400BA3D87 /* vaacalcfuncs.cpp */,
|
||||
549947D9196A3FB400BA3D87 /* vaacalculation.cpp */,
|
||||
549947DA196A3FB400BA3D87 /* vaacalculation.h */,
|
||||
);
|
||||
path = vaacalc;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
5499477B196A3F3900BA3D87 /* processing */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 5499479F196A3F3900BA3D87 /* Build configuration list for PBXNativeTarget "processing" */;
|
||||
buildPhases = (
|
||||
54994778196A3F3900BA3D87 /* Sources */,
|
||||
54994779196A3F3900BA3D87 /* Frameworks */,
|
||||
5499477A196A3F3900BA3D87 /* CopyFiles */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = processing;
|
||||
productName = processing;
|
||||
productReference = 5499477C196A3F3900BA3D87 /* libprocessing.a */;
|
||||
productType = "com.apple.product-type.library.static";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
54994774196A3F3900BA3D87 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0510;
|
||||
ORGANIZATIONNAME = com.cisco;
|
||||
};
|
||||
buildConfigurationList = 54994777196A3F3900BA3D87 /* Build configuration list for PBXProject "processing" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
);
|
||||
mainGroup = 54994773196A3F3900BA3D87;
|
||||
productRefGroup = 5499477D196A3F3900BA3D87 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
5499477B196A3F3900BA3D87 /* processing */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
54994778196A3F3900BA3D87 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
6C749B78197E2A2000A111F9 /* adaptive_quantization_aarch64_neon.S in Sources */,
|
||||
549947F4196A3FB400BA3D87 /* vaacalculation.cpp in Sources */,
|
||||
549947E9196A3FB400BA3D87 /* ComplexityAnalysis.cpp in Sources */,
|
||||
549947E3196A3FB400BA3D87 /* vaa_calc_neon.S in Sources */,
|
||||
549947EE196A3FB400BA3D87 /* imagerotate.cpp in Sources */,
|
||||
549947EA196A3FB400BA3D87 /* denoise.cpp in Sources */,
|
||||
549947E7196A3FB400BA3D87 /* WelsFrameWork.cpp in Sources */,
|
||||
549947F1196A3FB400BA3D87 /* ScrollDetection.cpp in Sources */,
|
||||
549947E4196A3FB400BA3D87 /* BackgroundDetection.cpp in Sources */,
|
||||
549947F3196A3FB400BA3D87 /* vaacalcfuncs.cpp in Sources */,
|
||||
4CD0FE36199082AD00375C9A /* pixel_sad_aarch64_neon.S in Sources */,
|
||||
549947E0196A3FB400BA3D87 /* adaptive_quantization.S in Sources */,
|
||||
549947EB196A3FB400BA3D87 /* denoise_filter.cpp in Sources */,
|
||||
549947ED196A3FB400BA3D87 /* downsamplefuncs.cpp in Sources */,
|
||||
549947E6196A3FB400BA3D87 /* memory.cpp in Sources */,
|
||||
549947E2196A3FB400BA3D87 /* pixel_sad_neon.S in Sources */,
|
||||
549947F0196A3FB400BA3D87 /* SceneChangeDetection.cpp in Sources */,
|
||||
4CC6094F197E009D00BE8B8B /* down_sample_aarch64_neon.S in Sources */,
|
||||
4CC6095A1980F34F00BE8B8B /* vaa_calc_aarch64_neon.S in Sources */,
|
||||
549947F2196A3FB400BA3D87 /* ScrollDetectionFuncs.cpp in Sources */,
|
||||
F791965B19D3BF6B00F60C6B /* intra_pred_common.cpp in Sources */,
|
||||
549947EF196A3FB400BA3D87 /* imagerotatefuncs.cpp in Sources */,
|
||||
549947DF196A3FB400BA3D87 /* AdaptiveQuantization.cpp in Sources */,
|
||||
549947EC196A3FB400BA3D87 /* downsample.cpp in Sources */,
|
||||
549947E8196A3FB400BA3D87 /* WelsFrameWorkEx.cpp in Sources */,
|
||||
549947E1196A3FB400BA3D87 /* down_sample_neon.S in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
5499479D196A3F3900BA3D87 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
"GCC_PREPROCESSOR_DEFINITIONS[arch=*]" = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
5499479E196A3F3900BA3D87 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
SDKROOT = iphoneos;
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
549947A0196A3F3900BA3D87 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
DSTROOT = /tmp/processing.dst;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "";
|
||||
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*][arch=arm64]" = (
|
||||
APPLE_IOS,
|
||||
HAVE_NEON_AARCH64,
|
||||
);
|
||||
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*][arch=armv7]" = (
|
||||
APPLE_IOS,
|
||||
HAVE_NEON,
|
||||
);
|
||||
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*][arch=armv7s]" = (
|
||||
APPLE_IOS,
|
||||
HAVE_NEON,
|
||||
);
|
||||
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*]" = APPLE_IOS;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(SRCROOT)/../../../processing/interface",
|
||||
"$(SRCROOT)/../../../processing/src/common",
|
||||
"$(SRCROOT)/../../../common/inc",
|
||||
"$(SRCROOT)/../../../common/arm64",
|
||||
"$(SRCROOT)/../../../common/arm",
|
||||
);
|
||||
OTHER_LDFLAGS = "-ObjC";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
549947A1196A3F3900BA3D87 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
DSTROOT = /tmp/processing.dst;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "";
|
||||
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*][arch=arm64]" = (
|
||||
APPLE_IOS,
|
||||
HAVE_NEON_AARCH64,
|
||||
);
|
||||
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*][arch=armv7]" = (
|
||||
APPLE_IOS,
|
||||
HAVE_NEON,
|
||||
);
|
||||
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*][arch=armv7s]" = (
|
||||
APPLE_IOS,
|
||||
HAVE_NEON,
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(SRCROOT)/../../../processing/interface",
|
||||
"$(SRCROOT)/../../../processing/src/common",
|
||||
"$(SRCROOT)/../../../common/inc",
|
||||
"$(SRCROOT)/../../../common/arm64",
|
||||
"$(SRCROOT)/../../../common/arm",
|
||||
);
|
||||
OTHER_LDFLAGS = "-ObjC";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
54994777196A3F3900BA3D87 /* Build configuration list for PBXProject "processing" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
5499479D196A3F3900BA3D87 /* Debug */,
|
||||
5499479E196A3F3900BA3D87 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
5499479F196A3F3900BA3D87 /* Build configuration list for PBXNativeTarget "processing" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
549947A0196A3F3900BA3D87 /* Debug */,
|
||||
549947A1196A3F3900BA3D87 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 54994774196A3F3900BA3D87 /* Project object */;
|
||||
}
|
||||
3
codec/build/win32/.gitignore
vendored
3
codec/build/win32/.gitignore
vendored
@@ -3,9 +3,6 @@
|
||||
*.ncb
|
||||
*.suo
|
||||
|
||||
Win32
|
||||
x64
|
||||
|
||||
# Files generated by upgrading the project files
|
||||
*.vcxproj*
|
||||
Backup
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
OutputDirectory=".\..\..\..\..\bin\win32\Release"
|
||||
IntermediateDirectory=".\..\..\..\obj\decoder\core\release"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -59,8 +59,12 @@
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\decoder\core\release/WelsDecCore.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\decoder\core\release/"
|
||||
ObjectFile=".\..\..\..\obj\decoder\core\release/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\decoder\core\release/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
DebugInformationFormat="0"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
@@ -85,6 +89,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
OutputFile=".\..\..\..\..\bin\win32\Release/WelsDecCore.bsc"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
@@ -95,8 +100,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|x64"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
OutputDirectory=".\..\..\..\..\bin\win64\Release"
|
||||
IntermediateDirectory=".\..\..\..\obj\decoder\core\release"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -132,8 +137,12 @@
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\decoder\core\release/WelsDecCore.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\decoder\core\release/"
|
||||
ObjectFile=".\..\..\..\obj\decoder\core\release/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\decoder\core\release/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
DebugInformationFormat="0"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
@@ -158,6 +167,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
OutputFile=".\..\..\..\..\bin\win32\Release/WelsDecCore.bsc"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
@@ -168,8 +178,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
OutputDirectory=".\..\..\..\..\bin\win32\Debug"
|
||||
IntermediateDirectory=".\..\..\..\obj\decoder\core\debug"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -202,6 +212,10 @@
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\decoder\core\debug/WelsDecCore.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\decoder\core\debug/"
|
||||
ObjectFile=".\..\..\..\obj\decoder\core\debug/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\decoder\core\debug/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
@@ -228,6 +242,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
OutputFile=".\..\..\..\..\bin\win32\Debug/WelsDecCore.bsc"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
@@ -238,8 +253,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|x64"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
OutputDirectory=".\..\..\..\..\bin\win64\Debug"
|
||||
IntermediateDirectory=".\..\..\..\obj\decoder\core\debug"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -273,6 +288,10 @@
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\decoder\core\debug/WelsDecCore.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\decoder\core\debug/"
|
||||
ObjectFile=".\..\..\..\obj\decoder\core\debug/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\decoder\core\debug/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
@@ -299,6 +318,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
OutputFile=".\..\..\..\..\bin\win32\Debug/WelsDecCore.bsc"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
OutputDirectory=".\..\..\..\..\bin\win32\Release"
|
||||
IntermediateDirectory=".\..\..\..\obj\decoder\plus\Release"
|
||||
ConfigurationType="2"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -43,6 +43,11 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
PreprocessorDefinitions="NDEBUG"
|
||||
MkTypLibCompatible="true"
|
||||
TargetEnvironment="1"
|
||||
TypeLibraryName=".\..\..\..\..\..\bin\win32\Release/WelsDecPlus.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
@@ -53,6 +58,10 @@
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\decoder\plus\Release/WelsDecPlus.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\decoder\plus\Release/"
|
||||
ObjectFile=".\..\..\..\obj\decoder\plus\Release/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\decoder\plus\Release/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
@@ -69,11 +78,15 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="$(OutDir)\welsdcore.lib"
|
||||
AdditionalDependencies=".\..\..\..\..\bin\win32\Release\welsdcore.lib"
|
||||
OutputFile="$(OutDir)\welsdec.dll"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories=".\..\..\..\libs\Release\"
|
||||
ModuleDefinitionFile="..\..\..\decoder\plus\src\wels_dec_export.def"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="$(OutDir)\welsdec.pdb"
|
||||
GenerateMapFile="true"
|
||||
MapFileName="$(OutDir)\welsdec.map"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
ImportLibrary="$(OutDir)\welsdec.lib"
|
||||
@@ -90,6 +103,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
OutputFile=".\..\..\..\..\bin\win32\Release/WelsDecPlus.bsc"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
@@ -103,8 +117,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|x64"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
OutputDirectory=".\..\..\..\..\bin\win64\Release"
|
||||
IntermediateDirectory=".\..\..\..\obj\decoder\plus\Release"
|
||||
ConfigurationType="2"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -126,6 +140,11 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
PreprocessorDefinitions="NDEBUG"
|
||||
MkTypLibCompatible="true"
|
||||
TargetEnvironment="3"
|
||||
TypeLibraryName=".\..\..\..\..\..\bin\win32\Release/WelsDecPlus.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
@@ -136,6 +155,10 @@
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\decoder\plus\Release/WelsDecPlus.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\decoder\plus\Release/"
|
||||
ObjectFile=".\..\..\..\obj\decoder\plus\Release/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\decoder\plus\Release/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
@@ -152,11 +175,15 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="$(OutDir)\welsdcore.lib"
|
||||
AdditionalDependencies=".\..\..\..\..\bin\win64\Release\welsdcore.lib"
|
||||
OutputFile="$(OutDir)\welsdec.dll"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories=".\..\..\..\libs\Release\"
|
||||
ModuleDefinitionFile="..\..\..\decoder\plus\src\wels_dec_export.def"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="$(OutDir)\welsdec.pdb"
|
||||
GenerateMapFile="true"
|
||||
MapFileName="$(OutDir)\welsdec.map"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
ImportLibrary="$(OutDir)\welsdec.lib"
|
||||
@@ -173,6 +200,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
OutputFile=".\..\..\..\..\bin\win32\Release/WelsDecPlus.bsc"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
@@ -186,8 +214,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
OutputDirectory=".\..\..\..\..\bin\win32\Debug"
|
||||
IntermediateDirectory=".\..\..\..\obj\decoder\plus\debug"
|
||||
ConfigurationType="2"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -208,6 +236,11 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
MkTypLibCompatible="true"
|
||||
TargetEnvironment="1"
|
||||
TypeLibraryName=".\..\..\..\..\..\bin\win32\Debug/WelsDecPlus.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
@@ -217,6 +250,10 @@
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\decoder\plus\debug/WelsDecPlus.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\decoder\plus\debug/"
|
||||
ObjectFile=".\..\..\..\obj\decoder\plus\debug/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\decoder\plus\debug/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
@@ -233,11 +270,13 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="$(OutDir)\welsdcore.lib"
|
||||
AdditionalDependencies=".\..\..\..\..\bin\win32\Debug\welsdcore.lib"
|
||||
OutputFile="$(OutDir)\welsdec.dll"
|
||||
LinkIncremental="2"
|
||||
AdditionalLibraryDirectories="..\..\..\libs\debug"
|
||||
ModuleDefinitionFile="..\..\..\decoder\plus\src\wels_dec_export.def"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="$(OutDir)\welsdec.pdb"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
ImportLibrary="$(OutDir)\welsdec.lib"
|
||||
@@ -254,6 +293,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
OutputFile=".\..\..\..\..\bin\win32\Debug/WelsDecPlus.bsc"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
@@ -267,8 +307,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|x64"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
OutputDirectory=".\..\..\..\..\bin\win64\Debug"
|
||||
IntermediateDirectory=".\..\..\..\obj\decoder\plus\debug"
|
||||
ConfigurationType="2"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -289,6 +329,11 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
MkTypLibCompatible="true"
|
||||
TargetEnvironment="3"
|
||||
TypeLibraryName=".\..\..\..\..\..\bin\win32\Debug/WelsDecPlus.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
@@ -298,6 +343,10 @@
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\decoder\plus\debug/WelsDecPlus.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\decoder\plus\debug/"
|
||||
ObjectFile=".\..\..\..\obj\decoder\plus\debug/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\decoder\plus\debug/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
@@ -314,11 +363,13 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="$(OutDir)\welsdcore.lib"
|
||||
AdditionalDependencies=".\..\..\..\..\bin\win64\Debug\welsdcore.lib"
|
||||
OutputFile="$(OutDir)\welsdec.dll"
|
||||
LinkIncremental="2"
|
||||
AdditionalLibraryDirectories="..\..\..\libs\debug"
|
||||
ModuleDefinitionFile="..\..\..\decoder\plus\src\wels_dec_export.def"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="$(OutDir)\welsdec.pdb"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
ImportLibrary="$(OutDir)\welsdec.lib"
|
||||
@@ -335,6 +386,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
OutputFile=".\..\..\..\..\bin\win32\Debug/WelsDecPlus.bsc"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
OutputDirectory=".\..\..\..\..\bin\win32\Release"
|
||||
IntermediateDirectory=".\..\..\..\obj\decConsole\Release"
|
||||
ConfigurationType="1"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -42,6 +42,8 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TypeLibraryName=".\..\..\..\..\bin\win32\Release/decConsole.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
@@ -52,8 +54,11 @@
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\decConsole\Release/decConsole.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\decConsole\Release/"
|
||||
ObjectFile=".\..\..\..\obj\decConsole\Release/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\decConsole\Release/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
@@ -71,7 +76,9 @@
|
||||
AdditionalDependencies="$(OutDir)\welsdec.lib"
|
||||
OutputFile="$(OutDir)\decConsole.exe"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
AdditionalLibraryDirectories="..\..\..\..\bin\win32"
|
||||
ProgramDatabaseFile="$(OutDir)\decConsole.pdb"
|
||||
GenerateMapFile="false"
|
||||
SubSystem="1"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
@@ -102,8 +109,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|x64"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
OutputDirectory=".\..\..\..\..\bin\win64\Release"
|
||||
IntermediateDirectory=".\..\..\..\obj\decConsole\Release"
|
||||
ConfigurationType="1"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -124,6 +131,9 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
TypeLibraryName=".\..\..\..\..\bin\win32\Release/decConsole.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
@@ -134,8 +144,11 @@
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\decConsole\Release/decConsole.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\decConsole\Release/"
|
||||
ObjectFile=".\..\..\..\obj\decConsole\Release/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\decConsole\Release/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
@@ -153,7 +166,9 @@
|
||||
AdditionalDependencies="$(OutDir)\welsdec.lib"
|
||||
OutputFile="$(OutDir)\decConsole.exe"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
AdditionalLibraryDirectories="..\..\..\..\bin\win64"
|
||||
ProgramDatabaseFile="$(OutDir)\decConsole.pdb"
|
||||
GenerateMapFile="false"
|
||||
SubSystem="1"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
@@ -184,8 +199,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
OutputDirectory=".\..\..\..\..\bin\win32\Debug"
|
||||
IntermediateDirectory=".\..\..\..\obj\decConsole\Debug"
|
||||
ConfigurationType="1"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -206,6 +221,8 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TypeLibraryName=".\..\..\..\..\bin\win32\Debug/decConsole.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
@@ -215,6 +232,11 @@
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\decConsole\Debug/decConsole.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\decConsole\Debug/"
|
||||
ObjectFile=".\..\..\..\obj\decConsole\Debug/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\decConsole\Debug/"
|
||||
BrowseInformation="1"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
@@ -234,7 +256,9 @@
|
||||
AdditionalDependencies="$(OutDir)\welsdec.lib"
|
||||
OutputFile="$(OutDir)\decConsoled.exe"
|
||||
LinkIncremental="2"
|
||||
AdditionalLibraryDirectories="..\..\..\..\bin\win32"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="$(OutDir)\decConsoled.pdb"
|
||||
SubSystem="1"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
@@ -265,8 +289,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|x64"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
OutputDirectory=".\..\..\..\..\bin\win64\Debug"
|
||||
IntermediateDirectory=".\..\..\..\obj\decConsole\Debug"
|
||||
ConfigurationType="1"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -287,6 +311,9 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
TypeLibraryName=".\..\..\..\..\bin\win32\Debug/decConsole.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
@@ -296,6 +323,11 @@
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\decConsole\Debug/decConsole.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\decConsole\Debug/"
|
||||
ObjectFile=".\..\..\..\obj\decConsole\Debug/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\decConsole\Debug/"
|
||||
BrowseInformation="1"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
@@ -315,7 +347,9 @@
|
||||
AdditionalDependencies="$(OutDir)\welsdec.lib"
|
||||
OutputFile="$(OutDir)\decConsoled.exe"
|
||||
LinkIncremental="2"
|
||||
AdditionalLibraryDirectories="..\..\..\..\bin\win64"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="$(OutDir)\decConsoled.pdb"
|
||||
SubSystem="1"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
OutputDirectory=".\..\..\..\..\bin\win32\Debug"
|
||||
IntermediateDirectory=".\..\..\..\obj\encoder\core\Debug"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -57,6 +57,10 @@
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\encoder\core\Debug/WelsEncCore.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\encoder\core\Debug/"
|
||||
ObjectFile=".\..\..\..\obj\encoder\core\Debug/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\encoder\core\Debug/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
@@ -95,8 +99,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|x64"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
OutputDirectory=".\..\..\..\..\bin\win64\Debug"
|
||||
IntermediateDirectory=".\..\..\..\obj\encoder\core\Debug"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -130,6 +134,10 @@
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\encoder\core\Debug/WelsEncCore.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\encoder\core\Debug/"
|
||||
ObjectFile=".\..\..\..\obj\encoder\core\Debug/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\encoder\core\Debug/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
@@ -168,8 +176,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
OutputDirectory=".\..\..\..\..\bin\win32\Release"
|
||||
IntermediateDirectory=".\..\..\..\obj\encoder\core\Release"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -205,6 +213,10 @@
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\encoder\core\Release/WelsEncCore.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\encoder\core\Release/"
|
||||
ObjectFile=".\..\..\..\obj\encoder\core\Release/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\encoder\core\Release/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
@@ -243,8 +255,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|x64"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
OutputDirectory=".\..\..\..\..\bin\win64\Release"
|
||||
IntermediateDirectory=".\..\..\..\obj\encoder\core\Release"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -281,6 +293,10 @@
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\encoder\core\Release/WelsEncCore.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\encoder\core\Release/"
|
||||
ObjectFile=".\..\..\..\obj\encoder\core\Release/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\encoder\core\Release/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
@@ -381,10 +397,6 @@
|
||||
RelativePath="..\..\..\encoder\core\src\get_intra_predictor.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\common\src\intra_pred_common.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\encoder\core\src\mc.cpp"
|
||||
>
|
||||
@@ -731,7 +743,7 @@
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
CommandLine="nasm -I$(InputDir) -I$(InputDir)/../../../common/x86/ -f win32 -DPREFIX -DX86_32 -o $(IntDir)\$(InputName).obj $(InputPath)
"
|
||||
CommandLine="nasm -I$(InputDir) -I$(InputDir)/../../../common/x86/ -f win32 -DPREFIX -o $(IntDir)\$(InputName).obj $(InputPath)
"
|
||||
Outputs="$(IntDir)\$(InputName).obj"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -749,7 +761,7 @@
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
CommandLine="nasm -I$(InputDir) -I$(InputDir)/../../../common/x86/ -f win32 -DPREFIX -DX86_32 -o $(IntDir)\$(InputName).obj $(InputPath)
"
|
||||
CommandLine="nasm -I$(InputDir) -I$(InputDir)/../../../common/x86/ -f win32 -DPREFIX -o $(IntDir)\$(InputName).obj $(InputPath)
"
|
||||
Outputs="$(IntDir)\$(InputName).obj"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -771,7 +783,7 @@
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
CommandLine="nasm -I$(InputDir) -I$(InputDir)/../../../common/x86/ -f win32 -DPREFIX -DX86_32 -o $(IntDir)\$(InputName).obj $(InputPath)
"
|
||||
CommandLine="nasm -I$(InputDir) -f win32 -DPREFIX -DX86_32 -o $(IntDir)\$(InputName).obj $(InputPath)
"
|
||||
Outputs="$(IntDir)\$(InputName).obj"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -963,46 +975,6 @@
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\common\x86\intra_pred_com.asm"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
CommandLine="nasm -I$(InputDir) -I$(InputDir)/../../../common/x86/ -f win32 -DPREFIX -DX86_32 -o $(IntDir)\$(InputName).obj $(InputPath)
"
|
||||
Outputs="$(IntDir)\$(InputName).obj"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
CommandLine="nasm -I$(InputDir) -I$(InputDir)/../../../common/x86/ -f win64 -DWIN64 -o $(IntDir)\$(InputName).obj $(InputPath)
"
|
||||
Outputs="$(IntDir)\$(InputName).obj"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
CommandLine="nasm -I$(InputDir) -I$(InputDir)/../../../common/x86/ -f win32 -DPREFIX -DX86_32 -o $(IntDir)\$(InputName).obj $(InputPath)
"
|
||||
Outputs="$(IntDir)\$(InputName).obj"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
CommandLine="nasm -I$(InputDir) -I$(InputDir)/../../../common/x86/ -f win64 -DWIN64 -o $(IntDir)\$(InputName).obj $(InputPath)
"
|
||||
Outputs="$(IntDir)\$(InputName).obj"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\encoder\core\x86\matrix_transpose.asm"
|
||||
>
|
||||
@@ -1371,7 +1343,7 @@
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
CommandLine="nasm -I$(InputDir) -I$(InputDir)/../../../common/x86/ -f win32 -DPREFIX -DX86_32 -o $(IntDir)\$(InputName).obj $(InputPath)
"
|
||||
CommandLine="nasm -I$(InputDir) -I$(InputDir)/../../../common/x86/ -f win32 -DPREFIX -DX86_32 -o $(IntDir)\$(InputName).obj $(InputPath)
"
|
||||
Outputs="$(IntDir)\$(InputName).obj"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -1389,7 +1361,7 @@
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
CommandLine="nasm -I$(InputDir) -I$(InputDir)/../../../common/x86/ -f win32 -DPREFIX -DX86_32 -o $(IntDir)\$(InputName).obj $(InputPath)
"
|
||||
CommandLine="nasm -I$(InputDir) -I$(InputDir)/../../../common/x86/ -f win32 -DPREFIX -DX86_32 -o $(IntDir)\$(InputName).obj $(InputPath)
"
|
||||
Outputs="$(IntDir)\$(InputName).obj"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
OutputDirectory=".\..\..\..\..\bin\win32\Debug"
|
||||
IntermediateDirectory=".\..\..\..\obj\encoder\plus\Debug"
|
||||
ConfigurationType="2"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -42,6 +42,11 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
MkTypLibCompatible="true"
|
||||
TargetEnvironment="1"
|
||||
TypeLibraryName=".\..\..\..\..\..\bin\Debug/WelsEncPlus.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
@@ -51,6 +56,10 @@
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\encoder\plus\Debug/WelsEncPlus.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\encoder\plus\Debug/"
|
||||
ObjectFile=".\..\..\..\obj\encoder\plus\Debug/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\encoder\plus\Debug/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
@@ -70,8 +79,12 @@
|
||||
AdditionalDependencies="$(OutDir)\welsecore.lib $(OutDir)\welsvp.lib"
|
||||
OutputFile="$(OutDir)\welsenc.dll"
|
||||
LinkIncremental="2"
|
||||
AdditionalLibraryDirectories="..\..\..\..\libs"
|
||||
ModuleDefinitionFile="..\..\..\encoder\plus\src\wels_enc_export.def"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="$(OutDir)\welsenc.pdb"
|
||||
GenerateMapFile="true"
|
||||
MapFileName="$(OutDir)\welsenc.map"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
ImportLibrary="$(OutDir)\welsenc.lib"
|
||||
@@ -102,8 +115,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|x64"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
OutputDirectory=".\..\..\..\..\bin\win64\Debug"
|
||||
IntermediateDirectory=".\..\..\..\obj\encoder\plus\Debug"
|
||||
ConfigurationType="2"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -124,6 +137,11 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
MkTypLibCompatible="true"
|
||||
TargetEnvironment="3"
|
||||
TypeLibraryName=".\..\..\..\..\..\bin\Debug/WelsEncPlus.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
@@ -133,6 +151,10 @@
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\encoder\plus\Debug/WelsEncPlus.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\encoder\plus\Debug/"
|
||||
ObjectFile=".\..\..\..\obj\encoder\plus\Debug/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\encoder\plus\Debug/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
@@ -152,8 +174,12 @@
|
||||
AdditionalDependencies="$(OutDir)\welsecore.lib $(OutDir)\welsvp.lib"
|
||||
OutputFile="$(OutDir)\welsenc.dll"
|
||||
LinkIncremental="2"
|
||||
AdditionalLibraryDirectories="..\..\..\..\libs"
|
||||
ModuleDefinitionFile="..\..\..\encoder\plus\src\wels_enc_export.def"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="$(OutDir)\welsenc.pdb"
|
||||
GenerateMapFile="true"
|
||||
MapFileName="$(OutDir)\welsenc.map"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
ImportLibrary="$(OutDir)\welsenc.lib"
|
||||
@@ -184,8 +210,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
OutputDirectory=".\..\..\..\..\bin\win32\Release"
|
||||
IntermediateDirectory=".\..\..\..\obj\encoder\plus\Release"
|
||||
ConfigurationType="2"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -207,17 +233,27 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
PreprocessorDefinitions="NDEBUG"
|
||||
MkTypLibCompatible="true"
|
||||
TargetEnvironment="1"
|
||||
TypeLibraryName=".\..\..\..\..\..\bin\Release/WelsEncPlus.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="3"
|
||||
InlineFunctionExpansion="2"
|
||||
FavorSizeOrSpeed="1"
|
||||
EnableFiberSafeOptimizations="true"
|
||||
AdditionalIncludeDirectories="..\..\..\encoder\plus\inc;..\..\..\encoder\core\inc;..\..\..\api\svc;..\..\..\common\inc;..\..\..\processing\interface"
|
||||
PreprocessorDefinitions="NDEBUG;_USRDLL;X86_ASM"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\encoder\plus\Release/WelsEncPlus.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\encoder\plus\Release/"
|
||||
ObjectFile=".\..\..\..\obj\encoder\plus\Release/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\encoder\plus\Release/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
@@ -237,8 +273,13 @@
|
||||
AdditionalDependencies="$(OutDir)\welsecore.lib $(OutDir)\welsvp.lib"
|
||||
OutputFile="$(OutDir)\welsenc.dll"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="..\..\..\..\libs"
|
||||
ModuleDefinitionFile="..\..\..\encoder\plus\src\wels_enc_export.def"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="$(OutDir)\welsenc.pdb"
|
||||
GenerateMapFile="false"
|
||||
MapFileName=""
|
||||
MapExports="false"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
ImportLibrary="$(OutDir)\welsenc.lib"
|
||||
@@ -269,8 +310,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|x64"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
OutputDirectory=".\..\..\..\..\bin\win64\Release"
|
||||
IntermediateDirectory=".\..\..\..\obj\encoder\plus\Release"
|
||||
ConfigurationType="2"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -292,17 +333,27 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
PreprocessorDefinitions="NDEBUG"
|
||||
MkTypLibCompatible="true"
|
||||
TargetEnvironment="3"
|
||||
TypeLibraryName=".\..\..\..\..\..\bin\Release/WelsEncPlus.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="3"
|
||||
InlineFunctionExpansion="2"
|
||||
FavorSizeOrSpeed="1"
|
||||
EnableFiberSafeOptimizations="true"
|
||||
AdditionalIncludeDirectories="..\..\..\encoder\plus\inc;..\..\..\encoder\core\inc;..\..\..\api\svc;..\..\..\common\inc;..\..\..\processing\interface"
|
||||
PreprocessorDefinitions="NDEBUG;_USRDLL;X86_ASM"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\encoder\plus\Release/WelsEncPlus.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\encoder\plus\Release/"
|
||||
ObjectFile=".\..\..\..\obj\encoder\plus\Release/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\encoder\plus\Release/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
@@ -322,8 +373,13 @@
|
||||
AdditionalDependencies="$(OutDir)\welsecore.lib $(OutDir)\welsvp.lib"
|
||||
OutputFile="$(OutDir)\welsenc.dll"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="..\..\..\..\libs"
|
||||
ModuleDefinitionFile="..\..\..\encoder\plus\src\wels_enc_export.def"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="$(OutDir)\welsenc.pdb"
|
||||
GenerateMapFile="false"
|
||||
MapFileName=""
|
||||
MapExports="false"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
ImportLibrary="$(OutDir)\welsenc.lib"
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
OutputDirectory=".\..\..\..\..\bin\win32\Debug"
|
||||
IntermediateDirectory=".\..\..\..\obj\encConsole\Debug"
|
||||
ConfigurationType="1"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -42,6 +42,8 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TypeLibraryName=".\..\..\..\..\..\bin\Debug/encConsole.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
@@ -51,6 +53,10 @@
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\encConsole\Debug/encConsole.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\encConsole\Debug/"
|
||||
ObjectFile=".\..\..\..\obj\encConsole\Debug/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\encConsole\Debug/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
@@ -70,7 +76,11 @@
|
||||
AdditionalDependencies="$(OutDir)\welsenc.lib"
|
||||
OutputFile="$(OutDir)\encConsole.exe"
|
||||
LinkIncremental="2"
|
||||
AdditionalLibraryDirectories="..\..\..\bin"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="$(OutDir)\encConsole.pdb"
|
||||
GenerateMapFile="true"
|
||||
MapFileName="$(OutDir)\encConsole.map"
|
||||
SubSystem="1"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
@@ -101,8 +111,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|x64"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
OutputDirectory=".\..\..\..\..\bin\win64\Debug"
|
||||
IntermediateDirectory=".\..\..\..\obj\encConsole\Debug"
|
||||
ConfigurationType="1"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -123,6 +133,9 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
TypeLibraryName=".\..\..\..\..\..\bin\Debug/encConsole.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
@@ -132,6 +145,10 @@
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\encConsole\Debug/encConsole.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\encConsole\Debug/"
|
||||
ObjectFile=".\..\..\..\obj\encConsole\Debug/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\encConsole\Debug/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
@@ -151,7 +168,11 @@
|
||||
AdditionalDependencies="$(OutDir)\welsenc.lib"
|
||||
OutputFile="$(OutDir)\encConsole.exe"
|
||||
LinkIncremental="2"
|
||||
AdditionalLibraryDirectories="..\..\..\bin"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="$(OutDir)\encConsole.pdb"
|
||||
GenerateMapFile="true"
|
||||
MapFileName="$(OutDir)\encConsole.map"
|
||||
SubSystem="1"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
@@ -182,8 +203,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
OutputDirectory=".\..\..\..\..\bin\win32\Release"
|
||||
IntermediateDirectory=".\..\..\..\obj\encConsole\Release"
|
||||
ConfigurationType="1"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -204,6 +225,8 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TypeLibraryName=".\..\..\..\..\..\bin\Release/encConsole.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
@@ -214,6 +237,10 @@
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\encConsole\Release/encConsole.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\encConsole\Release/"
|
||||
ObjectFile=".\..\..\..\obj\encConsole\Release/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\encConsole\Release/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
@@ -233,7 +260,11 @@
|
||||
AdditionalDependencies="$(OutDir)\welsenc.lib"
|
||||
OutputFile="$(OutDir)\encConsole.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="..\..\..\bin"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="$(OutDir)\encConsole.pdb"
|
||||
GenerateMapFile="false"
|
||||
MapExports="false"
|
||||
SubSystem="1"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
@@ -264,8 +295,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|x64"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
OutputDirectory=".\..\..\..\..\bin\win64\Release"
|
||||
IntermediateDirectory=".\..\..\..\obj\encConsole\Release"
|
||||
ConfigurationType="1"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -286,6 +317,9 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
TypeLibraryName=".\..\..\..\..\..\bin\Release/encConsole.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
@@ -296,6 +330,10 @@
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\encConsole\Release/encConsole.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\encConsole\Release/"
|
||||
ObjectFile=".\..\..\..\obj\encConsole\Release/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\encConsole\Release/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
@@ -315,7 +353,11 @@
|
||||
AdditionalDependencies="$(OutDir)\welsenc.lib"
|
||||
OutputFile="$(OutDir)\encConsole.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="..\..\..\bin"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="$(OutDir)\encConsole.pdb"
|
||||
GenerateMapFile="false"
|
||||
MapExports="false"
|
||||
SubSystem="1"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
|
||||
@@ -30,10 +30,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#ifdef HAVE_NEON
|
||||
|
||||
.syntax unified
|
||||
|
||||
#ifdef __APPLE__
|
||||
|
||||
.macro WELS_ASM_FUNC_BEGIN
|
||||
@@ -48,6 +44,7 @@ mov pc, lr
|
||||
.endm
|
||||
#else
|
||||
|
||||
.syntax unified
|
||||
.section .note.GNU-stack,"",%progbits // Mark stack as non-executable
|
||||
.text
|
||||
|
||||
@@ -65,5 +62,3 @@ mov pc, lr
|
||||
.endfunc
|
||||
.endm
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -855,7 +855,7 @@ WELS_ASM_FUNC_END
|
||||
beq bs_nzc_check_jump0
|
||||
|
||||
sub r6, $0, $2, lsl #4
|
||||
sub r6, r6, $2, lsl #3
|
||||
sub r6, $2, lsl #3
|
||||
add r6, #12
|
||||
vld1.32 d3[1], [r6]
|
||||
|
||||
|
||||
@@ -1,83 +0,0 @@
|
||||
/*!
|
||||
* \copy
|
||||
* Copyright (c) 2013, Cisco Systems
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifdef HAVE_NEON
|
||||
.text
|
||||
#include "arm_arch_common_macro.S"
|
||||
|
||||
WELS_ASM_FUNC_BEGIN WelsI16x16LumaPredV_neon
|
||||
//Get the top line data to 'q0'
|
||||
sub r3, r1, r2
|
||||
vldm r3, {d0, d1}
|
||||
|
||||
//mov r2, #16
|
||||
mov r3, #4
|
||||
//Set the top line to the each line of MB(16*16)
|
||||
loop_0_get_i16x16_luma_pred_v:
|
||||
vst1.8 {d0,d1}, [r0]!
|
||||
vst1.8 {d0,d1}, [r0]!
|
||||
vst1.8 {d0,d1}, [r0]!
|
||||
vst1.8 {d0,d1}, [r0]!
|
||||
subs r3, #1
|
||||
bne loop_0_get_i16x16_luma_pred_v
|
||||
WELS_ASM_FUNC_END
|
||||
|
||||
|
||||
WELS_ASM_FUNC_BEGIN WelsI16x16LumaPredH_neon
|
||||
//stmdb sp!, {r4, lr}
|
||||
sub r1, r1, #1
|
||||
mov r3, #4
|
||||
loop_0_get_i16x16_luma_pred_h:
|
||||
//Get one byte data from left side
|
||||
vld1.8 {d0[],d1[]}, [r1], r2
|
||||
vld1.8 {d2[],d3[]}, [r1], r2
|
||||
vld1.8 {d4[],d5[]}, [r1], r2
|
||||
vld1.8 {d6[],d7[]}, [r1], r2
|
||||
|
||||
//Set the line of MB using the left side byte data
|
||||
vst1.8 {d0,d1}, [r0]!
|
||||
//add r0, #16
|
||||
vst1.8 {d2,d3}, [r0]!
|
||||
//add r0, #16
|
||||
vst1.8 {d4,d5}, [r0]!
|
||||
//add r0, #16
|
||||
vst1.8 {d6,d7}, [r0]!
|
||||
//add r0, #16
|
||||
|
||||
subs r3, #1
|
||||
bne loop_0_get_i16x16_luma_pred_h
|
||||
|
||||
WELS_ASM_FUNC_END
|
||||
|
||||
|
||||
#endif
|
||||
@@ -67,4 +67,11 @@ ret
|
||||
mov \arg0\().8b, \arg1\().8b
|
||||
.endm
|
||||
|
||||
.macro ext.16b arg0, arg1, arg2, arg3
|
||||
ext \arg0\().16b, \arg1\().16b, \arg2\().16b, \arg3
|
||||
.endm
|
||||
|
||||
.macro ext.8b arg0, arg1, arg2, arg3
|
||||
ext \arg0\().8b, \arg1\().8b, \arg2\().8b, \arg3
|
||||
.endm
|
||||
#endif
|
||||
|
||||
@@ -212,7 +212,7 @@
|
||||
ld1 {v1.s} [3], [x6]
|
||||
|
||||
bs_nzc_check_jump0:
|
||||
ext v1.16b, v1.16b, v0.16b, #12
|
||||
ext.16b v1, v1, v0, #12
|
||||
add $3.16b, v0.16b, v1.16b
|
||||
|
||||
// Arrange the input data --- LEFT
|
||||
@@ -233,7 +233,7 @@ bs_nzc_check_jump1:
|
||||
zip1 v0.16b, v0.16b, v2.16b
|
||||
ins v2.d[0], v0.d[1]
|
||||
zip1 v0.16b, v0.16b, v2.16b
|
||||
ext v1.16b, v1.16b, v0.16b, #12
|
||||
ext.16b v1, v1, v0, #12
|
||||
add $4.16b, v0.16b, v1.16b
|
||||
.endm
|
||||
|
||||
@@ -470,7 +470,7 @@ bs_mv_check_jump1:
|
||||
ld1 {v1.s} [3], [x6]
|
||||
|
||||
bs_nzc_check_jump0:
|
||||
ext v1.16b, v1.16b, v0.16b, #12
|
||||
ext.16b v1, v1, v0, #12
|
||||
add \arg3\().16b, v0.16b, v1.16b
|
||||
|
||||
// Arrange the input data --- LEFT
|
||||
@@ -491,7 +491,7 @@ bs_nzc_check_jump1:
|
||||
zip1 v0.16b, v0.16b, v2.16b
|
||||
ins v2.d[0], v0.d[1]
|
||||
zip1 v0.16b, v0.16b, v2.16b
|
||||
ext v1.16b, v1.16b, v0.16b, #12
|
||||
ext.16b v1, v1, v0, #12
|
||||
add \arg4\().16b, v0.16b, v1.16b
|
||||
.endm
|
||||
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
/*!
|
||||
* \copy
|
||||
* Copyright (c) 2013, Cisco Systems
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifdef HAVE_NEON_AARCH64
|
||||
.text
|
||||
#include "arm_arch64_common_macro.S"
|
||||
|
||||
//for Luma 16x16
|
||||
WELS_ASM_AARCH64_FUNC_BEGIN WelsI16x16LumaPredV_AArch64_neon
|
||||
sub x3, x1, x2
|
||||
ld1 {v0.16b}, [x3]
|
||||
.rept 16
|
||||
st1 {v0.16b}, [x0], 16
|
||||
.endr
|
||||
WELS_ASM_AARCH64_FUNC_END
|
||||
|
||||
WELS_ASM_AARCH64_FUNC_BEGIN WelsI16x16LumaPredH_AArch64_neon
|
||||
sub x3, x1, #1
|
||||
.rept 16
|
||||
ld1r {v0.16b}, [x3], x2
|
||||
st1 {v0.16b}, [x0], 16
|
||||
.endr
|
||||
WELS_ASM_AARCH64_FUNC_END
|
||||
|
||||
#endif
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
#ifdef HAVE_NEON_AARCH64
|
||||
.text
|
||||
#include "arm_arch64_common_macro.S"
|
||||
.align 4
|
||||
.align 16
|
||||
filter_para: .short 0, 1, -5, 20, 0, 0, 0, 0
|
||||
|
||||
#ifdef __APPLE__
|
||||
@@ -197,8 +197,8 @@ filter_para: .short 0, 1, -5, 20, 0, 0, 0, 0
|
||||
|
||||
.macro UNPACK_FILTER_SINGLE_TAG_16BITS // v0, v1, v22, v23
|
||||
// { // each 16bits; input: d_dst, d_src[0:5], para, working, working, d(low part of d_dst)
|
||||
ext $3.16b, $1.16b, $1.16b, #14 // X[0][1][2][3][4][5]O
|
||||
ext $4.16b, $3.16b, $3.16b, #8 // [3][4][5]OX[0][1][2]
|
||||
ext.16b $3, $1, $1, #14 // X[0][1][2][3][4][5]O
|
||||
ext.16b $4, $3, $3, #8 // [3][4][5]OX[0][1][2]
|
||||
rev64 $4.8h, $4.8h // X[5][4][3][2][1][0]O
|
||||
add $3.8h, $3.8h, $4.8h // each 16bits, *[50][41][32][23][14][05]*
|
||||
smull $3.4s, $3.4h, $2.4h // 0+1*[50]-5*[41]+20[32]
|
||||
@@ -413,8 +413,8 @@ WELS_ASM_AARCH64_FUNC_BEGIN McHorVer20WidthEq8_AArch64_neon
|
||||
movi v0.8h, #20, lsl #0
|
||||
movi v1.8h, #5, lsl #0
|
||||
w8_h_mc_luma_loop:
|
||||
ld1 {v2.16b}, [x0], x1 //only use 13(8+5); v2=src[-2]
|
||||
|
||||
ld1 {v2.8b, v3.8b}, [x0], x1 //only use 13(8+5); v2=src[-2]
|
||||
trn1 v2.2d, v2.2d, v3.2d
|
||||
//prfm pldl1strm, [x0]
|
||||
ext v5.16b, v2.16b, v4.16b, #1 //v5=src[-1]
|
||||
ext v6.16b, v2.16b, v4.16b, #2 //v6=src[0]
|
||||
@@ -492,8 +492,8 @@ WELS_ASM_AARCH64_FUNC_BEGIN McHorVer10WidthEq8_AArch64_neon
|
||||
movi v0.8h, #20, lsl #0
|
||||
movi v1.8h, #5, lsl #0
|
||||
w8_xy_10_mc_luma_loop:
|
||||
ld1 {v2.16b}, [x0], x1 //only use 13(8+5); v2=src[-2]
|
||||
|
||||
ld1 {v2.8b, v3.8b}, [x0], x1 //only use 13(8+5); v2=src[-2]
|
||||
trn1 v2.2d, v2.2d, v3.2d
|
||||
//prfm pldl1strm, [x0]
|
||||
ext v5.16b, v2.16b, v4.16b, #1 //v5=src[-1]
|
||||
ext v6.16b, v2.16b, v4.16b, #2 //v6=src[0]
|
||||
@@ -572,8 +572,8 @@ WELS_ASM_AARCH64_FUNC_BEGIN McHorVer30WidthEq8_AArch64_neon
|
||||
movi v0.8h, #20, lsl #0
|
||||
movi v1.8h, #5, lsl #0
|
||||
w8_xy_30_mc_luma_loop:
|
||||
ld1 {v2.16b}, [x0], x1 //only use 13(8+5); v2=src[-2]
|
||||
|
||||
ld1 {v2.8b, v3.8b}, [x0], x1 //only use 13(8+5); v2=src[-2]
|
||||
trn1 v2.2d, v2.2d, v3.2d
|
||||
//prfm pldl1strm, [x0]
|
||||
ext v5.16b, v2.16b, v4.16b, #1 //v5=src[-1]
|
||||
ext v6.16b, v2.16b, v4.16b, #2 //v6=src[0]
|
||||
@@ -1713,12 +1713,12 @@ WELS_ASM_AARCH64_FUNC_END
|
||||
WELS_ASM_AARCH64_FUNC_BEGIN McChromaWidthEq8_AArch64_neon
|
||||
ld4r {v4.8b, v5.8b, v6.8b, v7.8b}, [x4] //load A/B/C/D
|
||||
ld1 {v0.16b}, [x0], x1 // src[x]
|
||||
ext v1.16b, v0.16b, v0.16b, #1 // src[x+1]
|
||||
ext.16b v1, v0, v0, #1 // src[x+1]
|
||||
w8_mc_chroma_loop:
|
||||
ld1 {v2.16b}, [x0], x1 // src[x+stride]
|
||||
ext v3.16b, v2.16b, v2.16b, #1 // src[x+stride+1]
|
||||
ext.16b v3, v2, v2, #1 // src[x+stride+1]
|
||||
ld1 {v18.16b}, [x0], x1 // src[x+2*stride]
|
||||
ext v19.16b, v18.16b, v18.16b, #1 // src[x+2*stride+1]
|
||||
ext.16b v19, v18, v18, #1 // src[x+2*stride+1]
|
||||
|
||||
umull v16.8h, v0.8b, v4.8b
|
||||
umlal v16.8h, v1.8b, v5.8b
|
||||
@@ -1744,12 +1744,12 @@ WELS_ASM_AARCH64_FUNC_END
|
||||
WELS_ASM_AARCH64_FUNC_BEGIN McChromaWidthEq4_AArch64_neon
|
||||
ld4r {v4.8b, v5.8b, v6.8b, v7.8b}, [x4] //load A/B/C/D
|
||||
ld1 {v0.8b}, [x0], x1 // src[x]
|
||||
ext v1.8b, v0.8b, v0.8b, #1 // src[x+1]
|
||||
ext.8b v1, v0, v0, #1 // src[x+1]
|
||||
w4_mc_chroma_loop:
|
||||
ld1 {v2.8b}, [x0], x1 // src[x+stride]
|
||||
ext v3.8b, v2.8b, v2.8b, #1 // src[x+stride+1]
|
||||
ext.8b v3, v2, v2, #1 // src[x+stride+1]
|
||||
ld1 {v18.8b}, [x0], x1 // src[x+2*stride]
|
||||
ext v19.8b, v18.8b, v18.8b, #1 // src[x+2*stride+1]
|
||||
ext.8b v19, v18, v18, #1 // src[x+2*stride+1]
|
||||
|
||||
zip1 v0.4s, v0.4s, v2.4s
|
||||
zip1 v1.4s, v1.4s, v3.4s
|
||||
@@ -1779,20 +1779,20 @@ WELS_ASM_AARCH64_FUNC_BEGIN McHorVer20Width17_AArch64_neon
|
||||
movi v1.8h, #5, lsl #0
|
||||
ldr q22, filter_para
|
||||
w17_h_mc_luma_loop:
|
||||
ld1 {v2.16b, v3.16b}, [x0], x1 //only use 22(17+5); v2=src[-2]
|
||||
|
||||
ld1 {v2.8b, v3.8b, v4.8b}, [x0], x1 //only use 22(17+5); v2=src[-2]
|
||||
trn1 v2.2d, v2.2d, v3.2d
|
||||
//prfm pldl1strm, [x0]
|
||||
ext v5.16b, v2.16b, v3.16b, #1 //v5=src[-1]
|
||||
ext v6.16b, v2.16b, v3.16b, #2 //v6=src[0]
|
||||
ext v7.16b, v2.16b, v3.16b, #3 //v7=src[1]
|
||||
ext v16.16b, v2.16b, v3.16b, #4 //v16=src[2]
|
||||
ext v17.16b, v2.16b, v3.16b, #5 //v17=src[3]
|
||||
ext v5.16b, v2.16b, v4.16b, #1 //v5=src[-1]
|
||||
ext v6.16b, v2.16b, v4.16b, #2 //v6=src[0]
|
||||
ext v7.16b, v2.16b, v4.16b, #3 //v7=src[1]
|
||||
ext v16.16b, v2.16b, v4.16b, #4 //v16=src[2]
|
||||
ext v17.16b, v2.16b, v4.16b, #5 //v17=src[3]
|
||||
|
||||
FILTER_6TAG_8BITS1 v2, v5, v6, v7, v16, v17, v20, v0, v1
|
||||
FILTER_6TAG_8BITS2 v2, v5, v6, v7, v16, v17, v20, v0, v1
|
||||
st1 {v20.16b}, [x2], x5 //write 16Byte
|
||||
|
||||
ext v21.8b, v3.8b, v3.8b, #7 // [0][1][2][3][4][5]XY-->O[0][1][2][3][4][5]X
|
||||
ext.8b v21, v4, v4, #7 // [0][1][2][3][4][5]XY-->O[0][1][2][3][4][5]X
|
||||
FILTER_SINGLE_TAG_8BITS v21, v22, v23, h21
|
||||
st1 {v21.b}[0], [x2], x3 //write 16th Byte
|
||||
|
||||
@@ -1808,8 +1808,8 @@ WELS_ASM_AARCH64_FUNC_BEGIN McHorVer20Width9_AArch64_neon
|
||||
movi v1.8h, #5, lsl #0
|
||||
ldr q22, filter_para
|
||||
w9_h_mc_luma_loop:
|
||||
ld1 {v2.16b}, [x0], x1 //only use 14(9+5); v2=src[-2]
|
||||
mov v3.d[0], v2.d[1]
|
||||
ld1 {v2.8b, v3.8b}, [x0], x1 //only use 14(9+5); v2=src[-2]
|
||||
trn1 v2.2d, v2.2d, v3.2d
|
||||
//prfm pldl1strm, [x0]
|
||||
ext v5.16b, v2.16b, v4.16b, #1 //v5=src[-1]
|
||||
ext v6.16b, v2.16b, v4.16b, #2 //v6=src[0]
|
||||
@@ -1820,7 +1820,7 @@ w9_h_mc_luma_loop:
|
||||
FILTER_6TAG_8BITS1 v2, v5, v6, v7, v16, v17, v20, v0, v1
|
||||
st1 {v20.8b}, [x2], x5 //write 8Byte
|
||||
|
||||
ext v21.8b, v3.8b, v3.8b, #7 // [0][1][2][3][4][5]XY-->O[0][1][2][3][4][5]X
|
||||
ext.8b v21, v3, v3, #7 // [0][1][2][3][4][5]XY-->O[0][1][2][3][4][5]X
|
||||
FILTER_SINGLE_TAG_8BITS v21, v22, v23, h21
|
||||
st1 {v21.b}[0], [x2], x3 //write 9th Byte
|
||||
|
||||
|
||||
@@ -117,8 +117,6 @@ WELS_THREAD_ERROR_CODE WelsMultipleEventsWaitAllBlocking (uint32_t nCount, WE
|
||||
WELS_THREAD_ERROR_CODE WelsThreadCreate (WELS_THREAD_HANDLE* thread, LPWELS_THREAD_ROUTINE routine,
|
||||
void* arg, WELS_THREAD_ATTR attr);
|
||||
|
||||
WELS_THREAD_ERROR_CODE WelsThreadSetName (const char* thread_name);
|
||||
|
||||
WELS_THREAD_ERROR_CODE WelsThreadJoin (WELS_THREAD_HANDLE thread);
|
||||
|
||||
WELS_THREAD_HANDLE WelsThreadSelf();
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
#include <sys/types.h>
|
||||
#include <sys/timeb.h>
|
||||
#else
|
||||
#include <sys/timeb.h>
|
||||
#include <sys/time.h>
|
||||
#include "typedefs.h"
|
||||
#endif//_WIN32
|
||||
@@ -71,10 +72,7 @@ typedef FILE WelsFileHandle;
|
||||
#ifdef _WIN32
|
||||
typedef struct _timeb SWelsTime;
|
||||
#else
|
||||
typedef struct TagWelsTime {
|
||||
time_t time;
|
||||
unsigned short millitm;
|
||||
} SWelsTime;
|
||||
typedef struct timeb SWelsTime;
|
||||
#endif
|
||||
|
||||
int32_t WelsSnprintf (char* buffer, int32_t sizeOfBuffer, const char* format, ...);
|
||||
|
||||
@@ -1,76 +0,0 @@
|
||||
/*!
|
||||
* \copy
|
||||
* Copyright (c) 2009-2013, Cisco Systems
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*
|
||||
* \file intra_pred_common.h
|
||||
*
|
||||
* \brief interfaces for intra predictor about 16x16.
|
||||
*
|
||||
* \date 4/2/2014 Created
|
||||
*
|
||||
*************************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef INTRA_PRED_COMMON_H
|
||||
#define INTRA_PRED_COMMON_H
|
||||
|
||||
#include "typedefs.h"
|
||||
|
||||
|
||||
void WelsI16x16LumaPredV_c (uint8_t* pPred, uint8_t* pRef, const int32_t kiStride);
|
||||
void WelsI16x16LumaPredH_c (uint8_t* pPred, uint8_t* pRef, const int32_t kiStride);
|
||||
|
||||
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
#endif//__cplusplus
|
||||
|
||||
#if defined(X86_ASM)
|
||||
//for intra-prediction ASM functions
|
||||
void WelsI16x16LumaPredV_sse2 (uint8_t* pPred, uint8_t* pRef, const int32_t kiStride);
|
||||
void WelsI16x16LumaPredH_sse2 (uint8_t* pPred, uint8_t* pRef, const int32_t kiStride);
|
||||
#endif//X86_ASM
|
||||
|
||||
#if defined(HAVE_NEON)
|
||||
void WelsI16x16LumaPredV_neon (uint8_t* pPred, uint8_t* pRef, const int32_t kiStride);
|
||||
void WelsI16x16LumaPredH_neon (uint8_t* pPred, uint8_t* pRef, const int32_t kiStride);
|
||||
#endif//HAVE_NEON
|
||||
|
||||
#if defined(HAVE_NEON_AARCH64)
|
||||
void WelsI16x16LumaPredV_AArch64_neon (uint8_t* pPred, uint8_t* pRef, const int32_t kiStride);
|
||||
void WelsI16x16LumaPredH_AArch64_neon (uint8_t* pPred, uint8_t* pRef, const int32_t kiStride);
|
||||
#endif//HAVE_NEON_AARCH64
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif//__cplusplus
|
||||
#endif//
|
||||
|
||||
|
||||
|
||||
@@ -40,13 +40,13 @@
|
||||
|
||||
struct tagUnaligned_64 {
|
||||
uint64_t l;
|
||||
} __attribute__ ((packed)) __attribute__ ((may_alias));
|
||||
} __attribute__ ((packed));
|
||||
struct tagUnaligned_32 {
|
||||
uint32_t l;
|
||||
} __attribute__ ((packed)) __attribute__ ((may_alias));
|
||||
} __attribute__ ((packed));
|
||||
struct tagUnaligned_16 {
|
||||
uint16_t l;
|
||||
} __attribute__ ((packed)) __attribute__ ((may_alias));
|
||||
} __attribute__ ((packed));
|
||||
|
||||
#define LD16(a) (((struct tagUnaligned_16 *) (a))->l)
|
||||
#define LD32(a) (((struct tagUnaligned_32 *) (a))->l)
|
||||
@@ -54,7 +54,7 @@ struct tagUnaligned_16 {
|
||||
|
||||
#define STRUCTA(size, align) struct tagUnaligned_##size##_##align {\
|
||||
uint##size##_t l; \
|
||||
} __attribute__ ((aligned(align))) __attribute__ ((may_alias))
|
||||
} __attribute__ ((aligned(align)))
|
||||
STRUCTA (16, 2);
|
||||
STRUCTA (32, 2);
|
||||
STRUCTA (32, 4);
|
||||
|
||||
@@ -47,6 +47,7 @@
|
||||
#include <sys/time.h>
|
||||
#else
|
||||
#include <windows.h>
|
||||
#include <sys/timeb.h>
|
||||
#endif
|
||||
#include <time.h>
|
||||
|
||||
|
||||
@@ -43,8 +43,6 @@
|
||||
#include "typedefs.h"
|
||||
|
||||
#define MAX_LOG_SIZE 1024
|
||||
#define MAX_WIDTH (4096)
|
||||
#define MAX_HEIGHT (2304)//MAX_FS_LEVEL51 (36864); MAX_FS_LEVEL51*256/4096 = 2304
|
||||
/*
|
||||
* Function pointer declaration for various tool sets
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#ifndef VERSION_H
|
||||
#define VERSION_H
|
||||
|
||||
#define VERSION_NUMBER "openh264 default: 1.2"
|
||||
#define VERSION_NUMBER "openh264 default: 1.1"
|
||||
|
||||
#endif // VERSION_H
|
||||
|
||||
@@ -42,21 +42,6 @@
|
||||
namespace WelsCommon {
|
||||
/*common use table*/
|
||||
|
||||
#define LEVEL_NUMBER 17
|
||||
typedef struct TagLevelLimits {
|
||||
uint8_t uiLevelIdc; // level idc
|
||||
uint32_t uiMaxMBPS; // Max macroblock processing rate(MB/s)
|
||||
uint32_t uiMaxFS; // Max frame sizea(MBs)
|
||||
uint32_t uiMaxDPBMbs;// Max decoded picture buffer size(MBs)
|
||||
uint32_t uiMaxBR; // Max video bit rate
|
||||
uint32_t uiMaxCPB; // Max CPB size
|
||||
int16_t iMinVmv; // Vertical MV component range upper bound
|
||||
int16_t iMaxVmv; // Vertical MV component range lower bound
|
||||
uint16_t uiMinCR; // Min compression ration
|
||||
int16_t iMaxMvsPer2Mb; // Max number of motion vectors per two consecutive MBs
|
||||
} SLevelLimits;
|
||||
|
||||
extern const SLevelLimits g_ksLevelLimits[LEVEL_NUMBER];
|
||||
extern const uint8_t g_kuiMbCountScan4Idx[24];
|
||||
extern const uint8_t g_kuiCache30ScanIdx[16];
|
||||
extern const uint8_t g_kuiCache48CountScan4Idx[24];
|
||||
@@ -68,38 +53,38 @@ extern const uint8_t g_kuiChromaQpTable[52];
|
||||
* NAL Unit Type (5 Bits)
|
||||
*/
|
||||
enum EWelsNalUnitType {
|
||||
NAL_UNIT_UNSPEC_0 = 0,
|
||||
NAL_UNIT_CODED_SLICE = 1,
|
||||
NAL_UNIT_CODED_SLICE_DPA = 2,
|
||||
NAL_UNIT_CODED_SLICE_DPB = 3,
|
||||
NAL_UNIT_CODED_SLICE_DPC = 4,
|
||||
NAL_UNIT_CODED_SLICE_IDR = 5,
|
||||
NAL_UNIT_SEI = 6,
|
||||
NAL_UNIT_SPS = 7,
|
||||
NAL_UNIT_PPS = 8,
|
||||
NAL_UNIT_AU_DELIMITER = 9,
|
||||
NAL_UNIT_END_OF_SEQ = 10,
|
||||
NAL_UNIT_END_OF_STR = 11,
|
||||
NAL_UNIT_FILLER_DATA = 12,
|
||||
NAL_UNIT_SPS_EXT = 13,
|
||||
NAL_UNIT_PREFIX = 14,
|
||||
NAL_UNIT_SUBSET_SPS = 15,
|
||||
NAL_UNIT_RESV_16 = 16,
|
||||
NAL_UNIT_RESV_17 = 17,
|
||||
NAL_UNIT_RESV_18 = 18,
|
||||
NAL_UNIT_AUX_CODED_SLICE = 19,
|
||||
NAL_UNIT_CODED_SLICE_EXT = 20,
|
||||
NAL_UNIT_RESV_21 = 21,
|
||||
NAL_UNIT_RESV_22 = 22,
|
||||
NAL_UNIT_RESV_23 = 23,
|
||||
NAL_UNIT_UNSPEC_24 = 24,
|
||||
NAL_UNIT_UNSPEC_25 = 25,
|
||||
NAL_UNIT_UNSPEC_26 = 26,
|
||||
NAL_UNIT_UNSPEC_27 = 27,
|
||||
NAL_UNIT_UNSPEC_28 = 28,
|
||||
NAL_UNIT_UNSPEC_29 = 29,
|
||||
NAL_UNIT_UNSPEC_30 = 30,
|
||||
NAL_UNIT_UNSPEC_31 = 31
|
||||
NAL_UNIT_UNSPEC_0 = 0,
|
||||
NAL_UNIT_CODED_SLICE = 1,
|
||||
NAL_UNIT_CODED_SLICE_DPA = 2,
|
||||
NAL_UNIT_CODED_SLICE_DPB = 3,
|
||||
NAL_UNIT_CODED_SLICE_DPC = 4,
|
||||
NAL_UNIT_CODED_SLICE_IDR = 5,
|
||||
NAL_UNIT_SEI = 6,
|
||||
NAL_UNIT_SPS = 7,
|
||||
NAL_UNIT_PPS = 8,
|
||||
NAL_UNIT_AU_DELIMITER = 9,
|
||||
NAL_UNIT_END_OF_SEQ = 10,
|
||||
NAL_UNIT_END_OF_STR = 11,
|
||||
NAL_UNIT_FILLER_DATA = 12,
|
||||
NAL_UNIT_SPS_EXT = 13,
|
||||
NAL_UNIT_PREFIX = 14,
|
||||
NAL_UNIT_SUBSET_SPS = 15,
|
||||
NAL_UNIT_RESV_16 = 16,
|
||||
NAL_UNIT_RESV_17 = 17,
|
||||
NAL_UNIT_RESV_18 = 18,
|
||||
NAL_UNIT_AUX_CODED_SLICE = 19,
|
||||
NAL_UNIT_CODED_SLICE_EXT = 20,
|
||||
NAL_UNIT_RESV_21 = 21,
|
||||
NAL_UNIT_RESV_22 = 22,
|
||||
NAL_UNIT_RESV_23 = 23,
|
||||
NAL_UNIT_UNSPEC_24 = 24,
|
||||
NAL_UNIT_UNSPEC_25 = 25,
|
||||
NAL_UNIT_UNSPEC_26 = 26,
|
||||
NAL_UNIT_UNSPEC_27 = 27,
|
||||
NAL_UNIT_UNSPEC_28 = 28,
|
||||
NAL_UNIT_UNSPEC_29 = 29,
|
||||
NAL_UNIT_UNSPEC_30 = 30,
|
||||
NAL_UNIT_UNSPEC_31 = 31
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -107,10 +92,10 @@ enum EWelsNalUnitType {
|
||||
*/
|
||||
|
||||
enum EWelsNalRefIdc {
|
||||
NRI_PRI_LOWEST = 0,
|
||||
NRI_PRI_LOW = 1,
|
||||
NRI_PRI_HIGH = 2,
|
||||
NRI_PRI_HIGHEST = 3
|
||||
NRI_PRI_LOWEST = 0,
|
||||
NRI_PRI_LOW = 1,
|
||||
NRI_PRI_HIGH = 2,
|
||||
NRI_PRI_HIGHEST = 3
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -118,9 +103,9 @@ enum EWelsNalRefIdc {
|
||||
*/
|
||||
|
||||
enum EVclType {
|
||||
NON_VCL = 0,
|
||||
VCL = 1,
|
||||
NOT_APP = 2
|
||||
NON_VCL = 0,
|
||||
VCL = 1,
|
||||
NOT_APP = 2
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -147,43 +132,43 @@ extern const EVclType g_keTypeMap[32][2];
|
||||
*/
|
||||
|
||||
enum EWelsSliceType {
|
||||
P_SLICE = 0,
|
||||
B_SLICE = 1,
|
||||
I_SLICE = 2,
|
||||
SP_SLICE = 3,
|
||||
SI_SLICE = 4,
|
||||
UNKNOWN_SLICE = 5
|
||||
P_SLICE = 0,
|
||||
B_SLICE = 1,
|
||||
I_SLICE = 2,
|
||||
SP_SLICE = 3,
|
||||
SI_SLICE = 4,
|
||||
UNKNOWN_SLICE = 5
|
||||
};
|
||||
|
||||
/* SSlice Types in scalable extension */
|
||||
/* SSlice Types in scalable extension */ ;
|
||||
enum ESliceTypeExt {
|
||||
EP_SLICE = 0, // EP_SLICE: 0, 5
|
||||
EB_SLICE = 1, // EB_SLICE: 1, 6
|
||||
EI_SLICE = 2 // EI_SLICE: 2, 7
|
||||
EP_SLICE = 0, // EP_SLICE: 0, 5
|
||||
EB_SLICE = 1, // EB_SLICE: 1, 6
|
||||
EI_SLICE = 2 // EI_SLICE: 2, 7
|
||||
};
|
||||
|
||||
/* List Index */
|
||||
enum EListIndex {
|
||||
LIST_0 = 0,
|
||||
LIST_1 = 1,
|
||||
LIST_A = 2
|
||||
LIST_0 = 0,
|
||||
LIST_1 = 1,
|
||||
LIST_A = 2
|
||||
};
|
||||
|
||||
|
||||
|
||||
/* Motion Vector components */
|
||||
enum EMvComp {
|
||||
MV_X = 0,
|
||||
MV_Y = 1,
|
||||
MV_A = 2
|
||||
MV_X = 0,
|
||||
MV_Y = 1,
|
||||
MV_A = 2
|
||||
};
|
||||
|
||||
/* Chroma Components */
|
||||
|
||||
enum EChromaComp {
|
||||
CHROMA_CB = 0,
|
||||
CHROMA_CR = 1,
|
||||
CHROMA_A = 2
|
||||
CHROMA_CB = 0,
|
||||
CHROMA_CR = 1,
|
||||
CHROMA_A = 2
|
||||
};
|
||||
|
||||
|
||||
@@ -192,13 +177,13 @@ enum EChromaComp {
|
||||
* Memory Management Control Operation (MMCO) code
|
||||
*/
|
||||
enum EMmcoCode {
|
||||
MMCO_END = 0,
|
||||
MMCO_SHORT2UNUSED = 1,
|
||||
MMCO_LONG2UNUSED = 2,
|
||||
MMCO_SHORT2LONG = 3,
|
||||
MMCO_SET_MAX_LONG = 4,
|
||||
MMCO_RESET = 5,
|
||||
MMCO_LONG = 6
|
||||
MMCO_END = 0,
|
||||
MMCO_SHORT2UNUSED = 1,
|
||||
MMCO_LONG2UNUSED = 2,
|
||||
MMCO_SHORT2LONG = 3,
|
||||
MMCO_SET_MAX_LONG = 4,
|
||||
MMCO_RESET = 5,
|
||||
MMCO_LONG = 6
|
||||
};
|
||||
|
||||
/////////intra16x16 Luma
|
||||
|
||||
@@ -58,9 +58,6 @@
|
||||
#ifdef ANDROID_NDK
|
||||
#include <cpu-features.h>
|
||||
#endif
|
||||
#ifdef __ANDROID__
|
||||
#include <android/api-level.h>
|
||||
#endif
|
||||
|
||||
#include "WelsThreadLib.h"
|
||||
#include <stdio.h>
|
||||
@@ -198,12 +195,6 @@ WELS_THREAD_ERROR_CODE WelsThreadCreate (WELS_THREAD_HANDLE* thread, LPWELS_
|
||||
return WELS_THREAD_ERROR_OK;
|
||||
}
|
||||
|
||||
WELS_THREAD_ERROR_CODE WelsThreadSetName (const char* thread_name) {
|
||||
// do nothing
|
||||
return WELS_THREAD_ERROR_OK;
|
||||
}
|
||||
|
||||
|
||||
WELS_THREAD_ERROR_CODE WelsThreadJoin (WELS_THREAD_HANDLE thread) {
|
||||
WaitForSingleObject (thread, INFINITE);
|
||||
CloseHandle (thread);
|
||||
@@ -251,17 +242,6 @@ WELS_THREAD_ERROR_CODE WelsThreadCreate (WELS_THREAD_HANDLE* thread, LPWELS_
|
||||
return err;
|
||||
}
|
||||
|
||||
WELS_THREAD_ERROR_CODE WelsThreadSetName (const char* thread_name) {
|
||||
#ifdef APPLE_IOS
|
||||
pthread_setname_np(thread_name);
|
||||
#endif
|
||||
#if defined(__ANDROID__) && __ANDROID_API__ >= 9
|
||||
pthread_setname_np(pthread_self(), thread_name);
|
||||
#endif
|
||||
// do nothing
|
||||
return WELS_THREAD_ERROR_OK;
|
||||
}
|
||||
|
||||
WELS_THREAD_ERROR_CODE WelsThreadJoin (WELS_THREAD_HANDLE thread) {
|
||||
return pthread_join (thread, NULL);
|
||||
}
|
||||
|
||||
@@ -149,29 +149,5 @@ ALIGNED_DECLARE (const uint16_t, g_kuiDequantCoeff[52][8], 16) = {
|
||||
/*50*/{ 3328, 4096, 3328, 4096, 4096, 5120, 4096, 5120 }, /*51*/{ 3584, 4608, 3584, 4608, 4608, 5888, 4608, 5888 },
|
||||
};
|
||||
|
||||
// table A-1 - Level limits
|
||||
const SLevelLimits g_ksLevelLimits[LEVEL_NUMBER] = {
|
||||
{10, 1485, 99, 396, 64, 175, -256, 255, 2, 0x7fff}, /* level 1 */
|
||||
{9, 1485, 99, 396, 128, 350, -256, 255, 2, 0x7fff}, /* level 1.b */
|
||||
{11, 3000, 396, 900, 192, 500, -512, 511, 2, 0x7fff}, /* level 1.1 */
|
||||
{12, 6000, 396, 2376, 384, 1000, -512, 511, 2, 0x7fff}, /* level 1.2 */
|
||||
{13, 11880, 396, 2376, 768, 2000, -512, 511, 2, 0x7fff}, /* level 1.3 */
|
||||
|
||||
{20, 11880, 396, 2376, 2000, 2000, -512, 511, 2, 0x7fff}, /* level 2 */
|
||||
{21, 19800, 792, 4752, 4000, 4000, -1024, 1023, 2, 0x7fff}, /* level 2.1 */
|
||||
{22, 20250, 1620, 8100, 4000, 4000, -1024, 1023, 2, 0x7fff}, /* level 2.2 */
|
||||
|
||||
{30, 40500, 1620, 8100, 10000, 10000, -1024, 1023, 2, 32 }, /* level 3 */
|
||||
{31, 108000, 3600, 18000, 14000, 14000, -2048, 2047, 4, 16}, /* level 3.1 */
|
||||
{32, 216000, 5120, 20480, 20000, 20000, -2048, 2047, 4, 16}, /* level 3.2 */
|
||||
|
||||
{40, 245760, 8192, 32768, 20000, 25000, -2048, 2047, 4, 16}, /* level 4 */
|
||||
{41, 245760, 8192, 32768, 50000, 62500, -2048, 2047, 2, 16}, /* level 4.1 */
|
||||
{42, 522240, 8704, 34816, 50000, 62500, -2048, 2047, 2, 16}, /* level 4.2 */
|
||||
|
||||
{50, 589824, 22080, 110400, 135000, 135000, -2048, 2047, 2, 16}, /* level 5 */
|
||||
{51, 983040, 36864, 184320, 240000, 240000, -2048, 2047, 2, 16}, /* level 5.1 */
|
||||
{52, 2073600, 36864, 184320, 240000, 240000, -2048, 2047, 2, 16} /* level 5.2 */
|
||||
};
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
}
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
#endif //!_MSC_VER
|
||||
#else
|
||||
#include <sys/time.h>
|
||||
#include <sys/timeb.h>
|
||||
#endif //_WIN32
|
||||
|
||||
#include "macros.h"
|
||||
|
||||
@@ -136,4 +136,4 @@ void WelsSampleSadFour4x4_c (uint8_t* iSample1, int32_t iStride1, uint8_t* iSamp
|
||||
* (pSad + 1) = WelsSampleSad4x4_c (iSample1, iStride1, (iSample2 + iStride2), iStride2);
|
||||
* (pSad + 2) = WelsSampleSad4x4_c (iSample1, iStride1, (iSample2 - 1), iStride2);
|
||||
* (pSad + 3) = WelsSampleSad4x4_c (iSample1, iStride1, (iSample2 + 1), iStride2);
|
||||
}
|
||||
}
|
||||
@@ -68,7 +68,7 @@ void WelsLog (SLogContext* logCtx, int32_t iLevel, const char* kpFmt, ...) {
|
||||
WelsSnprintf (pTraceTag, MAX_LOG_SIZE, "[OpenH264] Detail:");
|
||||
break;
|
||||
}
|
||||
WelsStrcat (pTraceTag, MAX_LOG_SIZE, kpFmt);
|
||||
WelsStrcat(pTraceTag,MAX_LOG_SIZE,kpFmt);
|
||||
va_start (vl, kpFmt);
|
||||
logCtx->pfLog (logCtx->pLogCtx, iLevel, pTraceTag, vl);
|
||||
va_end (vl);
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
|
||||
|
||||
static void welsStderrTrace (void* ctx, int level, const char* string) {
|
||||
fprintf (stderr, "%s\n", string);
|
||||
fprintf (stderr, "%s", string);
|
||||
}
|
||||
|
||||
welsCodecTrace::welsCodecTrace() {
|
||||
@@ -78,9 +78,8 @@ void welsCodecTrace::CodecTrace (const int32_t iLevel, const char* Str_Format, v
|
||||
|
||||
char pBuf[MAX_LOG_SIZE] = {0};
|
||||
WelsVsnprintf (pBuf, MAX_LOG_SIZE, Str_Format, vl); // confirmed_safe_unsafe_usage
|
||||
if (m_fpTrace) {
|
||||
m_fpTrace (m_pTraceCtx, iLevel, pBuf);
|
||||
}
|
||||
|
||||
m_fpTrace (m_pTraceCtx, iLevel, pBuf);
|
||||
}
|
||||
|
||||
void welsCodecTrace::SetTraceLevel (const int32_t iLevel) {
|
||||
|
||||
@@ -6,7 +6,6 @@ COMMON_CPP_SRCS=\
|
||||
$(COMMON_SRCDIR)/src/crt_util_safe_x.cpp\
|
||||
$(COMMON_SRCDIR)/src/deblocking_common.cpp\
|
||||
$(COMMON_SRCDIR)/src/expand_pic.cpp\
|
||||
$(COMMON_SRCDIR)/src/intra_pred_common.cpp\
|
||||
$(COMMON_SRCDIR)/src/sad_common.cpp\
|
||||
$(COMMON_SRCDIR)/src/utils.cpp\
|
||||
$(COMMON_SRCDIR)/src/welsCodecTrace.cpp\
|
||||
@@ -14,51 +13,41 @@ COMMON_CPP_SRCS=\
|
||||
|
||||
COMMON_OBJS += $(COMMON_CPP_SRCS:.cpp=.$(OBJ))
|
||||
|
||||
ifeq ($(ASM_ARCH), x86)
|
||||
COMMON_ASM_SRCS=\
|
||||
$(COMMON_SRCDIR)/x86/cpuid.asm\
|
||||
$(COMMON_SRCDIR)/x86/deblock.asm\
|
||||
$(COMMON_SRCDIR)/x86/expand_picture.asm\
|
||||
$(COMMON_SRCDIR)/x86/intra_pred_com.asm\
|
||||
$(COMMON_SRCDIR)/x86/mb_copy.asm\
|
||||
$(COMMON_SRCDIR)/x86/mc_chroma.asm\
|
||||
$(COMMON_SRCDIR)/x86/mc_luma.asm\
|
||||
$(COMMON_SRCDIR)/x86/satd_sad.asm\
|
||||
$(COMMON_SRCDIR)/x86/vaa.asm\
|
||||
|
||||
COMMON_OBJSASM += $(COMMON_ASM_SRCS:.asm=.$(OBJ))
|
||||
ifeq ($(ASM_ARCH), x86)
|
||||
COMMON_OBJS += $(COMMON_OBJSASM)
|
||||
COMMON_OBJS += $(COMMON_ASM_SRCS:.asm=.$(OBJ))
|
||||
endif
|
||||
OBJS += $(COMMON_OBJSASM)
|
||||
|
||||
ifeq ($(ASM_ARCH), arm)
|
||||
COMMON_ASM_ARM_SRCS=\
|
||||
$(COMMON_SRCDIR)/arm/copy_mb_neon.S\
|
||||
$(COMMON_SRCDIR)/arm/deblocking_neon.S\
|
||||
$(COMMON_SRCDIR)/arm/expand_picture_neon.S\
|
||||
$(COMMON_SRCDIR)/arm/intra_pred_common_neon.S\
|
||||
$(COMMON_SRCDIR)/arm/mc_neon.S\
|
||||
|
||||
COMMON_OBJSARM += $(COMMON_ASM_ARM_SRCS:.S=.$(OBJ))
|
||||
ifeq ($(ASM_ARCH), arm)
|
||||
COMMON_OBJS += $(COMMON_OBJSARM)
|
||||
COMMON_OBJS += $(COMMON_ASM_ARM_SRCS:.S=.$(OBJ))
|
||||
endif
|
||||
OBJS += $(COMMON_OBJSARM)
|
||||
|
||||
ifeq ($(ASM_ARCH), arm64)
|
||||
COMMON_ASM_ARM64_SRCS=\
|
||||
$(COMMON_SRCDIR)/arm64/copy_mb_aarch64_neon.S\
|
||||
$(COMMON_SRCDIR)/arm64/deblocking_aarch64_neon.S\
|
||||
$(COMMON_SRCDIR)/arm64/expand_picture_aarch64_neon.S\
|
||||
$(COMMON_SRCDIR)/arm64/intra_pred_common_aarch64_neon.S\
|
||||
$(COMMON_SRCDIR)/arm64/mc_aarch64_neon.S\
|
||||
|
||||
COMMON_OBJSARM64 += $(COMMON_ASM_ARM64_SRCS:.S=.$(OBJ))
|
||||
ifeq ($(ASM_ARCH), arm64)
|
||||
COMMON_OBJS += $(COMMON_OBJSARM64)
|
||||
COMMON_OBJS += $(COMMON_ASM_ARM64_SRCS:.S=.$(OBJ))
|
||||
endif
|
||||
OBJS += $(COMMON_OBJSARM64)
|
||||
|
||||
OBJS += $(COMMON_OBJS)
|
||||
|
||||
$(COMMON_SRCDIR)/%.$(OBJ): $(COMMON_SRCDIR)/%.cpp
|
||||
$(QUIET_CXX)$(CXX) $(CFLAGS) $(CXXFLAGS) $(INCLUDES) $(COMMON_CFLAGS) $(COMMON_INCLUDES) -c $(CXX_O) $<
|
||||
|
||||
|
||||
@@ -116,10 +116,6 @@ BITS 64
|
||||
|
||||
BITS 64
|
||||
|
||||
%ifidn __OUTPUT_FORMAT__,elf64
|
||||
SECTION .note.GNU-stack noalloc noexec nowrite progbits ; Mark the stack as non-executable
|
||||
%endif
|
||||
|
||||
%define arg1 rdi
|
||||
%define arg2 rsi
|
||||
%define arg3 rdx
|
||||
@@ -170,10 +166,6 @@ SECTION .note.GNU-stack noalloc noexec nowrite progbits ; Mark the stack as non-
|
||||
|
||||
BITS 32
|
||||
|
||||
%ifidn __OUTPUT_FORMAT__,elf
|
||||
SECTION .note.GNU-stack noalloc noexec nowrite progbits ; Mark the stack as non-executable
|
||||
%endif
|
||||
|
||||
%define arg1 [esp + push_num*4 + 4]
|
||||
%define arg2 [esp + push_num*4 + 8]
|
||||
%define arg3 [esp + push_num*4 + 12]
|
||||
|
||||
@@ -1,117 +0,0 @@
|
||||
;*!
|
||||
;* \copy
|
||||
;* Copyright (c) 2009-2013, Cisco Systems
|
||||
;* All rights reserved.
|
||||
;*
|
||||
;* Redistribution and use in source and binary forms, with or without
|
||||
;* modification, are permitted provided that the following conditions
|
||||
;* are met:
|
||||
;*
|
||||
;* * Redistributions of source code must retain the above copyright
|
||||
;* notice, this list of conditions and the following disclaimer.
|
||||
;*
|
||||
;* * Redistributions in binary form must reproduce the above copyright
|
||||
;* notice, this list of conditions and the following disclaimer in
|
||||
;* the documentation and/or other materials provided with the
|
||||
;* distribution.
|
||||
;*
|
||||
;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
;* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
;* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
;* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
;* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
;* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
;* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
;* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
;* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
;* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
;* POSSIBILITY OF SUCH DAMAGE.
|
||||
;*
|
||||
;*
|
||||
;* intra_pred_common.asm
|
||||
;*
|
||||
;* Abstract
|
||||
;* sse2 function for intra predict operations
|
||||
;*
|
||||
;* History
|
||||
;* 18/09/2009 Created
|
||||
;*
|
||||
;*
|
||||
;*************************************************************************/
|
||||
%include "asm_inc.asm"
|
||||
|
||||
;***********************************************************************
|
||||
; Code
|
||||
;***********************************************************************
|
||||
|
||||
SECTION .text
|
||||
|
||||
;***********************************************************************
|
||||
; void WelsI16x16LumaPredH_sse2(uint8_t *pred, uint8_t *pRef, int32_t stride);
|
||||
;***********************************************************************
|
||||
|
||||
%macro SSE2_PRED_H_16X16_ONE_LINE 0
|
||||
add r0, 16
|
||||
add r1, r2
|
||||
movzx r3, byte [r1]
|
||||
SSE2_Copy16Times xmm0, r3d
|
||||
movdqa [r0], xmm0
|
||||
%endmacro
|
||||
|
||||
WELS_EXTERN WelsI16x16LumaPredH_sse2
|
||||
push r3
|
||||
%assign push_num 1
|
||||
LOAD_3_PARA
|
||||
SIGN_EXTENSION r2, r2d
|
||||
dec r1
|
||||
movzx r3, byte [r1]
|
||||
SSE2_Copy16Times xmm0, r3d
|
||||
movdqa [r0], xmm0
|
||||
SSE2_PRED_H_16X16_ONE_LINE
|
||||
SSE2_PRED_H_16X16_ONE_LINE
|
||||
SSE2_PRED_H_16X16_ONE_LINE
|
||||
SSE2_PRED_H_16X16_ONE_LINE
|
||||
SSE2_PRED_H_16X16_ONE_LINE
|
||||
SSE2_PRED_H_16X16_ONE_LINE
|
||||
SSE2_PRED_H_16X16_ONE_LINE
|
||||
SSE2_PRED_H_16X16_ONE_LINE
|
||||
SSE2_PRED_H_16X16_ONE_LINE
|
||||
SSE2_PRED_H_16X16_ONE_LINE
|
||||
SSE2_PRED_H_16X16_ONE_LINE
|
||||
SSE2_PRED_H_16X16_ONE_LINE
|
||||
SSE2_PRED_H_16X16_ONE_LINE
|
||||
SSE2_PRED_H_16X16_ONE_LINE
|
||||
SSE2_PRED_H_16X16_ONE_LINE
|
||||
pop r3
|
||||
ret
|
||||
|
||||
;***********************************************************************
|
||||
; void WelsI16x16LumaPredV_sse2(uint8_t *pred, uint8_t *pRef, int32_t stride);
|
||||
;***********************************************************************
|
||||
WELS_EXTERN WelsI16x16LumaPredV_sse2
|
||||
%assign push_num 0
|
||||
LOAD_3_PARA
|
||||
SIGN_EXTENSION r2, r2d
|
||||
sub r1, r2
|
||||
movdqa xmm0, [r1]
|
||||
|
||||
movdqa [r0], xmm0
|
||||
movdqa [r0+10h], xmm0
|
||||
movdqa [r0+20h], xmm0
|
||||
movdqa [r0+30h], xmm0
|
||||
movdqa [r0+40h], xmm0
|
||||
movdqa [r0+50h], xmm0
|
||||
movdqa [r0+60h], xmm0
|
||||
movdqa [r0+70h], xmm0
|
||||
movdqa [r0+80h], xmm0
|
||||
movdqa [r0+90h], xmm0
|
||||
movdqa [r0+160], xmm0
|
||||
movdqa [r0+176], xmm0
|
||||
movdqa [r0+192], xmm0
|
||||
movdqa [r0+208], xmm0
|
||||
movdqa [r0+224], xmm0
|
||||
movdqa [r0+240], xmm0
|
||||
|
||||
ret
|
||||
|
||||
@@ -42,25 +42,26 @@
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string>
|
||||
using namespace std;
|
||||
|
||||
|
||||
class CReadConfig {
|
||||
public:
|
||||
CReadConfig();
|
||||
CReadConfig (const char* pConfigFileName);
|
||||
CReadConfig (const std::string& pConfigFileName);
|
||||
CReadConfig (const string& pConfigFileName);
|
||||
virtual ~CReadConfig();
|
||||
|
||||
void Openf (const char* strFile);
|
||||
long ReadLine (std::string* strVal, const int iValSize = 4);
|
||||
long ReadLine (string* strVal, const int iValSize = 4);
|
||||
const bool EndOfFile();
|
||||
const int GetLines();
|
||||
const bool ExistFile();
|
||||
const std::string& GetFileName();
|
||||
const string& GetFileName();
|
||||
|
||||
private:
|
||||
FILE* m_pCfgFile;
|
||||
std::string m_strCfgFileName;
|
||||
string m_strCfgFileName;
|
||||
unsigned int m_iLines;
|
||||
};
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@ CReadConfig::CReadConfig (const char* kpConfigFileName)
|
||||
}
|
||||
}
|
||||
|
||||
CReadConfig::CReadConfig (const std::string& kpConfigFileName)
|
||||
CReadConfig::CReadConfig (const string& kpConfigFileName)
|
||||
: m_pCfgFile (0)
|
||||
, m_strCfgFileName (kpConfigFileName)
|
||||
, m_iLines (0) {
|
||||
@@ -81,11 +81,11 @@ void CReadConfig::Openf (const char* kpStrFile) {
|
||||
}
|
||||
}
|
||||
|
||||
long CReadConfig::ReadLine (std::string* pVal, const int kiValSize/* = 4*/) {
|
||||
long CReadConfig::ReadLine (string* pVal, const int kiValSize/* = 4*/) {
|
||||
if (m_pCfgFile == NULL || pVal == NULL || kiValSize <= 1)
|
||||
return 0;
|
||||
|
||||
std::string* strTags = &pVal[0];
|
||||
string* strTags = &pVal[0];
|
||||
int nTagNum = 0, n = 0;
|
||||
bool bCommentFlag = false;
|
||||
|
||||
@@ -134,6 +134,6 @@ const bool CReadConfig::ExistFile() {
|
||||
return (m_pCfgFile != NULL);
|
||||
}
|
||||
|
||||
const std::string& CReadConfig::GetFileName() {
|
||||
const string& CReadConfig::GetFileName() {
|
||||
return m_strCfgFileName;
|
||||
}
|
||||
|
||||
@@ -5,7 +5,6 @@ CONSOLE_COMMON_CPP_SRCS=\
|
||||
CONSOLE_COMMON_OBJS += $(CONSOLE_COMMON_CPP_SRCS:.cpp=.$(OBJ))
|
||||
|
||||
OBJS += $(CONSOLE_COMMON_OBJS)
|
||||
|
||||
$(CONSOLE_COMMON_SRCDIR)/%.$(OBJ): $(CONSOLE_COMMON_SRCDIR)/%.cpp
|
||||
$(QUIET_CXX)$(CXX) $(CFLAGS) $(CXXFLAGS) $(INCLUDES) $(CONSOLE_COMMON_CFLAGS) $(CONSOLE_COMMON_INCLUDES) -c $(CXX_O) $<
|
||||
|
||||
|
||||
@@ -198,7 +198,7 @@ void H264DecodeInstance (ISVCDecoder* pDecoder, const char* kpH264FileName, cons
|
||||
pDecoder->GetOption (DECODER_OPTION_VCL_NAL, &iFeedbackVclNalInAu);
|
||||
int32_t iFeedbackTidInAu;
|
||||
pDecoder->GetOption (DECODER_OPTION_TEMPORAL_ID, &iFeedbackTidInAu);
|
||||
int32_t iErrorConMethod = (int32_t) ERROR_CON_SLICE_COPY;
|
||||
int32_t iErrorConMethod = ERROR_CON_SLICE_COPY;
|
||||
pDecoder->SetOption (DECODER_OPTION_ERROR_CON_IDC, &iErrorConMethod);
|
||||
//~end for
|
||||
|
||||
@@ -349,9 +349,9 @@ int32_t main (int32_t iArgC, char* pArgV[]) {
|
||||
} else if (strTag[0].compare ("TargetDQID") == 0) {
|
||||
sDecParam.uiTargetDqLayer = (uint8_t)atol (strTag[1].c_str());
|
||||
} else if (strTag[0].compare ("OutColorFormat") == 0) {
|
||||
sDecParam.eOutputColorFormat = (EVideoFormatType) atoi (strTag[1].c_str());
|
||||
} else if (strTag[0].compare ("ErrorConcealmentIdc") == 0) {
|
||||
sDecParam.eEcActiveIdc = (ERROR_CON_IDC)atol (strTag[1].c_str());
|
||||
sDecParam.iOutputColorFormat = atoi (strTag[1].c_str());
|
||||
} else if (strTag[0].compare ("ErrorConcealmentFlag") == 0) {
|
||||
sDecParam.uiEcActiveFlag = (uint8_t)atol (strTag[1].c_str());
|
||||
} else if (strTag[0].compare ("CPULoad") == 0) {
|
||||
sDecParam.uiCpuLoad = (uint32_t)atol (strTag[1].c_str());
|
||||
} else if (strTag[0].compare ("VideoBitstreamType") == 0) {
|
||||
@@ -366,17 +366,17 @@ int32_t main (int32_t iArgC, char* pArgV[]) {
|
||||
} else if (strstr (pArgV[1],
|
||||
".264")) { // no output dump yuv file, just try to render the decoded pictures //confirmed_safe_unsafe_usage
|
||||
strInputFile = pArgV[1];
|
||||
sDecParam.eOutputColorFormat = videoFormatI420;
|
||||
sDecParam.iOutputColorFormat = videoFormatI420;
|
||||
sDecParam.uiTargetDqLayer = (uint8_t) - 1;
|
||||
sDecParam.eEcActiveIdc = ERROR_CON_SLICE_COPY;
|
||||
sDecParam.uiEcActiveFlag = 1;
|
||||
sDecParam.sVideoProperty.eVideoBsType = VIDEO_BITSTREAM_DEFAULT;
|
||||
}
|
||||
} else { //iArgC > 2
|
||||
strInputFile = pArgV[1];
|
||||
strOutputFile = pArgV[2];
|
||||
sDecParam.eOutputColorFormat = videoFormatI420;
|
||||
sDecParam.iOutputColorFormat = videoFormatI420;
|
||||
sDecParam.uiTargetDqLayer = (uint8_t) - 1;
|
||||
sDecParam.eEcActiveIdc = ERROR_CON_SLICE_COPY;
|
||||
sDecParam.uiEcActiveFlag = 1;
|
||||
sDecParam.sVideoProperty.eVideoBsType = VIDEO_BITSTREAM_DEFAULT;
|
||||
if (iArgC > 3) {
|
||||
for (int i = 3; i < iArgC; i++) {
|
||||
|
||||
@@ -6,7 +6,6 @@ H264DEC_CPP_SRCS=\
|
||||
H264DEC_OBJS += $(H264DEC_CPP_SRCS:.cpp=.$(OBJ))
|
||||
|
||||
OBJS += $(H264DEC_OBJS)
|
||||
|
||||
$(H264DEC_SRCDIR)/%.$(OBJ): $(H264DEC_SRCDIR)/%.cpp
|
||||
$(QUIET_CXX)$(CXX) $(CFLAGS) $(CXXFLAGS) $(INCLUDES) $(H264DEC_CFLAGS) $(H264DEC_INCLUDES) -c $(CXX_O) $<
|
||||
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
using namespace WelsEnc;
|
||||
using namespace WelsSVCEnc;
|
||||
|
||||
/*
|
||||
* Layer Context
|
||||
@@ -99,7 +99,6 @@ typedef struct tagFilesSet {
|
||||
string strSeqFile; // for cmd lines
|
||||
string strLayerCfgFile[MAX_DEPENDENCY_LAYER];
|
||||
char sRecFileName[MAX_DEPENDENCY_LAYER][MAX_FNAME_LEN];
|
||||
uint32_t uiFrameToBeCoded;
|
||||
} SFilesSet;
|
||||
|
||||
|
||||
@@ -225,7 +224,7 @@ int ParseConfig (CReadConfig& cRdCfg, SSourcePicture* pSrcPic, SEncParamExt& pSv
|
||||
} else if (strTag[0].compare ("MaxFrameRate") == 0) {
|
||||
pSvcParam.fMaxFrameRate = (float)atof (strTag[1].c_str());
|
||||
} else if (strTag[0].compare ("FramesToBeEncoded") == 0) {
|
||||
sFileSet.uiFrameToBeCoded = atoi (strTag[1].c_str());
|
||||
pSvcParam.uiFrameToBeCoded = atoi (strTag[1].c_str());
|
||||
} else if (strTag[0].compare ("TemporalLayerNum") == 0) {
|
||||
pSvcParam.iTemporalLayerNum = atoi (strTag[1].c_str());
|
||||
} else if (strTag[0].compare ("IntraPeriod") == 0) {
|
||||
@@ -294,8 +293,6 @@ int ParseConfig (CReadConfig& cRdCfg, SSourcePicture* pSrcPic, SEncParamExt& pSv
|
||||
pSvcParam.iLTRRefNum = atoi (strTag[1].c_str());
|
||||
} else if (strTag[0].compare ("LtrMarkPeriod") == 0) {
|
||||
pSvcParam.iLtrMarkPeriod = (uint32_t)atoi (strTag[1].c_str());
|
||||
} else if (strTag[0].compare ("LosslessLink") == 0) {
|
||||
pSvcParam.bIsLosslessLink = atoi (strTag[1].c_str()) ? true : false;
|
||||
} else if (strTag[0].compare ("NumLayers") == 0) {
|
||||
pSvcParam.iSpatialLayerNum = (int8_t)atoi (strTag[1].c_str());
|
||||
if (pSvcParam.iSpatialLayerNum > MAX_DEPENDENCY_LAYER || pSvcParam.iSpatialLayerNum <= 0) {
|
||||
@@ -350,7 +347,7 @@ void PrintHelp() {
|
||||
printf (" -sw the source width\n");
|
||||
printf (" -sh the source height\n");
|
||||
printf (" -frms Number of total frames to be encoded\n");
|
||||
printf (" -numtl Temporal layer number (default: 1)\n");
|
||||
printf (" -gop GOPSize - GOP size (1,2,4,8, default: 1)\n");
|
||||
printf (" -iper Intra period (default: -1) : must be a power of 2 of GOP size (or -1)\n");
|
||||
printf (" -nalsize the Maximum NAL size. which should be larger than the each layer slicesize when slice mode equals to SM_DYN_SLICE\n");
|
||||
printf (" -spsid Enable id adding in SPS/PPS per IDR \n");
|
||||
@@ -384,7 +381,7 @@ void PrintHelp() {
|
||||
|
||||
int ParseCommandLine (int argc, char** argv, SSourcePicture* pSrcPic, SEncParamExt& pSvcParam, SFilesSet& sFileSet) {
|
||||
char* pCommand = NULL;
|
||||
SLayerPEncCtx sLayerCtx[MAX_SPATIAL_LAYER_NUM];
|
||||
SLayerPEncCtx sLayerCtx[3];
|
||||
int n = 0;
|
||||
string str_ ("SlicesAssign");
|
||||
|
||||
@@ -406,7 +403,7 @@ int ParseCommandLine (int argc, char** argv, SSourcePicture* pSrcPic, SEncParamE
|
||||
pSrcPic->iPicHeight = atoi (argv[n++]);
|
||||
|
||||
else if (!strcmp (pCommand, "-frms") && (n < argc))
|
||||
sFileSet.uiFrameToBeCoded = atoi (argv[n++]);
|
||||
pSvcParam.uiFrameToBeCoded = atoi (argv[n++]);
|
||||
|
||||
else if (!strcmp (pCommand, "-numtl") && (n < argc))
|
||||
pSvcParam.iTemporalLayerNum = atoi (argv[n++]);
|
||||
@@ -584,10 +581,11 @@ int FillSpecificParameters (SEncParamExt& sParam) {
|
||||
sParam.bEnableFrameSkip = 1; // frame skipping
|
||||
sParam.bEnableLongTermReference = 0; // long term reference control
|
||||
sParam.iLtrMarkPeriod = 30;
|
||||
sParam.iInputCsp = videoFormatI420; // color space of input sequence
|
||||
sParam.uiIntraPeriod = 320; // period of Intra frame
|
||||
sParam.bEnableSpsPpsIdAddition = 1;
|
||||
sParam.bPrefixNalAddingCtrl = 0;
|
||||
sParam.iComplexityMode = MEDIUM_COMPLEXITY;
|
||||
|
||||
int iIndexLayer = 0;
|
||||
sParam.sSpatialLayers[iIndexLayer].uiProfileIdc = PRO_BASELINE;
|
||||
sParam.sSpatialLayers[iIndexLayer].iVideoWidth = 160;
|
||||
@@ -738,7 +736,7 @@ int ProcessEncoding (ISVCEncoder* pPtrEnc, int argc, char** argv, bool bConfigFi
|
||||
sSvcParam.iPicWidth = (!sSvcParam.iPicWidth) ? iSourceWidth : sSvcParam.iPicWidth;
|
||||
sSvcParam.iPicHeight = (!sSvcParam.iPicHeight) ? iSourceHeight : sSvcParam.iPicHeight;
|
||||
|
||||
iTotalFrameMax = (int32_t)fs.uiFrameToBeCoded;
|
||||
iTotalFrameMax = (int32_t)sSvcParam.uiFrameToBeCoded;
|
||||
|
||||
if (cmResultSuccess != pPtrEnc->InitializeExt (&sSvcParam)) { // SVC encoder initialization
|
||||
fprintf (stderr, "SVC encoder Initialize failed\n");
|
||||
@@ -791,8 +789,8 @@ int ProcessEncoding (ISVCEncoder* pPtrEnc, int argc, char** argv, bool bConfigFi
|
||||
}
|
||||
|
||||
iFrameIdx = 0;
|
||||
while (iFrameIdx < iTotalFrameMax && (((int32_t)fs.uiFrameToBeCoded <= 0)
|
||||
|| (iFrameIdx < (int32_t)fs.uiFrameToBeCoded))) {
|
||||
while (iFrameIdx < iTotalFrameMax && (((int32_t)sSvcParam.uiFrameToBeCoded <= 0)
|
||||
|| (iFrameIdx < (int32_t)sSvcParam.uiFrameToBeCoded))) {
|
||||
|
||||
#ifdef ONLY_ENC_FRAMES_NUM
|
||||
// Only encoded some limited frames here
|
||||
@@ -807,10 +805,10 @@ int ProcessEncoding (ISVCEncoder* pPtrEnc, int argc, char** argv, bool bConfigFi
|
||||
break;
|
||||
// To encoder this frame
|
||||
iStart = WelsTime();
|
||||
pSrcPic->uiTimeStamp = WELS_ROUND (iFrameIdx * (1000 / sSvcParam.fMaxFrameRate));
|
||||
int iEncFrames = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
|
||||
iTotal += WelsTime() - iStart;
|
||||
++ iFrameIdx;
|
||||
|
||||
// fixed issue in case dismatch source picture introduced by frame skipped, 1/12/2010
|
||||
if (videoFrameTypeSkip == sFbi.eFrameType) {
|
||||
continue;
|
||||
}
|
||||
@@ -861,6 +859,7 @@ int ProcessEncoding (ISVCEncoder* pPtrEnc, int argc, char** argv, bool bConfigFi
|
||||
fprintf (stderr, "EncodeFrame(), ret: %d, frame index: %d.\n", iEncFrames, iFrameIdx);
|
||||
}
|
||||
|
||||
++ iFrameIdx;
|
||||
}
|
||||
|
||||
if (iActualFrameEncodedCount > 0) {
|
||||
@@ -892,7 +891,7 @@ INSIDE_MEM_FREE:
|
||||
pFileYUV = NULL;
|
||||
}
|
||||
if (pYUV) {
|
||||
delete[] pYUV;
|
||||
delete pYUV;
|
||||
pYUV = NULL;
|
||||
}
|
||||
if (pSrcPic) {
|
||||
|
||||
@@ -5,7 +5,6 @@ H264ENC_CPP_SRCS=\
|
||||
H264ENC_OBJS += $(H264ENC_CPP_SRCS:.cpp=.$(OBJ))
|
||||
|
||||
OBJS += $(H264ENC_OBJS)
|
||||
|
||||
$(H264ENC_SRCDIR)/%.$(OBJ): $(H264ENC_SRCDIR)/%.cpp
|
||||
$(QUIET_CXX)$(CXX) $(CFLAGS) $(CXXFLAGS) $(INCLUDES) $(H264ENC_CFLAGS) $(H264ENC_INCLUDES) -c $(CXX_O) $<
|
||||
|
||||
|
||||
@@ -308,7 +308,7 @@ WELS_ASM_AARCH64_FUNC_BEGIN WelsDecoderIChromaPredDcTop_AArch64_neon
|
||||
.endr
|
||||
WELS_ASM_AARCH64_FUNC_END
|
||||
|
||||
.align 4
|
||||
.align 16
|
||||
intra_1_to_4: .short 17*1, 17*2, 17*3, 17*4, 17*1, 17*2, 17*3, 17*4
|
||||
intra_m3_to_p4: .short -3, -2, -1, 0, 1, 2, 3, 4
|
||||
|
||||
@@ -457,7 +457,7 @@ WELS_ASM_AARCH64_FUNC_BEGIN WelsDecoderI16x16LumaPredDcLeft_AArch64_neon
|
||||
WELS_ASM_AARCH64_FUNC_END
|
||||
|
||||
|
||||
.align 4
|
||||
.align 16
|
||||
intra_1_to_8: .short 5, 10, 15, 20, 25, 30, 35, 40
|
||||
intra_m7_to_p8: .short -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8
|
||||
|
||||
|
||||
@@ -233,21 +233,21 @@ static inline int32_t BsGetTrailingBits (uint8_t* pBuf) {
|
||||
//define macros to check syntax elements
|
||||
#define WELS_CHECK_SE_BOTH_ERROR(val, lower_bound, upper_bound, syntax_name, ret_code) do {\
|
||||
if ((val < lower_bound) || (val > upper_bound)) {\
|
||||
WelsLog(&(pCtx->sLogCtx), WELS_LOG_ERROR, "invalid syntax " syntax_name " %d", val);\
|
||||
WelsLog(&(pCtx->sLogCtx), WELS_LOG_ERROR, "invalid syntax " syntax_name " %d\n", val);\
|
||||
return ret_code;\
|
||||
}\
|
||||
}while(0)
|
||||
|
||||
#define WELS_CHECK_SE_LOWER_ERROR(val, lower_bound, syntax_name, ret_code) do {\
|
||||
if (val < lower_bound) {\
|
||||
WelsLog(&(pCtx->sLogCtx), WELS_LOG_ERROR, "invalid syntax " syntax_name " %d", val);\
|
||||
WelsLog(&(pCtx->sLogCtx), WELS_LOG_ERROR, "invalid syntax " syntax_name " %d\n", val);\
|
||||
return ret_code;\
|
||||
}\
|
||||
}while(0)
|
||||
|
||||
#define WELS_CHECK_SE_UPPER_ERROR(val, upper_bound, syntax_name, ret_code) do {\
|
||||
if (val > upper_bound) {\
|
||||
WelsLog(&(pCtx->sLogCtx), WELS_LOG_ERROR, "invalid syntax " syntax_name " %d", val);\
|
||||
WelsLog(&(pCtx->sLogCtx), WELS_LOG_ERROR, "invalid syntax " syntax_name " %d\n", val);\
|
||||
return ret_code;\
|
||||
}\
|
||||
}while(0)
|
||||
@@ -273,19 +273,19 @@ if (val > upper_bound) {\
|
||||
|
||||
#define WELS_CHECK_SE_BOTH_WARNING(val, lower_bound, upper_bound, syntax_name) do {\
|
||||
if ((val < lower_bound) || (val > upper_bound)) {\
|
||||
WelsLog(&(pCtx->sLogCtx), WELS_LOG_WARNING, "invalid syntax " syntax_name " %d", val);\
|
||||
WelsLog(&(pCtx->sLogCtx), WELS_LOG_WARNING, "invalid syntax " syntax_name " %d\n", val);\
|
||||
}\
|
||||
}while(0)
|
||||
|
||||
#define WELS_CHECK_SE_LOWER_WARNING(val, lower_bound, syntax_name) do {\
|
||||
if (val < lower_bound) {\
|
||||
WelsLog(&(pCtx->sLogCtx), WELS_LOG_WARNING, "invalid syntax " syntax_name " %d", val);\
|
||||
WelsLog(&(pCtx->sLogCtx), WELS_LOG_WARNING, "invalid syntax " syntax_name " %d\n", val);\
|
||||
}\
|
||||
}while(0)
|
||||
|
||||
#define WELS_CHECK_SE_UPPER_WARNING(val, upper_bound, syntax_name) do {\
|
||||
if (val > upper_bound) {\
|
||||
WelsLog(&(pCtx->sLogCtx), WELS_LOG_WARNING, "invalid syntax " syntax_name " %d", val);\
|
||||
WelsLog(&(pCtx->sLogCtx), WELS_LOG_WARNING, "invalid syntax " syntax_name " %d\n", val);\
|
||||
}\
|
||||
}while(0)
|
||||
// below define syntax element offset
|
||||
|
||||
@@ -168,14 +168,15 @@ SLogContext sLogCtx;
|
||||
// Input
|
||||
void* pArgDec; // structured arguments for decoder, reserved here for extension in the future
|
||||
|
||||
SDataBuffer sRawData;
|
||||
SDataBuffer sRawData;
|
||||
|
||||
// Configuration
|
||||
SDecodingParam* pParam;
|
||||
SDecodingParam* pParam;
|
||||
uint32_t uiCpuFlag; // CPU compatibility detected
|
||||
|
||||
EVideoFormatType eOutputColorFormat; // color space format to be outputed
|
||||
int32_t iOutputColorFormat; // color space format to be outputed
|
||||
VIDEO_BITSTREAM_TYPE eVideoType; //indicate the type of video to decide whether or not to do qp_delta error detection.
|
||||
bool bErrorResilienceFlag; // error resilience flag
|
||||
bool bHaveGotMemory; // global memory for decoder context related ever requested?
|
||||
|
||||
int32_t iImgWidthInPixel; // width of image in pixel reconstruction picture to be output
|
||||
@@ -286,7 +287,7 @@ uint16_t uiCurIdrPicId;
|
||||
bool bNewSeqBegin;
|
||||
bool bNextNewSeqBegin;
|
||||
int iOverwriteFlags;
|
||||
ERROR_CON_IDC eErrorConMethod; //
|
||||
int32_t iErrorConMethod; //
|
||||
PPicture pPreviousDecodedPictureInDpb; //pointer to previously decoded picture in DPB for error concealment
|
||||
PGetIntraPredFunc pGetI16x16LumaPredFunc[7]; //h264_predict_copy_16x16;
|
||||
PGetIntraPredFunc pGetI4x4LumaPredFunc[14]; // h264_predict_4x4_t
|
||||
@@ -316,6 +317,7 @@ int32_t iFeedbackVclNalInAu;
|
||||
int32_t iFeedbackTidInAu;
|
||||
|
||||
bool bAuReadyFlag; // true: one au is ready for decoding; false: default value
|
||||
bool bDecErrorConedFlag; //true: current decoder is error coned
|
||||
|
||||
bool bPrintFrameErrorTraceFlag; //true: can print info for upper layer
|
||||
int32_t iIgnoredErrorInfoPacketCount; //store the packet number with error decoding info
|
||||
|
||||
@@ -144,7 +144,8 @@ int32_t DecodeCurrentAccessUnit (PWelsDecoderContext pCtx, uint8_t** ppDst, SBuf
|
||||
/*
|
||||
* Check if frame is completed and EC is required
|
||||
*/
|
||||
bool CheckAndFinishLastPic (PWelsDecoderContext pCtx, uint8_t** pDst, SBufferInfo* pDstInfo);
|
||||
bool CheckAndDoEC (PWelsDecoderContext pCtx, uint8_t** pDst, SBufferInfo* pDstInfo);
|
||||
|
||||
/*
|
||||
* Prepare current dq layer context initialization.
|
||||
*/
|
||||
@@ -157,7 +158,6 @@ void WelsDecodeAccessUnitEnd (PWelsDecoderContext pCtx);
|
||||
void ForceResetCurrentAccessUnit (PAccessUnit pAu);
|
||||
void ForceClearCurrentNal (PAccessUnit pAu);
|
||||
|
||||
bool bCheckRefPicturesComplete (PWelsDecoderContext pCtx); // Check whether all ref pictures are complete
|
||||
} // namespace WelsDec
|
||||
|
||||
#endif//WELS_DECODER_CORE_H__
|
||||
|
||||
@@ -48,7 +48,7 @@ ERR_INVALID_PARAMETERS = 1,
|
||||
ERR_MALLOC_FAILED = 2,
|
||||
ERR_API_FAILED = 3,
|
||||
|
||||
ERR_BOUND = 31
|
||||
ERR_BOUND = 31,
|
||||
} EWelsErr;
|
||||
|
||||
/*
|
||||
@@ -68,7 +68,7 @@ ERR_LEVEL_PREFIX_NAL,
|
||||
ERR_LEVEL_PARAM_SETS,
|
||||
ERR_LEVEL_SLICE_HEADER,
|
||||
ERR_LEVEL_SLICE_DATA,
|
||||
ERR_LEVEL_MB_DATA
|
||||
ERR_LEVEL_MB_DATA,
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------------------------------------
|
||||
@@ -180,7 +180,7 @@ EER_INFO_INVALID_MMCO_LONG2UNUSED,
|
||||
ERR_INFO_INVALID_MMCO_SHOART2LONG,
|
||||
ERR_INFO_INVALID_MMCO_REF_NUM_OVERFLOW,
|
||||
ERR_INFO_INVALID_MMCO_REF_NUM_NOT_ENOUGH,
|
||||
ERR_INFO_INVALID_MMCO_LONG_TERM_IDX_EXCEED_MAX
|
||||
ERR_INFO_INVALID_MMCO_LONG_TERM_IDX_EXCEED_MAX,
|
||||
};
|
||||
//-----------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -39,56 +39,67 @@
|
||||
|
||||
namespace WelsDec {
|
||||
|
||||
typedef struct TagLevelLimits {
|
||||
int32_t iMaxMBPS; // Max macroblock processing rate(MB/s)
|
||||
int32_t iMaxFS; // Max frame sizea(MBs)
|
||||
int32_t iMaxDPBMbs;// Max decoded picture buffer size(MBs)
|
||||
int32_t iMaxBR; // Max video bit rate
|
||||
int32_t iMaxCPB; // Max CPB size
|
||||
int16_t iMinVmv; // Vertical MV component range upper bound
|
||||
int16_t iMaxVmv; // Vertical MV component range lower bound
|
||||
int16_t iMinCR; // Min compression ration
|
||||
int16_t iMaxMvsPer2Mb; // Max number of motion vectors per two consecutive MBs
|
||||
} SLevelLimits;
|
||||
|
||||
/* Sequence Parameter Set, refer to Page 57 in JVT X201wcm */
|
||||
typedef struct TagSps {
|
||||
int32_t iSpsId;
|
||||
uint32_t iMbWidth;
|
||||
uint32_t iMbHeight;
|
||||
uint32_t uiTotalMbCount; //used in decode_slice_data()
|
||||
int32_t iSpsId;
|
||||
uint32_t iMbWidth;
|
||||
uint32_t iMbHeight;
|
||||
uint32_t uiTotalMbCount; //used in decode_slice_data()
|
||||
|
||||
uint32_t uiLog2MaxFrameNum;
|
||||
uint32_t uiPocType;
|
||||
/* POC type 0 */
|
||||
int32_t iLog2MaxPocLsb;
|
||||
/* POC type 1 */
|
||||
int32_t iOffsetForNonRefPic;
|
||||
uint32_t uiLog2MaxFrameNum;
|
||||
uint32_t uiPocType;
|
||||
/* POC type 0 */
|
||||
int32_t iLog2MaxPocLsb;
|
||||
/* POC type 1 */
|
||||
int32_t iOffsetForNonRefPic;
|
||||
|
||||
int32_t iOffsetForTopToBottomField;
|
||||
int32_t iNumRefFramesInPocCycle;
|
||||
int8_t iOffsetForRefFrame[256];
|
||||
int32_t iNumRefFrames;
|
||||
int32_t iOffsetForTopToBottomField;
|
||||
int32_t iNumRefFramesInPocCycle;
|
||||
int8_t iOffsetForRefFrame[256];
|
||||
int32_t iNumRefFrames;
|
||||
|
||||
SPosOffset sFrameCrop;
|
||||
SPosOffset sFrameCrop;
|
||||
|
||||
ProfileIdc uiProfileIdc;
|
||||
uint8_t uiLevelIdc;
|
||||
uint8_t uiChromaFormatIdc;
|
||||
uint8_t uiChromaArrayType;
|
||||
ProfileIdc uiProfileIdc;
|
||||
uint8_t uiLevelIdc;
|
||||
uint8_t uiChromaFormatIdc;
|
||||
uint8_t uiChromaArrayType;
|
||||
|
||||
uint8_t uiBitDepthLuma;
|
||||
uint8_t uiBitDepthChroma;
|
||||
/* TO BE CONTINUE: POC type 1 */
|
||||
bool bDeltaPicOrderAlwaysZeroFlag;
|
||||
bool bGapsInFrameNumValueAllowedFlag;
|
||||
uint8_t uiBitDepthLuma;
|
||||
uint8_t uiBitDepthChroma;
|
||||
/* TO BE CONTINUE: POC type 1 */
|
||||
bool bDeltaPicOrderAlwaysZeroFlag;
|
||||
bool bGapsInFrameNumValueAllowedFlag;
|
||||
|
||||
bool bFrameMbsOnlyFlag;
|
||||
bool bMbaffFlag; // MB Adapative Frame Field
|
||||
bool bDirect8x8InferenceFlag;
|
||||
bool bFrameCroppingFlag;
|
||||
bool bFrameMbsOnlyFlag;
|
||||
bool bMbaffFlag; // MB Adapative Frame Field
|
||||
bool bDirect8x8InferenceFlag;
|
||||
bool bFrameCroppingFlag;
|
||||
|
||||
bool bVuiParamPresentFlag;
|
||||
bool bVuiParamPresentFlag;
|
||||
// bool bTimingInfoPresentFlag;
|
||||
// bool bFixedFrameRateFlag;
|
||||
bool bConstraintSet0Flag;
|
||||
bool bConstraintSet1Flag;
|
||||
bool bConstraintSet2Flag;
|
||||
bool bConstraintSet3Flag;
|
||||
bool bSeparateColorPlaneFlag;
|
||||
bool bQpPrimeYZeroTransfBypassFlag;
|
||||
bool bSeqScalingMatrixPresentFlag;
|
||||
bool bSeqScalingListPresentFlag[12];
|
||||
const SLevelLimits* pSLevelLimits;
|
||||
bool bConstraintSet0Flag;
|
||||
bool bConstraintSet1Flag;
|
||||
bool bConstraintSet2Flag;
|
||||
bool bConstraintSet3Flag;
|
||||
bool bSeparateColorPlaneFlag;
|
||||
bool bQpPrimeYZeroTransfBypassFlag;
|
||||
bool bSeqScalingMatrixPresentFlag;
|
||||
bool bSeqScalingListPresentFlag[12];
|
||||
const SLevelLimits* pSLevelLimits;
|
||||
} SSps, *PSps;
|
||||
|
||||
|
||||
@@ -106,63 +117,63 @@ typedef struct TagSps {
|
||||
|
||||
/* Sequence Parameter Set extension syntax, refer to Page 391 in JVT X201wcm */
|
||||
typedef struct TagSpsSvcExt {
|
||||
SPosOffset sSeqScaledRefLayer;
|
||||
SPosOffset sSeqScaledRefLayer;
|
||||
|
||||
uint8_t uiExtendedSpatialScalability; // ESS
|
||||
uint8_t uiChromaPhaseXPlus1Flag;
|
||||
uint8_t uiChromaPhaseYPlus1;
|
||||
uint8_t uiSeqRefLayerChromaPhaseXPlus1Flag;
|
||||
uint8_t uiSeqRefLayerChromaPhaseYPlus1;
|
||||
bool bInterLayerDeblockingFilterCtrlPresentFlag;
|
||||
bool bSeqTCoeffLevelPredFlag;
|
||||
bool bAdaptiveTCoeffLevelPredFlag;
|
||||
bool bSliceHeaderRestrictionFlag;
|
||||
uint8_t uiExtendedSpatialScalability; // ESS
|
||||
uint8_t uiChromaPhaseXPlus1Flag;
|
||||
uint8_t uiChromaPhaseYPlus1;
|
||||
uint8_t uiSeqRefLayerChromaPhaseXPlus1Flag;
|
||||
uint8_t uiSeqRefLayerChromaPhaseYPlus1;
|
||||
bool bInterLayerDeblockingFilterCtrlPresentFlag;
|
||||
bool bSeqTCoeffLevelPredFlag;
|
||||
bool bAdaptiveTCoeffLevelPredFlag;
|
||||
bool bSliceHeaderRestrictionFlag;
|
||||
} SSpsSvcExt, *PSpsSvcExt;
|
||||
|
||||
/* Subset sequence parameter set syntax, refer to Page 391 in JVT X201wcm */
|
||||
typedef struct TagSubsetSps {
|
||||
SSps sSps;
|
||||
SSpsSvcExt sSpsSvcExt;
|
||||
bool bSvcVuiParamPresentFlag;
|
||||
bool bAdditionalExtension2Flag;
|
||||
bool bAdditionalExtension2DataFlag;
|
||||
SSps sSps;
|
||||
SSpsSvcExt sSpsSvcExt;
|
||||
bool bSvcVuiParamPresentFlag;
|
||||
bool bAdditionalExtension2Flag;
|
||||
bool bAdditionalExtension2DataFlag;
|
||||
} SSubsetSps, *PSubsetSps;
|
||||
|
||||
/* Picture parameter set syntax, refer to Page 59 in JVT X201wcm */
|
||||
typedef struct TagPps {
|
||||
int32_t iSpsId;
|
||||
int32_t iPpsId;
|
||||
int32_t iSpsId;
|
||||
int32_t iPpsId;
|
||||
|
||||
uint32_t uiNumSliceGroups;
|
||||
uint32_t uiSliceGroupMapType;
|
||||
/* slice_group_map_type = 0 */
|
||||
uint32_t uiRunLength[MAX_SLICEGROUP_IDS];
|
||||
/* slice_group_map_type = 2 */
|
||||
uint32_t uiTopLeft[MAX_SLICEGROUP_IDS];
|
||||
uint32_t uiBottomRight[MAX_SLICEGROUP_IDS];
|
||||
/* slice_group_map_type = 3, 4 or 5 */
|
||||
uint32_t uiSliceGroupChangeRate;
|
||||
/* slice_group_map_type = 6 */
|
||||
uint32_t uiPicSizeInMapUnits;
|
||||
uint32_t uiSliceGroupId[MAX_SLICEGROUP_IDS];
|
||||
uint32_t uiNumSliceGroups;
|
||||
uint32_t uiSliceGroupMapType;
|
||||
/* slice_group_map_type = 0 */
|
||||
uint32_t uiRunLength[MAX_SLICEGROUP_IDS];
|
||||
/* slice_group_map_type = 2 */
|
||||
uint32_t uiTopLeft[MAX_SLICEGROUP_IDS];
|
||||
uint32_t uiBottomRight[MAX_SLICEGROUP_IDS];
|
||||
/* slice_group_map_type = 3, 4 or 5 */
|
||||
uint32_t uiSliceGroupChangeRate;
|
||||
/* slice_group_map_type = 6 */
|
||||
uint32_t uiPicSizeInMapUnits;
|
||||
uint32_t uiSliceGroupId[MAX_SLICEGROUP_IDS];
|
||||
|
||||
uint32_t uiNumRefIdxL0Active;
|
||||
uint32_t uiNumRefIdxL1Active;
|
||||
uint32_t uiNumRefIdxL0Active;
|
||||
uint32_t uiNumRefIdxL1Active;
|
||||
|
||||
int32_t iPicInitQp;
|
||||
int32_t iPicInitQs;
|
||||
int32_t iChromaQpIndexOffset;
|
||||
int32_t iPicInitQp;
|
||||
int32_t iPicInitQs;
|
||||
int32_t iChromaQpIndexOffset;
|
||||
|
||||
bool bEntropyCodingModeFlag;
|
||||
bool bPicOrderPresentFlag;
|
||||
/* slice_group_map_type = 3, 4 or 5 */
|
||||
bool bSliceGroupChangeDirectionFlag;
|
||||
bool bDeblockingFilterControlPresentFlag;
|
||||
bool bEntropyCodingModeFlag;
|
||||
bool bPicOrderPresentFlag;
|
||||
/* slice_group_map_type = 3, 4 or 5 */
|
||||
bool bSliceGroupChangeDirectionFlag;
|
||||
bool bDeblockingFilterControlPresentFlag;
|
||||
|
||||
bool bConstainedIntraPredFlag;
|
||||
bool bRedundantPicCntPresentFlag;
|
||||
bool bWeightedPredFlag;
|
||||
uint8_t uiWeightedBipredIdc;
|
||||
bool bConstainedIntraPredFlag;
|
||||
bool bRedundantPicCntPresentFlag;
|
||||
bool bWeightedPredFlag;
|
||||
uint8_t uiWeightedBipredIdc;
|
||||
|
||||
} SPps, *PPps;
|
||||
|
||||
|
||||
@@ -63,7 +63,6 @@ bool bIsLongRef; // long term reference frame flag //for ref pic management
|
||||
uint8_t uiRefCount;
|
||||
bool bAvailableFlag; // indicate whether it is available in this picture memory block.
|
||||
|
||||
bool bIsComplete; // indicate whether current picture is complete, not from EC
|
||||
/*******************************for future use****************************/
|
||||
uint8_t uiTemporalId;
|
||||
uint8_t uiSpatialId;
|
||||
|
||||
@@ -60,7 +60,7 @@ PRO_HIGH444 = 144,
|
||||
PRO_CAVLC444 = 244,
|
||||
|
||||
PRO_SCALABLE_BASELINE = 83,
|
||||
PRO_SCALABLE_HIGH = 86
|
||||
PRO_SCALABLE_HIGH = 86,
|
||||
};
|
||||
|
||||
/* Picture Size */
|
||||
@@ -83,7 +83,7 @@ MB_LEFT = 0x01, // A
|
||||
MB_TOP = 0x02, // B
|
||||
MB_TOPRIGHT = 0x04, // C
|
||||
MB_TOPLEFT = 0x08, // D,
|
||||
MB_PRIVATE = 0x10
|
||||
MB_PRIVATE = 0x10,
|
||||
};
|
||||
/* MB Type & Sub-MB Type */
|
||||
typedef int32_t MbType;
|
||||
|
||||
@@ -146,7 +146,7 @@ uint8_t* ParseNalHeader (PWelsDecoderContext pCtx, SNalUnitHeader* pNalUnitHeade
|
||||
|| pCtx->bSpsExistAheadFlag)) {
|
||||
if (pCtx->bPrintFrameErrorTraceFlag) {
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING,
|
||||
"parse_nal(), no exist Sequence Parameter Sets ahead of sequence when try to decode NAL(type:%d).",
|
||||
"parse_nal(), no exist Sequence Parameter Sets ahead of sequence when try to decode NAL(type:%d).\n",
|
||||
pNalUnitHeader->eNalUnitType);
|
||||
}
|
||||
pCtx->iErrorCode = dsNoParamSets;
|
||||
@@ -156,7 +156,7 @@ uint8_t* ParseNalHeader (PWelsDecoderContext pCtx, SNalUnitHeader* pNalUnitHeade
|
||||
|| pCtx->bPpsExistAheadFlag)) {
|
||||
if (pCtx->bPrintFrameErrorTraceFlag) {
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING,
|
||||
"parse_nal(), no exist Picture Parameter Sets ahead of sequence when try to decode NAL(type:%d).",
|
||||
"parse_nal(), no exist Picture Parameter Sets ahead of sequence when try to decode NAL(type:%d).\n",
|
||||
pNalUnitHeader->eNalUnitType);
|
||||
}
|
||||
pCtx->iErrorCode = dsNoParamSets;
|
||||
@@ -167,7 +167,7 @@ uint8_t* ParseNalHeader (PWelsDecoderContext pCtx, SNalUnitHeader* pNalUnitHeade
|
||||
|| pCtx->bPpsExistAheadFlag))) {
|
||||
if (pCtx->bPrintFrameErrorTraceFlag) {
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING,
|
||||
"ParseNalHeader(), no exist Parameter Sets ahead of sequence when try to decode slice(type:%d).",
|
||||
"ParseNalHeader(), no exist Parameter Sets ahead of sequence when try to decode slice(type:%d).\n",
|
||||
pNalUnitHeader->eNalUnitType);
|
||||
}
|
||||
pCtx->iErrorCode |= dsNoParamSets;
|
||||
@@ -192,7 +192,7 @@ uint8_t* ParseNalHeader (PWelsDecoderContext pCtx, SNalUnitHeader* pNalUnitHeade
|
||||
|
||||
if (uiAvailNalNum > 0) {
|
||||
pCurAu->uiEndPos = uiAvailNalNum - 1;
|
||||
if (pCtx->eErrorConMethod == ERROR_CON_DISABLE) {
|
||||
if (pCtx->iErrorConMethod == ERROR_CON_DISABLE) {
|
||||
pCtx->bAuReadyFlag = true;
|
||||
}
|
||||
}
|
||||
@@ -204,14 +204,14 @@ uint8_t* ParseNalHeader (PWelsDecoderContext pCtx, SNalUnitHeader* pNalUnitHeade
|
||||
DecodeNalHeaderExt (pCurNal, pNal);
|
||||
if ((pCurNal->sNalHeaderExt.uiQualityId != 0) || (pCurNal->sNalHeaderExt.bUseRefBasePicFlag != 0)) {
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING,
|
||||
"ParseNalHeader() in Prefix Nal Unit:uiQualityId (%d) != 0, bUseRefBasePicFlag (%d) != 0, not supported!",
|
||||
"ParseNalHeader() in Prefix Nal Unit:uiQualityId (%d) != 0, bUseRefBasePicFlag (%d) != 0, not supported!\n",
|
||||
pCurNal->sNalHeaderExt.uiQualityId, pCurNal->sNalHeaderExt.bUseRefBasePicFlag);
|
||||
PAccessUnit pCurAu = pCtx->pAccessUnitList;
|
||||
uint32_t uiAvailNalNum = pCurAu->uiAvailUnitsNum;
|
||||
|
||||
if (uiAvailNalNum > 0) {
|
||||
pCurAu->uiEndPos = uiAvailNalNum - 1;
|
||||
if (pCtx->eErrorConMethod == ERROR_CON_DISABLE) {
|
||||
if (pCtx->iErrorConMethod == ERROR_CON_DISABLE) {
|
||||
pCtx->bAuReadyFlag = true;
|
||||
}
|
||||
}
|
||||
@@ -246,7 +246,7 @@ uint8_t* ParseNalHeader (PWelsDecoderContext pCtx, SNalUnitHeader* pNalUnitHeade
|
||||
uint32_t uiAvailNalNum;
|
||||
pCurNal = MemGetNextNal (&pCtx->pAccessUnitList);
|
||||
if (NULL == pCurNal) {
|
||||
WelsLog (pLogCtx, WELS_LOG_ERROR, "MemGetNextNal() fail due out of memory.");
|
||||
WelsLog (pLogCtx, WELS_LOG_ERROR, "MemGetNextNal() fail due out of memory.\n");
|
||||
pCtx->iErrorCode |= dsOutOfMemory;
|
||||
return NULL;
|
||||
}
|
||||
@@ -274,10 +274,10 @@ uint8_t* ParseNalHeader (PWelsDecoderContext pCtx, SNalUnitHeader* pNalUnitHeade
|
||||
if (pCurNal->sNalHeaderExt.uiQualityId != 0 ||
|
||||
pCurNal->sNalHeaderExt.bUseRefBasePicFlag) {
|
||||
if (pCurNal->sNalHeaderExt.uiQualityId != 0)
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "ParseNalHeader():uiQualityId (%d) != 0, MGS not supported!",
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "ParseNalHeader():uiQualityId (%d) != 0, MGS not supported!\n",
|
||||
pCurNal->sNalHeaderExt.uiQualityId);
|
||||
if (pCurNal->sNalHeaderExt.bUseRefBasePicFlag != 0)
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "ParseNalHeader():bUseRefBasePicFlag (%d) != 0, MGS not supported!",
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "ParseNalHeader():bUseRefBasePicFlag (%d) != 0, MGS not supported!\n",
|
||||
pCurNal->sNalHeaderExt.bUseRefBasePicFlag);
|
||||
|
||||
ForceClearCurrentNal (pCurAu);
|
||||
@@ -327,8 +327,7 @@ uint8_t* ParseNalHeader (PWelsDecoderContext pCtx, SNalUnitHeader* pNalUnitHeade
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if ((uiAvailNalNum == 1)
|
||||
&& CheckNextAuNewSeq (pCtx, pCurNal, pCurNal->sNalData.sVclNal.sSliceHeaderExt.sSliceHeader.pSps)) {
|
||||
if ((uiAvailNalNum == 1) && CheckNextAuNewSeq (pCtx, pCurNal, pCurNal->sNalData.sVclNal.sSliceHeaderExt.sSliceHeader.pSps)) {
|
||||
ResetActiveSPSForEachLayer (pCtx);
|
||||
}
|
||||
if ((uiAvailNalNum > 1) &&
|
||||
@@ -509,7 +508,7 @@ int32_t ParseNonVclNal (PWelsDecoderContext pCtx, uint8_t* pRbsp, const int32_t
|
||||
InitBits (pBs, pRbsp, iBitSize);
|
||||
iErr = ParseSps (pCtx, pBs, &iPicWidth, &iPicHeight);
|
||||
if (ERR_NONE != iErr) { // modified for pSps/pSubsetSps invalid, 12/1/2009
|
||||
if (pCtx->eErrorConMethod == ERROR_CON_DISABLE)
|
||||
if (pCtx->iErrorConMethod == ERROR_CON_DISABLE)
|
||||
pCtx->iErrorCode |= dsNoParamSets;
|
||||
else
|
||||
pCtx->iErrorCode |= dsBitstreamError;
|
||||
@@ -523,7 +522,7 @@ int32_t ParseNonVclNal (PWelsDecoderContext pCtx, uint8_t* pRbsp, const int32_t
|
||||
InitBits (pBs, pRbsp, iBitSize);
|
||||
iErr = ParsePps (pCtx, &pCtx->sPpsBuffer[0], pBs);
|
||||
if (ERR_NONE != iErr) { // modified for pps invalid, 12/1/2009
|
||||
if (pCtx->eErrorConMethod == ERROR_CON_DISABLE)
|
||||
if (pCtx->iErrorConMethod == ERROR_CON_DISABLE)
|
||||
pCtx->iErrorCode |= dsNoParamSets;
|
||||
else
|
||||
pCtx->iErrorCode |= dsBitstreamError;
|
||||
@@ -630,7 +629,7 @@ int32_t DecodeSpsSvcExt (PWelsDecoderContext pCtx, PSubsetSps pSpsExt, PBitStrin
|
||||
pExt->uiExtendedSpatialScalability = uiCode;
|
||||
if (pExt->uiExtendedSpatialScalability > 2) {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING,
|
||||
"DecodeSpsSvcExt():extended_spatial_scalability (%d) != 0, ESS not supported!",
|
||||
"DecodeSpsSvcExt():extended_spatial_scalability (%d) != 0, ESS not supported!\n",
|
||||
pExt->uiExtendedSpatialScalability);
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_PARAM_SETS, ERR_INFO_INVALID_ESS);
|
||||
}
|
||||
@@ -688,43 +687,64 @@ int32_t DecodeSpsSvcExt (PWelsDecoderContext pCtx, PSubsetSps pSpsExt, PBitStrin
|
||||
return 0;
|
||||
}
|
||||
|
||||
// table A-1 - Level limits
|
||||
static const SLevelLimits g_kSLevelLimits[17] = {
|
||||
{1485, 99, 396, 64, 175, -256, 255, 2, 0x7fff}, /* level 1 */
|
||||
{1485, 99, 396, 128, 350, -256, 255, 2, 0x7fff}, /* level 1.b */
|
||||
{3000, 396, 900, 192, 500, -512, 511, 2, 0x7fff}, /* level 1.1 */
|
||||
{6000, 396, 2376, 384, 1000, -512, 511, 2, 0x7fff}, /* level 1.2 */
|
||||
{11880, 396, 2376, 768, 2000, -512, 511, 2, 0x7fff}, /* level 1.3 */
|
||||
{11880, 396, 2376, 2000, 2000, -512, 511, 2, 0x7fff}, /* level 2 */
|
||||
{19800, 792, 4752, 4000, 4000, -1024, 1023, 2, 0x7fff}, /* level 2.1 */
|
||||
{20250, 1620, 8100, 4000, 4000, -1024, 1023, 2, 0x7fff}, /* level 2.2 */
|
||||
{40500, 1620, 8100, 10000, 10000, -1024, 1023, 2, 32 }, /* level 3 */
|
||||
{108000, 3600, 18000, 14000, 14000, -2048, 2047, 4, 16}, /* level 3.1 */
|
||||
{216000, 5120, 20480, 20000, 20000, -2048, 2047, 4, 16}, /* level 3.2 */
|
||||
{245760, 8192, 32768, 20000, 25000, -2048, 2047, 4, 16}, /* level 4 */
|
||||
{245760, 8192, 32768, 50000, 62500, -2048, 2047, 2, 16}, /* level 4.1 */
|
||||
{522240, 8704, 34816, 50000, 62500, -2048, 2047, 2, 16}, /* level 4.2 */
|
||||
{589824, 22080, 110400, 135000, 135000, -2048, 2047, 2, 16}, /* level 5 */
|
||||
{983040, 36864, 184320, 240000, 240000, -2048, 2047, 2, 16}, /* level 5.1 */
|
||||
{2073600, 36864, 184320, 240000, 240000, -2048, 2047, 2, 16} /* level 5.2 */
|
||||
};
|
||||
|
||||
const SLevelLimits* GetLevelLimits (int32_t iLevelIdx, bool bConstraint3) {
|
||||
switch (iLevelIdx) {
|
||||
case 10:
|
||||
return &g_ksLevelLimits[0];
|
||||
return &g_kSLevelLimits[0];
|
||||
case 11:
|
||||
if (bConstraint3)
|
||||
return &g_ksLevelLimits[1];
|
||||
return &g_kSLevelLimits[1];
|
||||
else
|
||||
return &g_ksLevelLimits[2];
|
||||
return &g_kSLevelLimits[2];
|
||||
case 12:
|
||||
return &g_ksLevelLimits[3];
|
||||
return &g_kSLevelLimits[3];
|
||||
case 13:
|
||||
return &g_ksLevelLimits[4];
|
||||
return &g_kSLevelLimits[4];
|
||||
case 20:
|
||||
return &g_ksLevelLimits[5];
|
||||
return &g_kSLevelLimits[5];
|
||||
case 21:
|
||||
return &g_ksLevelLimits[6];
|
||||
return &g_kSLevelLimits[6];
|
||||
case 22:
|
||||
return &g_ksLevelLimits[7];
|
||||
return &g_kSLevelLimits[7];
|
||||
case 30:
|
||||
return &g_ksLevelLimits[8];
|
||||
return &g_kSLevelLimits[8];
|
||||
case 31:
|
||||
return &g_ksLevelLimits[9];
|
||||
return &g_kSLevelLimits[9];
|
||||
case 32:
|
||||
return &g_ksLevelLimits[10];
|
||||
return &g_kSLevelLimits[10];
|
||||
case 40:
|
||||
return &g_ksLevelLimits[11];
|
||||
return &g_kSLevelLimits[11];
|
||||
case 41:
|
||||
return &g_ksLevelLimits[12];
|
||||
return &g_kSLevelLimits[12];
|
||||
case 42:
|
||||
return &g_ksLevelLimits[13];
|
||||
return &g_kSLevelLimits[13];
|
||||
case 50:
|
||||
return &g_ksLevelLimits[14];
|
||||
return &g_kSLevelLimits[14];
|
||||
case 51:
|
||||
return &g_ksLevelLimits[15];
|
||||
return &g_kSLevelLimits[15];
|
||||
case 52:
|
||||
return &g_ksLevelLimits[16];
|
||||
return &g_kSLevelLimits[16];
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
@@ -824,21 +844,21 @@ int32_t ParseSps (PWelsDecoderContext pCtx, PBitStringAux pBsAux, int32_t* pPicW
|
||||
WELS_READ_VERIFY (BsGetUe (pBs, &uiCode)); //chroma_format_idc
|
||||
pSps->uiChromaFormatIdc = uiCode;
|
||||
if (pSps->uiChromaFormatIdc != 1) {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "ParseSps(): chroma_format_idc (%d) = 1 supported.",
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "ParseSps(): chroma_format_idc (%d) = 1 supported.\n",
|
||||
pSps->uiChromaFormatIdc);
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_PARAM_SETS, ERR_INFO_UNSUPPORTED_NON_BASELINE);
|
||||
}
|
||||
pSps->uiChromaArrayType = pSps->uiChromaFormatIdc;
|
||||
WELS_READ_VERIFY (BsGetUe (pBs, &uiCode)); //bit_depth_luma_minus8
|
||||
if (uiCode != 0) {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "ParseSps(): bit_depth_luma (%d) Only 8 bit supported.", 8 + uiCode);
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "ParseSps(): bit_depth_luma (%d) Only 8 bit supported.\n", 8 + uiCode);
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_PARAM_SETS, ERR_INFO_UNSUPPORTED_NON_BASELINE);
|
||||
}
|
||||
pSps->uiBitDepthLuma = 8;
|
||||
|
||||
WELS_READ_VERIFY (BsGetUe (pBs, &uiCode)); //bit_depth_chroma_minus8
|
||||
if (uiCode != 0) {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "ParseSps(): bit_depth_chroma (%d). Only 8 bit supported.", 8 + uiCode);
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "ParseSps(): bit_depth_chroma (%d). Only 8 bit supported.\n", 8 + uiCode);
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_PARAM_SETS, ERR_INFO_UNSUPPORTED_NON_BASELINE);
|
||||
}
|
||||
pSps->uiBitDepthChroma = 8;
|
||||
@@ -850,7 +870,7 @@ int32_t ParseSps (PWelsDecoderContext pCtx, PBitStringAux pBsAux, int32_t* pPicW
|
||||
|
||||
if (pSps->bSeqScalingMatrixPresentFlag) { // For high profile, it is not used in current application. FIXME
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING,
|
||||
"ParseSps(): seq_scaling_matrix_present_flag (%d). Feature not supported.",
|
||||
"ParseSps(): seq_scaling_matrix_present_flag (%d). Feature not supported.\n",
|
||||
pSps->bSeqScalingMatrixPresentFlag);
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_PARAM_SETS, ERR_INFO_UNSUPPORTED_NON_BASELINE);
|
||||
}
|
||||
@@ -888,7 +908,7 @@ int32_t ParseSps (PWelsDecoderContext pCtx, PBitStringAux pBsAux, int32_t* pPicW
|
||||
}
|
||||
}
|
||||
if (pSps->uiPocType > 2) {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, " illegal pic_order_cnt_type: %d ! ", pSps->uiPocType);
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, " illegal pic_order_cnt_type: %d ! \n", pSps->uiPocType);
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_PARAM_SETS, ERR_INFO_INVALID_POC_TYPE);
|
||||
}
|
||||
|
||||
@@ -899,40 +919,40 @@ int32_t ParseSps (PWelsDecoderContext pCtx, PBitStringAux pBsAux, int32_t* pPicW
|
||||
WELS_READ_VERIFY (BsGetUe (pBs, &uiCode)); //pic_width_in_mbs_minus1
|
||||
pSps->iMbWidth = PIC_WIDTH_IN_MBS_OFFSET + uiCode;
|
||||
if (pSps->iMbWidth > MAX_MB_SIZE) {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_ERROR, "pic_width_in_mbs(%d) exceeds the maximum allowed!", pSps->iMbWidth);
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_ERROR, "pic_width_in_mbs(%d) exceeds the maximum allowed!\n", pSps->iMbWidth);
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_PARAM_SETS, ERR_INFO_INVALID_MAX_MB_SIZE);
|
||||
}
|
||||
if (((uint64_t)pSps->iMbWidth * (uint64_t)pSps->iMbWidth) > (uint64_t) (8 * pSLevelLimits->uiMaxFS)) {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, " the pic_width_in_mbs exceeds the level limits!");
|
||||
if (((uint64_t)pSps->iMbWidth * (uint64_t)pSps->iMbWidth) > (uint64_t) (8 * pSLevelLimits->iMaxFS)) {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, " the pic_width_in_mbs exceeds the level limits!\n");
|
||||
}
|
||||
WELS_READ_VERIFY (BsGetUe (pBs, &uiCode)); //pic_height_in_map_units_minus1
|
||||
pSps->iMbHeight = PIC_HEIGHT_IN_MAP_UNITS_OFFSET + uiCode;
|
||||
if (pSps->iMbHeight > MAX_MB_SIZE) {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_ERROR, "pic_height_in_mbs(%d) exceeds the maximum allowed!", pSps->iMbHeight);
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_ERROR, "pic_height_in_mbs(%d) exceeds the maximum allowed!\n", pSps->iMbHeight);
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_PARAM_SETS, ERR_INFO_INVALID_MAX_MB_SIZE);
|
||||
}
|
||||
if (((uint64_t)pSps->iMbHeight * (uint64_t)pSps->iMbHeight) > (uint64_t) (8 * pSLevelLimits->uiMaxFS)) {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, " the pic_height_in_mbs exceeds the level limits!");
|
||||
if (((uint64_t)pSps->iMbHeight * (uint64_t)pSps->iMbHeight) > (uint64_t) (8 * pSLevelLimits->iMaxFS)) {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, " the pic_height_in_mbs exceeds the level limits!\n");
|
||||
}
|
||||
uint32_t uiTmp32 = pSps->iMbWidth * pSps->iMbHeight;
|
||||
if (uiTmp32 > (uint32_t)pSLevelLimits->uiMaxFS) {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, " the total count of mb exceeds the level limits!");
|
||||
if (uiTmp32 > (uint32_t)pSLevelLimits->iMaxFS) {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, " the total count of mb exceeds the level limits!\n");
|
||||
}
|
||||
pSps->uiTotalMbCount = uiTmp32;
|
||||
WELS_CHECK_SE_UPPER_ERROR (pSps->iNumRefFrames, SPS_MAX_NUM_REF_FRAMES_MAX, "max_num_ref_frames",
|
||||
GENERATE_ERROR_NO (ERR_LEVEL_PARAM_SETS, ERR_INFO_INVALID_MAX_NUM_REF_FRAMES));
|
||||
// here we check max_num_ref_frames
|
||||
uint32_t uiMaxDpbMbs = pSLevelLimits->uiMaxDPBMbs;
|
||||
uint32_t uiMaxDpbMbs = pSLevelLimits->iMaxDPBMbs;
|
||||
uint32_t uiMaxDpbFrames = uiMaxDpbMbs / pSps->uiTotalMbCount;
|
||||
if (uiMaxDpbFrames > SPS_MAX_NUM_REF_FRAMES_MAX)
|
||||
uiMaxDpbFrames = SPS_MAX_NUM_REF_FRAMES_MAX;
|
||||
if ((uint32_t)pSps->iNumRefFrames > uiMaxDpbFrames) {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, " max_num_ref_frames exceeds level limits!");
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, " max_num_ref_frames exceeds level limits!\n");
|
||||
}
|
||||
WELS_READ_VERIFY (BsGetOneBit (pBs, &uiCode)); //frame_mbs_only_flag
|
||||
pSps->bFrameMbsOnlyFlag = !!uiCode;
|
||||
if (!pSps->bFrameMbsOnlyFlag) {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "ParseSps(): frame_mbs_only_flag (%d) not supported.",
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "ParseSps(): frame_mbs_only_flag (%d) not supported.\n",
|
||||
pSps->bFrameMbsOnlyFlag);
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_PARAM_SETS, ERR_INFO_UNSUPPORTED_MBAFF);
|
||||
}
|
||||
@@ -946,14 +966,14 @@ int32_t ParseSps (PWelsDecoderContext pCtx, PBitStringAux pBsAux, int32_t* pPicW
|
||||
WELS_READ_VERIFY (BsGetUe (pBs, &uiCode)); //frame_crop_right_offset
|
||||
pSps->sFrameCrop.iRightOffset = uiCode;
|
||||
if ((pSps->sFrameCrop.iLeftOffset + pSps->sFrameCrop.iRightOffset) > ((int32_t)pSps->iMbWidth * 16 / 2)) {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "frame_crop_left_offset + frame_crop_right_offset exceeds limits!");
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "frame_crop_left_offset + frame_crop_right_offset exceeds limits!\n");
|
||||
}
|
||||
WELS_READ_VERIFY (BsGetUe (pBs, &uiCode)); //frame_crop_top_offset
|
||||
pSps->sFrameCrop.iTopOffset = uiCode;
|
||||
WELS_READ_VERIFY (BsGetUe (pBs, &uiCode)); //frame_crop_bottom_offset
|
||||
pSps->sFrameCrop.iBottomOffset = uiCode;
|
||||
if ((pSps->sFrameCrop.iTopOffset + pSps->sFrameCrop.iBottomOffset) > ((int32_t)pSps->iMbHeight * 16 / 2)) {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "frame_crop_top_offset + frame_crop_right_offset exceeds limits!");
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "frame_crop_top_offset + frame_crop_right_offset exceeds limits!\n");
|
||||
}
|
||||
} else {
|
||||
pSps->sFrameCrop.iLeftOffset = 0; // frame_crop_left_offset
|
||||
@@ -1090,7 +1110,7 @@ int32_t ParsePps (PWelsDecoderContext pCtx, PPps pPpsList, PBitStringAux pBsAux)
|
||||
WELS_READ_VERIFY (BsGetUe (pBsAux, &uiCode)); //slice_group_map_type
|
||||
pPps->uiSliceGroupMapType = uiCode;
|
||||
if (pPps->uiSliceGroupMapType > 1) {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "ParsePps(): slice_group_map_type (%d): support only 0,1.",
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "ParsePps(): slice_group_map_type (%d): support only 0,1.\n",
|
||||
pPps->uiSliceGroupMapType);
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_PARAM_SETS, ERR_INFO_UNSUPPORTED_FMOTYPE);
|
||||
}
|
||||
|
||||
@@ -91,7 +91,7 @@ int32_t WelsTargetSliceConstruction (PWelsDecoderContext pCtx) {
|
||||
|
||||
if (WelsTargetMbConstruction (pCtx)) {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING,
|
||||
"WelsTargetSliceConstruction():::MB(%d, %d) construction error. pCurSlice_type:%d",
|
||||
"WelsTargetSliceConstruction():::MB(%d, %d) construction error. pCurSlice_type:%d\n",
|
||||
pCurLayer->iMbX, pCurLayer->iMbY, pCurSlice->eSliceType);
|
||||
|
||||
return -1;
|
||||
@@ -105,7 +105,7 @@ int32_t WelsTargetSliceConstruction (PWelsDecoderContext pCtx) {
|
||||
|
||||
if (pCtx->iTotalNumMbRec > iTotalMbTargetLayer) {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING,
|
||||
"WelsTargetSliceConstruction():::pCtx->iTotalNumMbRec:%d, iTotalMbTargetLayer:%d",
|
||||
"WelsTargetSliceConstruction():::pCtx->iTotalNumMbRec:%d, iTotalMbTargetLayer:%d\n",
|
||||
pCtx->iTotalNumMbRec, iTotalMbTargetLayer);
|
||||
|
||||
return -1;
|
||||
@@ -287,7 +287,7 @@ int32_t WelsTargetMbConstruction (PWelsDecoderContext pCtx) {
|
||||
WelsMbInterConstruction (pCtx, pCurLayer);
|
||||
}
|
||||
} else {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "WelsTargetMbConstruction():::::Unknown MB type: %d",
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "WelsTargetMbConstruction():::::Unknown MB type: %d\n",
|
||||
pCurLayer->pMbType[pCurLayer->iMbXyIndex]);
|
||||
return -1;
|
||||
}
|
||||
@@ -419,7 +419,7 @@ int32_t WelsDecodeSlice (PWelsDecoderContext pCtx, bool bFirstSliceInLayer, PNal
|
||||
}
|
||||
if (iUsedBits > pBs->iBits) { //When BS incomplete, as long as find it, SHOULD stop decoding to avoid mosaic or crash.
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING,
|
||||
"WelsDecodeSlice()::::pBs incomplete, iUsedBits:%" PRId64" > pBs->iBits:%d, MUST stop decoding.",
|
||||
"WelsDecodeSlice()::::pBs incomplete, iUsedBits:%"PRId64" > pBs->iBits:%d, MUST stop decoding.\n",
|
||||
(int64_t) iUsedBits, pBs->iBits);
|
||||
return -1;
|
||||
}
|
||||
@@ -690,7 +690,7 @@ int32_t WelsDecodeMbCavlcISlice (PWelsDecoderContext pCtx, PNalUnit pNalCur) {
|
||||
if (!iBaseModeFlag) {
|
||||
iRet = WelsActualDecodeMbCavlcISlice (pCtx);
|
||||
} else {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "iBaseModeFlag (%d) != 0, inter-layer prediction not supported.",
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "iBaseModeFlag (%d) != 0, inter-layer prediction not supported.\n",
|
||||
iBaseModeFlag);
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_SLICE_HEADER, ERR_INFO_UNSUPPORTED_ILP);
|
||||
}
|
||||
@@ -747,7 +747,7 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) {
|
||||
if (pCurLayer->pResidualPredFlag[iMbXy] == 0) {
|
||||
pCurLayer->pInterPredictionDoneFlag[iMbXy] = 0;
|
||||
} else {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "residual_pred_flag = 1 not supported.");
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "residual_pred_flag = 1 not supported.\n");
|
||||
return -1;
|
||||
}
|
||||
} else { //intra MB type
|
||||
@@ -1044,7 +1044,7 @@ int32_t WelsDecodeMbCavlcPSlice (PWelsDecoderContext pCtx, PNalUnit pNalCur) {
|
||||
if (!iBaseModeFlag) {
|
||||
iRet = WelsActualDecodeMbCavlcPSlice (pCtx);
|
||||
} else {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "iBaseModeFlag (%d) != 0, inter-layer prediction not supported.",
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "iBaseModeFlag (%d) != 0, inter-layer prediction not supported.\n",
|
||||
iBaseModeFlag);
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_SLICE_HEADER, ERR_INFO_UNSUPPORTED_ILP);
|
||||
}
|
||||
@@ -1065,9 +1065,9 @@ void WelsBlockFuncInit (SBlockFunc* pFunc, int32_t iCpu) {
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_NEON_AARCH64
|
||||
if (iCpu & WELS_CPU_NEON) {
|
||||
pFunc->pWelsSetNonZeroCountFunc = SetNonZeroCount_AArch64_neon;
|
||||
}
|
||||
if (iCpu & WELS_CPU_NEON) {
|
||||
pFunc->pWelsSetNonZeroCountFunc = SetNonZeroCount_AArch64_neon;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -134,7 +134,7 @@ void WelsDecoderDefaults (PWelsDecoderContext pCtx, SLogContext* pLogCtx) {
|
||||
|
||||
pCtx->pArgDec = NULL;
|
||||
|
||||
pCtx->eOutputColorFormat = videoFormatI420; // yuv in default
|
||||
pCtx->iOutputColorFormat = videoFormatI420; // yuv in default
|
||||
pCtx->bHaveGotMemory = false; // not ever request memory blocks for decoder context related
|
||||
pCtx->uiCpuFlag = 0;
|
||||
|
||||
@@ -160,7 +160,7 @@ void WelsDecoderDefaults (PWelsDecoderContext pCtx, SLogContext* pLogCtx) {
|
||||
pCtx->pPicBuff[LIST_1] = NULL;
|
||||
|
||||
pCtx->bAvcBasedFlag = true;
|
||||
pCtx->eErrorConMethod = ERROR_CON_SLICE_COPY;
|
||||
pCtx->iErrorConMethod = ERROR_CON_SLICE_COPY;
|
||||
pCtx->pPreviousDecodedPictureInDpb = NULL;
|
||||
|
||||
}
|
||||
@@ -273,12 +273,10 @@ void WelsFreeMem (PWelsDecoderContext pCtx) {
|
||||
/*!
|
||||
* \brief Open decoder
|
||||
*/
|
||||
int32_t WelsOpenDecoder (PWelsDecoderContext pCtx) {
|
||||
void WelsOpenDecoder (PWelsDecoderContext pCtx) {
|
||||
// function pointers
|
||||
//initial MC function pointer--
|
||||
int iRet = ERR_NONE;
|
||||
InitMcFunc (& (pCtx->sMcFunc), pCtx->uiCpuFlag);
|
||||
InitErrorCon (pCtx);
|
||||
|
||||
InitExpandPictureFunc (& (pCtx->sExpandPicFunc), pCtx->uiCpuFlag);
|
||||
AssignFuncPointerForRec (pCtx);
|
||||
@@ -287,9 +285,8 @@ int32_t WelsOpenDecoder (PWelsDecoderContext pCtx) {
|
||||
InitVlcTable (&pCtx->sVlcTable);
|
||||
|
||||
// startup memory
|
||||
iRet = WelsInitMemory (pCtx);
|
||||
if (ERR_NONE != iRet)
|
||||
return iRet;
|
||||
if (ERR_NONE != WelsInitMemory (pCtx))
|
||||
return;
|
||||
|
||||
#ifdef LONG_TERM_REF
|
||||
pCtx->bParamSetsLostFlag = true;
|
||||
@@ -297,9 +294,9 @@ int32_t WelsOpenDecoder (PWelsDecoderContext pCtx) {
|
||||
pCtx->bReferenceLostAtT0Flag = true; // should be true to waiting IDR at incoming AU bits following, 6/4/2010
|
||||
#endif //LONG_TERM_REF
|
||||
pCtx->bNewSeqBegin = true;
|
||||
pCtx->bDecErrorConedFlag = false; //default: decoder normal status
|
||||
pCtx->bPrintFrameErrorTraceFlag = true;
|
||||
pCtx->iIgnoredErrorInfoPacketCount = 0;
|
||||
return iRet;
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -334,11 +331,8 @@ int32_t DecoderConfigParam (PWelsDecoderContext pCtx, const SDecodingParam* kpPa
|
||||
return 1;
|
||||
|
||||
memcpy (pCtx->pParam, kpParam, sizeof (SDecodingParam));
|
||||
pCtx->eOutputColorFormat = pCtx->pParam->eOutputColorFormat;
|
||||
int32_t iRet = DecoderSetCsp (pCtx, pCtx->pParam->eOutputColorFormat);
|
||||
if (iRet)
|
||||
return iRet;
|
||||
pCtx->eErrorConMethod = pCtx->pParam->eEcActiveIdc;
|
||||
pCtx->iOutputColorFormat = pCtx->pParam->iOutputColorFormat;
|
||||
pCtx->bErrorResilienceFlag = pCtx->pParam->uiEcActiveFlag ? true : false;
|
||||
|
||||
if (VIDEO_BITSTREAM_SVC == pCtx->pParam->sVideoProperty.eVideoBsType ||
|
||||
VIDEO_BITSTREAM_AVC == pCtx->pParam->sVideoProperty.eVideoBsType) {
|
||||
@@ -347,7 +341,7 @@ int32_t DecoderConfigParam (PWelsDecoderContext pCtx, const SDecodingParam* kpPa
|
||||
pCtx->eVideoType = VIDEO_BITSTREAM_DEFAULT;
|
||||
}
|
||||
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_INFO, "eVideoType: %d", pCtx->eVideoType);
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_INFO, "eVideoType: %d\n", pCtx->eVideoType);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -373,7 +367,10 @@ int32_t WelsInitDecoder (PWelsDecoderContext pCtx, SLogContext* pLogCtx) {
|
||||
WelsDecoderDefaults (pCtx, pLogCtx);
|
||||
|
||||
// open decoder
|
||||
return WelsOpenDecoder (pCtx);
|
||||
WelsOpenDecoder (pCtx);
|
||||
|
||||
|
||||
return ERR_NONE;
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -465,8 +462,8 @@ int32_t WelsDecodeBs (PWelsDecoderContext pCtx, const uint8_t* kpBsBuf, const in
|
||||
|
||||
iConsumedBytes = 0;
|
||||
pNalPayload = ParseNalHeader (pCtx, &pCtx->sCurNalHead, pDstNal, iDstIdx, pSrcNal - 3, iSrcIdx + 3, &iConsumedBytes);
|
||||
if (IS_VCL_NAL (pCtx->sCurNalHead.eNalUnitType, 1)) {
|
||||
CheckAndFinishLastPic (pCtx, ppDst, pDstBufInfo);
|
||||
if ((pCtx->iErrorConMethod != ERROR_CON_DISABLE) && (IS_VCL_NAL (pCtx->sCurNalHead.eNalUnitType, 1))) {
|
||||
CheckAndDoEC (pCtx, ppDst, pDstBufInfo);
|
||||
}
|
||||
if (IS_PARAM_SETS_NALS (pCtx->sCurNalHead.eNalUnitType) && pNalPayload) {
|
||||
iRet = ParseNonVclNal (pCtx, pNalPayload, iDstIdx - iConsumedBytes);
|
||||
@@ -480,7 +477,7 @@ int32_t WelsDecodeBs (PWelsDecoderContext pCtx, const uint8_t* kpBsBuf, const in
|
||||
#else
|
||||
pCtx->bReferenceLostAtT0Flag = true;
|
||||
#endif
|
||||
if ((pCtx->eErrorConMethod == ERROR_CON_DISABLE) || (dsOutOfMemory & pCtx->iErrorCode))
|
||||
if ((pCtx->iErrorConMethod == ERROR_CON_DISABLE) || (dsOutOfMemory & pCtx->iErrorCode))
|
||||
ResetParameterSetsState (pCtx);
|
||||
|
||||
if (dsOutOfMemory & pCtx->iErrorCode) {
|
||||
@@ -496,7 +493,7 @@ int32_t WelsDecodeBs (PWelsDecoderContext pCtx, const uint8_t* kpBsBuf, const in
|
||||
#else
|
||||
pCtx->bReferenceLostAtT0Flag = true;
|
||||
#endif
|
||||
if ((pCtx->eErrorConMethod == ERROR_CON_DISABLE) || (dsOutOfMemory & pCtx->iErrorCode))
|
||||
if (pCtx->iErrorConMethod == ERROR_CON_DISABLE)
|
||||
ResetParameterSetsState (pCtx);
|
||||
}
|
||||
return pCtx->iErrorCode;
|
||||
@@ -525,8 +522,8 @@ int32_t WelsDecodeBs (PWelsDecoderContext pCtx, const uint8_t* kpBsBuf, const in
|
||||
|
||||
iConsumedBytes = 0;
|
||||
pNalPayload = ParseNalHeader (pCtx, &pCtx->sCurNalHead, pDstNal, iDstIdx, pSrcNal - 3, iSrcIdx + 3, &iConsumedBytes);
|
||||
if (IS_VCL_NAL (pCtx->sCurNalHead.eNalUnitType, 1)) {
|
||||
CheckAndFinishLastPic (pCtx, ppDst, pDstBufInfo);
|
||||
if ((pCtx->iErrorConMethod != ERROR_CON_DISABLE) && (IS_VCL_NAL (pCtx->sCurNalHead.eNalUnitType, 1))) {
|
||||
CheckAndDoEC (pCtx, ppDst, pDstBufInfo);
|
||||
}
|
||||
if (IS_PARAM_SETS_NALS (pCtx->sCurNalHead.eNalUnitType) && pNalPayload) {
|
||||
iRet = ParseNonVclNal (pCtx, pNalPayload, iDstIdx - iConsumedBytes);
|
||||
@@ -540,7 +537,7 @@ int32_t WelsDecodeBs (PWelsDecoderContext pCtx, const uint8_t* kpBsBuf, const in
|
||||
#else
|
||||
pCtx->bReferenceLostAtT0Flag = true;
|
||||
#endif
|
||||
if ((pCtx->eErrorConMethod == ERROR_CON_DISABLE) || (dsOutOfMemory & pCtx->iErrorCode))
|
||||
if ((pCtx->iErrorConMethod == ERROR_CON_DISABLE) || (dsOutOfMemory & pCtx->iErrorCode))
|
||||
ResetParameterSetsState (pCtx);
|
||||
return pCtx->iErrorCode;
|
||||
}
|
||||
@@ -576,7 +573,7 @@ int32_t WelsDecodeBs (PWelsDecoderContext pCtx, const uint8_t* kpBsBuf, const in
|
||||
#else
|
||||
pCtx->bReferenceLostAtT0Flag = true;
|
||||
#endif
|
||||
if ((pCtx->eErrorConMethod == ERROR_CON_DISABLE) || (dsOutOfMemory & pCtx->iErrorCode))
|
||||
if ((pCtx->iErrorConMethod == ERROR_CON_DISABLE) || (dsOutOfMemory & pCtx->iErrorCode))
|
||||
ResetParameterSetsState (pCtx);
|
||||
return pCtx->iErrorCode;
|
||||
}
|
||||
@@ -592,18 +589,9 @@ int32_t WelsDecodeBs (PWelsDecoderContext pCtx, const uint8_t* kpBsBuf, const in
|
||||
int32_t DecoderSetCsp (PWelsDecoderContext pCtx, const int32_t kiColorFormat) {
|
||||
WELS_VERIFY_RETURN_IF (1, (NULL == pCtx));
|
||||
|
||||
pCtx->eOutputColorFormat = (EVideoFormatType) kiColorFormat;
|
||||
pCtx->iOutputColorFormat = kiColorFormat;
|
||||
if (pCtx->pParam != NULL) {
|
||||
pCtx->pParam->eOutputColorFormat = (EVideoFormatType) kiColorFormat;
|
||||
}
|
||||
|
||||
//For now, support only videoFormatI420!
|
||||
if (kiColorFormat == (int32_t) videoFormatInternal) {
|
||||
pCtx->pParam->eOutputColorFormat = pCtx->eOutputColorFormat = videoFormatI420;
|
||||
} else if (kiColorFormat != (int32_t) videoFormatI420) {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "Support I420 output only for now! Change to I420...");
|
||||
pCtx->pParam->eOutputColorFormat = pCtx->eOutputColorFormat = videoFormatI420;
|
||||
return cmUnsupportedData;
|
||||
pCtx->pParam->iOutputColorFormat = kiColorFormat;
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -626,7 +614,7 @@ int32_t SyncPictureResolutionExt (PWelsDecoderContext pCtx, const int32_t kiMbWi
|
||||
iErr = WelsRequestMem (pCtx, kiMbWidth, kiMbHeight); // common memory used
|
||||
if (ERR_NONE != iErr) {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING,
|
||||
"SyncPictureResolutionExt()::WelsRequestMem--buffer allocated failure.");
|
||||
"SyncPictureResolutionExt()::WelsRequestMem--buffer allocated failure.\n");
|
||||
pCtx->iErrorCode = dsOutOfMemory;
|
||||
return iErr;
|
||||
}
|
||||
@@ -634,7 +622,7 @@ int32_t SyncPictureResolutionExt (PWelsDecoderContext pCtx, const int32_t kiMbWi
|
||||
iErr = InitialDqLayersContext (pCtx, kiPicWidth, kiPicHeight);
|
||||
if (ERR_NONE != iErr) {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING,
|
||||
"SyncPictureResolutionExt()::InitialDqLayersContext--buffer allocated failure.");
|
||||
"SyncPictureResolutionExt()::InitialDqLayersContext--buffer allocated failure.\n");
|
||||
pCtx->iErrorCode = dsOutOfMemory;
|
||||
}
|
||||
|
||||
|
||||
@@ -66,7 +66,7 @@ static inline int32_t DecodeFrameConstruction (PWelsDecoderContext pCtx, uint8_t
|
||||
if (pCtx->iTotalNumMbRec == kiTotalNumMbInCurLayer) {
|
||||
pCtx->bPrintFrameErrorTraceFlag = true;
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_INFO,
|
||||
"DecodeFrameConstruction()::::output first frame of new sequence, %d x %d, crop_left:%d, crop_right:%d, crop_top:%d, crop_bottom:%d, ignored error packet:%d.",
|
||||
"DecodeFrameConstruction()::::output first frame of new sequence, %d x %d, crop_left:%d, crop_right:%d, crop_top:%d, crop_bottom:%d, ignored error packet:%d.\n",
|
||||
kiWidth, kiHeight, pCtx->sFrameCrop.iLeftOffset, pCtx->sFrameCrop.iRightOffset, pCtx->sFrameCrop.iTopOffset,
|
||||
pCtx->sFrameCrop.iBottomOffset, pCtx->iIgnoredErrorInfoPacketCount);
|
||||
pCtx->iIgnoredErrorInfoPacketCount = 0;
|
||||
@@ -75,14 +75,14 @@ static inline int32_t DecodeFrameConstruction (PWelsDecoderContext pCtx, uint8_t
|
||||
|
||||
if (pCtx->iTotalNumMbRec != kiTotalNumMbInCurLayer) {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_DEBUG,
|
||||
"DecodeFrameConstruction():::iTotalNumMbRec:%d, total_num_mb_sps:%d, cur_layer_mb_width:%d, cur_layer_mb_height:%d ",
|
||||
"DecodeFrameConstruction():::iTotalNumMbRec:%d, total_num_mb_sps:%d, cur_layer_mb_width:%d, cur_layer_mb_height:%d \n",
|
||||
pCtx->iTotalNumMbRec, kiTotalNumMbInCurLayer, pCurDq->iMbWidth, pCurDq->iMbHeight);
|
||||
bFrameCompleteFlag = false; //return later after output buffer is done
|
||||
if (pCtx->bInstantDecFlag) //no-delay decoding, wait for new slice
|
||||
return -1;
|
||||
} else if (pCurDq->sLayerInfo.sNalHeaderExt.bIdrFlag
|
||||
&& (pCtx->iErrorCode == dsErrorFree)) { //complete non-ECed IDR frame done
|
||||
pCtx->pDec->bIsComplete = true;
|
||||
pCtx->bDecErrorConedFlag = false;
|
||||
}
|
||||
|
||||
pCtx->iTotalNumMbRec = 0;
|
||||
@@ -103,13 +103,11 @@ static inline int32_t DecodeFrameConstruction (PWelsDecoderContext pCtx, uint8_t
|
||||
ppDst[2] = ppDst[2] + pCtx->sFrameCrop.iTopOffset * pPic->iLinesize[1] + pCtx->sFrameCrop.iLeftOffset;
|
||||
pDstInfo->iBufferStatus = 1;
|
||||
|
||||
if (pCtx->eErrorConMethod == ERROR_CON_DISABLE) //no buffer output if EC is disabled and frame incomplete
|
||||
pDstInfo->iBufferStatus = (int32_t) (bFrameCompleteFlag
|
||||
&& pPic->bIsComplete); // When EC disable, ECed picture not output
|
||||
if (pCtx->iErrorConMethod == ERROR_CON_DISABLE) //no buffer output if EC is disabled and frame incomplete
|
||||
pDstInfo->iBufferStatus = (int32_t) bFrameCompleteFlag;
|
||||
|
||||
if (pDstInfo->iBufferStatus == 0) {
|
||||
if (!bFrameCompleteFlag)
|
||||
pCtx->iErrorCode |= dsBitstreamError;
|
||||
if (!bFrameCompleteFlag) {
|
||||
pCtx->iErrorCode |= dsBitstreamError;
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -131,7 +129,7 @@ inline void HandleReferenceLostL0 (PWelsDecoderContext pCtx, PNalUnit pCurNal
|
||||
if (0 == pCurNal->sNalHeaderExt.uiTemporalId) {
|
||||
pCtx->bReferenceLostAtT0Flag = true;
|
||||
}
|
||||
if (pCtx->eErrorConMethod == ERROR_CON_DISABLE) {
|
||||
if (pCtx->iErrorConMethod == ERROR_CON_DISABLE) {
|
||||
#ifndef LONG_TERM_REF
|
||||
if (pCtx->bReferenceLostAtT0Flag) {
|
||||
ResetParameterSetsState (pCtx);
|
||||
@@ -145,7 +143,7 @@ inline void HandleReferenceLost (PWelsDecoderContext pCtx, PNalUnit pCurNal)
|
||||
if ((0 == pCurNal->sNalHeaderExt.uiTemporalId) || (1 == pCurNal->sNalHeaderExt.uiTemporalId)) {
|
||||
pCtx->bReferenceLostAtT0Flag = true;
|
||||
}
|
||||
if (pCtx->eErrorConMethod == ERROR_CON_DISABLE) {
|
||||
if (pCtx->iErrorConMethod == ERROR_CON_DISABLE) {
|
||||
#ifndef LONG_TERM_REF
|
||||
if (pCtx->bReferenceLostAtT0Flag) {
|
||||
ResetParameterSetsState (pCtx);
|
||||
@@ -503,7 +501,7 @@ int32_t ParseSliceHeaderSyntaxs (PWelsDecoderContext pCtx, PBitStringAux pBs, co
|
||||
WELS_READ_VERIFY (BsGetUe (pBs, &uiCode)); //slice_type
|
||||
uiSliceType = uiCode;
|
||||
if (uiSliceType > 9) {
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "slice type too large (%d) at first_mb(%d)", uiSliceType,
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "slice type too large (%d) at first_mb(%d)\n", uiSliceType,
|
||||
pSliceHead->iFirstMbInSlice);
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_SLICE_HEADER, ERR_INFO_INVALID_SLICE_TYPE);
|
||||
}
|
||||
@@ -511,17 +509,17 @@ int32_t ParseSliceHeaderSyntaxs (PWelsDecoderContext pCtx, PBitStringAux pBs, co
|
||||
uiSliceType -= 5;
|
||||
|
||||
if (B_SLICE == uiSliceType) {
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "ParseSliceHeaderSyntaxs(): B slice not supported.");
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "ParseSliceHeaderSyntaxs(): B slice not supported.\n");
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_SLICE_HEADER, ERR_INFO_UNSUPPORTED_BIPRED);
|
||||
}
|
||||
if ((NAL_UNIT_CODED_SLICE_IDR == eNalType) && (I_SLICE != uiSliceType)) {
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "Invalid slice type(%d) in IDR picture. ", uiSliceType);
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "Invalid slice type(%d) in IDR picture. \n", uiSliceType);
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_SLICE_HEADER, ERR_INFO_INVALID_SLICE_TYPE);
|
||||
}
|
||||
|
||||
if (kbExtensionFlag) {
|
||||
if (uiSliceType > 2) {
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "Invalid slice type(%d).", uiSliceType);
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "Invalid slice type(%d).\n", uiSliceType);
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_SLICE_HEADER, ERR_INFO_INVALID_SLICE_TYPE);
|
||||
}
|
||||
}
|
||||
@@ -532,49 +530,39 @@ int32_t ParseSliceHeaderSyntaxs (PWelsDecoderContext pCtx, PBitStringAux pBs, co
|
||||
iPpsId = uiCode;
|
||||
|
||||
if (iPpsId >= MAX_PPS_COUNT) {
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "iPpsId out of range");
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "iPpsId out of range\n");
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_SLICE_HEADER, ERR_INFO_PPS_ID_OVERFLOW);
|
||||
}
|
||||
|
||||
//add check PPS available here
|
||||
if (pCtx->bPpsAvailFlags[iPpsId] == false) {
|
||||
WelsLog (pLogCtx, WELS_LOG_ERROR, "PPS id is invalid!");
|
||||
WelsLog (pLogCtx, WELS_LOG_ERROR, "PPS id is invalid!\n");
|
||||
pCtx->iErrorCode |= dsNoParamSets;
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_SLICE_HEADER, ERR_INFO_INVALID_PPS_ID);
|
||||
}
|
||||
|
||||
if (pCtx->iOverwriteFlags & OVERWRITE_PPS)
|
||||
pPps = &pCtx->sPpsBuffer[MAX_PPS_COUNT];
|
||||
else
|
||||
pPps = &pCtx->sPpsBuffer[iPpsId];
|
||||
pPps = &pCtx->sPpsBuffer[iPpsId];
|
||||
|
||||
if (pPps->uiNumSliceGroups == 0) {
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "Invalid PPS referenced");
|
||||
pCtx->iErrorCode |= dsNoParamSets;
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "non existing PPS referenced\n");
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_SLICE_HEADER, ERR_INFO_NO_PARAM_SETS);
|
||||
}
|
||||
|
||||
if (kbExtensionFlag) {
|
||||
if (pCtx->iOverwriteFlags & OVERWRITE_SUBSETSPS)
|
||||
pSubsetSps = &pCtx->sSubsetSpsBuffer[MAX_SPS_COUNT];
|
||||
else
|
||||
pSubsetSps = &pCtx->sSubsetSpsBuffer[pPps->iSpsId];
|
||||
pSubsetSps = &pCtx->sSubsetSpsBuffer[pPps->iSpsId];
|
||||
pSps = &pSubsetSps->sSps;
|
||||
if (pCtx->bSubspsAvailFlags[pPps->iSpsId] == false) {
|
||||
WelsLog (pLogCtx, WELS_LOG_ERROR, "SPS id is invalid!");
|
||||
WelsLog (pLogCtx, WELS_LOG_ERROR, "SPS id is invalid!\n");
|
||||
pCtx->iErrorCode |= dsNoParamSets;
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_SLICE_HEADER, ERR_INFO_INVALID_SPS_ID);
|
||||
}
|
||||
} else {
|
||||
if (pCtx->bSpsAvailFlags[pPps->iSpsId] == false) {
|
||||
WelsLog (pLogCtx, WELS_LOG_ERROR, "SPS id is invalid!");
|
||||
WelsLog (pLogCtx, WELS_LOG_ERROR, "SPS id is invalid!\n");
|
||||
pCtx->iErrorCode |= dsNoParamSets;
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_SLICE_HEADER, ERR_INFO_INVALID_SPS_ID);
|
||||
}
|
||||
if (pCtx->iOverwriteFlags & OVERWRITE_SPS)
|
||||
pSps = &pCtx->sSpsBuffer[MAX_SPS_COUNT];
|
||||
else
|
||||
pSps = &pCtx->sSpsBuffer[pPps->iSpsId];
|
||||
pSps = &pCtx->sSpsBuffer[pPps->iSpsId];
|
||||
}
|
||||
pSliceHead->iPpsId = iPpsId;
|
||||
pSliceHead->iSpsId = pPps->iSpsId;
|
||||
@@ -586,7 +574,7 @@ int32_t ParseSliceHeaderSyntaxs (PWelsDecoderContext pCtx, PBitStringAux pBs, co
|
||||
bIdrFlag = (!kbExtensionFlag && eNalType == NAL_UNIT_CODED_SLICE_IDR) || (kbExtensionFlag && pNalHeaderExt->bIdrFlag);
|
||||
|
||||
if (pSps->uiLog2MaxFrameNum == 0) {
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "non existing SPS referenced");
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "non existing SPS referenced\n");
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_SLICE_HEADER, ERR_INFO_NO_PARAM_SETS);
|
||||
}
|
||||
// check first_mb_in_slice
|
||||
@@ -598,7 +586,7 @@ int32_t ParseSliceHeaderSyntaxs (PWelsDecoderContext pCtx, PBitStringAux pBs, co
|
||||
pSliceHead->bFieldPicFlag = false;
|
||||
pSliceHead->bBottomFiledFlag = false;
|
||||
if (!pSps->bFrameMbsOnlyFlag) {
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "ParseSliceHeaderSyntaxs(): frame_mbs_only_flag = %d not supported. ",
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "ParseSliceHeaderSyntaxs(): frame_mbs_only_flag = %d not supported. \n",
|
||||
pSps->bFrameMbsOnlyFlag);
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_SLICE_HEADER, ERR_INFO_UNSUPPORTED_MBAFF);
|
||||
}
|
||||
@@ -608,7 +596,7 @@ int32_t ParseSliceHeaderSyntaxs (PWelsDecoderContext pCtx, PBitStringAux pBs, co
|
||||
if (bIdrFlag) {
|
||||
if (pSliceHead->iFrameNum != 0) {
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING,
|
||||
"ParseSliceHeaderSyntaxs(), invaild frame number: %d due to IDR frame introduced!",
|
||||
"ParseSliceHeaderSyntaxs(), invaild frame number: %d due to IDR frame introduced!\n",
|
||||
pSliceHead->iFrameNum);
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_SLICE_HEADER, ERR_INFO_INVALID_FRAME_NUM);
|
||||
}
|
||||
@@ -670,14 +658,14 @@ int32_t ParseSliceHeaderSyntaxs (PWelsDecoderContext pCtx, PBitStringAux pBs, co
|
||||
}
|
||||
|
||||
if (pSliceHead->uiRefCount[0] > MAX_REF_PIC_COUNT || pSliceHead->uiRefCount[1] > MAX_REF_PIC_COUNT) {
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "reference overflow");
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "reference overflow\n");
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_SLICE_HEADER, ERR_INFO_REF_COUNT_OVERFLOW);
|
||||
}
|
||||
|
||||
if (BASE_QUALITY_ID == uiQualityId) {
|
||||
iRet = ParseRefPicListReordering (pBs, pSliceHead);
|
||||
if (iRet != ERR_NONE) {
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "invalid ref pPic list reordering syntaxs!");
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "invalid ref pPic list reordering syntaxs!\n");
|
||||
return iRet;
|
||||
}
|
||||
|
||||
@@ -699,7 +687,7 @@ int32_t ParseSliceHeaderSyntaxs (PWelsDecoderContext pCtx, PBitStringAux pBs, co
|
||||
pSliceHeadExt->bStoreRefBasePicFlag = !!uiCode;
|
||||
if ((pNalHeaderExt->bUseRefBasePicFlag || pSliceHeadExt->bStoreRefBasePicFlag) && !bIdrFlag) {
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING,
|
||||
"ParseSliceHeaderSyntaxs(): bUseRefBasePicFlag or bStoreRefBasePicFlag = 1 not supported.");
|
||||
"ParseSliceHeaderSyntaxs(): bUseRefBasePicFlag or bStoreRefBasePicFlag = 1 not supported.\n");
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_SLICE_HEADER, ERR_INFO_UNSUPPORTED_ILP);
|
||||
}
|
||||
}
|
||||
@@ -707,7 +695,7 @@ int32_t ParseSliceHeaderSyntaxs (PWelsDecoderContext pCtx, PBitStringAux pBs, co
|
||||
}
|
||||
|
||||
if (pPps->bEntropyCodingModeFlag) {
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "ParseSliceHeaderSyntaxs(): CABAC in Enhancement layer not supported.");
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "ParseSliceHeaderSyntaxs(): CABAC in Enhancement layer not supported.\n");
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_SLICE_HEADER, ERR_INFO_UNSUPPORTED_CABAC_EL);
|
||||
}
|
||||
|
||||
@@ -715,14 +703,14 @@ int32_t ParseSliceHeaderSyntaxs (PWelsDecoderContext pCtx, PBitStringAux pBs, co
|
||||
pSliceHead->iSliceQpDelta = iCode;
|
||||
pSliceHead->iSliceQp = pPps->iPicInitQp + pSliceHead->iSliceQpDelta;
|
||||
if (pSliceHead->iSliceQp < 0 || pSliceHead->iSliceQp > 51) {
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "QP %d out of range", pSliceHead->iSliceQp);
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "QP %d out of range\n", pSliceHead->iSliceQp);
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_SLICE_HEADER, ERR_INFO_INVALID_QP);
|
||||
}
|
||||
|
||||
//FIXME qscale / qp ... stuff
|
||||
if (!kbExtensionFlag) {
|
||||
if (uiSliceType == SP_SLICE || uiSliceType == SI_SLICE) {
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "SP/SI not supported");
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "SP/SI not supported\n");
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_SLICE_HEADER, ERR_INFO_UNSUPPORTED_SPSI);
|
||||
}
|
||||
}
|
||||
@@ -735,7 +723,7 @@ int32_t ParseSliceHeaderSyntaxs (PWelsDecoderContext pCtx, PBitStringAux pBs, co
|
||||
pSliceHead->uiDisableDeblockingFilterIdc = uiCode;
|
||||
//refer to JVT-X201wcm1.doc G.7.4.3.4--2010.4.20
|
||||
if (pSliceHead->uiDisableDeblockingFilterIdc > 6) {
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "disable_deblock_filter_idc (%d) out of range [0, 6]",
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "disable_deblock_filter_idc (%d) out of range [0, 6]\n",
|
||||
pSliceHead->uiDisableDeblockingFilterIdc);
|
||||
return ERR_INFO_INVALID_DBLOCKING_IDC;
|
||||
}
|
||||
@@ -782,7 +770,7 @@ int32_t ParseSliceHeaderSyntaxs (PWelsDecoderContext pCtx, PBitStringAux pBs, co
|
||||
pSliceHeadExt->uiDisableInterLayerDeblockingFilterIdc = uiCode;
|
||||
//refer to JVT-X201wcm1.doc G.7.4.3.4--2010.4.20
|
||||
if (pSliceHeadExt->uiDisableInterLayerDeblockingFilterIdc > 6) {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "disable_inter_layer_deblock_filter_idc (%d) out of range [0, 6]",
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "disable_inter_layer_deblock_filter_idc (%d) out of range [0, 6]\n",
|
||||
pSliceHeadExt->uiDisableInterLayerDeblockingFilterIdc);
|
||||
return ERR_INFO_INVALID_DBLOCKING_IDC;
|
||||
}
|
||||
@@ -819,7 +807,7 @@ int32_t ParseSliceHeaderSyntaxs (PWelsDecoderContext pCtx, PBitStringAux pBs, co
|
||||
(pos.iTopOffset + pos.iBottomOffset) / (1 + pSliceHead->bFieldPicFlag);
|
||||
}
|
||||
} else if (uiQualityId > BASE_QUALITY_ID) {
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "MGS not supported.");
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "MGS not supported.\n");
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_SLICE_HEADER, ERR_INFO_UNSUPPORTED_MGS);
|
||||
} else {
|
||||
pSliceHeadExt->uiRefLayerDqId = (uint8_t) - 1;
|
||||
@@ -878,7 +866,7 @@ int32_t ParseSliceHeaderSyntaxs (PWelsDecoderContext pCtx, PBitStringAux pBs, co
|
||||
WELS_READ_VERIFY (BsGetBits (pBs, 4, &uiCode)); //scan_idx_end
|
||||
pSliceHeadExt->uiScanIdxEnd = uiCode;
|
||||
if (pSliceHeadExt->uiScanIdxStart != 0 || pSliceHeadExt->uiScanIdxEnd != 15) {
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "uiScanIdxStart (%d) != 0 and uiScanIdxEnd (%d) !=15 not supported here",
|
||||
WelsLog (pLogCtx, WELS_LOG_WARNING, "uiScanIdxStart (%d) != 0 and uiScanIdxEnd (%d) !=15 not supported here\n",
|
||||
pSliceHeadExt->uiScanIdxStart, pSliceHeadExt->uiScanIdxEnd);
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_SLICE_HEADER, ERR_INFO_UNSUPPORTED_MGS);
|
||||
}
|
||||
@@ -972,9 +960,9 @@ int32_t UpdateAccessUnit (PWelsDecoderContext pCtx) {
|
||||
if (uiActualIdx ==
|
||||
pCurAu->uiActualUnitsNum) { // no found IDR nal within incoming AU, need exit to avoid mosaic issue, 11/19/2009
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING,
|
||||
"UpdateAccessUnit():::::Key frame lost.....CAN NOT find IDR from current AU.");
|
||||
"UpdateAccessUnit():::::Key frame lost.....CAN NOT find IDR from current AU.\n");
|
||||
pCtx->iErrorCode |= dsRefLost;
|
||||
if (pCtx->eErrorConMethod == ERROR_CON_DISABLE) {
|
||||
if (pCtx->iErrorConMethod == ERROR_CON_DISABLE) {
|
||||
#ifdef LONG_TERM_REF
|
||||
pCtx->iErrorCode |= dsNoParamSets;
|
||||
return dsNoParamSets;
|
||||
@@ -1668,6 +1656,7 @@ int32_t ConstructAccessUnit (PWelsDecoderContext pCtx, uint8_t** ppDst, SBufferI
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "sync picture resolution ext failed, the error is %d", iErr);
|
||||
return iErr;
|
||||
}
|
||||
InitErrorCon (pCtx); //Do EC initialization here, for sequence start
|
||||
}
|
||||
|
||||
|
||||
@@ -1682,7 +1671,7 @@ int32_t ConstructAccessUnit (PWelsDecoderContext pCtx, uint8_t** ppDst, SBufferI
|
||||
if (pCtx->bNewSeqBegin)
|
||||
ResetActiveSPSForEachLayer (pCtx);
|
||||
if (ERR_NONE != iErr) {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_INFO, "returned error from decoding:[0x%x]", iErr);
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_INFO, "returned error from decoding:[0x%x]\n", iErr);
|
||||
return iErr;
|
||||
}
|
||||
|
||||
@@ -1736,10 +1725,11 @@ void WelsDqLayerDecodeStart (PWelsDecoderContext pCtx, PNalUnit pCurNal, PSps pS
|
||||
pCtx->iFrameNum = pSh->iFrameNum;
|
||||
}
|
||||
|
||||
int32_t InitRefPicList (PWelsDecoderContext pCtx, const uint8_t kuiNRi, int32_t iPoc) {
|
||||
int32_t InitRefPicList (PWelsDecoderContext pCtx, const uint8_t kuiNRi, const bool kbFirstSlice, int32_t iPoc) {
|
||||
int32_t iRet = ERR_NONE;
|
||||
iRet = WelsInitRefList (pCtx, iPoc);
|
||||
if ((pCtx->eSliceType != I_SLICE && pCtx->eSliceType != SI_SLICE)) {
|
||||
if (kbFirstSlice)
|
||||
iRet = WelsInitRefList (pCtx, iPoc);
|
||||
if ((pCtx->eSliceType != I_SLICE && pCtx->eSliceType != SI_SLICE) && kbFirstSlice) {
|
||||
iRet = WelsReorderRefList (pCtx);
|
||||
}
|
||||
|
||||
@@ -1791,8 +1781,6 @@ int32_t DecodeCurrentAccessUnit (PWelsDecoderContext pCtx, uint8_t** ppDst, SBuf
|
||||
int32_t iPpsId = 0;
|
||||
int32_t iRet = ERR_NONE;
|
||||
|
||||
bool bAllRefComplete = true; // Assume default all ref picutres are complete
|
||||
|
||||
const uint8_t kuiTargetLayerDqId = GetTargetDqId (pCtx->uiTargetDqId, pCtx->pParam);
|
||||
const uint8_t kuiDependencyIdMax = (kuiTargetLayerDqId & 0x7F) >> 4;
|
||||
int16_t iLastIdD = -1, iLastIdQ = -1;
|
||||
@@ -1820,7 +1808,7 @@ int32_t DecodeCurrentAccessUnit (PWelsDecoderContext pCtx, uint8_t** ppDst, SBuf
|
||||
|
||||
if (NULL == pCtx->pDec) {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_ERROR,
|
||||
"DecodeCurrentAccessUnit()::::::PrefetchPic ERROR, pSps->iNumRefFrames:%d.",
|
||||
"DecodeCurrentAccessUnit()::::::PrefetchPic ERROR, pSps->iNumRefFrames:%d.\n",
|
||||
pCtx->pSps->iNumRefFrames);
|
||||
pCtx->iErrorCode |= dsOutOfMemory;
|
||||
return ERR_INFO_REF_COUNT_OVERFLOW;
|
||||
@@ -1873,7 +1861,7 @@ int32_t DecodeCurrentAccessUnit (PWelsDecoderContext pCtx, uint8_t** ppDst, SBuf
|
||||
pCtx->pFmo = &pCtx->sFmoList[iPpsId];
|
||||
if (!FmoParamUpdate (pCtx->pFmo, pLayerInfo.pSps, pLayerInfo.pPps, &pCtx->iActiveFmoNum)) {
|
||||
pCtx->iErrorCode |= dsBitstreamError;
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "DecodeCurrentAccessUnit(), FmoParamUpdate failed, eSliceType: %d.",
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "DecodeCurrentAccessUnit(), FmoParamUpdate failed, eSliceType: %d.\n",
|
||||
pSh->eSliceType);
|
||||
return GENERATE_ERROR_NO (ERR_LEVEL_SLICE_HEADER, ERR_INFO_FMO_INIT_FAIL);
|
||||
}
|
||||
@@ -1899,12 +1887,11 @@ int32_t DecodeCurrentAccessUnit (PWelsDecoderContext pCtx, uint8_t** ppDst, SBuf
|
||||
pSh->iFrameNum != pCtx->iPrevFrameNum &&
|
||||
pSh->iFrameNum != ((pCtx->iPrevFrameNum + 1) & ((1 << dq_cur->sLayerInfo.pSps->uiLog2MaxFrameNum) - 1))) {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING,
|
||||
"referencing pictures lost due frame gaps exist, prev_frame_num: %d, curr_frame_num: %d", pCtx->iPrevFrameNum,
|
||||
"referencing pictures lost due frame gaps exist, prev_frame_num: %d, curr_frame_num: %d\n", pCtx->iPrevFrameNum,
|
||||
pSh->iFrameNum);
|
||||
|
||||
bAllRefComplete = false;
|
||||
pCtx->iErrorCode |= dsRefLost;
|
||||
if (pCtx->eErrorConMethod == ERROR_CON_DISABLE) {
|
||||
if (pCtx->iErrorConMethod == ERROR_CON_DISABLE) {
|
||||
#ifdef LONG_TERM_REF
|
||||
pCtx->bParamSetsLostFlag = true;
|
||||
#else
|
||||
@@ -1917,14 +1904,13 @@ int32_t DecodeCurrentAccessUnit (PWelsDecoderContext pCtx, uint8_t** ppDst, SBuf
|
||||
}
|
||||
|
||||
if (iCurrIdD == kuiDependencyIdMax && iCurrIdQ == BASE_QUALITY_ID) {
|
||||
iRet = InitRefPicList (pCtx, uiNalRefIdc, pSh->iPicOrderCntLsb);
|
||||
iRet = InitRefPicList (pCtx, uiNalRefIdc, bFreshSliceAvailable, pSh->iPicOrderCntLsb);
|
||||
if (iRet) {
|
||||
bAllRefComplete = false; // RPLR error, set ref pictures complete flag false
|
||||
HandleReferenceLost (pCtx, pNalCur);
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING,
|
||||
"reference picture introduced by this frame is lost during transmission! uiTId: %d",
|
||||
"reference picture introduced by this frame is lost during transmission! uiTId: %d\n",
|
||||
pNalCur->sNalHeaderExt.uiTemporalId);
|
||||
if (pCtx->eErrorConMethod == ERROR_CON_DISABLE) {
|
||||
if (pCtx->iErrorConMethod == ERROR_CON_DISABLE) {
|
||||
return iRet;
|
||||
}
|
||||
}
|
||||
@@ -1935,23 +1921,18 @@ int32_t DecodeCurrentAccessUnit (PWelsDecoderContext pCtx, uint8_t** ppDst, SBuf
|
||||
//Output good store_base reconstruction when enhancement quality layer occurred error for MGS key picture case
|
||||
if (iRet != ERR_NONE) {
|
||||
WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING,
|
||||
"DecodeCurrentAccessUnit() failed (%d) in frame: %d uiDId: %d uiQId: %d",
|
||||
"DecodeCurrentAccessUnit() failed (%d) in frame: %d uiDId: %d uiQId: %d\n",
|
||||
iRet, pSh->iFrameNum, iCurrIdD, iCurrIdQ);
|
||||
bAllRefComplete = false;
|
||||
HandleReferenceLostL0 (pCtx, pNalCur);
|
||||
if (pCtx->eErrorConMethod == ERROR_CON_DISABLE) {
|
||||
if (pCtx->iErrorConMethod == ERROR_CON_DISABLE) {
|
||||
return iRet;
|
||||
}
|
||||
}
|
||||
if (bReconstructSlice) {
|
||||
if (WelsDecodeConstructSlice (pCtx, pNalCur)) {
|
||||
pCtx->pDec->bIsComplete = false; // reconstruction error, directly set the flag false
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
if (bAllRefComplete && (pCtx->sRefPic.uiRefCount[LIST_0] > 0 || pCtx->eSliceType != I_SLICE)) {
|
||||
bAllRefComplete &= bCheckRefPicturesComplete (pCtx);
|
||||
}
|
||||
}
|
||||
#if defined (_DEBUG) && !defined (CODEC_FOR_TESTBED)
|
||||
fprintf (stderr, "cur_frame : %d iCurrIdD : %d\n ",
|
||||
@@ -1974,12 +1955,6 @@ int32_t DecodeCurrentAccessUnit (PWelsDecoderContext pCtx, uint8_t** ppDst, SBuf
|
||||
break;
|
||||
}
|
||||
|
||||
// Set the current dec picture complete flag. The flag will be reset when current picture need do ErrorCon.
|
||||
pCtx->pDec->bIsComplete = bAllRefComplete;
|
||||
if (!pCtx->pDec->bIsComplete) { // Ref pictures ECed, result in ECed
|
||||
pCtx->iErrorCode |= dsDataErrorConcealed;
|
||||
}
|
||||
|
||||
// A dq layer decoded here
|
||||
#if defined (_DEBUG) && !defined (CODEC_FOR_TESTBED)
|
||||
#undef fprintf
|
||||
@@ -1991,11 +1966,9 @@ int32_t DecodeCurrentAccessUnit (PWelsDecoderContext pCtx, uint8_t** ppDst, SBuf
|
||||
if (dq_cur->uiLayerDqId == kuiTargetLayerDqId) {
|
||||
if (!pCtx->bInstantDecFlag) {
|
||||
//Do error concealment here
|
||||
if ((NeedErrorCon (pCtx)) && (pCtx->eErrorConMethod != ERROR_CON_DISABLE)) {
|
||||
if (NeedErrorCon (pCtx)) {
|
||||
ImplementErrorCon (pCtx);
|
||||
pCtx->iTotalNumMbRec = pCtx->pSps->iMbWidth * pCtx->pSps->iMbHeight;
|
||||
pCtx->pDec->iSpsId = pCtx->pSps->iSpsId;
|
||||
pCtx->pDec->iPpsId = pCtx->pPps->iPpsId;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2007,7 +1980,7 @@ int32_t DecodeCurrentAccessUnit (PWelsDecoderContext pCtx, uint8_t** ppDst, SBuf
|
||||
pCtx->pPreviousDecodedPictureInDpb = pCtx->pDec; //store latest decoded picture for EC
|
||||
iRet = WelsMarkAsRef (pCtx);
|
||||
if (iRet != ERR_NONE) {
|
||||
if (pCtx->eErrorConMethod == ERROR_CON_DISABLE) {
|
||||
if (pCtx->iErrorConMethod == ERROR_CON_DISABLE) {
|
||||
pCtx->pDec = NULL;
|
||||
return iRet;
|
||||
}
|
||||
@@ -2028,7 +2001,7 @@ int32_t DecodeCurrentAccessUnit (PWelsDecoderContext pCtx, uint8_t** ppDst, SBuf
|
||||
return ERR_NONE;
|
||||
}
|
||||
|
||||
bool CheckAndFinishLastPic (PWelsDecoderContext pCtx, uint8_t** ppDst, SBufferInfo* pDstInfo) {
|
||||
bool CheckAndDoEC (PWelsDecoderContext pCtx, uint8_t** ppDst, SBufferInfo* pDstInfo) {
|
||||
PAccessUnit pAu = pCtx->pAccessUnitList;
|
||||
PNalUnit pCurNal = pAu->pNalUnitsList[pAu->uiEndPos];
|
||||
if ((pCtx->iTotalNumMbRec != 0)
|
||||
@@ -2036,20 +2009,12 @@ bool CheckAndFinishLastPic (PWelsDecoderContext pCtx, uint8_t** ppDst, SBufferIn
|
||||
&pCurNal->sNalData.sVclNal.sSliceHeaderExt.sSliceHeader))) {
|
||||
//Do Error Concealment here
|
||||
if (NeedErrorCon (pCtx)) { //should always be true!
|
||||
if (pCtx->eErrorConMethod != ERROR_CON_DISABLE) {
|
||||
ImplementErrorCon (pCtx);
|
||||
pCtx->iTotalNumMbRec = pCtx->pSps->iMbWidth * pCtx->pSps->iMbHeight;
|
||||
pCtx->pDec->iSpsId = pCtx->pSps->iSpsId;
|
||||
pCtx->pDec->iPpsId = pCtx->pPps->iPpsId;
|
||||
|
||||
DecodeFrameConstruction (pCtx, ppDst, pDstInfo);
|
||||
if (pCtx->sLastNalHdrExt.sNalUnitHeader.uiNalRefIdc > 0) {
|
||||
pCtx->pPreviousDecodedPictureInDpb = pCtx->pDec; //save ECed pic for future use
|
||||
MarkECFrameAsRef (pCtx);
|
||||
}
|
||||
} else {
|
||||
if (DecodeFrameConstruction (pCtx, ppDst, pDstInfo))
|
||||
return false;
|
||||
ImplementErrorCon (pCtx);
|
||||
pCtx->iTotalNumMbRec = pCtx->pSps->iMbWidth * pCtx->pSps->iMbHeight;
|
||||
DecodeFrameConstruction (pCtx, ppDst, pDstInfo);
|
||||
if (pCtx->sLastNalHdrExt.sNalUnitHeader.uiNalRefIdc > 0) {
|
||||
pCtx->pPreviousDecodedPictureInDpb = pCtx->pDec; //save ECed pic for future use
|
||||
MarkECFrameAsRef (pCtx);
|
||||
}
|
||||
pCtx->iPrevFrameNum = pCtx->sLastSliceHeader.iFrameNum; //save frame_num
|
||||
if (pCtx->bLastHasMmco5)
|
||||
@@ -2059,41 +2024,4 @@ bool CheckAndFinishLastPic (PWelsDecoderContext pCtx, uint8_t** ppDst, SBufferIn
|
||||
return ERR_NONE;
|
||||
}
|
||||
|
||||
bool bCheckRefPicturesComplete (PWelsDecoderContext pCtx) {
|
||||
// Multi Reference, RefIdx may differ
|
||||
bool bAllRefComplete = true;
|
||||
int32_t iRealMbIdx;
|
||||
for (int32_t iMbIdx = 0; bAllRefComplete
|
||||
&& iMbIdx < pCtx->pCurDqLayer->sLayerInfo.sSliceInLayer.iTotalMbInCurSlice; iMbIdx++) {
|
||||
iRealMbIdx = pCtx->pCurDqLayer->sLayerInfo.sSliceInLayer.sSliceHeaderExt.sSliceHeader.iFirstMbInSlice + iMbIdx;
|
||||
switch (pCtx->pCurDqLayer->pMbType[iRealMbIdx]) {
|
||||
case MB_TYPE_SKIP:
|
||||
case MB_TYPE_16x16:
|
||||
bAllRefComplete &= pCtx->sRefPic.pRefList[ LIST_0 ][ pCtx->pCurDqLayer->pRefIndex[0][iRealMbIdx][0] ]->bIsComplete;
|
||||
break;
|
||||
|
||||
case MB_TYPE_16x8:
|
||||
bAllRefComplete &= pCtx->sRefPic.pRefList[ LIST_0 ][ pCtx->pCurDqLayer->pRefIndex[0][iRealMbIdx][0] ]->bIsComplete;
|
||||
bAllRefComplete &= pCtx->sRefPic.pRefList[ LIST_0 ][ pCtx->pCurDqLayer->pRefIndex[0][iRealMbIdx][8] ]->bIsComplete;
|
||||
break;
|
||||
|
||||
case MB_TYPE_8x16:
|
||||
bAllRefComplete &= pCtx->sRefPic.pRefList[ LIST_0 ][ pCtx->pCurDqLayer->pRefIndex[0][iRealMbIdx][0] ]->bIsComplete;
|
||||
bAllRefComplete &= pCtx->sRefPic.pRefList[ LIST_0 ][ pCtx->pCurDqLayer->pRefIndex[0][iRealMbIdx][2] ]->bIsComplete;
|
||||
break;
|
||||
|
||||
case MB_TYPE_8x8:
|
||||
case MB_TYPE_8x8_REF0:
|
||||
bAllRefComplete &= pCtx->sRefPic.pRefList[ LIST_0 ][ pCtx->pCurDqLayer->pRefIndex[0][iRealMbIdx][0] ]->bIsComplete;
|
||||
bAllRefComplete &= pCtx->sRefPic.pRefList[ LIST_0 ][ pCtx->pCurDqLayer->pRefIndex[0][iRealMbIdx][2] ]->bIsComplete;
|
||||
bAllRefComplete &= pCtx->sRefPic.pRefList[ LIST_0 ][ pCtx->pCurDqLayer->pRefIndex[0][iRealMbIdx][8] ]->bIsComplete;
|
||||
bAllRefComplete &= pCtx->sRefPic.pRefList[ LIST_0 ][ pCtx->pCurDqLayer->pRefIndex[0][iRealMbIdx][10] ]->bIsComplete;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
return bAllRefComplete;
|
||||
}
|
||||
} // namespace WelsDec
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user