Bug 1431221 - P11. Configure audio to use desired channel layout. r=padenot draft
authorJean-Yves Avenard <jyavenard@mozilla.com>
Sun, 11 Feb 2018 18:59:35 +0100
changeset 771693 4fbcdc69f42a66bd9f988cfb7837f61c1bc73c7f
parent 771692 e5498bba39e88aba383a211ff1a56e6f4a23d55e
child 771694 26a99d7fa047f65b696db0b8e5e3bf6a0b05206c
push id103752
push userbmo:jyavenard@mozilla.com
push dateFri, 23 Mar 2018 17:52:32 +0000
reviewerspadenot
bugs1431221
milestone61.0a1
Bug 1431221 - P11. Configure audio to use desired channel layout. r=padenot MozReview-Commit-ID: 1wyeCIWohHE
dom/media/mediasink/AudioSink.cpp
--- a/dom/media/mediasink/AudioSink.cpp
+++ b/dom/media/mediasink/AudioSink.cpp
@@ -390,20 +390,27 @@ AudioSink::NotifyAudioNeeded()
         if (!result.isValid()) {
           NS_WARNING("Int overflow in AudioSink");
           mErrored = true;
           return;
         }
         mFramesParsed = result.value();
       }
 
+      const AudioConfig::ChannelLayout inputLayout =
+        data->mChannelMap
+          ? AudioConfig::ChannelLayout::SMPTEDefault(data->mChannelMap)
+          : AudioConfig::ChannelLayout(data->mChannels);
+      const AudioConfig::ChannelLayout outputLayout =
+        mOutputChannels == data->mChannels
+          ? inputLayout
+          : AudioConfig::ChannelLayout(mOutputChannels);
       mConverter =
-        MakeUnique<AudioConverter>(
-          AudioConfig(data->mChannels, data->mRate),
-          AudioConfig(mOutputChannels, mOutputRate));
+        MakeUnique<AudioConverter>(AudioConfig(inputLayout, data->mRate),
+                                   AudioConfig(outputLayout, mOutputRate));
     }
 
     // See if there's a gap in the audio. If there is, push silence into the
     // audio hardware, so we can play across the gap.
     // Calculate the timestamp of the next chunk of audio in numbers of
     // samples.
     CheckedInt64 sampleTime =
       TimeUnitToFrames(data->mTime - mStartTime, data->mRate);