From cd4cc1dc140e8b368b59a42289126ffe26339371 Mon Sep 17 00:00:00 2001 From: olly Date: Wed, 10 Aug 2016 08:41:38 -0700 Subject: [PATCH] Add absolute start time to Timeline ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=129869741 --- .../com/google/android/exoplayer2/demo/EventLogger.java | 6 +++--- .../android/exoplayer2/source/ConcatenatingMediaSource.java | 5 +++++ .../android/exoplayer2/source/SinglePeriodTimeline.java | 5 +++++ .../java/com/google/android/exoplayer2/source/Timeline.java | 5 +++++ .../android/exoplayer2/source/dash/DashMediaSource.java | 5 +++++ 5 files changed, 23 insertions(+), 3 deletions(-) diff --git a/demo/src/main/java/com/google/android/exoplayer2/demo/EventLogger.java b/demo/src/main/java/com/google/android/exoplayer2/demo/EventLogger.java index 8dcaa01d90..bb61776408 100644 --- a/demo/src/main/java/com/google/android/exoplayer2/demo/EventLogger.java +++ b/demo/src/main/java/com/google/android/exoplayer2/demo/EventLogger.java @@ -95,9 +95,9 @@ import java.util.Locale; boolean isFinal = timeline.isFinal(); int periodCount = timeline.getPeriodCount(); int seekWindowCount = timeline.getSeekWindowCount(); - Log.d(TAG, "sourceInfo[isFinal=" + isFinal + ", periodCount=" - + (periodCount == Timeline.UNKNOWN_PERIOD_COUNT ? "?" : periodCount) + ", seekWindows: " - + seekWindowCount); + Log.d(TAG, "sourceInfo[isFinal=" + isFinal + ", startTime=" + timeline.getAbsoluteStartTime() + + ", periodCount=" + (periodCount == Timeline.UNKNOWN_PERIOD_COUNT ? "?" : periodCount) + + ", seekWindows: " + seekWindowCount); for (int seekWindowIndex = 0; seekWindowIndex < seekWindowCount; seekWindowIndex++) { Log.d(TAG, " " + timeline.getSeekWindow(seekWindowIndex)); } diff --git a/library/src/main/java/com/google/android/exoplayer2/source/ConcatenatingMediaSource.java b/library/src/main/java/com/google/android/exoplayer2/source/ConcatenatingMediaSource.java index 1207bdc0c7..c8a8478304 100644 --- a/library/src/main/java/com/google/android/exoplayer2/source/ConcatenatingMediaSource.java +++ b/library/src/main/java/com/google/android/exoplayer2/source/ConcatenatingMediaSource.java @@ -151,6 +151,11 @@ public final class ConcatenatingMediaSource implements MediaSource { return isFinal; } + @Override + public long getAbsoluteStartTime() { + return timelines[0].getAbsoluteStartTime(); + } + @Override public long getPeriodDuration(int index) { int sourceIndex = getSourceIndexForPeriod(index); diff --git a/library/src/main/java/com/google/android/exoplayer2/source/SinglePeriodTimeline.java b/library/src/main/java/com/google/android/exoplayer2/source/SinglePeriodTimeline.java index b5c4571d3e..45a8bcc089 100644 --- a/library/src/main/java/com/google/android/exoplayer2/source/SinglePeriodTimeline.java +++ b/library/src/main/java/com/google/android/exoplayer2/source/SinglePeriodTimeline.java @@ -90,6 +90,11 @@ public final class SinglePeriodTimeline implements Timeline { return isFinal; } + @Override + public long getAbsoluteStartTime() { + return 0; + } + @Override public long getPeriodDuration(int index) { if (index != 0) { diff --git a/library/src/main/java/com/google/android/exoplayer2/source/Timeline.java b/library/src/main/java/com/google/android/exoplayer2/source/Timeline.java index b2c6ce2031..17d7113ebc 100644 --- a/library/src/main/java/com/google/android/exoplayer2/source/Timeline.java +++ b/library/src/main/java/com/google/android/exoplayer2/source/Timeline.java @@ -44,6 +44,11 @@ public interface Timeline { */ boolean isFinal(); + /** + * Returns the absolute start time of the timeline in milliseconds. + */ + long getAbsoluteStartTime(); + /** * Returns the duration of the period at {@code index} in the timeline, in milliseconds, or * {@link ExoPlayer#UNKNOWN_TIME} if not known. diff --git a/library/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java b/library/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java index 95d4a70aa7..ee0f0b95bb 100644 --- a/library/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java +++ b/library/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java @@ -503,6 +503,11 @@ public final class DashMediaSource implements MediaSource { return !manifest.dynamic; } + @Override + public long getAbsoluteStartTime() { + return manifest.availabilityStartTime + manifest.getPeriod(0).startMs; + } + @Override public long getPeriodDuration(int index) { return manifest.getPeriodDurationMs(index);