Hello community,

here is the log from the commit of package perl-Image-Info for openSUSE:Factory 
checked in at 2019-10-23 15:54:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Image-Info (Old)
 and      /work/SRC/openSUSE:Factory/.perl-Image-Info.new.2352 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "perl-Image-Info"

Wed Oct 23 15:54:14 2019 rev:14 rq:742102 version:1.42

Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-Image-Info/perl-Image-Info.changes  
2017-07-17 09:12:38.095457194 +0200
+++ 
/work/SRC/openSUSE:Factory/.perl-Image-Info.new.2352/perl-Image-Info.changes    
    2019-10-23 15:54:21.378921992 +0200
@@ -1,0 +2,22 @@
+Mon Oct 21 14:35:53 UTC 2019 -  <timueller+p...@suse.de>
+
+- updated to 1.42
+   see /usr/share/doc/packages/perl-Image-Info/CHANGES
+
+  2019-10-19  Slaven Rezic  <sla...@rezic.de>
+  
+      Release 1.42
+  
+      Stable release with all changes in 1.41_50
+  
+  2019-10-16  Slaven Rezic  <sla...@rezic.de>
+  
+      Release 1.41_50
+  
+      Support for WEBP files (RT #130529) (by Nicolas Clark)
+  
+      Cease a warning (by H.Merijn Brand)
+  
+      Various minor test and CI polishing
+
+-------------------------------------------------------------------

Old:
----
  Image-Info-1.41.tar.gz

New:
----
  Image-Info-1.42.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ perl-Image-Info.spec ++++++
--- /var/tmp/diff_new_pack.qJiHRw/_old  2019-10-23 15:54:22.402923099 +0200
+++ /var/tmp/diff_new_pack.qJiHRw/_new  2019-10-23 15:54:22.406923103 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package perl-Image-Info
 #
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -12,18 +12,18 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
 
 Name:           perl-Image-Info
-Version:        1.41
+Version:        1.42
 Release:        0
 %define cpan_name Image-Info
 Summary:        Extract meta information from image files
-License:        Artistic-1.0 or GPL-1.0+
+License:        Artistic-1.0 OR GPL-1.0-or-later
 Group:          Development/Libraries/Perl
-Url:            http://search.cpan.org/dist/Image-Info/
+Url:            https://metacpan.org/release/%{cpan_name}
 Source0:        
https://cpan.metacpan.org/authors/id/S/SR/SREZIC/%{cpan_name}-%{version}.tar.gz
 Source1:        cpanspec.yml
 BuildArch:      noarch
@@ -44,14 +44,14 @@
 
 %prep
 %setup -q -n %{cpan_name}-%{version}
-find . -type f ! -name \*.pl -print0 | xargs -0 chmod 644
+find . -type f ! -path "*/t/*" ! -name "*.pl" ! -name "*.sh" -print0 | xargs 
-0 chmod 644
 
 %build
-%{__perl} Makefile.PL INSTALLDIRS=vendor
-%{__make} %{?_smp_mflags}
+perl Makefile.PL INSTALLDIRS=vendor
+make %{?_smp_mflags}
 
 %check
-%{__make} test
+make test
 
 %install
 %perl_make_install

++++++ Image-Info-1.41.tar.gz -> Image-Info-1.42.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Image-Info-1.41/CHANGES new/Image-Info-1.42/CHANGES
--- old/Image-Info-1.41/CHANGES 2017-07-12 18:30:10.000000000 +0200
+++ new/Image-Info-1.42/CHANGES 2019-10-19 08:44:15.000000000 +0200
@@ -1,5 +1,21 @@
 Revision history for Image::Info
 
+2019-10-19  Slaven Rezic  <sla...@rezic.de>
+
+    Release 1.42
+
+    Stable release with all changes in 1.41_50
+
+2019-10-16  Slaven Rezic  <sla...@rezic.de>
+
+    Release 1.41_50
+
+    Support for WEBP files (RT #130529) (by Nicolas Clark)
+
+    Cease a warning (by H.Merijn Brand)
+
+    Various minor test and CI polishing
+
 2017-07-12  Slaven Rezic  <sla...@rezic.de>
 
     Release 1.41
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Image-Info-1.41/MANIFEST new/Image-Info-1.42/MANIFEST
--- old/Image-Info-1.41/MANIFEST        2017-07-12 18:33:12.000000000 +0200
+++ new/Image-Info-1.42/MANIFEST        2019-10-19 08:45:38.000000000 +0200
@@ -4,6 +4,7 @@
 dev/build.pl
 dev/Info.pm.tmpl               Will become lib/Image/Info.pm
 exifdump                       Test driver script
+img/anim.webp                  WebP animation
 img/bad-exif-1.jpg
 img/be.tif
 img/cynic_hang.jpg             cycle in IFD's causing hangs in older than v1.25
@@ -32,6 +33,9 @@
 img/test.svg
 img/test.tif
 img/test.wbmp
+img/test.webp                  WebP lossy
+img/test-exif.webp                     WebP "extended format"
+img/test-lossless.webp         WebP lossless
 img/test.xbm
 img/test.xpm
 img/test0-fuji.jpg             Testcase for RT #49546
@@ -58,6 +62,7 @@
 lib/Image/Info/SVG/XMLSimple.pm
 lib/Image/Info/TIFF.pm
 lib/Image/Info/WBMP.pm
+lib/Image/Info/WEBP.pm
 lib/Image/Info/XBM.pm
 lib/Image/Info/XPM.pm
 lib/Image/TIFF.pm              Parse TIFF tags
@@ -84,6 +89,7 @@
 t/tiff_segfault.t
 t/tiny-pgm.t
 t/wbmp.t
+t/webp.t
 t/xbm.t
 t/xpm.t
 TODO
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Image-Info-1.41/META.json 
new/Image-Info-1.42/META.json
--- old/Image-Info-1.41/META.json       2017-07-12 18:33:09.000000000 +0200
+++ new/Image-Info-1.42/META.json       2019-10-19 08:45:38.000000000 +0200
@@ -6,7 +6,7 @@
       "Tels"
    ],
    "dynamic_config" : 1,
-   "generated_by" : "ExtUtils::MakeMaker version 6.6302, CPAN::Meta::Converter 
version 2.120630",
+   "generated_by" : "ExtUtils::MakeMaker version 6.98, CPAN::Meta::Converter 
version 2.142690",
    "license" : [
       "perl_5"
    ],
@@ -54,5 +54,5 @@
          "url" : "git://github.com/eserte/image-info.git"
       }
    },
