Commit Graph

553 Commits

Author SHA1 Message Date
sijchen
4bd6a3a6e8 [Encoder MD] Add Inter Psub16 MD for screen content coding 2014-05-12 14:21:40 +08:00
ruil2
eb357b51f2 fix bitrate setting and add bitrate validation 2014-05-12 13:09:01 +08:00
unknown
4dc0f07828 fix input source width and height setting issue 2014-05-12 11:55:05 +08:00
sijchen
8d23201a05 Merge pull request #808 from mstorsjo/use-correct-param-types
Use the actual parameter types in PSearchMethodFunc instead of void pointers
2014-05-09 17:22:05 +08:00
sijchen
5de9f41f5a Fix the improper slice mmco setting 2014-05-09 10:48:09 +08:00
Martin Storsjö
b5cc7c2fe1 Remove a completely unused header 2014-05-08 09:59:58 +03:00
Martin Storsjö
f954763635 Use the actual parameter types in PSearchMethodFunc instead of void pointers 2014-05-07 09:26:31 +03:00
huili2
5ed24f216b astyle all files 2014-05-05 19:30:21 -07:00
sijchen
44640712f6 Add FME unit test 2014-05-05 15:41:15 +08:00
Martin Storsjö
26624bbfdb Use the proper type in function parameters instead of void pointers 2014-05-04 18:00:36 +03:00
volvet
e4a9c7f8e4 Merge pull request #779 from zhilwang/intraSad
Add IntraSad asm code.
2014-05-04 16:29:59 +08:00
sijchen
938019748d add scrolling skip function pointers in MD 2014-05-04 15:03:23 +08:00
ruil2
30687f4647 Merge pull request #761 from sijchen/md_merge31
[Encoder MD] Adjust MD under Screen Content route
2014-05-04 14:25:10 +08:00
Licai Guo
485b2b5b43 Add IntraSad asm code.
Enable intraSad ASM code

Refine format

Add X86_ASM pretect for intraSad ASM code UT

remove duplicated code.
2014-05-04 12:12:38 +08:00
ruil2
2508cf925f fix the issue that long term reference frame is disable for screen 2014-04-29 17:24:22 +08:00
huili2
2006efc1e0 Merge pull request #768 from ruil2/enc_param
use the parameters set by app instead of the default values
2014-04-29 17:19:55 +08:00
dongzhang
793c80df8b Remove useless code 2014-04-29 14:14:47 +08:00
unknown
40ce2396f8 use the parameters set by app instead of the default values 2014-04-29 13:15:28 +08:00
sijchen
2ad7bb9233 adjust the intra md under scc 2014-04-29 11:10:15 +08:00
Martin Storsjö
00a724076b Check for WELS_CPU_NEON before calling DeblockingBSCalcEnc_neon
Checking HAVE_NEON is not enough; e.g. android devices with
armeabi-v7a are not required to have NEON, so every use of such
functions should be check WELS_CPU_NEON in the cpu features
as well.
2014-04-25 13:02:22 +03:00
Martin Storsjö
a842f14a3c Remove .orig files left over from running astyle 2014-04-23 09:24:23 +03:00
dongzhang
ad9e2dab4f Add Motion Compehension ARM64 Neon Code 2014-04-23 13:26:28 +08:00
Licai Guo
b47606a4ff Merge pull request #733 from dongzha/ExpandPic_ARM64
Add expand picture support for ARM64 NEON
2014-04-23 09:57:39 +08:00
dongzhang
2444327a6c Add expand picture support for ARM64 NEON
Remove duplicate MACROS
2014-04-23 09:14:32 +08:00
Licai Guo
75c941a836 Merge pull request #724 from mstorsjo/string-cleanup
Unify return values from Wels*Snprintf and simplify calling code
2014-04-22 16:41:44 +08:00
ruil2
2eff808db7 add decide frame type for screen content 2014-04-22 09:59:38 +08:00
Martin Storsjö
c4e1d2bbb8 Simplify the use of return values from Wels*Snprintf
Also similarly simplify the use of the return value from
WelsStrftime and GetCodeName/GetLibName/GetVerNum.
2014-04-21 22:03:47 +03:00
sijchen
e5001c87ca add FME switch logic 2014-04-21 16:36:59 +08:00
Licai Guo
3f2ea77908 Merge pull request #719 from dongzha/MC
Modify ARM32 Neon code for Expand Chroma Picture, when UVWidth%16==8.
2014-04-21 14:38:51 +08:00
huili2
427da1c990 Merge pull request #714 from ruil2/enc_setting
add usagetype parameter in encoder unit test to test screen content
2014-04-18 17:33:58 +08:00
ruil2
a15e640137 add usagetype parameter in encoder unit test to test screen content 2014-04-18 11:17:25 +08:00
ruil2
0520ace351 rename some varialbes 2014-04-18 11:07:38 +08:00
ruil2
6b707ffb14 add complexity calculation in workflow 2014-04-17 17:33:44 +08:00
dongzhang
a4f59bc0d7 Modify ARM32 Neon code for Expand Chroma Picture, when UVWidth%16==8. 2014-04-17 15:58:30 +08:00
ruil2
4ea8af515b update level_idc setting 2014-04-17 14:29:41 +08:00
Licai Guo
4062fa9d34 Merge pull request #703 from zhilwang/pf-test
Move copy_mb neon code to common folder
2014-04-17 11:08:56 +08:00
Licai Guo
c8e1a41c29 Move copy_mb neon code to common folder 2014-04-17 10:06:48 +08:00
ruil2
b553468ad3 keep the declaration and definition in the same namespace 2014-04-17 09:45:26 +08:00
volvet
6cb48fc547 Merge pull request #690 from sijchen/fme_merge65
[Encoder ME] Add calling of FME preprocess calculation

