Skip to content

Commit db9b141

Browse files
authored
Merge pull request #642 from AndyDragon/andydragon/omsystem
Added code to parse OM System II makernote (uses Olympus II makernote)
2 parents e940f90 + 8ff04bc commit db9b141

File tree

1 file changed

+17
-10
lines changed

1 file changed

+17
-10
lines changed

Source/com/drew/metadata/exif/ExifTiffHandler.java

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -435,16 +435,17 @@ private boolean processMakernote(final int makernoteOffset,
435435

436436
String cameraMake = ifd0Directory == null ? null : ifd0Directory.getString(ExifIFD0Directory.TAG_MAKE);
437437

438-
final String firstTwoChars = getReaderString(reader, makernoteOffset, 2);
439-
final String firstThreeChars = getReaderString(reader, makernoteOffset, 3);
440-
final String firstFourChars = getReaderString(reader, makernoteOffset, 4);
441-
final String firstFiveChars = getReaderString(reader, makernoteOffset, 5);
442-
final String firstSixChars = getReaderString(reader, makernoteOffset, 6);
443-
final String firstSevenChars = getReaderString(reader, makernoteOffset, 7);
444-
final String firstEightChars = getReaderString(reader, makernoteOffset, 8);
445-
final String firstNineChars = getReaderString(reader, makernoteOffset, 9);
446-
final String firstTenChars = getReaderString(reader, makernoteOffset, 10);
447-
final String firstTwelveChars = getReaderString(reader, makernoteOffset, 12);
438+
final String firstTwoChars = getReaderString(reader, makernoteOffset, 2);
439+
final String firstThreeChars = getReaderString(reader, makernoteOffset, 3);
440+
final String firstFourChars = getReaderString(reader, makernoteOffset, 4);
441+
final String firstFiveChars = getReaderString(reader, makernoteOffset, 5);
442+
final String firstSixChars = getReaderString(reader, makernoteOffset, 6);
443+
final String firstSevenChars = getReaderString(reader, makernoteOffset, 7);
444+
final String firstEightChars = getReaderString(reader, makernoteOffset, 8);
445+
final String firstNineChars = getReaderString(reader, makernoteOffset, 9);
446+
final String firstTenChars = getReaderString(reader, makernoteOffset, 10);
447+
final String firstTwelveChars = getReaderString(reader, makernoteOffset, 12);
448+
final String firstFourteenChars = getReaderString(reader, makernoteOffset, 14);
448449

449450
boolean byteOrderBefore = reader.isMotorolaByteOrder();
450451

@@ -459,6 +460,12 @@ private boolean processMakernote(final int makernoteOffset,
459460
// http://exiv2.org/makernote.html
460461
pushDirectory(OlympusMakernoteDirectory.class);
461462
TiffReader.processIfd(this, reader, processedIfdOffsets, makernoteOffset + 12, makernoteOffset);
463+
} else if ("OM SYSTEM\0\0\0II".equals(firstFourteenChars)) {
464+
// Olympus Makernote (OM SYSTEM)
465+
// Note that data is relative to the beginning of the makernote
466+
// http://exiv2.org/makernote.html
467+
pushDirectory(OlympusMakernoteDirectory.class);
468+
TiffReader.processIfd(this, reader, processedIfdOffsets, makernoteOffset + 14, makernoteOffset);
462469
} else if (cameraMake != null && cameraMake.toUpperCase().startsWith("MINOLTA")) {
463470
// Cases seen with the model starting with MINOLTA in capitals seem to have a valid Olympus makernote
464471
// area that commences immediately.

0 commit comments

Comments
 (0)