-   "version" : "1.41"
+   "version" : "1.42"
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Image-Info-1.41/META.yml new/Image-Info-1.42/META.yml
--- old/Image-Info-1.41/META.yml        2017-07-12 18:33:08.000000000 +0200
+++ new/Image-Info-1.42/META.yml        2019-10-19 08:45:38.000000000 +0200
@@ -5,15 +5,15 @@
   - 'Gisle Aas <gi...@activestate.com'
   - Tels
 build_requires:
-  ExtUtils::MakeMaker: 0
+  ExtUtils::MakeMaker: '0'
 configure_requires:
-  ExtUtils::MakeMaker: 0
+  ExtUtils::MakeMaker: '0'
 dynamic_config: 1
-generated_by: 'ExtUtils::MakeMaker version 6.6302, CPAN::Meta::Converter 
version 2.120630'
+generated_by: 'ExtUtils::MakeMaker version 6.98, CPAN::Meta::Converter version 
2.142690'
 license: perl
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
-  version: 1.4
+  version: '1.4'
 name: Image-Info
 no_index:
   directory:
@@ -23,13 +23,13 @@
     - img
     - xt
 recommends:
-  Bundle::Image::Info::PNG: 0
-  Bundle::Image::Info::SVG: 0
-  Bundle::Image::Info::XBM: 0
-  Bundle::Image::Info::XPM: 0
+  Bundle::Image::Info::PNG: '0'
+  Bundle::Image::Info::SVG: '0'
+  Bundle::Image::Info::XBM: '0'
+  Bundle::Image::Info::XPM: '0'
 requires:
-  IO::Scalar: 0
-  perl: 5.006
+  IO::Scalar: '0'
+  perl: '5.006'
 resources:
   repository: git://github.com/eserte/image-info.git
-version: 1.41
+version: '1.42'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Image-Info-1.41/README new/Image-Info-1.42/README
--- old/Image-Info-1.41/README  2009-11-22 20:06:39.000000000 +0100
+++ new/Image-Info-1.42/README  2019-10-16 20:58:09.000000000 +0200
@@ -8,6 +8,7 @@
    SVG
    XBM/XPM
    BMP/DIB/RLE
+   WEBP
 
 Usage is something like this:
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Image-Info-1.41/SIGNATURE 
new/Image-Info-1.42/SIGNATURE
--- old/Image-Info-1.41/SIGNATURE       2017-07-12 18:33:16.000000000 +0200
+++ new/Image-Info-1.42/SIGNATURE       2019-10-19 08:45:40.000000000 +0200
@@ -1,5 +1,5 @@
 This file contains message digests of all files listed in MANIFEST,
