Commit Graph

4291 Commits

Author SHA1 Message Date
Vincent Rabaud
801d2be12d 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-08 19:25:32 -07:00
James Zern
20ef03ee35 GetBackwardReferences: fail on alloc error
previously failures in the call to
VP8LBackwardReferencesTraceBackwards() would be ignored which, though it
wouldn't result in a crash, would produce non-deterministic output

Change-Id: Id9890a60883c3270ec75e968506d46eea32b76d4
(cherry picked from commit e3cfafaf71)
2022-04-06 21:49:02 -07:00
James Zern
dd80bb4343 BackwardReferencesHashChainDistanceOnly: fix segfault on OOM
change CostManager to calloc to avoid frees on undefined pointer
values in CostManagerClear() should the cost_model allocation succeed,
but the cost_manager allocation fail

since:
v0.5.0-93-g3e023c17 Speed-up BackwardReferencesHashChainDistanceOnly.

Tested:
for i in `seq 1 639`; do
  export MALLOC_FAIL_AT=$i
  ./examples/cwebp -m 6 -q 100 -lossless jpeg_file
done

Bug: webp:565
Change-Id: I376d81e6f41eb73529053e9e30c142b4b4f6b45b
(cherry picked from commit a828a59b49)
2022-04-06 21:49:02 -07:00
James Zern
ddd65f0d19 VP8LEncodeStream: fix segfault on OOM
initialize bw_side before calling EncoderAnalyze() & EncoderInit() which
may fail; previously this would cause a free of an invalid pointer in
VP8LBitWriterWipeOut().

since at least:
v0.6.0-120-gf8c2ac15 Multi-thread the lossless cruncher.

Tested:
for i in `seq 1 639`; do
  export MALLOC_FAIL_AT=$i
  ./examples/cwebp -m 6 -q 100 -lossless jpeg_file
done

Bug: webp:565
Change-Id: I1c95883834b6e4b13aee890568ce3bad0f4266f0
(cherry picked from commit fe153fae98)
2022-04-06 21:48:55 -07:00
James Zern
30956e3aaa alpha_processing_neon.c: fix 0x01... typo
one instance was overlong leading to a int64->uint32 conversion warning

Change-Id: I56d5ab75d89960c79293f62cd489d7ab519bbc34
(cherry picked from commit 03d1219055)
2022-03-08 19:36:12 +00:00
James Zern
64848839c0 alpha_processing_neon.c: fix Dispatch/ExtractAlpha_NEON
the trailing width % 8 bytes would clear the upper bytes of
alpha_mask as they're done one at a time

since:
49d0280d NEON: implement several alpha-processing functions

Change-Id: Iff76c0af3094597285a6aa6ed032b345f9856aae
(cherry picked from commit 924e7ca654)
2022-03-03 18:03:29 +00:00
Vincent Rabaud
b79a8421b8 Fix lossless encoding for MIPS.
Bug: webp:558
Change-Id: I3d3ddb64ed26a8d8ff5664664c5f20f6eadfeb4f
(cherry picked from commit e4cbcdd2b5)
2022-03-02 02:55:26 +00:00
James Zern
69c7f16111 dsp.h: bump msvc arm64 version requirement to 16.6
there was a bug in 16.4 causing compile failures with vtbl4_u8():

src\dsp\lossless_neon.c(105): error C2143: syntax error: missing ')'
before '{'
src\dsp\lossless_neon.c(105): error C2168: 'neon_tbl2_q8': too few
actual parameters for intrinsic function

https://developercommunity.visualstudio.com/t/cannot-compile-arm64-neon-vtbl4-u8-function-in-c-f/859331

Change-Id: I87c21850b3c597aa5cb41a8105b81e2135a9f890
(cherry picked from commit 4074acf873)
2022-01-20 18:47:51 +00:00
James Zern
b0a860891d update ChangeLog
Change-Id: I8a18162a178f1686cc8359ce48d90c1c7f65ec91
2022-01-19 15:35:26 -08:00
Yannis Guyon
6db8248c01 libwebp: Fix VP8EncTokenLoop() progress
Encoding the image found in the user bug report below would result in
a progress rising up to 173% because of the extra 20% caused by each
of the 4 extra lossy passes. It happened at methods 3 to 6.

https://groups.google.com/a/webmproject.org/g/webp-discuss/c/yOiP8APubgc/m/FP3r5X2rDAAJ

