Bug 1261900: [MSE] P2. Prevent assertion if first media segment contains no usable frames. r=gerald draft
authorJean-Yves Avenard <jyavenard@mozilla.com>
Thu, 21 Apr 2016 21:19:47 +1000
changeset 356739 37c43578a7298ee1eff81d4ed380aa89a8d88c07
parent 356738 030405a39404c00166afed6832ad232811ac43a8
child 356740 e53e1f9fd1925ec358c11687521b987ae98e6b4b
push id16586
push userbmo:jyavenard@mozilla.com
push dateWed, 27 Apr 2016 02:47:40 +0000
reviewersgerald
bugs1261900
milestone49.0a1
Bug 1261900: [MSE] P2. Prevent assertion if first media segment contains no usable frames. r=gerald Encountered while using YouTube MSE/webm compliance test. MozReview-Commit-ID: 75Ga4TCGqMF
dom/media/mediasource/TrackBuffersManager.cpp
--- a/dom/media/mediasource/TrackBuffersManager.cpp
+++ b/dom/media/mediasource/TrackBuffersManager.cpp
@@ -1685,19 +1685,21 @@ TrackBuffersManager::InsertFrames(TrackB
   data.InsertElementsAt(trackBuffer.mNextInsertionIndex.ref(), aSamples);
   trackBuffer.mNextInsertionIndex.ref() += aSamples.Length();
 
   // Update our buffered range with new sample interval.
   trackBuffer.mBufferedRanges += aIntervals;
   // We allow a fuzz factor in our interval of half a frame length,
   // as fuzz is +/- value, giving an effective leeway of a full frame
   // length.
-  TimeIntervals range(aIntervals);
-  range.SetFuzz(trackBuffer.mLongestFrameDuration.ref() / 2);
-  trackBuffer.mSanitizedBufferedRanges += range;
+  if (aIntervals.Length()) {
+    TimeIntervals range(aIntervals);
+    range.SetFuzz(trackBuffer.mLongestFrameDuration.ref() / 2);
+    trackBuffer.mSanitizedBufferedRanges += range;
+  }
 }
 
 void
 TrackBuffersManager::RemoveFrames(const TimeIntervals& aIntervals,
                                   TrackData& aTrackData,
                                   uint32_t aStartIndex)
 {
   TrackBuffer& data = aTrackData.mBuffers.LastElement();