Approved by Xiaolin.
2014-04-16 17:41:17 +08:00
Licai Guo
e8d8bdc48e Merge pull request #689 from huili2/add_file_CopyMB_EC
divide copy_mb functions into new file for decoder use from encoder and ...
2014-04-15 16:20:08 +08:00
sijchen
f414241834 reformat 2014-04-15 15:54:51 +08:00
sijchen
1140050da6 Add calling of FME preprocess calculation 2014-04-15 15:38:27 +08:00
huili2
4ab8c88e98 divide copy_mb functions into new file for decoder use from encoder and add files for EC in decoder only. 2014-04-14 20:17:41 -07:00
ruil2
1e3053208d update the default value for bPrefixNalAddingCtrl and iLoopFilterDisableIdc 2014-04-14 14:06:02 +08:00
sijchen
64ef420e67 add memory allocation for feature search 2014-04-11 17:11:46 +08:00
ruil2
7547609336 Merge pull request #667 from mstorsjo/remove-unused-variable
Remove an unused variable
2014-04-11 16:25:06 +08:00
ruil2
8539071583 modify the initialization of the number of LTR 2014-04-11 15:07:32 +08:00
Martin Storsjö
ec94faf13a Remove an unused variable 2014-04-11 09:54:11 +03:00
ruil2
c8eaea2f27 add memory allocation for screen content 2014-04-10 17:07:26 +08:00
volvet
8690adf870 Merge pull request #647 from mstorsjo/remove-dynamic-vp
Remove code for loading the VP library dynamically
2014-04-08 10:40:55 -07:00
Martin Storsjö
3dcd458ffd Remove trailing whitespace in the source files 2014-04-08 18:13:23 +03:00
Martin Storsjö
a57094c152 Remove the now unused intermediate code for loading the VP library dynamically 2014-04-08 15:09:21 +03:00
Martin Storsjö
1d167fe7d6 Remove a TODO that is no longer relevant
The function signatures are equal nowadays.
2014-04-08 15:09:21 +03:00
Martin Storsjö
1342da9bc4 Remove everything related to NO_DYNAMIC_VP
This mode is the default and used everywhere now.
2014-04-08 15:09:21 +03:00
ruil2
37f20f1c5e update pre-processing workflow for screen content 2014-04-08 14:42:30 +08:00
volvet
d98ba6137c remove RC enable flag, use RC Mode to indicate RC on or off 2014-04-07 22:08:28 -07:00
Licai Guo
90fc914b6c Modify comment 2014-04-08 11:31:12 +08:00
Licai Guo
5c60e8f868 Add ASM related functions for ME cross search
Add asm level functions

Add asm code for ME

Modify format

Add unit test for asm code.

Modify function name and format.

Remove unuse comment

