Bug 1296531 - Don't notify of queued data after a track ended. r?jesup draft
authorAndreas Pehrson <pehrsons@gmail.com>
Wed, 03 May 2017 14:15:11 +0200
changeset 670312 a0895616749089280bfbc63f843be949935e86b6
parent 670311 1e9ef14347b4f07f3d64cf75b93c376ba1646bb9
child 670313 41ccce50c2a305e25d662986839931489d2338fb
push id81598
push userbmo:apehrson@mozilla.com
push dateTue, 26 Sep 2017 09:13:19 +0000
reviewersjesup
bugs1296531
milestone58.0a1
Bug 1296531 - Don't notify of queued data after a track ended. r?jesup This could confuse listeners, since non-direct listeners would see more data than their direct counterparts. MozReview-Commit-ID: FC5rukQtrKL
dom/media/TrackUnionStream.cpp
--- a/dom/media/TrackUnionStream.cpp
+++ b/dom/media/TrackUnionStream.cpp
@@ -306,28 +306,28 @@ TrackUnionStream::TrackUnionStream()
       interval.mEnd = std::min(interval.mEnd, aTo);
       StreamTime inputEnd = source->GraphTimeToStreamTimeWithBlocking(interval.mEnd);
       StreamTime inputTrackEndPoint = STREAM_TIME_MAX;
 
       if (aInputTrack->IsEnded() &&
           aInputTrack->GetEnd() <= inputEnd) {
         inputTrackEndPoint = aInputTrack->GetEnd();
         *aOutputTrackFinished = true;
+        break;
       }
 
       if (interval.mStart >= interval.mEnd) {
         break;
       }
       StreamTime ticks = interval.mEnd - interval.mStart;
       next = interval.mEnd;
 
       StreamTime outputStart = outputTrack->GetEnd();
 
       if (interval.mInputIsBlocked) {
-        // Maybe the input track ended?
         segment->AppendNullData(ticks);
         STREAM_LOG(LogLevel::Verbose, ("TrackUnionStream %p appending %lld ticks of null data to track %d",
                    this, (long long)ticks, outputTrack->GetID()));
       } else if (InMutedCycle()) {
         segment->AppendNullData(ticks);
       } else {
         if (source->IsSuspended()) {
           segment->AppendNullData(aTo - aFrom);