Skip to content

Commit

Permalink
Rename MotionPhoto to MotionPhotoMetadata
Browse files Browse the repository at this point in the history
This make it clear that this class does not contain any photo/video
data.

PiperOrigin-RevId: 339045203
  • Loading branch information
kim-vde authored and ojw28 committed Nov 2, 2020
1 parent 16c60ec commit 80a37c7
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
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;
Expand All @@ -35,15 +35,15 @@ 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;
this.videoStartPosition = videoStartPosition;
this.videoSize = videoSize;
}

private MotionPhoto(Parcel in) {
private MotionPhotoMetadata(Parcel in) {
photoStartPosition = in.readLong();
photoSize = in.readLong();
videoStartPosition = in.readLong();
Expand All @@ -58,7 +58,7 @@ public boolean equals(@Nullable Object obj) {
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
Expand All @@ -77,7 +77,7 @@ public int hashCode() {

@Override
public String toString() {
return "Motion photo: photoStartPosition="
return "Motion photo metadata: photoStartPosition="
+ photoStartPosition
+ ", photoSize="
+ photoSize
Expand All @@ -102,17 +102,17 @@ public int describeContents() {
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];
}
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,25 +23,26 @@
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();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
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;
Expand Down Expand Up @@ -94,8 +94,8 @@ public void retrieveMetadata_multipleMediaItems_outputsExpectedMetadata() throws
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,
Expand All @@ -107,7 +107,8 @@ public void retrieveMetadata_heicMotionPhoto_outputsExpectedMetadata() throws Ex
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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
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;
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -667,7 +667,8 @@ private void processEndOfStreamReadingAtomHeader() {
// 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));
Expand Down Expand Up @@ -704,8 +705,8 @@ private void processUnparsedAtom(long atomStartPosition) {
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,
Expand Down

0 comments on commit 80a37c7

Please sign in to comment.