Modify targets file

Add Macro protect for SSE41 funtion test

Modify according to review request.
2014-04-08 11:24:45 +08:00
ruil2
9993198a3c Merge pull request #633 from volvet/rm_redundant_protect
remove redundant protect code
2014-04-04 09:50:57 +08:00
ruil2
646d943200 Merge pull request #621 from sijchen/fme_merge42
[Encoder ME] add Preprocess functions for FME
2014-04-04 09:48:44 +08:00
volvet
02b08d278a Merge pull request #623 from ruil2/enc_update
add the condition branch for screen content

Approved by Sijia Chen @ RBComments
2014-04-03 18:15:58 -07:00
sijchen
4469519baf Merge pull request #632 from volvet/rm_cpu_core_bind
remove thread cpu core bind
2014-04-04 09:04:47 +08:00
volvet
e2e106a4a4 remove redundant protect code 2014-04-03 17:14:56 -07:00
volvet
9fd7fbccd8 remove thread cpu core bind 2014-04-03 16:19:53 -07:00
volvet
6debb3460c fix pic partition bug 2014-04-03 13:38:12 -07:00
ruil2
27da2b21bf add the condition branch for screen content 2014-04-02 17:23:46 +08:00
ruil2
81d588e38e add LTR mark 2014-04-02 15:10:04 +08:00
sijchen
29f300dde9 [Encoder ME] add Preprocess functions for FME 2014-04-02 14:34:23 +08:00
Licai Guo
c12edefcd3 Merge pull request #616 from sijchen/fme_merge81
[Encoder ME] add function pointer for search methods
2014-04-02 13:07:21 +08:00
Licai Guo
ea5b6b49b4 Merge pull request #619 from ruil2/vp_dpb
add reference frame managment for screen content [still in progress]
2014-04-02 13:07:04 +08:00
ruil2
9645f38021 add reference frame managment for screen content [still in progress] 2014-04-02 10:45:35 +08:00
sijchen
f695227b00 add funtion pointer for search methods 2014-04-02 10:12:39 +08:00
volvet
71ab928ca3 fix compile warnings 2014-04-01 11:37:59 -07:00
Ethan Hugg
c644879cf9 Merge pull request #598 from varunbpatil/compiler_warnings
Remove compiler warnings
2014-04-01 10:57:19 -07:00
sijchen
a917444b2e [Encoder ME] add memory allocation basics for FME 2014-04-01 15:52:13 +08:00
ruil2
e7603d8fbb use function pointer in reference frame management 2014-04-01 14:52:55 +08:00
Licai Guo
9a81260b24 Merge pull request #605 from volvet/clean_mt_macro
clean multi-threading macro
2014-04-01 14:50:31 +08:00
ganyang
eb6f6ecf40 Add EncoderMB UT test file, and reformat UT files. 2014-04-01 13:55:22 +08:00
Licai Guo
fa9735b331 Merge pull request #602 from sijchen/fme_merge22
[Encoder ME] Add alternative search methods
2014-04-01 10:23:24 +08:00
ruil2
6bb23f5df4 use WelsLog instead of fprintf to have a unified trace output 2014-04-01 09:24:57 +08:00
volvet
9f50e0c91e clean multi-threading macro 2014-03-31 18:24:10 -07:00
volvet
cad753d871 Merge pull request #603 from ruil2/vp_update2
add scene change for screen content

