History log of /frameworks/base/media/java/android/media/ExifInterface.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
4564cbceb4471ed3e318557a6a1c7f0999ff0d46 10-Mar-2017 Hyundo Moon <hdmoon@google.com> ExifInterface: Correct thumbnail compression info

Exifinterface sets the thumbnail's compression information as JPEG
whenever the image has no compression tag in it. As a result, even
an image with no thumbnail can have the thumbnail compression info.
This CL fixes the problem.

Test: Run CTS test on angler
Change-Id: I4b06956b1bac672e1bf235df6f458b31e8ee82bb
/frameworks/base/media/java/android/media/ExifInterface.java
644e1375e80738d3c14108406937d5317b02ce2e 23-Jan-2017 Hyundo Moon <hdmoon@google.com> ExifInterface: Accept decimal values for RATIONAL formats

Prior to android N, ExifInterface.setAttributes() accepted the
decimal values for SRATIONAL/URATIONAL formats. However in android N,
decimal values for RATIONAL formats are rejected. Since this behavior
breaks the backward compatibility, we should make setAttributes()
accept decimal values as before.

Bug: 34269464
Test: flashed modified build on angler and tested with an app
Change-Id: I9a77ce341c8c8c3ea74c8592b5a821243eb0257d
/frameworks/base/media/java/android/media/ExifInterface.java
dbe99b56ec6a3ba0c7800e75265fd08127d13d71 04-Nov-2016 NIEJuhu <niejuhu@xiaomi.com> ExifInterface: fix NegativeArraySizeException

The IFD entry has a 4-byte field COUNT. It is read as int type
and is used as array size by ExifInterface. If a crafted JPEG
file contains a negative value, a NegativeArraySizeException
occurs.

Test: passed ExifInterface CTS
Change-Id: Ief29936400f04636928df09e7f357cbf25345383
Signed-off-by: NIEJuhu <niejuhu@xiaomi.com>
/frameworks/base/media/java/android/media/ExifInterface.java
89779299f1ec998172229ecd6db10f7656494b98 17-Nov-2016 Hyundo Moon <hdmoon@google.com> Fix wrong JavaDoc parameter names of ExifInterface.getJpegAttributes()

Test: By comparing the parameter names manually.
Change-Id: I3f67e43174754a73d498be6bf2882481cd80a648
/frameworks/base/media/java/android/media/ExifInterface.java
4d3a4132c2ee8fc90f9efc92ca422e936ddbd1bb 14-Oct-2016 Sungsoo <sungsoo@google.com> resolve merge conflicts of 3fc6b8f to master

Change-Id: I004b34699fd997805d6c37753c48fe1f1d226095
3fc6b8fd0f503bf0c1144ade856150d4ff02d18e 14-Oct-2016 Sungsoo <sungsoo@google.com> ExifInterface: Provide backward compatibility am: 2dbe166801 am: bc813cd510 am: 36f64a2f0c
am: b68d0855c4

Change-Id: I40df333d3b19911be333e5c466dfe01a3db4bd70
2dbe166801c531474ce566f804660b58edab1bef 12-Oct-2016 Sungsoo <sungsoo@google.com> ExifInterface: Provide backward compatibility

ExifInterface.saveAttribute() didn't throw UnsupportedOperationException
before. Use IOException instead of UnsupportedOperationException for
backward compatibility.

Bug: 30936376, Bug: 32068647, Bug: 31319086
Change-Id: Ifb478db3af820eb846c5373d3a284367da3495a0
/frameworks/base/media/java/android/media/ExifInterface.java
e1b15e21173b87d7f28021da70488c6464128be9 28-Sep-2016 Sungsoo <sungsoo@google.com> ExifInterface: Update javadoc for saveAttributes am: abf5b4cbf3 am: d0a8a69034 am: 6e8eba7238
am: 855b9126e1

Change-Id: I4ce94f6368f41dcbf760f164b13c9d6d8055a42b
6e8eba7238b7eff83686e21745068a0386e7968e 28-Sep-2016 Sungsoo <sungsoo@google.com> ExifInterface: Update javadoc for saveAttributes am: abf5b4cbf3
am: d0a8a69034

Change-Id: I1d3369e609d668dc402d4b30eb0c4247980e6e47
d0a8a690341ee630162d92f590090a7005afd773 28-Sep-2016 Sungsoo <sungsoo@google.com> ExifInterface: Update javadoc for saveAttributes
am: abf5b4cbf3

Change-Id: Icdd289f513f2a576b50d0f3ddf278a1c1710d8b5
abf5b4cbf37c014b47d312ef77f48bf00422fd96 27-Sep-2016 Sungsoo <sungsoo@google.com> ExifInterface: Update javadoc for saveAttributes

