Bug 1400889 - Keep constant output channels in MediaStreamGraph. r?padenot draft
authorAlex Chronopoulos <achronop@gmail.com>
Tue, 03 Oct 2017 17:56:53 +0300
changeset 674240 6bfa78db3a887e59b087f0d863989aa0a40b498b
parent 672296 e6c32278f32cd5f7d159627b2157396b62d0c4a9
child 734272 c70ac21ee22c4390c3bb63c0b9087ebf372f5a85
push id82773
push userachronop@gmail.com
push dateTue, 03 Oct 2017 14:57:51 +0000
reviewerspadenot
bugs1400889
milestone58.0a1
Bug 1400889 - Keep constant output channels in MediaStreamGraph. r?padenot MozReview-Commit-ID: JlQdxU0aNOf
dom/media/MediaStreamGraph.cpp
dom/media/MediaStreamGraphImpl.h
--- a/dom/media/MediaStreamGraph.cpp
+++ b/dom/media/MediaStreamGraph.cpp
@@ -3471,16 +3471,17 @@ MediaStreamGraphImpl::MediaStreamGraphIm
   , mNonRealtimeProcessing(false)
   , mStreamOrderDirty(false)
   , mLatencyLog(AsyncLatencyLogger::Get())
   , mAbstractMainThread(aMainThread)
 #ifdef MOZ_WEBRTC
   , mFarendObserverRef(nullptr)
 #endif
   , mSelfRef(this)
+  , mOutputChannels(std::min<uint32_t>(8, CubebUtils::MaxNumberOfChannels()))
 #ifdef DEBUG
   , mCanRunMessagesSynchronously(false)
 #endif
 {
   if (mRealtime) {
     if (aDriverRequested == AUDIO_THREAD_DRIVER) {
       AudioCallbackDriver* driver = new AudioCallbackDriver(this);
       mDriver = driver;
--- a/dom/media/MediaStreamGraphImpl.h
+++ b/dom/media/MediaStreamGraphImpl.h
@@ -417,17 +417,17 @@ public:
    */
   void SetStreamOrderDirty()
   {
     mStreamOrderDirty = true;
   }
 
   uint32_t AudioChannelCount() const
   {
-    return std::min<uint32_t>(8, CubebUtils::MaxNumberOfChannels());
+    return mOutputChannels;
   }
 
   double MediaTimeToSeconds(GraphTime aTime) const
   {
     NS_ASSERTION(aTime > -STREAM_TIME_MAX && aTime <= STREAM_TIME_MAX,
                  "Bad time");
     return static_cast<double>(aTime)/GraphRate();
   }
@@ -810,16 +810,21 @@ private:
     uint64_t mWindowId;
     RefPtr<ProcessedMediaStream> mCaptureStreamSink;
   };
   /**
    * Stream for window audio capture.
    */
   nsTArray<WindowAndStream> mWindowCaptureStreams;
 
+  /**
+   * Number of channels on output.
+   */
+  const uint32_t mOutputChannels;
+
 #ifdef DEBUG
   /**
    * Used to assert when AppendMessage() runs ControlMessages synchronously.
    */
   bool mCanRunMessagesSynchronously;
 #endif
 };