Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
SDK
/
exoplayer
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
d5124e8c
authored
Jan 13, 2021
by
andrewlewis
Committed by
Ian Baker
Jan 15, 2021
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Add presentation time to motion photo metadata
PiperOrigin-RevId: 351581997
parent
421aa9df
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
21 additions
and
1 deletions
library/common/src/main/java/com/google/android/exoplayer2/metadata/mp4/MotionPhotoMetadata.java
library/common/src/test/java/com/google/android/exoplayer2/metadata/mp4/MotionPhotoMetadataTest.java
library/core/src/test/java/com/google/android/exoplayer2/MetadataRetrieverTest.java
library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/Mp4Extractor.java
library/common/src/main/java/com/google/android/exoplayer2/metadata/mp4/MotionPhotoMetadata.java
View file @
d5124e8c
...
...
@@ -19,6 +19,7 @@ package com.google.android.exoplayer2.metadata.mp4;
import
android.os.Parcel
;
import
android.os.Parcelable
;
import
androidx.annotation.Nullable
;
import
com.google.android.exoplayer2.C
;
import
com.google.android.exoplayer2.metadata.Metadata
;
import
com.google.common.primitives.Longs
;
...
...
@@ -29,6 +30,10 @@ public final class MotionPhotoMetadata implements Metadata.Entry {
public
final
long
photoStartPosition
;
/** The size of the photo data, in bytes. */
public
final
long
photoSize
;
/**
* The presentation timestamp of the photo, in microseconds, or {@link C#TIME_UNSET} if unknown.
*/
public
final
long
photoPresentationTimestampUs
;
/** The start offset of the video data, in bytes. */
public
final
long
videoStartPosition
;
/** The size of the video data, in bytes. */
...
...
@@ -36,9 +41,14 @@ public final class MotionPhotoMetadata implements Metadata.Entry {
/** Creates an instance. */
public
MotionPhotoMetadata
(
long
photoStartPosition
,
long
photoSize
,
long
videoStartPosition
,
long
videoSize
)
{
long
photoStartPosition
,
long
photoSize
,
long
photoPresentationTimestampUs
,
long
videoStartPosition
,
long
videoSize
)
{
this
.
photoStartPosition
=
photoStartPosition
;
this
.
photoSize
=
photoSize
;
this
.
photoPresentationTimestampUs
=
photoPresentationTimestampUs
;
this
.
videoStartPosition
=
videoStartPosition
;
this
.
videoSize
=
videoSize
;
}
...
...
@@ -46,6 +56,7 @@ public final class MotionPhotoMetadata implements Metadata.Entry {
private
MotionPhotoMetadata
(
Parcel
in
)
{
photoStartPosition
=
in
.
readLong
();
photoSize
=
in
.
readLong
();
photoPresentationTimestampUs
=
in
.
readLong
();
videoStartPosition
=
in
.
readLong
();
videoSize
=
in
.
readLong
();
}
...
...
@@ -61,6 +72,7 @@ public final class MotionPhotoMetadata implements Metadata.Entry {
MotionPhotoMetadata
other
=
(
MotionPhotoMetadata
)
obj
;
return
photoStartPosition
==
other
.
photoStartPosition
&&
photoSize
==
other
.
photoSize
&&
photoPresentationTimestampUs
==
other
.
photoPresentationTimestampUs
&&
videoStartPosition
==
other
.
videoStartPosition
&&
videoSize
==
other
.
videoSize
;
}
...
...
@@ -70,6 +82,7 @@ public final class MotionPhotoMetadata implements Metadata.Entry {
int
result
=
17
;
result
=
31
*
result
+
Longs
.
hashCode
(
photoStartPosition
);
result
=
31
*
result
+
Longs
.
hashCode
(
photoSize
);
result
=
31
*
result
+
Longs
.
hashCode
(
photoPresentationTimestampUs
);
result
=
31
*
result
+
Longs
.
hashCode
(
videoStartPosition
);
result
=
31
*
result
+
Longs
.
hashCode
(
videoSize
);
return
result
;
...
...
@@ -81,6 +94,8 @@ public final class MotionPhotoMetadata implements Metadata.Entry {
+
photoStartPosition
+
", photoSize="
+
photoSize
+
", photoPresentationTimestampUs="
+
photoPresentationTimestampUs
+
", videoStartPosition="
+
videoStartPosition
+
", videoSize="
...
...
@@ -93,6 +108,7 @@ public final class MotionPhotoMetadata implements Metadata.Entry {
public
void
writeToParcel
(
Parcel
dest
,
int
flags
)
{
dest
.
writeLong
(
photoStartPosition
);
dest
.
writeLong
(
photoSize
);
dest
.
writeLong
(
photoPresentationTimestampUs
);
dest
.
writeLong
(
videoStartPosition
);
dest
.
writeLong
(
videoSize
);
}
...
...
library/common/src/test/java/com/google/android/exoplayer2/metadata/mp4/MotionPhotoMetadataTest.java
View file @
d5124e8c
...
...
@@ -20,6 +20,7 @@ import static com.google.common.truth.Truth.assertThat;
import
android.os.Parcel
;
import
androidx.test.ext.junit.runners.AndroidJUnit4
;
import
com.google.android.exoplayer2.C
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
...
...
@@ -33,6 +34,7 @@ public class MotionPhotoMetadataTest {
new
MotionPhotoMetadata
(
/* photoStartPosition= */
0
,
/* photoSize= */
10
,
/* photoPresentationTimestampUs= */
C
.
TIME_UNSET
,
/* videoStartPosition= */
15
,
/* videoSize= */
35
);
...
...
library/core/src/test/java/com/google/android/exoplayer2/MetadataRetrieverTest.java
View file @
d5124e8c
...
...
@@ -112,6 +112,7 @@ public class MetadataRetrieverTest {
new
MotionPhotoMetadata
(
/* photoStartPosition= */
0
,
/* photoSize= */
28_853
,
/* photoPresentationTimestampUs= */
C
.
TIME_UNSET
,
/* videoStartPosition= */
28_869
,
/* videoSize= */
28_803
);
...
...
library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/Mp4Extractor.java
View file @
d5124e8c
...
...
@@ -761,6 +761,7 @@ public final class Mp4Extractor implements Extractor, SeekMap {
new
MotionPhotoMetadata
(
/* photoStartPosition= */
0
,
/* photoSize= */
atomStartPosition
,
/* photoPresentationTimestampUs= */
C
.
TIME_UNSET
,
/* videoStartPosition= */
atomStartPosition
+
atomHeaderBytesRead
,
/* videoSize= */
atomSize
-
atomHeaderBytesRead
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment