Bug 1305949 - Use the same path for passing on missed data to video sink, as during normal operation. r?ctai
MozReview-Commit-ID: FDKFf1skYVe
--- a/dom/media/MediaStreamGraph.cpp
+++ b/dom/media/MediaStreamGraph.cpp
@@ -2877,30 +2877,29 @@ SourceMediaStream::AddDirectTrackListene
MutexAutoLock lock(mMutex);
updateData = FindDataForTrack(aTrackID);
track = FindTrack(aTrackID);
if (track) {
isAudio = track->GetType() == MediaSegment::AUDIO;
isVideo = track->GetType() == MediaSegment::VIDEO;
}
- MediaStreamVideoSink* videoSink = listener->AsMediaStreamVideoSink();
- if (track && isVideo && videoSink) {
+ if (track && isVideo && listener->AsMediaStreamVideoSink()) {
// Re-send missed VideoSegment to new added MediaStreamVideoSink.
VideoSegment* trackSegment = static_cast<VideoSegment*>(track->GetSegment());
VideoSegment videoSegment;
if (mTracks.GetForgottenDuration() < trackSegment->GetDuration()) {
videoSegment.AppendSlice(*trackSegment,
mTracks.GetForgottenDuration(),
trackSegment->GetDuration());
}
if (updateData) {
videoSegment.AppendSlice(*updateData->mData, 0, updateData->mData->GetDuration());
}
- videoSink->SetCurrentFrames(videoSegment);
+ listener->NotifyRealtimeTrackData(Graph(), 0, videoSegment);
}
if (track && (isAudio || isVideo)) {
for (auto entry : mDirectTrackListeners) {
if (entry.mListener == listener &&
(entry.mTrackID == TRACK_ANY || entry.mTrackID == aTrackID)) {
listener->NotifyDirectListenerInstalled(
DirectMediaStreamTrackListener::InstallationResult::ALREADY_EXISTS);