From dae87b66dd5a2c9d24df0314575868e59ea0342b Mon Sep 17 00:00:00 2001 From: olly Date: Tue, 26 Jul 2016 07:55:41 -0700 Subject: [PATCH] MediaPeriod.getDurationUs must report duration when known. As per the spec of MediaPeriod.getDurationUs, when a live stream ends we need to start returning the correct final duration. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=128471183 --- .../android/exoplayer2/source/dash/DashMediaPeriod.java | 3 ++- .../exoplayer2/source/smoothstreaming/SsMediaPeriod.java | 4 +--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaPeriod.java b/library/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaPeriod.java index 94007af12f..718a05d06b 100644 --- a/library/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaPeriod.java +++ b/library/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaPeriod.java @@ -47,7 +47,6 @@ import java.util.List; private final EventDispatcher eventDispatcher; private final long elapsedRealtimeOffset; private final Loader loader; - private final long durationUs; private final TrackGroupArray trackGroups; private ChunkSampleStream[] sampleStreams; @@ -55,6 +54,7 @@ import java.util.List; private Callback callback; private Allocator allocator; private DashManifest manifest; + private long durationUs; private int index; private Period period; @@ -76,6 +76,7 @@ import java.util.List; public void updateManifest(DashManifest manifest, int index) { this.manifest = manifest; this.index = index; + durationUs = manifest.dynamic ? C.UNSET_TIME_US : manifest.getPeriodDuration(index) * 1000; period = manifest.getPeriod(index); if (sampleStreams != null) { for (ChunkSampleStream sampleStream : sampleStreams) { diff --git a/library/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaPeriod.java b/library/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaPeriod.java index 9c956fbf60..b3fc66fad5 100644 --- a/library/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaPeriod.java +++ b/library/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaPeriod.java @@ -48,7 +48,6 @@ import java.util.List; private final Loader manifestLoader; private final int minLoadableRetryCount; private final EventDispatcher eventDispatcher; - private final long durationUs; private final TrackGroupArray trackGroups; private final TrackEncryptionBox[] trackEncryptionBoxes; @@ -65,7 +64,6 @@ import java.util.List; this.manifestLoader = manifestLoader; this.minLoadableRetryCount = minLoadableRetryCount; this.eventDispatcher = eventDispatcher; - durationUs = manifest.durationUs; trackGroups = buildTrackGroups(manifest); ProtectionElement protectionElement = manifest.protectionElement; if (protectionElement != null) { @@ -103,7 +101,7 @@ import java.util.List; @Override public long getDurationUs() { - return durationUs; + return manifest.durationUs; } @Override