Compare commits
512 Commits
openh264v1
...
v1.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
825ce5dcd9 | ||
|
|
6f9624790c | ||
|
|
ca0ed2a067 | ||
|
|
be97ccb45b | ||
|
|
6e56e80a8a | ||
|
|
4f7602e268 | ||
|
|
d6ff4304fa | ||
|
|
3cce92ea19 | ||
|
|
dcdcc7f3b8 | ||
|
|
273e1227a5 | ||
|
|
43c62d06eb | ||
|
|
5d6b20119a | ||
|
|
a594ddf3e7 | ||
|
|
0a3d4c4ebc | ||
|
|
57aae73d4c | ||
|
|
94a1d4426e | ||
|
|
23b5a61153 | ||
|
|
33e67427ab | ||
|
|
4e89e71e8f | ||
|
|
8d5863a170 | ||
|
|
97298de90a | ||
|
|
3c4279cdd8 | ||
|
|
452fb868c7 | ||
|
|
41720f8df5 | ||
|
|
769c38d4c4 | ||
|
|
195d13612c | ||
|
|
6c4f0d7d85 | ||
|
|
e415c3fe70 | ||
|
|
b17e9bb320 | ||
|
|
7720f2cc5d | ||
|
|
88b7a62f98 | ||
|
|
a765197b73 | ||
|
|
d720122a37 | ||
|
|
cbe7891300 | ||
|
|
5762cbb8fc | ||
|
|
1a78f69f2f | ||
|
|
d1a3bd3d33 | ||
|
|
89454f0cf9 | ||
|
|
9a0d56da97 | ||
|
|
d74c0f6ae6 | ||
|
|
9d182ee515 | ||
|
|
2479abf5c0 | ||
|
|
869c567f04 | ||
|
|
cdb7e5da61 | ||
|
|
46ee46c186 | ||
|
|
d9e0f2b023 | ||
|
|
39d725c113 | ||
|
|
cab92a3e36 | ||
|
|
ba535bda4d | ||
|
|
2ff61475d6 | ||
|
|
1e62aafcde | ||
|
|
4fc27714bd | ||
|
|
3ad4d9070e | ||
|
|
024ac63f15 | ||
|
|
614e898b67 | ||
|
|
3885bd8f0e | ||
|
|
b425450bc1 | ||
|
|
ad247a9a4a | ||
|
|
f9bab05b3a | ||
|
|
52419bd13e | ||
|
|
8c8cd50c96 | ||
|
|
68fed53687 | ||
|
|
b7c54242a9 | ||
|
|
04c2a7ac5c | ||
|
|
27a21edcc9 | ||
|
|
3593f2e3e7 | ||
|
|
007fb47004 | ||
|
|
0affe66f93 | ||
|
|
311272d341 | ||
|
|
efdefdba28 | ||
|
|
a3a0effc88 | ||
|
|
d875d923f8 | ||
|
|
6b1630cc90 | ||
|
|
3904c025cb | ||
|
|
72df20000b | ||
|
|
fd8d41dbb9 | ||
|
|
07fa3d1898 | ||
|
|
6673a5f71e | ||
|
|
e4b373a800 | ||
|
|
cf2cf9efd9 | ||
|
|
6ae38da3ab | ||
|
|
19c02bdfa8 | ||
|
|
bab0bf18f8 | ||
|
|
8945348c87 | ||
|
|
ed341048de | ||
|
|
73d27e9776 | ||
|
|
bef3d87f34 | ||
|
|
9f20c727d1 | ||
|
|
810d20a59d | ||
|
|
d0f9b218f4 | ||
|
|
ffebbdb9b2 | ||
|
|
4e57a46ca5 | ||
|
|
c618cb1eaf | ||
|
|
a3bdf4ffc9 | ||
|
|
147c9052b8 | ||
|
|
cfbf32b3fb | ||
|
|
f8d2ae42ef | ||
|
|
a59a989d9b | ||
|
|
06e56ecdd8 | ||
|
|
f6fb459a7f | ||
|
|
fd8db0451e | ||
|
|
ee2f87dbbc | ||
|
|
17df23c2eb | ||
|
|
480ff5acc2 | ||
|
|
66e38cc9ed | ||
|
|
c480ffdad5 | ||
|
|
84ca659f06 | ||
|
|
25cad576b3 | ||
|
|
f5b9d920ff | ||
|
|
64fa8a6b60 | ||
|
|
ac2de4cbab | ||
|
|
3ba0a9956a | ||
|
|
c4a446b43a | ||
|
|
880bf2d621 | ||
|
|
1d37250301 | ||
|
|
7e71714863 | ||
|
|
05684744c9 | ||
|
|
3ff145e839 | ||
|
|
25b723c413 | ||
|
|
ca96def4ff | ||
|
|
c213c6ba30 | ||
|
|
8538b22f23 | ||
|
|
399ca33284 | ||
|
|
4e54fd191b | ||
|
|
19dcff8616 | ||
|
|
68e92f9eb6 | ||
|
|
5c67f368c3 | ||
|
|
a6cc71208e | ||
|
|
58eba54e8c | ||
|
|
9d9c609aab | ||
|
|
958113073f | ||
|
|
37ae6505d4 | ||
|
|
c5091e73be | ||
|
|
8eafdfa598 | ||
|
|
e7cd53e81b | ||
|
|
f8d5f93b16 | ||
|
|
48f203929e | ||
|
|
b85a09163f | ||
|
|
49ce86c78a | ||
|
|
72862118f9 | ||
|
|
631ca210a8 | ||
|
|
b51ff51387 | ||
|
|
4001551027 | ||
|
|
458cc6b4fd | ||
|
|
522aa4457a | ||
|
|
311f7006fd | ||
|
|
9913b73cb1 | ||
|
|
9e7a19291c | ||
|
|
0fe477625c | ||
|
|
6b64efbf92 | ||
|
|
235f6e3474 | ||
|
|
77552551f7 | ||
|
|
679cc4ac6c | ||
|
|
c6a136c742 | ||
|
|
1a394d1432 | ||
|
|
bffbde9f45 | ||
|
|
84848bb7d3 | ||
|
|
bb43c1c9a9 | ||
|
|
f003fa1fe6 | ||
|
|
1df4cd43cc | ||
|
|
6f553c9742 | ||
|
|
79157ce632 | ||
|
|
a6df69c305 | ||
|
|
a1dbf6ab13 | ||
|
|
ef590de0dc | ||
|
|
684c42536d | ||
|
|
881667a533 | ||
|
|
4fc144b698 | ||
|
|
1b1ea2b9ef | ||
|
|
d63172db9b | ||
|
|
2f041c7a4b | ||
|
|
43dc6f01e1 | ||
|
|
61926f208c | ||
|
|
199d19a785 | ||
|
|
7c95ccc6a7 | ||
|
|
f2437f24b9 | ||
|
|
c287a9109f | ||
|
|
3735cfc1bd | ||
|
|
315d9315c4 | ||
|
|
7e8cde055f | ||
|
|
0227f87b7a | ||
|
|
d98fd57252 | ||
|
|
4ece8efaed | ||
|
|
cef43e30fe | ||
|
|
15124b1258 | ||
|
|
b5a01efa96 | ||
|
|
aa7eb5fd09 | ||
|
|
849a730608 | ||
|
|
24bd0b74ae | ||
|
|
c1cc195ab1 | ||
|
|
06ab5b1934 | ||
|
|
d4eff959ed | ||
|
|
77e01435c0 | ||
|
|
43e1c46756 | ||
|
|
3ff6bf8ac1 | ||
|
|
5809db9eff | ||
|
|
22e7750bb3 | ||
|
|
0187c84f29 | ||
|
|
c3710c4130 | ||
|
|
2361f7543b | ||
|
|
cafb91a66a | ||
|
|
cebf586c3a | ||
|
|
40ca34ae13 | ||
|
|
67b5a79c2e | ||
|
|
76c6ff4b0f | ||
|
|
0b23d0facb | ||
|
|
9b97138786 | ||
|
|
674af41108 | ||
|
|
8935bfaa91 | ||
|
|
770400103f | ||
|
|
6d4a628331 | ||
|
|
93af7bfc64 | ||
|
|
81f7b0c108 | ||
|
|
dcc3d90574 | ||
|
|
40e952f981 | ||
|
|
0163eb520d | ||
|
|
bac5511694 | ||
|
|
9b5902b94a | ||
|
|
035019f052 | ||
|
|
ac7fac9644 | ||
|
|
0951c8fc0c | ||
|
|
0c32465aac | ||
|
|
863dc78c25 | ||
|
|
d6f0dee0c4 | ||
|
|
ced2a8e4bc | ||
|
|
ddbd41cbc5 | ||
|
|
a4eea4c64d | ||
|
|
11c9f2037d | ||
|
|
a19974d009 | ||
|
|
7486bb1100 | ||
|
|
94815cf993 | ||
|
|
8da63eae33 | ||
|
|
441dc45e69 | ||
|
|
153a0311db | ||
|
|
dddb825bbd | ||
|
|
eb6fb7fc72 | ||
|
|
6047ff930e | ||
|
|
e6f838e331 | ||
|
|
fd9a9e521f | ||
|
|
3f839e367c | ||
|
|
7fb9e57f30 | ||
|
|
e3d8524c82 | ||
|
|
28fa2e7c98 | ||
|
|
47f1ac7307 | ||
|
|
462f56d413 | ||
|
|
b230a6deee | ||
|
|
3596b6ced0 | ||
|
|
d3dc48d1d1 | ||
|
|
f4054f2633 | ||
|
|
fc9203cb50 | ||
|
|
45d95d2f50 | ||
|
|
81ac3d2a9b | ||
|
|
464244ccbe | ||
|
|
955d27b3a2 | ||
|
|
e25a82b3d6 | ||
|
|
f69c9074e7 | ||
|
|
0f95fac4ca | ||
|
|
4b5e893fcc | ||
|
|
87107c50a3 | ||
|
|
f9448ced69 | ||
|
|
ef88889404 | ||
|
|
136e169c01 | ||
|
|
a893e22311 | ||
|
|
711f5cabe7 | ||
|
|
76863f977a | ||
|
|
b35f5797de | ||
|
|
1e34a61dd6 | ||
|
|
42384c0cb4 | ||
|
|
f82726d7ef | ||
|
|
d243608611 | ||
|
|
e14186b535 | ||
|
|
9d2e1a9384 | ||
|
|
dc833e19f4 | ||
|
|
2b26a28d15 | ||
|
|
3703ba16a4 | ||
|
|
186f4c0d29 | ||
|
|
0f9c2dbb12 | ||
|
|
e346bc5263 | ||
|
|
f2314151e8 | ||
|
|
2ac973474a | ||
|
|
a2b727fb6b | ||
|
|
681b1da698 | ||
|
|
493d254a4a | ||
|
|
49f8fe8c5c | ||
|
|
f7cd6e7aad | ||
|
|
57f4548daf | ||
|
|
febb3ebb9b | ||
|
|
5948e8af3f | ||
|
|
7b3bf074b3 | ||
|
|
6190c10de8 | ||
|
|
f8e5d3a7bf | ||
|
|
46f1c898c6 | ||
|
|
352f5eea7a | ||
|
|
2f6a986d7c | ||
|
|
38d2d64ede | ||
|
|
dacd22d695 | ||
|
|
03af36dc54 | ||
|
|
38cc9acdd3 | ||
|
|
c3702d9075 | ||
|
|
af417b5ae4 | ||
|
|
642b405f87 | ||
|
|
5f0ef6a5a9 | ||
|
|
0b85855e98 | ||
|
|
84f33aa8e4 | ||
|
|
439e51bc11 | ||
|
|
ef1098be9c | ||
|
|
a5707738b7 | ||
|
|
4ebf8266a1 | ||
|
|
00d0180f26 | ||
|
|
e8fafebd96 | ||
|
|
df16cd9d0c | ||
|
|
cff49f5e45 | ||
|
|
3aec3a2606 | ||
|
|
0dd0b06287 | ||
|
|
ed12e6aa46 | ||
|
|
3139fe7a88 | ||
|
|
11bf575892 | ||
|
|
5356249100 | ||
|
|
059e19074a | ||
|
|
11f0a11177 | ||
|
|
ecfd7df157 | ||
|
|
aa41dc43bd | ||
|
|
2ac06c4a61 | ||
|
|
2ec91a0bbe | ||
|
|
f68b0811f0 | ||
|
|
baf82f1b32 | ||
|
|
681919da8e | ||
|
|
8c663ffe66 | ||
|
|
a1bc5fa1b5 | ||
|
|
cd4a615c43 | ||
|
|
8dd5d483d4 | ||
|
|
e8fdd4cf75 | ||
|
|
eff4b3ae4d | ||
|
|
d2896038b8 | ||
|
|
4ee434691a | ||
|
|
d0d6842f73 | ||
|
|
adc7be9f01 | ||
|
|
4afb83e3b0 | ||
|
|
ae62909aab | ||
|
|
964e98fb76 | ||
|
|
3240a14baa | ||
|
|
8fb6677266 | ||
|
|
79276c38dd | ||
|
|
4335167792 | ||
|
|
39d490b23d | ||
|
|
933c477717 | ||
|
|
8e2d92e5c9 | ||
|
|
91bbd18d2e | ||
|
|
6543900747 | ||
|
|
e286144524 | ||
|
|
e58de20f3a | ||
|
|
b53f8909de | ||
|
|
30e510e307 | ||
|
|
b1a76aa936 | ||
|
|
7932845674 | ||
|
|
de624c0972 | ||
|
|
f78f395683 | ||
|
|
a22d976b4e | ||
|
|
6ba537bee5 | ||
|
|
8b3aa2d826 | ||
|
|
4d0c832b47 | ||
|
|
1c42743999 | ||
|
|
7624b360f0 | ||
|
|
a8286234bb | ||
|
|
d5a45ec513 | ||
|
|
a365b42d3b | ||
|
|
d215a5f879 | ||
|
|
ab1778a523 | ||
|
|
cf0ac5504b | ||
|
|
ed4db186a1 | ||
|
|
0b80b7fa79 | ||
|
|
4433740722 | ||
|
|
8253049383 | ||
|
|
300cceaabf | ||
|
|
06d92c4ed1 | ||
|
|
562f38afff | ||
|
|
33a7e02261 | ||
|
|
470246c20f | ||
|
|
910c64ef22 | ||
|
|
c12cf3b2a0 | ||
|
|
5397265021 | ||
|
|
7847f69eab | ||
|
|
e2425df06c | ||
|
|
78650363b8 | ||
|
|
9b11f25300 | ||
|
|
f3a5655754 | ||
|
|
69be28bd1b | ||
|
|
123b904f77 | ||
|
|
a555639dd2 | ||
|
|
0d1699b67f | ||
|
|
9ac7cd2816 | ||
|
|
3797aa1a14 | ||
|
|
811e20f0d9 | ||
|
|
71e59fd31c | ||
|
|
f26c7e3f4f | ||
|
|
7e3812c970 | ||
|
|
2627c05117 | ||
|
|
6b67aa3516 | ||
|
|
8d22836ecd | ||
|
|
df8623dce1 | ||
|
|
fa8e56e944 | ||
|
|
288e2b3cdf | ||
|
|
63e3c6588a | ||
|
|
a0320dac5d | ||
|
|
74b52e8a31 | ||
|
|
ef7cce3d14 | ||
|
|
a0e569da81 | ||
|
|
396249fedc | ||
|
|
cd026ef166 | ||
|
|
2db10df5c6 | ||
|
|
2a83a85eb7 | ||
|
|
948356993b | ||
|
|
990bdda615 | ||
|
|
22f04159bb | ||
|
|
04f066ae7c | ||
|
|
9aaeef9264 | ||
|
|
6966679f33 | ||
|
|
71c5acc7a1 | ||
|
|
b9058e4987 | ||
|
|
93e9694bc6 | ||
|
|
efdb0cd2e2 | ||
|
|
e63dad0b6c | ||
|
|
29bb1df645 | ||
|
|
f94a20d7b5 | ||
|
|
5c3e16842d | ||
|
|
27499895f7 | ||
|
|
c1a9beeab8 | ||
|
|
c9a6482fc6 | ||
|
|
9626596421 | ||
|
|
b7ea251e95 | ||
|
|
d7f3331c9d | ||
|
|
7f36b244f7 | ||
|
|
832bf7c45d | ||
|
|
d633f8584a | ||
|
|
aaedb508c3 | ||
|
|
333cf6aa97 | ||
|
|
b02f75f608 | ||
|
|
010e423b2b | ||
|
|
3632a0331c | ||
|
|
4a518655a6 | ||
|
|
c4fc6642cf | ||
|
|
2791929e03 | ||
|
|
b6b7bb7680 | ||
|
|
110ce9ceca | ||
|
|
b669801e89 | ||
|
|
3a37586970 | ||
|
|
d1123a8bb1 | ||
|
|
bc76a8f9b3 | ||
|
|
c36f864682 | ||
|
|
36cfb3bd32 | ||
|
|
4cdee3b2d1 | ||
|
|
bd560b474a | ||
|
|
d49e7208fb | ||
|
|
ee4166ebea | ||
|
|
3bc9b47465 | ||
|
|
1acb0fb89f | ||
|
|
0ee2562004 | ||
|
|
db476bac57 | ||
|
|
edb9872473 | ||
|
|
301ccb1081 | ||
|
|
c0c51eb73e | ||
|
|
e9610e465e | ||
|
|
b63b13e6f0 | ||
|
|
140a67dfc9 | ||
|
|
e02f5ba3cd | ||
|
|
cbc5f3bf4b | ||
|
|
99dc18c0ba | ||
|
|
79891067e9 | ||
|
|
a3800d205d | ||
|
|
da0f65ea0a | ||
|
|
6310017877 | ||
|
|
c72f82e7a7 | ||
|
|
0dc2c3b031 | ||
|
|
21691a6741 | ||
|
|
d4baad0dcb | ||
|
|
209c607020 | ||
|
|
d5c71dbe2f | ||
|
|
019fb9e20e | ||
|
|
0cafc565be | ||
|
|
eaf7d65518 | ||
|
|
0110e5df55 | ||
|
|
4edc5f60a1 | ||
|
|
7bb422803d | ||
|
|
2531e26da1 | ||
|
|
d070f9e7f2 | ||
|
|
1dd5a7a866 | ||
|
|
70e9ff3a33 | ||
|
|
17c14d44e2 | ||
|
|
a11fdcd647 | ||
|
|
beaf7c1893 | ||
|
|
e5eed1f65b | ||
|
|
ac0e5cb7b4 | ||
|
|
013de2602a | ||
|
|
b86e1f00b2 | ||
|
|
a29645cefe | ||
|
|
e465cc8bc3 | ||
|
|
fb52509cee | ||
|
|
9ccfea24a7 | ||
|
|
71617445df | ||
|
|
73ccb74414 | ||
|
|
821483a4e9 | ||
|
|
6bf65da869 | ||
|
|
569033c091 | ||
|
|
46c4335cb5 | ||
|
|
79f80ac7da | ||
|
|
3068814e90 | ||
|
|
45c2fff6b8 | ||
|
|
fb47e529fc | ||
|
|
53b79c0c1f | ||
|
|
2f53a08aba | ||
|
|
78771344b7 | ||
|
|
ae12fbde1c |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,7 +1,6 @@
|
||||
# Object files
|
||||
*.o
|
||||
*.obj
|
||||
codec/obj
|
||||
|
||||
# Dependency files
|
||||
*.d
|
||||
|
||||
31
.travis.yml
31
.travis.yml
@@ -1,15 +1,38 @@
|
||||
language: cpp
|
||||
|
||||
compiler:
|
||||
- g++
|
||||
- clang
|
||||
|
||||
before_install:
|
||||
- sudo apt-get update -qq
|
||||
- sudo apt-get install -qq nasm g++-4.6-multilib gcc-multilib libc6-dev-i386
|
||||
|
||||
install:
|
||||
- make gmp-bootstrap
|
||||
- make gtest-bootstrap
|
||||
|
||||
before_script:
|
||||
- WorkingDir=`pwd`
|
||||
- cd test/encoder_binary_comparison
|
||||
- ./run_PrepareAllTestData.sh 64
|
||||
- cd ${WorkingDir}
|
||||
|
||||
env:
|
||||
- TASK=UnitTest; TestParameter=""
|
||||
- TASK=BinaryCompare; TestParameter=BA_MW_D.264
|
||||
- TASK=BinaryCompare; TestParameter=LS_SVA_D.264
|
||||
- TASK=BinaryCompare; TestParameter=CVPCMNL1_SVA_C.264
|
||||
|
||||
matrix:
|
||||
exclude:
|
||||
- compiler: clang
|
||||
env: TASK=BinaryCompare; TestParameter=BA_MW_D.264
|
||||
- compiler: clang
|
||||
env: TASK=BinaryCompare; TestParameter=LS_SVA_D.264
|
||||
- compiler: clang
|
||||
env: TASK=BinaryCompare; TestParameter=CVPCMNL1_SVA_C.264
|
||||
script:
|
||||
- make -B ENABLE64BIT=Yes BUILDTYPE=Release all plugin test
|
||||
- make -B ENABLE64BIT=Yes BUILDTYPE=Debug all plugin test
|
||||
- make -B ENABLE64BIT=No BUILDTYPE=Release all plugin test
|
||||
- make -B ENABLE64BIT=No BUILDTYPE=Debug all plugin test
|
||||
- echo "currrent test is for ${TASK}"
|
||||
- echo "test parameter is ${TestParameter}"
|
||||
- ./run_Test.sh ${TASK} ${TestParameter}
|
||||
|
||||
@@ -44,8 +44,9 @@ Rory Zhang
|
||||
Volvet Zhang
|
||||
Ling Zhu
|
||||
James Zhu
|
||||
|
||||
|
||||
Dong Zhang
|
||||
Haibo Zhu
|
||||
Huade Shi
|
||||
|
||||
|
||||
|
||||
|
||||
125
Makefile
125
Makefile
@@ -1,3 +1,10 @@
|
||||
SRC_PATH=$(word 1, $(dir $(MAKEFILE_LIST)))
|
||||
vpath %.c $(SRC_PATH)
|
||||
vpath %.cc $(SRC_PATH)
|
||||
vpath %.cpp $(SRC_PATH)
|
||||
vpath %.asm $(SRC_PATH)
|
||||
vpath %.S $(SRC_PATH)
|
||||
|
||||
OS=$(shell uname | tr A-Z a-z | tr -d \\-[:digit:].)
|
||||
ARCH=$(shell uname -m)
|
||||
LIBPREFIX=lib
|
||||
@@ -17,15 +24,16 @@ SHARED=-shared
|
||||
OBJ=o
|
||||
PROJECT_NAME=openh264
|
||||
MODULE_NAME=gmpopenh264
|
||||
GMP_API_BRANCH=master
|
||||
CCASFLAGS=$(CFLAGS)
|
||||
|
||||
ifeq (,$(wildcard ./gmp-api))
|
||||
ifeq (,$(wildcard $(SRC_PATH)gmp-api))
|
||||
HAVE_GMP_API=No
|
||||
else
|
||||
HAVE_GMP_API=Yes
|
||||
endif
|
||||
|
||||
ifeq (,$(wildcard ./gtest))
|
||||
ifeq (,$(wildcard $(SRC_PATH)gtest))
|
||||
HAVE_GTEST=No
|
||||
else
|
||||
HAVE_GTEST=Yes
|
||||
@@ -45,7 +53,7 @@ CFLAGS += -fsanitize=address
|
||||
LDFLAGS += -fsanitize=address
|
||||
endif
|
||||
|
||||
include build/platform-$(OS).mk
|
||||
include $(SRC_PATH)build/platform-$(OS).mk
|
||||
|
||||
|
||||
CFLAGS +=
|
||||
@@ -67,62 +75,72 @@ ifneq ($(V),Yes)
|
||||
endif
|
||||
|
||||
|
||||
INCLUDES += -Icodec/api/svc -Icodec/common/inc
|
||||
INCLUDES += -I$(SRC_PATH)codec/api/svc -I$(SRC_PATH)codec/common/inc
|
||||
|
||||
DECODER_INCLUDES += \
|
||||
-Icodec/decoder/core/inc \
|
||||
-Icodec/decoder/plus/inc
|
||||
-I$(SRC_PATH)codec/decoder/core/inc \
|
||||
-I$(SRC_PATH)codec/decoder/plus/inc
|
||||
|
||||
ENCODER_INCLUDES += \
|
||||
-Icodec/encoder/core/inc \
|
||||
-Icodec/encoder/plus/inc \
|
||||
-Icodec/processing/interface
|
||||
-I$(SRC_PATH)codec/encoder/core/inc \
|
||||
-I$(SRC_PATH)codec/encoder/plus/inc \
|
||||
-I$(SRC_PATH)codec/processing/interface
|
||||
|
||||
PROCESSING_INCLUDES += \
|
||||
-Icodec/processing/interface \
|
||||
-Icodec/processing/src/common \
|
||||
-Icodec/processing/src/scrolldetection
|
||||
-I$(SRC_PATH)codec/processing/interface \
|
||||
-I$(SRC_PATH)codec/processing/src/common \
|
||||
-I$(SRC_PATH)codec/processing/src/adaptivequantization \
|
||||
-I$(SRC_PATH)codec/processing/src/downsample \
|
||||
-I$(SRC_PATH)codec/processing/src/scrolldetection \
|
||||
-I$(SRC_PATH)codec/processing/src/vaacalc
|
||||
|
||||
GTEST_INCLUDES += \
|
||||
-Igtest \
|
||||
-Igtest/include
|
||||
-I$(SRC_PATH)gtest \
|
||||
-I$(SRC_PATH)gtest/include
|
||||
|
||||
CODEC_UNITTEST_INCLUDES += \
|
||||
-Igtest/include \
|
||||
-Icodec/common/inc \
|
||||
-I$(SRC_PATH)gtest/include \
|
||||
-I$(SRC_PATH)codec/common/inc \
|
||||
|
||||
CONSOLE_COMMON_INCLUDES += \
|
||||
-Icodec/console/common/inc
|
||||
-I$(SRC_PATH)codec/console/common/inc
|
||||
|
||||
H264DEC_INCLUDES += $(DECODER_INCLUDES) $(CONSOLE_COMMON_INCLUDES) -Icodec/console/dec/inc
|
||||
H264DEC_INCLUDES += $(DECODER_INCLUDES) $(CONSOLE_COMMON_INCLUDES) -I$(SRC_PATH)codec/console/dec/inc
|
||||
H264DEC_LDFLAGS = $(LINK_LOCAL_DIR) $(call LINK_LIB,decoder) $(call LINK_LIB,common) $(call LINK_LIB,console_common)
|
||||
H264DEC_DEPS = $(LIBPREFIX)decoder.$(LIBSUFFIX) $(LIBPREFIX)common.$(LIBSUFFIX) $(LIBPREFIX)console_common.$(LIBSUFFIX)
|
||||
|
||||
H264ENC_INCLUDES += $(ENCODER_INCLUDES) $(CONSOLE_COMMON_INCLUDES) -Icodec/console/enc/inc
|
||||
H264ENC_INCLUDES += $(ENCODER_INCLUDES) $(CONSOLE_COMMON_INCLUDES) -I$(SRC_PATH)codec/console/enc/inc
|
||||
H264ENC_LDFLAGS = $(LINK_LOCAL_DIR) $(call LINK_LIB,encoder) $(call LINK_LIB,processing) $(call LINK_LIB,common) $(call LINK_LIB,console_common)
|
||||
H264ENC_DEPS = $(LIBPREFIX)encoder.$(LIBSUFFIX) $(LIBPREFIX)processing.$(LIBSUFFIX) $(LIBPREFIX)common.$(LIBSUFFIX) $(LIBPREFIX)console_common.$(LIBSUFFIX)
|
||||
|
||||
CODEC_UNITTEST_LDFLAGS = $(LINK_LOCAL_DIR) $(call LINK_LIB,gtest) $(call LINK_LIB,decoder) $(call LINK_LIB,encoder) $(call LINK_LIB,processing) $(call LINK_LIB,common) $(CODEC_UNITTEST_LDFLAGS_SUFFIX)
|
||||
CODEC_UNITTEST_DEPS = $(LIBPREFIX)gtest.$(LIBSUFFIX) $(LIBPREFIX)decoder.$(LIBSUFFIX) $(LIBPREFIX)encoder.$(LIBSUFFIX) $(LIBPREFIX)processing.$(LIBSUFFIX) $(LIBPREFIX)common.$(LIBSUFFIX)
|
||||
DECODER_UNITTEST_INCLUDES += $(CODEC_UNITTEST_INCLUDES) $(DECODER_INCLUDES) -Itest -Itest/decoder
|
||||
ENCODER_UNITTEST_INCLUDES += $(CODEC_UNITTEST_INCLUDES) $(ENCODER_INCLUDES) -Itest -Itest/encoder
|
||||
PROCESSING_UNITTEST_INCLUDES += $(CODEC_UNITTEST_INCLUDES) $(PROCESSING_INCLUDES) -Itest -Itest/processing
|
||||
API_TEST_INCLUDES += $(CODEC_UNITTEST_INCLUDES) -Itest -Itest/api
|
||||
COMMON_UNITTEST_INCLUDES += $(CODEC_UNITTEST_INCLUDES) $(DECODER_INCLUDES) -Itest -Itest/common
|
||||
MODULE_INCLUDES += -Igmp-api
|
||||
DECODER_UNITTEST_INCLUDES += $(CODEC_UNITTEST_INCLUDES) $(DECODER_INCLUDES) -I$(SRC_PATH)test -I$(SRC_PATH)test/decoder
|
||||
ENCODER_UNITTEST_INCLUDES += $(CODEC_UNITTEST_INCLUDES) $(ENCODER_INCLUDES) -I$(SRC_PATH)test -I$(SRC_PATH)test/encoder
|
||||
PROCESSING_UNITTEST_INCLUDES += $(CODEC_UNITTEST_INCLUDES) $(PROCESSING_INCLUDES) -I$(SRC_PATH)test -I$(SRC_PATH)test/processing
|
||||
API_TEST_INCLUDES += $(CODEC_UNITTEST_INCLUDES) -I$(SRC_PATH)test -I$(SRC_PATH)test/api
|
||||
COMMON_UNITTEST_INCLUDES += $(CODEC_UNITTEST_INCLUDES) $(DECODER_INCLUDES) -I$(SRC_PATH)test -I$(SRC_PATH)test/common
|
||||
MODULE_INCLUDES += -I$(SRC_PATH)gmp-api
|
||||
|
||||
.PHONY: test gtest-bootstrap clean
|
||||
|
||||
all: libraries binaries
|
||||
all: libraries binaries
|
||||
|
||||
generate-version:
|
||||
$(QUIET)cd $(SRC_PATH) && sh ./codec/common/generate_version.sh
|
||||
|
||||
codec/decoder/plus/src/welsDecoderExt.$(OBJ): | generate-version
|
||||
codec/encoder/plus/src/welsEncoderExt.$(OBJ): | generate-version
|
||||
|
||||
clean:
|
||||
ifeq (android,$(OS))
|
||||
clean: clean_Android
|
||||
endif
|
||||
$(QUIET)rm -f $(OBJS) $(OBJS:.$(OBJ)=.d) $(LIBRARIES) $(BINARIES)
|
||||
$(QUIET)rm -f $(OBJS) $(OBJS:.$(OBJ)=.d) $(OBJS:.$(OBJ)=.obj) $(LIBRARIES) $(BINARIES) *.lib *.a *.dylib *.dll *.so
|
||||
|
||||
gmp-bootstrap:
|
||||
git clone https://github.com/mozilla/gmp-api gmp-api
|
||||
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)
|
||||
|
||||
gtest-bootstrap:
|
||||
svn co https://googletest.googlecode.com/svn/trunk/ gtest
|
||||
@@ -142,20 +160,20 @@ test:
|
||||
@echo "You do not have gtest. Run make gtest-bootstrap to get gtest"
|
||||
endif
|
||||
|
||||
include codec/common/targets.mk
|
||||
include codec/decoder/targets.mk
|
||||
include codec/encoder/targets.mk
|
||||
include codec/processing/targets.mk
|
||||
include $(SRC_PATH)codec/common/targets.mk
|
||||
include $(SRC_PATH)codec/decoder/targets.mk
|
||||
include $(SRC_PATH)codec/encoder/targets.mk
|
||||
include $(SRC_PATH)codec/processing/targets.mk
|
||||
|
||||
ifeq ($(HAVE_GMP_API),Yes)
|
||||
include module/targets.mk
|
||||
include $(SRC_PATH)module/targets.mk
|
||||
endif
|
||||
|
||||
ifneq (android, $(OS))
|
||||
ifneq (ios, $(OS))
|
||||
include codec/console/dec/targets.mk
|
||||
include codec/console/enc/targets.mk
|
||||
include codec/console/common/targets.mk
|
||||
include $(SRC_PATH)codec/console/dec/targets.mk
|
||||
include $(SRC_PATH)codec/console/enc/targets.mk
|
||||
include $(SRC_PATH)codec/console/common/targets.mk
|
||||
endif
|
||||
endif
|
||||
|
||||
@@ -173,7 +191,7 @@ $(LIBPREFIX)$(PROJECT_NAME).$(LIBSUFFIX): $(ENCODER_OBJS) $(DECODER_OBJS) $(PROC
|
||||
|
||||
$(LIBPREFIX)$(PROJECT_NAME).$(SHAREDLIBSUFFIX): $(ENCODER_OBJS) $(DECODER_OBJS) $(PROCESSING_OBJS) $(COMMON_OBJS)
|
||||
$(QUIET)rm -f $@
|
||||
$(QUIET_CXX)$(CXX) $(SHARED) $(LDFLAGS) $(CXX_LINK_O) $+ $(SHLDFLAGS)
|
||||
$(QUIET_CXX)$(CXX) $(SHARED) $(CXX_LINK_O) $+ $(LDFLAGS) $(SHLDFLAGS)
|
||||
|
||||
ifeq ($(HAVE_GMP_API),Yes)
|
||||
plugin: $(LIBPREFIX)$(MODULE_NAME).$(SHAREDLIBSUFFIX)
|
||||
@@ -186,7 +204,7 @@ endif
|
||||
|
||||
$(LIBPREFIX)$(MODULE_NAME).$(SHAREDLIBSUFFIX): $(MODULE_OBJS) $(ENCODER_OBJS) $(DECODER_OBJS) $(PROCESSING_OBJS) $(COMMON_OBJS)
|
||||
$(QUIET)rm -f $@
|
||||
$(QUIET_CXX)$(CXX) $(SHARED) $(LDFLAGS) $(CXX_LINK_O) $+ $(SHLDFLAGS) $(MODULE_LDFLAGS)
|
||||
$(QUIET_CXX)$(CXX) $(SHARED) $(CXX_LINK_O) $+ $(LDFLAGS) $(SHLDFLAGS) $(MODULE_LDFLAGS)
|
||||
|
||||
install-headers:
|
||||
mkdir -p $(PREFIX)/include/wels
|
||||
@@ -207,12 +225,12 @@ install: install-static install-shared
|
||||
@:
|
||||
|
||||
ifeq ($(HAVE_GTEST),Yes)
|
||||
include build/gtest-targets.mk
|
||||
include test/api/targets.mk
|
||||
include test/decoder/targets.mk
|
||||
include test/encoder/targets.mk
|
||||
include test/processing/targets.mk
|
||||
include test/common/targets.mk
|
||||
include $(SRC_PATH)build/gtest-targets.mk
|
||||
include $(SRC_PATH)test/api/targets.mk
|
||||
include $(SRC_PATH)test/decoder/targets.mk
|
||||
include $(SRC_PATH)test/encoder/targets.mk
|
||||
include $(SRC_PATH)test/processing/targets.mk
|
||||
include $(SRC_PATH)test/common/targets.mk
|
||||
|
||||
LIBRARIES += $(LIBPREFIX)ut.$(LIBSUFFIX)
|
||||
$(LIBPREFIX)ut.$(LIBSUFFIX): $(DECODER_UNITTEST_OBJS) $(ENCODER_UNITTEST_OBJS) $(PROCESSING_UNITTEST_OBJS) $(COMMON_UNITTEST_OBJS) $(API_TEST_OBJS)
|
||||
@@ -223,7 +241,7 @@ $(LIBPREFIX)ut.$(LIBSUFFIX): $(DECODER_UNITTEST_OBJS) $(ENCODER_UNITTEST_OBJS) $
|
||||
LIBRARIES +=$(LIBPREFIX)ut.$(SHAREDLIBSUFFIX)
|
||||
$(LIBPREFIX)ut.$(SHAREDLIBSUFFIX): $(DECODER_UNITTEST_OBJS) $(ENCODER_UNITTEST_OBJS) $(PROCESSING_UNITTEST_OBJS) $(API_TEST_OBJS) $(COMMON_UNITTEST_OBJS) $(CODEC_UNITTEST_DEPS)
|
||||
$(QUIET)rm -f $@
|
||||
$(QUIET_CXX)$(CXX) $(SHARED) $(LDFLAGS) $(CXX_LINK_O) $+ $(CODEC_UNITTEST_LDFLAGS)
|
||||
$(QUIET_CXX)$(CXX) $(SHARED) $(CXX_LINK_O) $+ $(LDFLAGS) $(CODEC_UNITTEST_LDFLAGS)
|
||||
|
||||
binaries: codec_unittest$(EXEEXT)
|
||||
BINARIES += codec_unittest$(EXEEXT)
|
||||
@@ -233,6 +251,7 @@ codec_unittest$(EXEEXT): $(LIBPREFIX)ut.$(LIBSUFFIX) $(LIBPREFIX)gtest.$(LIBSUFF
|
||||
|
||||
else
|
||||
ifeq (android,$(OS))
|
||||
ifeq (./,$(SRC_PATH))
|
||||
codec_unittest$(EXEEXT): $(LIBPREFIX)ut.$(SHAREDLIBSUFFIX)
|
||||
cd ./test/build/android && $(NDKROOT)/ndk-build -B APP_ABI=$(APP_ABI) && android update project -t $(TARGET) -p . && ant debug
|
||||
|
||||
@@ -241,10 +260,17 @@ clean_Android_ut:
|
||||
-cd ./test/build/android && $(NDKROOT)/ndk-build APP_ABI=$(APP_ABI) clean && ant clean
|
||||
|
||||
else
|
||||
codec_unittest$(EXEEXT): $(DECODER_UNITTEST_OBJS) $(ENCODER_UNITTEST_OBJS) $(PROCESSING_UNITTEST_OBJS) $(API_TEST_OBJS) $(COMMON_UNITTEST_OBJS) $(CODEC_UNITTEST_DEPS)
|
||||
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
|
||||
$(QUIET)rm -f $@
|
||||
$(QUIET_CXX)$(CXX) $(CXX_LINK_O) $+ $(CODEC_UNITTEST_LDFLAGS) $(LDFLAGS)
|
||||
|
||||
res:
|
||||
$(QUIET)if [ ! -e res ]; then ln -s $(SRC_PATH)res .; fi
|
||||
|
||||
endif
|
||||
endif
|
||||
|
||||
@@ -254,3 +280,10 @@ binaries:
|
||||
endif
|
||||
|
||||
-include $(OBJS:.$(OBJ)=.d)
|
||||
|
||||
OBJDIRS = $(sort $(dir $(OBJS)))
|
||||
|
||||
$(OBJDIRS):
|
||||
$(QUIET)mkdir -p $@
|
||||
|
||||
$(OBJS): | $(OBJDIRS)
|
||||
|
||||
BIN
OpenH264_API_v1.2.0.docx
Normal file
BIN
OpenH264_API_v1.2.0.docx
Normal file
Binary file not shown.
@@ -64,14 +64,13 @@ The codec and demo can be built by
|
||||
'make OS=android NDKROOT=**ANDROID_NDK** TARGET= **ANDROID_TARGET**'
|
||||
|
||||
Valid **ANDROID_TARGET** can be found in **ANDROID_SDK**/platforms, such as android-12.
|
||||
You can also set ARCH, NDKLEVEL, GCCVERSION 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 only arm and x86 are supported, the default is arm.
|
||||
NDKLEVEL specifies android api level, the api level can be 12-19, the default is 12.
|
||||
GCCVERSION specifies which gcc in NDK is used, the default is 4.8.
|
||||
|
||||
By default these commands build for the armeabi-v7a ABI. To build for the other android
|
||||
ABIs, add "ARCH=mips" or "ARCH=x86". To build for the older armeabi ABI (which has
|
||||
armv5te as baseline), add "APP_ABI=armeabi" (ARCH=arm is implicit).
|
||||
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).
|
||||
|
||||
For iOS Builds
|
||||
--------------
|
||||
|
||||
42
RELEASES
42
RELEASES
@@ -1,9 +1,51 @@
|
||||
|
||||
Releases
|
||||
-----------
|
||||
v1.2.0
|
||||
------
|
||||
- Add and modify encoder APIs related to rate control and screen content encoding
|
||||
- Remove PauseFrame in encoder APIs
|
||||
- Improve rate control and compression ratio for screen content encoding
|
||||
- Improve error concealment algorithm
|
||||
- Improve validation of input parameters
|
||||
- Add ARM64 assembly
|
||||
- bug fixes
|
||||
|
||||
-----------
|
||||
v1.1.0
|
||||
------
|
||||
- Modify some APIs (see API doc for detail)
|
||||
- Improve the compression ratio of screen content encoding
|
||||
- ARM64 assembly support for most of core functions in encoder & decoder
|
||||
- Modify error concealment logic to always return decoding error info until IDR picture comes
|
||||
- fix some bugs
|
||||
|
||||
|
||||
Binaries
|
||||
-----------
|
||||
These binary releases are distributed under this license:
|
||||
http://www.openh264.org/BINARY_LICENSE.txt
|
||||
|
||||
v1.2.0
|
||||
------
|
||||
http://ciscobinary.openh264.org/libopenh264-1.2.0-android19.so.bz2
|
||||
http://ciscobinary.openh264.org/libopenh264-1.2.0-linux32.so.bz2
|
||||
http://ciscobinary.openh264.org/libopenh264-1.2.0-linux64.so.bz2
|
||||
http://ciscobinary.openh264.org/libopenh264-1.2.0-osx32.dylib.bz2
|
||||
http://ciscobinary.openh264.org/libopenh264-1.2.0-osx64.dylib.bz2
|
||||
http://ciscobinary.openh264.org/openh264-1.2.0-win32msvc.dll.bz2
|
||||
http://ciscobinary.openh264.org/openh264-1.2.0-win64msvc.dll.bz2
|
||||
|
||||
v1.1.0
|
||||
------
|
||||
http://ciscobinary.openh264.org/libopenh264-1.1.0-android19.so.bz2
|
||||
http://ciscobinary.openh264.org/libopenh264-1.1.0-linux32.so.bz2
|
||||
http://ciscobinary.openh264.org/libopenh264-1.1.0-linux64.so.bz2
|
||||
http://ciscobinary.openh264.org/libopenh264-1.1.0-osx32.dylib.bz2
|
||||
http://ciscobinary.openh264.org/libopenh264-1.1.0-osx64.dylib.bz2
|
||||
http://ciscobinary.openh264.org/openh264-1.1.0-win32msvc.dll.bz2
|
||||
http://ciscobinary.openh264.org/openh264-1.1.0-win64msvc.dll.bz2
|
||||
|
||||
v1.0.0
|
||||
------
|
||||
|
||||
|
||||
13
autotest/performanceTest/.gitignore
vendored
Normal file
13
autotest/performanceTest/.gitignore
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
#performance test resource folder
|
||||
./EncoderPerfTestRes
|
||||
./DecoderPerfTestRes
|
||||
./DecoderPerfTestRes/*.*
|
||||
./EncoderPerfTestRes/*.*
|
||||
#performance test result folder
|
||||
./TestResultCSV
|
||||
#
|
||||
.DS_Store
|
||||
#.
|
||||
./android/report
|
||||
./ios/report
|
||||
|
||||
180
autotest/performanceTest/android/run_AutoTest_android.sh
Normal file
180
autotest/performanceTest/android/run_AutoTest_android.sh
Normal file
@@ -0,0 +1,180 @@
|
||||
#!/bin/bash
|
||||
|
||||
AUTO_TEST_ANDROID_PATH=`pwd`
|
||||
AUTO_TEST_SRC_PATH="../../../"
|
||||
AUTO_TEST_RES_PATH="${AUTO_TEST_ANDROID_PATH}/report"
|
||||
mkdir -p ${AUTO_TEST_RES_PATH}
|
||||
#Prepare android build enviroment
|
||||
echo please set the enviroment variable as:
|
||||
echo export ANDROID_HOME="path of android sdk"
|
||||
echo export ANDROID_NDK_HOME="path of android ndk"
|
||||
ANDROID_SDK_PATH=${ANDROID_HOME}
|
||||
ANDROID_NDK_PATH=${ANDROID_NDK_HOME}
|
||||
ANDROID_MAKE_PARAMS="OS=android NDKROOT=${ANDROID_NDK_PATH} TARGET=android-19"
|
||||
|
||||
if [ "#${ANDROID_SDK_PATH}" = "#" ]
|
||||
then
|
||||
echo Please set ANDROID_HOME with the path of Android SDK
|
||||
exit 1
|
||||
fi
|
||||
if [ "#${ANDROID_NDK_PATH}" = "#" ]
|
||||
then
|
||||
echo Please set ANDROID_NDK_HOME with the path of Android NDK
|
||||
exit 1
|
||||
fi
|
||||
#make build
|
||||
cd ${AUTO_TEST_SRC_PATH}
|
||||
find ./ -name *.o -exec rm -f {} \;
|
||||
find ./ -name *.d -exec rm -f {} \;
|
||||
make $ANDROID_MAKE_PARAMS
|
||||
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo Build error,check with the trace of make
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ENCDEC=$1
|
||||
#find apk
|
||||
if [ ${ENCDEC} = "enc" ]
|
||||
then
|
||||
echo Start to find enc apk
|
||||
apk_name=`find ./ -name WelsEncTest-debug.apk`
|
||||
if [ "#${apk_name}" = "#" ]
|
||||
then
|
||||
echo Fail to find encoder APK.
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo Start to find dec apk
|
||||
apk_name=`find ./ -name WelsDecTest-debug.apk`
|
||||
if [ "#${apk_name}" = "#" ]
|
||||
then
|
||||
echo Fail to find decoder APK.
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
#prepare devices
|
||||
ADB=${ANDROID_SDK_PATH}/platform-tools/adb
|
||||
|
||||
#get devices
|
||||
devices=`$ADB devices | awk -F" " '/\tdevice/{print $1}'`
|
||||
if [ "#$devices" = "#" ];then
|
||||
echo "Have not any android devices."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#run apk
|
||||
run_apk() {
|
||||
local apk=$1;
|
||||
local rand=` date +%s`
|
||||
|
||||
if [[ "${apk}" =~ "WelsDecTest-debug.apk" ]]
|
||||
then
|
||||
apk_id="com.wels.dec"
|
||||
apk_main="com.wels.dec/.WelsDecTest"
|
||||
test_path="/sdcard/welsdec"
|
||||
log_grep_params="welsdec"
|
||||
test_res=${AUTO_TEST_ANDROID_PATH}/../DecoderPerfTestRes
|
||||
report_file=${AUTO_TEST_RES_PATH}/decPerf
|
||||
|
||||
fi
|
||||
if [[ "${apk}" =~ "WelsEncTest-debug.apk" ]]
|
||||
then
|
||||
apk_id="com.wels.enc"
|
||||
apk_main="com.wels.enc/.WelsEncTest"
|
||||
test_path="/sdcard/welsenc"
|
||||
log_grep_params="welsenc"
|
||||
test_res=${AUTO_TEST_ANDROID_PATH}/../EncoderPerfTestRes
|
||||
report_file=${AUTO_TEST_RES_PATH}/encPerf
|
||||
fi
|
||||
space="limit"
|
||||
for dev in $devices; do
|
||||
dev_info_file=${AUTO_TEST_RES_PATH}/${dev}.log
|
||||
$ADB -s $dev uninstall ${apk_id}
|
||||
$ADB -s $dev install -r ${apk}
|
||||
#TODO: output more info about android device such as name,cpu,memory,and also power comsumption.
|
||||
#echo `$ADB -s $dev shell cat /system/build.prop |grep ro.product.model | awk -F"=" '{print $2}'`>${dev_info_file}
|
||||
#push resources
|
||||
#For limited devices space
|
||||
if [ ${space} = "limit" ]
|
||||
then
|
||||
test_res_bak=${test_res}_bak
|
||||
mv ${test_res} ${test_res_bak}
|
||||
mkdir -p ${test_res}
|
||||
test_case=`ls ${test_res_bak}`
|
||||
for case in ${test_case}
|
||||
do
|
||||
echo ${case}
|
||||
cp -r ${test_res_bak}/${case} ${test_res}/.
|
||||
$ADB -s $dev push ${test_res} ${test_path}
|
||||
#before start logcat,kill logcat
|
||||
pid=`$ADB -s $dev shell ps | grep logcat | awk '{print $2;}'`
|
||||
[ "#$pid" != "#" ] && $ADB -s $dev shell kill $pid >/dev/null
|
||||
$ADB -s $dev logcat -c
|
||||
$ADB -s $dev logcat |grep ${log_grep_params} >>${report_file}_${dev}_${rand}.log &
|
||||
$ADB -s $dev shell am start -n ${apk_main}
|
||||
# check whetehr the app is finished every 2 sec
|
||||
for (( ; ; )); do
|
||||
$ADB -s $dev shell ps | grep ${apk_id}
|
||||
if [ $? -ne 0 ]; then
|
||||
sleep 2
|
||||
$ADB -s $dev shell ps | grep ${apk_id}
|
||||
[ $? -ne 0 ] && break
|
||||
fi
|
||||
sleep 2
|
||||
done
|
||||
|
||||
# kill logcat
|
||||
pid=`$ADB -s $dev shell ps | grep logcat | awk '{print $2;}'`
|
||||
[ "#$pid" != "#" ] && $ADB -s $dev shell kill $pid >/dev/null
|
||||
|
||||
#delete the res
|
||||
$ADB -s $dev shell rm -rf ${test_path}
|
||||
rm -rf ${test_res}/${case}
|
||||
done
|
||||
rm -rf ${test_res}
|
||||
mv ${test_res_bak} ${test_res}
|
||||
else
|
||||
$ADB -s $dev push ${test_res} ${test_path}
|
||||
#before start logcat,kill logcat
|
||||
pid=`$ADB -s $dev shell ps | grep logcat | awk '{print $2;}'`
|
||||
[ "#$pid" != "#" ] && $ADB -s $dev shell kill $pid >/dev/null
|
||||
$ADB -s $dev logcat -c
|
||||
$ADB -s $dev logcat |grep ${log_grep_params} >${report_file}_${dev}_${rand}.log &
|
||||
$ADB -s $dev shell am start -n ${apk_main}
|
||||
# check whetehr the app is finished every 2 sec
|
||||
for (( ; ; )); do
|
||||
$ADB -s $dev shell ps | grep ${apk_id}
|
||||
if [ $? -ne 0 ]; then
|
||||
sleep 2
|
||||
$ADB -s $dev shell ps | grep ${apk_idi}
|
||||
[ $? -ne 0 ] && break
|
||||
fi
|
||||
sleep 2
|
||||
done
|
||||
|
||||
# kill logcat
|
||||
pid=`$ADB -s $dev shell ps | grep logcat | awk '{print $2;}'`
|
||||
[ "#$pid" != "#" ] && $ADB -s $dev shell kill $pid >/dev/null
|
||||
|
||||
#delete the res
|
||||
$ADB -s $dev shell rm -rf ${test_path}
|
||||
fi
|
||||
|
||||
done
|
||||
}
|
||||
for apk in ${apk_name};do
|
||||
run_apk $apk;
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo There is something wrong happened when run ${apk_name}
|
||||
exit 1
|
||||
else
|
||||
echo Finished $ENCDEC performance test on android
|
||||
echo The test result is at ./android/report/xxx.log
|
||||
echo xxxxxxxxxxxxxxxAndroid $ENCDEC Endxxxxxxxxxxxxxxxx
|
||||
fi
|
||||
done
|
||||
|
||||
BIN
autotest/performanceTest/ios/fruitstrap
Executable file
BIN
autotest/performanceTest/ios/fruitstrap
Executable file
Binary file not shown.
BIN
autotest/performanceTest/ios/iFileTransfer
Executable file
BIN
autotest/performanceTest/ios/iFileTransfer
Executable file
Binary file not shown.
193
autotest/performanceTest/ios/run_AutoTest_ios.sh
Normal file
193
autotest/performanceTest/ios/run_AutoTest_ios.sh
Normal file
@@ -0,0 +1,193 @@
|
||||
#!/bin/bash
|
||||
|
||||
##############################################################
|
||||
#Build ios test ref app
|
||||
|
||||
#set the default configuration
|
||||
CODEC_TEST_IOS_ARCH="armv7 armv7s arm64"
|
||||
CODEC_TEST_IOS_PLATFORM="iphoneos"
|
||||
CODEC_TEST_IOS_DEBUG_RELEASE="Release"
|
||||
CODEC_TEST_IOS_REPORT_SUBFOLDER="release"
|
||||
|
||||
|
||||
buildXcodeProject()
|
||||
{
|
||||
xcodebuild ARCHS="${CODEC_TEST_IOS_ARCH}" VALID_ARCHS="${CODEC_TEST_IOS_ARCH}" ONLY_ACTIVE_ARCH=YES -project $1 -target $2 -configuration $3 -sdk ${CODEC_TEST_IOS_PLATFORM} clean build
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "build $1 $3 successfully"
|
||||
else
|
||||
echo "build $1 $3 fail"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
|
||||
iosPerformanceTest()
|
||||
{
|
||||
|
||||
if [ $# -gt 2 ]; then
|
||||
echo "Please use command $0 [enc/dec] [release/debug]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for PARAM in $*; do
|
||||
if [ "enc" = "${PARAM}" ]; then
|
||||
CODEC_TEST_XCODE_PROJECT_NAME="${AUTO_TEST_SRC_PATH}/codec/build/iOS/enc/encDemo/encDemo.xcodeproj"
|
||||
CODEC_TEST_IOS_PROJECT_NAME="encDemo"
|
||||
CODEC_TEST_IOS_PROJECT_PATH="${AUTO_TEST_SRC_PATH}/codec/build/iOS/enc/encDemo/build"
|
||||
CODEC_TEST_IOS_APP=${CODEC_TEST_IOS_PROJECT_PATH}/${CODEC_TEST_IOS_DEBUG_RELEASE}-iphoneos/${CODEC_TEST_IOS_PROJECT_NAME}.app
|
||||
CODEC_TEST_IOS_APP_ID="cisco.encDemo"
|
||||
CODEC_TEST_RES=${AUTO_TEST_IOS_PATH}/../EncoderPerfTestRes
|
||||
CODEC_TEST_LOG="encPerf"
|
||||
elif [ "dec" = "${PARAM}" ]; then
|
||||
CODEC_TEST_XCODE_PROJECT_NAME="${AUTO_TEST_SRC_PATH}/codec/build/iOS/dec/demo/demo.xcodeproj/"
|
||||
CODEC_TEST_IOS_PROJECT_NAME="demo"
|
||||
CODEC_TEST_IOS_PROJECT_PATH="${AUTO_TEST_SRC_PATH}/codec/build/iOS/dec/demo/build"
|
||||
CODEC_TEST_IOS_APP=${CODEC_TEST_IOS_PROJECT_PATH}/${CODEC_TEST_IOS_DEBUG_RELEASE}-iphoneos/${CODEC_TEST_IOS_PROJECT_NAME}.app
|
||||
CODEC_TEST_IOS_APP_ID="hf.cisco.demo"
|
||||
CODEC_TEST_RES=${AUTO_TEST_IOS_PATH}/../DecoderPerfTestRes
|
||||
CODEC_TEST_LOG="decPerf"
|
||||
elif [ "release" = "${PARAM}" ]; then
|
||||
CODEC_TEST_IOS_DEBUG_RELEASE="Release"
|
||||
CODEC_TEST_IOS_REPORT_SUBFOLDER="release"
|
||||
elif [ "debug" = "${PARAM}" ]; then
|
||||
CODEC_TEST_IOS_DEBUG_RELEASE="Debug"
|
||||
CODEC_TEST_IOS_REPORT_SUBFOLDER="debug"
|
||||
else
|
||||
echo parameters are illegal!!!, please have a check.
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Codec test will run on ${CODEC_TEST_IOS_PLATFORM} with ${CODEC_TEST_IOS_DEBUG_RELEASE}"
|
||||
buildXcodeProject ${CODEC_TEST_XCODE_PROJECT_NAME} ${CODEC_TEST_IOS_PROJECT_NAME} ${CODEC_TEST_IOS_DEBUG_RELEASE} ${CODEC_TEST_IOS_PLATFORM}
|
||||
|
||||
|
||||
|
||||
|
||||
##############run on ios devices#########################
|
||||
# for real device
|
||||
if [ ! -d ${CODEC_TEST_IOS_APP} ] ; then
|
||||
echo "${CODEC_TEST_IOS_APP} is not found"
|
||||
exit 1
|
||||
else
|
||||
echo "Find app ${CODEC_TEST_IOS_APP}"
|
||||
fi
|
||||
|
||||
#ensure instruments not runing
|
||||
echo "Try to kill the runing instruments"
|
||||
pids_str=`ps x -o pid,command | grep -v grep | grep "instruments" | awk '{printf "%s,", $1}'`
|
||||
instruments_pids="${pids_str//,/ }"
|
||||
for pid in ${instruments_pids}; do
|
||||
echo "Found instruments ${pid}. Killing..."
|
||||
kill -9 ${pid} && wait ${pid} &> /dev/null
|
||||
done
|
||||
|
||||
|
||||
|
||||
DEVICES=`system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p' -e '/iPhone/,/Serial/p' | grep "Serial Number:" | awk -F ": " '{print $2}'`
|
||||
if [ "${DEVICES}#" == "#" ]
|
||||
then
|
||||
echo "Can not find any connected device! please check device is connected to MAC!"
|
||||
exit 1
|
||||
else
|
||||
rand=`date +%s`
|
||||
for DEVICE_ID in ${DEVICES}
|
||||
do
|
||||
echo "Try to run on device:${DEVICE_ID}"
|
||||
|
||||
#Encoder YUV file too large
|
||||
if [ ${ENCDEC} = "enc" ]
|
||||
then
|
||||
#For limited devices space
|
||||
BAKRES=${CODEC_TEST_RES}_bak
|
||||
mv ${CODEC_TEST_RES} ${BAKRES}
|
||||
mkdir -p ${CODEC_TEST_RES}
|
||||
CODEC_CASE=`ls ${BAKRES}`
|
||||
echo ${CODEC_CASE}
|
||||
for CASE in ${CODEC_CASE}
|
||||
do
|
||||
echo ${CASE}
|
||||
cp -r ${BAKRES}/${CASE} ${CODEC_TEST_RES}/.
|
||||
|
||||
|
||||
#uninstall the application from device to remove the last result
|
||||
./fruitstrap uninstall --bundle ${CODEC_TEST_IOS_APP_ID} --id ${DEVICE_ID}
|
||||
if [ $? -ne 0 ]; then
|
||||
echo uninstall application: ${CODEC_TEST_IOS_APP} from device: ${DEVICE_ID} is failed!
|
||||
fi
|
||||
#install the application
|
||||
./fruitstrap install --bundle ${CODEC_TEST_IOS_APP} --id ${DEVICE_ID}
|
||||
if [ $? -ne 0 ]; then
|
||||
echo install application: ${CODEC_TEST_IOS_APP} to device: ${DEVICE_ID} is failed!
|
||||
exit 1
|
||||
fi
|
||||
|
||||
./iFileTransfer -o copy -id ${DEVICE_ID} -app ${CODEC_TEST_IOS_APP_ID} -from ${CODEC_TEST_RES}
|
||||
instruments -w ${DEVICE_ID} -t /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate ${CODEC_TEST_IOS_APP} -e UIASCRIPT ./uiascript.js -e UIARRESULTPATH /tmp/
|
||||
#copy to report folder
|
||||
./iFileTransfer -o download -id ${DEVICE_ID} -app ${CODEC_TEST_IOS_APP_ID} -from /Documents/${CODEC_TEST_LOG}.log -to ${CODEC_TEST_IOS_REPORT_PATH}/${CODEC_TEST_LOG}_${DEVICE_ID}_${rand}_${CASE}.log
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "download file: ${CODEC_TEST_LOG}.log from ${CODEC_TEST_IOS_APP_ID} is failed!"
|
||||
exit 1
|
||||
fi
|
||||
cat ${CODEC_TEST_IOS_REPORT_PATH}/${CODEC_TEST_LOG}_${DEVICE_ID}_${rand}_${CASE}.log>>${CODEC_TEST_IOS_REPORT_PATH}/${CODEC_TEST_LOG}_${DEVICE_ID}_${rand}.log
|
||||
rm -f ${CODEC_TEST_IOS_REPORT_PATH}/${CODEC_TEST_LOG}_${DEVICE_ID}_${rand}_${CASE}.log
|
||||
rm -rf ${CODEC_TEST_RES}/${CASE}
|
||||
done
|
||||
rm -rf ${CODEC_TEST_RES}
|
||||
mv ${BAKRES} ${CODEC_TEST_RES}
|
||||
#Enough spaces
|
||||
else
|
||||
#uninstall the application from device to remove the last result
|
||||
./fruitstrap uninstall --bundle ${CODEC_TEST_IOS_APP_ID} --id ${DEVICE_ID}
|
||||
if [ $? -ne 0 ]; then
|
||||
echo uninstall application: ${CODEC_TEST_IOS_APP} from device: ${DEVICE_ID} is failed!
|
||||
fi
|
||||
#install the application
|
||||
./fruitstrap install --bundle ${CODEC_TEST_IOS_APP} --id ${DEVICE_ID}
|
||||
if [ $? -ne 0 ]; then
|
||||
echo install application: ${CODEC_TEST_IOS_APP} to device: ${DEVICE_ID} is failed!
|
||||
exit 1
|
||||
fi
|
||||
|
||||
./iFileTransfer -o copy -id ${DEVICE_ID} -app ${CODEC_TEST_IOS_APP_ID} -from ${CODEC_TEST_RES}
|
||||
instruments -w ${DEVICE_ID} -t /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate ${CODEC_TEST_IOS_APP} -e UIASCRIPT ./uiascript.js -e UIARRESULTPATH /tmp/
|
||||
#copy to report folder
|
||||
./iFileTransfer -o download -id ${DEVICE_ID} -app ${CODEC_TEST_IOS_APP_ID} -from /Documents/${CODEC_TEST_LOG}.log -to ${CODEC_TEST_IOS_REPORT_PATH}/${CODEC_TEST_LOG}_${DEVICE_ID}_${rand}_${CASE}.log
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "download file: ${CODEC_TEST_LOG}.log from ${CODEC_TEST_IOS_APP_ID} is failed!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
fi
|
||||
done
|
||||
|
||||
fi
|
||||
}
|
||||
|
||||
AUTO_TEST_IOS_PATH=`pwd`
|
||||
AUTO_TEST_SRC_PATH="../../.."
|
||||
CODEC_TEST_IOS_REPORT_PATH="${AUTO_TEST_IOS_PATH}/report"
|
||||
if [ ! -d ${CODEC_TEST_IOS_REPORT_PATH} ]
|
||||
then
|
||||
mkdir -p ${CODEC_TEST_IOS_REPORT_PATH}
|
||||
fi
|
||||
|
||||
ENCDEC=$1
|
||||
#start to get encoder/decoder performance data,default run the xcode with release
|
||||
iosPerformanceTest $ENCDEC release
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Running $ENCDEC demo to get encoder performance is failed!"
|
||||
exit 1
|
||||
else
|
||||
echo Finished $ENCDEC performance test on ios devices
|
||||
echo the test result is generated at ./ios/report/xx.loGbash parsePerfData.sh
|
||||
echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxIOS $ENCDEC Endxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
fi
|
||||
#TODO:according to the trace of instruments to do some analysis
|
||||
#find ./ -name *.trace -exec rm -rf {} \;
|
||||
19
autotest/performanceTest/ios/uiascript.js
Normal file
19
autotest/performanceTest/ios/uiascript.js
Normal file
@@ -0,0 +1,19 @@
|
||||
UIATarget.onAlert = function onAlert(alert){
|
||||
|
||||
UIALogger.logMessage("In Alert!");
|
||||
title = alert.name();
|
||||
if (title && title.indexOf("Microphone") !== -1) {
|
||||
UIALogger.logMessage("Alert with title '" + title + "' encountered!");
|
||||
var buttons = alert.buttons();
|
||||
var buttonCount = buttons.length;
|
||||
|
||||
if (buttonCount > 0) {
|
||||
var acceptButton = buttons[buttonCount - 1];
|
||||
acceptButton.tap(); // last button is accept
|
||||
}
|
||||
return true; //forbid the default cancel processing
|
||||
}
|
||||
return false; //using the default cancel processing
|
||||
}
|
||||
var target = UIATarget.localTarget();
|
||||
target.delay(6000);
|
||||
107
autotest/performanceTest/parsePerfData.sh
Executable file
107
autotest/performanceTest/parsePerfData.sh
Executable file
@@ -0,0 +1,107 @@
|
||||
#!/bin/bash
|
||||
|
||||
#usage runGetPerformanceInfo ${PerformanceLogFile}
|
||||
runGetPerformanceInfo_openh264()
|
||||
{
|
||||
|
||||
if [ ! $# -eq 2 ]
|
||||
then
|
||||
echo "not enough parameters!"
|
||||
echo "usage: ${0} [android/ios] ${PerformanceLogFile}"
|
||||
return 1
|
||||
fi
|
||||
|
||||
local PerformanceLogFile=$2
|
||||
local FileName=""
|
||||
local Width=""
|
||||
local Height=""
|
||||
local Frames=""
|
||||
local FPS=""
|
||||
local EncodeTime=""
|
||||
if [ $1 = "android" ]
|
||||
then seperatorNum=3
|
||||
else
|
||||
seperatorNum=2
|
||||
fi
|
||||
|
||||
while read line
|
||||
do
|
||||
if [[ $line =~ "enc yuv file" ]]
|
||||
then
|
||||
FileName=`echo $line | awk 'BEGIN {FS="enc yuv file"} {print $2}'`
|
||||
FileName=`echo $FileName | awk 'BEGIN {FS=":"} {print $2}'`
|
||||
fi
|
||||
if [[ $line =~ "Width" ]]
|
||||
then
|
||||
Width=`echo $line | awk 'BEGIN {FS=":"} {print $'${seperatorNum}'}'`
|
||||
fi
|
||||
if [[ $line =~ "Height" ]]
|
||||
then
|
||||
Height=`echo $line | awk 'BEGIN {FS=":"} {print $'${seperatorNum}'}'`
|
||||
fi
|
||||
if [[ $line =~ "Frames" ]]
|
||||
then
|
||||
Frames=`echo $line | awk 'BEGIN {FS=":"} {print $'${seperatorNum}'}'`
|
||||
fi
|
||||
if [[ $line =~ "FPS" ]]
|
||||
then
|
||||
FPS=`echo $line | awk 'BEGIN {FS=":"} {print $'${seperatorNum}'}'`
|
||||
FPS=`echo $FPS | awk 'BEGIN {FS="fps"} {print $1}'`
|
||||
echo "${FileName},"${Width}x${Height}",${Frames},${FPS}"
|
||||
fi
|
||||
|
||||
if [[ $line =~ "encode time" ]]
|
||||
then
|
||||
EncodeTime=`echo $line | awk 'BEGIN {FS=":"} {print $'${seperatorNum}'}'`
|
||||
fi
|
||||
if [[ $line =~ "height" ]]
|
||||
then
|
||||
Height=`echo $line | awk 'BEGIN {FS=":"} {print $'${seperatorNum}'}'`
|
||||
fi
|
||||
if [[ $line =~ "H264 source file name" ]]
|
||||
then
|
||||
FileName=`echo $line | awk 'BEGIN {FS=":"} {print $'${seperatorNum}'}'`
|
||||
if [ $1 = "ios" ]
|
||||
then
|
||||
FileName=`echo $FileName | awk -F"DecoderPerfTestRes" '{print $2}'`
|
||||
FileName=`echo $FileName | awk -F"/" '{print $2}'`
|
||||
else
|
||||
FileName=`echo $FileName | awk -F"/" '{print $4}'`
|
||||
fi
|
||||
fi
|
||||
|
||||
done <${PerformanceLogFile}
|
||||
|
||||
|
||||
}
|
||||
AUTO_TEST_RESULT_PATH="./TestResultCSV/"
|
||||
|
||||
|
||||
parseLogToCSV()
|
||||
{
|
||||
if [ $# -ne 1 ]
|
||||
then echo "Please input $0 [android/ios]"
|
||||
fi
|
||||
if [ $* = "android" ]
|
||||
then
|
||||
Result_log_path="./android/report/"
|
||||
suffix=android
|
||||
dos2unix ${Result_log_path}*.*
|
||||
else
|
||||
Result_log_path="./ios/report/"
|
||||
suffix=ios
|
||||
fi
|
||||
Result_log=`ls ${Result_log_path}`
|
||||
|
||||
for log in ${Result_log}
|
||||
do
|
||||
PerformFile=`echo $log |awk -F"." '{print $1}'`
|
||||
PerformFile=${PerformFile}_${suffix}.csv
|
||||
#inital perfermance file
|
||||
echo "$log,,,">>${AUTO_TEST_RESULT_PATH}${PerformFile}
|
||||
echo "YUV,Resolution,Encodedframes,FPS">>${AUTO_TEST_RESULT_PATH}${PerformFile}
|
||||
runGetPerformanceInfo_openh264 ${suffix} ${Result_log_path}${log}>>${AUTO_TEST_RESULT_PATH}${PerformFile}
|
||||
done
|
||||
}
|
||||
parseLogToCSV android
|
||||
parseLogToCSV ios
|
||||
122
autotest/performanceTest/run_perfTest.sh
Normal file
122
autotest/performanceTest/run_perfTest.sh
Normal file
@@ -0,0 +1,122 @@
|
||||
#!bin/bash
|
||||
IOS=1
|
||||
ANDROID=1
|
||||
ENC=1
|
||||
DEC=1
|
||||
AUTO_TEST_PATH=`pwd`
|
||||
|
||||
#Judge to run the test on which kind of mobile
|
||||
if [ $# -eq 0 ];then
|
||||
echo Default testing will run on android and ios devices meanwhile
|
||||
else
|
||||
for params in $*; do
|
||||
if [ $params = "ios" ];then
|
||||
echo Running the test just on ios devices
|
||||
ANDROID=0
|
||||
elif [ $params = "android" ];then
|
||||
echo Running the test just on android devices
|
||||
IOS=0
|
||||
elif [ $params = "enc" ];then
|
||||
echo Running the encoder performance test
|
||||
DEC=0
|
||||
elif [ $params = "dec" ];then
|
||||
echo Running the decoder performance test
|
||||
ENC=0
|
||||
else
|
||||
echo parameters are illegal!!!, ${0} [ios/android] [enc/dec]
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
#Prepare encoder resources
|
||||
if [ ${ENC} = "1" ]
|
||||
then
|
||||
if [ ! -d ./EncoderPerTestRes ]
|
||||
then
|
||||
mkdir -p ./EncoderPerfTestRes
|
||||
fi
|
||||
if [ "#`ls ./EncoderPerfTestRes`" = "#" ]
|
||||
then
|
||||
echo put yuv and cfg file into ./EncoderPerfTest folder as
|
||||
echo case_720p
|
||||
echo case_720p/welsenc.cfg
|
||||
echo case_720p/layer2.cfg
|
||||
echo case_720p/yuv
|
||||
echo case_720p/yuv/xxx1.yuv
|
||||
echo case_720p/yuv/xxx2.yuv
|
||||
echo case_360p
|
||||
echo case_360p/welsenc.cfg
|
||||
echo ......
|
||||
else
|
||||
#Run the encoder performance test
|
||||
if [ ${IOS} = "1" ]
|
||||
then
|
||||
echo xxxxxxxxxxxxxxxxIOS ENC Startxxxxxxxxxxxxxxxxxx
|
||||
echo Run the Encoder performance test on ios devices
|
||||
cd ./ios
|
||||
bash run_AutoTest_ios.sh enc
|
||||
cd ${AUTO_TEST_PATH}
|
||||
fi
|
||||
|
||||
if [ ${ANDROID} = "1" ]
|
||||
then
|
||||
echo xxxxxxxxxxxxxxAndroid ENC Startxxxxxxxxxxxxxxxxxxxx
|
||||
echo Run the Encoder performance test on android devices
|
||||
cd ./android
|
||||
bash run_AutoTest_android.sh enc
|
||||
cd ${AUTO_TEST_PATH}
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
#Prepare decoder resources
|
||||
if [ ${DEC} = "1" ]
|
||||
then
|
||||
if [ ! -d ./DecoderPerfTestRes ]
|
||||
then
|
||||
mkdir -p ./DecoderPerfTestRes
|
||||
fi
|
||||
|
||||
if [ "#`ls ./DecoderPerfTestRes`" = "#" ]
|
||||
then
|
||||
echo put decoded bitstreams into such folder as
|
||||
echo xxx1.264
|
||||
echo xxx2.264
|
||||
echo ........
|
||||
else
|
||||
#Run the decoder performance test
|
||||
if [ ${IOS} = "1" ]
|
||||
then
|
||||
echo xxxxxxxxxxxxxxxxIOS DEC Startxxxxxxxxxxxxxxxxxx
|
||||
echo Run the Decoder performance test on ios devices
|
||||
cd ./ios
|
||||
bash run_AutoTest_ios.sh dec
|
||||
cd ${AUTO_TEST_PATH}
|
||||
fi
|
||||
|
||||
if [ ${ANDROID} = "1" ]
|
||||
then
|
||||
echo xxxxxxxxxxxxxxAndroid DEC Startxxxxxxxxxxxxxxxxxxxx
|
||||
echo Run the Decoder performance test on android devices
|
||||
cd ./android
|
||||
bash run_AutoTest_android.sh dec
|
||||
cd ${AUTO_TEST_PATH}
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
#TODO:NOW just generate csv file to display performance data
|
||||
cd ${AUTO_TEST_PATH}
|
||||
if [[ "#`ls ./ios/report`" == "#" && "#`ls ./android/report`" == "#" ]]
|
||||
then
|
||||
echo There is nothing result log generated at ios or android devices
|
||||
else
|
||||
echo Start to generate test result csv file
|
||||
#Test result
|
||||
mkdir -p ./TestResultCSV
|
||||
bash parsePerfData.sh
|
||||
echo The csv file locate ./TestResultCSV/xxx.csv
|
||||
fi
|
||||
|
||||
|
||||
4
autotest/unitTest/.gitignore
vendored
Normal file
4
autotest/unitTest/.gitignore
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
.DS_Store
|
||||
./ios/report/
|
||||
./android/report/
|
||||
|
||||
112
autotest/unitTest/android/run_AutoTest_android.sh
Normal file
112
autotest/unitTest/android/run_AutoTest_android.sh
Normal file
@@ -0,0 +1,112 @@
|
||||
#!/bin/bash
|
||||
|
||||
AUTO_TEST_ANDROID_PATH=`pwd`
|
||||
AUTO_TEST_SRC_PATH="../../../"
|
||||
AUTO_TEST_RES_PATH="${AUTO_TEST_ANDROID_PATH}/report"
|
||||
if [ ! -d ${AUTO_TEST_RES_PATH} ]
|
||||
then
|
||||
mkdir -p ${AUTO_TEST_RES_PATH}
|
||||
else
|
||||
echo "Will delete those outdate xml in the report"
|
||||
rm -f ${AUTO_TEST_RES_PATH}/*.xml
|
||||
fi
|
||||
#Prepare android build enviroment
|
||||
echo please set the enviroment variable as:
|
||||
echo export ANDROID_HOME="path of android sdk"
|
||||
echo export ANDROID_NDK_HOME="path of android ndk"
|
||||
ANDROID_SDK_PATH=${ANDROID_HOME}
|
||||
ANDROID_NDK_PATH=${ANDROID_NDK_HOME}
|
||||
ANDROID_MAKE_PARAMS="OS=android NDKROOT=${ANDROID_NDK_PATH} TARGET=android-19"
|
||||
|
||||
if [ "#${ANDROID_SDK_PATH}" = "#" ]
|
||||
then
|
||||
echo Please set ANDROID_HOME with the path of Android SDK
|
||||
exit 1
|
||||
fi
|
||||
if [ "#${ANDROID_NDK_PATH}" = "#" ]
|
||||
then
|
||||
echo Please set ANDROID_NDK_HOME with the path of Android NDK
|
||||
exit 1
|
||||
fi
|
||||
#make build
|
||||
cd ${AUTO_TEST_SRC_PATH}
|
||||
find ./ -name *.o -exec rm -f {} \;
|
||||
find ./ -name *.d -exec rm -f {} \;
|
||||
make clean
|
||||
make $ANDROID_MAKE_PARAMS test
|
||||
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo Build error,check with the trace of make
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#find apk
|
||||
echo Start to find unittest apk
|
||||
apk_name=`find ./ -name MainActivity-debug.apk`
|
||||
if [ "#${apk_name}" = "#" ]
|
||||
then
|
||||
echo Fail to find encoder APK.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#prepare devices
|
||||
ADB=${ANDROID_SDK_PATH}/platform-tools/adb
|
||||
|
||||
#get devices
|
||||
devices=`$ADB devices | awk -F" " '/\tdevice/{print $1}'`
|
||||
if [ "#$devices" = "#" ];then
|
||||
echo "Have not any android devices."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#run apk
|
||||
run_apk() {
|
||||
local apk=$1;
|
||||
local rand=` date +%s`
|
||||
apk_id="com.cisco.codec.unittest"
|
||||
apk_main="com.cisco.codec.unittest/.MainActivity"
|
||||
test_path="/sdcard/welsenc"
|
||||
log_grep_params="welsenc"
|
||||
test_res=./res
|
||||
xml_file="sdcard/codec_unittest.xml"
|
||||
for dev in $devices; do
|
||||
#dev_info_file=${AUTO_TEST_RES_PATH}/${dev}.log
|
||||
report_file=${AUTO_TEST_RES_PATH}/codec_unittest_${dev}_${rand}.xml
|
||||
$ADB -s $dev uninstall ${apk_id}
|
||||
$ADB -s $dev install -r ${apk}
|
||||
#TODO: output more info about android device such as name,cpu,memory,and also power comsumption.
|
||||
echo `$ADB -s $dev shell cat /system/build.prop |grep ro.product.model | awk -F"=" '{print $2}'`>${dev_info_file}
|
||||
$ADB -s $dev push ${test_res} /sdcard/res
|
||||
$ADB -s $dev shell am start --es path "$xml_file" -n ${apk_main}
|
||||
# check whetehr the app is finished every 2 sec
|
||||
for (( ; ; )); do
|
||||
$ADB -s $dev shell ps | grep ${apk_id}
|
||||
if [ $? -ne 0 ]; then
|
||||
sleep 2
|
||||
$ADB -s $dev shell ps | grep ${apk_id}
|
||||
[ $? -ne 0 ] && break
|
||||
fi
|
||||
sleep 2
|
||||
done
|
||||
|
||||
# kill logcat
|
||||
$ADB -s $dev pull ${xml_file} ${report_file}
|
||||
#delete the res
|
||||
$ADB -s $dev shell rm -rf ${xml_file}
|
||||
$ADB -s $dev shell rm -rf /sdcard/res
|
||||
done
|
||||
}
|
||||
for apk in ${apk_name};do
|
||||
run_apk $apk;
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo There is something wrong happened when run ${apk_name}
|
||||
exit 1
|
||||
else
|
||||
echo Finished unit test on android
|
||||
echo The test result is at ./android/report/xxx.xml
|
||||
echo xxxxxxxxxxxxxxxAndroid unittest Endxxxxxxxxxxxxxxxx
|
||||
fi
|
||||
done
|
||||
|
||||
167
autotest/unitTest/ios/run_AutoTest_ios.sh
Normal file
167
autotest/unitTest/ios/run_AutoTest_ios.sh
Normal file
@@ -0,0 +1,167 @@
|
||||
#!/bin/bash
|
||||
|
||||
##############################################################
|
||||
#Build ios test ref app
|
||||
|
||||
#set the default configuration
|
||||
CODEC_TEST_IOS_ARCH="armv7"
|
||||
CODEC_TEST_IOS_PLATFORM="iphoneos"
|
||||
CODEC_TEST_IOS_DEBUG_RELEASE="Release"
|
||||
CODEC_TEST_IOS_REPORT_SUBFOLDER="release"
|
||||
|
||||
|
||||
buildXcodeProject()
|
||||
{
|
||||
xcodebuild ARCHS="${CODEC_TEST_IOS_ARCH}" VALID_ARCHS="${CODEC_TEST_IOS_ARCH}" ONLY_ACTIVE_ARCH=NO -project $1 -target $2 -configuration $3 -sdk ${CODEC_TEST_IOS_PLATFORM} clean build
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "build $1 $3 successfully"
|
||||
else
|
||||
echo "build $1 $3 fail"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
|
||||
iosUnitTest()
|
||||
{
|
||||
|
||||
if [ $# -gt 2 ]; then
|
||||
echo "Please use command $0 [armv7/armv7s/arm64] [release/debug]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
CODEC_TEST_XCODE_PROJECT_NAME="${AUTO_TEST_SRC_PATH}/test/build/ios/codec_unittest/codec_unittest.xcodeproj/"
|
||||
CODEC_TEST_IOS_PROJECT_NAME="codec_unittest"
|
||||
CODEC_TEST_IOS_PROJECT_PATH="${AUTO_TEST_SRC_PATH}/test/build/ios/codec_unittest/build"
|
||||
CODEC_TEST_IOS_APP=${CODEC_TEST_IOS_PROJECT_PATH}/${CODEC_TEST_IOS_DEBUG_RELEASE}-iphoneos/${CODEC_TEST_IOS_PROJECT_NAME}.app
|
||||
CODEC_TEST_IOS_APP_ID="com.cisco.codec-unittest"
|
||||
CODEC_TEST_RES=${AUTO_TEST_SRC_PATH}/res
|
||||
CODEC_TEST_LOG="codec_unittest"
|
||||
for PARAM in $*; do
|
||||
if [ "release" = "${PARAM}" ]; then
|
||||
CODEC_TEST_IOS_DEBUG_RELEASE="Release"
|
||||
CODEC_TEST_IOS_REPORT_SUBFOLDER="release"
|
||||
elif [ "debug" = "${PARAM}" ]; then
|
||||
CODEC_TEST_IOS_DEBUG_RELEASE="Debug"
|
||||
CODEC_TEST_IOS_REPORT_SUBFOLDER="debug"
|
||||
elif [ "armv7" = "${PARAM}" ];then
|
||||
CODEC_TEST_IOS_ARCH="armv7"
|
||||
elif [ "armv7s" = "${PARAM}" ];then
|
||||
CODEC_TEST_IOS_ARCH="armv7s"
|
||||
elif [ "arm64" = "${PARAM}" ];then
|
||||
CODEC_TEST_IOS_ARCH="arm64"
|
||||
else
|
||||
echo parameters are illegal!!!, please have a check.
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
cd ${AUTO_TEST_SRC_PATH}
|
||||
IOS_MAKE_PARAMS="OS=ios ARCH=${CODEC_TEST_IOS_ARCH}"
|
||||
############make build
|
||||
find ./ -name *.o -exec rm -rf {} \;
|
||||
find ./ -name *.d -exec rm -rf {} \;
|
||||
rm -f *.so
|
||||
make clean
|
||||
make ${IOS_MAKE_PARAMS} test
|
||||
echo "Codec test will run on ${CODEC_TEST_IOS_PLATFORM} with ${CODEC_TEST_IOS_DEBUG_RELEASE}"
|
||||
cd ${AUTO_TEST_IOS_PATH}
|
||||
buildXcodeProject ${CODEC_TEST_XCODE_PROJECT_NAME} ${CODEC_TEST_IOS_PROJECT_NAME} ${CODEC_TEST_IOS_DEBUG_RELEASE} ${CODEC_TEST_IOS_PLATFORM}
|
||||
|
||||
|
||||
|
||||
|
||||
##############run on ios devices#########################
|
||||
# for real device
|
||||
if [ ! -d ${CODEC_TEST_IOS_APP} ] ; then
|
||||
echo "${CODEC_TEST_IOS_APP} is not found"
|
||||
exit 1
|
||||
else
|
||||
echo "Find app ${CODEC_TEST_IOS_APP}"
|
||||
fi
|
||||
|
||||
#ensure instruments not runing
|
||||
echo "Try to kill the runing instruments"
|
||||
pids_str=`ps x -o pid,command | grep -v grep | grep "instruments" | awk '{printf "%s,", $1}'`
|
||||
instruments_pids="${pids_str//,/ }"
|
||||
for pid in ${instruments_pids}; do
|
||||
echo "Found instruments ${pid}. Killing..."
|
||||
kill -9 ${pid} && wait ${pid} &> /dev/null
|
||||
done
|
||||
|
||||
|
||||
|
||||
DEVICES=`system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p' -e '/iPhone/,/Serial/p' | grep "Serial Number:" | awk -F ": " '{print $2}'`
|
||||
if [ "${DEVICES}#" == "#" ]
|
||||
then
|
||||
echo "Can not find any connected device! please check device is connected to MAC!"
|
||||
exit 1
|
||||
else
|
||||
rand=`date +%s`
|
||||
for DEVICE_ID in ${DEVICES}
|
||||
do
|
||||
echo "Try to run on device:${DEVICE_ID}"
|
||||
|
||||
#uninstall the application from device to remove the last result
|
||||
${AUTO_TEST_IOS_SCRIPT_PATH}/fruitstrap uninstall --bundle ${CODEC_TEST_IOS_APP_ID} --id ${DEVICE_ID}
|
||||
if [ $? -ne 0 ]; then
|
||||
echo uninstall application: ${CODEC_TEST_IOS_APP} from device: ${DEVICE_ID} is failed!
|
||||
fi
|
||||
#install the application
|
||||
${AUTO_TEST_IOS_SCRIPT_PATH}/fruitstrap install --bundle ${CODEC_TEST_IOS_APP} --id ${DEVICE_ID}
|
||||
if [ $? -ne 0 ]; then
|
||||
echo install application: ${CODEC_TEST_IOS_APP} to device: ${DEVICE_ID} is failed!
|
||||
exit 1
|
||||
fi
|
||||
|
||||
${AUTO_TEST_IOS_SCRIPT_PATH}/iFileTransfer -o copy -id ${DEVICE_ID} -app ${CODEC_TEST_IOS_APP_ID} -from ${CODEC_TEST_RES}
|
||||
instruments -w ${DEVICE_ID} -t /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate ${CODEC_TEST_IOS_APP} -e UIASCRIPT ${AUTO_TEST_IOS_SCRIPT_PATH}/uiascript.js -e UIARRESULTPATH /tmp/
|
||||
#copy to report folder
|
||||
${AUTO_TEST_IOS_SCRIPT_PATH}/iFileTransfer -o download -id ${DEVICE_ID} -app ${CODEC_TEST_IOS_APP_ID} -from /Documents/${CODEC_TEST_LOG}.xml -to ${CODEC_TEST_IOS_REPORT_PATH}/${CODEC_TEST_LOG}_${DEVICE_ID}_${rand}_${CODEC_TEST_IOS_ARCH}.xml
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "download file: ${CODEC_TEST_LOG}.xml from ${CODEC_TEST_IOS_APP_ID} is failed!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
AUTO_TEST_IOS_PATH=`pwd`
|
||||
AUTO_TEST_SRC_PATH="../../.."
|
||||
AUTO_TEST_IOS_SCRIPT_PATH="../../performanceTest/ios"
|
||||
CODEC_TEST_IOS_REPORT_PATH="${AUTO_TEST_IOS_PATH}/report"
|
||||
if [ ! -d ${CODEC_TEST_IOS_REPORT_PATH} ]
|
||||
then
|
||||
mkdir -p ${CODEC_TEST_IOS_REPORT_PATH}
|
||||
else
|
||||
echo "Will delete those outdate xml in the report"
|
||||
rm -f ${CODEC_TEST_IOS_REPORT_PATH}/*.xml
|
||||
fi
|
||||
|
||||
#start to run unittest,default run the xcode at arch armv7 with release
|
||||
iosUnitTest armv7 release
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Running Unittest demo with armv7 is failed!"
|
||||
exit 1
|
||||
else
|
||||
echo Finished unittest with armv7 on ios devices
|
||||
echo the test result is generated at ./ios/report/xx.xml
|
||||
fi
|
||||
#start to run unittest,run the xcode at arch arm64 with release
|
||||
iosUnitTest arm64 release
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Running Unittest demo with arm64 is failed!"
|
||||
exit 1
|
||||
else
|
||||
echo Finished unittest with arm64 on ios devices
|
||||
echo the test result is generated at ./ios/report/xx.xml
|
||||
fi
|
||||
|
||||
echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxIOS unittest Endxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
|
||||
#TODO:according to the trace of instruments to do some analysis
|
||||
#find ${AUTO_TEST_IOS_SCRIPT_PATH} -name *.trace -exec rm -rf {} \;
|
||||
rm -rf *.trace
|
||||
70
autotest/unitTest/run_ParseUTxml.sh
Normal file
70
autotest/unitTest/run_ParseUTxml.sh
Normal file
@@ -0,0 +1,70 @@
|
||||
if [ $# -ne 1 ];then
|
||||
echo Please input $0 [report dir]
|
||||
exit 1
|
||||
fi
|
||||
|
||||
REPORT=$1
|
||||
if [ ! -e ${REPORT} ];then
|
||||
echo "The directory of ${REPORT} dose't not exit,please check the test log"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
UT_Failed_Num=0
|
||||
parse_unittest() {
|
||||
res=$1
|
||||
echo ${res}
|
||||
echo Start to parse unittest results of $res
|
||||
if [ -e $res ];then
|
||||
tests=`cat $res | grep "<testsuites" | awk -F " " '{print $2;}' | awk -F "\"" '{print $2;}'`
|
||||
fails=`cat $res | grep "<testsuites" | awk -F " " '{print $3;}' | awk -F "\"" '{print $2;}'`
|
||||
times=`cat $res | grep "<testsuites" | awk -F " " '{print $6;}' | awk -F "\"" '{print $2;}'`
|
||||
waste=`cat $res | grep "<testsuites" | awk -F " " '{print $7;}' | awk -F "\"" '{print $2;}'`
|
||||
msg="Total testcases: $tests, failed: $fails,time:$waste seconds, at$times,xml:$res"
|
||||
echo ${msg}
|
||||
UT_Failed_Num=$((${UT_Failed_Num}+${fails}))
|
||||
cat >> mail.log << EOF
|
||||
<style>
|
||||
.fail {
|
||||
background-color: yellow;
|
||||
}
|
||||
</style>
|
||||
<br>
|
||||
<table style="width:600px" cellspacing="0" border="1" width="100%">
|
||||
<thead>
|
||||
<tr>
|
||||
<td>Total unit test cases</td>
|
||||
<td>Failed</td>
|
||||
<td>Time</td>
|
||||
<td>Date</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr style="text-align:center; font-weight: bold;">
|
||||
<td>${tests}</td>
|
||||
<td><font class="fail">${fails}</font></td>
|
||||
<td>${waste}</td>
|
||||
<td>${times}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br>
|
||||
EOF
|
||||
fi
|
||||
}
|
||||
|
||||
xmlcount=`ls $REPORT | wc -l`
|
||||
xmlfiles=`ls $REPORT`
|
||||
if [ ${xmlcount} -eq 0 ];
|
||||
then echo There is nothing xml files generated at $REPORT
|
||||
exit 1
|
||||
fi
|
||||
for file in $xmlfiles;do
|
||||
parse_unittest $REPORT/$file
|
||||
done
|
||||
if [ ${UT_Failed_Num} = "0" ];then
|
||||
echo Total $xmlcount files at $REPORT,all sucessful
|
||||
exit 0
|
||||
else
|
||||
echo Total $xmlcount files at $REPORT,${UT_Failed_Num} error cases
|
||||
exit 2
|
||||
fi
|
||||
98
autotest/unitTest/run_unitTest.sh
Normal file
98
autotest/unitTest/run_unitTest.sh
Normal file
@@ -0,0 +1,98 @@
|
||||
#!/bin/bash
|
||||
|
||||
AUTO_TEST_PATH=`pwd`
|
||||
IOS=0
|
||||
ANDROID=0
|
||||
#Prepare GTEST
|
||||
AUTO_TEST_SRC_PATH="../../"
|
||||
cd ${AUTO_TEST_SRC_PATH}
|
||||
if [ ! -d "./gtest" ]
|
||||
then
|
||||
make gtest-bootstrap
|
||||
fi
|
||||
cd ${AUTO_TEST_PATH}
|
||||
#To find whether have android devices
|
||||
echo please set the enviroment variable as:
|
||||
echo export ANDROID_HOME="path of android sdk"
|
||||
echo export ANDROID_NDK_HOME="path of android ndk"
|
||||
ANDROID_SDK_PATH=${ANDROID_HOME}
|
||||
ANDROID_NDK_PATH=${ANDROID_NDK_HOME}
|
||||
if [ "#${ANDROID_SDK_PATH}" = "#" ]
|
||||
then
|
||||
echo Please set ANDROID_HOME with the path of Android SDK
|
||||
exit 1
|
||||
fi
|
||||
if [ "#${ANDROID_NDK_PATH}" = "#" ]
|
||||
then
|
||||
echo Please set ANDROID_NDK_HOME with the path of Android NDK
|
||||
exit 1
|
||||
fi
|
||||
#prepare devices
|
||||
ADB=${ANDROID_SDK_PATH}/platform-tools/adb
|
||||
|
||||
#get devices
|
||||
devices=`$ADB devices | awk -F" " '/\tdevice/{print $1}'`
|
||||
if [ "#$devices" = "#" ];then
|
||||
echo "Can not find any android devices!"
|
||||
else
|
||||
echo Start to run the unittest on android devices
|
||||
ANDROID=1
|
||||
cd ./android
|
||||
bash run_AutoTest_android.sh >/dev/null 2>&1
|
||||
if [ $? -ne 0 ];then
|
||||
echo There is something wrong happened when runing unittest on android devices,please to check
|
||||
else
|
||||
echo Finish run the unittest on android devices sucessfully
|
||||
fi
|
||||
cd ${AUTO_TEST_PATH}
|
||||
fi
|
||||
|
||||
#To find whether have ios devices
|
||||
DEVICES=`system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p' -e '/iPhone/,/Serial/p' | grep "Serial Number:" | awk -F ": " '{print $2}'`
|
||||
if [ "${DEVICES}#" == "#" ]
|
||||
then
|
||||
echo "Can not find any ios devices!"
|
||||
else
|
||||
echo Start to run the unittest on ios devices
|
||||
IOS=1
|
||||
cd ./ios
|
||||
bash run_AutoTest_ios.sh >/dev/null 2>&1
|
||||
if [ $? -ne 0 ];then
|
||||
echo There is something wrong happened when runing unittest on ios devices,please to check
|
||||
else
|
||||
echo Finish run the unittest on android devices sucessfully
|
||||
fi
|
||||
cd ${AUTO_TEST_PATH}
|
||||
fi
|
||||
|
||||
#To parse the unit test result file to find whether have failures
|
||||
if [ ${ANDROID} = "1" ];then
|
||||
echo "
|
||||
<style>
|
||||
.env {
|
||||
background-color: #95B9C7;
|
||||
font: 30px bold;
|
||||
}</style>">>mail.log
|
||||
echo "<br><font class="env">Run unit test on android devices</font>">>mail.log
|
||||
bash run_ParseUTxml.sh ./android/report
|
||||
ret=$?
|
||||
if [ ${ret} -eq 0 ];then
|
||||
echo Unit test run on the android devices have not any failure case
|
||||
elif [ ${ret} -eq 2 ];then
|
||||
echo Unit test have cases failed,please check
|
||||
elif [ ${ret} -eq 1 ];then
|
||||
echo Unit test run failed
|
||||
fi
|
||||
fi
|
||||
if [ ${IOS} = "1" ];then
|
||||
echo "<br><font class="env">Run unit test on ios devices with armv7 & arm64</font>">>mail.log
|
||||
bash run_ParseUTxml.sh ./ios/report
|
||||
ret=$?
|
||||
if [ $ret -eq 0 ];then
|
||||
echo Unit test run on the ios devices have not any failure case
|
||||
elif [ $ret -eq 2 ];then
|
||||
echo Unit test have cases failed,please check
|
||||
elif [ $ret -eq 1 ];then
|
||||
echo Unit test run failed
|
||||
fi
|
||||
fi
|
||||
@@ -1,17 +1,17 @@
|
||||
ifneq ($(filter %86 x86_64, $(ARCH)),)
|
||||
include build/platform-x86-common.mk
|
||||
include $(SRC_PATH)build/x86-common.mk
|
||||
endif
|
||||
ifneq ($(filter-out arm64, $(filter arm%, $(ARCH))),)
|
||||
ifeq ($(USE_ASM), Yes)
|
||||
ASM_ARCH = arm
|
||||
ASMFLAGS += -Icodec/common/arm/
|
||||
ASMFLAGS += -I$(SRC_PATH)codec/common/arm/
|
||||
CFLAGS += -DHAVE_NEON
|
||||
endif
|
||||
endif
|
||||
ifneq ($(filter arm64 aarch64, $(ARCH)),)
|
||||
ifeq ($(USE_ASM), Yes)
|
||||
ASM_ARCH = arm64
|
||||
ASMFLAGS += -Icodec/common/arm64/
|
||||
ASMFLAGS += -I$(SRC_PATH)codec/common/arm64/
|
||||
CFLAGS += -DHAVE_NEON_AARCH64
|
||||
endif
|
||||
endif
|
||||
@@ -5,6 +5,7 @@ GTEST_CPP_SRCS=\
|
||||
GTEST_OBJS += $(GTEST_CPP_SRCS:.cc=.$(OBJ))
|
||||
|
||||
OBJS += $(GTEST_OBJS)
|
||||
|
||||
$(GTEST_SRCDIR)/%.$(OBJ): $(GTEST_SRCDIR)/%.cc
|
||||
$(QUIET_CXX)$(CXX) $(CFLAGS) $(CXXFLAGS) $(INCLUDES) $(GTEST_CFLAGS) $(GTEST_INCLUDES) -c $(CXX_O) $<
|
||||
|
||||
|
||||
@@ -134,37 +134,42 @@ if len(cfiles) > 0:
|
||||
for cfile in cfiles:
|
||||
f.write("\t$(%s_SRCDIR)/%s\\\n"%(PREFIX, cfile))
|
||||
f.write("\n")
|
||||
f.write("%s_OBJS += $(%s_C_SRCS:.c=.$(OBJ))\n\n"%(PREFIX, PREFIX))
|
||||
f.write("%s_OBJS += $(%s_C_SRCS:.c=.$(OBJ))\n"%(PREFIX, PREFIX))
|
||||
|
||||
if len(asm) > 0:
|
||||
f.write("ifeq ($(ASM_ARCH), x86)\n")
|
||||
f.write("%s_ASM_SRCS=\\\n"%(PREFIX))
|
||||
for c in asm:
|
||||
f.write("\t$(%s_SRCDIR)/%s\\\n"%(PREFIX, c))
|
||||
f.write("\n")
|
||||
f.write("%s_OBJS += $(%s_ASM_SRCS:.asm=.$(OBJ))\n"%(PREFIX, PREFIX))
|
||||
f.write("endif\n\n")
|
||||
f.write("%s_OBJSASM += $(%s_ASM_SRCS:.asm=.$(OBJ))\n"%(PREFIX, PREFIX))
|
||||
f.write("ifeq ($(ASM_ARCH), x86)\n")
|
||||
f.write("%s_OBJS += $(%s_OBJSASM)\n"%(PREFIX,PREFIX))
|
||||
f.write("endif\n")
|
||||
f.write("OBJS += $(%s_OBJSASM)\n\n"%(PREFIX))
|
||||
|
||||
if len(armfiles) > 0:
|
||||
f.write("ifeq ($(ASM_ARCH), arm)\n")
|
||||
f.write("%s_ASM_ARM_SRCS=\\\n"%(PREFIX))
|
||||
for c in armfiles:
|
||||
f.write("\t$(%s_SRCDIR)/%s\\\n"%(PREFIX, c))
|
||||
f.write("\n")
|
||||
f.write("%s_OBJS += $(%s_ASM_ARM_SRCS:.S=.$(OBJ))\n"%(PREFIX, PREFIX))
|
||||
f.write("endif\n\n")
|
||||
f.write("%s_OBJSARM += $(%s_ASM_ARM_SRCS:.S=.$(OBJ))\n"%(PREFIX, PREFIX))
|
||||
f.write("ifeq ($(ASM_ARCH), arm)\n")
|
||||
f.write("%s_OBJS += $(%s_OBJSARM)\n"%(PREFIX,PREFIX))
|
||||
f.write("endif\n")
|
||||
f.write("OBJS += $(%s_OBJSARM)\n\n"%(PREFIX))
|
||||
|
||||
if len(arm64files) > 0:
|
||||
f.write("ifeq ($(ASM_ARCH), arm64)\n")
|
||||
f.write("%s_ASM_ARM64_SRCS=\\\n"%(PREFIX))
|
||||
for c in arm64files:
|
||||
f.write("\t$(%s_SRCDIR)/%s\\\n"%(PREFIX, c))
|
||||
f.write("\n")
|
||||
f.write("%s_OBJS += $(%s_ASM_ARM64_SRCS:.S=.$(OBJ))\n"%(PREFIX, PREFIX))
|
||||
f.write("endif\n\n")
|
||||
|
||||
f.write("OBJS += $(%s_OBJS)\n"%PREFIX)
|
||||
f.write("%s_OBJSARM64 += $(%s_ASM_ARM64_SRCS:.S=.$(OBJ))\n"%(PREFIX, PREFIX))
|
||||
f.write("ifeq ($(ASM_ARCH), arm64)\n")
|
||||
f.write("%s_OBJS += $(%s_OBJSARM64)\n"%(PREFIX,PREFIX))
|
||||
f.write("endif\n")
|
||||
f.write("OBJS += $(%s_OBJSARM64)\n\n"%(PREFIX))
|
||||
|
||||
f.write("OBJS += $(%s_OBJS)\n\n"%(PREFIX))
|
||||
write_cpp_rule_pattern(f)
|
||||
|
||||
if len(cfiles) > 0:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
include build/platform-arch.mk
|
||||
include $(SRC_PATH)build/arch.mk
|
||||
ifeq ($(ASM_ARCH), x86)
|
||||
ifeq ($(ENABLE64BIT), Yes)
|
||||
ASMFLAGS += -f win64
|
||||
@@ -26,7 +26,7 @@ CFLAGS += -nologo -W3 -EHsc -fp:precise -Zc:wchar_t -Zc:forScope -D_VARIADIC_MAX
|
||||
CXX_LINK_O=-nologo -Fe$@
|
||||
AR_OPTS=-nologo -out:$@
|
||||
CFLAGS_OPT=-O2 -Ob1 -Oy- -Zi -GF -Gm- -GS -Gy -DNDEBUG
|
||||
CFLAGS_DEBUG=-Od -Oy- -ZI -RTC1 -D_DEBUG
|
||||
CFLAGS_DEBUG=-Od -Oy- -Zi -RTC1 -D_DEBUG
|
||||
CFLAGS_M32=
|
||||
CFLAGS_M64=
|
||||
LINK_LOCAL_DIR=
|
||||
@@ -1,5 +1,5 @@
|
||||
ARCH = arm
|
||||
include build/platform-arch.mk
|
||||
include $(SRC_PATH)build/arch.mk
|
||||
SHAREDLIBSUFFIX = so
|
||||
NDKLEVEL = 12
|
||||
ifeq ($(ARCH), arm)
|
||||
@@ -9,19 +9,23 @@ ifeq ($(ARCH), arm)
|
||||
LDFLAGS += -march=armv7-a -Wl,--fix-cortex-a8
|
||||
APP_ABI = armeabi-v7a
|
||||
endif
|
||||
TOOLCHAINPREFIX = $(shell NDK_PROJECT_PATH=./codec/build/android/dec make --no-print-dir -f $(NDKROOT)/build/core/build-local.mk DUMP_TOOLCHAIN_PREFIX APP_ABI=armeabi)
|
||||
ifeq (Yes, $(USE_ASM))
|
||||
ASMFLAGS += -march=armv7-a -mfpu=neon
|
||||
endif
|
||||
else ifeq ($(ARCH), arm64)
|
||||
APP_ABI = arm64-v8a
|
||||
else ifeq ($(ARCH), x86)
|
||||
APP_ABI = x86
|
||||
TOOLCHAINPREFIX = $(shell NDK_PROJECT_PATH=./codec/build/android/dec make --no-print-dir -f $(NDKROOT)/build/core/build-local.mk DUMP_TOOLCHAIN_PREFIX APP_ABI=x86)
|
||||
APP_ABI = x86
|
||||
ifeq (Yes, $(USE_ASM))
|
||||
ASMFLAGS += -f elf32
|
||||
ASMFLAGS += -f elf
|
||||
endif
|
||||
else ifeq ($(ARCH), x86_64)
|
||||
APP_ABI = x86_64
|
||||
ifeq (Yes, $(USE_ASM))
|
||||
ASMFLAGS += -f elf64
|
||||
endif
|
||||
else
|
||||
APP_ABI = $(ARCH)
|
||||
TOOLCHAINPREFIX = $(shell NDK_PROJECT_PATH=./codec/build/android/dec make --no-print-dir -f $(NDKROOT)/build/core/build-local.mk DUMP_TOOLCHAIN_PREFIX APP_ABI=$(APP_ABI))
|
||||
APP_ABI = $(ARCH)
|
||||
endif
|
||||
|
||||
ifndef NDKROOT
|
||||
@@ -31,6 +35,8 @@ ifndef TARGET
|
||||
$(error TARGET is not set)
|
||||
endif
|
||||
|
||||
TOOLCHAINPREFIX = $(shell NDK_PROJECT_PATH=$(SRC_PATH)/codec/build/android/dec make --no-print-dir -f $(NDKROOT)/build/core/build-local.mk DUMP_TOOLCHAIN_PREFIX APP_ABI=$(APP_ABI))
|
||||
|
||||
SYSROOT = $(NDKROOT)/platforms/android-$(NDKLEVEL)/arch-$(ARCH)
|
||||
CXX = $(TOOLCHAINPREFIX)g++
|
||||
CC = $(TOOLCHAINPREFIX)gcc
|
||||
@@ -38,7 +44,13 @@ AR = $(TOOLCHAINPREFIX)ar
|
||||
CFLAGS += -DANDROID_NDK -fpic --sysroot=$(SYSROOT) -MMD -MP
|
||||
CXXFLAGS += -fno-rtti -fno-exceptions
|
||||
LDFLAGS += --sysroot=$(SYSROOT)
|
||||
SHLDFLAGS = -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,-soname,lib$(PROJECT_NAME).so
|
||||
SHLDFLAGS = -Wl,--no-undefined -Wl,-z,relro -Wl,-z,now -Wl,-soname,lib$(PROJECT_NAME).so
|
||||
|
||||
ifneq ($(CXX),$(wildcard $(CXX)))
|
||||
ifneq ($(CXX).exe,$(wildcard $(CXX).exe))
|
||||
$(error Compiler not found, bad NDKROOT or ARCH?)
|
||||
endif
|
||||
endif
|
||||
|
||||
STL_INCLUDES = \
|
||||
-I$(NDKROOT)/sources/cxx-stl/stlport/stlport
|
||||
@@ -51,6 +63,7 @@ CODEC_UNITTEST_LDFLAGS_SUFFIX = $(STL_LIB)
|
||||
MODULE_INCLUDES = $(STL_INCLUDES)
|
||||
MODULE_LDFLAGS = $(STL_LIB)
|
||||
|
||||
ifeq (./,$(SRC_PATH))
|
||||
binaries : decdemo encdemo
|
||||
|
||||
decdemo: libraries
|
||||
@@ -65,6 +78,12 @@ clean_Android_dec:
|
||||
-cd ./codec/build/android/dec && $(NDKROOT)/ndk-build APP_ABI=$(APP_ABI) clean && ant clean
|
||||
clean_Android_enc:
|
||||
-cd ./codec/build/android/enc && $(NDKROOT)/ndk-build APP_ABI=$(APP_ABI) clean && ant clean
|
||||
else
|
||||
all:
|
||||
@:
|
||||
clean_Android:
|
||||
@:
|
||||
endif
|
||||
|
||||
COMMON_INCLUDES += -I$(NDKROOT)/sources/android/cpufeatures
|
||||
COMMON_OBJS += $(COMMON_SRCDIR)/src/cpu-features.$(OBJ)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
include build/platform-arch.mk
|
||||
include $(SRC_PATH)build/arch.mk
|
||||
SHAREDLIBSUFFIX = dylib
|
||||
SHARED = -dynamiclib
|
||||
CFLAGS += -Wall -fPIC -MMD -MP
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
include build/platform-arch.mk
|
||||
include $(SRC_PATH)build/arch.mk
|
||||
SHAREDLIBSUFFIX = so
|
||||
CFLAGS += -fPIC
|
||||
LDFLAGS += -lpthread
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
ARCH = armv7
|
||||
include build/platform-darwin.mk
|
||||
include $(SRC_PATH)build/platform-darwin.mk
|
||||
CXX = clang++
|
||||
CC = clang
|
||||
ifneq ($(filter %86 x86_64, $(ARCH)),)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
include build/platform-arch.mk
|
||||
include $(SRC_PATH)build/arch.mk
|
||||
SHAREDLIBSUFFIX = so
|
||||
CFLAGS += -Wall -fno-strict-aliasing -fPIC -MMD -MP
|
||||
LDFLAGS += -lpthread
|
||||
@@ -6,7 +6,7 @@ ifeq ($(ASM_ARCH), x86)
|
||||
ifeq ($(ENABLE64BIT), Yes)
|
||||
ASMFLAGS += -f elf64
|
||||
else
|
||||
ASMFLAGS += -f elf32
|
||||
ASMFLAGS += -f elf
|
||||
endif
|
||||
endif
|
||||
ifeq ($(ASM_ARCH), arm)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
include build/platform-x86-common.mk
|
||||
include $(SRC_PATH)build/x86-common.mk
|
||||
SHAREDLIBSUFFIX = dll
|
||||
CFLAGS += -MMD -MP
|
||||
LDFLAGS +=
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
ARCH = arm
|
||||
include build/platform-msvc-common.mk
|
||||
include $(SRC_PATH)build/msvc-common.mk
|
||||
CFLAGS_OPT += -MD
|
||||
CFLAGS_DEBUG += -MDd
|
||||
CFLAGS += -DWINAPI_FAMILY=WINAPI_FAMILY_PHONE_APP
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
include build/platform-msvc-common.mk
|
||||
include $(SRC_PATH)build/msvc-common.mk
|
||||
LDFLAGS += user32.lib
|
||||
CFLAGS_OPT += -MT
|
||||
CFLAGS_DEBUG += -MTd -Gm
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
CFLAGS_M32=-m32
|
||||
CFLAGS_M64=-m64
|
||||
ASM_INCLUDES = -Icodec/common/x86/
|
||||
ASM_INCLUDES = -I$(SRC_PATH)codec/common/x86/
|
||||
ifeq (, $(ENABLE64BIT))
|
||||
ifeq ($(ARCH), x86_64)
|
||||
ENABLE64BIT=Yes
|
||||
@@ -71,12 +71,6 @@ class ISVCEncoder {
|
||||
* return: 0 - success; otherwise - failed;
|
||||
*/
|
||||
virtual int EXTAPI EncodeParameterSets (SFrameBSInfo* pBsInfo) = 0;
|
||||
|
||||
/*
|
||||
* return: 0 - success; otherwise - failed;
|
||||
*/
|
||||
virtual int EXTAPI PauseFrame (const SSourcePicture* kpSrcPic, SFrameBSInfo* pBsInfo) = 0;
|
||||
|
||||
/*
|
||||
* return: 0 - success; otherwise - failed;
|
||||
*/
|
||||
@@ -112,6 +106,14 @@ class ISVCDecoder {
|
||||
unsigned char** ppDst,
|
||||
SBufferInfo* pDstInfo) = 0;
|
||||
|
||||
/*
|
||||
* This function parse input bitstream only, and rewrite possible SVC syntax to AVC syntax
|
||||
* return: 0 - success; otherwise -failed;
|
||||
*/
|
||||
virtual DECODING_STATE EXTAPI DecodeParser (const unsigned char* pSrc,
|
||||
const int iSrcLen,
|
||||
SParserBsInfo* pDstInfo) = 0;
|
||||
|
||||
/*
|
||||
* this API does not work for now!! This is for future use to support non-I420 color format output.
|
||||
*/
|
||||
@@ -151,8 +153,6 @@ int (*Uninitialize) (ISVCEncoder*);
|
||||
int (*EncodeFrame) (ISVCEncoder*, const SSourcePicture* kpSrcPic, SFrameBSInfo* pBsInfo);
|
||||
int (*EncodeParameterSets) (ISVCEncoder*, SFrameBSInfo* pBsInfo);
|
||||
|
||||
int (*PauseFrame) (ISVCEncoder*, const SSourcePicture* kpSrcPic, SFrameBSInfo* pBsInfo);
|
||||
|
||||
int (*ForceIntraFrame) (ISVCEncoder*, bool bIDR);
|
||||
|
||||
int (*SetOption) (ISVCEncoder*, ENCODER_OPTION eOptionId, void* pOption);
|
||||
@@ -177,6 +177,10 @@ DECODING_STATE (*DecodeFrame2) (ISVCDecoder*, const unsigned char* pSrc,
|
||||
unsigned char** ppDst,
|
||||
SBufferInfo* pDstInfo);
|
||||
|
||||
DECODING_STATE (*DecodeParser) (ISVCDecoder*, const unsigned char* pSrc,
|
||||
const int iSrcLen,
|
||||
SParserBsInfo* pDstInfo);
|
||||
|
||||
DECODING_STATE (*DecodeFrameEx) (ISVCDecoder*, const unsigned char* pSrc,
|
||||
const int iSrcLen,
|
||||
unsigned char* pDst,
|
||||
@@ -196,6 +200,7 @@ typedef void (*WelsTraceCallback) (void* ctx, int level, const char* string);
|
||||
int WelsCreateSVCEncoder (ISVCEncoder** ppEncoder);
|
||||
void WelsDestroySVCEncoder (ISVCEncoder* pEncoder);
|
||||
|
||||
int WelsGetDecoderCapability (SDecoderCapability* pDecCapability);
|
||||
long WelsCreateDecoder (ISVCDecoder** ppDecoder);
|
||||
void WelsDestroyDecoder (ISVCDecoder* pDecoder);
|
||||
|
||||
|
||||
@@ -89,8 +89,9 @@ typedef enum {
|
||||
|
||||
ENCODER_LTR_RECOVERY_REQUEST,
|
||||
ENCODER_LTR_MARKING_FEEDBACK,
|
||||
ENCOCER_LTR_MARKING_PERIOD,
|
||||
ENCODER_LTR_MARKING_PERIOD,
|
||||
ENCODER_OPTION_LTR,
|
||||
ENCODER_OPTION_COMPLEXITY,
|
||||
|
||||
ENCODER_OPTION_ENABLE_SSEI, //enable SSEI: true--enable ssei; false--disable ssei
|
||||
ENCODER_OPTION_ENABLE_PREFIX_NAL_ADDING, //enable prefix: true--enable prefix; false--disable prefix
|
||||
@@ -101,6 +102,12 @@ typedef enum {
|
||||
ENCODER_OPTION_TRACE_LEVEL,
|
||||
ENCODER_OPTION_TRACE_CALLBACK, // a void (*)(void* context, int level, const char* message) function which receives log messages
|
||||
ENCODER_OPTION_TRACE_CALLBACK_CONTEXT,
|
||||
|
||||
ENCODER_OPTION_GET_STATISTICS, //read only
|
||||
ENCODER_OPTION_STATISTICS_LOG_INTERVAL, // log interval in milliseconds
|
||||
|
||||
// advanced algorithmetic settings
|
||||
ENCODER_OPTION_IS_LOSSLESS_LINK
|
||||
} ENCODER_OPTION;
|
||||
|
||||
/* Option types introduced in decoder application */
|
||||
@@ -118,13 +125,15 @@ typedef enum {
|
||||
DECODER_OPTION_TRACE_CALLBACK, // a void (*)(void* context, int level, const char* message) function which receives log messages
|
||||
DECODER_OPTION_TRACE_CALLBACK_CONTEXT,
|
||||
|
||||
DECODER_OPTION_GET_STATISTICS
|
||||
|
||||
} DECODER_OPTION;
|
||||
|
||||
//enuerate the types of error concealment methods
|
||||
typedef enum {
|
||||
ERROR_CON_DISABLE = 0,
|
||||
ERROR_CON_FRAME_COPY,
|
||||
ERROR_CON_SLICE_COPY,
|
||||
ERROR_CON_SLICE_COPY
|
||||
} ERROR_CON_IDC;
|
||||
|
||||
typedef enum { //feedback that whether or not have VCL NAL in current AU
|
||||
@@ -144,14 +153,14 @@ typedef enum {
|
||||
SPATIAL_LAYER_1 = 1,
|
||||
SPATIAL_LAYER_2 = 2,
|
||||
SPATIAL_LAYER_3 = 3,
|
||||
SPATIAL_LAYER_ALL = 4,
|
||||
SPATIAL_LAYER_ALL = 4
|
||||
} LAYER_NUM;
|
||||
|
||||
//enumerate the type of video bitstream which is provided to decoder
|
||||
typedef enum {
|
||||
VIDEO_BITSTREAM_AVC = 0,
|
||||
VIDEO_BITSTREAM_SVC = 1,
|
||||
VIDEO_BITSTREAM_DEFAULT = VIDEO_BITSTREAM_SVC,
|
||||
VIDEO_BITSTREAM_DEFAULT = VIDEO_BITSTREAM_SVC
|
||||
} VIDEO_BITSTREAM_TYPE;
|
||||
|
||||
typedef enum {
|
||||
@@ -160,7 +169,7 @@ typedef enum {
|
||||
IDR_RECOVERY_REQUEST = 2,
|
||||
NO_LTR_MARKING_FEEDBACK = 3,
|
||||
LTR_MARKING_SUCCESS = 4,
|
||||
LTR_MARKING_FAILED = 5,
|
||||
LTR_MARKING_FAILED = 5
|
||||
} KEY_FRAME_REQUEST_TYPE;
|
||||
|
||||
typedef struct {
|
||||
@@ -176,6 +185,10 @@ typedef struct {
|
||||
int iLTRFrameNum; //specify current decoder frame_num
|
||||
} SLTRMarkingFeedback;
|
||||
|
||||
typedef struct {
|
||||
bool bEnableLongTermReference; // 1: on, 0: off
|
||||
int iLTRRefNum; //TODO: not supported to set it arbitrary yet
|
||||
} SLTRConfig;
|
||||
typedef struct {
|
||||
unsigned int
|
||||
uiSliceMbNum[MAX_SLICES_NUM_TMP]; //here we use a tmp fixed value since MAX_SLICES_NUM is not defined here and its definition may be changed;
|
||||
@@ -196,8 +209,8 @@ typedef enum {
|
||||
typedef enum {
|
||||
RC_QUALITY_MODE = 0, //Quality mode
|
||||
RC_BITRATE_MODE = 1, //Bitrate mode
|
||||
RC_LOW_BW_MODE = 2, //bitrate limited mode
|
||||
RC_OFF_MODE = -1, // rate control off mode
|
||||
RC_BUFFERBASED_MODE = 2,//no bitrate control,only using buffer status,adjust the video quality
|
||||
RC_OFF_MODE = -1 // rate control off mode
|
||||
} RC_MODES;
|
||||
|
||||
typedef enum {
|
||||
@@ -212,7 +225,7 @@ typedef enum {
|
||||
PRO_CAVLC444 = 244,
|
||||
|
||||
PRO_SCALABLE_BASELINE = 83,
|
||||
PRO_SCALABLE_HIGH = 86,
|
||||
PRO_SCALABLE_HIGH = 86
|
||||
} EProfileIdc;
|
||||
|
||||
typedef enum {
|
||||
@@ -269,15 +282,19 @@ typedef struct {
|
||||
|
||||
typedef enum {
|
||||
CAMERA_VIDEO_REAL_TIME, //camera video signal
|
||||
SCREEN_CONTENT_REAL_TIME,//screen content signal
|
||||
SCREEN_CONTENT_REAL_TIME //screen content signal
|
||||
} EUsageType;
|
||||
|
||||
typedef enum {
|
||||
LOW_COMPLEXITY, //the lowest compleixty,the fastest speed,
|
||||
MEDIUM_COMPLEXITY, //medium complexity, medium speed,medium quality
|
||||
HIGH_COMPLEXITY //high complexity, lowest speed, high quality
|
||||
} ECOMPLEXITY_MODE;
|
||||
// TODO: Refine the parameters definition.
|
||||
// SVC Encoding Parameters
|
||||
typedef struct TagEncParamBase {
|
||||
EUsageType
|
||||
iUsageType; //application type;// CAMERA_VIDEO_REAL_TIME: //camera video signal; SCREEN_CONTENT_REAL_TIME: screen content signal;
|
||||
int iInputCsp; // color space of input sequence
|
||||
|
||||
int iPicWidth; // width of picture in samples
|
||||
int iPicHeight; // height of picture in samples
|
||||
@@ -291,7 +308,6 @@ typedef struct TagEncParamBase {
|
||||
typedef struct TagEncParamExt {
|
||||
EUsageType
|
||||
iUsageType; //application type;// CAMERA_VIDEO_REAL_TIME: //camera video signal; SCREEN_CONTENT_REAL_TIME: screen content signal;
|
||||
int iInputCsp; // color space of input sequence
|
||||
|
||||
int iPicWidth; // width of picture in samples
|
||||
int iPicHeight; // height of picture in samples
|
||||
@@ -303,9 +319,9 @@ typedef struct TagEncParamExt {
|
||||
int iSpatialLayerNum; // layer number at spatial level
|
||||
SSpatialLayerConfig sSpatialLayers[MAX_SPATIAL_LAYER_NUM];
|
||||
|
||||
ECOMPLEXITY_MODE iComplexityMode;
|
||||
unsigned int uiIntraPeriod; // period of Intra frame
|
||||
int iNumRefFrame; // number of reference frame used
|
||||
unsigned int uiFrameToBeCoded; // frame to be encoded (at input frame rate)
|
||||
bool bEnableSpsPpsIdAddition;
|
||||
bool bPrefixNalAddingCtrl;
|
||||
bool bEnableSSEI;
|
||||
@@ -320,8 +336,8 @@ typedef struct TagEncParamExt {
|
||||
unsigned int uiMaxNalSize;
|
||||
|
||||
/*LTR settings*/
|
||||
bool bEnableLongTermReference; // 0: on, 1: off
|
||||
int iLTRRefNum;
|
||||
bool bEnableLongTermReference; // 1: on, 0: off
|
||||
int iLTRRefNum; //TODO: not supported to set it arbitrary yet
|
||||
unsigned int iLtrMarkPeriod;
|
||||
|
||||
/* multi-thread settings*/
|
||||
@@ -338,6 +354,9 @@ typedef struct TagEncParamExt {
|
||||
bool bEnableAdaptiveQuant; // adaptive quantization control
|
||||
bool bEnableFrameCroppingFlag;// enable frame cropping flag: TRUE always in application
|
||||
bool bEnableSceneChangeDetect;
|
||||
|
||||
/*LTR advanced setting*/
|
||||
bool bIsLosslessLink;
|
||||
} SEncParamExt;
|
||||
|
||||
//Define a new struct to show the property of video bitstream.
|
||||
@@ -350,11 +369,11 @@ typedef struct {
|
||||
typedef struct TagSVCDecodingParam {
|
||||
char* pFileNameRestructed; // File name of restructed frame used for PSNR calculation based debug
|
||||
|
||||
int iOutputColorFormat; // color space format to be outputed, EVideoFormatType specified in codec_def.h
|
||||
EVideoFormatType eOutputColorFormat; // color space format to be outputed, EVideoFormatType specified in codec_def.h
|
||||
unsigned int uiCpuLoad; // CPU load
|
||||
unsigned char uiTargetDqLayer; // Setting target dq layer id
|
||||
|
||||
unsigned char uiEcActiveFlag; // Whether active error concealment feature in decoder
|
||||
ERROR_CON_IDC eEcActiveIdc; // Whether active error concealment feature in decoder
|
||||
|
||||
SVideoProperty sVideoProperty;
|
||||
} SDecodingParam, *PDecodingParam;
|
||||
@@ -416,8 +435,63 @@ typedef struct TagLevelInfo {
|
||||
} SLevelInfo;
|
||||
|
||||
typedef struct TagDeliveryStatus {
|
||||
int iDropNum; //the number of video frames that are dropped continuously before delivery to encoder, which is used by screen content.
|
||||
int iDropFrameType; // the frame type that is dropped
|
||||
int iDropFrameSize; // the frame size that is dropped
|
||||
bool bDeliveryFlag; //0: the previous frame isn't delivered,1: the previous frame is delivered
|
||||
int iDropFrameType; // the frame type that is dropped; reserved
|
||||
int iDropFrameSize; // the frame size that is dropped; reserved
|
||||
} SDeliveryStatus;
|
||||
|
||||
typedef struct TagDecoderCapability {
|
||||
int iProfileIdc;
|
||||
int iProfileIop;
|
||||
int iLevelIdc;
|
||||
int iMaxMbps;
|
||||
int iMaxFs;
|
||||
int iMaxCpb;
|
||||
int iMaxDpb;
|
||||
int iMaxBr;
|
||||
bool bRedPicCap;
|
||||
} SDecoderCapability;
|
||||
|
||||
typedef struct TagParserBsInfo {
|
||||
int iNalNum; //total NAL number in current AU
|
||||
int iNalLenInByte [MAX_NAL_UNITS_IN_LAYER]; //each nal length
|
||||
unsigned char* pDstBuff; //outputted dst buffer for parsed bitstream
|
||||
int iSpsWidthInPixel; //required SPS width info
|
||||
int iSpsHeightInPixel; //required SPS height info
|
||||
} SParserBsInfo, PParserBsInfo;
|
||||
|
||||
typedef struct TagVideoEncoderStatistics {
|
||||
unsigned int uiWidth; // the width of encoded frame
|
||||
unsigned int uiHeight; // the height of encoded frame
|
||||
//following standard, will be 16x aligned, if there are multiple spatial, this is of the highest
|
||||
float fAverageFrameSpeedInMs; // Average_Encoding_Time
|
||||
|
||||
// rate control related
|
||||
float fAverageFrameRate; // the average frame rate in, calculate since encoding starts, supposed that the input timestamp is in unit of ms
|
||||
float fLatestFrameRate; // the frame rate in, in the last second, supposed that the input timestamp is in unit of ms (? useful for checking BR, but is it easy to calculate?
|
||||
unsigned int uiBitRate; // sendrate in Bits per second, calculated within the set time-window
|
||||
|
||||
unsigned int uiInputFrameCount; // number of frames
|
||||
unsigned int uiSkippedFrameCount; // number of frames
|
||||
|
||||
unsigned int uiResolutionChangeTimes; // uiResolutionChangeTimes
|
||||
unsigned int uiIDRReqNum; // number of IDR requests
|
||||
unsigned int uiIDRSentNum; // number of actual IDRs sent
|
||||
unsigned int uiLTRSentNum; // number of LTR sent/marked
|
||||
} SEncoderStatistics; // in building, coming soon
|
||||
|
||||
typedef struct TagVideoDecoderStatistics {
|
||||
unsigned int uiWidth; // the width of encode/decode frame
|
||||
unsigned int uiHeight; // the height of encode/decode frame
|
||||
float fAverageFrameSpeedInMs; // Average_Decoding_Time
|
||||
|
||||
unsigned int uiDecodedFrameCount; // number of frames
|
||||
unsigned int uiResolutionChangeTimes; // uiResolutionChangeTimes
|
||||
unsigned int
|
||||
uiAvgEcRatio; // when EC is on, the average ratio of correct or EC areas, can be an indicator of reconstruction quality
|
||||
unsigned int uiIDRReqNum; // number of actual IDR request
|
||||
unsigned int uiLTRReqNum; // number of actual LTR request
|
||||
unsigned int uiIDRRecvNum; // number of actual IDR received
|
||||
} SDecoderStatistics; // in building, coming soon
|
||||
|
||||
#endif//WELS_VIDEO_CODEC_APPLICATION_DEFINITION_H__
|
||||
|
||||
@@ -63,7 +63,7 @@ typedef enum {
|
||||
videoFrameTypeI, /* I frame type */
|
||||
videoFrameTypeP, /* P frame type */
|
||||
videoFrameTypeSkip, /* Skip the frame based encoder kernel */
|
||||
videoFrameTypeIPMixed, /* Frame type introduced I and P slices are mixing */
|
||||
videoFrameTypeIPMixed /* Frame type introduced I and P slices are mixing */
|
||||
} EVideoFrameType;
|
||||
|
||||
typedef enum {
|
||||
@@ -72,7 +72,7 @@ typedef enum {
|
||||
cmUnkonwReason,
|
||||
cmMallocMemeError, /*Malloc a memory error*/
|
||||
cmInitExpected, /*Initial action is expected*/
|
||||
cmUnsupportedData,
|
||||
cmUnsupportedData
|
||||
} CM_RETURN;
|
||||
|
||||
/* nal unit type */
|
||||
@@ -93,7 +93,7 @@ enum ENalPriority {
|
||||
NAL_PRIORITY_DISPOSABLE = 0,
|
||||
NAL_PRIORITY_LOW = 1,
|
||||
NAL_PRIORITY_HIGH = 2,
|
||||
NAL_PRIORITY_HIGHEST = 3,
|
||||
NAL_PRIORITY_HIGHEST = 3
|
||||
};
|
||||
|
||||
#define IS_PARAMETER_SET_NAL(eNalRefIdc, eNalType) \
|
||||
@@ -116,7 +116,7 @@ enum {
|
||||
ET_IR_R3 = 0x10, // Intra Refresh in predifined 10% MB
|
||||
ET_FEC_HALF = 0x20, // Forward Error Correction in 50% redundency mode
|
||||
ET_FEC_FULL = 0x40, // Forward Error Correction in 100% redundency mode
|
||||
ET_RFS = 0x80, // Reference Frame Selection
|
||||
ET_RFS = 0x80 // Reference Frame Selection
|
||||
};
|
||||
|
||||
/* information of coded Slice(=NAL)(s) */
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.wels.dec;
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
import android.os.Process;
|
||||
import android.util.Log;
|
||||
|
||||
import android.view.KeyEvent;
|
||||
@@ -15,103 +16,136 @@ import java.io.*;
|
||||
import java.util.Vector;
|
||||
|
||||
public class WelsDecTest extends Activity {
|
||||
/** Called when the activity is first created. */
|
||||
private OnClickListener OnClickEvent;
|
||||
private Button mBtnLoad, mBtnStartSW;
|
||||
/** Called when the activity is first created. */
|
||||
private OnClickListener OnClickEvent;
|
||||
private Button mBtnLoad, mBtnStartSW;
|
||||
|
||||
final String mStreamPath = "/sdcard/wels-seq/";
|
||||
Vector<String> mStreamFiles = new Vector<String>();
|
||||
final String mStreamPath = "/sdcard/welsdec/";
|
||||
Vector<String> mStreamFiles = new Vector<String>();
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
final TextView tv = new TextView(this);
|
||||
System.out.println("Here we go ...");
|
||||
Log.i(TAG, "sdcard path:" + Environment.getExternalStorageDirectory().getAbsolutePath());
|
||||
setContentView(R.layout.main);
|
||||
@Override
|
||||
public void onCreate (Bundle savedInstanceState) {
|
||||
super.onCreate (savedInstanceState);
|
||||
final TextView tv = new TextView (this);
|
||||
System.out.println ("Here we go ...");
|
||||
Log.i (TAG, "sdcard path:" + Environment.getExternalStorageDirectory().getAbsolutePath());
|
||||
setContentView (R.layout.main);
|
||||
|
||||
mBtnLoad = (Button)findViewById(R.id.cfg);
|
||||
mBtnStartSW = (Button)findViewById(R.id.buttonSW);
|
||||
mBtnLoad = (Button)findViewById (R.id.cfg);
|
||||
mBtnStartSW = (Button)findViewById (R.id.buttonSW);
|
||||
|
||||
OnClickEvent = new OnClickListener()
|
||||
{
|
||||
public void onClick(View v)
|
||||
{
|
||||
switch(v.getId())
|
||||
{
|
||||
case R.id.cfg:
|
||||
{
|
||||
String cfgFile = mStreamPath + "BitStreams.txt";
|
||||
try {
|
||||
BufferedReader bufferedReader = new BufferedReader(new FileReader(cfgFile));
|
||||
String text;
|
||||
while((text = bufferedReader.readLine()) != null) {
|
||||
mStreamFiles.add(mStreamPath + text);
|
||||
Log.i(TAG, mStreamPath + text);
|
||||
}
|
||||
bufferedReader.close();
|
||||
} catch(IOException e) {
|
||||
Log.e("WELS_DEC", e.getMessage());
|
||||
}
|
||||
}
|
||||
break;
|
||||
case R.id.buttonSW:
|
||||
{
|
||||
System.out.println("decode sequence number = " + mStreamFiles.size());
|
||||
Log.i("WSE_DEC","after click");
|
||||
try {
|
||||
for (int k=0; k < mStreamFiles.size(); k++) {
|
||||
String inFile = mStreamFiles.get(k);
|
||||
String outFile = mStreamFiles.get(k) + ".yuv";
|
||||
Log.i(TAG, "input file:" + inFile+ " output file:" + outFile);
|
||||
DoDecoderTest(inFile, outFile);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, e.getMessage());
|
||||
}
|
||||
mStreamFiles.clear();
|
||||
tv.setText( "Decoder is completed!" );
|
||||
}
|
||||
break;
|
||||
}
|
||||
OnClickEvent = new OnClickListener() {
|
||||
public void onClick (View v) {
|
||||
switch (v.getId()) {
|
||||
case R.id.cfg: {
|
||||
String cfgFile = mStreamPath + "BitStreams.txt";
|
||||
try {
|
||||
BufferedReader bufferedReader = new BufferedReader (new FileReader (cfgFile));
|
||||
String text;
|
||||
while ((text = bufferedReader.readLine()) != null) {
|
||||
mStreamFiles.add (mStreamPath + text);
|
||||
Log.i (TAG, mStreamPath + text);
|
||||
}
|
||||
};
|
||||
|
||||
mBtnLoad.setOnClickListener(OnClickEvent);
|
||||
mBtnStartSW.setOnClickListener(OnClickEvent);
|
||||
|
||||
System.out.println("Done!");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart()
|
||||
{
|
||||
Log.i("WSE_DEC","welsdecdemo onStart");
|
||||
super.onStart();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
||||
switch (keyCode) {
|
||||
case KeyEvent.KEYCODE_BACK:
|
||||
return true;
|
||||
default:
|
||||
return super.onKeyDown(keyCode, event);
|
||||
bufferedReader.close();
|
||||
} catch (IOException e) {
|
||||
Log.e ("WELS_DEC", e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case R.id.buttonSW: {
|
||||
System.out.println ("decode sequence number = " + mStreamFiles.size());
|
||||
Log.i ("WSE_DEC", "after click");
|
||||
try {
|
||||
for (int k = 0; k < mStreamFiles.size(); k++) {
|
||||
String inFile = mStreamFiles.get (k);
|
||||
String outFile = mStreamFiles.get (k) + ".yuv";
|
||||
Log.i (TAG, "input file:" + inFile + " output file:" + outFile);
|
||||
DoDecoderTest (inFile, outFile);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e (TAG, e.getMessage());
|
||||
}
|
||||
mStreamFiles.clear();
|
||||
tv.setText ("Decoder is completed!");
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
public native void DoDecoderTest(String infilename, String outfilename);
|
||||
private static final String TAG = "welsdec";
|
||||
static {
|
||||
try {
|
||||
System.loadLibrary("openh264");
|
||||
System.loadLibrary("stlport_shared");
|
||||
System.loadLibrary("welsdecdemo");
|
||||
Log.v(TAG, "Load libwelsdec successful");
|
||||
mBtnLoad.setOnClickListener (OnClickEvent);
|
||||
mBtnStartSW.setOnClickListener (OnClickEvent);
|
||||
|
||||
System.out.println ("Done!");
|
||||
//if you want to run the demo manually, just comment following 2 lines
|
||||
runAutoDec();
|
||||
}
|
||||
public void runAutoDec() {
|
||||
Thread thread = new Thread() {
|
||||
|
||||
public void run() {
|
||||
Log.i (TAG, "decoder performance test begin");
|
||||
|
||||
File bitstreams = new File (mStreamPath);
|
||||
String[] list = bitstreams.list();
|
||||
if (list == null || list.length == 0) {
|
||||
Log.i (TAG, "have not find any coder resourse");
|
||||
finish();
|
||||
}
|
||||
catch(Exception e) {
|
||||
Log.e(TAG, "Failed to load welsdec"+e.getMessage());
|
||||
for (int i = 0; i < list.length; i++) {
|
||||
|
||||
String inFile = list[i];
|
||||
inFile = mStreamPath + inFile;
|
||||
String outFile = inFile + ".yuv";
|
||||
DoDecoderTest (inFile, outFile);
|
||||
|
||||
|
||||
}
|
||||
Log.i (TAG, "decoder performance test finish");
|
||||
finish();
|
||||
}
|
||||
|
||||
};
|
||||
thread.start();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
Log.i ("WSE_DEC", "welsdecdemo onStart");
|
||||
super.onStart();
|
||||
}
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
|
||||
Log.i (TAG, "OnDestroy");
|
||||
|
||||
Process.killProcess (Process.myPid());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onKeyDown (int keyCode, KeyEvent event) {
|
||||
switch (keyCode) {
|
||||
case KeyEvent.KEYCODE_BACK:
|
||||
return true;
|
||||
default:
|
||||
return super.onKeyDown (keyCode, event);
|
||||
}
|
||||
}
|
||||
|
||||
public native void DoDecoderTest (String infilename, String outfilename);
|
||||
private static final String TAG = "welsdec";
|
||||
static {
|
||||
try {
|
||||
System.loadLibrary ("openh264");
|
||||
System.loadLibrary ("stlport_shared");
|
||||
System.loadLibrary ("welsdecdemo");
|
||||
Log.v (TAG, "Load libwelsdec successful");
|
||||
} catch (Exception e) {
|
||||
Log.e (TAG, "Failed to load welsdec" + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,27 @@
|
||||
|
||||
extern "C" int EncMain (int argc, char* argv[]);
|
||||
extern "C"
|
||||
JNIEXPORT void JNICALL Java_com_wels_enc_WelsEncTest_DoEncoderAutoTest
|
||||
(JNIEnv* env, jobject thiz, jstring jsIncfgName, jstring jsInlayerName, jstring jsInyuvName, jstring jsOutbitName) {
|
||||
/**************** Add the native codes/API *****************/
|
||||
const char* argv[]={
|
||||
(char*)("encConsole.exe"),
|
||||
(char*) ((*env).GetStringUTFChars (jsIncfgName, NULL)),
|
||||
(char*)("-org"),
|
||||
(char*) ((*env).GetStringUTFChars (jsInyuvName, NULL)),
|
||||
(char*)("-bf"),
|
||||
(char*) ((*env).GetStringUTFChars (jsOutbitName, NULL)),
|
||||
(char*)("-numl"),
|
||||
(char*)("1"),
|
||||
(char*)("-lconfig"),
|
||||
(char*)("0"),
|
||||
(char*) ((*env).GetStringUTFChars (jsInlayerName, NULL))
|
||||
};
|
||||
LOGI ("Start to run JNI module!+++");
|
||||
EncMain(sizeof(argv)/sizeof(argv[0]),(char**)&argv[0]);
|
||||
LOGI ("End to run JNI module!+++");
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_com_wels_enc_WelsEncTest_DoEncoderTest
|
||||
(JNIEnv* env, jobject thiz, jstring jsFileNameIn) {
|
||||
/**************** Add the native codes/API *****************/
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.wels.enc;
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
import android.os.Process;
|
||||
import android.util.Log;
|
||||
|
||||
import android.view.KeyEvent;
|
||||
@@ -15,104 +16,158 @@ import java.io.*;
|
||||
import java.util.Vector;
|
||||
|
||||
public class WelsEncTest extends Activity {
|
||||
/** Called when the activity is first created. */
|
||||
private OnClickListener OnClickEvent;
|
||||
private Button mBtnLoad, mBtnStartSW;
|
||||
/** Called when the activity is first created. */
|
||||
private OnClickListener OnClickEvent;
|
||||
private Button mBtnLoad, mBtnStartSW;
|
||||
|
||||
final String mStreamPath = "/sdcard/wels-seq/";
|
||||
Vector<String> mCfgFiles = new Vector<String>();
|
||||
final String mStreamPath = "/sdcard/welsenc/";
|
||||
Vector<String> mCfgFiles = new Vector<String>();
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
final TextView tv = new TextView(this);
|
||||
System.out.println("Here we go ...");
|
||||
Log.i(TAG, "sdcard path:" + Environment.getExternalStorageDirectory().getAbsolutePath());
|
||||
setContentView(R.layout.main);
|
||||
@Override
|
||||
public void onCreate (Bundle savedInstanceState) {
|
||||
super.onCreate (savedInstanceState);
|
||||
final TextView tv = new TextView (this);
|
||||
System.out.println ("Here we go ...");
|
||||
Log.i (TAG, "sdcard path:" + Environment.getExternalStorageDirectory().getAbsolutePath());
|
||||
setContentView (R.layout.main);
|
||||
|
||||
mBtnLoad = (Button)findViewById(R.id.cfg);
|
||||
mBtnStartSW = (Button)findViewById(R.id.buttonSW);
|
||||
mBtnLoad = (Button)findViewById (R.id.cfg);
|
||||
mBtnStartSW = (Button)findViewById (R.id.buttonSW);
|
||||
|
||||
|
||||
OnClickEvent = new OnClickListener()
|
||||
{
|
||||
public void onClick(View v)
|
||||
{
|
||||
switch(v.getId())
|
||||
{
|
||||
case R.id.cfg:
|
||||
{
|
||||
String cfgFile = mStreamPath + "cfgs.txt";
|
||||
try {
|
||||
BufferedReader bufferedReader = new BufferedReader(new FileReader(cfgFile));
|
||||
String text;
|
||||
while((text = bufferedReader.readLine()) != null) {
|
||||
mCfgFiles.add(mStreamPath + text);
|
||||
Log.i(TAG, mStreamPath + text);
|
||||
}
|
||||
bufferedReader.close();
|
||||
} catch(IOException e) {
|
||||
Log.e(TAG, e.getMessage());
|
||||
}
|
||||
}
|
||||
break;
|
||||
case R.id.buttonSW:
|
||||
{
|
||||
System.out.println("decode sequence number = " + mCfgFiles.size());
|
||||
Log.i(TAG,"after click");
|
||||
try {
|
||||
for (int k=0; k < mCfgFiles.size(); k++) {
|
||||
String cfgFile = mCfgFiles.get(k);
|
||||
DoEncoderTest(cfgFile);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, e.getMessage());
|
||||
}
|
||||
mCfgFiles.clear();
|
||||
tv.setText( "Decoder is completed!" );
|
||||
}
|
||||
break;
|
||||
}
|
||||
OnClickEvent = new OnClickListener() {
|
||||
public void onClick (View v) {
|
||||
switch (v.getId()) {
|
||||
case R.id.cfg: {
|
||||
String cfgFile = mStreamPath + "cfgs.txt";
|
||||
try {
|
||||
BufferedReader bufferedReader = new BufferedReader (new FileReader (cfgFile));
|
||||
String text;
|
||||
while ((text = bufferedReader.readLine()) != null) {
|
||||
mCfgFiles.add (mStreamPath + text);
|
||||
Log.i (TAG, mStreamPath + text);
|
||||
}
|
||||
};
|
||||
|
||||
mBtnLoad.setOnClickListener(OnClickEvent);
|
||||
mBtnStartSW.setOnClickListener(OnClickEvent);
|
||||
|
||||
System.out.println("Done!");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart()
|
||||
{
|
||||
Log.i(TAG,"welsdecdemo onStart");
|
||||
super.onStart();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
||||
switch (keyCode) {
|
||||
case KeyEvent.KEYCODE_BACK:
|
||||
return true;
|
||||
default:
|
||||
return super.onKeyDown(keyCode, event);
|
||||
bufferedReader.close();
|
||||
} catch (IOException e) {
|
||||
Log.e (TAG, e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case R.id.buttonSW: {
|
||||
System.out.println ("encode sequence number = " + mCfgFiles.size());
|
||||
Log.i (TAG, "after click");
|
||||
try {
|
||||
for (int k = 0; k < mCfgFiles.size(); k++) {
|
||||
String cfgFile = mCfgFiles.get (k);
|
||||
DoEncoderTest (cfgFile);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e (TAG, e.getMessage());
|
||||
}
|
||||
mCfgFiles.clear();
|
||||
tv.setText ("Encoder is completed!");
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
public native void DoEncoderTest(String cfgFileName);
|
||||
private static final String TAG = "welsenc";
|
||||
static {
|
||||
try {
|
||||
System.loadLibrary("openh264");
|
||||
System.loadLibrary("stlport_shared");
|
||||
System.loadLibrary("welsencdemo");
|
||||
Log.v(TAG, "Load libwelsencdemo.so successful");
|
||||
mBtnLoad.setOnClickListener (OnClickEvent);
|
||||
mBtnStartSW.setOnClickListener (OnClickEvent);
|
||||
|
||||
System.out.println ("Done!");
|
||||
//run the test automatically,if you not want to autotest, just comment this line
|
||||
runAutoEnc();
|
||||
}
|
||||
|
||||
public void runAutoEnc() {
|
||||
Thread thread = new Thread() {
|
||||
|
||||
public void run() {
|
||||
Log.i (TAG, "encoder performance test begin");
|
||||
String inYuvfile = null, outBitfile = null, inOrgfile = null, inLayerfile = null;
|
||||
File encCase = new File (mStreamPath);
|
||||
String[] caseNum = encCase.list();
|
||||
if (caseNum == null || caseNum.length == 0) {
|
||||
Log.i (TAG, "have not find any encoder resourse");
|
||||
finish();
|
||||
}
|
||||
catch(Exception e) {
|
||||
Log.e(TAG, "Failed to load welsdec"+e.getMessage());
|
||||
|
||||
for (int i = 0; i < caseNum.length; i++) {
|
||||
String[] yuvName = null;
|
||||
File yuvPath = null;
|
||||
File encCaseNo = new File (mStreamPath + caseNum[i]);
|
||||
String[] encFile = encCaseNo.list();
|
||||
|
||||
for (int k = 0; k < encFile.length; k++) {
|
||||
if (encFile[k].compareToIgnoreCase ("welsenc.cfg") == 0)
|
||||
|
||||
inOrgfile = encCaseNo + File.separator + encFile[k];
|
||||
|
||||
else if (encFile[k].compareToIgnoreCase ("layer2.cfg") == 0)
|
||||
inLayerfile = encCaseNo + File.separator + encFile[k];
|
||||
else if (encFile[k].compareToIgnoreCase ("yuv") == 0) {
|
||||
yuvPath = new File (encCaseNo + File.separator + encFile[k]);
|
||||
yuvName = yuvPath.list();
|
||||
}
|
||||
}
|
||||
for (int m = 0; m < yuvName.length; m++) {
|
||||
inYuvfile = yuvPath + File.separator + yuvName[m];
|
||||
outBitfile = inYuvfile + ".264";
|
||||
Log.i (TAG, "enc yuv file:" + yuvName[m]);
|
||||
DoEncoderAutoTest (inOrgfile, inLayerfile, inYuvfile, outBitfile);
|
||||
}
|
||||
}
|
||||
|
||||
Log.i (TAG, "encoder performance test finish");
|
||||
finish();
|
||||
}
|
||||
|
||||
};
|
||||
thread.start();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
Log.i (TAG, "welsencdemo onStart");
|
||||
super.onStart();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
|
||||
Log.i (TAG, "OnDestroy");
|
||||
|
||||
Process.killProcess (Process.myPid());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onKeyDown (int keyCode, KeyEvent event) {
|
||||
switch (keyCode) {
|
||||
case KeyEvent.KEYCODE_BACK:
|
||||
return true;
|
||||
default:
|
||||
return super.onKeyDown (keyCode, event);
|
||||
}
|
||||
}
|
||||
|
||||
public native void DoEncoderTest (String cfgFileName);
|
||||
public native void DoEncoderAutoTest (String cfgFileName, String layerFileName, String yuvFileName,
|
||||
String outBitsName);
|
||||
private static final String TAG = "welsenc";
|
||||
static {
|
||||
try {
|
||||
System.loadLibrary ("openh264");
|
||||
System.loadLibrary ("stlport_shared");
|
||||
System.loadLibrary ("welsencdemo");
|
||||
Log.v (TAG, "Load libwelsencdemo.so successful");
|
||||
} catch (Exception e) {
|
||||
Log.e (TAG, "Failed to load welsenc" + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -25,6 +25,9 @@
|
||||
F5AC94FF193EB7D800F58154 /* deblocking_aarch64_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = F5AC94FE193EB7D800F58154 /* deblocking_aarch64_neon.S */; };
|
||||
F5B8D82D190757290037849A /* mc_aarch64_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = F5B8D82C190757290037849A /* mc_aarch64_neon.S */; };
|
||||
F5BB0BB8196BB5960072D50D /* copy_mb_aarch64_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = F5BB0BB7196BB5960072D50D /* copy_mb_aarch64_neon.S */; };
|
||||
F791965419D3B89D00F60C6B /* intra_pred_common_aarch64_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = F791965319D3B89D00F60C6B /* intra_pred_common_aarch64_neon.S */; };
|
||||
F791965619D3B8A600F60C6B /* intra_pred_common_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = F791965519D3B8A600F60C6B /* intra_pred_common_neon.S */; };
|
||||
F791965919D3BE2200F60C6B /* intra_pred_common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F791965819D3BE2200F60C6B /* intra_pred_common.cpp */; };
|
||||
FAABAA1818E9354A00D4186F /* sad_common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAABAA1718E9354A00D4186F /* sad_common.cpp */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
@@ -74,6 +77,10 @@
|
||||
F5AC94FE193EB7D800F58154 /* deblocking_aarch64_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = deblocking_aarch64_neon.S; path = arm64/deblocking_aarch64_neon.S; sourceTree = "<group>"; };
|
||||
F5B8D82C190757290037849A /* mc_aarch64_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = mc_aarch64_neon.S; path = arm64/mc_aarch64_neon.S; sourceTree = "<group>"; };
|
||||
F5BB0BB7196BB5960072D50D /* copy_mb_aarch64_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = copy_mb_aarch64_neon.S; path = arm64/copy_mb_aarch64_neon.S; sourceTree = "<group>"; };
|
||||
F791965319D3B89D00F60C6B /* intra_pred_common_aarch64_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = intra_pred_common_aarch64_neon.S; path = arm64/intra_pred_common_aarch64_neon.S; sourceTree = "<group>"; };
|
||||
F791965519D3B8A600F60C6B /* intra_pred_common_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = intra_pred_common_neon.S; sourceTree = "<group>"; };
|
||||
F791965719D3BA9300F60C6B /* intra_pred_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = intra_pred_common.h; sourceTree = "<group>"; };
|
||||
F791965819D3BE2200F60C6B /* intra_pred_common.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = intra_pred_common.cpp; sourceTree = "<group>"; };
|
||||
FAABAA1618E9353F00D4186F /* sad_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sad_common.h; sourceTree = "<group>"; };
|
||||
FAABAA1718E9354A00D4186F /* sad_common.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sad_common.cpp; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
@@ -93,6 +100,7 @@
|
||||
4C3406B118D96EA600DFA14A /* arm */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F791965519D3B8A600F60C6B /* intra_pred_common_neon.S */,
|
||||
4CC61F0818FF6B4B00E56EAB /* copy_mb_neon.S */,
|
||||
4C3406B218D96EA600DFA14A /* arm_arch_common_macro.S */,
|
||||
4C3406B318D96EA600DFA14A /* deblocking_neon.S */,
|
||||
@@ -105,6 +113,7 @@
|
||||
4C3406B618D96EA600DFA14A /* inc */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F791965719D3BA9300F60C6B /* intra_pred_common.h */,
|
||||
F0B204F718FD23B6005DA23F /* copy_mb.h */,
|
||||
FAABAA1618E9353F00D4186F /* sad_common.h */,
|
||||
4C3406B718D96EA600DFA14A /* cpu.h */,
|
||||
@@ -126,6 +135,7 @@
|
||||
4C3406C318D96EA600DFA14A /* src */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F791965819D3BE2200F60C6B /* intra_pred_common.cpp */,
|
||||
5BA8F2BF19603F5F00011CE4 /* common_tables.cpp */,
|
||||
F0B204F818FD23BF005DA23F /* copy_mb.cpp */,
|
||||
FAABAA1718E9354A00D4186F /* sad_common.cpp */,
|
||||
@@ -179,6 +189,7 @@
|
||||
F556A81D1906669F00E156A8 /* arm64 */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F791965319D3B89D00F60C6B /* intra_pred_common_aarch64_neon.S */,
|
||||
F5BB0BB7196BB5960072D50D /* copy_mb_aarch64_neon.S */,
|
||||
F5AC94FE193EB7D800F58154 /* deblocking_aarch64_neon.S */,
|
||||
F5B8D82C190757290037849A /* mc_aarch64_neon.S */,
|
||||
@@ -244,12 +255,15 @@
|
||||
F556A8241906673900E156A8 /* arm_arch64_common_macro.S in Sources */,
|
||||
F5AC94FF193EB7D800F58154 /* deblocking_aarch64_neon.S in Sources */,
|
||||
4C3406CE18D96EA600DFA14A /* crt_util_safe_x.cpp in Sources */,
|
||||
F791965919D3BE2200F60C6B /* intra_pred_common.cpp in Sources */,
|
||||
4C3406CF18D96EA600DFA14A /* deblocking_common.cpp in Sources */,
|
||||
5BA8F2C019603F5F00011CE4 /* common_tables.cpp in Sources */,
|
||||
F791965419D3B89D00F60C6B /* intra_pred_common_aarch64_neon.S in Sources */,
|
||||
4C3406D118D96EA600DFA14A /* WelsThreadLib.cpp in Sources */,
|
||||
4C3406CC18D96EA600DFA14A /* mc_neon.S in Sources */,
|
||||
F5BB0BB8196BB5960072D50D /* copy_mb_aarch64_neon.S in Sources */,
|
||||
4C3406CB18D96EA600DFA14A /* expand_picture_neon.S in Sources */,
|
||||
F791965619D3B8A600F60C6B /* intra_pred_common_neon.S in Sources */,
|
||||
4CC61F0918FF6B4B00E56EAB /* copy_mb_neon.S in Sources */,
|
||||
53C1C9BC193F0FB000404D8F /* expand_pic.cpp in Sources */,
|
||||
4C3406CD18D96EA600DFA14A /* cpu.cpp in Sources */,
|
||||
@@ -294,7 +308,7 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
};
|
||||
@@ -325,7 +339,7 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
SDKROOT = iphoneos;
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
@@ -354,8 +368,6 @@
|
||||
HAVE_NEON,
|
||||
);
|
||||
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*]" = APPLE_IOS;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.1;
|
||||
ONLY_ACTIVE_ARCH = NO;
|
||||
OTHER_LDFLAGS = "-ObjC";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
@@ -383,7 +395,6 @@
|
||||
HAVE_NEON,
|
||||
);
|
||||
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*]" = APPLE_IOS;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.1;
|
||||
OTHER_LDFLAGS = "-ObjC";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
|
||||
@@ -42,6 +42,20 @@
|
||||
remoteGlobalIDString = 4CE4427918B6FC360017DF25;
|
||||
remoteInfo = welsdec;
|
||||
};
|
||||
541044A6199888F800B44931 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 4CE444FA18B72AD70017DF25 /* welsdec.xcodeproj */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 4CE4427818B6FC360017DF25;
|
||||
remoteInfo = welsdec;
|
||||
};
|
||||
541044A8199888F800B44931 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 4CE444F018B72A8F0017DF25 /* common.xcodeproj */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 4CE443D418B722CD0017DF25;
|
||||
remoteInfo = common;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
@@ -53,7 +67,7 @@
|
||||
F0E6634D1810EFA5000C888E /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
|
||||
F0E663511810EFA5000C888E /* demo-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "demo-Info.plist"; sourceTree = "<group>"; };
|
||||
F0E663531810EFA5000C888E /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
F0E663551810EFA5000C888E /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
F0E663551810EFA5000C888E /* main.m */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; path = main.m; sourceTree = "<group>"; };
|
||||
F0E663581810EFA5000C888E /* DEMOAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DEMOAppDelegate.h; sourceTree = "<group>"; };
|
||||
F0E663591810EFA5000C888E /* DEMOAppDelegate.m */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp.preprocessed; path = DEMOAppDelegate.m; sourceTree = "<group>"; };
|
||||
F0E6635B1810EFA5000C888E /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = "<group>"; };
|
||||
@@ -206,6 +220,8 @@
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
541044A7199888F800B44931 /* PBXTargetDependency */,
|
||||
541044A9199888F800B44931 /* PBXTargetDependency */,
|
||||
);
|
||||
name = demo;
|
||||
productName = demo;
|
||||
@@ -299,6 +315,19 @@
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
541044A7199888F800B44931 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = welsdec;
|
||||
targetProxy = 541044A6199888F800B44931 /* PBXContainerItemProxy */;
|
||||
};
|
||||
541044A9199888F800B44931 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = common;
|
||||
targetProxy = 541044A8199888F800B44931 /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
F0E663521810EFA5000C888E /* InfoPlist.strings */ = {
|
||||
isa = PBXVariantGroup;
|
||||
@@ -352,7 +381,7 @@
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.1;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
@@ -377,7 +406,7 @@
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.1;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
@@ -398,6 +427,7 @@
|
||||
APPLE_IOS,
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"$(SRCROOT)/../../../../api/svc\"",
|
||||
"\"$(SRCROOT)/../../../../common/inc\"",
|
||||
);
|
||||
@@ -417,6 +447,7 @@
|
||||
GCC_C_LANGUAGE_STANDARD = "compiler-default";
|
||||
GCC_PREPROCESSOR_DEFINITIONS = APPLE_IOS;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"$(SRCROOT)/../../../../api/svc\"",
|
||||
"\"$(SRCROOT)/../../../../common/inc\"",
|
||||
);
|
||||
|
||||
@@ -34,9 +34,91 @@
|
||||
|
||||
#import "DEMOAppDelegate.h"
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
@autoreleasepool {
|
||||
return UIApplicationMain(argc, argv, nil, NSStringFromClass([DEMOAppDelegate class]));
|
||||
}
|
||||
extern int DecMain (int argc, char* argv[]);
|
||||
|
||||
//redirect NSLog and stdout to logfile
|
||||
void redirectLogToDocumentFile() {
|
||||
NSArray* path = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
|
||||
NSString* document = [path objectAtIndex:0];
|
||||
NSString* fileName = [NSString stringWithFormat:@"decPerf.log"];
|
||||
NSString* logPath = [document stringByAppendingPathComponent:fileName];
|
||||
|
||||
NSFileManager* defaultManager = [NSFileManager defaultManager];
|
||||
[defaultManager removeItemAtPath:logPath error:nil];
|
||||
|
||||
freopen ([logPath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stdout);
|
||||
freopen ([logPath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stderr);
|
||||
}
|
||||
|
||||
|
||||
//run auto test to get encoder performance
|
||||
int AutoTestDec() {
|
||||
|
||||
|
||||
NSString* document = [[NSString alloc] init];
|
||||
NSArray* paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
|
||||
if ([paths count] == 0) {
|
||||
NSLog (@"could not find document path");
|
||||
return 2;
|
||||
}
|
||||
document = [paths objectAtIndex:0];
|
||||
|
||||
|
||||
NSString* decFilePath = [document stringByAppendingString:@"/DecoderPerfTestRes"];
|
||||
NSFileManager* manage = [NSFileManager defaultManager];
|
||||
|
||||
NSString* outYuvPath = [decFilePath stringByAppendingString:@"/yuv"];
|
||||
[manage removeItemAtPath:outYuvPath error:nil];
|
||||
[manage createDirectoryAtPath:outYuvPath withIntermediateDirectories:YES attributes:nil error: nil];
|
||||
|
||||
|
||||
NSArray* bitstreams = [manage subpathsAtPath:decFilePath];
|
||||
if (bitstreams == nil) {
|
||||
NSLog (@"could not find any bitstream under decoderperfpath");
|
||||
return 1;
|
||||
}
|
||||
|
||||
redirectLogToDocumentFile(); //output to console, just comment this line
|
||||
|
||||
for (int caseNO = 0; caseNO < [bitstreams count]; caseNO++) {
|
||||
|
||||
NSString* caseName = [bitstreams objectAtIndex:caseNO];
|
||||
if ([caseName isEqual: @"yuv"]) {
|
||||
break;
|
||||
}
|
||||
NSString* bitstream = [decFilePath stringByAppendingString:@"/"];
|
||||
bitstream = [bitstream stringByAppendingString:caseName];
|
||||
NSString* yuvFileName = [caseName stringByAppendingString:@".yuv"];
|
||||
NSString* tmpyuvFileName = [outYuvPath stringByAppendingString:@"/"];
|
||||
yuvFileName = [tmpyuvFileName stringByAppendingString:yuvFileName];
|
||||
|
||||
[manage createFileAtPath:yuvFileName contents:nil attributes:nil];
|
||||
|
||||
const char* argvv[] = {
|
||||
"decConsole.exe",
|
||||
[bitstream UTF8String],
|
||||
[yuvFileName UTF8String]
|
||||
};
|
||||
DecMain (sizeof (argvv) / sizeof (argvv[0]), (char**)&argvv[0]);
|
||||
[manage removeItemAtPath:yuvFileName error:nil];//FOR limited devices spaces
|
||||
fflush (stdout); // flush the content of stdout instantly
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main (int argc, char* argv[]) {
|
||||
//***For auto testing of decoder performance, call auto test here, if you not want to do auto test, you can comment it manualy
|
||||
|
||||
if (AutoTestDec() == 0)
|
||||
NSLog (@"Auto testing running sucessfully");
|
||||
else
|
||||
NSLog (@"Auto testing running failed");
|
||||
abort();
|
||||
//********
|
||||
|
||||
@autoreleasepool {
|
||||
return UIApplicationMain (argc, argv, nil, NSStringFromClass ([DEMOAppDelegate class]));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
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 */; };
|
||||
4CE447AE18BC6BE90017DF25 /* intra_pred_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 4CE447A918BC6BE90017DF25 /* intra_pred_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 */; };
|
||||
9AED66591946A203009A3567 /* utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AED66581946A203009A3567 /* utils.cpp */; };
|
||||
@@ -49,6 +50,7 @@
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
04FE0680196FD8BE0004D7CE /* version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = version.h; path = ../../../common/inc/version.h; sourceTree = "<group>"; };
|
||||
4CBC1B80194AC4E100214D9E /* intra_pred_aarch64_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = intra_pred_aarch64_neon.S; path = arm64/intra_pred_aarch64_neon.S; sourceTree = "<group>"; };
|
||||
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; };
|
||||
@@ -107,6 +109,7 @@
|
||||
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>"; };
|
||||
4CE447A918BC6BE90017DF25 /* intra_pred_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = intra_pred_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>"; };
|
||||
@@ -132,6 +135,7 @@
|
||||
4CBC1B7F194AC4A400214D9E /* arm64 */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
6C749B69197CC6E600A111F9 /* block_add_aarch64_neon.S */,
|
||||
4CBC1B80194AC4E100214D9E /* intra_pred_aarch64_neon.S */,
|
||||
);
|
||||
name = arm64;
|
||||
@@ -265,6 +269,7 @@
|
||||
4CE4467C18BC5EAA0017DF25 /* inc */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
04FE0680196FD8BE0004D7CE /* version.h */,
|
||||
9AED66571946A1EB009A3567 /* welsCodecTrace.h */,
|
||||
4CE4467E18BC5EAA0017DF25 /* welsDecoderExt.h */,
|
||||
);
|
||||
@@ -351,6 +356,7 @@
|
||||
4CE4468A18BC5EAB0017DF25 /* au_parser.cpp in Sources */,
|
||||
4CE4469918BC5EAB0017DF25 /* mv_pred.cpp in Sources */,
|
||||
4CE447AC18BC6BE90017DF25 /* block_add_neon.S in Sources */,
|
||||
6C749B6A197CC6E600A111F9 /* block_add_aarch64_neon.S in Sources */,
|
||||
4CE4469418BC5EAB0017DF25 /* get_intra_predictor.cpp in Sources */,
|
||||
9AED66561946A1DE009A3567 /* welsCodecTrace.cpp in Sources */,
|
||||
F0B204FC18FD23D8005DA23F /* error_concealment.cpp in Sources */,
|
||||
@@ -404,7 +410,7 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
};
|
||||
@@ -435,7 +441,7 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
SDKROOT = iphoneos;
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
@@ -464,13 +470,12 @@
|
||||
);
|
||||
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*]" = APPLE_IOS;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(SRCROOT)/../../../../common/inc",
|
||||
"$(SRCROOT)/../../../../api/svc",
|
||||
"$(SRCROOT)/../../../../common/arm",
|
||||
"$(SRCROOT)/../../../../common/arm64",
|
||||
);
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.1;
|
||||
ONLY_ACTIVE_ARCH = NO;
|
||||
OTHER_LDFLAGS = "-ObjC";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
@@ -499,13 +504,12 @@
|
||||
);
|
||||
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*]" = APPLE_IOS;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(SRCROOT)/../../../../common/inc",
|
||||
"$(SRCROOT)/../../../../api/svc",
|
||||
"$(SRCROOT)/../../../../common/arm",
|
||||
"$(SRCROOT)/../../../../common/arm64",
|
||||
);
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.1;
|
||||
ONLY_ACTIVE_ARCH = NO;
|
||||
OTHER_LDFLAGS = "-ObjC";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
544F0DC4196F86F50092FC6F /* libprocessing.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 544F0DC3196F86EF0092FC6F /* libprocessing.a */; };
|
||||
FAA3D9D318BD729500BCD52D /* welsenc_ios.cfg in Resources */ = {isa = PBXBuildFile; fileRef = FAA3D9D218BD729500BCD52D /* welsenc_ios.cfg */; };
|
||||
FAA3D9D818BD777100BCD52D /* CiscoVT2people_320x192_12fps.yuv in Resources */ = {isa = PBXBuildFile; fileRef = FAA3D9D718BD777100BCD52D /* CiscoVT2people_320x192_12fps.yuv */; };
|
||||
FAA3D9DD18BD8A5600BCD52D /* layer2.cfg in Resources */ = {isa = PBXBuildFile; fileRef = FAA3D9DC18BD8A5600BCD52D /* layer2.cfg */; };
|
||||
@@ -21,13 +22,26 @@
|
||||
FAFB4FC218BC8DD700315438 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = FAFB4FC118BC8DD700315438 /* ViewController.m */; };
|
||||
FAFB4FC418BC8DD700315438 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FAFB4FC318BC8DD700315438 /* Images.xcassets */; };
|
||||
FAFB500318BC8F0D00315438 /* libcommon.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FAFB4FF118BC8E8600315438 /* libcommon.a */; };
|
||||
FAFB500418BC8F1100315438 /* libprocessing.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FAFB4FFA18BC8E9A00315438 /* libprocessing.a */; };
|
||||
FAFB500518BC8F1500315438 /* libwelsenc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FAFB4FE818BC8E7D00315438 /* libwelsenc.a */; };
|
||||
FAFB500B18BC8F6C00315438 /* welsenc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAFB500A18BC8F6C00315438 /* welsenc.cpp */; };
|
||||
FAFB502F18BCA50900315438 /* read_config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAFB502E18BCA50900315438 /* read_config.cpp */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
544F0DBF196F86EF0092FC6F /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 544F0DB9196F85F20092FC6F /* processing.xcodeproj */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 5499477B196A3F3900BA3D87;
|
||||
remoteInfo = processing;
|
||||
};
|
||||
544F0DC2196F86EF0092FC6F /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 544F0DB9196F85F20092FC6F /* processing.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 5499477C196A3F3900BA3D87;
|
||||
remoteInfo = processing;
|
||||
};
|
||||
FAFB4FE718BC8E7D00315438 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = FAFB4FE218BC8E7C00315438 /* welsenc.xcodeproj */;
|
||||
@@ -42,13 +56,6 @@
|
||||
remoteGlobalIDString = 4CE443D518B722CD0017DF25;
|
||||
remoteInfo = common;
|
||||
};
|
||||
FAFB4FF918BC8E9A00315438 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = FAFB4FF418BC8E9A00315438 /* processing.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 4CE4443118B724B60017DF25;
|
||||
remoteInfo = processing;
|
||||
};
|
||||
FAFB4FFD18BC8EAA00315438 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = FAFB4FEB18BC8E8600315438 /* common.xcodeproj */;
|
||||
@@ -56,13 +63,6 @@
|
||||
remoteGlobalIDString = 4CE443D418B722CD0017DF25;
|
||||
remoteInfo = common;
|
||||
};
|
||||
FAFB4FFF18BC8EAF00315438 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = FAFB4FF418BC8E9A00315438 /* processing.xcodeproj */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 4CE4443018B724B60017DF25;
|
||||
remoteInfo = processing;
|
||||
};
|
||||
FAFB500118BC8EB200315438 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = FAFB4FE218BC8E7C00315438 /* welsenc.xcodeproj */;
|
||||
@@ -73,6 +73,7 @@
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
544F0DB9196F85F20092FC6F /* processing.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = processing.xcodeproj; path = ../../processing/processing.xcodeproj; sourceTree = "<group>"; };
|
||||
FAA3D9D218BD729500BCD52D /* welsenc_ios.cfg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = welsenc_ios.cfg; path = ../../../../../../testbin/welsenc_ios.cfg; sourceTree = "<group>"; };
|
||||
FAA3D9D718BD777100BCD52D /* CiscoVT2people_320x192_12fps.yuv */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = CiscoVT2people_320x192_12fps.yuv; path = ../../../../../../res/CiscoVT2people_320x192_12fps.yuv; sourceTree = "<group>"; };
|
||||
FAA3D9DC18BD8A5600BCD52D /* layer2.cfg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = layer2.cfg; path = ../../../../../../testbin/layer2.cfg; sourceTree = "<group>"; };
|
||||
@@ -93,7 +94,6 @@
|
||||
FAFB4FC318BC8DD700315438 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
|
||||
FAFB4FE218BC8E7C00315438 /* welsenc.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = welsenc.xcodeproj; path = ../welsenc/welsenc.xcodeproj; sourceTree = "<group>"; };
|
||||
FAFB4FEB18BC8E8600315438 /* common.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = common.xcodeproj; path = ../../common/common.xcodeproj; sourceTree = "<group>"; };
|
||||
FAFB4FF418BC8E9A00315438 /* processing.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = processing.xcodeproj; path = ../../../../processing/build/iOS/processing.xcodeproj; sourceTree = "<group>"; };
|
||||
FAFB500918BC8F6600315438 /* read_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = read_config.h; sourceTree = "<group>"; };
|
||||
FAFB500A18BC8F6C00315438 /* welsenc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = welsenc.cpp; sourceTree = "<group>"; };
|
||||
FAFB502E18BCA50900315438 /* read_config.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = read_config.cpp; path = ../../common/src/read_config.cpp; sourceTree = "<group>"; };
|
||||
@@ -104,8 +104,8 @@
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
544F0DC4196F86F50092FC6F /* libprocessing.a in Frameworks */,
|
||||
FAFB500518BC8F1500315438 /* libwelsenc.a in Frameworks */,
|
||||
FAFB500418BC8F1100315438 /* libprocessing.a in Frameworks */,
|
||||
FAFB500318BC8F0D00315438 /* libcommon.a in Frameworks */,
|
||||
FAFB4FAB18BC8DD700315438 /* CoreGraphics.framework in Frameworks */,
|
||||
FAFB4FAD18BC8DD700315438 /* UIKit.framework in Frameworks */,
|
||||
@@ -116,6 +116,14 @@
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
544F0DBA196F85F20092FC6F /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
544F0DC3196F86EF0092FC6F /* libprocessing.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FAFB4F9C18BC8DD700315438 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -136,7 +144,7 @@
|
||||
FAFB4FA718BC8DD700315438 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FAFB4FF418BC8E9A00315438 /* processing.xcodeproj */,
|
||||
544F0DB9196F85F20092FC6F /* processing.xcodeproj */,
|
||||
FAFB4FEB18BC8E8600315438 /* common.xcodeproj */,
|
||||
FAFB4FE218BC8E7C00315438 /* welsenc.xcodeproj */,
|
||||
FAFB4FA818BC8DD700315438 /* Foundation.framework */,
|
||||
@@ -192,14 +200,6 @@
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FAFB4FF518BC8E9A00315438 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FAFB4FFA18BC8E9A00315438 /* libprocessing.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FAFB500618BC8F2800315438 /* console */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -242,8 +242,8 @@
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
544F0DC0196F86EF0092FC6F /* PBXTargetDependency */,
|
||||
FAFB500218BC8EB200315438 /* PBXTargetDependency */,
|
||||
FAFB500018BC8EAF00315438 /* PBXTargetDependency */,
|
||||
FAFB4FFE18BC8EAA00315438 /* PBXTargetDependency */,
|
||||
);
|
||||
name = encDemo;
|
||||
@@ -277,8 +277,8 @@
|
||||
ProjectRef = FAFB4FEB18BC8E8600315438 /* common.xcodeproj */;
|
||||
},
|
||||
{
|
||||
ProductGroup = FAFB4FF518BC8E9A00315438 /* Products */;
|
||||
ProjectRef = FAFB4FF418BC8E9A00315438 /* processing.xcodeproj */;
|
||||
ProductGroup = 544F0DBA196F85F20092FC6F /* Products */;
|
||||
ProjectRef = 544F0DB9196F85F20092FC6F /* processing.xcodeproj */;
|
||||
},
|
||||
{
|
||||
ProductGroup = FAFB4FE318BC8E7C00315438 /* Products */;
|
||||
@@ -293,6 +293,13 @@
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXReferenceProxy section */
|
||||
544F0DC3196F86EF0092FC6F /* libprocessing.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libprocessing.a;
|
||||
remoteRef = 544F0DC2196F86EF0092FC6F /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
FAFB4FE818BC8E7D00315438 /* libwelsenc.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
@@ -307,13 +314,6 @@
|
||||
remoteRef = FAFB4FF018BC8E8600315438 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
FAFB4FFA18BC8E9A00315438 /* libprocessing.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libprocessing.a;
|
||||
remoteRef = FAFB4FF918BC8E9A00315438 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
/* End PBXReferenceProxy section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
@@ -349,16 +349,16 @@
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
544F0DC0196F86EF0092FC6F /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = processing;
|
||||
targetProxy = 544F0DBF196F86EF0092FC6F /* PBXContainerItemProxy */;
|
||||
};
|
||||
FAFB4FFE18BC8EAA00315438 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = common;
|
||||
targetProxy = FAFB4FFD18BC8EAA00315438 /* PBXContainerItemProxy */;
|
||||
};
|
||||
FAFB500018BC8EAF00315438 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = processing;
|
||||
targetProxy = FAFB4FFF18BC8EAF00315438 /* PBXContainerItemProxy */;
|
||||
};
|
||||
FAFB500218BC8EB200315438 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = welsenc;
|
||||
@@ -426,14 +426,7 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"/Applications/Xcode\\ 5.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include",
|
||||
"\"$(SRCROOT)/../../../../api/svc\"",
|
||||
"\"$(SRCROOT)/../../../../processing/interface\"",
|
||||
"\"$(SRCROOT)/../../../../encoder/core/inc\"",
|
||||
);
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
@@ -466,14 +459,7 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"/Applications/Xcode\\ 5.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include",
|
||||
"\"$(SRCROOT)/../../../../api/svc\"",
|
||||
"\"$(SRCROOT)/../../../../processing/interface\"",
|
||||
"\"$(SRCROOT)/../../../../encoder/core/inc\"",
|
||||
);
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
@@ -488,9 +474,10 @@
|
||||
GCC_PREPROCESSOR_DEFINITIONS = APPLE_IOS;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"/Applications/Xcode\\ 5.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include",
|
||||
"\"$(SRCROOT)/../../../../api/svc\"",
|
||||
"\"$(SRCROOT)/../../../../common/inc\"",
|
||||
"\"$(SRCROOT)/../../../../processing/interface\"",
|
||||
"\"$(SRCROOT)/../../../../encoder/core/inc\"",
|
||||
);
|
||||
INFOPLIST_FILE = "encDemo/encDemo-Info.plist";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
@@ -506,9 +493,10 @@
|
||||
GCC_PREPROCESSOR_DEFINITIONS = APPLE_IOS;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"/Applications/Xcode\\ 5.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include",
|
||||
"\"$(SRCROOT)/../../../../api/svc\"",
|
||||
"\"$(SRCROOT)/../../../../common/inc\"",
|
||||
"\"$(SRCROOT)/../../../../processing/interface\"",
|
||||
"\"$(SRCROOT)/../../../../encoder/core/inc\"",
|
||||
);
|
||||
INFOPLIST_FILE = "encDemo/encDemo-Info.plist";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
|
||||
@@ -70,6 +70,8 @@ extern int EncMain(int argc, char **argv);
|
||||
[bsfile UTF8String],
|
||||
"-numl",
|
||||
"1",
|
||||
"-lconfig",
|
||||
"0",
|
||||
[dlayerCfg UTF8String],
|
||||
};
|
||||
NSLog(@"WELS_INFO: enc config file: %@", encCfg);
|
||||
|
||||
@@ -35,9 +35,141 @@
|
||||
|
||||
#import "AppDelegate.h"
|
||||
|
||||
int main(int argc, char * argv[])
|
||||
{
|
||||
@autoreleasepool {
|
||||
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
|
||||
}
|
||||
extern int EncMain (int argc, char** argv);
|
||||
|
||||
//redirect NSLog and stdout to logfile
|
||||
void redirectLogToDocumentFile() {
|
||||
NSArray* path = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
|
||||
NSString* document = [path objectAtIndex:0];
|
||||
NSString* fileName = [NSString stringWithFormat:@"encPerf.log"];
|
||||
NSString* logPath = [document stringByAppendingPathComponent:fileName];
|
||||
|
||||
NSFileManager* defaultManager = [NSFileManager defaultManager];
|
||||
[defaultManager removeItemAtPath:logPath error:nil];
|
||||
|
||||
freopen ([logPath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stdout);
|
||||
freopen ([logPath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stderr);
|
||||
}
|
||||
|
||||
//to judge whether the path is needed case path
|
||||
bool IsOneDeptDir (NSString* path) {
|
||||
BOOL isDir = NO;
|
||||
BOOL isOneDeptDir = NO;
|
||||
NSFileManager* fileManager = [NSFileManager defaultManager];
|
||||
NSArray* dirPathArray = [fileManager subpathsAtPath:path];
|
||||
if ([dirPathArray count] == 0 || dirPathArray == nil)
|
||||
isOneDeptDir = NO;
|
||||
else {
|
||||
for (NSString * dirPath in dirPathArray) {
|
||||
NSString* tmpPath = [path stringByAppendingString:@"/"];
|
||||
tmpPath = [tmpPath stringByAppendingString:dirPath];
|
||||
[fileManager fileExistsAtPath:tmpPath isDirectory:&isDir];
|
||||
if (isDir) {
|
||||
isOneDeptDir = YES;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return isOneDeptDir;
|
||||
}
|
||||
|
||||
//run auto test to get encoder performance
|
||||
int AutoTestEnc() {
|
||||
NSString* document = [[NSString alloc] init];
|
||||
NSArray* paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
|
||||
if ([paths count] == 0) {
|
||||
NSLog (@"could not find document path");
|
||||
return 2;
|
||||
}
|
||||
document = [paths objectAtIndex:0];
|
||||
|
||||
NSString* encFilePath = [document stringByAppendingString:@"/EncoderPerfTestRes"];
|
||||
NSFileManager* manage = [NSFileManager defaultManager];
|
||||
|
||||
NSArray* cases = [manage subpathsAtPath:encFilePath];
|
||||
if (cases == nil) {
|
||||
NSLog (@"could not find any test case under encoderperftest");
|
||||
return 1;
|
||||
|
||||
}
|
||||
redirectLogToDocumentFile();
|
||||
NSMutableArray* dirArray = [[NSMutableArray alloc] init];
|
||||
for (NSString * casePath in cases) {
|
||||
|
||||
NSString* path = [encFilePath stringByAppendingPathComponent:casePath];
|
||||
if (IsOneDeptDir (path)) {
|
||||
[dirArray addObject:casePath];
|
||||
}
|
||||
|
||||
}
|
||||
for (int caseNO = 0; caseNO < [dirArray count]; caseNO++) {
|
||||
|
||||
NSString* caseName = [dirArray objectAtIndex:caseNO];
|
||||
NSString* caseFilePath = [encFilePath stringByAppendingString:@"/"];
|
||||
caseFilePath = [caseFilePath stringByAppendingString:caseName];
|
||||
[manage changeCurrentDirectoryPath:[caseFilePath stringByExpandingTildeInPath]];
|
||||
|
||||
NSString* welscfg = [caseFilePath stringByAppendingString:@"/welsenc.cfg"];
|
||||
NSString* layercfg = [caseFilePath stringByAppendingString:@"/layer2.cfg"];
|
||||
NSString* yuvFilePath = [caseFilePath stringByAppendingString:@"/yuv"];
|
||||
NSString* bitFilePath = [caseFilePath stringByAppendingString:@"/bit"];
|
||||
[manage removeItemAtPath:bitFilePath error:nil];
|
||||
[manage createDirectoryAtPath:bitFilePath withIntermediateDirectories:YES attributes:nil error:nil];
|
||||
|
||||
|
||||
NSArray* files = [manage subpathsAtPath:yuvFilePath];
|
||||
|
||||
[manage changeCurrentDirectoryPath:[bitFilePath stringByExpandingTildeInPath]];
|
||||
|
||||
for (int i = 0; i < [files count]; i++) {
|
||||
NSString* yuvFileName = [files objectAtIndex:i];
|
||||
NSString* bitFileName = [yuvFileName stringByAppendingString:@".264"];
|
||||
|
||||
NSString* bitFileNamePath = [bitFilePath stringByAppendingString:@"/"];
|
||||
bitFileName = [bitFileNamePath stringByAppendingString:bitFileName];
|
||||
|
||||
|
||||
[manage createFileAtPath:bitFileName contents:nil attributes:nil];
|
||||
[manage changeCurrentDirectoryPath:[yuvFilePath stringByExpandingTildeInPath]];
|
||||
const char* argvv[] = {
|
||||
"dummy",
|
||||
[welscfg UTF8String],
|
||||
"-org",
|
||||
[yuvFileName UTF8String],
|
||||
"-bf",
|
||||
[bitFileName UTF8String],
|
||||
"-numl",
|
||||
"1",
|
||||
"-lconfig",
|
||||
"0",
|
||||
[layercfg UTF8String]
|
||||
};
|
||||
|
||||
NSLog (@"WELS_INFO: enc config file: %@", welscfg);
|
||||
NSLog (@"WELS_INFO: enc yuv file: %@", yuvFileName);
|
||||
EncMain (sizeof (argvv) / sizeof (argvv[0]), (char**)&argvv[0]);
|
||||
fflush (stdout); // flush the content of stdout instantly
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int main (int argc, char* argv[]) {
|
||||
|
||||
|
||||
//***For auto testing of encoder performance, call auto test here, if you not want to do auto test, you can comment it manualy
|
||||
|
||||
if (AutoTestEnc() == 0)
|
||||
NSLog (@"Auto testing running sucessfully");
|
||||
else
|
||||
NSLog (@"Auto testing running failed");
|
||||
abort();
|
||||
//************************
|
||||
@autoreleasepool {
|
||||
return UIApplicationMain (argc, argv, nil, NSStringFromClass ([AppDelegate class]));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,6 +45,8 @@
|
||||
4CE4472918BC605C0017DF25 /* svc_set_mb_syn_cavlc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE446F818BC605C0017DF25 /* svc_set_mb_syn_cavlc.cpp */; };
|
||||
4CE4472B18BC605C0017DF25 /* wels_preprocess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE446FA18BC605C0017DF25 /* wels_preprocess.cpp */; };
|
||||
4CE4472E18BC605C0017DF25 /* welsEncoderExt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4470618BC605C0017DF25 /* welsEncoderExt.cpp */; };
|
||||
6CA38DA31991CACE003EAAE0 /* svc_motion_estimation.S in Sources */ = {isa = PBXBuildFile; fileRef = 6CA38DA21991CACE003EAAE0 /* svc_motion_estimation.S */; };
|
||||
6CA38DA51991D31A003EAAE0 /* svc_motion_estimation_aarch64_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 6CA38DA41991D31A003EAAE0 /* svc_motion_estimation_aarch64_neon.S */; };
|
||||
9AED665019469FC1009A3567 /* welsCodecTrace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AED664C19469FC1009A3567 /* welsCodecTrace.cpp */; };
|
||||
9AED66661946A2B3009A3567 /* utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AED66651946A2B3009A3567 /* utils.cpp */; };
|
||||
F5617A50196A833A006E2B20 /* reconstruct_aarch64_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = F5617A4F196A833A006E2B20 /* reconstruct_aarch64_neon.S */; };
|
||||
@@ -64,6 +66,7 @@
|
||||
/* End PBXCopyFilesBuildPhase 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>"; };
|
||||
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>"; };
|
||||
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>"; };
|
||||
@@ -153,6 +156,8 @@
|
||||
4CE446FE18BC605C0017DF25 /* welsEncoderExt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = welsEncoderExt.h; sourceTree = "<group>"; };
|
||||
4CE4470418BC605C0017DF25 /* wels_enc_export.def */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = wels_enc_export.def; sourceTree = "<group>"; };
|
||||
4CE4470618BC605C0017DF25 /* welsEncoderExt.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = welsEncoderExt.cpp; sourceTree = "<group>"; };
|
||||
6CA38DA21991CACE003EAAE0 /* svc_motion_estimation.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = svc_motion_estimation.S; sourceTree = "<group>"; };
|
||||
6CA38DA41991D31A003EAAE0 /* svc_motion_estimation_aarch64_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = svc_motion_estimation_aarch64_neon.S; path = arm64/svc_motion_estimation_aarch64_neon.S; sourceTree = "<group>"; };
|
||||
9AED664819469FAF009A3567 /* welsCodecTrace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = welsCodecTrace.h; path = ../../../common/inc/welsCodecTrace.h; sourceTree = "<group>"; };
|
||||
9AED664C19469FC1009A3567 /* welsCodecTrace.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = welsCodecTrace.cpp; path = ../../../common/src/welsCodecTrace.cpp; sourceTree = "<group>"; };
|
||||
9AED66651946A2B3009A3567 /* utils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = utils.cpp; path = ../../../common/src/utils.cpp; sourceTree = "<group>"; };
|
||||
@@ -176,6 +181,7 @@
|
||||
4C34066418C57D0400DFA14A /* arm */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
6CA38DA21991CACE003EAAE0 /* svc_motion_estimation.S */,
|
||||
4C34066618C57D0400DFA14A /* intra_pred_neon.S */,
|
||||
4C34066718C57D0400DFA14A /* intra_pred_sad_3_opt_neon.S */,
|
||||
4C34066918C57D0400DFA14A /* memory_neon.S */,
|
||||
@@ -188,6 +194,7 @@
|
||||
4CB8F2B219235FAC005D6386 /* arm64 */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
6CA38DA41991D31A003EAAE0 /* svc_motion_estimation_aarch64_neon.S */,
|
||||
F5BE8004196B913200ED02ED /* memory_aarch64_neon.S */,
|
||||
F5617A4F196A833A006E2B20 /* reconstruct_aarch64_neon.S */,
|
||||
4C23BC5F195A77E0003B81FC /* intra_pred_sad_3_opt_aarch64_neon.S */,
|
||||
@@ -347,6 +354,7 @@
|
||||
4CE446FC18BC605C0017DF25 /* inc */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
04FE0684196FD9370004D7CE /* version.h */,
|
||||
9AED664819469FAF009A3567 /* welsCodecTrace.h */,
|
||||
4CE446FE18BC605C0017DF25 /* welsEncoderExt.h */,
|
||||
);
|
||||
@@ -421,6 +429,7 @@
|
||||
4CE4471D18BC605C0017DF25 /* property.cpp in Sources */,
|
||||
4CE4471018BC605C0017DF25 /* decode_mb_aux.cpp in Sources */,
|
||||
4CE4472018BC605C0017DF25 /* sample.cpp in Sources */,
|
||||
6CA38DA31991CACE003EAAE0 /* svc_motion_estimation.S in Sources */,
|
||||
4CE4471318BC605C0017DF25 /* encoder_data_tables.cpp in Sources */,
|
||||
4C34067118C57D0400DFA14A /* pixel_neon.S in Sources */,
|
||||
9AED665019469FC1009A3567 /* welsCodecTrace.cpp in Sources */,
|
||||
@@ -453,6 +462,7 @@
|
||||
4CE4471218BC605C0017DF25 /* encoder.cpp in Sources */,
|
||||
4CE4471618BC605C0017DF25 /* get_intra_predictor.cpp in Sources */,
|
||||
4CE4472E18BC605C0017DF25 /* welsEncoderExt.cpp in Sources */,
|
||||
6CA38DA51991D31A003EAAE0 /* svc_motion_estimation_aarch64_neon.S in Sources */,
|
||||
4CE4471418BC605C0017DF25 /* encoder_ext.cpp in Sources */,
|
||||
4C34067218C57D0400DFA14A /* reconstruct_neon.S in Sources */,
|
||||
);
|
||||
@@ -492,7 +502,7 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
};
|
||||
@@ -523,7 +533,7 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
SDKROOT = iphoneos;
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
@@ -553,14 +563,13 @@
|
||||
);
|
||||
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*]" = APPLE_IOS;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(SRCROOT)/../../../../common/inc",
|
||||
"$(SRCROOT)/../../../../processing/interface",
|
||||
"$(SRCROOT)/../../../../api/svc",
|
||||
"$(SRCROOT)/../../../../common/arm",
|
||||
"$(SRCROOT)/../../../../common/arm64",
|
||||
);
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.1;
|
||||
ONLY_ACTIVE_ARCH = NO;
|
||||
OTHER_LDFLAGS = "-ObjC";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
@@ -591,13 +600,13 @@
|
||||
);
|
||||
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*]" = APPLE_IOS;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(SRCROOT)/../../../../common/inc",
|
||||
"$(SRCROOT)/../../../../processing/interface",
|
||||
"$(SRCROOT)/../../../../api/svc",
|
||||
"$(SRCROOT)/../../../../common/arm",
|
||||
"$(SRCROOT)/../../../../common/arm64",
|
||||
);
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.1;
|
||||
OTHER_LDFLAGS = "-ObjC";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
|
||||
356
codec/build/iOS/openh264/openh264.xcodeproj/project.pbxproj
Normal file
356
codec/build/iOS/openh264/openh264.xcodeproj/project.pbxproj
Normal file
@@ -0,0 +1,356 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXAggregateTarget section */
|
||||
54D5364C196CC907005442F9 /* openh264 */ = {
|
||||
isa = PBXAggregateTarget;
|
||||
buildConfigurationList = 54D5364D196CC907005442F9 /* Build configuration list for PBXAggregateTarget "openh264" */;
|
||||
buildPhases = (
|
||||
);
|
||||
dependencies = (
|
||||
54D53651196CCC40005442F9 /* PBXTargetDependency */,
|
||||
54D53653196CCC40005442F9 /* PBXTargetDependency */,
|
||||
54D53655196CCC40005442F9 /* PBXTargetDependency */,
|
||||
54D53657196CCC40005442F9 /* PBXTargetDependency */,
|
||||
);
|
||||
name = openh264;
|
||||
productName = openh264;
|
||||
};
|
||||
/* End PBXAggregateTarget section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
54D53638196CC8CB005442F9 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 54D53634196CC8CB005442F9 /* common.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 4CE443D518B722CD0017DF25;
|
||||
remoteInfo = common;
|
||||
};
|
||||
54D5363E196CC8DA005442F9 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 54D5363A196CC8DA005442F9 /* welsdec.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 4CE4427918B6FC360017DF25;
|
||||
remoteInfo = welsdec;
|
||||
};
|
||||
54D53644196CC8E6005442F9 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 54D53640196CC8E6005442F9 /* welsenc.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 4CE4431118B6FFA00017DF25;
|
||||
remoteInfo = welsenc;
|
||||
};
|
||||
54D5364A196CC8F3005442F9 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 54D53646196CC8F3005442F9 /* processing.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 5499477C196A3F3900BA3D87;
|
||||
remoteInfo = processing;
|
||||
};
|
||||
54D53650196CCC40005442F9 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 54D53646196CC8F3005442F9 /* processing.xcodeproj */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 5499477B196A3F3900BA3D87;
|
||||
remoteInfo = processing;
|
||||
};
|
||||
54D53652196CCC40005442F9 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 54D53640196CC8E6005442F9 /* welsenc.xcodeproj */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 4CE4431018B6FFA00017DF25;
|
||||
remoteInfo = welsenc;
|
||||
};
|
||||
54D53654196CCC40005442F9 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 54D5363A196CC8DA005442F9 /* welsdec.xcodeproj */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 4CE4427818B6FC360017DF25;
|
||||
remoteInfo = welsdec;
|
||||
};
|
||||
54D53656196CCC40005442F9 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 54D53634196CC8CB005442F9 /* common.xcodeproj */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 4CE443D418B722CD0017DF25;
|
||||
remoteInfo = common;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
54D53634196CC8CB005442F9 /* common.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = common.xcodeproj; path = ../common/common.xcodeproj; sourceTree = "<group>"; };
|
||||
54D5363A196CC8DA005442F9 /* welsdec.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = welsdec.xcodeproj; path = ../dec/welsdec/welsdec.xcodeproj; sourceTree = "<group>"; };
|
||||
54D53640196CC8E6005442F9 /* welsenc.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = welsenc.xcodeproj; path = ../enc/welsenc/welsenc.xcodeproj; sourceTree = "<group>"; };
|
||||
54D53646196CC8F3005442F9 /* processing.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = processing.xcodeproj; path = ../processing/processing.xcodeproj; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
54D53602196CC76D005442F9 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
54D5360D196CC76D005442F9 /* Frameworks */,
|
||||
54D5360C196CC76D005442F9 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
54D5360C196CC76D005442F9 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
54D5360D196CC76D005442F9 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
54D53646196CC8F3005442F9 /* processing.xcodeproj */,
|
||||
54D53640196CC8E6005442F9 /* welsenc.xcodeproj */,
|
||||
54D5363A196CC8DA005442F9 /* welsdec.xcodeproj */,
|
||||
54D53634196CC8CB005442F9 /* common.xcodeproj */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
54D53635196CC8CB005442F9 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
54D53639196CC8CB005442F9 /* libcommon.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
54D5363B196CC8DA005442F9 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
54D5363F196CC8DA005442F9 /* libwelsdec.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
54D53641196CC8E6005442F9 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
54D53645196CC8E6005442F9 /* libwelsenc.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
54D53647196CC8F3005442F9 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
54D5364B196CC8F3005442F9 /* libprocessing.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
54D53603196CC76D005442F9 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0510;
|
||||
ORGANIZATIONNAME = com.cisco;
|
||||
};
|
||||
buildConfigurationList = 54D53606196CC76D005442F9 /* Build configuration list for PBXProject "openh264" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
);
|
||||
mainGroup = 54D53602196CC76D005442F9;
|
||||
productRefGroup = 54D5360C196CC76D005442F9 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectReferences = (
|
||||
{
|
||||
ProductGroup = 54D53635196CC8CB005442F9 /* Products */;
|
||||
ProjectRef = 54D53634196CC8CB005442F9 /* common.xcodeproj */;
|
||||
},
|
||||
{
|
||||
ProductGroup = 54D53647196CC8F3005442F9 /* Products */;
|
||||
ProjectRef = 54D53646196CC8F3005442F9 /* processing.xcodeproj */;
|
||||
},
|
||||
{
|
||||
ProductGroup = 54D5363B196CC8DA005442F9 /* Products */;
|
||||
ProjectRef = 54D5363A196CC8DA005442F9 /* welsdec.xcodeproj */;
|
||||
},
|
||||
{
|
||||
ProductGroup = 54D53641196CC8E6005442F9 /* Products */;
|
||||
ProjectRef = 54D53640196CC8E6005442F9 /* welsenc.xcodeproj */;
|
||||
},
|
||||
);
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
54D5364C196CC907005442F9 /* openh264 */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXReferenceProxy section */
|
||||
54D53639196CC8CB005442F9 /* libcommon.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libcommon.a;
|
||||
remoteRef = 54D53638196CC8CB005442F9 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
54D5363F196CC8DA005442F9 /* libwelsdec.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libwelsdec.a;
|
||||
remoteRef = 54D5363E196CC8DA005442F9 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
54D53645196CC8E6005442F9 /* libwelsenc.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libwelsenc.a;
|
||||
remoteRef = 54D53644196CC8E6005442F9 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
54D5364B196CC8F3005442F9 /* libprocessing.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libprocessing.a;
|
||||
remoteRef = 54D5364A196CC8F3005442F9 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
/* End PBXReferenceProxy section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
54D53651196CCC40005442F9 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = processing;
|
||||
targetProxy = 54D53650196CCC40005442F9 /* PBXContainerItemProxy */;
|
||||
};
|
||||
54D53653196CCC40005442F9 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = welsenc;
|
||||
targetProxy = 54D53652196CCC40005442F9 /* PBXContainerItemProxy */;
|
||||
};
|
||||
54D53655196CCC40005442F9 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = welsdec;
|
||||
targetProxy = 54D53654196CCC40005442F9 /* PBXContainerItemProxy */;
|
||||
};
|
||||
54D53657196CCC40005442F9 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = common;
|
||||
targetProxy = 54D53656196CCC40005442F9 /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
54D5362C196CC76D005442F9 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
ONLY_ACTIVE_ARCH = NO;
|
||||
SDKROOT = iphoneos;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
54D5362D196CC76D005442F9 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
SDKROOT = iphoneos;
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
54D5364E196CC907005442F9 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
54D5364F196CC907005442F9 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
54D53606196CC76D005442F9 /* Build configuration list for PBXProject "openh264" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
54D5362C196CC76D005442F9 /* Debug */,
|
||||
54D5362D196CC76D005442F9 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
54D5364D196CC907005442F9 /* Build configuration list for PBXAggregateTarget "openh264" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
54D5364E196CC907005442F9 /* Debug */,
|
||||
54D5364F196CC907005442F9 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 54D53603196CC76D005442F9 /* Project object */;
|
||||
}
|
||||
542
codec/build/iOS/processing/processing.xcodeproj/project.pbxproj
Normal file
542
codec/build/iOS/processing/processing.xcodeproj/project.pbxproj
Normal file
@@ -0,0 +1,542 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
4CC6094F197E009D00BE8B8B /* down_sample_aarch64_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6094E197E009D00BE8B8B /* down_sample_aarch64_neon.S */; };
|
||||
4CC6095A1980F34F00BE8B8B /* vaa_calc_aarch64_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 4CC609591980F34F00BE8B8B /* vaa_calc_aarch64_neon.S */; };
|
||||
4CD0FE36199082AD00375C9A /* pixel_sad_aarch64_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 4CD0FE35199082AD00375C9A /* pixel_sad_aarch64_neon.S */; };
|
||||
54994780196A3F3900BA3D87 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5499477F196A3F3900BA3D87 /* Foundation.framework */; };
|
||||
549947DF196A3FB400BA3D87 /* AdaptiveQuantization.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947A9196A3FB400BA3D87 /* AdaptiveQuantization.cpp */; };
|
||||
549947E0196A3FB400BA3D87 /* adaptive_quantization.S in Sources */ = {isa = PBXBuildFile; fileRef = 549947AC196A3FB400BA3D87 /* adaptive_quantization.S */; };
|
||||
549947E1196A3FB400BA3D87 /* down_sample_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 549947AD196A3FB400BA3D87 /* down_sample_neon.S */; };
|
||||
549947E2196A3FB400BA3D87 /* pixel_sad_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 549947AE196A3FB400BA3D87 /* pixel_sad_neon.S */; };
|
||||
549947E3196A3FB400BA3D87 /* vaa_calc_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 549947AF196A3FB400BA3D87 /* vaa_calc_neon.S */; };
|
||||
549947E4196A3FB400BA3D87 /* BackgroundDetection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947B1196A3FB400BA3D87 /* BackgroundDetection.cpp */; };
|
||||
549947E6196A3FB400BA3D87 /* memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947B6196A3FB400BA3D87 /* memory.cpp */; };
|
||||
549947E7196A3FB400BA3D87 /* WelsFrameWork.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947BB196A3FB400BA3D87 /* WelsFrameWork.cpp */; };
|
||||
549947E8196A3FB400BA3D87 /* WelsFrameWorkEx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947BD196A3FB400BA3D87 /* WelsFrameWorkEx.cpp */; };
|
||||
549947E9196A3FB400BA3D87 /* ComplexityAnalysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947C1196A3FB400BA3D87 /* ComplexityAnalysis.cpp */; };
|
||||
549947EA196A3FB400BA3D87 /* denoise.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947C4196A3FB400BA3D87 /* denoise.cpp */; };
|
||||
549947EB196A3FB400BA3D87 /* denoise_filter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947C6196A3FB400BA3D87 /* denoise_filter.cpp */; };
|
||||
549947EC196A3FB400BA3D87 /* downsample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947C8196A3FB400BA3D87 /* downsample.cpp */; };
|
||||
549947ED196A3FB400BA3D87 /* downsamplefuncs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947CA196A3FB400BA3D87 /* downsamplefuncs.cpp */; };
|
||||
549947EE196A3FB400BA3D87 /* imagerotate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947CC196A3FB400BA3D87 /* imagerotate.cpp */; };
|
||||
549947EF196A3FB400BA3D87 /* imagerotatefuncs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947CE196A3FB400BA3D87 /* imagerotatefuncs.cpp */; };
|
||||
549947F0196A3FB400BA3D87 /* SceneChangeDetection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947D0196A3FB400BA3D87 /* SceneChangeDetection.cpp */; };
|
||||
549947F1196A3FB400BA3D87 /* ScrollDetection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947D3196A3FB400BA3D87 /* ScrollDetection.cpp */; };
|
||||
549947F2196A3FB400BA3D87 /* ScrollDetectionFuncs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947D5196A3FB400BA3D87 /* ScrollDetectionFuncs.cpp */; };
|
||||
549947F3196A3FB400BA3D87 /* vaacalcfuncs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947D8196A3FB400BA3D87 /* vaacalcfuncs.cpp */; };
|
||||
549947F4196A3FB400BA3D87 /* vaacalculation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 549947D9196A3FB400BA3D87 /* vaacalculation.cpp */; };
|
||||
6C749B78197E2A2000A111F9 /* adaptive_quantization_aarch64_neon.S in Sources */ = {isa = PBXBuildFile; fileRef = 6C749B77197E2A2000A111F9 /* adaptive_quantization_aarch64_neon.S */; };
|
||||
F791965B19D3BF6B00F60C6B /* intra_pred_common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F791965A19D3BF6B00F60C6B /* intra_pred_common.cpp */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
5499477A196A3F3900BA3D87 /* CopyFiles */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "include/$(PRODUCT_NAME)";
|
||||
dstSubfolderSpec = 16;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
4CC6094E197E009D00BE8B8B /* down_sample_aarch64_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = down_sample_aarch64_neon.S; path = arm64/down_sample_aarch64_neon.S; sourceTree = "<group>"; };
|
||||
4CC609591980F34F00BE8B8B /* vaa_calc_aarch64_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = vaa_calc_aarch64_neon.S; path = arm64/vaa_calc_aarch64_neon.S; sourceTree = "<group>"; };
|
||||
4CD0FE35199082AD00375C9A /* pixel_sad_aarch64_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = pixel_sad_aarch64_neon.S; path = arm64/pixel_sad_aarch64_neon.S; sourceTree = "<group>"; };
|
||||
5499477C196A3F3900BA3D87 /* libprocessing.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libprocessing.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
5499477F196A3F3900BA3D87 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
54994790196A3F3900BA3D87 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; };
|
||||
549947A6196A3FB400BA3D87 /* IWelsVP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IWelsVP.h; sourceTree = "<group>"; };
|
||||
549947A9196A3FB400BA3D87 /* AdaptiveQuantization.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AdaptiveQuantization.cpp; sourceTree = "<group>"; };
|
||||
549947AA196A3FB400BA3D87 /* AdaptiveQuantization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdaptiveQuantization.h; sourceTree = "<group>"; };
|
||||
549947AC196A3FB400BA3D87 /* adaptive_quantization.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = adaptive_quantization.S; sourceTree = "<group>"; };
|
||||
549947AD196A3FB400BA3D87 /* down_sample_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = down_sample_neon.S; sourceTree = "<group>"; };
|
||||
549947AE196A3FB400BA3D87 /* pixel_sad_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = pixel_sad_neon.S; sourceTree = "<group>"; };
|
||||
549947AF196A3FB400BA3D87 /* vaa_calc_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = vaa_calc_neon.S; sourceTree = "<group>"; };
|
||||
549947B1196A3FB400BA3D87 /* BackgroundDetection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BackgroundDetection.cpp; sourceTree = "<group>"; };
|
||||
549947B2196A3FB400BA3D87 /* BackgroundDetection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BackgroundDetection.h; sourceTree = "<group>"; };
|
||||
549947B5196A3FB400BA3D87 /* common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = "<group>"; };
|
||||
549947B6196A3FB400BA3D87 /* memory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = memory.cpp; sourceTree = "<group>"; };
|
||||
549947B7196A3FB400BA3D87 /* memory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = memory.h; sourceTree = "<group>"; };
|
||||
549947B8196A3FB400BA3D87 /* resource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = resource.h; sourceTree = "<group>"; };
|
||||
549947B9196A3FB400BA3D87 /* typedef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = typedef.h; sourceTree = "<group>"; };
|
||||
549947BA196A3FB400BA3D87 /* util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = util.h; sourceTree = "<group>"; };
|
||||
549947BB196A3FB400BA3D87 /* WelsFrameWork.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WelsFrameWork.cpp; sourceTree = "<group>"; };
|
||||
549947BC196A3FB400BA3D87 /* WelsFrameWork.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WelsFrameWork.h; sourceTree = "<group>"; };
|
||||
549947BD196A3FB400BA3D87 /* WelsFrameWorkEx.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WelsFrameWorkEx.cpp; sourceTree = "<group>"; };
|
||||
549947BE196A3FB400BA3D87 /* WelsVP.def */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WelsVP.def; sourceTree = "<group>"; };
|
||||
549947BF196A3FB400BA3D87 /* WelsVP.rc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WelsVP.rc; sourceTree = "<group>"; };
|
||||
549947C1196A3FB400BA3D87 /* ComplexityAnalysis.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ComplexityAnalysis.cpp; sourceTree = "<group>"; };
|
||||
549947C2196A3FB400BA3D87 /* ComplexityAnalysis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ComplexityAnalysis.h; sourceTree = "<group>"; };
|
||||
549947C4196A3FB400BA3D87 /* denoise.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = denoise.cpp; sourceTree = "<group>"; };
|
||||
549947C5196A3FB400BA3D87 /* denoise.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = denoise.h; sourceTree = "<group>"; };
|
||||
549947C6196A3FB400BA3D87 /* denoise_filter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = denoise_filter.cpp; sourceTree = "<group>"; };
|
||||
549947C8196A3FB400BA3D87 /* downsample.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = downsample.cpp; sourceTree = "<group>"; };
|
||||
549947C9196A3FB400BA3D87 /* downsample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = downsample.h; sourceTree = "<group>"; };
|
||||
549947CA196A3FB400BA3D87 /* downsamplefuncs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = downsamplefuncs.cpp; sourceTree = "<group>"; };
|
||||
549947CC196A3FB400BA3D87 /* imagerotate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = imagerotate.cpp; sourceTree = "<group>"; };
|
||||
549947CD196A3FB400BA3D87 /* imagerotate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = imagerotate.h; sourceTree = "<group>"; };
|
||||
549947CE196A3FB400BA3D87 /* imagerotatefuncs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = imagerotatefuncs.cpp; sourceTree = "<group>"; };
|
||||
549947D0196A3FB400BA3D87 /* SceneChangeDetection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SceneChangeDetection.cpp; sourceTree = "<group>"; };
|
||||
549947D1196A3FB400BA3D87 /* SceneChangeDetection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SceneChangeDetection.h; sourceTree = "<group>"; };
|
||||
549947D3196A3FB400BA3D87 /* ScrollDetection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollDetection.cpp; sourceTree = "<group>"; };
|
||||
549947D4196A3FB400BA3D87 /* ScrollDetection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollDetection.h; sourceTree = "<group>"; };
|
||||
549947D5196A3FB400BA3D87 /* ScrollDetectionFuncs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollDetectionFuncs.cpp; sourceTree = "<group>"; };
|
||||
549947D6196A3FB400BA3D87 /* ScrollDetectionFuncs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollDetectionFuncs.h; sourceTree = "<group>"; };
|
||||
549947D8196A3FB400BA3D87 /* vaacalcfuncs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vaacalcfuncs.cpp; sourceTree = "<group>"; };
|
||||
549947D9196A3FB400BA3D87 /* vaacalculation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vaacalculation.cpp; sourceTree = "<group>"; };
|
||||
549947DA196A3FB400BA3D87 /* vaacalculation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vaacalculation.h; sourceTree = "<group>"; };
|
||||
6C749B77197E2A2000A111F9 /* adaptive_quantization_aarch64_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = adaptive_quantization_aarch64_neon.S; path = arm64/adaptive_quantization_aarch64_neon.S; sourceTree = "<group>"; };
|
||||
F791965A19D3BF6B00F60C6B /* intra_pred_common.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = intra_pred_common.cpp; path = ../../../common/src/intra_pred_common.cpp; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
54994779196A3F3900BA3D87 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
54994780196A3F3900BA3D87 /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
4CC6094D197E008B00BE8B8B /* arm64 */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4CD0FE35199082AD00375C9A /* pixel_sad_aarch64_neon.S */,
|
||||
6C749B77197E2A2000A111F9 /* adaptive_quantization_aarch64_neon.S */,
|
||||
4CC609591980F34F00BE8B8B /* vaa_calc_aarch64_neon.S */,
|
||||
4CC6094E197E009D00BE8B8B /* down_sample_aarch64_neon.S */,
|
||||
);
|
||||
name = arm64;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
54994773196A3F3900BA3D87 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
549947A5196A3FB400BA3D87 /* interface */,
|
||||
549947A7196A3FB400BA3D87 /* src */,
|
||||
5499477E196A3F3900BA3D87 /* Frameworks */,
|
||||
5499477D196A3F3900BA3D87 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5499477D196A3F3900BA3D87 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5499477C196A3F3900BA3D87 /* libprocessing.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
5499477E196A3F3900BA3D87 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
5499477F196A3F3900BA3D87 /* Foundation.framework */,
|
||||
54994790196A3F3900BA3D87 /* UIKit.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
549947A5196A3FB400BA3D87 /* interface */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
549947A6196A3FB400BA3D87 /* IWelsVP.h */,
|
||||
);
|
||||
name = interface;
|
||||
path = ../../../processing/interface;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
549947A7196A3FB400BA3D87 /* src */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4CC6094D197E008B00BE8B8B /* arm64 */,
|
||||
549947A8196A3FB400BA3D87 /* adaptivequantization */,
|
||||
549947AB196A3FB400BA3D87 /* arm */,
|
||||
549947B0196A3FB400BA3D87 /* backgrounddetection */,
|
||||
549947B3196A3FB400BA3D87 /* common */,
|
||||
549947C0196A3FB400BA3D87 /* complexityanalysis */,
|
||||
549947C3196A3FB400BA3D87 /* denoise */,
|
||||
549947C7196A3FB400BA3D87 /* downsample */,
|
||||
549947CB196A3FB400BA3D87 /* imagerotate */,
|
||||
549947CF196A3FB400BA3D87 /* scenechangedetection */,
|
||||
549947D2196A3FB400BA3D87 /* scrolldetection */,
|
||||
549947D7196A3FB400BA3D87 /* vaacalc */,
|
||||
);
|
||||
name = src;
|
||||
path = ../../../processing/src;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
549947A8196A3FB400BA3D87 /* adaptivequantization */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
549947A9196A3FB400BA3D87 /* AdaptiveQuantization.cpp */,
|
||||
549947AA196A3FB400BA3D87 /* AdaptiveQuantization.h */,
|
||||
);
|
||||
path = adaptivequantization;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
549947AB196A3FB400BA3D87 /* arm */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
549947AC196A3FB400BA3D87 /* adaptive_quantization.S */,
|
||||
549947AD196A3FB400BA3D87 /* down_sample_neon.S */,
|
||||
549947AE196A3FB400BA3D87 /* pixel_sad_neon.S */,
|
||||
549947AF196A3FB400BA3D87 /* vaa_calc_neon.S */,
|
||||
);
|
||||
path = arm;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
549947B0196A3FB400BA3D87 /* backgrounddetection */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
549947B1196A3FB400BA3D87 /* BackgroundDetection.cpp */,
|
||||
549947B2196A3FB400BA3D87 /* BackgroundDetection.h */,
|
||||
);
|
||||
path = backgrounddetection;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
549947B3196A3FB400BA3D87 /* common */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
F791965A19D3BF6B00F60C6B /* intra_pred_common.cpp */,
|
||||
549947B5196A3FB400BA3D87 /* common.h */,
|
||||
549947B6196A3FB400BA3D87 /* memory.cpp */,
|
||||
549947B7196A3FB400BA3D87 /* memory.h */,
|
||||
549947B8196A3FB400BA3D87 /* resource.h */,
|
||||
549947B9196A3FB400BA3D87 /* typedef.h */,
|
||||
549947BA196A3FB400BA3D87 /* util.h */,
|
||||
549947BB196A3FB400BA3D87 /* WelsFrameWork.cpp */,
|
||||
549947BC196A3FB400BA3D87 /* WelsFrameWork.h */,
|
||||
549947BD196A3FB400BA3D87 /* WelsFrameWorkEx.cpp */,
|
||||
549947BE196A3FB400BA3D87 /* WelsVP.def */,
|
||||
549947BF196A3FB400BA3D87 /* WelsVP.rc */,
|
||||
);
|
||||
path = common;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
549947C0196A3FB400BA3D87 /* complexityanalysis */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
549947C1196A3FB400BA3D87 /* ComplexityAnalysis.cpp */,
|
||||
549947C2196A3FB400BA3D87 /* ComplexityAnalysis.h */,
|
||||
);
|
||||
path = complexityanalysis;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
549947C3196A3FB400BA3D87 /* denoise */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
549947C4196A3FB400BA3D87 /* denoise.cpp */,
|
||||
549947C5196A3FB400BA3D87 /* denoise.h */,
|
||||
549947C6196A3FB400BA3D87 /* denoise_filter.cpp */,
|
||||
);
|
||||
path = denoise;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
549947C7196A3FB400BA3D87 /* downsample */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
549947C8196A3FB400BA3D87 /* downsample.cpp */,
|
||||
549947C9196A3FB400BA3D87 /* downsample.h */,
|
||||
549947CA196A3FB400BA3D87 /* downsamplefuncs.cpp */,
|
||||
);
|
||||
path = downsample;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
549947CB196A3FB400BA3D87 /* imagerotate */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
549947CC196A3FB400BA3D87 /* imagerotate.cpp */,
|
||||
549947CD196A3FB400BA3D87 /* imagerotate.h */,
|
||||
549947CE196A3FB400BA3D87 /* imagerotatefuncs.cpp */,
|
||||
);
|
||||
path = imagerotate;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
549947CF196A3FB400BA3D87 /* scenechangedetection */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
549947D0196A3FB400BA3D87 /* SceneChangeDetection.cpp */,
|
||||
549947D1196A3FB400BA3D87 /* SceneChangeDetection.h */,
|
||||
);
|
||||
path = scenechangedetection;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
549947D2196A3FB400BA3D87 /* scrolldetection */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
549947D3196A3FB400BA3D87 /* ScrollDetection.cpp */,
|
||||
549947D4196A3FB400BA3D87 /* ScrollDetection.h */,
|
||||
549947D5196A3FB400BA3D87 /* ScrollDetectionFuncs.cpp */,
|
||||
549947D6196A3FB400BA3D87 /* ScrollDetectionFuncs.h */,
|
||||
);
|
||||
path = scrolldetection;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
549947D7196A3FB400BA3D87 /* vaacalc */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
549947D8196A3FB400BA3D87 /* vaacalcfuncs.cpp */,
|
||||
549947D9196A3FB400BA3D87 /* vaacalculation.cpp */,
|
||||
549947DA196A3FB400BA3D87 /* vaacalculation.h */,
|
||||
);
|
||||
path = vaacalc;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
5499477B196A3F3900BA3D87 /* processing */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 5499479F196A3F3900BA3D87 /* Build configuration list for PBXNativeTarget "processing" */;
|
||||
buildPhases = (
|
||||
54994778196A3F3900BA3D87 /* Sources */,
|
||||
54994779196A3F3900BA3D87 /* Frameworks */,
|
||||
5499477A196A3F3900BA3D87 /* CopyFiles */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = processing;
|
||||
productName = processing;
|
||||
productReference = 5499477C196A3F3900BA3D87 /* libprocessing.a */;
|
||||
productType = "com.apple.product-type.library.static";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
54994774196A3F3900BA3D87 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0510;
|
||||
ORGANIZATIONNAME = com.cisco;
|
||||
};
|
||||
buildConfigurationList = 54994777196A3F3900BA3D87 /* Build configuration list for PBXProject "processing" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
);
|
||||
mainGroup = 54994773196A3F3900BA3D87;
|
||||
productRefGroup = 5499477D196A3F3900BA3D87 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
5499477B196A3F3900BA3D87 /* processing */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
54994778196A3F3900BA3D87 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
6C749B78197E2A2000A111F9 /* adaptive_quantization_aarch64_neon.S in Sources */,
|
||||
549947F4196A3FB400BA3D87 /* vaacalculation.cpp in Sources */,
|
||||
549947E9196A3FB400BA3D87 /* ComplexityAnalysis.cpp in Sources */,
|
||||
549947E3196A3FB400BA3D87 /* vaa_calc_neon.S in Sources */,
|
||||
549947EE196A3FB400BA3D87 /* imagerotate.cpp in Sources */,
|
||||
549947EA196A3FB400BA3D87 /* denoise.cpp in Sources */,
|
||||
549947E7196A3FB400BA3D87 /* WelsFrameWork.cpp in Sources */,
|
||||
549947F1196A3FB400BA3D87 /* ScrollDetection.cpp in Sources */,
|
||||
549947E4196A3FB400BA3D87 /* BackgroundDetection.cpp in Sources */,
|
||||
549947F3196A3FB400BA3D87 /* vaacalcfuncs.cpp in Sources */,
|
||||
4CD0FE36199082AD00375C9A /* pixel_sad_aarch64_neon.S in Sources */,
|
||||
549947E0196A3FB400BA3D87 /* adaptive_quantization.S in Sources */,
|
||||
549947EB196A3FB400BA3D87 /* denoise_filter.cpp in Sources */,
|
||||
549947ED196A3FB400BA3D87 /* downsamplefuncs.cpp in Sources */,
|
||||
549947E6196A3FB400BA3D87 /* memory.cpp in Sources */,
|
||||
549947E2196A3FB400BA3D87 /* pixel_sad_neon.S in Sources */,
|
||||
549947F0196A3FB400BA3D87 /* SceneChangeDetection.cpp in Sources */,
|
||||
4CC6094F197E009D00BE8B8B /* down_sample_aarch64_neon.S in Sources */,
|
||||
4CC6095A1980F34F00BE8B8B /* vaa_calc_aarch64_neon.S in Sources */,
|
||||
549947F2196A3FB400BA3D87 /* ScrollDetectionFuncs.cpp in Sources */,
|
||||
F791965B19D3BF6B00F60C6B /* intra_pred_common.cpp in Sources */,
|
||||
549947EF196A3FB400BA3D87 /* imagerotatefuncs.cpp in Sources */,
|
||||
549947DF196A3FB400BA3D87 /* AdaptiveQuantization.cpp in Sources */,
|
||||
549947EC196A3FB400BA3D87 /* downsample.cpp in Sources */,
|
||||
549947E8196A3FB400BA3D87 /* WelsFrameWorkEx.cpp in Sources */,
|
||||
549947E1196A3FB400BA3D87 /* down_sample_neon.S in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
5499479D196A3F3900BA3D87 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
"GCC_PREPROCESSOR_DEFINITIONS[arch=*]" = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
5499479E196A3F3900BA3D87 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
SDKROOT = iphoneos;
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
549947A0196A3F3900BA3D87 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
DSTROOT = /tmp/processing.dst;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "";
|
||||
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*][arch=arm64]" = (
|
||||
APPLE_IOS,
|
||||
HAVE_NEON_AARCH64,
|
||||
);
|
||||
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*][arch=armv7]" = (
|
||||
APPLE_IOS,
|
||||
HAVE_NEON,
|
||||
);
|
||||
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*][arch=armv7s]" = (
|
||||
APPLE_IOS,
|
||||
HAVE_NEON,
|
||||
);
|
||||
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphonesimulator*]" = APPLE_IOS;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(SRCROOT)/../../../processing/interface",
|
||||
"$(SRCROOT)/../../../processing/src/common",
|
||||
"$(SRCROOT)/../../../common/inc",
|
||||
"$(SRCROOT)/../../../common/arm64",
|
||||
"$(SRCROOT)/../../../common/arm",
|
||||
);
|
||||
OTHER_LDFLAGS = "-ObjC";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
549947A1196A3F3900BA3D87 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
DSTROOT = /tmp/processing.dst;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "";
|
||||
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*][arch=arm64]" = (
|
||||
APPLE_IOS,
|
||||
HAVE_NEON_AARCH64,
|
||||
);
|
||||
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*][arch=armv7]" = (
|
||||
APPLE_IOS,
|
||||
HAVE_NEON,
|
||||
);
|
||||
"GCC_PREPROCESSOR_DEFINITIONS[sdk=iphoneos*][arch=armv7s]" = (
|
||||
APPLE_IOS,
|
||||
HAVE_NEON,
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(SRCROOT)/../../../processing/interface",
|
||||
"$(SRCROOT)/../../../processing/src/common",
|
||||
"$(SRCROOT)/../../../common/inc",
|
||||
"$(SRCROOT)/../../../common/arm64",
|
||||
"$(SRCROOT)/../../../common/arm",
|
||||
);
|
||||
OTHER_LDFLAGS = "-ObjC";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
54994777196A3F3900BA3D87 /* Build configuration list for PBXProject "processing" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
5499479D196A3F3900BA3D87 /* Debug */,
|
||||
5499479E196A3F3900BA3D87 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
5499479F196A3F3900BA3D87 /* Build configuration list for PBXNativeTarget "processing" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
549947A0196A3F3900BA3D87 /* Debug */,
|
||||
549947A1196A3F3900BA3D87 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 54994774196A3F3900BA3D87 /* Project object */;
|
||||
}
|
||||
3
codec/build/win32/.gitignore
vendored
3
codec/build/win32/.gitignore
vendored
@@ -3,6 +3,9 @@
|
||||
*.ncb
|
||||
*.suo
|
||||
|
||||
Win32
|
||||
x64
|
||||
|
||||
# Files generated by upgrading the project files
|
||||
*.vcxproj*
|
||||
Backup
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory=".\..\..\..\..\bin\win32\Release"
|
||||
IntermediateDirectory=".\..\..\..\obj\decoder\core\release"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -59,12 +59,8 @@
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\decoder\core\release/WelsDecCore.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\decoder\core\release/"
|
||||
ObjectFile=".\..\..\..\obj\decoder\core\release/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\decoder\core\release/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="0"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
@@ -89,7 +85,6 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
OutputFile=".\..\..\..\..\bin\win32\Release/WelsDecCore.bsc"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
@@ -100,8 +95,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|x64"
|
||||
OutputDirectory=".\..\..\..\..\bin\win64\Release"
|
||||
IntermediateDirectory=".\..\..\..\obj\decoder\core\release"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -137,12 +132,8 @@
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\decoder\core\release/WelsDecCore.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\decoder\core\release/"
|
||||
ObjectFile=".\..\..\..\obj\decoder\core\release/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\decoder\core\release/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="0"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
@@ -167,7 +158,6 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
OutputFile=".\..\..\..\..\bin\win32\Release/WelsDecCore.bsc"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
@@ -178,8 +168,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory=".\..\..\..\..\bin\win32\Debug"
|
||||
IntermediateDirectory=".\..\..\..\obj\decoder\core\debug"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -212,10 +202,6 @@
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\decoder\core\debug/WelsDecCore.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\decoder\core\debug/"
|
||||
ObjectFile=".\..\..\..\obj\decoder\core\debug/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\decoder\core\debug/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
@@ -242,7 +228,6 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
OutputFile=".\..\..\..\..\bin\win32\Debug/WelsDecCore.bsc"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
@@ -253,8 +238,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|x64"
|
||||
OutputDirectory=".\..\..\..\..\bin\win64\Debug"
|
||||
IntermediateDirectory=".\..\..\..\obj\decoder\core\debug"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -288,10 +273,6 @@
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\decoder\core\debug/WelsDecCore.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\decoder\core\debug/"
|
||||
ObjectFile=".\..\..\..\obj\decoder\core\debug/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\decoder\core\debug/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
@@ -318,7 +299,6 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
OutputFile=".\..\..\..\..\bin\win32\Debug/WelsDecCore.bsc"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory=".\..\..\..\..\bin\win32\Release"
|
||||
IntermediateDirectory=".\..\..\..\obj\decoder\plus\Release"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="2"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -43,11 +43,6 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
PreprocessorDefinitions="NDEBUG"
|
||||
MkTypLibCompatible="true"
|
||||
TargetEnvironment="1"
|
||||
TypeLibraryName=".\..\..\..\..\..\bin\win32\Release/WelsDecPlus.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
@@ -58,10 +53,6 @@
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\decoder\plus\Release/WelsDecPlus.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\decoder\plus\Release/"
|
||||
ObjectFile=".\..\..\..\obj\decoder\plus\Release/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\decoder\plus\Release/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
@@ -78,15 +69,11 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies=".\..\..\..\..\bin\win32\Release\welsdcore.lib"
|
||||
AdditionalDependencies="$(OutDir)\welsdcore.lib"
|
||||
OutputFile="$(OutDir)\welsdec.dll"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories=".\..\..\..\libs\Release\"
|
||||
ModuleDefinitionFile="..\..\..\decoder\plus\src\wels_dec_export.def"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="$(OutDir)\welsdec.pdb"
|
||||
GenerateMapFile="true"
|
||||
MapFileName="$(OutDir)\welsdec.map"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
ImportLibrary="$(OutDir)\welsdec.lib"
|
||||
@@ -103,7 +90,6 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
OutputFile=".\..\..\..\..\bin\win32\Release/WelsDecPlus.bsc"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
@@ -117,8 +103,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|x64"
|
||||
OutputDirectory=".\..\..\..\..\bin\win64\Release"
|
||||
IntermediateDirectory=".\..\..\..\obj\decoder\plus\Release"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="2"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -140,11 +126,6 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
PreprocessorDefinitions="NDEBUG"
|
||||
MkTypLibCompatible="true"
|
||||
TargetEnvironment="3"
|
||||
TypeLibraryName=".\..\..\..\..\..\bin\win32\Release/WelsDecPlus.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
@@ -155,10 +136,6 @@
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\decoder\plus\Release/WelsDecPlus.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\decoder\plus\Release/"
|
||||
ObjectFile=".\..\..\..\obj\decoder\plus\Release/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\decoder\plus\Release/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
@@ -175,15 +152,11 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies=".\..\..\..\..\bin\win64\Release\welsdcore.lib"
|
||||
AdditionalDependencies="$(OutDir)\welsdcore.lib"
|
||||
OutputFile="$(OutDir)\welsdec.dll"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories=".\..\..\..\libs\Release\"
|
||||
ModuleDefinitionFile="..\..\..\decoder\plus\src\wels_dec_export.def"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="$(OutDir)\welsdec.pdb"
|
||||
GenerateMapFile="true"
|
||||
MapFileName="$(OutDir)\welsdec.map"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
ImportLibrary="$(OutDir)\welsdec.lib"
|
||||
@@ -200,7 +173,6 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
OutputFile=".\..\..\..\..\bin\win32\Release/WelsDecPlus.bsc"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
@@ -214,8 +186,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory=".\..\..\..\..\bin\win32\Debug"
|
||||
IntermediateDirectory=".\..\..\..\obj\decoder\plus\debug"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="2"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -236,11 +208,6 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
MkTypLibCompatible="true"
|
||||
TargetEnvironment="1"
|
||||
TypeLibraryName=".\..\..\..\..\..\bin\win32\Debug/WelsDecPlus.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
@@ -250,10 +217,6 @@
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\decoder\plus\debug/WelsDecPlus.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\decoder\plus\debug/"
|
||||
ObjectFile=".\..\..\..\obj\decoder\plus\debug/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\decoder\plus\debug/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
@@ -270,13 +233,11 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies=".\..\..\..\..\bin\win32\Debug\welsdcore.lib"
|
||||
AdditionalDependencies="$(OutDir)\welsdcore.lib"
|
||||
OutputFile="$(OutDir)\welsdec.dll"
|
||||
LinkIncremental="2"
|
||||
AdditionalLibraryDirectories="..\..\..\libs\debug"
|
||||
ModuleDefinitionFile="..\..\..\decoder\plus\src\wels_dec_export.def"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="$(OutDir)\welsdec.pdb"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
ImportLibrary="$(OutDir)\welsdec.lib"
|
||||
@@ -293,7 +254,6 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
OutputFile=".\..\..\..\..\bin\win32\Debug/WelsDecPlus.bsc"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
@@ -307,8 +267,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|x64"
|
||||
OutputDirectory=".\..\..\..\..\bin\win64\Debug"
|
||||
IntermediateDirectory=".\..\..\..\obj\decoder\plus\debug"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="2"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -329,11 +289,6 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
MkTypLibCompatible="true"
|
||||
TargetEnvironment="3"
|
||||
TypeLibraryName=".\..\..\..\..\..\bin\win32\Debug/WelsDecPlus.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
@@ -343,10 +298,6 @@
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\decoder\plus\debug/WelsDecPlus.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\decoder\plus\debug/"
|
||||
ObjectFile=".\..\..\..\obj\decoder\plus\debug/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\decoder\plus\debug/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
@@ -363,13 +314,11 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies=".\..\..\..\..\bin\win64\Debug\welsdcore.lib"
|
||||
AdditionalDependencies="$(OutDir)\welsdcore.lib"
|
||||
OutputFile="$(OutDir)\welsdec.dll"
|
||||
LinkIncremental="2"
|
||||
AdditionalLibraryDirectories="..\..\..\libs\debug"
|
||||
ModuleDefinitionFile="..\..\..\decoder\plus\src\wels_dec_export.def"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="$(OutDir)\welsdec.pdb"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
ImportLibrary="$(OutDir)\welsdec.lib"
|
||||
@@ -386,7 +335,6 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
OutputFile=".\..\..\..\..\bin\win32\Debug/WelsDecPlus.bsc"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory=".\..\..\..\..\bin\win32\Release"
|
||||
IntermediateDirectory=".\..\..\..\obj\decConsole\Release"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -42,8 +42,6 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TypeLibraryName=".\..\..\..\..\bin\win32\Release/decConsole.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
@@ -54,11 +52,8 @@
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\decConsole\Release/decConsole.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\decConsole\Release/"
|
||||
ObjectFile=".\..\..\..\obj\decConsole\Release/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\decConsole\Release/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
@@ -76,9 +71,7 @@
|
||||
AdditionalDependencies="$(OutDir)\welsdec.lib"
|
||||
OutputFile="$(OutDir)\decConsole.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="..\..\..\..\bin\win32"
|
||||
ProgramDatabaseFile="$(OutDir)\decConsole.pdb"
|
||||
GenerateMapFile="false"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
@@ -109,8 +102,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|x64"
|
||||
OutputDirectory=".\..\..\..\..\bin\win64\Release"
|
||||
IntermediateDirectory=".\..\..\..\obj\decConsole\Release"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -131,9 +124,6 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
TypeLibraryName=".\..\..\..\..\bin\win32\Release/decConsole.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
@@ -144,11 +134,8 @@
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\decConsole\Release/decConsole.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\decConsole\Release/"
|
||||
ObjectFile=".\..\..\..\obj\decConsole\Release/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\decConsole\Release/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
@@ -166,9 +153,7 @@
|
||||
AdditionalDependencies="$(OutDir)\welsdec.lib"
|
||||
OutputFile="$(OutDir)\decConsole.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="..\..\..\..\bin\win64"
|
||||
ProgramDatabaseFile="$(OutDir)\decConsole.pdb"
|
||||
GenerateMapFile="false"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
@@ -199,8 +184,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory=".\..\..\..\..\bin\win32\Debug"
|
||||
IntermediateDirectory=".\..\..\..\obj\decConsole\Debug"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -221,8 +206,6 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TypeLibraryName=".\..\..\..\..\bin\win32\Debug/decConsole.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
@@ -232,11 +215,6 @@
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\decConsole\Debug/decConsole.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\decConsole\Debug/"
|
||||
ObjectFile=".\..\..\..\obj\decConsole\Debug/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\decConsole\Debug/"
|
||||
BrowseInformation="1"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
@@ -256,9 +234,7 @@
|
||||
AdditionalDependencies="$(OutDir)\welsdec.lib"
|
||||
OutputFile="$(OutDir)\decConsoled.exe"
|
||||
LinkIncremental="2"
|
||||
AdditionalLibraryDirectories="..\..\..\..\bin\win32"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="$(OutDir)\decConsoled.pdb"
|
||||
SubSystem="1"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
@@ -289,8 +265,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|x64"
|
||||
OutputDirectory=".\..\..\..\..\bin\win64\Debug"
|
||||
IntermediateDirectory=".\..\..\..\obj\decConsole\Debug"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -311,9 +287,6 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
TypeLibraryName=".\..\..\..\..\bin\win32\Debug/decConsole.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
@@ -323,11 +296,6 @@
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\decConsole\Debug/decConsole.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\decConsole\Debug/"
|
||||
ObjectFile=".\..\..\..\obj\decConsole\Debug/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\decConsole\Debug/"
|
||||
BrowseInformation="1"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
@@ -347,9 +315,7 @@
|
||||
AdditionalDependencies="$(OutDir)\welsdec.lib"
|
||||
OutputFile="$(OutDir)\decConsoled.exe"
|
||||
LinkIncremental="2"
|
||||
AdditionalLibraryDirectories="..\..\..\..\bin\win64"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="$(OutDir)\decConsoled.pdb"
|
||||
SubSystem="1"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory=".\..\..\..\..\bin\win32\Debug"
|
||||
IntermediateDirectory=".\..\..\..\obj\encoder\core\Debug"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -57,10 +57,6 @@
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\encoder\core\Debug/WelsEncCore.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\encoder\core\Debug/"
|
||||
ObjectFile=".\..\..\..\obj\encoder\core\Debug/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\encoder\core\Debug/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
@@ -99,8 +95,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|x64"
|
||||
OutputDirectory=".\..\..\..\..\bin\win64\Debug"
|
||||
IntermediateDirectory=".\..\..\..\obj\encoder\core\Debug"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -134,10 +130,6 @@
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\encoder\core\Debug/WelsEncCore.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\encoder\core\Debug/"
|
||||
ObjectFile=".\..\..\..\obj\encoder\core\Debug/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\encoder\core\Debug/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
@@ -176,8 +168,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory=".\..\..\..\..\bin\win32\Release"
|
||||
IntermediateDirectory=".\..\..\..\obj\encoder\core\Release"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -213,10 +205,6 @@
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\encoder\core\Release/WelsEncCore.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\encoder\core\Release/"
|
||||
ObjectFile=".\..\..\..\obj\encoder\core\Release/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\encoder\core\Release/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
@@ -255,8 +243,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|x64"
|
||||
OutputDirectory=".\..\..\..\..\bin\win64\Release"
|
||||
IntermediateDirectory=".\..\..\..\obj\encoder\core\Release"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -293,10 +281,6 @@
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\encoder\core\Release/WelsEncCore.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\encoder\core\Release/"
|
||||
ObjectFile=".\..\..\..\obj\encoder\core\Release/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\encoder\core\Release/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
@@ -397,6 +381,10 @@
|
||||
RelativePath="..\..\..\encoder\core\src\get_intra_predictor.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\common\src\intra_pred_common.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\encoder\core\src\mc.cpp"
|
||||
>
|
||||
@@ -743,7 +731,7 @@
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
CommandLine="nasm -I$(InputDir) -I$(InputDir)/../../../common/x86/ -f win32 -DPREFIX -o $(IntDir)\$(InputName).obj $(InputPath)
"
|
||||
CommandLine="nasm -I$(InputDir) -I$(InputDir)/../../../common/x86/ -f win32 -DPREFIX -DX86_32 -o $(IntDir)\$(InputName).obj $(InputPath)
"
|
||||
Outputs="$(IntDir)\$(InputName).obj"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -761,7 +749,7 @@
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
CommandLine="nasm -I$(InputDir) -I$(InputDir)/../../../common/x86/ -f win32 -DPREFIX -o $(IntDir)\$(InputName).obj $(InputPath)
"
|
||||
CommandLine="nasm -I$(InputDir) -I$(InputDir)/../../../common/x86/ -f win32 -DPREFIX -DX86_32 -o $(IntDir)\$(InputName).obj $(InputPath)
"
|
||||
Outputs="$(IntDir)\$(InputName).obj"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -783,7 +771,7 @@
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
CommandLine="nasm -I$(InputDir) -f win32 -DPREFIX -DX86_32 -o $(IntDir)\$(InputName).obj $(InputPath)
"
|
||||
CommandLine="nasm -I$(InputDir) -I$(InputDir)/../../../common/x86/ -f win32 -DPREFIX -DX86_32 -o $(IntDir)\$(InputName).obj $(InputPath)
"
|
||||
Outputs="$(IntDir)\$(InputName).obj"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -975,6 +963,46 @@
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\common\x86\intra_pred_com.asm"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
CommandLine="nasm -I$(InputDir) -I$(InputDir)/../../../common/x86/ -f win32 -DPREFIX -DX86_32 -o $(IntDir)\$(InputName).obj $(InputPath)
"
|
||||
Outputs="$(IntDir)\$(InputName).obj"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
CommandLine="nasm -I$(InputDir) -I$(InputDir)/../../../common/x86/ -f win64 -DWIN64 -o $(IntDir)\$(InputName).obj $(InputPath)
"
|
||||
Outputs="$(IntDir)\$(InputName).obj"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
CommandLine="nasm -I$(InputDir) -I$(InputDir)/../../../common/x86/ -f win32 -DPREFIX -DX86_32 -o $(IntDir)\$(InputName).obj $(InputPath)
"
|
||||
Outputs="$(IntDir)\$(InputName).obj"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
CommandLine="nasm -I$(InputDir) -I$(InputDir)/../../../common/x86/ -f win64 -DWIN64 -o $(IntDir)\$(InputName).obj $(InputPath)
"
|
||||
Outputs="$(IntDir)\$(InputName).obj"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\encoder\core\x86\matrix_transpose.asm"
|
||||
>
|
||||
@@ -1343,7 +1371,7 @@
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
CommandLine="nasm -I$(InputDir) -I$(InputDir)/../../../common/x86/ -f win32 -DPREFIX -DX86_32 -o $(IntDir)\$(InputName).obj $(InputPath)
"
|
||||
CommandLine="nasm -I$(InputDir) -I$(InputDir)/../../../common/x86/ -f win32 -DPREFIX -DX86_32 -o $(IntDir)\$(InputName).obj $(InputPath)
"
|
||||
Outputs="$(IntDir)\$(InputName).obj"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
@@ -1361,7 +1389,7 @@
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
CommandLine="nasm -I$(InputDir) -I$(InputDir)/../../../common/x86/ -f win32 -DPREFIX -DX86_32 -o $(IntDir)\$(InputName).obj $(InputPath)
"
|
||||
CommandLine="nasm -I$(InputDir) -I$(InputDir)/../../../common/x86/ -f win32 -DPREFIX -DX86_32 -o $(IntDir)\$(InputName).obj $(InputPath)
"
|
||||
Outputs="$(IntDir)\$(InputName).obj"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory=".\..\..\..\..\bin\win32\Debug"
|
||||
IntermediateDirectory=".\..\..\..\obj\encoder\plus\Debug"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="2"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -42,11 +42,6 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
MkTypLibCompatible="true"
|
||||
TargetEnvironment="1"
|
||||
TypeLibraryName=".\..\..\..\..\..\bin\Debug/WelsEncPlus.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
@@ -56,10 +51,6 @@
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\encoder\plus\Debug/WelsEncPlus.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\encoder\plus\Debug/"
|
||||
ObjectFile=".\..\..\..\obj\encoder\plus\Debug/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\encoder\plus\Debug/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
@@ -79,12 +70,8 @@
|
||||
AdditionalDependencies="$(OutDir)\welsecore.lib $(OutDir)\welsvp.lib"
|
||||
OutputFile="$(OutDir)\welsenc.dll"
|
||||
LinkIncremental="2"
|
||||
AdditionalLibraryDirectories="..\..\..\..\libs"
|
||||
ModuleDefinitionFile="..\..\..\encoder\plus\src\wels_enc_export.def"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="$(OutDir)\welsenc.pdb"
|
||||
GenerateMapFile="true"
|
||||
MapFileName="$(OutDir)\welsenc.map"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
ImportLibrary="$(OutDir)\welsenc.lib"
|
||||
@@ -115,8 +102,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|x64"
|
||||
OutputDirectory=".\..\..\..\..\bin\win64\Debug"
|
||||
IntermediateDirectory=".\..\..\..\obj\encoder\plus\Debug"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="2"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -137,11 +124,6 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
MkTypLibCompatible="true"
|
||||
TargetEnvironment="3"
|
||||
TypeLibraryName=".\..\..\..\..\..\bin\Debug/WelsEncPlus.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
@@ -151,10 +133,6 @@
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\encoder\plus\Debug/WelsEncPlus.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\encoder\plus\Debug/"
|
||||
ObjectFile=".\..\..\..\obj\encoder\plus\Debug/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\encoder\plus\Debug/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
@@ -174,12 +152,8 @@
|
||||
AdditionalDependencies="$(OutDir)\welsecore.lib $(OutDir)\welsvp.lib"
|
||||
OutputFile="$(OutDir)\welsenc.dll"
|
||||
LinkIncremental="2"
|
||||
AdditionalLibraryDirectories="..\..\..\..\libs"
|
||||
ModuleDefinitionFile="..\..\..\encoder\plus\src\wels_enc_export.def"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="$(OutDir)\welsenc.pdb"
|
||||
GenerateMapFile="true"
|
||||
MapFileName="$(OutDir)\welsenc.map"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
ImportLibrary="$(OutDir)\welsenc.lib"
|
||||
@@ -210,8 +184,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory=".\..\..\..\..\bin\win32\Release"
|
||||
IntermediateDirectory=".\..\..\..\obj\encoder\plus\Release"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="2"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -233,27 +207,17 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
PreprocessorDefinitions="NDEBUG"
|
||||
MkTypLibCompatible="true"
|
||||
TargetEnvironment="1"
|
||||
TypeLibraryName=".\..\..\..\..\..\bin\Release/WelsEncPlus.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="3"
|
||||
InlineFunctionExpansion="2"
|
||||
FavorSizeOrSpeed="1"
|
||||
EnableFiberSafeOptimizations="true"
|
||||
AdditionalIncludeDirectories="..\..\..\encoder\plus\inc;..\..\..\encoder\core\inc;..\..\..\api\svc;..\..\..\common\inc;..\..\..\processing\interface"
|
||||
PreprocessorDefinitions="NDEBUG;_USRDLL;X86_ASM"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\encoder\plus\Release/WelsEncPlus.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\encoder\plus\Release/"
|
||||
ObjectFile=".\..\..\..\obj\encoder\plus\Release/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\encoder\plus\Release/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
@@ -273,13 +237,8 @@
|
||||
AdditionalDependencies="$(OutDir)\welsecore.lib $(OutDir)\welsvp.lib"
|
||||
OutputFile="$(OutDir)\welsenc.dll"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="..\..\..\..\libs"
|
||||
ModuleDefinitionFile="..\..\..\encoder\plus\src\wels_enc_export.def"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="$(OutDir)\welsenc.pdb"
|
||||
GenerateMapFile="false"
|
||||
MapFileName=""
|
||||
MapExports="false"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
ImportLibrary="$(OutDir)\welsenc.lib"
|
||||
@@ -310,8 +269,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|x64"
|
||||
OutputDirectory=".\..\..\..\..\bin\win64\Release"
|
||||
IntermediateDirectory=".\..\..\..\obj\encoder\plus\Release"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="2"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -333,27 +292,17 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
PreprocessorDefinitions="NDEBUG"
|
||||
MkTypLibCompatible="true"
|
||||
TargetEnvironment="3"
|
||||
TypeLibraryName=".\..\..\..\..\..\bin\Release/WelsEncPlus.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="3"
|
||||
InlineFunctionExpansion="2"
|
||||
FavorSizeOrSpeed="1"
|
||||
EnableFiberSafeOptimizations="true"
|
||||
AdditionalIncludeDirectories="..\..\..\encoder\plus\inc;..\..\..\encoder\core\inc;..\..\..\api\svc;..\..\..\common\inc;..\..\..\processing\interface"
|
||||
PreprocessorDefinitions="NDEBUG;_USRDLL;X86_ASM"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\encoder\plus\Release/WelsEncPlus.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\encoder\plus\Release/"
|
||||
ObjectFile=".\..\..\..\obj\encoder\plus\Release/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\encoder\plus\Release/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
@@ -373,13 +322,8 @@
|
||||
AdditionalDependencies="$(OutDir)\welsecore.lib $(OutDir)\welsvp.lib"
|
||||
OutputFile="$(OutDir)\welsenc.dll"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="..\..\..\..\libs"
|
||||
ModuleDefinitionFile="..\..\..\encoder\plus\src\wels_enc_export.def"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="$(OutDir)\welsenc.pdb"
|
||||
GenerateMapFile="false"
|
||||
MapFileName=""
|
||||
MapExports="false"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
ImportLibrary="$(OutDir)\welsenc.lib"
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory=".\..\..\..\..\bin\win32\Debug"
|
||||
IntermediateDirectory=".\..\..\..\obj\encConsole\Debug"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -42,8 +42,6 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TypeLibraryName=".\..\..\..\..\..\bin\Debug/encConsole.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
@@ -53,10 +51,6 @@
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\encConsole\Debug/encConsole.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\encConsole\Debug/"
|
||||
ObjectFile=".\..\..\..\obj\encConsole\Debug/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\encConsole\Debug/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
@@ -76,11 +70,7 @@
|
||||
AdditionalDependencies="$(OutDir)\welsenc.lib"
|
||||
OutputFile="$(OutDir)\encConsole.exe"
|
||||
LinkIncremental="2"
|
||||
AdditionalLibraryDirectories="..\..\..\bin"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="$(OutDir)\encConsole.pdb"
|
||||
GenerateMapFile="true"
|
||||
MapFileName="$(OutDir)\encConsole.map"
|
||||
SubSystem="1"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
@@ -111,8 +101,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|x64"
|
||||
OutputDirectory=".\..\..\..\..\bin\win64\Debug"
|
||||
IntermediateDirectory=".\..\..\..\obj\encConsole\Debug"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -133,9 +123,6 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
TypeLibraryName=".\..\..\..\..\..\bin\Debug/encConsole.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
@@ -145,10 +132,6 @@
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\encConsole\Debug/encConsole.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\encConsole\Debug/"
|
||||
ObjectFile=".\..\..\..\obj\encConsole\Debug/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\encConsole\Debug/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
@@ -168,11 +151,7 @@
|
||||
AdditionalDependencies="$(OutDir)\welsenc.lib"
|
||||
OutputFile="$(OutDir)\encConsole.exe"
|
||||
LinkIncremental="2"
|
||||
AdditionalLibraryDirectories="..\..\..\bin"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="$(OutDir)\encConsole.pdb"
|
||||
GenerateMapFile="true"
|
||||
MapFileName="$(OutDir)\encConsole.map"
|
||||
SubSystem="1"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
@@ -203,8 +182,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory=".\..\..\..\..\bin\win32\Release"
|
||||
IntermediateDirectory=".\..\..\..\obj\encConsole\Release"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -225,8 +204,6 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TypeLibraryName=".\..\..\..\..\..\bin\Release/encConsole.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
@@ -237,10 +214,6 @@
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\encConsole\Release/encConsole.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\encConsole\Release/"
|
||||
ObjectFile=".\..\..\..\obj\encConsole\Release/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\encConsole\Release/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
@@ -260,11 +233,7 @@
|
||||
AdditionalDependencies="$(OutDir)\welsenc.lib"
|
||||
OutputFile="$(OutDir)\encConsole.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="..\..\..\bin"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="$(OutDir)\encConsole.pdb"
|
||||
GenerateMapFile="false"
|
||||
MapExports="false"
|
||||
SubSystem="1"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
@@ -295,8 +264,8 @@
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|x64"
|
||||
OutputDirectory=".\..\..\..\..\bin\win64\Release"
|
||||
IntermediateDirectory=".\..\..\..\obj\encConsole\Release"
|
||||
OutputDirectory=".\..\..\..\..\bin\$(PlatformName)\$(ConfigurationName)"
|
||||
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
@@ -317,9 +286,6 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
TypeLibraryName=".\..\..\..\..\..\bin\Release/encConsole.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
@@ -330,10 +296,6 @@
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
PrecompiledHeaderFile=".\..\..\..\obj\encConsole\Release/encConsole.pch"
|
||||
AssemblerListingLocation=".\..\..\..\obj\encConsole\Release/"
|
||||
ObjectFile=".\..\..\..\obj\encConsole\Release/"
|
||||
ProgramDataBaseFileName=".\..\..\..\obj\encConsole\Release/"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
@@ -353,11 +315,7 @@
|
||||
AdditionalDependencies="$(OutDir)\welsenc.lib"
|
||||
OutputFile="$(OutDir)\encConsole.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="..\..\..\bin"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="$(OutDir)\encConsole.pdb"
|
||||
GenerateMapFile="false"
|
||||
MapExports="false"
|
||||
SubSystem="1"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="2"
|
||||
|
||||
@@ -30,6 +30,10 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#ifdef HAVE_NEON
|
||||
|
||||
.syntax unified
|
||||
|
||||
#ifdef __APPLE__
|
||||
|
||||
.macro WELS_ASM_FUNC_BEGIN
|
||||
@@ -44,7 +48,6 @@ mov pc, lr
|
||||
.endm
|
||||
#else
|
||||
|
||||
.syntax unified
|
||||
.section .note.GNU-stack,"",%progbits // Mark stack as non-executable
|
||||
.text
|
||||
|
||||
@@ -62,3 +65,5 @@ mov pc, lr
|
||||
.endfunc
|
||||
.endm
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -855,7 +855,7 @@ WELS_ASM_FUNC_END
|
||||
beq bs_nzc_check_jump0
|
||||
|
||||
sub r6, $0, $2, lsl #4
|
||||
sub r6, $2, lsl #3
|
||||
sub r6, r6, $2, lsl #3
|
||||
add r6, #12
|
||||
vld1.32 d3[1], [r6]
|
||||
|
||||
|
||||
83
codec/common/arm/intra_pred_common_neon.S
Normal file
83
codec/common/arm/intra_pred_common_neon.S
Normal file
@@ -0,0 +1,83 @@
|
||||
/*!
|
||||
* \copy
|
||||
* Copyright (c) 2013, Cisco Systems
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifdef HAVE_NEON
|
||||
.text
|
||||
#include "arm_arch_common_macro.S"
|
||||
|
||||
WELS_ASM_FUNC_BEGIN WelsI16x16LumaPredV_neon
|
||||
//Get the top line data to 'q0'
|
||||
sub r3, r1, r2
|
||||
vldm r3, {d0, d1}
|
||||
|
||||
//mov r2, #16
|
||||
mov r3, #4
|
||||
//Set the top line to the each line of MB(16*16)
|
||||
loop_0_get_i16x16_luma_pred_v:
|
||||
vst1.8 {d0,d1}, [r0]!
|
||||
vst1.8 {d0,d1}, [r0]!
|
||||
vst1.8 {d0,d1}, [r0]!
|
||||
vst1.8 {d0,d1}, [r0]!
|
||||
subs r3, #1
|
||||
bne loop_0_get_i16x16_luma_pred_v
|
||||
WELS_ASM_FUNC_END
|
||||
|
||||
|
||||
WELS_ASM_FUNC_BEGIN WelsI16x16LumaPredH_neon
|
||||
//stmdb sp!, {r4, lr}
|
||||
sub r1, r1, #1
|
||||
mov r3, #4
|
||||
loop_0_get_i16x16_luma_pred_h:
|
||||
//Get one byte data from left side
|
||||
vld1.8 {d0[],d1[]}, [r1], r2
|
||||
vld1.8 {d2[],d3[]}, [r1], r2
|
||||
vld1.8 {d4[],d5[]}, [r1], r2
|
||||
vld1.8 {d6[],d7[]}, [r1], r2
|
||||
|
||||
//Set the line of MB using the left side byte data
|
||||
vst1.8 {d0,d1}, [r0]!
|
||||
//add r0, #16
|
||||
vst1.8 {d2,d3}, [r0]!
|
||||
//add r0, #16
|
||||
vst1.8 {d4,d5}, [r0]!
|
||||
//add r0, #16
|
||||
vst1.8 {d6,d7}, [r0]!
|
||||
//add r0, #16
|
||||
|
||||
subs r3, #1
|
||||
bne loop_0_get_i16x16_luma_pred_h
|
||||
|
||||
WELS_ASM_FUNC_END
|
||||
|
||||
|
||||
#endif
|
||||
@@ -67,11 +67,4 @@ ret
|
||||
mov \arg0\().8b, \arg1\().8b
|
||||
.endm
|
||||
|
||||
.macro ext.16b arg0, arg1, arg2, arg3
|
||||
ext \arg0\().16b, \arg1\().16b, \arg2\().16b, \arg3
|
||||
.endm
|
||||
|
||||
.macro ext.8b arg0, arg1, arg2, arg3
|
||||
ext \arg0\().8b, \arg1\().8b, \arg2\().8b, \arg3
|
||||
.endm
|
||||
#endif
|
||||
|
||||
@@ -212,7 +212,7 @@
|
||||
ld1 {v1.s} [3], [x6]
|
||||
|
||||
bs_nzc_check_jump0:
|
||||
ext.16b v1, v1, v0, #12
|
||||
ext v1.16b, v1.16b, v0.16b, #12
|
||||
add $3.16b, v0.16b, v1.16b
|
||||
|
||||
// Arrange the input data --- LEFT
|
||||
@@ -233,7 +233,7 @@ bs_nzc_check_jump1:
|
||||
zip1 v0.16b, v0.16b, v2.16b
|
||||
ins v2.d[0], v0.d[1]
|
||||
zip1 v0.16b, v0.16b, v2.16b
|
||||
ext.16b v1, v1, v0, #12
|
||||
ext v1.16b, v1.16b, v0.16b, #12
|
||||
add $4.16b, v0.16b, v1.16b
|
||||
.endm
|
||||
|
||||
@@ -470,7 +470,7 @@ bs_mv_check_jump1:
|
||||
ld1 {v1.s} [3], [x6]
|
||||
|
||||
bs_nzc_check_jump0:
|
||||
ext.16b v1, v1, v0, #12
|
||||
ext v1.16b, v1.16b, v0.16b, #12
|
||||
add \arg3\().16b, v0.16b, v1.16b
|
||||
|
||||
// Arrange the input data --- LEFT
|
||||
@@ -491,7 +491,7 @@ bs_nzc_check_jump1:
|
||||
zip1 v0.16b, v0.16b, v2.16b
|
||||
ins v2.d[0], v0.d[1]
|
||||
zip1 v0.16b, v0.16b, v2.16b
|
||||
ext.16b v1, v1, v0, #12
|
||||
ext v1.16b, v1.16b, v0.16b, #12
|
||||
add \arg4\().16b, v0.16b, v1.16b
|
||||
.endm
|
||||
|
||||
|
||||
55
codec/common/arm64/intra_pred_common_aarch64_neon.S
Normal file
55
codec/common/arm64/intra_pred_common_aarch64_neon.S
Normal file
@@ -0,0 +1,55 @@
|
||||
/*!
|
||||
* \copy
|
||||
* Copyright (c) 2013, Cisco Systems
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifdef HAVE_NEON_AARCH64
|
||||
.text
|
||||
#include "arm_arch64_common_macro.S"
|
||||
|
||||
//for Luma 16x16
|
||||
WELS_ASM_AARCH64_FUNC_BEGIN WelsI16x16LumaPredV_AArch64_neon
|
||||
sub x3, x1, x2
|
||||
ld1 {v0.16b}, [x3]
|
||||
.rept 16
|
||||
st1 {v0.16b}, [x0], 16
|
||||
.endr
|
||||
WELS_ASM_AARCH64_FUNC_END
|
||||
|
||||
WELS_ASM_AARCH64_FUNC_BEGIN WelsI16x16LumaPredH_AArch64_neon
|
||||
sub x3, x1, #1
|
||||
.rept 16
|
||||
ld1r {v0.16b}, [x3], x2
|
||||
st1 {v0.16b}, [x0], 16
|
||||
.endr
|
||||
WELS_ASM_AARCH64_FUNC_END
|
||||
|
||||
#endif
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
#ifdef HAVE_NEON_AARCH64
|
||||
.text
|
||||
#include "arm_arch64_common_macro.S"
|
||||
.align 16
|
||||
.align 4
|
||||
filter_para: .short 0, 1, -5, 20, 0, 0, 0, 0
|
||||
|
||||
#ifdef __APPLE__
|
||||
@@ -197,8 +197,8 @@ filter_para: .short 0, 1, -5, 20, 0, 0, 0, 0
|
||||
|
||||
.macro UNPACK_FILTER_SINGLE_TAG_16BITS // v0, v1, v22, v23
|
||||
// { // each 16bits; input: d_dst, d_src[0:5], para, working, working, d(low part of d_dst)
|
||||
ext.16b $3, $1, $1, #14 // X[0][1][2][3][4][5]O
|
||||
ext.16b $4, $3, $3, #8 // [3][4][5]OX[0][1][2]
|
||||
ext $3.16b, $1.16b, $1.16b, #14 // X[0][1][2][3][4][5]O
|
||||
ext $4.16b, $3.16b, $3.16b, #8 // [3][4][5]OX[0][1][2]
|
||||
rev64 $4.8h, $4.8h // X[5][4][3][2][1][0]O
|
||||
add $3.8h, $3.8h, $4.8h // each 16bits, *[50][41][32][23][14][05]*
|
||||
smull $3.4s, $3.4h, $2.4h // 0+1*[50]-5*[41]+20[32]
|
||||
@@ -413,8 +413,8 @@ WELS_ASM_AARCH64_FUNC_BEGIN McHorVer20WidthEq8_AArch64_neon
|
||||
movi v0.8h, #20, lsl #0
|
||||
movi v1.8h, #5, lsl #0
|
||||
w8_h_mc_luma_loop:
|
||||
ld1 {v2.8b, v3.8b}, [x0], x1 //only use 13(8+5); v2=src[-2]
|
||||
trn1 v2.2d, v2.2d, v3.2d
|
||||
ld1 {v2.16b}, [x0], x1 //only use 13(8+5); v2=src[-2]
|
||||
|
||||
//prfm pldl1strm, [x0]
|
||||
ext v5.16b, v2.16b, v4.16b, #1 //v5=src[-1]
|
||||
ext v6.16b, v2.16b, v4.16b, #2 //v6=src[0]
|
||||
@@ -492,8 +492,8 @@ WELS_ASM_AARCH64_FUNC_BEGIN McHorVer10WidthEq8_AArch64_neon
|
||||
movi v0.8h, #20, lsl #0
|
||||
movi v1.8h, #5, lsl #0
|
||||
w8_xy_10_mc_luma_loop:
|
||||
ld1 {v2.8b, v3.8b}, [x0], x1 //only use 13(8+5); v2=src[-2]
|
||||
trn1 v2.2d, v2.2d, v3.2d
|
||||
ld1 {v2.16b}, [x0], x1 //only use 13(8+5); v2=src[-2]
|
||||
|
||||
//prfm pldl1strm, [x0]
|
||||
ext v5.16b, v2.16b, v4.16b, #1 //v5=src[-1]
|
||||
ext v6.16b, v2.16b, v4.16b, #2 //v6=src[0]
|
||||
@@ -572,8 +572,8 @@ WELS_ASM_AARCH64_FUNC_BEGIN McHorVer30WidthEq8_AArch64_neon
|
||||
movi v0.8h, #20, lsl #0
|
||||
movi v1.8h, #5, lsl #0
|
||||
w8_xy_30_mc_luma_loop:
|
||||
ld1 {v2.8b, v3.8b}, [x0], x1 //only use 13(8+5); v2=src[-2]
|
||||
trn1 v2.2d, v2.2d, v3.2d
|
||||
ld1 {v2.16b}, [x0], x1 //only use 13(8+5); v2=src[-2]
|
||||
|
||||
//prfm pldl1strm, [x0]
|
||||
ext v5.16b, v2.16b, v4.16b, #1 //v5=src[-1]
|
||||
ext v6.16b, v2.16b, v4.16b, #2 //v6=src[0]
|
||||
@@ -1713,12 +1713,12 @@ WELS_ASM_AARCH64_FUNC_END
|
||||
WELS_ASM_AARCH64_FUNC_BEGIN McChromaWidthEq8_AArch64_neon
|
||||
ld4r {v4.8b, v5.8b, v6.8b, v7.8b}, [x4] //load A/B/C/D
|
||||
ld1 {v0.16b}, [x0], x1 // src[x]
|
||||
ext.16b v1, v0, v0, #1 // src[x+1]
|
||||
ext v1.16b, v0.16b, v0.16b, #1 // src[x+1]
|
||||
w8_mc_chroma_loop:
|
||||
ld1 {v2.16b}, [x0], x1 // src[x+stride]
|
||||
ext.16b v3, v2, v2, #1 // src[x+stride+1]
|
||||
ext v3.16b, v2.16b, v2.16b, #1 // src[x+stride+1]
|
||||
ld1 {v18.16b}, [x0], x1 // src[x+2*stride]
|
||||
ext.16b v19, v18, v18, #1 // src[x+2*stride+1]
|
||||
ext v19.16b, v18.16b, v18.16b, #1 // src[x+2*stride+1]
|
||||
|
||||
umull v16.8h, v0.8b, v4.8b
|
||||
umlal v16.8h, v1.8b, v5.8b
|
||||
@@ -1744,12 +1744,12 @@ WELS_ASM_AARCH64_FUNC_END
|
||||
WELS_ASM_AARCH64_FUNC_BEGIN McChromaWidthEq4_AArch64_neon
|
||||
ld4r {v4.8b, v5.8b, v6.8b, v7.8b}, [x4] //load A/B/C/D
|
||||
ld1 {v0.8b}, [x0], x1 // src[x]
|
||||
ext.8b v1, v0, v0, #1 // src[x+1]
|
||||
ext v1.8b, v0.8b, v0.8b, #1 // src[x+1]
|
||||
w4_mc_chroma_loop:
|
||||
ld1 {v2.8b}, [x0], x1 // src[x+stride]
|
||||
ext.8b v3, v2, v2, #1 // src[x+stride+1]
|
||||
ext v3.8b, v2.8b, v2.8b, #1 // src[x+stride+1]
|
||||
ld1 {v18.8b}, [x0], x1 // src[x+2*stride]
|
||||
ext.8b v19, v18, v18, #1 // src[x+2*stride+1]
|
||||
ext v19.8b, v18.8b, v18.8b, #1 // src[x+2*stride+1]
|
||||
|
||||
zip1 v0.4s, v0.4s, v2.4s
|
||||
zip1 v1.4s, v1.4s, v3.4s
|
||||
@@ -1779,20 +1779,20 @@ WELS_ASM_AARCH64_FUNC_BEGIN McHorVer20Width17_AArch64_neon
|
||||
movi v1.8h, #5, lsl #0
|
||||
ldr q22, filter_para
|
||||
w17_h_mc_luma_loop:
|
||||
ld1 {v2.8b, v3.8b, v4.8b}, [x0], x1 //only use 22(17+5); v2=src[-2]
|
||||
trn1 v2.2d, v2.2d, v3.2d
|
||||
ld1 {v2.16b, v3.16b}, [x0], x1 //only use 22(17+5); v2=src[-2]
|
||||
|
||||
//prfm pldl1strm, [x0]
|
||||
ext v5.16b, v2.16b, v4.16b, #1 //v5=src[-1]
|
||||
ext v6.16b, v2.16b, v4.16b, #2 //v6=src[0]
|
||||
ext v7.16b, v2.16b, v4.16b, #3 //v7=src[1]
|
||||
ext v16.16b, v2.16b, v4.16b, #4 //v16=src[2]
|
||||
ext v17.16b, v2.16b, v4.16b, #5 //v17=src[3]
|
||||
ext v5.16b, v2.16b, v3.16b, #1 //v5=src[-1]
|
||||
ext v6.16b, v2.16b, v3.16b, #2 //v6=src[0]
|
||||
ext v7.16b, v2.16b, v3.16b, #3 //v7=src[1]
|
||||
ext v16.16b, v2.16b, v3.16b, #4 //v16=src[2]
|
||||
ext v17.16b, v2.16b, v3.16b, #5 //v17=src[3]
|
||||
|
||||
FILTER_6TAG_8BITS1 v2, v5, v6, v7, v16, v17, v20, v0, v1
|
||||
FILTER_6TAG_8BITS2 v2, v5, v6, v7, v16, v17, v20, v0, v1
|
||||
st1 {v20.16b}, [x2], x5 //write 16Byte
|
||||
|
||||
ext.8b v21, v4, v4, #7 // [0][1][2][3][4][5]XY-->O[0][1][2][3][4][5]X
|
||||
ext v21.8b, v3.8b, v3.8b, #7 // [0][1][2][3][4][5]XY-->O[0][1][2][3][4][5]X
|
||||
FILTER_SINGLE_TAG_8BITS v21, v22, v23, h21
|
||||
st1 {v21.b}[0], [x2], x3 //write 16th Byte
|
||||
|
||||
@@ -1808,8 +1808,8 @@ WELS_ASM_AARCH64_FUNC_BEGIN McHorVer20Width9_AArch64_neon
|
||||
movi v1.8h, #5, lsl #0
|
||||
ldr q22, filter_para
|
||||
w9_h_mc_luma_loop:
|
||||
ld1 {v2.8b, v3.8b}, [x0], x1 //only use 14(9+5); v2=src[-2]
|
||||
trn1 v2.2d, v2.2d, v3.2d
|
||||
ld1 {v2.16b}, [x0], x1 //only use 14(9+5); v2=src[-2]
|
||||
mov v3.d[0], v2.d[1]
|
||||
//prfm pldl1strm, [x0]
|
||||
ext v5.16b, v2.16b, v4.16b, #1 //v5=src[-1]
|
||||
ext v6.16b, v2.16b, v4.16b, #2 //v6=src[0]
|
||||
@@ -1820,7 +1820,7 @@ w9_h_mc_luma_loop:
|
||||
FILTER_6TAG_8BITS1 v2, v5, v6, v7, v16, v17, v20, v0, v1
|
||||
st1 {v20.8b}, [x2], x5 //write 8Byte
|
||||
|
||||
ext.8b v21, v3, v3, #7 // [0][1][2][3][4][5]XY-->O[0][1][2][3][4][5]X
|
||||
ext v21.8b, v3.8b, v3.8b, #7 // [0][1][2][3][4][5]XY-->O[0][1][2][3][4][5]X
|
||||
FILTER_SINGLE_TAG_8BITS v21, v22, v23, h21
|
||||
st1 {v21.b}[0], [x2], x3 //write 9th Byte
|
||||
|
||||
|
||||
20
codec/common/generate_version.sh
Executable file
20
codec/common/generate_version.sh
Executable file
@@ -0,0 +1,20 @@
|
||||
#!/bin/bash
|
||||
rm -f codec/common/inc/version.h
|
||||
git rev-list HEAD | sort > config.git-hash
|
||||
LOCALVER=`wc -l config.git-hash | awk '{print $1}'`
|
||||
if [ $LOCALVER \> 1 ] ; then
|
||||
VER="$(git rev-list HEAD -n 1 | cut -c 1-7)"
|
||||
if git status | grep -q "modified:" ; then
|
||||
VER="${VER}+M"
|
||||
fi
|
||||
GIT_VERSION=$VER
|
||||
else
|
||||
GIT_VERSION=
|
||||
VER="x"
|
||||
fi
|
||||
GIT_VERSION='"'$GIT_VERSION'"'
|
||||
rm -f config.git-hash
|
||||
|
||||
cat codec/common/inc/version.h.template | sed "s/\$FULL_VERSION/$GIT_VERSION/g" > codec/common/inc/version.h
|
||||
|
||||
echo "Generated codec/common/inc/version.h"
|
||||
@@ -117,6 +117,8 @@ WELS_THREAD_ERROR_CODE WelsMultipleEventsWaitAllBlocking (uint32_t nCount, WE
|
||||
WELS_THREAD_ERROR_CODE WelsThreadCreate (WELS_THREAD_HANDLE* thread, LPWELS_THREAD_ROUTINE routine,
|
||||
void* arg, WELS_THREAD_ATTR attr);
|
||||
|
||||
WELS_THREAD_ERROR_CODE WelsThreadSetName (const char* thread_name);
|
||||
|
||||
WELS_THREAD_ERROR_CODE WelsThreadJoin (WELS_THREAD_HANDLE thread);
|
||||
|
||||
WELS_THREAD_HANDLE WelsThreadSelf();
|
||||
|
||||
@@ -52,7 +52,6 @@
|
||||
#include <sys/types.h>
|
||||
#include <sys/timeb.h>
|
||||
#else
|
||||
#include <sys/timeb.h>
|
||||
#include <sys/time.h>
|
||||
#include "typedefs.h"
|
||||
#endif//_WIN32
|
||||
@@ -72,7 +71,10 @@ typedef FILE WelsFileHandle;
|
||||
#ifdef _WIN32
|
||||
typedef struct _timeb SWelsTime;
|
||||
#else
|
||||
typedef struct timeb SWelsTime;
|
||||
typedef struct TagWelsTime {
|
||||
time_t time;
|
||||
unsigned short millitm;
|
||||
} SWelsTime;
|
||||
#endif
|
||||
|
||||
int32_t WelsSnprintf (char* buffer, int32_t sizeOfBuffer, const char* format, ...);
|
||||
|
||||
76
codec/common/inc/intra_pred_common.h
Normal file
76
codec/common/inc/intra_pred_common.h
Normal file
@@ -0,0 +1,76 @@
|
||||
/*!
|
||||
* \copy
|
||||
* Copyright (c) 2009-2013, Cisco Systems
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*
|
||||
* \file intra_pred_common.h
|
||||
*
|
||||
* \brief interfaces for intra predictor about 16x16.
|
||||
*
|
||||
* \date 4/2/2014 Created
|
||||
*
|
||||
*************************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef INTRA_PRED_COMMON_H
|
||||
#define INTRA_PRED_COMMON_H
|
||||
|
||||
#include "typedefs.h"
|
||||
|
||||
|
||||
void WelsI16x16LumaPredV_c (uint8_t* pPred, uint8_t* pRef, const int32_t kiStride);
|
||||
void WelsI16x16LumaPredH_c (uint8_t* pPred, uint8_t* pRef, const int32_t kiStride);
|
||||
|
||||
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
#endif//__cplusplus
|
||||
|
||||
#if defined(X86_ASM)
|
||||
//for intra-prediction ASM functions
|
||||
void WelsI16x16LumaPredV_sse2 (uint8_t* pPred, uint8_t* pRef, const int32_t kiStride);
|
||||
void WelsI16x16LumaPredH_sse2 (uint8_t* pPred, uint8_t* pRef, const int32_t kiStride);
|
||||
#endif//X86_ASM
|
||||
|
||||
#if defined(HAVE_NEON)
|
||||
void WelsI16x16LumaPredV_neon (uint8_t* pPred, uint8_t* pRef, const int32_t kiStride);
|
||||
void WelsI16x16LumaPredH_neon (uint8_t* pPred, uint8_t* pRef, const int32_t kiStride);
|
||||
#endif//HAVE_NEON
|
||||
|
||||
#if defined(HAVE_NEON_AARCH64)
|
||||
void WelsI16x16LumaPredV_AArch64_neon (uint8_t* pPred, uint8_t* pRef, const int32_t kiStride);
|
||||
void WelsI16x16LumaPredH_AArch64_neon (uint8_t* pPred, uint8_t* pRef, const int32_t kiStride);
|
||||
#endif//HAVE_NEON_AARCH64
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif//__cplusplus
|
||||
#endif//
|
||||
|
||||
|
||||
|
||||
@@ -40,13 +40,13 @@
|
||||
|
||||
struct tagUnaligned_64 {
|
||||
uint64_t l;
|
||||
} __attribute__ ((packed));
|
||||
} __attribute__ ((packed)) __attribute__ ((may_alias));
|
||||
struct tagUnaligned_32 {
|
||||
uint32_t l;
|
||||
} __attribute__ ((packed));
|
||||
} __attribute__ ((packed)) __attribute__ ((may_alias));
|
||||
struct tagUnaligned_16 {
|
||||
uint16_t l;
|
||||
} __attribute__ ((packed));
|
||||
} __attribute__ ((packed)) __attribute__ ((may_alias));
|
||||
|
||||
#define LD16(a) (((struct tagUnaligned_16 *) (a))->l)
|
||||
#define LD32(a) (((struct tagUnaligned_32 *) (a))->l)
|
||||
@@ -54,7 +54,7 @@ struct tagUnaligned_16 {
|
||||
|
||||
#define STRUCTA(size, align) struct tagUnaligned_##size##_##align {\
|
||||
uint##size##_t l; \
|
||||
} __attribute__ ((aligned(align)))
|
||||
} __attribute__ ((aligned(align))) __attribute__ ((may_alias))
|
||||
STRUCTA (16, 2);
|
||||
STRUCTA (32, 2);
|
||||
STRUCTA (32, 4);
|
||||
|
||||
@@ -47,7 +47,6 @@
|
||||
#include <sys/time.h>
|
||||
#else
|
||||
#include <windows.h>
|
||||
#include <sys/timeb.h>
|
||||
#endif
|
||||
#include <time.h>
|
||||
|
||||
|
||||
@@ -42,7 +42,9 @@
|
||||
#include <stdarg.h>
|
||||
#include "typedefs.h"
|
||||
|
||||
|
||||
#define MAX_LOG_SIZE 1024
|
||||
#define MAX_WIDTH (4096)
|
||||
#define MAX_HEIGHT (2304)//MAX_FS_LEVEL51 (36864); MAX_FS_LEVEL51*256/4096 = 2304
|
||||
/*
|
||||
* Function pointer declaration for various tool sets
|
||||
*/
|
||||
@@ -56,7 +58,8 @@ typedef struct TagLogContext {
|
||||
|
||||
|
||||
#ifdef __GNUC__
|
||||
extern void WelsLog (SLogContext* pCtx, int32_t iLevel, const char* kpFmt, ...) __attribute__ ((__format__ (__printf__, 3,
|
||||
extern void WelsLog (SLogContext* pCtx, int32_t iLevel, const char* kpFmt, ...) __attribute__ ((__format__ (__printf__,
|
||||
3,
|
||||
4)));
|
||||
#else
|
||||
extern void WelsLog (SLogContext* pCtx, int32_t iLevel, const char* kpFmt, ...);
|
||||
|
||||
6
codec/common/inc/version.h
Normal file
6
codec/common/inc/version.h
Normal file
@@ -0,0 +1,6 @@
|
||||
#ifndef VERSION_H
|
||||
#define VERSION_H
|
||||
|
||||
#define VERSION_NUMBER "openh264 default: 1.2"
|
||||
|
||||
#endif // VERSION_H
|
||||
6
codec/common/inc/version.h.template
Normal file
6
codec/common/inc/version.h.template
Normal file
@@ -0,0 +1,6 @@
|
||||
#ifndef VERSION_H
|
||||
#define VERSION_H
|
||||
|
||||
#define VERSION_NUMBER $FULL_VERSION
|
||||
|
||||
#endif // VERSION_H
|
||||
@@ -42,6 +42,21 @@
|
||||
namespace WelsCommon {
|
||||
/*common use table*/
|
||||
|
||||
#define LEVEL_NUMBER 17
|
||||
typedef struct TagLevelLimits {
|
||||
uint8_t uiLevelIdc; // level idc
|
||||
uint32_t uiMaxMBPS; // Max macroblock processing rate(MB/s)
|
||||
uint32_t uiMaxFS; // Max frame sizea(MBs)
|
||||
uint32_t uiMaxDPBMbs;// Max decoded picture buffer size(MBs)
|
||||
uint32_t uiMaxBR; // Max video bit rate
|
||||
uint32_t uiMaxCPB; // Max CPB size
|
||||
int16_t iMinVmv; // Vertical MV component range upper bound
|
||||
int16_t iMaxVmv; // Vertical MV component range lower bound
|
||||
uint16_t uiMinCR; // Min compression ration
|
||||
int16_t iMaxMvsPer2Mb; // Max number of motion vectors per two consecutive MBs
|
||||
} SLevelLimits;
|
||||
|
||||
extern const SLevelLimits g_ksLevelLimits[LEVEL_NUMBER];
|
||||
extern const uint8_t g_kuiMbCountScan4Idx[24];
|
||||
extern const uint8_t g_kuiCache30ScanIdx[16];
|
||||
extern const uint8_t g_kuiCache48CountScan4Idx[24];
|
||||
@@ -53,38 +68,38 @@ extern const uint8_t g_kuiChromaQpTable[52];
|
||||
* NAL Unit Type (5 Bits)
|
||||
*/
|
||||
enum EWelsNalUnitType {
|
||||
NAL_UNIT_UNSPEC_0 = 0,
|
||||
NAL_UNIT_CODED_SLICE = 1,
|
||||
NAL_UNIT_CODED_SLICE_DPA = 2,
|
||||
NAL_UNIT_CODED_SLICE_DPB = 3,
|
||||
NAL_UNIT_CODED_SLICE_DPC = 4,
|
||||
NAL_UNIT_CODED_SLICE_IDR = 5,
|
||||
NAL_UNIT_SEI = 6,
|
||||
NAL_UNIT_SPS = 7,
|
||||
NAL_UNIT_PPS = 8,
|
||||
NAL_UNIT_AU_DELIMITER = 9,
|
||||
NAL_UNIT_END_OF_SEQ = 10,
|
||||
NAL_UNIT_END_OF_STR = 11,
|
||||
NAL_UNIT_FILLER_DATA = 12,
|
||||
NAL_UNIT_SPS_EXT = 13,
|
||||
NAL_UNIT_PREFIX = 14,
|
||||
NAL_UNIT_SUBSET_SPS = 15,
|
||||
NAL_UNIT_RESV_16 = 16,
|
||||
NAL_UNIT_RESV_17 = 17,
|
||||
NAL_UNIT_RESV_18 = 18,
|
||||
NAL_UNIT_AUX_CODED_SLICE = 19,
|
||||
NAL_UNIT_CODED_SLICE_EXT = 20,
|
||||
NAL_UNIT_RESV_21 = 21,
|
||||
NAL_UNIT_RESV_22 = 22,
|
||||
NAL_UNIT_RESV_23 = 23,
|
||||
NAL_UNIT_UNSPEC_24 = 24,
|
||||
NAL_UNIT_UNSPEC_25 = 25,
|
||||
NAL_UNIT_UNSPEC_26 = 26,
|
||||
NAL_UNIT_UNSPEC_27 = 27,
|
||||
NAL_UNIT_UNSPEC_28 = 28,
|
||||
NAL_UNIT_UNSPEC_29 = 29,
|
||||
NAL_UNIT_UNSPEC_30 = 30,
|
||||
NAL_UNIT_UNSPEC_31 = 31
|
||||
NAL_UNIT_UNSPEC_0 = 0,
|
||||
NAL_UNIT_CODED_SLICE = 1,
|
||||
NAL_UNIT_CODED_SLICE_DPA = 2,
|
||||
NAL_UNIT_CODED_SLICE_DPB = 3,
|
||||
NAL_UNIT_CODED_SLICE_DPC = 4,
|
||||
NAL_UNIT_CODED_SLICE_IDR = 5,
|
||||
NAL_UNIT_SEI = 6,
|
||||
NAL_UNIT_SPS = 7,
|
||||
NAL_UNIT_PPS = 8,
|
||||
NAL_UNIT_AU_DELIMITER = 9,
|
||||
NAL_UNIT_END_OF_SEQ = 10,
|
||||
NAL_UNIT_END_OF_STR = 11,
|
||||
NAL_UNIT_FILLER_DATA = 12,
|
||||
NAL_UNIT_SPS_EXT = 13,
|
||||
NAL_UNIT_PREFIX = 14,
|
||||
NAL_UNIT_SUBSET_SPS = 15,
|
||||
NAL_UNIT_RESV_16 = 16,
|
||||
NAL_UNIT_RESV_17 = 17,
|
||||
NAL_UNIT_RESV_18 = 18,
|
||||
NAL_UNIT_AUX_CODED_SLICE = 19,
|
||||
NAL_UNIT_CODED_SLICE_EXT = 20,
|
||||
NAL_UNIT_RESV_21 = 21,
|
||||
NAL_UNIT_RESV_22 = 22,
|
||||
NAL_UNIT_RESV_23 = 23,
|
||||
NAL_UNIT_UNSPEC_24 = 24,
|
||||
NAL_UNIT_UNSPEC_25 = 25,
|
||||
NAL_UNIT_UNSPEC_26 = 26,
|
||||
NAL_UNIT_UNSPEC_27 = 27,
|
||||
NAL_UNIT_UNSPEC_28 = 28,
|
||||
NAL_UNIT_UNSPEC_29 = 29,
|
||||
NAL_UNIT_UNSPEC_30 = 30,
|
||||
NAL_UNIT_UNSPEC_31 = 31
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -92,10 +107,10 @@ NAL_UNIT_UNSPEC_31 = 31
|
||||
*/
|
||||
|
||||
enum EWelsNalRefIdc {
|
||||
NRI_PRI_LOWEST = 0,
|
||||
NRI_PRI_LOW = 1,
|
||||
NRI_PRI_HIGH = 2,
|
||||
NRI_PRI_HIGHEST = 3
|
||||
NRI_PRI_LOWEST = 0,
|
||||
NRI_PRI_LOW = 1,
|
||||
NRI_PRI_HIGH = 2,
|
||||
NRI_PRI_HIGHEST = 3
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -103,9 +118,9 @@ NRI_PRI_HIGHEST = 3
|
||||
*/
|
||||
|
||||
enum EVclType {
|
||||
NON_VCL = 0,
|
||||
VCL = 1,
|
||||
NOT_APP = 2
|
||||
NON_VCL = 0,
|
||||
VCL = 1,
|
||||
NOT_APP = 2
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -132,43 +147,43 @@ extern const EVclType g_keTypeMap[32][2];
|
||||
*/
|
||||
|
||||
enum EWelsSliceType {
|
||||
P_SLICE = 0,
|
||||
B_SLICE = 1,
|
||||
I_SLICE = 2,
|
||||
SP_SLICE = 3,
|
||||
SI_SLICE = 4,
|
||||
UNKNOWN_SLICE = 5
|
||||
P_SLICE = 0,
|
||||
B_SLICE = 1,
|
||||
I_SLICE = 2,
|
||||
SP_SLICE = 3,
|
||||
SI_SLICE = 4,
|
||||
UNKNOWN_SLICE = 5
|
||||
};
|
||||
|
||||
/* SSlice Types in scalable extension */ ;
|
||||
/* SSlice Types in scalable extension */
|
||||
enum ESliceTypeExt {
|
||||
EP_SLICE = 0, // EP_SLICE: 0, 5
|
||||
EB_SLICE = 1, // EB_SLICE: 1, 6
|
||||
EI_SLICE = 2 // EI_SLICE: 2, 7
|
||||
EP_SLICE = 0, // EP_SLICE: 0, 5
|
||||
EB_SLICE = 1, // EB_SLICE: 1, 6
|
||||
EI_SLICE = 2 // EI_SLICE: 2, 7
|
||||
};
|
||||
|
||||
/* List Index */
|
||||
enum EListIndex {
|
||||
LIST_0 = 0,
|
||||
LIST_1 = 1,
|
||||
LIST_A = 2
|
||||
LIST_0 = 0,
|
||||
LIST_1 = 1,
|
||||
LIST_A = 2
|
||||
};
|
||||
|
||||
|
||||
|
||||
/* Motion Vector components */
|
||||
enum EMvComp {
|
||||
MV_X = 0,
|
||||
MV_Y = 1,
|
||||
MV_A = 2
|
||||
MV_X = 0,
|
||||
MV_Y = 1,
|
||||
MV_A = 2
|
||||
};
|
||||
|
||||
/* Chroma Components */
|
||||
|
||||
enum EChromaComp {
|
||||
CHROMA_CB = 0,
|
||||
CHROMA_CR = 1,
|
||||
CHROMA_A = 2
|
||||
CHROMA_CB = 0,
|
||||
CHROMA_CR = 1,
|
||||
CHROMA_A = 2
|
||||
};
|
||||
|
||||
|
||||
@@ -177,13 +192,13 @@ CHROMA_A = 2
|
||||
* Memory Management Control Operation (MMCO) code
|
||||
*/
|
||||
enum EMmcoCode {
|
||||
MMCO_END = 0,
|
||||
MMCO_SHORT2UNUSED = 1,
|
||||
MMCO_LONG2UNUSED = 2,
|
||||
MMCO_SHORT2LONG = 3,
|
||||
MMCO_SET_MAX_LONG = 4,
|
||||
MMCO_RESET = 5,
|
||||
MMCO_LONG = 6
|
||||
MMCO_END = 0,
|
||||
MMCO_SHORT2UNUSED = 1,
|
||||
MMCO_LONG2UNUSED = 2,
|
||||
MMCO_SHORT2LONG = 3,
|
||||
MMCO_SET_MAX_LONG = 4,
|
||||
MMCO_RESET = 5,
|
||||
MMCO_LONG = 6
|
||||
};
|
||||
|
||||
/////////intra16x16 Luma
|
||||
|
||||
@@ -58,6 +58,9 @@
|
||||
#ifdef ANDROID_NDK
|
||||
#include <cpu-features.h>
|
||||
#endif
|
||||
#ifdef __ANDROID__
|
||||
#include <android/api-level.h>
|
||||
#endif
|
||||
|
||||
#include "WelsThreadLib.h"
|
||||
#include <stdio.h>
|
||||
@@ -195,6 +198,12 @@ WELS_THREAD_ERROR_CODE WelsThreadCreate (WELS_THREAD_HANDLE* thread, LPWELS_
|
||||
return WELS_THREAD_ERROR_OK;
|
||||
}
|
||||
|
||||
WELS_THREAD_ERROR_CODE WelsThreadSetName (const char* thread_name) {
|
||||
// do nothing
|
||||
return WELS_THREAD_ERROR_OK;
|
||||
}
|
||||
|
||||
|
||||
WELS_THREAD_ERROR_CODE WelsThreadJoin (WELS_THREAD_HANDLE thread) {
|
||||
WaitForSingleObject (thread, INFINITE);
|
||||
CloseHandle (thread);
|
||||
@@ -242,6 +251,17 @@ WELS_THREAD_ERROR_CODE WelsThreadCreate (WELS_THREAD_HANDLE* thread, LPWELS_
|
||||
return err;
|
||||
}
|
||||
|
||||
WELS_THREAD_ERROR_CODE WelsThreadSetName (const char* thread_name) {
|
||||
#ifdef APPLE_IOS
|
||||
pthread_setname_np(thread_name);
|
||||
#endif
|
||||
#if defined(__ANDROID__) && __ANDROID_API__ >= 9
|
||||
pthread_setname_np(pthread_self(), thread_name);
|
||||
#endif
|
||||
// do nothing
|
||||
return WELS_THREAD_ERROR_OK;
|
||||
}
|
||||
|
||||
WELS_THREAD_ERROR_CODE WelsThreadJoin (WELS_THREAD_HANDLE thread) {
|
||||
return pthread_join (thread, NULL);
|
||||
}
|
||||
|
||||
@@ -149,5 +149,29 @@ ALIGNED_DECLARE (const uint16_t, g_kuiDequantCoeff[52][8], 16) = {
|
||||
/*50*/{ 3328, 4096, 3328, 4096, 4096, 5120, 4096, 5120 }, /*51*/{ 3584, 4608, 3584, 4608, 4608, 5888, 4608, 5888 },
|
||||
};
|
||||
|
||||
// table A-1 - Level limits
|
||||
const SLevelLimits g_ksLevelLimits[LEVEL_NUMBER] = {
|
||||
{10, 1485, 99, 396, 64, 175, -256, 255, 2, 0x7fff}, /* level 1 */
|
||||
{9, 1485, 99, 396, 128, 350, -256, 255, 2, 0x7fff}, /* level 1.b */
|
||||
{11, 3000, 396, 900, 192, 500, -512, 511, 2, 0x7fff}, /* level 1.1 */
|
||||
{12, 6000, 396, 2376, 384, 1000, -512, 511, 2, 0x7fff}, /* level 1.2 */
|
||||
{13, 11880, 396, 2376, 768, 2000, -512, 511, 2, 0x7fff}, /* level 1.3 */
|
||||
|
||||
{20, 11880, 396, 2376, 2000, 2000, -512, 511, 2, 0x7fff}, /* level 2 */
|
||||
{21, 19800, 792, 4752, 4000, 4000, -1024, 1023, 2, 0x7fff}, /* level 2.1 */
|
||||
{22, 20250, 1620, 8100, 4000, 4000, -1024, 1023, 2, 0x7fff}, /* level 2.2 */
|
||||
|
||||
{30, 40500, 1620, 8100, 10000, 10000, -1024, 1023, 2, 32 }, /* level 3 */
|
||||
{31, 108000, 3600, 18000, 14000, 14000, -2048, 2047, 4, 16}, /* level 3.1 */
|
||||
{32, 216000, 5120, 20480, 20000, 20000, -2048, 2047, 4, 16}, /* level 3.2 */
|
||||
|
||||
{40, 245760, 8192, 32768, 20000, 25000, -2048, 2047, 4, 16}, /* level 4 */
|
||||
{41, 245760, 8192, 32768, 50000, 62500, -2048, 2047, 2, 16}, /* level 4.1 */
|
||||
{42, 522240, 8704, 34816, 50000, 62500, -2048, 2047, 2, 16}, /* level 4.2 */
|
||||
|
||||
{50, 589824, 22080, 110400, 135000, 135000, -2048, 2047, 2, 16}, /* level 5 */
|
||||
{51, 983040, 36864, 184320, 240000, 240000, -2048, 2047, 2, 16}, /* level 5.1 */
|
||||
{52, 2073600, 36864, 184320, 240000, 240000, -2048, 2047, 2, 16} /* level 5.2 */
|
||||
};
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
}
|
||||
|
||||
@@ -51,7 +51,6 @@
|
||||
#endif //!_MSC_VER
|
||||
#else
|
||||
#include <sys/time.h>
|
||||
#include <sys/timeb.h>
|
||||
#endif //_WIN32
|
||||
|
||||
#include "macros.h"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*!
|
||||
* \copy
|
||||
* Copyright (c) 2013, Cisco Systems
|
||||
* Copyright (c) 2009-2013, Cisco Systems
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@@ -28,12 +28,21 @@
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*
|
||||
* \file get_intra_predictor.c
|
||||
*
|
||||
* \brief implementation for get intra predictor about 16x16, 4x4, chroma.
|
||||
*
|
||||
* \date 4/2/2009 Created
|
||||
* 9/14/2009 C level based optimization with high performance gained.
|
||||
* [const, using ST32/ST64 to replace memset, memcpy and memmove etc.]
|
||||
*
|
||||
*************************************************************************************
|
||||
*/
|
||||
|
||||
#include "common.h"
|
||||
#include "ls_defines.h"
|
||||
#include "cpu_core.h"
|
||||
#include "intra_pred_common.h"
|
||||
|
||||
WELSVP_NAMESPACE_BEGIN
|
||||
|
||||
void WelsI16x16LumaPredV_c (uint8_t* pPred, uint8_t* pRef, const int32_t kiStride) {
|
||||
uint8_t i = 15;
|
||||
@@ -66,4 +75,3 @@ void WelsI16x16LumaPredH_c (uint8_t* pPred, uint8_t* pRef, const int32_t kiStrid
|
||||
} while (i-- > 0);
|
||||
}
|
||||
|
||||
WELSVP_NAMESPACE_END
|
||||
@@ -136,4 +136,4 @@ void WelsSampleSadFour4x4_c (uint8_t* iSample1, int32_t iStride1, uint8_t* iSamp
|
||||
* (pSad + 1) = WelsSampleSad4x4_c (iSample1, iStride1, (iSample2 + iStride2), iStride2);
|
||||
* (pSad + 2) = WelsSampleSad4x4_c (iSample1, iStride1, (iSample2 - 1), iStride2);
|
||||
* (pSad + 3) = WelsSampleSad4x4_c (iSample1, iStride1, (iSample2 + 1), iStride2);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
*/
|
||||
#include "utils.h"
|
||||
#include "crt_util_safe_x.h" // Safe CRT routines like utils for cross platforms
|
||||
|
||||
#include "codec_app_def.h"
|
||||
float WelsCalcPsnr (const void* kpTarPic,
|
||||
const int32_t kiTarStride,
|
||||
const void* kpRefPic,
|
||||
@@ -50,8 +50,27 @@ float WelsCalcPsnr (const void* kpTarPic,
|
||||
|
||||
void WelsLog (SLogContext* logCtx, int32_t iLevel, const char* kpFmt, ...) {
|
||||
va_list vl;
|
||||
char pTraceTag[MAX_LOG_SIZE];
|
||||
switch (iLevel) {
|
||||
case WELS_LOG_ERROR:
|
||||
WelsSnprintf (pTraceTag, MAX_LOG_SIZE, "[OpenH264] Error:");
|
||||
break;
|
||||
case WELS_LOG_WARNING:
|
||||
WelsSnprintf (pTraceTag, MAX_LOG_SIZE, "[OpenH264] Warning:");
|
||||
break;
|
||||
case WELS_LOG_INFO:
|
||||
WelsSnprintf (pTraceTag, MAX_LOG_SIZE, "[OpenH264] Info:");
|
||||
break;
|
||||
case WELS_LOG_DEBUG:
|
||||
WelsSnprintf (pTraceTag, MAX_LOG_SIZE, "[OpenH264] Debug:");
|
||||
break;
|
||||
default:
|
||||
WelsSnprintf (pTraceTag, MAX_LOG_SIZE, "[OpenH264] Detail:");
|
||||
break;
|
||||
}
|
||||
WelsStrcat (pTraceTag, MAX_LOG_SIZE, kpFmt);
|
||||
va_start (vl, kpFmt);
|
||||
logCtx->pfLog (logCtx->pLogCtx, iLevel, kpFmt, vl);
|
||||
logCtx->pfLog (logCtx->pLogCtx, iLevel, pTraceTag, vl);
|
||||
va_end (vl);
|
||||
}
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
|
||||
|
||||
static void welsStderrTrace (void* ctx, int level, const char* string) {
|
||||
fprintf (stderr, "%s", string);
|
||||
fprintf (stderr, "%s\n", string);
|
||||
}
|
||||
|
||||
welsCodecTrace::welsCodecTrace() {
|
||||
@@ -64,7 +64,7 @@ welsCodecTrace::~welsCodecTrace() {
|
||||
m_fpTrace = NULL;
|
||||
}
|
||||
|
||||
#define MAX_LOG_SIZE 1024
|
||||
|
||||
|
||||
void welsCodecTrace::StaticCodecTrace (void* pCtx, const int32_t iLevel, const char* Str_Format, va_list vl) {
|
||||
welsCodecTrace* self = (welsCodecTrace*) pCtx;
|
||||
@@ -78,8 +78,9 @@ void welsCodecTrace::CodecTrace (const int32_t iLevel, const char* Str_Format, v
|
||||
|
||||
char pBuf[MAX_LOG_SIZE] = {0};
|
||||
WelsVsnprintf (pBuf, MAX_LOG_SIZE, Str_Format, vl); // confirmed_safe_unsafe_usage
|
||||
|
||||
m_fpTrace (m_pTraceCtx, iLevel, pBuf);
|
||||
if (m_fpTrace) {
|
||||
m_fpTrace (m_pTraceCtx, iLevel, pBuf);
|
||||
}
|
||||
}
|
||||
|
||||
void welsCodecTrace::SetTraceLevel (const int32_t iLevel) {
|
||||
|
||||
@@ -6,6 +6,7 @@ COMMON_CPP_SRCS=\
|
||||
$(COMMON_SRCDIR)/src/crt_util_safe_x.cpp\
|
||||
$(COMMON_SRCDIR)/src/deblocking_common.cpp\
|
||||
$(COMMON_SRCDIR)/src/expand_pic.cpp\
|
||||
$(COMMON_SRCDIR)/src/intra_pred_common.cpp\
|
||||
$(COMMON_SRCDIR)/src/sad_common.cpp\
|
||||
$(COMMON_SRCDIR)/src/utils.cpp\
|
||||
$(COMMON_SRCDIR)/src/welsCodecTrace.cpp\
|
||||
@@ -13,41 +14,51 @@ COMMON_CPP_SRCS=\
|
||||
|
||||
COMMON_OBJS += $(COMMON_CPP_SRCS:.cpp=.$(OBJ))
|
||||
|
||||
ifeq ($(ASM_ARCH), x86)
|
||||
COMMON_ASM_SRCS=\
|
||||
$(COMMON_SRCDIR)/x86/cpuid.asm\
|
||||
$(COMMON_SRCDIR)/x86/deblock.asm\
|
||||
$(COMMON_SRCDIR)/x86/expand_picture.asm\
|
||||
$(COMMON_SRCDIR)/x86/intra_pred_com.asm\
|
||||
$(COMMON_SRCDIR)/x86/mb_copy.asm\
|
||||
$(COMMON_SRCDIR)/x86/mc_chroma.asm\
|
||||
$(COMMON_SRCDIR)/x86/mc_luma.asm\
|
||||
$(COMMON_SRCDIR)/x86/satd_sad.asm\
|
||||
$(COMMON_SRCDIR)/x86/vaa.asm\
|
||||
|
||||
COMMON_OBJS += $(COMMON_ASM_SRCS:.asm=.$(OBJ))
|
||||
COMMON_OBJSASM += $(COMMON_ASM_SRCS:.asm=.$(OBJ))
|
||||
ifeq ($(ASM_ARCH), x86)
|
||||
COMMON_OBJS += $(COMMON_OBJSASM)
|
||||
endif
|
||||
OBJS += $(COMMON_OBJSASM)
|
||||
|
||||
ifeq ($(ASM_ARCH), arm)
|
||||
COMMON_ASM_ARM_SRCS=\
|
||||
$(COMMON_SRCDIR)/arm/copy_mb_neon.S\
|
||||
$(COMMON_SRCDIR)/arm/deblocking_neon.S\
|
||||
$(COMMON_SRCDIR)/arm/expand_picture_neon.S\
|
||||
$(COMMON_SRCDIR)/arm/intra_pred_common_neon.S\
|
||||
$(COMMON_SRCDIR)/arm/mc_neon.S\
|
||||
|
||||
COMMON_OBJS += $(COMMON_ASM_ARM_SRCS:.S=.$(OBJ))
|
||||
COMMON_OBJSARM += $(COMMON_ASM_ARM_SRCS:.S=.$(OBJ))
|
||||
ifeq ($(ASM_ARCH), arm)
|
||||
COMMON_OBJS += $(COMMON_OBJSARM)
|
||||
endif
|
||||
OBJS += $(COMMON_OBJSARM)
|
||||
|
||||
ifeq ($(ASM_ARCH), arm64)
|
||||
COMMON_ASM_ARM64_SRCS=\
|
||||
$(COMMON_SRCDIR)/arm64/copy_mb_aarch64_neon.S\
|
||||
$(COMMON_SRCDIR)/arm64/deblocking_aarch64_neon.S\
|
||||
$(COMMON_SRCDIR)/arm64/expand_picture_aarch64_neon.S\
|
||||
$(COMMON_SRCDIR)/arm64/intra_pred_common_aarch64_neon.S\
|
||||
$(COMMON_SRCDIR)/arm64/mc_aarch64_neon.S\
|
||||
|
||||
COMMON_OBJS += $(COMMON_ASM_ARM64_SRCS:.S=.$(OBJ))
|
||||
COMMON_OBJSARM64 += $(COMMON_ASM_ARM64_SRCS:.S=.$(OBJ))
|
||||
ifeq ($(ASM_ARCH), arm64)
|
||||
COMMON_OBJS += $(COMMON_OBJSARM64)
|
||||
endif
|
||||
OBJS += $(COMMON_OBJSARM64)
|
||||
|
||||
OBJS += $(COMMON_OBJS)
|
||||
|
||||
$(COMMON_SRCDIR)/%.$(OBJ): $(COMMON_SRCDIR)/%.cpp
|
||||
$(QUIET_CXX)$(CXX) $(CFLAGS) $(CXXFLAGS) $(INCLUDES) $(COMMON_CFLAGS) $(COMMON_INCLUDES) -c $(CXX_O) $<
|
||||
|
||||
|
||||
@@ -116,6 +116,10 @@ BITS 64
|
||||
|
||||
BITS 64
|
||||
|
||||
%ifidn __OUTPUT_FORMAT__,elf64
|
||||
SECTION .note.GNU-stack noalloc noexec nowrite progbits ; Mark the stack as non-executable
|
||||
%endif
|
||||
|
||||
%define arg1 rdi
|
||||
%define arg2 rsi
|
||||
%define arg3 rdx
|
||||
@@ -166,6 +170,10 @@ BITS 64
|
||||
|
||||
BITS 32
|
||||
|
||||
%ifidn __OUTPUT_FORMAT__,elf
|
||||
SECTION .note.GNU-stack noalloc noexec nowrite progbits ; Mark the stack as non-executable
|
||||
%endif
|
||||
|
||||
%define arg1 [esp + push_num*4 + 4]
|
||||
%define arg2 [esp + push_num*4 + 8]
|
||||
%define arg3 [esp + push_num*4 + 12]
|
||||
|
||||
117
codec/common/x86/intra_pred_com.asm
Normal file
117
codec/common/x86/intra_pred_com.asm
Normal file
@@ -0,0 +1,117 @@
|
||||
;*!
|
||||
;* \copy
|
||||
;* Copyright (c) 2009-2013, Cisco Systems
|
||||
;* All rights reserved.
|
||||
;*
|
||||
;* Redistribution and use in source and binary forms, with or without
|
||||
;* modification, are permitted provided that the following conditions
|
||||
;* are met:
|
||||
;*
|
||||
;* * Redistributions of source code must retain the above copyright
|
||||
;* notice, this list of conditions and the following disclaimer.
|
||||
;*
|
||||
;* * Redistributions in binary form must reproduce the above copyright
|
||||
;* notice, this list of conditions and the following disclaimer in
|
||||
;* the documentation and/or other materials provided with the
|
||||
;* distribution.
|
||||
;*
|
||||
;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
;* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
;* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
;* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
;* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
;* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
;* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
;* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
;* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
;* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
;* POSSIBILITY OF SUCH DAMAGE.
|
||||
;*
|
||||
;*
|
||||
;* intra_pred_common.asm
|
||||
;*
|
||||
;* Abstract
|
||||
;* sse2 function for intra predict operations
|
||||
;*
|
||||
;* History
|
||||
;* 18/09/2009 Created
|
||||
;*
|
||||
;*
|
||||
;*************************************************************************/
|
||||
%include "asm_inc.asm"
|
||||
|
||||
;***********************************************************************
|
||||
; Code
|
||||
;***********************************************************************
|
||||
|
||||
SECTION .text
|
||||
|
||||
;***********************************************************************
|
||||
; void WelsI16x16LumaPredH_sse2(uint8_t *pred, uint8_t *pRef, int32_t stride);
|
||||
;***********************************************************************
|
||||
|
||||
%macro SSE2_PRED_H_16X16_ONE_LINE 0
|
||||
add r0, 16
|
||||
add r1, r2
|
||||
movzx r3, byte [r1]
|
||||
SSE2_Copy16Times xmm0, r3d
|
||||
movdqa [r0], xmm0
|
||||
%endmacro
|
||||
|
||||
WELS_EXTERN WelsI16x16LumaPredH_sse2
|
||||
push r3
|
||||
%assign push_num 1
|
||||
LOAD_3_PARA
|
||||
SIGN_EXTENSION r2, r2d
|
||||
dec r1
|
||||
movzx r3, byte [r1]
|
||||
SSE2_Copy16Times xmm0, r3d
|
||||
movdqa [r0], xmm0
|
||||
SSE2_PRED_H_16X16_ONE_LINE
|
||||
SSE2_PRED_H_16X16_ONE_LINE
|
||||
SSE2_PRED_H_16X16_ONE_LINE
|
||||
SSE2_PRED_H_16X16_ONE_LINE
|
||||
SSE2_PRED_H_16X16_ONE_LINE
|
||||
SSE2_PRED_H_16X16_ONE_LINE
|
||||
SSE2_PRED_H_16X16_ONE_LINE
|
||||
SSE2_PRED_H_16X16_ONE_LINE
|
||||
SSE2_PRED_H_16X16_ONE_LINE
|
||||
SSE2_PRED_H_16X16_ONE_LINE
|
||||
SSE2_PRED_H_16X16_ONE_LINE
|
||||
SSE2_PRED_H_16X16_ONE_LINE
|
||||
SSE2_PRED_H_16X16_ONE_LINE
|
||||
SSE2_PRED_H_16X16_ONE_LINE
|
||||
SSE2_PRED_H_16X16_ONE_LINE
|
||||
pop r3
|
||||
ret
|
||||
|
||||
;***********************************************************************
|
||||
; void WelsI16x16LumaPredV_sse2(uint8_t *pred, uint8_t *pRef, int32_t stride);
|
||||
;***********************************************************************
|
||||
WELS_EXTERN WelsI16x16LumaPredV_sse2
|
||||
%assign push_num 0
|
||||
LOAD_3_PARA
|
||||
SIGN_EXTENSION r2, r2d
|
||||
sub r1, r2
|
||||
movdqa xmm0, [r1]
|
||||
|
||||
movdqa [r0], xmm0
|
||||
movdqa [r0+10h], xmm0
|
||||
movdqa [r0+20h], xmm0
|
||||
movdqa [r0+30h], xmm0
|
||||
movdqa [r0+40h], xmm0
|
||||
movdqa [r0+50h], xmm0
|
||||
movdqa [r0+60h], xmm0
|
||||
movdqa [r0+70h], xmm0
|
||||
movdqa [r0+80h], xmm0
|
||||
movdqa [r0+90h], xmm0
|
||||
movdqa [r0+160], xmm0
|
||||
movdqa [r0+176], xmm0
|
||||
movdqa [r0+192], xmm0
|
||||
movdqa [r0+208], xmm0
|
||||
movdqa [r0+224], xmm0
|
||||
movdqa [r0+240], xmm0
|
||||
|
||||
ret
|
||||
|
||||
@@ -42,26 +42,25 @@
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string>
|
||||
using namespace std;
|
||||
|
||||
|
||||
class CReadConfig {
|
||||
public:
|
||||
CReadConfig();
|
||||
CReadConfig (const char* pConfigFileName);
|
||||
CReadConfig (const string& pConfigFileName);
|
||||
CReadConfig (const std::string& pConfigFileName);
|
||||
virtual ~CReadConfig();
|
||||
|
||||
void Openf (const char* strFile);
|
||||
long ReadLine (string* strVal, const int iValSize = 4);
|
||||
long ReadLine (std::string* strVal, const int iValSize = 4);
|
||||
const bool EndOfFile();
|
||||
const int GetLines();
|
||||
const bool ExistFile();
|
||||
const string& GetFileName();
|
||||
const std::string& GetFileName();
|
||||
|
||||
private:
|
||||
FILE* m_pCfgFile;
|
||||
string m_strCfgFileName;
|
||||
std::string m_strCfgFileName;
|
||||
unsigned int m_iLines;
|
||||
};
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@ CReadConfig::CReadConfig (const char* kpConfigFileName)
|
||||
}
|
||||
}
|
||||
|
||||
CReadConfig::CReadConfig (const string& kpConfigFileName)
|
||||
CReadConfig::CReadConfig (const std::string& kpConfigFileName)
|
||||
: m_pCfgFile (0)
|
||||
, m_strCfgFileName (kpConfigFileName)
|
||||
, m_iLines (0) {
|
||||
@@ -81,11 +81,11 @@ void CReadConfig::Openf (const char* kpStrFile) {
|
||||
}
|
||||
}
|
||||
|
||||
long CReadConfig::ReadLine (string* pVal, const int kiValSize/* = 4*/) {
|
||||
long CReadConfig::ReadLine (std::string* pVal, const int kiValSize/* = 4*/) {
|
||||
if (m_pCfgFile == NULL || pVal == NULL || kiValSize <= 1)
|
||||
return 0;
|
||||
|
||||
string* strTags = &pVal[0];
|
||||
std::string* strTags = &pVal[0];
|
||||
int nTagNum = 0, n = 0;
|
||||
bool bCommentFlag = false;
|
||||
|
||||
@@ -134,6 +134,6 @@ const bool CReadConfig::ExistFile() {
|
||||
return (m_pCfgFile != NULL);
|
||||
}
|
||||
|
||||
const string& CReadConfig::GetFileName() {
|
||||
const std::string& CReadConfig::GetFileName() {
|
||||
return m_strCfgFileName;
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ CONSOLE_COMMON_CPP_SRCS=\
|
||||
CONSOLE_COMMON_OBJS += $(CONSOLE_COMMON_CPP_SRCS:.cpp=.$(OBJ))
|
||||
|
||||
OBJS += $(CONSOLE_COMMON_OBJS)
|
||||
|
||||
$(CONSOLE_COMMON_SRCDIR)/%.$(OBJ): $(CONSOLE_COMMON_SRCDIR)/%.cpp
|
||||
$(QUIET_CXX)$(CXX) $(CFLAGS) $(CXXFLAGS) $(INCLUDES) $(CONSOLE_COMMON_CFLAGS) $(CONSOLE_COMMON_INCLUDES) -c $(CXX_O) $<
|
||||
|
||||
|
||||
@@ -198,7 +198,7 @@ void H264DecodeInstance (ISVCDecoder* pDecoder, const char* kpH264FileName, cons
|
||||
pDecoder->GetOption (DECODER_OPTION_VCL_NAL, &iFeedbackVclNalInAu);
|
||||
int32_t iFeedbackTidInAu;
|
||||
pDecoder->GetOption (DECODER_OPTION_TEMPORAL_ID, &iFeedbackTidInAu);
|
||||
int32_t iErrorConMethod = ERROR_CON_SLICE_COPY;
|
||||
int32_t iErrorConMethod = (int32_t) ERROR_CON_SLICE_COPY;
|
||||
pDecoder->SetOption (DECODER_OPTION_ERROR_CON_IDC, &iErrorConMethod);
|
||||
//~end for
|
||||
|
||||
@@ -349,9 +349,9 @@ int32_t main (int32_t iArgC, char* pArgV[]) {
|
||||
} else if (strTag[0].compare ("TargetDQID") == 0) {
|
||||
sDecParam.uiTargetDqLayer = (uint8_t)atol (strTag[1].c_str());
|
||||
} else if (strTag[0].compare ("OutColorFormat") == 0) {
|
||||
sDecParam.iOutputColorFormat = atoi (strTag[1].c_str());
|
||||
} else if (strTag[0].compare ("ErrorConcealmentFlag") == 0) {
|
||||
sDecParam.uiEcActiveFlag = (uint8_t)atol (strTag[1].c_str());
|
||||
sDecParam.eOutputColorFormat = (EVideoFormatType) atoi (strTag[1].c_str());
|
||||
} else if (strTag[0].compare ("ErrorConcealmentIdc") == 0) {
|
||||
sDecParam.eEcActiveIdc = (ERROR_CON_IDC)atol (strTag[1].c_str());
|
||||
} else if (strTag[0].compare ("CPULoad") == 0) {
|
||||
sDecParam.uiCpuLoad = (uint32_t)atol (strTag[1].c_str());
|
||||
} else if (strTag[0].compare ("VideoBitstreamType") == 0) {
|
||||
@@ -366,17 +366,17 @@ int32_t main (int32_t iArgC, char* pArgV[]) {
|
||||
} else if (strstr (pArgV[1],
|
||||
".264")) { // no output dump yuv file, just try to render the decoded pictures //confirmed_safe_unsafe_usage
|
||||
strInputFile = pArgV[1];
|
||||
sDecParam.iOutputColorFormat = videoFormatI420;
|
||||
sDecParam.eOutputColorFormat = videoFormatI420;
|
||||
sDecParam.uiTargetDqLayer = (uint8_t) - 1;
|
||||
sDecParam.uiEcActiveFlag = 1;
|
||||
sDecParam.eEcActiveIdc = ERROR_CON_SLICE_COPY;
|
||||
sDecParam.sVideoProperty.eVideoBsType = VIDEO_BITSTREAM_DEFAULT;
|
||||
}
|
||||
} else { //iArgC > 2
|
||||
strInputFile = pArgV[1];
|
||||
strOutputFile = pArgV[2];
|
||||
sDecParam.iOutputColorFormat = videoFormatI420;
|
||||
sDecParam.eOutputColorFormat = videoFormatI420;
|
||||
sDecParam.uiTargetDqLayer = (uint8_t) - 1;
|
||||
sDecParam.uiEcActiveFlag = 1;
|
||||
sDecParam.eEcActiveIdc = ERROR_CON_SLICE_COPY;
|
||||
sDecParam.sVideoProperty.eVideoBsType = VIDEO_BITSTREAM_DEFAULT;
|
||||
if (iArgC > 3) {
|
||||
for (int i = 3; i < iArgC; i++) {
|
||||
|
||||
@@ -6,6 +6,7 @@ H264DEC_CPP_SRCS=\
|
||||
H264DEC_OBJS += $(H264DEC_CPP_SRCS:.cpp=.$(OBJ))
|
||||
|
||||
OBJS += $(H264DEC_OBJS)
|
||||
|
||||
$(H264DEC_SRCDIR)/%.$(OBJ): $(H264DEC_SRCDIR)/%.cpp
|
||||
$(QUIET_CXX)$(CXX) $(CFLAGS) $(CXXFLAGS) $(INCLUDES) $(H264DEC_CFLAGS) $(H264DEC_INCLUDES) -c $(CXX_O) $<
|
||||
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
using namespace WelsSVCEnc;
|
||||
using namespace WelsEnc;
|
||||
|
||||
/*
|
||||
* Layer Context
|
||||
@@ -99,6 +99,7 @@ typedef struct tagFilesSet {
|
||||
string strSeqFile; // for cmd lines
|
||||
string strLayerCfgFile[MAX_DEPENDENCY_LAYER];
|
||||
char sRecFileName[MAX_DEPENDENCY_LAYER][MAX_FNAME_LEN];
|
||||
uint32_t uiFrameToBeCoded;
|
||||
} SFilesSet;
|
||||
|
||||
|
||||
@@ -224,7 +225,7 @@ int ParseConfig (CReadConfig& cRdCfg, SSourcePicture* pSrcPic, SEncParamExt& pSv
|
||||
} else if (strTag[0].compare ("MaxFrameRate") == 0) {
|
||||
pSvcParam.fMaxFrameRate = (float)atof (strTag[1].c_str());
|
||||
} else if (strTag[0].compare ("FramesToBeEncoded") == 0) {
|
||||
pSvcParam.uiFrameToBeCoded = atoi (strTag[1].c_str());
|
||||
sFileSet.uiFrameToBeCoded = atoi (strTag[1].c_str());
|
||||
} else if (strTag[0].compare ("TemporalLayerNum") == 0) {
|
||||
pSvcParam.iTemporalLayerNum = atoi (strTag[1].c_str());
|
||||
} else if (strTag[0].compare ("IntraPeriod") == 0) {
|
||||
@@ -293,6 +294,8 @@ int ParseConfig (CReadConfig& cRdCfg, SSourcePicture* pSrcPic, SEncParamExt& pSv
|
||||
pSvcParam.iLTRRefNum = atoi (strTag[1].c_str());
|
||||
} else if (strTag[0].compare ("LtrMarkPeriod") == 0) {
|
||||
pSvcParam.iLtrMarkPeriod = (uint32_t)atoi (strTag[1].c_str());
|
||||
} else if (strTag[0].compare ("LosslessLink") == 0) {
|
||||
pSvcParam.bIsLosslessLink = atoi (strTag[1].c_str()) ? true : false;
|
||||
} else if (strTag[0].compare ("NumLayers") == 0) {
|
||||
pSvcParam.iSpatialLayerNum = (int8_t)atoi (strTag[1].c_str());
|
||||
if (pSvcParam.iSpatialLayerNum > MAX_DEPENDENCY_LAYER || pSvcParam.iSpatialLayerNum <= 0) {
|
||||
@@ -347,7 +350,7 @@ void PrintHelp() {
|
||||
printf (" -sw the source width\n");
|
||||
printf (" -sh the source height\n");
|
||||
printf (" -frms Number of total frames to be encoded\n");
|
||||
printf (" -gop GOPSize - GOP size (1,2,4,8, default: 1)\n");
|
||||
printf (" -numtl Temporal layer number (default: 1)\n");
|
||||
printf (" -iper Intra period (default: -1) : must be a power of 2 of GOP size (or -1)\n");
|
||||
printf (" -nalsize the Maximum NAL size. which should be larger than the each layer slicesize when slice mode equals to SM_DYN_SLICE\n");
|
||||
printf (" -spsid Enable id adding in SPS/PPS per IDR \n");
|
||||
@@ -381,7 +384,7 @@ void PrintHelp() {
|
||||
|
||||
int ParseCommandLine (int argc, char** argv, SSourcePicture* pSrcPic, SEncParamExt& pSvcParam, SFilesSet& sFileSet) {
|
||||
char* pCommand = NULL;
|
||||
SLayerPEncCtx sLayerCtx[3];
|
||||
SLayerPEncCtx sLayerCtx[MAX_SPATIAL_LAYER_NUM];
|
||||
int n = 0;
|
||||
string str_ ("SlicesAssign");
|
||||
|
||||
@@ -403,7 +406,7 @@ int ParseCommandLine (int argc, char** argv, SSourcePicture* pSrcPic, SEncParamE
|
||||
pSrcPic->iPicHeight = atoi (argv[n++]);
|
||||
|
||||
else if (!strcmp (pCommand, "-frms") && (n < argc))
|
||||
pSvcParam.uiFrameToBeCoded = atoi (argv[n++]);
|
||||
sFileSet.uiFrameToBeCoded = atoi (argv[n++]);
|
||||
|
||||
else if (!strcmp (pCommand, "-numtl") && (n < argc))
|
||||
pSvcParam.iTemporalLayerNum = atoi (argv[n++]);
|
||||
@@ -581,11 +584,10 @@ int FillSpecificParameters (SEncParamExt& sParam) {
|
||||
sParam.bEnableFrameSkip = 1; // frame skipping
|
||||
sParam.bEnableLongTermReference = 0; // long term reference control
|
||||
sParam.iLtrMarkPeriod = 30;
|
||||
sParam.iInputCsp = videoFormatI420; // color space of input sequence
|
||||
sParam.uiIntraPeriod = 320; // period of Intra frame
|
||||
sParam.bEnableSpsPpsIdAddition = 1;
|
||||
sParam.bPrefixNalAddingCtrl = 0;
|
||||
|
||||
sParam.iComplexityMode = MEDIUM_COMPLEXITY;
|
||||
int iIndexLayer = 0;
|
||||
sParam.sSpatialLayers[iIndexLayer].uiProfileIdc = PRO_BASELINE;
|
||||
sParam.sSpatialLayers[iIndexLayer].iVideoWidth = 160;
|
||||
@@ -736,7 +738,7 @@ int ProcessEncoding (ISVCEncoder* pPtrEnc, int argc, char** argv, bool bConfigFi
|
||||
sSvcParam.iPicWidth = (!sSvcParam.iPicWidth) ? iSourceWidth : sSvcParam.iPicWidth;
|
||||
sSvcParam.iPicHeight = (!sSvcParam.iPicHeight) ? iSourceHeight : sSvcParam.iPicHeight;
|
||||
|
||||
iTotalFrameMax = (int32_t)sSvcParam.uiFrameToBeCoded;
|
||||
iTotalFrameMax = (int32_t)fs.uiFrameToBeCoded;
|
||||
|
||||
if (cmResultSuccess != pPtrEnc->InitializeExt (&sSvcParam)) { // SVC encoder initialization
|
||||
fprintf (stderr, "SVC encoder Initialize failed\n");
|
||||
@@ -789,8 +791,8 @@ int ProcessEncoding (ISVCEncoder* pPtrEnc, int argc, char** argv, bool bConfigFi
|
||||
}
|
||||
|
||||
iFrameIdx = 0;
|
||||
while (iFrameIdx < iTotalFrameMax && (((int32_t)sSvcParam.uiFrameToBeCoded <= 0)
|
||||
|| (iFrameIdx < (int32_t)sSvcParam.uiFrameToBeCoded))) {
|
||||
while (iFrameIdx < iTotalFrameMax && (((int32_t)fs.uiFrameToBeCoded <= 0)
|
||||
|| (iFrameIdx < (int32_t)fs.uiFrameToBeCoded))) {
|
||||
|
||||
#ifdef ONLY_ENC_FRAMES_NUM
|
||||
// Only encoded some limited frames here
|
||||
@@ -805,10 +807,10 @@ int ProcessEncoding (ISVCEncoder* pPtrEnc, int argc, char** argv, bool bConfigFi
|
||||
break;
|
||||
// To encoder this frame
|
||||
iStart = WelsTime();
|
||||
pSrcPic->uiTimeStamp = WELS_ROUND (iFrameIdx * (1000 / sSvcParam.fMaxFrameRate));
|
||||
int iEncFrames = pPtrEnc->EncodeFrame (pSrcPic, &sFbi);
|
||||
iTotal += WelsTime() - iStart;
|
||||
|
||||
// fixed issue in case dismatch source picture introduced by frame skipped, 1/12/2010
|
||||
++ iFrameIdx;
|
||||
if (videoFrameTypeSkip == sFbi.eFrameType) {
|
||||
continue;
|
||||
}
|
||||
@@ -859,7 +861,6 @@ int ProcessEncoding (ISVCEncoder* pPtrEnc, int argc, char** argv, bool bConfigFi
|
||||
fprintf (stderr, "EncodeFrame(), ret: %d, frame index: %d.\n", iEncFrames, iFrameIdx);
|
||||
}
|
||||
|
||||
++ iFrameIdx;
|
||||
}
|
||||
|
||||
if (iActualFrameEncodedCount > 0) {
|
||||
@@ -891,7 +892,7 @@ INSIDE_MEM_FREE:
|
||||
pFileYUV = NULL;
|
||||
}
|
||||
if (pYUV) {
|
||||
delete pYUV;
|
||||
delete[] pYUV;
|
||||
pYUV = NULL;
|
||||
}
|
||||
if (pSrcPic) {
|
||||
|
||||
@@ -5,6 +5,7 @@ H264ENC_CPP_SRCS=\
|
||||
H264ENC_OBJS += $(H264ENC_CPP_SRCS:.cpp=.$(OBJ))
|
||||
|
||||
OBJS += $(H264ENC_OBJS)
|
||||
|
||||
$(H264ENC_SRCDIR)/%.$(OBJ): $(H264ENC_SRCDIR)/%.cpp
|
||||
$(QUIET_CXX)$(CXX) $(CFLAGS) $(CXXFLAGS) $(INCLUDES) $(H264ENC_CFLAGS) $(H264ENC_INCLUDES) -c $(CXX_O) $<
|
||||
|
||||
|
||||
161
codec/decoder/core/arm64/block_add_aarch64_neon.S
Normal file
161
codec/decoder/core/arm64/block_add_aarch64_neon.S
Normal file
@@ -0,0 +1,161 @@
|
||||
/*!
|
||||
* \copy
|
||||
* Copyright (c) 2013, Cisco Systems
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifdef HAVE_NEON_AARCH64
|
||||
.text
|
||||
#include "arm_arch64_common_macro.S"
|
||||
#ifdef __APPLE__
|
||||
.macro ROW_TRANSFORM_1_STEP
|
||||
// { // input: src_d[0]~[3], output: e_q[0]~[3]; working: $8 $9
|
||||
|
||||
saddl $4.4s, $0.4h, $2.4h //int32 e[i][0] = src[0] + src[2];
|
||||
ssubl $5.4s, $0.4h, $2.4h //int32 e[i][1] = src[0] - src[2];
|
||||
sshr $8.4h, $1.4h, #1
|
||||
sshr $9.4h, $3.4h, #1
|
||||
ssubl $6.4s, $8.4h, $3.4h //int32 e[i][2] = (src[1]>>1)-src[3];
|
||||
saddl $7.4s, $1.4h, $9.4h //int32 e[i][3] = src[1] + (src[3]>>1);
|
||||
// }
|
||||
.endm
|
||||
|
||||
.macro TRANSFORM_4BYTES // both row & col transform used
|
||||
// { // output: f_q[0]~[3], input: e_q[0]~[3];
|
||||
add $0.4s, $4.4s, $7.4s //int16 f[i][0] = e[i][0] + e[i][3];
|
||||
add $1.4s, $5.4s, $6.4s //int16 f[i][1] = e[i][1] + e[i][2];
|
||||
sub $2.4s, $5.4s, $6.4s //int16 f[i][2] = e[i][1] - e[i][2];
|
||||
sub $3.4s, $4.4s, $7.4s //int16 f[i][3] = e[i][0] - e[i][3];
|
||||
// }
|
||||
.endm
|
||||
|
||||
.macro COL_TRANSFORM_1_STEP
|
||||
// { // input: src_q[0]~[3], output: e_q[0]~[3];
|
||||
add $4.4s, $0.4s, $2.4s //int32 e[0][j] = f[0][j] + f[2][j];
|
||||
sub $5.4s, $0.4s, $2.4s //int32 e[1][j] = f[0][j] - f[2][j];
|
||||
sshr $6.4s, $1.4s, #1
|
||||
sshr $7.4s, $3.4s, #1
|
||||
sub $6.4s, $6.4s, $3.4s //int32 e[2][j] = (f[1][j]>>1) - f[3][j];
|
||||
add $7.4s, $1.4s, $7.4s //int32 e[3][j] = f[1][j] + (f[3][j]>>1);
|
||||
// }
|
||||
.endm
|
||||
|
||||
#else
|
||||
.macro ROW_TRANSFORM_1_STEP arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9
|
||||
// { // input: src_d[0]~[3], output: e_q[0]~[3]; working: \arg8\() \arg9\()
|
||||
|
||||
saddl \arg4\().4s, \arg0\().4h, \arg2\().4h //int32 e[i][0] = src[0] + src[2];
|
||||
ssubl \arg5\().4s, \arg0\().4h, \arg2\().4h //int32 e[i][1] = src[0] - src[2];
|
||||
sshr \arg8\().4h, \arg1\().4h, #1
|
||||
sshr \arg9\().4h, \arg3\().4h, #1
|
||||
ssubl \arg6\().4s, \arg8\().4h, \arg3\().4h //int32 e[i][2] = (src[1]>>1)-src[3];
|
||||
saddl \arg7\().4s, \arg1\().4h, \arg9\().4h //int32 e[i][3] = src[1] + (src[3]>>1);
|
||||
// }
|
||||
.endm
|
||||
|
||||
.macro TRANSFORM_4BYTES arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7
|
||||
// both row & col transform used
|
||||
// { // output: f_q[0]~[3], input: e_q[0]~[3];
|
||||
add \arg0\().4s, \arg4\().4s, \arg7\().4s //int16 f[i][0] = e[i][0] + e[i][3];
|
||||
add \arg1\().4s, \arg5\().4s, \arg6\().4s //int16 f[i][1] = e[i][1] + e[i][2];
|
||||
sub \arg2\().4s, \arg5\().4s, \arg6\().4s //int16 f[i][2] = e[i][1] - e[i][2];
|
||||
sub \arg3\().4s, \arg4\().4s, \arg7\().4s //int16 f[i][3] = e[i][0] - e[i][3];
|
||||
// }
|
||||
.endm
|
||||
|
||||
.macro COL_TRANSFORM_1_STEP arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7
|
||||
// { // input: src_q[0]~[3], output: e_q[0]~[3];
|
||||
add \arg4\().4s, \arg0\().4s, \arg2\().4s //int32 e[0][j] = f[0][j] + f[2][j];
|
||||
sub \arg5\().4s, \arg0\().4s, \arg2\().4s //int32 e[1][j] = f[0][j] - f[2][j];
|
||||
sshr \arg6\().4s, \arg1\().4s, #1
|
||||
sshr \arg7\().4s, \arg3\().4s, #1
|
||||
sub \arg6\().4s, \arg6\().4s, \arg3\().4s //int32 e[2][j] = (f[1][j]>>1) - f[3][j];
|
||||
add \arg7\().4s, \arg1\().4s, \arg7\().4s //int32 e[3][j] = f[1][j] + (f[3][j]>>1);
|
||||
// }
|
||||
.endm
|
||||
#endif
|
||||
// x0 int8_t* non_zero_count,
|
||||
WELS_ASM_AARCH64_FUNC_BEGIN SetNonZeroCount_AArch64_neon
|
||||
mov x1, x0
|
||||
ld1 {v0.16b}, [x1], #16
|
||||
ld1 {v1.8b}, [x1]
|
||||
cmeq v0.16b, v0.16b, #0
|
||||
cmeq v1.8b, v1.8b, #0
|
||||
mvn v0.16b, v0.16b
|
||||
mvn v1.8b, v1.8b
|
||||
abs v0.16b, v0.16b
|
||||
abs v1.8b, v1.8b
|
||||
st1 {v0.16b}, [x0], #16
|
||||
st1 {v1.8b}, [x0]
|
||||
WELS_ASM_AARCH64_FUNC_END
|
||||
|
||||
// uint8_t *pred, const int32_t stride, int16_t *rs
|
||||
WELS_ASM_AARCH64_FUNC_BEGIN IdctResAddPred_AArch64_neon
|
||||
|
||||
ld4 {v0.4h, v1.4h, v2.4h, v3.4h}, [x2] // cost 3 cycles!
|
||||
ROW_TRANSFORM_1_STEP v0, v1, v2, v3, v16, v17, v18, v19, v4, v5
|
||||
TRANSFORM_4BYTES v0, v1, v2, v3, v16, v17, v18, v19
|
||||
// transform element 32bits
|
||||
trn1 v16.4s, v0.4s, v1.4s //[0 1 2 3]+[4 5 6 7]-->[0 4 2 6]
|
||||
trn2 v17.4s, v0.4s, v1.4s //[0 1 2 3]+[4 5 6 7]-->[1 5 3 7]
|
||||
trn1 v18.4s, v2.4s, v3.4s //[8 9 10 11]+[12 13 14 15]-->[8 12 10 14]
|
||||
trn2 v19.4s, v2.4s, v3.4s //[8 9 10 11]+[12 13 14 15]-->[9 13 11 15]
|
||||
trn1 v0.2d, v16.2d, v18.2d //[0 4 2 6]+[8 12 10 14]-->[0 4 8 12]
|
||||
trn2 v2.2d, v16.2d, v18.2d //[0 4 2 6]+[8 12 10 14]-->[2 6 10 14]
|
||||
trn1 v1.2d, v17.2d, v19.2d //[1 5 3 7]+[9 13 11 15]-->[1 5 9 13]
|
||||
trn2 v3.2d, v17.2d, v19.2d //[1 5 3 7]+[9 13 11 15]-->[3 7 11 15]
|
||||
COL_TRANSFORM_1_STEP v0, v1, v2, v3, v16, v17, v18, v19
|
||||
|
||||
TRANSFORM_4BYTES v0, v1, v2, v3, v16, v17, v18, v19
|
||||
//after clip_table[MAX_NEG_CROP] into [0, 255]
|
||||
mov x2, x0
|
||||
ld1 {v16.s}[0],[x0],x1
|
||||
ld1 {v16.s}[1],[x0],x1
|
||||
ld1 {v17.s}[0],[x0],x1
|
||||
ld1 {v17.s}[1],[x0]
|
||||
|
||||
rshrn v0.4h, v0.4s, #6
|
||||
rshrn2 v0.8h, v1.4s, #6
|
||||
rshrn v1.4h, v2.4s, #6
|
||||
rshrn2 v1.8h, v3.4s, #6
|
||||
|
||||
uxtl v2.8h,v16.8b
|
||||
uxtl v3.8h,v17.8b
|
||||
add v2.8h, v2.8h, v0.8h
|
||||
add v3.8h, v3.8h, v1.8h
|
||||
|
||||
sqxtun v0.8b,v2.8h
|
||||
sqxtun v1.8b,v3.8h
|
||||
|
||||
st1 {v0.s}[0],[x2],x1
|
||||
st1 {v0.s}[1],[x2],x1
|
||||
st1 {v1.s}[0],[x2],x1
|
||||
st1 {v1.s}[1],[x2]
|
||||
WELS_ASM_AARCH64_FUNC_END
|
||||
#endif
|
||||
@@ -308,7 +308,7 @@ WELS_ASM_AARCH64_FUNC_BEGIN WelsDecoderIChromaPredDcTop_AArch64_neon
|
||||
.endr
|
||||
WELS_ASM_AARCH64_FUNC_END
|
||||
|
||||
.align 16
|
||||
.align 4
|
||||
intra_1_to_4: .short 17*1, 17*2, 17*3, 17*4, 17*1, 17*2, 17*3, 17*4
|
||||
intra_m3_to_p4: .short -3, -2, -1, 0, 1, 2, 3, 4
|
||||
|
||||
@@ -457,7 +457,7 @@ WELS_ASM_AARCH64_FUNC_BEGIN WelsDecoderI16x16LumaPredDcLeft_AArch64_neon
|
||||
WELS_ASM_AARCH64_FUNC_END
|
||||
|
||||
|
||||
.align 16
|
||||
.align 4
|
||||
intra_1_to_8: .short 5, 10, 15, 20, 25, 30, 35, 40
|
||||
intra_m7_to_p8: .short -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8
|
||||
|
||||
|
||||
@@ -233,21 +233,21 @@ static inline int32_t BsGetTrailingBits (uint8_t* pBuf) {
|
||||
//define macros to check syntax elements
|
||||
#define WELS_CHECK_SE_BOTH_ERROR(val, lower_bound, upper_bound, syntax_name, ret_code) do {\
|
||||
if ((val < lower_bound) || (val > upper_bound)) {\
|
||||
WelsLog(&(pCtx->sLogCtx), WELS_LOG_ERROR, "invalid syntax " syntax_name " %d\n", val);\
|
||||
WelsLog(&(pCtx->sLogCtx), WELS_LOG_ERROR, "invalid syntax " syntax_name " %d", val);\
|
||||
return ret_code;\
|
||||
}\
|
||||
}while(0)
|
||||
|
||||
#define WELS_CHECK_SE_LOWER_ERROR(val, lower_bound, syntax_name, ret_code) do {\
|
||||
if (val < lower_bound) {\
|
||||
WelsLog(&(pCtx->sLogCtx), WELS_LOG_ERROR, "invalid syntax " syntax_name " %d\n", val);\
|
||||
WelsLog(&(pCtx->sLogCtx), WELS_LOG_ERROR, "invalid syntax " syntax_name " %d", val);\
|
||||
return ret_code;\
|
||||
}\
|
||||
}while(0)
|
||||
|
||||
#define WELS_CHECK_SE_UPPER_ERROR(val, upper_bound, syntax_name, ret_code) do {\
|
||||
if (val > upper_bound) {\
|
||||
WelsLog(&(pCtx->sLogCtx), WELS_LOG_ERROR, "invalid syntax " syntax_name " %d\n", val);\
|
||||
WelsLog(&(pCtx->sLogCtx), WELS_LOG_ERROR, "invalid syntax " syntax_name " %d", val);\
|
||||
return ret_code;\
|
||||
}\
|
||||
}while(0)
|
||||
@@ -273,19 +273,19 @@ if (val > upper_bound) {\
|
||||
|
||||
#define WELS_CHECK_SE_BOTH_WARNING(val, lower_bound, upper_bound, syntax_name) do {\
|
||||
if ((val < lower_bound) || (val > upper_bound)) {\
|
||||
WelsLog(&(pCtx->sLogCtx), WELS_LOG_WARNING, "invalid syntax " syntax_name " %d\n", val);\
|
||||
WelsLog(&(pCtx->sLogCtx), WELS_LOG_WARNING, "invalid syntax " syntax_name " %d", val);\
|
||||
}\
|
||||
}while(0)
|
||||
|
||||
#define WELS_CHECK_SE_LOWER_WARNING(val, lower_bound, syntax_name) do {\
|
||||
if (val < lower_bound) {\
|
||||
WelsLog(&(pCtx->sLogCtx), WELS_LOG_WARNING, "invalid syntax " syntax_name " %d\n", val);\
|
||||
WelsLog(&(pCtx->sLogCtx), WELS_LOG_WARNING, "invalid syntax " syntax_name " %d", val);\
|
||||
}\
|
||||
}while(0)
|
||||
|
||||
#define WELS_CHECK_SE_UPPER_WARNING(val, upper_bound, syntax_name) do {\
|
||||
if (val > upper_bound) {\
|
||||
WelsLog(&(pCtx->sLogCtx), WELS_LOG_WARNING, "invalid syntax " syntax_name " %d\n", val);\
|
||||
WelsLog(&(pCtx->sLogCtx), WELS_LOG_WARNING, "invalid syntax " syntax_name " %d", val);\
|
||||
}\
|
||||
}while(0)
|
||||
// below define syntax element offset
|
||||
|
||||
@@ -52,6 +52,11 @@ void IdctResAddPred_mmx (uint8_t* pPred, const int32_t kiStride, int16_t* pRs);
|
||||
void IdctResAddPred_neon (uint8_t* pred, const int32_t stride, int16_t* rs);
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_NEON_AARCH64)
|
||||
void IdctResAddPred_AArch64_neon (uint8_t* pred, const int32_t stride, int16_t* rs);
|
||||
#endif
|
||||
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif//__cplusplus
|
||||
|
||||
@@ -67,6 +67,9 @@ extern "C" {
|
||||
void SetNonZeroCount_neon (int8_t* pNonZeroCount);
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_NEON_AARCH64)
|
||||
void SetNonZeroCount_AArch64_neon (int8_t* pNonZeroCount);
|
||||
#endif
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif//__cplusplus
|
||||
|
||||
@@ -168,15 +168,14 @@ SLogContext sLogCtx;
|
||||
// Input
|
||||
void* pArgDec; // structured arguments for decoder, reserved here for extension in the future
|
||||
|
||||
SDataBuffer sRawData;
|
||||
SDataBuffer sRawData;
|
||||
|
||||
// Configuration
|
||||
SDecodingParam* pParam;
|
||||
SDecodingParam* pParam;
|
||||
uint32_t uiCpuFlag; // CPU compatibility detected
|
||||
|
||||
int32_t iOutputColorFormat; // color space format to be outputed
|
||||
EVideoFormatType eOutputColorFormat; // color space format to be outputed
|
||||
VIDEO_BITSTREAM_TYPE eVideoType; //indicate the type of video to decide whether or not to do qp_delta error detection.
|
||||
bool bErrorResilienceFlag; // error resilience flag
|
||||
bool bHaveGotMemory; // global memory for decoder context related ever requested?
|
||||
|
||||
int32_t iImgWidthInPixel; // width of image in pixel reconstruction picture to be output
|
||||
@@ -287,7 +286,7 @@ uint16_t uiCurIdrPicId;
|
||||
bool bNewSeqBegin;
|
||||
bool bNextNewSeqBegin;
|
||||
int iOverwriteFlags;
|
||||
int32_t iErrorConMethod; //
|
||||
ERROR_CON_IDC eErrorConMethod; //
|
||||
PPicture pPreviousDecodedPictureInDpb; //pointer to previously decoded picture in DPB for error concealment
|
||||
PGetIntraPredFunc pGetI16x16LumaPredFunc[7]; //h264_predict_copy_16x16;
|
||||
PGetIntraPredFunc pGetI4x4LumaPredFunc[14]; // h264_predict_4x4_t
|
||||
@@ -317,7 +316,6 @@ int32_t iFeedbackVclNalInAu;
|
||||
int32_t iFeedbackTidInAu;
|
||||
|
||||
bool bAuReadyFlag; // true: one au is ready for decoding; false: default value
|
||||
bool bDecErrorConedFlag; //true: current decoder is error coned
|
||||
|
||||
bool bPrintFrameErrorTraceFlag; //true: can print info for upper layer
|
||||
int32_t iIgnoredErrorInfoPacketCount; //store the packet number with error decoding info
|
||||
|
||||
@@ -144,8 +144,7 @@ int32_t DecodeCurrentAccessUnit (PWelsDecoderContext pCtx, uint8_t** ppDst, SBuf
|
||||
/*
|
||||
* Check if frame is completed and EC is required
|
||||
*/
|
||||
bool CheckAndDoEC (PWelsDecoderContext pCtx, uint8_t** pDst, SBufferInfo* pDstInfo);
|
||||
|
||||
bool CheckAndFinishLastPic (PWelsDecoderContext pCtx, uint8_t** pDst, SBufferInfo* pDstInfo);
|
||||
/*
|
||||
* Prepare current dq layer context initialization.
|
||||
*/
|
||||
@@ -158,6 +157,7 @@ void WelsDecodeAccessUnitEnd (PWelsDecoderContext pCtx);
|
||||
void ForceResetCurrentAccessUnit (PAccessUnit pAu);
|
||||
void ForceClearCurrentNal (PAccessUnit pAu);
|
||||
|
||||
bool bCheckRefPicturesComplete (PWelsDecoderContext pCtx); // Check whether all ref pictures are complete
|
||||
} // namespace WelsDec
|
||||
|
||||
#endif//WELS_DECODER_CORE_H__
|
||||
|
||||
@@ -48,7 +48,7 @@ ERR_INVALID_PARAMETERS = 1,
|
||||
ERR_MALLOC_FAILED = 2,
|
||||
ERR_API_FAILED = 3,
|
||||
|
||||
ERR_BOUND = 31,
|
||||
ERR_BOUND = 31
|
||||
} EWelsErr;
|
||||
|
||||
/*
|
||||
@@ -68,7 +68,7 @@ ERR_LEVEL_PREFIX_NAL,
|
||||
ERR_LEVEL_PARAM_SETS,
|
||||
ERR_LEVEL_SLICE_HEADER,
|
||||
ERR_LEVEL_SLICE_DATA,
|
||||
ERR_LEVEL_MB_DATA,
|
||||
ERR_LEVEL_MB_DATA
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------------------------------------
|
||||
@@ -180,7 +180,7 @@ EER_INFO_INVALID_MMCO_LONG2UNUSED,
|
||||
ERR_INFO_INVALID_MMCO_SHOART2LONG,
|
||||
ERR_INFO_INVALID_MMCO_REF_NUM_OVERFLOW,
|
||||
ERR_INFO_INVALID_MMCO_REF_NUM_NOT_ENOUGH,
|
||||
ERR_INFO_INVALID_MMCO_LONG_TERM_IDX_EXCEED_MAX,
|
||||
ERR_INFO_INVALID_MMCO_LONG_TERM_IDX_EXCEED_MAX
|
||||
};
|
||||
//-----------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -39,67 +39,56 @@
|
||||
|
||||
namespace WelsDec {
|
||||
|
||||
typedef struct TagLevelLimits {
|
||||
int32_t iMaxMBPS; // Max macroblock processing rate(MB/s)
|
||||
int32_t iMaxFS; // Max frame sizea(MBs)
|
||||
int32_t iMaxDPBMbs;// Max decoded picture buffer size(MBs)
|
||||
int32_t iMaxBR; // Max video bit rate
|
||||
int32_t iMaxCPB; // Max CPB size
|
||||
int16_t iMinVmv; // Vertical MV component range upper bound
|
||||
int16_t iMaxVmv; // Vertical MV component range lower bound
|
||||
int16_t iMinCR; // Min compression ration
|
||||
int16_t iMaxMvsPer2Mb; // Max number of motion vectors per two consecutive MBs
|
||||
} SLevelLimits;
|
||||
|
||||
/* Sequence Parameter Set, refer to Page 57 in JVT X201wcm */
|
||||
typedef struct TagSps {
|
||||
int32_t iSpsId;
|
||||
uint32_t iMbWidth;
|
||||
uint32_t iMbHeight;
|
||||
uint32_t uiTotalMbCount; //used in decode_slice_data()
|
||||
int32_t iSpsId;
|
||||
uint32_t iMbWidth;
|
||||
uint32_t iMbHeight;
|
||||
uint32_t uiTotalMbCount; //used in decode_slice_data()
|
||||
|
||||
uint32_t uiLog2MaxFrameNum;
|
||||
uint32_t uiPocType;
|
||||
/* POC type 0 */
|
||||
int32_t iLog2MaxPocLsb;
|
||||
/* POC type 1 */
|
||||
int32_t iOffsetForNonRefPic;
|
||||
uint32_t uiLog2MaxFrameNum;
|
||||
uint32_t uiPocType;
|
||||
/* POC type 0 */
|
||||
int32_t iLog2MaxPocLsb;
|
||||
/* POC type 1 */
|
||||
int32_t iOffsetForNonRefPic;
|
||||
|
||||
int32_t iOffsetForTopToBottomField;
|
||||
int32_t iNumRefFramesInPocCycle;
|
||||
int8_t iOffsetForRefFrame[256];
|
||||
int32_t iNumRefFrames;
|
||||
int32_t iOffsetForTopToBottomField;
|
||||
int32_t iNumRefFramesInPocCycle;
|
||||
int8_t iOffsetForRefFrame[256];
|
||||
int32_t iNumRefFrames;
|
||||
|
||||
SPosOffset sFrameCrop;
|
||||
SPosOffset sFrameCrop;
|
||||
|
||||
ProfileIdc uiProfileIdc;
|
||||
uint8_t uiLevelIdc;
|
||||
uint8_t uiChromaFormatIdc;
|
||||
uint8_t uiChromaArrayType;
|
||||
ProfileIdc uiProfileIdc;
|
||||
uint8_t uiLevelIdc;
|
||||
uint8_t uiChromaFormatIdc;
|
||||
uint8_t uiChromaArrayType;
|
||||
|
||||
uint8_t uiBitDepthLuma;
|
||||
uint8_t uiBitDepthChroma;
|
||||
/* TO BE CONTINUE: POC type 1 */
|
||||
bool bDeltaPicOrderAlwaysZeroFlag;
|
||||
bool bGapsInFrameNumValueAllowedFlag;
|
||||
uint8_t uiBitDepthLuma;
|
||||
uint8_t uiBitDepthChroma;
|
||||
/* TO BE CONTINUE: POC type 1 */
|
||||
bool bDeltaPicOrderAlwaysZeroFlag;
|
||||
bool bGapsInFrameNumValueAllowedFlag;
|
||||
|
||||
bool bFrameMbsOnlyFlag;
|
||||
bool bMbaffFlag; // MB Adapative Frame Field
|
||||
bool bDirect8x8InferenceFlag;
|
||||
bool bFrameCroppingFlag;
|
||||
bool bFrameMbsOnlyFlag;
|
||||
bool bMbaffFlag; // MB Adapative Frame Field
|
||||
bool bDirect8x8InferenceFlag;
|
||||
bool bFrameCroppingFlag;
|
||||
|
||||
bool bVuiParamPresentFlag;
|
||||
bool bVuiParamPresentFlag;
|
||||
// bool bTimingInfoPresentFlag;
|
||||
// bool bFixedFrameRateFlag;
|
||||
bool bConstraintSet0Flag;
|
||||
bool bConstraintSet1Flag;
|
||||
bool bConstraintSet2Flag;
|
||||
bool bConstraintSet3Flag;
|
||||
bool bSeparateColorPlaneFlag;
|
||||
bool bQpPrimeYZeroTransfBypassFlag;
|
||||
bool bSeqScalingMatrixPresentFlag;
|
||||
bool bSeqScalingListPresentFlag[12];
|
||||
const SLevelLimits* pSLevelLimits;
|
||||
bool bConstraintSet0Flag;
|
||||
bool bConstraintSet1Flag;
|
||||
bool bConstraintSet2Flag;
|
||||
bool bConstraintSet3Flag;
|
||||
bool bSeparateColorPlaneFlag;
|
||||
bool bQpPrimeYZeroTransfBypassFlag;
|
||||
bool bSeqScalingMatrixPresentFlag;
|
||||
bool bSeqScalingListPresentFlag[12];
|
||||
const SLevelLimits* pSLevelLimits;
|
||||
} SSps, *PSps;
|
||||
|
||||
|
||||
@@ -117,63 +106,63 @@ const SLevelLimits* pSLevelLimits;
|
||||
|
||||
/* Sequence Parameter Set extension syntax, refer to Page 391 in JVT X201wcm */
|
||||
typedef struct TagSpsSvcExt {
|
||||
SPosOffset sSeqScaledRefLayer;
|
||||
SPosOffset sSeqScaledRefLayer;
|
||||
|
||||
uint8_t uiExtendedSpatialScalability; // ESS
|
||||
uint8_t uiChromaPhaseXPlus1Flag;
|
||||
uint8_t uiChromaPhaseYPlus1;
|
||||
uint8_t uiSeqRefLayerChromaPhaseXPlus1Flag;
|
||||
uint8_t uiSeqRefLayerChromaPhaseYPlus1;
|
||||
bool bInterLayerDeblockingFilterCtrlPresentFlag;
|
||||
bool bSeqTCoeffLevelPredFlag;
|
||||
bool bAdaptiveTCoeffLevelPredFlag;
|
||||
bool bSliceHeaderRestrictionFlag;
|
||||
uint8_t uiExtendedSpatialScalability; // ESS
|
||||
uint8_t uiChromaPhaseXPlus1Flag;
|
||||
uint8_t uiChromaPhaseYPlus1;
|
||||
uint8_t uiSeqRefLayerChromaPhaseXPlus1Flag;
|
||||
uint8_t uiSeqRefLayerChromaPhaseYPlus1;
|
||||
bool bInterLayerDeblockingFilterCtrlPresentFlag;
|
||||
bool bSeqTCoeffLevelPredFlag;
|
||||
bool bAdaptiveTCoeffLevelPredFlag;
|
||||
bool bSliceHeaderRestrictionFlag;
|
||||
} SSpsSvcExt, *PSpsSvcExt;
|
||||
|
||||
/* Subset sequence parameter set syntax, refer to Page 391 in JVT X201wcm */
|
||||
typedef struct TagSubsetSps {
|
||||
SSps sSps;
|
||||
SSpsSvcExt sSpsSvcExt;
|
||||
bool bSvcVuiParamPresentFlag;
|
||||
bool bAdditionalExtension2Flag;
|
||||
bool bAdditionalExtension2DataFlag;
|
||||
SSps sSps;
|
||||
SSpsSvcExt sSpsSvcExt;
|
||||
bool bSvcVuiParamPresentFlag;
|
||||
bool bAdditionalExtension2Flag;
|
||||
bool bAdditionalExtension2DataFlag;
|
||||
} SSubsetSps, *PSubsetSps;
|
||||
|
||||
/* Picture parameter set syntax, refer to Page 59 in JVT X201wcm */
|
||||
typedef struct TagPps {
|
||||
int32_t iSpsId;
|
||||
int32_t iPpsId;
|
||||
int32_t iSpsId;
|
||||
int32_t iPpsId;
|
||||
|
||||
uint32_t uiNumSliceGroups;
|
||||
uint32_t uiSliceGroupMapType;
|
||||
/* slice_group_map_type = 0 */
|
||||
uint32_t uiRunLength[MAX_SLICEGROUP_IDS];
|
||||
/* slice_group_map_type = 2 */
|
||||
uint32_t uiTopLeft[MAX_SLICEGROUP_IDS];
|
||||
uint32_t uiBottomRight[MAX_SLICEGROUP_IDS];
|
||||
/* slice_group_map_type = 3, 4 or 5 */
|
||||
uint32_t uiSliceGroupChangeRate;
|
||||
/* slice_group_map_type = 6 */
|
||||
uint32_t uiPicSizeInMapUnits;
|
||||
uint32_t uiSliceGroupId[MAX_SLICEGROUP_IDS];
|
||||
uint32_t uiNumSliceGroups;
|
||||
uint32_t uiSliceGroupMapType;
|
||||
/* slice_group_map_type = 0 */
|
||||
uint32_t uiRunLength[MAX_SLICEGROUP_IDS];
|
||||
/* slice_group_map_type = 2 */
|
||||
uint32_t uiTopLeft[MAX_SLICEGROUP_IDS];
|
||||
uint32_t uiBottomRight[MAX_SLICEGROUP_IDS];
|
||||
/* slice_group_map_type = 3, 4 or 5 */
|
||||
uint32_t uiSliceGroupChangeRate;
|
||||
/* slice_group_map_type = 6 */
|
||||
uint32_t uiPicSizeInMapUnits;
|
||||
uint32_t uiSliceGroupId[MAX_SLICEGROUP_IDS];
|
||||
|
||||
uint32_t uiNumRefIdxL0Active;
|
||||
uint32_t uiNumRefIdxL1Active;
|
||||
uint32_t uiNumRefIdxL0Active;
|
||||
uint32_t uiNumRefIdxL1Active;
|
||||
|
||||
int32_t iPicInitQp;
|
||||
int32_t iPicInitQs;
|
||||
int32_t iChromaQpIndexOffset;
|
||||
int32_t iPicInitQp;
|
||||
int32_t iPicInitQs;
|
||||
int32_t iChromaQpIndexOffset;
|
||||
|
||||
bool bEntropyCodingModeFlag;
|
||||
bool bPicOrderPresentFlag;
|
||||
/* slice_group_map_type = 3, 4 or 5 */
|
||||
bool bSliceGroupChangeDirectionFlag;
|
||||
bool bDeblockingFilterControlPresentFlag;
|
||||
bool bEntropyCodingModeFlag;
|
||||
bool bPicOrderPresentFlag;
|
||||
/* slice_group_map_type = 3, 4 or 5 */
|
||||
bool bSliceGroupChangeDirectionFlag;
|
||||
bool bDeblockingFilterControlPresentFlag;
|
||||
|
||||
bool bConstainedIntraPredFlag;
|
||||
bool bRedundantPicCntPresentFlag;
|
||||
bool bWeightedPredFlag;
|
||||
uint8_t uiWeightedBipredIdc;
|
||||
bool bConstainedIntraPredFlag;
|
||||
bool bRedundantPicCntPresentFlag;
|
||||
bool bWeightedPredFlag;
|
||||
uint8_t uiWeightedBipredIdc;
|
||||
|
||||
} SPps, *PPps;
|
||||
|
||||
|
||||
@@ -63,6 +63,7 @@ bool bIsLongRef; // long term reference frame flag //for ref pic management
|
||||
uint8_t uiRefCount;
|
||||
bool bAvailableFlag; // indicate whether it is available in this picture memory block.
|
||||
|
||||
bool bIsComplete; // indicate whether current picture is complete, not from EC
|
||||
/*******************************for future use****************************/
|
||||
uint8_t uiTemporalId;
|
||||
uint8_t uiSpatialId;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user