Bug: 31319086
Test: Checked the created javadoc with "make docs"
Change-Id: I97c77ba4f00a95bc5eedf1dcee942aebd2d89ccb
/frameworks/base/media/java/android/media/ExifInterface.java
4c3668d7aafa8215a136fa095175b0d3b2893eec 10-Sep-2016 Sungsoo <sungsoo@google.com> DO NOT MERGE) ExifInterface: Make saveAttributes throw an exception before change
am: 56ea7b4901

Change-Id: If8497c9ad514037ce4c1f72dee6f77426d3ecd50
56ea7b490107e4531ab4db6f74671c34b5c59fd3 23-Aug-2016 Sungsoo <sungsoo@google.com> DO NOT MERGE) ExifInterface: Make saveAttributes throw an exception before change

ExifInterface object can be created with a unsupported file format.
If saveAttribute is called with an unsupported file format, ExifInterface
makes the file corrupted. This CL prevents those cases by throwing
an exception before making any change on the file.

Bug: 30936376
Change-Id: I115a42601c774062485974042464abb0d65c35e9
(cherry picked from commit a8f9a075b14c526a0de75c2ade81ebc4e05e4ef8)
/frameworks/base/media/java/android/media/ExifInterface.java
65207118371a4a70e4c3d06a211b69edf2e2dfb3 26-Aug-2016 Colin Cross <ccross@android.com> resolve merge conflicts of 77a7787 to master

Change-Id: I17f14a88b5b654a8860a09f610e797af15cedecc
77a7787cab720c2b4f06398f4a0340b5184a2a59 24-Aug-2016 Sungsoo <sungsoo@google.com> ExifInterface: Make saveAttributes throw an exception before change am: a8f9a075b1
am: 6dfc7abaf9

Change-Id: Iecc3f1dcffd540f005312e8a301335ea02cd89b9
a8f9a075b14c526a0de75c2ade81ebc4e05e4ef8 23-Aug-2016 Sungsoo <sungsoo@google.com> ExifInterface: Make saveAttributes throw an exception before change

ExifInterface object can be created with a unsupported file format.
If saveAttribute is called with an unsupported file format, ExifInterface
makes the file corrupted. This CL prevents those cases by throwing
an exception before making any change on the file.

Bug: 30936376
Change-Id: I115a42601c774062485974042464abb0d65c35e9
/frameworks/base/media/java/android/media/ExifInterface.java
9dcaad655e8db88035d37ad47be8c01c548b9d85 19-Aug-2016 Jin Seok Park <jinpark@google.com> Merge "ExifInterface: Refactor custom input stream class"
0c1640aeb49175ab45306ac7a325c9ac9a602c5d 18-Aug-2016 Jin Park <jinpark@google.com> ExifInterface: Refactor custom input stream class

ExifInterface uses a class named ByteOrderAwarenessDataInputStream
to handle LITTLE_ENDIAN byte-ordered data. This class can only be
initialized with a byte array, which is inefficient for large RAW
files. This CL adds support for initializing with an input stream.

Bug: 30749097
Change-Id: I4e95fb2157115c571ed24ec3746a3c6db752bbdc
/frameworks/base/media/java/android/media/ExifInterface.java
cabb85ca4b8bcd6fe7e5ed52d90942ddc2c872bf 18-Aug-2016 Jin Park <jinpark@google.com> ExifInterface: Update Pixel X/Y Dimension tag values

Current code checks Pixel X/Y Dimension tags when updating primary
image size values. This creates a problem when the image data are not
placed properly (IFD_TYPE_PRIMARY may need to be swapped with
IFD_TYPE_PREVIEW). This CL moves the updating code to after the
images have been properly placed.

Bug: 29409358
Change-Id: Ia70b5b292812c1e7812e9fc8ca2434998cf1b7f9
/frameworks/base/media/java/android/media/ExifInterface.java
9a03dd10c1334a2998cfb99fead2e5a78dfdee98 12-Aug-2016 Jin Seok Park <jinpark@google.com> Merge "ExifInterface: Refactor IFD type variables"
d0e63a841a0d068537bb1de0f36970eba3739233 09-Aug-2016 Jin Park <jinpark@google.com> ExifInterface: Refactor IFD type variables

ExifInterface uses an ambiguous term called "hint" to indicate the
type of IFD that needs to be parsed. This CL substitutes the use of
such term with IfdType class.

Bug: 30749097
Change-Id: Id97d09882f37818978b773d55846707915efeb49
/frameworks/base/media/java/android/media/ExifInterface.java
c900c660bbecce00175aabf55854d9289b2d4af4 11-Aug-2016 Jin Seok Park <jinpark@google.com> Merge "ExifInterface: Remove JNI code"
0dd9e9cac829431981fb2740bf6e889559ed50f5 09-Aug-2016 Jin Park <jinpark@google.com> ExifInterface: Remove JNI code

This CL finalizes porting piex into ExifInterface by removing JNI
methods and class as well as methods handling data received from
JNI method calls.

