Commit Graph

4406 Commits

Author SHA1 Message Date
Vincent Rabaud
0aba549eb6 Fix OOB write in BuildHuffmanTable.
First, BuildHuffmanTable is called to check if the data is valid.
If it is and the table is not big enough, more memory is allocated.

This will make sure that valid (but unoptimized because of unbalanced
codes) streams are still decodable.

Bug: chromium:1479274
Change-Id: I31c36dbf3aa78d35ecf38706b50464fd3d375741
(cherry picked from commit 902bc91903)
(cherry picked from commit 2af26267cd)
2023-09-07 18:13:52 -07:00
James Zern
7366f7f394 Merge "lossless: fix crunch mode w/WEBP_REDUCE_SIZE" into main 2022-07-21 16:27:38 +00:00
James Zern
84163d9d02 lossless: fix crunch mode w/WEBP_REDUCE_SIZE
WEBP_REDUCE_SIZE was introduced to bring down the library size by
removing cropping and scaling support. Previously WebPPictureView() was
only used with these two, but in
  ec178f2c Add progress hook granularity in lossless
an additional use was added in VP8LEncodeStream() when extra side
configurations are used in crunch mode (-mt, quality == 100 & method ==
6 or quality >= 75 & method == 5 with a palette present currently).

WebPPictureView() and, for coherency, WebPPictureIsView() are
restored in this configuration to avoid affecting the general encode
path.

Previously WebPPictureView() was assumed to always succeed in these
cases which could result in crashes with WEBP_REDUCE_SIZE defined.

Bug: chromium:1345547
Bug: chromium:1345595
Bug: chromium:1345772
Bug: chromium:1345804
Change-Id: Ifecde36a726a434510478a764514b1469942c684
2022-07-20 22:04:34 -07:00
James Zern
d01c1eb309 webp-lossless-bitstream-spec,cosmetics: normalize capitalization
in section headings