Approved by Sijia.
2014-03-31 13:59:29 -07:00
ruil2
aed919a65a add scene change for screen content 2014-03-31 17:14:00 +08:00
sijchen
69983d6df4 Add alternative search methods 2014-03-31 16:11:31 +08:00
unknown
a128d7f790 add usagetype setting for screen content 2014-03-31 14:00:25 +08:00
Licai Guo
881298ed31 Merge pull request #595 from sijchen/fme_merge12
[Encoder ME] Add feature search basic functions
2014-03-31 08:59:09 +08:00
Varun B Patil
6663743f4c Remove compiler warnings 2014-03-30 15:13:29 +05:30
ruil2
4751fe7690 add scene change detection in workflow for screen content 2014-03-28 11:30:51 +08:00
sijchen
12616019b6 Add feature search basic functions 2014-03-28 11:21:30 +08:00
ruil2
63cef0f0f4 add preprocessing parameter for screen content 2014-03-28 10:06:42 +08:00
sijchen
a60af6a750 add function pointer 2014-03-28 09:09:21 +08:00
sijchen
59f243b487 Adjust function interface and add void function for further coworking, adjust test accordingly 2014-03-26 16:52:53 +08:00
sijchen
bbe016543f Add basic cross search functions and its unit tests 2014-03-26 16:23:44 +08:00
ruil2
6b3f89d582 move some common functions to common.cpp and add some functions in common 2014-03-25 15:35:55 +08:00
sijchen
fcae0c7c48 Change the output of diamond search from qpel to interpel 2014-03-25 11:03:37 +08:00
sijchen
99f3bd69c4 Add checking directional MV in ME initial point 2014-03-24 14:16:16 +08:00
Martin Storsjö
b6883b4ef8 Make the iRCMode field use the RC_MODES type instead of plain int
This makes it even clearer for users about how to set this field.
2014-03-21 09:19:30 +02:00
Martin Storsjö
2bc8e61fcf Move the RC_MODES enum to the public header
This allows users to know what values to set for the iRCMode
parameter.
2014-03-21 09:18:17 +02:00
Licai Guo
65e8560dc7 Merge pull request #560 from ruil2/encoder_nal
add uiMaxNalSize to support the maximum nal size setting
2014-03-21 12:52:32 +08:00
Licai Guo
7a29b1f55a Merge pull request #549 from lyao2/rc_tune
RC LOWBR mode merge
2014-03-21 09:15:18 +08:00
ruil2
fd2c950778 add uiMaxNalSize to support the maximum nal size setting 2014-03-21 08:59:38 +08:00
Licai Guo
58966cb2e8 Merge pull request #558 from ruil2/encoder_level
add leve parameter, update profile and usagetype type
2014-03-20 17:16:40 +08:00
ruil2
e6c072b364 add leve parameter, update profile and usagetype type 2014-03-20 17:02:32 +08:00
sijchen
0ea480323e expand MVD table and rename some macros 2014-03-20 16:56:43 +08:00
Licai Guo
9d73d273ff Merge pull request #554 from ruil2/encoder_update
add maxbitrate parameter
2014-03-20 14:57:54 +08:00
ruil2
258185f8c2 add maxbitrate parameter 2014-03-20 14:30:20 +08:00
sijchen
e0aed6e4e7 add static 2014-03-20 14:19:55 +08:00
lyao2
071254748f avoid QP sudden fluctates 2014-03-20 13:13:32 +08:00
sijchen
c00bec2aa6 refactor the setting of function pointer for simplification 2014-03-20 09:51:57 +08:00
lyao2
4bc881c3ae RC LOWBR mode merge 2014-03-20 09:26:16 +08:00
Ethan Hugg
e8540af9eb Merge pull request #541 from licaiguo/disable-warnings
disable most warnings produced by -Wall
2014-03-19 09:17:34 -07:00
ruil2
028d39077f Merge pull request #545 from mstorsjo/remove-extra-parentheses
Remove unnecessary/superfluous parentheses in slice_multi_threading.cpp
2014-03-19 16:39:01 +08:00
Licai Guo
a688f5278a fix most of the warnings 2014-03-19 01:16:08 -07:00
Martin Storsjö
d75f677034 Remove unnecessary/superfluous parentheses in slice_multi_threading.cpp 2014-03-19 10:15:29 +02:00
ruil2
e74f01ad47 use the same frame type EVideoFrameType in encoder internal 2014-03-19 16:11:06 +08:00
ruil2
3238c913cc Merge pull request #535 from volvet/add-scene-change-detector
Add scene change detector
2014-03-19 14:52:08 +08:00
volvet
7313ecdbd0 Merge pull request #538 from mstorsjo/use-apple-builtin-define
Use __APPLE__ instead of APPLE_IOS for apple/arm specific features
2014-03-19 09:45:56 +08:00
Licai Guo
4bbe61a783 Merge pull request #537 from mstorsjo/rename-x86-asm
Rename the asm subdirectories to x86
2014-03-19 08:51:39 +08:00
Licai Guo
d897d362ab Merge pull request #532 from huili2/WELS_CLIP1
Modify MACRO WELS_CLIP1 as inline functions
2014-03-19 08:50:04 +08:00
Martin Storsjö
9586c59b9e Use __APPLE__ instead of APPLE_IOS in the arm assembly sources 2014-03-18 23:15:49 +02:00
Martin Storsjö
ed9c03408f Rename the asm subdirectories to x86
This is consistent with having the arm assembly in a subdirectory
called arm.
2014-03-18 23:09:45 +02:00
Ethan Hugg
197423f271 Merge pull request #520 from ylatuya/master
Fix compiler warnings and remove dead code
2014-03-18 13:28:02 -07:00
Andoni Morales Alastruey
ae60f1bee9 Fix compiler warnings and remove dead code
Fix several -Werror=unused-variable and -Werror=unused-but-set-variable
and removed dead code found with this warnings
2014-03-18 19:15:25 +01:00
volvet
d7b7419040 add scene change detector for further extension 2014-03-18 17:54:58 +08:00
huili2
3b270aa901 remove unncessary cast 2014-03-18 02:15:57 -07:00
huili2
090e8cc1ed modify WELS_CLIP1 to be inline functions 2014-03-18 01:54:25 -07:00
volvet
b21411ad7c Merge pull request #511 from mstorsjo/remove-unused-define
Remove the unused FORMAT_COFF define
2014-03-18 16:11:22 +08:00
volvet
fb1958ad13 Merge pull request #519 from mstorsjo/push-xmm-registers
Backup/restore the xmm6-xmm15 SSE registers within asm functions on win64