Change-Id: I95318d0dc4df546044eb926c786c04bb7f915cbe
(cherry picked from commit db25f1b4ed)
2022-01-19 18:07:42 +00:00
Pascal Massimino
827a307fec BMP enc: fix the transparency case
When transparency is present, it's not enough to just write 32bpp samples.
One need to use the full BITMAPV3INFOHEADER syntax and specify the
masks for BGRA.

 see https://en.wikipedia.org/wiki/BMP_file_format#Pixel_storage

Also remove the height-flip trick and write samples bottom-to-top instead.

Change-Id: If5d92c11453b96764b5bfbf19e9678e632bc911f
(cherry picked from commit 480cd51de6)
2022-01-19 18:07:17 +00:00
Yannis Guyon
286e7fceaa libwebp: do not destroy jpeg codec twice on error
WebPPictureImportRGB() can fail on memory allocation. In this case,
jpeg_destroy_decompress() was already called, so do not go to Error.
Free metadata as an error is returned.

Change-Id: I045b072090e9063d3ad10369ad18b0f08bdffe9f
(cherry picked from commit 6e8a4126f2)
2022-01-17 18:47:10 +00:00
James Zern
9195ea0538 update ChangeLog
Bug: webp:541
Change-Id: I6cfb9da3a3944f66efa681cffec7f3e6a84c8800
2022-01-11 18:46:37 -08:00
James Zern
4acae017bd update NEWS
Bug: webp:541
Change-Id: I529210f8ecaa8f2e9a6fae2518ba71f7fd56a701
2022-01-11 18:45:55 -08:00
James Zern
883f063397 man/img2webp.1: update date
after:
a80954a1 Reword img2webp synopsis command line

Change-Id: I0a5c18f7947d15fcd66dc32fab9b525186f7fcc5
(cherry picked from commit 1b0c15db02)
2022-01-11 02:03:24 +00:00
Yannis Guyon
567e1f442b Reword img2webp synopsis command line
See https://bugs.chromium.org/p/webp/issues/detail?id=549

Change-Id: I75562d2ad021d8ec107eb4ced5b28e0abf373324
(cherry picked from commit a80954a1d9)
2022-01-11 02:02:57 +00:00
James Zern
f084244d9f anim_decode: fix alpha blending with big-endian
images are decoded in RGBA/BGRA, but represented as uint32_t during the
blend process; this fixes the channel extraction

Bug: webp:548
Change-Id: Ie74aa43d8f87d3552d5afc0abba466335f5d1617
(cherry picked from commit e4886716d3)
2021-12-23 14:49:14 +00:00
James Zern
b217b4fff7 webpinfo: fix fourcc comparison w/big-endian
store the recognized fourccs in little-endian order to match how the
fourcc is being read from the file

Bug: webp:548
Change-Id: I9de77db92208709d5e711846908a51e563102fa5
(cherry picked from commit e3cb052ca5)
2021-12-23 14:48:19 +00:00
James Zern
f035d2e40d update ChangeLog
Bug: webp:541
Change-Id: Icd9d0bf1a011263108e899b561f7c8e93dc93e2f
2021-12-15 15:43:43 -08:00
James Zern
7031946ad8 update NEWS
Change-Id: Id53e61bfb1551b04fe57fd095aa7ef860f60b248
2021-12-14 22:00:58 -08:00
James Zern
973390b618 bump version to 1.2.2
libwebp{,decoder} - 1.2.2
libwebp libtool - 8.3.1
libwebpdecoder libtool - 4.3.1

mux - 1.2.2
libtool - 3.8.0

demux - 1.2.2
libtool - 2.9.0

Bug: webp:541
Change-Id: Ia9adda28f0320714335156552d0f5b563e1babb6
2021-12-14 19:58:29 -08:00
James Zern
abd6664fee update AUTHORS
Bug: webp:541
Change-Id: I270b606a16d72dd5012253d932905375692b8eb7
2021-12-14 19:52:01 -08:00
James Zern
5b7e79303a Merge "add missing USE_{MSA,NEON} checks in headers" into main 2021-12-14 23:39:18 +00:00
jzern@google.com
02ca04c348 add missing USE_{MSA,NEON} checks in headers
msa_macro.h
neon.h

allows the headers to be built / analyzed under different target
configurations

Change-Id: Ibbcfada210b54988aa5279674d53af8e21fd4a97
2021-12-14 22:21:57 +00:00
James Zern
e94716e27c xcframeworkbuild.sh: place headers in a subdir
Headers/<framework> rather than Headers/ to avoid a Xcode error when
using multiple frameworks:
  error: Multiple commands produce
    '.../Build/Products/Debug-iphoneos/include/types.h'

