This prevents the 'alpha-leak' reported in issue #220
Speed-diff is kept minimal.
(cherry picked from commit c792d4129a)
Change-Id: I1976de5e6de7cfcec89a54df9233c1a6586a5846
For some GIF images, the first frame is missing the corresponding
graphic control extension. For such cases, we were never calling
GetBackgroundColor(), and default background color value (white) was being used
incorrectly.
So, we call GetBackgroundColor() when we encounter the first image
descriptor instead, to make sure that it is always called.
(cherry picked from commit 0cc811d7d6)
Change-Id: I00fc8e943d8a0c1578dcd718f3e74dec7de4ed61
This is the opposite of WebPDispatchAlpha
+ Implement the SSE2 version
(cherry picked from commit cddd334050)
Conflicts:
src/dsp/alpha_processing_sse2.c
Change-Id: I0c297309255f508c5261da8aad01f7e57f924d6c
put WebPMuxConfig on the stack in main() rather than allocating it in
InitializeConfig(); removes a level of indirection there.
(cherry picked from commit c0a462cac2)
Change-Id: I81d386f7472ebbd322dd3fdbfda9d78dbeb62a66
explicitly check [0, 65535], the use of 'long' was removed in a prior
commit
(cherry picked from commit 0e23c487da)
Change-Id: I70d5bf286908459b5d4d619c657853f0e833b6ea
use --ldflags over --prefix + --libs combination
based on comment in issue #180.
(cherry picked from commit be70b86c57)
Change-Id: If2ca06053d5237b6722ddf4117917e5f3c06ab59
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 e0a9932161)
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 d3242aee16)
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 a9decb5584)
Change-Id: I628e2c39c64f10c443fb51f86b1f5919cc9fd299
We only need to set BITSTREAM_ERROR if !ok.
(cherry picked from commit 3fea6a28da)
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 187d379db6)
Change-Id: I5f3f509c635ce43a5e7c23f5d0f0c8329a5f24b7
endian_inl.h already relies on dsp.h, grab the definitions from there.
(cherry picked from commit 8323a9038d)
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 953acd56a4)
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 2523aa73cb)
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 3fca851a20)
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 e2a83d7109)
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 3fc4c539aa)
Change-Id: Ia50a8c30134e4cab8a7d3eb70aef13ce1f6187a1
fix some indent/whitespace, remove a few duplicate includes, extra
semi-colons
(cherry picked from commit e300c9d819)
Change-Id: If937182b40a21e0f2028496e7b4b06c6e8a41352
the ABI wasn't bumped with this addition, but it's more correct to say
it was added with 0x0205 rather than 0x0204
Change-Id: I2ba12a33b612fac16bdfeb8272e76b0ea84f3938
this function was introduced in 0x0204; fix checks related to this to be
> 0x0203 instead of 0x0202, pointed out on ffmpeg-devel.
Change-Id: I52cd2b98304baf1eb9a83094e2374f2120a1546b
explicitly set '-O3 -DNDEBUG'. setting CFLAGS on the command line
overrides the default, resulting in -O0.
Change-Id: I213979f646b1444b1d8e0eb0bb58e9b2c3cc4dd3
* try to avoid trailing '.'
* rationalize capitalization
missed in:
0a8b886 dust up the help message
Change-Id: I6f80736cc8a2ff4f185f63d463a57d5bbf88a0db