[SCM] exiv2 packaging branch, master, updated. debian/0.25-3.1-3734-gdcbc29a

Maximiliano Curia maxy at moszumanska.debian.org
Thu Jul 13 17:46:44 UTC 2017


Gitweb-URL: http://git.debian.org/?p=pkg-kde/kde-extras/exiv2.git;a=commitdiff;h=d369aa6

The following commit has been merged in the master branch:
commit d369aa67d517f16a78ffc0d5636168d5f05c27e3
Author: Robin Mills <robin at clanmills.com>
Date:   Fri Aug 19 18:59:28 2016 +0000

    #1199 Test suite changes and associate fixes to the code.
---
 Makefile                    |  12 +-
 config/Makefile.in          |  12 +-
 src/actions.cpp             |  59 ++++++---
 src/actions.hpp             |   2 +-
 src/webpimage.cpp           |  12 +-
 test/Makefile               |   5 +-
 test/bugfixes-test.sh       |  48 --------
 test/data/bugfixes-test.out | Bin 1930752 -> 1911615 bytes
 test/data/webp-test.out     | 291 ++++++++++++++++++++++++++++++++++++++++++++
 test/webp-test.sh           |  87 +++++++++++++
 10 files changed, 441 insertions(+), 87 deletions(-)

diff --git a/Makefile b/Makefile
index 8642dee..b19a1f6 100644
--- a/Makefile
+++ b/Makefile
@@ -87,16 +87,20 @@ teste testx testv:
 	cd test && $(MAKE) $@
 
 # convenience for running individual tests
-bugfixes-test.sh   crw-test.sh     curliotest.sh    eps-preview-test.sh    eps-test.sh      exifdata-test.sh \
-exiv2-test.sh      httpiotest.sh   imagetest.sh     iotest.sh              iptctest.sh      modify-test.sh \
-path-test.sh       preview-test.sh sshiotest.sh     stringto-test.sh       tiff-test.sh     video-test.sh \
-write-test.sh      write-video-test.sh              write2-test.sh         xmpparser-test.sh :
+bugfixes-test.sh   crw-test.sh     curliotest.sh    eps-preview-test.sh    eps-test.sh       exifdata-test.sh \
+exiv2-test.sh      httpiotest.sh   imagetest.sh     iotest.sh              iptctest.sh       modify-test.sh \
+path-test.sh       preview-test.sh sshiotest.sh     stringto-test.sh       tiff-test.sh      video-test.sh \
+write-test.sh      write-video-test.sh              write2-test.sh         xmpparser-test.sh webp-test.sh:
 	cd test && ./$@
 
 # convenience target for running bugfixes-test.sh
 bugtest bugstest testbugs bugfixes:
 	cd test && ./bugfixes-test.sh
 
+# convenience target for running webp-test.sh
+webp-test webptest:
+	cd test && ./webp-test.sh
+
 # convenience target for building individual sample programs
 addmoddel		exifcomment		exifvalue	httptest	iptctest		mmap-test	stringto-test \
 exifdata		iotest			key-test	path-test	taglist			write2-test write-test	\
diff --git a/config/Makefile.in b/config/Makefile.in
index dfa1f31..44a3ca1 100644
--- a/config/Makefile.in
+++ b/config/Makefile.in
@@ -87,16 +87,20 @@ teste testx testv:
 	cd test && $(MAKE) $@
 
 # convenience for running individual tests
-bugfixes-test.sh   crw-test.sh     curliotest.sh    eps-preview-test.sh    eps-test.sh      exifdata-test.sh \
-exiv2-test.sh      httpiotest.sh   imagetest.sh     iotest.sh              iptctest.sh      modify-test.sh \
-path-test.sh       preview-test.sh sshiotest.sh     stringto-test.sh       tiff-test.sh     video-test.sh \
-write-test.sh      write-video-test.sh              write2-test.sh         xmpparser-test.sh :
+bugfixes-test.sh   crw-test.sh     curliotest.sh    eps-preview-test.sh    eps-test.sh       exifdata-test.sh \
+exiv2-test.sh      httpiotest.sh   imagetest.sh     iotest.sh              iptctest.sh       modify-test.sh \
+path-test.sh       preview-test.sh sshiotest.sh     stringto-test.sh       tiff-test.sh      video-test.sh \
+write-test.sh      write-video-test.sh              write2-test.sh         xmpparser-test.sh webp-test.sh:
 	cd test && ./$@
 
 # convenience target for running bugfixes-test.sh
 bugtest bugstest testbugs bugfixes:
 	cd test && ./bugfixes-test.sh
 
+# convenience target for running webp-test.sh
+webp-test webptest:
+	cd test && ./webp-test.sh
+
 # convenience target for building individual sample programs
 addmoddel		exifcomment		exifvalue	httptest	iptctest		mmap-test	stringto-test \
 exifdata		iotest			key-test	path-test	taglist			write2-test write-test	\
