[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