-signed via the Module::Signature module, version 0.79.
+signed via the Module::Signature module, version 0.73.
 
 To verify the content in this distribution, first make sure you have
 Module::Signature installed, then type:
@@ -12,21 +12,22 @@
 not run its Makefile.PL or Build.PL.
 
 -----BEGIN PGP SIGNED MESSAGE-----
-Hash: SHA256
+Hash: SHA1
 
 SHA1 c82d6187bf83f92dcd4a4ba9ab8341c3edcc094a .gitignore
-SHA1 30179eb10d6d5b5f894cb424f2a592ce1b7f6a2d CHANGES
+SHA1 e3115e22a27fdd5134a59970fbc5e7529a5ddf3e CHANGES
 SHA1 517bff80bcf518746150086148acaf8cfa37a17d CREDITS
-SHA1 adb208ecc37e5a45556f6ae090c48780b4c0a1d4 MANIFEST
+SHA1 5ca9bb45657728092eb1aa886e1e2b1826136c70 MANIFEST
 SHA1 7508fd127843a69e30ba4f58f4b4e769f20d49e2 MANIFEST.SKIP
-SHA1 df5eecea3876ed09a9bc7edb43ed04baca247d8f META.json
-SHA1 47d1b66847b5776a936651495c8b56eea79d2f43 META.yml
+SHA1 30e7384a7dea93c40bd5f5dbb82dadc73e1302a8 META.json
+SHA1 e46bc208078209dc13f72b8cd6e1b4a53dad5a9b META.yml
 SHA1 fd14642d591e132078fc91a8e54a4a4fed927f46 Makefile.PL
-SHA1 0184503d850cb0d34d0cfe26bd5af84d4cf97dbc README
+SHA1 2223f7e51619714199f2d5cc232b5aa0e514364f README
 SHA1 36ea8eabe5ac80acc416411aae77b60e1480de1b TODO
-SHA1 b3990f7beb41b8f3f4bc5415b1bb2782a12c63d9 dev/Info.pm.tmpl
+SHA1 d377efc30a865c1b5e811b383f7363abc92b1fb5 dev/Info.pm.tmpl
 SHA1 c11e7408bd16d35b2116ee47eaac4f08266be902 dev/build.pl
 SHA1 38b386e67725abff64ea00abb8e92c46f38e2f59 exifdump
+SHA1 fdf710d6580548b5fe62be0fd9151bc196537c17 img/anim.webp
 SHA1 0e2ed058a8e6b748c639b08064f6782c4f51d643 img/bad-exif-1.jpg
 SHA1 c11f86df48ca57d0364c9afd1449683ebf1979f4 img/be.tif
 SHA1 951a303482fb78bc02c65e8310854a7be975bfca img/cynic_hang.jpg
@@ -40,7 +41,9 @@
 SHA1 5274644b89b81daafccd469ff024e9b22a677db1 img/no-thumbnail.jpg
 SHA1 acccfe940ec2abc5bb18787c212f1ba2340793a1 img/segfault.tif
 SHA1 2cda53a351b2c683e154e82caf843e3e630804f3 img/test-corruptchunk.jpg
+SHA1 feb2bf35dbbcb5ce477fe946c17beea9f15aec21 img/test-exif.webp
 SHA1 feaec718770ec0de7fc1010827425eca5b268fb8 img/test-gimp.xbm
+SHA1 1c06aac0845d63d93dc09ca3ab7a03a6b309a68a img/test-lossless.webp
 SHA1 1f561889c44c24dae57de74f65401ca7bc089a87 img/test-multi0xff.jpg
 SHA1 44e527641f2af0aadfb1dcc9a7f301f258d8f77d img/test-notrailer.gif
 SHA1 75da6beb9439bc07a0cd8537ce21689d560452da img/test-unknowncode.gif
@@ -55,6 +58,7 @@
 SHA1 b51c0ee17e88970b032f96026119d16ab667b686 img/test.svg
 SHA1 f345165b605868be0b843fe6f98e5243a449b7d4 img/test.tif
 SHA1 1cce96f5245e8ea5c13dccb34a44d73de8c4bc4a img/test.wbmp
