Bug 1407243 - Don't immediately fire canplaythrough for infinite/live streams. r?jwwang draft
authorJean-Yves Avenard <jyavenard@mozilla.com>
Tue, 10 Oct 2017 16:14:24 +0200
changeset 677295 e9a339749b740d0925fdc1407ef4e15da46f7d73
parent 677135 ec19448297b60fd75e904286320dc07a61e75aaa
child 735174 e6afbd3e196d2088e9260685a3a33f6257898482
push id83754
push userbmo:jyavenard@mozilla.com
push dateTue, 10 Oct 2017 14:16:52 +0000
reviewersjwwang
bugs1407243
milestone58.0a1
Bug 1407243 - Don't immediately fire canplaythrough for infinite/live streams. r?jwwang MozReview-Commit-ID: 2LQFa8PHvO5
dom/media/mediasource/MediaSourceDecoder.cpp
--- a/dom/media/mediasource/MediaSourceDecoder.cpp
+++ b/dom/media/mediasource/MediaSourceDecoder.cpp
@@ -305,21 +305,17 @@ MediaSourceDecoder::CanPlayThroughImpl()
   }
 
   if (IsNaN(mMediaSource->Duration())) {
     // Don't have any data yet.
     return false;
   }
   TimeUnit duration = TimeUnit::FromSeconds(mMediaSource->Duration());
   auto currentPosition = CurrentPosition();
-  if (duration.IsInfinite()) {
-    // We can't make an informed decision and just assume that it's a live
-    // stream
-    return true;
-  } else if (duration <= currentPosition) {
+  if (duration <= currentPosition) {
     return true;
   }
   // If we have data up to the mediasource's duration or 10s ahead, we can
   // assume that we can play without interruption.
   TimeIntervals buffered = GetBuffered();
   buffered.SetFuzz(MediaSourceDemuxer::EOS_FUZZ / 2);
   TimeUnit timeAhead =
     std::min(duration, currentPosition + TimeUnit::FromSeconds(10));