Commit Graph

3800 Commits

Author SHA1 Message Date
Pascal Massimino
57d8de8a79 Merge "vwebp_sdl: simple viewer based on SDL" 2017-02-03 09:43:57 +00:00
Vincent Rabaud
5cfd4ebc5e LZ77 interval speedups. Faster, smaller, simpler.
The initial re-writing of this part of the code with intervals
had to be done with a complex logic (mostly intervals with a
lower and upper bound, not a constant value like now) to properly
deal with the inefficiencies of the then LZ77 algorithm.
The improvements made to LZ77 since, now allow for a simpler logic.

There were also small errors in the interval insertion logic
that lead to small inefficiencies (hence a slightly better
compression rate).

Change-Id: If079a0cafaae7be8e3f253485d9015a7177cf973
2017-02-02 11:51:30 +01:00
Pascal Massimino
1e7ad88b85 PNM header decoder: add some basic numerical validation
see spec: http://netpbm.sourceforge.net/doc/ppm.html

Change-Id: I55e01f8cec79f9124e72d5f3d05be4ad0deae315
2017-02-01 15:03:11 +01:00
Pascal Massimino
17c7890cba Merge "Add a decoder only library for WebP in CMake." 2017-02-01 12:49:32 +00:00
Pascal Massimino
be73378684 Merge "Add clang build fix for MSA" 2017-02-01 12:43:09 +00:00
Vincent Rabaud
03cda0e494 Add a decoder only library for WebP in CMake.
Other libraries are also cleaned to automatically read the Makefile.am.
Dependencies also got cleaned.

Change-Id: I5d1ff0a4010d59e8c929ed0c9c30c05d83c271f8
2017-02-01 13:32:15 +01:00
Parag Salasakar
aa893914fc Add clang build fix for MSA
Change-Id: If139f4ecbdce756c69ba4ae032a70f81179683f8
2017-02-01 17:45:17 +05:30
Pascal Massimino
31a92e972e Merge "imageio: add limited PNM support for reading" 2017-02-01 10:49:57 +00:00
Pascal Massimino
dcf9d82a95 imageio: add limited PNM support for reading
see: http://netpbm.sourceforge.net/

Only reads P5 and P6 pnm files for now.

Change-Id: I2332a623f803df67455047f570f1cff9f464480a
2017-02-01 07:41:56 +00:00
Pascal Massimino
6524fcd614 vwebp_sdl: simple viewer based on SDL
Uses WebPToSDL() generic function defined in vwebp_sdl.[ch].
This function is not included in the libextras library, because it
would bring in an SDL dependency. Probably too heavy for now.

WebPToSDL() is separate, because it will be called used by the javascript
version of libwebp (through emscripten build rules)

Change-Id: Ic85b36f8ce4784f46023656278f6480be6802834
2017-01-31 10:23:03 +01:00
James Zern
6cf24a247d get_disto: fix reference file read
previously this was reading the first file a second time, since:
b0450139 ReadImage(): restore size reporting

BUG=webp:329

Change-Id: Ie75192e36a06102b7617841768a18d4dfb02d1f5
2017-01-30 18:45:29 -08:00
James Zern
43d472aa18 libwebp-0.6.0
- 1/26/2017: version 0.6.0
   * lossless performance and compression improvements
   * miscellaneous performance improvements (SSE2, NEON, MSA)
   * webpmux gained a -duration option allowing for frame timing modification
   * new img2webp utility allowing a sequence of images to be converted to
     animated webp
   * API changes:
     - libwebp:
       WebPPictureSharpARGBToYUVA
       WebPPlaneDistortion
     - libwebpmux / gif2webp:
       WebPAnimEncoderOptions: kmax <= 0 now disables keyframes, kmax == 1
                               forces all keyframes. See mux.h and the gif2webp
                               manpage for details.
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJYj9JHAAoJEPnD1r24IytdRHIP/2JWmd7BEjGgkozxm6l38SAM
 snyyPvorXQ20Qi9fnyfOFZP3fMB8i9YkaZgEDGLAqWgvtVEHKr6ZdwYquXDz9HCb
 GUGWlBEPiNrGKAQ2jJvdIT4yO8AEz7Y8UZwdPNDY1W05qI6XKRxsjtyeadFRQwku
 h4x+zP0M0ubrUkfq/rlnB9eITCf00fNBRb9AlkQAlbqh6GlZ9Jum142VsZRAlcLA
 lo3d4Q7GsVTDrILXXfDj+LsyKeyFDujnlG2ZxvOTHvtgEiKX3LT8Q/AfpF9IRc3a
 KJykMw9NZH1QHvIpTRF1J9SwtGkrBAoEbolp20cMJ/gV6348NsIDQsDskuA2LwlL
 62JmxArXFTrJ76g/s7xCu1zL/+znCs5uH4xBh9HTqnWSL6iPH3uok/eVK0aq4A+L
 7qAi9UWlKqTLgmUkg4Fibi3fWBPrp/fCAQmWB+tWL+QdPs70wyYennbHTvjG0t9I
 mOwfLuPsJoIaurg2s/RU4fWSNBJWEAUQbiDijUosrlFfgUZhSofNek+yaD2bYZ3m
 A23Pkmmlpcu3vzvd6mUFft2sPGXT+VkN6jiiVUY6rQDSMxW8akccGaRmHZIPplcp
 2KOAlHtSuyrc+xa/MutHCjIrPc87JKxyudugeSx+yl0TGWdMS6BKBFD7kcWDvFxM
 +fbS0q3776P7TZc7jzYd
 =LHmo
 -----END PGP SIGNATURE-----