Reviewed by zhiliang
2014-03-18 15:04:54 +08:00
Licai Guo
3956a32d41 Merge pull request #524 from sijchen/me_refactor33
Expand structure of MD and ME
2014-03-18 12:51:05 +08:00
Licai Guo
37fa5f554e Merge pull request #513 from ruil2/encoder_interface
Encoder interface
2014-03-18 09:51:32 +08:00
sijchen
7f0c7daad9 expand structure of MD and ME 2014-03-18 09:47:05 +08:00
volvet
b5353c8455 Merge pull request #516 from mstorsjo/fix-yasm-64bit
Fix building with yasm in 64 bit mode
2014-03-18 09:29:42 +08:00
volvet
e75cd2298b Merge pull request #517 from mstorsjo/simplify-x86-asm-func-macro
Fold ALIGN 16 and the function label into WELS_EXTERN
2014-03-18 09:29:17 +08:00
Martin Storsjö
29a0c77acf Don't clobber q4-q7 in WelsIntra16x16Combined3Satd_neon
This is similar to what is done in other neon functions. This
function was missed since it isn't covered by the current
set of unittests.
2014-03-17 20:04:53 +02:00
Martin Storsjö
3cf52554f7 Backup/restore the xmm6-xmm15 SSE registers within asm functions on win64
According to the Win64 ABI, these registers need to be preserved,
and compilers are allowed to rely on their content to stay
available - not only for float usage but for any usage, anywhere,
in the calling C++ code.

This adds a macro which pushes the clobbered registers onto the
stack if targeting win64 (and a matching one which restores them).
The parameter to the macro is the number of xmm registers used
(e.g. if using xmm0 - xmm7, the parameter is 8), or in other
words, the number of the highest xmm register used plus one.

This is similar to how the same issue is handled for the NEON
registers q4-q7 with the vpush instruction, except that they needed
to be preserved on all platforms, not only on one particular platform.

This allows removing the XMMREG_PROTECT_* hacks, which can
easily fail if the compiler chooses to use the callee saved
xmm registers in an unexpected spot.
2014-03-17 13:44:33 +02:00
Martin Storsjö
9293f2f947 Remove commented out rodata sections and tables in assembly files 2014-03-17 13:42:18 +02:00
Martin Storsjö
eec968234d Fold ALIGN 16 and the function label into WELS_EXTERN
This simplifies the structure for all x86 assembly functions,
reducing the amount of duplicated code structure.
2014-03-17 13:35:00 +02:00
Martin Storsjö
04f5bcd68d Use movsxd in SIGN_EXTENSION
This is what nasm ended up assembling movsx with 32 bit input to
anyway.

Keep using plain movsx for 16 bit input.

