Commit 80a37c7e by kimvde Committed by Oliver Woodman

Rename MotionPhoto to MotionPhotoMetadata

This make it clear that this class does not contain any photo/video
data.

PiperOrigin-RevId: 339045203
parent 16c60ecf
...@@ -23,7 +23,7 @@ import com.google.android.exoplayer2.metadata.Metadata; ...@@ -23,7 +23,7 @@ import com.google.android.exoplayer2.metadata.Metadata;
import com.google.common.primitives.Longs; import com.google.common.primitives.Longs;
/** Metadata of a motion photo file. */ /** Metadata of a motion photo file. */
public final class MotionPhoto implements Metadata.Entry { public final class MotionPhotoMetadata implements Metadata.Entry {
/** The start offset of the photo data, in bytes. */ /** The start offset of the photo data, in bytes. */
public final long photoStartPosition; public final long photoStartPosition;
...@@ -35,7 +35,7 @@ public final class MotionPhoto implements Metadata.Entry { ...@@ -35,7 +35,7 @@ public final class MotionPhoto implements Metadata.Entry {
public final long videoSize; public final long videoSize;
/** Creates an instance. */ /** Creates an instance. */
public MotionPhoto( public MotionPhotoMetadata(
long photoStartPosition, long photoSize, long videoStartPosition, long videoSize) { long photoStartPosition, long photoSize, long videoStartPosition, long videoSize) {
this.photoStartPosition = photoStartPosition; this.photoStartPosition = photoStartPosition;
this.photoSize = photoSize; this.photoSize = photoSize;
...@@ -43,7 +43,7 @@ public final class MotionPhoto implements Metadata.Entry { ...@@ -43,7 +43,7 @@ public final class MotionPhoto implements Metadata.Entry {
this.videoSize = videoSize; this.videoSize = videoSize;
} }
private MotionPhoto(Parcel in) { private MotionPhotoMetadata(Parcel in) {
photoStartPosition = in.readLong(); photoStartPosition = in.readLong();
photoSize = in.readLong(); photoSize = in.readLong();
videoStartPosition = in.readLong(); videoStartPosition = in.readLong();
...@@ -58,7 +58,7 @@ public final class MotionPhoto implements Metadata.Entry { ...@@ -58,7 +58,7 @@ public final class MotionPhoto implements Metadata.Entry {
if (obj == null || getClass() != obj.getClass()) { if (obj == null || getClass() != obj.getClass()) {
return false; return false;
} }
MotionPhoto other = (MotionPhoto) obj; MotionPhotoMetadata other = (MotionPhotoMetadata) obj;
return photoStartPosition == other.photoStartPosition return photoStartPosition == other.photoStartPosition
&& photoSize == other.photoSize && photoSize == other.photoSize
&& videoStartPosition == other.videoStartPosition && videoStartPosition == other.videoStartPosition
...@@ -77,7 +77,7 @@ public final class MotionPhoto implements Metadata.Entry { ...@@ -77,7 +77,7 @@ public final class MotionPhoto implements Metadata.Entry {
@Override @Override
public String toString() { public String toString() {
return "Motion photo: photoStartPosition=" return "Motion photo metadata: photoStartPosition="
+ photoStartPosition + photoStartPosition
+ ", photoSize=" + ", photoSize="
+ photoSize + photoSize
...@@ -102,17 +102,17 @@ public final class MotionPhoto implements Metadata.Entry { ...@@ -102,17 +102,17 @@ public final class MotionPhoto implements Metadata.Entry {
return 0; return 0;
} }
public static final Parcelable.Creator<MotionPhoto> CREATOR = public static final Parcelable.Creator<MotionPhotoMetadata> CREATOR =
new Parcelable.Creator<MotionPhoto>() { new Parcelable.Creator<MotionPhotoMetadata>() {
@Override @Override
public MotionPhoto createFromParcel(Parcel in) { public MotionPhotoMetadata createFromParcel(Parcel in) {
return new MotionPhoto(in); return new MotionPhotoMetadata(in);
} }
@Override @Override
public MotionPhoto[] newArray(int size) { public MotionPhotoMetadata[] newArray(int size) {
return new MotionPhoto[size]; return new MotionPhotoMetadata[size];
} }
}; };
} }
...@@ -23,25 +23,26 @@ import androidx.test.ext.junit.runners.AndroidJUnit4; ...@@ -23,25 +23,26 @@ import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
/** Test for {@link MotionPhoto}. */ /** Test for {@link MotionPhotoMetadata}. */
@RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class)
public class MotionPhotoTest { public class MotionPhotoMetadataTest {
@Test @Test
public void parcelable() { public void parcelable() {
MotionPhoto motionPhotoToParcel = MotionPhotoMetadata motionPhotoMetadataToParcel =
new MotionPhoto( new MotionPhotoMetadata(
/* photoStartPosition= */ 0, /* photoStartPosition= */ 0,
/* photoSize= */ 10, /* photoSize= */ 10,
/* videoStartPosition= */ 15, /* videoStartPosition= */ 15,
/* videoSize= */ 35); /* videoSize= */ 35);
Parcel parcel = Parcel.obtain(); Parcel parcel = Parcel.obtain();
motionPhotoToParcel.writeToParcel(parcel, /* flags= */ 0); motionPhotoMetadataToParcel.writeToParcel(parcel, /* flags= */ 0);
parcel.setDataPosition(0); parcel.setDataPosition(0);
MotionPhoto motionPhotoFromParcel = MotionPhoto.CREATOR.createFromParcel(parcel); MotionPhotoMetadata motionPhotoMetadataFromParcel =
assertThat(motionPhotoFromParcel).isEqualTo(motionPhotoToParcel); MotionPhotoMetadata.CREATOR.createFromParcel(parcel);
assertThat(motionPhotoMetadataFromParcel).isEqualTo(motionPhotoMetadataToParcel);
parcel.recycle(); parcel.recycle();
} }
......
...@@ -25,7 +25,7 @@ import android.net.Uri; ...@@ -25,7 +25,7 @@ import android.net.Uri;
import android.os.SystemClock; import android.os.SystemClock;
import androidx.test.core.app.ApplicationProvider; import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.google.android.exoplayer2.metadata.mp4.MotionPhoto; import com.google.android.exoplayer2.metadata.mp4.MotionPhotoMetadata;
import com.google.android.exoplayer2.source.TrackGroupArray; import com.google.android.exoplayer2.source.TrackGroupArray;
import com.google.android.exoplayer2.util.MimeTypes; import com.google.android.exoplayer2.util.MimeTypes;
import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListenableFuture;
...@@ -94,8 +94,8 @@ public class MetadataRetrieverTest { ...@@ -94,8 +94,8 @@ public class MetadataRetrieverTest {
public void retrieveMetadata_heicMotionPhoto_outputsExpectedMetadata() throws Exception { public void retrieveMetadata_heicMotionPhoto_outputsExpectedMetadata() throws Exception {
MediaItem mediaItem = MediaItem mediaItem =
MediaItem.fromUri(Uri.parse("asset://android_asset/media/mp4/sample_MP.heic")); MediaItem.fromUri(Uri.parse("asset://android_asset/media/mp4/sample_MP.heic"));
MotionPhoto expectedMotionPhoto = MotionPhotoMetadata expectedMotionPhotoMetadata =
new MotionPhoto( new MotionPhotoMetadata(
/* photoStartPosition= */ 0, /* photoStartPosition= */ 0,
/* photoSize= */ 28_853, /* photoSize= */ 28_853,
/* videoStartPosition= */ 28_869, /* videoStartPosition= */ 28_869,
...@@ -107,7 +107,8 @@ public class MetadataRetrieverTest { ...@@ -107,7 +107,8 @@ public class MetadataRetrieverTest {
assertThat(trackGroups.length).isEqualTo(1); assertThat(trackGroups.length).isEqualTo(1);
assertThat(trackGroups.get(0).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.length()).isEqualTo(1);
assertThat(trackGroups.get(0).getFormat(0).metadata.get(0)).isEqualTo(expectedMotionPhoto); assertThat(trackGroups.get(0).getFormat(0).metadata.get(0))
.isEqualTo(expectedMotionPhotoMetadata);
} }
@Test @Test
......
...@@ -40,7 +40,7 @@ import com.google.android.exoplayer2.extractor.SeekPoint; ...@@ -40,7 +40,7 @@ import com.google.android.exoplayer2.extractor.SeekPoint;
import com.google.android.exoplayer2.extractor.TrackOutput; import com.google.android.exoplayer2.extractor.TrackOutput;
import com.google.android.exoplayer2.extractor.mp4.Atom.ContainerAtom; import com.google.android.exoplayer2.extractor.mp4.Atom.ContainerAtom;
import com.google.android.exoplayer2.metadata.Metadata; import com.google.android.exoplayer2.metadata.Metadata;
import com.google.android.exoplayer2.metadata.mp4.MotionPhoto; import com.google.android.exoplayer2.metadata.mp4.MotionPhotoMetadata;
import com.google.android.exoplayer2.util.Assertions; import com.google.android.exoplayer2.util.Assertions;
import com.google.android.exoplayer2.util.MimeTypes; import com.google.android.exoplayer2.util.MimeTypes;
import com.google.android.exoplayer2.util.NalUnitUtil; import com.google.android.exoplayer2.util.NalUnitUtil;
...@@ -78,8 +78,8 @@ public final class Mp4Extractor implements Extractor, SeekMap { ...@@ -78,8 +78,8 @@ public final class Mp4Extractor implements Extractor, SeekMap {
*/ */
public static final int FLAG_WORKAROUND_IGNORE_EDIT_LISTS = 1; public static final int FLAG_WORKAROUND_IGNORE_EDIT_LISTS = 1;
/** /**
* Flag to extract {@link MotionPhoto} metadata from HEIC motion photos following the Google * Flag to extract {@link MotionPhotoMetadata} from HEIC motion photos following the Google Photos
* Photos Motion Photo File Format V1.1. * Motion Photo File Format V1.1.
* *
* <p>As playback is not supported for motion photos, this flag should only be used for metadata * <p>As playback is not supported for motion photos, this flag should only be used for metadata
* retrieval use cases. * retrieval use cases.
...@@ -147,7 +147,7 @@ public final class Mp4Extractor implements Extractor, SeekMap { ...@@ -147,7 +147,7 @@ public final class Mp4Extractor implements Extractor, SeekMap {
private int firstVideoTrackIndex; private int firstVideoTrackIndex;
private long durationUs; private long durationUs;
@FileType private int fileType; @FileType private int fileType;
@Nullable private MotionPhoto motionPhoto; @Nullable private MotionPhotoMetadata motionPhotoMetadata;
/** /**
* Creates a new extractor for unfragmented MP4 streams. * Creates a new extractor for unfragmented MP4 streams.
...@@ -667,7 +667,8 @@ public final class Mp4Extractor implements Extractor, SeekMap { ...@@ -667,7 +667,8 @@ public final class Mp4Extractor implements Extractor, SeekMap {
// Add image track and prepare media. // Add image track and prepare media.
ExtractorOutput extractorOutput = checkNotNull(this.extractorOutput); ExtractorOutput extractorOutput = checkNotNull(this.extractorOutput);
TrackOutput trackOutput = extractorOutput.track(/* id= */ 0, C.TRACK_TYPE_IMAGE); TrackOutput trackOutput = extractorOutput.track(/* id= */ 0, C.TRACK_TYPE_IMAGE);
@Nullable Metadata metadata = motionPhoto == null ? null : new Metadata(motionPhoto); @Nullable
Metadata metadata = motionPhotoMetadata == null ? null : new Metadata(motionPhotoMetadata);
trackOutput.format(new Format.Builder().setMetadata(metadata).build()); trackOutput.format(new Format.Builder().setMetadata(metadata).build());
extractorOutput.endTracks(); extractorOutput.endTracks();
extractorOutput.seekMap(new SeekMap.Unseekable(/* durationUs= */ C.TIME_UNSET)); extractorOutput.seekMap(new SeekMap.Unseekable(/* durationUs= */ C.TIME_UNSET));
...@@ -704,8 +705,8 @@ public final class Mp4Extractor implements Extractor, SeekMap { ...@@ -704,8 +705,8 @@ public final class Mp4Extractor implements Extractor, SeekMap {
if (atomType == Atom.TYPE_mpvd) { if (atomType == Atom.TYPE_mpvd) {
// The input is an HEIC motion photo following the Google Photos Motion Photo File Format // The input is an HEIC motion photo following the Google Photos Motion Photo File Format
// V1.1. // V1.1.
motionPhoto = motionPhotoMetadata =
new MotionPhoto( new MotionPhotoMetadata(
/* photoStartPosition= */ 0, /* photoStartPosition= */ 0,
/* photoSize= */ atomStartPosition, /* photoSize= */ atomStartPosition,
/* videoStartPosition= */ atomStartPosition + atomHeaderBytesRead, /* videoStartPosition= */ atomStartPosition + atomHeaderBytesRead,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment