Bug 1278027 - Reuse some codes of MediaEncoder::NotifyQueuedTrackChanges in MediaEncoder::NotifyQueuedAudioData. r?jesup draft
authorctai <ctai@mozilla.com>
Tue, 07 Jun 2016 12:25:04 +0800
changeset 376016 f18b4ef20d0788e32339c6b83a5e421aaccefa9d
parent 376000 bee0651cd3ad0f83622ccd2d8e1ad91bf1f0d74e
child 523044 f01800b22e990872c1eb05ebaaadb9c5bfe73b3a
push id20464
push userbmo:ctai@mozilla.com
push dateTue, 07 Jun 2016 06:36:44 +0000
reviewersjesup
bugs1278027
milestone49.0a1
Bug 1278027 - Reuse some codes of MediaEncoder::NotifyQueuedTrackChanges in MediaEncoder::NotifyQueuedAudioData. r?jesup MozReview-Commit-ID: JBRdxD1wA4c
dom/media/TrackUnionStream.cpp
dom/media/encoder/MediaEncoder.cpp
--- a/dom/media/TrackUnionStream.cpp
+++ b/dom/media/TrackUnionStream.cpp
@@ -322,17 +322,20 @@ TrackUnionStream::TrackUnionStream(DOMMe
         }
       }
       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));
+                                   outputStart,
+                                   *static_cast<AudioSegment*>(segment),
+                                   map->mInputPort->GetSource(),
+                                   map->mInputTrackID);
         } else {
           // This part will be removed in bug 1201363.
           l->NotifyQueuedTrackChanges(Graph(), outputTrack->GetID(),
                                       outputStart, 0, *segment,
                                       map->mInputPort->GetSource(),
                                       map->mInputTrackID);
         }
       }
--- a/dom/media/encoder/MediaEncoder.cpp
+++ b/dom/media/encoder/MediaEncoder.cpp
@@ -107,18 +107,25 @@ MediaEncoder::NotifyQueuedTrackChanges(M
 
 void
 MediaEncoder::NotifyQueuedAudioData(MediaStreamGraph* aGraph, TrackID aID,
                                     StreamTime aTrackOffset,
                                     const AudioSegment& aQueuedMedia,
                                     MediaStream* aInputStream,
                                     TrackID aInputTrackID)
 {
-  mAudioEncoder->NotifyQueuedTrackChanges(aGraph, aID, aTrackOffset, 0,
-                                          aQueuedMedia);
+  if (!mDirectConnected) {
+    NotifyRealtimeData(aGraph, aID, aTrackOffset, 0, aQueuedMedia);
+  } else {
+    if (mSuspended == RECORD_RESUMED) {
+      if (!mVideoEncoder) {
+        mSuspended = RECORD_NOT_SUSPENDED; // no video
+      }
+    }
+  }
 }
 
 void
 MediaEncoder::NotifyEvent(MediaStreamGraph* aGraph,
                           MediaStreamListener::MediaStreamGraphEvent event)
 {
   // In case that MediaEncoder does not receive a TRACK_EVENT_ENDED event.
   LOG(LogLevel::Debug, ("NotifyRemoved in [MediaEncoder]."));