Bug: 29409358
Change-Id: I8f6c761e50cb29476dc0784f58908ec35e3c70e9
/frameworks/base/media/java/android/media/ExifInterface.java
2574920992afe03d5c73a0a8d443fcfa6b6676bb 08-Aug-2016 Jin Park <jinpark@google.com> ExifInterface: Add support for DNG thumbnail cases

DNG files have a unique way of identifying their image compression
type. This CL addresses this issue by adding support for cases
mentioned in the DNG Specifications.

Bug: 30727870
Change-Id: I416b9fb49872e9c878193f346dcaad5f45b0b995
/frameworks/base/media/java/android/media/ExifInterface.java
3d6fcede38161adb3bf615514e94bb2d793e664e 10-Aug-2016 Jin Seok Park <jinpark@google.com> Merge "ExifInterface: Remove AssetInputStream dependency"
baad7d84f46e8f1fd871b7f6d38093bca39045ec 09-Aug-2016 Jin Park <jinpark@google.com> ExifInterface: Remove AssetInputStream dependency

ExifInterface calls native method to retrieve thumbnail data from an
AssetInputStream data. This CL removes that dependecy.

Bug: 29409358
Change-Id: I890b0e813733a5dcaa5480ee48e68c63fc079114
/frameworks/base/media/java/android/media/ExifInterface.java
e6e4e8d7a5f8055f6a11b24866feebbab57c9b4e 09-Aug-2016 Jin Park <jinpark@google.com> ExifInterface: Fix function for image size update

Existing code assumes that the primary image data is correctly placed.
Since this may be a mistaken assumption, this CL checks the
NewSubfilType value and updates the image size values only if the
tag value equals the original resolution image.

Bug: 29409358
Change-Id: I51cffba870ee29d76118b4c8b72290d1010c6462
/frameworks/base/media/java/android/media/ExifInterface.java
043785660ca6450c96408377fe563f627d036353 21-Jul-2016 Jin Park <jinpark@google.com> ExifInterface: Process uncompressed thumbnail

An uncompressed thumbnail may use 24-bit RGB format to store image
data. This CL handles uncompressed thumbnail images and creates a
bitmap object by using the given byte data.

Bug: 28156704
Change-Id: Ie650de4398004dfa74519817e417c7002d4fbdbb
/frameworks/base/media/java/android/media/ExifInterface.java
b3108a07575ce6d7ce6ac4b64ec564d6d7099882 25-Jul-2016 Jin Park <jinpark@google.com> ExifInterface: Add support for multiple RAW test files

ARW, CR2, NEF, NRW, SRW have slight modifications to the data
structures described in TIFF Specifications. This CL handles these
modifications.

Bug: 29409358
Change-Id: I10c6b17a25d237b71d311705dfd80f7be783cd1d
/frameworks/base/media/java/android/media/ExifInterface.java
9ff5cefd4e22503bafea28db9a5a7bc0cc455832 14-Jul-2016 Jin Park <jinpark@google.com> ExifInterface: Add PEF, RW2 files parse support

PEF, RW2 files have unique ways of storing their data. This CL adds code
that checks whether a file is one of these formats and parses the data
according to specifications.

Bug: 29409358
Change-Id: I6c368b4865414062f9f535bf180d7d7bf6984a7d
/frameworks/base/media/java/android/media/ExifInterface.java
1c1b2b18d376ae8e10215042207a7e0c6c98f6c2 14-Jul-2016 Jin Park <jinpark@google.com> ExifInterface: Add ORF file parse support

A ORF file has a unique way of storing its data. This CL adds code
that checks whether a file is a ORF file format and parses the data
according to specifications.

Bug: 29409358
Change-Id: I498408a9e02dfe567c2d427b037c30b06af74d7e
/frameworks/base/media/java/android/media/ExifInterface.java
68bda838d02877b2d21f94a386a1cacfd5addb1b 21-Jul-2016 Jin Park <jinpark@google.com> ExifInterface: Remove unnecessary logging of exceptions

ExifInterface currently logs exceptions when it encounters invalid
markers and when the file format is unsupported by Piex Library.
This CL suppresses such logs with the DEBUG marker.

Bug: 30252745
Change-Id: Ia69183eaa5bf7ac2ff1dc95c0919b23b4a9f8c4e
/frameworks/base/media/java/android/media/ExifInterface.java
ffe4efc3192d8831c8589aad6045466df7a41fd7 05-Jul-2016 Jin Park <jinpark@google.com> ExifInterface: Add RAF file parse support

A RAF format file has a unique way of storing its data. This CL adds
code that checks whether a file is a RAF file format and parses the
data according to specifications.

Bug: 29409358
Change-Id: If37d4ba8de47cdbacd524a07148ba6c14f873259
/frameworks/base/media/java/android/media/ExifInterface.java
559c028fc8d686f665f52545b5eb3a7992e65322 05-Jul-2016 Jin Park <jinpark@google.com> ExifInterface: Extract primary image length/width values

