Bug 1296531 - Rip out direct stream listeners from MediaRecorder. r?jesup draft
authorAndreas Pehrson <pehrsons@gmail.com>
Thu, 13 Oct 2016 12:28:56 +0200
changeset 670287 f7b2d7f48c66cbeb49ab8f74cd2b2e04136343f9
parent 670286 6b974c29726cad852f043ee08c5d6cfc5f9644d5
child 670288 f361013872a5fbc0a598b80f5029875d26bc89b8
push id81598
push userbmo:apehrson@mozilla.com
push dateTue, 26 Sep 2017 09:13:19 +0000
reviewersjesup
bugs1296531
milestone58.0a1
Bug 1296531 - Rip out direct stream listeners from MediaRecorder. r?jesup MozReview-Commit-ID: CUAR85XvdUI
dom/media/MediaRecorder.cpp
--- 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;