Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package perl-Image-Info for openSUSE:Factory
checked in at 2023-08-08 17:26:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Image-Info (Old)
and /work/SRC/openSUSE:Factory/.perl-Image-Info.new.22712 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Image-Info"
Tue Aug 8 17:26:50 2023 rev:16 rq:1102954 version:1.440.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-Image-Info/perl-Image-Info.changes
2022-10-06 07:41:41.796619517 +0200
+++
/work/SRC/openSUSE:Factory/.perl-Image-Info.new.22712/perl-Image-Info.changes
2023-08-08 17:26:53.519531169 +0200
@@ -1,0 +2,13 @@
+Fri Aug 4 03:06:30 UTC 2023 - Tina Müller <[email protected]>
+
+- updated to 1.44
+ see /usr/share/doc/packages/perl-Image-Info/CHANGES
+
+ 2023-08-03 Slaven Rezic <[email protected]>
+ Release 1.44
+ Stable release with the change in 1.43_50
+ 2023-07-25 Slaven Rezic <[email protected]>
+ Release 1.43_50
+ Support for AVIF files (PR #12, thanks to Zefram and Michael Kroell)
+
+-------------------------------------------------------------------
Old:
----
Image-Info-1.43.tar.gz
New:
----
Image-Info-1.44.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-Image-Info.spec ++++++
--- /var/tmp/diff_new_pack.eAx1gd/_old 2023-08-08 17:26:54.611537954 +0200
+++ /var/tmp/diff_new_pack.eAx1gd/_new 2023-08-08 17:26:54.615537979 +0200
@@ -1,7 +1,7 @@
#
# spec file for package perl-Image-Info
#
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,16 +18,42 @@
%define cpan_name Image-Info
Name: perl-Image-Info
-Version: 1.43
+Version: 1.440.0
Release: 0
+%define cpan_version 1.44
License: Artistic-1.0 OR GPL-1.0-or-later
Summary: Extract meta information from image files
URL: https://metacpan.org/release/%{cpan_name}
-Source0:
https://cpan.metacpan.org/authors/id/S/SR/SREZIC/%{cpan_name}-%{version}.tar.gz
+Source0:
https://cpan.metacpan.org/authors/id/S/SR/SREZIC/%{cpan_name}-%{cpan_version}.tar.gz
Source1: cpanspec.yml
BuildArch: noarch
BuildRequires: perl
BuildRequires: perl-macros
+Provides: perl(Bundle::Image::Info::Everything) = 0.02
+Provides: perl(Bundle::Image::Info::PNG) = 0.02
+Provides: perl(Bundle::Image::Info::SVG) = 0.02
+Provides: perl(Bundle::Image::Info::XBM) = 0.02
+Provides: perl(Bundle::Image::Info::XPM) = 0.02
+Provides: perl(Image::Info) = 1.440.0
+Provides: perl(Image::Info::AVIF) = 0.10.0
+Provides: perl(Image::Info::BMP) = 1.04
+Provides: perl(Image::Info::GIF) = 1.02
+Provides: perl(Image::Info::ICO) = 0.02
+Provides: perl(Image::Info::JPEG) = 0.06
+Provides: perl(Image::Info::PNG) = 1.03
+Provides: perl(Image::Info::PPM) = 0.04
+Provides: perl(Image::Info::Result)
+Provides: perl(Image::Info::SVG) = 2.04
+Provides: perl(Image::Info::SVG::XMLLibXMLReader) = 1.05
+Provides: perl(Image::Info::SVG::XMLSimple) = 1.05
+Provides: perl(Image::Info::TIFF) = 0.05
+Provides: perl(Image::Info::WBMP) = 0.01
+Provides: perl(Image::Info::WEBP) = 0.01
+Provides: perl(Image::Info::XBM) = 1.08
+Provides: perl(Image::Info::XPM) = 1.09
+Provides: perl(Image::TIFF) = 1.11
+Provides: perl(Image::TIFF::Rational)
+%define __perllib_provides /bin/true
Recommends: perl(Bundle::Image::Info::PNG)
Recommends: perl(Bundle::Image::Info::SVG)
Recommends: perl(Bundle::Image::Info::XBM)
@@ -39,8 +65,9 @@
from image files.
%prep
-%autosetup -n %{cpan_name}-%{version}
-find . -type f ! -path "*/t/*" ! -name "*.pl" ! -path "*/bin/*" ! -path
"*/script/*" ! -name "configure" -print0 | xargs -0 chmod 644
+%autosetup -n %{cpan_name}-%{cpan_version}
+
+find . -type f ! -path "*/t/*" ! -name "*.pl" ! -path "*/bin/*" ! -path
"*/script/*" ! -path "*/scripts/*" ! -name "configure" -print0 | xargs -0 chmod
644
%build
perl Makefile.PL INSTALLDIRS=vendor
++++++ Image-Info-1.43.tar.gz -> Image-Info-1.44.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Image-Info-1.43/CHANGES new/Image-Info-1.44/CHANGES
--- old/Image-Info-1.43/CHANGES 2022-10-03 19:50:28.000000000 +0200
+++ new/Image-Info-1.44/CHANGES 2023-08-03 19:11:10.000000000 +0200
@@ -1,5 +1,17 @@
Revision history for Image::Info
+2023-08-03 Slaven Rezic <[email protected]>
+
+ Release 1.44
+
+ Stable release with the change in 1.43_50
+
+2023-07-25 Slaven Rezic <[email protected]>
+
+ Release 1.43_50
+
+ Support for AVIF files (PR #12, thanks to Zefram and Michael Kroell)
+
2022-10-03 Slaven Rezic <[email protected]>
Release 1.43
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Image-Info-1.43/CREDITS new/Image-Info-1.44/CREDITS
--- old/Image-Info-1.43/CREDITS 2009-11-22 20:06:39.000000000 +0100
+++ new/Image-Info-1.44/CREDITS 2023-07-25 20:21:20.000000000 +0200
@@ -24,5 +24,6 @@
Testing on Mac and PPC
Phil Harvey <[email protected]> Panasonic Exif MakerNotes
Ralf Steines <[email protected]> GIF fixes
+Zefram and Michael Kröll AVIF support
Slaven ReziÄ <[email protected]> Maintainer from 2008 on
Tels <http://www.bloodgate.com> Maintainer between 2006 and 2008
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Image-Info-1.43/MANIFEST new/Image-Info-1.44/MANIFEST
--- old/Image-Info-1.43/MANIFEST 2022-10-03 19:52:52.000000000 +0200
+++ new/Image-Info-1.44/MANIFEST 2023-08-03 19:13:31.000000000 +0200
@@ -22,6 +22,7 @@
img/test-multi0xff.jpg
img/test-notrailer.gif
img/test-unknowncode.gif
+img/test.avif
img/test.gif An GIF example
img/test.ico
img/test.jpg An Exif example from my Digicam
@@ -51,6 +52,7 @@
lib/Bundle/Image/Info/XBM.pm
lib/Bundle/Image/Info/XPM.pm
lib/Image/Info.pm
+lib/Image/Info/AVIF.pm
lib/Image/Info/BMP.pm
lib/Image/Info/GIF.pm
lib/Image/Info/ICO.pm
@@ -71,6 +73,7 @@
MANIFEST.SKIP
README
t/00_basics.t
+t/avif.t
t/bad_exif.t
t/bmp.t
t/exif.t
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Image-Info-1.43/META.json
new/Image-Info-1.44/META.json
--- old/Image-Info-1.43/META.json 2022-10-03 19:52:52.000000000 +0200
+++ new/Image-Info-1.44/META.json 2023-08-03 19:13:31.000000000 +0200
@@ -6,13 +6,13 @@
"Tels"
],
"dynamic_config" : 1,
- "generated_by" : "ExtUtils::MakeMaker version 7.1002, CPAN::Meta::Converter
version 2.150010",
+ "generated_by" : "ExtUtils::MakeMaker version 7.64, CPAN::Meta::Converter
version 2.150010",
"license" : [
"perl_5"
],
"meta-spec" : {
"url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
- "version" : "2"
+ "version" : 2
},
"name" : "Image-Info",
"no_index" : {
@@ -50,9 +50,10 @@
"release_status" : "stable",
"resources" : {
"repository" : {
+ "type" : "git",
"url" : "git://github.com/eserte/image-info.git"
}
},
- "version" : "1.43",
- "x_serialization_backend" : "JSON::PP version 2.27300_01"
+ "version" : "1.44",
+ "x_serialization_backend" : "JSON::PP version 4.07"
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Image-Info-1.43/META.yml new/Image-Info-1.44/META.yml
--- old/Image-Info-1.43/META.yml 2022-10-03 19:52:52.000000000 +0200
+++ new/Image-Info-1.44/META.yml 2023-08-03 19:13:31.000000000 +0200
@@ -9,7 +9,7 @@
configure_requires:
ExtUtils::MakeMaker: '0'
dynamic_config: 1
-generated_by: 'ExtUtils::MakeMaker version 7.1002, CPAN::Meta::Converter
version 2.150010'
+generated_by: 'ExtUtils::MakeMaker version 7.64, CPAN::Meta::Converter version
2.150010'
license: perl
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -31,5 +31,5 @@
perl: '5.006'
resources:
repository: git://github.com/eserte/image-info.git
-version: '1.43'
+version: '1.44'
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Image-Info-1.43/README new/Image-Info-1.44/README
--- old/Image-Info-1.43/README 2019-10-16 20:58:09.000000000 +0200
+++ new/Image-Info-1.44/README 2023-07-25 20:20:14.000000000 +0200
@@ -9,6 +9,7 @@
XBM/XPM
BMP/DIB/RLE
WEBP
+ AVIF
Usage is something like this:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Image-Info-1.43/SIGNATURE
new/Image-Info-1.44/SIGNATURE
--- old/Image-Info-1.43/SIGNATURE 2022-10-03 19:52:52.000000000 +0200
+++ new/Image-Info-1.44/SIGNATURE 2023-08-03 19:13:32.000000000 +0200
@@ -15,16 +15,16 @@
Hash: SHA256
SHA1 c82d6187bf83f92dcd4a4ba9ab8341c3edcc094a .gitignore
-SHA1 10c316fcce180e5eff4d9821c3bcecb091c4e95f CHANGES
-SHA1 517bff80bcf518746150086148acaf8cfa37a17d CREDITS
-SHA1 5ca9bb45657728092eb1aa886e1e2b1826136c70 MANIFEST
+SHA1 5bf370331b91d40e827be45d6e9efc2b81482a88 CHANGES
+SHA1 d6cf6ad48410d9163a0a33f512562164e31f0251 CREDITS
+SHA1 109caae03241de014eec0f5965b053b426c4fe99 MANIFEST
SHA1 7508fd127843a69e30ba4f58f4b4e769f20d49e2 MANIFEST.SKIP
-SHA1 c8a563bd0471afe68ae49cf21a69331d587a7087 META.json
-SHA1 cc712e850ee678e2cf32573642df3fb5ba9d3f42 META.yml
+SHA1 bbcb42a15f1fc43c707e0325ef8daeb85f0c3e7c META.json
+SHA1 87c6cf1fd15214421255ce7ad17732caaa830d4a META.yml
SHA1 fd14642d591e132078fc91a8e54a4a4fed927f46 Makefile.PL
-SHA1 2223f7e51619714199f2d5cc232b5aa0e514364f README
+SHA1 9fa69197cc57e50669cedae9df4fde38c093c0ab README
SHA1 36ea8eabe5ac80acc416411aae77b60e1480de1b TODO
-SHA1 7d1e2c484d3107a0e90b43169a04701c713953bf dev/Info.pm.tmpl
+SHA1 a5f893711cdf86ca36889a34178d9ce8f847d6a7 dev/Info.pm.tmpl
SHA1 c11e7408bd16d35b2116ee47eaac4f08266be902 dev/build.pl
SHA1 38b386e67725abff64ea00abb8e92c46f38e2f59 exifdump
SHA1 fdf710d6580548b5fe62be0fd9151bc196537c17 img/anim.webp
@@ -47,6 +47,7 @@
SHA1 1f561889c44c24dae57de74f65401ca7bc089a87 img/test-multi0xff.jpg
SHA1 44e527641f2af0aadfb1dcc9a7f301f258d8f77d img/test-notrailer.gif
SHA1 75da6beb9439bc07a0cd8537ce21689d560452da img/test-unknowncode.gif
+SHA1 dea5d3a37b9f934bc3b028f0467690a5cf4fe9b6 img/test.avif
SHA1 5d3db653df616830a6a135d862e30e355464a43a img/test.gif
SHA1 11f4a1f61f932b1eb96d1ab45beb681488e4c13d img/test.ico
SHA1 6299f38bf7c592409362601fe34a5b0baafdcf47 img/test.jpg
@@ -73,7 +74,8 @@
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 67252dd02f3c7cd3cac04b741c09ed9df54cc158 lib/Image/Info.pm
+SHA1 83171cc1b691717d85ce58de61ef8c12b03d4002 lib/Image/Info.pm
+SHA1 3da8a571a7d25f226153b177b51affe122a86a75 lib/Image/Info/AVIF.pm
SHA1 6991a957bacde9d3b873184d90d910d083f5f403 lib/Image/Info/BMP.pm
SHA1 0996bffe073126dceb72c04dc5b3002c78c24d56 lib/Image/Info/GIF.pm
SHA1 fb628cb66c566ab66a1b7953a1bb29cfde1c79c7 lib/Image/Info/ICO.pm
@@ -90,6 +92,7 @@
SHA1 4a5050fdcef00704e7d1fa2ae8751aa34a866f63 lib/Image/Info/XPM.pm
SHA1 5e1853b08e6d86cd6be55bb7eea71cd8bd6e7aac lib/Image/TIFF.pm
SHA1 34e6def40374dc924ea7ef58c5aa04e04a783295 t/00_basics.t
+SHA1 812aeed71b81ef55082573c4e65c7d2118395952 t/avif.t
SHA1 38883a0d98f01e4e749168369848f3ab5b5c7660 t/bad_exif.t
SHA1 aaf002b3e5103e15dad27d59bbf2ce7d84caf79e t/bmp.t
SHA1 7cddff7d8bccd9b2e303554d31ad6f8891b7705b t/exif.t
@@ -117,12 +120,12 @@
SHA1 776c2c96e3155a622221cb1c4989579a652452d7 xt/synopsis.t
-----BEGIN PGP SIGNATURE-----
-iQEzBAEBCAAdFiEEhTWpz/sWDCQpAXAK3UaSYGV8Tz8FAmM7IXQACgkQ3UaSYGV8
-Tz8Rwgf/SVHdYPCv/6lxoS5gri8vv3n2DaTihCb87U8ryKs7WzK3uwTsCp4UODX/
-camM4w8ueF7Mm8GXQFetfVsDtyCSeclWyisFG4N0doP39F/pI4XHvlzHTZrSix3S
-W59ZUp7Cl+ea30p76CKBw+fKNvOyJB9HD8nYbFFDJkAPwLBW9Vmfomhi3sNDdphd
-oNRQFRhr2SI+ylLSR69daQf0KjCkc6UKQTIn3iApVA9yYTCXHM6YBllsxFUP3eqp
-aTQxWTiaOwMEbomHBY36a+dkO6ZWdLNbaO0zrD5oULvFYqXU2Se4HpuwFRMEZ9gv
-E1I/Io7NMniXD2RHr83Dzw1GpWptbg==
-=lveb
+iQEzBAEBCAAdFiEEhTWpz/sWDCQpAXAK3UaSYGV8Tz8FAmTL4DsACgkQ3UaSYGV8
+Tz8XdQf+KD6a94/oUsjC0biU5qQyRbdiAwPtjKKxz4bP60is3CzsdeZukfoqg0FU
+U5sB9vs58oEKZiU4nXFRDtkgny4wvnZihjHrDunTjE3DMkMddjenffL+FpOwkbnT
+48enjtKuTE9+2Ne4nBoja/Xp7nBzyeimhbj8eRuxKLbMwlhta30lBS0yCbbGB7PQ
+jurTx4juUUpPb1Aow3sgJzugIbuFcLrnASOEgCVcTYFZnRaucFCwYzPzVRrWXg6h
+YGYgncRLWUVusr8uzr5/kgfetqoC/G7hkrD7lkWZ0XtqLkfp5BAlVQ7ctaBjNb7a
+X9V0DyjBBLtaoNfA12Li8DZOswtl6w==
+=foeR
-----END PGP SIGNATURE-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Image-Info-1.43/dev/Info.pm.tmpl
new/Image-Info-1.44/dev/Info.pm.tmpl
--- old/Image-Info-1.43/dev/Info.pm.tmpl 2022-10-03 19:50:42.000000000
+0200
+++ new/Image-Info-1.44/dev/Info.pm.tmpl 2023-08-03 19:11:29.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 - 2022.
+# Currently maintained by Slaven Rezic - (c) 2008 - 2023.
use strict;
use vars qw($VERSION @EXPORT_OK);
-$VERSION = '1.43';
+$VERSION = '1.44';
require Exporter;
*import = \&Exporter::import;
Binary files old/Image-Info-1.43/img/test.avif and
new/Image-Info-1.44/img/test.avif differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Image-Info-1.43/lib/Image/Info/AVIF.pm
new/Image-Info-1.44/lib/Image/Info/AVIF.pm
--- old/Image-Info-1.43/lib/Image/Info/AVIF.pm 1970-01-01 01:00:00.000000000
+0100
+++ new/Image-Info-1.44/lib/Image/Info/AVIF.pm 2023-07-25 20:24:01.000000000
+0200
@@ -0,0 +1,241 @@
+package Image::Info::AVIF;
+
+{ use 5.006; }
+use warnings;
+use strict;
+
+our $VERSION = "0.01";
+
+sub die_for_info($) { die bless({ err=>$_[0] }, __PACKAGE__."::__ERROR__") }
+
+BEGIN {
+ if("$]" >= 5.008) {
+ *io_string = sub ($) { open(my $fh, "<", \$_[0]); $fh };
+ } else {
+ require IO::String;
+ *io_string = sub ($) { IO::String->new($_[0]) };
+ }
+}
+
+sub read_block($$) {
+ my($fh, $len) = @_;
+ my $d = "";
+ while(1) {
+ my $dlen = length($d);
+ last if $dlen == $len;
+ my $n = read($fh, $d, $len - $dlen, $dlen);
+ if(!defined($n)) {
+ die_for_info "read error: $!";
+ } elsif($n == 0) {
+ die_for_info "truncated file";
+ }
+ }
+ return $d;
+}
+
+sub read_nulterm($) {
+ my($fh) = @_;
+ my $d = do { local $/ = "\x00"; <$fh> };
+ defined($d) && $d =~ /\x00\z/ or die_for_info "truncated file";
+ chop $d;
+ return $d;
+}
+
+sub read_heif($$) {
+ my($fh, $box_types_to_keep) = @_;
+ my %boxes;
+ while(!eof($fh)) {
+ my($len, $type) = unpack("Na4", read_block($fh, 8));
+ my $pos = 8;
+ my $bufp;
+ if($type =~ $box_types_to_keep && !exists($boxes{$type})) {
+ $boxes{$type} = "";
+ $bufp = \$boxes{$type};
+ }
+ if($len == 1) {
+ my($lenhi, $lenlo) = unpack("NN", read_block($fh, 8));
+ $pos += 8;
+ $len = ($lenhi << 32) | $lenlo;
+ $len >> 32 == $lenhi or die_for_info "box size overflow";
+ }
+ $len >= $pos or die_for_info "bad box length";
+ $len -= $pos;
+ while($len) {
+ my $toread = $len < (1<<16) ? $len : (1<<16);
+ my $d = read_block($fh, $toread);
+ defined($bufp) and $$bufp .= $d;
+ $len -= $toread;
+ }
+ }
+ return \%boxes;
+}
+
+my @primaries_type;
+$primaries_type[$_] = "RGB" foreach 1, 4, 5, 6, 7, 9, 11, 22;
+$primaries_type[10] = "CIEXYZ";
+
+sub process_file {
+ my($info, $source) = @_;
+ if(!eval { local $SIG{__DIE__};
+ my $boxes = read_heif($source, qr/\A(?:ftyp|meta)\z/);
+ my $ftyp = $boxes->{ftyp};
+ defined $ftyp or die_for_info "no ftyp box";
+ length($ftyp) >= 8 && !(length($ftyp) & 3)
+ or die_for_info "malformed ftyp box";
+ substr($ftyp, 0, 4) eq "avif"
+ or die_for_info "major brand is not \"avif\"";
+ $info->replace_info(0, file_media_type => "image/avif");
+ $info->replace_info(0, file_ext => "avif");
+ my $mboxes;
+ {
+ my $meta = $boxes->{meta};
+ defined $meta or die_for_info "no meta box";
+ my $metafh = io_string($meta);
+ read_block($metafh, 1) eq "\x00"
+ or die_for_info "malformed meta box";
+ read_block($metafh, 3);
+ $mboxes = read_heif($metafh, qr/\A(?:hdlr|iprp)\z/);
+ }
+ {
+ my $hdlr = $mboxes->{hdlr};
+ defined $hdlr or die_for_info "no hdlr box";
+ my $hdlrfh = io_string($hdlr);
+ read_block($hdlrfh, 1) eq "\x00"
+ or die_for_info "malformed hdlr box";
+ read_block($hdlrfh, 3);
+ unpack("N", read_block($hdlrfh, 4)) == 0
+ or die_for_info "non-zero pre-defined value";
+ read_block($hdlrfh, 4) eq "pict"
+ or die_for_info "handler type is not \"pict\"";
+ read_block($hdlrfh, 12);
+ read_nulterm($hdlrfh);
+ }
+ my $pboxes;
+ {
+ my $iprp = $mboxes->{iprp};
+ defined $iprp or die_for_info "no iprp box";
+ my $iprpfh = io_string($iprp);
+ $pboxes = read_heif($iprpfh, qr/\Aipco\z/);
+ }
+ my $cboxes;
+ {
+ my $ipco = $pboxes->{ipco};
+ defined $ipco or die_for_info "no ipco box";
+ my $ipcofh = io_string($ipco);
+ $cboxes = read_heif($ipcofh,
+ qr/\A(?:irot|clap|ispe|pixi|colr|pasp)\z/);
+ }
+ my $rot = 0;
+ if(defined(my $irot = $cboxes->{irot})) {
+ length($irot) >= 1 or die_for_info "malformed irot box";
+ my($angle) = unpack("C", $irot);
+ !($angle & -4) or die_for_info "malformed irot box";
+ $rot = 1 if $angle & 1;
+ }
+ if(defined(my $clap = $cboxes->{clap})) {
+ length($clap) >= 32 or die_for_info "malformed clap box";
+ my($width_num, $width_den, $height_num, $height_den) =
+ unpack("NNNN", $clap);
+ $width_den != 0 && $height_den != 0
+ or die_for_info "malformed clap box";
+ my $width = int($width_num/$width_den);
+ my $height = int($height_num/$height_den);
+ ($width, $height) = ($height, $width) if $rot;
+ $info->replace_info(0, width => $width);
+ $info->replace_info(0, height => $height);
+ } elsif(defined(my $ispe = $cboxes->{ispe})) {
+ length($ispe) >= 12 or die_for_info "malformed ispe box";
+ my($ver, undef, $width, $height) = unpack("Ca3NN", $ispe);
+ $ver == 0 or die_for_info "malformed ispe box";
+ ($width, $height) = ($height, $width) if $rot;
+ $info->replace_info(0, width => $width);
+ $info->replace_info(0, height => $height);
+ }
+ if(defined(my $pixi = $cboxes->{pixi})) {
+ length($pixi) >= 5 or die_for_info "malformed pixi box";
+ my($ver, undef, $planes) = unpack("Ca3C", $pixi);
+ $ver == 0 or die_for_info "malformed pixi box";
+ length($pixi) >= 5+$planes or die_for_info "malformed pixi box";
+ $info->replace_info(0, SamplesPerPixel => $planes);
+ $info->replace_info(0, BitsPerSample =>
+ [ map { unpack(q(C), substr($pixi, 5+$_, 1)) } 0..$planes-1 ]);
+ }
+ if(defined(my $colr = $cboxes->{colr})) {
+ length($colr) >= 4 or die_for_info "malformed colr box";
+ my $type = substr($colr, 0, 4);
+ if($type eq "nclx") {
+ length($colr) >= 11 or die_for_info "malformed colr box";
+ my($prim) = unpack("n", substr($colr, 4, 2));
+ if(defined(my $ctype = $primaries_type[$prim])) {
+ $info->replace_info(0, color_type => $ctype);
+ }
+ }
+ }
+ if(defined(my $pasp = $cboxes->{pasp})) {
+ length($pasp) >= 8 or die_for_info "malformed pasp box";
+ my($hspc, $vspc) = unpack("NN", $pasp);
+ $info->replace_info(0, resolution => "$vspc/$hspc");
+ }
+ 1;
+ }) {
+ my $err = $@;
+ if(ref($err) eq __PACKAGE__."::__ERROR__") {
+ $info->replace_info(0, error => $err->{err});
+ } else {
+ die $err;
+ }
+ }
+}
+
+1;
+
+=begin register
+
+MAGIC: /\A....ftypavif/s
+
+Supports the basic standard info key names.
+
+=end register
+
+=head1 NAME
+
+Image::Info::AVIF - AV1 Image File Format support for Image::Info
+
+=head1 SYNOPSIS
+
+ use Image::Info qw(image_info);
+
+ $info = image_info("image.avif");
+ if($error = $info->{error}) {
+ die "Can't parse image info: $error\n";
+ }
+ $color = $info->{color_type};
+
+=head1 DESCRIPTION
+
+This module supplies information about AVIF files within the
+L<Image::Info> system. It supports the basic standard info key names.
+
+=head1 SEE ALSO
+
+L<Image::Info>
+
+=head1 AUTHOR
+
+Andrew Main (Zefram) <[email protected]>
+
+=head1 COPYRIGHT
+
+Copyright (C) 2023 Andrew Main (Zefram) <[email protected]>
+
+=head1 LICENSE
+
+This module is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+=head1 ACKNOWLEDGEMENT
+
+The development of this module was funded by
+Preisvergleich Internet Services AG.
+
+=cut
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Image-Info-1.43/lib/Image/Info.pm
new/Image-Info-1.44/lib/Image/Info.pm
--- old/Image-Info-1.43/lib/Image/Info.pm 2022-10-03 19:52:15.000000000
+0200
+++ new/Image-Info-1.44/lib/Image/Info.pm 2023-08-03 19:12:28.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 - 2022.
+# Currently maintained by Slaven Rezic - (c) 2008 - 2023.
use strict;
use vars qw($VERSION @EXPORT_OK);
-$VERSION = '1.43';
+$VERSION = '1.44';
require Exporter;
*import = \&Exporter::import;
@@ -175,6 +175,7 @@
return "PPM" if /^P[1-6]/;
return "XPM" if /(^\/\* XPM
\*\/)|(static\s+char\s+\*\w+\[\]\s*=\s*{\s*"\d+)/;
return "XBM" if /^(?:\/\*.*\*\/\n)?#define\s/;
+ return "AVIF" if /\A....ftypavif/s;
return "SVG" if /^(<\?xml|[\012\015\t ]*<svg\b)/;
return "WEBP" if /^RIFF.{4}WEBP/s;
return undef;
@@ -467,6 +468,10 @@
=over
+=item AVIF
+
+Supports the basic standard info key names.
+
=item BMP
This module supports the Microsoft Device Independent Bitmap format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Image-Info-1.43/t/avif.t new/Image-Info-1.44/t/avif.t
--- old/Image-Info-1.43/t/avif.t 1970-01-01 01:00:00.000000000 +0100
+++ new/Image-Info-1.44/t/avif.t 2023-07-25 20:20:14.000000000 +0200
@@ -0,0 +1,26 @@
+use warnings;
+use strict;
+
+use Test::More tests => 16;
+
+use_ok "Image::Info", qw(image_info);
+
+chdir 't' if -d 't';
+my $i = image_info("../img/test.avif");
+ok $i;
+ok !exists($i->{error});
+is $i->{file_media_type}, "image/avif";
+is $i->{file_ext}, "avif";
+is $i->{width}, 150;
+is $i->{height}, 113;
+is $i->{color_type}, "RGB";
+ok !exists($i->{resolution});
+is $i->{SamplesPerPixel}, 3;
+is_deeply $i->{BitsPerSample}, [8,8,8];
+ok !exists($i->{Comment});
+ok !exists($i->{Interlace});
+ok !exists($i->{Compression});
+ok !exists($i->{Gamma});
+ok !exists($i->{LastModificationTime});
+
+1;