Merge pull request #4899 from Memphiz/osxsinkphysicalformat
authorjmarshallnz <jcmarsha@gmail.com>
Thu, 12 Jun 2014 21:03:58 +0000 (09:03 +1200)
committerJonathan Marshall <jmarshall@xbmc.org>
Sun, 15 Jun 2014 04:25:16 +0000 (16:25 +1200)
[AE/osxsink] - don't set the altered outputformat which might have wrong channel count
Conflicts:
xbmc/cores/AudioEngine/Sinks/AESinkDARWINOSX.cpp

xbmc/cores/AudioEngine/Sinks/AESinkDARWINOSX.cpp

index a6006c6..c3b67d9 100644 (file)
@@ -687,6 +687,7 @@ bool CAESinkDARWINOSX::Initialize(AEAudioFormat &format, std::string &device)
 
   bool                        passthrough  = false;
   UInt32                      outputIndex  = 0;
+  UInt32                      numOutputChannels = 0;
   float                       outputScore  = 0;
   AudioStreamBasicDescription outputFormat = {0};
   AudioStreamID               outputStream = 0;
@@ -732,11 +733,12 @@ bool CAESinkDARWINOSX::Initialize(AEAudioFormat &format, std::string &device)
   }
 
   m_planar = false;
+  numOutputChannels = outputFormat.mChannelsPerFrame;
   if (streams.size() > 1 && outputFormat.mChannelsPerFrame == 1)
   {
-    CLog::Log(LOGDEBUG, "%s Found planar audio with %u channels?", __FUNCTION__, streams.size());
-    outputFormat.mChannelsPerFrame = std::min((size_t)format.m_channelLayout.Count(), streams.size());
+    numOutputChannels = std::min((size_t)format.m_channelLayout.Count(), streams.size());
     m_planar = true;
+    CLog::Log(LOGDEBUG, "%s Found planar audio with %u channels using %u of them.", __FUNCTION__, (unsigned int)streams.size(), (unsigned int)numOutputChannels);
   }
 
   if (!outputFormat.mFormatID)
@@ -770,7 +772,7 @@ bool CAESinkDARWINOSX::Initialize(AEAudioFormat &format, std::string &device)
   CLog::Log(LOGDEBUG, "%s: New Physical Format: %s", __FUNCTION__, StreamDescriptionToString(outputFormat, formatString));
 
   // update the channel map based on the new stream format
-  GetAEChannelMap(m_device, format.m_channelLayout, outputFormat.mChannelsPerFrame);
+  GetAEChannelMap(m_device, format.m_channelLayout, numOutputChannels);
 
 
   m_latentFrames = m_device.GetNumLatencyFrames();