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