Merge tag 'v0.6.0'

libwebp-0.6.0

- 1/26/2017: version 0.6.0
  * lossless performance and compression improvements
  * miscellaneous performance improvements (SSE2, NEON, MSA)
  * webpmux gained a -duration option allowing for frame timing modification
  * new img2webp utility allowing a sequence of images to be converted to
    animated webp
  * API changes:
    - libwebp:
      WebPPictureSharpARGBToYUVA
      WebPPlaneDistortion
    - libwebpmux / gif2webp:
      WebPAnimEncoderOptions: kmax <= 0 now disables keyframes, kmax == 1
                              forces all keyframes. See mux.h and the gif2webp
                              manpage for details.

* tag 'v0.6.0':
  update ChangeLog
  extras/Makefile.am: fix libwebpextras.la reference
  update ChangeLog
  update NEWS
  update AUTHORS
  Fix "all|no frames are keyframes" settings.
  disable GradientUnfilter_NEON
  img2webp: treat -loop as a no-op w/single images
  ReadImage(): restore size reporting
  update ChangeLog
  img2webp,get_disto: fix image decode w/WIC builds
  get_disto: make ReadPicture() return a bool
  update NEWS
  man/img2webp.1: fix formatting warning
  update NEWS
  bump version to 0.6.0
  update AUTHORS

Change-Id: I682fd7821ad51174e4772d84a4445e58d0cebd22
2017-01-30 16:20:52 -08:00
James Zern
50d1a848bc update ChangeLog
Change-Id: Ibaa88480519114b8f36f96c51d44b5c3b8a6433d
2017-01-30 12:23:57 -08:00
James Zern
20a7fea064 extras/Makefile.am: fix libwebpextras.la reference
drop './' from the reference in webp_quality_LDADD.. this form is used
in the other makefiles. this fixes a parallel build failure seen under
freebsd:
make[1]: don't know how to make ./libwebpextras.la. Stop

Change-Id: I59635a0c747d402cd990f6379eb1948c3e40f278
2017-01-28 13:33:07 -08:00
James Zern
415f3ffe3d update ChangeLog
Change-Id: Id1788367319e8476b79a5221af32c8068bba78e4
2017-01-26 23:09:25 -08:00
James Zern
3c6d1224b4 update NEWS
Change-Id: Id0ecf4abd657c2e0c97abe28fc3cca4ab7bc625b
2017-01-26 22:47:46 -08:00
James Zern
ee4a4141f5 update AUTHORS
Change-Id: I86b80411f50f5b112da54236aedd4d9ac005f8a5
2017-01-26 22:41:09 -08:00
Jehan
32ed856f60 Fix "all|no frames are keyframes" settings.
Documentation says: "if kmin == 0, then key-frame insertion is disabled;
and if kmax == 0, then all frames will be key-frames."
Reading this, you'd expect that if kmax == 0, then with any kmin <= 0
all frames will be key-frames. But actually the kmin <= 0 test is caught
first and you get the opposite (no keyframes but the first). You'd have
instead to set kmax == 0 and any value kmin > 0, which is absolutely
counter-intuitive (reversing order).
Moreover kmax == 1 has no valid kmin (kmin == 1 conflicts with the
`kmax > kmin` rule and kmin == 0 conflicts with `kmin >= kmax / 2 + 1`).
So it should be considered an exception too.

Instead I propose this new logic:
- kmax == 1 means that all frames are keyframes (you are explicitly
  requesting a keyframe every 1 frame at most, i.e. all frames).
- kmax == 0 means no keyframes (you ask for a keyframe every 0 frames,
  i.e. never).
This is more "logical" language-wise, and also does not involve any
conflicts about what if both kmax and kmin are 0, since now a single
property value is meaningful for the 2 exceptional cases.

Change-Id: Ia90fb963bc26904ff078d2e4ef9f74b22b13a0fd
(cherry picked from commit 2dc0bdcaee)
2017-01-26 22:31:16 -08:00
James Zern
1c3190b6ed Merge "Fix "all|no frames are keyframes" settings." 2017-01-27 00:02:04 +00:00
Pascal Massimino
f4dc56fd77 disable GradientUnfilter_NEON
Compile with XCode, it appears quite slower than the C-version,
especially for arm64.

Change-Id: Ic46dba184a36be454fef674129d2f909003788fc
(cherry picked from commit 4f3e3bbd44)
2017-01-25 20:30:15 -08:00
Pascal Massimino
4f3e3bbd44 disable GradientUnfilter_NEON
Compile with XCode, it appears quite slower than the C-version,
especially for arm64.

Change-Id: Ic46dba184a36be454fef674129d2f909003788fc
2017-01-25 16:33:26 -08:00
Jehan
2dc0bdcaee Fix "all|no frames are keyframes" settings.
Documentation says: "if kmin == 0, then key-frame insertion is disabled;
and if kmax == 0, then all frames will be key-frames."
Reading this, you'd expect that if kmax == 0, then with any kmin <= 0
all frames will be key-frames. But actually the kmin <= 0 test is caught
first and you get the opposite (no keyframes but the first). You'd have
instead to set kmax == 0 and any value kmin > 0, which is absolutely
counter-intuitive (reversing order).
Moreover kmax == 1 has no valid kmin (kmin == 1 conflicts with the
`kmax > kmin` rule and kmin == 0 conflicts with `kmin >= kmax / 2 + 1`).
So it should be considered an exception too.

Instead I propose this new logic:
- kmax == 1 means that all frames are keyframes (you are explicitly
  requesting a keyframe every 1 frame at most, i.e. all frames).
- kmax == 0 means no keyframes (you ask for a keyframe every 0 frames,
  i.e. never).
This is more "logical" language-wise, and also does not involve any
conflicts about what if both kmax and kmin are 0, since now a single
property value is meaningful for the 2 exceptional cases.

Change-Id: Ia90fb963bc26904ff078d2e4ef9f74b22b13a0fd
2017-01-25 13:12:52 -08:00
James Zern
0d8e05880c img2webp: treat -loop as a no-op w/single images
or in cases where duplicates have been reduced to one

Change-Id: I145cd61b6792b021617f1234f0ba36e2a3128d84
2017-01-25 08:17:39 +00:00
Pascal Massimino
b045013970 ReadImage(): restore size reporting
That was useful for printing rd-curves.

Change-Id: Idd641d94633f1f88bad2e29494b3d99c4c02fa30
2017-01-24 23:05:33 -08:00
James Zern
0ad3b4efa8 update ChangeLog
Change-Id: Iceb140648137d41a480515ce83fc4b3703449645
2017-01-24 17:41:14 -08:00
James Zern
6451709e72 img2webp,get_disto: fix image decode w/WIC builds
similar to cwebp, attempt ReadPictureWithWIC() first

Change-Id: Ifb83aaa457be59c95b201bf8bd6b0877a6a253ed
2017-01-24 15:12:08 -08:00
James Zern
92504d214c get_disto: make ReadPicture() return a bool
the input size of one of the images in the output didn't add much value.

Change-Id: I935a8c44c98fc085f0f6f360b3851826e1480f09
2017-01-24 15:07:03 -08:00
James Zern
c3e4b3a946 update NEWS
drop iOS framework update, that was included in 0.5.2

