Commit Graph

2368 Commits

Author SHA1 Message Date
Robin Mills
3d57bbc6e6 #1074 Work in progress. ICC Jpeg/Png/Tiff exiv2 -eC foo.xxx writes good foo.icc profiles. icc-test.sh is broken and to be investigated. 2016-09-12 17:42:12 +00:00
Robin Mills
9d06081616 #1225 Correction to r4480 to respect the endianness of file and platform 2016-09-12 09:06:18 +00:00
nkbj
44e51a9069 Whitespace fix in r4480. 2016-09-11 16:00:08 +00:00
Robin Mills
c7bca0ce00 #1224 crw-test.sh refactored to use test/functions.source, no long reference sample program crwparse and avoid crash in crwimage.cpp 2016-09-11 15:47:47 +00:00
Robin Mills
9ff2224fd7 #1074. Rollback r4479 which has inflicted a lot harm on the test harness. 2016-09-11 15:31:28 +00:00
Robin Mills
14f64998ac #1225 Fix 2016-09-11 03:19:24 +00:00
Robin Mills
3aaebf50f7 #1074 Added ICC support to tiffimage.writeMetadata(). pngimage.readMetadata() is not complete. 2016-09-09 15:18:59 +00:00
Robin Mills
925fede113 #1223 Correction to r4477 to fix Cygwin build breaker. #include <cstdint> demands C++11 support on GCC 4.9.3 on the buildserver. Code compiles without cstdint and iomanip 2016-09-09 10:04:29 +00:00
Robin Mills
2de6968227 #1223 Thank you to Alexey for reporting this and providing the patch. 2016-09-09 08:26:01 +00:00
Robin Mills
f44f706478 MinGW changes following discussion about building with Qt5.6/MinGW 4.9.2 http://dev.exiv2.org/boards/3/topics/2705 2016-09-07 17:08:27 +00:00
Robin Mills
d7463fd114 #1074 and #1057 Fixing build breakers on Cygwin and msvc MinGW to be further investigaged. add checkSum to test functions 2016-09-07 13:17:47 +00:00
Robin Mills
5cf87e19dd #1074 Correction to r4466 to fix MinGW build breaker on include <sys/select.h> 2016-09-06 23:11:10 +00:00
Robin Mills
b5bc66b36a #1057 Added support for -iXX- 2016-09-06 13:38:18 +00:00
Robin Mills
d801aabd58 #1057. Simplification of r4466 2016-09-06 10:26:06 +00:00
Robin Mills
70407cc8ad #1057 Fixed issues with stdin on Windows which were documented in http://dev.exiv2.org/issues/1057#note-8 2016-09-06 09:56:36 +00:00
Robin Mills
21e7622f0b #1057 Fixed src\exiv2app.hpp formatting. Moved reading stdin from ctor to getStdin(). WIP: unsolved Windows pipe issues. 2016-09-06 07:29:01 +00:00
Robin Mills
14f7f18222 #1057 Correction to r4633 to fix Windows build-breakers (Cygwin/MinGW and msvc) 2016-09-05 20:52:46 +00:00
Robin Mills
984189ebde #1057 Added support for -iC- to read ICC profile from stdin to an image. 2016-09-05 17:58:07 +00:00
Robin Mills
57ee93886a #2120 Fix submitted and appropriate changes to test/icc-test.sh (rewritting ICC in JPG was corrupting file) 2016-09-05 14:43:13 +00:00
Robin Mills
87e9c996a6 #1220 and #1074 Work in progress. Improved -pS for JPEG. #1220 is due to a bug in writing the ICC profile in jpgimage.cpp/doWriteMetadata() 2016-09-05 11:39:29 +00:00
draekko
bf56bbf7fa #825 added printPressure for panasonic makernotes to display hPa values or infinite when value is 65535 for Exif field 0x0086 2016-09-04 11:22:40 +00:00
Robin Mills
3706233c8d #1074 Correction to r4457 to fix msvc build-breaker. 2016-09-01 17:38:04 +00:00
Robin Mills
b7c90140c7 #1074 ICC support in jpgimage.cpp. Add test/icc-test.sh 2016-09-01 16:44:29 +00:00
Robin Mills
9026954816 #1074 Work in progress for ICC/jpg - changes to readMetadata() and printStructure() 2016-09-01 14:17:25 +00:00
Robin Mills
a6ba04d422 #994 Update svn_version.h using svn info 'Last Changed Rev' instead of 'Changed'. This enables exiv2 -vVg svn to identify build branch or trunk. 2016-08-31 18:09:37 +00:00
Robin Mills
97e7905a8b #1060 Thank you to Thomas B for working on this and providing the patch. 2016-08-30 16:33:57 +00:00
Robin Mills
5f9807cbef #1216. Rollback r4448/6/2/1 r4439/38 to restabilize test suite on trunk. r4449 is copy of r4448 to branches/develop 2016-08-30 16:05:45 +00:00
Robin Mills
8ad06d6f17 #1199 Fixing build-breaker when -DDEBUG is used. 2016-08-27 17:36:29 +00:00
sridharb
d78dec24e3 Moved ExifDatum::ignore from exif.hpp to the exif.cpp.
This frees up exif.hpp from needing to include tags_int.hpp.