+SHA1 ebe53d208fc0fa62603bd87f412fc818a1e03c45 img/test.webp
 SHA1 8a8f9bfb0a791f01f5aeecb29d095bdb94b16d43 img/test.xbm
 SHA1 d7ead6bd7acf3aa703424697913c5a0e9c2e9244 img/test.xpm
 SHA1 2d2565cc6074fc831924dd378a4a579415505cfb img/test0-fuji.jpg
@@ -69,7 +73,7 @@
 SHA1 e6fe98aa5a30dbd290668cffa515aebaf14828fa lib/Bundle/Image/Info/SVG.pm
 SHA1 fa3a601365ec108901e991a8148b62c2bf3dd62b lib/Bundle/Image/Info/XBM.pm
 SHA1 7ae5950ba4474e8099068ca6122e67cadce60842 lib/Bundle/Image/Info/XPM.pm
-SHA1 ebc888ef584605a606ed8d8b6cdf2ce1ec30e295 lib/Image/Info.pm
+SHA1 231dd1bff79a57b155571eb5b0b604616a890ed0 lib/Image/Info.pm
 SHA1 6991a957bacde9d3b873184d90d910d083f5f403 lib/Image/Info/BMP.pm
 SHA1 0996bffe073126dceb72c04dc5b3002c78c24d56 lib/Image/Info/GIF.pm
 SHA1 fb628cb66c566ab66a1b7953a1bb29cfde1c79c7 lib/Image/Info/ICO.pm
@@ -81,9 +85,10 @@
 SHA1 c1fe64b6ad5faeeab7d690cd44fd0feaf56952ee lib/Image/Info/SVG/XMLSimple.pm
 SHA1 04be3e8792943ab9b61dcdc89e1f31b70dc60996 lib/Image/Info/TIFF.pm
 SHA1 ed6fde11752d6450756c815b2dca25f9ad1740d9 lib/Image/Info/WBMP.pm
+SHA1 d4a5013ec81db219edd32f273d1be370b5cda9fd lib/Image/Info/WEBP.pm
 SHA1 5c896ca4cc89715527f4207bae3c1e3c7a26286a lib/Image/Info/XBM.pm
 SHA1 4a5050fdcef00704e7d1fa2ae8751aa34a866f63 lib/Image/Info/XPM.pm
-SHA1 b8da0421ddd3592facd16fdd851eaf78a6f017fe lib/Image/TIFF.pm
+SHA1 e87d3595864dcd02e59c86fc6e8aa50fb7a283d1 lib/Image/TIFF.pm
 SHA1 34e6def40374dc924ea7ef58c5aa04e04a783295 t/00_basics.t
 SHA1 38883a0d98f01e4e749168369848f3ab5b5c7660 t/bad_exif.t
 SHA1 aaf002b3e5103e15dad27d59bbf2ce7d84caf79e t/bmp.t
@@ -93,16 +98,17 @@
 SHA1 ba1cf7c01b0de6f449a90815bf7db5a3b1645e3d t/jpg_corruptchunk.t
 SHA1 3443c36fd2dbc7f58599cf175e0793c5e8601ea9 t/jpg_hang.t
 SHA1 026bdd691c1971289451e147b8ecf1c99463e74d t/jpg_ignore_thumbnail.t
-SHA1 bbc65b35f47f361eeac8ba0e0da8fb0c645aa18c t/png.t
+SHA1 79380e179b840468bef4ab231f1bc7ac93081ed2 t/png.t
 SHA1 cc217a37ee14356bb57e4ea32c1eda94d1a2d8c9 t/pod.t
 SHA1 ddac1596c132f80e81355cc048def2733163a9aa t/pod_cov.t
 SHA1 710bb49a5428b9b0301ec451f8d869b58937b746 t/string.t
-SHA1 4d729b6d3f3d747a817657053b03f6deb0ce2de4 t/svg.t
+SHA1 2cf4f2b872c4217539c325173110d196ea7c3070 t/svg.t
 SHA1 1e8a42e9b7d911936853446ef907f8f74072d08f t/tiff.t
 SHA1 76e7e08522799dc0f39896c8925aff1d42b09da4 t/tiff_e.t
 SHA1 c08bf003a891603d6f5f098425a70680a699e31a t/tiff_segfault.t
 SHA1 0a5f7c518af4b72fd76fa8def1f51e8691727bdd t/tiny-pgm.t
 SHA1 7d7708b0392491f75eb9b68289469c1a488453ca t/wbmp.t
+SHA1 8f93c43d2d328e2ed79b8bbf817cc073d491a53f t/webp.t
 SHA1 cea87cb4a68f31dd245d911d0c43b581939c3f34 t/xbm.t
 SHA1 982933644977d3879d1b2a269bdfb1ef45723481 t/xpm.t
 SHA1 4396e44dfbfe4c2ff26d115bc0eadbce507b7bf0 xt/kwalitee.t
@@ -112,11 +118,11 @@
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
-iQEcBAEBCAAGBQJZZk9JAAoJEN1GkmBlfE8/bVkH/iq2dcpdzLXrlH6y8uaEkQbO
-i2Hu0TgUCwMo1yBHVxJlzfp3JmGfeBSWkjuYCg1PpF77mxdhwpxUw+NhB4fh+CxF
-aRLfGo0a7qdOgPXGEOQ9FuWKC9Bf7/iXs2U43E8tFpTjFUjLF84uVrh+Vi7oBo0R
-qaE+MqiyQK+23NkEmAi1e8tXXBimDkMXpbioSrpDLn2hIjk7Xrv0zlXR/2zJ4n68
-dVpEWoKk7r/63Yr/p/GvHtBm52BBOTBdAP0j6RsGrNyRzoa/mQXMWoQS3nYB7pVO
-dEFWQypyu4bxij4rRg9pEJcEEwrGWff7EGGn+7R7iWByPCOqf1SU5EaJ8K+m3Ok=
-=vN3K
+iQEcBAEBAgAGBQJdqrESAAoJEN1GkmBlfE8/+O8H/3p3MDZNqc91mqBBEExjwDPv
+ifXolC7lea2ZXn5s6i3VJArYmCD7a1g3SCCxJnN0IXfQirNWgjTuX4k3+PVRX57p
+ce7zpGNxhklprIkdlJd077SSnTVcyzcoJKZ4Ym3bW4GrPotrco/FfDCuADoOwhmw
+DcfID/PEcvGLi6cRH1soaTHlhiNhmI4xfeCe7V0IF+Cz2v3XhSIiKh4AFaa2dZkZ
+9qOWZ6BgnHK5m2aQhZNvhiHfdWLoWxS243VcZ9IjEi9FLmN78FmbSag+zZ4FAgsZ
+90wosyPcs0i41u8gsnpN434yJkWqOYDeh9S567g/YzEZi3uQoD/7RGJoCm0mTy0=
+=T0QP
 -----END PGP SIGNATURE-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Image-Info-1.41/dev/Info.pm.tmpl 
new/Image-Info-1.42/dev/Info.pm.tmpl
--- old/Image-Info-1.41/dev/Info.pm.tmpl        2017-07-12 18:27:44.000000000 
+0200
+++ new/Image-Info-1.42/dev/Info.pm.tmpl        2019-10-19 08:44:31.000000000 
+0200
@@ -13,12 +13,12 @@
 # modify it under the same terms as Perl v5.8.8 itself.
 #
 # Previously maintained by Tels - (c) 2006 - 2008.
-# Currently maintained by Slaven Rezic - (c) 2008 - 2017.
+# Currently maintained by Slaven Rezic - (c) 2008 - 2019.
 
 use strict;
 use vars qw($VERSION @EXPORT_OK);
 
-$VERSION = '1.41';
+$VERSION = '1.42';
 
 require Exporter;
 *import = \&Exporter::import;
