Browse Source

Always enable AC3 transcoding if AC3 and stereo channels are selected

This removes the specialcasing of the "Optical" device type, which
implicitly enabled AC3 transcoding. The new behavior should be simpler
and what users want.
Vincent Lang 9 years ago
parent
commit
799251d584
1 changed files with 7 additions and 11 deletions
  1. 7 11
      src/player/PlayerComponent.cpp

+ 7 - 11
src/player/PlayerComponent.cpp

@@ -693,17 +693,20 @@ void PlayerComponent::setAudioConfiguration()
 
   mpv::qt::set_option_variant(m_mpv, "audio-spdif", passthroughCodecs);
 
-  // if the user has indicated that we have a optical spdif connection
-  // we need to set this extra option that allows us to transcode
+  // set the channel layout
+  QVariant layout = SettingsComponent::Get().value(SETTINGS_SECTION_AUDIO, "channels");
+  mpv::qt::set_option_variant(m_mpv, "audio-channels", layout);
+
+  // if the user has indicated that PCM only works for stereo, and that
+  // the receiver supports AC3, set this extra option that allows us to transcode
   // 5.1 audio into a usable format, note that we only support AC3
   // here for now. We might need to add support for DTS transcoding
   // if we see user requests for it.
   //
   bool doAc3Transcoding = false;
-  if (deviceType == AUDIO_DEVICE_TYPE_SPDIF &&
+  if (layout == "2.0" &&
       SettingsComponent::Get().value(SETTINGS_SECTION_AUDIO, "passthrough.ac3").toBool())
   {
-    QLOG_INFO() << "Enabling audio AC3 transcoding (if needed)";
     mpv::qt::command_variant(m_mpv, QStringList() << "af" << "add" << "@ac3:lavcac3enc");
     doAc3Transcoding = true;
   }
@@ -712,13 +715,6 @@ void PlayerComponent::setAudioConfiguration()
     mpv::qt::command_variant(m_mpv, QStringList() << "af" << "del" << "@ac3");
   }
 
-
-  // set the channel layout
-  QVariant layout = SettingsComponent::Get().value(SETTINGS_SECTION_AUDIO, "channels");
-  if (doAc3Transcoding)
-    layout = "stereo"; // AC3 spdif always uses 2 physical channels
-  mpv::qt::set_option_variant(m_mpv, "audio-channels", layout);
-
   // Make a informational log message.
   QString audioConfig = QString(QString("Audio Config - device: %1, ") +
                                         "channel layout: %2, " +