Change-Id: I43b2208f5e0efa32029d519ac9805e871eb51ed3
2022-07-20 10:36:23 -07:00
James Zern
8813ca8e69 libwebp-1.2.3
- 6/30/2022: version 1.2.3
   This is a binary compatible release.
   * security fix for lossless encoder (#565, chromium:1313709)
   * improved progress granularity in WebPReportProgress() when using lossless
   * improved precision in Sharp YUV (-sharp_yuv) conversion
   * many corrections to webp-lossless-bitstream-spec.txt (#551)
   * crash/leak fixes on error/OOM and other bug fixes (#558, #563, #569, #573)
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEaw5rcJdt4wPt8vYB+cPWvbgjK10FAmLR6rYACgkQ+cPWvbgj
 K13mwhAAmEqUPCxACgh1M7Tc6BfSkO0Q8FtUzm23/bYndf+t4+n3Oezxm7k5sldR
 OQUJfb9/pe+IegSpJHAOSL5ddTpQlSZfzj6glEHVkd346Ek+ZKzqLCZbWsTKO7xA
 xzv6BXLt49sA1jp62GWi5YyRZ4kQumjXKBxCCwGiaNEI8jd4D9Oduz8jzmRetGHS
 SPleaow7IlxMVgER6jnQZt+nyYGH7UMWI0CWLICRzefHqz+jzwm3GY+brWOPJBbx
 8zZGNmiDzxSOcD7Ce8C13+7EYuLw0GAN6seHa/Lk+y8+w3Eh5tyCp8Z4vHVN32Iv
 2mqXyOo9jgJudZPyMFEduFMUwMo2VmPwnVmQ+5REjfB5dpiFdngHUOoL6MFMNYN/
 +SIPy25mcVJFCYtXQ41FybwG6JfGiba8V6kC3dUedXRodBY/zv5Qw5kjjMe0qzlw
 ey6WO8L5i5LeiGvCJH1mq22JM1UWquNWb1icMsjCbp77QZCDLUH4MYQxJLOgUvoV
 GsX/q8X9kRKPQ3nbwoFGPUAkWd9kGfOd+awef1NENstT6L9eLGYNBmr/p70aYsYh
 G3XcRx/N68oV1zY+/2W//xL/09F/XzGaDIue0pSaXZFuCTcX7h2sKxHT8hodH+zh
 X1y6EY3ezR7ayi1rhfyc+vIw3oqDnX8+mat1xze73AAL5dERBeM=
 =dAgB
 -----END PGP SIGNATURE-----

Merge tag 'v1.2.3'

libwebp-1.2.3

- 6/30/2022: version 1.2.3
  This is a binary compatible release.
  * security fix for lossless encoder (#565, chromium:1313709)
  * improved progress granularity in WebPReportProgress() when using lossless
  * improved precision in Sharp YUV (-sharp_yuv) conversion
  * many corrections to webp-lossless-bitstream-spec.txt (#551)
  * crash/leak fixes on error/OOM and other bug fixes (#558, #563, #569, #573)

Bug: webp:568
Bug: b/230421671

* tag 'v1.2.3':
  update ChangeLog
  dsp/cpu.h: add missing extern "C"
  update ChangeLog
  vwebp: fix file name display in windows unicode build
  webpmux: fix -frame option in windows unicode build
  makefile.unix: add sharpyuv objects to clean target
  update NEWS
  bump version to 1.2.3
  update AUTHORS
  update .mailmap

Change-Id: I148041862bc930472e849d278471aa17ea12258b
2022-07-15 16:00:00 -07:00
James Zern
3c4a0fbfbc update ChangeLog
Change-Id: I6c00a2c32e94d886f749fc09e2bdd71acfeb5402
2022-07-15 12:48:16 -07:00
James Zern
56a480e80c dsp/cpu.h: add missing extern "C"
fixes linking of tests/fuzzer/animencoder_fuzzer on windows

Change-Id: I0bd14b0e8c7ecb261e861689c25cd4b7fdaecbfd
2022-07-08 15:44:39 -07:00
James Zern
62b45bddcd update ChangeLog
Bug: webp:568
Change-Id: Icdb0657f9d19ba85e6235c6ce9577afa23e0ce21
2022-07-07 15:23:40 -07:00
James Zern
8764ec7a07 Merge changes Idb037953,Id582e395 into 1.2.3
* changes:
  vwebp: fix file name display in windows unicode build
  webpmux: fix -frame option in windows unicode build
2022-07-07 22:18:26 +00:00
James Zern
bcb872c31f vwebp: fix file name display in windows unicode build
glutBitmapCharacter() isn't limited to 8-bit characters; add
PrintStringW() to iterate through the file name. This may not fix all
cases, non-existent characters in the font used have no effect.

https://www.opengl.org/resources/libraries/glut/spec3/node76.html#SECTION000111000000000000000

Change-Id: Idb0379539d556a89ec694127f766eb662f09d597
2022-07-05 12:59:06 -07:00
James Zern
67c44ac5db webpmux: fix -frame option in windows unicode build
-frame takes a file name parameter, use wargv[] like in other paths

Change-Id: Id582e395d3ff9b00bb7fcc0261b475211758f6d4
2022-07-05 11:48:56 -07:00
James Zern
8278825aac makefile.unix: add sharpyuv objects to clean target
Change-Id: Iad9ac2530bd892681c055e5ae1bf82eb8782d2a2
2022-07-05 10:41:14 -07:00
James Zern
14a49e018d update NEWS
Bug: webp:568
Change-Id: I0986c33910eba862ef6c1676d7dc58ea6df7ba3b
2022-06-30 19:30:31 -07:00
James Zern
34b1dc336d bump version to 1.2.3
libwebp{,decoder} - 1.2.3
libwebp libtool - 8.4.1
libwebpdecoder libtool - 4.4.1

mux - 1.2.3
libtool - 3.4.0

demux - 1.2.3
libtool - 2.10.0

Bug: webp:568
Change-Id: I943bae1b7eacb445f6a4e13123e63170ac8bb142
2022-06-30 19:30:31 -07:00
James Zern
0b397fda9d update AUTHORS
Bug: webp:568
Change-Id: I333e9679d1d9a9c33f94e214b7ab1723e063fe51
2022-06-30 19:30:27 -07:00
James Zern
c16488ac4a update .mailmap
Bug: webp:568
Change-Id: I34df01bf958ef9de87345e5e43034fafd185f42a
2022-06-30 19:29:53 -07:00
James Zern
5a2d929cd8 Merge "unicode.h: set console mode before using wprintf" into main 2022-07-01 01:03:01 +00:00
James Zern
169f867f3c unicode.h: set console mode before using wprintf
This fixes incorrect character display in the file name
in e.g., stats output from cwebp.exe in visual studio builds.

In mingw further changes will be needed as using %s in wfprintf() for
wchar_t pointers is a Microsoft extension that doesn't seem to be
supported with gcc -fms-extensions. %ls works, but will require updating
format strings and wrapping concatenations with TO_W_CHAR() as visual
studio will reject merging string constants of different width.

https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/setmode

Change-Id: I57d24c3815f7b5aa3971ac315c65c4458258d706
2022-06-29 22:05:26 -07:00
Maryla Ustarroz-Calonge
a94b855c54 Merge "libsharpyuv: add version defines" into main 2022-06-28 09:49:56 +00:00
Maryla
f83bdb5251 libsharpyuv: add version defines
Change-Id: I2dbe69d1ce5abaf7f5bd83daec99655520b5abad
2022-06-28 11:08:14 +02:00
James Zern
bef0d79764 unicode_gif.h: fix -Wdeclaration-after-statement
when building for windows with _UNICODE defined

unicode_gif.h|49 col 3| warning: ISO C90 forbids mixed declarations and
code [-Wdeclaration-after-statement]

Change-Id: Ib9f0cc0eba036d6cd4221a4f70a078770dde01d0
2022-06-20 11:40:09 -07:00
Jyrki Alakuijala
404c1622f8 Rename Huffman coding to prefix coding in the bitstream spec
... since no guarantee of Huffman coding can be introduced at decoding
time and encoding didn't actually use Huffman coding in the first place

Bug: webp:551
Change-Id: I400466bb3b4a1d5506353eb3f287d658603164ee
2022-06-16 10:56:03 -07:00
James Zern
8895f8a345 Merge "run_static_analysis.sh: fix scan-build archive path" into main 2022-06-16 17:27:52 +00:00
Maryla Ustarroz-Calonge
92a673d258 Merge "Add -fvisibility=hidden flag in CMakeLists." into main 2022-06-16 08:02:28 +00:00
James Zern
67c1d72239 Merge "add WEBP_MSAN" into main 2022-06-16 05:11:26 +00:00
Maryla
1124ff662d Add -fvisibility=hidden flag in CMakeLists.
This way, only functions marked with WEBP_EXTERN get exposed by the library.
This flag is already set in other build configs: configure.ac, makefile.unix,
Android.mk

Change-Id: Iafd8f160e539290e7ea46ceec764a090c6e626a9
2022-06-15 10:03:03 +02:00
James Zern
e15b356014 add WEBP_MSAN
and use it to suppress a false positive related to data that passes
through RGBA32PackedToPlanar_16b_SSE41(). Current versions (tested with
clang 13.0.1, using -O0 and the build from oss-fuzz of enc_dec_fuzzer)
model shuffles incorrectly reporting use of uninitialized
data related to the alpha change that's removed when converting to YUV.
valgrind behaves correctly, however.

Bug: webp:573
Change-Id: If76997668dcdd436adf280a2e6dcffba766a2875
2022-06-14 21:49:46 -07:00
Maryla
ec9e782a35 sharpyuv: remove minimum image size from sharpyuv library
libwebp still has a size threshold of 4 pixels in picture_csp_enc.c
but the sharpyuv library itself can handle any image size.

Change-Id: Ic1c78c8f8fae528395fa46a74f717f47cb13098e
2022-06-14 14:55:12 +02:00
James Zern
7bd07f3b5d run_static_analysis.sh: fix scan-build archive path
move any error reports to the top-level of OUTPUT_DIR rather than
BUILD_DIR

Change-Id: Icb6677c42a89ef86d9d295a27b79a8a591672b87
2022-06-13 16:17:42 -07:00
Maryla Ustarroz-Calonge
5ecee06f7a Merge "sharpyuv: increase precision of gamma<->linear conversion" into main 2022-06-02 08:30:18 +00:00
James Zern
f81dd7d63e Merge changes I3d17d529,I53026880,I1bd61639,I6bd4b25d,Icfec8fba into main
* changes:
  CMake: add src to webpinfo includes
  CMake: add WEBP_BUILD_WEBPINFO to list of checks for exampleutil
  CMake: add WEBP_BUILD_WEBPMUX to list of checks for exampleutil
  CMake: link imageioutil to exampleutil after defined
  WEBP_DEP_LIBRARIES: use Threads::Threads
2022-06-01 18:18:00 +00:00
Maryla
2d607ee646 sharpyuv: increase precision of gamma<->linear conversion
Change-Id: I261bae3628315bda4ec0dafb8798c7512dd03a36
2022-06-01 15:38:44 +02:00
Maryla
266cbbc511 sharpyuv: add 32bit version of SharpYuvFilterRow.
This allows increasing intermediate value precision from 10 bits to 14 bits.

Change-Id: I0fc33400d200a849bcc2c677ab8346215a9dbc3b
2022-06-01 13:42:29 +02:00
Christopher Degawa
9fc12274ce
CMake: add src to webpinfo includes
Fixes an include error with webp/types.h

Signed-off-by: Christopher Degawa <ccom@randomderp.com>
Change-Id: I3d17d529c904cdb4e5c8ae630e89ed3789791e79
2022-05-31 20:46:21 -05:00
Christopher Degawa
7d18f40ac1
CMake: add WEBP_BUILD_WEBPINFO to list of checks for exampleutil
Signed-off-by: Christopher Degawa <ccom@randomderp.com>
Change-Id: I530268809468107fe29e0f04278791fe7c583208
2022-05-31 17:45:32 -05:00
Christopher Degawa
11309aa54c
CMake: add WEBP_BUILD_WEBPMUX to list of checks for exampleutil
Signed-off-by: Christopher Degawa <ccom@randomderp.com>
Change-Id: I1bd6163966d8cec9fc240fa46d41605f11d0c1ac
2022-05-31 17:45:30 -05:00
Christopher Degawa
4bc762f729
CMake: link imageioutil to exampleutil after defined
Signed-off-by: Christopher Degawa <ccom@randomderp.com>
Change-Id: I6bd4b25d31a85839aadef57437faa04966085f52
2022-05-31 17:11:20 -05:00
Christopher Degawa
0d1b9bc433
WEBP_DEP_LIBRARIES: use Threads::Threads
Signed-off-by: Christopher Degawa <ccom@randomderp.com>
Change-Id: Icfec8fba117cbf5668c6f4c7d46d05cbb17e3dea
2022-05-31 17:09:09 -05:00
Maryla Ustarroz-Calonge
20ef48f05a Merge "sharpyuv: add support for 10/12/16 bit rgb and 10/12 bit yuv." into main 2022-05-24 11:05:08 +00:00
Maryla
93c5437115 sharpyuv: add support for 10/12/16 bit rgb and 10/12 bit yuv.
10bit+ input is truncated to 10bits for now.

Change-Id: I7ac00ca54c623d94c76ccd8954418e11095997d2
2022-05-23 20:48:44 +02:00
James Zern
53cf2b4997 normalize WebPValidatePicture declaration w/definition
quiets a warning under visual studio:
src\enc\picture_enc.c(48) : warning C4028: formal parameter 1 different
from declaration

Change-Id: Ic3affbbb0e22ac8c43fa183e13506eee72e180dc
2022-05-17 09:46:51 -07:00
Maryla
d3006f4b96 sharpyuv: slightly improve precision
- Remove SHALF constant so that we get back the original value when
  calling UpScale then downscale with rounding
- Make the linear->gamma precomputed table bigger (8 bits rather than 5)
- Round values in kLinearToGammaTabS

Change-Id: Ic9634d32cf93de321d2f6e9e4cad7f156d8d07df
2022-05-17 10:36:44 +02:00
James Zern
ea967098a4 Merge changes Ia01bd397,Ibf3771af into main
* changes:
  Add an internal WebPValidatePicture.
  Some renamings for consistency.
2022-05-16 17:49:04 +00:00
James Zern
11bc8410bd Merge changes I2d317c4b,I9e77f6db into main
* changes:
  webp-lossless-bitstream-spec,cosmetics: normalize range syntax
  webp-lossless-bitstream-spec,cosmetics: fix code typo
2022-05-16 17:17:22 +00:00
Vincent Rabaud
30453ea4e6 Add an internal WebPValidatePicture.
Change-Id: Ia01bd3975f7bd0d47eb0a1764807baed16f0d268
2022-05-16 17:37:20 +02:00
Vincent Rabaud
6c43219a5f Some renamings for consistency.
- pic->picture in public header
- match implementation to declaration in PictureImport, WebPPictureRescale, WebpBlendAlpha

Change-Id: Ibf3771af22d671bba6fd657684add618c6f32978
2022-05-16 17:33:49 +02:00
James Zern
4f59fa7390 update .mailmap
Change-Id: I246d84d735bc0efada544a9051ddcb3c3a7ceabf
2022-05-14 20:57:41 -07:00
James Zern
e74f8a62b2 webp-lossless-bitstream-spec,cosmetics: normalize range syntax
[N, M] -> [N..M] the latter is more common in this doc

Bug: webp:551
Change-Id: I2d317c4b8bb31d313123e981f93cd1feb346a98a
2022-05-14 20:51:43 -07:00
James Zern
5a709ec0d7 webp-lossless-bitstream-spec,cosmetics: fix code typo
code_lengths -> code_length_code_lengths
after:
86f94ee0 Update lossless spec with Huffman codes.

Bug: webp:551
Change-Id: I9e77f6db0fca6fe8294cb31a3015e723050094b5
2022-05-14 20:51:34 -07:00
James Zern
a2093acc4b webp-lossless-bitstream-spec: add amendment note
for recent changes to color transform, simple code length code, image
structure and details of decoding prefix codes

Bug: webp:551
Change-Id: I36a4d1ee3e25b8a56f5d926f4770374ace99bc2f
2022-05-13 18:50:55 -07:00