Commit Graph

649 Commits

Author SHA1 Message Date
Licai Guo
e7cc8c2780 Add arm asm code for processing. 2014-03-05 16:54:05 +08:00
Martin Storsjö
ef7e05d47d Use the __ARM_NEON__ built-in compiler define for identifying neon capability on iOS
This avoids having to hardcode the names of devices that don't
support neon.

The devices that don't support neon don't run the armv7 variants
of iOS binaries at all - they would need to be built for the armv6
architecture. (Building for armv6 isn't supported at all in
modern iOS SDKs.)

Therefore we can simply use the __ARM_NEON__ built-in compiler
define to check if NEON code is allowed in the current build,
and have the WelsCPUFeatureDetect function return flags accordingly.

The only thing this disallows is doing an armv6 build which would
optionally enable neon code at runtime if run on an armv7 capable
device, but since Apple allows you to build the same binary for
armv7 separately in the same app bundle, and since armv6 building
isn't even possible in the current iOS SDKs, this isn't really a loss.

This is in contrast to the android builds where the armv7 baseline
does not include NEON.
2014-03-05 09:47:05 +02: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ö
4814d5828d Use unnamed semaphores on linux
This avoids the risk of namespace collisions for named semaphores
(where the names are global for the whole machine), on platforms
where we strictly don't need to use the named semaphores.
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
Martin Storsjö
04917cd13f Remove commented out, unused code
Some few lines of commented out code is left, that might be useful
for debugging.
2014-03-05 08:50:59 +02: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
9e4ab64c73 move iTotalNumMbRec from refpic to ctx 2014-03-04 19:23: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ö
dae8f4b737 Exclude the arm assembly header as well
This avoids warnings about object files not containing any symbols.
2014-03-04 23:23:19 +02:00
Ethan Hugg
975a3e41bc Merge pull request #404 from mstorsjo/arm-asm-type-func
Mark the arm asm labels as functions
2014-03-04 10:17:07 -08:00
Ethan Hugg
01a2f582c3 Merge pull request #401 from mstorsjo/android-arm-assembly
Enable the arm assembly in android builds
2014-03-04 09:50:07 -08:00
volvet
e61bd1b504 Merge pull request #408 from mstorsjo/exclude-asm-headers
Exclude assembly files that are used as headers
2014-03-04 21:07:42 +08:00
volvet
bc9ee5b145 Merge pull request #406 from mstorsjo/use-proper-define
Use the windows INFINITE define instead of manually casting -1 to uint32_t
2014-03-04 20:57:57 +08:00
Martin Storsjö
773cc4a797 Exclude assembly files that are used as headers
This avoids some warnings about object files not containing any
symbols.
2014-03-04 14:57:36 +02: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ö
42592217c2 Use the windows INFINITE define instead of manually casting -1 to uint32_t 2014-03-04 14:47:25 +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ö
e20930ef73 Mark the arm asm labels as functions
This fixes calling them from thumb code, on linux.
2014-03-04 11:23:04 +02:00
Martin Storsjö
d411d768b6 Add cpu feature detection for generic arm/linux
For platforms without runtime detection, assume whoever built it
with HAVE_NEON actually wanted it.
2014-03-04 10:18:30 +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
4d729c9418 get cpu cores for android 2014-03-04 15:50:41 +08:00
Martin Storsjö
1118dd4f71 Update the makefile generator to support .S arm assembly files
These are built if ASM_ARCH is set to arm.
2014-03-04 08:56:42 +02:00
Martin Storsjö
03e0dcd814 Convert the arm assembly sources to unix newlines 2014-03-04 08:42:28 +02:00
volvet
13d785ec6a refine-multi-layer-process 2014-03-04 12:04:04 +08:00
volvet
d9a02d27f2 remove execute attribute of the arm asm files 2014-03-04 11:45:10 +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
f8b0cec68d Merge pull request #387 from zhilwang/arm-asm
Arm asm
2014-03-04 11:08:17 +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
Licai Guo
cdeb6449c6 remove unused declarations in as264_common.h 2014-03-03 17:42:47 -08:00
Licai Guo
83d0791163 Modify function name according latest cisco master 2014-03-04 09:18:18 +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
Licai Guo
21d6b3481f Remove trailing space. 2014-03-03 16:05:07 +08:00
Licai Guo
7768cd0a98 Modify code style, remove trailing space. 2014-03-03 15:42:01 +08: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
volvet
aa043fa4e5 Merge pull request #384 from licaiguo/check-spsid-ppsid
add checks for spsid and ppsid
2014-03-03 10:26:00 +08:00
Licai Guo
ba312b0b20 add checks for spsid and ppsid 2014-03-02 17:09:23 -08:00
ruil2
abdeb1951d format update 2014-03-03 09:07:16 +08:00
volvet
a3f129d8cd Merge pull request #382 from mstorsjo/avoid-overflow-in-timespec
Avoid overflow when populating a struct timespec
2014-03-03 09:05:27 +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
volvet
e34a08c0da Merge pull request #380 from mstorsjo/fix-debug-printing
Fix printing an event name for debugging
2014-03-03 08:58:30 +08:00
volvet
6c41cccb81 Merge pull request #377 from mstorsjo/threadlib-const-str
Add const to string parameters in WelsThreadLib
2014-03-03 08:53:00 +08:00
volvet
8c7e0a6ac6 Merge pull request #381 from mstorsjo/clarify-threading-comment
Clarify a comment in the threading code
2014-03-03 08:52:10 +08:00
Martin Storsjö
a96d83e762 Remove the broken WelsEventReset function
This function didn't work properly with named semaphores,
which are used in the unix codepaths.