This fixes building with yasm in 64 bit mode.
2014-03-17 13:26:46 +02:00
Martin Storsjö
f96918283f Remove commented out code for old, 32-bit only x86 assembly function prologues/epilogues 2014-03-17 11:20:11 +02:00
Licai Guo
fc4e0cacec Merge pull request #483 from volvet/develop_b
use large/medium/similar to define scene change result
2014-03-17 16:32:31 +08:00
Licai Guo
b5a4d706b9 Merge pull request #496 from mstorsjo/use-sign-extend-macro
Use the SIGN_EXTENSION macro where possible
2014-03-17 16:31:03 +08:00
ruil2
36d56b6638 modify EncoderFrame return type.
commit b99a307ab94183c32a293ad5fda8b0e3323546a0
Author: ruil2 <ruil2@cisco.com>
Date:   Wed Mar 12 13:34:27 2014 +0800

    fix typo
2014-03-17 10:46:38 +08:00
Licai Guo
2c796337ba Merge pull request #510 from huili2/remove_basemb
remove BASE_MB related code
2014-03-17 08:46:25 +08:00
Martin Storsjö
fc260b39e0 Remove the unused FORMAT_COFF define
Nothing in the project currently sets FORMAT_COFF - the other generic
branch works just fine on windows.
2014-03-16 17:54:55 +02:00
Martin Storsjö
eb238e6549 Use the SIGN_EXTENSION macro where possible
This shortens the x86 assembly by 134 lines in total.
2014-03-16 17:54:24 +02:00
volvet
e606bae0e9 Merge pull request #504 from mstorsjo/fix-function-name-typo
Fix a typo, Smple -> Sample
2014-03-16 10:18:03 +08:00
Licai Guo
6f2b98975e Merge pull request #502 from mstorsjo/fix-macro-indentation
Fix the indentation of some nasm macros
2014-03-15 07:16:37 +08:00
Martin Storsjö
f4fdb15397 Fix a typo, Smple -> Sample 2014-03-14 23:30:09 +02:00
Martin Storsjö
4d120781c1 Fix the indentation of some nasm macros 2014-03-14 22:26:33 +02:00
Martin Storsjö
b3d04d88a0 Check for the right function pointer
This code checked whether one function pointer was non-null,
but the went on to call a different function pointer. Check
for the one that actually was called.
2014-03-14 22:20:40 +02:00
volvet
6da9a9e5c8 Merge pull request #489 from sijchen/me_refactor22
refactor ME for easier adding other search methods
2014-03-14 17:53:10 +08:00
huili2
b1f596fd69 remove BASE_MB related code 2014-03-14 02:03:41 -07:00
Martin Storsjö
9199798f22 Fix a typo in a macro name, EXTENTION -> EXTENSION 2014-03-14 10:13:18 +02:00
sijchen
6c3d83a8ac refactor ME for easier adding other search methods 2014-03-14 15:04:35 +08:00
volvet
6714b8ae99 Merge pull request #463 from mstorsjo/dont-clobber-neon-registers
Avoid clobbering the neon registers q4-q7

Review and verified by zhilwang
2014-03-14 10:28:55 +08:00
volvet
fc5c48830a fix the condition of scene change flag and comments 2014-03-14 09:53:24 +08:00
volvet
c8761c08ae use large/medium/similar to define scene change result 2014-03-13 10:43:20 +08:00
volvet
8962b7c98b Merge pull request #482 from sijchen/me_refactor1
mv range setting refactor
2014-03-13 10:21:39 +08:00
sijchen
d809a7981b mv range setting refactor 2014-03-13 10:18:01 +08:00
volvet
8b907c18fd fix idr interval issue 2014-03-12 17:38:25 +08:00
ruil2
c7f2a0b7f6 3Author: ruil2 <ruil2@cisco.com>
modify the parameter verification for SM_AUTO_SLICE mode -- uiSliceNum
 iis ignored
2014-03-12 10:44:13 +08:00
ruil2
7c8ce799c0 fix SM_FIXEDSLCNUM_SLICE bug, add SM_AUTO_SLICE mode 2014-03-11 10:23:46 +08:00
Martin Storsjö
c011890764 Push clobbered neon registers on the stack
According to the calling convention, the registers q4-q7 should be
preserved by functions. The caller (generated by the compiler) could
be using those registers anywhere for any intermediate data.