WebPMux.xcframework/ios-arm64_i386_x86_64-simulator/Headers/WebPMux
WebPMux.xcframework/ios-arm64_armv7_armv7s/Headers/WebPMux
WebPMux.xcframework/macos-arm64_x86_64/Headers/WebPMux
WebPMux.xcframework/ios-arm64_x86_64-maccatalyst/Headers/WebPMux
WebPDecoder.xcframework/ios-arm64_i386_x86_64-simulator/Headers/WebPDecoder
WebPDecoder.xcframework/ios-arm64_armv7_armv7s/Headers/WebPDecoder
WebPDecoder.xcframework/macos-arm64_x86_64/Headers/WebPDecoder
WebPDecoder.xcframework/ios-arm64_x86_64-maccatalyst/Headers/WebPDecoder
WebPDemux.xcframework/ios-arm64_i386_x86_64-simulator/Headers/WebPDemux
WebPDemux.xcframework/ios-arm64_armv7_armv7s/Headers/WebPDemux
WebPDemux.xcframework/macos-arm64_x86_64/Headers/WebPDemux
WebPDemux.xcframework/ios-arm64_x86_64-maccatalyst/Headers/WebPDemux
WebP.xcframework/ios-arm64_i386_x86_64-simulator/Headers/WebP
WebP.xcframework/ios-arm64_armv7_armv7s/Headers/WebP
WebP.xcframework/macos-arm64_x86_64/Headers/WebP
WebP.xcframework/ios-arm64_x86_64-maccatalyst/Headers/WebP

Bug: webp:542
Change-Id: Ic7e03d85d2119597e422b9cf68b3ac5a892d494d
2021-12-10 19:44:36 -08:00
Roberto Alanis
c846efd888 patch-check: commit subject length check
Change-Id: I7a1c7349f4f461c2384cbd1a62d1aa2e4e3be819
Bug: b:185520507
2021-12-08 18:57:13 +00:00
James Zern
b6f756e82b update http links
- prefer https

- metadataworkinggroup.org/com seem to be offline; the web archive link
  was obtained from exiftool: https://exiftool.org/TagNames/MWG.html

- fix kramdown link, rubyforge has been gone a long time

- fix png/zlib links

Bug: webp:544
Bug: b/202302177
Change-Id: Id69de4553e7baf00393f12a2c1acb262443a1a93
2021-11-23 10:13:40 -08:00
James Zern
8f5cb4c18e update rfc links
to https://datatracker.ietf.org/doc/html/... the http tools.ietf.org
links redirect here sometimes, in other cases they 404.

Bug: webp:544
Change-Id: I900972070d6c5659c45a86a89e78b870f42fe5bc
2021-11-17 11:03:35 -08:00
Pascal Massimino
8ea81561d2 change VP8LPredictorFunc signature to avoid reading 'left'
... when it's not available. Even if the value was discarded and
never used, some msan config were complaining about reading it
and passing it around.

Change-Id: Iab8d24676c5bb58e607a829121e36c2862da397c
2021-11-05 16:22:31 +01:00
Pascal Massimino
6b1d18c362 webpmux: fix the -bgcolor description
Change-Id: Iedb1865aec7b8c78c185a0eb17d97a5c9446a275
2021-11-04 22:51:48 +01:00
Pascal Massimino
3368d8768a Merge "webpmux: add "-set bgcolor A,R,G,B"" into main 2021-11-04 19:00:36 +00:00
Pascal Massimino
f213abf620 webpinfo: print the number of warnings
otherwise they can go un-noticed (unless you use -diag).

Change-Id: Ic6faaf09e7993002cdae3e998623764fde860351
2021-11-04 17:09:51 +01:00
Pascal Massimino
50c97c301d webpmux: add "-set bgcolor A,R,G,B"
Similarly to "-set loop <>", this is useful to set
the parameter at global level and not just while assembling
the frames separately.

Change-Id: I79bcbe37f8ff50b9904e78d14011ccbac72f17a1
2021-11-04 15:45:44 +00:00
Roberto Alanis
2c206aaf96 Remove CMakeLists.txt check in compile.sh
Bug: b:185520507
Change-Id: Id573423a9f6960360b9d96950c098ba488e2e9f3
2021-11-02 20:37:11 +00:00
James Zern
96e3dfef26 Merge "infra/common.sh: add shard_should_run()" into main 2021-10-29 17:08:33 +00:00
James Zern
0e0f74b7e3 infra/common.sh: add shard_should_run()
Detects whether test block should be run in the current test shard.