Binary files old/Image-Info-1.41/img/anim.webp and 
new/Image-Info-1.42/img/anim.webp differ
Binary files old/Image-Info-1.41/img/test-exif.webp and 
new/Image-Info-1.42/img/test-exif.webp differ
Binary files old/Image-Info-1.41/img/test-lossless.webp and 
new/Image-Info-1.42/img/test-lossless.webp differ
Binary files old/Image-Info-1.41/img/test.webp and 
new/Image-Info-1.42/img/test.webp differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Image-Info-1.41/lib/Image/Info/WEBP.pm 
new/Image-Info-1.42/lib/Image/Info/WEBP.pm
--- old/Image-Info-1.41/lib/Image/Info/WEBP.pm  1970-01-01 01:00:00.000000000 
+0100
+++ new/Image-Info-1.42/lib/Image/Info/WEBP.pm  2019-10-16 20:58:09.000000000 
+0200
@@ -0,0 +1,164 @@
+# -*- perl -*-
+
+#
+# Copyright (C) 2019 Preisvergleich Internet Services AG. All rights reserved.
+# This package is free software; you can redistribute it and/or
+# modify it under the same terms as Perl itself.
+#
+
+# File magic is
+# R I F F
+# length (4 bytes)
+# WEPB
+
+=begin register
+
+MAGIC: /^RIFF.{4}WEBP/s
+
+VP8 (lossy), VP8L (lossless) and VP8X (extended) files are supported.
+Sets the key C<Animation> to true if the file is an animation. Otherwise
+sets the key C<Compression> to either C<VP8> or C<Lossless>.
+
+=end register
+
+=cut
+
+package Image::Info::WEBP;
+
+use strict;
+use warnings;
+
+use vars qw($VERSION);
+$VERSION = '0.01';
+
+sub my_read
+{
+    my($source, $len) = @_;
+    my $buf;
+    my $n = read($source, $buf, $len);
+    die "read failed: $!" unless defined $n;
+    die "short read ($len/$n) at pos " . tell($source) unless $n == $len;
+    $buf;
+}
+
+my @upscale = (1, 5/4, 5/3, 2);
+
+sub process_file
+{
+    my($info, $fh) = @_;
+
+    my $signature = my_read($fh, 16);
+    die "Bad WEBP signature"
+       unless $signature =~ /\ARIFF....WEBPVP8([ LX])/s;
+
+    my $type = $1;
+
+    $info->push_info(0, "file_media_type" => "image/webp");
+    $info->push_info(0, "file_ext" => "webp");
+
+    # This code is (arguably) 4 bytes out of sync with the description in the
+    # spec, because the spec describes ChunkHeader('ABCD') as an 8-byte 
quantity
+    # and we've processed the first 4 bytes above, but need to handle the 
second
+    # 4 (the length) here:
+    if ($type eq 'X') {
+        # 32 bits of length
+        # 8 bits of flags
+        # 24 bits reserved
+        # 24 bits canvas width
+        # 24 bits canvas height
+        # and then chunks...
+        my ($length, $flags, $raw_width, $raw_height)
+            = unpack 'VVVv', my_read($fh, 14);
+        # Of the 14 bytes now read, 10 were included in length:
+        $length -= 10;
+        die sprintf "Bad WEBP VP8X reserved bits 0x%02X", $flags & 0xC1
+            if $flags & 0xC1;
+        die sprintf "Bad WEBP VP8X reserved bits 0x%06X", $flags >> 8
+            if $flags >> 8;
+
+        # Shuffle the 24 bit values into shape:
+        $raw_height = ($raw_height << 8) | ($raw_width >> 24);
+        $raw_width &= 0xFFFFFF;
+        # Strictly this is the canvas width/height, not that of the first 
frame.
+        # But 1 image, that might be animated. Hence it doesn't quite map to 
the
+        # "$n images in a file" model that Image::Info::GIF provides.
+
+        $info->push_info(0, "width", 1 + $raw_width);
+        $info->push_info(0, "height", 1 + $raw_height);
+
+        if ($flags & 0x02) {
+            $info->push_info(0, "Animation", 1);
+        } else {
+            # Possibly could also handle EXIF chunks here, although it's 
unclear
+            # how much code that should share with
+            # Image::Info::JPEG::process_app1_exif(), as that seems to have 
both
+            # JPEG-specific logic, and more generic EXIF logic.
+
+            while (1) {
+                # Spec says that length is actual length, without accounting 
for
+                # padding. Odd sizes are padded to the next even size:
+                ++$length
+                    if $length & 1;
+                die "seek failed: $!"
+                    unless seek $fh, $length, 1;
+                my $buf;
+                my $n = read $fh, $buf, 8;
+                die "read failed: $!" unless defined $n;
+                die "No VP8 or VP8L chunk found in WEPB Extended File Format"
+                    if $n == 0;
+                die "short read (8/$n) at pos " . tell $fh
+                    unless $n == 8;
+                (my $chunk, $length) = unpack "a4V", $buf;
+                if ($chunk eq 'VP8 ') {
+                    $info->push_info(0, "Compression", "VP8");
+                    last;
+                } elsif ($chunk eq 'VP8L') {
+                    $info->push_info(0, "Compression", "Lossless");
+                    last;
+                }
+            }
+        }
+    } elsif ($type eq 'L') {
+        # There doesn't seem to be a better name for this:
+        $info->push_info(0, "Compression", "Lossless");
+        # Discard the 4 bytes of length; grab the next 5.
+        my ($sig, $size_and_flags) = unpack "x4CV", my_read($fh, 9);
+        die sprintf "Bad WEBP Lossless signature 0x%02X", $sig
+            unless $sig == 0x2f;
+        my $version = $size_and_flags >> 30;
+        die "Bad WEBP Lossless version $sig"
+            unless $version == 0;
+        $info->push_info(0, "width", 1 + $size_and_flags & 0x3FFF);
+        $info->push_info(0, "height", 1 + ($size_and_flags >> 14)  & 0x3FFF);
+    } else {
+        $info->push_info(0, "Compression", "VP8");
+        # The fun format for a key frame is
+        # 32 bits of length
+        # 24 bits of frame tag
+        # 3 signature bytes
+        # 2+14 bits of width
+        # 2+14 bits of height
+        # We don't have a pack format for 3 bytes, but the bits we need can be
+        # got by approximating it as 2, 4, 2, 2:
+        my ($type, $start, $raw_horiz, $raw_vert)
+            = unpack "x4vVvv", my_read($fh, 14);
+        die "Bad WEBP VP8 type 1 (ie interframe)"
+            if $type & 1;
+        $start >>= 8;
+        die sprintf "Bad WEBP VP8 key frame start signature 0x%06X", $start
+            unless $start == 0x2a019d;
+
+        # The top two bits of the raw width and height values are used as to
+        # flag a ratio to upscale.
+        # However, testing against dwebp and webpmux and then re-checking the
+        # documentation, it seems that these are really intended as information
+        # for the video hardware to render the image, because they don't change
+        # the size of bitmap returned from the decoder library. So return them
+        # as extra information, but don't recalculate the width and height.
+        $info->push_info(0, "width", ($raw_horiz & 0x3FFF));
+        $info->push_info(0, "height", ($raw_vert & 0x3FFF));
+        $info->push_info(0, "Width_Upscale", $upscale[$raw_horiz >> 14]);
+        $info->push_info(0, "Height_Upscale", $upscale[$raw_vert >> 14]);
+
+    }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Image-Info-1.41/lib/Image/Info.pm 
new/Image-Info-1.42/lib/Image/Info.pm
--- old/Image-Info-1.41/lib/Image/Info.pm       2017-07-12 18:30:56.000000000 
+0200
+++ new/Image-Info-1.42/lib/Image/Info.pm       2019-10-19 08:45:16.000000000 
+0200
@@ -13,12 +13,12 @@
 # modify it under the same terms as Perl v5.8.8 itself.
 #
 # Previously maintained by Tels - (c) 2006 - 2008.
-# Currently maintained by Slaven Rezic - (c) 2008 - 2017.
+# Currently maintained by Slaven Rezic - (c) 2008 - 2019.
 
 use strict;
 use vars qw($VERSION @EXPORT_OK);
 
-$VERSION = '1.41';
+$VERSION = '1.42';
 
 require Exporter;
 *import = \&Exporter::import;
@@ -176,6 +176,7 @@
    return "XPM" if /(^\/\* XPM 
\*\/)|(static\s+char\s+\*\w+\[\]\s*=\s*{\s*"\d+)/;
    return "XBM" if /^(?:\/\*.*\*\/\n)?#define\s/;
    return "SVG" if /^(<\?xml|[\012\015\t ]*<svg\b)/;
+   return "WEBP" if /^RIFF.{4}WEBP/s;
    return undef;
 }
 
@@ -531,6 +532,12 @@
 wbmp files have no magic, so cannot be used with the normal
 Image::Info functions. See L<Image::Info::WBMP> for more information.
 
+=item WEBP
+
+VP8 (lossy), VP8L (lossless) and VP8X (extended) files are supported.
+Sets the key C<Animation> to true if the file is an animation. Otherwise
+sets the key C<Compression> to either C<VP8> or C<Lossless>.
+
 =item XBM
 
 See L<Image::Info::XBM> for details.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Image-Info-1.41/lib/Image/TIFF.pm 
new/Image-Info-1.42/lib/Image/TIFF.pm
--- old/Image-Info-1.41/lib/Image/TIFF.pm       2014-12-20 00:06:38.000000000 
+0100
+++ new/Image-Info-1.42/lib/Image/TIFF.pm       2019-10-16 21:08:43.000000000 
+0200
@@ -9,7 +9,7 @@
 use strict;
 use vars qw($VERSION);
 
-$VERSION = '1.09';
+$VERSION = '1.10';
 
 my @types = (
   [ "BYTE",      "C1", 1],
@@ -966,7 +966,7 @@
                $maker =~ /^([A-Z]+)/; $maker = $1 || ''; # "OLYMPUS ..." > 
"OLYMPUS"
 
                # if 'Panasonic' doesn't exist, try 'Panasonic DMC-FZ5'
-               $maker = $self->{Make}.' '.$self->{Model}
+               $maker = join " " => grep m/\S/ => $self->{Make}, $self->{Model}
                    unless exists $makernotes{$maker};
 
                if (exists $makernotes{$maker}) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Image-Info-1.41/t/png.t new/Image-Info-1.42/t/png.t
--- old/Image-Info-1.41/t/png.t 2017-06-30 19:13:59.000000000 +0200
+++ new/Image-Info-1.42/t/png.t 2017-12-30 12:44:37.000000000 +0100
@@ -65,7 +65,7 @@
 # itxt tests
 SKIP:
     {
-       skip 'Need Encode for this itxt test', 2
+       skip 'Need Encode for this itxt test', 3
           if !eval { require Encode; 1 };
 
        # test files generated with pngcrush, which actually honours the spec:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Image-Info-1.41/t/svg.t new/Image-Info-1.42/t/svg.t
--- old/Image-Info-1.41/t/svg.t 2011-12-28 22:46:25.000000000 +0100
+++ new/Image-Info-1.42/t/svg.t 2017-12-30 12:44:37.000000000 +0100
@@ -29,6 +29,11 @@
   no warnings 'once';
   diag "Using SVG module $Image::Info::SVG::USING_MODULE";
   diag "XML::Simple $XML::Simple::VERSION" if defined $XML::Simple::VERSION;
+  if (defined $XML::SAX::ParserPackage) {
+      no strict 'refs';
+      my $ver = ${ $XML::SAX::ParserPackage . "::VERSION" };
+      diag "XML::SAX::ParserPackage $XML::SAX::ParserPackage $ver";
+  }
   diag "XML::LibXML::Reader $XML::LibXML::Reader::VERSION" if defined 
$XML::LibXML::Reader::VERSION;
   diag "Compiled against libxml2 version: " . XML::LibXML::LIBXML_VERSION() if 
defined &XML::LibXML::LIBXML_VERSION;
   diag "Running libxml2 version:          " . 
XML::LibXML::LIBXML_RUNTIME_VERSION() if defined &XML::LibXML::LIBXML_VERSION;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Image-Info-1.41/t/webp.t new/Image-Info-1.42/t/webp.t
--- old/Image-Info-1.41/t/webp.t        1970-01-01 01:00:00.000000000 +0100
+++ new/Image-Info-1.42/t/webp.t        2019-10-16 20:58:09.000000000 +0200
@@ -0,0 +1,50 @@
+#!/usr/bin/perl -w
+
+use strict;
+use FindBin;
+use Test::More;
+
+use Image::Info qw(image_info);
+
+plan tests => 21;
+
+my $img_dir = "$FindBin::RealBin/../img";
+
+my $i = image_info("$img_dir/test.webp") ||
+  die ("Couldn't read test.webp: $!");
+
+is ($i->{file_ext}, 'webp', 'WebP');
+is ($i->{file_media_type}, 'image/webp', 'media_type');
+is ($i->{Compression}, 'VP8', 'lossy compression');
+is ($i->{width}, 320, 'width');
+is ($i->{height}, 240, 'height');
+
+$i = image_info("$img_dir/test-lossless.webp") ||
+  die ("Couldn't read test-lossless.webp: $!");
+
+is ($i->{file_ext}, 'webp', 'WebP');
+is ($i->{file_media_type}, 'image/webp', 'media_type');
+is ($i->{Compression}, 'Lossless', 'lossless compression');
+is ($i->{width}, 150, 'width');
+is ($i->{height}, 113, 'height');
+
+$i = image_info("$img_dir/test-exif.webp") ||
+  die ("Couldn't read test-exif.webp: $!");
+
+is ($i->{file_ext}, 'webp', 'WebP');
+is ($i->{file_media_type}, 'image/webp', 'media_type');
+is ($i->{Compression}, 'VP8', 'lossy compression');
+is ($i->{width}, 320, 'width');
+is ($i->{height}, 240, 'height');
+
+# Note that this file has a length header where one octet is 0x0A, meaning that
+# it will fail the file magic test if the //s flag is removed from the regex.
+$i = image_info("$img_dir/anim.webp") ||
+  die ("Couldn't read test-exif.webp: $!");
+
+is ($i->{file_ext}, 'webp', 'WebP');
+is ($i->{file_media_type}, 'image/webp', 'media_type');
+is ($i->{Animation}, 1, 'animation');
+is ($i->{Compression}, undef, 'no compression given for animations');
+is ($i->{width}, 1, 'width');
+is ($i->{height}, 1, 'height');


Reply via email to