From 175b8eb69ed71e14053b67ec5625b2872e5834cf Mon Sep 17 00:00:00 2001 From: kimvde Date: Thu, 22 Oct 2020 11:08:37 +0100 Subject: [PATCH] Read Google Photos motion photo metadata PiperOrigin-RevId: 338436906 --- RELEASENOTES.md | 2 + .../java/com/google/android/exoplayer2/C.java | 8 +-- .../exoplayer2/metadata/mp4/MotionPhoto.java | 36 +++++++------- .../android/exoplayer2/MetadataRetriever.java | 15 ++++-- .../exoplayer2/MetadataRetrieverTest.java | 28 +++++++++-- .../exoplayer2/extractor/mp4/Atom.java | 3 ++ .../extractor/mp4/Mp4Extractor.java | 46 ++++++++++++++++-- .../exoplayer2/extractor/mp4/Sniffer.java | 29 ++++++++--- .../src/test/assets/media/mp4/sample_MP.heic | Bin 0 -> 57672 bytes 9 files changed, 131 insertions(+), 36 deletions(-) create mode 100644 testdata/src/test/assets/media/mp4/sample_MP.heic diff --git a/RELEASENOTES.md b/RELEASENOTES.md index a0905944b3..9ce93ef81d 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -99,6 +99,8 @@ * Upgrade IMA SDK dependency to 3.20.1. This brings in a fix for companion ads rendering when targeting API 29 ([#6432](https://github.com/google/ExoPlayer/issues/6432)). +* Metadata retriever: + * Parse Google Photos HEIC motion photos metadata. ### 2.12.0 (2020-09-11) ### diff --git a/library/common/src/main/java/com/google/android/exoplayer2/C.java b/library/common/src/main/java/com/google/android/exoplayer2/C.java index 1a1543cc7e..c0baa4cbdc 100644 --- a/library/common/src/main/java/com/google/android/exoplayer2/C.java +++ b/library/common/src/main/java/com/google/android/exoplayer2/C.java @@ -690,12 +690,14 @@ public final class C { public static final int TRACK_TYPE_VIDEO = 2; /** A type constant for text tracks. */ public static final int TRACK_TYPE_TEXT = 3; + /** A type constant for image tracks. */ + public static final int TRACK_TYPE_IMAGE = 4; /** A type constant for metadata tracks. */ - public static final int TRACK_TYPE_METADATA = 4; + public static final int TRACK_TYPE_METADATA = 5; /** A type constant for camera motion tracks. */ - public static final int TRACK_TYPE_CAMERA_MOTION = 5; + public static final int TRACK_TYPE_CAMERA_MOTION = 6; /** A type constant for a fake or empty track. */ - public static final int TRACK_TYPE_NONE = 6; + public static final int TRACK_TYPE_NONE = 7; /** * Applications or extensions may define custom {@code TRACK_TYPE_*} constants greater than or * equal to this value. diff --git a/library/common/src/main/java/com/google/android/exoplayer2/metadata/mp4/MotionPhoto.java b/library/common/src/main/java/com/google/android/exoplayer2/metadata/mp4/MotionPhoto.java index ca1a110c61..9dfd423a7d 100644 --- a/library/common/src/main/java/com/google/android/exoplayer2/metadata/mp4/MotionPhoto.java +++ b/library/common/src/main/java/com/google/android/exoplayer2/metadata/mp4/MotionPhoto.java @@ -20,21 +20,23 @@ import android.os.Parcel; import android.os.Parcelable; import androidx.annotation.Nullable; import com.google.android.exoplayer2.metadata.Metadata; +import com.google.common.primitives.Longs; /** Metadata of a motion photo file. */ public final class MotionPhoto implements Metadata.Entry { /** The start offset of the photo data, in bytes. */ - public final int photoStartPosition; + public final long photoStartPosition; /** The size of the photo data, in bytes. */ - public final int photoSize; + public final long photoSize; /** The start offset of the video data, in bytes. */ - public final int videoStartPosition; + public final long videoStartPosition; /** The size of the video data, in bytes. */ - public final int videoSize; + public final long videoSize; /** Creates an instance. */ - public MotionPhoto(int photoStartPosition, int photoSize, int videoStartPosition, int videoSize) { + public MotionPhoto( + long photoStartPosition, long photoSize, long videoStartPosition, long videoSize) { this.photoStartPosition = photoStartPosition; this.photoSize = photoSize; this.videoStartPosition = videoStartPosition; @@ -42,10 +44,10 @@ public final class MotionPhoto implements Metadata.Entry { } private MotionPhoto(Parcel in) { - photoStartPosition = in.readInt(); - photoSize = in.readInt(); - videoStartPosition = in.readInt(); - videoSize = in.readInt(); + photoStartPosition = in.readLong(); + photoSize = in.readLong(); + videoStartPosition = in.readLong(); + videoSize = in.readLong(); } @Override @@ -66,10 +68,10 @@ public final class MotionPhoto implements Metadata.Entry { @Override public int hashCode() { int result = 17; - result = 31 * result + photoStartPosition; - result = 31 * result + photoSize; - result = 31 * result + videoStartPosition; - result = 31 * result + videoSize; + result = 31 * result + Longs.hashCode(photoStartPosition); + result = 31 * result + Longs.hashCode(photoSize); + result = 31 * result + Longs.hashCode(videoStartPosition); + result = 31 * result + Longs.hashCode(videoSize); return result; } @@ -89,10 +91,10 @@ public final class MotionPhoto implements Metadata.Entry { @Override public void writeToParcel(Parcel dest, int flags) { - dest.writeInt(photoStartPosition); - dest.writeInt(photoSize); - dest.writeInt(videoStartPosition); - dest.writeInt(videoSize); + dest.writeLong(photoStartPosition); + dest.writeLong(photoSize); + dest.writeLong(videoStartPosition); + dest.writeLong(videoSize); } @Override diff --git a/library/core/src/main/java/com/google/android/exoplayer2/MetadataRetriever.java b/library/core/src/main/java/com/google/android/exoplayer2/MetadataRetriever.java index 72f6957865..5a00cd66f8 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/MetadataRetriever.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/MetadataRetriever.java @@ -22,6 +22,9 @@ import android.content.Context; import android.os.Handler; import android.os.HandlerThread; import android.os.Message; +import com.google.android.exoplayer2.extractor.DefaultExtractorsFactory; +import com.google.android.exoplayer2.extractor.ExtractorsFactory; +import com.google.android.exoplayer2.extractor.mp4.Mp4Extractor; import com.google.android.exoplayer2.source.DefaultMediaSourceFactory; import com.google.android.exoplayer2.source.MediaPeriod; import com.google.android.exoplayer2.source.MediaSource; @@ -43,8 +46,9 @@ public final class MetadataRetriever { /** * Retrieves the {@link TrackGroupArray} corresponding to a {@link MediaItem}. * - *

This is equivalent to using {@code retrieveMetadata(new DefaultMediaSourceFactory(context), - * mediaItem)}. + *

This is equivalent to using {@link #retrieveMetadata(MediaSourceFactory, MediaItem)} with a + * {@link DefaultMediaSourceFactory} and a {@link DefaultExtractorsFactory} with {@link + * Mp4Extractor#FLAG_READ_MOTION_PHOTO_METADATA} set. * * @param context The {@link Context}. * @param mediaItem The {@link MediaItem} whose metadata should be retrieved. @@ -52,7 +56,12 @@ public final class MetadataRetriever { */ public static ListenableFuture retrieveMetadata( Context context, MediaItem mediaItem) { - return retrieveMetadata(new DefaultMediaSourceFactory(context), mediaItem); + ExtractorsFactory extractorsFactory = + new DefaultExtractorsFactory() + .setMp4ExtractorFlags(Mp4Extractor.FLAG_READ_MOTION_PHOTO_METADATA); + MediaSourceFactory mediaSourceFactory = + new DefaultMediaSourceFactory(context, extractorsFactory); + return retrieveMetadata(mediaSourceFactory, mediaItem); } /** diff --git a/library/core/src/test/java/com/google/android/exoplayer2/MetadataRetrieverTest.java b/library/core/src/test/java/com/google/android/exoplayer2/MetadataRetrieverTest.java index e666ec979d..235639f678 100644 --- a/library/core/src/test/java/com/google/android/exoplayer2/MetadataRetrieverTest.java +++ b/library/core/src/test/java/com/google/android/exoplayer2/MetadataRetrieverTest.java @@ -25,6 +25,7 @@ import android.net.Uri; import android.os.SystemClock; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; +import com.google.android.exoplayer2.metadata.mp4.MotionPhoto; import com.google.android.exoplayer2.source.TrackGroupArray; import com.google.android.exoplayer2.util.MimeTypes; import com.google.common.util.concurrent.ListenableFuture; @@ -37,7 +38,7 @@ import org.junit.runner.RunWith; public class MetadataRetrieverTest { @Test - public void retrieveMetadata_singleMediaItem() throws Exception { + public void retrieveMetadata_singleMediaItem_outputsExpectedMetadata() throws Exception { Context context = ApplicationProvider.getApplicationContext(); MediaItem mediaItem = MediaItem.fromUri(Uri.parse("asset://android_asset/media/mp4/sample.mp4")); @@ -55,7 +56,7 @@ public class MetadataRetrieverTest { } @Test - public void retrieveMetadata_multipleMediaItems() throws Exception { + public void retrieveMetadata_multipleMediaItems_outputsExpectedMetadata() throws Exception { Context context = ApplicationProvider.getApplicationContext(); MediaItem mediaItem1 = MediaItem.fromUri(Uri.parse("asset://android_asset/media/mp4/sample.mp4")); @@ -84,7 +85,28 @@ public class MetadataRetrieverTest { } @Test - public void retrieveMetadata_throwsErrorIfCannotLoad() { + public void retrieveMetadata_motionPhoto_outputsExpectedMetadata() throws Exception { + Context context = ApplicationProvider.getApplicationContext(); + MediaItem mediaItem = + MediaItem.fromUri(Uri.parse("asset://android_asset/media/mp4/sample_MP.heic")); + MotionPhoto expectedMotionPhoto = + new MotionPhoto( + /* photoStartPosition= */ 0, + /* photoSize= */ 28_853, + /* videoStartPosition= */ 28_869, + /* videoSize= */ 28_803); + + ListenableFuture trackGroupsFuture = retrieveMetadata(context, mediaItem); + TrackGroupArray trackGroups = waitAndGetTrackGroups(trackGroupsFuture); + + assertThat(trackGroups.length).isEqualTo(1); + assertThat(trackGroups.get(0).length).isEqualTo(1); + assertThat(trackGroups.get(0).getFormat(0).metadata.length()).isEqualTo(1); + assertThat(trackGroups.get(0).getFormat(0).metadata.get(0)).isEqualTo(expectedMotionPhoto); + } + + @Test + public void retrieveMetadata_invalidMediaItem_throwsError() { Context context = ApplicationProvider.getApplicationContext(); MediaItem mediaItem = MediaItem.fromUri(Uri.parse("asset://android_asset/media/does_not_exist")); diff --git a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/Atom.java b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/Atom.java index 325dc24aec..71e6c69887 100644 --- a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/Atom.java +++ b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/Atom.java @@ -181,6 +181,9 @@ import java.util.List; @SuppressWarnings("ConstantCaseForConstants") public static final int TYPE_moov = 0x6d6f6f76; + @SuppressWarnings("ConstantCaseForConstants") + public static final int TYPE_mpvd = 0x6d707664; + @SuppressWarnings("ConstantCaseForConstants") public static final int TYPE_mvhd = 0x6d766864; diff --git a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/Mp4Extractor.java b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/Mp4Extractor.java index f9e70915bc..d478eb2b4b 100644 --- a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/Mp4Extractor.java +++ b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/Mp4Extractor.java @@ -38,6 +38,7 @@ import com.google.android.exoplayer2.extractor.SeekPoint; import com.google.android.exoplayer2.extractor.TrackOutput; import com.google.android.exoplayer2.extractor.mp4.Atom.ContainerAtom; import com.google.android.exoplayer2.metadata.Metadata; +import com.google.android.exoplayer2.metadata.mp4.MotionPhoto; import com.google.android.exoplayer2.util.Assertions; import com.google.android.exoplayer2.util.MimeTypes; import com.google.android.exoplayer2.util.NalUnitUtil; @@ -61,19 +62,27 @@ public final class Mp4Extractor implements Extractor, SeekMap { public static final ExtractorsFactory FACTORY = () -> new Extractor[] {new Mp4Extractor()}; /** - * Flags controlling the behavior of the extractor. Possible flag value is {@link - * #FLAG_WORKAROUND_IGNORE_EDIT_LISTS}. + * Flags controlling the behavior of the extractor. Possible flag values are {@link + * #FLAG_WORKAROUND_IGNORE_EDIT_LISTS} and {@link #FLAG_READ_MOTION_PHOTO_METADATA}. */ @Documented @Retention(RetentionPolicy.SOURCE) @IntDef( flag = true, - value = {FLAG_WORKAROUND_IGNORE_EDIT_LISTS}) + value = {FLAG_WORKAROUND_IGNORE_EDIT_LISTS, FLAG_READ_MOTION_PHOTO_METADATA}) public @interface Flags {} /** * Flag to ignore any edit lists in the stream. */ public static final int FLAG_WORKAROUND_IGNORE_EDIT_LISTS = 1; + /** + * Flag to extract {@link MotionPhoto} metadata from HEIC motion photos following the Google + * Photos Motion Photo File Format V1.1. + * + *

As playback is not supported for motion photos, this flag should only be used for metadata + * retrieval use cases. + */ + public static final int FLAG_READ_MOTION_PHOTO_METADATA = 1 << 1; /** Parser states. */ @Documented @@ -154,7 +163,8 @@ public final class Mp4Extractor implements Extractor, SeekMap { @Override public boolean sniff(ExtractorInput input) throws IOException { - return Sniffer.sniffUnfragmented(input); + return Sniffer.sniffUnfragmented( + input, /* acceptHeic= */ (flags & FLAG_READ_MOTION_PHOTO_METADATA) != 0); } @Override @@ -335,6 +345,14 @@ public final class Mp4Extractor implements Extractor, SeekMap { this.atomData = atomData; parserState = STATE_READING_ATOM_PAYLOAD; } else { + if (atomType == Atom.TYPE_mpvd && (flags & FLAG_READ_MOTION_PHOTO_METADATA) != 0) { + // There is no need to parse the mpvd atom payload. All the necessary information is in the + // header. + processMpvdBox( + /* atomStartPosition= */ input.getPosition() - atomHeaderBytesRead, + /* atomHeaderSize= */ atomHeaderBytesRead, + atomSize); + } atomData = null; parserState = STATE_READING_ATOM_PAYLOAD; } @@ -662,6 +680,26 @@ public final class Mp4Extractor implements Extractor, SeekMap { } } + /** + * Processes the Motion Photo Video Data of an HEIC motion photo following the Google Photos + * Motion Photo File Format V1.1. This consists in adding a track with the motion photo metadata + * and ending playback preparation. + */ + private void processMpvdBox(long atomStartPosition, int atomHeaderSize, long atomSize) { + ExtractorOutput extractorOutput = checkNotNull(this.extractorOutput); + extractorOutput.seekMap(new SeekMap.Unseekable(/* durationUs= */ C.TIME_UNSET)); + + TrackOutput trackOutput = extractorOutput.track(/* id= */ 0, C.TRACK_TYPE_IMAGE); + MotionPhoto motionPhoto = + new MotionPhoto( + /* photoStartPosition= */ 0, + /* photoSize= */ atomStartPosition, + /* videoStartPosition= */ atomStartPosition + atomHeaderSize, + /* videoSize= */ atomSize - atomHeaderSize); + trackOutput.format(new Format.Builder().setMetadata(new Metadata(motionPhoto)).build()); + extractorOutput.endTracks(); + } + /** * For each sample of each track, calculates accumulated size of all samples which need to be read * before this sample can be used. diff --git a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/Sniffer.java b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/Sniffer.java index 00acb29906..f830c86edb 100644 --- a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/Sniffer.java +++ b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/Sniffer.java @@ -70,7 +70,7 @@ import java.io.IOException; * @throws IOException If an error occurs reading from the input. */ public static boolean sniffFragmented(ExtractorInput input) throws IOException { - return sniffInternal(input, true); + return sniffInternal(input, /* fragmented= */ true, /* acceptHeic= */ false); } /** @@ -82,10 +82,24 @@ import java.io.IOException; * @throws IOException If an error occurs reading from the input. */ public static boolean sniffUnfragmented(ExtractorInput input) throws IOException { - return sniffInternal(input, false); + return sniffInternal(input, /* fragmented= */ false, /* acceptHeic= */ false); } - private static boolean sniffInternal(ExtractorInput input, boolean fragmented) + /** + * Returns whether data peeked from the current position in {@code input} is consistent with the + * input being an unfragmented MP4 file. + * + * @param input The extractor input from which to peek data. The peek position will be modified. + * @param acceptHeic Whether {@code true} should be returned for HEIC photos. + * @return Whether the input appears to be in the unfragmented MP4 format. + * @throws IOException If an error occurs reading from the input. + */ + public static boolean sniffUnfragmented(ExtractorInput input, boolean acceptHeic) + throws IOException { + return sniffInternal(input, /* fragmented= */ false, acceptHeic); + } + + private static boolean sniffInternal(ExtractorInput input, boolean fragmented, boolean acceptHeic) throws IOException { long inputLength = input.getLength(); int bytesToSearch = (int) (inputLength == C.LENGTH_UNSET || inputLength > SEARCH_LENGTH @@ -165,7 +179,7 @@ import java.io.IOException; if (i == 1) { // This index refers to the minorVersion, not a brand, so skip it. buffer.skipBytes(4); - } else if (isCompatibleBrand(buffer.readInt())) { + } else if (isCompatibleBrand(buffer.readInt(), acceptHeic)) { foundGoodFileType = true; break; } @@ -185,9 +199,12 @@ import java.io.IOException; /** * Returns whether {@code brand} is an ftyp atom brand that is compatible with the MP4 extractors. */ - private static boolean isCompatibleBrand(int brand) { - // Accept all brands starting '3gp'. + private static boolean isCompatibleBrand(int brand, boolean acceptHeic) { if (brand >>> 8 == 0x00336770) { + // Brand starts with '3gp'. + return true; + } else if (brand == 0x68656963 && acceptHeic) { + // Brand is `heic` and HEIC is supported by the extractor. return true; } for (int compatibleBrand : COMPATIBLE_BRANDS) { diff --git a/testdata/src/test/assets/media/mp4/sample_MP.heic b/testdata/src/test/assets/media/mp4/sample_MP.heic new file mode 100644 index 0000000000000000000000000000000000000000..68dd4c4d6de107de7490574c421a4458fb17ff60 GIT binary patch literal 57672 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 z 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