Bug 1296531 - Rip out direct stream listeners from MediaRecorder. r?jesup
MozReview-Commit-ID: CUAR85XvdUI
--- a/dom/media/MediaRecorder.cpp
+++ b/dom/media/MediaRecorder.cpp
@@ -772,25 +772,16 @@ private:
if (!videoTracks.IsEmpty()) {
// Right now, the MediaRecorder hasn't dealt with multiple video track
// issues. So we just bind with the first video track. Bug 1276928 is
// the following.
videoTracks[0]->AddDirectListener(mEncoder->GetVideoSink());
}
}
- // Try to use direct listeners if possible
- if (domStream && domStream->GetInputStream()) {
- mInputStream = domStream->GetInputStream()->AsSourceStream();
- if (mInputStream) {
- mInputStream->AddDirectListener(mEncoder.get());
- mEncoder->SetDirectConnect(true);
- }
- }
-
// Create a thread to read encode media data from MediaEncoder.
if (!mReadThread) {
nsresult rv = NS_NewNamedThread("Media_Encoder", getter_AddRefs(mReadThread));
if (NS_FAILED(rv)) {
LOG(LogLevel::Debug, ("Session.InitEncoder !mReadThread %p", this));
DoSessionEndTask(rv);
return;
}
@@ -840,23 +831,16 @@ private:
}
if (NS_FAILED(NS_DispatchToMainThread(new DestroyRunnable(this)))) {
MOZ_ASSERT(false, "NS_DispatchToMainThread DestroyRunnable failed");
}
mNeedSessionEndTask = false;
}
void CleanupStreams()
{
- if (mInputStream) {
- if (mEncoder) {
- mInputStream->RemoveDirectListener(mEncoder.get());
- }
- mInputStream = nullptr;
- }
-
if (mTrackUnionStream) {
if (mEncoder) {
nsTArray<RefPtr<mozilla::dom::VideoStreamTrack>> videoTracks;
DOMMediaStream* domStream = mRecorder->Stream();
if (domStream) {
domStream->GetVideoTracks(videoTracks);
if (!videoTracks.IsEmpty()) {
videoTracks[0]->RemoveDirectListener(mEncoder->GetVideoSink());
@@ -925,17 +909,16 @@ private:
private:
// Hold reference to MediaRecoder that ensure MediaRecorder is alive
// if there is an active session. Access ONLY on main thread.
RefPtr<MediaRecorder> mRecorder;
// Receive track data from source and dispatch to Encoder.
// Pause/ Resume controller.
RefPtr<ProcessedMediaStream> mTrackUnionStream;
- RefPtr<SourceMediaStream> mInputStream;
nsTArray<RefPtr<MediaInputPort>> mInputPorts;
// Stream currently recorded.
RefPtr<DOMMediaStream> mMediaStream;
// Tracks currently recorded. This should be a subset of mMediaStream's track
// set.
nsTArray<RefPtr<MediaStreamTrack>> mMediaStreamTracks;