The primary image may not contain the tags for ImageLength and
ImageWidth values if it uses the JFIF specification. This CL searches
the data to retrieve those necessary values.

Bug: 29409358
Change-Id: I850768af38b7b723e93833a70a2238f3fe1cc29b
/frameworks/base/media/java/android/media/ExifInterface.java
1674546669b1f82955aeb86c17361c7a97d0ebb3 30-Jun-2016 Jin Park <jinpark@google.com> ExifInterface: Add support for preview images

A RAW format file may contain a preview image, in addition to a
primary image and a thumbnail image. This CL detects and parses the
preview image metadata.

Bug: 29409358
Change-Id: Ide176ea0d93228b45c50a97f82273132de25e27a
/frameworks/base/media/java/android/media/ExifInterface.java
e70aab7f8ac795bab31a30583b32b38d5869796d 30-Jun-2016 Jin Park <jinpark@google.com> ExifInterface: Update image length/width values

A RAW file may store extra pixels around the edges of the image,
resulting in width and length tags that are larger than they actually
are. This CL addresses this issue by finding the actual values and
updating accordingly.

Bug: 29409358
Change-Id: I804bdbd7883ea860fe3425e6ce9c71334d1341a0
/frameworks/base/media/java/android/media/ExifInterface.java
a59d058e1509153ebc71e2cd3529d565f957aa22 16-Jun-2016 Jin Park <jinpark@google.com> ExifInterface: Remove dependency on Piex for DNG Test File

This CL removes dependency from Piex for a DNG Test file currently in
ExifInterfaceTest.java.
Specific functions include identifying and setting the byte order of
the data, parsing and saving Exif tags, and retrieving thumbnail
image data and information.
The marker HANDLE_RAW will determine whether to use Piex or not.

Bug: 29409358
Change-Id: I4cd9916ac0c6f294fc44d8b76f52d456aeee8cdc
/frameworks/base/media/java/android/media/ExifInterface.java
28532d00267c73b8e0fa5235169fa72c414e1cd0 21-Apr-2016 Tobias Thierer <tobiast@google.com> frameworks/base: Avoid Long object allocations in Long.valueOf()

Replace usages where the Long is immediately unboxed or thrown
away with Long.parseLong().
In TaskRecord.java, I also fixed up similar uses of
{Boolean,Integer}.valueOf()

Tested: built frameworks/base successfully.

Bug: 28289401
(cherry picked from commit 4bd017d6a5437f153b2b0a149a5dde0b85bf6907)

Change-Id: Icfa4708946e774f4a1bacf185c3fd11a7087017e
/frameworks/base/media/java/android/media/ExifInterface.java
0e7d22535d4b3d3b9e6f520c5837b2d52629529c 06-Apr-2016 Jaesung Chung <jaesung@google.com> ExifInterface: keep the original metadata data instead of strings

This CL makes ExifInterface store the tag values as the original forms
and the format validiation is added that compares the given value and
the data format specificed in EXIF specification in order to keep the
valid tag values only.

Bug: 27583378, Bug: 27614052, Bug: 28075709
Change-Id: If60bbddefe74c4b87b4ce64b5fc79e467e36a5b9
/frameworks/base/media/java/android/media/ExifInterface.java
c048c5f74a07ddf341533610436c7f1d30dd7714 07-Apr-2016 Jaesung Chung <jaesung@google.com> ExifInterface: inform the developers to close their FD/streams

After use of constructors for FD/Streams, developers should close their
FD/streams.

Bug: 27948392
Change-Id: I6c26213d6804791e6d72d5830566f63e5ed57284
/frameworks/base/media/java/android/media/ExifInterface.java
8884af3ee9738a8642f4a5e0f6af3fc3352bcbf4 01-Apr-2016 Insun Kang <insun@google.com> ExifInterface: Code clean up

Replaces deprecated constants with newly added constants in the actual
implementation.

Bug: 27932489
Change-Id: Id54236a05127cd7ce3bf0668c002635fb86489a9
/frameworks/base/media/java/android/media/ExifInterface.java
d37577d1094de1a93c61502df5738b56433b3e70 01-Apr-2016 Jaesung Chung <jaesung@google.com> Merge "ExifInterface: deprecate duplicated tags" into nyc-dev
e1d0cabb5f4ccc43d7fa1d84a02a87a8683f8537 31-Mar-2016 Tomasz Mikolajewski <mtomasz@google.com> Merge "Unhide ExifThumbnail.getThumbnailRange() and make it match the comment." into nyc-dev
0ae6bdfe37e8a41cfdc74f3b5f9add2ed40394a0 31-Mar-2016 Jaesung Chung <jaesung@google.com> ExifInterface: deprecate duplicated tags

