Bug 1201363 - Do not copy video segment to StreamTracks in TrackUnionStream. r?jesup,r?pehrsons
Now everything is ready. We can make NotifyQueuedTrackChanges only triggered by TRACK_EVENT_CREATED and TRACK_EVENT_ENDED without breaking anything. Also we make TrackUnionStream no longer copying data in video case.
MozReview-Commit-ID: HjX0MHjrzc4
--- a/dom/media/MediaStreamGraph.cpp
+++ b/dom/media/MediaStreamGraph.cpp
@@ -189,25 +189,16 @@ MediaStreamGraphImpl::ExtractPendingInpu
l->NotifyQueuedTrackChanges(this, data->mID,
offset, data->mCommands, *data->mData);
}
} else if (data->mData->GetType() == MediaSegment::AUDIO) {
for (MediaStreamListener* l : aStream->mListeners) {
l->NotifyQueuedAudioData(this, data->mID,
offset, *(static_cast<AudioSegment*>(data->mData.get())));
}
- } else {
- // Fixme: This part will be removed in the later changeset of this bug.
- // It will be removed in changeset "Do not copy video segment to StreamTracks in TrackUnionStream."
-
- // Dealing with video and not TRACK_CREATE and TRACK_END case.
- for (MediaStreamListener* l : aStream->mListeners) {
- l->NotifyQueuedTrackChanges(this, data->mID,
- offset, data->mCommands, *data->mData);
- }
}
if (data->mCommands & SourceMediaStream::TRACK_CREATE) {
MediaSegment* segment = data->mData.forget();
STREAM_LOG(LogLevel::Debug, ("SourceMediaStream %p creating track %d, start %lld, initial end %lld",
aStream, data->mID, int64_t(data->mStart),
int64_t(segment->GetDuration())));
--- a/dom/media/TrackUnionStream.cpp
+++ b/dom/media/TrackUnionStream.cpp
@@ -261,33 +261,30 @@ TrackUnionStream::TrackUnionStream(DOMMe
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);
- } else {
+ } else if (segment->GetType() == MediaSegment::AUDIO) {
MOZ_ASSERT(outputTrack->GetEnd() == GraphTimeToStreamTimeWithBlocking(interval.mStart),
"Samples missing");
StreamTime inputStart = source->GraphTimeToStreamTimeWithBlocking(interval.mStart);
segment->AppendSlice(*aInputTrack->GetSegment(),
std::min(inputTrackEndPoint, inputStart),
std::min(inputTrackEndPoint, inputEnd));
}
}
ApplyTrackDisabling(outputTrack->GetID(), segment);
for (uint32_t j = 0; j < mListeners.Length(); ++j) {
MediaStreamListener* l = mListeners[j];
// Separate Audio and Video.
if (segment->GetType() == MediaSegment::AUDIO) {
l->NotifyQueuedAudioData(Graph(), outputTrack->GetID(),
outputStart, *static_cast<AudioSegment*>(segment));
- } else {
- l->NotifyQueuedTrackChanges(Graph(), outputTrack->GetID(),
- outputStart, 0, *segment);
}
}
outputTrack->GetSegment()->AppendFrom(segment);
}
}
} // namespace mozilla