Compare commits
No commits in common. "main" and "v1.1-Firefox34" have entirely different histories.
main
...
v1.1-Firef
13
.gitignore
vendored
@ -1,7 +1,6 @@
|
|||||||
# Object files
|
# Object files
|
||||||
*.o
|
*.o
|
||||||
*.obj
|
*.obj
|
||||||
*.res
|
|
||||||
|
|
||||||
# Dependency files
|
# Dependency files
|
||||||
*.d
|
*.d
|
||||||
@ -30,7 +29,6 @@ codec_unittest
|
|||||||
# Other files generated by the MSVC compiler
|
# Other files generated by the MSVC compiler
|
||||||
*.exp
|
*.exp
|
||||||
*.pdb
|
*.pdb
|
||||||
*.map
|
|
||||||
|
|
||||||
# Executables built by the MSVC project files
|
# Executables built by the MSVC project files
|
||||||
bin
|
bin
|
||||||
@ -46,14 +44,3 @@ testbin/test_vd_rc.264
|
|||||||
testbin/test_vd_rc.yuv
|
testbin/test_vd_rc.yuv
|
||||||
testbin/test.264
|
testbin/test.264
|
||||||
testbin/test.yuv
|
testbin/test.yuv
|
||||||
|
|
||||||
# iOS output files
|
|
||||||
codec/build/iOS/common/build/
|
|
||||||
codec/build/iOS/dec/welsdec/build/
|
|
||||||
|
|
||||||
# pkg-config file
|
|
||||||
*.pc
|
|
||||||
|
|
||||||
# editor files
|
|
||||||
*~
|
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
language: cpp
|
language: cpp
|
||||||
dist: trusty
|
|
||||||
|
|
||||||
compiler:
|
compiler:
|
||||||
- g++
|
- g++
|
||||||
@ -7,7 +6,7 @@ compiler:
|
|||||||
|
|
||||||
before_install:
|
before_install:
|
||||||
- sudo apt-get update -qq
|
- sudo apt-get update -qq
|
||||||
- sudo apt-get install -qq nasm g++-multilib gcc-multilib libc6-dev-i386
|
- sudo apt-get install -qq nasm g++-4.6-multilib gcc-multilib libc6-dev-i386
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- make gmp-bootstrap
|
- make gmp-bootstrap
|
||||||
@ -22,12 +21,15 @@ before_script:
|
|||||||
env:
|
env:
|
||||||
- TASK=UnitTest; TestParameter=""
|
- TASK=UnitTest; TestParameter=""
|
||||||
- TASK=BinaryCompare; TestParameter=BA_MW_D.264
|
- TASK=BinaryCompare; TestParameter=BA_MW_D.264
|
||||||
|
- TASK=BinaryCompare; TestParameter=LS_SVA_D.264
|
||||||
- TASK=BinaryCompare; TestParameter=CVPCMNL1_SVA_C.264
|
- TASK=BinaryCompare; TestParameter=CVPCMNL1_SVA_C.264
|
||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
exclude:
|
exclude:
|
||||||
- compiler: clang
|
- compiler: clang
|
||||||
env: TASK=BinaryCompare; TestParameter=BA_MW_D.264
|
env: TASK=BinaryCompare; TestParameter=BA_MW_D.264
|
||||||
|
- compiler: clang
|
||||||
|
env: TASK=BinaryCompare; TestParameter=LS_SVA_D.264
|
||||||
- compiler: clang
|
- compiler: clang
|
||||||
env: TASK=BinaryCompare; TestParameter=CVPCMNL1_SVA_C.264
|
env: TASK=BinaryCompare; TestParameter=CVPCMNL1_SVA_C.264
|
||||||
script:
|
script:
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Contributors to the OpenH264 project
|
# Contributors to the OpenH264 project
|
||||||
|
|
||||||
Patrick Ai
|
Patrick Ai
|
||||||
Sijia Chen
|
Sijia Chen
|
||||||
@ -30,12 +30,10 @@ Adam Roach
|
|||||||
Sawyer Shan
|
Sawyer Shan
|
||||||
Siping Tao
|
Siping Tao
|
||||||
Martin Storsjö
|
Martin Storsjö
|
||||||
Brion Vibber
|
|
||||||
James Wang
|
James Wang
|
||||||
Juanny Wang
|
Juanny Wang
|
||||||
Zhiliang Wang
|
Zhiliang Wang
|
||||||
Hervé Willems
|
Hervé Willems
|
||||||
Gregory J Wolfe
|
|
||||||
Katherine Wu
|
Katherine Wu
|
||||||
Guang Xu
|
Guang Xu
|
||||||
Jeffery Xu
|
Jeffery Xu
|
||||||
|
235
Makefile
@ -4,10 +4,8 @@ vpath %.cc $(SRC_PATH)
|
|||||||
vpath %.cpp $(SRC_PATH)
|
vpath %.cpp $(SRC_PATH)
|
||||||
vpath %.asm $(SRC_PATH)
|
vpath %.asm $(SRC_PATH)
|
||||||
vpath %.S $(SRC_PATH)
|
vpath %.S $(SRC_PATH)
|
||||||
vpath %.rc $(SRC_PATH)
|
|
||||||
vpath %.pc.in $(SRC_PATH)
|
|
||||||
|
|
||||||
OS=$(shell uname | tr A-Z a-z | tr -d \\-[:digit:]. | sed -E 's/^(net|open|free)bsd/bsd/')
|
OS=$(shell uname | tr A-Z a-z | tr -d \\-[:digit:].)
|
||||||
ARCH=$(shell uname -m)
|
ARCH=$(shell uname -m)
|
||||||
LIBPREFIX=lib
|
LIBPREFIX=lib
|
||||||
LIBSUFFIX=a
|
LIBSUFFIX=a
|
||||||
@ -24,17 +22,10 @@ V=Yes
|
|||||||
PREFIX=/usr/local
|
PREFIX=/usr/local
|
||||||
SHARED=-shared
|
SHARED=-shared
|
||||||
OBJ=o
|
OBJ=o
|
||||||
DESTDIR=
|
|
||||||
LIBDIR_NAME=lib
|
|
||||||
SHAREDLIB_DIR=$(PREFIX)/lib
|
|
||||||
PROJECT_NAME=openh264
|
PROJECT_NAME=openh264
|
||||||
MODULE_NAME=gmpopenh264
|
MODULE_NAME=gmpopenh264
|
||||||
GMP_API_BRANCH=Firefox39
|
GMP_API_BRANCH=master
|
||||||
CCASFLAGS=$(CFLAGS)
|
CCASFLAGS=$(CFLAGS)
|
||||||
STATIC_LDFLAGS=-lstdc++
|
|
||||||
|
|
||||||
VERSION=1.6
|
|
||||||
SHAREDLIBVERSION=3
|
|
||||||
|
|
||||||
ifeq (,$(wildcard $(SRC_PATH)gmp-api))
|
ifeq (,$(wildcard $(SRC_PATH)gmp-api))
|
||||||
HAVE_GMP_API=No
|
HAVE_GMP_API=No
|
||||||
@ -51,16 +42,9 @@ endif
|
|||||||
# Configurations
|
# Configurations
|
||||||
ifeq ($(BUILDTYPE), Release)
|
ifeq ($(BUILDTYPE), Release)
|
||||||
CFLAGS += $(CFLAGS_OPT)
|
CFLAGS += $(CFLAGS_OPT)
|
||||||
CFLAGS += -DNDEBUG
|
|
||||||
USE_ASM = Yes
|
USE_ASM = Yes
|
||||||
ifeq ($(DEBUGSYMBOLS), True)
|
|
||||||
CFLAGS += -g
|
|
||||||
CXXFLAGS += -g
|
|
||||||
DEBUGSYMBOLS_TAG := _debug_symbols
|
|
||||||
PROCESS_FILES := True
|
|
||||||
endif
|
|
||||||
else
|
else
|
||||||
CFLAGS += $(CFLAGS_DEBUG)
|
CFLAGS = $(CFLAGS_DEBUG)
|
||||||
USE_ASM = No
|
USE_ASM = No
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -69,19 +53,10 @@ CFLAGS += -fsanitize=address
|
|||||||
LDFLAGS += -fsanitize=address
|
LDFLAGS += -fsanitize=address
|
||||||
endif
|
endif
|
||||||
|
|
||||||
STRIP_FLAGS := -S
|
|
||||||
ifeq (linux, $((OS)))
|
|
||||||
STRIP_FLAGS := -g
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Make sure the all target is the first one
|
|
||||||
all: libraries binaries
|
|
||||||
|
|
||||||
include $(SRC_PATH)build/platform-$(OS).mk
|
include $(SRC_PATH)build/platform-$(OS).mk
|
||||||
|
|
||||||
MODULE := $(LIBPREFIX)$(MODULE_NAME).$(SHAREDLIBSUFFIX)
|
|
||||||
|
|
||||||
CFLAGS += -DGENERATED_VERSION_HEADER
|
CFLAGS +=
|
||||||
LDFLAGS +=
|
LDFLAGS +=
|
||||||
|
|
||||||
ifeq (Yes, $(GCOV))
|
ifeq (Yes, $(GCOV))
|
||||||
@ -91,17 +66,16 @@ endif
|
|||||||
|
|
||||||
#### No user-serviceable parts below this line
|
#### No user-serviceable parts below this line
|
||||||
ifneq ($(V),Yes)
|
ifneq ($(V),Yes)
|
||||||
QUIET_CXX = @printf "CXX\t$@\n";
|
QUIET_CXX = @printf "CXX\t$@\n";
|
||||||
QUIET_CC = @printf "CC\t$@\n";
|
QUIET_CC = @printf "CC\t$@\n";
|
||||||
QUIET_CCAS = @printf "CCAS\t$@\n";
|
QUIET_CCAS = @printf "CCAS\t$@\n";
|
||||||
QUIET_ASM = @printf "ASM\t$@\n";
|
QUIET_ASM = @printf "ASM\t$@\n";
|
||||||
QUIET_AR = @printf "AR\t$@\n";
|
QUIET_AR = @printf "AR\t$@\n";
|
||||||
QUIET_RC = @printf "RC\t$@\n";
|
QUIET = @
|
||||||
QUIET = @
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
INCLUDES += -I$(SRC_PATH)codec/api/svc -I$(SRC_PATH)codec/common/inc -Icodec/common/inc
|
INCLUDES += -I$(SRC_PATH)codec/api/svc -I$(SRC_PATH)codec/common/inc
|
||||||
|
|
||||||
DECODER_INCLUDES += \
|
DECODER_INCLUDES += \
|
||||||
-I$(SRC_PATH)codec/decoder/core/inc \
|
-I$(SRC_PATH)codec/decoder/core/inc \
|
||||||
@ -121,13 +95,12 @@ PROCESSING_INCLUDES += \
|
|||||||
-I$(SRC_PATH)codec/processing/src/vaacalc
|
-I$(SRC_PATH)codec/processing/src/vaacalc
|
||||||
|
|
||||||
GTEST_INCLUDES += \
|
GTEST_INCLUDES += \
|
||||||
-I$(SRC_PATH)gtest/googletest \
|
-I$(SRC_PATH)gtest \
|
||||||
-I$(SRC_PATH)gtest/googletest/include
|
-I$(SRC_PATH)gtest/include
|
||||||
|
|
||||||
CODEC_UNITTEST_INCLUDES += \
|
CODEC_UNITTEST_INCLUDES += \
|
||||||
-I$(SRC_PATH)gtest/googletest/include \
|
-I$(SRC_PATH)gtest/include \
|
||||||
-I$(SRC_PATH)codec/common/inc \
|
-I$(SRC_PATH)codec/common/inc \
|
||||||
-I$(SRC_PATH)test
|
|
||||||
|
|
||||||
CONSOLE_COMMON_INCLUDES += \
|
CONSOLE_COMMON_INCLUDES += \
|
||||||
-I$(SRC_PATH)codec/console/common/inc
|
-I$(SRC_PATH)codec/console/common/inc
|
||||||
@ -142,23 +115,19 @@ H264ENC_DEPS = $(LIBPREFIX)encoder.$(LIBSUFFIX) $(LIBPREFIX)processing.$(LIBSUFF
|
|||||||
|
|
||||||
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_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)
|
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)
|
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)
|
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)
|
PROCESSING_UNITTEST_INCLUDES += $(CODEC_UNITTEST_INCLUDES) $(PROCESSING_INCLUDES) -I$(SRC_PATH)test -I$(SRC_PATH)test/processing
|
||||||
API_TEST_INCLUDES += $(CODEC_UNITTEST_INCLUDES)
|
API_TEST_INCLUDES += $(CODEC_UNITTEST_INCLUDES) -I$(SRC_PATH)test -I$(SRC_PATH)test/api
|
||||||
COMMON_UNITTEST_INCLUDES += $(CODEC_UNITTEST_INCLUDES)
|
COMMON_UNITTEST_INCLUDES += $(CODEC_UNITTEST_INCLUDES) $(DECODER_INCLUDES) -I$(SRC_PATH)test -I$(SRC_PATH)test/common
|
||||||
MODULE_INCLUDES += -I$(SRC_PATH)gmp-api
|
MODULE_INCLUDES += -I$(SRC_PATH)gmp-api
|
||||||
|
|
||||||
DECODER_UNITTEST_CFLAGS += $(CODEC_UNITTEST_CFLAGS)
|
.PHONY: test gtest-bootstrap clean
|
||||||
ENCODER_UNITTEST_CFLAGS += $(CODEC_UNITTEST_CFLAGS)
|
|
||||||
PROCESSING_UNITTEST_CFLAGS += $(CODEC_UNITTEST_CFLAGS)
|
|
||||||
API_TEST_CFLAGS += $(CODEC_UNITTEST_CFLAGS)
|
|
||||||
COMMON_UNITTEST_CFLAGS += $(CODEC_UNITTEST_CFLAGS)
|
|
||||||
|
|
||||||
.PHONY: test gtest-bootstrap clean $(PROJECT_NAME).pc $(PROJECT_NAME)-static.pc
|
all: libraries binaries
|
||||||
|
|
||||||
generate-version:
|
generate-version:
|
||||||
$(QUIET)sh $(SRC_PATH)codec/common/generate_version.sh $(SRC_PATH)
|
$(QUIET)cd $(SRC_PATH) && sh ./codec/common/generate_version.sh
|
||||||
|
|
||||||
codec/decoder/plus/src/welsDecoderExt.$(OBJ): | generate-version
|
codec/decoder/plus/src/welsDecoderExt.$(OBJ): | generate-version
|
||||||
codec/encoder/plus/src/welsEncoderExt.$(OBJ): | generate-version
|
codec/encoder/plus/src/welsEncoderExt.$(OBJ): | generate-version
|
||||||
@ -167,33 +136,27 @@ clean:
|
|||||||
ifeq (android,$(OS))
|
ifeq (android,$(OS))
|
||||||
clean: clean_Android
|
clean: clean_Android
|
||||||
endif
|
endif
|
||||||
$(QUIET)rm -f $(OBJS) $(OBJS:.$(OBJ)=.d) $(OBJS:.$(OBJ)=.obj) $(LIBRARIES) $(BINARIES) *.lib *.a *.dylib *.dll *.so *.exe *.pdb *.exp *.pc *.res *.map
|
$(QUIET)rm -f $(OBJS) $(OBJS:.$(OBJ)=.d) $(LIBRARIES) $(BINARIES)
|
||||||
|
|
||||||
gmp-bootstrap:
|
gmp-bootstrap:
|
||||||
if [ ! -d gmp-api ] ; then git clone https://github.com/mozilla/gmp-api gmp-api ; fi
|
if [ ! -d gmp-api ] ; then git clone https://github.com/mozilla/gmp-api gmp-api ; fi
|
||||||
cd gmp-api && git fetch origin && git checkout $(GMP_API_BRANCH)
|
cd gmp-api && git fetch origin && git checkout $(GMP_API_BRANCH)
|
||||||
|
|
||||||
gtest-bootstrap:
|
gtest-bootstrap:
|
||||||
git clone https://github.com/google/googletest.git gtest
|
svn co https://googletest.googlecode.com/svn/trunk/ gtest
|
||||||
|
|
||||||
ifeq ($(HAVE_GTEST),Yes)
|
ifeq ($(HAVE_GTEST),Yes)
|
||||||
|
|
||||||
|
test: codec_unittest$(EXEEXT)
|
||||||
ifneq (android,$(OS))
|
ifneq (android,$(OS))
|
||||||
ifneq (ios,$(OS))
|
ifneq (ios,$(OS))
|
||||||
ifneq (msvc-wp,$(OS))
|
|
||||||
BUILD_UT_EXE=Yes
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
test: codec_unittest$(EXEEXT)
|
|
||||||
ifeq ($(BUILD_UT_EXE), Yes)
|
|
||||||
./codec_unittest
|
./codec_unittest
|
||||||
endif
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
else
|
else
|
||||||
test:
|
test:
|
||||||
@echo "./gtest: No such file or directory."
|
@echo "./gtest : No such file or directory."
|
||||||
@echo "You do not have gtest. Run make gtest-bootstrap to get gtest"
|
@echo "You do not have gtest. Run make gtest-bootstrap to get gtest"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -208,112 +171,60 @@ endif
|
|||||||
|
|
||||||
ifneq (android, $(OS))
|
ifneq (android, $(OS))
|
||||||
ifneq (ios, $(OS))
|
ifneq (ios, $(OS))
|
||||||
ifneq (msvc-wp, $(OS))
|
|
||||||
include $(SRC_PATH)codec/console/dec/targets.mk
|
include $(SRC_PATH)codec/console/dec/targets.mk
|
||||||
include $(SRC_PATH)codec/console/enc/targets.mk
|
include $(SRC_PATH)codec/console/enc/targets.mk
|
||||||
include $(SRC_PATH)codec/console/common/targets.mk
|
include $(SRC_PATH)codec/console/common/targets.mk
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
|
||||||
|
|
||||||
libraries: $(LIBPREFIX)$(PROJECT_NAME).$(LIBSUFFIX)
|
|
||||||
|
|
||||||
# No point in building dylib for ios
|
|
||||||
ifneq (ios, $(OS))
|
ifneq (ios, $(OS))
|
||||||
libraries: $(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIX)
|
libraries: $(LIBPREFIX)$(PROJECT_NAME).$(LIBSUFFIX) $(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIX)
|
||||||
|
else
|
||||||
|
libraries: $(LIBPREFIX)$(PROJECT_NAME).$(LIBSUFFIX)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
LIBRARIES += $(LIBPREFIX)$(PROJECT_NAME).$(LIBSUFFIX) $(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIXVER)
|
LIBRARIES += $(LIBPREFIX)$(PROJECT_NAME).$(LIBSUFFIX) $(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIX)
|
||||||
|
|
||||||
$(LIBPREFIX)$(PROJECT_NAME).$(LIBSUFFIX): $(ENCODER_OBJS) $(DECODER_OBJS) $(PROCESSING_OBJS) $(COMMON_OBJS)
|
$(LIBPREFIX)$(PROJECT_NAME).$(LIBSUFFIX): $(ENCODER_OBJS) $(DECODER_OBJS) $(PROCESSING_OBJS) $(COMMON_OBJS)
|
||||||
$(QUIET)rm -f $@
|
$(QUIET)rm -f $@
|
||||||
$(QUIET_AR)$(AR) $(AR_OPTS) $+
|
$(QUIET_AR)$(AR) $(AR_OPTS) $+
|
||||||
ifeq (True, $(PROCESS_FILES))
|
|
||||||
cp $@ $(LIBPREFIX)$(PROJECT_NAME)$(DEBUGSYMBOLS_TAG).$(LIBSUFFIX)
|
|
||||||
strip $(STRIP_FLAGS) $@ -o $@
|
|
||||||
endif
|
|
||||||
|
|
||||||
$(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIXVER): $(ENCODER_OBJS) $(DECODER_OBJS) $(PROCESSING_OBJS) $(COMMON_OBJS)
|
$(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIX): $(ENCODER_OBJS) $(DECODER_OBJS) $(PROCESSING_OBJS) $(COMMON_OBJS)
|
||||||
$(QUIET)rm -f $@
|
$(QUIET)rm -f $@
|
||||||
$(QUIET_CXX)$(CXX) $(SHARED) $(CXX_LINK_O) $+ $(LDFLAGS) $(SHLDFLAGS)
|
$(QUIET_CXX)$(CXX) $(SHARED) $(LDFLAGS) $(CXX_LINK_O) $+ $(SHLDFLAGS)
|
||||||
ifeq (True, $(PROCESS_FILES))
|
|
||||||
cp $@ $(LIBPREFIX)$(PROJECT_NAME)$(DEBUGSYMBOLS_TAG).$(SHAREDLIBSUFFIXVER)
|
|
||||||
strip $(STRIP_FLAGS) $@ -o $@
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(SHAREDLIBSUFFIXVER),$(SHAREDLIBSUFFIX))
|
|
||||||
$(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIX): $(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIXVER)
|
|
||||||
$(QUIET)ln -sfn $+ $@
|
|
||||||
ifeq (True, $(PROCESS_FILES))
|
|
||||||
$(QUIET)ln -sfn $(LIBPREFIX)$(PROJECT_NAME)$(DEBUGSYMBOLS_TAG).$(SHAREDLIBSUFFIXVER) $(LIBPREFIX)$(PROJECT_NAME)$(DEBUGSYMBOLS_TAG).$(SHAREDLIBSUFFIX)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(HAVE_GMP_API),Yes)
|
ifeq ($(HAVE_GMP_API),Yes)
|
||||||
plugin: $(MODULE)
|
plugin: $(LIBPREFIX)$(MODULE_NAME).$(SHAREDLIBSUFFIX)
|
||||||
LIBRARIES += $(LIBPREFIX)$(MODULE_NAME).$(SHAREDLIBSUFFIXVER)
|
LIBRARIES += $(LIBPREFIX)$(MODULE_NAME).$(SHAREDLIBSUFFIX)
|
||||||
else
|
else
|
||||||
plugin:
|
plugin:
|
||||||
@echo "./gmp-api: No such file or directory."
|
@echo "./gmp-api : No such file or directory."
|
||||||
@echo "You do not have gmp-api. Run make gmp-bootstrap to get the gmp-api headers."
|
@echo "You do not have gmp-api. Run make gmp-bootstrap to get the gmp-api headers."
|
||||||
endif
|
endif
|
||||||
|
|
||||||
echo-plugin-name:
|
$(LIBPREFIX)$(MODULE_NAME).$(SHAREDLIBSUFFIX): $(MODULE_OBJS) $(ENCODER_OBJS) $(DECODER_OBJS) $(PROCESSING_OBJS) $(COMMON_OBJS)
|
||||||
@echo $(MODULE)
|
|
||||||
|
|
||||||
$(LIBPREFIX)$(MODULE_NAME).$(SHAREDLIBSUFFIXVER): $(MODULE_OBJS) $(ENCODER_OBJS) $(DECODER_OBJS) $(PROCESSING_OBJS) $(COMMON_OBJS)
|
|
||||||
$(QUIET)rm -f $@
|
$(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)
|
||||||
ifeq (True, $(PROCESS_FILES))
|
|
||||||
cp $@ $(LIBPREFIX)$(MODULE_NAME)$(DEBUGSYMBOLS_TAG).$(SHAREDLIBSUFFIXVER)
|
|
||||||
strip $(STRIP_FLAGS) $@ -o $@
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(SHAREDLIBSUFFIXVER),$(SHAREDLIBSUFFIX))
|
|
||||||
$(MODULE): $(LIBPREFIX)$(MODULE_NAME).$(SHAREDLIBSUFFIXVER)
|
|
||||||
$(QUIET)ln -sfn $+ $@
|
|
||||||
ifeq (True, $(PROCESS_FILES))
|
|
||||||
$(QUIET)ln -sfn $(LIBPREFIX)$(MODULE_NAME)$(DEBUGSYMBOLS_TAG).$(SHAREDLIBSUFFIXVER) $(LIBPREFIX)$(MODULE_NAME)$(DEBUGSYMBOLS_TAG).$(SHAREDLIBSUFFIX)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
$(PROJECT_NAME).pc: $(PROJECT_NAME).pc.in
|
|
||||||
@sed -e 's;@prefix@;$(PREFIX);' -e 's;@VERSION@;$(VERSION);' -e 's;@LIBS@;;' -e 's;@LIBS_PRIVATE@;$(STATIC_LDFLAGS);' < $< > $@
|
|
||||||
|
|
||||||
$(PROJECT_NAME)-static.pc: $(PROJECT_NAME).pc.in
|
|
||||||
@sed -e 's;@prefix@;$(PREFIX);' -e 's;@VERSION@;$(VERSION);' -e 's;@LIBS@;$(STATIC_LDFLAGS);' -e 's;@LIBS_PRIVATE@;;' < $< > $@
|
|
||||||
|
|
||||||
install-headers:
|
install-headers:
|
||||||
mkdir -p $(DESTDIR)$(PREFIX)/include/wels
|
mkdir -p $(PREFIX)/include/wels
|
||||||
install -m 644 $(SRC_PATH)/codec/api/svc/codec*.h $(DESTDIR)$(PREFIX)/include/wels
|
install -m 644 codec/api/svc/codec*.h $(PREFIX)/include/wels
|
||||||
|
|
||||||
install-static-lib: $(LIBPREFIX)$(PROJECT_NAME).$(LIBSUFFIX) install-headers
|
install-static: $(LIBPREFIX)$(PROJECT_NAME).$(LIBSUFFIX) install-headers
|
||||||
mkdir -p $(DESTDIR)$(PREFIX)/$(LIBDIR_NAME)
|
mkdir -p $(PREFIX)/lib
|
||||||
install -m 644 $(LIBPREFIX)$(PROJECT_NAME).$(LIBSUFFIX) $(DESTDIR)$(PREFIX)/$(LIBDIR_NAME)
|
install -m 644 $(LIBPREFIX)$(PROJECT_NAME).$(LIBSUFFIX) $(PREFIX)/lib
|
||||||
|
|
||||||
install-static: install-static-lib $(PROJECT_NAME)-static.pc
|
install-shared: $(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIX) install-headers
|
||||||
mkdir -p $(DESTDIR)$(PREFIX)/$(LIBDIR_NAME)/pkgconfig
|
mkdir -p $(PREFIX)/lib
|
||||||
install -m 644 $(PROJECT_NAME)-static.pc $(DESTDIR)$(PREFIX)/$(LIBDIR_NAME)/pkgconfig/$(PROJECT_NAME).pc
|
install -m 755 $(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIX) $(PREFIX)/lib
|
||||||
|
|
||||||
install-shared: $(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIX) install-headers $(PROJECT_NAME).pc
|
|
||||||
mkdir -p $(DESTDIR)$(SHAREDLIB_DIR)
|
|
||||||
install -m 755 $(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIXVER) $(DESTDIR)$(SHAREDLIB_DIR)
|
|
||||||
if [ "$(SHAREDLIBSUFFIXVER)" != "$(SHAREDLIBSUFFIX)" ]; then \
|
|
||||||
cp -a $(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIX) $(DESTDIR)$(SHAREDLIB_DIR); \
|
|
||||||
fi
|
|
||||||
mkdir -p $(DESTDIR)$(PREFIX)/$(LIBDIR_NAME)/pkgconfig
|
|
||||||
install -m 644 $(PROJECT_NAME).pc $(DESTDIR)$(PREFIX)/$(LIBDIR_NAME)/pkgconfig
|
|
||||||
ifneq ($(EXTRA_LIBRARY),)
|
ifneq ($(EXTRA_LIBRARY),)
|
||||||
install -m 644 $(EXTRA_LIBRARY) $(DESTDIR)$(PREFIX)/$(LIBDIR_NAME)
|
install -m 644 $(EXTRA_LIBRARY) $(PREFIX)/lib
|
||||||
endif
|
endif
|
||||||
|
|
||||||
install: install-static-lib install-shared
|
install: install-static install-shared
|
||||||
@:
|
@:
|
||||||
|
|
||||||
ifneq ($(HAVE_GTEST),Yes)
|
ifeq ($(HAVE_GTEST),Yes)
|
||||||
binaries:
|
|
||||||
@:
|
|
||||||
else
|
|
||||||
include $(SRC_PATH)build/gtest-targets.mk
|
include $(SRC_PATH)build/gtest-targets.mk
|
||||||
include $(SRC_PATH)test/api/targets.mk
|
include $(SRC_PATH)test/api/targets.mk
|
||||||
include $(SRC_PATH)test/decoder/targets.mk
|
include $(SRC_PATH)test/decoder/targets.mk
|
||||||
@ -328,42 +239,44 @@ $(LIBPREFIX)ut.$(LIBSUFFIX): $(DECODER_UNITTEST_OBJS) $(ENCODER_UNITTEST_OBJS) $
|
|||||||
|
|
||||||
|
|
||||||
LIBRARIES +=$(LIBPREFIX)ut.$(SHAREDLIBSUFFIX)
|
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)
|
$(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)rm -f $@
|
||||||
$(QUIET_CXX)$(CXX) $(SHARED) $(CXX_LINK_O) $+ $(LDFLAGS) $(UTSHLDFLAGS) $(CODEC_UNITTEST_LDFLAGS)
|
$(QUIET_CXX)$(CXX) $(SHARED) $(LDFLAGS) $(CXX_LINK_O) $+ $(CODEC_UNITTEST_LDFLAGS)
|
||||||
|
|
||||||
binaries: codec_unittest$(EXEEXT)
|
binaries: codec_unittest$(EXEEXT)
|
||||||
BINARIES += codec_unittest$(EXEEXT)
|
BINARIES += codec_unittest$(EXEEXT)
|
||||||
|
|
||||||
ifeq ($(BUILD_UT_EXE), Yes)
|
ifeq (ios,$(OS))
|
||||||
# Build a normal command line executable
|
codec_unittest$(EXEEXT): $(LIBPREFIX)ut.$(LIBSUFFIX) $(LIBPREFIX)gtest.$(LIBSUFFIX) $(LIBPREFIX)$(PROJECT_NAME).$(LIBSUFFIX)
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
clean_Android: clean_Android_ut
|
||||||
|
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) | res
|
||||||
$(QUIET)rm -f $@
|
$(QUIET)rm -f $@
|
||||||
$(QUIET_CXX)$(CXX) $(CXX_LINK_O) $+ $(CODEC_UNITTEST_LDFLAGS) $(LDFLAGS)
|
$(QUIET_CXX)$(CXX) $(CXX_LINK_O) $+ $(CODEC_UNITTEST_LDFLAGS) $(LDFLAGS)
|
||||||
|
|
||||||
res:
|
res:
|
||||||
$(QUIET)if [ ! -e res ]; then ln -s $(SRC_PATH)res .; fi
|
$(QUIET)if [ ! -e res ]; then ln -s $(SRC_PATH)res .; fi
|
||||||
|
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
else
|
else
|
||||||
|
binaries:
|
||||||
# Build the unit test suite into a library that is included in a project file
|
@:
|
||||||
ifeq (ios,$(OS))
|
|
||||||
codec_unittest$(EXEEXT): $(LIBPREFIX)ut.$(LIBSUFFIX) $(LIBPREFIX)gtest.$(LIBSUFFIX) $(LIBPREFIX)$(PROJECT_NAME).$(LIBSUFFIX)
|
|
||||||
else
|
|
||||||
codec_unittest$(EXEEXT): $(LIBPREFIX)ut.$(SHAREDLIBSUFFIX)
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq (android,$(OS))
|
|
||||||
ifeq (./,$(SRC_PATH))
|
|
||||||
codec_unittest$(EXEEXT):
|
|
||||||
cd ./test/build/android && $(NDKROOT)/ndk-build -B APP_ABI=$(APP_ABI) && android update project -t $(TARGET) -p . && ant debug
|
|
||||||
|
|
||||||
clean_Android: clean_Android_ut
|
|
||||||
clean_Android_ut:
|
|
||||||
-cd ./test/build/android && $(NDKROOT)/ndk-build APP_ABI=$(APP_ABI) clean && ant clean
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
endif
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
-include $(OBJS:.$(OBJ)=.d)
|
-include $(OBJS:.$(OBJ)=.d)
|
||||||
|
97
README.md
@ -4,13 +4,12 @@ OpenH264 is a codec library which supports H.264 encoding and decoding. It is su
|
|||||||
|
|
||||||
Encoder Features
|
Encoder Features
|
||||||
----------------
|
----------------
|
||||||
- Constrained Baseline Profile up to Level 5.2 (Max frame size is 36864 macro-blocks)
|
- Constrained Baseline Profile up to Level 5.2 (4096x2304)
|
||||||
- Arbitrary resolution, not constrained to multiples of 16x16
|
- Arbitrary resolution, not constrained to multiples of 16x16
|
||||||
- Rate control with adaptive quantization, or constant quantization
|
- Rate control with adaptive quantization, or constant quantization
|
||||||
- Slice options: 1 slice per frame, N slices per frame, N macroblocks per slice, or N bytes per slice
|
- Slice options: 1 slice per frame, N slices per frame, N macroblocks per slice, or N bytes per slice
|
||||||
- Multiple threads automatically used for multiple slices
|
- Multiple threads automatically used for multiple slices
|
||||||
- Temporal scalability up to 4 layers in a dyadic hierarchy
|
- Temporal scalability up to 4 layers in a dyadic hierarchy
|
||||||
- Simulcast AVC up to 4 resolutions from a single input
|
|
||||||
- Spatial simulcast up to 4 resolutions from a single input
|
- Spatial simulcast up to 4 resolutions from a single input
|
||||||
- Long Term Reference (LTR) frames
|
- Long Term Reference (LTR) frames
|
||||||
- Memory Management Control Operation (MMCO)
|
- Memory Management Control Operation (MMCO)
|
||||||
@ -24,7 +23,7 @@ Encoder Features
|
|||||||
|
|
||||||
Decoder Features
|
Decoder Features
|
||||||
----------------
|
----------------
|
||||||
- Constrained Baseline Profile up to Level 5.2 (Max frame size is 36864 macro-blocks)
|
- Constrained Baseline Profile up to Level 5.2 (4096x2304)
|
||||||
- Arbitrary resolution, not constrained to multiples of 16x16
|
- Arbitrary resolution, not constrained to multiples of 16x16
|
||||||
- Single thread for all slices
|
- Single thread for all slices
|
||||||
- Long Term Reference (LTR) frames
|
- Long Term Reference (LTR) frames
|
||||||
@ -39,57 +38,55 @@ OS Support
|
|||||||
- Windows 64-bit and 32-bit
|
- Windows 64-bit and 32-bit
|
||||||
- Mac OS X 64-bit and 32-bit
|
- Mac OS X 64-bit and 32-bit
|
||||||
- Linux 64-bit and 32-bit
|
- Linux 64-bit and 32-bit
|
||||||
- Android 64-bit and 32-bit
|
- Android 32-bit
|
||||||
- iOS 64-bit and 32-bit
|
- iOS 64-bit and 32-bit
|
||||||
- Windows Phone 32-bit
|
|
||||||
|
|
||||||
Processor Support
|
Processor Support
|
||||||
-----------------
|
-----------------
|
||||||
- Intel x86 optionally with MMX/SSE (no AVX yet, help is welcome)
|
- Intel x86 optionally with MMX/SSE (no AVX yet, help is welcome)
|
||||||
- ARMv7 optionally with NEON, AArch64 optionally with NEON
|
- ARMv7 optionally with NEON
|
||||||
- Any architecture using C/C++ fallback functions
|
- Any architecture using C/C++ fallback functions
|
||||||
|
|
||||||
Building the Library
|
Building the Library
|
||||||
--------------------
|
--------------------
|
||||||
NASM needed to be installed for assembly code: workable version 2.10.06 or above, nasm can downloaded from http://www.nasm.us/
|
NASM needed to be installed for assembly code: workable version 2.07 or above, nasm can downloaded from http://www.nasm.us/
|
||||||
For Mac OSX 64-bit NASM needed to be below version 2.11.08 as nasm 2.11.08 will introduce error when using RIP-relative addresses in Mac OSX 64-bit
|
|
||||||
|
|
||||||
To build the arm assembly for Windows Phone, gas-preprocessor is required. It can be downloaded from git://git.libav.org/gas-preprocessor.git
|
To build the arm assembly for Windows Phone, gas-preprocessor is required. It can be downloaded from git://git.libav.org/gas-preprocessor.git
|
||||||
|
|
||||||
For Android Builds
|
For Android Builds
|
||||||
------------------
|
------------------
|
||||||
To build for android platform, You need to install android sdk and ndk. You also need to export `**ANDROID_SDK**/tools` to PATH. On Linux, this can be done by
|
To build for android platform, You need to install android sdk and ndk. You also need to export **ANDROID_SDK**/tools to PATH. On Linux, this can be done by
|
||||||
|
|
||||||
export PATH=**ANDROID_SDK**/tools:$PATH
|
'export PATH=**ANDROID_SDK**/tools:$PATH'
|
||||||
|
|
||||||
The codec and demo can be built by
|
The codec and demo can be built by
|
||||||
|
|
||||||
make OS=android NDKROOT=**ANDROID_NDK** TARGET=**ANDROID_TARGET**
|
'make OS=android NDKROOT=**ANDROID_NDK** TARGET= **ANDROID_TARGET**'
|
||||||
|
|
||||||
Valid `**ANDROID_TARGET**` can be found in `**ANDROID_SDK**/platforms`, such as `android-12`.
|
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 according to your device and NDK version.
|
||||||
`ARCH` specifies the architecture of android device. Currently `arm`, `arm64`, `x86` and `x86_64` are supported, the default is `arm`. (`mips` and `mips64` can also be used, but there's no specific optimization for those architectures.)
|
ARCH specifies the architecture of android device. Currently only arm and x86 are supported, the default is arm.
|
||||||
`NDKLEVEL` specifies android api level, the default is 12. Available possibilities can be found in `**ANDROID_NDK**/platforms`, such as `android-21` (strip away the `android-` prefix).
|
NDKLEVEL specifies android api level, the api level can be 12-19, the default is 12.
|
||||||
|
|
||||||
By default these commands build for the `armeabi-v7a` ABI. To build for the other android
|
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`.
|
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).
|
To build for the older armeabi ABI (which has armv5te as baseline), add "APP_ABI=armeabi" (ARCH=arm is implicit).
|
||||||
To build for 64-bit ABI, such as `arm64`, explicitly set `NDKLEVEL` to 21 or higher.
|
|
||||||
|
|
||||||
For iOS Builds
|
For iOS Builds
|
||||||
--------------
|
--------------
|
||||||
You can build the libraries and demo applications using xcode project files
|
You can build the libraries and demo applications using xcode project files
|
||||||
located in `codec/build/iOS/dec` and `codec/build/iOS/enc`.
|
located in codec/build/iOS/dec and codec/build/iOS/enc.
|
||||||
|
|
||||||
You can also build the libraries (but not the demo applications) using the
|
You can also build the libraries (but not the demo applications) using the
|
||||||
make based build system from the command line. Build with
|
make based build system from the command line. Build with
|
||||||
|
|
||||||
make OS=ios ARCH=**ARCH**
|
'make OS=ios ARCH=**ARCH**'
|
||||||
|
|
||||||
Valid values for `**ARCH**` are the normal iOS architecture names such as
|
Valid values for **ARCH** are the normal iOS architecture names such as
|
||||||
`armv7`, `armv7s`, `arm64`, and `i386` and `x86_64` for the simulator.
|
armv7, armv7s, arm64, and i386 and x86_64 for the simulator. Additionally,
|
||||||
Another settable iOS specific parameter
|
one might need to add 'SDK=X.Y' to the make command line in case the default
|
||||||
is `SDK_MIN`, specifying the minimum deployment target for the built library.
|
SDK version isn't available. Another settable iOS specific parameter
|
||||||
|
is SDK_MIN, specifying the minimum deployment target for the built library.
|
||||||
For other details on building using make on the command line, see
|
For other details on building using make on the command line, see
|
||||||
'For All Platforms' below.
|
'For All Platforms' below.
|
||||||
|
|
||||||
@ -98,54 +95,40 @@ For Windows Builds
|
|||||||
|
|
||||||
Our Windows builds use MinGW which can be found here - http://www.mingw.org/
|
Our Windows builds use MinGW which can be found here - http://www.mingw.org/
|
||||||
|
|
||||||
To build with gcc, add the MinGW bin directory (e.g. `/c/MinGW/bin`) to your path and follow the 'For All Platforms' instructions below.
|
To build with gcc, add the MinGW bin directory (e.g. /c/MinGW/bin) to your path and follow the 'For All Platforms' instructions below.
|
||||||
|
|
||||||
To build with Visual Studio you will need to set up your path to run cl.exe. The easiest way is to start MSYS from a developer command line session - http://msdn.microsoft.com/en-us/library/ms229859(v=vs.110).aspx If you need to do it by hand here is an example from a Windows 64bit install of VS2012:
|
To build with Visual Studio you will need to set up your path to run cl.exe. The easiest way is to start MSYS from a developer command line session - http://msdn.microsoft.com/en-us/library/ms229859(v=vs.110).aspx If you need to do it by hand here is an example from a Windows 64bit install of VS2012:
|
||||||
|
|
||||||
export PATH="$PATH:/c/Program Files (x86)/Microsoft Visual Studio 11.0/VC/bin:/c/Program Files (x86)/Microsoft Visual Studio 11.0/Common7/IDE"
|
export PATH="$PATH:/c/Program Files (x86)/Microsoft Visual Studio 11.0/VC/bin:/c/Program Files (x86)/Microsoft Visual Studio 11.0/Common7/IDE"
|
||||||
|
|
||||||
You will also need to set your INCLUDE and LIB paths to point to your VS and SDK installs. Something like this, again from Win64 with VS2012 (note the use of Windows-style paths here).
|
You will also need to set your INCLUDE and LIB paths to point to your VS and SDK installs. Something like this, again from Win64 with VS2012 (note the use of Windows-style paths here).
|
||||||
|
|
||||||
export INCLUDE="C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include;C:\Program Files (x86)\Windows Kits\8.0\Include\um;C:\Program Files (x86)\Windows Kits\8.0\Include\shared"
|
export INCLUDE="C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include;C:\Program Files (x86)\Windows Kits\8.0\Include\um;C:\Program Files (x86)\Windows Kits\8.0\Include\shared"
|
||||||
export LIB="C:\Program Files (x86)\Windows Kits\8.0\Lib\Win8\um\x86;C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib"
|
export LIB="C:\Program Files (x86)\Windows Kits\8.0\Lib\Win8\um\x86;C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib"
|
||||||
|
|
||||||
Then add `OS=msvc` to the make line of the 'For All Platforms' instructions.
|
Then add 'OS=msvc' to the make line of the 'For All Platforms' instructions.
|
||||||
|
|
||||||
For Windows Phone builds
|
|
||||||
------------------------
|
|
||||||
|
|
||||||
Follow the instructions above for normal Windows builds, but use `OS=msvc-wp`
|
|
||||||
instead of `OS=msvc`. You will also need gas-preprocessor (as mentioned below
|
|
||||||
"Building the Library").
|
|
||||||
|
|
||||||
If building for Windows Phone with MSVC 2013, there's no included bat file that sets the lib paths to the Windows Phone kit, but that can be done with a command like this:
|
|
||||||
|
|
||||||
export LIB="c:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib\store\arm;c:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib\arm;c:\Program Files (x86)\Windows Phone Kits\8.1\lib\arm"
|
|
||||||
|
|
||||||
This is only necessary for building the DLL; the static library can be built without setting this.
|
|
||||||
|
|
||||||
For All Platforms
|
For All Platforms
|
||||||
-------------------
|
-------------------
|
||||||
From the main project directory:
|
From the main project directory:
|
||||||
- `make` for automatically detecting architecture and building accordingly
|
'make' for automatically detecting 32/64bit and building accordingly
|
||||||
- `make ARCH=i386` for x86 32bit builds
|
'make ENABLE64BIT=No' for 32bit builds
|
||||||
- `make ARCH=x86_64` for x86 64bit builds
|
'make ENABLE64BIT=Yes' for 64bit builds
|
||||||
- `make V=No` for a silent build (not showing the actual compiler commands)
|
'make V=No' for a silent build (not showing the actual compiler commands)
|
||||||
- `make DEBUGSYMBOLS=True` for two libraries, one is normal libraries, another one is removed the debugging symbol table entries (those created by the -g option )
|
|
||||||
|
|
||||||
The command line programs `h264enc` and `h264dec` will appear in the main project directory.
|
The command line programs h264enc and h264dec will appear in the main project directory.
|
||||||
|
|
||||||
A shell script to run the command-line apps is in `testbin/CmdLineExample.sh`
|
A shell script to run the command-line apps is in testbin/CmdLineExample.sh
|
||||||
|
|
||||||
Usage information can be found in `testbin/CmdLineReadMe`
|
Usage information can be found in testbin/CmdLineReadMe
|
||||||
|
|
||||||
Using the Source
|
Using the Source
|
||||||
----------------
|
----------------
|
||||||
- `codec` - encoder, decoder, console (test app), build (makefile, vcproj)
|
codec - encoder, decoder, console (test app), build (makefile, vcproj)
|
||||||
- `build` - scripts for Makefile build system.
|
build - scripts for Makefile build system.
|
||||||
- `test` - GTest unittest files.
|
test - GTest unittest files.
|
||||||
- `testbin` - autobuild scripts, test app config files
|
testbin - autobuild scripts, test app config files
|
||||||
- `res` - yuv and bitstream test files
|
res - yuv and bitstream test files
|
||||||
|
|
||||||
Known Issues
|
Known Issues
|
||||||
------------
|
------------
|
||||||
@ -158,4 +141,4 @@ See the issue tracker on https://github.com/cisco/openh264/issues
|
|||||||
|
|
||||||
License
|
License
|
||||||
-------
|
-------
|
||||||
BSD, see `LICENSE` file for details.
|
BSD, see LICENSE file for details.
|
||||||
|
184
RELEASES
@ -1,113 +1,19 @@
|
|||||||
|
|
||||||
Releases
|
Releases
|
||||||
-----------
|
-----------
|
||||||
v1.6.0
|
v1.1.1
|
||||||
------
|
- Modify some APIs
|
||||||
- Adjusted the encoder API structures
|
- Add WelsGetDecoderCapability for SDP negotiation usage
|
||||||
- Removed the unused data format in decoder API
|
- Add RC_BUFFERBASED_MODE for screen content RC
|
||||||
- Encoder support of simulcast AVC
|
- Add SLTRConfig for SetOption in encoder
|
||||||
- Added support of video signal type present information
|
- Add ENCODER_OPTION_COMPLEXITY/ECOMPLEXITY_MODE in TagEncParamExt
|
||||||
- Added support of encoder load-balancing
|
- Remove uiFrameToBeCoded in TagEncParamExt
|
||||||
- Improved encoder multi-threads, rate control and down-sampling
|
- Remove iInputCsp in TagEncParamBase/TagEncParamExt
|
||||||
- Fixed the frame size constraint in encoder
|
- Modify iOutputColorFormat as eOutputColorFormat
|
||||||
- Bug fixes for rate control, multi-threading, simulcasting in encoder
|
- Modify uiEcActiveFlag as eEcActiveIdc
|
||||||
- Bug fixes for interface call, return value check, memory leak in decoder
|
- Rename ENCOCER_LTR_MARKING_PERIOD to ENCODER_LTR_MARKING_PERIOD
|
||||||
- Bug fixes for UT and statistic information
|
- Improve the encoding speed of screen content encoding including ARM and X86
|
||||||
- Bug fixes for assembly code
|
- fix some bugs
|
||||||
- Remove the unused and redundant code
|
|
||||||
- Improvements on UT, memory allocation failed protection, error-protection in decoder, input parameters checking in encoder, assembly for AVX2 support, assembly code performance, logging and documentation
|
|
||||||
- Correct some typos in source code and documents
|
|
||||||
|
|
||||||
v1.5.3
|
|
||||||
------
|
|
||||||
- Bug fixes for GMP Plugin
|
|
||||||
|
|
||||||
v1.5.2
|
|
||||||
------
|
|
||||||
- Fix GMP Plugin causing the Browser crash on Android
|
|
||||||
|
|
||||||
v1.5.1
|
|
||||||
------
|
|
||||||
- Bug fixes for GMP Plugin
|
|
||||||
|
|
||||||
v1.5.0
|
|
||||||
------
|
|
||||||
- Correct a typo in codec return value (github issue#2046, cmUnkonwReason -> cmUnknownReason)
|
|
||||||
- Added Codec demo and auto build script for WP8
|
|
||||||
- Decoder support of 'Constrained High Profile' of H.264
|
|
||||||
- Encoder support of CABAC of H.264
|
|
||||||
- Encoder support of input frame rate 60
|
|
||||||
- Improved syntax of gaps_in_frame_num_value_allowed_flag in encoder
|
|
||||||
- Improved memory usage for multi-threading in encoder
|
|
||||||
- Added VUI info for base layer in encoder
|
|
||||||
- Added encoder interface to get external setting of iMaxQp and iMinQp for rate control
|
|
||||||
- Bug fixes for Rate Control, multi-threading and simulcasting in encoder
|
|
||||||
- Bug fixes for NoDelay API, ParseOnly functions, error-concealment off functiond and error-detection in decoder
|
|
||||||
- Bug fixes for UT
|
|
||||||
- Fixes to avoid valgrind warnings, potential crash and calculation overflow
|
|
||||||
- Merged files for decoder/encoder and remove unused files
|
|
||||||
- Improvements on build scripts, UT, error-protection in decoder, input param checking in encoder, assembly for 64bit support, downsampling, logging and documentation
|
|
||||||
|
|
||||||
Note:
|
|
||||||
'Constrained High Profile' = 'Constrained Baseline Profile' plus:
|
|
||||||
- CABAC
|
|
||||||
- Intra 8x8 mode support
|
|
||||||
- 8x8 transform
|
|
||||||
- QP scaling matrices
|
|
||||||
- QP per chroma component
|
|
||||||
- Mono 4:0:0 (experimental)
|
|
||||||
- Weighted prediction
|
|
||||||
|
|
||||||
v1.4.0
|
|
||||||
------
|
|
||||||
- Decoder new interface of DecodeFrameNoDelay
|
|
||||||
- Added new encoder and decoder statistics
|
|
||||||
- Added option for generating pdb in windows builds
|
|
||||||
- Added new rate control mode (RC_TIMESTAMP_MODE) for inconstant frame rate input
|
|
||||||
- Added new Sps/Pps strategies for real-time video
|
|
||||||
— Added support for simulcast avc
|
|
||||||
- Improvements in code structure, assembly, input parameter checking, logging, UT and comments
|
|
||||||
- In gmp-openh264, return decoder error correctly and other fixes
|
|
||||||
- Decoder bug fixes when for Error Concealment disabled
|
|
||||||
- Bug fixes for ParseOnly functions
|
|
||||||
- Bug fixes for encoding large frame size (>32767MBs)
|
|
||||||
- Fixes to avoid valgrind warnings, potential crash and calculation overflow
|
|
||||||
|
|
||||||
-----------
|
|
||||||
v1.3.1
|
|
||||||
------
|
|
||||||
- Fixed and enhanced protection to avoid crash when reading lossy bitstreams
|
|
||||||
- Adjust the default mode of Error Concealment used by gmp-openh264
|
|
||||||
|
|
||||||
-----------
|
|
||||||
v1.3.0
|
|
||||||
------
|
|
||||||
- Removed manual API document, now using wiki: https://github.com/cisco/openh264/wiki (0af48e5 for v1.3.0)
|
|
||||||
- Added API version in API header files
|
|
||||||
- Added pkg-config file
|
|
||||||
- Added decoder support of parsing only (bParseOnly) for only parsing bit stream but not decoding
|
|
||||||
- Added timestamp and max nal size in gmp-openh264.cpp when calling encoding
|
|
||||||
- Added timestamp info in decoder input and return structure
|
|
||||||
- Added support of level 9 in decoder
|
|
||||||
- Added total length of the encoded frame in encoder return structure
|
|
||||||
- Added SetOption(ENCODER_OPTION_SVC_ENCODE_PARAM_BASE,&base) for encoder
|
|
||||||
- Set constraint set 0 and 1 flags for non-scalable
|
|
||||||
- Improved error concealment algorithms and provide more modes of error-concealment
|
|
||||||
- Improved rate control algorithms and reference selection algorithms for screen content encoding
|
|
||||||
- Added encoder and decoder statistics interface
|
|
||||||
- Improved input parameter checking and logging
|
|
||||||
- Bug fixes, warning reductions, and test improvements
|
|
||||||
|
|
||||||
-----------
|
|
||||||
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
|
v1.1.0
|
||||||
@ -124,71 +30,11 @@ Binaries
|
|||||||
These binary releases are distributed under this license:
|
These binary releases are distributed under this license:
|
||||||
http://www.openh264.org/BINARY_LICENSE.txt
|
http://www.openh264.org/BINARY_LICENSE.txt
|
||||||
|
|
||||||
v1.6.0
|
|
||||||
------
|
|
||||||
http://ciscobinary.openh264.org/libopenh264-1.6.0-android19.so.bz2
|
|
||||||
http://ciscobinary.openh264.org/libopenh264-1.6.0-ios.a.bz2
|
|
||||||
http://ciscobinary.openh264.org/libopenh264-1.6.0-linux32.3.so.bz2
|
|
||||||
http://ciscobinary.openh264.org/libopenh264-1.6.0-linux64.3.so.bz2
|
|
||||||
http://ciscobinary.openh264.org/libopenh264-1.6.0-osx32.3.dylib.bz2
|
|
||||||
http://ciscobinary.openh264.org/libopenh264-1.6.0-osx64.3.dylib.bz2
|
|
||||||
http://ciscobinary.openh264.org/openh264-1.6.0-win32msvc.dll.bz2
|
|
||||||
http://ciscobinary.openh264.org/openh264-1.6.0-win64msvc.dll.bz2
|
|
||||||
|
|
||||||
v1.5.0
|
|
||||||
------
|
|
||||||
http://ciscobinary.openh264.org/libopenh264-1.5.0-android19.so.bz2
|
|
||||||
http://ciscobinary.openh264.org/libopenh264-1.5.0-ios.a.bz2
|
|
||||||
http://ciscobinary.openh264.org/libopenh264-1.5.0-linux32.so.bz2
|
|
||||||
http://ciscobinary.openh264.org/libopenh264-1.5.0-linux64.so.bz2
|
|
||||||
http://ciscobinary.openh264.org/libopenh264-1.5.0-osx32.dylib.bz2
|
|
||||||
http://ciscobinary.openh264.org/libopenh264-1.5.0-osx64.dylib.bz2
|
|
||||||
http://ciscobinary.openh264.org/openh264-1.5.0-win32msvc.dll.bz2
|
|
||||||
http://ciscobinary.openh264.org/openh264-1.5.0-win64msvc.dll.bz2
|
|
||||||
|
|
||||||
v1.4.0
|
|
||||||
------
|
|
||||||
http://ciscobinary.openh264.org/libopenh264-1.4.0-android19.so.bz2
|
|
||||||
http://ciscobinary.openh264.org/libopenh264-1.4.0-linux32.so.bz2
|
|
||||||
http://ciscobinary.openh264.org/libopenh264-1.4.0-linux64.so.bz2
|
|
||||||
http://ciscobinary.openh264.org/libopenh264-1.4.0-osx32.dylib.bz2
|
|
||||||
http://ciscobinary.openh264.org/libopenh264-1.4.0-osx64.dylib.bz2
|
|
||||||
http://ciscobinary.openh264.org/openh264-1.4.0-win32msvc.dll.bz2
|
|
||||||
http://ciscobinary.openh264.org/openh264-1.4.0-win64msvc.dll.bz2
|
|
||||||
|
|
||||||
v1.3.1
|
|
||||||
------
|
|
||||||
http://ciscobinary.openh264.org/libopenh264-1.3.1-android19.so.bz2
|
|
||||||
http://ciscobinary.openh264.org/libopenh264-1.3.1-linux32.so.bz2
|
|
||||||
http://ciscobinary.openh264.org/libopenh264-1.3.1-linux64.so.bz2
|
|
||||||
http://ciscobinary.openh264.org/libopenh264-1.3.1-osx32.dylib.bz2
|
|
||||||
http://ciscobinary.openh264.org/libopenh264-1.3.1-osx64.dylib.bz2
|
|
||||||
http://ciscobinary.openh264.org/openh264-1.3.1-win32msvc.dll.bz2
|
|
||||||
http://ciscobinary.openh264.org/openh264-1.3.1-win64msvc.dll.bz2
|
|
||||||
|
|
||||||
v1.3.0
|
|
||||||
------
|
|
||||||
http://ciscobinary.openh264.org/libopenh264-1.3.0-android19.so.bz2
|
|
||||||
http://ciscobinary.openh264.org/libopenh264-1.3.0-linux32.so.bz2
|
|
||||||
http://ciscobinary.openh264.org/libopenh264-1.3.0-linux64.so.bz2
|
|
||||||
http://ciscobinary.openh264.org/libopenh264-1.3.0-osx32.dylib.bz2
|
|
||||||
http://ciscobinary.openh264.org/libopenh264-1.3.0-osx64.dylib.bz2
|
|
||||||
http://ciscobinary.openh264.org/openh264-1.3.0-win32msvc.dll.bz2
|
|
||||||
http://ciscobinary.openh264.org/openh264-1.3.0-win64msvc.dll.bz2
|
|
||||||
|
|
||||||
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
|
v1.1.0
|
||||||
------
|
------
|
||||||
http://ciscobinary.openh264.org/libopenh264-1.1.0-android19.so.bz2
|
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-linux32.so.bz2
|
||||||
http://ciscobinary.openh264.org/libopenh264-1.1.0-linux64.so.bz2
|
http://ciscobinary.openh264.org/libopenh264-1.1.0-linux64.so.bz2
|
||||||
http://ciscobinary.openh264.org/libopenh264-1.1.0-osx32.dylib.bz2
|
http://ciscobinary.openh264.org/libopenh264-1.1.0-osx32.dylib.bz2
|
||||||
|
@ -1,431 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
#*******************************************************************
|
|
||||||
# brief: multi-encoders comparision for openh264
|
|
||||||
# (one given sequence only)
|
|
||||||
# comparision almong encoders in \$TestEncoderList
|
|
||||||
#
|
|
||||||
# more detail, please refer to runUsage() and runBrief()
|
|
||||||
#
|
|
||||||
# date: 2015-12-16
|
|
||||||
#*******************************************************************
|
|
||||||
|
|
||||||
runUsage()
|
|
||||||
{
|
|
||||||
echo -e "\033[32m ********************************************************************* \033[0m"
|
|
||||||
echo " Usage: "
|
|
||||||
echo " --$0 \$TestPicW \$TestPicH \$TestEncoderList"
|
|
||||||
echo ""
|
|
||||||
echo " --example:"
|
|
||||||
echo " $0 1280 720 h264enc_master h264enc_target1 h264enc_target2 "
|
|
||||||
echo ""
|
|
||||||
echo " Pre-test:"
|
|
||||||
echo " --1) copy welsenc.cfg from ./openh264/testbin/ to current dir"
|
|
||||||
echo " --2) set test YUV path in welsenc.cfg "
|
|
||||||
echo " --3) copy layer0.cfg from ./openh264/testbin/layer2.cfg to current dir"
|
|
||||||
echo " --4) copy layer1.cfg from ./openh264/testbin/layer2.cfg to current dir"
|
|
||||||
echo " --5) copy layer2.cfg from ./openh264/testbin/layer2.cfg to current dir"
|
|
||||||
echo " --6) copy layer3.cfg from ./openh264/testbin/layer2.cfg to current dir"
|
|
||||||
echo " layer0.cfg~layer3.cfg are used for multi-layers test cases"
|
|
||||||
echo ""
|
|
||||||
echo " --7) generate at least one encoder, "
|
|
||||||
echo " eg. h264enc_master----master branch as benchmark codec"
|
|
||||||
echo " h264enc_target----your branch CodecChanged as target codec"
|
|
||||||
echo ""
|
|
||||||
echo " --8) copy all tests codec to folder ./Encoder"
|
|
||||||
echo " --9) run below command line:"
|
|
||||||
echo " $0 \$TestPicW \$TestPicH \$TestEncoderList"
|
|
||||||
echo ""
|
|
||||||
echo " Post-test:"
|
|
||||||
echo " --1) temp cases log will be output in ./Trace-AllTestData"
|
|
||||||
echo " --2) all comparision data parsed from log files will be output to "
|
|
||||||
echo " related .csv file under ./Trace-AllTestData "
|
|
||||||
echo ""
|
|
||||||
echo " example:"
|
|
||||||
echo " --comparison almong h264enc_master h264enc_target1 h264enc_target2"
|
|
||||||
echo " for Zhuling_1280x720.yuv"
|
|
||||||
echo ""
|
|
||||||
echo " --run command as below:"
|
|
||||||
echo " $0 1280 720 h264enc_master h264enc_target1 h264enc_target2 "
|
|
||||||
echo ""
|
|
||||||
echo " --get final result files(.csv) under ./Trace-AllTestData"
|
|
||||||
echo ""
|
|
||||||
echo -e "\033[32m ********************************************************************* \033[0m"
|
|
||||||
}
|
|
||||||
|
|
||||||
runBrief()
|
|
||||||
{
|
|
||||||
echo -e "\033[32m ********************************************************************* \033[0m"
|
|
||||||
echo " brief:"
|
|
||||||
echo ""
|
|
||||||
echo " encoder veision comparision "
|
|
||||||
echo " --comparision almong encoders in \$TestEncoderList"
|
|
||||||
echo " --please generate at least one encoder and copy to folder ./Encoder"
|
|
||||||
echo " --script will run all test cases for each test encoder"
|
|
||||||
echo " and generate related trace log files for each encoder"
|
|
||||||
echo " --script will parse and extact data based on keyword from trace log file"
|
|
||||||
echo " and output to related .csv files for all encoder"
|
|
||||||
echo " --the test outout file will be put under ./Trace-AllTestData"
|
|
||||||
echo ""
|
|
||||||
echo " test cases:"
|
|
||||||
echo " --add more cases in function runGlobleInit()"
|
|
||||||
echo " --add new argument with for loop like rc. etc in function "
|
|
||||||
echo " runAllEncodeCasesAndGenerateLog()"
|
|
||||||
echo ""
|
|
||||||
echo " new data:"
|
|
||||||
echo " --currently only memory usage, you can add new data for your comparision"
|
|
||||||
echo " --need to add related data parse in function runParseTraceLog()"
|
|
||||||
echo ""
|
|
||||||
echo -e "\033[32m ********************************************************************* \033[0m"
|
|
||||||
}
|
|
||||||
|
|
||||||
runPrompt()
|
|
||||||
{
|
|
||||||
echo -e "\033[32m ********************************************************************* \033[0m"
|
|
||||||
echo ""
|
|
||||||
echo " ------Test completed!--------"
|
|
||||||
echo ""
|
|
||||||
echo -e "\033[32m ********************************************************************* \033[0m"
|
|
||||||
echo " "
|
|
||||||
echo " --Total ${iTotalCaseNum} cases run for encoders: ${aEncoderList[@]}"
|
|
||||||
echo ""
|
|
||||||
echo " --Statistic files for comparision are list as below:"
|
|
||||||
echo " ${MemoryUsageStatic}"
|
|
||||||
echo ""
|
|
||||||
echo " --trace log files can be found under:"
|
|
||||||
echo " ${LogDir}"
|
|
||||||
echo ""
|
|
||||||
echo -e "\033[32m ********************************************************************* \033[0m"
|
|
||||||
}
|
|
||||||
|
|
||||||
runGlobleInit()
|
|
||||||
{
|
|
||||||
CurrenDir=`pwd`
|
|
||||||
LogDir="${CurrenDir}/Trace-AllTestData"
|
|
||||||
EncoderDir="${CurrenDir}/Encoder"
|
|
||||||
|
|
||||||
if [ ! -d ${LogDir} ]
|
|
||||||
then
|
|
||||||
mkdir ${LogDir}
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
LogFile="Log_EncTraceInfo.log"
|
|
||||||
MemoryUsageStatic="${LogDir}/MemoryUsage.csv"
|
|
||||||
TempEncoderList=""
|
|
||||||
for((i=0; i<${#aEncoderList[@]}; i++))
|
|
||||||
do
|
|
||||||
if [ -z "${TempEncoderList}" ]
|
|
||||||
then
|
|
||||||
TempEncoderList="${aEncoderList[$i]},"
|
|
||||||
else
|
|
||||||
TempEncoderList="${TempEncoderList} ${aEncoderList[$i]},"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
let "iTotalCaseNum=0"
|
|
||||||
let "MemoryUsage = 0"
|
|
||||||
echo "LogDir is ${LogDir}"
|
|
||||||
echo "MemoryUsageStatic file is ${MemoryUsageStatic}"
|
|
||||||
echo "SpatialLayerNum, ThreadNum, SliceMode, SliceNum, SlicMbNum, ${TempEncoderList}" >${MemoryUsageStatic}
|
|
||||||
|
|
||||||
echo "LogDir is ${LogDir}"
|
|
||||||
echo "MemoryUsageStatic file is ${MemoryUsageStatic}"
|
|
||||||
|
|
||||||
|
|
||||||
let "iTraceLevel=4"
|
|
||||||
let "iFrameToBeEncoded = 32"
|
|
||||||
let "iMaxNalSize=0"
|
|
||||||
#you can add more test case like rc, gop size, et.
|
|
||||||
#and add "for loop" in function runAllEncodeCasesAndGenerateLog()
|
|
||||||
aSpatialLayerNum=(1 2 3 4 )
|
|
||||||
aThreadIdc=(1 4)
|
|
||||||
aSliceMode=(0 1 2 3)
|
|
||||||
aSliceNum=(0 8 16 32)
|
|
||||||
aSliceMbNum=(0 960)
|
|
||||||
|
|
||||||
Encoder=""
|
|
||||||
sEncoderCommand=""
|
|
||||||
}
|
|
||||||
|
|
||||||
runCheck()
|
|
||||||
{
|
|
||||||
if [ ! -d ${EncoderDir} ]
|
|
||||||
then
|
|
||||||
echo "encoder folder does not exist, please following below command to copy encoder to test folder--./Encoder"
|
|
||||||
echo " mkdir Encoder"
|
|
||||||
echo " cp \${AllVersionEncoders} ./Encoder "
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
let "bEncoderFlag = 0"
|
|
||||||
echo "aEncoderList is ${aEncoderList[@]} "
|
|
||||||
for file in ${aEncoderList[@]}
|
|
||||||
do
|
|
||||||
if [ -x ${EncoderDir}/${file} ]
|
|
||||||
then
|
|
||||||
let "bEncoderFlag = 1"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ ${bEncoderFlag} -eq 0 ]
|
|
||||||
then
|
|
||||||
echo "no encoder under test folder, please following below command to copy encoder to test folder--./Encoder"
|
|
||||||
echo " cp \${AllVersionEncoders} ./Encoder "
|
|
||||||
echo " chmod u+x ./Encoder/* "
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
runGenerateSpatialLayerResolution()
|
|
||||||
{
|
|
||||||
SpatialLayerNum=$1
|
|
||||||
if [ -z "${SpatialLayerNum}" ]
|
|
||||||
then
|
|
||||||
let "SpatialLayerNum =1"
|
|
||||||
fi
|
|
||||||
|
|
||||||
let "PicW_L0= PicW / 8"
|
|
||||||
let "PicW_L1= PicW / 4"
|
|
||||||
let "PicW_L2= PicW / 2"
|
|
||||||
let "PicW_L3= PicW"
|
|
||||||
|
|
||||||
let "PicH_L0= PicH / 8"
|
|
||||||
let "PicH_L1= PicH / 4"
|
|
||||||
let "PicH_L2= PicH / 2"
|
|
||||||
let "PicH_L3= PicH"
|
|
||||||
|
|
||||||
if [ ${SpatialLayerNum} -eq 1 ]
|
|
||||||
then
|
|
||||||
aPicW=( ${PicW_L3} 0 0 0 )
|
|
||||||
aPicH=( ${PicH_L3} 0 0 0 )
|
|
||||||
|
|
||||||
elif [ ${SpatialLayerNum} -eq 2 ]
|
|
||||||
then
|
|
||||||
aPicW=( ${PicW_L2} ${PicW_L3} 0 0 )
|
|
||||||
aPicH=( ${PicH_L2} ${PicH_L3} 0 0 )
|
|
||||||
|
|
||||||
elif [ ${SpatialLayerNum} -eq 3 ]
|
|
||||||
then
|
|
||||||
aPicW=( ${PicW_L1} ${PicW_L2} ${PicW_L3} 0 )
|
|
||||||
aPicH=( ${PicH_L1} ${PicH_L2} ${PicH_L3} 0 )
|
|
||||||
|
|
||||||
elif [ ${SpatialLayerNum} -eq 4 ]
|
|
||||||
then
|
|
||||||
aPicW=( ${PicW_L0} ${PicW_L1} ${PicW_L2} ${PicW_L3} )
|
|
||||||
aPicH=( ${PicH_L0} ${PicH_L1} ${PicH_L2} ${PicH_L3} )
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "*************************************************************************"
|
|
||||||
echo " ${SpatialLayerNum} layers spactial resolution for ${PicW}x${PicH} are:"
|
|
||||||
echo ""
|
|
||||||
echo " aPicW is ${aPicW[@]}"
|
|
||||||
echo " aPicH is ${aPicH[@]}"
|
|
||||||
echo "*************************************************************************"
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#parse data from encoder trace log
|
|
||||||
#you can add more key word to extract data from log file
|
|
||||||
runParseTraceLog()
|
|
||||||
{
|
|
||||||
TempLogFile=$1
|
|
||||||
let "MemoryUsage = 0"
|
|
||||||
|
|
||||||
echo "*****************************************"
|
|
||||||
echo "parsing trace log file"
|
|
||||||
echo "log file name is ${TempLogFile}"
|
|
||||||
echo "*****************************************"
|
|
||||||
|
|
||||||
if [ ! -e ${TempLogFile} ]
|
|
||||||
then
|
|
||||||
echo "LogFile ${TempLogFile} does not exist, please double check!"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
MemUsageInLog=""
|
|
||||||
while read line
|
|
||||||
do
|
|
||||||
if [[ "${line}" =~ "overall memory usage" ]]
|
|
||||||
then
|
|
||||||
#[OpenH264] this = 0x0x7fa4d2c04c30, Info:WelsInitEncoderExt() exit, overall memory usage: 40907254 bytes
|
|
||||||
MemUsageInLog=(`echo $line | awk 'BEGIN {FS="usage:"} {print $2}' `)
|
|
||||||
fi
|
|
||||||
|
|
||||||
# you can add more key word to extract data from log file
|
|
||||||
# e.g.: bit rate, fps, encoder time, psnr etc.
|
|
||||||
# add script block like:
|
|
||||||
# ****************************************************
|
|
||||||
# if [[ "${line}" =~ "KeyWordYouWantToSearch" ]]
|
|
||||||
# then
|
|
||||||
# $line in log file which contain data you want
|
|
||||||
# DataYouWant=(`echo $line | awk 'BEGIN {FS="keywordYourSearch"} {print $2}' `)
|
|
||||||
# fi
|
|
||||||
# ****************************************************
|
|
||||||
|
|
||||||
done < ${TempLogFile}
|
|
||||||
|
|
||||||
let "MemoryUsage = ${MemUsageInLog}"
|
|
||||||
echo "MemoryUsage is ${MemoryUsage}"
|
|
||||||
}
|
|
||||||
|
|
||||||
runEncodeOneCase()
|
|
||||||
{
|
|
||||||
#encoding process
|
|
||||||
echo "------------------------------------------------------"
|
|
||||||
echo "${Encoder} welsenc.cfg ${sEncoderCommand}" >${LogFile}
|
|
||||||
${Encoder} welsenc.cfg ${sEncoderCommand} 2>>${LogFile}
|
|
||||||
${Encoder} welsenc.cfg ${sEncoderCommand} >>${LogFile}
|
|
||||||
echo "------------------------------------------------------"
|
|
||||||
}
|
|
||||||
|
|
||||||
runAllEncodeCasesAndGenerateLog()
|
|
||||||
{
|
|
||||||
|
|
||||||
echo "aSpatialLayerNum is ${aSpatialLayerNum[@]}"
|
|
||||||
echo "aThreadIdc is ${aThreadIdc[@]}"
|
|
||||||
echo "aSliceMode is ${aSliceMode[@]}"
|
|
||||||
echo "aSliceNum is ${aSliceNum[@]}"
|
|
||||||
echo "aSliceMbNum is ${aSliceMbNum[@]}"
|
|
||||||
|
|
||||||
sEncoderCommand1="-lconfig 0 layer0.cfg -lconfig 1 layer1.cfg -lconfig 2 layer2.cfg -lconfig 3 layer3.cfg"
|
|
||||||
TempMemoryUsage=""
|
|
||||||
OtherDataYouWant=""
|
|
||||||
TempTestCase=""
|
|
||||||
let "CaseNum=1"
|
|
||||||
for iSLayerNum in ${aSpatialLayerNum[@]}
|
|
||||||
do
|
|
||||||
for iThreadNum in ${aThreadIdc[@]}
|
|
||||||
do
|
|
||||||
for iSliceMode in ${aSliceMode[@]}
|
|
||||||
do
|
|
||||||
for iSliceNum in ${aSliceNum[@]}
|
|
||||||
do
|
|
||||||
#raster slice mb mode, slice-mb-num =0, switch to row-mb-mode
|
|
||||||
if [ ${iSliceMode} -eq 2 ]
|
|
||||||
then
|
|
||||||
aSliceMbNum=(0 960)
|
|
||||||
else
|
|
||||||
aSliceMbNum=(960)
|
|
||||||
fi
|
|
||||||
|
|
||||||
for iSlicMbNum in ${aSliceMbNum[@]}
|
|
||||||
do
|
|
||||||
TempMemoryUsage=""
|
|
||||||
#for cases output to statistic file
|
|
||||||
TempTestCase="${iSLayerNum}, ${iThreadNum}, ${iSliceMode}, ${iSliceNum}, ${iSlicMbNum}"
|
|
||||||
|
|
||||||
for eEncoder in ${aEncoderList[@]}
|
|
||||||
do
|
|
||||||
Encoder=${EncoderDir}/${eEncoder}
|
|
||||||
if [ -x ${Encoder} ]
|
|
||||||
then
|
|
||||||
|
|
||||||
if [ ${iSliceMode} -eq 3 ]
|
|
||||||
then
|
|
||||||
iMaxNalSize=1000
|
|
||||||
else
|
|
||||||
iMaxNalSize=0
|
|
||||||
fi
|
|
||||||
|
|
||||||
runGenerateSpatialLayerResolution ${iSLayerNum}
|
|
||||||
|
|
||||||
sEncoderCommand2="-slcmd 0 ${iSliceMode} -slcmd 1 ${iSliceMode} -slcmd 2 ${iSliceMode} -slcmd 3 ${iSliceMode}"
|
|
||||||
sEncoderCommand3="-slcnum 0 ${iSliceNum} -slcnum 1 ${iSliceNum} -slcnum 2 ${iSliceNum} -slcnum 3 ${iSliceNum}"
|
|
||||||
sEncoderCommand4="-slcmbnum 0 ${iSlicMbNum} -slcmbnum 1 ${iSlicMbNum} -slcmbnum 2 ${iSlicMbNum} -slcmbnum 3 ${iSlicMbNum} "
|
|
||||||
|
|
||||||
sEncoderCommand5="-trace ${iTraceLevel} -numl ${iSLayerNum} -thread ${iThreadNum} -nalsize ${iMaxNalSize}"
|
|
||||||
|
|
||||||
sEncoderCommand6="-dw 0 ${aPicW[0]} -dw 1 ${aPicW[1]} -dw 2 ${aPicW[2]} -dw 3 ${aPicW[3]}"
|
|
||||||
sEncoderCommand7="-dh 0 ${aPicH[0]} -dh 1 ${aPicH[1]} -dh 2 ${aPicH[2]} -dh 3 ${aPicH[3]}"
|
|
||||||
|
|
||||||
sEncoderCommand="-frms ${iFrameToBeEncoded} ${sEncoderCommand1} ${sEncoderCommand2} ${sEncoderCommand3} ${sEncoderCommand4} ${sEncoderCommand5} ${sEncoderCommand6} ${sEncoderCommand7}"
|
|
||||||
|
|
||||||
LogFile="${LogDir}/${CaseNum}_LogInfo_iSLNum_${iSLayerNum}_ThrNum_${iThreadNum}_SlcM_${iSliceMode}_SlcN_${iSliceNum}_${eEncoder}.log"
|
|
||||||
|
|
||||||
echo "Encode command is: "
|
|
||||||
echo "${Encoder} welsenc.cfg ${sEncoderCommand}"
|
|
||||||
echo ""
|
|
||||||
echo "log file is ${LogFile}"
|
|
||||||
|
|
||||||
#encode one case
|
|
||||||
runEncodeOneCase
|
|
||||||
|
|
||||||
#parse trace log
|
|
||||||
runParseTraceLog ${LogFile}
|
|
||||||
|
|
||||||
#data extracted from log
|
|
||||||
#you can add new data here like rc, fps , etc.
|
|
||||||
echo "memory usage is ${MemoryUsage}"
|
|
||||||
if [ -z ${TempMemoryUsage} ]
|
|
||||||
then
|
|
||||||
TempMemoryUsage="${MemoryUsage},"
|
|
||||||
else
|
|
||||||
TempMemoryUsage="${TempMemoryUsage} ${MemoryUsage},"
|
|
||||||
fi
|
|
||||||
echo "TempMemoryUsage is ${TempMemoryUsage}"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
#output memory usage for all encoders
|
|
||||||
echo "${TempTestCase}, ${TempMemoryUsage}, ${OtherDataYouWant}" >>${MemoryUsageStatic}
|
|
||||||
let " CaseNum ++"
|
|
||||||
let "iTotalCaseNum ++"
|
|
||||||
|
|
||||||
done
|
|
||||||
|
|
||||||
done
|
|
||||||
|
|
||||||
done
|
|
||||||
|
|
||||||
done
|
|
||||||
|
|
||||||
done
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
runMain()
|
|
||||||
{
|
|
||||||
runGlobleInit
|
|
||||||
runCheck
|
|
||||||
runAllEncodeCasesAndGenerateLog
|
|
||||||
runPrompt
|
|
||||||
}
|
|
||||||
|
|
||||||
#*************************************************************
|
|
||||||
if [ $# -lt 3 ]
|
|
||||||
then
|
|
||||||
runUsage
|
|
||||||
runBrief
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
declare -a aEncoderList
|
|
||||||
declare -a aParamList
|
|
||||||
|
|
||||||
aParamList=( $@ )
|
|
||||||
ParamNum=$#
|
|
||||||
|
|
||||||
PicW=${aParamList[0]}
|
|
||||||
PicH=${aParamList[1]}
|
|
||||||
|
|
||||||
for((i=2;i<$#;i++))
|
|
||||||
do
|
|
||||||
echo "encoder is ${aParamList[$i]}"
|
|
||||||
aEncoderList="${aEncoderList} ${aParamList[$i]}"
|
|
||||||
done
|
|
||||||
aEncoderList=(${aEncoderList})
|
|
||||||
|
|
||||||
|
|
||||||
echo -e "\033[32m ********************************* \033[0m"
|
|
||||||
echo ""
|
|
||||||
echo " --num parameters is ${ParamNum} "
|
|
||||||
echo " --input parameters are:"
|
|
||||||
echo " $0 $@"
|
|
||||||
echo ""
|
|
||||||
echo -e "\033[32m ********************************* \033[0m"
|
|
||||||
|
|
||||||
runMain
|
|
||||||
#*************************************************************
|
|
||||||
|
|
@ -4,30 +4,30 @@
|
|||||||
runGetPerformanceInfo_openh264()
|
runGetPerformanceInfo_openh264()
|
||||||
{
|
{
|
||||||
|
|
||||||
if [ ! $# -eq 2 ]
|
if [ ! $# -eq 2 ]
|
||||||
then
|
then
|
||||||
echo "not enough parameters!"
|
echo "not enough parameters!"
|
||||||
echo "usage: ${0} [android/ios] ${PerformanceLogFile}"
|
echo "usage: ${0} [android/ios] ${PerformanceLogFile}"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local PerformanceLogFile=$2
|
local PerformanceLogFile=$2
|
||||||
local FileName=""
|
local FileName=""
|
||||||
local Width=""
|
local Width=""
|
||||||
local Height=""
|
local Height=""
|
||||||
local Frames=""
|
local Frames=""
|
||||||
local FPS=""
|
local FPS=""
|
||||||
local EncodeTime=""
|
local EncodeTime=""
|
||||||
if [ $1 = "android" ]
|
if [ $1 = "android" ]
|
||||||
then seperatorNum=3
|
then seperatorNum=3
|
||||||
else
|
else
|
||||||
seperatorNum=2
|
seperatorNum=2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
while read line
|
while read line
|
||||||
do
|
do
|
||||||
if [[ $line =~ "enc yuv file" ]]
|
if [[ $line =~ "enc yuv file" ]]
|
||||||
then
|
then
|
||||||
FileName=`echo $line | awk 'BEGIN {FS="enc yuv file"} {print $2}'`
|
FileName=`echo $line | awk 'BEGIN {FS="enc yuv file"} {print $2}'`
|
||||||
FileName=`echo $FileName | awk 'BEGIN {FS=":"} {print $2}'`
|
FileName=`echo $FileName | awk 'BEGIN {FS=":"} {print $2}'`
|
||||||
fi
|
fi
|
||||||
@ -51,9 +51,9 @@ runGetPerformanceInfo_openh264()
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $line =~ "encode time" ]]
|
if [[ $line =~ "encode time" ]]
|
||||||
then
|
then
|
||||||
EncodeTime=`echo $line | awk 'BEGIN {FS=":"} {print $'${seperatorNum}'}'`
|
EncodeTime=`echo $line | awk 'BEGIN {FS=":"} {print $'${seperatorNum}'}'`
|
||||||
fi
|
fi
|
||||||
if [[ $line =~ "height" ]]
|
if [[ $line =~ "height" ]]
|
||||||
then
|
then
|
||||||
Height=`echo $line | awk 'BEGIN {FS=":"} {print $'${seperatorNum}'}'`
|
Height=`echo $line | awk 'BEGIN {FS=":"} {print $'${seperatorNum}'}'`
|
||||||
@ -70,7 +70,7 @@ runGetPerformanceInfo_openh264()
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
done <${PerformanceLogFile}
|
done <${PerformanceLogFile}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@ ANDROID_SDK_PATH=${ANDROID_HOME}
|
|||||||
ANDROID_NDK_PATH=${ANDROID_NDK_HOME}
|
ANDROID_NDK_PATH=${ANDROID_NDK_HOME}
|
||||||
if [ "#${ANDROID_SDK_PATH}" = "#" ]
|
if [ "#${ANDROID_SDK_PATH}" = "#" ]
|
||||||
then
|
then
|
||||||
echo Please set ANDROID_HOME with the path of Android SDK
|
echo Please set ANDROID_HOME with the path of Android SDK
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
if [ "#${ANDROID_NDK_PATH}" = "#" ]
|
if [ "#${ANDROID_NDK_PATH}" = "#" ]
|
||||||
|
@ -1,439 +0,0 @@
|
|||||||
@echo off
|
|
||||||
rem *************************************************************************************************
|
|
||||||
rem usage:
|
|
||||||
rem AutoBuildForWPAndWindows.bat % Configuration %
|
|
||||||
rem --For debug version:
|
|
||||||
rem Win32-C-Only: AutoBuildForWPAndWindows.bat Win32-Debug-C
|
|
||||||
rem Win32-ASM: AutoBuildForWPAndWindows.bat Win32-Debug-ASM
|
|
||||||
rem Win64-C-Only: AutoBuildForWPAndWindows.bat Win64-Debug-C
|
|
||||||
rem Win64-ASM: AutoBuildForWPAndWindows.bat Win64-Debug-ASM
|
|
||||||
rem ARM-C-Only(WP8): AutoBuildForWPAndWindows.bat ARM-Debug-C
|
|
||||||
rem ARM-ASM(WP8): AutoBuildForWPAndWindows.bat ARM-Debug-ASM
|
|
||||||
rem --For release version:
|
|
||||||
rem Win32-C-Only: AutoBuildForWPAndWindows.bat Win32-Release-C
|
|
||||||
rem Win32-ASM: AutoBuildForWPAndWindows.bat Win32-Release-ASM
|
|
||||||
rem Win64-C-Only: AutoBuildForWPAndWindows.bat Win64-Release-C
|
|
||||||
rem Win64-ASM(WP8): AutoBuildForWPAndWindows.bat Win64-Release-ASM
|
|
||||||
rem ARM-C-Only(WP8): AutoBuildForWPAndWindows.bat ARM-Release-C
|
|
||||||
rem ARM-ASM(WP8): AutoBuildForWPAndWindows.bat ARM-Release-ASM
|
|
||||||
rem --For debug and release version:
|
|
||||||
rem Win32-C-Only: AutoBuildForWPAndWindows.bat Win32-All-C
|
|
||||||
rem Win32-ASM: AutoBuildForWPAndWindows.bat Win32-All-ASM
|
|
||||||
rem Win64-C-Only: AutoBuildForWPAndWindows.bat Win64-All-C
|
|
||||||
rem Win64-ASM: AutoBuildForWPAndWindows.bat Win64-All-ASM
|
|
||||||
rem ARM-C-Only(WP8): AutoBuildForWPAndWindows.bat ARM-All-C
|
|
||||||
rem ARM-ASM(WP8): AutoBuildForWPAndWindows.bat ARM-All-ASM
|
|
||||||
rem --For default:
|
|
||||||
rem AutoBuildForWPAndWindows.bat
|
|
||||||
rem ARM-All-ASM(WP8)
|
|
||||||
rem
|
|
||||||
rem --lib/dll files will be copied to folder .\bin
|
|
||||||
rem --win32 folder bin\i386*
|
|
||||||
rem --win64 folder bin\x86_64*
|
|
||||||
rem --arm folder bin\arm*
|
|
||||||
rem
|
|
||||||
rem Environment:
|
|
||||||
rem ----for windows phone, Visual studio with update 3 or later is needed
|
|
||||||
rem ----gas-preprocessor(windows phone build only)
|
|
||||||
rem --you can clone it from git://git.libav.org/gas-preprocessor.git
|
|
||||||
rem --for more detail, please refer to https://git.libav.org/?p=gas-preprocessor.git
|
|
||||||
rem -- and then set gas-preprocessor path to the %GasScriptPath% variable in this script
|
|
||||||
rem or just copy to VC2013 bin's path,you can refer to variable %VC12Path%
|
|
||||||
rem
|
|
||||||
rem ----MinGW
|
|
||||||
rem --install MinGW tools
|
|
||||||
rem --more detail, please refer to http://www.mingw.org/
|
|
||||||
rem
|
|
||||||
rem 2015/03/15 huashi@cisco.com
|
|
||||||
rem *************************************************************************************************
|
|
||||||
|
|
||||||
set WP8Flag=0
|
|
||||||
call :BasicSetting
|
|
||||||
call :PathSetting
|
|
||||||
call :SetBuildOption %1
|
|
||||||
if not %ERRORLEVEL%==0 (
|
|
||||||
echo not suppot option!
|
|
||||||
goto :ErrorReturn
|
|
||||||
)
|
|
||||||
call :EnvSetting %1
|
|
||||||
call :BuildResultInit
|
|
||||||
call :RunBuild
|
|
||||||
call :OutputBuildResult
|
|
||||||
call :GetFinalReturnCode
|
|
||||||
echo ReturnCode is %ReturnCode%
|
|
||||||
cd %WorkingDir%
|
|
||||||
goto :End
|
|
||||||
|
|
||||||
:RunBuild
|
|
||||||
for %%j in ( %aConfigurationList% ) do (
|
|
||||||
set BuildFlag=0
|
|
||||||
call :Build %%j
|
|
||||||
call :BuildCheck %%j
|
|
||||||
call :CopyDll %%j
|
|
||||||
)
|
|
||||||
goto :EOF
|
|
||||||
|
|
||||||
|
|
||||||
rem function for setting
|
|
||||||
rem ***********************************************
|
|
||||||
:BasicSetting
|
|
||||||
set DllFile=openh264.dll
|
|
||||||
set LibFile=openh264.lib
|
|
||||||
set PDBFile=openh264.pdb
|
|
||||||
set UTDllFile=ut.dll
|
|
||||||
set UTBinFile=codec_unittest.exe
|
|
||||||
set EncBinFile=h264enc.exe
|
|
||||||
set DecBinFile=h264dec.exe
|
|
||||||
goto :EOF
|
|
||||||
|
|
||||||
:PathSetting
|
|
||||||
set WorkingDir=%cd%
|
|
||||||
cd ..
|
|
||||||
set RootDir=%cd%
|
|
||||||
set BinDir=%RootDir%\bin
|
|
||||||
cd %WorkingDir%
|
|
||||||
goto :EOF
|
|
||||||
|
|
||||||
:EnvSetting
|
|
||||||
set MinGWPath=C:\MinGW\bin
|
|
||||||
set MsysPath=C:\MinGW\msys\1.0\bin
|
|
||||||
set GitPath=C:\Program Files (x86)\Git\bin
|
|
||||||
|
|
||||||
set VC14Path=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC
|
|
||||||
set VC12Path=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC
|
|
||||||
set VC11Path=C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC
|
|
||||||
set VC10Path=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC
|
|
||||||
set VC9Path=C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC
|
|
||||||
|
|
||||||
set VC12ArmLib01=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib\store\arm
|
|
||||||
set VC12ArmLib02=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib\arm
|
|
||||||
set WP8KitLib=C:\Program Files (x86)\Windows Phone Kits\8.1\lib\arm
|
|
||||||
|
|
||||||
if exist "%VC9Path%" set VCPATH=%VC9Path%
|
|
||||||
if exist "%VC10Path%" set VCPATH=%VC10Path%
|
|
||||||
if exist "%VC11Path%" set VCPATH=%VC11Path%
|
|
||||||
if exist "%VC12Path%" set VCPATH=%VC12Path%
|
|
||||||
if exist "%VC14Path%" set VCPATH=%VC14Path%
|
|
||||||
if %WP8Flag%==1 set VCPATH=%VC12Path%
|
|
||||||
|
|
||||||
set GasScriptPath=%VCPATH%\bin
|
|
||||||
|
|
||||||
if "%vArcType%" =="i386" set PATH=%MinGWPath%;%MsysPath%;%VCPATH%\bin;%GitPath%;%PATH%
|
|
||||||
if "%vArcType%" =="x86_64" set PATH=%MinGWPath%;%MsysPath%;%VCPATH%\bin;%GitPath%;%PATH%
|
|
||||||
if "%vArcType%" =="arm" set PATH=%MinGWPath%;%MsysPath%;%VCPATH%\bin;%GitPath%;%PATH%
|
|
||||||
rem if "%vArcType%" =="arm" set PATH=C:\MinGW\bin;C:\MinGW\msys\1.0\bin;C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin;C:\Program Files (x86)\Git\bin;%PATH%
|
|
||||||
|
|
||||||
if "%vArcType%" =="i386" call "%VCPATH%\vcvarsall.bat" x86
|
|
||||||
if "%vArcType%" =="x86_64" call "%VCPATH%\vcvarsall.bat" x64
|
|
||||||
if "%vArcType%" =="arm" call "%VCPATH%\vcvarsall.bat" x86_arm
|
|
||||||
if %WP8Flag%==1 call :WPSetting
|
|
||||||
|
|
||||||
echo PATH is %PATH%
|
|
||||||
echo LIB is %LIB%
|
|
||||||
goto :EOF
|
|
||||||
|
|
||||||
:WPSetting
|
|
||||||
set LIB=%VC12ArmLib01%;%VC12ArmLib02%;%WP8KitLib%
|
|
||||||
echo LIB setting for wp8 is:
|
|
||||||
echo %LIB%
|
|
||||||
if not exist "%VC12Path%" (
|
|
||||||
echo VC12 does not exist,
|
|
||||||
echo ******************************************
|
|
||||||
echo VC12 does not exist,
|
|
||||||
echo which is needed for windows phone
|
|
||||||
echo ******************************************
|
|
||||||
goto :ErrorReturn
|
|
||||||
)
|
|
||||||
goto :EOF
|
|
||||||
|
|
||||||
:SetBuildOption
|
|
||||||
if "aaa%1"=="aaa" (
|
|
||||||
set aConfigurationList=Debug Release
|
|
||||||
set vArcType=arm
|
|
||||||
set vOSType=msvc-wp
|
|
||||||
set vEnable64BitFlag=No
|
|
||||||
set vASMFlag=Yes
|
|
||||||
set WP8Flag=1
|
|
||||||
echo default setting
|
|
||||||
) else if "%1"=="Win32-Debug-C" (
|
|
||||||
set aConfigurationList=Debug
|
|
||||||
set vArcType=i386
|
|
||||||
set vOSType=msvc
|
|
||||||
set vEnable64BitFlag=No
|
|
||||||
set vASMFlag=No
|
|
||||||
echo Win32-Debug-C setting
|
|
||||||
) else if "%1"=="Win32-Release-C" (
|
|
||||||
set aConfigurationList=Release
|
|
||||||
set vArcType=i386
|
|
||||||
set vOSType=msvc
|
|
||||||
set vEnable64BitFlag=No
|
|
||||||
set vASMFlag=No
|
|
||||||
echo Win32-Release-C setting
|
|
||||||
) else if "%1"=="Win64-Debug-C" (
|
|
||||||
set aConfigurationList=Debug
|
|
||||||
set vArcType=x86_64
|
|
||||||
set vOSType=msvc
|
|
||||||
set vEnable64BitFlag=Yes
|
|
||||||
set vASMFlag=No
|
|
||||||
echo All-C setting
|
|
||||||
) else if "%1"=="Win64-Release-C" (
|
|
||||||
set aConfigurationList=Release
|
|
||||||
set vArcType=x86_64
|
|
||||||
set vOSType=msvc
|
|
||||||
set vEnable64BitFlag=Yes
|
|
||||||
set vASMFlag=No
|
|
||||||
echo Win64-Release-C setting
|
|
||||||
) else if "%1"=="ARM-Debug-C" (
|
|
||||||
set aConfigurationList=Debug
|
|
||||||
set vArcType=arm
|
|
||||||
set vOSType=msvc-wp
|
|
||||||
set vEnable64BitFlag=No
|
|
||||||
set vASMFlag=No
|
|
||||||
set WP8Flag=1
|
|
||||||
echo ARM-Debug-C setting
|
|
||||||
) else if "%1"=="ARM-Release-C" (
|
|
||||||
set aConfigurationList=Debug Release
|
|
||||||
set vArcType=arm
|
|
||||||
set vOSType=msvc-wp
|
|
||||||
set vEnable64BitFlag=No
|
|
||||||
set vASMFlag=No
|
|
||||||
set WP8Flag=1
|
|
||||||
echo ARM-Release-C setting
|
|
||||||
) else if "%1"=="Win32-All-C" (
|
|
||||||
set aConfigurationList=Debug Release
|
|
||||||
set vArcType=i386
|
|
||||||
set vOSType=msvc
|
|
||||||
set vEnable64BitFlag=No
|
|
||||||
set vASMFlag=No
|
|
||||||
echo Win32-All-C setting
|
|
||||||
) else if "%1"=="Win64-All-C" (
|
|
||||||
set aConfigurationList=Debug Release
|
|
||||||
set vArcType=x86_64
|
|
||||||
set vOSType=msvc
|
|
||||||
set vEnable64BitFlag=Yes
|
|
||||||
set vASMFlag=No
|
|
||||||
echo All-C setting
|
|
||||||
) else if "%1"=="ARM-All-C" (
|
|
||||||
set aConfigurationList=Debug Release
|
|
||||||
set vArcType=arm
|
|
||||||
set vOSType=msvc-wp
|
|
||||||
set vEnable64BitFlag=No
|
|
||||||
set vASMFlag=No
|
|
||||||
set WP8Flag=1
|
|
||||||
echo ARM-All-C setting
|
|
||||||
) else if "%1"=="Win32-Debug-ASM" (
|
|
||||||
set aConfigurationList=Debug
|
|
||||||
set vArcType=i386
|
|
||||||
set vOSType=msvc
|
|
||||||
set vEnable64BitFlag=No
|
|
||||||
set vASMFlag=Yes
|
|
||||||
echo Win32-Debug-ASM setting
|
|
||||||
) else if "%1"=="Win32-Release-ASM" (
|
|
||||||
set aConfigurationList=Release
|
|
||||||
set vArcType=i386
|
|
||||||
set vOSType=msvc
|
|
||||||
set vEnable64BitFlag=No
|
|
||||||
set vASMFlag=Yes
|
|
||||||
echo Win32-Release-ASM setting
|
|
||||||
) else if "%1"=="Win64-Debug-ASM" (
|
|
||||||
set aConfigurationList=Debug
|
|
||||||
set vArcType=x86_64
|
|
||||||
set vOSType=msvc
|
|
||||||
set vEnable64BitFlag=Yes
|
|
||||||
set vASMFlag=Yes
|
|
||||||
echo All-ASM setting
|
|
||||||
) else if "%1"=="Win64-Release-ASM" (
|
|
||||||
set aConfigurationList=Release
|
|
||||||
set vArcType=x86_64
|
|
||||||
set vOSType=msvc
|
|
||||||
set vEnable64BitFlag=Yes
|
|
||||||
set vASMFlag=Yes
|
|
||||||
echo Win64-Release-ASM setting
|
|
||||||
) else if "%1"=="ARM-Debug-ASM" (
|
|
||||||
set aConfigurationList=Debug
|
|
||||||
set vArcType=arm
|
|
||||||
set vOSType=msvc-wp
|
|
||||||
set vEnable64BitFlag=No
|
|
||||||
set vASMFlag=Yes
|
|
||||||
set WP8Flag=1
|
|
||||||
echo ARM-Debug-ASM setting
|
|
||||||
) else if "%1"=="ARM-Release-ASM" (
|
|
||||||
set aConfigurationList=Release
|
|
||||||
set vArcType=arm
|
|
||||||
set vOSType=msvc-wp
|
|
||||||
set vEnable64BitFlag=No
|
|
||||||
set vASMFlag=Yes
|
|
||||||
set WP8Flag=1
|
|
||||||
echo ARM-Release-ASM setting
|
|
||||||
) else if "%1"=="Win32-All-ASM" (
|
|
||||||
set aConfigurationList=Debug Release
|
|
||||||
set vArcType=i386
|
|
||||||
set vOSType=msvc
|
|
||||||
set vEnable64BitFlag=No
|
|
||||||
set vASMFlag=Yes
|
|
||||||
echo Win32-All-ASM setting
|
|
||||||
) else if "%1"=="Win64-All-ASM" (
|
|
||||||
set aConfigurationList=Debug Release
|
|
||||||
set vArcType=x86_64
|
|
||||||
set vOSType=msvc
|
|
||||||
set vEnable64BitFlag=Yes
|
|
||||||
set vASMFlag=Yes
|
|
||||||
echo All-ASM setting
|
|
||||||
) else if "%1"=="ARM-All-ASM" (
|
|
||||||
set aConfigurationList=Debug Release
|
|
||||||
set vArcType=arm
|
|
||||||
set vOSType=msvc-wp
|
|
||||||
set vEnable64BitFlag=No
|
|
||||||
set vASMFlag=Yes
|
|
||||||
set WP8Flag=1
|
|
||||||
echo ARM-All-ASM setting
|
|
||||||
) else (
|
|
||||||
call :help
|
|
||||||
goto :ErrorReturn
|
|
||||||
)
|
|
||||||
echo aConfigurationList is %aConfigurationList%
|
|
||||||
echo vArcType is %vArcType%
|
|
||||||
echo vOSType is %vOSType%
|
|
||||||
echo vEnable64BitFlag is %vEnable64BitFlag%
|
|
||||||
echo vASMFlag is %vASMFlag%
|
|
||||||
goto :EOF
|
|
||||||
|
|
||||||
rem function for build result
|
|
||||||
rem ***********************************************
|
|
||||||
:BuildResultInit
|
|
||||||
set BuildDebugFlag=0
|
|
||||||
set BuildReleaseFlag=0
|
|
||||||
set BuildDebugInfo=NULL
|
|
||||||
set BuildReleaseInfo=NULL
|
|
||||||
goto :EOF
|
|
||||||
|
|
||||||
:OutputBuildResult
|
|
||||||
echo BuildDebugFlag =%BuildDebugFlag%
|
|
||||||
echo BuildReleaseFlag =%BuildReleaseFlag%
|
|
||||||
echo BuildDebugInfo =%BuildDebugInfo%
|
|
||||||
echo BuildReleaseInfo =%BuildReleaseInfo%
|
|
||||||
goto :EOF
|
|
||||||
|
|
||||||
:BuildCheck
|
|
||||||
set vConfiguration=%1
|
|
||||||
if not %BuildFlag%==0 (
|
|
||||||
if "%vConfiguration%"=="Debug" (
|
|
||||||
set BuildDebugFlag=1
|
|
||||||
set BuildDebugInfo="build debug--failed"
|
|
||||||
) else (
|
|
||||||
set BuildReleaseFlag=1
|
|
||||||
set BuildReleaseInfo="build release--failed"
|
|
||||||
)
|
|
||||||
) else (
|
|
||||||
if "%vConfiguration%"=="Debug" (
|
|
||||||
set BuildDebugFlag=0
|
|
||||||
set BuildDebugInfo="build debug--succeed"
|
|
||||||
) else (
|
|
||||||
set BuildReleaseFlag=0
|
|
||||||
set BuildReleaseInfo="build release--succeed"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
goto :EOF
|
|
||||||
|
|
||||||
:GetFinalReturnCode
|
|
||||||
set aBuildFlagList=%BuildDebugFlag% %BuildReleaseFlag%
|
|
||||||
echo aBuildFlagList is %aBuildFlagList%
|
|
||||||
set ReturnCode=0
|
|
||||||
for %%k in (%aBuildFlagList%) do (
|
|
||||||
if not %%k == 0 (
|
|
||||||
set ReturnCode=1
|
|
||||||
)
|
|
||||||
)
|
|
||||||
goto :EOF
|
|
||||||
|
|
||||||
rem function for help
|
|
||||||
rem ***********************************************
|
|
||||||
:help
|
|
||||||
echo *******************************************************************************
|
|
||||||
echo usage:
|
|
||||||
echo AutoBuildForWPAndWindows.bat % Configuration %
|
|
||||||
echo --For debug version:
|
|
||||||
echo Win32-C-Only: AutoBuildForWPAndWindows.bat Win32-Debug-C
|
|
||||||
echo Win32-ASM: AutoBuildForWPAndWindows.bat Win32-Debug-ASM
|
|
||||||
echo Win64-C-Only: AutoBuildForWPAndWindows.bat Win64-Debug-C
|
|
||||||
echo Win64-ASM: AutoBuildForWPAndWindows.bat Win64-Debug-ASM
|
|
||||||
echo ARM-C-Only(WP8): AutoBuildForWPAndWindows.bat ARM-Debug-C
|
|
||||||
echo ARM-ASM(WP8): AutoBuildForWPAndWindows.bat ARM-Debug-ASM
|
|
||||||
echo --For release version:
|
|
||||||
echo Win32-C-Only: AutoBuildForWPAndWindows.bat Win32-Release-C
|
|
||||||
echo Win32-ASM: AutoBuildForWPAndWindows.bat Win32-Release-ASM
|
|
||||||
echo Win64-C-Only: AutoBuildForWPAndWindows.bat Win64-Release-C
|
|
||||||
echo Win64-ASM: AutoBuildForWPAndWindows.bat Win64-Release-ASM
|
|
||||||
echo ARM-C-Only(WP8): AutoBuildForWPAndWindows.bat ARM-Release-C
|
|
||||||
echo ARM-ASM(WP8): AutoBuildForWPAndWindows.bat ARM-Release-ASM
|
|
||||||
echo --For debug and release version:
|
|
||||||
echo Win32-C-Only: AutoBuildForWPAndWindows.bat Win32-All-C
|
|
||||||
echo Win32-ASM: AutoBuildForWPAndWindows.bat Win32-All-ASM
|
|
||||||
echo Win64-C-Only: AutoBuildForWPAndWindows.bat Win64-All-C
|
|
||||||
echo Win64-ASM: AutoBuildForWPAndWindows.bat Win64-All-ASM
|
|
||||||
echo ARM-C-Only(WP8): AutoBuildForWPAndWindows.bat ARM-All-C
|
|
||||||
echo ARM-ASM(WP8): AutoBuildForWPAndWindows.bat ARM-All-ASM
|
|
||||||
echo --For default:
|
|
||||||
echo AutoBuildForWPAndWindows.bat
|
|
||||||
echo ARM-All-ASM(WP8)
|
|
||||||
echo *******************************************************************************
|
|
||||||
goto :EOF
|
|
||||||
|
|
||||||
rem function for build
|
|
||||||
rem ***********************************************
|
|
||||||
:Build
|
|
||||||
set vConfiguration=%1
|
|
||||||
cd %RootDir%
|
|
||||||
echo bash -c "make OS=%vOSType% ARCH=%vArcType% USE_ASM=%vASMFlag% BUILDTYPE=%vConfiguration% clean"
|
|
||||||
echo bash -c "make OS=%vOSType% ARCH=%vArcType% USE_ASM=%vASMFlag% BUILDTYPE=%vConfiguration%"
|
|
||||||
bash -c "make OS=%vOSType% ARCH=%vArcType% USE_ASM=%vASMFlag% BUILDTYPE=%vConfiguration% clean"
|
|
||||||
bash -c "make OS=%vOSType% ARCH=%vArcType% USE_ASM=%vASMFlag% BUILDTYPE=%vConfiguration%"
|
|
||||||
if not %ERRORLEVEL%==0 (
|
|
||||||
set BuildFlag=1
|
|
||||||
)
|
|
||||||
cd %WorkingDir%
|
|
||||||
goto :EOF
|
|
||||||
|
|
||||||
:CopyDll
|
|
||||||
set vConfiguration=%1
|
|
||||||
set vBuildOption=%2
|
|
||||||
cd %RootDir%
|
|
||||||
if "%vArcType%"=="arm" (
|
|
||||||
set vBinDirName=ARM
|
|
||||||
) else if "%vArcType%"=="i386" (
|
|
||||||
set vBinDirName=Win32
|
|
||||||
) else (
|
|
||||||
set vBinDirName=x64
|
|
||||||
)
|
|
||||||
set ArchDestDir=%BinDir%\%vBinDirName%
|
|
||||||
set FullDestDir=%BinDir%\%vBinDirName%\%vConfiguration%
|
|
||||||
echo copying dll files to destination folder...
|
|
||||||
echo FullDestDir is %FullDestDir%
|
|
||||||
if not exist %ArchDestDir% md %ArchDestDir%
|
|
||||||
if exist %FullDestDir% (
|
|
||||||
rd /s /q %FullDestDir%
|
|
||||||
)
|
|
||||||
md %FullDestDir%
|
|
||||||
|
|
||||||
echo current dir is:
|
|
||||||
cd
|
|
||||||
set DestDir=bin/%vBinDirName%/%vConfiguration%
|
|
||||||
echo DestDir is %DestDir%
|
|
||||||
if "%vOSType%"=="msvc-wp" (
|
|
||||||
set aFileList=%DllFile% %LibFile% %PDBFile% %UTDllFile%
|
|
||||||
) else (
|
|
||||||
set aFileList=%DllFile% %LibFile% %PDBFile% %UTBinFile% %EncBinFile% %DecBinFile%
|
|
||||||
)
|
|
||||||
for %%k in (%aFileList%) do (
|
|
||||||
bash -c "cp -f %%k %DestDir%"
|
|
||||||
)
|
|
||||||
cd %WorkingDir%
|
|
||||||
goto :EOF
|
|
||||||
|
|
||||||
:ErrorReturn
|
|
||||||
endlocal
|
|
||||||
exit /b 2
|
|
||||||
|
|
||||||
:End
|
|
||||||
endlocal
|
|
||||||
exit /b %ReturnCode%
|
|
@ -1,51 +0,0 @@
|
|||||||
# This is a docker image with all the tools to build openh264 for linux
|
|
||||||
|
|
||||||
# build the docker image with: sudo docker build -t openh264tools - < Dockerfile
|
|
||||||
# get the result with: sudo docker run -t -i -v /tmp/openH264:/build openh264tools /bin/cp libopenh264.so log /build
|
|
||||||
# the results will be left in /tmp/openH264
|
|
||||||
# have a look at log file and if the hash match the "Fluffy got" hashes
|
|
||||||
|
|
||||||
FROM ubuntu:14.04
|
|
||||||
MAINTAINER Cullen Jennings <fluffy@cisco.com>
|
|
||||||
RUN apt-get update
|
|
||||||
RUN apt-get upgrade -y
|
|
||||||
RUN apt-get install -y bison flex g++ gcc git libgmp3-dev libmpc-dev libmpfr-dev libz-dev make wget
|
|
||||||
|
|
||||||
WORKDIR /tmp
|
|
||||||
RUN wget http://ftp.gnu.org/gnu/gcc/gcc-4.9.2/gcc-4.9.2.tar.gz
|
|
||||||
RUN tar xvfz gcc-4.9.2.tar.gz
|
|
||||||
WORKDIR /tmp/gcc-4.9.2/
|
|
||||||
RUN mkdir build
|
|
||||||
WORKDIR /tmp/gcc-4.9.2/build
|
|
||||||
RUN ../configure --disable-checking --enable-languages=c,c++ --enable-multiarch --enable-shared --enable-threads=posix --with-gmp=/usr/local/lib --with-mpc=/usr/lib --with-mpfr=/usr/lib --without-included-gettext --with-system-zlib --with-tune=generic --disable-multilib --disable-nls
|
|
||||||
RUN make -j 8
|
|
||||||
RUN make install
|
|
||||||
|
|
||||||
WORKDIR /tmp
|
|
||||||
RUN wget http://www.nasm.us/pub/nasm/releasebuilds/2.11.06/nasm-2.11.06.tar.gz
|
|
||||||
RUN tar xvfz nasm-2.11.06.tar.gz
|
|
||||||
WORKDIR /tmp/nasm-2.11.06/
|
|
||||||
RUN ./configure
|
|
||||||
RUN make
|
|
||||||
RUN make install
|
|
||||||
|
|
||||||
WORKDIR /tmp
|
|
||||||
RUN git clone https://github.com/cisco/openh264.git
|
|
||||||
WORKDIR /tmp/openh264
|
|
||||||
RUN git checkout v1.1
|
|
||||||
RUN make ENABLE64BIT=Yes
|
|
||||||
|
|
||||||
RUN date > log
|
|
||||||
RUN uname -a >> log
|
|
||||||
RUN nasm -v >> log
|
|
||||||
RUN gcc -v 2>> log
|
|
||||||
RUN git status -v >> log
|
|
||||||
|
|
||||||
RUN openssl dgst -sha1 libopenh264.so >> log
|
|
||||||
RUN echo "Fluffy Got hash of - 3b6280fce36111ab9c911453f4ee1fd99ce6f841" >> log
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -7,4 +7,3 @@
|
|||||||
--unpad-paren
|
--unpad-paren
|
||||||
--pad-first-paren-out
|
--pad-first-paren-out
|
||||||
--lineend=linux
|
--lineend=linux
|
||||||
--convert-tabs
|
|
||||||
|
@ -1,11 +1,10 @@
|
|||||||
GTEST_SRCDIR=gtest/googletest
|
GTEST_SRCDIR=gtest
|
||||||
GTEST_CPP_SRCS=\
|
GTEST_CPP_SRCS=\
|
||||||
$(GTEST_SRCDIR)/src/gtest-all.cc\
|
$(GTEST_SRCDIR)/src/gtest-all.cc\
|
||||||
|
|
||||||
GTEST_OBJS += $(GTEST_CPP_SRCS:.cc=.$(OBJ))
|
GTEST_OBJS += $(GTEST_CPP_SRCS:.cc=.$(OBJ))
|
||||||
|
|
||||||
OBJS += $(GTEST_OBJS)
|
OBJS += $(GTEST_OBJS)
|
||||||
|
|
||||||
$(GTEST_SRCDIR)/%.$(OBJ): $(GTEST_SRCDIR)/%.cc
|
$(GTEST_SRCDIR)/%.$(OBJ): $(GTEST_SRCDIR)/%.cc
|
||||||
$(QUIET_CXX)$(CXX) $(CFLAGS) $(CXXFLAGS) $(INCLUDES) $(GTEST_CFLAGS) $(GTEST_INCLUDES) -c $(CXX_O) $<
|
$(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:
|
for cfile in cfiles:
|
||||||
f.write("\t$(%s_SRCDIR)/%s\\\n"%(PREFIX, cfile))
|
f.write("\t$(%s_SRCDIR)/%s\\\n"%(PREFIX, cfile))
|
||||||
f.write("\n")
|
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:
|
if len(asm) > 0:
|
||||||
|
f.write("ifeq ($(ASM_ARCH), x86)\n")
|
||||||
f.write("%s_ASM_SRCS=\\\n"%(PREFIX))
|
f.write("%s_ASM_SRCS=\\\n"%(PREFIX))
|
||||||
for c in asm:
|
for c in asm:
|
||||||
f.write("\t$(%s_SRCDIR)/%s\\\n"%(PREFIX, c))
|
f.write("\t$(%s_SRCDIR)/%s\\\n"%(PREFIX, c))
|
||||||
f.write("\n")
|
f.write("\n")
|
||||||
f.write("%s_OBJSASM += $(%s_ASM_SRCS:.asm=.$(OBJ))\n"%(PREFIX, PREFIX))
|
f.write("%s_OBJS += $(%s_ASM_SRCS:.asm=.$(OBJ))\n"%(PREFIX, PREFIX))
|
||||||
f.write("ifeq ($(ASM_ARCH), x86)\n")
|
f.write("endif\n\n")
|
||||||
f.write("%s_OBJS += $(%s_OBJSASM)\n"%(PREFIX,PREFIX))
|
|
||||||
f.write("endif\n")
|
|
||||||
f.write("OBJS += $(%s_OBJSASM)\n\n"%(PREFIX))
|
|
||||||
|
|
||||||
if len(armfiles) > 0:
|
if len(armfiles) > 0:
|
||||||
|
f.write("ifeq ($(ASM_ARCH), arm)\n")
|
||||||
f.write("%s_ASM_ARM_SRCS=\\\n"%(PREFIX))
|
f.write("%s_ASM_ARM_SRCS=\\\n"%(PREFIX))
|
||||||
for c in armfiles:
|
for c in armfiles:
|
||||||
f.write("\t$(%s_SRCDIR)/%s\\\n"%(PREFIX, c))
|
f.write("\t$(%s_SRCDIR)/%s\\\n"%(PREFIX, c))
|
||||||
f.write("\n")
|
f.write("\n")
|
||||||
f.write("%s_OBJSARM += $(%s_ASM_ARM_SRCS:.S=.$(OBJ))\n"%(PREFIX, PREFIX))
|
f.write("%s_OBJS += $(%s_ASM_ARM_SRCS:.S=.$(OBJ))\n"%(PREFIX, PREFIX))
|
||||||
f.write("ifeq ($(ASM_ARCH), arm)\n")
|
f.write("endif\n\n")
|
||||||
f.write("%s_OBJS += $(%s_OBJSARM)\n"%(PREFIX,PREFIX))
|
|
||||||
f.write("endif\n")
|
|
||||||
f.write("OBJS += $(%s_OBJSARM)\n\n"%(PREFIX))
|
|
||||||
|
|
||||||
if len(arm64files) > 0:
|
if len(arm64files) > 0:
|
||||||
|
f.write("ifeq ($(ASM_ARCH), arm64)\n")
|
||||||
f.write("%s_ASM_ARM64_SRCS=\\\n"%(PREFIX))
|
f.write("%s_ASM_ARM64_SRCS=\\\n"%(PREFIX))
|
||||||
for c in arm64files:
|
for c in arm64files:
|
||||||
f.write("\t$(%s_SRCDIR)/%s\\\n"%(PREFIX, c))
|
f.write("\t$(%s_SRCDIR)/%s\\\n"%(PREFIX, c))
|
||||||
f.write("\n")
|
f.write("\n")
|
||||||
f.write("%s_OBJSARM64 += $(%s_ASM_ARM64_SRCS:.S=.$(OBJ))\n"%(PREFIX, PREFIX))
|
f.write("%s_OBJS += $(%s_ASM_ARM64_SRCS:.S=.$(OBJ))\n"%(PREFIX, PREFIX))
|
||||||
f.write("ifeq ($(ASM_ARCH), arm64)\n")
|
f.write("endif\n\n")
|
||||||
f.write("%s_OBJS += $(%s_OBJSARM64)\n"%(PREFIX,PREFIX))
|
|
||||||
f.write("endif\n")
|
f.write("OBJS += $(%s_OBJS)\n"%PREFIX)
|
||||||
f.write("OBJS += $(%s_OBJSARM64)\n\n"%(PREFIX))
|
|
||||||
|
|
||||||
f.write("OBJS += $(%s_OBJS)\n\n"%(PREFIX))
|
|
||||||
write_cpp_rule_pattern(f)
|
write_cpp_rule_pattern(f)
|
||||||
|
|
||||||
if len(cfiles) > 0:
|
if len(cfiles) > 0:
|
||||||
|
@ -14,4 +14,4 @@ python build/mktargets.py --directory test/processing --prefix processing_unitte
|
|||||||
python build/mktargets.py --directory test/api --prefix api_test
|
python build/mktargets.py --directory test/api --prefix api_test
|
||||||
python build/mktargets.py --directory test/common --prefix common_unittest
|
python build/mktargets.py --directory test/common --prefix common_unittest
|
||||||
python build/mktargets.py --directory module --prefix module
|
python build/mktargets.py --directory module --prefix module
|
||||||
python build/mktargets.py --directory gtest/googletest --library gtest --out build/gtest-targets.mk --cpp-suffix .cc --include gtest-all.cc
|
python build/mktargets.py --directory gtest --library gtest --out build/gtest-targets.mk --cpp-suffix .cc --include gtest-all.cc
|
||||||
|
@ -1,15 +0,0 @@
|
|||||||
include $(SRC_PATH)build/msvc-common.mk
|
|
||||||
CFLAGS_OPT += -MD
|
|
||||||
CFLAGS_DEBUG += -MDd
|
|
||||||
CFLAGS += -DUNICODE
|
|
||||||
# Ignore warnings about the main function prototype when building with -ZW
|
|
||||||
CXXFLAGS += -ZW -wd4447
|
|
||||||
# Ignore warnings about code built with -ZW in .lib files
|
|
||||||
AR_OPTS += -ignore:4264
|
|
||||||
|
|
||||||
# WelsThreadLib requires building with -ZW, since it uses new Windows Runtime
|
|
||||||
# classes for creating threads.
|
|
||||||
# If linking an .exe that contains Windows Runtime code, the first object
|
|
||||||
# file linked into the exe also needs to be built with -ZW (otherwise the build
|
|
||||||
# fails with "vccorlib_lib_should_be_specified_before_msvcrt_lib_to_linker",
|
|
||||||
# so set it on all files.
|
|
@ -1,9 +1,6 @@
|
|||||||
ARCH = arm
|
ARCH = arm
|
||||||
include $(SRC_PATH)build/arch.mk
|
include $(SRC_PATH)build/platform-arch.mk
|
||||||
SHAREDLIBSUFFIX = so
|
SHAREDLIBSUFFIX = so
|
||||||
# Android APK/JARs expect libraries to be unversioned
|
|
||||||
SHAREDLIBSUFFIXVER=$(SHAREDLIBSUFFIX)
|
|
||||||
SHLDFLAGS =
|
|
||||||
NDKLEVEL = 12
|
NDKLEVEL = 12
|
||||||
ifeq ($(ARCH), arm)
|
ifeq ($(ARCH), arm)
|
||||||
ifneq ($(APP_ABI), armeabi)
|
ifneq ($(APP_ABI), armeabi)
|
||||||
@ -12,6 +9,9 @@ ifeq ($(ARCH), arm)
|
|||||||
LDFLAGS += -march=armv7-a -Wl,--fix-cortex-a8
|
LDFLAGS += -march=armv7-a -Wl,--fix-cortex-a8
|
||||||
APP_ABI = armeabi-v7a
|
APP_ABI = armeabi-v7a
|
||||||
endif
|
endif
|
||||||
|
ifeq (Yes, $(USE_ASM))
|
||||||
|
ASMFLAGS += -march=armv7-a -mfpu=neon
|
||||||
|
endif
|
||||||
else ifeq ($(ARCH), arm64)
|
else ifeq ($(ARCH), arm64)
|
||||||
APP_ABI = arm64-v8a
|
APP_ABI = arm64-v8a
|
||||||
else ifeq ($(ARCH), x86)
|
else ifeq ($(ARCH), x86)
|
||||||
@ -64,7 +64,7 @@ MODULE_INCLUDES = $(STL_INCLUDES)
|
|||||||
MODULE_LDFLAGS = $(STL_LIB)
|
MODULE_LDFLAGS = $(STL_LIB)
|
||||||
|
|
||||||
ifeq (./,$(SRC_PATH))
|
ifeq (./,$(SRC_PATH))
|
||||||
binaries: decdemo encdemo
|
binaries : decdemo encdemo
|
||||||
|
|
||||||
decdemo: libraries
|
decdemo: libraries
|
||||||
cd ./codec/build/android/dec && $(NDKROOT)/ndk-build -B APP_ABI=$(APP_ABI) && android update project -t $(TARGET) -p . && ant debug
|
cd ./codec/build/android/dec && $(NDKROOT)/ndk-build -B APP_ABI=$(APP_ABI) && android update project -t $(TARGET) -p . && ant debug
|
||||||
@ -79,6 +79,8 @@ clean_Android_dec:
|
|||||||
clean_Android_enc:
|
clean_Android_enc:
|
||||||
-cd ./codec/build/android/enc && $(NDKROOT)/ndk-build APP_ABI=$(APP_ABI) clean && ant clean
|
-cd ./codec/build/android/enc && $(NDKROOT)/ndk-build APP_ABI=$(APP_ABI) clean && ant clean
|
||||||
else
|
else
|
||||||
|
all:
|
||||||
|
@:
|
||||||
clean_Android:
|
clean_Android:
|
||||||
@:
|
@:
|
||||||
endif
|
endif
|
||||||
|
@ -1,18 +1,6 @@
|
|||||||
#for x86
|
|
||||||
HAVE_AVX2 := true
|
|
||||||
|
|
||||||
ifneq ($(filter %86 x86_64, $(ARCH)),)
|
ifneq ($(filter %86 x86_64, $(ARCH)),)
|
||||||
include $(SRC_PATH)build/x86-common.mk
|
include $(SRC_PATH)build/platform-x86-common.mk
|
||||||
ifeq ($(USE_ASM), Yes)
|
|
||||||
ifeq ($(HAVE_AVX2), true)
|
|
||||||
CFLAGS += -DHAVE_AVX2
|
|
||||||
CXXFLAGS += -DHAVE_AVX2
|
|
||||||
ASMFLAGS += -DHAVE_AVX2
|
|
||||||
endif
|
endif
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
#for arm
|
|
||||||
ifneq ($(filter-out arm64, $(filter arm%, $(ARCH))),)
|
ifneq ($(filter-out arm64, $(filter arm%, $(ARCH))),)
|
||||||
ifeq ($(USE_ASM), Yes)
|
ifeq ($(USE_ASM), Yes)
|
||||||
ASM_ARCH = arm
|
ASM_ARCH = arm
|
||||||
@ -20,8 +8,6 @@ ASMFLAGS += -I$(SRC_PATH)codec/common/arm/
|
|||||||
CFLAGS += -DHAVE_NEON
|
CFLAGS += -DHAVE_NEON
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
#for arm64
|
|
||||||
ifneq ($(filter arm64 aarch64, $(ARCH)),)
|
ifneq ($(filter arm64 aarch64, $(ARCH)),)
|
||||||
ifeq ($(USE_ASM), Yes)
|
ifeq ($(USE_ASM), Yes)
|
||||||
ASM_ARCH = arm64
|
ASM_ARCH = arm64
|
@ -1,14 +0,0 @@
|
|||||||
include $(SRC_PATH)build/arch.mk
|
|
||||||
SHAREDLIBSUFFIX = so
|
|
||||||
SHAREDLIBSUFFIXVER=$(SHAREDLIBSUFFIX).$(SHAREDLIBVERSION)
|
|
||||||
SHLDFLAGS = -Wl,-soname,$(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIXVER)
|
|
||||||
CFLAGS += -fPIC
|
|
||||||
LDFLAGS += -lpthread
|
|
||||||
ifeq ($(ASM_ARCH), x86)
|
|
||||||
ifeq ($(ARCH), x86_64)
|
|
||||||
ASMFLAGS += -f elf64
|
|
||||||
else
|
|
||||||
ASMFLAGS += -f elf
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
@ -1,16 +1,11 @@
|
|||||||
include $(SRC_PATH)build/arch.mk
|
include $(SRC_PATH)build/platform-arch.mk
|
||||||
SHAREDLIB_DIR = $(PREFIX)/lib
|
|
||||||
SHAREDLIBSUFFIX = dylib
|
SHAREDLIBSUFFIX = dylib
|
||||||
SHAREDLIBSUFFIXVER=$(SHAREDLIBVERSION).$(SHAREDLIBSUFFIX)
|
|
||||||
SHLDFLAGS = -dynamiclib -twolevel_namespace -undefined dynamic_lookup \
|
|
||||||
-fno-common -headerpad_max_install_names -install_name \
|
|
||||||
$(SHAREDLIB_DIR)/$(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIXVER)
|
|
||||||
SHARED = -dynamiclib
|
SHARED = -dynamiclib
|
||||||
CFLAGS += -Wall -fPIC -MMD -MP
|
CFLAGS += -Wall -fPIC -MMD -MP
|
||||||
LDFLAGS += -lpthread
|
LDFLAGS += -lpthread
|
||||||
ifeq ($(ASM_ARCH), x86)
|
ifeq ($(ASM_ARCH), x86)
|
||||||
ASMFLAGS += -DPREFIX
|
ASMFLAGS += -DPREFIX
|
||||||
ifeq ($(ARCH), x86_64)
|
ifeq ($(ENABLE64BIT), Yes)
|
||||||
ASMFLAGS += -f macho64
|
ASMFLAGS += -f macho64
|
||||||
else
|
else
|
||||||
ASMFLAGS += -f macho
|
ASMFLAGS += -f macho
|
||||||
|
12
build/platform-freebsd.mk
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
include $(SRC_PATH)build/platform-arch.mk
|
||||||
|
SHAREDLIBSUFFIX = so
|
||||||
|
CFLAGS += -fPIC
|
||||||
|
LDFLAGS += -lpthread
|
||||||
|
ifeq ($(ASM_ARCH), x86)
|
||||||
|
ifeq ($(ENABLE64BIT), Yes)
|
||||||
|
ASMFLAGS += -f elf64
|
||||||
|
else
|
||||||
|
ASMFLAGS += -f elf
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
@ -12,6 +12,6 @@ SDK_MIN = 5.1
|
|||||||
|
|
||||||
XCODE=$(shell xcode-select -p)
|
XCODE=$(shell xcode-select -p)
|
||||||
SDKROOT = $(XCODE)/Platforms/$(SDKTYPE).platform/Developer/SDKs/$(SDKTYPE)$(SDK).sdk
|
SDKROOT = $(XCODE)/Platforms/$(SDKTYPE).platform/Developer/SDKs/$(SDKTYPE)$(SDK).sdk
|
||||||
CFLAGS += -arch $(ARCH) -isysroot $(SDKROOT) -miphoneos-version-min=$(SDK_MIN) -DAPPLE_IOS -fembed-bitcode
|
CFLAGS += -arch $(ARCH) -isysroot $(SDKROOT) -miphoneos-version-min=$(SDK_MIN) -DAPPLE_IOS
|
||||||
LDFLAGS += -arch $(ARCH) -isysroot $(SDKROOT) -miphoneos-version-min=$(SDK_MIN)
|
LDFLAGS += -arch $(ARCH) -isysroot $(SDKROOT) -miphoneos-version-min=$(SDK_MIN)
|
||||||
|
|
||||||
|
@ -1,12 +1,9 @@
|
|||||||
include $(SRC_PATH)build/arch.mk
|
include $(SRC_PATH)build/platform-arch.mk
|
||||||
SHAREDLIBSUFFIX = so
|
SHAREDLIBSUFFIX = so
|
||||||
SHAREDLIBSUFFIXVER=$(SHAREDLIBSUFFIX).$(SHAREDLIBVERSION)
|
|
||||||
SHLDFLAGS = -Wl,-soname,$(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIXVER)
|
|
||||||
CFLAGS += -Wall -fno-strict-aliasing -fPIC -MMD -MP
|
CFLAGS += -Wall -fno-strict-aliasing -fPIC -MMD -MP
|
||||||
LDFLAGS += -lpthread
|
LDFLAGS += -lpthread
|
||||||
AR_OPTS = crD $@
|
|
||||||
ifeq ($(ASM_ARCH), x86)
|
ifeq ($(ASM_ARCH), x86)
|
||||||
ifeq ($(ARCH), x86_64)
|
ifeq ($(ENABLE64BIT), Yes)
|
||||||
ASMFLAGS += -f elf64
|
ASMFLAGS += -f elf64
|
||||||
else
|
else
|
||||||
ASMFLAGS += -f elf
|
ASMFLAGS += -f elf
|
||||||
@ -16,7 +13,3 @@ ifeq ($(ASM_ARCH), arm)
|
|||||||
ASMFLAGS += -march=armv7-a -mfpu=neon
|
ASMFLAGS += -march=armv7-a -mfpu=neon
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(CXX), clang++)
|
|
||||||
CXXFLAGS += -Wc++11-compat-reserved-user-defined-literal
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
@ -1,12 +1,8 @@
|
|||||||
include $(SRC_PATH)build/x86-common.mk
|
include $(SRC_PATH)build/platform-x86-common.mk
|
||||||
SHAREDLIB_DIR = $(PREFIX)/bin
|
|
||||||
SHAREDLIBSUFFIX = dll
|
SHAREDLIBSUFFIX = dll
|
||||||
SHAREDLIBSUFFIXVER=$(SHAREDLIBSUFFIX)
|
|
||||||
EXTRA_LIBRARY=$(LIBPREFIX)$(PROJECT_NAME).dll.a
|
|
||||||
SHLDFLAGS = -Wl,--out-implib,$(EXTRA_LIBRARY)
|
|
||||||
CFLAGS += -MMD -MP
|
CFLAGS += -MMD -MP
|
||||||
LDFLAGS +=
|
LDFLAGS +=
|
||||||
ifeq ($(ARCH), x86_64)
|
ifeq ($(ENABLE64BIT), Yes)
|
||||||
ASMFLAGS += -f win64
|
ASMFLAGS += -f win64
|
||||||
ASMFLAGS_PLATFORM = -DWIN64
|
ASMFLAGS_PLATFORM = -DWIN64
|
||||||
CC = x86_64-w64-mingw32-gcc
|
CC = x86_64-w64-mingw32-gcc
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
include $(SRC_PATH)build/msvc-app.mk
|
|
||||||
CFLAGS += -DWINAPI_FAMILY=WINAPI_FAMILY_APP
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
include $(SRC_PATH)build/arch.mk
|
include $(SRC_PATH)build/platform-arch.mk
|
||||||
ifeq ($(ASM_ARCH), x86)
|
ifeq ($(ASM_ARCH), x86)
|
||||||
ifeq ($(ARCH), x86_64)
|
ifeq ($(ENABLE64BIT), Yes)
|
||||||
ASMFLAGS += -f win64
|
ASMFLAGS += -f win64
|
||||||
ASMFLAGS_PLATFORM = -DWIN64
|
ASMFLAGS_PLATFORM = -DWIN64
|
||||||
else
|
else
|
||||||
@ -10,7 +10,7 @@ else
|
|||||||
endif
|
endif
|
||||||
ifeq ($(ASM_ARCH), arm)
|
ifeq ($(ASM_ARCH), arm)
|
||||||
CCAS = gas-preprocessor.pl -as-type armasm -force-thumb -- armasm
|
CCAS = gas-preprocessor.pl -as-type armasm -force-thumb -- armasm
|
||||||
CCASFLAGS = -nologo -DHAVE_NEON -ignore 4509
|
CCASFLAGS = -nologo -DHAVE_NEON
|
||||||
endif
|
endif
|
||||||
|
|
||||||
CC=cl
|
CC=cl
|
||||||
@ -35,15 +35,7 @@ LIBSUFFIX=lib
|
|||||||
LIBPREFIX=
|
LIBPREFIX=
|
||||||
EXEEXT=.exe
|
EXEEXT=.exe
|
||||||
OBJ=obj
|
OBJ=obj
|
||||||
SHAREDLIB_DIR = $(PREFIX)/bin
|
|
||||||
SHAREDLIBSUFFIX=dll
|
SHAREDLIBSUFFIX=dll
|
||||||
SHAREDLIBSUFFIXVER=$(SHAREDLIBSUFFIX)
|
|
||||||
SHARED=-LD
|
SHARED=-LD
|
||||||
|
SHLDFLAGS=-link -def:openh264.def -implib:$(PROJECT_NAME)_dll.lib
|
||||||
EXTRA_LIBRARY=$(PROJECT_NAME)_dll.lib
|
EXTRA_LIBRARY=$(PROJECT_NAME)_dll.lib
|
||||||
LDFLAGS += -link
|
|
||||||
SHLDFLAGS=-debug -map -opt:ref -opt:icf -def:$(SRC_PATH)openh264.def -implib:$(EXTRA_LIBRARY)
|
|
||||||
STATIC_LDFLAGS=
|
|
||||||
CODEC_UNITTEST_CFLAGS=-D_CRT_SECURE_NO_WARNINGS
|
|
||||||
|
|
||||||
%.res: %.rc
|
|
||||||
$(QUIET_RC)rc -fo $@ $<
|
|
@ -1,6 +1,10 @@
|
|||||||
ARCH = arm
|
ARCH = arm
|
||||||
include $(SRC_PATH)build/msvc-app.mk
|
include $(SRC_PATH)build/platform-msvc-common.mk
|
||||||
CFLAGS += -DWINAPI_FAMILY=WINAPI_FAMILY_PHONE_APP -DWINDOWS_PHONE
|
CFLAGS_OPT += -MD
|
||||||
LDFLAGS += -nodefaultlib:kernel32.lib -nodefaultlib:ole32.lib WindowsPhoneCore.lib
|
CFLAGS_DEBUG += -MDd
|
||||||
UTSHLDFLAGS = -def:$(SRC_PATH)ut.def
|
CFLAGS += -DWINAPI_FAMILY=WINAPI_FAMILY_PHONE_APP
|
||||||
|
CXXFLAGS +=
|
||||||
|
LDFLAGS +=
|
||||||
|
|
||||||
|
codec/common/src/WelsThreadLib.$(OBJ): CXXFLAGS += -ZW
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
include $(SRC_PATH)build/msvc-common.mk
|
include $(SRC_PATH)build/platform-msvc-common.mk
|
||||||
LDFLAGS += user32.lib
|
LDFLAGS += user32.lib
|
||||||
CFLAGS_OPT += -MT
|
CFLAGS_OPT += -MT
|
||||||
CFLAGS_DEBUG += -MTd -Gm
|
CFLAGS_DEBUG += -MTd -Gm
|
||||||
|
|
||||||
$(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIXVER): openh264.res
|
|
||||||
|
@ -1,14 +1,12 @@
|
|||||||
CFLAGS_M32=-m32
|
CFLAGS_M32=-m32
|
||||||
CFLAGS_M64=-m64
|
CFLAGS_M64=-m64
|
||||||
ASM_INCLUDES = -I$(SRC_PATH)codec/common/x86/
|
ASM_INCLUDES = -I$(SRC_PATH)codec/common/x86/
|
||||||
ifneq ($(ENABLE64BIT),)
|
ifeq (, $(ENABLE64BIT))
|
||||||
ifeq ($(ENABLE64BIT), Yes)
|
|
||||||
ARCH = x86_64
|
|
||||||
else
|
|
||||||
ARCH = x86
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
ifeq ($(ARCH), x86_64)
|
ifeq ($(ARCH), x86_64)
|
||||||
|
ENABLE64BIT=Yes
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
ifeq ($(ENABLE64BIT), Yes)
|
||||||
CFLAGS += $(CFLAGS_M64)
|
CFLAGS += $(CFLAGS_M64)
|
||||||
LDFLAGS += $(CFLAGS_M64)
|
LDFLAGS += $(CFLAGS_M64)
|
||||||
ASMFLAGS_PLATFORM = -DUNIX64
|
ASMFLAGS_PLATFORM = -DUNIX64
|
||||||
@ -19,9 +17,6 @@ ASMFLAGS_PLATFORM = -DX86_32
|
|||||||
endif
|
endif
|
||||||
ifeq ($(USE_ASM),Yes)
|
ifeq ($(USE_ASM),Yes)
|
||||||
CFLAGS += -DX86_ASM
|
CFLAGS += -DX86_ASM
|
||||||
ifneq ($(ARCH), x86_64)
|
|
||||||
CFLAGS += -DX86_32_ASM
|
|
||||||
endif
|
|
||||||
ASM_ARCH = x86
|
ASM_ARCH = x86
|
||||||
endif
|
endif
|
||||||
ASM = nasm
|
ASM = nasm
|
@ -1,6 +1,4 @@
|
|||||||
/*!
|
/*!
|
||||||
*@page License
|
|
||||||
*
|
|
||||||
* \copy
|
* \copy
|
||||||
* Copyright (c) 2013, Cisco Systems
|
* Copyright (c) 2013, Cisco Systems
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
@ -36,7 +34,7 @@
|
|||||||
#define WELS_VIDEO_CODEC_SVC_API_H__
|
#define WELS_VIDEO_CODEC_SVC_API_H__
|
||||||
|
|
||||||
#ifndef __cplusplus
|
#ifndef __cplusplus
|
||||||
#if defined(_MSC_VER) && (_MSC_VER < 1800)
|
#ifdef _MSC_VER
|
||||||
typedef unsigned char bool;
|
typedef unsigned char bool;
|
||||||
#else
|
#else
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
@ -52,383 +50,65 @@ typedef unsigned char bool;
|
|||||||
#define EXTAPI
|
#define EXTAPI
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
|
||||||
* @file codec_api.h
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @page Overview
|
|
||||||
* * This page is for openh264 codec API usage.
|
|
||||||
* * For how to use the encoder,please refer to page UsageExampleForEncoder
|
|
||||||
* * For how to use the decoder,please refer to page UsageExampleForDecoder
|
|
||||||
* * For more detail about ISVEncoder,please refer to page ISVCEnoder
|
|
||||||
* * For more detail about ISVDecoder,please refer to page ISVCDecoder
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @page DecoderUsageExample
|
|
||||||
*
|
|
||||||
* @brief
|
|
||||||
* * An example for using the decoder for Decoding only or Parsing only
|
|
||||||
*
|
|
||||||
* Step 1:decoder declaration
|
|
||||||
* @code
|
|
||||||
*
|
|
||||||
* //decoder declaration
|
|
||||||
* ISVCDecoder *pSvcDecoder;
|
|
||||||
* //input: encoded bitstream start position; should include start code prefix
|
|
||||||
* unsigned char *pBuf =...;
|
|
||||||
* //input: encoded bit stream length; should include the size of start code prefix
|
|
||||||
* int iSize =...;
|
|
||||||
* //output: [0~2] for Y,U,V buffer for Decoding only
|
|
||||||
* unsigned char *pData[3] =...;
|
|
||||||
* //in-out: for Decoding only: declare and initialize the output buffer info, this should never co-exist with Parsing only
|
|
||||||
* SBufferInfo sDstBufInfo;
|
|
||||||
* memset(&sDstBufInfo, 0, sizeof(SBufferInfo));
|
|
||||||
* //in-out: for Parsing only: declare and initialize the output bitstream buffer info for parse only, this should never co-exist with Decoding only
|
|
||||||
* SParserBsInfo sDstParseInfo;
|
|
||||||
* memset(&sDstParseInfo, 0, sizeof(SParserBsInfo));
|
|
||||||
* sDstParseInfo.pDstBuff = new unsigned char[PARSE_SIZE]; //In Parsing only, allocate enough buffer to save transcoded bitstream for a frame
|
|
||||||
*
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* Step 2:decoder creation
|
|
||||||
* @code
|
|
||||||
* CreateDecoder(pSvcDecoder);
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* Step 3:declare required parameter, used to differentiate Decoding only and Parsing only
|
|
||||||
* @code
|
|
||||||
* SDecodingParam sDecParam = {0};
|
|
||||||
* sDecParam.sVideoProperty.eVideoBsType = VIDEO_BITSTREAM_AVC;
|
|
||||||
* //for Parsing only, the assignment is mandatory
|
|
||||||
* sDecParam.bParseOnly = true;
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* Step 4:initialize the parameter and decoder context, allocate memory
|
|
||||||
* @code
|
|
||||||
* Initialize(&sDecParam);
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* Step 5:do actual decoding process in slice level;
|
|
||||||
* this can be done in a loop until data ends
|
|
||||||
* @code
|
|
||||||
* //for Decoding only
|
|
||||||
* iRet = DecodeFrameNoDelay(pBuf, iSize, pData, &sDstBufInfo);
|
|
||||||
* //or
|
|
||||||
* iRet = DecodeFrame2(pBuf, iSize, pData, &sDstBufInfo);
|
|
||||||
* //for Parsing only
|
|
||||||
* iRet = DecodeParser(pBuf, iSize, &sDstParseInfo);
|
|
||||||
* //decode failed
|
|
||||||
* If (iRet != 0){
|
|
||||||
* RequestIDR or something like that.
|
|
||||||
* }
|
|
||||||
* //for Decoding only, pData can be used for render.
|
|
||||||
* if (sDstBufInfo.iBufferStatus==1){
|
|
||||||
* output pData[0], pData[1], pData[2];
|
|
||||||
* }
|
|
||||||
* //for Parsing only, sDstParseInfo can be used for, e.g., HW decoding
|
|
||||||
* if (sDstBufInfo.iNalNum > 0){
|
|
||||||
* Hardware decoding sDstParseInfo;
|
|
||||||
* }
|
|
||||||
* //no-delay decoding can be realized by directly calling DecodeFrameNoDelay(), which is the recommended usage.
|
|
||||||
* //no-delay decoding can also be realized by directly calling DecodeFrame2() again with NULL input, as in the following. In this case, decoder would immediately reconstruct the input data. This can also be used similarly for Parsing only. Consequent decoding error and output indication should also be considered as above.
|
|
||||||
* iRet = DecodeFrame2(NULL, 0, pData, &sDstBufInfo);
|
|
||||||
* judge iRet, sDstBufInfo.iBufferStatus ...
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* Step 6:uninitialize the decoder and memory free
|
|
||||||
* @code
|
|
||||||
* Uninitialize();
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* Step 7:destroy the decoder
|
|
||||||
* @code
|
|
||||||
* DestroyDecoder();
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @page EncoderUsageExample1
|
|
||||||
*
|
|
||||||
* @brief
|
|
||||||
* * An example for using encoder with basic parameter
|
|
||||||
*
|
|
||||||
* Step1:setup encoder
|
|
||||||
* @code
|
|
||||||
* int rv = WelsCreateSVCEncoder (&encoder_);
|
|
||||||
* ASSERT_EQ (0, rv);
|
|
||||||
* ASSERT_TRUE (encoder_ != NULL);
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* Step2:initilize with basic parameter
|
|
||||||
* @code
|
|
||||||
* SEncParamBase param;
|
|
||||||
* memset (¶m, 0, sizeof (SEncParamBase));
|
|
||||||
* param.iUsageType = usageType;
|
|
||||||
* param.fMaxFrameRate = frameRate;
|
|
||||||
* param.iPicWidth = width;
|
|
||||||
* param.iPicHeight = height;
|
|
||||||
* param.iTargetBitrate = 5000000;
|
|
||||||
* encoder_->Initialize (¶m);
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* Step3:set option, set option during encoding process
|
|
||||||
* @code
|
|
||||||
* encoder_->SetOption (ENCODER_OPTION_TRACE_LEVEL, &g_LevelSetting);
|
|
||||||
* int videoFormat = videoFormatI420;
|
|
||||||
* encoder_->SetOption (ENCODER_OPTION_DATAFORMAT, &videoFormat);
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* Step4: encode and store ouput bistream
|
|
||||||
* @code
|
|
||||||
* int frameSize = width * height * 3 / 2;
|
|
||||||
* BufferedData buf;
|
|
||||||
* buf.SetLength (frameSize);
|
|
||||||
* ASSERT_TRUE (buf.Length() == (size_t)frameSize);
|
|
||||||
* SFrameBSInfo info;
|
|
||||||
* memset (&info, 0, sizeof (SFrameBSInfo));
|
|
||||||
* SSourcePicture pic;
|
|
||||||
* memset (&pic, 0, sizeof (SsourcePicture));
|
|
||||||
* pic.iPicWidth = width;
|
|
||||||
* pic.iPicHeight = height;
|
|
||||||
* pic.iColorFormat = videoFormatI420;
|
|
||||||
* pic.iStride[0] = pic.iPicWidth;
|
|
||||||
* pic.iStride[1] = pic.iStride[2] = pic.iPicWidth >> 1;
|
|
||||||
* pic.pData[0] = buf.data();
|
|
||||||
* pic.pData[1] = pic.pData[0] + width * height;
|
|
||||||
* pic.pData[2] = pic.pData[1] + (width * height >> 2);
|
|
||||||
* for(int num = 0;num<total_num;num++) {
|
|
||||||
* //prepare input data
|
|
||||||
* rv = encoder_->EncodeFrame (&pic, &info);
|
|
||||||
* ASSERT_TRUE (rv == cmResultSuccess);
|
|
||||||
* if (info.eFrameType != videoFrameTypeSkip && cbk != NULL) {
|
|
||||||
* //output bitstream
|
|
||||||
* }
|
|
||||||
* }
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* Step5:teardown encoder
|
|
||||||
* @code
|
|
||||||
* if (encoder_) {
|
|
||||||
* encoder_->Uninitialize();
|
|
||||||
* WelsDestroySVCEncoder (encoder_);
|
|
||||||
* }
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @page EncoderUsageExample2
|
|
||||||
*
|
|
||||||
* @brief
|
|
||||||
* * An example for using the encoder with extension parameter.
|
|
||||||
* * The same operation on Step 1,3,4,5 with Example-1
|
|
||||||
*
|
|
||||||
* Step 2:initialize with extension parameter
|
|
||||||
* @code
|
|
||||||
* SEncParamExt param;
|
|
||||||
* encoder->GetDefaultParams (¶m);
|
|
||||||
* param.iUsageType = usageType;
|
|
||||||
* param.fMaxFrameRate = frameRate;
|
|
||||||
* param.iPicWidth = width;
|
|
||||||
* param.iPicHeight = height;
|
|
||||||
* param.iTargetBitrate = 5000000;
|
|
||||||
* param.bEnableDenoise = denoise;
|
|
||||||
* param.iSpatialLayerNum = layers;
|
|
||||||
* //SM_DYN_SLICE don't support multi-thread now
|
|
||||||
* if (sliceMode != SM_SINGLE_SLICE && sliceMode != SM_DYN_SLICE)
|
|
||||||
* param.iMultipleThreadIdc = 2;
|
|
||||||
*
|
|
||||||
* for (int i = 0; i < param.iSpatialLayerNum; i++) {
|
|
||||||
* param.sSpatialLayers[i].iVideoWidth = width >> (param.iSpatialLayerNum - 1 - i);
|
|
||||||
* param.sSpatialLayers[i].iVideoHeight = height >> (param.iSpatialLayerNum - 1 - i);
|
|
||||||
* param.sSpatialLayers[i].fFrameRate = frameRate;
|
|
||||||
* param.sSpatialLayers[i].iSpatialBitrate = param.iTargetBitrate;
|
|
||||||
*
|
|
||||||
* param.sSpatialLayers[i].sSliceCfg.uiSliceMode = sliceMode;
|
|
||||||
* if (sliceMode == SM_DYN_SLICE) {
|
|
||||||
* param.sSpatialLayers[i].sSliceCfg.sSliceArgument.uiSliceSizeConstraint = 600;
|
|
||||||
* param.uiMaxNalSize = 1500;
|
|
||||||
* }
|
|
||||||
* }
|
|
||||||
* param.iTargetBitrate *= param.iSpatialLayerNum;
|
|
||||||
* encoder_->InitializeExt (¶m);
|
|
||||||
* int videoFormat = videoFormatI420;
|
|
||||||
* encoder_->SetOption (ENCODER_OPTION_DATAFORMAT, &videoFormat);
|
|
||||||
*
|
|
||||||
* @endcode
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
/**
|
|
||||||
* @brief Endocder definition
|
|
||||||
*/
|
|
||||||
class ISVCEncoder {
|
class ISVCEncoder {
|
||||||
public:
|
public:
|
||||||
/**
|
/*
|
||||||
* @brief Initialize the encoder
|
* return: CM_RETURN: 0 - success; otherwise - failed;
|
||||||
* @param pParam basic encoder parameter
|
*/
|
||||||
* @return CM_RETURN: 0 - success; otherwise - failed;
|
|
||||||
*/
|
|
||||||
virtual int EXTAPI Initialize (const SEncParamBase* pParam) = 0;
|
virtual int EXTAPI Initialize (const SEncParamBase* pParam) = 0;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Initilaize encoder by using extension parameters.
|
|
||||||
* @param pParam extension parameter for encoder
|
|
||||||
* @return CM_RETURN: 0 - success; otherwise - failed;
|
|
||||||
*/
|
|
||||||
virtual int EXTAPI InitializeExt (const SEncParamExt* pParam) = 0;
|
virtual int EXTAPI InitializeExt (const SEncParamExt* pParam) = 0;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Get the default extension parameters.
|
|
||||||
* If you want to change some parameters of encoder, firstly you need to get the default encoding parameters,
|
|
||||||
* after that you can change part of parameters you want to.
|
|
||||||
* @param pParam extension parameter for encoder
|
|
||||||
* @return CM_RETURN: 0 - success; otherwise - failed;
|
|
||||||
* */
|
|
||||||
virtual int EXTAPI GetDefaultParams (SEncParamExt* pParam) = 0;
|
virtual int EXTAPI GetDefaultParams (SEncParamExt* pParam) = 0;
|
||||||
/// uninitialize the encoder
|
|
||||||
virtual int EXTAPI Uninitialize() = 0;
|
virtual int EXTAPI Uninitialize() = 0;
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* @brief Encode one frame
|
* return: 0 - success; otherwise -failed;
|
||||||
* @param kpSrcPic the pointer to the source luminance plane
|
*/
|
||||||
* chrominance data:
|
|
||||||
* CbData = kpSrc + m_iMaxPicWidth * m_iMaxPicHeight;
|
|
||||||
* CrData = CbData + (m_iMaxPicWidth * m_iMaxPicHeight)/4;
|
|
||||||
* the application calling this interface needs to ensure the data validation between the location
|
|
||||||
* @param pBsInfo output bit stream
|
|
||||||
* @return 0 - success; otherwise -failed;
|
|
||||||
*/
|
|
||||||
virtual int EXTAPI EncodeFrame (const SSourcePicture* kpSrcPic, SFrameBSInfo* pBsInfo) = 0;
|
virtual int EXTAPI EncodeFrame (const SSourcePicture* kpSrcPic, SFrameBSInfo* pBsInfo) = 0;
|
||||||
|
/*
|
||||||
/**
|
* return: 0 - success; otherwise - failed;
|
||||||
* @brief Encode the parameters from output bit stream
|
*/
|
||||||
* @param pBsInfo output bit stream
|
|
||||||
* @return 0 - success; otherwise - failed;
|
|
||||||
*/
|
|
||||||
virtual int EXTAPI EncodeParameterSets (SFrameBSInfo* pBsInfo) = 0;
|
virtual int EXTAPI EncodeParameterSets (SFrameBSInfo* pBsInfo) = 0;
|
||||||
|
/*
|
||||||
/**
|
* return: 0 - success; otherwise - failed;
|
||||||
* @brief Force encoder to encoder frame as IDR if bIDR set as true
|
*/
|
||||||
* @param bIDR true: force encoder to encode frame as IDR frame;false, return 1 and nothing to do
|
|
||||||
* @return 0 - success; otherwise - failed;
|
|
||||||
*/
|
|
||||||
virtual int EXTAPI ForceIntraFrame (bool bIDR) = 0;
|
virtual int EXTAPI ForceIntraFrame (bool bIDR) = 0;
|
||||||
|
|
||||||
/**
|
/************************************************************************
|
||||||
* @brief Set option for encoder, detail option type, please refer to enumurate ENCODER_OPTION.
|
* InDataFormat, IDRInterval, SVC Encode Param, Frame Rate, Bitrate,..
|
||||||
* @param pOption option for encoder such as InDataFormat, IDRInterval, SVC Encode Param, Frame Rate, Bitrate,...
|
************************************************************************/
|
||||||
* @return CM_RETURN: 0 - success; otherwise - failed;
|
/*
|
||||||
*/
|
* return: CM_RETURN: 0 - success; otherwise - failed;
|
||||||
|
*/
|
||||||
virtual int EXTAPI SetOption (ENCODER_OPTION eOptionId, void* pOption) = 0;
|
virtual int EXTAPI SetOption (ENCODER_OPTION eOptionId, void* pOption) = 0;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Set option for encoder, detail option type, please refer to enumurate ENCODER_OPTION.
|
|
||||||
* @param pOption option for encoder such as InDataFormat, IDRInterval, SVC Encode Param, Frame Rate, Bitrate,...
|
|
||||||
* @return CM_RETURN: 0 - success; otherwise - failed;
|
|
||||||
*/
|
|
||||||
virtual int EXTAPI GetOption (ENCODER_OPTION eOptionId, void* pOption) = 0;
|
virtual int EXTAPI GetOption (ENCODER_OPTION eOptionId, void* pOption) = 0;
|
||||||
virtual ~ISVCEncoder() {}
|
virtual ~ISVCEncoder() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Decoder definition
|
|
||||||
*/
|
|
||||||
class ISVCDecoder {
|
class ISVCDecoder {
|
||||||
public:
|
public:
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Initilaize decoder
|
|
||||||
* @param pParam parameter for decoder
|
|
||||||
* @return 0 - success; otherwise - failed;
|
|
||||||
*/
|
|
||||||
virtual long EXTAPI Initialize (const SDecodingParam* pParam) = 0;
|
virtual long EXTAPI Initialize (const SDecodingParam* pParam) = 0;
|
||||||
|
|
||||||
/// Uninitialize the decoder
|
|
||||||
virtual long EXTAPI Uninitialize() = 0;
|
virtual long EXTAPI Uninitialize() = 0;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Decode one frame
|
|
||||||
* @param pSrc the h264 stream to be decoded
|
|
||||||
* @param iSrcLen the length of h264 stream
|
|
||||||
* @param ppDst buffer pointer of decoded data (YUV)
|
|
||||||
* @param pStride output stride
|
|
||||||
* @param iWidth output width
|
|
||||||
* @param iHeight output height
|
|
||||||
* @return 0 - success; otherwise -failed;
|
|
||||||
*/
|
|
||||||
virtual DECODING_STATE EXTAPI DecodeFrame (const unsigned char* pSrc,
|
virtual DECODING_STATE EXTAPI DecodeFrame (const unsigned char* pSrc,
|
||||||
const int iSrcLen,
|
const int iSrcLen,
|
||||||
unsigned char** ppDst,
|
unsigned char** ppDst,
|
||||||
int* pStride,
|
int* pStride,
|
||||||
int& iWidth,
|
int& iWidth,
|
||||||
int& iHeight) = 0;
|
int& iHeight) = 0;
|
||||||
|
/*
|
||||||
/**
|
* return: 0 - success; otherwise -failed;
|
||||||
* @brief For slice level DecodeFrameNoDelay() (4 parameters input),
|
*/
|
||||||
* whatever the function return value is, the output data
|
|
||||||
* of I420 format will only be available when pDstInfo->iBufferStatus == 1,.
|
|
||||||
* This function will parse and reconstruct the input frame immediately if it is complete
|
|
||||||
* It is recommended as the main decoding function for H.264/AVC format input
|
|
||||||
* @param pSrc the h264 stream to be decoded
|
|
||||||
* @param iSrcLen the length of h264 stream
|
|
||||||
* @param ppDst buffer pointer of decoded data (YUV)
|
|
||||||
* @param pDstInfo information provided to API(width, height, etc.)
|
|
||||||
* @return 0 - success; otherwise -failed;
|
|
||||||
*/
|
|
||||||
virtual DECODING_STATE EXTAPI DecodeFrameNoDelay (const unsigned char* pSrc,
|
|
||||||
const int iSrcLen,
|
|
||||||
unsigned char** ppDst,
|
|
||||||
SBufferInfo* pDstInfo) = 0;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief For slice level DecodeFrame2() (4 parameters input),
|
|
||||||
* whatever the function return value is, the output data
|
|
||||||
* of I420 format will only be available when pDstInfo->iBufferStatus == 1,.
|
|
||||||
* (e.g., in multi-slice cases, only when the whole picture
|
|
||||||
* is completely reconstructed, this variable would be set equal to 1.)
|
|
||||||
* @param pSrc the h264 stream to be decoded
|
|
||||||
* @param iSrcLen the length of h264 stream
|
|
||||||
* @param ppDst buffer pointer of decoded data (YUV)
|
|
||||||
* @param pDstInfo information provided to API(width, height, etc.)
|
|
||||||
* @return 0 - success; otherwise -failed;
|
|
||||||
*/
|
|
||||||
virtual DECODING_STATE EXTAPI DecodeFrame2 (const unsigned char* pSrc,
|
virtual DECODING_STATE EXTAPI DecodeFrame2 (const unsigned char* pSrc,
|
||||||
const int iSrcLen,
|
const int iSrcLen,
|
||||||
unsigned char** ppDst,
|
unsigned char** ppDst,
|
||||||
SBufferInfo* pDstInfo) = 0;
|
SBufferInfo* pDstInfo) = 0;
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* @brief This function parse input bitstream only, and rewrite possible SVC syntax to AVC syntax
|
* this API does not work for now!! This is for future use to support non-I420 color format output.
|
||||||
* @param pSrc the h264 stream to be decoded
|
*/
|
||||||
* @param iSrcLen the length of h264 stream
|
|
||||||
* @param pDstInfo bit stream info
|
|
||||||
* @return 0 - success; otherwise -failed;
|
|
||||||
*/
|
|
||||||
virtual DECODING_STATE EXTAPI DecodeParser (const unsigned char* pSrc,
|
|
||||||
const int iSrcLen,
|
|
||||||
SParserBsInfo* pDstInfo) = 0;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This API does not work for now!! This is for future use to support non-I420 color format output.
|
|
||||||
* @param pSrc the h264 stream to be decoded
|
|
||||||
* @param iSrcLen the length of h264 stream
|
|
||||||
* @param pDst buffer pointer of decoded data (YUV)
|
|
||||||
* @param iDstStride output stride
|
|
||||||
* @param iDstLen bit stream info
|
|
||||||
* @param iWidth output width
|
|
||||||
* @param iHeight output height
|
|
||||||
* @param iColorFormat output color format
|
|
||||||
* @return to do ...
|
|
||||||
*/
|
|
||||||
virtual DECODING_STATE EXTAPI DecodeFrameEx (const unsigned char* pSrc,
|
virtual DECODING_STATE EXTAPI DecodeFrameEx (const unsigned char* pSrc,
|
||||||
const int iSrcLen,
|
const int iSrcLen,
|
||||||
unsigned char* pDst,
|
unsigned char* pDst,
|
||||||
@ -438,18 +118,10 @@ class ISVCDecoder {
|
|||||||
int& iHeight,
|
int& iHeight,
|
||||||
int& iColorFormat) = 0;
|
int& iColorFormat) = 0;
|
||||||
|
|
||||||
/**
|
/*************************************************************************
|
||||||
* @brief Set option for decoder, detail option type, please refer to enumurate DECODER_OPTION.
|
* OutDataFormat, Eos Flag, EC method, ...
|
||||||
* @param pOption option for decoder such as OutDataFormat, Eos Flag, EC method, ...
|
*************************************************************************/
|
||||||
* @return CM_RETURN: 0 - success; otherwise - failed;
|
|
||||||
*/
|
|
||||||
virtual long EXTAPI SetOption (DECODER_OPTION eOptionId, void* pOption) = 0;
|
virtual long EXTAPI SetOption (DECODER_OPTION eOptionId, void* pOption) = 0;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Get option for decoder, detail option type, please refer to enumurate DECODER_OPTION.
|
|
||||||
* @param pOption option for decoder such as OutDataFormat, Eos Flag, EC method, ...
|
|
||||||
* @return CM_RETURN: 0 - success; otherwise - failed;
|
|
||||||
*/
|
|
||||||
virtual long EXTAPI GetOption (DECODER_OPTION eOptionId, void* pOption) = 0;
|
virtual long EXTAPI GetOption (DECODER_OPTION eOptionId, void* pOption) = 0;
|
||||||
virtual ~ISVCDecoder() {}
|
virtual ~ISVCDecoder() {}
|
||||||
};
|
};
|
||||||
@ -492,20 +164,11 @@ DECODING_STATE (*DecodeFrame) (ISVCDecoder*, const unsigned char* pSrc,
|
|||||||
int* iWidth,
|
int* iWidth,
|
||||||
int* iHeight);
|
int* iHeight);
|
||||||
|
|
||||||
DECODING_STATE (*DecodeFrameNoDelay) (ISVCDecoder*, const unsigned char* pSrc,
|
|
||||||
const int iSrcLen,
|
|
||||||
unsigned char** ppDst,
|
|
||||||
SBufferInfo* pDstInfo);
|
|
||||||
|
|
||||||
DECODING_STATE (*DecodeFrame2) (ISVCDecoder*, const unsigned char* pSrc,
|
DECODING_STATE (*DecodeFrame2) (ISVCDecoder*, const unsigned char* pSrc,
|
||||||
const int iSrcLen,
|
const int iSrcLen,
|
||||||
unsigned char** ppDst,
|
unsigned char** ppDst,
|
||||||
SBufferInfo* pDstInfo);
|
SBufferInfo* pDstInfo);
|
||||||
|
|
||||||
DECODING_STATE (*DecodeParser) (ISVCDecoder*, const unsigned char* pSrc,
|
|
||||||
const int iSrcLen,
|
|
||||||
SParserBsInfo* pDstInfo);
|
|
||||||
|
|
||||||
DECODING_STATE (*DecodeFrameEx) (ISVCDecoder*, const unsigned char* pSrc,
|
DECODING_STATE (*DecodeFrameEx) (ISVCDecoder*, const unsigned char* pSrc,
|
||||||
const int iSrcLen,
|
const int iSrcLen,
|
||||||
unsigned char* pDst,
|
unsigned char* pDst,
|
||||||
@ -522,53 +185,13 @@ long (*GetOption) (ISVCDecoder*, DECODER_OPTION eOptionId, void* pOption);
|
|||||||
|
|
||||||
typedef void (*WelsTraceCallback) (void* ctx, int level, const char* string);
|
typedef void (*WelsTraceCallback) (void* ctx, int level, const char* string);
|
||||||
|
|
||||||
/** @brief Create encoder
|
|
||||||
* @param ppEncoder encoder
|
|
||||||
* @return 0 - success; otherwise - failed;
|
|
||||||
*/
|
|
||||||
int WelsCreateSVCEncoder (ISVCEncoder** ppEncoder);
|
int WelsCreateSVCEncoder (ISVCEncoder** ppEncoder);
|
||||||
|
|
||||||
|
|
||||||
/** @brief Destroy encoder
|
|
||||||
* @param pEncoder encoder
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
void WelsDestroySVCEncoder (ISVCEncoder* pEncoder);
|
void WelsDestroySVCEncoder (ISVCEncoder* pEncoder);
|
||||||
|
|
||||||
|
|
||||||
/** @brief Get the capability of decoder
|
|
||||||
* @param pDecCapability decoder capability
|
|
||||||
* @return 0 - success; otherwise - failed;
|
|
||||||
*/
|
|
||||||
int WelsGetDecoderCapability (SDecoderCapability* pDecCapability);
|
int WelsGetDecoderCapability (SDecoderCapability* pDecCapability);
|
||||||
|
|
||||||
|
|
||||||
/** @brief Create decoder
|
|
||||||
* @param ppDecoder decoder
|
|
||||||
* @return 0 - success; otherwise - failed;
|
|
||||||
*/
|
|
||||||
long WelsCreateDecoder (ISVCDecoder** ppDecoder);
|
long WelsCreateDecoder (ISVCDecoder** ppDecoder);
|
||||||
|
|
||||||
|
|
||||||
/** @brief Destroy decoder
|
|
||||||
* @param pDecoder decoder
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
void WelsDestroyDecoder (ISVCDecoder* pDecoder);
|
void WelsDestroyDecoder (ISVCDecoder* pDecoder);
|
||||||
|
|
||||||
/** @brief Get codec version
|
|
||||||
* Note, old versions of Mingw (GCC < 4.7) are buggy and use an
|
|
||||||
* incorrect/different ABI for calling this function, making it
|
|
||||||
* incompatible with MSVC builds.
|
|
||||||
* @return The linked codec version
|
|
||||||
*/
|
|
||||||
OpenH264Version WelsGetCodecVersion (void);
|
|
||||||
|
|
||||||
/** @brief Get codec version
|
|
||||||
* @param pVersion struct to fill in with the version
|
|
||||||
*/
|
|
||||||
void WelsGetCodecVersionEx (OpenH264Version *pVersion);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -30,262 +30,197 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef WELS_VIDEO_CODEC_APPLICATION_DEFINITION_H__
|
#ifndef WELS_VIDEO_CODEC_APPLICATION_DEFINITION_H__
|
||||||
#define WELS_VIDEO_CODEC_APPLICATION_DEFINITION_H__
|
#define WELS_VIDEO_CODEC_APPLICATION_DEFINITION_H__
|
||||||
/**
|
////////////////Data and /or structures introduced in Cisco OpenH264 application////////////////
|
||||||
* @file codec_app_def.h
|
|
||||||
* @brief Data and /or structures introduced in Cisco OpenH264 application
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "codec_def.h"
|
#include "codec_def.h"
|
||||||
/* Constants */
|
/* Constants */
|
||||||
#define MAX_TEMPORAL_LAYER_NUM 4
|
#define MAX_TEMPORAL_LAYER_NUM 4
|
||||||
#define MAX_SPATIAL_LAYER_NUM 4
|
#define MAX_SPATIAL_LAYER_NUM 4
|
||||||
#define MAX_QUALITY_LAYER_NUM 4
|
#define MAX_QUALITY_LAYER_NUM 4
|
||||||
|
|
||||||
#define MAX_LAYER_NUM_OF_FRAME 128
|
#define MAX_LAYER_NUM_OF_FRAME 128
|
||||||
#define MAX_NAL_UNITS_IN_LAYER 128 ///< predetermined here, adjust it later if need
|
#define MAX_NAL_UNITS_IN_LAYER 128 // predetermined here, adjust it later if need
|
||||||
|
|
||||||
#define MAX_RTP_PAYLOAD_LEN 1000
|
#define MAX_RTP_PAYLOAD_LEN 1000
|
||||||
#define AVERAGE_RTP_PAYLOAD_LEN 800
|
#define AVERAGE_RTP_PAYLOAD_LEN 800
|
||||||
|
|
||||||
|
|
||||||
#define SAVED_NALUNIT_NUM_TMP ( (MAX_SPATIAL_LAYER_NUM*MAX_QUALITY_LAYER_NUM) + 1 + MAX_SPATIAL_LAYER_NUM ) ///< SPS/PPS + SEI/SSEI + PADDING_NAL
|
#define SAVED_NALUNIT_NUM_TMP ( (MAX_SPATIAL_LAYER_NUM*MAX_QUALITY_LAYER_NUM) + 1 + MAX_SPATIAL_LAYER_NUM ) //SPS/PPS + SEI/SSEI + PADDING_NAL
|
||||||
#define MAX_SLICES_NUM_TMP ( ( MAX_NAL_UNITS_IN_LAYER - SAVED_NALUNIT_NUM_TMP ) / 3 )
|
#define MAX_SLICES_NUM_TMP ( ( MAX_NAL_UNITS_IN_LAYER - SAVED_NALUNIT_NUM_TMP ) / 3 )
|
||||||
|
|
||||||
|
#define AUTO_REF_PIC_COUNT -1 // encoder selects the number of reference frame automatically
|
||||||
#define AUTO_REF_PIC_COUNT -1 ///< encoder selects the number of reference frame automatically
|
|
||||||
#define UNSPECIFIED_BIT_RATE 0 ///< to do: add detail comment
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Struct of OpenH264 version
|
|
||||||
*/
|
|
||||||
///
|
|
||||||
/// E.g. SDK version is 1.2.0.0, major version number is 1, minor version number is 2, and revision number is 0.
|
|
||||||
typedef struct _tagVersion {
|
|
||||||
unsigned int uMajor; ///< The major version number
|
|
||||||
unsigned int uMinor; ///< The minor version number
|
|
||||||
unsigned int uRevision; ///< The revision number
|
|
||||||
unsigned int uReserved; ///< The reserved number, it should be 0.
|
|
||||||
} OpenH264Version;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Decoding status
|
|
||||||
*/
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
/**
|
/* Errors derived from bitstream parsing */
|
||||||
* Errors derived from bitstream parsing
|
dsErrorFree = 0x00, /* Bitstream error-free */
|
||||||
*/
|
dsFramePending = 0x01, /* Need more throughput to generate a frame output, */
|
||||||
dsErrorFree = 0x00, ///< bit stream error-free
|
dsRefLost = 0x02, /* layer lost at reference frame with temporal id 0 */
|
||||||
dsFramePending = 0x01, ///< need more throughput to generate a frame output,
|
dsBitstreamError = 0x04, /* Error bitstreams(maybe broken internal frame) the decoder cared */
|
||||||
dsRefLost = 0x02, ///< layer lost at reference frame with temporal id 0
|
dsDepLayerLost = 0x08, /* Dependented layer is ever lost */
|
||||||
dsBitstreamError = 0x04, ///< error bitstreams(maybe broken internal frame) the decoder cared
|
dsNoParamSets = 0x10, /* No parameter set NALs involved */
|
||||||
dsDepLayerLost = 0x08, ///< dependented layer is ever lost
|
dsDataErrorConcealed = 0x20, /* current data Error concealed specified */
|
||||||
dsNoParamSets = 0x10, ///< no parameter set NALs involved
|
|
||||||
dsDataErrorConcealed = 0x20, ///< current data error concealed specified
|
|
||||||
|
|
||||||
/**
|
/* Errors derived from logic level */
|
||||||
* Errors derived from logic level
|
dsInvalidArgument = 0x1000, /* Invalid argument specified */
|
||||||
*/
|
dsInitialOptExpected = 0x2000, /* Initializing operation is expected */
|
||||||
dsInvalidArgument = 0x1000, ///< invalid argument specified
|
dsOutOfMemory = 0x4000, /* Out of memory due to new request */
|
||||||
dsInitialOptExpected = 0x2000, ///< initializing operation is expected
|
/* ANY OTHERS? */
|
||||||
dsOutOfMemory = 0x4000, ///< out of memory due to new request
|
dsDstBufNeedExpand = 0x8000 /* Actual picture size exceeds size of dst pBuffer feed in decoder, so need expand its size */
|
||||||
/**
|
|
||||||
* ANY OTHERS?
|
|
||||||
*/
|
|
||||||
dsDstBufNeedExpan = 0x8000 ///< actual picture size exceeds size of dst pBuffer feed in decoder, so need expand its size
|
|
||||||
|
|
||||||
} DECODING_STATE;
|
} DECODING_STATE;
|
||||||
|
|
||||||
/**
|
/* Option types introduced in SVC encoder application */
|
||||||
* @brief Option types introduced in SVC encoder application
|
|
||||||
*/
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
ENCODER_OPTION_DATAFORMAT = 0,
|
ENCODER_OPTION_DATAFORMAT = 0,
|
||||||
ENCODER_OPTION_IDR_INTERVAL, ///< IDR period,0/-1 means no Intra period (only the first frame); lager than 0 means the desired IDR period, must be multiple of (2^temporal_layer)
|
ENCODER_OPTION_IDR_INTERVAL,
|
||||||
ENCODER_OPTION_SVC_ENCODE_PARAM_BASE, ///< structure of Base Param
|
ENCODER_OPTION_SVC_ENCODE_PARAM_BASE,
|
||||||
ENCODER_OPTION_SVC_ENCODE_PARAM_EXT, ///< structure of Extension Param
|
ENCODER_OPTION_SVC_ENCODE_PARAM_EXT,
|
||||||
ENCODER_OPTION_FRAME_RATE, ///< maximal input frame rate, current supported range: MAX_FRAME_RATE = 30,MIN_FRAME_RATE = 1
|
ENCODER_OPTION_FRAME_RATE,
|
||||||
ENCODER_OPTION_BITRATE,
|
ENCODER_OPTION_BITRATE,
|
||||||
ENCODER_OPTION_MAX_BITRATE,
|
ENCODER_OPTION_MAX_BITRATE,
|
||||||
ENCODER_OPTION_INTER_SPATIAL_PRED,
|
ENCODER_OPTION_INTER_SPATIAL_PRED,
|
||||||
ENCODER_OPTION_RC_MODE,
|
ENCODER_OPTION_RC_MODE,
|
||||||
ENCODER_OPTION_RC_FRAME_SKIP,
|
ENCODER_PADDING_PADDING,
|
||||||
ENCODER_PADDING_PADDING, ///< 0:disable padding;1:padding
|
|
||||||
|
|
||||||
ENCODER_OPTION_PROFILE, ///< assgin the profile for each layer
|
ENCODER_OPTION_PROFILE,
|
||||||
ENCODER_OPTION_LEVEL, ///< assgin the level for each layer
|
ENCODER_OPTION_LEVEL,
|
||||||
ENCODER_OPTION_NUMBER_REF, ///< the number of refererence frame
|
ENCODER_OPTION_NUMBER_REF,
|
||||||
ENCODER_OPTION_DELIVERY_STATUS, ///< the delivery info which is a feedback from app level
|
ENCODER_OPTION_DELIVERY_STATUS,
|
||||||
|
|
||||||
ENCODER_LTR_RECOVERY_REQUEST,
|
ENCODER_LTR_RECOVERY_REQUEST,
|
||||||
ENCODER_LTR_MARKING_FEEDBACK,
|
ENCODER_LTR_MARKING_FEEDBACK,
|
||||||
ENCODER_LTR_MARKING_PERIOD,
|
ENCODER_LTR_MARKING_PERIOD,
|
||||||
ENCODER_OPTION_LTR, ///< 0:disable LTR;larger than 0 enable LTR; LTR number is fixed to be 2 in current encoder
|
ENCODER_OPTION_LTR,
|
||||||
ENCODER_OPTION_COMPLEXITY,
|
ENCODER_OPTION_COMPLEXITY,
|
||||||
|
|
||||||
ENCODER_OPTION_ENABLE_SSEI, ///< enable SSEI: true--enable ssei; false--disable ssei
|
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
|
ENCODER_OPTION_ENABLE_PREFIX_NAL_ADDING, //enable prefix: true--enable prefix; false--disable prefix
|
||||||
ENCODER_OPTION_ENABLE_SPS_PPS_ID_ADDITION, ///< enable pSps/pPps id addition: true--enable pSps/pPps id; false--disable pSps/pPps id addistion
|
ENCODER_OPTION_ENABLE_SPS_PPS_ID_ADDITION, //enable pSps/pPps id addition: true--enable pSps/pPps id; false--disable pSps/pPps id addistion
|
||||||
|
|
||||||
ENCODER_OPTION_CURRENT_PATH,
|
ENCODER_OPTION_CURRENT_PATH,
|
||||||
ENCODER_OPTION_DUMP_FILE, ///< dump layer reconstruct frame to a specified file
|
ENCODER_OPTION_DUMP_FILE,
|
||||||
ENCODER_OPTION_TRACE_LEVEL, ///< trace info based on the trace level
|
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, // a void (*)(void* context, int level, const char* message) function which receives log messages
|
||||||
ENCODER_OPTION_TRACE_CALLBACK_CONTEXT, ///< context info of trace callback
|
ENCODER_OPTION_TRACE_CALLBACK_CONTEXT,
|
||||||
|
|
||||||
ENCODER_OPTION_GET_STATISTICS, ///< read only
|
|
||||||
ENCODER_OPTION_STATISTICS_LOG_INTERVAL, ///< log interval in millisecond
|
|
||||||
|
|
||||||
ENCODER_OPTION_IS_LOSSLESS_LINK, ///< advanced algorithmetic settings
|
|
||||||
|
|
||||||
ENCODER_OPTION_BITS_VARY_PERCENTAGE ///< bit vary percentage
|
|
||||||
} ENCODER_OPTION;
|
} ENCODER_OPTION;
|
||||||
|
|
||||||
/**
|
/* Option types introduced in decoder application */
|
||||||
* @brief Option types introduced in decoder application
|
|
||||||
*/
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
DECODER_OPTION_END_OF_STREAM = 1, ///< end of stream flag
|
DECODER_OPTION_DATAFORMAT = 0, /* Set color space of decoding output frame */
|
||||||
DECODER_OPTION_VCL_NAL, ///< feedback whether or not have VCL NAL in current AU for application layer
|
DECODER_OPTION_END_OF_STREAM, /* Indicate bitstream of the final frame to be decoded */
|
||||||
DECODER_OPTION_TEMPORAL_ID, ///< feedback temporal id for application layer
|
DECODER_OPTION_VCL_NAL, //feedback whether or not have VCL NAL in current AU for application layer
|
||||||
DECODER_OPTION_FRAME_NUM, ///< feedback current decoded frame number
|
DECODER_OPTION_TEMPORAL_ID, //feedback temporal id for application layer
|
||||||
DECODER_OPTION_IDR_PIC_ID, ///< feedback current frame belong to which IDR period
|
DECODER_OPTION_FRAME_NUM, //feedback current decoded frame number
|
||||||
DECODER_OPTION_LTR_MARKING_FLAG, ///< feedback wether current frame mark a LTR
|
DECODER_OPTION_IDR_PIC_ID, // feedback current frame belong to which IDR period
|
||||||
DECODER_OPTION_LTR_MARKED_FRAME_NUM, ///< feedback frame num marked by current Frame
|
DECODER_OPTION_LTR_MARKING_FLAG, // feedback wether current frame mark a LTR
|
||||||
DECODER_OPTION_ERROR_CON_IDC, ///< indicate decoder error concealment method
|
DECODER_OPTION_LTR_MARKED_FRAME_NUM, // feedback frame num marked by current Frame
|
||||||
|
DECODER_OPTION_ERROR_CON_IDC, //not finished yet, indicate decoder error concealment status, in progress
|
||||||
DECODER_OPTION_TRACE_LEVEL,
|
DECODER_OPTION_TRACE_LEVEL,
|
||||||
DECODER_OPTION_TRACE_CALLBACK, ///< a void (*)(void* context, int level, const char* message) function which receives log messages
|
DECODER_OPTION_TRACE_CALLBACK, // a void (*)(void* context, int level, const char* message) function which receives log messages
|
||||||
DECODER_OPTION_TRACE_CALLBACK_CONTEXT,///< context info of trace callbac
|
DECODER_OPTION_TRACE_CALLBACK_CONTEXT,
|
||||||
|
|
||||||
DECODER_OPTION_GET_STATISTICS
|
|
||||||
|
|
||||||
} DECODER_OPTION;
|
} DECODER_OPTION;
|
||||||
|
|
||||||
/**
|
//enuerate the types of error concealment methods
|
||||||
* @brief Enumerate the type of error concealment methods
|
|
||||||
*/
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
ERROR_CON_DISABLE = 0,
|
ERROR_CON_DISABLE = 0,
|
||||||
ERROR_CON_FRAME_COPY,
|
ERROR_CON_FRAME_COPY,
|
||||||
ERROR_CON_SLICE_COPY,
|
ERROR_CON_SLICE_COPY,
|
||||||
ERROR_CON_FRAME_COPY_CROSS_IDR,
|
|
||||||
ERROR_CON_SLICE_COPY_CROSS_IDR,
|
|
||||||
ERROR_CON_SLICE_COPY_CROSS_IDR_FREEZE_RES_CHANGE,
|
|
||||||
ERROR_CON_SLICE_MV_COPY_CROSS_IDR,
|
|
||||||
ERROR_CON_SLICE_MV_COPY_CROSS_IDR_FREEZE_RES_CHANGE
|
|
||||||
} ERROR_CON_IDC;
|
} ERROR_CON_IDC;
|
||||||
/**
|
|
||||||
* @brief Feedback that whether or not have VCL NAL in current AU
|
typedef enum { //feedback that whether or not have VCL NAL in current AU
|
||||||
*/
|
|
||||||
typedef enum {
|
|
||||||
FEEDBACK_NON_VCL_NAL = 0,
|
FEEDBACK_NON_VCL_NAL = 0,
|
||||||
FEEDBACK_VCL_NAL,
|
FEEDBACK_VCL_NAL,
|
||||||
FEEDBACK_UNKNOWN_NAL
|
FEEDBACK_UNKNOWN_NAL
|
||||||
} FEEDBACK_VCL_NAL_IN_AU;
|
} FEEDBACK_VCL_NAL_IN_AU;
|
||||||
|
|
||||||
/**
|
/* Type of layer being encoded */
|
||||||
* @brief Type of layer being encoded
|
|
||||||
*/
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
NON_VIDEO_CODING_LAYER = 0,
|
NON_VIDEO_CODING_LAYER = 0,
|
||||||
VIDEO_CODING_LAYER = 1
|
VIDEO_CODING_LAYER = 1
|
||||||
} LAYER_TYPE;
|
} LAYER_TYPE;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Spatial layer num
|
|
||||||
*/
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
SPATIAL_LAYER_0 = 0,
|
SPATIAL_LAYER_0 = 0,
|
||||||
SPATIAL_LAYER_1 = 1,
|
SPATIAL_LAYER_1 = 1,
|
||||||
SPATIAL_LAYER_2 = 2,
|
SPATIAL_LAYER_2 = 2,
|
||||||
SPATIAL_LAYER_3 = 3,
|
SPATIAL_LAYER_3 = 3,
|
||||||
SPATIAL_LAYER_ALL = 4
|
SPATIAL_LAYER_ALL = 4,
|
||||||
} LAYER_NUM;
|
} LAYER_NUM;
|
||||||
|
|
||||||
/**
|
//enumerate the type of video bitstream which is provided to decoder
|
||||||
* @brief Enumerate the type of video bitstream which is provided to decoder
|
|
||||||
*/
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
VIDEO_BITSTREAM_AVC = 0,
|
VIDEO_BITSTREAM_AVC = 0,
|
||||||
VIDEO_BITSTREAM_SVC = 1,
|
VIDEO_BITSTREAM_SVC = 1,
|
||||||
VIDEO_BITSTREAM_DEFAULT = VIDEO_BITSTREAM_SVC
|
VIDEO_BITSTREAM_DEFAULT = VIDEO_BITSTREAM_SVC,
|
||||||
} VIDEO_BITSTREAM_TYPE;
|
} VIDEO_BITSTREAM_TYPE;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Enumerate the type of key frame request
|
|
||||||
*/
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
NO_RECOVERY_REQUSET = 0,
|
NO_RECOVERY_REQUSET = 0,
|
||||||
LTR_RECOVERY_REQUEST = 1,
|
LTR_RECOVERY_REQUEST = 1,
|
||||||
IDR_RECOVERY_REQUEST = 2,
|
IDR_RECOVERY_REQUEST = 2,
|
||||||
NO_LTR_MARKING_FEEDBACK = 3,
|
NO_LTR_MARKING_FEEDBACK = 3,
|
||||||
LTR_MARKING_SUCCESS = 4,
|
LTR_MARKING_SUCCESS = 4,
|
||||||
LTR_MARKING_FAILED = 5
|
LTR_MARKING_FAILED = 5,
|
||||||
} KEY_FRAME_REQUEST_TYPE;
|
} KEY_FRAME_REQUEST_TYPE;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Structure for LTR recover request
|
|
||||||
*/
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
unsigned int uiFeedbackType; ///< IDR request or LTR recovery request
|
unsigned int uiFeedbackType; //IDR request or LTR recovery request
|
||||||
unsigned int uiIDRPicId; ///< distinguish request from different IDR
|
unsigned int uiIDRPicId; // distinguish request from different IDR
|
||||||
int iLastCorrectFrameNum;
|
int iLastCorrectFrameNum;
|
||||||
int iCurrentFrameNum; ///< specify current decoder frame_num.
|
int iCurrentFrameNum; //specify current decoder frame_num.
|
||||||
} SLTRRecoverRequest;
|
} SLTRRecoverRequest;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Structure for LTR marking feedback
|
|
||||||
*/
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
unsigned int uiFeedbackType; ///< mark failed or successful
|
unsigned int uiFeedbackType; //mark failed or successful
|
||||||
unsigned int uiIDRPicId; ///< distinguish request from different IDR
|
unsigned int uiIDRPicId; // distinguish request from different IDR
|
||||||
int iLTRFrameNum; ///< specify current decoder frame_num
|
int iLTRFrameNum; //specify current decoder frame_num
|
||||||
} SLTRMarkingFeedback;
|
} SLTRMarkingFeedback;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Structure for LTR configuration
|
|
||||||
*/
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
bool bEnableLongTermReference; ///< 1: on, 0: off
|
bool bEnableLongTermReference; // 1: on, 0: off
|
||||||
int iLTRRefNum; ///< TODO: not supported to set it arbitrary yet
|
int iLTRRefNum;
|
||||||
} SLTRConfig;
|
}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;
|
||||||
|
unsigned int uiSliceNum;
|
||||||
|
unsigned int uiSliceSizeConstraint;
|
||||||
|
} SSliceArgument;//not all the elements in this argument will be used, how it will be used depends on uiSliceMode; see below
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Enumerate the type of rate control mode
|
|
||||||
*/
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
RC_QUALITY_MODE = 0, ///< quality mode
|
SM_SINGLE_SLICE = 0, // | SliceNum==1
|
||||||
RC_BITRATE_MODE = 1, ///< bitrate mode
|
SM_FIXEDSLCNUM_SLICE = 1, // | according to SliceNum | Enabled dynamic slicing for multi-thread
|
||||||
RC_BUFFERBASED_MODE = 2, ///< no bitrate control,only using buffer status,adjust the video quality
|
SM_RASTER_SLICE = 2, // | according to SlicesAssign | Need input of MB numbers each slice. In addition, if other constraint in SSliceArgument is presented, need to follow the constraints. Typically if MB num and slice size are both constrained, re-encoding may be involved.
|
||||||
RC_TIMESTAMP_MODE = 3, //rate control based timestamp
|
SM_ROWMB_SLICE = 3, // | according to PictureMBHeight | Typical of single row of mbs each slice?+ slice size constraint which including re-encoding
|
||||||
RC_BITRATE_MODE_POST_SKIP = 4, ///< this is in-building RC MODE, WILL BE DELETED after algorithm tuning!
|
SM_DYN_SLICE = 4, // | according to SliceSize | Dynamic slicing (have no idea about slice_nums until encoding current frame)
|
||||||
RC_OFF_MODE = -1, ///< rate control off mode
|
SM_AUTO_SLICE = 5, // | according to thread number
|
||||||
|
SM_RESERVED = 6
|
||||||
|
} SliceModeEnum;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
RC_QUALITY_MODE = 0, //Quality mode
|
||||||
|
RC_BITRATE_MODE = 1, //Bitrate mode
|
||||||
|
RC_LOW_BW_MODE = 2, //bitrate limited mode
|
||||||
|
RC_BUFFERBASED_MODE = 3,//no bitrate control,only using buffer status,adjust the video quality
|
||||||
|
RC_OFF_MODE = -1, // rate control off mode
|
||||||
} RC_MODES;
|
} RC_MODES;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Enumerate the type of profile id
|
|
||||||
*/
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
PRO_UNKNOWN = 0,
|
PRO_UNKNOWN = 0,
|
||||||
PRO_BASELINE = 66,
|
PRO_BASELINE = 66,
|
||||||
PRO_MAIN = 77,
|
PRO_MAIN = 77,
|
||||||
PRO_EXTENDED = 88,
|
PRO_EXTENDED = 88,
|
||||||
PRO_HIGH = 100,
|
PRO_HIGH = 100,
|
||||||
PRO_HIGH10 = 110,
|
PRO_HIGH10 = 110,
|
||||||
PRO_HIGH422 = 122,
|
PRO_HIGH422 = 122,
|
||||||
PRO_HIGH444 = 144,
|
PRO_HIGH444 = 144,
|
||||||
PRO_CAVLC444 = 244,
|
PRO_CAVLC444 = 244,
|
||||||
|
|
||||||
PRO_SCALABLE_BASELINE = 83,
|
PRO_SCALABLE_BASELINE = 83,
|
||||||
PRO_SCALABLE_HIGH = 86
|
PRO_SCALABLE_HIGH = 86,
|
||||||
} EProfileIdc;
|
} EProfileIdc;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Enumerate the type of level id
|
|
||||||
*/
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
LEVEL_UNKNOWN,
|
LEVEL_UNKNOWN,
|
||||||
LEVEL_1_0,
|
LEVEL_1_0,
|
||||||
@ -307,435 +242,204 @@ typedef enum {
|
|||||||
LEVEL_5_2
|
LEVEL_5_2
|
||||||
} ELevelIdc;
|
} ELevelIdc;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Enumerate the type of wels log
|
|
||||||
*/
|
|
||||||
enum {
|
enum {
|
||||||
WELS_LOG_QUIET = 0x00, ///< quiet mode
|
WELS_LOG_QUIET = 0x00, // Quiet mode
|
||||||
WELS_LOG_ERROR = 1 << 0, ///< error log iLevel
|
WELS_LOG_ERROR = 1 << 0, // Error log iLevel
|
||||||
WELS_LOG_WARNING = 1 << 1, ///< Warning log iLevel
|
WELS_LOG_WARNING = 1 << 1, // Warning log iLevel
|
||||||
WELS_LOG_INFO = 1 << 2, ///< information log iLevel
|
WELS_LOG_INFO = 1 << 2, // Information log iLevel
|
||||||
WELS_LOG_DEBUG = 1 << 3, ///< debug log, critical algo log
|
WELS_LOG_DEBUG = 1 << 3, // Debug log, critical algo log
|
||||||
WELS_LOG_DETAIL = 1 << 4, ///< per packet/frame log
|
WELS_LOG_DETAIL = 1 << 4, // per packet/frame log
|
||||||
WELS_LOG_RESV = 1 << 5, ///< resversed log iLevel
|
WELS_LOG_RESV = 1 << 5, // Resversed log iLevel
|
||||||
WELS_LOG_LEVEL_COUNT = 6,
|
WELS_LOG_LEVEL_COUNT = 6,
|
||||||
WELS_LOG_DEFAULT = WELS_LOG_WARNING ///< default log iLevel in Wels codec
|
WELS_LOG_DEFAULT = WELS_LOG_DEBUG // Default log iLevel in Wels codec
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Enumerate the type of slice mode
|
|
||||||
*/
|
|
||||||
typedef enum {
|
|
||||||
SM_SINGLE_SLICE = 0, ///< | SliceNum==1
|
|
||||||
SM_FIXEDSLCNUM_SLICE = 1, ///< | according to SliceNum | enabled dynamic slicing for multi-thread
|
|
||||||
SM_RASTER_SLICE = 2, ///< | according to SlicesAssign | need input of MB numbers each slice. In addition, if other constraint in SSliceArgument is presented, need to follow the constraints. Typically if MB num and slice size are both constrained, re-encoding may be involved.
|
|
||||||
SM_SIZELIMITED_SLICE = 3, ///< | according to SliceSize | slicing according to size, the slicing will be dynamic(have no idea about slice_nums until encoding current frame)
|
|
||||||
SM_RESERVED = 4
|
|
||||||
} SliceModeEnum;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Structure for slice argument
|
|
||||||
*/
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
SliceModeEnum uiSliceMode; ///< by default, uiSliceMode will be SM_SINGLE_SLICE
|
SliceModeEnum uiSliceMode; //by default, uiSliceMode will be SM_SINGLE_SLICE
|
||||||
unsigned int uiSliceNum; ///< only used when uiSliceMode=1, when uiSliceNum=0 means auto design it with cpu core number
|
|
||||||
unsigned int uiSliceMbNum[MAX_SLICES_NUM_TMP]; ///< only used when uiSliceMode=2; when =0 means setting one MB row a slice
|
|
||||||
unsigned int uiSliceSizeConstraint; ///< now only used when uiSliceMode=4
|
|
||||||
} SSliceArgument;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Enumerate the type of video format
|
|
||||||
*/
|
|
||||||
typedef enum {
|
|
||||||
VF_COMPONENT,
|
|
||||||
VF_PAL,
|
|
||||||
VF_NTSC,
|
|
||||||
VF_SECAM,
|
|
||||||
VF_MAC,
|
|
||||||
VF_UNDEF,
|
|
||||||
VF_NUM_ENUM
|
|
||||||
} EVideoFormatSPS; // EVideoFormat is already defined/used elsewhere!
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Enumerate the type of color primaries
|
|
||||||
*/
|
|
||||||
typedef enum {
|
|
||||||
CP_RESERVED0,
|
|
||||||
CP_BT709,
|
|
||||||
CP_UNDEF,
|
|
||||||
CP_RESERVED3,
|
|
||||||
CP_BT470M,
|
|
||||||
CP_BT470BG,
|
|
||||||
CP_SMPTE170M,
|
|
||||||
CP_SMPTE240M,
|
|
||||||
CP_FILM,
|
|
||||||
CP_BT2020,
|
|
||||||
CP_NUM_ENUM
|
|
||||||
} EColorPrimaries;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Enumerate the type of transfer characteristics
|
|
||||||
*/
|
|
||||||
typedef enum {
|
|
||||||
TRC_RESERVED0,
|
|
||||||
TRC_BT709,
|
|
||||||
TRC_UNDEF,
|
|
||||||
TRC_RESERVED3,
|
|
||||||
TRC_BT470M,
|
|
||||||
TRC_BT470BG,
|
|
||||||
TRC_SMPTE170M,
|
|
||||||
TRC_SMPTE240M,
|
|
||||||
TRC_LINEAR,
|
|
||||||
TRC_LOG100,
|
|
||||||
TRC_LOG316,
|
|
||||||
TRC_IEC61966_2_4,
|
|
||||||
TRC_BT1361E,
|
|
||||||
TRC_IEC61966_2_1,
|
|
||||||
TRC_BT2020_10,
|
|
||||||
TRC_BT2020_12,
|
|
||||||
TRC_NUM_ENUM
|
|
||||||
} ETransferCharacteristics;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Enumerate the type of color matrix
|
|
||||||
*/
|
|
||||||
typedef enum {
|
|
||||||
CM_GBR,
|
|
||||||
CM_BT709,
|
|
||||||
CM_UNDEF,
|
|
||||||
CM_RESERVED3,
|
|
||||||
CM_FCC,
|
|
||||||
CM_BT470BG,
|
|
||||||
CM_SMPTE170M,
|
|
||||||
CM_SMPTE240M,
|
|
||||||
CM_YCGCO,
|
|
||||||
CM_BT2020NC,
|
|
||||||
CM_BT2020C,
|
|
||||||
CM_NUM_ENUM
|
|
||||||
} EColorMatrix;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Structure for spatial layer configuration
|
|
||||||
*/
|
|
||||||
typedef struct {
|
|
||||||
int iVideoWidth; ///< width of picture in luminance samples of a layer
|
|
||||||
int iVideoHeight; ///< height of picture in luminance samples of a layer
|
|
||||||
float fFrameRate; ///< frame rate specified for a layer
|
|
||||||
int iSpatialBitrate; ///< target bitrate for a spatial layer, in unit of bps
|
|
||||||
int iMaxSpatialBitrate; ///< maximum bitrate for a spatial layer, in unit of bps
|
|
||||||
EProfileIdc uiProfileIdc; ///< value of profile IDC (PRO_UNKNOWN for auto-detection)
|
|
||||||
ELevelIdc uiLevelIdc; ///< value of profile IDC (0 for auto-detection)
|
|
||||||
int iDLayerQp; ///< value of level IDC (0 for auto-detection)
|
|
||||||
|
|
||||||
SSliceArgument sSliceArgument;
|
SSliceArgument sSliceArgument;
|
||||||
|
} SSliceConfig;
|
||||||
|
|
||||||
// Note: members bVideoSignalTypePresent through uiColorMatrix below are also defined in SWelsSPS in parameter_sets.h.
|
typedef struct {
|
||||||
bool bVideoSignalTypePresent; // false => do not write any of the following information to the header
|
int iVideoWidth; // video size in cx specified for a layer
|
||||||
unsigned char uiVideoFormat; // EVideoFormatSPS; 3 bits in header; 0-5 => component, kpal, ntsc, secam, mac, undef
|
int iVideoHeight; // video size in cy specified for a layer
|
||||||
bool bFullRange; // false => analog video data range [16, 235]; true => full data range [0,255]
|
float fFrameRate; // frame rate specified for a layer
|
||||||
bool bColorDescriptionPresent; // false => do not write any of the following three items to the header
|
int iSpatialBitrate; // target bitrate for a spatial layer
|
||||||
unsigned char uiColorPrimaries; // EColorPrimaries; 8 bits in header; 0 - 9 => ???, bt709, undef, ???, bt470m, bt470bg,
|
int iMaxSpatialBitrate;
|
||||||
// smpte170m, smpte240m, film, bt2020
|
EProfileIdc uiProfileIdc; // value of profile IDC (PRO_UNKNOWN for auto-detection)
|
||||||
unsigned char uiTransferCharacteristics; // ETransferCharacteristics; 8 bits in header; 0 - 15 => ???, bt709, undef, ???, bt470m, bt470bg, smpte170m,
|
ELevelIdc uiLevelIdc;
|
||||||
// smpte240m, linear, log100, log316, iec61966-2-4, bt1361e, iec61966-2-1, bt2020-10, bt2020-12
|
int iDLayerQp;
|
||||||
unsigned char uiColorMatrix; // EColorMatrix; 8 bits in header (corresponds to FFmpeg "colorspace"); 0 - 10 => GBR, bt709,
|
|
||||||
// undef, ???, fcc, bt470bg, smpte170m, smpte240m, YCgCo, bt2020nc, bt2020c
|
SSliceConfig sSliceCfg;
|
||||||
} SSpatialLayerConfig;
|
} SSpatialLayerConfig;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Encoder usage type
|
|
||||||
*/
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
CAMERA_VIDEO_REAL_TIME, ///< camera video for real-time communication
|
CAMERA_VIDEO_REAL_TIME, //camera video signal
|
||||||
SCREEN_CONTENT_REAL_TIME, ///< screen content signal
|
SCREEN_CONTENT_REAL_TIME,//screen content signal
|
||||||
CAMERA_VIDEO_NON_REAL_TIME
|
|
||||||
} EUsageType;
|
} EUsageType;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Enumulate the complexity mode
|
|
||||||
*/
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
LOW_COMPLEXITY, ///< the lowest compleixty,the fastest speed,
|
LOW_COMPLEXITY, //the lowest compleixty,the fastest speed,
|
||||||
MEDIUM_COMPLEXITY, ///< medium complexity, medium speed,medium quality
|
MEDIUM_COMPLEXITY, //medium complexity, medium speed,medium quality
|
||||||
HIGH_COMPLEXITY ///< high complexity, lowest speed, high quality
|
HIGH_COMPLEXITY, //high complexity, lowest speed, high quality
|
||||||
} ECOMPLEXITY_MODE;
|
} ECOMPLEXITY_MODE;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Enumulate for the stategy of SPS/PPS strategy
|
|
||||||
*/
|
|
||||||
typedef enum {
|
|
||||||
CONSTANT_ID = 0, ///< constant id in SPS/PPS
|
|
||||||
INCREASING_ID = 0x01, ///< SPS/PPS id increases at each IDR
|
|
||||||
SPS_LISTING = 0x02, ///< using SPS in the existing list if possible
|
|
||||||
SPS_LISTING_AND_PPS_INCREASING = 0x03,
|
|
||||||
SPS_PPS_LISTING = 0x06,
|
|
||||||
} EParameterSetStrategy;
|
|
||||||
|
|
||||||
// TODO: Refine the parameters definition.
|
// TODO: Refine the parameters definition.
|
||||||
/**
|
// SVC Encoding Parameters
|
||||||
* @brief SVC Encoding Parameters
|
|
||||||
*/
|
|
||||||
typedef struct TagEncParamBase {
|
typedef struct TagEncParamBase {
|
||||||
EUsageType
|
EUsageType
|
||||||
iUsageType; ///< application type;1.CAMERA_VIDEO_REAL_TIME:camera video signal; 2.SCREEN_CONTENT_REAL_TIME:screen content signal;
|
iUsageType; //application type;// CAMERA_VIDEO_REAL_TIME: //camera video signal; SCREEN_CONTENT_REAL_TIME: screen content signal;
|
||||||
|
|
||||||
int iPicWidth; ///< width of picture in luminance samples (the maximum of all layers if multiple spatial layers presents)
|
int iPicWidth; // width of picture in samples
|
||||||
int iPicHeight; ///< height of picture in luminance samples((the maximum of all layers if multiple spatial layers presents)
|
int iPicHeight; // height of picture in samples
|
||||||
int iTargetBitrate; ///< target bitrate desired, in unit of bps
|
int iTargetBitrate; // target bitrate desired
|
||||||
RC_MODES iRCMode; ///< rate control mode
|
RC_MODES iRCMode; // RC mode
|
||||||
float fMaxFrameRate; ///< maximal input frame rate
|
float fMaxFrameRate; // input maximal frame rate
|
||||||
|
|
||||||
} SEncParamBase, *PEncParamBase;
|
} SEncParamBase, *PEncParamBase;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief SVC Encoding Parameters extention
|
|
||||||
*/
|
|
||||||
typedef struct TagEncParamExt {
|
typedef struct TagEncParamExt {
|
||||||
EUsageType
|
EUsageType
|
||||||
iUsageType; ///< application type;1.CAMERA_VIDEO_REAL_TIME:camera video signal;2.SCREEN_CONTENT_REAL_TIME:screen content signal;
|
iUsageType; //application type;// CAMERA_VIDEO_REAL_TIME: //camera video signal; SCREEN_CONTENT_REAL_TIME: screen content signal;
|
||||||
|
|
||||||
int iPicWidth; ///< width of picture in luminance samples (the maximum of all layers if multiple spatial layers presents)
|
int iPicWidth; // width of picture in samples
|
||||||
int iPicHeight; ///< height of picture in luminance samples((the maximum of all layers if multiple spatial layers presents)
|
int iPicHeight; // height of picture in samples
|
||||||
int iTargetBitrate; ///< target bitrate desired, in unit of bps
|
int iTargetBitrate; // target bitrate desired
|
||||||
RC_MODES iRCMode; ///< rate control mode
|
RC_MODES iRCMode; // RC mode
|
||||||
float fMaxFrameRate; ///< maximal input frame rate
|
float fMaxFrameRate; // input maximal frame rate
|
||||||
|
|
||||||
int iTemporalLayerNum; ///< temporal layer number, max temporal layer = 4
|
int iTemporalLayerNum; // layer number at temporal level
|
||||||
int iSpatialLayerNum; ///< spatial layer number,1<= iSpatialLayerNum <= MAX_SPATIAL_LAYER_NUM, MAX_SPATIAL_LAYER_NUM = 4
|
int iSpatialLayerNum; // layer number at spatial level
|
||||||
SSpatialLayerConfig sSpatialLayers[MAX_SPATIAL_LAYER_NUM];
|
SSpatialLayerConfig sSpatialLayers[MAX_SPATIAL_LAYER_NUM];
|
||||||
|
|
||||||
ECOMPLEXITY_MODE iComplexityMode;
|
ECOMPLEXITY_MODE iComplexityMode;
|
||||||
unsigned int uiIntraPeriod; ///< period of Intra frame
|
unsigned int uiIntraPeriod; // period of Intra frame
|
||||||
int iNumRefFrame; ///< number of reference frame used
|
int iNumRefFrame; // number of reference frame used
|
||||||
EParameterSetStrategy
|
bool bEnableSpsPpsIdAddition;
|
||||||
eSpsPpsIdStrategy; ///< different stategy in adjust ID in SPS/PPS: 0- constant ID, 1-additional ID, 6-mapping and additional
|
bool bPrefixNalAddingCtrl;
|
||||||
bool bPrefixNalAddingCtrl; ///< false:not use Prefix NAL; true: use Prefix NAL
|
bool bEnableSSEI;
|
||||||
bool bEnableSSEI; ///< false:not use SSEI; true: use SSEI -- TODO: planning to remove the interface of SSEI
|
int iPaddingFlag; // 0:disable padding;1:padding
|
||||||
bool bSimulcastAVC; ///< (when encoding more than 1 spatial layer) false: use SVC syntax for higher layers; true: use Simulcast AVC
|
int iEntropyCodingModeFlag;
|
||||||
int iPaddingFlag; ///< 0:disable padding;1:padding
|
|
||||||
int iEntropyCodingModeFlag; ///< 0:CAVLC 1:CABAC.
|
|
||||||
|
|
||||||
/* rc control */
|
/* rc control */
|
||||||
bool bEnableFrameSkip; ///< False: don't skip frame even if VBV buffer overflow.True: allow skipping frames to keep the bitrate within limits
|
bool bEnableFrameSkip; // allow skipping frames to keep the bitrate within limits
|
||||||
int iMaxBitrate; ///< the maximum bitrate, in unit of bps, set it to UNSPECIFIED_BIT_RATE if not needed
|
int iMaxBitrate; // max bitrate desired
|
||||||
int iMaxQp; ///< the maximum QP encoder supports
|
int iMaxQp;
|
||||||
int iMinQp; ///< the minmum QP encoder supports
|
int iMinQp;
|
||||||
unsigned int uiMaxNalSize; ///< the maximum NAL size. This value should be not 0 for dynamic slice mode
|
unsigned int uiMaxNalSize;
|
||||||
|
|
||||||
/*LTR settings*/
|
/*LTR settings*/
|
||||||
bool bEnableLongTermReference; ///< 1: on, 0: off
|
bool bEnableLongTermReference; // 1: on, 0: off
|
||||||
int iLTRRefNum; ///< the number of LTR(long term reference),TODO: not supported to set it arbitrary yet
|
int iLTRRefNum;
|
||||||
unsigned int iLtrMarkPeriod; ///< the LTR marked period that is used in feedback.
|
unsigned int iLtrMarkPeriod;
|
||||||
|
|
||||||
/* multi-thread settings*/
|
/* multi-thread settings*/
|
||||||
unsigned short
|
unsigned short
|
||||||
iMultipleThreadIdc; ///< 1 # 0: auto(dynamic imp. internal encoder); 1: multiple threads imp. disabled; lager than 1: count number of threads;
|
iMultipleThreadIdc; // 1 # 0: auto(dynamic imp. internal encoder); 1: multiple threads imp. disabled; > 1: count number of threads;
|
||||||
bool bUseLoadBalancing; ///< only used when uiSliceMode=1 or 3, will change slicing of a picture during the run-time of multi-thread encoding, so the result of each run may be different
|
|
||||||
|
|
||||||
/* Deblocking loop filter */
|
/* Deblocking loop filter */
|
||||||
int iLoopFilterDisableIdc; ///< 0: on, 1: off, 2: on except for slice boundaries
|
int iLoopFilterDisableIdc; // 0: on, 1: off, 2: on except for slice boundaries
|
||||||
int iLoopFilterAlphaC0Offset; ///< AlphaOffset: valid range [-6, 6], default 0
|
int iLoopFilterAlphaC0Offset;// AlphaOffset: valid range [-6, 6], default 0
|
||||||
int iLoopFilterBetaOffset; ///< BetaOffset: valid range [-6, 6], default 0
|
int iLoopFilterBetaOffset; // BetaOffset: valid range [-6, 6], default 0
|
||||||
/*pre-processing feature*/
|
/*pre-processing feature*/
|
||||||
bool bEnableDenoise; ///< denoise control
|
bool bEnableDenoise; // denoise control
|
||||||
bool bEnableBackgroundDetection; ///< background detection control //VAA_BACKGROUND_DETECTION //BGD cmd
|
bool bEnableBackgroundDetection;// background detection control //VAA_BACKGROUND_DETECTION //BGD cmd
|
||||||
bool bEnableAdaptiveQuant; ///< adaptive quantization control
|
bool bEnableAdaptiveQuant; // adaptive quantization control
|
||||||
bool bEnableFrameCroppingFlag; ///< enable frame cropping flag: TRUE always in application
|
bool bEnableFrameCroppingFlag;// enable frame cropping flag: TRUE always in application
|
||||||
bool bEnableSceneChangeDetect;
|
bool bEnableSceneChangeDetect;
|
||||||
|
|
||||||
bool bIsLosslessLink; ///< LTR advanced setting
|
|
||||||
} SEncParamExt;
|
} SEncParamExt;
|
||||||
|
|
||||||
/**
|
//Define a new struct to show the property of video bitstream.
|
||||||
* @brief Define a new struct to show the property of video bitstream.
|
|
||||||
*/
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
unsigned int size; ///< size of the struct
|
unsigned int size; //size of the struct
|
||||||
VIDEO_BITSTREAM_TYPE eVideoBsType; ///< video stream type (AVC/SVC)
|
VIDEO_BITSTREAM_TYPE eVideoBsType;
|
||||||
} SVideoProperty;
|
} SVideoProperty;
|
||||||
|
|
||||||
/**
|
/* SVC Decoding Parameters, reserved here and potential applicable in the future */
|
||||||
* @brief SVC Decoding Parameters, reserved here and potential applicable in the future
|
|
||||||
*/
|
|
||||||
typedef struct TagSVCDecodingParam {
|
typedef struct TagSVCDecodingParam {
|
||||||
char* pFileNameRestructed; ///< file name of reconstructed frame used for PSNR calculation based debug
|
char* pFileNameRestructed; // File name of restructed frame used for PSNR calculation based debug
|
||||||
|
|
||||||
unsigned int uiCpuLoad; ///< CPU load
|
EVideoFormatType eOutputColorFormat; // color space format to be outputed, EVideoFormatType specified in codec_def.h
|
||||||
unsigned char uiTargetDqLayer; ///< setting target dq layer id
|
unsigned int uiCpuLoad; // CPU load
|
||||||
|
unsigned char uiTargetDqLayer; // Setting target dq layer id
|
||||||
|
|
||||||
ERROR_CON_IDC eEcActiveIdc; ///< whether active error concealment feature in decoder
|
ERROR_CON_IDC eEcActiveIdc; // Whether active error concealment feature in decoder
|
||||||
bool bParseOnly; ///< decoder for parse only, no reconstruction. When it is true, SPS/PPS size should not exceed SPS_PPS_BS_SIZE (128). Otherwise, it will return error info
|
|
||||||
|
|
||||||
SVideoProperty sVideoProperty; ///< video stream property
|
SVideoProperty sVideoProperty;
|
||||||
} SDecodingParam, *PDecodingParam;
|
} SDecodingParam, *PDecodingParam;
|
||||||
|
|
||||||
/**
|
/* Bitstream inforamtion of a layer being encoded */
|
||||||
* @brief Bitstream inforamtion of a layer being encoded
|
|
||||||
*/
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
unsigned char uiTemporalId;
|
unsigned char uiTemporalId;
|
||||||
unsigned char uiSpatialId;
|
unsigned char uiSpatialId;
|
||||||
unsigned char uiQualityId;
|
unsigned char uiQualityId;
|
||||||
EVideoFrameType eFrameType;
|
|
||||||
unsigned char uiLayerType;
|
unsigned char uiLayerType;
|
||||||
|
|
||||||
/**
|
int iNalCount; // Count number of NAL coded already
|
||||||
* The sub sequence layers are ordered hierarchically based on their dependency on each other so that any picture in a layer shall not be
|
int* pNalLengthInByte; // Length of NAL size in byte from 0 to iNalCount-1
|
||||||
* predicted from any picture on any higher layer.
|
unsigned char* pBsBuf; // Buffer of bitstream contained
|
||||||
*/
|
|
||||||
int iSubSeqId; ///< refer to D.2.11 Sub-sequence information SEI message semantics
|
|
||||||
int iNalCount; ///< count number of NAL coded already
|
|
||||||
int* pNalLengthInByte; ///< length of NAL size in byte from 0 to iNalCount-1
|
|
||||||
unsigned char* pBsBuf; ///< buffer of bitstream contained
|
|
||||||
} SLayerBSInfo, *PLayerBSInfo;
|
} SLayerBSInfo, *PLayerBSInfo;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Frame bit stream info
|
|
||||||
*/
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int iLayerNum;
|
int iTemporalId; // Temporal ID
|
||||||
SLayerBSInfo sLayerInfo[MAX_LAYER_NUM_OF_FRAME];
|
//The sub sequence layers are ordered hierarchically based on their dependency on each other so that any picture in a layer shall not be
|
||||||
|
//predicted from any picture on any higher layer.
|
||||||
|
int iSubSeqId; //refer to D.2.11 Sub-sequence information SEI message semantics
|
||||||
|
|
||||||
|
int iLayerNum;
|
||||||
|
SLayerBSInfo sLayerInfo[MAX_LAYER_NUM_OF_FRAME];
|
||||||
|
|
||||||
EVideoFrameType eFrameType;
|
EVideoFrameType eFrameType;
|
||||||
int iFrameSizeInBytes;
|
|
||||||
long long uiTimeStamp;
|
long long uiTimeStamp;
|
||||||
} SFrameBSInfo, *PFrameBSInfo;
|
} SFrameBSInfo, *PFrameBSInfo;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Structure for source picture
|
|
||||||
*/
|
|
||||||
typedef struct Source_Picture_s {
|
typedef struct Source_Picture_s {
|
||||||
int iColorFormat; ///< color space type
|
int iColorFormat; // color space type
|
||||||
int iStride[4]; ///< stride for each plane pData
|
int iStride[4]; // stride for each plane pData
|
||||||
unsigned char* pData[4]; ///< plane pData
|
unsigned char* pData[4]; // plane pData
|
||||||
int iPicWidth; ///< luma picture width in x coordinate
|
int iPicWidth; // luma picture width in x coordinate
|
||||||
int iPicHeight; ///< luma picture height in y coordinate
|
int iPicHeight; // luma picture height in y coordinate
|
||||||
long long uiTimeStamp; ///< timestamp of the source picture, unit: millisecond
|
long long uiTimeStamp;
|
||||||
} SSourcePicture;
|
} SSourcePicture;
|
||||||
/**
|
|
||||||
* @brief Structure for bit rate info
|
|
||||||
*/
|
|
||||||
typedef struct TagBitrateInfo {
|
typedef struct TagBitrateInfo {
|
||||||
LAYER_NUM iLayer;
|
LAYER_NUM iLayer;
|
||||||
int iBitrate; ///< the maximum bitrate
|
int iBitrate; //the maximum bitrate
|
||||||
} SBitrateInfo;
|
} SBitrateInfo;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Structure for dump layer info
|
|
||||||
*/
|
|
||||||
typedef struct TagDumpLayer {
|
typedef struct TagDumpLayer {
|
||||||
int iLayer;
|
int iLayer;
|
||||||
char* pFileName;
|
char* pFileName;
|
||||||
} SDumpLayer;
|
} SDumpLayer;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Structure for profile info in layer
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef struct TagProfileInfo {
|
typedef struct TagProfileInfo {
|
||||||
int iLayer;
|
int iLayer;
|
||||||
EProfileIdc uiProfileIdc; ///< the profile info
|
EProfileIdc uiProfileIdc; //the profile info
|
||||||
} SProfileInfo;
|
} SProfileInfo;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Structure for level info in layer
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef struct TagLevelInfo {
|
typedef struct TagLevelInfo {
|
||||||
int iLayer;
|
int iLayer;
|
||||||
ELevelIdc uiLevelIdc; ///< the level info
|
ELevelIdc uiLevelIdc; //the level info
|
||||||
} SLevelInfo;
|
} SLevelInfo;
|
||||||
/**
|
|
||||||
* @brief Structure for dilivery status
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef struct TagDeliveryStatus {
|
typedef struct TagDeliveryStatus {
|
||||||
bool bDeliveryFlag; ///< 0: the previous frame isn't delivered,1: the previous frame is delivered
|
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; reserved
|
int iDropFrameType; // the frame type that is dropped
|
||||||
int iDropFrameSize; ///< the frame size that is dropped; reserved
|
int iDropFrameSize; // the frame size that is dropped
|
||||||
} SDeliveryStatus;
|
} SDeliveryStatus;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief The capability of decoder, for SDP negotiation
|
|
||||||
*/
|
|
||||||
typedef struct TagDecoderCapability {
|
typedef struct TagDecoderCapability {
|
||||||
int iProfileIdc; ///< profile_idc
|
int iProfileIdc;
|
||||||
int iProfileIop; ///< profile-iop
|
int iProfileIop;
|
||||||
int iLevelIdc; ///< level_idc
|
int iLevelIdc;
|
||||||
int iMaxMbps; ///< max-mbps
|
int iMaxMbps;
|
||||||
int iMaxFs; ///< max-fs
|
int iMaxFs;
|
||||||
int iMaxCpb; ///< max-cpb
|
int iMaxCpb;
|
||||||
int iMaxDpb; ///< max-dpb
|
int iMaxDpb;
|
||||||
int iMaxBr; ///< max-br
|
int iMaxBr;
|
||||||
bool bRedPicCap; ///< redundant-pic-cap
|
bool bRedPicCap;
|
||||||
} SDecoderCapability;
|
} SDecoderCapability;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief to do
|
|
||||||
*/
|
|
||||||
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
|
|
||||||
unsigned long long uiInBsTimeStamp; ///< input BS timestamp
|
|
||||||
unsigned long long uiOutBsTimeStamp; ///< output BS timestamp
|
|
||||||
} SParserBsInfo, *PParserBsInfo;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Structure for encoder statistics
|
|
||||||
*/
|
|
||||||
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 uiAverageFrameQP; ///< the average QP of last encoded frame
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
long long iStatisticsTs; ///< Timestamp of updating the statistics
|
|
||||||
} SEncoderStatistics; // in building, coming soon
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Structure for decoder statistics
|
|
||||||
*/
|
|
||||||
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
|
|
||||||
float fActualAverageFrameSpeedInMs; ///< actual average_Decoding_Time, including freezing pictures
|
|
||||||
unsigned int uiDecodedFrameCount; ///< number of frames
|
|
||||||
unsigned int uiResolutionChangeTimes; ///< uiResolutionChangeTimes
|
|
||||||
unsigned int uiIDRCorrectNum; ///< number of correct IDR received
|
|
||||||
//EC on related
|
|
||||||
unsigned int
|
|
||||||
uiAvgEcRatio; ///< when EC is on, the average ratio of total EC areas, can be an indicator of reconstruction quality
|
|
||||||
unsigned int
|
|
||||||
uiAvgEcPropRatio; ///< when EC is on, the rough average ratio of propogate EC areas, can be an indicator of reconstruction quality
|
|
||||||
unsigned int uiEcIDRNum; ///< number of actual unintegrity IDR or not received but eced
|
|
||||||
unsigned int uiEcFrameNum; ///<
|
|
||||||
unsigned int uiIDRLostNum; ///< number of whole lost IDR
|
|
||||||
unsigned int uiFreezingIDRNum; ///< number of freezing IDR with error (partly received), under resolution change
|
|
||||||
unsigned int uiFreezingNonIDRNum; ///< number of freezing non-IDR with error
|
|
||||||
int iAvgLumaQp; ///< average luma QP. default: -1, no correct frame outputted
|
|
||||||
int iSpsReportErrorNum; ///< number of Sps Invalid report
|
|
||||||
int iSubSpsReportErrorNum; ///< number of SubSps Invalid report
|
|
||||||
int iPpsReportErrorNum; ///< number of Pps Invalid report
|
|
||||||
int iSpsNoExistNalNum; ///< number of Sps NoExist Nal
|
|
||||||
int iSubSpsNoExistNalNum; ///< number of SubSps NoExist Nal
|
|
||||||
int iPpsNoExistNalNum; ///< number of Pps NoExist Nal
|
|
||||||
} SDecoderStatistics; // in building, coming soon
|
|
||||||
|
|
||||||
#endif//WELS_VIDEO_CODEC_APPLICATION_DEFINITION_H__
|
#endif//WELS_VIDEO_CODEC_APPLICATION_DEFINITION_H__
|
||||||
|
@ -33,15 +33,9 @@
|
|||||||
#ifndef WELS_VIDEO_CODEC_DEFINITION_H__
|
#ifndef WELS_VIDEO_CODEC_DEFINITION_H__
|
||||||
#define WELS_VIDEO_CODEC_DEFINITION_H__
|
#define WELS_VIDEO_CODEC_DEFINITION_H__
|
||||||
|
|
||||||
/**
|
|
||||||
* @file codec_def.h
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Enumerate the type of video format
|
|
||||||
*/
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
videoFormatRGB = 1, ///< rgb color formats
|
/*rgb color formats*/
|
||||||
|
videoFormatRGB = 1,
|
||||||
videoFormatRGBA = 2,
|
videoFormatRGBA = 2,
|
||||||
videoFormatRGB555 = 3,
|
videoFormatRGB555 = 3,
|
||||||
videoFormatRGB565 = 4,
|
videoFormatRGB565 = 4,
|
||||||
@ -50,66 +44,56 @@ typedef enum {
|
|||||||
videoFormatABGR = 7,
|
videoFormatABGR = 7,
|
||||||
videoFormatARGB = 8,
|
videoFormatARGB = 8,
|
||||||
|
|
||||||
videoFormatYUY2 = 20, ///< yuv color formats
|
/*yuv color formats*/
|
||||||
|
videoFormatYUY2 = 20,
|
||||||
videoFormatYVYU = 21,
|
videoFormatYVYU = 21,
|
||||||
videoFormatUYVY = 22,
|
videoFormatUYVY = 22,
|
||||||
videoFormatI420 = 23, ///< the same as IYUV
|
videoFormatI420 = 23, //same as IYUV
|
||||||
videoFormatYV12 = 24,
|
videoFormatYV12 = 24,
|
||||||
videoFormatInternal = 25, ///< only used in SVC decoder testbed
|
videoFormatInternal = 25, // Only Used for SVC decoder testbed
|
||||||
|
|
||||||
videoFormatNV12 = 26, ///< new format for output by DXVA decoding
|
videoFormatNV12 = 26, // new format for output by DXVA decoding
|
||||||
|
|
||||||
videoFormatVFlip = 0x80000000
|
videoFormatVFlip = 0x80000000
|
||||||
} EVideoFormatType;
|
} EVideoFormatType;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Enumerate video frame type
|
|
||||||
*/
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
videoFrameTypeInvalid, ///< encoder not ready or parameters are invalidate
|
videoFrameTypeInvalid, /* Encoder not ready or parameters are invalidate */
|
||||||
videoFrameTypeIDR, ///< IDR frame in H.264
|
videoFrameTypeIDR, /* This type is only available for H264 if this frame is key frame, then return this type */
|
||||||
videoFrameTypeI, ///< I frame type
|
videoFrameTypeI, /* I frame type */
|
||||||
videoFrameTypeP, ///< P frame type
|
videoFrameTypeP, /* P frame type */
|
||||||
videoFrameTypeSkip, ///< skip the frame based encoder kernel
|
videoFrameTypeSkip, /* Skip the frame based encoder kernel */
|
||||||
videoFrameTypeIPMixed ///< a frame where I and P slices are mixing, not supported yet
|
videoFrameTypeIPMixed, /* Frame type introduced I and P slices are mixing */
|
||||||
} EVideoFrameType;
|
} EVideoFrameType;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Enumerate return type
|
|
||||||
*/
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
cmResultSuccess, ///< successful
|
cmResultSuccess,
|
||||||
cmInitParaError, ///< parameters are invalid
|
cmInitParaError, /*Parameters are invalid */
|
||||||
cmUnknownReason,
|
cmUnkonwReason,
|
||||||
cmMallocMemeError, ///< malloc a memory error
|
cmMallocMemeError, /*Malloc a memory error*/
|
||||||
cmInitExpected, ///< initial action is expected
|
cmInitExpected, /*Initial action is expected*/
|
||||||
cmUnsupportedData
|
cmUnsupportedData,
|
||||||
} CM_RETURN;
|
} CM_RETURN;
|
||||||
|
|
||||||
/**
|
/* nal unit type */
|
||||||
* @brief Enumulate the nal unit type
|
|
||||||
*/
|
|
||||||
enum ENalUnitType {
|
enum ENalUnitType {
|
||||||
NAL_UNKNOWN = 0,
|
NAL_UNKNOWN = 0,
|
||||||
NAL_SLICE = 1,
|
NAL_SLICE = 1,
|
||||||
NAL_SLICE_DPA = 2,
|
NAL_SLICE_DPA = 2,
|
||||||
NAL_SLICE_DPB = 3,
|
NAL_SLICE_DPB = 3,
|
||||||
NAL_SLICE_DPC = 4,
|
NAL_SLICE_DPC = 4,
|
||||||
NAL_SLICE_IDR = 5, ///< ref_idc != 0
|
NAL_SLICE_IDR = 5, /* ref_idc != 0 */
|
||||||
NAL_SEI = 6, ///< ref_idc == 0
|
NAL_SEI = 6, /* ref_idc == 0 */
|
||||||
NAL_SPS = 7,
|
NAL_SPS = 7,
|
||||||
NAL_PPS = 8
|
NAL_PPS = 8
|
||||||
///< ref_idc == 0 for 6,9,10,11,12
|
/* ref_idc == 0 for 6,9,10,11,12 */
|
||||||
};
|
};
|
||||||
|
/* NRI: eNalRefIdc */
|
||||||
/**
|
|
||||||
* @brief NRI: eNalRefIdc
|
|
||||||
*/
|
|
||||||
enum ENalPriority {
|
enum ENalPriority {
|
||||||
NAL_PRIORITY_DISPOSABLE = 0,
|
NAL_PRIORITY_DISPOSABLE = 0,
|
||||||
NAL_PRIORITY_LOW = 1,
|
NAL_PRIORITY_LOW = 1,
|
||||||
NAL_PRIORITY_HIGH = 2,
|
NAL_PRIORITY_HIGH = 2,
|
||||||
NAL_PRIORITY_HIGHEST = 3
|
NAL_PRIORITY_HIGHEST = 3,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define IS_PARAMETER_SET_NAL(eNalRefIdc, eNalType) \
|
#define IS_PARAMETER_SET_NAL(eNalRefIdc, eNalType) \
|
||||||
@ -118,96 +102,87 @@ enum ENalPriority {
|
|||||||
#define IS_IDR_NAL(eNalRefIdc, eNalType) \
|
#define IS_IDR_NAL(eNalRefIdc, eNalType) \
|
||||||
( (eNalRefIdc == NAL_PRIORITY_HIGHEST) && (eNalType == NAL_SLICE_IDR) )
|
( (eNalRefIdc == NAL_PRIORITY_HIGHEST) && (eNalType == NAL_SLICE_IDR) )
|
||||||
|
|
||||||
#define FRAME_NUM_PARAM_SET (-1)
|
#define FRAME_NUM_PARAM_SET (-1)
|
||||||
#define FRAME_NUM_IDR 0
|
#define FRAME_NUM_IDR 0
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief eDeblockingIdc
|
|
||||||
*/
|
|
||||||
enum {
|
|
||||||
DEBLOCKING_IDC_0 = 0,
|
|
||||||
DEBLOCKING_IDC_1 = 1,
|
|
||||||
DEBLOCKING_IDC_2 = 2
|
|
||||||
};
|
|
||||||
#define DEBLOCKING_OFFSET (6)
|
|
||||||
#define DEBLOCKING_OFFSET_MINUS (-6)
|
|
||||||
|
|
||||||
/* Error Tools definition */
|
/* Error Tools definition */
|
||||||
typedef unsigned short ERR_TOOL;
|
typedef unsigned short ERR_TOOL;
|
||||||
|
|
||||||
/**
|
|
||||||
@brief to do
|
|
||||||
*/
|
|
||||||
enum {
|
enum {
|
||||||
ET_NONE = 0x00, ///< NONE Error Tools
|
ET_NONE = 0x00, // NONE Error Tools
|
||||||
ET_IP_SCALE = 0x01, ///< IP Scalable
|
ET_IP_SCALE = 0x01, // IP Scalable
|
||||||
ET_FMO = 0x02, ///< Flexible Macroblock Ordering
|
ET_FMO = 0x02, // Flexible Macroblock Ordering
|
||||||
ET_IR_R1 = 0x04, ///< Intra Refresh in predifined 2% MB
|
ET_IR_R1 = 0x04, // Intra Refresh in predifined 2% MB
|
||||||
ET_IR_R2 = 0x08, ///< Intra Refresh in predifined 5% MB
|
ET_IR_R2 = 0x08, // Intra Refresh in predifined 5% MB
|
||||||
ET_IR_R3 = 0x10, ///< Intra Refresh in predifined 10% MB
|
ET_IR_R3 = 0x10, // Intra Refresh in predifined 10% MB
|
||||||
ET_FEC_HALF = 0x20, ///< Forward Error Correction in 50% redundency mode
|
ET_FEC_HALF = 0x20, // Forward Error Correction in 50% redundency mode
|
||||||
ET_FEC_FULL = 0x40, ///< Forward Error Correction in 100% 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) */
|
||||||
* @brief Information of coded Slice(=NAL)(s)
|
|
||||||
*/
|
|
||||||
typedef struct SliceInformation {
|
typedef struct SliceInformation {
|
||||||
unsigned char* pBufferOfSlices; ///< base buffer of coded slice(s)
|
unsigned char* pBufferOfSlices; // base buffer of coded slice(s)
|
||||||
int iCodedSliceCount; ///< number of coded slices
|
int iCodedSliceCount; // number of coded slices
|
||||||
unsigned int* pLengthOfSlices; ///< array of slices length accordingly by number of slice
|
unsigned int* pLengthOfSlices; // array of slices length accordingly by number of slice
|
||||||
int iFecType; ///< FEC type[0, 50%FEC, 100%FEC]
|
int iFecType; // FEC type[0, 50%FEC, 100%FEC]
|
||||||
unsigned char uiSliceIdx; ///< index of slice in frame [FMO: 0,..,uiSliceCount-1; No FMO: 0]
|
unsigned char uiSliceIdx; // index of slice in frame [FMO: 0,..,uiSliceCount-1; No FMO: 0]
|
||||||
unsigned char uiSliceCount; ///< count number of slice in frame [FMO: 2-8; No FMO: 1]
|
unsigned char uiSliceCount; // count number of slice in frame [FMO: 2-8; No FMO: 1]
|
||||||
char iFrameIndex; ///< index of frame[-1, .., idr_interval-1]
|
char iFrameIndex; // index of frame[-1, .., idr_interval-1]
|
||||||
unsigned char uiNalRefIdc; ///< NRI, priority level of slice(NAL)
|
unsigned char uiNalRefIdc; // NRI, priority level of slice(NAL)
|
||||||
unsigned char uiNalType; ///< NAL type
|
unsigned char uiNalType; // NAL type
|
||||||
unsigned char
|
unsigned char
|
||||||
uiContainingFinalNal; ///< whether final NAL is involved in buffer of coded slices, flag used in Pause feature in T27
|
uiContainingFinalNal; // whether final NAL is involved in buffer of coded slices, flag used in Pause feature in T27
|
||||||
} SliceInfo, *PSliceInfo;
|
} SliceInfo, *PSliceInfo;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief thresholds of the initial, maximal and minimal rate
|
|
||||||
*/
|
#define CIF_WIDTH 352
|
||||||
|
#define CIF_HEIGHT 288
|
||||||
|
#define QVGA_WIDTH 320
|
||||||
|
#define QVGA_HEIGHT 240
|
||||||
|
#define QCIF_WIDTH 176
|
||||||
|
#define QCIF_HEIGHT 144
|
||||||
|
#define SQCIF_WIDTH 128
|
||||||
|
#define SQCIF_HEIGHT 96
|
||||||
|
|
||||||
|
/* thresholds of the initial, maximal and minimal rate */
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int iWidth; ///< frame width
|
int iWidth; // frame width
|
||||||
int iHeight; ///< frame height
|
int iHeight; // frame height
|
||||||
int iThresholdOfInitRate; ///< threshold of initial rate
|
int iThresholdOfInitRate; // threshold of initial rate
|
||||||
int iThresholdOfMaxRate; ///< threshold of maximal rate
|
int iThresholdOfMaxRate; // threshold of maximal rate
|
||||||
int iThresholdOfMinRate; ///< threshold of minimal rate
|
int iThresholdOfMinRate; // threshold of minimal rate
|
||||||
int iMinThresholdFrameRate; ///< min frame rate min
|
int iMinThresholdFrameRate; //min frame rate min
|
||||||
int iSkipFrameRate; ///< skip to frame rate min
|
int iSkipFrameRate; //skip to frame rate min
|
||||||
int iSkipFrameStep; ///< how many frames to skip
|
int iSkipFrameStep; //how many frames to skip
|
||||||
} SRateThresholds, *PRateThresholds;
|
} SRateThresholds, *PRateThresholds;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Structure for decoder memery
|
|
||||||
*/
|
|
||||||
typedef struct TagSysMemBuffer {
|
typedef struct TagSysMemBuffer {
|
||||||
int iWidth; ///< width of decoded pic for display
|
int iWidth; //width of decoded pic for display
|
||||||
int iHeight; ///< height of decoded pic for display
|
int iHeight; //height of decoded pic for display
|
||||||
int iFormat; ///< type is "EVideoFormatType"
|
int iFormat; // type is "EVideoFormatType"
|
||||||
int iStride[2]; ///< stride of 2 component
|
int iStride[2]; //stride of 2 component
|
||||||
} SSysMEMBuffer;
|
} SSysMEMBuffer;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Buffer info
|
|
||||||
*/
|
|
||||||
typedef struct TagBufferInfo {
|
typedef struct TagBufferInfo {
|
||||||
int iBufferStatus; ///< 0: one frame data is not ready; 1: one frame data is ready
|
int iBufferStatus; // 0: one frame data is not ready; 1: one frame data is ready
|
||||||
unsigned long long uiInBsTimeStamp; ///< input BS timestamp
|
|
||||||
unsigned long long uiOutYuvTimeStamp; ///< output YUV timestamp, when bufferstatus is 1
|
|
||||||
union {
|
union {
|
||||||
SSysMEMBuffer sSystemBuffer; ///< memory info for one picture
|
SSysMEMBuffer sSystemBuffer;
|
||||||
} UsrData; ///< output buffer info
|
} UsrData;
|
||||||
} SBufferInfo;
|
} SBufferInfo;
|
||||||
|
|
||||||
|
/* Constants related to transmission rate at various resolutions */
|
||||||
|
static const SRateThresholds ksRateThrMap[4] = {
|
||||||
|
// initial-maximal-minimal
|
||||||
|
{CIF_WIDTH, CIF_HEIGHT, 225000, 384000, 96000, 3, 1, 1}, // CIF
|
||||||
|
{QVGA_WIDTH, QVGA_HEIGHT, 192000, 320000, 80000, -1, -1, -1}, // QVGA
|
||||||
|
{QCIF_WIDTH, QCIF_HEIGHT, 150000, 256000, 64000, 8, 4, 2}, // QCIF
|
||||||
|
{SQCIF_WIDTH, SQCIF_HEIGHT, 120000, 192000, 48000, 5, 3, 1} // SQCIF
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief In a GOP, multiple of the key frame number, derived from
|
// In a GOP, multiple of the key frame number, derived from
|
||||||
* the number of layers(index or array below)
|
// the number of layers(index or array below)
|
||||||
*/
|
|
||||||
static const char kiKeyNumMultiple[] = {
|
static const char kiKeyNumMultiple[] = {
|
||||||
1, 1, 2, 4, 8, 16,
|
1, 1, 2, 4, 8, 16,
|
||||||
};
|
};
|
||||||
|
@ -1,15 +0,0 @@
|
|||||||
//The current file is auto-generated by script: generate_codec_ver.sh
|
|
||||||
#ifndef CODEC_VER_H
|
|
||||||
#define CODEC_VER_H
|
|
||||||
|
|
||||||
#include "codec_app_def.h"
|
|
||||||
|
|
||||||
static const OpenH264Version g_stCodecVersion = {1, 6, 0, 0};
|
|
||||||
static const char* const g_strCodecVer = "OpenH264 version:1.6.0.0";
|
|
||||||
|
|
||||||
#define OPENH264_MAJOR (1)
|
|
||||||
#define OPENH264_MINOR (6)
|
|
||||||
#define OPENH264_REVISION (0)
|
|
||||||
#define OPENH264_RESERVED (0)
|
|
||||||
|
|
||||||
#endif // CODEC_VER_H
|
|
@ -11,21 +11,21 @@ extern "C"
|
|||||||
JNIEXPORT void JNICALL Java_com_wels_enc_WelsEncTest_DoEncoderAutoTest
|
JNIEXPORT void JNICALL Java_com_wels_enc_WelsEncTest_DoEncoderAutoTest
|
||||||
(JNIEnv* env, jobject thiz, jstring jsIncfgName, jstring jsInlayerName, jstring jsInyuvName, jstring jsOutbitName) {
|
(JNIEnv* env, jobject thiz, jstring jsIncfgName, jstring jsInlayerName, jstring jsInyuvName, jstring jsOutbitName) {
|
||||||
/**************** Add the native codes/API *****************/
|
/**************** Add the native codes/API *****************/
|
||||||
const char* argv[] = {
|
const char* argv[]={
|
||||||
(char*) ("encConsole.exe"),
|
(char*)("encConsole.exe"),
|
||||||
(char*) ((*env).GetStringUTFChars (jsIncfgName, NULL)),
|
(char*) ((*env).GetStringUTFChars (jsIncfgName, NULL)),
|
||||||
(char*) ("-org"),
|
(char*)("-org"),
|
||||||
(char*) ((*env).GetStringUTFChars (jsInyuvName, NULL)),
|
(char*) ((*env).GetStringUTFChars (jsInyuvName, NULL)),
|
||||||
(char*) ("-bf"),
|
(char*)("-bf"),
|
||||||
(char*) ((*env).GetStringUTFChars (jsOutbitName, NULL)),
|
(char*) ((*env).GetStringUTFChars (jsOutbitName, NULL)),
|
||||||
(char*) ("-numl"),
|
(char*)("-numl"),
|
||||||
(char*) ("1"),
|
(char*)("1"),
|
||||||
(char*) ("-lconfig"),
|
(char*)("-lconfig"),
|
||||||
(char*) ("0"),
|
(char*)("0"),
|
||||||
(char*) ((*env).GetStringUTFChars (jsInlayerName, NULL))
|
(char*) ((*env).GetStringUTFChars (jsInlayerName, NULL))
|
||||||
};
|
};
|
||||||
LOGI ("Start to run JNI module!+++");
|
LOGI ("Start to run JNI module!+++");
|
||||||
EncMain (sizeof (argv) / sizeof (argv[0]), (char**)&argv[0]);
|
EncMain(sizeof(argv)/sizeof(argv[0]),(char**)&argv[0]);
|
||||||
LOGI ("End to run JNI module!+++");
|
LOGI ("End to run JNI module!+++");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -34,7 +34,7 @@ JNIEXPORT void JNICALL Java_com_wels_enc_WelsEncTest_DoEncoderTest
|
|||||||
/**************** Add the native codes/API *****************/
|
/**************** Add the native codes/API *****************/
|
||||||
char* argv[2];
|
char* argv[2];
|
||||||
int argc = 2;
|
int argc = 2;
|
||||||
argv[0] = (char*) ("encConsole.exe");
|
argv[0] = (char*) ("decConsole.exe");
|
||||||
argv[1] = (char*) ((*env).GetStringUTFChars (jsFileNameIn, NULL));
|
argv[1] = (char*) ((*env).GetStringUTFChars (jsFileNameIn, NULL));
|
||||||
LOGI ("Start to run JNI module!+++");
|
LOGI ("Start to run JNI module!+++");
|
||||||
EncMain (argc, argv);
|
EncMain (argc, argv);
|
||||||
|
@ -1,62 +0,0 @@
|
|||||||
# Run this to update the codec_ver.h at changes of api
|
|
||||||
|
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
|
|
||||||
if [ "$1"x = ""x ]; then
|
|
||||||
echo "Please input the version number as: major_ver.minor_ver.patch.reserve"
|
|
||||||
exit 127
|
|
||||||
fi
|
|
||||||
|
|
||||||
codec_ver=`echo "$1" | egrep "^([0-9]+[.]){3}[0-9]+$"`
|
|
||||||
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
echo "Please input the version number as: major_ver.minor_ver.patch.reserve"
|
|
||||||
exit 127
|
|
||||||
fi
|
|
||||||
|
|
||||||
revision=`git show | head -n 1`
|
|
||||||
revision=`echo $revision|cut -d' ' -f2|sed -e 's#[ ]*\(.*\)[ ]*#\1#'`
|
|
||||||
revision=${revision:0:7}
|
|
||||||
|
|
||||||
echo "//The current file is auto-generated by script: generate_codec_ver.sh" >>codec_ver.h
|
|
||||||
echo "#ifndef CODEC_VER_H" >>codec_ver.h
|
|
||||||
echo "#define CODEC_VER_H" >>codec_ver.h
|
|
||||||
echo "" >>codec_ver.h
|
|
||||||
|
|
||||||
echo "#include \"codec_app_def.h\"" >>codec_ver.h
|
|
||||||
echo "" >>codec_ver.h
|
|
||||||
|
|
||||||
fullver="$1"
|
|
||||||
major="${1%%.*}"
|
|
||||||
tmp=${1#*.}
|
|
||||||
minor="${tmp%%.*}"
|
|
||||||
tmp=${tmp#*.}
|
|
||||||
revnr="${tmp%%.*}"
|
|
||||||
tmp=${tmp#*.}
|
|
||||||
resnr="${tmp%%.*}"
|
|
||||||
|
|
||||||
echo "static const OpenH264Version g_stCodecVersion = {$major, $minor, $revnr, $resnr};" >>codec_ver.h
|
|
||||||
echo "static const char* const g_strCodecVer = \"OpenH264 version:$fullver\";" >>codec_ver.h
|
|
||||||
#if [ "$2"x = ""x ]; then
|
|
||||||
#echo "static const char* const g_strCodecBuildNum = \"OpenH264 revision:$revision\";" >> codec_ver.h
|
|
||||||
#else
|
|
||||||
#echo "static const char* const g_strCodecBuildNum = \"OpenH264 build:$2, OpenH264 revision:$revision\";" >> codec_ver.h
|
|
||||||
#fi
|
|
||||||
echo "" >>codec_ver.h
|
|
||||||
|
|
||||||
#define OPENH264_MAJOR 1, #define OPENH264_MINOR 2 #define OPENH264_REVISION 3 #define OPENH264_RESERVED 0
|
|
||||||
echo "#define OPENH264_MAJOR ($major)" >>codec_ver.h
|
|
||||||
echo "#define OPENH264_MINOR ($minor)" >>codec_ver.h
|
|
||||||
echo "#define OPENH264_REVISION ($revnr)" >>codec_ver.h
|
|
||||||
echo "#define OPENH264_RESERVED ($resnr)" >>codec_ver.h
|
|
||||||
echo "" >>codec_ver.h
|
|
||||||
|
|
||||||
echo "#endif // CODEC_VER_H" >>codec_ver.h
|
|
||||||
|
|
||||||
mv -f codec_ver.h ../api/svc/codec_ver.h
|
|
||||||
|
|
||||||
# Ignore non-utf8 chars in the input
|
|
||||||
export LC_ALL=C
|
|
||||||
cat ../../openh264.rc.template | sed "s/\$MAJOR/$major/g" | sed "s/\$MINOR/$minor/g" | sed "s/\$REVISION/$revnr/g" | sed "s/\$RESERVED/$resnr/g" > openh264.rc.tmp
|
|
||||||
mv openh264.rc.tmp ../../openh264.rc
|
|
@ -7,9 +7,6 @@
|
|||||||
objects = {
|
objects = {
|
||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
0DD32A861B467902009181A1 /* WelsThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0DD32A851B467902009181A1 /* WelsThread.cpp */; };
|
|
||||||
0DD32A881B467911009181A1 /* WelsTaskThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0DD32A871B467911009181A1 /* WelsTaskThread.cpp */; };
|
|
||||||
0DD32A941B468F77009181A1 /* WelsThreadPool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0DD32A931B468F77009181A1 /* WelsThreadPool.cpp */; };
|
|
||||||
4C3406C918D96EA600DFA14A /* arm_arch_common_macro.S in Sources */ = {isa = PBXBuildFile; fileRef = 4C3406B218D96EA600DFA14A /* arm_arch_common_macro.S */; };
|
4C3406C918D96EA600DFA14A /* arm_arch_common_macro.S in Sources */ = {isa = PBXBuildFile; fileRef = 4C3406B218D96EA600DFA14A /* arm_arch_common_macro.S */; };
|
||||||
4C3406CA18D96EA600DFA14A /* deblocking_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 4C3406B318D96EA600DFA14A /* deblocking_neon.S */; };
|
4C3406CA18D96EA600DFA14A /* deblocking_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 4C3406B318D96EA600DFA14A /* deblocking_neon.S */; };
|
||||||
4C3406CB18D96EA600DFA14A /* expand_picture_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 4C3406B418D96EA600DFA14A /* expand_picture_neon.S */; };
|
4C3406CB18D96EA600DFA14A /* expand_picture_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 4C3406B418D96EA600DFA14A /* expand_picture_neon.S */; };
|
||||||
@ -22,17 +19,12 @@
|
|||||||
4CE443D918B722CD0017DF25 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4CE443D818B722CD0017DF25 /* Foundation.framework */; };
|
4CE443D918B722CD0017DF25 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4CE443D818B722CD0017DF25 /* Foundation.framework */; };
|
||||||
53C1C9BC193F0FB000404D8F /* expand_pic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 53C1C9BB193F0FB000404D8F /* expand_pic.cpp */; };
|
53C1C9BC193F0FB000404D8F /* expand_pic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 53C1C9BB193F0FB000404D8F /* expand_pic.cpp */; };
|
||||||
5BA8F2C019603F5F00011CE4 /* common_tables.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5BA8F2BF19603F5F00011CE4 /* common_tables.cpp */; };
|
5BA8F2C019603F5F00011CE4 /* common_tables.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5BA8F2BF19603F5F00011CE4 /* common_tables.cpp */; };
|
||||||
5BD896BA1A7B839B00D32B7D /* memory_align.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5BD896B91A7B839B00D32B7D /* memory_align.cpp */; };
|
|
||||||
5BDD15ED1A79027600B6CA2E /* mc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5BDD15EC1A79027600B6CA2E /* mc.cpp */; };
|
|
||||||
F0B204F918FD23BF005DA23F /* copy_mb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F0B204F818FD23BF005DA23F /* copy_mb.cpp */; };
|
F0B204F918FD23BF005DA23F /* copy_mb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F0B204F818FD23BF005DA23F /* copy_mb.cpp */; };
|
||||||
F556A8241906673900E156A8 /* arm_arch64_common_macro.S in Sources */ = {isa = PBXBuildFile; fileRef = F556A8221906673900E156A8 /* arm_arch64_common_macro.S */; };
|
F556A8241906673900E156A8 /* arm_arch64_common_macro.S in Sources */ = {isa = PBXBuildFile; fileRef = F556A8221906673900E156A8 /* arm_arch64_common_macro.S */; };
|
||||||
F556A8251906673900E156A8 /* expand_picture_aarch64_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = F556A8231906673900E156A8 /* expand_picture_aarch64_neon.S */; };
|
F556A8251906673900E156A8 /* expand_picture_aarch64_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = F556A8231906673900E156A8 /* expand_picture_aarch64_neon.S */; };
|
||||||
F5AC94FF193EB7D800F58154 /* deblocking_aarch64_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = F5AC94FE193EB7D800F58154 /* deblocking_aarch64_neon.S */; };
|
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 */; };
|
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 */; };
|
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 */; };
|
FAABAA1818E9354A00D4186F /* sad_common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAABAA1718E9354A00D4186F /* sad_common.cpp */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
@ -49,16 +41,6 @@
|
|||||||
/* End PBXCopyFilesBuildPhase section */
|
/* End PBXCopyFilesBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
0DB71EF31BAB273500EABC51 /* WelsCircleQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WelsCircleQueue.h; sourceTree = "<group>"; };
|
|
||||||
0DD32A851B467902009181A1 /* WelsThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WelsThread.cpp; sourceTree = "<group>"; };
|
|
||||||
0DD32A871B467911009181A1 /* WelsTaskThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WelsTaskThread.cpp; sourceTree = "<group>"; };
|
|
||||||
0DD32A8E1B467B83009181A1 /* WelsLock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WelsLock.h; sourceTree = "<group>"; };
|
|
||||||
0DD32A8F1B467C73009181A1 /* WelsTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WelsTask.h; sourceTree = "<group>"; };
|
|
||||||
0DD32A901B467C73009181A1 /* WelsTaskThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WelsTaskThread.h; sourceTree = "<group>"; };
|
|
||||||
0DD32A911B467C73009181A1 /* WelsThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WelsThread.h; sourceTree = "<group>"; };
|
|
||||||
0DD32A921B467C73009181A1 /* WelsThreadPool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WelsThreadPool.h; sourceTree = "<group>"; };
|
|
||||||
0DD32A931B468F77009181A1 /* WelsThreadPool.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WelsThreadPool.cpp; sourceTree = "<group>"; };
|
|
||||||
0DEA477E1BB36FE100ADD134 /* WelsList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WelsList.h; sourceTree = "<group>"; };
|
|
||||||
4C3406B218D96EA600DFA14A /* arm_arch_common_macro.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = arm_arch_common_macro.S; sourceTree = "<group>"; };
|
4C3406B218D96EA600DFA14A /* arm_arch_common_macro.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = arm_arch_common_macro.S; sourceTree = "<group>"; };
|
||||||
4C3406B318D96EA600DFA14A /* deblocking_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = deblocking_neon.S; sourceTree = "<group>"; };
|
4C3406B318D96EA600DFA14A /* deblocking_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = deblocking_neon.S; sourceTree = "<group>"; };
|
||||||
4C3406B418D96EA600DFA14A /* expand_picture_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = expand_picture_neon.S; sourceTree = "<group>"; };
|
4C3406B418D96EA600DFA14A /* expand_picture_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = expand_picture_neon.S; sourceTree = "<group>"; };
|
||||||
@ -69,6 +51,7 @@
|
|||||||
4C3406BA18D96EA600DFA14A /* deblocking_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = deblocking_common.h; sourceTree = "<group>"; };
|
4C3406BA18D96EA600DFA14A /* deblocking_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = deblocking_common.h; sourceTree = "<group>"; };
|
||||||
4C3406BD18D96EA600DFA14A /* ls_defines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ls_defines.h; sourceTree = "<group>"; };
|
4C3406BD18D96EA600DFA14A /* ls_defines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ls_defines.h; sourceTree = "<group>"; };
|
||||||
4C3406BE18D96EA600DFA14A /* macros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = macros.h; sourceTree = "<group>"; };
|
4C3406BE18D96EA600DFA14A /* macros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = macros.h; sourceTree = "<group>"; };
|
||||||
|
4C3406BF18D96EA600DFA14A /* mc_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mc_common.h; sourceTree = "<group>"; };
|
||||||
4C3406C018D96EA600DFA14A /* measure_time.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = measure_time.h; sourceTree = "<group>"; };
|
4C3406C018D96EA600DFA14A /* measure_time.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = measure_time.h; sourceTree = "<group>"; };
|
||||||
4C3406C118D96EA600DFA14A /* typedefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = typedefs.h; sourceTree = "<group>"; };
|
4C3406C118D96EA600DFA14A /* typedefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = typedefs.h; sourceTree = "<group>"; };
|
||||||
4C3406C218D96EA600DFA14A /* WelsThreadLib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WelsThreadLib.h; sourceTree = "<group>"; };
|
4C3406C218D96EA600DFA14A /* WelsThreadLib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WelsThreadLib.h; sourceTree = "<group>"; };
|
||||||
@ -82,13 +65,8 @@
|
|||||||
4CE443E918B722CD0017DF25 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; };
|
4CE443E918B722CD0017DF25 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; };
|
||||||
53C1C9BA193F0F9E00404D8F /* expand_pic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = expand_pic.h; sourceTree = "<group>"; };
|
53C1C9BA193F0F9E00404D8F /* expand_pic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = expand_pic.h; sourceTree = "<group>"; };
|
||||||
53C1C9BB193F0FB000404D8F /* expand_pic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = expand_pic.cpp; sourceTree = "<group>"; };
|
53C1C9BB193F0FB000404D8F /* expand_pic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = expand_pic.cpp; sourceTree = "<group>"; };
|
||||||
5B9196F91A7F8BA40075D641 /* wels_const_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wels_const_common.h; sourceTree = "<group>"; };
|
|
||||||
5BA8F2BE19603F3500011CE4 /* wels_common_defs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wels_common_defs.h; sourceTree = "<group>"; };
|
5BA8F2BE19603F3500011CE4 /* wels_common_defs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wels_common_defs.h; sourceTree = "<group>"; };
|
||||||
5BA8F2BF19603F5F00011CE4 /* common_tables.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = common_tables.cpp; sourceTree = "<group>"; };
|
5BA8F2BF19603F5F00011CE4 /* common_tables.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = common_tables.cpp; sourceTree = "<group>"; };
|
||||||
5BD896B81A7B837700D32B7D /* memory_align.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = memory_align.h; sourceTree = "<group>"; };
|
|
||||||
5BD896B91A7B839B00D32B7D /* memory_align.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = memory_align.cpp; sourceTree = "<group>"; };
|
|
||||||
5BDD15EB1A79026A00B6CA2E /* mc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mc.h; sourceTree = "<group>"; };
|
|
||||||
5BDD15EC1A79027600B6CA2E /* mc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mc.cpp; sourceTree = "<group>"; };
|
|
||||||
F0B204F718FD23B6005DA23F /* copy_mb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = copy_mb.h; sourceTree = "<group>"; };
|
F0B204F718FD23B6005DA23F /* copy_mb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = copy_mb.h; sourceTree = "<group>"; };
|
||||||
F0B204F818FD23BF005DA23F /* copy_mb.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = copy_mb.cpp; sourceTree = "<group>"; };
|
F0B204F818FD23BF005DA23F /* copy_mb.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = copy_mb.cpp; sourceTree = "<group>"; };
|
||||||
F556A8221906673900E156A8 /* arm_arch64_common_macro.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = arm_arch64_common_macro.S; path = arm64/arm_arch64_common_macro.S; sourceTree = "<group>"; };
|
F556A8221906673900E156A8 /* arm_arch64_common_macro.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = arm_arch64_common_macro.S; path = arm64/arm_arch64_common_macro.S; sourceTree = "<group>"; };
|
||||||
@ -96,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>"; };
|
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>"; };
|
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>"; };
|
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>"; };
|
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>"; };
|
FAABAA1718E9354A00D4186F /* sad_common.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sad_common.cpp; sourceTree = "<group>"; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
@ -119,7 +93,6 @@
|
|||||||
4C3406B118D96EA600DFA14A /* arm */ = {
|
4C3406B118D96EA600DFA14A /* arm */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
F791965519D3B8A600F60C6B /* intra_pred_common_neon.S */,
|
|
||||||
4CC61F0818FF6B4B00E56EAB /* copy_mb_neon.S */,
|
4CC61F0818FF6B4B00E56EAB /* copy_mb_neon.S */,
|
||||||
4C3406B218D96EA600DFA14A /* arm_arch_common_macro.S */,
|
4C3406B218D96EA600DFA14A /* arm_arch_common_macro.S */,
|
||||||
4C3406B318D96EA600DFA14A /* deblocking_neon.S */,
|
4C3406B318D96EA600DFA14A /* deblocking_neon.S */,
|
||||||
@ -132,7 +105,6 @@
|
|||||||
4C3406B618D96EA600DFA14A /* inc */ = {
|
4C3406B618D96EA600DFA14A /* inc */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
F791965719D3BA9300F60C6B /* intra_pred_common.h */,
|
|
||||||
F0B204F718FD23B6005DA23F /* copy_mb.h */,
|
F0B204F718FD23B6005DA23F /* copy_mb.h */,
|
||||||
FAABAA1618E9353F00D4186F /* sad_common.h */,
|
FAABAA1618E9353F00D4186F /* sad_common.h */,
|
||||||
4C3406B718D96EA600DFA14A /* cpu.h */,
|
4C3406B718D96EA600DFA14A /* cpu.h */,
|
||||||
@ -142,19 +114,10 @@
|
|||||||
4C3406BA18D96EA600DFA14A /* deblocking_common.h */,
|
4C3406BA18D96EA600DFA14A /* deblocking_common.h */,
|
||||||
4C3406BD18D96EA600DFA14A /* ls_defines.h */,
|
4C3406BD18D96EA600DFA14A /* ls_defines.h */,
|
||||||
4C3406BE18D96EA600DFA14A /* macros.h */,
|
4C3406BE18D96EA600DFA14A /* macros.h */,
|
||||||
5BDD15EB1A79026A00B6CA2E /* mc.h */,
|
4C3406BF18D96EA600DFA14A /* mc_common.h */,
|
||||||
4C3406C018D96EA600DFA14A /* measure_time.h */,
|
4C3406C018D96EA600DFA14A /* measure_time.h */,
|
||||||
5BD896B81A7B837700D32B7D /* memory_align.h */,
|
|
||||||
4C3406C118D96EA600DFA14A /* typedefs.h */,
|
4C3406C118D96EA600DFA14A /* typedefs.h */,
|
||||||
5BA8F2BE19603F3500011CE4 /* wels_common_defs.h */,
|
5BA8F2BE19603F3500011CE4 /* wels_common_defs.h */,
|
||||||
0DB71EF31BAB273500EABC51 /* WelsCircleQueue.h */,
|
|
||||||
0DEA477E1BB36FE100ADD134 /* WelsList.h */,
|
|
||||||
0DD32A8E1B467B83009181A1 /* WelsLock.h */,
|
|
||||||
0DD32A8F1B467C73009181A1 /* WelsTask.h */,
|
|
||||||
0DD32A901B467C73009181A1 /* WelsTaskThread.h */,
|
|
||||||
0DD32A911B467C73009181A1 /* WelsThread.h */,
|
|
||||||
0DD32A921B467C73009181A1 /* WelsThreadPool.h */,
|
|
||||||
5B9196F91A7F8BA40075D641 /* wels_const_common.h */,
|
|
||||||
4C3406C218D96EA600DFA14A /* WelsThreadLib.h */,
|
4C3406C218D96EA600DFA14A /* WelsThreadLib.h */,
|
||||||
);
|
);
|
||||||
path = inc;
|
path = inc;
|
||||||
@ -163,7 +126,6 @@
|
|||||||
4C3406C318D96EA600DFA14A /* src */ = {
|
4C3406C318D96EA600DFA14A /* src */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
F791965819D3BE2200F60C6B /* intra_pred_common.cpp */,
|
|
||||||
5BA8F2BF19603F5F00011CE4 /* common_tables.cpp */,
|
5BA8F2BF19603F5F00011CE4 /* common_tables.cpp */,
|
||||||
F0B204F818FD23BF005DA23F /* copy_mb.cpp */,
|
F0B204F818FD23BF005DA23F /* copy_mb.cpp */,
|
||||||
FAABAA1718E9354A00D4186F /* sad_common.cpp */,
|
FAABAA1718E9354A00D4186F /* sad_common.cpp */,
|
||||||
@ -171,11 +133,6 @@
|
|||||||
4C3406C518D96EA600DFA14A /* crt_util_safe_x.cpp */,
|
4C3406C518D96EA600DFA14A /* crt_util_safe_x.cpp */,
|
||||||
53C1C9BB193F0FB000404D8F /* expand_pic.cpp */,
|
53C1C9BB193F0FB000404D8F /* expand_pic.cpp */,
|
||||||
4C3406C618D96EA600DFA14A /* deblocking_common.cpp */,
|
4C3406C618D96EA600DFA14A /* deblocking_common.cpp */,
|
||||||
5BDD15EC1A79027600B6CA2E /* mc.cpp */,
|
|
||||||
5BD896B91A7B839B00D32B7D /* memory_align.cpp */,
|
|
||||||
0DD32A871B467911009181A1 /* WelsTaskThread.cpp */,
|
|
||||||
0DD32A931B468F77009181A1 /* WelsThreadPool.cpp */,
|
|
||||||
0DD32A851B467902009181A1 /* WelsThread.cpp */,
|
|
||||||
4C3406C818D96EA600DFA14A /* WelsThreadLib.cpp */,
|
4C3406C818D96EA600DFA14A /* WelsThreadLib.cpp */,
|
||||||
);
|
);
|
||||||
path = src;
|
path = src;
|
||||||
@ -222,7 +179,6 @@
|
|||||||
F556A81D1906669F00E156A8 /* arm64 */ = {
|
F556A81D1906669F00E156A8 /* arm64 */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
F791965319D3B89D00F60C6B /* intra_pred_common_aarch64_neon.S */,
|
|
||||||
F5BB0BB7196BB5960072D50D /* copy_mb_aarch64_neon.S */,
|
F5BB0BB7196BB5960072D50D /* copy_mb_aarch64_neon.S */,
|
||||||
F5AC94FE193EB7D800F58154 /* deblocking_aarch64_neon.S */,
|
F5AC94FE193EB7D800F58154 /* deblocking_aarch64_neon.S */,
|
||||||
F5B8D82C190757290037849A /* mc_aarch64_neon.S */,
|
F5B8D82C190757290037849A /* mc_aarch64_neon.S */,
|
||||||
@ -283,25 +239,17 @@
|
|||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
0DD32A941B468F77009181A1 /* WelsThreadPool.cpp in Sources */,
|
|
||||||
F5B8D82D190757290037849A /* mc_aarch64_neon.S in Sources */,
|
F5B8D82D190757290037849A /* mc_aarch64_neon.S in Sources */,
|
||||||
4C3406C918D96EA600DFA14A /* arm_arch_common_macro.S in Sources */,
|
4C3406C918D96EA600DFA14A /* arm_arch_common_macro.S in Sources */,
|
||||||
F556A8241906673900E156A8 /* arm_arch64_common_macro.S in Sources */,
|
F556A8241906673900E156A8 /* arm_arch64_common_macro.S in Sources */,
|
||||||
5BDD15ED1A79027600B6CA2E /* mc.cpp in Sources */,
|
|
||||||
F5AC94FF193EB7D800F58154 /* deblocking_aarch64_neon.S in Sources */,
|
F5AC94FF193EB7D800F58154 /* deblocking_aarch64_neon.S in Sources */,
|
||||||
4C3406CE18D96EA600DFA14A /* crt_util_safe_x.cpp in Sources */,
|
4C3406CE18D96EA600DFA14A /* crt_util_safe_x.cpp in Sources */,
|
||||||
F791965919D3BE2200F60C6B /* intra_pred_common.cpp in Sources */,
|
|
||||||
5BD896BA1A7B839B00D32B7D /* memory_align.cpp in Sources */,
|
|
||||||
0DD32A881B467911009181A1 /* WelsTaskThread.cpp in Sources */,
|
|
||||||
4C3406CF18D96EA600DFA14A /* deblocking_common.cpp in Sources */,
|
4C3406CF18D96EA600DFA14A /* deblocking_common.cpp in Sources */,
|
||||||
5BA8F2C019603F5F00011CE4 /* common_tables.cpp in Sources */,
|
5BA8F2C019603F5F00011CE4 /* common_tables.cpp in Sources */,
|
||||||
0DD32A861B467902009181A1 /* WelsThread.cpp in Sources */,
|
|
||||||
F791965419D3B89D00F60C6B /* intra_pred_common_aarch64_neon.S in Sources */,
|
|
||||||
4C3406D118D96EA600DFA14A /* WelsThreadLib.cpp in Sources */,
|
4C3406D118D96EA600DFA14A /* WelsThreadLib.cpp in Sources */,
|
||||||
4C3406CC18D96EA600DFA14A /* mc_neon.S in Sources */,
|
4C3406CC18D96EA600DFA14A /* mc_neon.S in Sources */,
|
||||||
F5BB0BB8196BB5960072D50D /* copy_mb_aarch64_neon.S in Sources */,
|
F5BB0BB8196BB5960072D50D /* copy_mb_aarch64_neon.S in Sources */,
|
||||||
4C3406CB18D96EA600DFA14A /* expand_picture_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 */,
|
4CC61F0918FF6B4B00E56EAB /* copy_mb_neon.S in Sources */,
|
||||||
53C1C9BC193F0FB000404D8F /* expand_pic.cpp in Sources */,
|
53C1C9BC193F0FB000404D8F /* expand_pic.cpp in Sources */,
|
||||||
4C3406CD18D96EA600DFA14A /* cpu.cpp in Sources */,
|
4C3406CD18D96EA600DFA14A /* cpu.cpp in Sources */,
|
||||||
@ -406,11 +354,6 @@
|
|||||||
HAVE_NEON,
|
HAVE_NEON,
|
||||||
);
|
);
|
||||||
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*]" = APPLE_IOS;
|
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*]" = APPLE_IOS;
|
||||||
HEADER_SEARCH_PATHS = (
|
|
||||||
"$(inherited)",
|
|
||||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
|
||||||
"$(SRCROOT)/../../../api/svc",
|
|
||||||
);
|
|
||||||
OTHER_LDFLAGS = "-ObjC";
|
OTHER_LDFLAGS = "-ObjC";
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
@ -438,11 +381,6 @@
|
|||||||
HAVE_NEON,
|
HAVE_NEON,
|
||||||
);
|
);
|
||||||
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*]" = APPLE_IOS;
|
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*]" = APPLE_IOS;
|
||||||
HEADER_SEARCH_PATHS = (
|
|
||||||
"$(inherited)",
|
|
||||||
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
|
||||||
"$(SRCROOT)/../../../api/svc",
|
|
||||||
);
|
|
||||||
OTHER_LDFLAGS = "-ObjC";
|
OTHER_LDFLAGS = "-ObjC";
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
|
@ -47,7 +47,7 @@ extern int DecMain(int argc, char * argv[]);
|
|||||||
- (void)viewDidLoad
|
- (void)viewDidLoad
|
||||||
{
|
{
|
||||||
[super viewDidLoad];
|
[super viewDidLoad];
|
||||||
// Do any additional setup after loading the view, typically from a nib.
|
// Do any additional setup after loading the view, typically from a nib.
|
||||||
//Add the testing codes
|
//Add the testing codes
|
||||||
self.resFileArray = [[NSMutableArray alloc] init];
|
self.resFileArray = [[NSMutableArray alloc] init];
|
||||||
self.selectedRow = 0;
|
self.selectedRow = 0;
|
||||||
|
@ -20,6 +20,8 @@
|
|||||||
4CE4469318BC5EAB0017DF25 /* fmo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4467018BC5EAA0017DF25 /* fmo.cpp */; };
|
4CE4469318BC5EAB0017DF25 /* fmo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4467018BC5EAA0017DF25 /* fmo.cpp */; };
|
||||||
4CE4469418BC5EAB0017DF25 /* get_intra_predictor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4467118BC5EAA0017DF25 /* get_intra_predictor.cpp */; };
|
4CE4469418BC5EAB0017DF25 /* get_intra_predictor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4467118BC5EAA0017DF25 /* get_intra_predictor.cpp */; };
|
||||||
4CE4469518BC5EAB0017DF25 /* manage_dec_ref.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4467218BC5EAA0017DF25 /* manage_dec_ref.cpp */; };
|
4CE4469518BC5EAB0017DF25 /* manage_dec_ref.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4467218BC5EAA0017DF25 /* manage_dec_ref.cpp */; };
|
||||||
|
4CE4469618BC5EAB0017DF25 /* mc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4467318BC5EAA0017DF25 /* mc.cpp */; };
|
||||||
|
4CE4469718BC5EAB0017DF25 /* mem_align.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4467418BC5EAA0017DF25 /* mem_align.cpp */; };
|
||||||
4CE4469818BC5EAB0017DF25 /* memmgr_nal_unit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4467518BC5EAA0017DF25 /* memmgr_nal_unit.cpp */; };
|
4CE4469818BC5EAB0017DF25 /* memmgr_nal_unit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4467518BC5EAA0017DF25 /* memmgr_nal_unit.cpp */; };
|
||||||
4CE4469918BC5EAB0017DF25 /* mv_pred.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4467618BC5EAA0017DF25 /* mv_pred.cpp */; };
|
4CE4469918BC5EAB0017DF25 /* mv_pred.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4467618BC5EAA0017DF25 /* mv_pred.cpp */; };
|
||||||
4CE4469A18BC5EAB0017DF25 /* parse_mb_syn_cavlc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4467718BC5EAA0017DF25 /* parse_mb_syn_cavlc.cpp */; };
|
4CE4469A18BC5EAB0017DF25 /* parse_mb_syn_cavlc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4467718BC5EAA0017DF25 /* parse_mb_syn_cavlc.cpp */; };
|
||||||
@ -28,9 +30,8 @@
|
|||||||
4CE4469F18BC5EAB0017DF25 /* welsDecoderExt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4468518BC5EAB0017DF25 /* welsDecoderExt.cpp */; };
|
4CE4469F18BC5EAB0017DF25 /* welsDecoderExt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4468518BC5EAB0017DF25 /* welsDecoderExt.cpp */; };
|
||||||
4CE447AC18BC6BE90017DF25 /* block_add_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 4CE447A718BC6BE90017DF25 /* block_add_neon.S */; };
|
4CE447AC18BC6BE90017DF25 /* block_add_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 4CE447A718BC6BE90017DF25 /* block_add_neon.S */; };
|
||||||
4CE447AE18BC6BE90017DF25 /* intra_pred_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 4CE447A918BC6BE90017DF25 /* intra_pred_neon.S */; };
|
4CE447AE18BC6BE90017DF25 /* intra_pred_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 4CE447A918BC6BE90017DF25 /* intra_pred_neon.S */; };
|
||||||
6A3E814219D79AE900C19C1F /* cabac_decoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6A3E814119D79AE900C19C1F /* cabac_decoder.cpp */; };
|
|
||||||
6A3E814419D7A40600C19C1F /* parse_mb_syn_cabac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6A3E814319D7A40600C19C1F /* parse_mb_syn_cabac.cpp */; };
|
|
||||||
6C749B6A197CC6E600A111F9 /* block_add_aarch64_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 6C749B69197CC6E600A111F9 /* block_add_aarch64_neon.S */; };
|
6C749B6A197CC6E600A111F9 /* block_add_aarch64_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 6C749B69197CC6E600A111F9 /* block_add_aarch64_neon.S */; };
|
||||||
|
9ABF4382193EB60900A6BD61 /* expand_pic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9ABF4381193EB60900A6BD61 /* expand_pic.cpp */; };
|
||||||
9AED66561946A1DE009A3567 /* welsCodecTrace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AED66551946A1DE009A3567 /* welsCodecTrace.cpp */; };
|
9AED66561946A1DE009A3567 /* welsCodecTrace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AED66551946A1DE009A3567 /* welsCodecTrace.cpp */; };
|
||||||
9AED66591946A203009A3567 /* utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AED66581946A203009A3567 /* utils.cpp */; };
|
9AED66591946A203009A3567 /* utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AED66581946A203009A3567 /* utils.cpp */; };
|
||||||
F0B204FC18FD23D8005DA23F /* error_concealment.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F0B204FB18FD23D8005DA23F /* error_concealment.cpp */; };
|
F0B204FC18FD23D8005DA23F /* error_concealment.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F0B204FB18FD23D8005DA23F /* error_concealment.cpp */; };
|
||||||
@ -54,6 +55,7 @@
|
|||||||
4CE4427918B6FC360017DF25 /* libwelsdec.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libwelsdec.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
4CE4427918B6FC360017DF25 /* libwelsdec.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libwelsdec.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
4CE4427C18B6FC360017DF25 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
4CE4427C18B6FC360017DF25 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||||
4CE4428D18B6FC360017DF25 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; };
|
4CE4428D18B6FC360017DF25 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; };
|
||||||
|
4CE4464518BC5EAA0017DF25 /* as264_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = as264_common.h; sourceTree = "<group>"; };
|
||||||
4CE4464618BC5EAA0017DF25 /* au_parser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = au_parser.h; sourceTree = "<group>"; };
|
4CE4464618BC5EAA0017DF25 /* au_parser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = au_parser.h; sourceTree = "<group>"; };
|
||||||
4CE4464718BC5EAA0017DF25 /* bit_stream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bit_stream.h; sourceTree = "<group>"; };
|
4CE4464718BC5EAA0017DF25 /* bit_stream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bit_stream.h; sourceTree = "<group>"; };
|
||||||
4CE4464818BC5EAA0017DF25 /* deblocking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = deblocking.h; sourceTree = "<group>"; };
|
4CE4464818BC5EAA0017DF25 /* deblocking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = deblocking.h; sourceTree = "<group>"; };
|
||||||
@ -69,6 +71,8 @@
|
|||||||
4CE4465318BC5EAA0017DF25 /* get_intra_predictor.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = get_intra_predictor.h; sourceTree = "<group>"; tabWidth = 4; usesTabs = 0; };
|
4CE4465318BC5EAA0017DF25 /* get_intra_predictor.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = get_intra_predictor.h; sourceTree = "<group>"; tabWidth = 4; usesTabs = 0; };
|
||||||
4CE4465418BC5EAA0017DF25 /* manage_dec_ref.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = manage_dec_ref.h; sourceTree = "<group>"; };
|
4CE4465418BC5EAA0017DF25 /* manage_dec_ref.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = manage_dec_ref.h; sourceTree = "<group>"; };
|
||||||
4CE4465518BC5EAA0017DF25 /* mb_cache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mb_cache.h; sourceTree = "<group>"; };
|
4CE4465518BC5EAA0017DF25 /* mb_cache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mb_cache.h; sourceTree = "<group>"; };
|
||||||
|
4CE4465618BC5EAA0017DF25 /* mc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mc.h; sourceTree = "<group>"; };
|
||||||
|
4CE4465718BC5EAA0017DF25 /* mem_align.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mem_align.h; sourceTree = "<group>"; };
|
||||||
4CE4465818BC5EAA0017DF25 /* memmgr_nal_unit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = memmgr_nal_unit.h; sourceTree = "<group>"; };
|
4CE4465818BC5EAA0017DF25 /* memmgr_nal_unit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = memmgr_nal_unit.h; sourceTree = "<group>"; };
|
||||||
4CE4465918BC5EAA0017DF25 /* mv_pred.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mv_pred.h; sourceTree = "<group>"; };
|
4CE4465918BC5EAA0017DF25 /* mv_pred.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mv_pred.h; sourceTree = "<group>"; };
|
||||||
4CE4465A18BC5EAA0017DF25 /* nal_prefix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nal_prefix.h; sourceTree = "<group>"; };
|
4CE4465A18BC5EAA0017DF25 /* nal_prefix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nal_prefix.h; sourceTree = "<group>"; };
|
||||||
@ -93,6 +97,8 @@
|
|||||||
4CE4467018BC5EAA0017DF25 /* fmo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fmo.cpp; sourceTree = "<group>"; };
|
4CE4467018BC5EAA0017DF25 /* fmo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fmo.cpp; sourceTree = "<group>"; };
|
||||||
4CE4467118BC5EAA0017DF25 /* get_intra_predictor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = get_intra_predictor.cpp; sourceTree = "<group>"; };
|
4CE4467118BC5EAA0017DF25 /* get_intra_predictor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = get_intra_predictor.cpp; sourceTree = "<group>"; };
|
||||||
4CE4467218BC5EAA0017DF25 /* manage_dec_ref.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = manage_dec_ref.cpp; sourceTree = "<group>"; };
|
4CE4467218BC5EAA0017DF25 /* manage_dec_ref.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = manage_dec_ref.cpp; sourceTree = "<group>"; };
|
||||||
|
4CE4467318BC5EAA0017DF25 /* mc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mc.cpp; sourceTree = "<group>"; tabWidth = 1; usesTabs = 0; wrapsLines = 1; };
|
||||||
|
4CE4467418BC5EAA0017DF25 /* mem_align.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mem_align.cpp; sourceTree = "<group>"; };
|
||||||
4CE4467518BC5EAA0017DF25 /* memmgr_nal_unit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = memmgr_nal_unit.cpp; sourceTree = "<group>"; };
|
4CE4467518BC5EAA0017DF25 /* memmgr_nal_unit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = memmgr_nal_unit.cpp; sourceTree = "<group>"; };
|
||||||
4CE4467618BC5EAA0017DF25 /* mv_pred.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mv_pred.cpp; sourceTree = "<group>"; };
|
4CE4467618BC5EAA0017DF25 /* mv_pred.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mv_pred.cpp; sourceTree = "<group>"; };
|
||||||
4CE4467718BC5EAA0017DF25 /* parse_mb_syn_cavlc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = parse_mb_syn_cavlc.cpp; sourceTree = "<group>"; };
|
4CE4467718BC5EAA0017DF25 /* parse_mb_syn_cavlc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = parse_mb_syn_cavlc.cpp; sourceTree = "<group>"; };
|
||||||
@ -103,11 +109,9 @@
|
|||||||
4CE4468518BC5EAB0017DF25 /* welsDecoderExt.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = welsDecoderExt.cpp; sourceTree = "<group>"; };
|
4CE4468518BC5EAB0017DF25 /* welsDecoderExt.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = welsDecoderExt.cpp; sourceTree = "<group>"; };
|
||||||
4CE447A718BC6BE90017DF25 /* block_add_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = block_add_neon.S; sourceTree = "<group>"; };
|
4CE447A718BC6BE90017DF25 /* block_add_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = block_add_neon.S; sourceTree = "<group>"; };
|
||||||
4CE447A918BC6BE90017DF25 /* intra_pred_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = intra_pred_neon.S; sourceTree = "<group>"; };
|
4CE447A918BC6BE90017DF25 /* intra_pred_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = intra_pred_neon.S; sourceTree = "<group>"; };
|
||||||
6A3E814019D79AD900C19C1F /* cabac_decoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cabac_decoder.h; sourceTree = "<group>"; };
|
|
||||||
6A3E814119D79AE900C19C1F /* cabac_decoder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cabac_decoder.cpp; sourceTree = "<group>"; };
|
|
||||||
6A3E814319D7A40600C19C1F /* parse_mb_syn_cabac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = parse_mb_syn_cabac.cpp; sourceTree = "<group>"; };
|
|
||||||
6A3E814519D7A40D00C19C1F /* parse_mb_syn_cabac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = parse_mb_syn_cabac.h; sourceTree = "<group>"; };
|
|
||||||
6C749B69197CC6E600A111F9 /* block_add_aarch64_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = block_add_aarch64_neon.S; path = arm64/block_add_aarch64_neon.S; sourceTree = "<group>"; };
|
6C749B69197CC6E600A111F9 /* block_add_aarch64_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = block_add_aarch64_neon.S; path = arm64/block_add_aarch64_neon.S; sourceTree = "<group>"; };
|
||||||
|
9ABF4380193EB5F700A6BD61 /* expand_pic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = expand_pic.h; path = ../../../common/inc/expand_pic.h; sourceTree = "<group>"; };
|
||||||
|
9ABF4381193EB60900A6BD61 /* expand_pic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = expand_pic.cpp; path = ../../../common/src/expand_pic.cpp; sourceTree = "<group>"; };
|
||||||
9AED66551946A1DE009A3567 /* welsCodecTrace.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = welsCodecTrace.cpp; path = ../../../common/src/welsCodecTrace.cpp; sourceTree = "<group>"; };
|
9AED66551946A1DE009A3567 /* welsCodecTrace.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = welsCodecTrace.cpp; path = ../../../common/src/welsCodecTrace.cpp; sourceTree = "<group>"; };
|
||||||
9AED66571946A1EB009A3567 /* welsCodecTrace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = welsCodecTrace.h; path = ../../../common/inc/welsCodecTrace.h; sourceTree = "<group>"; };
|
9AED66571946A1EB009A3567 /* welsCodecTrace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = welsCodecTrace.h; path = ../../../common/inc/welsCodecTrace.h; sourceTree = "<group>"; };
|
||||||
9AED66581946A203009A3567 /* utils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = utils.cpp; path = ../../../common/src/utils.cpp; sourceTree = "<group>"; };
|
9AED66581946A203009A3567 /* utils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = utils.cpp; path = ../../../common/src/utils.cpp; sourceTree = "<group>"; };
|
||||||
@ -187,10 +191,10 @@
|
|||||||
4CE4464418BC5EAA0017DF25 /* inc */ = {
|
4CE4464418BC5EAA0017DF25 /* inc */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
6A3E814519D7A40D00C19C1F /* parse_mb_syn_cabac.h */,
|
|
||||||
6A3E814019D79AD900C19C1F /* cabac_decoder.h */,
|
|
||||||
9AED665A1946A21D009A3567 /* utils.h */,
|
9AED665A1946A21D009A3567 /* utils.h */,
|
||||||
|
9ABF4380193EB5F700A6BD61 /* expand_pic.h */,
|
||||||
F0B204FA18FD23CF005DA23F /* error_concealment.h */,
|
F0B204FA18FD23CF005DA23F /* error_concealment.h */,
|
||||||
|
4CE4464518BC5EAA0017DF25 /* as264_common.h */,
|
||||||
4CE4464618BC5EAA0017DF25 /* au_parser.h */,
|
4CE4464618BC5EAA0017DF25 /* au_parser.h */,
|
||||||
4CE4464718BC5EAA0017DF25 /* bit_stream.h */,
|
4CE4464718BC5EAA0017DF25 /* bit_stream.h */,
|
||||||
4CE4464818BC5EAA0017DF25 /* deblocking.h */,
|
4CE4464818BC5EAA0017DF25 /* deblocking.h */,
|
||||||
@ -206,6 +210,8 @@
|
|||||||
4CE4465318BC5EAA0017DF25 /* get_intra_predictor.h */,
|
4CE4465318BC5EAA0017DF25 /* get_intra_predictor.h */,
|
||||||
4CE4465418BC5EAA0017DF25 /* manage_dec_ref.h */,
|
4CE4465418BC5EAA0017DF25 /* manage_dec_ref.h */,
|
||||||
4CE4465518BC5EAA0017DF25 /* mb_cache.h */,
|
4CE4465518BC5EAA0017DF25 /* mb_cache.h */,
|
||||||
|
4CE4465618BC5EAA0017DF25 /* mc.h */,
|
||||||
|
4CE4465718BC5EAA0017DF25 /* mem_align.h */,
|
||||||
4CE4465818BC5EAA0017DF25 /* memmgr_nal_unit.h */,
|
4CE4465818BC5EAA0017DF25 /* memmgr_nal_unit.h */,
|
||||||
4CE4465918BC5EAA0017DF25 /* mv_pred.h */,
|
4CE4465918BC5EAA0017DF25 /* mv_pred.h */,
|
||||||
4CE4465A18BC5EAA0017DF25 /* nal_prefix.h */,
|
4CE4465A18BC5EAA0017DF25 /* nal_prefix.h */,
|
||||||
@ -226,9 +232,8 @@
|
|||||||
4CE4466618BC5EAA0017DF25 /* src */ = {
|
4CE4466618BC5EAA0017DF25 /* src */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
6A3E814319D7A40600C19C1F /* parse_mb_syn_cabac.cpp */,
|
|
||||||
6A3E814119D79AE900C19C1F /* cabac_decoder.cpp */,
|
|
||||||
9AED66581946A203009A3567 /* utils.cpp */,
|
9AED66581946A203009A3567 /* utils.cpp */,
|
||||||
|
9ABF4381193EB60900A6BD61 /* expand_pic.cpp */,
|
||||||
F0B204FB18FD23D8005DA23F /* error_concealment.cpp */,
|
F0B204FB18FD23D8005DA23F /* error_concealment.cpp */,
|
||||||
4CE4466718BC5EAA0017DF25 /* au_parser.cpp */,
|
4CE4466718BC5EAA0017DF25 /* au_parser.cpp */,
|
||||||
4CE4466818BC5EAA0017DF25 /* bit_stream.cpp */,
|
4CE4466818BC5EAA0017DF25 /* bit_stream.cpp */,
|
||||||
@ -241,6 +246,8 @@
|
|||||||
4CE4467018BC5EAA0017DF25 /* fmo.cpp */,
|
4CE4467018BC5EAA0017DF25 /* fmo.cpp */,
|
||||||
4CE4467118BC5EAA0017DF25 /* get_intra_predictor.cpp */,
|
4CE4467118BC5EAA0017DF25 /* get_intra_predictor.cpp */,
|
||||||
4CE4467218BC5EAA0017DF25 /* manage_dec_ref.cpp */,
|
4CE4467218BC5EAA0017DF25 /* manage_dec_ref.cpp */,
|
||||||
|
4CE4467318BC5EAA0017DF25 /* mc.cpp */,
|
||||||
|
4CE4467418BC5EAA0017DF25 /* mem_align.cpp */,
|
||||||
4CE4467518BC5EAA0017DF25 /* memmgr_nal_unit.cpp */,
|
4CE4467518BC5EAA0017DF25 /* memmgr_nal_unit.cpp */,
|
||||||
4CE4467618BC5EAA0017DF25 /* mv_pred.cpp */,
|
4CE4467618BC5EAA0017DF25 /* mv_pred.cpp */,
|
||||||
4CE4467718BC5EAA0017DF25 /* parse_mb_syn_cavlc.cpp */,
|
4CE4467718BC5EAA0017DF25 /* parse_mb_syn_cavlc.cpp */,
|
||||||
@ -339,15 +346,15 @@
|
|||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
6A3E814419D7A40600C19C1F /* parse_mb_syn_cabac.cpp in Sources */,
|
|
||||||
4CE4469B18BC5EAB0017DF25 /* pic_queue.cpp in Sources */,
|
4CE4469B18BC5EAB0017DF25 /* pic_queue.cpp in Sources */,
|
||||||
4CE4469F18BC5EAB0017DF25 /* welsDecoderExt.cpp in Sources */,
|
4CE4469F18BC5EAB0017DF25 /* welsDecoderExt.cpp in Sources */,
|
||||||
4CE4469318BC5EAB0017DF25 /* fmo.cpp in Sources */,
|
4CE4469318BC5EAB0017DF25 /* fmo.cpp in Sources */,
|
||||||
4CE4469118BC5EAB0017DF25 /* decoder_data_tables.cpp in Sources */,
|
4CE4469118BC5EAB0017DF25 /* decoder_data_tables.cpp in Sources */,
|
||||||
|
4CE4469718BC5EAB0017DF25 /* mem_align.cpp in Sources */,
|
||||||
|
9ABF4382193EB60900A6BD61 /* expand_pic.cpp in Sources */,
|
||||||
4CE4469518BC5EAB0017DF25 /* manage_dec_ref.cpp in Sources */,
|
4CE4469518BC5EAB0017DF25 /* manage_dec_ref.cpp in Sources */,
|
||||||
4CE4468A18BC5EAB0017DF25 /* au_parser.cpp in Sources */,
|
4CE4468A18BC5EAB0017DF25 /* au_parser.cpp in Sources */,
|
||||||
4CE4469918BC5EAB0017DF25 /* mv_pred.cpp in Sources */,
|
4CE4469918BC5EAB0017DF25 /* mv_pred.cpp in Sources */,
|
||||||
6A3E814219D79AE900C19C1F /* cabac_decoder.cpp in Sources */,
|
|
||||||
4CE447AC18BC6BE90017DF25 /* block_add_neon.S in Sources */,
|
4CE447AC18BC6BE90017DF25 /* block_add_neon.S in Sources */,
|
||||||
6C749B6A197CC6E600A111F9 /* block_add_aarch64_neon.S in Sources */,
|
6C749B6A197CC6E600A111F9 /* block_add_aarch64_neon.S in Sources */,
|
||||||
4CE4469418BC5EAB0017DF25 /* get_intra_predictor.cpp in Sources */,
|
4CE4469418BC5EAB0017DF25 /* get_intra_predictor.cpp in Sources */,
|
||||||
@ -356,6 +363,7 @@
|
|||||||
4CBC1B81194AC4E100214D9E /* intra_pred_aarch64_neon.S in Sources */,
|
4CBC1B81194AC4E100214D9E /* intra_pred_aarch64_neon.S in Sources */,
|
||||||
4CE4469018BC5EAB0017DF25 /* decoder_core.cpp in Sources */,
|
4CE4469018BC5EAB0017DF25 /* decoder_core.cpp in Sources */,
|
||||||
4CE447AE18BC6BE90017DF25 /* intra_pred_neon.S in Sources */,
|
4CE447AE18BC6BE90017DF25 /* intra_pred_neon.S in Sources */,
|
||||||
|
4CE4469618BC5EAB0017DF25 /* mc.cpp in Sources */,
|
||||||
4CE4469C18BC5EAB0017DF25 /* rec_mb.cpp in Sources */,
|
4CE4469C18BC5EAB0017DF25 /* rec_mb.cpp in Sources */,
|
||||||
4CE4468B18BC5EAB0017DF25 /* bit_stream.cpp in Sources */,
|
4CE4468B18BC5EAB0017DF25 /* bit_stream.cpp in Sources */,
|
||||||
4CE4468D18BC5EAB0017DF25 /* decode_mb_aux.cpp in Sources */,
|
4CE4468D18BC5EAB0017DF25 /* decode_mb_aux.cpp in Sources */,
|
||||||
|
@ -7,10 +7,6 @@
|
|||||||
objects = {
|
objects = {
|
||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
0D6970BE1CA5BCFB001D88F8 /* paraset_strategy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0D6970BC1CA5BCFB001D88F8 /* paraset_strategy.cpp */; };
|
|
||||||
0DD32A961B4A478B009181A1 /* wels_task_base.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0DD32A951B4A478B009181A1 /* wels_task_base.cpp */; };
|
|
||||||
0DD32A991B4A4997009181A1 /* wels_task_management.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0DD32A981B4A4997009181A1 /* wels_task_management.cpp */; };
|
|
||||||
0DD32A9C1B4A4E8F009181A1 /* wels_task_encoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0DD32A9B1B4A4E8F009181A1 /* wels_task_encoder.cpp */; };
|
|
||||||
4C23BC60195A77E0003B81FC /* intra_pred_sad_3_opt_aarch64_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 4C23BC5F195A77E0003B81FC /* intra_pred_sad_3_opt_aarch64_neon.S */; };
|
4C23BC60195A77E0003B81FC /* intra_pred_sad_3_opt_aarch64_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 4C23BC5F195A77E0003B81FC /* intra_pred_sad_3_opt_aarch64_neon.S */; };
|
||||||
4C34066D18C57D0400DFA14A /* intra_pred_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 4C34066618C57D0400DFA14A /* intra_pred_neon.S */; };
|
4C34066D18C57D0400DFA14A /* intra_pred_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 4C34066618C57D0400DFA14A /* intra_pred_neon.S */; };
|
||||||
4C34066E18C57D0400DFA14A /* intra_pred_sad_3_opt_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 4C34066718C57D0400DFA14A /* intra_pred_sad_3_opt_neon.S */; };
|
4C34066E18C57D0400DFA14A /* intra_pred_sad_3_opt_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 4C34066718C57D0400DFA14A /* intra_pred_sad_3_opt_neon.S */; };
|
||||||
@ -28,10 +24,13 @@
|
|||||||
4CE4471318BC605C0017DF25 /* encoder_data_tables.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE446E218BC605C0017DF25 /* encoder_data_tables.cpp */; };
|
4CE4471318BC605C0017DF25 /* encoder_data_tables.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE446E218BC605C0017DF25 /* encoder_data_tables.cpp */; };
|
||||||
4CE4471418BC605C0017DF25 /* encoder_ext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE446E318BC605C0017DF25 /* encoder_ext.cpp */; };
|
4CE4471418BC605C0017DF25 /* encoder_ext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE446E318BC605C0017DF25 /* encoder_ext.cpp */; };
|
||||||
4CE4471618BC605C0017DF25 /* get_intra_predictor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE446E518BC605C0017DF25 /* get_intra_predictor.cpp */; };
|
4CE4471618BC605C0017DF25 /* get_intra_predictor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE446E518BC605C0017DF25 /* get_intra_predictor.cpp */; };
|
||||||
|
4CE4471718BC605C0017DF25 /* mc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE446E618BC605C0017DF25 /* mc.cpp */; };
|
||||||
4CE4471818BC605C0017DF25 /* md.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE446E718BC605C0017DF25 /* md.cpp */; };
|
4CE4471818BC605C0017DF25 /* md.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE446E718BC605C0017DF25 /* md.cpp */; };
|
||||||
|
4CE4471918BC605C0017DF25 /* memory_align.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE446E818BC605C0017DF25 /* memory_align.cpp */; };
|
||||||
4CE4471A18BC605C0017DF25 /* mv_pred.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE446E918BC605C0017DF25 /* mv_pred.cpp */; };
|
4CE4471A18BC605C0017DF25 /* mv_pred.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE446E918BC605C0017DF25 /* mv_pred.cpp */; };
|
||||||
4CE4471B18BC605C0017DF25 /* nal_encap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE446EA18BC605C0017DF25 /* nal_encap.cpp */; };
|
4CE4471B18BC605C0017DF25 /* nal_encap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE446EA18BC605C0017DF25 /* nal_encap.cpp */; };
|
||||||
4CE4471C18BC605C0017DF25 /* picture_handle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE446EB18BC605C0017DF25 /* picture_handle.cpp */; };
|
4CE4471C18BC605C0017DF25 /* picture_handle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE446EB18BC605C0017DF25 /* picture_handle.cpp */; };
|
||||||
|
4CE4471D18BC605C0017DF25 /* property.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE446EC18BC605C0017DF25 /* property.cpp */; };
|
||||||
4CE4471E18BC605C0017DF25 /* ratectl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE446ED18BC605C0017DF25 /* ratectl.cpp */; };
|
4CE4471E18BC605C0017DF25 /* ratectl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE446ED18BC605C0017DF25 /* ratectl.cpp */; };
|
||||||
4CE4471F18BC605C0017DF25 /* ref_list_mgr_svc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE446EE18BC605C0017DF25 /* ref_list_mgr_svc.cpp */; };
|
4CE4471F18BC605C0017DF25 /* ref_list_mgr_svc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE446EE18BC605C0017DF25 /* ref_list_mgr_svc.cpp */; };
|
||||||
4CE4472018BC605C0017DF25 /* sample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE446EF18BC605C0017DF25 /* sample.cpp */; };
|
4CE4472018BC605C0017DF25 /* sample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE446EF18BC605C0017DF25 /* sample.cpp */; };
|
||||||
@ -52,8 +51,6 @@
|
|||||||
9AED66661946A2B3009A3567 /* utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AED66651946A2B3009A3567 /* utils.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 */; };
|
F5617A50196A833A006E2B20 /* reconstruct_aarch64_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = F5617A4F196A833A006E2B20 /* reconstruct_aarch64_neon.S */; };
|
||||||
F5BE8005196B913200ED02ED /* memory_aarch64_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = F5BE8004196B913200ED02ED /* memory_aarch64_neon.S */; };
|
F5BE8005196B913200ED02ED /* memory_aarch64_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = F5BE8004196B913200ED02ED /* memory_aarch64_neon.S */; };
|
||||||
F7E9994519EBD1E9009B1021 /* svc_set_mb_syn_cabac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F7E9994419EBD1E9009B1021 /* svc_set_mb_syn_cabac.cpp */; };
|
|
||||||
F7E9994919EBD1F8009B1021 /* set_mb_syn_cabac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F7E9994819EBD1F8009B1021 /* set_mb_syn_cabac.cpp */; };
|
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXCopyFilesBuildPhase section */
|
/* Begin PBXCopyFilesBuildPhase section */
|
||||||
@ -70,14 +67,6 @@
|
|||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
04FE0684196FD9370004D7CE /* version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = version.h; path = ../../../common/inc/version.h; sourceTree = "<group>"; };
|
04FE0684196FD9370004D7CE /* version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = version.h; path = ../../../common/inc/version.h; sourceTree = "<group>"; };
|
||||||
0D6970BC1CA5BCFB001D88F8 /* paraset_strategy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = paraset_strategy.cpp; sourceTree = "<group>"; };
|
|
||||||
0D6970BF1CA5BD26001D88F8 /* paraset_strategy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = paraset_strategy.h; sourceTree = "<group>"; };
|
|
||||||
0DD32A951B4A478B009181A1 /* wels_task_base.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wels_task_base.cpp; sourceTree = "<group>"; };
|
|
||||||
0DD32A971B4A47D0009181A1 /* wels_task_base.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wels_task_base.h; sourceTree = "<group>"; };
|
|
||||||
0DD32A981B4A4997009181A1 /* wels_task_management.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wels_task_management.cpp; sourceTree = "<group>"; };
|
|
||||||
0DD32A9A1B4A49AC009181A1 /* wels_task_management.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wels_task_management.h; sourceTree = "<group>"; };
|
|
||||||
0DD32A9B1B4A4E8F009181A1 /* wels_task_encoder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wels_task_encoder.cpp; sourceTree = "<group>"; };
|
|
||||||
0DD32A9D1B4A4E9C009181A1 /* wels_task_encoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wels_task_encoder.h; sourceTree = "<group>"; };
|
|
||||||
4C23BC5F195A77E0003B81FC /* intra_pred_sad_3_opt_aarch64_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = intra_pred_sad_3_opt_aarch64_neon.S; path = arm64/intra_pred_sad_3_opt_aarch64_neon.S; sourceTree = "<group>"; };
|
4C23BC5F195A77E0003B81FC /* intra_pred_sad_3_opt_aarch64_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = intra_pred_sad_3_opt_aarch64_neon.S; path = arm64/intra_pred_sad_3_opt_aarch64_neon.S; sourceTree = "<group>"; };
|
||||||
4C34066618C57D0400DFA14A /* intra_pred_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = intra_pred_neon.S; sourceTree = "<group>"; };
|
4C34066618C57D0400DFA14A /* intra_pred_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = intra_pred_neon.S; sourceTree = "<group>"; };
|
||||||
4C34066718C57D0400DFA14A /* intra_pred_sad_3_opt_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = intra_pred_sad_3_opt_neon.S; sourceTree = "<group>"; };
|
4C34066718C57D0400DFA14A /* intra_pred_sad_3_opt_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = intra_pred_sad_3_opt_neon.S; sourceTree = "<group>"; };
|
||||||
@ -92,6 +81,7 @@
|
|||||||
4CE4432518B6FFA00017DF25 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; };
|
4CE4432518B6FFA00017DF25 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; };
|
||||||
4CE446AA18BC605C0017DF25 /* as264_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = as264_common.h; sourceTree = "<group>"; };
|
4CE446AA18BC605C0017DF25 /* as264_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = as264_common.h; sourceTree = "<group>"; };
|
||||||
4CE446AB18BC605C0017DF25 /* au_set.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = au_set.h; sourceTree = "<group>"; };
|
4CE446AB18BC605C0017DF25 /* au_set.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = au_set.h; sourceTree = "<group>"; };
|
||||||
|
4CE446AC18BC605C0017DF25 /* bit_stream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bit_stream.h; sourceTree = "<group>"; };
|
||||||
4CE446AE18BC605C0017DF25 /* deblocking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = deblocking.h; sourceTree = "<group>"; };
|
4CE446AE18BC605C0017DF25 /* deblocking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = deblocking.h; sourceTree = "<group>"; };
|
||||||
4CE446AF18BC605C0017DF25 /* decode_mb_aux.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = decode_mb_aux.h; sourceTree = "<group>"; };
|
4CE446AF18BC605C0017DF25 /* decode_mb_aux.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = decode_mb_aux.h; sourceTree = "<group>"; };
|
||||||
4CE446B018BC605C0017DF25 /* dq_map.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dq_map.h; sourceTree = "<group>"; };
|
4CE446B018BC605C0017DF25 /* dq_map.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dq_map.h; sourceTree = "<group>"; };
|
||||||
@ -101,14 +91,18 @@
|
|||||||
4CE446B518BC605C0017DF25 /* extern.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = extern.h; sourceTree = "<group>"; };
|
4CE446B518BC605C0017DF25 /* extern.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = extern.h; sourceTree = "<group>"; };
|
||||||
4CE446B618BC605C0017DF25 /* get_intra_predictor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = get_intra_predictor.h; sourceTree = "<group>"; };
|
4CE446B618BC605C0017DF25 /* get_intra_predictor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = get_intra_predictor.h; sourceTree = "<group>"; };
|
||||||
4CE446B718BC605C0017DF25 /* mb_cache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mb_cache.h; sourceTree = "<group>"; };
|
4CE446B718BC605C0017DF25 /* mb_cache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mb_cache.h; sourceTree = "<group>"; };
|
||||||
|
4CE446B818BC605C0017DF25 /* mc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mc.h; sourceTree = "<group>"; };
|
||||||
4CE446B918BC605C0017DF25 /* md.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = md.h; sourceTree = "<group>"; };
|
4CE446B918BC605C0017DF25 /* md.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = md.h; sourceTree = "<group>"; };
|
||||||
|
4CE446BA18BC605C0017DF25 /* memory_align.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = memory_align.h; sourceTree = "<group>"; };
|
||||||
4CE446BB18BC605C0017DF25 /* mt_defs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mt_defs.h; sourceTree = "<group>"; };
|
4CE446BB18BC605C0017DF25 /* mt_defs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mt_defs.h; sourceTree = "<group>"; };
|
||||||
4CE446BC18BC605C0017DF25 /* mv_pred.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mv_pred.h; sourceTree = "<group>"; };
|
4CE446BC18BC605C0017DF25 /* mv_pred.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mv_pred.h; sourceTree = "<group>"; };
|
||||||
4CE446BD18BC605C0017DF25 /* nal_encap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nal_encap.h; sourceTree = "<group>"; };
|
4CE446BD18BC605C0017DF25 /* nal_encap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nal_encap.h; sourceTree = "<group>"; };
|
||||||
|
4CE446BE18BC605C0017DF25 /* nal_prefix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nal_prefix.h; sourceTree = "<group>"; };
|
||||||
4CE446BF18BC605C0017DF25 /* param_svc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = param_svc.h; sourceTree = "<group>"; };
|
4CE446BF18BC605C0017DF25 /* param_svc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = param_svc.h; sourceTree = "<group>"; };
|
||||||
4CE446C018BC605C0017DF25 /* parameter_sets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = parameter_sets.h; sourceTree = "<group>"; };
|
4CE446C018BC605C0017DF25 /* parameter_sets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = parameter_sets.h; sourceTree = "<group>"; };
|
||||||
4CE446C118BC605C0017DF25 /* picture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = picture.h; sourceTree = "<group>"; };
|
4CE446C118BC605C0017DF25 /* picture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = picture.h; sourceTree = "<group>"; };
|
||||||
4CE446C218BC605C0017DF25 /* picture_handle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = picture_handle.h; sourceTree = "<group>"; };
|
4CE446C218BC605C0017DF25 /* picture_handle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = picture_handle.h; sourceTree = "<group>"; };
|
||||||
|
4CE446C318BC605C0017DF25 /* property.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = property.h; sourceTree = "<group>"; };
|
||||||
4CE446C418BC605C0017DF25 /* rc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rc.h; sourceTree = "<group>"; };
|
4CE446C418BC605C0017DF25 /* rc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rc.h; sourceTree = "<group>"; };
|
||||||
4CE446C518BC605C0017DF25 /* ref_list_mgr_svc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ref_list_mgr_svc.h; sourceTree = "<group>"; };
|
4CE446C518BC605C0017DF25 /* ref_list_mgr_svc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ref_list_mgr_svc.h; sourceTree = "<group>"; };
|
||||||
4CE446C618BC605C0017DF25 /* sample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sample.h; sourceTree = "<group>"; };
|
4CE446C618BC605C0017DF25 /* sample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sample.h; sourceTree = "<group>"; };
|
||||||
@ -139,10 +133,13 @@
|
|||||||
4CE446E218BC605C0017DF25 /* encoder_data_tables.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = encoder_data_tables.cpp; sourceTree = "<group>"; };
|
4CE446E218BC605C0017DF25 /* encoder_data_tables.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = encoder_data_tables.cpp; sourceTree = "<group>"; };
|
||||||
4CE446E318BC605C0017DF25 /* encoder_ext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = encoder_ext.cpp; sourceTree = "<group>"; };
|
4CE446E318BC605C0017DF25 /* encoder_ext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = encoder_ext.cpp; sourceTree = "<group>"; };
|
||||||
4CE446E518BC605C0017DF25 /* get_intra_predictor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = get_intra_predictor.cpp; sourceTree = "<group>"; };
|
4CE446E518BC605C0017DF25 /* get_intra_predictor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = get_intra_predictor.cpp; sourceTree = "<group>"; };
|
||||||
|
4CE446E618BC605C0017DF25 /* mc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mc.cpp; sourceTree = "<group>"; };
|
||||||
4CE446E718BC605C0017DF25 /* md.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = md.cpp; sourceTree = "<group>"; };
|
4CE446E718BC605C0017DF25 /* md.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = md.cpp; sourceTree = "<group>"; };
|
||||||
|
4CE446E818BC605C0017DF25 /* memory_align.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = memory_align.cpp; sourceTree = "<group>"; };
|
||||||
4CE446E918BC605C0017DF25 /* mv_pred.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mv_pred.cpp; sourceTree = "<group>"; };
|
4CE446E918BC605C0017DF25 /* mv_pred.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mv_pred.cpp; sourceTree = "<group>"; };
|
||||||
4CE446EA18BC605C0017DF25 /* nal_encap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = nal_encap.cpp; sourceTree = "<group>"; };
|
4CE446EA18BC605C0017DF25 /* nal_encap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = nal_encap.cpp; sourceTree = "<group>"; };
|
||||||
4CE446EB18BC605C0017DF25 /* picture_handle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = picture_handle.cpp; sourceTree = "<group>"; };
|
4CE446EB18BC605C0017DF25 /* picture_handle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = picture_handle.cpp; sourceTree = "<group>"; };
|
||||||
|
4CE446EC18BC605C0017DF25 /* property.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = property.cpp; sourceTree = "<group>"; };
|
||||||
4CE446ED18BC605C0017DF25 /* ratectl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ratectl.cpp; sourceTree = "<group>"; };
|
4CE446ED18BC605C0017DF25 /* ratectl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ratectl.cpp; sourceTree = "<group>"; };
|
||||||
4CE446EE18BC605C0017DF25 /* ref_list_mgr_svc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ref_list_mgr_svc.cpp; sourceTree = "<group>"; };
|
4CE446EE18BC605C0017DF25 /* ref_list_mgr_svc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ref_list_mgr_svc.cpp; sourceTree = "<group>"; };
|
||||||
4CE446EF18BC605C0017DF25 /* sample.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sample.cpp; sourceTree = "<group>"; };
|
4CE446EF18BC605C0017DF25 /* sample.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sample.cpp; sourceTree = "<group>"; };
|
||||||
@ -161,17 +158,12 @@
|
|||||||
4CE4470618BC605C0017DF25 /* welsEncoderExt.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = welsEncoderExt.cpp; 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>"; };
|
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>"; };
|
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>"; };
|
||||||
98FE4C1A1AB0200C0031E2B4 /* golomb_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = golomb_common.h; path = ../../../common/inc/golomb_common.h; sourceTree = "<group>"; };
|
|
||||||
9AED664819469FAF009A3567 /* welsCodecTrace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = welsCodecTrace.h; path = ../../../common/inc/welsCodecTrace.h; 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>"; };
|
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>"; };
|
9AED66651946A2B3009A3567 /* utils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = utils.cpp; path = ../../../common/src/utils.cpp; sourceTree = "<group>"; };
|
||||||
9AED66671946A2C4009A3567 /* utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = utils.h; path = ../../../common/inc/utils.h; sourceTree = "<group>"; };
|
9AED66671946A2C4009A3567 /* utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = utils.h; path = ../../../common/inc/utils.h; sourceTree = "<group>"; };
|
||||||
F5617A4F196A833A006E2B20 /* reconstruct_aarch64_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = reconstruct_aarch64_neon.S; path = arm64/reconstruct_aarch64_neon.S; sourceTree = "<group>"; };
|
F5617A4F196A833A006E2B20 /* reconstruct_aarch64_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = reconstruct_aarch64_neon.S; path = arm64/reconstruct_aarch64_neon.S; sourceTree = "<group>"; };
|
||||||
F5BE8004196B913200ED02ED /* memory_aarch64_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = memory_aarch64_neon.S; path = arm64/memory_aarch64_neon.S; sourceTree = "<group>"; };
|
F5BE8004196B913200ED02ED /* memory_aarch64_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = memory_aarch64_neon.S; path = arm64/memory_aarch64_neon.S; sourceTree = "<group>"; };
|
||||||
F7E9994419EBD1E9009B1021 /* svc_set_mb_syn_cabac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = svc_set_mb_syn_cabac.cpp; sourceTree = "<group>"; };
|
|
||||||
F7E9994819EBD1F8009B1021 /* set_mb_syn_cabac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = set_mb_syn_cabac.cpp; sourceTree = "<group>"; };
|
|
||||||
F7E9997E19EBD3C6009B1021 /* set_mb_syn_cabac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = set_mb_syn_cabac.h; sourceTree = "<group>"; };
|
|
||||||
F7E9997F19EBD3CE009B1021 /* svc_set_mb_syn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = svc_set_mb_syn.h; sourceTree = "<group>"; };
|
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
@ -262,13 +254,11 @@
|
|||||||
4CE446A918BC605C0017DF25 /* inc */ = {
|
4CE446A918BC605C0017DF25 /* inc */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
98FE4C1A1AB0200C0031E2B4 /* golomb_common.h */,
|
|
||||||
F7E9997F19EBD3CE009B1021 /* svc_set_mb_syn.h */,
|
|
||||||
F7E9997E19EBD3C6009B1021 /* set_mb_syn_cabac.h */,
|
|
||||||
9AED66671946A2C4009A3567 /* utils.h */,
|
9AED66671946A2C4009A3567 /* utils.h */,
|
||||||
4CDBFB9D18E5068D0025A767 /* wels_transpose_matrix.h */,
|
4CDBFB9D18E5068D0025A767 /* wels_transpose_matrix.h */,
|
||||||
4CE446AA18BC605C0017DF25 /* as264_common.h */,
|
4CE446AA18BC605C0017DF25 /* as264_common.h */,
|
||||||
4CE446AB18BC605C0017DF25 /* au_set.h */,
|
4CE446AB18BC605C0017DF25 /* au_set.h */,
|
||||||
|
4CE446AC18BC605C0017DF25 /* bit_stream.h */,
|
||||||
4CE446AE18BC605C0017DF25 /* deblocking.h */,
|
4CE446AE18BC605C0017DF25 /* deblocking.h */,
|
||||||
4CE446AF18BC605C0017DF25 /* decode_mb_aux.h */,
|
4CE446AF18BC605C0017DF25 /* decode_mb_aux.h */,
|
||||||
4CE446B018BC605C0017DF25 /* dq_map.h */,
|
4CE446B018BC605C0017DF25 /* dq_map.h */,
|
||||||
@ -278,15 +268,18 @@
|
|||||||
4CE446B518BC605C0017DF25 /* extern.h */,
|
4CE446B518BC605C0017DF25 /* extern.h */,
|
||||||
4CE446B618BC605C0017DF25 /* get_intra_predictor.h */,
|
4CE446B618BC605C0017DF25 /* get_intra_predictor.h */,
|
||||||
4CE446B718BC605C0017DF25 /* mb_cache.h */,
|
4CE446B718BC605C0017DF25 /* mb_cache.h */,
|
||||||
|
4CE446B818BC605C0017DF25 /* mc.h */,
|
||||||
4CE446B918BC605C0017DF25 /* md.h */,
|
4CE446B918BC605C0017DF25 /* md.h */,
|
||||||
|
4CE446BA18BC605C0017DF25 /* memory_align.h */,
|
||||||
4CE446BB18BC605C0017DF25 /* mt_defs.h */,
|
4CE446BB18BC605C0017DF25 /* mt_defs.h */,
|
||||||
4CE446BC18BC605C0017DF25 /* mv_pred.h */,
|
4CE446BC18BC605C0017DF25 /* mv_pred.h */,
|
||||||
4CE446BD18BC605C0017DF25 /* nal_encap.h */,
|
4CE446BD18BC605C0017DF25 /* nal_encap.h */,
|
||||||
|
4CE446BE18BC605C0017DF25 /* nal_prefix.h */,
|
||||||
4CE446BF18BC605C0017DF25 /* param_svc.h */,
|
4CE446BF18BC605C0017DF25 /* param_svc.h */,
|
||||||
4CE446C018BC605C0017DF25 /* parameter_sets.h */,
|
4CE446C018BC605C0017DF25 /* parameter_sets.h */,
|
||||||
0D6970BF1CA5BD26001D88F8 /* paraset_strategy.h */,
|
|
||||||
4CE446C118BC605C0017DF25 /* picture.h */,
|
4CE446C118BC605C0017DF25 /* picture.h */,
|
||||||
4CE446C218BC605C0017DF25 /* picture_handle.h */,
|
4CE446C218BC605C0017DF25 /* picture_handle.h */,
|
||||||
|
4CE446C318BC605C0017DF25 /* property.h */,
|
||||||
4CE446C418BC605C0017DF25 /* rc.h */,
|
4CE446C418BC605C0017DF25 /* rc.h */,
|
||||||
4CE446C518BC605C0017DF25 /* ref_list_mgr_svc.h */,
|
4CE446C518BC605C0017DF25 /* ref_list_mgr_svc.h */,
|
||||||
4CE446C618BC605C0017DF25 /* sample.h */,
|
4CE446C618BC605C0017DF25 /* sample.h */,
|
||||||
@ -309,9 +302,6 @@
|
|||||||
4CE446D918BC605C0017DF25 /* wels_const.h */,
|
4CE446D918BC605C0017DF25 /* wels_const.h */,
|
||||||
4CE446DA18BC605C0017DF25 /* wels_func_ptr_def.h */,
|
4CE446DA18BC605C0017DF25 /* wels_func_ptr_def.h */,
|
||||||
4CE446DB18BC605C0017DF25 /* wels_preprocess.h */,
|
4CE446DB18BC605C0017DF25 /* wels_preprocess.h */,
|
||||||
0DD32A971B4A47D0009181A1 /* wels_task_base.h */,
|
|
||||||
0DD32A9D1B4A4E9C009181A1 /* wels_task_encoder.h */,
|
|
||||||
0DD32A9A1B4A49AC009181A1 /* wels_task_management.h */,
|
|
||||||
);
|
);
|
||||||
path = inc;
|
path = inc;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -319,8 +309,6 @@
|
|||||||
4CE446DC18BC605C0017DF25 /* src */ = {
|
4CE446DC18BC605C0017DF25 /* src */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
F7E9994819EBD1F8009B1021 /* set_mb_syn_cabac.cpp */,
|
|
||||||
F7E9994419EBD1E9009B1021 /* svc_set_mb_syn_cabac.cpp */,
|
|
||||||
9AED66651946A2B3009A3567 /* utils.cpp */,
|
9AED66651946A2B3009A3567 /* utils.cpp */,
|
||||||
4CE446DD18BC605C0017DF25 /* au_set.cpp */,
|
4CE446DD18BC605C0017DF25 /* au_set.cpp */,
|
||||||
4CE446DE18BC605C0017DF25 /* deblocking.cpp */,
|
4CE446DE18BC605C0017DF25 /* deblocking.cpp */,
|
||||||
@ -330,11 +318,13 @@
|
|||||||
4CE446E218BC605C0017DF25 /* encoder_data_tables.cpp */,
|
4CE446E218BC605C0017DF25 /* encoder_data_tables.cpp */,
|
||||||
4CE446E318BC605C0017DF25 /* encoder_ext.cpp */,
|
4CE446E318BC605C0017DF25 /* encoder_ext.cpp */,
|
||||||
4CE446E518BC605C0017DF25 /* get_intra_predictor.cpp */,
|
4CE446E518BC605C0017DF25 /* get_intra_predictor.cpp */,
|
||||||
|
4CE446E618BC605C0017DF25 /* mc.cpp */,
|
||||||
4CE446E718BC605C0017DF25 /* md.cpp */,
|
4CE446E718BC605C0017DF25 /* md.cpp */,
|
||||||
|
4CE446E818BC605C0017DF25 /* memory_align.cpp */,
|
||||||
4CE446E918BC605C0017DF25 /* mv_pred.cpp */,
|
4CE446E918BC605C0017DF25 /* mv_pred.cpp */,
|
||||||
4CE446EA18BC605C0017DF25 /* nal_encap.cpp */,
|
4CE446EA18BC605C0017DF25 /* nal_encap.cpp */,
|
||||||
0D6970BC1CA5BCFB001D88F8 /* paraset_strategy.cpp */,
|
|
||||||
4CE446EB18BC605C0017DF25 /* picture_handle.cpp */,
|
4CE446EB18BC605C0017DF25 /* picture_handle.cpp */,
|
||||||
|
4CE446EC18BC605C0017DF25 /* property.cpp */,
|
||||||
4CE446ED18BC605C0017DF25 /* ratectl.cpp */,
|
4CE446ED18BC605C0017DF25 /* ratectl.cpp */,
|
||||||
4CE446EE18BC605C0017DF25 /* ref_list_mgr_svc.cpp */,
|
4CE446EE18BC605C0017DF25 /* ref_list_mgr_svc.cpp */,
|
||||||
4CE446EF18BC605C0017DF25 /* sample.cpp */,
|
4CE446EF18BC605C0017DF25 /* sample.cpp */,
|
||||||
@ -348,9 +338,6 @@
|
|||||||
4CE446F718BC605C0017DF25 /* svc_motion_estimate.cpp */,
|
4CE446F718BC605C0017DF25 /* svc_motion_estimate.cpp */,
|
||||||
4CE446F818BC605C0017DF25 /* svc_set_mb_syn_cavlc.cpp */,
|
4CE446F818BC605C0017DF25 /* svc_set_mb_syn_cavlc.cpp */,
|
||||||
4CE446FA18BC605C0017DF25 /* wels_preprocess.cpp */,
|
4CE446FA18BC605C0017DF25 /* wels_preprocess.cpp */,
|
||||||
0DD32A951B4A478B009181A1 /* wels_task_base.cpp */,
|
|
||||||
0DD32A9B1B4A4E8F009181A1 /* wels_task_encoder.cpp */,
|
|
||||||
0DD32A981B4A4997009181A1 /* wels_task_management.cpp */,
|
|
||||||
);
|
);
|
||||||
path = src;
|
path = src;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -439,10 +426,10 @@
|
|||||||
4CE4471118BC605C0017DF25 /* encode_mb_aux.cpp in Sources */,
|
4CE4471118BC605C0017DF25 /* encode_mb_aux.cpp in Sources */,
|
||||||
4CE4472718BC605C0017DF25 /* svc_mode_decision.cpp in Sources */,
|
4CE4472718BC605C0017DF25 /* svc_mode_decision.cpp in Sources */,
|
||||||
4CE4472818BC605C0017DF25 /* svc_motion_estimate.cpp in Sources */,
|
4CE4472818BC605C0017DF25 /* svc_motion_estimate.cpp in Sources */,
|
||||||
|
4CE4471D18BC605C0017DF25 /* property.cpp in Sources */,
|
||||||
4CE4471018BC605C0017DF25 /* decode_mb_aux.cpp in Sources */,
|
4CE4471018BC605C0017DF25 /* decode_mb_aux.cpp in Sources */,
|
||||||
4CE4472018BC605C0017DF25 /* sample.cpp in Sources */,
|
4CE4472018BC605C0017DF25 /* sample.cpp in Sources */,
|
||||||
6CA38DA31991CACE003EAAE0 /* svc_motion_estimation.S in Sources */,
|
6CA38DA31991CACE003EAAE0 /* svc_motion_estimation.S in Sources */,
|
||||||
0DD32A9C1B4A4E8F009181A1 /* wels_task_encoder.cpp in Sources */,
|
|
||||||
4CE4471318BC605C0017DF25 /* encoder_data_tables.cpp in Sources */,
|
4CE4471318BC605C0017DF25 /* encoder_data_tables.cpp in Sources */,
|
||||||
4C34067118C57D0400DFA14A /* pixel_neon.S in Sources */,
|
4C34067118C57D0400DFA14A /* pixel_neon.S in Sources */,
|
||||||
9AED665019469FC1009A3567 /* welsCodecTrace.cpp in Sources */,
|
9AED665019469FC1009A3567 /* welsCodecTrace.cpp in Sources */,
|
||||||
@ -458,11 +445,12 @@
|
|||||||
4CE4470E18BC605C0017DF25 /* au_set.cpp in Sources */,
|
4CE4470E18BC605C0017DF25 /* au_set.cpp in Sources */,
|
||||||
F5BE8005196B913200ED02ED /* memory_aarch64_neon.S in Sources */,
|
F5BE8005196B913200ED02ED /* memory_aarch64_neon.S in Sources */,
|
||||||
4CBC1B83194ACBB400214D9E /* intra_pred_aarch64_neon.S in Sources */,
|
4CBC1B83194ACBB400214D9E /* intra_pred_aarch64_neon.S in Sources */,
|
||||||
F7E9994519EBD1E9009B1021 /* svc_set_mb_syn_cabac.cpp in Sources */,
|
4CE4471718BC605C0017DF25 /* mc.cpp in Sources */,
|
||||||
F5617A50196A833A006E2B20 /* reconstruct_aarch64_neon.S in Sources */,
|
F5617A50196A833A006E2B20 /* reconstruct_aarch64_neon.S in Sources */,
|
||||||
4CE4472918BC605C0017DF25 /* svc_set_mb_syn_cavlc.cpp in Sources */,
|
4CE4472918BC605C0017DF25 /* svc_set_mb_syn_cavlc.cpp in Sources */,
|
||||||
4CE4471818BC605C0017DF25 /* md.cpp in Sources */,
|
4CE4471818BC605C0017DF25 /* md.cpp in Sources */,
|
||||||
4CE4471B18BC605C0017DF25 /* nal_encap.cpp in Sources */,
|
4CE4471B18BC605C0017DF25 /* nal_encap.cpp in Sources */,
|
||||||
|
4CE4471918BC605C0017DF25 /* memory_align.cpp in Sources */,
|
||||||
4CE4472418BC605C0017DF25 /* svc_enc_slice_segment.cpp in Sources */,
|
4CE4472418BC605C0017DF25 /* svc_enc_slice_segment.cpp in Sources */,
|
||||||
4CE4472318BC605C0017DF25 /* svc_base_layer_md.cpp in Sources */,
|
4CE4472318BC605C0017DF25 /* svc_base_layer_md.cpp in Sources */,
|
||||||
4CB8F2B419235FC5005D6386 /* pixel_aarch64_neon.S in Sources */,
|
4CB8F2B419235FC5005D6386 /* pixel_aarch64_neon.S in Sources */,
|
||||||
@ -475,12 +463,8 @@
|
|||||||
4CE4471618BC605C0017DF25 /* get_intra_predictor.cpp in Sources */,
|
4CE4471618BC605C0017DF25 /* get_intra_predictor.cpp in Sources */,
|
||||||
4CE4472E18BC605C0017DF25 /* welsEncoderExt.cpp in Sources */,
|
4CE4472E18BC605C0017DF25 /* welsEncoderExt.cpp in Sources */,
|
||||||
6CA38DA51991D31A003EAAE0 /* svc_motion_estimation_aarch64_neon.S in Sources */,
|
6CA38DA51991D31A003EAAE0 /* svc_motion_estimation_aarch64_neon.S in Sources */,
|
||||||
0DD32A991B4A4997009181A1 /* wels_task_management.cpp in Sources */,
|
|
||||||
4CE4471418BC605C0017DF25 /* encoder_ext.cpp in Sources */,
|
4CE4471418BC605C0017DF25 /* encoder_ext.cpp in Sources */,
|
||||||
4C34067218C57D0400DFA14A /* reconstruct_neon.S in Sources */,
|
4C34067218C57D0400DFA14A /* reconstruct_neon.S in Sources */,
|
||||||
0DD32A961B4A478B009181A1 /* wels_task_base.cpp in Sources */,
|
|
||||||
F7E9994919EBD1F8009B1021 /* set_mb_syn_cabac.cpp in Sources */,
|
|
||||||
0D6970BE1CA5BCFB001D88F8 /* paraset_strategy.cpp in Sources */,
|
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
549947E2196A3FB400BA3D87 /* pixel_sad_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 549947AE196A3FB400BA3D87 /* pixel_sad_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 */; };
|
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 */; };
|
549947E4196A3FB400BA3D87 /* BackgroundDetection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947B1196A3FB400BA3D87 /* BackgroundDetection.cpp */; };
|
||||||
|
549947E5196A3FB400BA3D87 /* common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947B4196A3FB400BA3D87 /* common.cpp */; };
|
||||||
549947E6196A3FB400BA3D87 /* memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947B6196A3FB400BA3D87 /* memory.cpp */; };
|
549947E6196A3FB400BA3D87 /* memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947B6196A3FB400BA3D87 /* memory.cpp */; };
|
||||||
549947E7196A3FB400BA3D87 /* WelsFrameWork.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947BB196A3FB400BA3D87 /* WelsFrameWork.cpp */; };
|
549947E7196A3FB400BA3D87 /* WelsFrameWork.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947BB196A3FB400BA3D87 /* WelsFrameWork.cpp */; };
|
||||||
549947E8196A3FB400BA3D87 /* WelsFrameWorkEx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947BD196A3FB400BA3D87 /* WelsFrameWorkEx.cpp */; };
|
549947E8196A3FB400BA3D87 /* WelsFrameWorkEx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947BD196A3FB400BA3D87 /* WelsFrameWorkEx.cpp */; };
|
||||||
@ -33,7 +34,6 @@
|
|||||||
549947F3196A3FB400BA3D87 /* vaacalcfuncs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947D8196A3FB400BA3D87 /* vaacalcfuncs.cpp */; };
|
549947F3196A3FB400BA3D87 /* vaacalcfuncs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947D8196A3FB400BA3D87 /* vaacalcfuncs.cpp */; };
|
||||||
549947F4196A3FB400BA3D87 /* vaacalculation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947D9196A3FB400BA3D87 /* vaacalculation.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 */; };
|
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 */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXCopyFilesBuildPhase section */
|
/* Begin PBXCopyFilesBuildPhase section */
|
||||||
@ -64,6 +64,7 @@
|
|||||||
549947AF196A3FB400BA3D87 /* vaa_calc_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = vaa_calc_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>"; };
|
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>"; };
|
549947B2196A3FB400BA3D87 /* BackgroundDetection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BackgroundDetection.h; sourceTree = "<group>"; };
|
||||||
|
549947B4196A3FB400BA3D87 /* common.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = common.cpp; sourceTree = "<group>"; };
|
||||||
549947B5196A3FB400BA3D87 /* common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = common.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>"; };
|
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>"; };
|
549947B7196A3FB400BA3D87 /* memory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = memory.h; sourceTree = "<group>"; };
|
||||||
@ -96,7 +97,6 @@
|
|||||||
549947D9196A3FB400BA3D87 /* vaacalculation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vaacalculation.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>"; };
|
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>"; };
|
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 */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
@ -210,7 +210,7 @@
|
|||||||
549947B3196A3FB400BA3D87 /* common */ = {
|
549947B3196A3FB400BA3D87 /* common */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
F791965A19D3BF6B00F60C6B /* intra_pred_common.cpp */,
|
549947B4196A3FB400BA3D87 /* common.cpp */,
|
||||||
549947B5196A3FB400BA3D87 /* common.h */,
|
549947B5196A3FB400BA3D87 /* common.h */,
|
||||||
549947B6196A3FB400BA3D87 /* memory.cpp */,
|
549947B6196A3FB400BA3D87 /* memory.cpp */,
|
||||||
549947B7196A3FB400BA3D87 /* memory.h */,
|
549947B7196A3FB400BA3D87 /* memory.h */,
|
||||||
@ -351,6 +351,7 @@
|
|||||||
549947E9196A3FB400BA3D87 /* ComplexityAnalysis.cpp in Sources */,
|
549947E9196A3FB400BA3D87 /* ComplexityAnalysis.cpp in Sources */,
|
||||||
549947E3196A3FB400BA3D87 /* vaa_calc_neon.S in Sources */,
|
549947E3196A3FB400BA3D87 /* vaa_calc_neon.S in Sources */,
|
||||||
549947EE196A3FB400BA3D87 /* imagerotate.cpp in Sources */,
|
549947EE196A3FB400BA3D87 /* imagerotate.cpp in Sources */,
|
||||||
|
549947E5196A3FB400BA3D87 /* common.cpp in Sources */,
|
||||||
549947EA196A3FB400BA3D87 /* denoise.cpp in Sources */,
|
549947EA196A3FB400BA3D87 /* denoise.cpp in Sources */,
|
||||||
549947E7196A3FB400BA3D87 /* WelsFrameWork.cpp in Sources */,
|
549947E7196A3FB400BA3D87 /* WelsFrameWork.cpp in Sources */,
|
||||||
549947F1196A3FB400BA3D87 /* ScrollDetection.cpp in Sources */,
|
549947F1196A3FB400BA3D87 /* ScrollDetection.cpp in Sources */,
|
||||||
@ -366,7 +367,6 @@
|
|||||||
4CC6094F197E009D00BE8B8B /* down_sample_aarch64_neon.S in Sources */,
|
4CC6094F197E009D00BE8B8B /* down_sample_aarch64_neon.S in Sources */,
|
||||||
4CC6095A1980F34F00BE8B8B /* vaa_calc_aarch64_neon.S in Sources */,
|
4CC6095A1980F34F00BE8B8B /* vaa_calc_aarch64_neon.S in Sources */,
|
||||||
549947F2196A3FB400BA3D87 /* ScrollDetectionFuncs.cpp in Sources */,
|
549947F2196A3FB400BA3D87 /* ScrollDetectionFuncs.cpp in Sources */,
|
||||||
F791965B19D3BF6B00F60C6B /* intra_pred_common.cpp in Sources */,
|
|
||||||
549947EF196A3FB400BA3D87 /* imagerotatefuncs.cpp in Sources */,
|
549947EF196A3FB400BA3D87 /* imagerotatefuncs.cpp in Sources */,
|
||||||
549947DF196A3FB400BA3D87 /* AdaptiveQuantization.cpp in Sources */,
|
549947DF196A3FB400BA3D87 /* AdaptiveQuantization.cpp in Sources */,
|
||||||
549947EC196A3FB400BA3D87 /* downsample.cpp in Sources */,
|
549947EC196A3FB400BA3D87 /* downsample.cpp in Sources */,
|
||||||
|
@ -351,43 +351,51 @@
|
|||||||
</References>
|
</References>
|
||||||
<Files>
|
<Files>
|
||||||
<Filter
|
<Filter
|
||||||
Name="Header Files"
|
Name="SW"
|
||||||
Filter="h;hpp;hxx;hm;inl"
|
|
||||||
>
|
>
|
||||||
<File
|
<Filter
|
||||||
RelativePath="..\..\..\common\inc\welsCodecTrace.h"
|
Name="Resource Files"
|
||||||
|
Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||||
>
|
>
|
||||||
</File>
|
<File
|
||||||
<File
|
RelativePath="..\..\..\decoder\plus\res\welsdec.rc"
|
||||||
RelativePath="..\..\..\decoder\plus\inc\welsDecoderExt.h"
|
>
|
||||||
|
</File>
|
||||||
|
</Filter>
|
||||||
|
<Filter
|
||||||
|
Name="Source Files"
|
||||||
|
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||||
>
|
>
|
||||||
</File>
|
<File
|
||||||
</Filter>
|
RelativePath="..\..\..\decoder\plus\src\wels_dec_export.def"
|
||||||
<Filter
|
>
|
||||||
Name="Resource Files"
|
</File>
|
||||||
Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
<File
|
||||||
>
|
RelativePath="..\..\..\common\src\welsCodecTrace.cpp"
|
||||||
<File
|
>
|
||||||
RelativePath="..\..\..\..\openh264.rc"
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\..\decoder\plus\src\welsDecoderExt.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
</Filter>
|
||||||
|
<Filter
|
||||||
|
Name="Header Files"
|
||||||
|
Filter="h;hpp;hxx;hm;inl"
|
||||||
>
|
>
|
||||||
</File>
|
<File
|
||||||
</Filter>
|
RelativePath="..\..\..\decoder\core\inc\mem_align.h"
|
||||||
<Filter
|
>
|
||||||
Name="Source Files"
|
</File>
|
||||||
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
<File
|
||||||
>
|
RelativePath="..\..\..\common\inc\welsCodecTrace.h"
|
||||||
<File
|
>
|
||||||
RelativePath="..\..\..\decoder\plus\src\wels_dec_export.def"
|
</File>
|
||||||
>
|
<File
|
||||||
</File>
|
RelativePath="..\..\..\decoder\plus\inc\welsDecoderExt.h"
|
||||||
<File
|
>
|
||||||
RelativePath="..\..\..\common\src\welsCodecTrace.cpp"
|
</File>
|
||||||
>
|
</Filter>
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\decoder\plus\src\welsDecoderExt.cpp"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
</Filter>
|
||||||
</Files>
|
</Files>
|
||||||
<Globals>
|
<Globals>
|
||||||
|
@ -382,11 +382,7 @@
|
|||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\common\src\intra_pred_common.cpp"
|
RelativePath="..\..\..\encoder\core\src\mc.cpp"
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\common\src\mc.cpp"
|
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
@ -394,7 +390,7 @@
|
|||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\common\src\memory_align.cpp"
|
RelativePath="..\..\..\encoder\core\src\memory_align.cpp"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
@ -406,11 +402,11 @@
|
|||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\encoder\core\src\paraset_strategy.cpp"
|
RelativePath="..\..\..\encoder\core\src\picture_handle.cpp"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\encoder\core\src\picture_handle.cpp"
|
RelativePath="..\..\..\encoder\core\src\property.cpp"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
@ -429,10 +425,6 @@
|
|||||||
RelativePath="..\..\..\encoder\core\src\sample.cpp"
|
RelativePath="..\..\..\encoder\core\src\sample.cpp"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\encoder\core\src\set_mb_syn_cabac.cpp"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\encoder\core\src\set_mb_syn_cavlc.cpp"
|
RelativePath="..\..\..\encoder\core\src\set_mb_syn_cavlc.cpp"
|
||||||
>
|
>
|
||||||
@ -465,10 +457,6 @@
|
|||||||
RelativePath="..\..\..\encoder\core\src\svc_motion_estimate.cpp"
|
RelativePath="..\..\..\encoder\core\src\svc_motion_estimate.cpp"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\encoder\core\src\svc_set_mb_syn_cabac.cpp"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\encoder\core\src\svc_set_mb_syn_cavlc.cpp"
|
RelativePath="..\..\..\encoder\core\src\svc_set_mb_syn_cavlc.cpp"
|
||||||
>
|
>
|
||||||
@ -477,34 +465,10 @@
|
|||||||
RelativePath="..\..\..\common\src\utils.cpp"
|
RelativePath="..\..\..\common\src\utils.cpp"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\encoder\core\src\wels_task_base.cpp"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\encoder\core\src\wels_task_encoder.cpp"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\encoder\core\src\wels_task_management.cpp"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\common\src\WelsTaskThread.cpp"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\common\src\WelsThread.cpp"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\common\src\WelsThreadLib.cpp"
|
RelativePath="..\..\..\common\src\WelsThreadLib.cpp"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\common\src\WelsThreadPool.cpp"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
</Filter>
|
||||||
<Filter
|
<Filter
|
||||||
Name="Header Files"
|
Name="Header Files"
|
||||||
@ -518,6 +482,10 @@
|
|||||||
RelativePath="..\..\..\encoder\core\inc\au_set.h"
|
RelativePath="..\..\..\encoder\core\inc\au_set.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\..\encoder\core\inc\bit_stream.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\common\inc\copy_mb.h"
|
RelativePath="..\..\..\common\inc\copy_mb.h"
|
||||||
>
|
>
|
||||||
@ -570,10 +538,6 @@
|
|||||||
RelativePath="..\..\..\encoder\core\inc\get_intra_predictor.h"
|
RelativePath="..\..\..\encoder\core\inc\get_intra_predictor.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\common\inc\golomb_common.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\common\inc\ls_defines.h"
|
RelativePath="..\..\..\common\inc\ls_defines.h"
|
||||||
>
|
>
|
||||||
@ -587,7 +551,11 @@
|
|||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\common\inc\mc.h"
|
RelativePath="..\..\..\encoder\core\inc\mc.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\..\common\inc\mc_common.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
@ -599,7 +567,7 @@
|
|||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\common\inc\memory_align.h"
|
RelativePath="..\..\..\encoder\core\inc\memory_align.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
@ -614,6 +582,10 @@
|
|||||||
RelativePath="..\..\..\encoder\core\inc\nal_encap.h"
|
RelativePath="..\..\..\encoder\core\inc\nal_encap.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\..\encoder\core\inc\nal_prefix.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\encoder\core\inc\param_svc.h"
|
RelativePath="..\..\..\encoder\core\inc\param_svc.h"
|
||||||
>
|
>
|
||||||
@ -622,10 +594,6 @@
|
|||||||
RelativePath="..\..\..\encoder\core\inc\parameter_sets.h"
|
RelativePath="..\..\..\encoder\core\inc\parameter_sets.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\encoder\core\inc\paraset_strategy.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\encoder\core\inc\picture.h"
|
RelativePath="..\..\..\encoder\core\inc\picture.h"
|
||||||
>
|
>
|
||||||
@ -634,6 +602,10 @@
|
|||||||
RelativePath="..\..\..\encoder\core\inc\picture_handle.h"
|
RelativePath="..\..\..\encoder\core\inc\picture_handle.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\..\encoder\core\inc\property.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\encoder\core\inc\rc.h"
|
RelativePath="..\..\..\encoder\core\inc\rc.h"
|
||||||
>
|
>
|
||||||
@ -650,10 +622,6 @@
|
|||||||
RelativePath="..\..\..\encoder\core\inc\sample.h"
|
RelativePath="..\..\..\encoder\core\inc\sample.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\encoder\core\inc\set_mb_syn_cabac.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\encoder\core\inc\set_mb_syn_cavlc.h"
|
RelativePath="..\..\..\encoder\core\inc\set_mb_syn_cavlc.h"
|
||||||
>
|
>
|
||||||
@ -707,11 +675,11 @@
|
|||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\encoder\core\inc\svc_set_mb_syn.h"
|
RelativePath="..\..\..\encoder\core\inc\svc_set_mb_syn_cavlc.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\encoder\core\inc\svc_set_mb_syn_cavlc.h"
|
RelativePath="..\..\..\encoder\core\inc\trace.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
@ -731,17 +699,13 @@
|
|||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\common\inc\wels_common_defs.h"
|
RelativePath="..\..\..\encoder\core\inc\wels_common_defs.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\encoder\core\inc\wels_const.h"
|
RelativePath="..\..\..\encoder\core\inc\wels_const.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\common\inc\wels_const_common.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\encoder\core\inc\wels_func_ptr_def.h"
|
RelativePath="..\..\..\encoder\core\inc\wels_func_ptr_def.h"
|
||||||
>
|
>
|
||||||
@ -763,7 +727,7 @@
|
|||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCustomBuildTool"
|
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"
|
Outputs="$(IntDir)\$(InputName).obj"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
@ -781,7 +745,7 @@
|
|||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCustomBuildTool"
|
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"
|
Outputs="$(IntDir)\$(InputName).obj"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
@ -803,7 +767,7 @@
|
|||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCustomBuildTool"
|
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"
|
Outputs="$(IntDir)\$(InputName).obj"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
@ -835,46 +799,6 @@
|
|||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\common\x86\dct.asm"
|
|
||||||
>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
CommandLine="nasm -I$(InputDir) -I$(InputDir)/../../../common/x86/ -f win32 -DPREFIX -DX86_32 -o $(IntDir)\$(InputName)_common.obj $(InputPath)
"
|
|
||||||
Outputs="$(IntDir)\$(InputName)_common.obj"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Debug|x64"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
CommandLine="nasm -I$(InputDir) -I$(InputDir)/../../../common/x86/ -f win64 -DWIN64 -o $(IntDir)\$(InputName)_common.obj $(InputPath)
"
|
|
||||||
Outputs="$(IntDir)\$(InputName)_common.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)_common.obj $(InputPath)
"
|
|
||||||
Outputs="$(IntDir)\$(InputName)_common.obj"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
<FileConfiguration
|
|
||||||
Name="Release|x64"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
CommandLine="nasm -I$(InputDir) -I$(InputDir)/../../../common/x86/ -f win64 -DWIN64 -o $(IntDir)\$(InputName)_common.obj $(InputPath)
"
|
|
||||||
Outputs="$(IntDir)\$(InputName)_common.obj"
|
|
||||||
/>
|
|
||||||
</FileConfiguration>
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\encoder\core\x86\dct.asm"
|
RelativePath="..\..\..\encoder\core\x86\dct.asm"
|
||||||
>
|
>
|
||||||
@ -1035,46 +959,6 @@
|
|||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
</File>
|
</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
|
<File
|
||||||
RelativePath="..\..\..\encoder\core\x86\matrix_transpose.asm"
|
RelativePath="..\..\..\encoder\core\x86\matrix_transpose.asm"
|
||||||
>
|
>
|
||||||
@ -1443,7 +1327,7 @@
|
|||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCustomBuildTool"
|
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"
|
Outputs="$(IntDir)\$(InputName).obj"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
@ -1461,7 +1345,7 @@
|
|||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCustomBuildTool"
|
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"
|
Outputs="$(IntDir)\$(InputName).obj"
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
|
@ -395,7 +395,7 @@
|
|||||||
Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||||
>
|
>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\..\openh264.rc"
|
RelativePath="..\..\..\encoder\plus\res\welsenc.rc"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
29
codec/build/windowsphone/.gitignore
vendored
@ -1,29 +0,0 @@
|
|||||||
# Files generated by Visual Studio 2008
|
|
||||||
*.user
|
|
||||||
*.ncb
|
|
||||||
*.suo
|
|
||||||
*.opensdf
|
|
||||||
|
|
||||||
Win32
|
|
||||||
x64
|
|
||||||
ARM
|
|
||||||
Debug
|
|
||||||
Release
|
|
||||||
|
|
||||||
# Files generated by upgrading the project files
|
|
||||||
Backup
|
|
||||||
Generated Files
|
|
||||||
UpgradeLog.htm
|
|
||||||
|
|
||||||
# Files generated by Visual Studio 2013
|
|
||||||
*.sdf
|
|
||||||
ipch
|
|
||||||
Draft
|
|
||||||
|
|
||||||
# Files used in App
|
|
||||||
Bin
|
|
||||||
obj
|
|
||||||
res
|
|
||||||
*.dll
|
|
||||||
*.yuv
|
|
||||||
*.264
|
|
@ -1,76 +0,0 @@
|
|||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
|
||||||
# Visual Studio 2013
|
|
||||||
VisualStudioVersion = 12.0.31101.0
|
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodecApp", "CodecApp\CodecApp.csproj", "{5424CF29-908E-417E-93F3-F1CD81E5372C}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CodecRTComponent", "CodecRTComponent.vcxproj", "{FE5BF241-F4EA-4B94-B36A-23511E5908EC}"
|
|
||||||
EndProject
|
|
||||||
Global
|
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
|
||||||
Debug|Any CPU = Debug|Any CPU
|
|
||||||
Debug|ARM = Debug|ARM
|
|
||||||
Debug|Mixed Platforms = Debug|Mixed Platforms
|
|
||||||
Debug|Win32 = Debug|Win32
|
|
||||||
Debug|x86 = Debug|x86
|
|
||||||
Release|Any CPU = Release|Any CPU
|
|
||||||
Release|ARM = Release|ARM
|
|
||||||
Release|Mixed Platforms = Release|Mixed Platforms
|
|
||||||
Release|Win32 = Release|Win32
|
|
||||||
Release|x86 = Release|x86
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
|
||||||
{5424CF29-908E-417E-93F3-F1CD81E5372C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{5424CF29-908E-417E-93F3-F1CD81E5372C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{5424CF29-908E-417E-93F3-F1CD81E5372C}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
|
|
||||||
{5424CF29-908E-417E-93F3-F1CD81E5372C}.Debug|ARM.ActiveCfg = Debug|ARM
|
|
||||||
{5424CF29-908E-417E-93F3-F1CD81E5372C}.Debug|ARM.Build.0 = Debug|ARM
|
|
||||||
{5424CF29-908E-417E-93F3-F1CD81E5372C}.Debug|ARM.Deploy.0 = Debug|ARM
|
|
||||||
{5424CF29-908E-417E-93F3-F1CD81E5372C}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
|
|
||||||
{5424CF29-908E-417E-93F3-F1CD81E5372C}.Debug|Mixed Platforms.Build.0 = Debug|x86
|
|
||||||
{5424CF29-908E-417E-93F3-F1CD81E5372C}.Debug|Mixed Platforms.Deploy.0 = Debug|x86
|
|
||||||
{5424CF29-908E-417E-93F3-F1CD81E5372C}.Debug|Win32.ActiveCfg = Debug|x86
|
|
||||||
{5424CF29-908E-417E-93F3-F1CD81E5372C}.Debug|Win32.Build.0 = Debug|x86
|
|
||||||
{5424CF29-908E-417E-93F3-F1CD81E5372C}.Debug|Win32.Deploy.0 = Debug|x86
|
|
||||||
{5424CF29-908E-417E-93F3-F1CD81E5372C}.Debug|x86.ActiveCfg = Debug|x86
|
|
||||||
{5424CF29-908E-417E-93F3-F1CD81E5372C}.Debug|x86.Build.0 = Debug|x86
|
|
||||||
{5424CF29-908E-417E-93F3-F1CD81E5372C}.Debug|x86.Deploy.0 = Debug|x86
|
|
||||||
{5424CF29-908E-417E-93F3-F1CD81E5372C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{5424CF29-908E-417E-93F3-F1CD81E5372C}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{5424CF29-908E-417E-93F3-F1CD81E5372C}.Release|Any CPU.Deploy.0 = Release|Any CPU
|
|
||||||
{5424CF29-908E-417E-93F3-F1CD81E5372C}.Release|ARM.ActiveCfg = Release|ARM
|
|
||||||
{5424CF29-908E-417E-93F3-F1CD81E5372C}.Release|ARM.Build.0 = Release|ARM
|
|
||||||
{5424CF29-908E-417E-93F3-F1CD81E5372C}.Release|ARM.Deploy.0 = Release|ARM
|
|
||||||
{5424CF29-908E-417E-93F3-F1CD81E5372C}.Release|Mixed Platforms.ActiveCfg = Release|x86
|
|
||||||
{5424CF29-908E-417E-93F3-F1CD81E5372C}.Release|Mixed Platforms.Build.0 = Release|x86
|
|
||||||
{5424CF29-908E-417E-93F3-F1CD81E5372C}.Release|Mixed Platforms.Deploy.0 = Release|x86
|
|
||||||
{5424CF29-908E-417E-93F3-F1CD81E5372C}.Release|Win32.ActiveCfg = Release|x86
|
|
||||||
{5424CF29-908E-417E-93F3-F1CD81E5372C}.Release|Win32.Build.0 = Release|x86
|
|
||||||
{5424CF29-908E-417E-93F3-F1CD81E5372C}.Release|Win32.Deploy.0 = Release|x86
|
|
||||||
{5424CF29-908E-417E-93F3-F1CD81E5372C}.Release|x86.ActiveCfg = Release|x86
|
|
||||||
{5424CF29-908E-417E-93F3-F1CD81E5372C}.Release|x86.Build.0 = Release|x86
|
|
||||||
{5424CF29-908E-417E-93F3-F1CD81E5372C}.Release|x86.Deploy.0 = Release|x86
|
|
||||||
{FE5BF241-F4EA-4B94-B36A-23511E5908EC}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
|
||||||
{FE5BF241-F4EA-4B94-B36A-23511E5908EC}.Debug|ARM.ActiveCfg = Debug|ARM
|
|
||||||
{FE5BF241-F4EA-4B94-B36A-23511E5908EC}.Debug|ARM.Build.0 = Debug|ARM
|
|
||||||
{FE5BF241-F4EA-4B94-B36A-23511E5908EC}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
|
||||||
{FE5BF241-F4EA-4B94-B36A-23511E5908EC}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
|
||||||
{FE5BF241-F4EA-4B94-B36A-23511E5908EC}.Debug|Win32.ActiveCfg = Debug|Win32
|
|
||||||
{FE5BF241-F4EA-4B94-B36A-23511E5908EC}.Debug|Win32.Build.0 = Debug|Win32
|
|
||||||
{FE5BF241-F4EA-4B94-B36A-23511E5908EC}.Debug|x86.ActiveCfg = Debug|Win32
|
|
||||||
{FE5BF241-F4EA-4B94-B36A-23511E5908EC}.Debug|x86.Build.0 = Debug|Win32
|
|
||||||
{FE5BF241-F4EA-4B94-B36A-23511E5908EC}.Release|Any CPU.ActiveCfg = Release|Win32
|
|
||||||
{FE5BF241-F4EA-4B94-B36A-23511E5908EC}.Release|ARM.ActiveCfg = Release|ARM
|
|
||||||
{FE5BF241-F4EA-4B94-B36A-23511E5908EC}.Release|ARM.Build.0 = Release|ARM
|
|
||||||
{FE5BF241-F4EA-4B94-B36A-23511E5908EC}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
|
||||||
{FE5BF241-F4EA-4B94-B36A-23511E5908EC}.Release|Mixed Platforms.Build.0 = Release|Win32
|
|
||||||
{FE5BF241-F4EA-4B94-B36A-23511E5908EC}.Release|Win32.ActiveCfg = Release|Win32
|
|
||||||
{FE5BF241-F4EA-4B94-B36A-23511E5908EC}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
{FE5BF241-F4EA-4B94-B36A-23511E5908EC}.Release|x86.ActiveCfg = Release|Win32
|
|
||||||
{FE5BF241-F4EA-4B94-B36A-23511E5908EC}.Release|x86.Build.0 = Release|Win32
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
|
||||||
HideSolutionNode = FALSE
|
|
||||||
EndGlobalSection
|
|
||||||
EndGlobal
|
|
@ -1,20 +0,0 @@
|
|||||||
<Application
|
|
||||||
x:Class="CodecApp.App"
|
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
|
|
||||||
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone">
|
|
||||||
|
|
||||||
<!--Application Resources-->
|
|
||||||
<Application.Resources>
|
|
||||||
<local:LocalizedStrings xmlns:local="clr-namespace:CodecApp" x:Key="LocalizedStrings"/>
|
|
||||||
</Application.Resources>
|
|
||||||
|
|
||||||
<Application.ApplicationLifetimeObjects>
|
|
||||||
<!--Required object that handles lifetime events for the application-->
|
|
||||||
<shell:PhoneApplicationService
|
|
||||||
Launching="Application_Launching" Closing="Application_Closing"
|
|
||||||
Activated="Application_Activated" Deactivated="Application_Deactivated"/>
|
|
||||||
</Application.ApplicationLifetimeObjects>
|
|
||||||
|
|
||||||
</Application>
|
|
@ -1,223 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Resources;
|
|
||||||
using System.Windows;
|
|
||||||
using System.Windows.Markup;
|
|
||||||
using System.Windows.Navigation;
|
|
||||||
using Microsoft.Phone.Controls;
|
|
||||||
using Microsoft.Phone.Shell;
|
|
||||||
using CodecApp.Resources;
|
|
||||||
|
|
||||||
namespace CodecApp
|
|
||||||
{
|
|
||||||
public partial class App : Application
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Provides easy access to the root frame of the Phone Application.
|
|
||||||
/// </summary>
|
|
||||||
/// <returns>The root frame of the Phone Application.</returns>
|
|
||||||
public static PhoneApplicationFrame RootFrame { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Constructor for the Application object.
|
|
||||||
/// </summary>
|
|
||||||
public App()
|
|
||||||
{
|
|
||||||
// Global handler for uncaught exceptions.
|
|
||||||
UnhandledException += Application_UnhandledException;
|
|
||||||
|
|
||||||
// Standard XAML initialization
|
|
||||||
InitializeComponent();
|
|
||||||
|
|
||||||
// Phone-specific initialization
|
|
||||||
InitializePhoneApplication();
|
|
||||||
|
|
||||||
// Language display initialization
|
|
||||||
InitializeLanguage();
|
|
||||||
|
|
||||||
// Show graphics profiling information while debugging.
|
|
||||||
if (Debugger.IsAttached)
|
|
||||||
{
|
|
||||||
// Display the current frame rate counters.
|
|
||||||
Application.Current.Host.Settings.EnableFrameRateCounter = true;
|
|
||||||
|
|
||||||
// Show the areas of the app that are being redrawn in each frame.
|
|
||||||
//Application.Current.Host.Settings.EnableRedrawRegions = true;
|
|
||||||
|
|
||||||
// Enable non-production analysis visualization mode,
|
|
||||||
// which shows areas of a page that are handed off to GPU with a colored overlay.
|
|
||||||
//Application.Current.Host.Settings.EnableCacheVisualization = true;
|
|
||||||
|
|
||||||
// Prevent the screen from turning off while under the debugger by disabling
|
|
||||||
// the application's idle detection.
|
|
||||||
// Caution:- Use this under debug mode only. Application that disables user idle detection will continue to run
|
|
||||||
// and consume battery power when the user is not using the phone.
|
|
||||||
PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Code to execute when the application is launching (eg, from Start)
|
|
||||||
// This code will not execute when the application is reactivated
|
|
||||||
private void Application_Launching(object sender, LaunchingEventArgs e)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
// Code to execute when the application is activated (brought to foreground)
|
|
||||||
// This code will not execute when the application is first launched
|
|
||||||
private void Application_Activated(object sender, ActivatedEventArgs e)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
// Code to execute when the application is deactivated (sent to background)
|
|
||||||
// This code will not execute when the application is closing
|
|
||||||
private void Application_Deactivated(object sender, DeactivatedEventArgs e)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
// Code to execute when the application is closing (eg, user hit Back)
|
|
||||||
// This code will not execute when the application is deactivated
|
|
||||||
private void Application_Closing(object sender, ClosingEventArgs e)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
// Code to execute if a navigation fails
|
|
||||||
private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
|
|
||||||
{
|
|
||||||
if (Debugger.IsAttached)
|
|
||||||
{
|
|
||||||
// A navigation has failed; break into the debugger
|
|
||||||
Debugger.Break();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Code to execute on Unhandled Exceptions
|
|
||||||
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
|
|
||||||
{
|
|
||||||
if (Debugger.IsAttached)
|
|
||||||
{
|
|
||||||
// An unhandled exception has occurred; break into the debugger
|
|
||||||
Debugger.Break();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Phone application initialization
|
|
||||||
|
|
||||||
// Avoid double-initialization
|
|
||||||
private bool phoneApplicationInitialized = false;
|
|
||||||
|
|
||||||
// Do not add any additional code to this method
|
|
||||||
private void InitializePhoneApplication()
|
|
||||||
{
|
|
||||||
if (phoneApplicationInitialized)
|
|
||||||
return;
|
|
||||||
|
|
||||||
// Create the frame but don't set it as RootVisual yet; this allows the splash
|
|
||||||
// screen to remain active until the application is ready to render.
|
|
||||||
RootFrame = new PhoneApplicationFrame();
|
|
||||||
RootFrame.Navigated += CompleteInitializePhoneApplication;
|
|
||||||
|
|
||||||
// Handle navigation failures
|
|
||||||
RootFrame.NavigationFailed += RootFrame_NavigationFailed;
|
|
||||||
|
|
||||||
// Handle reset requests for clearing the backstack
|
|
||||||
RootFrame.Navigated += CheckForResetNavigation;
|
|
||||||
|
|
||||||
// Ensure we don't initialize again
|
|
||||||
phoneApplicationInitialized = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Do not add any additional code to this method
|
|
||||||
private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e)
|
|
||||||
{
|
|
||||||
// Set the root visual to allow the application to render
|
|
||||||
if (RootVisual != RootFrame)
|
|
||||||
RootVisual = RootFrame;
|
|
||||||
|
|
||||||
// Remove this handler since it is no longer needed
|
|
||||||
RootFrame.Navigated -= CompleteInitializePhoneApplication;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void CheckForResetNavigation(object sender, NavigationEventArgs e)
|
|
||||||
{
|
|
||||||
// If the app has received a 'reset' navigation, then we need to check
|
|
||||||
// on the next navigation to see if the page stack should be reset
|
|
||||||
if (e.NavigationMode == NavigationMode.Reset)
|
|
||||||
RootFrame.Navigated += ClearBackStackAfterReset;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ClearBackStackAfterReset(object sender, NavigationEventArgs e)
|
|
||||||
{
|
|
||||||
// Unregister the event so it doesn't get called again
|
|
||||||
RootFrame.Navigated -= ClearBackStackAfterReset;
|
|
||||||
|
|
||||||
// Only clear the stack for 'new' (forward) and 'refresh' navigations
|
|
||||||
if (e.NavigationMode != NavigationMode.New && e.NavigationMode != NavigationMode.Refresh)
|
|
||||||
return;
|
|
||||||
|
|
||||||
// For UI consistency, clear the entire page stack
|
|
||||||
while (RootFrame.RemoveBackEntry() != null)
|
|
||||||
{
|
|
||||||
; // do nothing
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
// Initialize the app's font and flow direction as defined in its localized resource strings.
|
|
||||||
//
|
|
||||||
// To ensure that the font of your application is aligned with its supported languages and that the
|
|
||||||
// FlowDirection for each of those languages follows its traditional direction, ResourceLanguage
|
|
||||||
// and ResourceFlowDirection should be initialized in each resx file to match these values with that
|
|
||||||
// file's culture. For example:
|
|
||||||
//
|
|
||||||
// AppResources.es-ES.resx
|
|
||||||
// ResourceLanguage's value should be "es-ES"
|
|
||||||
// ResourceFlowDirection's value should be "LeftToRight"
|
|
||||||
//
|
|
||||||
// AppResources.ar-SA.resx
|
|
||||||
// ResourceLanguage's value should be "ar-SA"
|
|
||||||
// ResourceFlowDirection's value should be "RightToLeft"
|
|
||||||
//
|
|
||||||
// For more info on localizing Windows Phone apps see http://go.microsoft.com/fwlink/?LinkId=262072.
|
|
||||||
//
|
|
||||||
private void InitializeLanguage()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// Set the font to match the display language defined by the
|
|
||||||
// ResourceLanguage resource string for each supported language.
|
|
||||||
//
|
|
||||||
// Fall back to the font of the neutral language if the Display
|
|
||||||
// language of the phone is not supported.
|
|
||||||
//
|
|
||||||
// If a compiler error is hit then ResourceLanguage is missing from
|
|
||||||
// the resource file.
|
|
||||||
RootFrame.Language = XmlLanguage.GetLanguage(AppResources.ResourceLanguage);
|
|
||||||
|
|
||||||
// Set the FlowDirection of all elements under the root frame based
|
|
||||||
// on the ResourceFlowDirection resource string for each
|
|
||||||
// supported language.
|
|
||||||
//
|
|
||||||
// If a compiler error is hit then ResourceFlowDirection is missing from
|
|
||||||
// the resource file.
|
|
||||||
FlowDirection flow = (FlowDirection)Enum.Parse(typeof(FlowDirection), AppResources.ResourceFlowDirection);
|
|
||||||
RootFrame.FlowDirection = flow;
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
// If an exception is caught here it is most likely due to either
|
|
||||||
// ResourceLangauge not being correctly set to a supported language
|
|
||||||
// code or ResourceFlowDirection is set to a value other than LeftToRight
|
|
||||||
// or RightToLeft.
|
|
||||||
|
|
||||||
if (Debugger.IsAttached)
|
|
||||||
{
|
|
||||||
Debugger.Break();
|
|
||||||
}
|
|
||||||
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 8.8 KiB |
Before Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 845 B |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 9.7 KiB |
Before Width: | Height: | Size: 8.9 KiB |
Before Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 7.9 KiB |
@ -1,210 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup>
|
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
|
||||||
<ProductVersion>10.0.20506</ProductVersion>
|
|
||||||
<SchemaVersion>2.0</SchemaVersion>
|
|
||||||
<ProjectGuid>{5424CF29-908E-417E-93F3-F1CD81E5372C}</ProjectGuid>
|
|
||||||
<ProjectTypeGuids>{C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
|
|
||||||
<OutputType>Library</OutputType>
|
|
||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
|
||||||
<RootNamespace>CodecApp</RootNamespace>
|
|
||||||
<AssemblyName>CodecApp</AssemblyName>
|
|
||||||
<TargetFrameworkIdentifier>WindowsPhone</TargetFrameworkIdentifier>
|
|
||||||
<TargetFrameworkVersion>v8.1</TargetFrameworkVersion>
|
|
||||||
<SilverlightVersion>
|
|
||||||
</SilverlightVersion>
|
|
||||||
<SilverlightApplication>true</SilverlightApplication>
|
|
||||||
<SupportedCultures>
|
|
||||||
</SupportedCultures>
|
|
||||||
<XapOutputs>true</XapOutputs>
|
|
||||||
<GenerateSilverlightManifest>true</GenerateSilverlightManifest>
|
|
||||||
<XapFilename>CodecApp_$(Configuration)_$(Platform).xap</XapFilename>
|
|
||||||
<SilverlightManifestTemplate>Properties\AppManifest.xml</SilverlightManifestTemplate>
|
|
||||||
<SilverlightAppEntry>CodecApp.App</SilverlightAppEntry>
|
|
||||||
<ValidateXaml>true</ValidateXaml>
|
|
||||||
<MinimumVisualStudioVersion>12.0</MinimumVisualStudioVersion>
|
|
||||||
<ThrowErrorsInValidation>true</ThrowErrorsInValidation>
|
|
||||||
<TargetFrameworkProfile />
|
|
||||||
<DefaultLanguage>en-US</DefaultLanguage>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
||||||
<DebugSymbols>true</DebugSymbols>
|
|
||||||
<DebugType>full</DebugType>
|
|
||||||
<Optimize>false</Optimize>
|
|
||||||
<OutputPath>Bin\Debug</OutputPath>
|
|
||||||
<DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
|
|
||||||
<NoStdLib>true</NoStdLib>
|
|
||||||
<NoConfig>true</NoConfig>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
|
||||||
<DebugType>pdbonly</DebugType>
|
|
||||||
<Optimize>true</Optimize>
|
|
||||||
<OutputPath>Bin\Release</OutputPath>
|
|
||||||
<DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
|
|
||||||
<NoStdLib>true</NoStdLib>
|
|
||||||
<NoConfig>true</NoConfig>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
|
||||||
<DebugSymbols>true</DebugSymbols>
|
|
||||||
<DebugType>full</DebugType>
|
|
||||||
<Optimize>false</Optimize>
|
|
||||||
<OutputPath>Bin\x86\Debug</OutputPath>
|
|
||||||
<DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
|
|
||||||
<NoStdLib>true</NoStdLib>
|
|
||||||
<NoConfig>true</NoConfig>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
<PlatformTarget />
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
|
||||||
<DebugType>pdbonly</DebugType>
|
|
||||||
<Optimize>true</Optimize>
|
|
||||||
<OutputPath>Bin\x86\Release</OutputPath>
|
|
||||||
<DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
|
|
||||||
<NoStdLib>true</NoStdLib>
|
|
||||||
<NoConfig>true</NoConfig>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
<PlatformTarget />
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|ARM' ">
|
|
||||||
<DebugSymbols>true</DebugSymbols>
|
|
||||||
<DebugType>full</DebugType>
|
|
||||||
<Optimize>false</Optimize>
|
|
||||||
<OutputPath>Bin\ARM\Debug</OutputPath>
|
|
||||||
<DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
|
|
||||||
<NoStdLib>true</NoStdLib>
|
|
||||||
<NoConfig>true</NoConfig>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
<PlatformTarget />
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|ARM' ">
|
|
||||||
<DebugType>pdbonly</DebugType>
|
|
||||||
<Optimize>true</Optimize>
|
|
||||||
<OutputPath>Bin\ARM\Release</OutputPath>
|
|
||||||
<DefineConstants>TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>
|
|
||||||
<NoStdLib>true</NoStdLib>
|
|
||||||
<NoConfig>true</NoConfig>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
<PlatformTarget />
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Compile Include="App.xaml.cs">
|
|
||||||
<DependentUpon>App.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="LocalizedStrings.cs" />
|
|
||||||
<Compile Include="MainPage.xaml.cs">
|
|
||||||
<DependentUpon>MainPage.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
|
||||||
<Compile Include="Resources\AppResources.Designer.cs">
|
|
||||||
<AutoGen>True</AutoGen>
|
|
||||||
<DesignTime>True</DesignTime>
|
|
||||||
<DependentUpon>AppResources.resx</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ApplicationDefinition Include="App.xaml">
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
<Generator>MSBuild:Compile</Generator>
|
|
||||||
</ApplicationDefinition>
|
|
||||||
<Page Include="MainPage.xaml">
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
<Generator>MSBuild:Compile</Generator>
|
|
||||||
</Page>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Content Include="Assets\BadgeLogo.png" />
|
|
||||||
<Content Include="Assets\Logo.png" />
|
|
||||||
<Content Include="Assets\SplashScreen.png" />
|
|
||||||
<Content Include="Assets\SquareTile150x150.png" />
|
|
||||||
<Content Include="Assets\SquareTile71x71.png" />
|
|
||||||
<Content Include="Assets\StoreLogo.png" />
|
|
||||||
<Content Include="Assets\WideLogo.png" />
|
|
||||||
<Content Include="BAMQ1_JVC_C.264">
|
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
|
||||||
</Content>
|
|
||||||
<Content Include="BA1_FT_C.264">
|
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
|
||||||
</Content>
|
|
||||||
<Content Include="BA_MW_D.264">
|
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
|
||||||
</Content>
|
|
||||||
<None Include="CiscoVT2people_160x96_6fps.yuv">
|
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
|
||||||
</None>
|
|
||||||
<None Include="layer2.cfg">
|
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
|
||||||
</None>
|
|
||||||
<AppxManifest Include="Package.appxmanifest">
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</AppxManifest>
|
|
||||||
<None Include="Properties\AppManifest.xml" />
|
|
||||||
<None Include="Properties\WMAppManifest.xml">
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
</None>
|
|
||||||
<Content Include="openh264.dll">
|
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
|
||||||
</Content>
|
|
||||||
<Content Include="welsenc.cfg">
|
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
|
||||||
</Content>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Content Include="Assets\AlignmentGrid.png" />
|
|
||||||
<Content Include="Assets\ApplicationIcon.png">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</Content>
|
|
||||||
<Content Include="Assets\Tiles\FlipCycleTileLarge.png">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</Content>
|
|
||||||
<Content Include="Assets\Tiles\FlipCycleTileMedium.png">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</Content>
|
|
||||||
<Content Include="Assets\Tiles\FlipCycleTileSmall.png">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</Content>
|
|
||||||
<Content Include="Assets\Tiles\IconicTileMediumLarge.png">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</Content>
|
|
||||||
<Content Include="Assets\Tiles\IconicTileSmall.png">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</Content>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<EmbeddedResource Include="Resources\AppResources.resx">
|
|
||||||
<Generator>PublicResXFileCodeGenerator</Generator>
|
|
||||||
<LastGenOutput>AppResources.Designer.cs</LastGenOutput>
|
|
||||||
</EmbeddedResource>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\CodecRTComponent.vcxproj">
|
|
||||||
<Project>{fe5bf241-f4ea-4b94-b36a-23511e5908ec}</Project>
|
|
||||||
<Name>CodecRTComponent</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).$(TargetFrameworkVersion).Overrides.targets" />
|
|
||||||
<Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).CSharp.targets" />
|
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
|
||||||
<Target Name="BeforeBuild">
|
|
||||||
</Target>
|
|
||||||
<Target Name="AfterBuild">
|
|
||||||
</Target>
|
|
||||||
-->
|
|
||||||
<ProjectExtensions />
|
|
||||||
<PropertyGroup>
|
|
||||||
<PreBuildEvent>copy /y ..\..\..\..\..\..\..\..\bin\$(Platform)\$(Configuration)\openh264.dll ..\..\..\
|
|
||||||
copy /y ..\..\..\..\..\..\..\..\res\*.yuv ..\..\..\
|
|
||||||
copy /y ..\..\..\..\..\..\..\..\res\B*.264 ..\..\..\
|
|
||||||
</PreBuildEvent>
|
|
||||||
</PropertyGroup>
|
|
||||||
</Project>
|
|
@ -1,14 +0,0 @@
|
|||||||
using CodecApp.Resources;
|
|
||||||
|
|
||||||
namespace CodecApp
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Provides access to string resources.
|
|
||||||
/// </summary>
|
|
||||||
public class LocalizedStrings
|
|
||||||
{
|
|
||||||
private static AppResources _localizedResources = new AppResources();
|
|
||||||
|
|
||||||
public AppResources LocalizedResources { get { return _localizedResources; } }
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,66 +0,0 @@
|
|||||||
<phone:PhoneApplicationPage
|
|
||||||
x:Class="CodecApp.MainPage"
|
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
|
|
||||||
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
|
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
||||||
mc:Ignorable="d"
|
|
||||||
FontFamily="{StaticResource PhoneFontFamilyNormal}"
|
|
||||||
FontSize="{StaticResource PhoneFontSizeNormal}"
|
|
||||||
Foreground="{StaticResource PhoneForegroundBrush}"
|
|
||||||
SupportedOrientations="Portrait" Orientation="Portrait"
|
|
||||||
shell:SystemTray.IsVisible="True">
|
|
||||||
|
|
||||||
<!--LayoutRoot is the root grid where all page content is placed-->
|
|
||||||
<Grid x:Name="LayoutRoot" Background="Transparent">
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition Height="Auto"/>
|
|
||||||
<RowDefinition Height="*"/>
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
|
|
||||||
<!-- LOCALIZATION NOTE:
|
|
||||||
To localize the displayed strings copy their values to appropriately named
|
|
||||||
keys in the app's neutral language resource file (AppResources.resx) then
|
|
||||||
replace the hard-coded text value between the attributes' quotation marks
|
|
||||||
with the binding clause whose path points to that string name.
|
|
||||||
|
|
||||||
For example:
|
|
||||||
|
|
||||||
Text="{Binding Path=LocalizedResources.ApplicationTitle, Source={StaticResource LocalizedStrings}}"
|
|
||||||
|
|
||||||
This binding points to the template's string resource named "ApplicationTitle".
|
|
||||||
|
|
||||||
Adding supported languages in the Project Properties tab will create a
|
|
||||||
new resx file per language that can carry the translated values of your
|
|
||||||
UI strings. The binding in these examples will cause the value of the
|
|
||||||
attributes to be drawn from the .resx file that matches the
|
|
||||||
CurrentUICulture of the app at run time.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!--TitlePanel contains the name of the application and page title-->
|
|
||||||
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
|
|
||||||
<TextBlock Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/>
|
|
||||||
<TextBlock Text="page name" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
|
|
||||||
</StackPanel>
|
|
||||||
|
|
||||||
<!--ContentPanel - place additional content here-->
|
|
||||||
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="14,10,10,-10">
|
|
||||||
<Button Content="CallEncoder" HorizontalAlignment="Left" Margin="49,10,0,0" VerticalAlignment="Top" Width="340" Click="Button_Click_CallEncoder"/>
|
|
||||||
<Button Content="CallDecoder" HorizontalAlignment="Left" Margin="63,297,0,0" VerticalAlignment="Top" Width="326" Click="Button_Click__CallDecoder"/>
|
|
||||||
<TextBox x:Name="DecoderInfo" HorizontalAlignment="Left" Height="183" Margin="37,374,0,0" TextWrapping="Wrap" Text="Decoder info" VerticalAlignment="Top" Width="397"/>
|
|
||||||
<TextBox x:Name="EncoderInfo" HorizontalAlignment="Left" Height="191" Margin="37,82,0,0" TextWrapping="Wrap" Text="Encoder info" VerticalAlignment="Top" Width="397"/>
|
|
||||||
|
|
||||||
</Grid>
|
|
||||||
|
|
||||||
<!--Uncomment to see an alignment grid to help ensure your controls are
|
|
||||||
aligned on common boundaries. The image has a top margin of -32px to
|
|
||||||
account for the System Tray. Set this to 0 (or remove the margin altogether)
|
|
||||||
if the System Tray is hidden.
|
|
||||||
|
|
||||||
Before shipping remove this XAML and the image itself.-->
|
|
||||||
<!--<Image Source="/Assets/AlignmentGrid.png" VerticalAlignment="Top" Height="800" Width="480" Margin="0,-32,0,0" Grid.Row="0" Grid.RowSpan="2" IsHitTestVisible="False" />-->
|
|
||||||
</Grid>
|
|
||||||
|
|
||||||
</phone:PhoneApplicationPage>
|
|
@ -1,86 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Net;
|
|
||||||
using System.Windows;
|
|
||||||
using System.Windows.Controls;
|
|
||||||
using System.Windows.Navigation;
|
|
||||||
using Microsoft.Phone.Controls;
|
|
||||||
using Microsoft.Phone.Shell;
|
|
||||||
using CodecApp.Resources;
|
|
||||||
using CodecRTComponent;
|
|
||||||
|
|
||||||
namespace CodecApp {
|
|
||||||
public partial class MainPage : PhoneApplicationPage {
|
|
||||||
// Constructor
|
|
||||||
private CodecRunTimeComponent vRTCCodec;
|
|
||||||
// Constructor
|
|
||||||
public MainPage() {
|
|
||||||
InitializeComponent();
|
|
||||||
|
|
||||||
vRTCCodec = new CodecRunTimeComponent();
|
|
||||||
// Sample code to localize the ApplicationBar
|
|
||||||
//BuildLocalizedApplicationBar();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Button_Click_CallEncoder (object sender, RoutedEventArgs e) {
|
|
||||||
int iRetVal = 0;
|
|
||||||
float fFPS = 0.0F;
|
|
||||||
double dEncoderTime = 0.0;
|
|
||||||
int iEncodedFrame = 0;
|
|
||||||
string sEncoderInfo = "Encoder performance: \n";
|
|
||||||
|
|
||||||
iRetVal = vRTCCodec.Encode();
|
|
||||||
|
|
||||||
if (0 == iRetVal) {
|
|
||||||
fFPS = vRTCCodec.GetEncFPS();
|
|
||||||
dEncoderTime = vRTCCodec.GetEncTime();
|
|
||||||
iEncodedFrame = vRTCCodec.GetEncodedFrameNum();
|
|
||||||
sEncoderInfo += "FPS : " + fFPS.ToString() + "\n";
|
|
||||||
sEncoderInfo += "EncTime(sec): " + dEncoderTime.ToString() + "\n";
|
|
||||||
sEncoderInfo += "EncodedNum : " + iEncodedFrame.ToString() + "\n";
|
|
||||||
EncoderInfo.Text = sEncoderInfo;
|
|
||||||
} else {
|
|
||||||
EncoderInfo.Text = "ebcoded failed!...";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Button_Click__CallDecoder (object sender, RoutedEventArgs e) {
|
|
||||||
int iRetVal = 0;
|
|
||||||
float fFPS = 0.0F;
|
|
||||||
double dDecoderTime = 0.0;
|
|
||||||
int iDecodedFrame = 0;
|
|
||||||
string sDecoderInfo = "Decoder performance: \n";
|
|
||||||
|
|
||||||
iRetVal = vRTCCodec.Decode();
|
|
||||||
|
|
||||||
if (0 == iRetVal) {
|
|
||||||
fFPS = vRTCCodec.GetDecFPS();
|
|
||||||
dDecoderTime = vRTCCodec.GetDecTime();
|
|
||||||
iDecodedFrame = vRTCCodec.GetDecodedFrameNum();
|
|
||||||
sDecoderInfo += "FPS : " + fFPS.ToString() + "\n";
|
|
||||||
sDecoderInfo += "DecTime(sec): " + dDecoderTime.ToString() + "\n";
|
|
||||||
sDecoderInfo += "DecodedNum : " + iDecodedFrame.ToString() + "\n";
|
|
||||||
DecoderInfo.Text = sDecoderInfo;
|
|
||||||
} else {
|
|
||||||
DecoderInfo.Text = "decoded failed!...";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sample code for building a localized ApplicationBar
|
|
||||||
//private void BuildLocalizedApplicationBar()
|
|
||||||
//{
|
|
||||||
// // Set the page's ApplicationBar to a new instance of ApplicationBar.
|
|
||||||
// ApplicationBar = new ApplicationBar();
|
|
||||||
|
|
||||||
// // Create a new button and set the text value to the localized string from AppResources.
|
|
||||||
// ApplicationBarIconButton appBarButton = new ApplicationBarIconButton(new Uri("/Assets/AppBar/appbar.add.rest.png", UriKind.Relative));
|
|
||||||
// appBarButton.Text = AppResources.AppBarButtonText;
|
|
||||||
// ApplicationBar.Buttons.Add(appBarButton);
|
|
||||||
|
|
||||||
// // Create a new menu item with the localized string from AppResources.
|
|
||||||
// ApplicationBarMenuItem appBarMenuItem = new ApplicationBarMenuItem(AppResources.AppBarMenuItemText);
|
|
||||||
// ApplicationBar.MenuItems.Add(appBarMenuItem);
|
|
||||||
//}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,58 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Package xmlns="http://schemas.microsoft.com/appx/2010/manifest" xmlns:m2="http://schemas.microsoft.com/appx/2013/manifest" xmlns:m3="http://schemas.microsoft.com/appx/2014/manifest" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest">
|
|
||||||
|
|
||||||
<Identity Name="f99aa5a5-a6ee-47ec-a093-390b78afba3c"
|
|
||||||
Publisher="CN=Openh264"
|
|
||||||
Version="1.0.0.0" />
|
|
||||||
|
|
||||||
<mp:PhoneIdentity PhoneProductId="5424cf29-908e-417e-93f3-f1cd81e5372c" PhonePublisherId="cb9bed24-05fd-451a-8736-6dad92946a6e"/>
|
|
||||||
|
|
||||||
<Properties>
|
|
||||||
<DisplayName>CodecApp</DisplayName>
|
|
||||||
<PublisherDisplayName>Openh264</PublisherDisplayName>
|
|
||||||
<Logo>Assets\StoreLogo.png</Logo>
|
|
||||||
</Properties>
|
|
||||||
|
|
||||||
<Prerequisites>
|
|
||||||
<OSMinVersion>6.3.1</OSMinVersion>
|
|
||||||
<OSMaxVersionTested>6.3.1</OSMaxVersionTested>
|
|
||||||
</Prerequisites>
|
|
||||||
|
|
||||||
<Resources>
|
|
||||||
<Resource Language="x-generate"/>
|
|
||||||
</Resources>
|
|
||||||
|
|
||||||
<Applications>
|
|
||||||
<Application Id="x5424cf29y908ey417ey93f3yf1cd81e5372cx"
|
|
||||||
Executable="AGHost.exe"
|
|
||||||
EntryPoint="MainPage.xaml">
|
|
||||||
<m3:VisualElements
|
|
||||||
DisplayName="CodecApp"
|
|
||||||
Square150x150Logo="Assets\SquareTile150x150.png"
|
|
||||||
Square44x44Logo="Assets\Logo.png"
|
|
||||||
Description="CodecApp"
|
|
||||||
ForegroundText="light"
|
|
||||||
BackgroundColor="#464646">
|
|
||||||
<m3:DefaultTile Square71x71Logo="Assets\SquareTile71x71.png"/>
|
|
||||||
<m3:SplashScreen Image="Assets\Splashscreen.png" />
|
|
||||||
</m3:VisualElements>
|
|
||||||
<Extensions>
|
|
||||||
<Extension Category="windows.backgroundTasks" EntryPoint="AgHost.BackgroundTask">
|
|
||||||
<BackgroundTasks>
|
|
||||||
<Task Type="systemEvent" />
|
|
||||||
</BackgroundTasks>
|
|
||||||
</Extension>
|
|
||||||
</Extensions>
|
|
||||||
</Application>
|
|
||||||
</Applications>
|
|
||||||
<Capabilities>
|
|
||||||
</Capabilities>
|
|
||||||
<Extensions>
|
|
||||||
<Extension Category="windows.activatableClass.inProcessServer">
|
|
||||||
<InProcessServer>
|
|
||||||
<Path>AgHostSvcs.dll</Path>
|
|
||||||
<ActivatableClass ActivatableClassId="AgHost.BackgroundTask" ThreadingModel="both" />
|
|
||||||
</InProcessServer>
|
|
||||||
</Extension>
|
|
||||||
</Extensions>
|
|
||||||
</Package>
|
|
@ -1,6 +0,0 @@
|
|||||||
<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
|
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
||||||
>
|
|
||||||
<Deployment.Parts>
|
|
||||||
</Deployment.Parts>
|
|
||||||
</Deployment>
|
|
@ -1,37 +0,0 @@
|
|||||||
using System.Reflection;
|
|
||||||
using System.Runtime.CompilerServices;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using System.Resources;
|
|
||||||
|
|
||||||
// General Information about an assembly is controlled through the following
|
|
||||||
// set of attributes. Change these attribute values to modify the information
|
|
||||||
// associated with an assembly.
|
|
||||||
[assembly: AssemblyTitle ("CodecApp")]
|
|
||||||
[assembly: AssemblyDescription ("")]
|
|
||||||
[assembly: AssemblyConfiguration ("")]
|
|
||||||
[assembly: AssemblyCompany ("")]
|
|
||||||
[assembly: AssemblyProduct ("CodecApp")]
|
|
||||||
[assembly: AssemblyCopyright ("Copyright © 2015")]
|
|
||||||
[assembly: AssemblyTrademark ("")]
|
|
||||||
[assembly: AssemblyCulture ("")]
|
|
||||||
|
|
||||||
// Setting ComVisible to false makes the types in this assembly not visible
|
|
||||||
// to COM components. If you need to access a type in this assembly from
|
|
||||||
// COM, set the ComVisible attribute to true on that type.
|
|
||||||
[assembly: ComVisible (false)]
|
|
||||||
|
|
||||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
|
||||||
[assembly: Guid ("2bac46db-63e8-4c33-9be3-8e6b4638045c")]
|
|
||||||
|
|
||||||
// Version information for an assembly consists of the following four values:
|
|
||||||
//
|
|
||||||
// Major Version
|
|
||||||
// Minor Version
|
|
||||||
// Build Number
|
|
||||||
// Revision
|
|
||||||
//
|
|
||||||
// You can specify all the values or you can default the Revision and Build Numbers
|
|
||||||
// by using the '*' as shown below:
|
|
||||||
[assembly: AssemblyVersion ("1.0.0.0")]
|
|
||||||
[assembly: AssemblyFileVersion ("1.0.0.0")]
|
|
||||||
[assembly: NeutralResourcesLanguageAttribute ("en-US")]
|
|
@ -1,37 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Deployment xmlns="http://schemas.microsoft.com/windowsphone/2014/deployment" AppPlatformVersion="8.1">
|
|
||||||
<DefaultLanguage xmlns="" code="en-US" />
|
|
||||||
<App xmlns="" ProductID="{5424cf29-908e-417e-93f3-f1cd81e5372c}" Title="CodecApp" RuntimeType="Silverlight" Version="1.0.0.0" Genre="apps.normal" Author="CodecApp author" Description="Sample description" Publisher="CodecApp" PublisherID="{cb9bed24-05fd-451a-8736-6dad92946a6e}">
|
|
||||||
<IconPath IsRelative="true" IsResource="false">Assets\ApplicationIcon.png</IconPath>
|
|
||||||
<Capabilities>
|
|
||||||
<Capability Name="ID_CAP_NETWORKING" />
|
|
||||||
<Capability Name="ID_CAP_MEDIALIB_AUDIO" />
|
|
||||||
<Capability Name="ID_CAP_MEDIALIB_PLAYBACK" />
|
|
||||||
<Capability Name="ID_CAP_SENSORS" />
|
|
||||||
<Capability Name="ID_CAP_WEBBROWSERCOMPONENT" />
|
|
||||||
</Capabilities>
|
|
||||||
<Tasks>
|
|
||||||
<DefaultTask Name="_default" NavigationPage="MainPage.xaml" />
|
|
||||||
</Tasks>
|
|
||||||
<Tokens>
|
|
||||||
<PrimaryToken TokenID="CodecAppToken" TaskName="_default">
|
|
||||||
<TemplateFlip>
|
|
||||||
<SmallImageURI IsRelative="true" IsResource="false">Assets\Tiles\FlipCycleTileSmall.png</SmallImageURI>
|
|
||||||
<Count>0</Count>
|
|
||||||
<BackgroundImageURI IsRelative="true" IsResource="false">Assets\Tiles\FlipCycleTileMedium.png</BackgroundImageURI>
|
|
||||||
<Title>CodecApp</Title>
|
|
||||||
<BackContent></BackContent>
|
|
||||||
<BackBackgroundImageURI></BackBackgroundImageURI>
|
|
||||||
<BackTitle></BackTitle>
|
|
||||||
<DeviceLockImageURI></DeviceLockImageURI>
|
|
||||||
<HasLarge></HasLarge>
|
|
||||||
</TemplateFlip>
|
|
||||||
</PrimaryToken>
|
|
||||||
</Tokens>
|
|
||||||
<ScreenResolutions>
|
|
||||||
<ScreenResolution Name="ID_RESOLUTION_WVGA" />
|
|
||||||
<ScreenResolution Name="ID_RESOLUTION_WXGA" />
|
|
||||||
<ScreenResolution Name="ID_RESOLUTION_HD720P" />
|
|
||||||
</ScreenResolutions>
|
|
||||||
</App>
|
|
||||||
</Deployment>
|
|
@ -1,110 +0,0 @@
|
|||||||
//------------------------------------------------------------------------------
|
|
||||||
// <auto-generated>
|
|
||||||
// This code was generated by a tool.
|
|
||||||
// Runtime Version:4.0.30319.34014
|
|
||||||
//
|
|
||||||
// Changes to this file may cause incorrect behavior and will be lost if
|
|
||||||
// the code is regenerated.
|
|
||||||
// </auto-generated>
|
|
||||||
//------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
namespace CodecApp.Resources {
|
|
||||||
using System;
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
|
||||||
/// </summary>
|
|
||||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
|
||||||
// class via a tool like ResGen or Visual Studio.
|
|
||||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
|
||||||
// with the /str option, or rebuild your VS project.
|
|
||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute ("System.Resources.Tools.StronglyTypedResourceBuilder",
|
|
||||||
"4.0.0.0")]
|
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
|
||||||
public class AppResources {
|
|
||||||
|
|
||||||
private static global::System.Resources.ResourceManager resourceMan;
|
|
||||||
|
|
||||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
|
||||||
|
|
||||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute ("Microsoft.Performance",
|
|
||||||
"CA1811:AvoidUncalledPrivateCode")]
|
|
||||||
internal AppResources() {
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Returns the cached ResourceManager instance used by this class.
|
|
||||||
/// </summary>
|
|
||||||
[global::System.ComponentModel.EditorBrowsableAttribute (global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
|
||||||
public static global::System.Resources.ResourceManager ResourceManager {
|
|
||||||
get {
|
|
||||||
if (object.ReferenceEquals (resourceMan, null)) {
|
|
||||||
global::System.Resources.ResourceManager temp = new
|
|
||||||
global::System.Resources.ResourceManager ("CodecApp.Resources.AppResources", typeof (AppResources).Assembly);
|
|
||||||
resourceMan = temp;
|
|
||||||
}
|
|
||||||
return resourceMan;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Overrides the current thread's CurrentUICulture property for all
|
|
||||||
/// resource lookups using this strongly typed resource class.
|
|
||||||
/// </summary>
|
|
||||||
[global::System.ComponentModel.EditorBrowsableAttribute (global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
|
||||||
public static global::System.Globalization.CultureInfo Culture {
|
|
||||||
get {
|
|
||||||
return resourceCulture;
|
|
||||||
} set {
|
|
||||||
resourceCulture = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to add.
|
|
||||||
/// </summary>
|
|
||||||
public static string AppBarButtonText {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString ("AppBarButtonText", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to Menu Item.
|
|
||||||
/// </summary>
|
|
||||||
public static string AppBarMenuItemText {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString ("AppBarMenuItemText", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to MY APPLICATION.
|
|
||||||
/// </summary>
|
|
||||||
public static string ApplicationTitle {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString ("ApplicationTitle", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to LeftToRight.
|
|
||||||
/// </summary>
|
|
||||||
public static string ResourceFlowDirection {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString ("ResourceFlowDirection", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Looks up a localized string similar to en-US.
|
|
||||||
/// </summary>
|
|
||||||
public static string ResourceLanguage {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString ("ResourceLanguage", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,137 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<root>
|
|
||||||
<!--
|
|
||||||
Microsoft ResX Schema
|
|
||||||
|
|
||||||
Version 2.0
|
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
|
||||||
that is mostly human readable. The generation and parsing of the
|
|
||||||
various data types are done through the TypeConverter classes
|
|
||||||
associated with the data types.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
|
||||||
<resheader name="version">2.0</resheader>
|
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
|
||||||
</data>
|
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
|
||||||
<comment>This is a comment</comment>
|
|
||||||
</data>
|
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
|
||||||
name/value pairs.
|
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
|
||||||
text/value conversion through the TypeConverter architecture.
|
|
||||||
Classes that don't support this are serialized and stored with the
|
|
||||||
mimetype set.
|
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
|
||||||
read any of the formats listed below.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
|
||||||
value : The object must be serialized with
|
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
|
||||||
value : The object must be serialized into a byte array
|
|
||||||
: using a System.ComponentModel.TypeConverter
|
|
||||||
: and then encoded with base64 encoding.
|
|
||||||
-->
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:choice maxOccurs="unbounded">
|
|
||||||
<xsd:element name="metadata">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="assembly">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="data">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
|
||||||
<xsd:attribute ref="xml:space" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
<xsd:element name="resheader">
|
|
||||||
<xsd:complexType>
|
|
||||||
<xsd:sequence>
|
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
|
||||||
</xsd:sequence>
|
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:choice>
|
|
||||||
</xsd:complexType>
|
|
||||||
</xsd:element>
|
|
||||||
</xsd:schema>
|
|
||||||
<resheader name="resmimetype">
|
|
||||||
<value>text/microsoft-resx</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="version">
|
|
||||||
<value>2.0</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="reader">
|
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<resheader name="writer">
|
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
|
||||||
</resheader>
|
|
||||||
<data name="ResourceFlowDirection" xml:space="preserve">
|
|
||||||
<value>LeftToRight</value>
|
|
||||||
<comment>Controls the FlowDirection for all elements in the RootFrame. Set to the traditional direction of this resource file's language</comment>
|
|
||||||
</data>
|
|
||||||
<data name="ResourceLanguage" xml:space="preserve">
|
|
||||||
<value>en-US</value>
|
|
||||||
<comment>Controls the Language and ensures that the font for all elements in the RootFrame aligns with the app's language. Set to the language code of this resource file's language.</comment>
|
|
||||||
</data>
|
|
||||||
<data name="ApplicationTitle" xml:space="preserve">
|
|
||||||
<value>MY APPLICATION</value>
|
|
||||||
</data>
|
|
||||||
<data name="AppBarButtonText" xml:space="preserve">
|
|
||||||
<value>add</value>
|
|
||||||
</data>
|
|
||||||
<data name="AppBarMenuItemText" xml:space="preserve">
|
|
||||||
<value>Menu Item</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
|
@ -1,39 +0,0 @@
|
|||||||
# Layer Configuration File
|
|
||||||
|
|
||||||
|
|
||||||
#============================== INPUT / OUTPUT ==============================
|
|
||||||
FrameWidth 160 # Input frame width
|
|
||||||
FrameHeight 96 # Input frame height
|
|
||||||
FrameRateOut 12 # Output frame rate [Hz]
|
|
||||||
ReconFile rec_layer2.yuv # Reconstructed file
|
|
||||||
|
|
||||||
#============================== CODING ==============================
|
|
||||||
ProfileIdc 66 # value of profile_idc (or 0 for auto detection)
|
|
||||||
|
|
||||||
InitialQP 24 # Quantization parameters for base quality layer
|
|
||||||
#================================ RATE CONTROL ===============================
|
|
||||||
SpatialBitrate 600 # Unit: kbps, controled by DisableRC also
|
|
||||||
MaxSpatialBitrate 800 # Unit: kbps, max bitrate for current layer
|
|
||||||
#============================== MultiSlice Slice Argument ==============================
|
|
||||||
# for S/M Slice(s) mode settings
|
|
||||||
SliceMode 0 # 0: sigle slice mode; >0: multiple slices mode, see below;
|
|
||||||
SliceSize 1500
|
|
||||||
SliceNum 1 # multiple slices number specified
|
|
||||||
|
|
||||||
SlicesAssign0 960 # count number of MBs in slice #0
|
|
||||||
SlicesAssign1 0 # count number of MBs in slice #1
|
|
||||||
SlicesAssign2 0 # count number of MBs in slice #2
|
|
||||||
SlicesAssign3 0 # count number of MBs in slice #3 -- seting here is for better testing
|
|
||||||
SlicesAssign4 0 # count number of MBs in slice #4
|
|
||||||
SlicesAssign5 0 # count number of MBs in slice #5
|
|
||||||
SlicesAssign6 0 # count number of MBs in slice #6
|
|
||||||
SlicesAssign7 0 # count number of MBs in slice #7
|
|
||||||
|
|
||||||
### DESIGN OF SLICE MODE ####
|
|
||||||
# 0 SM_SINGLE_SLICE | SliceNum==1
|
|
||||||
# 1 SM_FIXEDSLCNUM_SLICE | according to SliceNum | Enabled dynamic slicing for multi-thread
|
|
||||||
# 2 SM_RASTER_SLICE | according to SlicesAssign | Need input of MB numbers each slice. In addition, if other constraint in slice_argument is presented, need to follow the constraints. Typically if MB num and slice size are both constrained, re-encoding may be involved.
|
|
||||||
# 3 SM_ROWMB_SLICE | according to PictureMBHeight | Typical of single row of mbs each slice?+ slice size constraint which including re-encoding
|
|
||||||
# 4 SM_DYN_SLICE | according to SliceSize | Dynamic slicing (have no idea about slice_nums until encoding current frame)
|
|
||||||
# 5 SM_AUTO_SLICE | according to thread number | the number of slices is decided by the number of threads,SliceNum is ignored
|
|
||||||
|
|
@ -1,62 +0,0 @@
|
|||||||
# Cisco Scalable H.264/AVC Extension Encoder Configuration File
|
|
||||||
|
|
||||||
#============================== GENERAL ==============================
|
|
||||||
UsageType 0 #0: camera video 1:screen content
|
|
||||||
SourceWidth 160 #input video width
|
|
||||||
SourceHeight 96 #input video height
|
|
||||||
InputFile CiscoVT2people_160x96_6fps.yuv # Input file
|
|
||||||
OutputFile test.264 # Bitstream file
|
|
||||||
MaxFrameRate 30 # Maximum frame rate [Hz]
|
|
||||||
FramesToBeEncoded - 1 # Number of frames (at input frame rate)
|
|
||||||
|
|
||||||
TemporalLayerNum 2 # temporal layer number(1--4)
|
|
||||||
IntraPeriod 0 # Intra Period ( multipler of GoP size or -1)
|
|
||||||
EnableSpsPpsIDAddition 1
|
|
||||||
|
|
||||||
EnableFrameCropping 1 # enable frame cropping flag
|
|
||||||
EntropyCodingModeFlag 0 #0:cavlc 1:cabac
|
|
||||||
MaxNalSize 0 # Unit:Byte, Maximum Nal size
|
|
||||||
#============================== LOOP FILTER ==============================
|
|
||||||
LoopFilterDisableIDC 0 # Loop filter idc (0: on, 1: off,
|
|
||||||
# 2: on except for slice boundaries,
|
|
||||||
# 3: two stage. slice boundries on in second stage
|
|
||||||
# 4: Luma on but Chroma off (w.r.t. idc=0)
|
|
||||||
# 5: Luma on except on slice boundaries, but Chroma off in enh. layer (w.r.t. idc=2)
|
|
||||||
# 6: Luma on in two stage. slice boundries on in second stage, but Chroma off (w.r.t. idc=3)
|
|
||||||
LoopFilterAlphaC0Offset 0 # AlphaOffset(-6..+6): valid range
|
|
||||||
LoopFilterBetaOffset 0 # BetaOffset (-6..+6): valid range
|
|
||||||
#============================== SOFTWARE IMPLEMENTATION ==============================
|
|
||||||
MultipleThreadIdc 1
|
|
||||||
# 0: auto(dynamic imp. internal encoder); 1: multiple threads imp. disabled; > 1: count number of threads;
|
|
||||||
|
|
||||||
#============================== RATE CONTROL ==============================
|
|
||||||
RCMode 0
|
|
||||||
# 0: quality mode; 1: bitrate mode; # 2: buffer based mode,can't control bitrate; -1: rc off mode;
|
|
||||||
TargetBitrate 5000 # Unit: kbps, controled by EnableRC also
|
|
||||||
MaxOverallBitrate 6000 # Unit: kbps, max bitrate overall
|
|
||||||
EnableFrameSkip 1 #Enable Frame Skip
|
|
||||||
|
|
||||||
#============================== DENOISE CONTROL ==============================
|
|
||||||
EnableDenoise 0 # Enable Denoise (1: enable, 0: disable)
|
|
||||||
|
|
||||||
#============================== SCENE CHANGE DETECTION CONTROL =======================
|
|
||||||
EnableSceneChangeDetection 1 # Enable Scene Change Detection (1: enable, 0: disable)
|
|
||||||
|
|
||||||
#============================== BACKGROUND DETECTION CONTROL ==============================
|
|
||||||
EnableBackgroundDetection 1 # BGD control(1: enable, 0: disable)
|
|
||||||
|
|
||||||
#============================== ADAPTIVE QUANTIZATION CONTROL =======================
|
|
||||||
EnableAdaptiveQuantization 1 # Enable Adaptive Quantization (1: enable, 0: disable)
|
|
||||||
|
|
||||||
#============================== LONG TERM REFERENCE CONTROL ==============================
|
|
||||||
EnableLongTermReference 1 # Enable Long Term Reference (1: enable, 0: disable)
|
|
||||||
LtrMarkPeriod 30 # Long Term Reference Marking Period
|
|
||||||
|
|
||||||
#============================== LAYER DEFINITION ==============================
|
|
||||||
PrefixNALAddingCtrl 0 # Control flag of adding prefix unit (0: off, 1: on)
|
|
||||||
# It shall always be on in SVC contexts (i.e. when there are CGS/MGS/spatial enhancement layers)
|
|
||||||
# Can be disabled when no inter spatial layer prediction in case of its value as 0
|
|
||||||
NumLayers 1 # Number of layers
|
|
||||||
//LayerCfg layer0.cfg # Layer 0 configuration file
|
|
||||||
//LayerCfg layer1.cfg # Layer 1 configuration file
|
|
||||||
LayerCfg layer2.cfg # Layer 2 configuration file
|
|
@ -1,181 +0,0 @@
|
|||||||
// CodecRTComponent.cpp
|
|
||||||
#include <string.h>
|
|
||||||
#include <iostream>
|
|
||||||
#include "typedefs.h"
|
|
||||||
#include "CodecRTComponent.h"
|
|
||||||
|
|
||||||
using namespace CodecRTComponent;
|
|
||||||
using namespace Platform;
|
|
||||||
using namespace Windows::Storage;
|
|
||||||
|
|
||||||
extern "C" int EncMain (int argc, char** argv);
|
|
||||||
extern int32_t DecMain (int32_t iArgC, char* pArgV[]);
|
|
||||||
//encoder info
|
|
||||||
extern float g_fFPS;
|
|
||||||
extern double g_dEncoderTime;
|
|
||||||
extern int g_iEncodedFrame;
|
|
||||||
|
|
||||||
//decoder info
|
|
||||||
extern double g_dDecTime;
|
|
||||||
extern float g_fDecFPS;
|
|
||||||
extern int g_iDecodedFrameNum;
|
|
||||||
|
|
||||||
|
|
||||||
CodecRunTimeComponent::CodecRunTimeComponent() {
|
|
||||||
}
|
|
||||||
|
|
||||||
float CodecRunTimeComponent::GetEncFPS() {
|
|
||||||
return g_fFPS;
|
|
||||||
}
|
|
||||||
double CodecRunTimeComponent::GetEncTime() {
|
|
||||||
return g_dEncoderTime;
|
|
||||||
}
|
|
||||||
int CodecRunTimeComponent::GetEncodedFrameNum() {
|
|
||||||
return g_iEncodedFrame;
|
|
||||||
}
|
|
||||||
|
|
||||||
int CodecRunTimeComponent::Encode() {
|
|
||||||
int iRet = 0;
|
|
||||||
int argc = 6;
|
|
||||||
char* argv[6];
|
|
||||||
int iSize = 0;
|
|
||||||
|
|
||||||
//App test data files' path
|
|
||||||
char InputPath[256] = { 0 };
|
|
||||||
char InputWelsEncCfgPath[256] = { 0 };
|
|
||||||
char InputCfgPath[256] = { 0 };
|
|
||||||
char InputYUVPath[256] = { 0 };
|
|
||||||
char OutputPath[256] = { 0 };
|
|
||||||
char Output264Path[256] = { 0 };
|
|
||||||
|
|
||||||
//App data location
|
|
||||||
Windows::Storage::StorageFolder^ InputLocation;
|
|
||||||
Platform::String^ InputLocationPath;
|
|
||||||
Windows::Storage::StorageFolder^ OutputLocation;
|
|
||||||
Platform::String^ OutputLocationPath;
|
|
||||||
|
|
||||||
//set input file path
|
|
||||||
InputLocation = Windows::ApplicationModel::Package::Current->InstalledLocation;
|
|
||||||
InputLocationPath = Platform::String::Concat (InputLocation->Path, "\\");
|
|
||||||
const wchar_t* pWcharInputFile = InputLocationPath->Data();
|
|
||||||
|
|
||||||
iSize = wcslen (pWcharInputFile);
|
|
||||||
InputPath[iSize] = 0;
|
|
||||||
for (int y = 0; y < iSize; y++) {
|
|
||||||
InputPath[y] = (char)pWcharInputFile[y];
|
|
||||||
}
|
|
||||||
|
|
||||||
//set output file path
|
|
||||||
OutputLocation = ApplicationData::Current->LocalFolder;
|
|
||||||
OutputLocationPath = Platform::String::Concat (OutputLocation->Path, "\\");
|
|
||||||
const wchar_t* pWcharOutputFile = OutputLocationPath->Data();
|
|
||||||
|
|
||||||
iSize = wcslen (pWcharOutputFile);
|
|
||||||
OutputPath[iSize] = 0;
|
|
||||||
for (int y = 0; y < iSize; y++) {
|
|
||||||
OutputPath[y] = (char)pWcharOutputFile[y];
|
|
||||||
}
|
|
||||||
|
|
||||||
//App
|
|
||||||
strcpy (InputWelsEncCfgPath, InputPath);
|
|
||||||
strcat (InputWelsEncCfgPath, "welsenc.cfg");
|
|
||||||
|
|
||||||
strcpy (InputYUVPath, InputPath);
|
|
||||||
strcat (InputYUVPath, "CiscoVT2people_160x96_6fps.yuv");
|
|
||||||
|
|
||||||
// single layer only
|
|
||||||
strcpy (InputCfgPath, InputPath);
|
|
||||||
strcat (InputCfgPath, "layer2.cfg");
|
|
||||||
// for multiple layers
|
|
||||||
/*
|
|
||||||
strcpy(InputCfg0Path, InputPath);
|
|
||||||
strcat(InputCfg0Path, "layer0.cfg");
|
|
||||||
strcpy(InputCfg1Path, InputPath);
|
|
||||||
strcat(InputCfg1Path, "layer1.cfg");
|
|
||||||
...
|
|
||||||
*/
|
|
||||||
|
|
||||||
strcpy (Output264Path, OutputPath);
|
|
||||||
strcat (Output264Path, "WP8_Test_CiscoVT2people_160x96_6fps.264");
|
|
||||||
|
|
||||||
argv[0] = (char*) ("EncoderApp");
|
|
||||||
argv[1] = InputWelsEncCfgPath;
|
|
||||||
argv[2] = (char*) ("-org");
|
|
||||||
argv[3] = InputYUVPath;
|
|
||||||
argv[4] = (char*) ("-bf");
|
|
||||||
argv[5] = Output264Path;
|
|
||||||
|
|
||||||
argc = 6;
|
|
||||||
iRet = EncMain (argc, argv);
|
|
||||||
|
|
||||||
return iRet;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
float CodecRunTimeComponent::GetDecFPS() {
|
|
||||||
return g_fDecFPS;
|
|
||||||
}
|
|
||||||
double CodecRunTimeComponent::GetDecTime() {
|
|
||||||
return g_dDecTime;
|
|
||||||
}
|
|
||||||
int CodecRunTimeComponent::GetDecodedFrameNum() {
|
|
||||||
return g_iDecodedFrameNum;
|
|
||||||
}
|
|
||||||
|
|
||||||
int CodecRunTimeComponent::Decode() {
|
|
||||||
int iRet = 0;
|
|
||||||
int argc = 3;
|
|
||||||
char* argv[3];
|
|
||||||
int size = 0;
|
|
||||||
|
|
||||||
//App data files' path
|
|
||||||
char InputPath[256] = { 0 };
|
|
||||||
char OutputPath[256] = { 0 };
|
|
||||||
char InputBitstreamPath[256] = { 0 };
|
|
||||||
char OutputYUVPath[256] = { 0 };
|
|
||||||
|
|
||||||
//App data location
|
|
||||||
Windows::Storage::StorageFolder^ InputLocation;
|
|
||||||
Platform::String^ InputLocationPath;
|
|
||||||
|
|
||||||
Windows::Storage::StorageFolder^ OutputLocation;
|
|
||||||
Platform::String^ OutputLocationPath;
|
|
||||||
|
|
||||||
//set input file path
|
|
||||||
InputLocation = Windows::ApplicationModel::Package::Current->InstalledLocation;
|
|
||||||
InputLocationPath = Platform::String::Concat (InputLocation->Path, "\\");
|
|
||||||
const wchar_t* pWcharInputFile = InputLocationPath->Data();
|
|
||||||
|
|
||||||
size = wcslen (pWcharInputFile);
|
|
||||||
InputPath[size] = 0;
|
|
||||||
for (int y = 0; y < size; y++) {
|
|
||||||
InputPath[y] = (char)pWcharInputFile[y];
|
|
||||||
}
|
|
||||||
|
|
||||||
//set output file path
|
|
||||||
OutputLocation = ApplicationData::Current->LocalFolder;
|
|
||||||
OutputLocationPath = Platform::String::Concat (OutputLocation->Path, "\\");
|
|
||||||
const wchar_t* pWcharOutputFile = OutputLocationPath->Data();
|
|
||||||
|
|
||||||
size = wcslen (pWcharOutputFile);
|
|
||||||
OutputPath[size] = 0;
|
|
||||||
for (int y = 0; y < size; y++) {
|
|
||||||
OutputPath[y] = (char)pWcharOutputFile[y];
|
|
||||||
}
|
|
||||||
|
|
||||||
//App test setting
|
|
||||||
strcpy_s (InputBitstreamPath, InputPath);
|
|
||||||
strcat_s (InputBitstreamPath, "BA_MW_D.264");
|
|
||||||
|
|
||||||
strcpy_s (OutputYUVPath, OutputPath);
|
|
||||||
strcat_s (OutputYUVPath, "WP8_Dec_BA_MW_D.yuv");
|
|
||||||
|
|
||||||
argv[0] = (char*) ("DecoderApp");
|
|
||||||
argv[1] = InputBitstreamPath;
|
|
||||||
argv[2] = OutputYUVPath;
|
|
||||||
|
|
||||||
argc = 3;
|
|
||||||
iRet = DecMain (argc, argv);
|
|
||||||
|
|
||||||
return iRet;
|
|
||||||
}
|
|
@ -1,22 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
namespace CodecRTComponent {
|
|
||||||
// public ref class WindowsPhoneRuntimeComponent sealed
|
|
||||||
public ref class CodecRunTimeComponent sealed {
|
|
||||||
public:
|
|
||||||
CodecRunTimeComponent();
|
|
||||||
int Encode();
|
|
||||||
int Decode();
|
|
||||||
|
|
||||||
//Get encoder info
|
|
||||||
float GetEncFPS();
|
|
||||||
double GetEncTime();
|
|
||||||
int GetEncodedFrameNum();
|
|
||||||
|
|
||||||
//get decoder info
|
|
||||||
float GetDecFPS();
|
|
||||||
double GetDecTime();
|
|
||||||
int GetDecodedFrameNum();
|
|
||||||
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,154 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Debug|Win32">
|
|
||||||
<Configuration>Debug</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Debug|ARM">
|
|
||||||
<Configuration>Debug</Configuration>
|
|
||||||
<Platform>ARM</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|ARM">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>ARM</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>{fe5bf241-f4ea-4b94-b36a-23511e5908ec}</ProjectGuid>
|
|
||||||
<RootNamespace>CodecRTComponent</RootNamespace>
|
|
||||||
<DefaultLanguage>en-US</DefaultLanguage>
|
|
||||||
<MinimumVisualStudioVersion>12.0</MinimumVisualStudioVersion>
|
|
||||||
<WinMDAssembly>true</WinMDAssembly>
|
|
||||||
<ApplicationType>Windows Phone Silverlight</ApplicationType>
|
|
||||||
<ApplicationTypeRevision>8.1</ApplicationTypeRevision>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
|
||||||
<PlatformToolset>v120</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
|
||||||
<PlatformToolset>v120</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<PlatformToolset>v120</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
|
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<PlatformToolset>v120</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<ImportGroup Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup>
|
|
||||||
<GenerateManifest>false</GenerateManifest>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
|
|
||||||
<OutDir>..\..\..\..\bin\$(Platform)\$(Configuration)\</OutDir>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
|
|
||||||
<OutDir>..\..\..\..\bin\$(Platform)\$(Configuration)\</OutDir>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<PreprocessorDefinitions>_WINRT_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
|
||||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
|
||||||
<AdditionalUsingDirectories>$(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories)</AdditionalUsingDirectories>
|
|
||||||
<CompileAsWinRT>true</CompileAsWinRT>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
|
|
||||||
<IgnoreSpecificDefaultLibraries>ole32.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
|
||||||
<GenerateWindowsMetadata>true</GenerateWindowsMetadata>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<PreprocessorDefinitions>_WINRT_DLL;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
|
||||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
|
||||||
<AdditionalUsingDirectories>$(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories)</AdditionalUsingDirectories>
|
|
||||||
<CompileAsWinRT>true</CompileAsWinRT>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
|
|
||||||
<IgnoreSpecificDefaultLibraries>ole32.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
|
||||||
<GenerateWindowsMetadata>true</GenerateWindowsMetadata>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
|
|
||||||
<ClCompile>
|
|
||||||
<PreprocessorDefinitions>_WINRT_DLL;WINDOWS_PHONE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
|
||||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
|
||||||
<AdditionalUsingDirectories>$(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories)</AdditionalUsingDirectories>
|
|
||||||
<CompileAsWinRT>true</CompileAsWinRT>
|
|
||||||
<AdditionalIncludeDirectories>..\..\..\console\dec\inc;..\..\..\console\common\inc;..\..\..\api\svc;..\..\..\common\inc;..\..\..\console\enc\inc;..\..\..\encoder\core\inc;..\..\..\processing\interface</AdditionalIncludeDirectories>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
|
|
||||||
<IgnoreSpecificDefaultLibraries>ole32.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
|
||||||
<GenerateWindowsMetadata>true</GenerateWindowsMetadata>
|
|
||||||
<AdditionalLibraryDirectories>$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
|
||||||
<AdditionalDependencies>openh264.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
|
|
||||||
<ClCompile>
|
|
||||||
<PreprocessorDefinitions>_WINRT_DLL;WINDOWS_PHONE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
|
||||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
|
||||||
<AdditionalUsingDirectories>$(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories)</AdditionalUsingDirectories>
|
|
||||||
<CompileAsWinRT>true</CompileAsWinRT>
|
|
||||||
<AdditionalIncludeDirectories>..\..\..\console\dec\inc;..\..\..\console\common\inc;..\..\..\api\svc;..\..\..\common\inc;..\..\..\console\enc\inc;..\..\..\encoder\core\inc;..\..\..\processing\interface</AdditionalIncludeDirectories>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<SubSystem>Console</SubSystem>
|
|
||||||
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
|
|
||||||
<IgnoreSpecificDefaultLibraries>ole32.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
|
||||||
<GenerateWindowsMetadata>true</GenerateWindowsMetadata>
|
|
||||||
<AdditionalLibraryDirectories>$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
|
||||||
<AdditionalDependencies>openh264.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Reference Include="platform.winmd">
|
|
||||||
<IsWinMDFile>true</IsWinMDFile>
|
|
||||||
<Private>false</Private>
|
|
||||||
</Reference>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClInclude Include="..\..\..\console\common\inc\read_config.h" />
|
|
||||||
<ClInclude Include="CodecRTComponent.h" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="..\..\..\console\common\src\read_config.cpp" />
|
|
||||||
<ClCompile Include="..\..\..\console\dec\src\d3d9_utils.cpp" />
|
|
||||||
<ClCompile Include="..\..\..\console\dec\src\h264dec.cpp" />
|
|
||||||
<ClCompile Include="..\..\..\console\enc\src\welsenc.cpp" />
|
|
||||||
<ClCompile Include="CodecRTComponent.cpp" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsPhone\v$(TargetPlatformVersion)\Microsoft.Cpp.WindowsPhone.$(TargetPlatformVersion).targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
|
@ -1,28 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup>
|
|
||||||
<Filter Include="Encoder">
|
|
||||||
<UniqueIdentifier>{c79b8670-dc32-4fcc-9e17-780c1ba6e72e}</UniqueIdentifier>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="Decoder">
|
|
||||||
<UniqueIdentifier>{798a0155-92f2-4321-9d5f-47ddb62db8c7}</UniqueIdentifier>
|
|
||||||
</Filter>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="CodecRTComponent.cpp" />
|
|
||||||
<ClCompile Include="..\..\..\console\enc\src\welsenc.cpp">
|
|
||||||
<Filter>Encoder</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\..\console\common\src\read_config.cpp" />
|
|
||||||
<ClCompile Include="..\..\..\console\dec\src\d3d9_utils.cpp">
|
|
||||||
<Filter>Decoder</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\..\console\dec\src\h264dec.cpp">
|
|
||||||
<Filter>Decoder</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClInclude Include="CodecRTComponent.h" />
|
|
||||||
<ClInclude Include="..\..\..\console\common\inc\read_config.h" />
|
|
||||||
</ItemGroup>
|
|
||||||
</Project>
|
|
@ -36,8 +36,6 @@
|
|||||||
|
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
|
|
||||||
.text
|
|
||||||
|
|
||||||
.macro WELS_ASM_FUNC_BEGIN
|
.macro WELS_ASM_FUNC_BEGIN
|
||||||
.align 2
|
.align 2
|
||||||
.arm
|
.arm
|
||||||
@ -52,8 +50,6 @@ mov pc, lr
|
|||||||
|
|
||||||
.section .note.GNU-stack,"",%progbits // Mark stack as non-executable
|
.section .note.GNU-stack,"",%progbits // Mark stack as non-executable
|
||||||
.text
|
.text
|
||||||
.arch armv7-a
|
|
||||||
.fpu neon
|
|
||||||
|
|
||||||
.macro WELS_ASM_FUNC_BEGIN funcName
|
.macro WELS_ASM_FUNC_BEGIN funcName
|
||||||
.align 2
|
.align 2
|
||||||
|
@ -30,9 +30,47 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_NEON
|
#ifdef HAVE_NEON
|
||||||
|
.text
|
||||||
#include "arm_arch_common_macro.S"
|
#include "arm_arch_common_macro.S"
|
||||||
|
|
||||||
|
#ifdef __APPLE__
|
||||||
|
.macro LOAD_ALIGNED_DATA_WITH_STRIDE
|
||||||
|
// { // input: $0~$3, src*, src_stride
|
||||||
|
vld1.64 {$0}, [$4,:128], $5
|
||||||
|
vld1.64 {$1}, [$4,:128], $5
|
||||||
|
vld1.64 {$2}, [$4,:128], $5
|
||||||
|
vld1.64 {$3}, [$4,:128], $5
|
||||||
|
// }
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro STORE_ALIGNED_DATA_WITH_STRIDE
|
||||||
|
// { // input: $0~$3, dst*, dst_stride
|
||||||
|
vst1.64 {$0}, [$4,:128], $5
|
||||||
|
vst1.64 {$1}, [$4,:128], $5
|
||||||
|
vst1.64 {$2}, [$4,:128], $5
|
||||||
|
vst1.64 {$3}, [$4,:128], $5
|
||||||
|
// }
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro LOAD_UNALIGNED_DATA_WITH_STRIDE
|
||||||
|
// { // input: $0~$3, src*, src_stride
|
||||||
|
vld1.64 {$0}, [$4], $5
|
||||||
|
vld1.64 {$1}, [$4], $5
|
||||||
|
vld1.64 {$2}, [$4], $5
|
||||||
|
vld1.64 {$3}, [$4], $5
|
||||||
|
// }
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro STORE_UNALIGNED_DATA_WITH_STRIDE
|
||||||
|
// { // input: $0~$3, dst*, dst_stride
|
||||||
|
vst1.64 {$0}, [$4], $5
|
||||||
|
vst1.64 {$1}, [$4], $5
|
||||||
|
vst1.64 {$2}, [$4], $5
|
||||||
|
vst1.64 {$3}, [$4], $5
|
||||||
|
// }
|
||||||
|
.endm
|
||||||
|
#else
|
||||||
.macro LOAD_ALIGNED_DATA_WITH_STRIDE arg0, arg1, arg2, arg3, arg4, arg5
|
.macro LOAD_ALIGNED_DATA_WITH_STRIDE arg0, arg1, arg2, arg3, arg4, arg5
|
||||||
// { // input: \arg0~\arg3, src*, src_stride
|
// { // input: \arg0~\arg3, src*, src_stride
|
||||||
vld1.64 {\arg0}, [\arg4,:128], \arg5
|
vld1.64 {\arg0}, [\arg4,:128], \arg5
|
||||||
@ -69,6 +107,8 @@
|
|||||||
// }
|
// }
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
WELS_ASM_FUNC_BEGIN WelsCopy8x8_neon
|
WELS_ASM_FUNC_BEGIN WelsCopy8x8_neon
|
||||||
|
|
||||||
|
@ -31,9 +31,129 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_NEON
|
#ifdef HAVE_NEON
|
||||||
|
.text
|
||||||
|
|
||||||
#include "arm_arch_common_macro.S"
|
#include "arm_arch_common_macro.S"
|
||||||
|
|
||||||
|
#ifdef __APPLE__
|
||||||
|
.macro JMP_IF_128BITS_IS_ZERO
|
||||||
|
vorr.s16 $2, $0, $1
|
||||||
|
vmov r3, r2, $2
|
||||||
|
orr r3, r3, r2
|
||||||
|
cmp r3, #0
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro MASK_MATRIX
|
||||||
|
vabd.u8 $6, $1, $2
|
||||||
|
vcgt.u8 $6, $4, $6
|
||||||
|
|
||||||
|
vabd.u8 $4, $0, $1
|
||||||
|
vclt.u8 $4, $4, $5
|
||||||
|
vand.u8 $6, $6, $4
|
||||||
|
|
||||||
|
vabd.u8 $4, $3, $2
|
||||||
|
vclt.u8 $4, $4, $5
|
||||||
|
vand.u8 $6, $6, $4
|
||||||
|
.endm
|
||||||
|
|
||||||
|
|
||||||
|
.macro DIFF_LUMA_LT4_P1_Q1
|
||||||
|
vmov.i8 $9, #128
|
||||||
|
vrhadd.u8 $8, $2, $3
|
||||||
|
vhadd.u8 $8, $0, $8
|
||||||
|
vsub.s8 $8, $8, $9
|
||||||
|
vsub.s8 $9, $1, $9
|
||||||
|
vqsub.s8 $8, $8, $9
|
||||||
|
vmax.s8 $8, $8, $5
|
||||||
|
vmin.s8 $8, $8, $6
|
||||||
|
vabd.u8 $9, $0, $2
|
||||||
|
vclt.u8 $9, $9, $4
|
||||||
|
vand.s8 $8, $8, $9
|
||||||
|
vand.s8 $8, $8, $7
|
||||||
|
vadd.u8 $8, $1, $8
|
||||||
|
vabs.s8 $9, $9
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro DIFF_LUMA_LT4_P0_Q0
|
||||||
|
vsubl.u8 $5, $0, $3
|
||||||
|
vsubl.u8 $6, $2, $1
|
||||||
|
vshl.s16 $6, $6, #2
|
||||||
|
vadd.s16 $5, $5, $6
|
||||||
|
vqrshrn.s16 $4, $5, #3
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro DIFF_LUMA_EQ4_P2P1P0
|
||||||
|
vaddl.u8 q4, $1, $2
|
||||||
|
vaddl.u8 q5, $3, $4
|
||||||
|
vadd.u16 q5, q4, q5
|
||||||
|
|
||||||
|
vaddl.u8 q4, $0, $1
|
||||||
|
vshl.u16 q4, q4, #1
|
||||||
|
vadd.u16 q4, q5, q4
|
||||||
|
|
||||||
|
vrshrn.u16 $0, q5, #2
|
||||||
|
vrshrn.u16 $7, q4, #3
|
||||||
|
|
||||||
|
vshl.u16 q5, q5, #1
|
||||||
|
vsubl.u8 q4, $5, $1
|
||||||
|
vadd.u16 q5, q4,q5
|
||||||
|
|
||||||
|
vaddl.u8 q4, $2, $5
|
||||||
|
vaddw.u8 q4, q4, $2
|
||||||
|
vaddw.u8 q4, q4, $3
|
||||||
|
|
||||||
|
vrshrn.u16 d10,q5, #3
|
||||||
|
vrshrn.u16 d8, q4, #2
|
||||||
|
vbsl.u8 $6, d10, d8
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro DIFF_LUMA_EQ4_MASK
|
||||||
|
vmov $3, $2
|
||||||
|
vbsl.u8 $3, $0, $1
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro DIFF_CHROMA_EQ4_P0Q0
|
||||||
|
vaddl.u8 $4, $0, $3
|
||||||
|
vaddw.u8 $5, $4, $1
|
||||||
|
vaddw.u8 $6, $4, $2
|
||||||
|
vaddw.u8 $5, $5, $0
|
||||||
|
|
||||||
|
vaddw.u8 $6, $6, $3
|
||||||
|
vrshrn.u16 $7, $5, #2
|
||||||
|
vrshrn.u16 $8, $6, #2
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro LOAD_CHROMA_DATA_4
|
||||||
|
vld4.u8 {$0[$8],$1[$8],$2[$8],$3[$8]}, [r0], r2
|
||||||
|
vld4.u8 {$4[$8],$5[$8],$6[$8],$7[$8]}, [r1], r2
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro STORE_CHROMA_DATA_4
|
||||||
|
vst4.u8 {$0[$8],$1[$8],$2[$8],$3[$8]}, [r0], r2
|
||||||
|
vst4.u8 {$4[$8],$5[$8],$6[$8],$7[$8]}, [r1], r2
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro LOAD_LUMA_DATA_3
|
||||||
|
vld3.u8 {$0[$6],$1[$6],$2[$6]}, [r2], r1
|
||||||
|
vld3.u8 {$3[$6],$4[$6],$5[$6]}, [r0], r1
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro STORE_LUMA_DATA_4
|
||||||
|
vst4.u8 {$0[$4],$1[$4],$2[$4],$3[$4]}, [r0], r1
|
||||||
|
vst4.u8 {$0[$5],$1[$5],$2[$5],$3[$5]}, [r2], r1
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro STORE_LUMA_DATA_3
|
||||||
|
vst3.u8 {$0[$6],$1[$6],$2[$6]}, [r3], r1
|
||||||
|
vst3.u8 {$3[$6],$4[$6],$5[$6]}, [r0], r1
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro EXTRACT_DELTA_INTO_TWO_PART
|
||||||
|
vcge.s8 $1, $0, #0
|
||||||
|
vand $1, $0, $1
|
||||||
|
vsub.s8 $0, $1, $0
|
||||||
|
.endm
|
||||||
|
#else
|
||||||
.macro JMP_IF_128BITS_IS_ZERO arg0, arg1, arg2
|
.macro JMP_IF_128BITS_IS_ZERO arg0, arg1, arg2
|
||||||
vorr.s16 \arg2, \arg0, \arg1
|
vorr.s16 \arg2, \arg0, \arg1
|
||||||
vmov r3, r2, \arg2
|
vmov r3, r2, \arg2
|
||||||
@ -150,6 +270,7 @@
|
|||||||
vand \arg1, \arg0, \arg1
|
vand \arg1, \arg0, \arg1
|
||||||
vsub.s8 \arg0, \arg1, \arg0
|
vsub.s8 \arg0, \arg1, \arg0
|
||||||
.endm
|
.endm
|
||||||
|
#endif
|
||||||
|
|
||||||
WELS_ASM_FUNC_BEGIN DeblockLumaLt4V_neon
|
WELS_ASM_FUNC_BEGIN DeblockLumaLt4V_neon
|
||||||
vpush {q4-q7}
|
vpush {q4-q7}
|
||||||
@ -713,14 +834,113 @@ WELS_ASM_FUNC_END
|
|||||||
|
|
||||||
|
|
||||||
WELS_ASM_FUNC_BEGIN WelsNonZeroCount_neon
|
WELS_ASM_FUNC_BEGIN WelsNonZeroCount_neon
|
||||||
mov r1, #1
|
|
||||||
vdup.8 q2, r1
|
vld1.64 {d0-d2}, [r0]
|
||||||
vld1.64 {d0,d1,d2}, [r0]
|
|
||||||
vmin.s8 q0, q0, q2
|
vceq.s8 q0, q0, #0
|
||||||
vmin.s8 d2, d2, d4
|
vceq.s8 d2, d2, #0
|
||||||
vst1.64 {d0,d1,d2}, [r0]
|
vmvn q0, q0
|
||||||
|
vmvn d2, d2
|
||||||
|
vabs.s8 q0, q0
|
||||||
|
vabs.s8 d2, d2
|
||||||
|
|
||||||
|
vst1.64 {d0-d2}, [r0]
|
||||||
WELS_ASM_FUNC_END
|
WELS_ASM_FUNC_END
|
||||||
|
|
||||||
|
#ifdef __APPLE__
|
||||||
|
.macro BS_NZC_CHECK
|
||||||
|
vld1.8 {d0,d1}, [$0]
|
||||||
|
/* Arrenge the input data --- TOP */
|
||||||
|
ands r6, $1, #2
|
||||||
|
beq bs_nzc_check_jump0
|
||||||
|
|
||||||
|
sub r6, $0, $2, lsl #4
|
||||||
|
sub r6, r6, $2, lsl #3
|
||||||
|
add r6, #12
|
||||||
|
vld1.32 d3[1], [r6]
|
||||||
|
|
||||||
|
bs_nzc_check_jump0:
|
||||||
|
vext.8 q1, q1, q0, #12
|
||||||
|
vadd.u8 $3, q0, q1
|
||||||
|
|
||||||
|
|
||||||
|
/* Arrenge the input data --- LEFT */
|
||||||
|
ands r6, $1, #1
|
||||||
|
beq bs_nzc_check_jump1
|
||||||
|
|
||||||
|
sub r6, $0, #21
|
||||||
|
add r7, r6, #4
|
||||||
|
vld1.8 d3[4], [r6]
|
||||||
|
add r6, r7, #4
|
||||||
|
vld1.8 d3[5], [r7]
|
||||||
|
add r7, r6, #4
|
||||||
|
vld1.8 d3[6], [r6]
|
||||||
|
vld1.8 d3[7], [r7]
|
||||||
|
|
||||||
|
bs_nzc_check_jump1:
|
||||||
|
vzip.8 d0, d1
|
||||||
|
vzip.8 d0, d1
|
||||||
|
vext.8 q1, q1, q0, #12
|
||||||
|
vadd.u8 $4, q0, q1
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro BS_COMPARE_MV //in: $0,$1(const),$2(const),$3(const),$4(const); out:$5, $6
|
||||||
|
mov r6, #4
|
||||||
|
vabd.s16 q8, $0, $1
|
||||||
|
vabd.s16 q9, $1, $2
|
||||||
|
vdup.s16 $0, r6
|
||||||
|
vabd.s16 q10, $2, $3
|
||||||
|
vabd.s16 q11, $3, $4
|
||||||
|
|
||||||
|
vcge.s16 q8, $0
|
||||||
|
vcge.s16 q9, $0
|
||||||
|
vcge.s16 q10, $0
|
||||||
|
vcge.s16 q11, $0
|
||||||
|
|
||||||
|
vpadd.i16 d16, d16, d17
|
||||||
|
vpadd.i16 d17, d18, d19
|
||||||
|
vpadd.i16 d18, d20, d21
|
||||||
|
vpadd.i16 d19, d22, d23
|
||||||
|
|
||||||
|
vaddhn.i16 $5, q8, q8
|
||||||
|
vaddhn.i16 $6, q9, q9
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro BS_MV_CHECK
|
||||||
|
vldm $0, {q0,q1,q2,q3}
|
||||||
|
|
||||||
|
/* Arrenge the input data --- TOP */
|
||||||
|
ands r6, $1, #2
|
||||||
|
beq bs_mv_check_jump0
|
||||||
|
|
||||||
|
sub r6, $0, $2, lsl #6
|
||||||
|
add r6, #48
|
||||||
|
vld1.8 {d8, d9}, [r6]
|
||||||
|
|
||||||
|
bs_mv_check_jump0:
|
||||||
|
BS_COMPARE_MV q4, q0, q1, q2, q3, $3, $4
|
||||||
|
|
||||||
|
/* Arrenge the input data --- LEFT */
|
||||||
|
ands r6, $1, #1
|
||||||
|
beq bs_mv_check_jump1
|
||||||
|
|
||||||
|
sub r6, $0, #52
|
||||||
|
add r7, r6, #16
|
||||||
|
vld1.32 d8[0], [r6]
|
||||||
|
add r6, r7, #16
|
||||||
|
vld1.32 d8[1], [r7]
|
||||||
|
add r7, r6, #16
|
||||||
|
vld1.32 d9[0], [r6]
|
||||||
|
vld1.32 d9[1], [r7]
|
||||||
|
|
||||||
|
bs_mv_check_jump1:
|
||||||
|
vzip.32 q0, q2
|
||||||
|
vzip.32 q1, q3
|
||||||
|
vzip.32 q0, q1
|
||||||
|
vzip.32 q2, q3
|
||||||
|
BS_COMPARE_MV q4, q0, q1, q2, q3, $5, $6
|
||||||
|
.endm
|
||||||
|
#else
|
||||||
.macro BS_NZC_CHECK arg0, arg1, arg2, arg3, arg4
|
.macro BS_NZC_CHECK arg0, arg1, arg2, arg3, arg4
|
||||||
vld1.8 {d0,d1}, [\arg0]
|
vld1.8 {d0,d1}, [\arg0]
|
||||||
/* Arrenge the input data --- TOP */
|
/* Arrenge the input data --- TOP */
|
||||||
@ -813,6 +1033,7 @@ bs_mv_check_jump1:
|
|||||||
vzip.32 q2, q3
|
vzip.32 q2, q3
|
||||||
BS_COMPARE_MV q4, q0, q1, q2, q3, \arg5, \arg6
|
BS_COMPARE_MV q4, q0, q1, q2, q3, \arg5, \arg6
|
||||||
.endm
|
.endm
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
WELS_ASM_FUNC_BEGIN DeblockingBSCalcEnc_neon
|
WELS_ASM_FUNC_BEGIN DeblockingBSCalcEnc_neon
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_NEON
|
#ifdef HAVE_NEON
|
||||||
|
.text
|
||||||
#include "arm_arch_common_macro.S"
|
#include "arm_arch_common_macro.S"
|
||||||
|
|
||||||
|
|
||||||
|
@ -30,9 +30,121 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_NEON
|
#ifdef HAVE_NEON
|
||||||
|
.text
|
||||||
#include "arm_arch_common_macro.S"
|
#include "arm_arch_common_macro.S"
|
||||||
|
|
||||||
|
#ifdef __APPLE__
|
||||||
|
.macro AVERAGE_TWO_8BITS
|
||||||
|
// { // input:dst_d, src_d A and B; working: q13
|
||||||
|
vaddl.u8 q13, $2, $1
|
||||||
|
vrshrn.u16 $0, q13, #1
|
||||||
|
// }
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro FILTER_6TAG_8BITS
|
||||||
|
// { // input:src[-2], src[-1], src[0], src[1], src[2], src[3], dst_d, multiplier a/b; working: q12, q13
|
||||||
|
vaddl.u8 q12, $0, $5 //q12=src[-2]+src[3]
|
||||||
|
vaddl.u8 q13, $2, $3 //src[0]+src[1]
|
||||||
|
vmla.u16 q12, q13, $7 //q12 += 20*(src[0]+src[1]), 2 cycles
|
||||||
|
vaddl.u8 q13, $1, $4 //src[-1]+src[2]
|
||||||
|
vmls.s16 q12, q13, $8 //q12 -= 5*(src[-1]+src[2]), 2 cycles
|
||||||
|
vqrshrun.s16 $6, q12, #5
|
||||||
|
// }
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro FILTER_SINGLE_TAG_8BITS // when width=17/9, used
|
||||||
|
// { // input: src_d{Y[0][1][2][3][4][5]X, the even of working_q2},
|
||||||
|
vrev64.8 $2, $0 // X[5][4][3][2][1][0]O
|
||||||
|
vaddl.u8 $3, $0, $2 // each 16bits, *[50][41][32][23][14][05]*
|
||||||
|
vmul.s16 $0, $2, $1 // 0+1*[50]-5*[41]+20[32]
|
||||||
|
vpadd.s16 $0, $0, $0
|
||||||
|
vpadd.s16 $0, $0, $0
|
||||||
|
vqrshrun.s16 $0, $4, #5
|
||||||
|
// }
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro FILTER_6TAG_8BITS_AVERAGE_WITH_0
|
||||||
|
// { // input:src[-2], src[-1], src[0], src[1], src[2], src[3], dst_d, multiplier a/b; working: q12, q13
|
||||||
|
vaddl.u8 q12, $0, $5 //q12=src[-2]+src[3]
|
||||||
|
vaddl.u8 q13, $2, $3 //src[0]+src[1]
|
||||||
|
vmla.u16 q12, q13, $7 //q12 += 20*(src[0]+src[1]), 2 cycles
|
||||||
|
vaddl.u8 q13, $1, $4 //src[-1]+src[2]
|
||||||
|
vmls.s16 q12, q13, $8 //q12 -= 5*(src[-1]+src[2]), 2 cycles
|
||||||
|
vqrshrun.s16 $6, q12, #5
|
||||||
|
vaddl.u8 q13, $2, $6
|
||||||
|
vrshrn.u16 $6, q13, #1
|
||||||
|
// }
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro FILTER_6TAG_8BITS_AVERAGE_WITH_1
|
||||||
|
// { // input:src[-2], src[-1], src[0], src[1], src[2], src[3], dst_d, multiplier a/b; working: q12, q13
|
||||||
|
vaddl.u8 q12, $0, $5 //q12=src[-2]+src[3]
|
||||||
|
vaddl.u8 q13, $2, $3 //src[0]+src[1]
|
||||||
|
vmla.u16 q12, q13, $7 //q12 += 20*(src[0]+src[1]), 2 cycles
|
||||||
|
vaddl.u8 q13, $1, $4 //src[-1]+src[2]
|
||||||
|
vmls.s16 q12, q13, $8 //q12 -= 5*(src[-1]+src[2]), 2 cycles
|
||||||
|
vqrshrun.s16 $6, q12, #5
|
||||||
|
vaddl.u8 q13, $3, $6
|
||||||
|
vrshrn.u16 $6, q13, #1
|
||||||
|
// }
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro FILTER_6TAG_8BITS_TO_16BITS
|
||||||
|
// { // input:d_src[-2], d_src[-1], d_src[0], d_src[1], d_src[2], d_src[3], dst_q, multiplier a/b; working:q13
|
||||||
|
vaddl.u8 $6, $0, $5 //dst_q=src[-2]+src[3]
|
||||||
|
vaddl.u8 q13, $2, $3 //src[0]+src[1]
|
||||||
|
vmla.u16 $6, q13, $7 //dst_q += 20*(src[0]+src[1]), 2 cycles
|
||||||
|
vaddl.u8 q13, $1, $4 //src[-1]+src[2]
|
||||||
|
vmls.s16 $6, q13, $8 //dst_q -= 5*(src[-1]+src[2]), 2 cycles
|
||||||
|
// }
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro FILTER_3_IN_16BITS_TO_8BITS
|
||||||
|
// { // input:a, b, c, dst_d;
|
||||||
|
vsub.s16 $0, $0, $1 //a-b
|
||||||
|
vshr.s16 $0, $0, #2 //(a-b)/4
|
||||||
|
vsub.s16 $0, $0, $1 //(a-b)/4-b
|
||||||
|
vadd.s16 $0, $0, $2 //(a-b)/4-b+c
|
||||||
|
vshr.s16 $0, $0, #2 //((a-b)/4-b+c)/4
|
||||||
|
vadd.s16 $0, $0, $2 //((a-b)/4-b+c)/4+c = (a-5*b+20*c)/16
|
||||||
|
vqrshrun.s16 $3, $0, #6 //(+32)>>6
|
||||||
|
// }
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro UNPACK_2_16BITS_TO_ABC
|
||||||
|
// { // input:q_src[-2:5], q_src[6:13](avail 8+5)/q_src[6:**](avail 4+5), dst_a, dst_b, dst_c;
|
||||||
|
vext.16 $4, $0, $1, #2 //src[0]
|
||||||
|
vext.16 $3, $0, $1, #3 //src[1]
|
||||||
|
vadd.s16 $4, $3 //c=src[0]+src[1]
|
||||||
|
|
||||||
|
vext.16 $3, $0, $1, #1 //src[-1]
|
||||||
|
vext.16 $2, $0, $1, #4 //src[2]
|
||||||
|
vadd.s16 $3, $2 //b=src[-1]+src[2]
|
||||||
|
|
||||||
|
vext.16 $2, $0, $1, #5 //src[3]
|
||||||
|
vadd.s16 $2, $0 //a=src[-2]+src[3]
|
||||||
|
// }
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro UNPACK_1_IN_8x16BITS_TO_8BITS
|
||||||
|
// { // each 16bits; input: d_dst, d_src[0:3] (even), d_src[4:5]+%% (odd)
|
||||||
|
vext.16 $3, $3, $3, #7 // 0x????, [0][1][2][3][4][5],
|
||||||
|
vrev64.16 $1, $1
|
||||||
|
vadd.u16 $2, $1 // C[2+3],B[1+4],A[0+5],
|
||||||
|
vshr.s64 $1, $2, #16
|
||||||
|
vshr.s64 $0, $2, #32 // Output: C $2, B $1, A $0
|
||||||
|
|
||||||
|
vsub.s16 $0, $0, $1 //a-b
|
||||||
|
vshr.s16 $0, $0, #2 //(a-b)/4
|
||||||
|
vsub.s16 $0, $0, $1 //(a-b)/4-b
|
||||||
|
vadd.s16 $0, $0, $2 //(a-b)/4-b+c
|
||||||
|
vshr.s16 $0, $0, #2 //((a-b)/4-b+c)/4
|
||||||
|
vadd.s16 $1, $0, $2 //((a-b)/4-b+c)/4+c = (a-5*b+20*c)/16
|
||||||
|
vqrshrun.s16 $0, $3, #6 //(+32)>>6
|
||||||
|
// }
|
||||||
|
.endm
|
||||||
|
#else
|
||||||
.macro AVERAGE_TWO_8BITS arg0, arg1, arg2
|
.macro AVERAGE_TWO_8BITS arg0, arg1, arg2
|
||||||
// { // input:dst_d, src_d A and B; working: q13
|
// { // input:dst_d, src_d A and B; working: q13
|
||||||
vaddl.u8 q13, \arg2, \arg1
|
vaddl.u8 q13, \arg2, \arg1
|
||||||
@ -51,7 +163,7 @@
|
|||||||
// }
|
// }
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro FILTER_SINGLE_TAG_8BITS arg0, arg1,arg2, arg3, arg4 // when width=17/9, used
|
.macro FILTER_SINGLE_TAG_8BITS arg0, arg1,arg2, arg3, arg4,arg5 // when width=17/9, used
|
||||||
// { // input: src_d{Y[0][1][2][3][4][5]X, the even of working_q2}
|
// { // input: src_d{Y[0][1][2][3][4][5]X, the even of working_q2}
|
||||||
vrev64.8 \arg2, \arg0 // X[5][4][3][2][1][0]O
|
vrev64.8 \arg2, \arg0 // X[5][4][3][2][1][0]O
|
||||||
vaddl.u8 \arg3, \arg0, \arg2 // each 16bits, *[50][41][32][23][14][05]*
|
vaddl.u8 \arg3, \arg0, \arg2 // each 16bits, *[50][41][32][23][14][05]*
|
||||||
@ -142,6 +254,7 @@
|
|||||||
vqrshrun.s16 \arg0, \arg3, #6 //(+32)>>6
|
vqrshrun.s16 \arg0, \arg3, #6 //(+32)>>6
|
||||||
// }
|
// }
|
||||||
.endm
|
.endm
|
||||||
|
#endif
|
||||||
|
|
||||||
WELS_ASM_FUNC_BEGIN McHorVer20WidthEq16_neon
|
WELS_ASM_FUNC_BEGIN McHorVer20WidthEq16_neon
|
||||||
push {r4}
|
push {r4}
|
||||||
@ -1635,36 +1748,6 @@ w9_h_mc_luma_loop:
|
|||||||
WELS_ASM_FUNC_END
|
WELS_ASM_FUNC_END
|
||||||
|
|
||||||
|
|
||||||
WELS_ASM_FUNC_BEGIN McHorVer20Width5_neon
|
|
||||||
push {r4}
|
|
||||||
sub r3, #4
|
|
||||||
sub r0, #2
|
|
||||||
ldr r4, [sp, #4]
|
|
||||||
vmov.u16 q14, #0x0014 // 20
|
|
||||||
vshr.u16 q15, q14, #2 // 5
|
|
||||||
|
|
||||||
w5_h_mc_luma_loop:
|
|
||||||
vld1.u8 {d0,d1}, [r0], r1 //only use 10(5+5); q0=src[-2]
|
|
||||||
pld [r0]
|
|
||||||
|
|
||||||
vext.8 d2, d0, d1, #1 //d2=src[-1]
|
|
||||||
vext.8 d3, d0, d1, #2 //d3=src[0]
|
|
||||||
vext.8 d4, d0, d1, #3 //d4=src[1]
|
|
||||||
vext.8 d5, d0, d1, #4 //d5=src[2]
|
|
||||||
vext.8 d6, d0, d1, #5 //d6=src[3]
|
|
||||||
|
|
||||||
FILTER_6TAG_8BITS d0, d2, d3, d4, d5, d6, d16, q14, q15
|
|
||||||
|
|
||||||
sub r4, #1
|
|
||||||
vst1.u32 {d16[0]}, [r2]! //write [0:3] Byte
|
|
||||||
vst1.u8 {d16[4]}, [r2], r3 //write 5th Byte
|
|
||||||
|
|
||||||
cmp r4, #0
|
|
||||||
bne w5_h_mc_luma_loop
|
|
||||||
pop {r4}
|
|
||||||
WELS_ASM_FUNC_END
|
|
||||||
|
|
||||||
|
|
||||||
WELS_ASM_FUNC_BEGIN McHorVer02Height17_neon
|
WELS_ASM_FUNC_BEGIN McHorVer02Height17_neon
|
||||||
push {r4}
|
push {r4}
|
||||||
ldr r4, [sp, #4]
|
ldr r4, [sp, #4]
|
||||||
@ -1810,63 +1893,6 @@ w9_v_mc_luma_loop:
|
|||||||
WELS_ASM_FUNC_END
|
WELS_ASM_FUNC_END
|
||||||
|
|
||||||
|
|
||||||
WELS_ASM_FUNC_BEGIN McHorVer02Height5_neon
|
|
||||||
push {r4}
|
|
||||||
ldr r4, [sp, #4]
|
|
||||||
|
|
||||||
sub r0, r0, r1, lsl #1 //src[-2*src_stride]
|
|
||||||
pld [r0]
|
|
||||||
pld [r0, r1]
|
|
||||||
vmov.u16 q14, #0x0014 // 20
|
|
||||||
vld1.u8 {d0}, [r0], r1 //d0=src[-2]
|
|
||||||
vld1.u8 {d1}, [r0], r1 //d1=src[-1]
|
|
||||||
|
|
||||||
pld [r0]
|
|
||||||
pld [r0, r1]
|
|
||||||
vshr.u16 q15, q14, #2 // 5
|
|
||||||
vld1.u8 {d2}, [r0], r1 //d2=src[0]
|
|
||||||
vld1.u8 {d3}, [r0], r1 //d3=src[1]
|
|
||||||
|
|
||||||
vld1.u8 {d4}, [r0], r1 //d4=src[2]
|
|
||||||
vld1.u8 {d5}, [r0], r1 //d5=src[3]
|
|
||||||
|
|
||||||
w5_v_mc_luma_loop:
|
|
||||||
|
|
||||||
pld [r0]
|
|
||||||
FILTER_6TAG_8BITS d0, d1, d2, d3, d4, d5, d16, q14, q15
|
|
||||||
vld1.u8 {d0}, [r0], r1 //read 2nd row
|
|
||||||
vst1.u32 {d16[0]}, [r2], r3 //write 1st 4Byte
|
|
||||||
|
|
||||||
pld [r0]
|
|
||||||
FILTER_6TAG_8BITS d1, d2, d3, d4, d5, d0, d16, q14, q15
|
|
||||||
vld1.u8 {d1}, [r0], r1 //read 3rd row
|
|
||||||
vst1.u32 {d16[0]}, [r2], r3 //write 2nd 4Byte
|
|
||||||
|
|
||||||
pld [r0]
|
|
||||||
FILTER_6TAG_8BITS d2, d3, d4, d5, d0, d1, d16, q14, q15
|
|
||||||
vld1.u8 {d2}, [r0], r1 //read 4th row
|
|
||||||
vst1.u32 {d16[0]}, [r2], r3 //write 3rd 4Byte
|
|
||||||
|
|
||||||
pld [r0]
|
|
||||||
FILTER_6TAG_8BITS d3, d4, d5, d0, d1, d2, d16, q14, q15
|
|
||||||
vld1.u8 {d3}, [r0], r1 //read 5th row
|
|
||||||
vst1.u32 {d16[0]}, [r2], r3 //write 4th 8Byte
|
|
||||||
|
|
||||||
//d4, d5, d0, d1, d2, d3 --> d0, d1, d2, d3, d4, d5
|
|
||||||
vswp q0, q2
|
|
||||||
vswp q1, q2
|
|
||||||
|
|
||||||
sub r4, #4
|
|
||||||
cmp r4, #1
|
|
||||||
bne w5_v_mc_luma_loop
|
|
||||||
|
|
||||||
FILTER_6TAG_8BITS d0, d1, d2, d3, d4, d5, d16, q14, q15
|
|
||||||
vst1.u32 {d16[0]}, [r2], r3 //write last 4Byte
|
|
||||||
|
|
||||||
pop {r4}
|
|
||||||
WELS_ASM_FUNC_END
|
|
||||||
|
|
||||||
|
|
||||||
WELS_ASM_FUNC_BEGIN McHorVer22Width17_neon
|
WELS_ASM_FUNC_BEGIN McHorVer22Width17_neon
|
||||||
push {r4}
|
push {r4}
|
||||||
vpush {q4-q7}
|
vpush {q4-q7}
|
||||||
@ -2106,105 +2132,6 @@ w9_hv_mc_luma_loop:
|
|||||||
WELS_ASM_FUNC_END
|
WELS_ASM_FUNC_END
|
||||||
|
|
||||||
|
|
||||||
WELS_ASM_FUNC_BEGIN McHorVer22Width5_neon
|
|
||||||
push {r4}
|
|
||||||
vpush {q4}
|
|
||||||
ldr r4, [sp, #20]
|
|
||||||
|
|
||||||
sub r0, #2 //src[-2]
|
|
||||||
sub r0, r0, r1, lsl #1 //src[-2*src_stride-2]
|
|
||||||
pld [r0]
|
|
||||||
pld [r0, r1]
|
|
||||||
|
|
||||||
vmov.u16 q14, #0x0014 // 20
|
|
||||||
vld1.u8 {q0}, [r0], r1 //use 10(5+5), =src[-2]
|
|
||||||
vld1.u8 {q1}, [r0], r1 //use 10(5+5), =src[-1]
|
|
||||||
|
|
||||||
pld [r0]
|
|
||||||
pld [r0, r1]
|
|
||||||
vshr.u16 q15, q14, #2 // 5
|
|
||||||
|
|
||||||
vld1.u8 {q2}, [r0], r1 //use 10(5+5), =src[0]
|
|
||||||
vld1.u8 {q3}, [r0], r1 //use 10(5+5), =src[1]
|
|
||||||
pld [r0]
|
|
||||||
pld [r0, r1]
|
|
||||||
vld1.u8 {q4}, [r0], r1 //use 10(5+5), =src[2]
|
|
||||||
sub r3, #4
|
|
||||||
|
|
||||||
w5_hv_mc_luma_loop:
|
|
||||||
|
|
||||||
vld1.u8 {q8}, [r0], r1 //use 10(5+5), =src[3]
|
|
||||||
//the 1st row
|
|
||||||
pld [r0]
|
|
||||||
// vertical filtered into q9/q10
|
|
||||||
FILTER_6TAG_8BITS_TO_16BITS d0, d2, d4, d6, d8, d16, q9, q14, q15
|
|
||||||
FILTER_6TAG_8BITS_TO_16BITS d1, d3, d5, d7, d9, d17, q10, q14, q15
|
|
||||||
// horizon filtered
|
|
||||||
UNPACK_2_16BITS_TO_ABC q9, q10, q11, q12, q13
|
|
||||||
FILTER_3_IN_16BITS_TO_8BITS q11, q12, q13, d18
|
|
||||||
vst1.u32 {d18[0]}, [r2]! //write 4Byte
|
|
||||||
vst1.u8 {d18[4]}, [r2], r3 //write 5th Byte
|
|
||||||
|
|
||||||
vld1.u8 {q0}, [r0], r1 //read 2nd row
|
|
||||||
//the 2nd row
|
|
||||||
pld [r0]
|
|
||||||
// vertical filtered into q9/q10
|
|
||||||
FILTER_6TAG_8BITS_TO_16BITS d2, d4, d6, d8, d16, d0, q9, q14, q15
|
|
||||||
FILTER_6TAG_8BITS_TO_16BITS d3, d5, d7, d9, d17, d1, q10, q14, q15
|
|
||||||
// horizon filtered
|
|
||||||
UNPACK_2_16BITS_TO_ABC q9, q10, q11, q12, q13
|
|
||||||
FILTER_3_IN_16BITS_TO_8BITS q11, q12, q13, d18
|
|
||||||
vst1.u32 {d18[0]}, [r2]! //write 4Byte
|
|
||||||
vst1.u8 {d18[4]}, [r2], r3 //write 5th Byte
|
|
||||||
|
|
||||||
vld1.u8 {q1}, [r0], r1 //read 3rd row
|
|
||||||
//the 3rd row
|
|
||||||
pld [r0]
|
|
||||||
// vertical filtered into q9/q10
|
|
||||||
FILTER_6TAG_8BITS_TO_16BITS d4, d6, d8, d16, d0, d2, q9, q14, q15
|
|
||||||
FILTER_6TAG_8BITS_TO_16BITS d5, d7, d9, d17, d1, d3, q10, q14, q15
|
|
||||||
// horizon filtered
|
|
||||||
UNPACK_2_16BITS_TO_ABC q9, q10, q11, q12, q13
|
|
||||||
FILTER_3_IN_16BITS_TO_8BITS q11, q12, q13, d18
|
|
||||||
vst1.u32 {d18[0]}, [r2]! //write 4Byte
|
|
||||||
vst1.u8 {d18[4]}, [r2], r3 //write 5th Byte
|
|
||||||
|
|
||||||
vld1.u8 {q2}, [r0], r1 //read 4th row
|
|
||||||
//the 4th row
|
|
||||||
pld [r0]
|
|
||||||
// vertical filtered into q9/q10
|
|
||||||
FILTER_6TAG_8BITS_TO_16BITS d6, d8, d16, d0, d2, d4, q9, q14, q15
|
|
||||||
FILTER_6TAG_8BITS_TO_16BITS d7, d9, d17, d1, d3, d5, q10, q14, q15
|
|
||||||
// horizon filtered
|
|
||||||
UNPACK_2_16BITS_TO_ABC q9, q10, q11, q12, q13
|
|
||||||
FILTER_3_IN_16BITS_TO_8BITS q11, q12, q13, d18
|
|
||||||
vst1.u32 {d18[0]}, [r2]! //write 4Byte
|
|
||||||
vst1.u8 {d18[4]}, [r2], r3 //write 5th Byte
|
|
||||||
|
|
||||||
//q4~q8, q0~q2, --> q0~q4
|
|
||||||
vswp q0, q4
|
|
||||||
vswp q2, q4
|
|
||||||
vmov q3, q1
|
|
||||||
vmov q1, q8
|
|
||||||
|
|
||||||
sub r4, #4
|
|
||||||
cmp r4, #1
|
|
||||||
bne w5_hv_mc_luma_loop
|
|
||||||
//the last row
|
|
||||||
vld1.u8 {q8}, [r0], r1 //use 10(5+5), =src[3]
|
|
||||||
// vertical filtered into q9/q10
|
|
||||||
FILTER_6TAG_8BITS_TO_16BITS d0, d2, d4, d6, d8, d16, q9, q14, q15
|
|
||||||
FILTER_6TAG_8BITS_TO_16BITS d1, d3, d5, d7, d9, d17, q10, q14, q15
|
|
||||||
// horizon filtered
|
|
||||||
UNPACK_2_16BITS_TO_ABC q9, q10, q11, q12, q13
|
|
||||||
FILTER_3_IN_16BITS_TO_8BITS q11, q12, q13, d18
|
|
||||||
vst1.u32 {d18[0]}, [r2]! //write 4Byte
|
|
||||||
vst1.u8 {d18[4]}, [r2], r3 //write 5th Byte
|
|
||||||
vpop {q4}
|
|
||||||
pop {r4}
|
|
||||||
WELS_ASM_FUNC_END
|
|
||||||
|
|
||||||
|
|
||||||
WELS_ASM_FUNC_BEGIN PixStrideAvgWidthEq16_neon
|
WELS_ASM_FUNC_BEGIN PixStrideAvgWidthEq16_neon
|
||||||
push {r4, r5, r6}
|
push {r4, r5, r6}
|
||||||
ldr r4, [sp, #12]
|
ldr r4, [sp, #12]
|
||||||
|
@ -32,8 +32,6 @@
|
|||||||
|
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
|
|
||||||
.text
|
|
||||||
|
|
||||||
.macro WELS_ASM_AARCH64_FUNC_BEGIN
|
.macro WELS_ASM_AARCH64_FUNC_BEGIN
|
||||||
.align 2
|
.align 2
|
||||||
.globl _$0
|
.globl _$0
|
||||||
@ -61,8 +59,12 @@ ret
|
|||||||
.endfunc
|
.endfunc
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
#endif
|
.macro mov.16b arg0, arg1
|
||||||
|
mov \arg0\().16b, \arg1\().16b
|
||||||
.macro SIGN_EXTENSION arg0, arg1
|
|
||||||
sxtw \arg0, \arg1
|
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
.macro mov.8b arg0, arg1
|
||||||
|
mov \arg0\().8b, \arg1\().8b
|
||||||
|
.endm
|
||||||
|
|
||||||
|
#endif
|
||||||
|
@ -30,9 +30,84 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_NEON_AARCH64
|
#ifdef HAVE_NEON_AARCH64
|
||||||
|
.text
|
||||||
#include "arm_arch64_common_macro.S"
|
#include "arm_arch64_common_macro.S"
|
||||||
|
|
||||||
|
#ifdef __APPLE__
|
||||||
|
.macro LOAD_ALIGNED_DATA_WITH_STRIDE
|
||||||
|
// { // input: $0~$3, src*, src_stride
|
||||||
|
ld1 {$0.d}[0], [$4], $5
|
||||||
|
ld1 {$1.d}[0], [$4], $5
|
||||||
|
ld1 {$2.d}[0], [$4], $5
|
||||||
|
ld1 {$3.d}[0], [$4], $5
|
||||||
|
// }
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro STORE_ALIGNED_DATA_WITH_STRIDE
|
||||||
|
// { // input: $0~$3, dst*, dst_stride
|
||||||
|
st1 {$0.d}[0], [$4], $5
|
||||||
|
st1 {$1.d}[0], [$4], $5
|
||||||
|
st1 {$2.d}[0], [$4], $5
|
||||||
|
st1 {$3.d}[0], [$4], $5
|
||||||
|
// }
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro LOAD_UNALIGNED_DATA_WITH_STRIDE
|
||||||
|
// { // input: $0~$3, src*, src_stride
|
||||||
|
ld1 {$0.8b}, [$4], $5
|
||||||
|
ld1 {$1.8b}, [$4], $5
|
||||||
|
ld1 {$2.8b}, [$4], $5
|
||||||
|
ld1 {$3.8b}, [$4], $5
|
||||||
|
// }
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro STORE_UNALIGNED_DATA_WITH_STRIDE
|
||||||
|
// { // input: $0~$3, dst*, dst_stride
|
||||||
|
st1 {$0.8b}, [$4], $5
|
||||||
|
st1 {$1.8b}, [$4], $5
|
||||||
|
st1 {$2.8b}, [$4], $5
|
||||||
|
st1 {$3.8b}, [$4], $5
|
||||||
|
// }
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro LOAD16_ALIGNED_DATA_WITH_STRIDE
|
||||||
|
// { // input: $0~$3, src*, src_stride
|
||||||
|
ld1 {$0.2d}, [$4], $5
|
||||||
|
ld1 {$1.2d}, [$4], $5
|
||||||
|
ld1 {$2.2d}, [$4], $5
|
||||||
|
ld1 {$3.2d}, [$4], $5
|
||||||
|
// }
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro STORE16_ALIGNED_DATA_WITH_STRIDE
|
||||||
|
// { // input: $0~$3, dst*, dst_stride
|
||||||
|
st1 {$0.2d}, [$4], $5
|
||||||
|
st1 {$1.2d}, [$4], $5
|
||||||
|
st1 {$2.2d}, [$4], $5
|
||||||
|
st1 {$3.2d}, [$4], $5
|
||||||
|
// }
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro LOAD16_UNALIGNED_DATA_WITH_STRIDE
|
||||||
|
// { // input: $0~$3, src*, src_stride
|
||||||
|
ld1 {$0.16b}, [$4], $5
|
||||||
|
ld1 {$1.16b}, [$4], $5
|
||||||
|
ld1 {$2.16b}, [$4], $5
|
||||||
|
ld1 {$3.16b}, [$4], $5
|
||||||
|
// }
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro STORE16_UNALIGNED_DATA_WITH_STRIDE
|
||||||
|
// { // input: $0~$3, dst*, dst_stride
|
||||||
|
st1 {$0.16b}, [$4], $5
|
||||||
|
st1 {$1.16b}, [$4], $5
|
||||||
|
st1 {$2.16b}, [$4], $5
|
||||||
|
st1 {$3.16b}, [$4], $5
|
||||||
|
// }
|
||||||
|
.endm
|
||||||
|
|
||||||
|
#else
|
||||||
.macro LOAD_ALIGNED_DATA_WITH_STRIDE arg0, arg1, arg2, arg3, arg4, arg5
|
.macro LOAD_ALIGNED_DATA_WITH_STRIDE arg0, arg1, arg2, arg3, arg4, arg5
|
||||||
// { // input: $0~$3, src*, src_stride
|
// { // input: $0~$3, src*, src_stride
|
||||||
ld1 {\arg0\().d}[0], [\arg4], \arg5
|
ld1 {\arg0\().d}[0], [\arg4], \arg5
|
||||||
@ -105,10 +180,11 @@
|
|||||||
// }
|
// }
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
//void WelsCopy8x8_AArch64_neon (uint8_t* pDst, int32_t iStrideD, uint8_t* pSrc, int32_t iStrideS);
|
#endif
|
||||||
|
|
||||||
|
|
||||||
WELS_ASM_AARCH64_FUNC_BEGIN WelsCopy8x8_AArch64_neon
|
WELS_ASM_AARCH64_FUNC_BEGIN WelsCopy8x8_AArch64_neon
|
||||||
SIGN_EXTENSION x1,w1
|
|
||||||
SIGN_EXTENSION x3,w3
|
|
||||||
LOAD_UNALIGNED_DATA_WITH_STRIDE v0, v1, v2, v3, x2, x3
|
LOAD_UNALIGNED_DATA_WITH_STRIDE v0, v1, v2, v3, x2, x3
|
||||||
|
|
||||||
STORE_UNALIGNED_DATA_WITH_STRIDE v0, v1, v2, v3, x0, x1
|
STORE_UNALIGNED_DATA_WITH_STRIDE v0, v1, v2, v3, x0, x1
|
||||||
@ -121,8 +197,7 @@ WELS_ASM_AARCH64_FUNC_END
|
|||||||
|
|
||||||
|
|
||||||
WELS_ASM_AARCH64_FUNC_BEGIN WelsCopy16x16_AArch64_neon
|
WELS_ASM_AARCH64_FUNC_BEGIN WelsCopy16x16_AArch64_neon
|
||||||
SIGN_EXTENSION x1,w1
|
|
||||||
SIGN_EXTENSION x3,w3
|
|
||||||
LOAD16_ALIGNED_DATA_WITH_STRIDE v0, v1, v2, v3, x2, x3
|
LOAD16_ALIGNED_DATA_WITH_STRIDE v0, v1, v2, v3, x2, x3
|
||||||
|
|
||||||
STORE16_ALIGNED_DATA_WITH_STRIDE v0, v1, v2, v3, x0, x1
|
STORE16_ALIGNED_DATA_WITH_STRIDE v0, v1, v2, v3, x0, x1
|
||||||
@ -143,8 +218,7 @@ WELS_ASM_AARCH64_FUNC_END
|
|||||||
|
|
||||||
|
|
||||||
WELS_ASM_AARCH64_FUNC_BEGIN WelsCopy16x16NotAligned_AArch64_neon
|
WELS_ASM_AARCH64_FUNC_BEGIN WelsCopy16x16NotAligned_AArch64_neon
|
||||||
SIGN_EXTENSION x1,w1
|
|
||||||
SIGN_EXTENSION x3,w3
|
|
||||||
LOAD16_UNALIGNED_DATA_WITH_STRIDE v0, v1, v2, v3, x2, x3
|
LOAD16_UNALIGNED_DATA_WITH_STRIDE v0, v1, v2, v3, x2, x3
|
||||||
|
|
||||||
STORE16_UNALIGNED_DATA_WITH_STRIDE v0, v1, v2, v3, x0, x1
|
STORE16_UNALIGNED_DATA_WITH_STRIDE v0, v1, v2, v3, x0, x1
|
||||||
@ -165,8 +239,7 @@ WELS_ASM_AARCH64_FUNC_END
|
|||||||
|
|
||||||
|
|
||||||
WELS_ASM_AARCH64_FUNC_BEGIN WelsCopy16x8NotAligned_AArch64_neon
|
WELS_ASM_AARCH64_FUNC_BEGIN WelsCopy16x8NotAligned_AArch64_neon
|
||||||
SIGN_EXTENSION x1,w1
|
|
||||||
SIGN_EXTENSION x3,w3
|
|
||||||
LOAD16_UNALIGNED_DATA_WITH_STRIDE v0, v1, v2, v3, x2, x3
|
LOAD16_UNALIGNED_DATA_WITH_STRIDE v0, v1, v2, v3, x2, x3
|
||||||
|
|
||||||
STORE16_UNALIGNED_DATA_WITH_STRIDE v0, v1, v2, v3, x0, x1
|
STORE16_UNALIGNED_DATA_WITH_STRIDE v0, v1, v2, v3, x0, x1
|
||||||
@ -179,8 +252,7 @@ WELS_ASM_AARCH64_FUNC_END
|
|||||||
|
|
||||||
|
|
||||||
WELS_ASM_AARCH64_FUNC_BEGIN WelsCopy8x16_AArch64_neon
|
WELS_ASM_AARCH64_FUNC_BEGIN WelsCopy8x16_AArch64_neon
|
||||||
SIGN_EXTENSION x1,w1
|
|
||||||
SIGN_EXTENSION x3,w3
|
|
||||||
LOAD_UNALIGNED_DATA_WITH_STRIDE v0, v1, v2, v3, x2, x3
|
LOAD_UNALIGNED_DATA_WITH_STRIDE v0, v1, v2, v3, x2, x3
|
||||||
|
|
||||||
STORE_UNALIGNED_DATA_WITH_STRIDE v0, v1, v2, v3, x0, x1
|
STORE_UNALIGNED_DATA_WITH_STRIDE v0, v1, v2, v3, x0, x1
|
||||||
|
@ -31,8 +31,268 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_NEON_AARCH64
|
#ifdef HAVE_NEON_AARCH64
|
||||||
|
.text
|
||||||
|
|
||||||
#include "arm_arch64_common_macro.S"
|
#include "arm_arch64_common_macro.S"
|
||||||
|
#ifdef __APPLE__
|
||||||
|
|
||||||
|
.macro MASK_MATRIX
|
||||||
|
uabd $6.16b, $1.16b, $2.16b
|
||||||
|
cmhi $6.16b, $4.16b, $6.16b
|
||||||
|
|
||||||
|
uabd $4.16b, $0.16b, $1.16b
|
||||||
|
cmhi $4.16b, $5.16b, $4.16b
|
||||||
|
and $6.16b, $6.16b, $4.16b
|
||||||
|
|
||||||
|
uabd $4.16b, $3.16b, $2.16b
|
||||||
|
cmhi $4.16b, $5.16b, $4.16b
|
||||||
|
and $6.16b, $6.16b, $4.16b
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro DIFF_LUMA_LT4_P1_Q1 //(Use Tmp v23, v24)
|
||||||
|
//v0, v1, v2, v3, v17(beta), v18(-Tc0), v6(Tc0), v7(flag), v19, v20
|
||||||
|
urhadd $8.16b, $2.16b, $3.16b
|
||||||
|
uhadd $8.16b, $0.16b, $8.16b
|
||||||
|
usubl $9.8h, $8.8b, $1.8b
|
||||||
|
sqxtn $9.8b, $9.8h
|
||||||
|
usubl2 $8.8h, $8.16b, $1.16b
|
||||||
|
sqxtn2 $9.16b, $8.8h
|
||||||
|
smax $8.16b, $9.16b, $5.16b
|
||||||
|
//
|
||||||
|
smin $8.16b, $8.16b, $6.16b
|
||||||
|
uabd $9.16b, $0.16b, $2.16b
|
||||||
|
cmhi $9.16b, $4.16b, $9.16b
|
||||||
|
and $8.16b, $8.16b, $9.16b
|
||||||
|
and $8.16b, $8.16b, $7.16b
|
||||||
|
add $8.16b, $1.16b, $8.16b
|
||||||
|
abs $9.16b, $9.16b
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro DIFF_LUMA_LT4_P0_Q0_1
|
||||||
|
usubl $5.8h, $0.8b, $3.8b
|
||||||
|
usubl $6.8h, $2.8b, $1.8b
|
||||||
|
shl $6.8h, $6.8h, #2
|
||||||
|
add $5.8h, $5.8h, $6.8h
|
||||||
|
sqrshrn $4.8b, $5.8h, #3
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro DIFF_LUMA_LT4_P0_Q0_2
|
||||||
|
usubl2 $5.8h, $0.16b, $3.16b
|
||||||
|
usubl2 $6.8h, $2.16b, $1.16b
|
||||||
|
shl $6.8h, $6.8h, #2
|
||||||
|
add $5.8h, $5.8h, $6.8h
|
||||||
|
sqrshrn2 $4.16b, $5.8h, #3
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro EXTRACT_DELTA_INTO_TWO_PART
|
||||||
|
cmge $1.16b, $0.16b, #0
|
||||||
|
and $1.16b, $0.16b, $1.16b
|
||||||
|
sub $0.16b, $1.16b, $0.16b
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro DIFF_LUMA_EQ4_P2P1P0_1
|
||||||
|
uaddl $8.8h, $1.8b, $2.8b
|
||||||
|
uaddl $9.8h, $3.8b, $4.8b
|
||||||
|
add $9.8h, $9.8h, $8.8h
|
||||||
|
|
||||||
|
uaddl $8.8h, $0.8b, $1.8b
|
||||||
|
shl $8.8h, $8.8h, #1
|
||||||
|
add $8.8h, $9.8h, $8.8h
|
||||||
|
|
||||||
|
rshrn $0.8b, $9.8h, #2
|
||||||
|
rshrn $7.8b, $8.8h, #3
|
||||||
|
shl $9.8h, $9.8h, #1
|
||||||
|
usubl $8.8h, $5.8b, $1.8b
|
||||||
|
add $9.8h, $8.8h, $9.8h
|
||||||
|
|
||||||
|
uaddl $8.8h, $2.8b, $5.8b
|
||||||
|
uaddw $8.8h, $8.8h, $2.8b
|
||||||
|
uaddw $8.8h, $8.8h, $3.8b
|
||||||
|
|
||||||
|
rshrn $9.8b, $9.8h, #3
|
||||||
|
rshrn $8.8b, $8.8h, #2
|
||||||
|
bsl $6.8b, $9.8b, $8.8b
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro DIFF_LUMA_EQ4_P2P1P0_2
|
||||||
|
uaddl2 $8.8h, $1.16b, $2.16b
|
||||||
|
uaddl2 $9.8h, $3.16b, $4.16b
|
||||||
|
add $9.8h, $9.8h, $8.8h
|
||||||
|
|
||||||
|
uaddl2 $8.8h, $0.16b, $1.16b
|
||||||
|
shl $8.8h, $8.8h, #1
|
||||||
|
add $8.8h, $9.8h, $8.8h
|
||||||
|
|
||||||
|
rshrn2 $0.16b, $9.8h, #2
|
||||||
|
rshrn2 $7.16b, $8.8h, #3
|
||||||
|
shl $9.8h, $9.8h, #1
|
||||||
|
usubl2 $8.8h, $5.16b, $1.16b
|
||||||
|
add $9.8h, $8.8h, $9.8h
|
||||||
|
|
||||||
|
uaddl2 $8.8h, $2.16b, $5.16b
|
||||||
|
uaddw2 $8.8h, $8.8h, $2.16b
|
||||||
|
uaddw2 $8.8h, $8.8h, $3.16b
|
||||||
|
|
||||||
|
rshrn2 $9.16b, $9.8h, #3
|
||||||
|
rshrn2 $8.16b, $8.8h, #2
|
||||||
|
bsl $6.16b, $9.16b, $8.16b
|
||||||
|
.endm
|
||||||
|
|
||||||
|
|
||||||
|
.macro DIFF_CHROMA_EQ4_P0Q0_1
|
||||||
|
uaddl $4.8h, $0.8b, $3.8b
|
||||||
|
shl $4.8h, $4.8h, #1
|
||||||
|
usubl $5.8h, $1.8b, $3.8b
|
||||||
|
add $5.8h, $5.8h, $4.8h
|
||||||
|
rshrn $6.8b, $5.8h, #2
|
||||||
|
usubl $5.8h, $2.8b, $0.8b
|
||||||
|
add $5.8h, $5.8h, $4.8h
|
||||||
|
rshrn $7.8b, $5.8h, #2
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro DIFF_CHROMA_EQ4_P0Q0_2
|
||||||
|
uaddl2 $4.8h, $0.16b, $3.16b
|
||||||
|
shl $4.8h, $4.8h, #1
|
||||||
|
usubl2 $5.8h, $1.16b, $3.16b
|
||||||
|
add $5.8h, $5.8h, $4.8h
|
||||||
|
rshrn2 $6.16b, $5.8h, #2
|
||||||
|
usubl2 $5.8h, $2.16b, $0.16b
|
||||||
|
add $5.8h, $5.8h, $4.8h
|
||||||
|
rshrn2 $7.16b, $5.8h, #2
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro DIFF_LUMA_EQ4_MASK
|
||||||
|
mov.16b $3, $2
|
||||||
|
bsl $3.16b, $0.16b, $1.16b
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro LOAD_LUMA_DATA_3
|
||||||
|
ld3 {$0.b, $1.b, $2.b} [$6], [x2], x1
|
||||||
|
ld3 {$3.b, $4.b, $5.b} [$6], [x0], x1
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro LOAD_LUMA_DATA_4
|
||||||
|
ld4 {$0.b, $1.b, $2.b, $3.b} [$8], [x3], x1
|
||||||
|
ld4 {$4.b, $5.b, $6.b, $7.b} [$8], [x0], x1
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro STORE_LUMA_DATA_4
|
||||||
|
st4 {$0.b, $1.b, $2.b, $3.b} [$4], [x0], x1
|
||||||
|
st4 {$0.b, $1.b, $2.b, $3.b} [$5], [x2], x1
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro STORE_LUMA_DATA_3
|
||||||
|
st3 {$0.b, $1.b, $2.b} [$6], [x3], x1
|
||||||
|
st3 {$3.b, $4.b, $5.b} [$6], [x0], x1
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro LOAD_CHROMA_DATA_4
|
||||||
|
ld4 {$0.b, $1.b, $2.b, $3.b} [$5], [$4], x2
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro STORE_CHROMA_DATA_2
|
||||||
|
st2 {$0.b, $1.b} [$3], [$2], x2
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro ZERO_JUMP_END
|
||||||
|
mov $1, $0.d[0]
|
||||||
|
mov $2, $0.d[1]
|
||||||
|
orr $1, $1, $2
|
||||||
|
cbz $1, $3
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro BS_NZC_CHECK
|
||||||
|
ld1 {v0.16b}, [$0]
|
||||||
|
//Arrange the input data --- TOP
|
||||||
|
ands x6, $1, #2
|
||||||
|
cbz x6, bs_nzc_check_jump0
|
||||||
|
sub x6, $0, $2, lsl #4
|
||||||
|
sub x6, x6, $2, lsl #3
|
||||||
|
add x6, x6, #12
|
||||||
|
ld1 {v1.s} [3], [x6]
|
||||||
|
|
||||||
|
bs_nzc_check_jump0:
|
||||||
|
ext v1.16b, v1.16b, v0.16b, #12
|
||||||
|
add $3.16b, v0.16b, v1.16b
|
||||||
|
|
||||||
|
// Arrange the input data --- LEFT
|
||||||
|
ands x6, $1, #1
|
||||||
|
cbz x6, bs_nzc_check_jump1
|
||||||
|
|
||||||
|
sub x6, $0, #21
|
||||||
|
add x7, x6, #4
|
||||||
|
ld1 {v1.b} [12], [x6]
|
||||||
|
add x6, x7, #4
|
||||||
|
ld1 {v1.b} [13], [x7]
|
||||||
|
add x7, x6, #4
|
||||||
|
ld1 {v1.b} [14], [x6]
|
||||||
|
ld1 {v1.b} [15], [x7]
|
||||||
|
|
||||||
|
bs_nzc_check_jump1:
|
||||||
|
ins v2.d[0], v0.d[1]
|
||||||
|
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
|
||||||
|
add $4.16b, v0.16b, v1.16b
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro BS_COMPARE_MV //in: $0,$1(const),$2(const),$3(const),$4(const); out:$5
|
||||||
|
mov w6, #4
|
||||||
|
sabd v20.8h, $0.8h, $1.8h
|
||||||
|
sabd v21.8h, $1.8h, $2.8h
|
||||||
|
dup $0.8h, w6
|
||||||
|
sabd v22.8h, $2.8h, $3.8h
|
||||||
|
sabd v23.8h, $3.8h, $4.8h
|
||||||
|
|
||||||
|
cmge v20.8h, v20.8h, $0.8h
|
||||||
|
cmge v21.8h, v21.8h, $0.8h
|
||||||
|
cmge v22.8h, v22.8h, $0.8h
|
||||||
|
cmge v23.8h, v23.8h, $0.8h
|
||||||
|
|
||||||
|
addp v20.8h, v20.8h, v21.8h
|
||||||
|
addp v21.8h, v22.8h, v23.8h
|
||||||
|
|
||||||
|
addhn $5.8b, v20.8h, v20.8h
|
||||||
|
addhn2 $5.16b, v21.8h, v21.8h
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro BS_MV_CHECK
|
||||||
|
ldp q0, q1, [$0], #32
|
||||||
|
ldp q2, q3, [$0]
|
||||||
|
sub $0, $0, #32
|
||||||
|
// Arrenge the input data --- TOP
|
||||||
|
ands x6, $1, #2
|
||||||
|
cbz x6, bs_mv_check_jump0
|
||||||
|
sub x6, $0, $2, lsl #6
|
||||||
|
add x6, x6, #48
|
||||||
|
ld1 {v4.16b}, [x6]
|
||||||
|
bs_mv_check_jump0:
|
||||||
|
BS_COMPARE_MV v4, v0, v1, v2, v3, $3
|
||||||
|
// Arrange the input data --- LEFT
|
||||||
|
ands x6, $1, #1
|
||||||
|
cbz x6, bs_mv_check_jump1
|
||||||
|
sub x6, $0, #52
|
||||||
|
add x7, x6, #16
|
||||||
|
ld1 {v4.s} [0], [x6]
|
||||||
|
add x6, x7, #16
|
||||||
|
ld1 {v4.s} [1], [x7]
|
||||||
|
add x7, x6, #16
|
||||||
|
ld1 {v4.s} [2], [x6]
|
||||||
|
ld1 {v4.s} [3], [x7]
|
||||||
|
bs_mv_check_jump1:
|
||||||
|
zip1 $5.4s, v0.4s, v2.4s
|
||||||
|
zip2 $6.4s, v0.4s, v2.4s
|
||||||
|
zip1 v0.4s, v1.4s, v3.4s
|
||||||
|
zip2 v2.4s, v1.4s, v3.4s
|
||||||
|
zip2 v1.4s, $5.4s, v0.4s
|
||||||
|
zip1 v0.4s, $5.4s, v0.4s
|
||||||
|
zip2 v3.4s, $6.4s, v2.4s
|
||||||
|
zip1 v2.4s, $6.4s, v2.4s
|
||||||
|
BS_COMPARE_MV v4, v0, v1, v2, v3, $4
|
||||||
|
.endm
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
.macro MASK_MATRIX arg0, arg1, arg2, arg3, arg4, arg5, arg6
|
.macro MASK_MATRIX arg0, arg1, arg2, arg3, arg4, arg5, arg6
|
||||||
uabd \arg6\().16b, \arg1\().16b, \arg2\().16b
|
uabd \arg6\().16b, \arg1\().16b, \arg2\().16b
|
||||||
@ -160,7 +420,7 @@
|
|||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro DIFF_LUMA_EQ4_MASK arg0, arg1, arg2, arg3
|
.macro DIFF_LUMA_EQ4_MASK arg0, arg1, arg2, arg3
|
||||||
mov \arg3\().16b, \arg2\().16b
|
mov.16b \arg3, \arg2
|
||||||
bsl \arg3\().16b, \arg0\().16b, \arg1\().16b
|
bsl \arg3\().16b, \arg0\().16b, \arg1\().16b
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
@ -290,14 +550,19 @@ bs_mv_check_jump1:
|
|||||||
zip1 v2.4s, \arg6\().4s, v2.4s
|
zip1 v2.4s, \arg6\().4s, v2.4s
|
||||||
BS_COMPARE_MV v4, v0, v1, v2, v3, \arg4
|
BS_COMPARE_MV v4, v0, v1, v2, v3, \arg4
|
||||||
.endm
|
.endm
|
||||||
|
#endif
|
||||||
|
|
||||||
WELS_ASM_AARCH64_FUNC_BEGIN WelsNonZeroCount_AArch64_neon
|
WELS_ASM_AARCH64_FUNC_BEGIN WelsNonZeroCount_AArch64_neon
|
||||||
mov w1, #1
|
|
||||||
dup v3.8b, w1
|
|
||||||
ld1 {v0.8b, v1.8b, v2.8b}, [x0]
|
ld1 {v0.8b, v1.8b, v2.8b}, [x0]
|
||||||
umin v0.8b, v0.8b, v3.8b
|
ins v0.d[1], v1.d[0]
|
||||||
umin v1.8b, v1.8b, v3.8b
|
uzp1 v0.2d, v0.2d, v1.2d
|
||||||
umin v2.8b, v2.8b, v3.8b
|
cmeq v0.16b, v0.16b, #0
|
||||||
|
cmeq v2.8b, v2.8b, #0
|
||||||
|
mvn v0.16b, v0.16b
|
||||||
|
mvn v2.8b, v2.8b
|
||||||
|
abs v0.16b, v0.16b
|
||||||
|
abs v2.8b, v2.8b
|
||||||
|
ins v1.d[0], v0.d[1]
|
||||||
st1 {v0.8b, v1.8b, v2.8b}, [x0]
|
st1 {v0.8b, v1.8b, v2.8b}, [x0]
|
||||||
WELS_ASM_AARCH64_FUNC_END
|
WELS_ASM_AARCH64_FUNC_END
|
||||||
|
|
||||||
@ -305,7 +570,6 @@ WELS_ASM_AARCH64_FUNC_END
|
|||||||
WELS_ASM_AARCH64_FUNC_BEGIN DeblockLumaLt4V_AArch64_neon //uint8_t* pPix, int32_t iStride, int32_t iAlpha, int32_t iBeta, int8_t* tc
|
WELS_ASM_AARCH64_FUNC_BEGIN DeblockLumaLt4V_AArch64_neon //uint8_t* pPix, int32_t iStride, int32_t iAlpha, int32_t iBeta, int8_t* tc
|
||||||
dup v16.16b, w2 //alpha
|
dup v16.16b, w2 //alpha
|
||||||
dup v17.16b, w3 //beta
|
dup v17.16b, w3 //beta
|
||||||
SIGN_EXTENSION x1,w1
|
|
||||||
add x2, x1, x1, lsl #1
|
add x2, x1, x1, lsl #1
|
||||||
sub x2, x0, x2
|
sub x2, x0, x2
|
||||||
movi v23.16b, #128
|
movi v23.16b, #128
|
||||||
@ -364,8 +628,8 @@ WELS_ASM_AARCH64_FUNC_END
|
|||||||
WELS_ASM_AARCH64_FUNC_BEGIN DeblockLumaEq4V_AArch64_neon
|
WELS_ASM_AARCH64_FUNC_BEGIN DeblockLumaEq4V_AArch64_neon
|
||||||
dup v16.16b, w2 //alpha
|
dup v16.16b, w2 //alpha
|
||||||
dup v17.16b, w3 //beta
|
dup v17.16b, w3 //beta
|
||||||
SIGN_EXTENSION x1,w1
|
|
||||||
sub x3, x0, x1, lsl #2
|
sub x3, x0, x1, lsl #2
|
||||||
|
|
||||||
ld1 {v0.16b}, [x3], x1
|
ld1 {v0.16b}, [x3], x1
|
||||||
ld1 {v4.16b}, [x0], x1
|
ld1 {v4.16b}, [x0], x1
|
||||||
ld1 {v1.16b}, [x3], x1
|
ld1 {v1.16b}, [x3], x1
|
||||||
@ -392,10 +656,10 @@ WELS_ASM_AARCH64_FUNC_BEGIN DeblockLumaEq4V_AArch64_neon
|
|||||||
and v22.16b, v22.16b, v20.16b //(iDetaP0Q0 < ((iAlpha >> 2) + 2))&&bDetaQ2Q0
|
and v22.16b, v22.16b, v20.16b //(iDetaP0Q0 < ((iAlpha >> 2) + 2))&&bDetaQ2Q0
|
||||||
and v20.16b, v20.16b, v18.16b //(iDetaP0Q0 < iAlpha) && bDetaP1P0 && bDetaQ1Q0&&(iDetaP0Q0 < ((iAlpha >> 2) + 2))
|
and v20.16b, v20.16b, v18.16b //(iDetaP0Q0 < iAlpha) && bDetaP1P0 && bDetaQ1Q0&&(iDetaP0Q0 < ((iAlpha >> 2) + 2))
|
||||||
|
|
||||||
mov v23.16b, v21.16b
|
mov.16b v23, v21
|
||||||
mov v24.16b, v21.16b
|
mov.16b v24, v21
|
||||||
|
|
||||||
mov v25.16b, v0.16b
|
mov.16b v25, v0
|
||||||
DIFF_LUMA_EQ4_P2P1P0_1 v0, v1, v2, v3, v4, v5, v23, v19, v17, v16
|
DIFF_LUMA_EQ4_P2P1P0_1 v0, v1, v2, v3, v4, v5, v23, v19, v17, v16
|
||||||
DIFF_LUMA_EQ4_P2P1P0_2 v25, v1, v2, v3, v4, v5, v24, v19, v17, v16
|
DIFF_LUMA_EQ4_P2P1P0_2 v25, v1, v2, v3, v4, v5, v24, v19, v17, v16
|
||||||
ins v0.d[1], v25.d[1]
|
ins v0.d[1], v25.d[1]
|
||||||
@ -409,9 +673,9 @@ WELS_ASM_AARCH64_FUNC_BEGIN DeblockLumaEq4V_AArch64_neon
|
|||||||
st1 {v17.16b}, [x3], x1
|
st1 {v17.16b}, [x3], x1
|
||||||
|
|
||||||
|
|
||||||
mov v23.16b, v22.16b
|
mov.16b v23, v22
|
||||||
mov v24.16b, v22.16b
|
mov.16b v24, v22
|
||||||
mov v25.16b, v7.16b
|
mov.16b v25, v7
|
||||||
DIFF_LUMA_EQ4_P2P1P0_1 v7, v6, v5, v4, v3, v2, v23, v19, v17, v16
|
DIFF_LUMA_EQ4_P2P1P0_1 v7, v6, v5, v4, v3, v2, v23, v19, v17, v16
|
||||||
DIFF_LUMA_EQ4_P2P1P0_2 v25, v6, v5, v4, v3, v2, v24, v19, v17, v16
|
DIFF_LUMA_EQ4_P2P1P0_2 v25, v6, v5, v4, v3, v2, v24, v19, v17, v16
|
||||||
ins v7.d[1], v25.d[1]
|
ins v7.d[1], v25.d[1]
|
||||||
@ -432,7 +696,7 @@ WELS_ASM_AARCH64_FUNC_BEGIN DeblockLumaLt4H_AArch64_neon //uint8_t* pPix, int32_
|
|||||||
dup v17.16b, w3 //beta
|
dup v17.16b, w3 //beta
|
||||||
sub x2, x0, #3
|
sub x2, x0, #3
|
||||||
movi v23.16b, #128
|
movi v23.16b, #128
|
||||||
SIGN_EXTENSION x1,w1
|
|
||||||
LOAD_LUMA_DATA_3 v0, v1, v2, v3, v4, v5, 0
|
LOAD_LUMA_DATA_3 v0, v1, v2, v3, v4, v5, 0
|
||||||
LOAD_LUMA_DATA_3 v0, v1, v2, v3, v4, v5, 1
|
LOAD_LUMA_DATA_3 v0, v1, v2, v3, v4, v5, 1
|
||||||
LOAD_LUMA_DATA_3 v0, v1, v2, v3, v4, v5, 2
|
LOAD_LUMA_DATA_3 v0, v1, v2, v3, v4, v5, 2
|
||||||
@ -468,7 +732,7 @@ WELS_ASM_AARCH64_FUNC_BEGIN DeblockLumaLt4H_AArch64_neon //uint8_t* pPix, int32_
|
|||||||
sub v18.16b, v18.16b, v6.16b // -iTc0: 0000, 1111, 2222, 3333
|
sub v18.16b, v18.16b, v6.16b // -iTc0: 0000, 1111, 2222, 3333
|
||||||
|
|
||||||
DIFF_LUMA_LT4_P1_Q1 v0, v1, v2, v3, v17, v18, v6, v7, v19, v20 //Use Tmp v23,v24
|
DIFF_LUMA_LT4_P1_Q1 v0, v1, v2, v3, v17, v18, v6, v7, v19, v20 //Use Tmp v23,v24
|
||||||
mov v25.16b, v19.16b
|
mov.16b v25, v19
|
||||||
|
|
||||||
DIFF_LUMA_LT4_P1_Q1 v5, v4, v3, v2, v17, v18, v6, v7, v21, v22 //Use Tmp v23,v24
|
DIFF_LUMA_LT4_P1_Q1 v5, v4, v3, v2, v17, v18, v6, v7, v21, v22 //Use Tmp v23,v24
|
||||||
|
|
||||||
@ -489,11 +753,11 @@ WELS_ASM_AARCH64_FUNC_BEGIN DeblockLumaLt4H_AArch64_neon //uint8_t* pPix, int32_
|
|||||||
EXTRACT_DELTA_INTO_TWO_PART v19, v20
|
EXTRACT_DELTA_INTO_TWO_PART v19, v20
|
||||||
uqadd v2.16b, v2.16b, v20.16b
|
uqadd v2.16b, v2.16b, v20.16b
|
||||||
uqsub v2.16b, v2.16b, v19.16b
|
uqsub v2.16b, v2.16b, v19.16b
|
||||||
mov v26.16b, v2.16b
|
mov.16b v26, v2
|
||||||
uqsub v3.16b, v3.16b, v20.16b
|
uqsub v3.16b, v3.16b, v20.16b
|
||||||
uqadd v3.16b, v3.16b, v19.16b
|
uqadd v3.16b, v3.16b, v19.16b
|
||||||
mov v27.16b, v3.16b
|
mov.16b v27, v3
|
||||||
mov v28.16b, v21.16b
|
mov.16b v28, v21
|
||||||
|
|
||||||
sub x0, x0, #2
|
sub x0, x0, #2
|
||||||
add x2, x0, x1
|
add x2, x0, x1
|
||||||
@ -516,7 +780,7 @@ WELS_ASM_AARCH64_FUNC_BEGIN DeblockLumaEq4H_AArch64_neon
|
|||||||
dup v16.16b, w2 //alpha
|
dup v16.16b, w2 //alpha
|
||||||
dup v17.16b, w3 //beta
|
dup v17.16b, w3 //beta
|
||||||
sub x3, x0, #4
|
sub x3, x0, #4
|
||||||
SIGN_EXTENSION x1,w1
|
|
||||||
LOAD_LUMA_DATA_4 v0, v1, v2, v3, v4, v5, v6, v7, 0
|
LOAD_LUMA_DATA_4 v0, v1, v2, v3, v4, v5, v6, v7, 0
|
||||||
LOAD_LUMA_DATA_4 v0, v1, v2, v3, v4, v5, v6, v7, 1
|
LOAD_LUMA_DATA_4 v0, v1, v2, v3, v4, v5, v6, v7, 1
|
||||||
LOAD_LUMA_DATA_4 v0, v1, v2, v3, v4, v5, v6, v7, 2
|
LOAD_LUMA_DATA_4 v0, v1, v2, v3, v4, v5, v6, v7, 2
|
||||||
@ -556,37 +820,37 @@ WELS_ASM_AARCH64_FUNC_BEGIN DeblockLumaEq4H_AArch64_neon
|
|||||||
and v22.16b, v22.16b, v20.16b //(iDetaP0Q0 < ((iAlpha >> 2) + 2))&&bDetaQ2Q0
|
and v22.16b, v22.16b, v20.16b //(iDetaP0Q0 < ((iAlpha >> 2) + 2))&&bDetaQ2Q0
|
||||||
and v20.16b, v20.16b, v18.16b //(iDetaP0Q0 < iAlpha) && bDetaP1P0 && bDetaQ1Q0&&(iDetaP0Q0 < ((iAlpha >> 2) + 2))
|
and v20.16b, v20.16b, v18.16b //(iDetaP0Q0 < iAlpha) && bDetaP1P0 && bDetaQ1Q0&&(iDetaP0Q0 < ((iAlpha >> 2) + 2))
|
||||||
|
|
||||||
mov v23.16b, v21.16b
|
mov.16b v23, v21
|
||||||
mov v24.16b, v21.16b
|
mov.16b v24, v21
|
||||||
|
|
||||||
mov v25.16b, v0.16b
|
mov.16b v25, v0
|
||||||
DIFF_LUMA_EQ4_P2P1P0_1 v0, v1, v2, v3, v4, v5, v23, v19, v17, v16
|
DIFF_LUMA_EQ4_P2P1P0_1 v0, v1, v2, v3, v4, v5, v23, v19, v17, v16
|
||||||
DIFF_LUMA_EQ4_P2P1P0_2 v25, v1, v2, v3, v4, v5, v24, v19, v17, v16
|
DIFF_LUMA_EQ4_P2P1P0_2 v25, v1, v2, v3, v4, v5, v24, v19, v17, v16
|
||||||
ins v0.d[1], v25.d[1]
|
ins v0.d[1], v25.d[1]
|
||||||
ins v23.d[1], v24.d[1]
|
ins v23.d[1], v24.d[1]
|
||||||
and v21.16b, v20.16b, v21.16b
|
and v21.16b, v20.16b, v21.16b
|
||||||
DIFF_LUMA_EQ4_MASK v19, v1, v21, v17
|
DIFF_LUMA_EQ4_MASK v19, v1, v21, v17
|
||||||
mov v26.16b, v17.16b
|
mov.16b v26, v17
|
||||||
DIFF_LUMA_EQ4_MASK v0, v2, v21, v17
|
DIFF_LUMA_EQ4_MASK v0, v2, v21, v17
|
||||||
mov v27.16b, v17.16b
|
mov.16b v27, v17
|
||||||
DIFF_LUMA_EQ4_MASK v23, v3, v18, v17
|
DIFF_LUMA_EQ4_MASK v23, v3, v18, v17
|
||||||
mov v28.16b, v17.16b
|
mov.16b v28, v17
|
||||||
|
|
||||||
|
|
||||||
mov v23.16b, v22.16b
|
mov.16b v23, v22
|
||||||
mov v24.16b, v22.16b
|
mov.16b v24, v22
|
||||||
mov v25.16b, v7.16b
|
mov.16b v25, v7
|
||||||
DIFF_LUMA_EQ4_P2P1P0_1 v7, v6, v5, v4, v3, v2, v23, v19, v17, v16
|
DIFF_LUMA_EQ4_P2P1P0_1 v7, v6, v5, v4, v3, v2, v23, v19, v17, v16
|
||||||
DIFF_LUMA_EQ4_P2P1P0_2 v25, v6, v5, v4, v3, v2, v24, v19, v17, v16
|
DIFF_LUMA_EQ4_P2P1P0_2 v25, v6, v5, v4, v3, v2, v24, v19, v17, v16
|
||||||
ins v7.d[1], v25.d[1]
|
ins v7.d[1], v25.d[1]
|
||||||
ins v23.d[1], v24.d[1]
|
ins v23.d[1], v24.d[1]
|
||||||
and v22.16b, v20.16b, v22.16b
|
and v22.16b, v20.16b, v22.16b
|
||||||
DIFF_LUMA_EQ4_MASK v23, v4, v18, v17
|
DIFF_LUMA_EQ4_MASK v23, v4, v18, v17
|
||||||
mov v29.16b, v17.16b
|
mov.16b v29, v17
|
||||||
DIFF_LUMA_EQ4_MASK v7, v5, v22, v17
|
DIFF_LUMA_EQ4_MASK v7, v5, v22, v17
|
||||||
mov v30.16b, v17.16b
|
mov.16b v30, v17
|
||||||
DIFF_LUMA_EQ4_MASK v19, v6, v22, v17
|
DIFF_LUMA_EQ4_MASK v19, v6, v22, v17
|
||||||
mov v31.16b, v17.16b
|
mov.16b v31, v17
|
||||||
|
|
||||||
STORE_LUMA_DATA_3 v26, v27, v28, v29, v30, v31, 0
|
STORE_LUMA_DATA_3 v26, v27, v28, v29, v30, v31, 0
|
||||||
STORE_LUMA_DATA_3 v26, v27, v28, v29, v30, v31, 1
|
STORE_LUMA_DATA_3 v26, v27, v28, v29, v30, v31, 1
|
||||||
@ -753,7 +1017,7 @@ WELS_ASM_AARCH64_FUNC_BEGIN DeblockChromaEq4V_AArch64_neon //uint8_t* pPixCb, ui
|
|||||||
DIFF_CHROMA_EQ4_P0Q0_1 v0, v1, v2, v3, v18, v19, v20, v21
|
DIFF_CHROMA_EQ4_P0Q0_1 v0, v1, v2, v3, v18, v19, v20, v21
|
||||||
DIFF_CHROMA_EQ4_P0Q0_2 v0, v1, v2, v3, v18, v19, v20, v21
|
DIFF_CHROMA_EQ4_P0Q0_2 v0, v1, v2, v3, v18, v19, v20, v21
|
||||||
|
|
||||||
mov v6.16b, v7.16b
|
mov.16b v6, v7
|
||||||
bsl v6.16b, v20.16b, v1.16b
|
bsl v6.16b, v20.16b, v1.16b
|
||||||
bsl v7.16b, v21.16b, v2.16b
|
bsl v7.16b, v21.16b, v2.16b
|
||||||
|
|
||||||
@ -799,7 +1063,7 @@ WELS_ASM_AARCH64_FUNC_BEGIN DeblockChromaEq4H_AArch64_neon //uint8_t* pPixCb, ui
|
|||||||
DIFF_CHROMA_EQ4_P0Q0_1 v0, v1, v2, v3, v18, v19, v20, v21
|
DIFF_CHROMA_EQ4_P0Q0_1 v0, v1, v2, v3, v18, v19, v20, v21
|
||||||
DIFF_CHROMA_EQ4_P0Q0_2 v0, v1, v2, v3, v18, v19, v20, v21
|
DIFF_CHROMA_EQ4_P0Q0_2 v0, v1, v2, v3, v18, v19, v20, v21
|
||||||
|
|
||||||
mov v6.16b, v7.16b
|
mov.16b v6, v7
|
||||||
bsl v6.16b, v20.16b, v1.16b
|
bsl v6.16b, v20.16b, v1.16b
|
||||||
bsl v7.16b, v21.16b, v2.16b
|
bsl v7.16b, v21.16b, v2.16b
|
||||||
|
|
||||||
|
@ -31,12 +31,10 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_NEON_AARCH64
|
#ifdef HAVE_NEON_AARCH64
|
||||||
|
.text
|
||||||
#include "arm_arch64_common_macro.S"
|
#include "arm_arch64_common_macro.S"
|
||||||
//void ExpandPictureLuma_AArch64_neon (uint8_t* pDst, const int32_t kiStride, const int32_t kiPicW, const int32_t kiPicH);
|
|
||||||
WELS_ASM_AARCH64_FUNC_BEGIN ExpandPictureLuma_AArch64_neon
|
WELS_ASM_AARCH64_FUNC_BEGIN ExpandPictureLuma_AArch64_neon
|
||||||
SIGN_EXTENSION x1,w1
|
|
||||||
SIGN_EXTENSION x2,w2
|
|
||||||
SIGN_EXTENSION x3,w3
|
|
||||||
mov x7, x0
|
mov x7, x0
|
||||||
mov x8, x3
|
mov x8, x3
|
||||||
add x4, x7, x2
|
add x4, x7, x2
|
||||||
@ -48,8 +46,8 @@ _expand_picture_luma_loop2:
|
|||||||
add x6, x4, #1
|
add x6, x4, #1
|
||||||
ld1r {v0.16b}, [x7], x1
|
ld1r {v0.16b}, [x7], x1
|
||||||
ld1r {v2.16b}, [x4], x1
|
ld1r {v2.16b}, [x4], x1
|
||||||
mov v1.16b, v0.16b
|
mov.16b v1, v0
|
||||||
mov v3.16b, v2.16b
|
mov.16b v3, v2
|
||||||
st2 {v0.16b, v1.16b}, [x5]
|
st2 {v0.16b, v1.16b}, [x5]
|
||||||
st2 {v2.16b, v3.16b}, [x6]
|
st2 {v2.16b, v3.16b}, [x6]
|
||||||
sub x8, x8, #1
|
sub x8, x8, #1
|
||||||
@ -76,13 +74,8 @@ _expand_picture_luma_loop1:
|
|||||||
cbnz x2, _expand_picture_luma_loop0
|
cbnz x2, _expand_picture_luma_loop0
|
||||||
WELS_ASM_AARCH64_FUNC_END
|
WELS_ASM_AARCH64_FUNC_END
|
||||||
|
|
||||||
//void ExpandPictureChroma_AArch64_neon (uint8_t* pDst, const int32_t kiStride, const int32_t kiPicW,
|
|
||||||
// const int32_t kiPicH);
|
|
||||||
WELS_ASM_AARCH64_FUNC_BEGIN ExpandPictureChroma_AArch64_neon
|
WELS_ASM_AARCH64_FUNC_BEGIN ExpandPictureChroma_AArch64_neon
|
||||||
//Save the dst
|
//Save the dst
|
||||||
SIGN_EXTENSION x1,w1
|
|
||||||
SIGN_EXTENSION x2,w2
|
|
||||||
SIGN_EXTENSION x3,w3
|
|
||||||
mov x7, x0
|
mov x7, x0
|
||||||
mov x8, x3
|
mov x8, x3
|
||||||
mov x10, #16
|
mov x10, #16
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
rm -f codec/common/inc/version.h
|
||||||
git rev-list HEAD | sort > config.git-hash
|
git rev-list HEAD | sort > config.git-hash
|
||||||
SRC_PATH=$1
|
|
||||||
LOCALVER=`wc -l config.git-hash | awk '{print $1}'`
|
LOCALVER=`wc -l config.git-hash | awk '{print $1}'`
|
||||||
if [ $LOCALVER \> 1 ] ; then
|
if [ $LOCALVER \> 1 ] ; then
|
||||||
VER="$(git rev-list HEAD -n 1 | cut -c 1-7)"
|
VER="$(git rev-list HEAD -n 1 | cut -c 1-7)"
|
||||||
@ -15,14 +15,6 @@ fi
|
|||||||
GIT_VERSION='"'$GIT_VERSION'"'
|
GIT_VERSION='"'$GIT_VERSION'"'
|
||||||
rm -f config.git-hash
|
rm -f config.git-hash
|
||||||
|
|
||||||
mkdir -p codec/common/inc
|
cat codec/common/inc/version.h.template | sed "s/\$FULL_VERSION/$GIT_VERSION/g" > codec/common/inc/version.h
|
||||||
cat $SRC_PATH/codec/common/inc/version_gen.h.template | sed "s/\$FULL_VERSION/$GIT_VERSION/g" > codec/common/inc/version_gen.h.new
|
|
||||||
if cmp codec/common/inc/version_gen.h.new codec/common/inc/version_gen.h > /dev/null 2>&1; then
|
|
||||||
# Identical to old version, don't touch it (to avoid unnecessary rebuilds)
|
|
||||||
rm codec/common/inc/version_gen.h.new
|
|
||||||
echo "Keeping existing codec/common/inc/version_gen.h"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
mv codec/common/inc/version_gen.h.new codec/common/inc/version_gen.h
|
|
||||||
|
|
||||||
echo "Generated codec/common/inc/version_gen.h"
|
echo "Generated codec/common/inc/version.h"
|
||||||
|
1
codec/common/inc/.gitignore
vendored
@ -1 +0,0 @@
|
|||||||
version_gen.h
|
|
@ -1,180 +0,0 @@
|
|||||||
/*!
|
|
||||||
* \copy
|
|
||||||
* Copyright (c) 2009-2015, 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 WelsCircleQueue.h
|
|
||||||
*
|
|
||||||
* \brief for the queue function needed in ThreadPool
|
|
||||||
*
|
|
||||||
* \date 9/27/2015 Created
|
|
||||||
*
|
|
||||||
*************************************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _WELS_CIRCLE_QUEUE_H_
|
|
||||||
#define _WELS_CIRCLE_QUEUE_H_
|
|
||||||
|
|
||||||
#include "typedefs.h"
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
namespace WelsCommon {
|
|
||||||
|
|
||||||
template<typename TNodeType>
|
|
||||||
class CWelsCircleQueue {
|
|
||||||
public:
|
|
||||||
CWelsCircleQueue() {
|
|
||||||
m_iMaxNodeCount = 50;
|
|
||||||
m_pCurrentQueue = static_cast<TNodeType**> (malloc (m_iMaxNodeCount * sizeof (TNodeType*)));
|
|
||||||
//here using array to simulate list is to avoid the frequent malloc/free of Nodes which may cause fragmented memory
|
|
||||||
m_iCurrentListStart = m_iCurrentListEnd = 0;
|
|
||||||
};
|
|
||||||
~CWelsCircleQueue() {
|
|
||||||
free (m_pCurrentQueue);
|
|
||||||
};
|
|
||||||
|
|
||||||
int32_t size() {
|
|
||||||
return ((m_iCurrentListEnd >= m_iCurrentListStart)
|
|
||||||
? (m_iCurrentListEnd - m_iCurrentListStart)
|
|
||||||
: (m_iMaxNodeCount - m_iCurrentListStart + m_iCurrentListEnd));
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t push_back (TNodeType* pNode) {
|
|
||||||
if ((NULL != pNode) && (find (pNode))) { //not checking NULL for easier testing
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
return InternalPushBack (pNode);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool find (TNodeType* pNode) {
|
|
||||||
if (size() > 0) {
|
|
||||||
if (m_iCurrentListEnd > m_iCurrentListStart) {
|
|
||||||
for (int32_t idx = m_iCurrentListStart; idx < m_iCurrentListEnd; idx++) {
|
|
||||||
if (pNode == m_pCurrentQueue[idx]) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
for (int32_t idx = m_iCurrentListStart; idx < m_iMaxNodeCount; idx++) {
|
|
||||||
if (pNode == m_pCurrentQueue[idx]) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (int32_t idx = 0; idx < m_iCurrentListEnd; idx++) {
|
|
||||||
if (pNode == m_pCurrentQueue[idx]) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void pop_front() {
|
|
||||||
if (size() > 0) {
|
|
||||||
m_pCurrentQueue[m_iCurrentListStart] = NULL;
|
|
||||||
m_iCurrentListStart = ((m_iCurrentListStart < (m_iMaxNodeCount - 1))
|
|
||||||
? (m_iCurrentListStart + 1)
|
|
||||||
: 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
TNodeType* begin() {
|
|
||||||
if (size() > 0) {
|
|
||||||
return m_pCurrentQueue[m_iCurrentListStart];
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
TNodeType* GetIndexNode (const int32_t iIdx) {
|
|
||||||
if (size() > 0) {
|
|
||||||
if ((iIdx + m_iCurrentListStart) < m_iMaxNodeCount) {
|
|
||||||
return m_pCurrentQueue[m_iCurrentListStart + iIdx];
|
|
||||||
} else {
|
|
||||||
return m_pCurrentQueue[m_iCurrentListStart + iIdx - m_iMaxNodeCount];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
int32_t InternalPushBack (TNodeType* pNode) {
|
|
||||||
m_pCurrentQueue[m_iCurrentListEnd] = pNode;
|
|
||||||
m_iCurrentListEnd ++;
|
|
||||||
|
|
||||||
if (m_iCurrentListEnd == m_iMaxNodeCount) {
|
|
||||||
m_iCurrentListEnd = 0;
|
|
||||||
}
|
|
||||||
if (m_iCurrentListEnd == m_iCurrentListStart) {
|
|
||||||
int32_t ret = ExpandQueue();
|
|
||||||
if (ret) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t ExpandQueue() {
|
|
||||||
TNodeType** tmpCurrentTaskQueue = static_cast<TNodeType**> (malloc (m_iMaxNodeCount * 2 * sizeof (TNodeType*)));
|
|
||||||
if (tmpCurrentTaskQueue == NULL) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
memcpy (tmpCurrentTaskQueue,
|
|
||||||
(m_pCurrentQueue + m_iCurrentListStart),
|
|
||||||
(m_iMaxNodeCount - m_iCurrentListStart)*sizeof (TNodeType*));
|
|
||||||
if (m_iCurrentListEnd > 0) {
|
|
||||||
memcpy (tmpCurrentTaskQueue + m_iMaxNodeCount - m_iCurrentListStart,
|
|
||||||
m_pCurrentQueue,
|
|
||||||
m_iCurrentListEnd * sizeof (TNodeType*));
|
|
||||||
}
|
|
||||||
|
|
||||||
free (m_pCurrentQueue);
|
|
||||||
|
|
||||||
m_pCurrentQueue = tmpCurrentTaskQueue;
|
|
||||||
m_iCurrentListEnd = m_iMaxNodeCount;
|
|
||||||
m_iCurrentListStart = 0;
|
|
||||||
m_iMaxNodeCount = m_iMaxNodeCount * 2;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
int32_t m_iCurrentListStart;
|
|
||||||
int32_t m_iCurrentListEnd;
|
|
||||||
int32_t m_iMaxNodeCount;
|
|
||||||
TNodeType** m_pCurrentQueue;
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,233 +0,0 @@
|
|||||||
/*!
|
|
||||||
* \copy
|
|
||||||
* Copyright (c) 2009-2015, 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 WelsList
|
|
||||||
*
|
|
||||||
* \brief for the list function needed in ThreadPool
|
|
||||||
*
|
|
||||||
* \date 9/27/2015 Created
|
|
||||||
*
|
|
||||||
*************************************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _WELS_LIST_H_
|
|
||||||
#define _WELS_LIST_H_
|
|
||||||
|
|
||||||
#include "typedefs.h"
|
|
||||||
|
|
||||||
namespace WelsCommon {
|
|
||||||
|
|
||||||
template<typename TNodeType>
|
|
||||||
struct SNode {
|
|
||||||
TNodeType* pPointer;
|
|
||||||
SNode* pPrevNode;
|
|
||||||
SNode* pNextNode;
|
|
||||||
};
|
|
||||||
|
|
||||||
template<typename TNodeType>
|
|
||||||
class CWelsList {
|
|
||||||
public:
|
|
||||||
CWelsList() {
|
|
||||||
m_iCurrentNodeCount = 0;
|
|
||||||
m_iMaxNodeCount = 50;
|
|
||||||
m_pCurrentList = static_cast<SNode<TNodeType>*> (malloc (m_iMaxNodeCount * sizeof (SNode<TNodeType>)));
|
|
||||||
//here using array storage to simulate list is to avoid the frequent malloc/free of Nodes which may cause fragmented memory
|
|
||||||
ResetStorage();
|
|
||||||
};
|
|
||||||
~CWelsList() {
|
|
||||||
free (m_pCurrentList);
|
|
||||||
};
|
|
||||||
|
|
||||||
int32_t size() {
|
|
||||||
return m_iCurrentNodeCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool push_back (TNodeType* pNode) {
|
|
||||||
m_pCurrent->pPointer = pNode;
|
|
||||||
if (0 == m_iCurrentNodeCount) {
|
|
||||||
m_pFirst = m_pCurrent;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_iCurrentNodeCount++;
|
|
||||||
if (m_iCurrentNodeCount == m_iMaxNodeCount) {
|
|
||||||
if (!ExpandList()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SNode<TNodeType>* pNext = FindNextStorage();
|
|
||||||
m_pCurrent->pNextNode = pNext;
|
|
||||||
pNext->pPrevNode = m_pCurrent;
|
|
||||||
m_pCurrent = pNext;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
TNodeType* begin() {
|
|
||||||
if (m_pFirst) {
|
|
||||||
return m_pFirst->pPointer;
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
void pop_front() {
|
|
||||||
if (m_iCurrentNodeCount == 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
SNode<TNodeType>* pTemp = m_pFirst;
|
|
||||||
if (m_iCurrentNodeCount > 0) {
|
|
||||||
m_iCurrentNodeCount --;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (0 == m_iCurrentNodeCount) {
|
|
||||||
ResetStorage();
|
|
||||||
} else {
|
|
||||||
m_pFirst = m_pFirst->pNextNode;
|
|
||||||
m_pFirst->pPrevNode = NULL;
|
|
||||||
|
|
||||||
CleanOneNode (pTemp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool erase (TNodeType* pNode) {
|
|
||||||
if (0 == m_iCurrentNodeCount) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
SNode<TNodeType>* pTemp = m_pFirst;
|
|
||||||
do {
|
|
||||||
if (pNode == pTemp->pPointer) {
|
|
||||||
if (pTemp->pPrevNode) {
|
|
||||||
pTemp->pPrevNode->pNextNode = pTemp->pNextNode;
|
|
||||||
} else {
|
|
||||||
m_pFirst = pTemp->pNextNode;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pTemp->pNextNode) {
|
|
||||||
pTemp->pNextNode->pPrevNode = pTemp->pPrevNode;
|
|
||||||
}
|
|
||||||
|
|
||||||
CleanOneNode (pTemp);
|
|
||||||
m_iCurrentNodeCount --;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pTemp->pNextNode) {
|
|
||||||
pTemp = pTemp->pNextNode;
|
|
||||||
} else {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} while (pTemp->pPointer && pTemp->pNextNode);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
bool ExpandList() {
|
|
||||||
SNode<TNodeType>* tmpCurrentList = static_cast<SNode<TNodeType>*> (malloc (m_iMaxNodeCount * 2 * sizeof (
|
|
||||||
SNode<TNodeType>)));
|
|
||||||
if (tmpCurrentList == NULL) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
InitStorage (tmpCurrentList, (m_iMaxNodeCount * 2) - 1);
|
|
||||||
|
|
||||||
SNode<TNodeType>* pTemp = m_pFirst;
|
|
||||||
for (int i = 0; ((i < m_iMaxNodeCount) && pTemp); i++) {
|
|
||||||
tmpCurrentList[i].pPointer = pTemp->pPointer;
|
|
||||||
pTemp = pTemp->pNextNode;
|
|
||||||
}
|
|
||||||
|
|
||||||
free (m_pCurrentList);
|
|
||||||
m_pCurrentList = tmpCurrentList;
|
|
||||||
m_iCurrentNodeCount = m_iMaxNodeCount;
|
|
||||||
m_iMaxNodeCount = m_iMaxNodeCount * 2;
|
|
||||||
m_pFirst = m_pCurrentList;
|
|
||||||
m_pCurrent = & (m_pCurrentList[m_iCurrentNodeCount - 1]);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void InitStorage (SNode<TNodeType>* pList, const int32_t iMaxIndex) {
|
|
||||||
pList[0].pPrevNode = NULL;
|
|
||||||
pList[0].pPointer = NULL;
|
|
||||||
pList[0].pNextNode = & (pList[1]);
|
|
||||||
for (int i = 1; i < iMaxIndex; i++) {
|
|
||||||
pList[i].pPrevNode = & (pList[i - 1]);
|
|
||||||
pList[i].pPointer = NULL;
|
|
||||||
pList[i].pNextNode = & (pList[i + 1]);
|
|
||||||
}
|
|
||||||
pList[iMaxIndex].pPrevNode = & (pList[iMaxIndex - 1]);
|
|
||||||
pList[iMaxIndex].pPointer = NULL;
|
|
||||||
pList[iMaxIndex].pNextNode = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
SNode<TNodeType>* FindNextStorage() {
|
|
||||||
|
|
||||||
if (NULL != m_pCurrent->pNextNode) {
|
|
||||||
if (NULL == m_pCurrent->pNextNode->pPointer) {
|
|
||||||
return (m_pCurrent->pNextNode);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int32_t i = 0; i < m_iMaxNodeCount; i++) {
|
|
||||||
if (NULL == m_pCurrentList[i].pPointer) {
|
|
||||||
return (&m_pCurrentList[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CleanOneNode (SNode<TNodeType>* pSNode) {
|
|
||||||
pSNode->pPointer = NULL;
|
|
||||||
pSNode->pPrevNode = NULL;
|
|
||||||
pSNode->pNextNode = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ResetStorage() {
|
|
||||||
m_pFirst = NULL;
|
|
||||||
m_pCurrent = m_pCurrentList;
|
|
||||||
InitStorage (m_pCurrentList, m_iMaxNodeCount - 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t m_iCurrentNodeCount;
|
|
||||||
int32_t m_iMaxNodeCount;
|
|
||||||
SNode<TNodeType>* m_pCurrentList;
|
|
||||||
SNode<TNodeType>* m_pFirst;
|
|
||||||
SNode<TNodeType>* m_pCurrent;
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,83 +0,0 @@
|
|||||||
/*!
|
|
||||||
* \copy
|
|
||||||
* Copyright (c) 2009-2015, 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 WelsTaskThread.h
|
|
||||||
*
|
|
||||||
* \brief connecting task and thread
|
|
||||||
*
|
|
||||||
* \date 5/09/2012 Created
|
|
||||||
*
|
|
||||||
*************************************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _WELS_TASK_THREAD_H_
|
|
||||||
#define _WELS_TASK_THREAD_H_
|
|
||||||
|
|
||||||
|
|
||||||
#include "WelsTask.h"
|
|
||||||
#include "WelsThread.h"
|
|
||||||
|
|
||||||
namespace WelsCommon {
|
|
||||||
|
|
||||||
class CWelsTaskThread;
|
|
||||||
|
|
||||||
class IWelsTaskThreadSink {
|
|
||||||
public:
|
|
||||||
virtual WELS_THREAD_ERROR_CODE OnTaskStart (CWelsTaskThread* pThread, IWelsTask* pTask) = 0;
|
|
||||||
virtual WELS_THREAD_ERROR_CODE OnTaskStop (CWelsTaskThread* pThread, IWelsTask* pTask) = 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
class CWelsTaskThread : public CWelsThread {
|
|
||||||
public:
|
|
||||||
CWelsTaskThread (IWelsTaskThreadSink* pSink);
|
|
||||||
virtual ~CWelsTaskThread();
|
|
||||||
|
|
||||||
WELS_THREAD_ERROR_CODE SetTask (IWelsTask* pTask);
|
|
||||||
virtual void ExecuteTask();
|
|
||||||
|
|
||||||
uintptr_t GetID() const {
|
|
||||||
return m_uiID;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
CWelsLock m_cLockTask;
|
|
||||||
IWelsTaskThreadSink* m_pSink;
|
|
||||||
IWelsTask* m_pTask;
|
|
||||||
uintptr_t m_uiID;
|
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN (CWelsTaskThread);
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
@ -1,105 +0,0 @@
|
|||||||
/*!
|
|
||||||
* \copy
|
|
||||||
* Copyright (c) 2009-2015, 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 WelsThread.h
|
|
||||||
*
|
|
||||||
* \brief Interfaces introduced in threads
|
|
||||||
*
|
|
||||||
* \date 5/09/2012 Created
|
|
||||||
*
|
|
||||||
*************************************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _WELS_THREAD_H_
|
|
||||||
#define _WELS_THREAD_H_
|
|
||||||
|
|
||||||
|
|
||||||
#include "macros.h"
|
|
||||||
#include "WelsLock.h"
|
|
||||||
#include "WelsThreadLib.h"
|
|
||||||
|
|
||||||
namespace WelsCommon {
|
|
||||||
|
|
||||||
class CWelsThread {
|
|
||||||
public:
|
|
||||||
CWelsThread();
|
|
||||||
virtual ~CWelsThread();
|
|
||||||
|
|
||||||
virtual void Thread();
|
|
||||||
virtual void ExecuteTask() = 0;
|
|
||||||
virtual WELS_THREAD_ERROR_CODE Start();
|
|
||||||
virtual void Kill();
|
|
||||||
|
|
||||||
protected:
|
|
||||||
static WELS_THREAD_ROUTINE_TYPE TheThread (void* pParam);
|
|
||||||
|
|
||||||
void SetRunning (bool bRunning) {
|
|
||||||
CWelsAutoLock cLock (m_cLockStatus);
|
|
||||||
|
|
||||||
m_bRunning = bRunning;
|
|
||||||
}
|
|
||||||
void SetEndFlag (bool bEndFlag) {
|
|
||||||
CWelsAutoLock cLock (m_cLockStatus);
|
|
||||||
|
|
||||||
m_bEndFlag = bEndFlag;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool GetRunning() const {
|
|
||||||
return m_bRunning;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool GetEndFlag() const {
|
|
||||||
return m_bEndFlag;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SignalThread() {
|
|
||||||
WelsEventSignal (&m_hEvent);
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
WELS_THREAD_HANDLE m_hThread;
|
|
||||||
WELS_EVENT m_hEvent;
|
|
||||||
CWelsLock m_cLockStatus;
|
|
||||||
bool m_bRunning;
|
|
||||||
bool m_bEndFlag;
|
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN (CWelsThread);
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
@ -29,11 +29,11 @@
|
|||||||
* POSSIBILITY OF SUCH DAMAGE.
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* \file WelsThreadLib.h
|
* \file WelsThreadLib.h
|
||||||
*
|
*
|
||||||
* \brief Interfaces introduced in thread programming
|
* \brief Interfaces introduced in thread programming
|
||||||
*
|
*
|
||||||
* \date 11/17/2009 Created
|
* \date 11/17/2009 Created
|
||||||
*
|
*
|
||||||
*************************************************************************************
|
*************************************************************************************
|
||||||
*/
|
*/
|
||||||
@ -60,7 +60,7 @@ typedef HANDLE WELS_EVENT;
|
|||||||
#define WELS_THREAD_ROUTINE_TYPE DWORD WINAPI
|
#define WELS_THREAD_ROUTINE_TYPE DWORD WINAPI
|
||||||
#define WELS_THREAD_ROUTINE_RETURN(rc) return (DWORD)rc;
|
#define WELS_THREAD_ROUTINE_RETURN(rc) return (DWORD)rc;
|
||||||
|
|
||||||
#else // NON-WINDOWS
|
#else // NON-WINDOWS
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
@ -93,20 +93,19 @@ typedef struct _WelsLogicalProcessorInfo {
|
|||||||
int32_t ProcessorCount;
|
int32_t ProcessorCount;
|
||||||
} WelsLogicalProcessInfo;
|
} WelsLogicalProcessInfo;
|
||||||
|
|
||||||
#define WELS_THREAD_ERROR_OK 0
|
#define WELS_THREAD_ERROR_OK 0
|
||||||
#define WELS_THREAD_ERROR_GENERAL ((uint32_t)(-1))
|
#define WELS_THREAD_ERROR_GENERAL ((uint32_t)(-1))
|
||||||
#define WELS_THREAD_ERROR_WAIT_OBJECT_0 0
|
#define WELS_THREAD_ERROR_WAIT_OBJECT_0 0
|
||||||
#define WELS_THREAD_ERROR_WAIT_TIMEOUT ((uint32_t)0x00000102L)
|
#define WELS_THREAD_ERROR_WAIT_TIMEOUT ((uint32_t)0x00000102L)
|
||||||
#define WELS_THREAD_ERROR_WAIT_FAILED WELS_THREAD_ERROR_GENERAL
|
#define WELS_THREAD_ERROR_WAIT_FAILED WELS_THREAD_ERROR_GENERAL
|
||||||
|
|
||||||
WELS_THREAD_ERROR_CODE WelsMutexInit (WELS_MUTEX* mutex);
|
WELS_THREAD_ERROR_CODE WelsMutexInit (WELS_MUTEX* mutex);
|
||||||
WELS_THREAD_ERROR_CODE WelsMutexLock (WELS_MUTEX* mutex);
|
WELS_THREAD_ERROR_CODE WelsMutexLock (WELS_MUTEX* mutex);
|
||||||
WELS_THREAD_ERROR_CODE WelsMutexUnlock (WELS_MUTEX* mutex);
|
WELS_THREAD_ERROR_CODE WelsMutexUnlock (WELS_MUTEX* mutex);
|
||||||
WELS_THREAD_ERROR_CODE WelsMutexDestroy (WELS_MUTEX* mutex);
|
WELS_THREAD_ERROR_CODE WelsMutexDestroy (WELS_MUTEX* mutex);
|
||||||
|
|
||||||
WELS_THREAD_ERROR_CODE WelsEventOpen (WELS_EVENT* p_event, const char* event_name = NULL);
|
WELS_THREAD_ERROR_CODE WelsEventOpen (WELS_EVENT* p_event, const char* event_name);
|
||||||
WELS_THREAD_ERROR_CODE WelsEventClose (WELS_EVENT* event, const char* event_name = NULL);
|
WELS_THREAD_ERROR_CODE WelsEventClose (WELS_EVENT* event, const char* event_name);
|
||||||
|
|
||||||
WELS_THREAD_ERROR_CODE WelsEventSignal (WELS_EVENT* event);
|
WELS_THREAD_ERROR_CODE WelsEventSignal (WELS_EVENT* event);
|
||||||
WELS_THREAD_ERROR_CODE WelsEventWait (WELS_EVENT* event);
|
WELS_THREAD_ERROR_CODE WelsEventWait (WELS_EVENT* event);
|
||||||
WELS_THREAD_ERROR_CODE WelsEventWaitWithTimeOut (WELS_EVENT* event, uint32_t dwMilliseconds);
|
WELS_THREAD_ERROR_CODE WelsEventWaitWithTimeOut (WELS_EVENT* event, uint32_t dwMilliseconds);
|
||||||
@ -118,15 +117,12 @@ WELS_THREAD_ERROR_CODE WelsMultipleEventsWaitAllBlocking (uint32_t nCount, WE
|
|||||||
WELS_THREAD_ERROR_CODE WelsThreadCreate (WELS_THREAD_HANDLE* thread, LPWELS_THREAD_ROUTINE routine,
|
WELS_THREAD_ERROR_CODE WelsThreadCreate (WELS_THREAD_HANDLE* thread, LPWELS_THREAD_ROUTINE routine,
|
||||||
void* arg, WELS_THREAD_ATTR attr);
|
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_ERROR_CODE WelsThreadJoin (WELS_THREAD_HANDLE thread);
|
||||||
|
|
||||||
WELS_THREAD_HANDLE WelsThreadSelf();
|
WELS_THREAD_HANDLE WelsThreadSelf();
|
||||||
|
|
||||||
WELS_THREAD_ERROR_CODE WelsQueryLogicalProcessInfo (WelsLogicalProcessInfo* pInfo);
|
WELS_THREAD_ERROR_CODE WelsQueryLogicalProcessInfo (WelsLogicalProcessInfo* pInfo);
|
||||||
|
|
||||||
void WelsSleep (uint32_t dwMilliSecond);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -1,125 +0,0 @@
|
|||||||
/*!
|
|
||||||
* \copy
|
|
||||||
* Copyright (c) 2009-2015, 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 WelsThreadPool.h
|
|
||||||
*
|
|
||||||
* \brief Interfaces introduced in thread pool
|
|
||||||
*
|
|
||||||
* \date 5/09/2012 Created
|
|
||||||
*
|
|
||||||
*************************************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _WELS_THREAD_POOL_H_
|
|
||||||
#define _WELS_THREAD_POOL_H_
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include "WelsTask.h"
|
|
||||||
#include "WelsTaskThread.h"
|
|
||||||
#include "WelsCircleQueue.h"
|
|
||||||
#include "WelsList.h"
|
|
||||||
|
|
||||||
namespace WelsCommon {
|
|
||||||
|
|
||||||
|
|
||||||
class CWelsThreadPool : public CWelsThread, public IWelsTaskThreadSink {
|
|
||||||
public:
|
|
||||||
enum {
|
|
||||||
DEFAULT_THREAD_NUM = 4,
|
|
||||||
};
|
|
||||||
|
|
||||||
static WELS_THREAD_ERROR_CODE SetThreadNum (int32_t iMaxThreadNum);
|
|
||||||
|
|
||||||
static CWelsThreadPool& AddReference();
|
|
||||||
void RemoveInstance();
|
|
||||||
|
|
||||||
static bool IsReferenced();
|
|
||||||
|
|
||||||
//IWelsTaskThreadSink
|
|
||||||
virtual WELS_THREAD_ERROR_CODE OnTaskStart (CWelsTaskThread* pThread, IWelsTask* pTask);
|
|
||||||
virtual WELS_THREAD_ERROR_CODE OnTaskStop (CWelsTaskThread* pThread, IWelsTask* pTask);
|
|
||||||
|
|
||||||
// CWelsThread
|
|
||||||
virtual void ExecuteTask();
|
|
||||||
|
|
||||||
WELS_THREAD_ERROR_CODE QueueTask (IWelsTask* pTask);
|
|
||||||
int32_t GetThreadNum() const {
|
|
||||||
return m_iMaxThreadNum;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
protected:
|
|
||||||
WELS_THREAD_ERROR_CODE Init();
|
|
||||||
WELS_THREAD_ERROR_CODE Uninit();
|
|
||||||
|
|
||||||
WELS_THREAD_ERROR_CODE CreateIdleThread();
|
|
||||||
void DestroyThread (CWelsTaskThread* pThread);
|
|
||||||
WELS_THREAD_ERROR_CODE AddThreadToIdleQueue (CWelsTaskThread* pThread);
|
|
||||||
WELS_THREAD_ERROR_CODE AddThreadToBusyList (CWelsTaskThread* pThread);
|
|
||||||
WELS_THREAD_ERROR_CODE RemoveThreadFromBusyList (CWelsTaskThread* pThread);
|
|
||||||
void AddTaskToWaitedList (IWelsTask* pTask);
|
|
||||||
CWelsTaskThread* GetIdleThread();
|
|
||||||
IWelsTask* GetWaitedTask();
|
|
||||||
int32_t GetIdleThreadNum();
|
|
||||||
int32_t GetBusyThreadNum();
|
|
||||||
int32_t GetWaitedTaskNum();
|
|
||||||
void ClearWaitedTasks();
|
|
||||||
|
|
||||||
private:
|
|
||||||
CWelsThreadPool();
|
|
||||||
virtual ~CWelsThreadPool();
|
|
||||||
|
|
||||||
WELS_THREAD_ERROR_CODE StopAllRunning();
|
|
||||||
|
|
||||||
static int32_t m_iRefCount;
|
|
||||||
static CWelsLock m_cInitLock;
|
|
||||||
static int32_t m_iMaxThreadNum;
|
|
||||||
|
|
||||||
CWelsCircleQueue<IWelsTask>* m_cWaitedTasks;
|
|
||||||
CWelsCircleQueue<CWelsTaskThread>* m_cIdleThreads;
|
|
||||||
CWelsList<CWelsTaskThread>* m_cBusyThreads;
|
|
||||||
|
|
||||||
CWelsLock m_cLockPool;
|
|
||||||
CWelsLock m_cLockWaitedTasks;
|
|
||||||
CWelsLock m_cLockIdleTasks;
|
|
||||||
CWelsLock m_cLockBusyTasks;
|
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN (CWelsThreadPool);
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -38,12 +38,10 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Copy functions
|
* Copy functions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
void WelsCopy4x4_c (uint8_t* pDst, int32_t iStrideD, uint8_t* pSrc, int32_t iStrideS);
|
void WelsCopy4x4 (uint8_t* pDst, int32_t iStrideD, uint8_t* pSrc, int32_t iStrideS);
|
||||||
void WelsCopy8x4_c (uint8_t* pDst, int32_t iStrideD, uint8_t* pSrc, int32_t iStrideS);
|
|
||||||
void WelsCopy4x8_c (uint8_t* pDst, int32_t iStrideD, uint8_t* pSrc, int32_t iStrideS);
|
|
||||||
void WelsCopy8x8_c (uint8_t* pDst, int32_t iStrideD, uint8_t* pSrc, int32_t iStrideS);
|
void WelsCopy8x8_c (uint8_t* pDst, int32_t iStrideD, uint8_t* pSrc, int32_t iStrideS);
|
||||||
void WelsCopy8x16_c (uint8_t* pDst, int32_t iStrideD, uint8_t* pSrc, int32_t iStrideS); //
|
void WelsCopy8x16_c (uint8_t* pDst, int32_t iStrideD, uint8_t* pSrc, int32_t iStrideS); //
|
||||||
void WelsCopy16x8_c (uint8_t* pDst, int32_t iStrideD, uint8_t* pSrc, int32_t iStrideS); //
|
void WelsCopy16x8_c (uint8_t* pDst, int32_t iStrideD, uint8_t* pSrc, int32_t iStrideS); //
|
||||||
void WelsCopy16x16_c (uint8_t* pDst, int32_t iStrideD, uint8_t* pSrc, int32_t iStrideS);
|
void WelsCopy16x16_c (uint8_t* pDst, int32_t iStrideD, uint8_t* pSrc, int32_t iStrideS);
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
#if defined(__cplusplus)
|
||||||
|
@ -29,11 +29,11 @@
|
|||||||
* POSSIBILITY OF SUCH DAMAGE.
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* \file cpu.h
|
* \file cpu.h
|
||||||
*
|
*
|
||||||
* \brief CPU feature compatibility detection
|
* \brief CPU feature compatibility detection
|
||||||
*
|
*
|
||||||
* \date 04/29/2009 Created
|
* \date 04/29/2009 Created
|
||||||
*
|
*
|
||||||
*************************************************************************************
|
*************************************************************************************
|
||||||
*/
|
*/
|
||||||
@ -50,7 +50,7 @@ extern "C" {
|
|||||||
|
|
||||||
#if defined(X86_ASM)
|
#if defined(X86_ASM)
|
||||||
/*
|
/*
|
||||||
* cpuid support verify routine
|
* cpuid support verify routine
|
||||||
* return 0 if cpuid is not supported by cpu
|
* return 0 if cpuid is not supported by cpu
|
||||||
*/
|
*/
|
||||||
int32_t WelsCPUIdVerify();
|
int32_t WelsCPUIdVerify();
|
||||||
@ -63,7 +63,7 @@ int32_t WelsCPUSupportFMA (uint32_t eax, uint32_t ecx);
|
|||||||
void WelsEmms();
|
void WelsEmms();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* clear FPU registers states for potential float based calculation if support
|
* clear FPU registers states for potential float based calculation if support
|
||||||
*/
|
*/
|
||||||
void WelsCPURestore (const uint32_t kuiCPU);
|
void WelsCPURestore (const uint32_t kuiCPU);
|
||||||
|
|
||||||
|
@ -29,11 +29,11 @@
|
|||||||
* POSSIBILITY OF SUCH DAMAGE.
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* \file cpu_core.h
|
* \file cpu_core.h
|
||||||
*
|
*
|
||||||
* \brief cpu core feature detection
|
* \brief cpu core feature detection
|
||||||
*
|
*
|
||||||
* \date 4/24/2009 Created
|
* \date 4/24/2009 Created
|
||||||
*
|
*
|
||||||
*************************************************************************************
|
*************************************************************************************
|
||||||
*/
|
*/
|
||||||
@ -41,7 +41,7 @@
|
|||||||
#define WELS_CPU_CORE_FEATURE_DETECTION_H__
|
#define WELS_CPU_CORE_FEATURE_DETECTION_H__
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* WELS CPU feature flags
|
* WELS CPU feature flags
|
||||||
*/
|
*/
|
||||||
#define WELS_CPU_MMX 0x00000001 /* mmx */
|
#define WELS_CPU_MMX 0x00000001 /* mmx */
|
||||||
#define WELS_CPU_MMXEXT 0x00000002 /* mmx-ext*/
|
#define WELS_CPU_MMXEXT 0x00000002 /* mmx-ext*/
|
||||||
@ -56,23 +56,17 @@
|
|||||||
#define WELS_CPU_SSE42 0x00000400 /* sse 4.2 */
|
#define WELS_CPU_SSE42 0x00000400 /* sse 4.2 */
|
||||||
|
|
||||||
/* CPU features application extensive */
|
/* CPU features application extensive */
|
||||||
#define WELS_CPU_FPU 0x00001000 /* x87-FPU on chip */
|
#define WELS_CPU_AVX 0x00000800 /* Advanced Vector eXtentions */
|
||||||
#define WELS_CPU_HTT 0x00002000 /* Hyper-Threading Technology (HTT), Multi-threading enabled feature:
|
#define WELS_CPU_FPU 0x00001000 /* x87-FPU on chip */
|
||||||
physical processor package is capable of supporting more than one logic processor
|
#define WELS_CPU_HTT 0x00002000 /* Hyper-Threading Technology (HTT), Multi-threading enabled feature:
|
||||||
*/
|
physical processor package is capable of supporting more than one logic processor
|
||||||
#define WELS_CPU_CMOV 0x00004000 /* Conditional Move Instructions,
|
*/
|
||||||
also if x87-FPU is present at indicated by the CPUID.FPU feature bit, then FCOMI and FCMOV are supported
|
#define WELS_CPU_CMOV 0x00004000 /* Conditional Move Instructions,
|
||||||
*/
|
also if x87-FPU is present at indicated by the CPUID.FPU feature bit, then FCOMI and FCMOV are supported
|
||||||
#define WELS_CPU_MOVBE 0x00008000 /* MOVBE instruction */
|
*/
|
||||||
#define WELS_CPU_AES 0x00010000 /* AES instruction extensions */
|
#define WELS_CPU_MOVBE 0x00008000 /* MOVBE instruction */
|
||||||
#define WELS_CPU_FMA 0x00020000 /* AVX VEX FMA instruction sets */
|
#define WELS_CPU_AES 0x00010000 /* AES instruction extensions */
|
||||||
#define WELS_CPU_AVX 0x00000800 /* Advanced Vector eXtentions */
|
#define WELS_CPU_FMA 0x00020000 /* AVX VEX FMA instruction sets */
|
||||||
|
|
||||||
#ifdef HAVE_AVX2
|
|
||||||
#define WELS_CPU_AVX2 0x00040000 /* AVX2 */
|
|
||||||
#else
|
|
||||||
#define WELS_CPU_AVX2 0x00000000 /* !AVX2 */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define WELS_CPU_CACHELINE_16 0x10000000 /* CacheLine Size 16 */
|
#define WELS_CPU_CACHELINE_16 0x10000000 /* CacheLine Size 16 */
|
||||||
#define WELS_CPU_CACHELINE_32 0x20000000 /* CacheLine Size 32 */
|
#define WELS_CPU_CACHELINE_32 0x20000000 /* CacheLine Size 32 */
|
||||||
@ -85,7 +79,7 @@
|
|||||||
#define WELS_CPU_NEON 0x000004 /* NEON */
|
#define WELS_CPU_NEON 0x000004 /* NEON */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Interfaces for CPU core feature detection as below
|
* Interfaces for CPU core feature detection as below
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#endif//WELS_CPU_CORE_FEATURE_DETECTION_H__
|
#endif//WELS_CPU_CORE_FEATURE_DETECTION_H__
|
||||||
|
@ -29,11 +29,11 @@
|
|||||||
* POSSIBILITY OF SUCH DAMAGE.
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* \file crt_util_safe_x.h
|
* \file crt_util_safe_x.h
|
||||||
*
|
*
|
||||||
* \brief Safe CRT like util for cross platfroms support
|
* \brief Safe CRT like util for cross platfroms support
|
||||||
*
|
*
|
||||||
* \date 06/04/2010 Created
|
* \date 06/04/2010 Created
|
||||||
*
|
*
|
||||||
*************************************************************************************
|
*************************************************************************************
|
||||||
*/
|
*/
|
||||||
@ -79,7 +79,7 @@ typedef struct TagWelsTime {
|
|||||||
|
|
||||||
int32_t WelsSnprintf (char* buffer, int32_t sizeOfBuffer, const char* format, ...);
|
int32_t WelsSnprintf (char* buffer, int32_t sizeOfBuffer, const char* format, ...);
|
||||||
char* WelsStrncpy (char* dest, int32_t sizeInBytes, const char* src);
|
char* WelsStrncpy (char* dest, int32_t sizeInBytes, const char* src);
|
||||||
char* WelsStrcat (char* dest, uint32_t sizeInBytes, const char* src);
|
char* WelsStrcat (char* dest, int32_t sizeInBytes, const char* src);
|
||||||
int32_t WelsVsnprintf (char* buffer, int32_t sizeOfBuffer, const char* format, va_list argptr);
|
int32_t WelsVsnprintf (char* buffer, int32_t sizeOfBuffer, const char* format, va_list argptr);
|
||||||
|
|
||||||
WelsFileHandle* WelsFopen (const char* filename, const char* mode);
|
WelsFileHandle* WelsFopen (const char* filename, const char* mode);
|
||||||
|