Bug: 27932489
Change-Id: I423a4eab875aec80cf0a2e4c2911e8b5c88fd0d7
/frameworks/base/media/java/android/media/ExifInterface.java
2b57efb262fe9ce2c54583f94c18b23fc17b2002 10-Mar-2016 Tomasz Mikolajewski <mtomasz@google.com> Unhide ExifThumbnail.getThumbnailRange() and make it match the comment.

Bug: 27579803
Change-Id: If9fe16976cfbc0760a6afb3043d35e0ee387945c
/frameworks/base/media/java/android/media/ExifInterface.java
4118ca86275b7bba6f8722bd3f03e66696b09f78 29-Mar-2016 Jaesung Chung <jaesung@google.com> ExifInterface: keep tags in the original tag groups

Previously ExifInterface saved its tags in the all possible IFD tags via
setAttribute() method even it already knew the right IFD group for those
tags. In this CL, it introduces updateAttribute() and removeAttribute()
methods in order to maintain the internal IFD tags and its values
according to its original EXIF saving states in the given JPEG file.

Bug: 27583378
Change-Id: Ie49163c8c9bdd38b575ccd76938879ccddcd547b
/frameworks/base/media/java/android/media/ExifInterface.java
e468a67d591225da928a49b783e01622cb2390c7 24-Mar-2016 Jaesung Chung <jaesung@google.com> Merge "ExifInterface: fix creating pointer tags which indicate 0 offset" into nyc-dev
616a42f982fee9ab22adc11a0863728172254890 23-Mar-2016 Jaesung Chung <jaesung@google.com> ExifInterface: fix creating pointer tags which indicate 0 offset

When saving attributes(that it writes JPEG again.), now ExifInterface
generates some uncessary pointer tags which refer to an empty EXIF IFD
group, that makes a warning message by ExifInterface when reading again,
which warns that the value of the pointer tag pointing to is invalid.

Bug: 27583378
Change-Id: Id0170c5644541565c98fe4978284098e6664c395
/frameworks/base/media/java/android/media/ExifInterface.java
976bbaccc47daa700a9ac2fa4fe9b0b759cf343a 23-Mar-2016 Jaesung Chung <jaesung@google.com> Merge "ExifInterface: close the resource after reading EXIF data explicitly" into nyc-dev
c247791db29ec4492772a3ae33fed5915e7a0170 15-Mar-2016 Jaesung Chung <jaesung@google.com> ExifInterface: close the resource after reading EXIF data explicitly

- In case of giving an argument of the image file name or descriptor,
we created a InputStream at the inside of ExifInterface, close them
properly.
- Developers should take care of closing input streams when they use
input streams since they made those input streams.

Bug: 27636804
Change-Id: I9a3a75b1b55dcb2718a60e14814a04cad939d22c
/frameworks/base/media/java/android/media/ExifInterface.java
42ac0d00153cf8cd4c89cb9397c937be4e8f36e3 22-Mar-2016 Jaesung Chung <jaesung@google.com> ExifInterface: fix regression of re-writing JPEG

Bug: 27583378
Change-Id: I052dfedbb1393705eba378de5eaf3636ed0e65ea
/frameworks/base/media/java/android/media/ExifInterface.java
285bbbbda45f51f53d18144b7e65edb88c888f1c 22-Mar-2016 Jaesung Chung <jaesung@google.com> Merge "ExifInterface: fix logs" into nyc-dev
f2a1076cd3d8fa1e5e6b9ced4380860e720675f7 22-Mar-2016 Jaesung Chung <jaesung@google.com> Merge "ExifInterface: fix writing STRING and SRATIONAL formats" into nyc-dev
c2916968aa8e470b3d62e36e752e1567e69972f3 20-Mar-2016 Jaesung Chung <jaesung@google.com> ExifInterface: fix logs

- Give more explanations on dealing with files failed to process.
- Log and return immediately when handling lost JPEG files.
- Minor fixes in logging.

Bug: 27583378, Bug: 27587980
Change-Id: Id9a3d137e5f173fa0e6313402e5dc482a5efd57c
/frameworks/base/media/java/android/media/ExifInterface.java
f9e0f20b28f3cd05d391ff8d49d27782e0f71b41 18-Mar-2016 Jaesung Chung <jaesung@google.com> Merge "ExifInterface: do not throw an Exception when XMP" into nyc-dev
d1e20d2c7a25335bf48a125a08fde820714326d4 14-Mar-2016 Jaesung Chung <jaesung@google.com> ExifInterface: fix writing STRING and SRATIONAL formats

This CL makes ExifInterface determine the data format of rational
numbers and the values which include several components for exif entry
correctly.

Bug: 27614052
Change-Id: Ic3ea64889fad06ef5f636e4635ab7803a9c9ae29
/frameworks/base/media/java/android/media/ExifInterface.java
36a20cdde3176f24279e2382f878cecdbecafa9d 16-Mar-2016 Jaesung Chung <jaesung@google.com> Merge "ExifInterface: ignore exceptions when getting wrong images" into nyc-dev
5fa031182bf30e2893f00f7f61338b5610bbebe7 10-Mar-2016 Jaesung Chung <jaesung@google.com> ExifInterface: do not throw an Exception when XMP

