Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 56a6e007 authored by Ray Essick's avatar Ray Essick Committed by Android (Google) Code Review
Browse files

Merge changes from topic "cherrypicker-L08900000961397789:N72700001380319289" into udc-dev

* changes:
  Revert "ExifInterface: Use FileDescriptors whenever we can."
  Revert "Use a ExifInterface ctor with a file descriptor as a parameter"
parents 88bcdd1e 77df079c
Loading
Loading
Loading
Loading
+49 −56
Original line number Diff line number Diff line
@@ -1566,7 +1566,7 @@ public class ExifInterface {
        FileInputStream in = null;
        try {
            in = new FileInputStream(fileDescriptor);
            loadAttributes(in, fileDescriptor);
            loadAttributes(in);
        } finally {
            closeQuietly(in);
            if (isFdDuped) {
@@ -1637,7 +1637,7 @@ public class ExifInterface {
                mSeekableFileDescriptor = null;
            }
        }
        loadAttributes(inputStream, null);
        loadAttributes(inputStream);
    }

    /**
@@ -1963,7 +1963,7 @@ public class ExifInterface {
     * This function decides which parser to read the image data according to the given input stream
     * type and the content of the input stream.
     */
    private void loadAttributes(@NonNull InputStream in, @Nullable FileDescriptor fd) {
    private void loadAttributes(@NonNull InputStream in) {
        if (in == null) {
            throw new NullPointerException("inputstream shouldn't be null");
        }
@@ -1993,7 +1993,7 @@ public class ExifInterface {
                        break;
                    }
                    case IMAGE_TYPE_HEIF: {
                        getHeifAttributes(inputStream, fd);
                        getHeifAttributes(inputStream);
                        break;
                    }
                    case IMAGE_TYPE_ORF: {
@@ -2580,7 +2580,7 @@ public class ExifInterface {
            } else if (isSeekableFD(in.getFD())) {
                mSeekableFileDescriptor = in.getFD();
            }
            loadAttributes(in, null);
            loadAttributes(in);
        } finally {
            closeQuietly(in);
            if (modernFd != null) {
@@ -3068,13 +3068,9 @@ public class ExifInterface {
        }
    }

    private void getHeifAttributes(ByteOrderedDataInputStream in, @Nullable FileDescriptor fd)
            throws IOException {
    private void getHeifAttributes(ByteOrderedDataInputStream in) throws IOException {
        MediaMetadataRetriever retriever = new MediaMetadataRetriever();
        try {
            if (fd != null) {
                retriever.setDataSource(fd);
            } else {
            retriever.setDataSource(new MediaDataSource() {
                long mPosition;

@@ -3115,9 +3111,7 @@ public class ExifInterface {
                            mPosition += bytesRead;
                            return bytesRead;
                        }
                        } catch (IOException e) {
                            // absorb the exception and fall through to the 'failed read' path below
                        }
                    } catch (IOException e) {}
                    mPosition = -1; // need to seek on next read
                    return -1;
                }
@@ -3127,7 +3121,6 @@ public class ExifInterface {
                    return -1;
                }
            });
            }

            String exifOffsetStr = retriever.extractMetadata(
                    MediaMetadataRetriever.METADATA_KEY_EXIF_OFFSET);
+11 −14
Original line number Diff line number Diff line
@@ -49,7 +49,6 @@ import com.android.internal.util.ArrayUtils;
import libcore.io.IoUtils;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Arrays;
import java.util.Comparator;
@@ -256,8 +255,7 @@ public class ThumbnailUtils {

        // get orientation
        if (MediaFile.isExifMimeType(mimeType)) {
            try (FileInputStream is = new FileInputStream(file)) {
                exif = new ExifInterface(is.getFD());
            exif = new ExifInterface(file);
            switch (exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, 0)) {
                case ExifInterface.ORIENTATION_ROTATE_90:
                    orientation = 90;
@@ -270,7 +268,6 @@ public class ThumbnailUtils {
                    break;
            }
        }
        }

        if (mimeType.equals("image/heif")
                || mimeType.equals("image/heif-sequence")