diff --git a/src/actions.cpp b/src/actions.cpp
index 7a19316..60cfd0b 100644
--- a/src/actions.cpp
+++ b/src/actions.cpp
@@ -1258,12 +1258,18 @@ namespace Action {
                 || Params::instance().target_ & Params::ctXmpRaw)) {
             std::string suffix = Params::instance().suffix_;
             if (suffix.empty()) suffix = ".exv";
-            if (Params::instance().target_ & Params::ctXmpSidecar) suffix = ".xmp";
+            if ((Params::instance().target_ & Params::ctXmpSidecar)
+            ||  (Params::instance().target_ & Params::ctXmpRaw    )) suffix = ".xmp";
+
             std::string exvPath = newFilePath(path, suffix);
-            rc = metacopy(exvPath, path, Exiv2::ImageType::none, true);
+            std::string xmpPath = newFilePath(path, suffix);
+            rc = suffix == ".exv" ? metacopy(exvPath, path, Exiv2::ImageType::xmp, true)
+                                  : insertXmpPacket(xmpPath,path)
+                                  ;
         }
         if (0 == rc && Params::instance().target_ & Params::ctXmpSidecar) {
-            rc = insertXmpPacket(path);
+        	std::string xmpPath = newFilePath(path,".xmp");
+            rc = insertXmpPacket(xmpPath,path);
         }
         if (0 == rc && Params::instance().target_ & Params::ctIccProfile) {
             rc = insertIccProfile(path);
@@ -1280,9 +1286,8 @@ namespace Action {
         return 1;
     } // Insert::run
 
-    int Insert::insertXmpPacket(const std::string& path) const
+    int Insert::insertXmpPacket(const std::string& xmpPath,const std::string& path) const
     {
-        std::string xmpPath = newFilePath(path, ".xmp");
         if (!Exiv2::fileExists(xmpPath, true)) {
             std::cerr << xmpPath
                       << ": " << _("Failed to open the file
");
@@ -1295,7 +1300,9 @@ namespace Action {
         }
         Exiv2::DataBuf buf = Exiv2::readFile(xmpPath);
         std::string xmpPacket;
-        xmpPacket.assign(reinterpret_cast<char*>(buf.pData_), buf.size_);
+        for ( long i = 0 ; i < buf.size_ ; i++ ) {
+            xmpPacket += (char) buf.pData_[i];
+        }
         Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path);
         assert(image.get() != 0);
         image->readMetadata();
@@ -1307,25 +1314,37 @@ namespace Action {
 
     int Insert::insertIccProfile(const std::string& path) const
     {
+    	int rc = 0;
+    	// for path "foo.XXX", do a binary copy of "foo.icc"
         std::string iccProfilePath = newFilePath(path, ".icc");
         if (!Exiv2::fileExists(iccProfilePath, true)) {
-            std::cerr << iccProfilePath
-                      << ": " << _("Failed to open the file
");
-            return -1;
-        }
-        if (!Exiv2::fileExists(path, true)) {
-            std::cerr << path
-                      << ": " << _("Failed to open the file
");
-            return -1;
+			std::cerr << iccProfilePath
+					  << ": " << _("Failed to open the file
");
+			rc = -1;
         }
         Exiv2::DataBuf iccProfileBlob = Exiv2::readFile(iccProfilePath);
-        Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path);
-        assert(image.get() != 0);
-        image->readMetadata();
-        image->setIccProfile(iccProfileBlob);
-        image->writeMetadata();
 
-        return 0;
+        // test path exists
+        if (rc==0 && !Exiv2::fileExists(path, true)) {
+			std::cerr << path
+					  << ": " << _("Failed to open the file
");
+			rc=-1;
+        }
+
+        // read in the metadata
+		if ( rc == 0 ) {
+            Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path);
+            assert(image.get() != 0);
+            image->readMetadata();
+			// clear existing profile, assign the blob and rewrite image
+			image->clearIccProfile();
+			if ( iccProfileBlob.size_ ) {
+				image->setIccProfile(iccProfileBlob);
+			}
+			image->writeMetadata();
+        }
+
+        return rc;
     } // Insert::insertIccProfile
 
     int Insert::insertThumbnail(const std::string& path) const
diff --git a/src/actions.hpp b/src/actions.hpp
index a59bb5e..c6a78c6 100644
--- a/src/actions.hpp
+++ b/src/actions.hpp
@@ -350,7 +350,7 @@ namespace Action {
                  The filename of the XMP packet is expected to be the image
                  filename (\em path) minus its suffix plus ".xmp".
          */
-        int insertXmpPacket(const std::string& path) const;
+        int insertXmpPacket(const std::string& xmpPath,const std::string& path) const;
         /*!
           @brief Insert an ICC profile from a file into file \em path.
                  The filename of the ICC profile is expected to be the image
diff --git a/src/webpimage.cpp b/src/webpimage.cpp
index 3fefb24..5472a43 100644
--- a/src/webpimage.cpp
+++ b/src/webpimage.cpp
@@ -137,7 +137,6 @@ namespace Exiv2 {
         int height = 0;
 
         byte size_buff[4];
-        std::string xmpData;
         Blob blob;
 
         if (exifData_.count() > 0) {
@@ -147,15 +146,12 @@ namespace Exiv2 {
             }
         }
 
-        if (xmpData_.count() > 0) {
+        if (xmpData_.count() > 0 && !writeXmpFromPacket()) {
             XmpParser::encode(xmpPacket_, xmpData_,
                               XmpParser::useCompactFormat |
                               XmpParser::omitAllFormatting);
-            if (xmpPacket_.size() > 0) {
-                has_xmp = true;
-                xmpData = xmpPacket_.data();
-            }
         }
+        has_xmp = xmpPacket_.size() > 0;
 
         /* Verify for a VP8X Chunk First before writing in
            case we have any exif or xmp data, also check
@@ -389,9 +385,9 @@ namespace Exiv2 {
         if (has_xmp) {
             std::string header = "XMP ";
             if (outIo.write((const byte*)header.data(), TAG_SIZE) != TAG_SIZE) throw Error(21);
-            ul2Data(data, (uint32_t) xmpData.size(), littleEndian);
+            ul2Data(data, (uint32_t) xmpPacket().size(), littleEndian);
             if (outIo.write(data, 4) != 4) throw Error(21);
-            if (outIo.write((const byte*)xmpData.data(), static_cast<long>(xmpData.size())) != (long)xmpData.size()) {
+            if (outIo.write((const byte*)xmpPacket().data(), static_cast<long>(xmpPacket().size())) != (long)xmpPacket().size()) {
                 throw Error(21);
             }
         }
diff --git a/test/Makefile b/test/Makefile
index 7bf7724..8957db9 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -74,13 +74,14 @@ TESTS  = addmoddel.sh         \
          preview-test.sh      \
          stringto-test.sh     \
          tiff-test.sh         \
+         webp-test.sh         \
          write-test.sh        \
          write2-test.sh       \
          xmpparser-test.sh    \
          conversions.sh
 
 # video tests
-TESTV  = video-test.sh         
+TESTV  = video-test.sh
 TESTVW = write-video-test.sh
 
 # EPS tests
@@ -149,7 +150,7 @@ testx:
 	done
 
 mostlyclean clean:
-	rm -rf $(top_srcdir)/test/tmp/* 
+	rm -rf $(top_srcdir)/test/tmp/*
 
 distclean: clean
 	$(RM) *~ *.bak *#
diff --git a/test/bugfixes-test.sh b/test/bugfixes-test.sh
index c66f474..b471035 100755
--- a/test/bugfixes-test.sh
+++ b/test/bugfixes-test.sh
@@ -548,54 +548,6 @@ source ./functions.source
       runTest exiv2 -pa --grep fuji/i   $filename
     done
 
-    num=1199                    # WebPImage
-    printf "$num " >&3
-    filename=exiv2-bug$num.webp # http://dev.exiv2.org/attachments/download/1033/Stonehenge-with-icc.webp
-    icc_name=exiv2-bug$num.icc
-    exv_name=exiv2-bug$num.exv
-    copyTestFile                        $filename
-    runTest exiv2 -pS                   $filename
-    runTest exiv2 -pR                   $filename
-    runTest exiv2 -pX                   $filename | xmllint --pretty 2 -
-    # test deleting metadata
-    for option in -dC -de -dx -dCe -dCx -dCxe; do
-      copyTestFile                      $filename
-      runTest exiv2 -pS                 $filename
-      runTest exiv2 $option             $filename
-      runTest exiv2 -pS                 $filename
-    done
-    # test print/insert metadata
-    if [ 1 == 1 ]; then
-      # ICC Profile
-      copyTestFile                      $filename
-      copyTestFile                      Reagan.tiff
-      exiv2 -pS                         $filename
-      exiv2 -pC                         Reagan.tiff > $icc_name
-      exiv2 -iC                         $filename
-      exiv2 -pS                         $filename
-    fi
-
-    if [ 1 == 0 ]; then # TODO: Fix this
-      # XMP
-      copyTestFile                      $filename
-      copyTestFile                      Reagan.tiff
-      exiv2 -pS                         $filename
-      exiv2 --force -ex                 Reagan.tiff
-      mv   Reagan.exv                   $exv_name
-      exiv2 -ix                         $filename
-      exiv2 -pS                         $filename
-    fi
-
-    if [ 1 == 0 ]; then # TODO: Fix this
-      # EXIF
-      copyTestFile                      exiv2-bug937.jpg $filename
-      exiv2 --force -ea                 $filename
-      copyTestFile                      $filename
-      exiv2 -pS                         $filename
-      exiv2 -ie                         $filename
-      exiv2 -pS                         $filename
-    fi
-
     num=1202
     printf "$num " >&3
     filename=exiv2-bug$num.jpg # test/tmp/20030925_201850.jpg
diff --git a/test/data/bugfixes-test.out b/test/data/bugfixes-test.out
index 3bbe853..d1e34ba 100644
Binary files a/test/data/bugfixes-test.out and b/test/data/bugfixes-test.out differ
diff --git a/test/data/webp-test.out b/test/data/webp-test.out
new file mode 100644
index 0000000..057a455
--- /dev/null
+++ b/test/data/webp-test.out
@@ -0,0 +1,291 @@
+STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
+ Chunk |   Length |   Offset | Payload
+  RIFF |   187526 |        0 | WEBP
+  VP8X |       10 |       12 | ,........
+  ICCP |      560 |       30 | ...0ADBE....mntrRGB XYZ ........
+  VP8  |   172008 |      598 | .G...*.. .>1..B.!..o.. ......]..
+  EXIF |    12040 |   172614 | II*........................... .
+  XMP  |     2864 |   184662 | <?xpacket begin="..." id="W5M0Mp
+STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
+ Chunk |   Length |   Offset | Payload
+  RIFF |   187526 |        0 | WEBP
+  VP8X |       10 |       12 | ,........
+  ICCP |      560 |       30 | ...0ADBE....mntrRGB XYZ ........
+  VP8  |   172008 |      598 | .G...*.. .>1..B.!..o.. ......]..
+  EXIF |    12040 |   172614 | II*........................... .
+  STRUCTURE OF TIFF FILE (II): MemIo
+   address |    tag                           |      type |    count |    offset | value
+        10 | 0x0100 ImageWidth                |      LONG |        1 |      1200 | 1200
+        22 | 0x0101 ImageLength               |      LONG |        1 |       800 | 800
+        34 | 0x0102 BitsPerSample             |     SHORT |        3 |       194 | 8 8 8
+        46 | 0x010e ImageDescription          |     ASCII |       37 |       200 |                                  ...
+        58 | 0x010f Make                      |     ASCII |       18 |       238 | NIKON CORPORATION
+        70 | 0x0110 Model                     |     ASCII |       12 |       256 | NIKON D5300
+        82 | 0x0112 Orientation               |     SHORT |        1 |         1 | 1
+        94 | 0x011a XResolution               |  RATIONAL |        1 |       268 | 268/0
+       106 | 0x011b YResolution               |  RATIONAL |        1 |       276 | 276/0
+       118 | 0x0128 ResolutionUnit            |     SHORT |        1 |         2 | 2
+       130 | 0x0131 Software                  |     ASCII |       11 |       284 | GIMP 2.9.5
+       142 | 0x0132 DateTime                  |     ASCII |       20 |       296 | 2016:08:13 10:54:16
+       154 | 0x0213 YCbCrPositioning          |     SHORT |        1 |         1 | 1
+       166 | 0x8769 ExifTag                   |      LONG |        1 |       316 | 316
+    STRUCTURE OF TIFF FILE (II): MemIo
+     address |    tag                           |      type |    count |    offset | value
+         318 | 0x829a ExposureTime              |  RATIONAL |        1 |       814 | 814/0
+         330 | 0x829d FNumber                   |  RATIONAL |        1 |       822 | 822/0
+         342 | 0x8822 ExposureProgram           |     SHORT |        1 |         0 | 0
+         354 | 0x8827 ISOSpeedRatings           |     SHORT |        1 |       200 | 200
+         366 | 0x8830 SensitivityType           |     SHORT |        1 |         2 | 2
+         378 | 0x9000 ExifVersion               | UNDEFINED |        4 | 808661552 | 0230
+         390 | 0x9003 DateTimeOriginal          |     ASCII |       20 |       830 | 2015:07:16 15:38:54
+         402 | 0x9004 DateTimeDigitized         |     ASCII |       20 |       850 | 2015:07:16 15:38:54
+         414 | 0x9101 ComponentsConfiguration   | UNDEFINED |        4 |    197121 | ...
+         426 | 0x9102 CompressedBitsPerPixel    |  RATIONAL |        1 |       870 | 870/0
+         438 | 0x9204 ExposureBiasValue         | SRATIONAL |        1 |       878 | 878/0
+         450 | 0x9205 MaxApertureValue          |  RATIONAL |        1 |       886 | 886/0
+         462 | 0x9207 MeteringMode              |     SHORT |        1 |         5 | 5
+         474 | 0x9208 LightSource               |     SHORT |        1 |         0 | 0
+         486 | 0x9209 Flash                     |     SHORT |        1 |        16 | 16
+         498 | 0x920a FocalLength               |  RATIONAL |        1 |       894 | 894/0
+         510 | 0x927c MakerNote                 | UNDEFINED |     3826 |       902 | Nikon.....II*.....9.+...$...... ...
+      STRUCTURE OF TIFF FILE (II): MemIo
+       address |    tag                           |      type |    count |    offset | value
+            10 | 0x002b                           |     ASCII |       36 |       698 | 48 49 48 48 0 0 2 0 0 0 0 0 0 0  ...
+            22 | 0x002c                           |     ASCII |     1157 |       734 | 48 49 48 49 35 0 128 2 170 1 0 0 ...
+            34 | 0x002d                           |     ASCII |        8 |      1892 | 512 0 0
+            46 | 0x0032                           |     ASCII |       20 |      1900 | 48 49 48 48 1 0 0 0
+            58 | 0x0035                           |     ASCII |       16 |      1920 | 48 50 48 48 0 0
+            70 | 0x003b                           |     ASCII |       32 |      1936 | 256/256 256/256 256/256 256/256
+            82 | 0x003c                           |     ASCII |        2 |        49 | 1
+            94 | 0x009d                           |     ASCII |        2 |        48 | 0
+           106 | 0x00a3                           |      BYTE |        1 |         0 | 
+           118 | 0x00b6                           |     ASCII |       16 |      1968 | 0 0 0 0 0 0 0 0
+           130 | 0x00bb                           |     ASCII |       26 |      1984 | 48 50 48 48 255 255 255 0
+           142 | 0x00bf                           |     ASCII |        2 |        48 | 0
+           154 | 0x00c0                           |     ASCII |       21 |      2010 | 60 1 12 0 144 1 12 0
+           166 | 0x0022                           |     SHORT |        1 |     65535 | 65535
+           178 | 0x008a                           |     SHORT |        1 |         1 | 1
+           190 | 0x001e GPSDifferential           |     SHORT |        1 |         1 | 1
+           202 | 0x001b GPSProcessingMethod       |     SHORT |        7 |      2032 | 0 6016 4016 6016 4016 ...
+           214 | 0x0019 GPSDestDistanceRef        | SRATIONAL |        1 |      2046 | 2046/0
+           226 | 0x000e GPSTrackRef               | UNDEFINED |        4 |    786688 | ...
+           238 | 0x001c GPSAreaInformation        |     SHORT |        3 |      2054 | 0 1 6
+           250 | 0x0018 GPSDestBearing            | UNDEFINED |        4 |    393472 | ...
+           262 | 0x0012 GPSMapDatum               | UNDEFINED |        4 |    393472 | ...
+           274 | 0x0009 GPSStatus                 |     ASCII |       20 |      2060 |                    
+           286 | 0x0017 GPSDestBearingRef         | UNDEFINED |        4 |    393472 | ...
+           298 | 0x00a8                           | UNDEFINED |       49 |      2080 | 0106........................... ...
+           310 | 0x0087                           |      BYTE |        1 |         0 | 
+           322 | 0x0008 FlashSetting              |     ASCII |       13 |      2130 |             
+           334 | 0x0007 Focus                     |     ASCII |        7 |      2144 | AF-A  
+           346 | 0x00b1                           |     SHORT |        1 |         4 | 4
+           358 | 0x0013 GPSDestLatitudeRef        |     SHORT |        2 |  13107200 | 0 200
+           370 | 0x0002 ISOSpeed                  |     SHORT |        2 |  13107200 | 0 200
+           382 | 0x0016 GPSDestLongitude          |     SHORT |        4 |      2152 | 0 0 6000 4000
+           394 | 0x00a2                           |      LONG |        1 |   6173648 | 6173648
+           406 | 0x0084                           |  RATIONAL |        4 |      2160 | 180/0 10/0 2500/0 10/0
+           418 | 0x008b                           | UNDEFINED |        4 |    786743 | 7..
+           430 | 0x0083                           |      BYTE |        1 |        14 | .
+           442 | 0x0095                           |     ASCII |        5 |      2192 | OFF 
+           454 | 0x000d GPSSpeed                  | UNDEFINED |        4 |    393472 | ...
+           466 | 0x0004 Quality                   |     ASCII |        8 |      2198 | NORMAL 
+           478 | 0x009e                           |     SHORT |       10 |      2206 | 0 0 0 0 0 ...
+           490 | 0x001d GPSDateStamp              |     ASCII |        8 |      2226 | 2567806
+           502 | 0x0089                           |     SHORT |        1 |         0 | 0
+           514 | 0x00a7                           |      LONG |        1 |      9608 | 9608
+           526 | 0x00ab                           |     ASCII |       16 |      2234 | AUTO(FLASH OFF)
+           538 | 0x0001 Version                   | UNDEFINED |        4 | 825307696 | 0211
+           550 | 0x000c GPSSpeedRef               |  RATIONAL |        4 |      2250 | 538/0 256/0 354/0 256/0
+           562 | 0x0005 WhiteBalance              |     ASCII |       13 |      2282 | AUTO        
+           574 | 0x000b ProcessingSoftware        |    SSHORT |        2 |         0 | 0 0
+           586 | 0x00b7                           | UNDEFINED |       30 |      2296 | 0100....i....................
+           598 | 0x0097                           | UNDEFINED |     1188 |      2326 | 0219.dU....W..2......:.......F.# ...
+           610 | 0x00b8                           | UNDEFINED |      172 |      3514 | 0100..e........................ ...
+           622 | 0x0025                           | UNDEFINED |       14 |      3686 | H.....H......
+           634 | 0x0098                           | UNDEFINED |       33 |      3700 | 0204.W....z.o..#[.....!o.x..E... ...
+           646 | 0x00b0                           | UNDEFINED |       16 |      3734 | 0100...........
+           658 | 0x0023                           | UNDEFINED |       58 |      3750 | 0100STANDARD............STANDARD ...
+           670 | 0x001f                           | UNDEFINED |        8 |      3808 | 0100...
+           682 | 0x0024                           | UNDEFINED |        4 |     65536 | ...
+      END MemIo
+         522 | 0x9286 UserComment               | UNDEFINED |       44 |      4728 | ........                         ...
+         534 | 0x9290 SubSecTime                |     ASCII |        3 |     12336 | 00
+         546 | 0x9291 SubSecTimeOriginal        |     ASCII |        3 |     12336 | 00
+         558 | 0x9292 SubSecTimeDigitized       |     ASCII |        3 |     12336 | 00
+         570 | 0xa000 FlashpixVersion           | UNDEFINED |        4 | 808464688 | 0100
+         582 | 0xa001 ColorSpace                |     SHORT |        1 |         1 | 1
+         594 | 0xa002 PixelXDimension           |      LONG |        1 |      6000 | 6000
+         606 | 0xa003 PixelYDimension           |      LONG |        1 |      4000 | 4000
+         618 | 0xa217 SensingMethod             |     SHORT |        1 |         2 | 2
+         630 | 0xa300 FileSource                | UNDEFINED |        1 |         3 | .
+         642 | 0xa301 SceneType                 | UNDEFINED |        1 |         1 | .
+         654 | 0xa302 CFAPattern                | UNDEFINED |        8 |      4772 | ........
+         666 | 0xa401 CustomRendered            |     SHORT |        1 |         0 | 0
+         678 | 0xa402 ExposureMode              |     SHORT |        1 |         0 | 0
+         690 | 0xa403 WhiteBalance              |     SHORT |        1 |         0 | 0
+         702 | 0xa404 DigitalZoomRatio          |  RATIONAL |        1 |      4780 | 4780/0
+         714 | 0xa405 FocalLengthIn35mmFilm     |     SHORT |        1 |        66 | 66
+         726 | 0xa406 SceneCaptureType          |     SHORT |        1 |         0 | 0
+         738 | 0xa407 GainControl               |     SHORT |        1 |         0 | 0
+         750 | 0xa408 Contrast                  |     SHORT |        1 |         0 | 0
+         762 | 0xa409 Saturation                |     SHORT |        1 |         0 | 0
+         774 | 0xa40a Sharpness                 |     SHORT |        1 |         0 | 0
+         786 | 0xa40c SubjectDistanceRange      |     SHORT |        1 |         0 | 0
+         798 | 0xa420 ImageUniqueID             |     ASCII |       33 |      4788 | 090caaf2c085f3e102513b24750041aa ...
+    END MemIo
+       178 | 0x8825 GPSTag                    |      LONG |        1 |      4822 | 4822
+      5072 | 0x0100 ImageWidth                |      LONG |        1 |       256 | 256
+      5084 | 0x0101 ImageLength               |      LONG |        1 |       170 | 170
+      5096 | 0x0102 BitsPerSample             |     SHORT |        3 |      5172 | 8 8 8
+      5108 | 0x0103 Compression               |     SHORT |        1 |         6 | 6
+      5120 | 0x0106 PhotometricInterpretation |     SHORT |        1 |         6 | 6
+      5132 | 0x0115 SamplesPerPixel           |     SHORT |        1 |         3 | 3
+      5144 | 0x0201 JPEGInterchangeFormat     |      LONG |        1 |      5178 | 5178
+      5156 | 0x0202 JPEGInterchangeFormatLeng |      LONG |        1 |      6861 | 6861
+  END MemIo
+  XMP  |     2864 |   184662 | <?xpacket begin="..." id="W5M0Mp
+<?xml version="1.0"?>
+<?xpacket
+begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta
+    xmlns:x="adobe:ns:meta/"
+    x:xmptk="XMP Core 4.4.0-Exiv2"
+  > <rdf:RDF
+      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+    > <rdf:Description
+        xmlns:dc="http://purl.org/dc/elements/1.1/"
+        xmlns:xmp="http://ns.adobe.com/xap/1.0/"
+        xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
+        rdf:about=""
+        dc:Format="image/webp"
+        xmp:ModifyDate="2015-07-16T20:25:28+01:00"
+        xmp:Rating="0"
+        photoshop:AuthorsPosition="Stonehenge"
+      > <dc:description
+        > <rdf:Alt
+          > <rdf:li
+              xml:lang="x-default"
+            >Classic View</rdf:li
+          > </rdf:Alt
+        > </dc:description
+      > <dc:title
+        > <rdf:Alt
+          > <rdf:li
+              xml:lang="x-default"
+            >Stonehenge</rdf:li
+          > </rdf:Alt
+        > </dc:title
+      > <dc:creator
+        > <rdf:Seq
+          > <rdf:li
+            >Robin Mills</rdf:li
+          > </rdf:Seq
+        > </dc:creator
+      > </rdf:Description
+    > </rdf:RDF
+  > </x:xmpmeta
+>
+<?xpacket
+end="w"?>
+STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
+ Chunk |   Length |   Offset | Payload
+  RIFF |   187526 |        0 | WEBP
+  VP8X |       10 |       12 | ,........
+  ICCP |      560 |       30 | ...0ADBE....mntrRGB XYZ ........
+  VP8  |   172008 |      598 | .G...*.. .>1..B.!..o.. ......]..
+  EXIF |    12040 |   172614 | II*........................... .
+  XMP  |     2864 |   184662 | <?xpacket begin="..." id="W5M0Mp
+STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
+ Chunk |   Length |   Offset | Payload
+  RIFF |   186958 |        0 | WEBP
+  VP8X |       10 |       12 | .........
+  VP8  |   172008 |       30 | .G...*.. .>1..B.!..o.. ......]..
+  EXIF |    12040 |   172046 | II*........................... .
+  XMP  |     2864 |   184094 | <?xpacket begin="..." id="W5M0Mp
+STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
+ Chunk |   Length |   Offset | Payload
+  RIFF |   187526 |        0 | WEBP
+  VP8X |       10 |       12 | ,........
+  ICCP |      560 |       30 | ...0ADBE....mntrRGB XYZ ........
+  VP8  |   172008 |      598 | .G...*.. .>1..B.!..o.. ......]..
+  EXIF |    12040 |   172614 | II*........................... .
+  XMP  |     2864 |   184662 | <?xpacket begin="..." id="W5M0Mp
+STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
+ Chunk |   Length |   Offset | Payload
+  RIFF |   175478 |        0 | WEBP
+  VP8X |       10 |       12 | $........
+  ICCP |      560 |       30 | ...0ADBE....mntrRGB XYZ ........
+  VP8  |   172008 |      598 | .G...*.. .>1..B.!..o.. ......]..
+  XMP  |     2864 |   172614 | <?xpacket begin="..." id="W5M0Mp
+STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
+ Chunk |   Length |   Offset | Payload
+  RIFF |   187526 |        0 | WEBP
+  VP8X |       10 |       12 | ,........
+  ICCP |      560 |       30 | ...0ADBE....mntrRGB XYZ ........
+  VP8  |   172008 |      598 | .G...*.. .>1..B.!..o.. ......]..
+  EXIF |    12040 |   172614 | II*........................... .
+  XMP  |     2864 |   184662 | <?xpacket begin="..." id="W5M0Mp
+STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
+ Chunk |   Length |   Offset | Payload
+  RIFF |   184654 |        0 | WEBP
+  VP8X |       10 |       12 | (........
+  ICCP |      560 |       30 | ...0ADBE....mntrRGB XYZ ........
+  VP8  |   172008 |      598 | .G...*.. .>1..B.!..o.. ......]..
+  EXIF |    12040 |   172614 | II*........................... .
+STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
+ Chunk |   Length |   Offset | Payload
+  RIFF |   187526 |        0 | WEBP
+  VP8X |       10 |       12 | ,........
+  ICCP |      560 |       30 | ...0ADBE....mntrRGB XYZ ........
+  VP8  |   172008 |      598 | .G...*.. .>1..B.!..o.. ......]..
+  EXIF |    12040 |   172614 | II*........................... .
+  XMP  |     2864 |   184662 | <?xpacket begin="..." id="W5M0Mp
+STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
+ Chunk |   Length |   Offset | Payload
+  RIFF |   174910 |        0 | WEBP
+  VP8X |       10 |       12 | .........
+  VP8  |   172008 |       30 | .G...*.. .>1..B.!..o.. ......]..
+  XMP  |     2864 |   172046 | <?xpacket begin="..." id="W5M0Mp
+STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
+ Chunk |   Length |   Offset | Payload
+  RIFF |   187526 |        0 | WEBP
+  VP8X |       10 |       12 | ,........
+  ICCP |      560 |       30 | ...0ADBE....mntrRGB XYZ ........
+  VP8  |   172008 |      598 | .G...*.. .>1..B.!..o.. ......]..
+  EXIF |    12040 |   172614 | II*........................... .
+  XMP  |     2864 |   184662 | <?xpacket begin="..." id="W5M0Mp
+STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
+ Chunk |   Length |   Offset | Payload
+  RIFF |   184086 |        0 | WEBP
+  VP8X |       10 |       12 | .........
+  VP8  |   172008 |       30 | .G...*.. .>1..B.!..o.. ......]..
+  EXIF |    12040 |   172046 | II*........................... .
+STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
+ Chunk |   Length |   Offset | Payload
+  RIFF |   187526 |        0 | WEBP
+  VP8X |       10 |       12 | ,........
+  ICCP |      560 |       30 | ...0ADBE....mntrRGB XYZ ........
+  VP8  |   172008 |      598 | .G...*.. .>1..B.!..o.. ......]..
+  EXIF |    12040 |   172614 | II*........................... .
+  XMP  |     2864 |   184662 | <?xpacket begin="..." id="W5M0Mp
+STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
+ Chunk |   Length |   Offset | Payload
+  RIFF |   172038 |        0 | WEBP
+  VP8X |       10 |       12 | .........
+  VP8  |   172008 |       30 | .G...*.. .>1..B.!..o.. ......]..
+STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
+ Chunk |   Length |   Offset | Payload
+  RIFF |   187526 |        0 | WEBP
+  VP8X |       10 |       12 | ,........
+  ICCP |      560 |       30 | ...0ADBE....mntrRGB XYZ ........
+  VP8  |   172008 |      598 | .G...*.. .>1..B.!..o.. ......]..
+  EXIF |    12040 |   172614 | II*........................... .
+  XMP  |     2864 |   184662 | <?xpacket begin="..." id="W5M0Mp
+STRUCTURE OF WEBP FILE: exiv2-bug1199.webp
+ Chunk |   Length |   Offset | Payload
+  RIFF |   190112 |        0 | WEBP
+  VP8X |       10 |       12 | ,........
+  ICCP |     3145 |       30 | ...HLino....mntrRGB XYZ ........
+  VP8  |   172008 |     3184 | .G...*.. .>1..B.!..o.. ......]..
+  EXIF |    12040 |   175200 | II*........................... .
+  XMP  |     2864 |   187248 | <?xpacket begin="..." id="W5M0Mp
diff --git a/test/webp-test.sh b/test/webp-test.sh
new file mode 100755
index 0000000..757002e
--- /dev/null
+++ b/test/webp-test.sh
@@ -0,0 +1,87 @@
+#!/bin/bash
+# Test driver for webp
+
+source ./functions.source
+
+(   cd "$testdir"
+
+    num=1199                    # WebPImage
+    printf "WebP " >&3
+    filename=exiv2-bug$num.webp # http://dev.exiv2.org/attachments/download/1033/Stonehenge-with-icc.webp
+    icc_name=exiv2-bug$num.icc
+    exv_name=exiv2-bug$num.exv
+    xmp_name=exiv2-bug$num.xmp
+
+    copyTestFile                        $filename
+    runTest exiv2 -pS                   $filename
+    runTest exiv2 -pR                   $filename
+    runTest exiv2 -pX                   $filename | xmllint --pretty 2 -
+    printf "delete " >&3
+    # test deleting metadata
+    for option in -dC -de -dx -dCe -dCx -dCxe; do
+      copyTestFile                      $filename
+      runTest exiv2 -pS                 $filename
+      runTest exiv2 $option             $filename
+      runTest exiv2 -pS                 $filename
+    done
+
+    printf "insert " >&3
+    printf "ICC "    >&3
+    copyTestFile                        $filename
+    exiv2 -pS                           $filename
+    copyTestFile                        Reagan.tiff
+    exiv2 -pC                           Reagan.tiff > $icc_name
+    exiv2 -iC                           $filename
+    exiv2 -pS                           $filename
+
+if [ 1 == 0 ]; then
+    printf "XMP -iX " >&3
+    # copy the XMP from Reagan.tiff to test file
+    copyTestFile                        Reagan.tiff
+    exiv2 -pX                           Reagan.tiff > $xmp_name;
+    copyTestFile                        $filename
+    exiv2 -pS                           $filename
+    exiv2 -iX                           $filename
+    exiv2 -pS                           $filename
+
+    # copy the XMP from exiv2-bug937.jpg to test file
+    copyTestFile                        exiv2-bug937.jpg
+    exiv2 -pX                           exiv2-bug937.jpg > $xmp_name 2>/dev/null
+    exiv2 -ix                           $filename
+    exiv2 -pS                           $filename
+fi
+
+if [ 1 == 0 ]; then
+    printf "XMP -ix " >&3
+    # copy the metadata from Reagan.tiff to test exv file
+    copyTestFile                        Reagan.tiff
+    exiv2 -ea                           Reagan.tiff
+    mv                                  Reagan.exf $exv_file
+
+    copyTestFile                        $filename
+    exiv2 -pS                           $filename
+    exiv2 -ix                           $filename
+    exiv2 -pS                           $filename
+fi
+
+if [ 1 == 0 ]; then
+    printf "EXIF " >&3
+    copyTestFile                      exiv2-bug937.jpg $filename
+    exiv2 --force -ea                 $filename
+    copyTestFile                      $filename
+    exiv2 -pS                         $filename
+    exiv2 -ie                         $filename
+    exiv2 -pS                         $filename
+fi
+
+) 3>&1 > $results 2>&1
+
+printf "
"
+
+# ----------------------------------------------------------------------
+# Evaluate results
+cat $results | sed 's/\x0d$//' > $results-stripped
+reportTest $results-stripped $good
+
+# That's all Folks!
+##

-- 
exiv2 packaging



More information about the pkg-kde-commits mailing list