In JPEG, an APP1 section can contain EXIF or XMP. The old code throws an
Exception when XMP APP1 segment is showns.

Bug: 27580432
Change-Id: If42197ea0c33ec4446302c969b42afd3d4b4e3c3
/frameworks/base/media/java/android/media/ExifInterface.java
49371caff0294b474d97ba11fb9c2bb166052d66 14-Mar-2016 Jaesung Chung <jaesung@google.com> ExifInterface: handle the invalid offsets and count numbers

Some JPEG images generated by various camera vendors have wrong offsets
and invalid numbers for indicating the size of components. Instead of
throwing exceptions, this CL makes Exifinterface ignore these cases to
read the information without losing contents already parsed.

Bug: 27583378
Change-Id: Ie8ee0bf49283ef519f4f31c5b8ba78ce3f82fe92
/frameworks/base/media/java/android/media/ExifInterface.java
1043f56185ee4abb0246ebe44eea7e391802d4fa 14-Mar-2016 Jaesung Chung <jaesung@google.com> ExifInterface: ignore exceptions when getting wrong images

In order to maintain compatibility with the old versions of
ExifInterface, non-JPEG image files, for instance, PNG, GIF and so on,
need to be handled by generating an empty result rather than throwing
an exception in the constructor. And corrupted JPG files also should be
handled in the same way.

Bug: 27587980
Change-Id: If33b63c683bfb672999d1abd370a8edf29932ac1
/frameworks/base/media/java/android/media/ExifInterface.java
89cb1945424f1d4c7278d24cd09f0a8d09093883 10-Mar-2016 Jaesung Chung <jaesung@google.com> Merge "ExifInterface: implement the serialzation for Exif IFD structures" into nyc-dev
86e552b9fa39f61ea6da15d78da928c937bb875f 04-Mar-2016 Jaesung Chung <jaesung@google.com> ExifInterface: implement the serialzation for Exif IFD structures

One image can have multiple image file directories, which stores the
attributes of the image, in Exif specification to save metadata.
In the old version, the all attributes from several image file
directories were combined in a one hash map eventually and were served
without distinction of the original IFD group.

In order to keep the original data as much as possible, it loads/saves
the attributes based on the original IFD group internally.

Bug: 26044456, Bug: 11224701
Change-Id: I416e4e79fd47461c9aa83ce13591ed1a5d42f26e
/frameworks/base/media/java/android/media/ExifInterface.java
ad76dc2e6286ffdfa5eca6bfac67e574cbecd04e 08-Mar-2016 Jaesung Chung <jaesung@google.com> ExifInterface: fix a bug in readExifEntryValue

The readExifEntry method has raised an unnessary EOFException on reading
an non-ASCII byte array.

Bug: 27484747
Change-Id: I19371e0eed25770929f50b3ca25f249c50113925
/frameworks/base/media/java/android/media/ExifInterface.java
6e08d2b082acfc773907733f2ddab4e9b60616e1 25-Feb-2016 Jaesung Chung <jaesung@google.com> ExifInterface: add RAW input stream support

And also the following things are included:

- Remove mInputStream.
- Update javadoc accordingly.

Bug: 11224701
Change-Id: I30b4c29ac800ae396fca8f6b2c2c0f68028a44b3
/frameworks/base/media/java/android/media/ExifInterface.java
15ef59e081846b43660635391d536361c3253a22 25-Feb-2016 Jaesung Chung <jaesung@google.com> Revert "Revert "ExifInterface: switch from using jhead to java implementation""

This reverts commit 3c233ee291cfe1b765184920b6b7a69cb1bb82d9.

Bug: 27349581
Change-Id: Ib9f687e79ec36692fa7505ba3852099eb3e44573
/frameworks/base/media/java/android/media/ExifInterface.java
3c233ee291cfe1b765184920b6b7a69cb1bb82d9 25-Feb-2016 Sungsoo Lim <sungsoo@google.com> Revert "ExifInterface: switch from using jhead to java implementation"

This reverts commit bf24c9fcb3e66b25c90c0cd51f8bf4f401f6c3d6.

Change-Id: Id278e831a9c03f615208fd6eab51c65f7bb019eb
/frameworks/base/media/java/android/media/ExifInterface.java
bf24c9fcb3e66b25c90c0cd51f8bf4f401f6c3d6 17-Feb-2016 Jaesung Chung <jaesung@google.com> ExifInterface: switch from using jhead to java implementation

Bug: 26044456, Bug: 11224701
Change-Id: I881ef0ead24bcec76c0fa5a7dd0b74cc71c77285
/frameworks/base/media/java/android/media/ExifInterface.java
fe968dfc12fd4e0ef633ca88dfc403678bf4d16a 15-Jan-2016 Jaesung Chung <jaesung@google.com> ExifInterface: add support for reading metadata from RAW images