Functions that use more than 12 of the qX registers must push
the clobbered registers on the stack in order to be able to restore them
afterwards.

In functions that don't use all 16 registers, but clobber some of
the callee saved registers q4-q7, one or more of them are remapped
to reduce the number of registers that have to be saved/restored.

This incurs a very small (around 0.5%) slowdown in the decoder and
encoder.
2014-03-10 22:07:36 +02:00
Martin Storsjö
811c647c0e Remap registers to avoid clobbering the neon registers q4-q7
According to the calling convention, the registers q4-q7 should be
preserved by functions. The caller (generated by the compiler) could
be using those registers anywhere for any intermediate data.

Functions that use 12 or less of the qX registers can avoid
violating the calling convention by simply using other registers instead
of the callee saved registers q4-q7.

This change only remaps the registers used within functions - therefore
this does not affect performance at all. E.g. in functions using
registers q0-q7, we now use q0-q3 and q8-q11 instead.
2014-03-10 22:07:25 +02:00
ruil2
a922155c9a Merge pull request #466 from sijchen/add_memalign_test
Add memalign unit test
2014-03-10 17:25:41 +08:00
sijchen
385128e403 Merge pull request #465 from ruil2/encoder_trace
use global trace in encoder
reviewed at https://rbcommons.com/s/OpenH264/r/176/
2014-03-10 17:22:19 +08:00
sijchen
53a570556d add memalign unit test 2014-03-10 16:28:05 +08:00
ruil2
02bafd9320 Merge pull request #445 from mstorsjo/use-thread-param
Use the iMultipleThreadIdc field from SEncParamExt
2014-03-10 15:28:04 +08:00
ruil2
86f37f047c Merge pull request #452 from mstorsjo/use-slice-mode-enum
Use SliceModeEnum as data type for the slice mode fields
2014-03-10 15:27:04 +08:00
ruil2
2539d6e447 Merge pull request #462 from mstorsjo/fix-typos
Fix two typos in variable and macro names
2014-03-10 15:25:20 +08:00
ruil2
ba6b2a8d62 use global trace in encoder 2014-03-10 15:22:40 +08:00
Martin Storsjö
cc7b81f3c3 Fix a typo in arm assembly, LORD -> LOAD 2014-03-09 19:19:38 +02:00
Martin Storsjö
7c435ad295 Remove a stray inline keyword in a function signature comment in x86 assembly
Assembly functions written in external assembly files is obviously
not inlined.
2014-03-09 19:18:03 +02:00
Martin Storsjö
8d6b368a1c Remove unnecessary stray __cdecl annotations in function signature comments in x86 assembly 2014-03-09 19:18:02 +02:00
Martin Storsjö
5df2e2a996 Use SliceModeEnum as data type for the slice mode fields
This makes the use of the field clearer and safer by allowing
the compiler check that users actually assign proper enum
values.
2014-03-08 00:23:58 +02:00
Martin Storsjö
ce7b00ea72 Get rid of an unnecessary cast by declaring the right pointer type 2014-03-08 00:17:30 +02:00
Ethan Hugg
fb4f677f77 Merge pull request #446 from mstorsjo/remove-unnecessary-public-param
Move the iCountThreadsNum field to SWelsSvcCodingParam
2014-03-07 09:18:52 -08:00
Ethan Hugg
7632510209 Merge pull request #450 from mstorsjo/publish-slice-mode-enum
Move the slice mode enum to the public API
2014-03-07 09:17:03 -08:00
Martin Storsjö
5f1c207845 Move the slice mode enum to the public header
This simplifies setting the slice mode in the public API.
2014-03-07 14:53:29 +02:00
Martin Storsjö
495a4a392e Make ParamValidationExt use the actual type instead of a void pointer 2014-03-07 14:51:34 +02:00
Martin Storsjö
656e4c5c35 Move the iCountThreadsNum field to SWelsSvcCodingParam
There is no point in the user setting this field, it's only used
as an internal field within the encoder.
2014-03-07 14:48:38 +02:00
Martin Storsjö
dbc324d5bb Use the iMultipleThreadIdc field from SEncParamExt 2014-03-07 14:47:43 +02:00
Martin Storsjö
5b8ee37162 Merge WelsThreadDestroy into WelsThreadJoin
Now calling WelsThreadJoin is enough to finish and clean up
the thread on all platforms.