Since it's unused, just remove it instead.
2014-03-03 00:00:17 +02:00
Martin Storsjö
b7db015a8c Avoid overflow when populating a struct timespec
When adding the (dwMilliseconds % 1000) * 1000000 part
to ts.tv_nsec, the ts.tv_nsec field can grow larger than one
whole second. Therefore first add all of dwMilliseconds to
the tv_nsec field and add all whole seconds to the tv_sec
field instead - this way we make sure that the tv_nsec field
actually is less than a second.
2014-03-02 23:53:51 +02:00
Martin Storsjö
d2fc2e47f2 Clarify a comment in the threading code
Named semaphores are used instead of unnamed semaphores
in the unix codepaths, since unnamed semaphores aren't available
on OS X.
2014-03-02 23:51:59 +02: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ö
8db97925a5 Add const to string parameters in WelsThreadLib 2014-03-02 23:43:45 +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
volvet
33017fa722 Merge pull request #368 from huili2/sps_buffer_modif
modify SPS, PPS buffer management and remove a build warning
2014-02-28 17:41:46 +08:00
Licai Guo
b7a25df13f Remove deblocking arm asm code to common folder, add cpu detect for arm, clean some code. 2014-02-28 17:08:24 +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
Licai Guo
e4b6fc3f9a modify SPS, PPS buffer management and remove a build warning 2014-02-27 22:28:16 -08:00
Licai Guo
0279cd7597 Merge pull request #367 from volvet/refine-enc-plus
refine encode plus code
2014-02-28 14:18:06 +08:00
huili2
2dd41096d5 Merge pull request #366 from licaiguo/refine-rpl-pr
refine rpl
2014-02-28 14:08:41 +08:00
Licai Guo
0fd9db2878 Add ARM 32bit asm code for decoder. 2014-02-28 13:36:34 +08:00
volvet
d0d050d8e5 refine encode plus code 2014-02-28 13:06:49 +08:00
Licai Guo
e902f0fea4 refine rpl 2014-02-27 21:04:31 -08:00
Ethan Hugg
3d47b7847d Merge pull request #358 from volvet/add_ios_encDemo
add encode test for iOS
2014-02-27 10:52:14 -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
ruil2
9319f879e4 Merge pull request #362 from mstorsjo/encoder-default-params
Add a new public method for initializing SEncParamExt to default values
2014-02-27 17:38:16 +08:00
Licai Guo
573b02797b Merge pull request #363 from huili2/remove_store_base
remove unused codes in reference picture management
2014-02-27 12:39:23 +08:00
Licai Guo
5303eaaeb9 remove store_ref_base_pic_flag related codes in reference picture management 2014-02-26 20:00:32 -08:00
volvet
e8ecee2616 make the makefile is indepent with the pch file 2014-02-27 09:30:35 +08:00
volvet
3544aaaaab remove boilerplate comments 2014-02-27 09:17:24 +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
ruil2
cb4bc5ee28 add command line example 2014-02-26 16:58:03 +08:00
volvet
6dc1d43a5b remove precompiled files 2014-02-26 16:26:16 +08:00
volvet
73ce4adc85 add encode test for iOS 2014-02-26 14:53:31 +08:00