Bug 1208371 - Assert when stream finishes but contains live tracks. r?roc
This was the cause of some intermittent assertion failures, as the non-ended
track didn't contain enough data when linked to other streams in the graph,
but input extraction wouldn't get that data since the stream was finished.
--- a/dom/media/MediaStreamGraph.cpp
+++ b/dom/media/MediaStreamGraph.cpp
@@ -73,16 +73,27 @@ MediaStreamGraphImpl::~MediaStreamGraphI
}
void
MediaStreamGraphImpl::FinishStream(MediaStream* aStream)
{
if (aStream->mFinished)
return;
STREAM_LOG(LogLevel::Debug, ("MediaStream %p will finish", aStream));
+#ifdef DEBUG
+ for (StreamBuffer::TrackIter track(aStream->mBuffer);
+ !track.IsEnded(); track.Next()) {
+ if (!track->IsEnded()) {
+ STREAM_LOG(LogLevel::Error,
+ ("MediaStream %p will finish, but track %d has not ended.",
+ aStream, track->GetID()));
+ NS_ASSERTION(false, "Finished stream cannot contain live track");
+ }
+ }
+#endif
aStream->mFinished = true;
aStream->mBuffer.AdvanceKnownTracksTime(STREAM_TIME_MAX);
SetStreamOrderDirty();
}
void
MediaStreamGraphImpl::AddStreamGraphThread(MediaStream* aStream)