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