From ebc26da861cbe7b9725e9c8828730ee4c9d5e3de Mon Sep 17 00:00:00 2001 From: Earl Ou Date: Tue, 28 Aug 2012 18:29:09 +0800 Subject: Save ByteOrder in the ExifData This is useful for decoding undefined data. Change-Id: Ied6864c4d3a8e05ca47215bf5358bd4196f2d3a0 --- src/com/android/gallery3d/exif/ExifData.java | 13 +++++++++++++ src/com/android/gallery3d/exif/ExifParser.java | 7 +++++++ src/com/android/gallery3d/exif/ExifReader.java | 2 +- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/com/android/gallery3d/exif/ExifData.java b/src/com/android/gallery3d/exif/ExifData.java index 5b0e3d8e4..14d482221 100644 --- a/src/com/android/gallery3d/exif/ExifData.java +++ b/src/com/android/gallery3d/exif/ExifData.java @@ -16,6 +16,7 @@ package com.android.gallery3d.exif; +import java.nio.ByteOrder; import java.util.ArrayList; /** @@ -28,6 +29,11 @@ public class ExifData { private final IfdData[] mIfdDatas = new IfdData[IfdId.TYPE_IFD_COUNT]; private byte[] mThumbnail; private ArrayList mStripBytes = new ArrayList(); + private final ByteOrder mByteOrder; + + public ExifData(ByteOrder order) { + mByteOrder = order; + } /** * Gets the IFD data of the specified IFD. @@ -101,4 +107,11 @@ public class ExifData { public byte[] getStrip(int index) { return mStripBytes.get(index); } + + /** + * Gets the byte order. + */ + public ByteOrder getByteOrder() { + return mByteOrder; + } } \ No newline at end of file diff --git a/src/com/android/gallery3d/exif/ExifParser.java b/src/com/android/gallery3d/exif/ExifParser.java index bd8a97dac..268c989b0 100644 --- a/src/com/android/gallery3d/exif/ExifParser.java +++ b/src/com/android/gallery3d/exif/ExifParser.java @@ -713,4 +713,11 @@ public class ExifParser { this.isRequested = isRequireByUser; } } + + /** + * Gets the byte order of the current InputStream. + */ + public ByteOrder getByteOrder() { + return mTiffStream.getByteOrder(); + } } \ No newline at end of file diff --git a/src/com/android/gallery3d/exif/ExifReader.java b/src/com/android/gallery3d/exif/ExifReader.java index c259461f2..d8083b2dd 100644 --- a/src/com/android/gallery3d/exif/ExifReader.java +++ b/src/com/android/gallery3d/exif/ExifReader.java @@ -31,7 +31,7 @@ public class ExifReader { public ExifData read(InputStream inputStream) throws ExifInvalidFormatException, IOException { ExifParser parser = ExifParser.parse(inputStream); - ExifData exifData = new ExifData(); + ExifData exifData = new ExifData(parser.getByteOrder()); int event = parser.next(); while (event != ExifParser.EVENT_END) { -- cgit v1.2.3