The downside is that this function is no longer inline.
2016-08-26 13:35:50 +00:00
sridharb
d05634a2e3 Needs to be in the solution. 2016-08-26 11:15:51 +00:00
Robin Mills
ae4e63b27a #1214 Patch submitted r4440. Thank You to Ondřej for reporting this and providing the patch. 2016-08-26 09:54:50 +00:00
sridharb
48294e66c0 Summary: Restored jbeu's formatting 2016-08-26 06:27:52 +00:00
sridharb
8a8ec67136 This is mainly a fix for #1206, but also interprets missing Canon Exif
Tags in exiv2 with the help of Phil Harvey's exiftool (see
http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/Canon.html).

Even with these changes (toward #1204 and #1205), exiv2 lags behind
exiftool in some areas of interpretation of Canon tags. Ideally, a
catch-up effort to bring the code in source: canonmn.cpp in line with
lib/Image/ExifTool/Canon.pm. v10.25 of exiftool was used as reference
for this change.

#1206 seeks to address the fact that when Canon does not have data for
certain tags, they use specific default values in those fields. These
default values need to be ignored and not displayed. This change
brings this feature to exiv2, something that already exiftool does.

With regards to implementation, the struct TagInfo in source: tags.hpp
is extended with four new fields.

The first field is a bool that if set to true (default false), denotes
that this field has ignorable default values.

The second field is the default value that needs to be ignored. This
can be of four types (String, Long, Float, Rational). These four types
were chosen as they had conversion functions in the Value class.

The third field is the comparison type (default equal_to). There are
six comparison types possible (equal_to, not_equal_to, less,
less_equal, greater, greater_equal). This is the comparison applied to
the value stored in the tag's field and the default value specified
above. For e.g. if the value in the tag Exif.CanonCs.RecordMode is -1,
then it needs to be ignored.

The fourth field is the data type (default Long). This could have been
guessed from the type of the second field, but that would necessitate
making this structure into a template calling for changes in multitude
of files.

Usage: In source: canonmn.cpp, several exif tags now have ignorable
default properties. I will list a few examples.

1. Exif.CanonCs.FocusMode:        TagInfo(0x0007, "FocusMode", N_("Focus Mode"), N_("Focus mode setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsFocusMode)),

There are no changes - i.e. this is an example of how the TagInfo
structure was being populated.

2. Exif.CanonCs.RecordMode:        TagInfo(0x0009, "RecordMode", N_("Record Mode"), N_("Record mode setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsRecordMode), true, s_1_),

Take a look at the two new arguments. The first one (true) specifies
that there is a default value that can be ignored. The second one s_1_
specifies the value (-1, in this case) to be ignored.

	const UShortValue CanonMakerNote::s_1_(65535, unsignedShort); // Till bug is resolved

Note s_1_ is temporarily having the value 65535 till #1203 that causes
signedShorts to be interpreted as unsignedShorts is resolved.


3. Exif.CanonSi.TargetAperture:         TagInfo(0x0004, "TargetAperture", N_("Target Aperture"), N_("Target Aperture"), canonSiId, makerTags, unsignedShort, 1, printSi0x0015, true, us0_, TagInfo::less_equal),

Note the third argument TagInfo::less_equal. This combined with the
second argument us0_ (the number 0) signifies that any values in this
tag that are less than or equal (<=) to 0 should be ignored.

4. 		TagInfo(0x0028, "ImageUniqueID", N_("Image Unique ID"), N_("Image Unique ID"), canonId, makerTags, asciiString, -1, printValue, true, s0x16_, TagInfo::equal_to, TagInfo::String),

The previous examples have all been of Long type. This shows a case
where the default value is a string.

	const AsciiValue CanonMakerNote::s0x16_("0000000000000000");

Once these tag values have been defined, the actual mechanics of
ignoring these default values happens in Image::exifData().

Before the exifData is returned, we loop through the data, ask the
data whether it needs to be ignored (which in turn checks its
underlying tagInfo and compares it with the default value, if
specified) and if so, deletes that element.

A compile-time switch called EXV_DONT_IGNORE_UNDEFINED which when set
to a non-zero value will cause the behavior to revert back to the
original where all values are reported irregardless of the fact that
they need to be ignored.
2016-08-26 05:36:05 +00:00
Robin Mills
fe6a016957 #922 Correction to r4434. Fixing another msvc build breaker. 2016-08-25 19:41:20 +00:00
Robin Mills
8377456786 #922 Correction to r4344 to handle msvc build breaker. 2016-08-25 18:32:12 +00:00
Robin Mills
13be017d12 #922 exiv2 -dI deletes all IPTC chunks in a JPEG. 2016-08-25 16:20:38 +00:00
tbeu
239625e66e Fix typos (comments only) 2016-08-24 19:39:59 +00:00
tbeu
1ba4e46855 Fix some spelling 2016-08-24 18:45:11 +00:00
Robin Mills
705bc14795 #1057 man page update for tgt- (stdin/stdout). 2016-08-24 09:05:27 +00:00
Robin Mills
8b9265b80d #1064 Fix -iX to merge (not replace) metadata from source to destination. 2016-08-23 19:40:56 +00:00
Robin Mills
fa24a8a614 #1199 Fixing webp-test.sh. Use -iXX to inject XMP into file without XMP->Exif/IPTC conversion 2016-08-22 20:54:24 +00:00
Robin Mills
027b3917ec #1199 Spit'n'polish on the loops in printStructure(), metadataRead() and doWriteMetadata(). Added tests with even byte count for ICCP and XMP Chunks. 2016-08-20 14:11:54 +00:00
draekko
ed7b20a20e #1199 fixed typo from cut/paste in previous commit causing exif flag not to be set for VP8X chunk. 2016-08-20 13:11:22 +00:00
draekko
c858b7d44e #1199 minor code update, updated comments, added constants for headers, bit definitions, and misc. 2016-08-20 12:42:24 +00:00
Robin Mills
9a061d895e #1199 Fix WebP printStructure(), readMetadata() and doWriteMetadata() to handle payload padding byte. Extended webp-test to cover -iX, -ix and -ie 2016-08-20 09:43:34 +00:00
draekko
600eb0d3dd #1199 Fixed issue with -ix, wasnt padding odd sized chunks for exif/xmp. 2016-08-20 00:33:23 +00:00
Robin Mills
d369aa67d5 #1199 Test suite changes and associate fixes to the code. 2016-08-19 18:59:28 +00:00
Robin Mills
b3c6de6274 #1210 C++11/regex build-breaker in src/version.cpp. Thank You to Zulan for reporting this and providing a patch. 2016-08-19 14:46:28 +00:00
Robin Mills
0462d2bf0f #1199. Adding tests for -iC. Fixed bug in -pC. Test code added for -ix and -ie, however I don't think the options are working correctly. 2016-08-19 10:10:06 +00:00
draekko
b318674f75 #1199 fixed -de -dc options, add -iC option to insert icc profiles 2016-08-19 00:54:49 +00:00