if shard_should_run; then
 ...
fi

Bug: b/185520507
Change-Id: I408d226651630a01c5e447dbff7d26b73426ce42
2021-10-28 17:13:11 -07:00
Roberto Alanis
35b7436a21 Jenkins scripts port: update shell function comments
Review function comments style.
https://google.github.io/styleguide/shellguide.html#function-comments

Change-Id: I8c557fd6cb653744d93c28cd28caeef3e4bf10bc
Bug: b:185520507
2021-10-28 01:17:52 +00:00
James Zern
21d24b4c08 webp-container-spec.txt: remove 'experimental' markers
unknown chunks as a group are well defined in the text

+ remove the Note about stable features as it matched the list given;
there are no WIP features for the format

Change-Id: I11a4de39f9d203b815879f0e9dea9c45b2ae6ff6
2021-10-22 12:17:59 -07:00
Roberto Alanis Baez
cdcf89020e Merge "Port Jenkins script: compile" into main 2021-10-22 04:41:53 +00:00
Roberto Alanis
dc683cdef5 Jenkins scripts port: static analysis
From https://build.webmproject.org/jenkins/view/webp/job/libwebp__static_analysis/

Change-Id: I87846e14351632915a17ee086256dfebdbd656c9
Bug: b:185520507
2021-10-21 00:54:44 +00:00
Roberto Alanis
0858494e96 Port Jenkins script: compile
https://build.webmproject.org/jenkins/view/webp/job/libwebp__compile/

Change-Id: I646e3048cf4e3d8672b66838e31c7ccc53ced60f
Bug: b:185520507
2021-10-21 00:46:57 +00:00
Roberto Alanis
c2cf6a93b0 Jenkins scripts port: android compilation
Port script from https://build.webmproject.org/jenkins/job/libwebp__compile_android/
Change-Id: I4b3f7f15990b5c92971ec5faccc82dca815f92d2
Bug: b:185520507

Change-Id: Ic07f8191db7726e459ee56c04bf6e3776b30b1f7
2021-10-13 18:44:55 +00:00
Roberto Alanis
df0e808fed presubmit: Add pylint-2.7 and .pylintrc
Added files to skip to prevent lint over generated code.

Change-Id: I62de5ec4fa7b6d764df1d8671c0263f668904e52
Bug: b:185520507
2021-10-12 01:01:14 +00:00
Roberto Alanis
676c57dba4 patch-check: shfmt
shfmt is expected to be installed along with go.
GO111MODULE=on go install mvdan.cc/sh/v3/cmd/shfmt@latest

Change-Id: I27004e72f79f71df9405158f77df485f43b028bb
Bug: b:185520494
2021-10-08 05:05:01 +00:00
Roberto Alanis
7bb7f7474e patch-check: Add shellcheck
Shellcheck is expected to be installed because depot_tools does not
provide the tool.

Change-Id: I9c8793cf7e2adedcb1e9f8244b886d6f2a54e2ae
Bug: b:185520494
2021-10-04 23:43:11 +00:00
Roberto Alanis
abcd1797a1 Reformat docstrings and imports
Change-Id: Ie96a21779000a67c272f5e06d2bc11a64b4883f5
Bug: b:185520494
2021-10-04 23:42:35 +00:00
Roberto Alanis
edaf08952d Port Jenkins scripts: compile js
Change-Id: I6d66de114758adccab782870e29a09b66a930ebc
Bug: b:185520507
2021-09-23 22:51:47 +00:00
James Zern
b96220636b Set CheckPatchFormatted flags to fail on diffs
Change-Id: Ifb826860e27139bc43b4411575e4c2bebcc81239
Bug: b:185520494
2021-09-22 22:44:21 +00:00
James Zern
e23cd5481c dsp.h: enable NEON w/VS2019+ ARM64 targets
Visual Studio added ARM64 support, but requires arm64_neon.h to be
included rather than arm_neon.h. Visual Studio 2019 addressed this so
we'll start with that version and leave a local adapter include for a
follow up.

Bug: webp:539
Change-Id: If975c029dafffba99210b3bb2d670035a83e8105
2021-09-13 19:56:19 -07:00
James Zern
3875c7de07 CMakeLists.txt: set minimum version to 3.7
cmake/cpu.cmake (at least) requires 3.7 due to its use of GREATER_EQUAL:
https://cmake.org/cmake/help/latest/release/3.7.html

Bug: webp:538
Change-Id: I63511226a593218e1f4d3b1a7c4c998de3ba2ae1
2021-08-31 13:21:46 -07:00