Merge pull request #4767 from fritsch/aefixes
authorjmarshallnz <jcmarsha@gmail.com>
Thu, 22 May 2014 19:41:24 +0000 (07:41 +1200)
committerTrent Nelson <trent.nelson@pivosgroup.com>
Sat, 7 Jun 2014 05:27:40 +0000 (13:27 +0800)
ActiveAE: Properly set m_encodedRate when transcoding

xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp
xbmc/cores/AudioEngine/Sinks/AESinkPULSE.cpp

index 8013d71..4962aea 100644 (file)
@@ -1421,6 +1421,7 @@ void CActiveAE::ApplySettingsToFormat(AEAudioFormat &format, AudioSettings &sett
   {
     format.m_dataFormat = AE_FMT_AC3;
     format.m_sampleRate = 48000;
+    format.m_encodedRate = 48000;
     format.m_channelLayout = AE_CH_LAYOUT_2_0;
     if (mode)
       *mode = MODE_TRANSCODE;
index e81f02b..64974d5 100644 (file)
@@ -548,19 +548,12 @@ bool CAESinkPULSE::Initialize(AEAudioFormat &format, std::string &device)
   pa_format_info_set_channels(info[0], m_Channels);
 
   // PA requires m_encodedRate in order to do EAC3
-  unsigned int samplerate;
-  if (m_passthrough)
+  unsigned int samplerate = format.m_sampleRate;
+  if (m_passthrough && (AEFormatToPulseEncoding(format.m_dataFormat) == PA_ENCODING_EAC3_IEC61937))
   {
-    if (format.m_encodedRate == 0 || format.m_encodedRate > format.m_sampleRate)
-    {
-      CLog::Log(LOGNOTICE, "PulseAudio: Passthrough in use but m_encodedRate is not set or too large: %u - fallback to m_sampleRate", format.m_encodedRate);
-      samplerate = format.m_sampleRate;
-    }
-    else
-      samplerate = format.m_encodedRate;
+    // this is only used internally for PA to use EAC3
+    samplerate = format.m_encodedRate;
   }
-  else
-    samplerate = format.m_sampleRate;
 
   pa_format_info_set_rate(info[0], samplerate);