_BitScanReverse() takes an unsigned long*
http://msdn.microsoft.com/en-us/library/fbxyd7zd.aspx
fixes:
C4057: 'function': 'unsigned long *' differs in indirection to slightly
different base types from 'uint32_t *'
fixes issue #253
(cherry picked from commit 0250dfcc191410193f496706d9ed443509ea0393)
Change-Id: I0101ef7be18c7ed188b35e9b17e7f71290953786
tested with mips1 and mips2; this should cover 3/4 as well.
fixes an ftbfs reported on the debian issue tracker:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=785000
(cherry picked from commit bf46d0acffd0c7e2e70757e42090ad273639435a)
Change-Id: I2458487c92bd638589fdfec5adb4f22102a5960c
The NEON assember in libwebp has not yet been ported
to Native Client. This changes disables it.
Related issue:
https://code.google.com/p/nativeclient/issues/detail?id=3205
(cherry picked from commit ac4f5784a0a5d64d54f03dcf2e2d133c4b266faa)
Change-Id: I200291db7aa79d40c1f10cff7622c9b8599e6886
the standard vtbl functions are available there [1][2].
based on a patch from: aaroncrespo
fixes issue #243.
[1]
http://adcdownload.apple.com//Developer_Tools/Xcode_6.3_beta/Xcode_6.3_beta_Release_Notes.pdf
[2] Apple LLVM Compiler Version 6.1
- Xcode 6.3 updates the Apple LLVM compiler to version 6.1.0.
[...]
Support for the arm64 architecture has been significantly revised to
align with ARM's implementation, where the most visible impact is that a
few of the vector intrinsics have changed to match ARM's specifications.
(cherry picked from commit 602a00f93f9fc2fe6b49848bab92ea34674333e9)
Change-Id: I79a0016f44b9dbe36d0373f7f00a50ab3c2ca447
DitherRow() only checks this value, not 'skip_' so previously it was
uninitialized for these blocks.
(cherry picked from commit 66935fb9ee7a8fc4f59dd91fec34c03d4318784c)
Change-Id: I0f698b81854ee9d91edacb51c1e3bdab9cba96f2
similar to:
1ba61b0 enable NEON intrinsics in aarch64 builds
vtbl1_u8 is available everywhere but Xcode-based iOS arm64 builds, use
vtbl1q_u8 there.
performance varies based on the input, 1-3% on encode was observed
(cherry picked from commit 416e1cea9b7f7a626341005cced947add7da5c54)
Change-Id: Ifec35b37eb856acfcf69ed7f16fa078cd40b7034
Reported here: https://code.google.com/p/webp/issues/detail?id=239
At the beginning of method 'DecodeImageData', pixels up to
'dec->last_pixel_' are assumed to be already cached. So, at the end of
previous call to that method also, that assumption should hold true.
Hence, we should cache all pixels up to 'src' regardless of 'src_last'.
This affects lossless incremental decoding only, as that is when
src_last and src_end differ.
Note: alpha decoding is implicitly incremental, as alpha decoding of
only the rows 'y_end - y_start' happens during FinishRow() call. So, this bug
affects alpha decoding in non-incremental decoding flow as well.
This bug was introduced in: https://gerrit.chromium.org/gerrit/#/c/59716.
(cherry picked from commit 783a8cda2470f313f454538a149a82ea12171c74)
Change-Id: Ide6edfeb2609b02aff701e1bd9fd776da0a16be0
check enc->argb_ to quiet an msvs /analyze warning:
C6387: 'enc->argb_+y*width' could be '0': this does not adhere to the
specification for the function 'memcpy'.
(cherry picked from commit f0e0677b87b22006964a17ee1e8947f5b72ebb25)
Change-Id: I87544e92ee0d3ea38942a475c30c6d552f9877b7
and only use it on x86 / x64 where it's available.
has the side-effect of quieting a msvs /analyze warning:
C6001: Using uninitialized memory 'cpu_info'.
(cherry picked from commit 0de5f33e31036c04c020527c3984749bdd292675)
Change-Id: Iae51be3b22b2ee949cfc473eeea9fd9fb6b3c2cb
explicitly add immintrin.h instead of transitively picking it up via
windows.h presumably. makes the code easier to move around.
(cherry picked from commit b6c0428e8ced79ace1ec8f3822a3583bc546b4fa)
Change-Id: If70d5143ac94fc331da763ce034358858e460e06
reported in https://code.google.com/p/webp/issues/detail?id=237
An empty partition #0 should be indicative of a bitstream error.
The previous code was correct, only an assert was triggered in debug mode.
But we might as well handle the case properly right away...
(cherry picked from commit 205c7f26afe24d3ae6cf215dae8bcc18b491b334)
Change-Id: I4dc31a46191fa9e65659c9a5bf5de9605e93f2f5
allows the sources to be #include'd in some hackish builds (don't do
that!)
(cherry picked from commit 67f601cd4623019cec74b1fa4c3712a8d898b29b)
Conflicts:
src/dsp/alpha_processing.c
src/dsp/argb.c
src/dsp/dec.c
src/dsp/enc.c
src/dsp/lossless.c
src/dsp/upsampling.c
src/dsp/yuv.c
Change-Id: I0c7a43acbebd0e2d5068845e6daa8ce47361cd91
we compare the current VP8GetCPUInfo pointer to the last used.
This is less code overall and each implementation is still
testable separately (by just changing VP8GetCPUInfo, but not
a separate threads!)
(cherry picked from commit a437694a17e2ee4c68bf0abba8e45e0dfd2a8e27)
Conflicts:
src/dsp/alpha_processing.c
src/dsp/argb.c
src/dsp/dec.c
src/dsp/enc.c
src/dsp/lossless.c
src/dsp/upsampling.c
src/dsp/yuv.c
Change-Id: Ia13fa8ffc4561a884508f6ab71ed0d1b9f1ce59b
check for __apple_build_version__ to distinguish the two; a version
check could work as Apple bumped Xcode's to 5.x/6.x, but it's unclear
how upstream will deal with their versioning as they go 3.6+, so avoid
it for now.
(cherry picked from commit a3946b895633bf0421685af9a52df4a52ad10d30)
Change-Id: I67cda67c4f68e262a92d805a63cc1496374be063
This wasn't working for this specific scenario:
- Encode an RGBA 'pic' (with trivial alpha) using lossy encoding.
(so that pic->a == NULL after import happens).
- Modify the 'pic->argb' so that it has non-trivial alpha.
- Encode the same 'pic' again.
This used to fail to encode alpha data as pic->a == NULL.
(cherry picked from commit e4f4dddba3719faaeebe5bc74c2436756b966d44)
Change-Id: Ieaaa7bd09825c42f54fbd99e6781d98f0b19cc0c
at least clang 3.[45] in c++ mode with -std=c++11 define __STRICT_ANSI__
this change set WEBP_INLINE to inline for c++/non-strict-ansi/> c99
fixes crbug.com/428383
(cherry picked from commit 6638710b9e9f9e7d3b6b9b0ba60799576876e653)
Change-Id: Ief2b934353c336a75865c73c90cc3dc5e4f83913
avoids an ICE with NDK r10b + NDK_TOOLCHAIN_VERSION=4.9
In function 'SSE16x16':
enc_mips32.c (684) internal compiler error: Segmentation fault
Change-Id: I1a3d33c0a9534c97633ab93bcdf9bf59d3a7e473
(cherry picked from commit 0ce27e715ec8d0bc6f3a9bf66b2b0d761ab433f9)
the number of segments are previously validated, but an explicit check
is needed to avoid a warning under gcc-4.9
(cherry picked from commit c8a87bb62d64b03087499e9277937fe76f1f1726)
Change-Id: Ifa7c0dd7f3f075b3860fa8ec176d2c98ff54fcea
This prevents the 'alpha-leak' reported in issue #220
Speed-diff is kept minimal.
(cherry picked from commit c792d4129ab3500a59e271cadb5885d9f079de0b)
Change-Id: I1976de5e6de7cfcec89a54df9233c1a6586a5846
This is the opposite of WebPDispatchAlpha
+ Implement the SSE2 version
(cherry picked from commit cddd33405055d70e5aab7b2aabaf1970522dd2e4)
Conflicts:
src/dsp/alpha_processing_sse2.c
Change-Id: I0c297309255f508c5261da8aad01f7e57f924d6c
Handle the corner case when VP8LDecodeImage() method is called with an invalid
header data. The lossless decoding doesn't support incremental mode yet.
Return the error status as BITSTREAM error in case not all pixels are decoded
with the provided bit-stream. Also added asserts in the VP8LDecodeImage() method
to validate the decoder header with appropriate/valid data for huffman trees
(htree_groups_ etc).
(cherry picked from commit e0a99321611c5b5a43e33b4d377877d999e730f9)
Change-Id: Ibac9fcfc4bd0a2c5f624bb9d4a2b9f6459aa19ea
ReadSymbol() finishes with a VP8LSetBitPos() call only and could miss an eos_ during the decode loop.
Things are faster because of inlining too.
(cherry picked from commit d3242aee16e022f296ff985b5a17d653b8af0529)
Change-Id: I2d2a275f38834ba005bc767d45c5de72d032103e
eos_ needs to be set only when superfluous bits have actually
been requested.
Earlier, we were assuming pre-mature end-of-stream to be an error.
Now, more precisely, we mark error when we have encountered end-of-stream *and*
we attempt to read more bits after that.
This handles cases where image data requires no bits to be read
(cherry picked from commit a9decb5584dccf74e2fefd37cefc59d786834771)
Change-Id: I628e2c39c64f10c443fb51f86b1f5919cc9fd299
We only need to set BITSTREAM_ERROR if !ok.
(cherry picked from commit 3fea6a28dafe8b326b0e407bd36b22a72e32f8b0)
Conflicts:
src/dec/vp8l.c
Change-Id: I5bd13e64797e8bc509477edb29158abb39cb0ee1
if ALPHA_LOSSLESS_COMPRESSION produces a too big file (very rare!),
we fall-back to no-compression automatically.
(cherry picked from commit 187d379db68839f76d1390be291c471f2f66644c)
Change-Id: I5f3f509c635ce43a5e7c23f5d0f0c8329a5f24b7
force Sub3() to not be inlined, otherwise the code in Select() will be
incorrect.
https://android-review.googlesource.com/#/c/102511
(cherry picked from commit 637b3888090dea7d79aa51731186938f8f0edf4d)
Change-Id: I90ae58bf3e6cc92ca9897f69974733d562e29aaf
endian_inl.h already relies on dsp.h, grab the definitions from there.
(cherry picked from commit 8323a9038d3dcd722516f874a3310e16be5b10b2)
Change-Id: I445f7d0631723043c55da1070498f89965bec7b1
vtbl4_u8 is available everywhere except iOS arm64: use vtbl2q_u8 there
with a corresponding change in the load.
(cherry picked from commit 953acd56a413da79c5b7235e7839dc57d2e68430)
Change-Id: Ib84212dda3c7875348282726c29e3b79b78b0eac
rightmost pixel was missing a copy, which could lead to invalid read.
Also added a lower dimension of 4, below which we use the regular conversion.
This is to prevent corner cases, in addition to not being overkill.
(cherry picked from commit 2523aa73cb0aa337aaa5cd480a47a65476cdeb2c)
Change-Id: Iac12e7a3d74590f12fe8eeb1830b9891e61439f6
_M_IX86 will be defined in mingw builds after including windows.h. as
the gcc inline asm is first, this missing check would only have caused
an error if the code was reorganized.
(cherry picked from commit 3fca851a202e5b1018a2cc491b9e005913394afe)
Change-Id: I395679bcfc43e94d308d1ceb0c0fbf932b2c378c
with a special case for dithering==0., it gets somewhat faster on x86
thanks to inlining.
Also, less macros.
(cherry picked from commit e2a83d71091abc3e5177ee0ffc4ceb18c7714fab)
Change-Id: Ic2f2bf6718310743bb40cef2104fa759a073e6d5
New function: WebPPictureSmartARGBToYUVA()
This implement smart RGB->YUV conversion.
This is rather undocumented for now, and is triggered using '-pre 4'
preprocessing option.
This is slow-ish and use quite some memory, but should be improvable.
This is somehow a usable beta version.
(cherry picked from commit 3fc4c539aa00c325eba9ef8faec30ec241d71e9c)
Change-Id: Ia50a8c30134e4cab8a7d3eb70aef13ce1f6187a1
fix some indent/whitespace, remove a few duplicate includes, extra
semi-colons
(cherry picked from commit e300c9d8191db55e113f0aa8effc7a57c6219a41)
Change-Id: If937182b40a21e0f2028496e7b4b06c6e8a41352