This unifies the thread cleanup code between windows and unix.

Now all of the threading code should use the exact same codepaths
between windows and unix.
2014-03-07 10:51:28 +02:00
Martin Storsjö
b4aa9be7de Use WelsThreadJoin on windows as well
This avoids using a separate event just for signalling that
a thread has finished running.
2014-03-07 10:51:28 +02:00
Martin Storsjö
baaa38737e Use pExitEncodeEvent instead of thread cancellation on unix as well
This works now that we've got a suitably working implementation
of WelsMultipleEventsWaitSingleBlocking.
2014-03-07 10:49:39 +02:00
volvet
38a3fada24 Merge pull request #435 from mstorsjo/threadlib-wait-single-unix
Make WelsMultipleEventsWaitSingleBlocking usable on unix as well
2014-03-07 16:47:38 +08:00
Licai Guo
1b9aae8434 Merge pull request #439 from zhilwang/mc-arm-asm
mv mc_neon.S to common,add MC arm code to encoder
2014-03-07 16:36:48 +08:00
Licai Guo
d986c27b9d remove mc_neon.S from encoder 2014-03-07 16:11:36 +08:00
Licai Guo
71467f948a mv mc_neon.S to common,add MC arm code to encoder 2014-03-07 12:18:58 +08:00
Licai Guo
a4cecd8004 Merge pull request #426 from volvet/simplify-layer-process
simplify-layer-process
2014-03-07 10:58:28 +08:00
volvet
14f5518e6a Merge pull request #437 from mstorsjo/fix-arm-encoder-android
Fix building arm encoder assembly for android
2014-03-07 10:41:34 +08:00
Martin Storsjö
c0043f7053 Use the three-operand form of add/sub with shift
When using unified syntax, the two operand form with a shift
isn't allowed.
2014-03-06 16:21:54 +02:00
Martin Storsjö
f1502c26e3 Don't use WELS_ASM_FUNC_END in the middle of a function
WELS_ASM_FUNC_END declares the end of the function, and needs
to be paired with WELS_ASM_FUNC_BEGIN.
2014-03-06 16:21:54 +02:00
Martin Storsjö
ce4fa9e272 Correct the endif comment
The code block is about HAVE_NEON, not X86_ASM.
2014-03-06 15:43:04 +02:00
Martin Storsjö
636df2bebb Use WelsMultipleEventsWaitSingleBlocking within the worker thread on unix as well
This avoids using a separate thread for handling pUpdateMbListEvent
events, and later allowing using the encode exit event on unix instead
of pthread cancellation.
2014-03-06 15:34:35 +02:00
Martin Storsjö
801da26d1d Use WelsMultipleEventsWaitSingleBlocking with a master event for waiting on finished threads
This allows using the same codepath for both unix and windows
for distributing new slices to code to threads.

This also improves the performance on unix - instead of waiting
for all the current threads to finish their current slice
before handing out a new slice to each of them (where the threads
that finish first will just wait instead of immediately getting
a new slice to work on), we now use the same logic as on windows.

In one setup, it improves the performance of encoding from ~920 fps
to ~950 fps, and in another setup it goes from ~390 fps to ~660 fps.
(These tests were done with the SM_ROWMB_SLICE mode, which
heavily exercises the code for distributing new slices to the
worker threads.)

The extra WelsEventSignal call on windows where it isn't strictly
necessary doesn't incur any measurable slowdown, so it is kept
without any extra ifdefs to keep the code more readable and unified.
2014-03-06 15:33:37 +02:00
Martin Storsjö
de32455d87 Remove the timeout parameter from WelsMultipleEventsWaitSingleBlocking
All users of the function passed the value corresponding to
"infinite", and the (currently unused) unix implementation of it
only supported infinite wait as well.
2014-03-06 15:03:59 +02:00
volvet
8cc332dea1 Merge pull request #432 from zhilwang/arm-asm
Arm asm
2014-03-06 16:50:56 +08:00
volvet
73452e0993 Merge pull request #429 from mstorsjo/simplify-ifdef-with-macro
Use a macro for conditionally logging based on ENABLE_TRACE_MT
2014-03-06 16:01:41 +08:00
Licai Guo
7bfe801874 Remove trailing space 2014-03-06 14:55:36 +08:00