Change-Id: I2bd2ce5a6eba0c76d168c2c27070555e48e1da2b
2017-01-23 19:49:55 -08:00
James Zern
3363eb6d68 man/img2webp.1: fix formatting warning
the default is format is roman, fixes:
`R' is a string (producing the registered sign), not a macro.

Change-Id: If2bce714eff1237cd1702ae1143323249d85b93b
2017-01-23 19:36:14 -08:00
James Zern
4d1312f2d5 update NEWS
Change-Id: If1735e8aa839004a7c5728f7f8fe23649a5a4d90
2017-01-23 18:34:31 -08:00
James Zern
36c42ea415 bump version to 0.6.0
libwebp{,decoder} - 0.6.0
libwebp libtool - 7.0.0
libwebpdecoder libtool - 3.0.0

mux - 0.4.0
libtool - 3.0.0

demux - 0.3.2
libtool - 2.2.0

Change-Id: Ie46dc70df1e283df0ccef6eb07c5694feb4d4a2b
2017-01-23 18:07:00 -08:00
James Zern
bb498a51e2 update AUTHORS
Change-Id: I84cb70614e70d510c22d462a73e10088421e03c5
2017-01-23 17:48:18 -08:00
James Zern
84cef16f47 Makefile.vc: fix CFG=debug-dynamic build
strip '_debug' from the library basename to form the resource target.
since:
919f9e2f Merge "add .rc files for windows dll versioning"

BUG=webp:323

Change-Id: I97cfa48afa846211385720034a40aa452c68134c
2017-01-20 17:03:51 -08:00
James Zern
919f9e2fd6 Merge "add .rc files for windows dll versioning" 2017-01-20 19:29:50 +00:00
James Zern
f1ae8af42f Merge ".gitignore: add img2webp" 2017-01-20 19:27:37 +00:00
Pascal Massimino
4689ce1635 cwebp: add a -sharp_yuv option for 'sharp' RGB->YUV conversion
Change-Id: I6edd5b44d693da50f702fa8218f14872874d91ba
2017-01-20 16:54:54 +01:00
Pascal Massimino
79bf46f120 rename the pretentious SmartYUV into SharpYUV
Change-Id: Ifeeb9cb85896c5f3ba0cc1c2c821f8d00295f69e
2017-01-20 14:36:21 +01:00
Pascal Massimino
eb1dc89a5f silently expose use_delta_palette in the WebPConfig API
is just a placeholder for now, unless WEBP_USE_EXPERIMENTAL_FEATURES
is defined.

Change-Id: I087cb49781560bc1a7fbb01b136d36115c97ef72
2017-01-20 10:25:19 +01:00
James Zern
c85b0dde6e .gitignore: add img2webp
Change-Id: Icf4fc8779a0a0c0d1c71cdb4fa650aaaff446f5f
2017-01-20 01:03:45 -08:00
James Zern
43d3f01a2f add .rc files for windows dll versioning
BUG=webp:323

Change-Id: Id415a32b63618d39af2e599cec0d40f64c35bbce
2017-01-20 00:35:15 -08:00
James Zern
668e1dd44f src/{dec,enc,utils}: give filenames a unique suffix
this avoids duplicates between these trees and dsp/, e.g., enc/tree.c,
dec/tree.c, making pulling the whole library source tree into one target
possible

BUG=webp:279

Change-Id: I060a614833c7c24ddd37bf641702ae6a5eef1775
2017-01-19 19:09:48 -08:00
James Zern
0e6b7f33ab Merge "iosbuild.sh: only add required headers to framework" 2017-01-19 23:27:58 +00:00
James Zern
29ed6f9a0b iosbuild.sh: only add required headers to framework
Change-Id: Ib749abcd8416db9b59960ca9c0d0cfad38e6c3e4
2017-01-19 12:50:37 -08:00
Pascal Massimino
71c53f1aeb NEON: speed-up strong filtering
The sub-expression trick removes two constants and
two vmlal_s8 instructions.

Change-Id: I200022573b4880871b528b13a11a8f3d95def113
2017-01-19 20:46:48 +00:00
Pascal Massimino
73f567ea8b Merge "get_disto: remove redundant reader check" 2017-01-19 06:30:04 +00:00
Pascal Massimino
9e14276f4c Merge "makefiles: prune get_disto & webp_quality deps" 2017-01-19 06:27:52 +00:00
Pascal Massimino
99965bac02 Merge "Makefile.vc: add get_disto.exe, webp_quality.exe" 2017-01-19 06:25:47 +00:00
James Zern
d4912238f7 get_disto: remove redundant reader check
WebPGuessImageReader never returns NULL

Change-Id: I46d68e3e4902cbe013d8a2a6767ae81c8c9f67cc
2017-01-18 18:10:58 -08:00
James Zern
ea4824097e makefiles: prune get_disto & webp_quality deps
remove libimagedec from webp_quality, only the webp headers are
inspected. libwebpextras isn't needed by get_disto.

Change-Id: Ib85f97e2c4a9edd97392fd20ef294d1ccc76dda5
2017-01-18 18:10:58 -08:00
James Zern
2ede5a198a Makefile.vc: add get_disto.exe, webp_quality.exe
Change-Id: Iebf1ea793a8f2cd97181b10f077099ba15b65208
2017-01-18 17:57:17 -08:00