This CL depends on piex (github.com/google/piex),
which is owned by Google Photos's RAW team.

piex is capable of reading EXIF data that contains
metadata, and finding the positions in an image of
thumbnail and preview images from RAW images.

piex supports DNG, CR2, NEF, NRW, ARW, RW2, ORF
and RAF image file formats.

ExifInterface gets thumbnail and metadata information
from the above RAW image formats via piex.

Bug: 26177215
Change-Id: I529f8032bcb2a9d3d9e857ff1365a26a4f040066
/frameworks/base/media/java/android/media/ExifInterface.java
43b0a458ab1136e9f13eb8f5fd967523082a5bda 15-Apr-2015 Michal Piechowski <michal.piechowski@sonymobile.com> Don't use timestamps with all zero

Although all zero (0000:00:00) is valid time, in most cases it means
that value is not present. According to http://www.exiv2.org/Exif2-2.PDF
in such case those values should be omitted, however
some cameras set them to 0 anyway. With this commit such timestamps
will be treated as they were empty.

Change-Id: I9c762b1fa04ea6bf9c0fba9e2459a20430c71c90
/frameworks/base/media/java/android/media/ExifInterface.java
ab60e7e6e0eae5e9ee4181b173bcd4807b6bd2f3 09-Jun-2015 Eino-Ville Talvala <etalvala@google.com> ExifInterface: Add a few tag fields.

Since these are being CTS tested, they should be public.

Bug: 21568414
Change-Id: I3f9f6e5da240b2ac0b2b88b5d25ec3c8c4704b8d
/frameworks/base/media/java/android/media/ExifInterface.java
b2c890044ed975ab091db0443665ecce293515d4 29-May-2015 Marco Nelissen <marcone@google.com> Update ExifInterface.getDateTime to support subseconds

Also document that it returns local time.

Bug: 20638367
Change-Id: I6a1c35925e0555bcdcb079be0ca5b19a279a05a6
/frameworks/base/media/java/android/media/ExifInterface.java
934349e8ad37c1ad251d6992e0751635f9ab3f28 20-Dec-2013 Zhijun He <zhijunhe@google.com> ExifInterface: fix class load failure

libexif_jni was renamed as libjhead_jni

Change-Id: I0ceff1ad288c7ce2255826d5d5ba9ca1f121a556
/frameworks/base/media/java/android/media/ExifInterface.java
6398343e83b3fd11dd6536cf6f390a52c1e19d2e 21-Aug-2013 Jeff Sharkey <jsharkey@android.com> Return EXIF thumbnails when available.

Adds new ExifInterface method to extract the thumbnail range from
a larger image file, and use that to return an AssetFileDescriptor.

When decoding an AssetFileDescriptor thumbnail with offsets, read out
the raw data entirely, since Skia uses lseek() aggressively.

Bug: 10412208
Change-Id: I7906cdf82c0c3794cec7043c801a86f66efeb143
/frameworks/base/media/java/android/media/ExifInterface.java
c9b6be7c402bd349f8d9322730256f593053dc52 05-Mar-2013 Dave Burke <daveburke@google.com> Add nullness check.

Bug: 8313121
Change-Id: Id2221e1c77eaf749ab4c4f6ec4cfa6684927c751
/frameworks/base/media/java/android/media/ExifInterface.java
bb52c49c9aab2357100b18e72395c1dc3539dfa7 07-Jun-2012 Keun young Park <keunyoung@google.com> rename exif to exif_jni due to refactoring in external/jhead

- also pull libexif_jni from media_jni

Bug: 6623618
Change-Id: I4f06a4614c5fddcf98d95caff16a2c40f345dade
/frameworks/base/media/java/android/media/ExifInterface.java
30c918ce7fbe171944b28fc91b3f22b3d631872d 11-Nov-2011 Glenn Kasten <gkasten@google.com> Use final on new member variables

Use final for member fields initialized to a new and that are never modified.

Change-Id: I042352c7bc21879613e7a50b1205b6923f8083cf
/frameworks/base/media/java/android/media/ExifInterface.java
a113a075ca9afa14361806ea592c8f078b1636c5 14-Jan-2011 Oscar Rydhe <oscar.rydhe@sonyericsson.com> Improved conversion accuracy of exif geotag data

Changed degrees and minutes of geotag data into double to avoid
data loss during cast.

Also improved error handling if geotag data can't be parsed.

bug:3381761
Change-Id: I864843c7fc699fe81e6acba801fe46d10a01925b
/frameworks/base/media/java/android/media/ExifInterface.java
4414eb4b2955be9eb62d1ddf379d1a7ae1822887 05-Nov-2010 Ray Chen <raychen@google.com> Add more EXIF tags.

