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
JuannyWang
df6813063f
[Encoder UT] add expGolom UT and encoder trace modification
2014-04-02 13:57:09 +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
volvet
f7fba4b122
Merge pull request #580 from ylatuya/api
...
Prefix API with the Wels namespace
2014-03-26 15:45:02 -07: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
Andoni Morales Alastruey
328740f294
Prefix API with the Wels namespace
2014-03-25 17:40:01 +01: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
Martin Storsjö
e1b5e038d2
Use .obj as suffix for object files on MSVC
...
This avoids warnings when linking about "unrecognized source file
type, object file assumed".
2014-03-18 19:41:06 +02:00
volvet
d7b7419040
add scene change detector for further extension
2014-03-18 17:54:58 +08:00
ruil2
9cf9238cfc
fix bug that there is no output in encoder console
2014-03-18 17:38:48 +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
Martin Storsjö
4c829a12e2
Fix the comment in welsEncoderExt.h about the EncodeFrame return value
...
This was changed in 36d56b6638
in the public api, but the
internal implementation header was missed and left inconsistent.
2014-03-18 10:07:23 +02: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ö
4633626d69
Remove XMMREG_PROTECT
...
This isn't necessary any longer, when all the assembly routines
take care of restoring registers as necessary.
2014-03-17 13:47:01 +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
895c0ff635
fix typo
2014-03-17 12:09:52 +08:00
ruil2
36abe317a5
modify unit test for return type modification
2014-03-17 11:56:19 +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
e654bf6b7f
Merge pull request #490 from ruil2/encoder_slice_auto
...
fix dump file issue
2014-03-16 15:41:26 +08: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
unknown
94f8c351ca
fix dump file issue
2014-03-14 15:13:24 +08: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
ruil2
b3c45946ff
modify typing format
2014-03-07 16:29:12 +08:00
Licai Guo
e5f36822a9
Update targets.mk files
2014-03-07 16:22:59 +08:00
Licai Guo
d986c27b9d
remove mc_neon.S from encoder
2014-03-07 16:11:36 +08:00
ruil2
f0c6c2b318
Merge branch 'master' of https://github.com/cisco/openh264 into encoder_update
2014-03-07 15:59:23 +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
ruil2
594fc4fe7b
dump file refactor
2014-03-07 10:23:25 +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ö
4e4bfcc1bc
Regenerate makefiles to include the encoder arm assembly
2014-03-06 16:11: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
Licai Guo
67534b0fc0
arm asm code refine.
2014-03-06 14:30:16 +08:00
Martin Storsjö
fd6f8a83b3
Use a macro for conditionally logging based on ENABLE_TRACE_MT
...
This avoids having an extra ifdef around every single WelsLog
call.
2014-03-06 08:06:34 +02:00
ruil2
28a56a6752
Merge pull request #415 from volvet/remove-useless-mgs-code
...
remove un-supported mgs code
2014-03-06 14:05:04 +08:00
volvet
50fe120a3e
simplify-layer-process
2014-03-06 11:19:33 +08:00
ruil2
334c5765c7
remove inter-deblock related parameters
2014-03-06 10:26:53 +08:00
Licai Guo
e7cc8c2780
Add arm asm code for processing.
2014-03-05 16:54:05 +08:00
Martin Storsjö
d4bdef2916
Use an event name that contains the process id
...
This reduces the risk for namespace collisions if two processes
run the encoder simultaneously without address space layout
randomization.
2014-03-05 09:36:46 +02:00
Martin Storsjö
5480ffafdf
Use the WelsEventOpen interface with an event name on windows as well
...
This unifies the event creation interface, even if the event
name itself is unused on windows, allowing use the exact same
code to initialize events regardless of the actual platform.
Some ifdefs still remain in the event initialization code, since
some events are only used on windows.
2014-03-05 09:36:04 +02:00
volvet
e9395bbd35
remove un-supported mgs code
2014-03-05 15:17:07 +08:00
volvet
adb27ff0b1
Merge pull request #405 from mstorsjo/simplify-threads
...
Adjust WELS_EVENT definitions to allow sharing more code between unix and win32 codepaths
2014-03-05 12:31:15 +08:00
Licai Guo
ced9e41b5d
Merge pull request #399 from volvet/refine-multi-layer-process
...
refine-multi-layer-process
2014-03-05 10:45:35 +08:00
Licai Guo
248f324c62
Add intra predictor arm asm code.
2014-03-05 10:25:15 +08:00
Licai Guo
efcee63692
Remove .DS_Store file.
2014-03-05 10:24:05 +08:00
Licai Guo
bb244d736b
Partly add arm asm code to encoder.
2014-03-05 10:24:05 +08:00
volvet
7150adc91b
Merge pull request #407 from mstorsjo/do-blocking-wait
...
Do a blocking wait with WelsMultipleEventsWaitSingleBlocking
2014-03-05 09:18:45 +08:00
Martin Storsjö
cf07d61f06
Do a blocking wait with WelsMultipleEventsWaitSingleBlocking
...
There is no point in doing a timed wait here - there's no work
that we can do if the wait timed out, and sleeping for 1 ms
inbetween doesn't help, it only adds potential extra latency
to reacting to threads that need more work to do.
2014-03-04 14:51:33 +02:00
Martin Storsjö
1eaa38b130
Simplify code by allocating the arrays of events and thread handles statically
...
This avoids having to malloc a whole lot of separate arrays,
all which are all bounded by MAX_THREADS_NUM.
2014-03-04 12:17:32 +02:00
Martin Storsjö
ae63f064a0
Share the declarations for WELS_EVENT arrays between win32 and unix codepaths
2014-03-04 12:17:32 +02:00
Martin Storsjö
71bc52d103
Change the unix version of WELS_EVENT to sem_t*
...
Typedeffing WELS_EVENT as sem_t* makes the typedef behave similarly
to the windows version (typedeffed as HANDLE), unifying the code
that allocates and uses these event objects (getting rid of
most of the need for separate codepaths and ifdefs).
2014-03-04 12:17:32 +02:00
Martin Storsjö
e9c3403674
Merge some WIN32 ifdefs that were directly next to each other
2014-03-04 12:17:32 +02:00
Martin Storsjö
9cf34e7615
Unify the interface for the different variants of WelsCPUFeatureDetect
...
The caller of the function should not need to know exactly which
implementation of it is being used.
For the variants that don't support detecting the number of cores,
the pNumberOfLogicProcessors parameter can be left untouched
and the caller will use a higher level API for finding it out.
This simplifies all the calling code, and simplifies adding
more implementations of cpu feature detection.
2014-03-04 10:18:30 +02:00
volvet
13d785ec6a
refine-multi-layer-process
2014-03-04 12:04:04 +08:00
Licai Guo
26218731c6
Merge pull request #386 from volvet/refine_processing
...
refine build spatial list in processing
2014-03-04 11:15:35 +08:00
volvet
901b89f7ad
Merge pull request #376 from mstorsjo/simplify-x86-asm-makefiles
...
Simplify makefiles with respect to x86 assembly
2014-03-04 10:16:01 +08:00
volvet
bc1850a54d
remove uiFrameIdxRc
2014-03-04 09:08:54 +08:00
Ethan Hugg
1eb688264b
Merge pull request #395 from mstorsjo/printf-64bit-macro
...
Use a standard macro for 64 bit printf conversion specifiers
2014-03-03 09:11:51 -08:00
Ethan Hugg
e9593682eb
Merge pull request #392 from mstorsjo/unify-threading-ifdefs
...
Unify ifdef conditions related to threading code
2014-03-03 08:23:30 -08:00
Ethan Hugg
d940a204eb
Merge pull request #388 from mstorsjo/initialize-default
...
Initialize sSpatialLayers[0] in SEncParamExt for GetDefaultParams
2014-03-03 08:20:36 -08:00
Martin Storsjö
e0951599ea
Unify ifdef conditions related to threading code
...
The two different variants of the threadlib basically are
win32 and unix - use _WIN32 to check for this consistently,
instead of occasionally using __GNUC__ to enable the unix
codepath. (__GNUC__ is also defined on mingw, which still is
a windows platform and should use the _WIN32 code.)
2014-03-03 14:55:53 +02:00
Martin Storsjö
3c7dde97ee
Use a standard macro for 64 bit printf conversion specifiers
...
This avoids duplicating the printf line with an ifdef every
time a 64 bit number needs to be printed.
2014-03-03 12:33:34 +02:00
volvet
c7d98a8fa3
Merge pull request #394 from ruil2/encoder_update
...
add timestamp in encoder interface --- review request#138
2014-03-03 17:31:48 +08:00
unknown
e0e7107ff1
add timestamp in encoder interface
2014-03-03 17:05:06 +08:00
Martin Storsjö
9ccabd1fe3
Fix cropping when using SEncParamBase
...
The iFrameWidth/iFrameHeight fields are already aligned by the
SetActualPicResolution() function. Previously when iFrameWidth was
aligned directly in ParamBaseTranscode, this aligned value was used
to set iActualWidth/iActualHeight - losing the original, cropped
size.
This makes sure the output bitstream from the test of encoding
res/Static_152_100.yuv actually is cropped as it should.
2014-03-03 10:34:37 +02:00
Martin Storsjö
e392932ad2
Initialize sSpatialLayers[0] in SEncParamExt for GetDefaultParams
2014-03-03 10:32:20 +02:00
volvet
775eebaf36
refine build spatial list in processing
2014-03-03 14:04:19 +08:00
ruil2
b552944453
fix sizeof() bug
2014-03-03 10:46:32 +08:00
volvet
e3bf5ced53
Merge pull request #371 from ruil2/encode_ret
...
add verification on return value -- review request #128
2014-03-03 10:27:26 +08:00
ruil2
abdeb1951d
format update
2014-03-03 09:07:16 +08:00
ruil2
23df8a9ff6
add video format support verification
2014-03-03 09:03:59 +08:00
volvet
3a602a382b
Merge pull request #379 from mstorsjo/simplify-emms-calling
...
Provide a no-op WelsEmms macro if X86_ASM is disabled
2014-03-03 09:03:41 +08:00
volvet
5be179e0aa
Merge pull request #378 from mstorsjo/fix-building-debug-code
...
Fix building a logging statement in debug code
2014-03-03 09:00:59 +08:00
Martin Storsjö
2b82a5743d
Fix printing an event name for debugging
2014-03-02 23:49:50 +02:00
Martin Storsjö
dd47d4805f
Provide a no-op WelsEmms macro if X86_ASM is disabled
...
This allows always calling this function, reducing the number
of ifdefs in the calling code.
2014-03-02 23:46:20 +02:00
Martin Storsjö
26d66a4e1f
Fix building a logging statement in debug code
2014-03-02 23:45:14 +02:00
Martin Storsjö
3ccd2ae4cf
Remove a redundant makefile ifdef
...
ASM_ARCH=x86 is only set if USE_ASM is enabled.
2014-03-01 23:56:14 +02:00
Ethan Hugg
6e9df66272
Merge pull request #369 from sijchen/mt_refactor3
...
[Encoder] remove macros to clear codes
2014-02-28 08:28:18 -08:00
Martin Storsjö
7d2c761604
Allow using the USE_ASM makefile variable for architectures other than x86
...
Add an ASM_ARCH variable which specifies which kind of assembly
is supposed to be built.
2014-02-28 10:19:53 +02:00
volvet
4808eca022
update comments on welsEncoderEncodeExt
2014-02-28 15:27:54 +08:00
volvet
4c951aab83
refine welsEncoderEncodeExt
2014-02-28 15:13:38 +08:00
sijchen
10a4fb04c7
remove macros to clear codes
2014-02-28 14:54:11 +08:00
ruil2
823b3b6820
add verification on return value
2014-02-28 14:31:17 +08:00
volvet
d0d050d8e5
refine encode plus code
2014-02-28 13:06:49 +08:00
Ethan Hugg
e5ee43173d
Merge pull request #361 from mstorsjo/get-core-count
...
Use higher level APIs for getting the number of cores if WelsCPUFeatureDetect didn't report anything
2014-02-27 10:51:17 -08:00
Martin Storsjö
c7ff8876bb
Add a new public method for initializing SEncParamExt to default values
...
This simplifies forward source compatibility when new fields are
added to SEncParamExt - when new fields are added to SEncParamExt,
this method makes sure those fields are initialized to the
default value - otherwise all API users would have to manually check
SEncParamExt every time it is updated to make sure there's no new fields
that should be set to a nonzero value by default (e.g. like
bEnableFrameSkip).
2014-02-26 22:12:11 +02:00
Martin Storsjö
6021ff3908
Refactor initializing defaults in a SEncParamExt to a separate function
2014-02-26 22:03:56 +02:00
Martin Storsjö
bb5b3978bf
Use higher level APIs for getting the number of cores if WelsCPUFeatureDetect didn't report anything
...
On processors without HTT, WelsCPUFeatureDetect can't return
a number of cores but might still return a nonzero set of
CPU feature flags. Previously the nonzero cpu feature flag
indicated that cpuid worked and the encoder wouldn't use the
higher level API for getting the number of cores, even though the
number of cores was left at 1.
2014-02-26 21:43:46 +02:00
Martin Storsjö
e239d9fddc
Fix a typo in a function pointer name
2014-02-26 21:26:54 +02:00
Licai Guo
c9a25e9494
Merge pull request #342 from volvet/rm-unsupported-para
...
remove inter spatial layer prediction in parameters
2014-02-24 13:22:16 +08:00
volvet
f4d8882d2e
remove inter spatial layer prediction in parameters
2014-02-24 11:06:09 +08:00
ruil2
c79e78c4fb
cleanup encoder parameters
2014-02-24 10:40:17 +08:00
volvet
bf0179310c
Merge pull request #340 from zhilwang/ios-support
...
Ios support
2014-02-24 09:50:10 +08:00
Martin Storsjö
b31049df89
Respect the iDLayerQp parameter in SEncParamExt
...
Previously the value set in the parameter struct was ignored
completely.
2014-02-23 00:14:39 +02:00
Martin Storsjö
08c07db3c6
Respect the loop filter disabling encoder parameter
...
Previously the loop filter was unconditionally enabled
regardless of what encoder parameter was set. If using
SEncParamBase instead, the loop filter was always disabled.
2014-02-23 00:14:39 +02:00
Martin Storsjö
8b7fb36f39
Set missed fields in ParamBaseTranscode
...
Previously, these fields kept whatever value was set by
FillDefault. The corresponding fields were set properly within
sSpatialLayers, but the fields within the main struct were left
with the default values.
This doesn't change the hashes in the unit test, since these
fields don't seem to be used in the produced bitstream at all.
2014-02-23 00:14:39 +02:00
volvet
75f8b41bcd
Merge pull request #334 from mstorsjo/cleanup-vp-interface
...
Don't use a custom calling convention for the VP library entry points
2014-02-21 17:31:34 +08:00
Licai Guo
e7ed80c428
Merge pull request #322 from volvet/PreProcessExceptionHandle
...
init the spatial last spatial picture if excption
2014-02-21 17:09:17 +08:00
Martin Storsjö
21e9c83746
Remove the local declarations of the VP interface functions
...
There's no need to define them manually here, the normal
declarations in IWelsVP.h work just fine even if not loading
the WelsVP library dynamically.
2014-02-21 09:32:49 +02:00
Martin Storsjö
19efc59fae
Remove the WELSAPI definition
...
There's no need to specify a custom calling convention for
these functions.
2014-02-21 09:32:46 +02:00
Licai Guo
1f7f82bad4
Add ios support for encoder.
2014-02-21 13:49:49 +08:00
volvet
a783fed407
remove cgs/mgs related code, it is not supported
2014-02-21 12:57:06 +08:00
volvet
25efddd745
remove quality layer configuration. It is not supported
2014-02-21 10:51:47 +08:00
volvet
2bdf6d3736
Merge pull request #325 from sijchen/writenal_refactor3
...
add encoder error code and refactor WelsWriteNal
2014-02-21 08:41:02 +08:00
sijchen
e45e859473
Squashed merge from writenal_refactor2
2014-02-20 14:50:04 +08:00
volvet
e565e50d4d
add missed namespace for encoder, remove un-used file
2014-02-20 14:33:03 +08:00
volvet
d6c5c138ee
init the spatial last spatial picture if excption
2014-02-20 12:50:37 +08:00
ruil2
3ba6a5f4da
Simplify encoder interface--remove EncoderFrame2 from interface
...
function
2014-02-20 10:33:07 +08:00
Martin Storsjö
7acb6cd4d0
Remove the duplicated IWelsVP.h file
...
Instead have the encoder include it directly from the processing
library.
Both copies of the files were mostly identical so far.
2014-02-19 15:00:49 +02:00
Martin Storsjö
3532781556
Mark source parameters to MC functions as const
2014-02-19 10:19:56 +02:00
Martin Storsjö
1a1b78e9c5
Remove unnecessary declarations of static functions
...
These functions don't need to be declared in advance at all.
2014-02-19 09:25:27 +02:00
ruil2
dd93aa90b2
Merge pull request #290 from volvet/develop_b
...
Refactor CWelsPreProcess
2014-02-19 10:18:56 +08:00
volvet
bb58c5c720
correct style
2014-02-19 10:04:17 +08:00
Martin Storsjö
49f4dad1b7
Split the encoder Initialize method into two
...
This avoids the struct type casting and having to pass a parameter
that says which kind of struct it actually is.
2014-02-18 22:51:54 +02:00
Martin Storsjö
a899f05f2d
Don't have SEncParamExt inherit SEncParamBase
...
Instead just duplicate the common fields. These fields had to
be duplicated for the C interface compatibility anyway - but
this way there is no risk to accidentally introduce an ABI
break since there is no need for the layout of SEncParamBase to
actually match the start of SEncParamExt.
2014-02-18 22:51:54 +02:00
Martin Storsjö
80f5aa216a
Don't copy out the SEncParamBase, manually read the individual fields instead
2014-02-18 22:51:53 +02:00
Martin Storsjö
b6502a5406
Respect the bEnableRc field in SEncParamExt
2014-02-18 22:51:53 +02:00
Martin Storsjö
f432ddeea8
Remove a field from SWelsSvcCodingParam that already exists in SEncParamExt
2014-02-18 22:51:53 +02:00
Martin Storsjö
6d6a63a703
Mark the Initialize pointer parameter as const
...
This makes it clear to the callers that the struct will
not be modified by this call.
2014-02-18 22:51:53 +02:00
Martin Storsjö
2438b31323
Don't needlessly copy the input parameter struct
2014-02-18 22:51:53 +02:00
Martin Storsjö
bcd57f412a
Make Param*Transcode take a const reference
...
There is no need to modify the caller's struct.
2014-02-18 22:51:53 +02:00
Martin Storsjö
a1f6e158ef
Move REC_FRAME_COUNT logging into the Initialize2 method
2014-02-18 22:51:53 +02:00
Martin Storsjö
fc970418fa
Fix building with REC_FRAME_COUNT defined
2014-02-18 22:51:53 +02:00
Martin Storsjö
525ad9e7c8
Remove unnecessary checks/initialization from the Initialize method
...
Initialize2 does the same checks and initializes the same fields.
2014-02-18 22:51:53 +02:00
Martin Storsjö
1a32ae7120
Simplify the CWelsH264SVCEncoder::Initialize2 method
...
Remove the useless iInitType parameter, make the method
private within CWelsH264SVCEncoder class, give the pointer
parameter the correct type, avoiding needless casting.
2014-02-18 22:51:53 +02:00
Licai Guo
24359dcde1
Merge pull request #301 from ruil2/temporal_num
...
use temporal layer num and remove gop size in external configure-- review request #94
2014-02-18 21:04:21 +08:00
Martin Storsjö
647fff6e2b
Remove useless ifdefs
...
This is in practice always enabled on all currently supported
platforms.
2014-02-18 11:09:28 +02:00
ruil2
f5cd56ea74
use temporal layer num and remove gop size in external configure
2014-02-18 17:06:41 +08:00
Martin Storsjö
61067d488f
Fix building with MT_DEBUG enabled after the encoder interface update
...
There is no struct named SMulSliceOption any longer.
2014-02-18 10:29:48 +02:00
volvet
592665a21d
Merge branch 'master' of https://github.com/cisco/openh264 into develop_b
2014-02-18 15:34:06 +08:00
ruil2
8e8972b6e8
fix build fail on osx
2014-02-18 15:16:10 +08:00