Change-Id: I77a02a6de6bb4c364bb9718f7bed15468a38a279
/frameworks/base/media/java/android/media/ExifInterface.java
c109190b6984da6cba4cea44a0304b6da12d77e6 20-May-2010 Wu-cheng Li <wuchengli@google.com> Add support for gps altitude EXIF tags.

Also improve the precision of getLatLong().

Change-Id: Id2c60f0d1d19e9da173b5ec1228f03c2195e189f
/frameworks/base/media/java/android/media/ExifInterface.java
e208377fbab6b90f41e68699700942a81f4caaeb 11-Mar-2010 Ray Chen <raychen@google.com> Add GPSProcessingMethod tag to ExifInterface.

Change-Id: I7575ae3195dc510e7020368794a66bb064839104
/frameworks/base/media/java/android/media/ExifInterface.java
5d9661be8eaa2a4702a4d3c0fa0fd07a8638b503 31-Jan-2010 Wu-cheng Li <wuchengli@google.com> Add getAttributeDouble() and focal length tag.

bug:2375989
/frameworks/base/media/java/android/media/ExifInterface.java
3a8cab88e7747dc280ce85895af014f98e80a6cc 15-Jan-2010 Ray Chen <raychen@google.com> Add GpsDateTime support to ExifInterface and correct images table's date_taken value to UTC timestamp.
http://b/2376777
/frameworks/base/media/java/android/media/ExifInterface.java
052d9c8b414dc9eb1c70d849660592d9bc3b2644 04-Dec-2009 Ray Chen <raychen@google.com> Images.Media.DATE_TAKEN should be in milliseconds.
http://b/2297371
/frameworks/base/media/java/android/media/ExifInterface.java
d5fa58cf3d71f2cf94299584050b2698fa3753ec 30-Nov-2009 Ray Chen <raychen@google.com> Fix timezone issue to comply with EXIF standard.
/frameworks/base/media/java/android/media/ExifInterface.java
29e4a3c566f435c32f0b95e4ac8e8b33cac6faba 01-Oct-2009 Dianne Hackborn <hackbod@google.com> Update from API review.

Change-Id: I16b1c566f91167aac9615ac59dd297a154c828ea
/frameworks/base/media/java/android/media/ExifInterface.java
872a30ec723ebdd97de764406544516545d7c9d4 17-Sep-2009 Chih-Chung Chang <chihchung@google.com> Improve ExifInterface API.

Change-Id: Ic6c4df8244b51b9a0d1c73c3797847220d86604d
/frameworks/base/media/java/android/media/ExifInterface.java
9081aec61fede12049fa9adbad41a0b35813ed64 16-Sep-2009 Chih-Chung Chang <chihchung@google.com> Try to fix sdk build again.
/frameworks/base/media/java/android/media/ExifInterface.java
7b886f9e8cc6e59643ead376a13c374a4d975568 16-Sep-2009 Chih-Chung Chang <chihchung@google.com> Fix sdk build.
/frameworks/base/media/java/android/media/ExifInterface.java
017bb4ccf75375b359662932432cc61bd08fec24 16-Sep-2009 Chih-Chung Chang <chihchung@google.com> Make ExifInterface public.
/frameworks/base/media/java/android/media/ExifInterface.java
700beb484624a9a34649cb6ff088468e78b758ff 16-Sep-2009 Chih-Chung Chang <chihchung@google.com> Clean ExifInterface. Prepare to make it public.

Change-Id: Ibff719d02f525c1e8583d1892737224a0cc42c37
/frameworks/base/media/java/android/media/ExifInterface.java
a7bdedabf447a559e0b914e4e5623f3af5ac8ef1 31-Aug-2009 Chih-Chung Chang <chihchung@google.com> Fix 2081525: NPE in MediaScannerService.

Handle the case where the datetime string in jpeg exif is not in the format we expect.

Change-Id: I5462052c3dd723d01bce45f4924137632d081400
/frameworks/base/media/java/android/media/ExifInterface.java
099397cbd07c8c991f3126d0d0ac64bb6b3c0b47 17-Aug-2009 Chih-Chung Chang <chihchung@google.com> Fix 1860351: Put datetime in jpeg exif to datetaken field.
/frameworks/base/media/java/android/media/ExifInterface.java
b826bf9182f4636ea891d1da156e26944b784ef7 11-Aug-2009 Wu-cheng Li <wuchengli@google.com> Fix the bug that EXIF attributes are always cached.

b2039501
/frameworks/base/media/java/android/media/ExifInterface.java
20b03ea70bda3c4fb34e53cdf25cf98c4adb193f 06-Jul-2009 repo sync <raychen@google.com> Move ExifInterface to android.media package so we can reference it from MediaScanner.
Also hide public constructor and wrap common use cases as atomic operation to avoid
race condition in jhead native codes.
/frameworks/base/media/java/android/media/ExifInterface.java