aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRainer Hochecker <fernetmenta@online.de>2013-08-31 01:40:52 -0700
committerRainer Hochecker <fernetmenta@online.de>2013-08-31 01:40:52 -0700
commit22a94e41d4544414fb8c9b9ead6b825eb806ff31 (patch)
tree8e8d0eb7abd80e0e7abec0944c62f870ff15dfff
parent983a3884fa17880599021434a929163acea5399f (diff)
parentba4ae1defc046b180f5913afac9f954d17dd4a12 (diff)
Merge pull request #3161 from FernetMenta/eac3
AE: distinguish between AC-3 and EAC-3
-rw-r--r--language/English/strings.po10
-rw-r--r--system/settings/settings.xml12
-rw-r--r--xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp3
-rw-r--r--xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h1
-rw-r--r--xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecPassthrough.cpp16
-rw-r--r--xbmc/settings/Settings.cpp1
6 files changed, 33 insertions, 10 deletions
diff --git a/language/English/strings.po b/language/English/strings.po
index 0042682a5e..b89ee27d51 100644
--- a/language/English/strings.po
+++ b/language/English/strings.po
@@ -1874,7 +1874,10 @@ msgctxt "#447"
msgid "Autorun media"
msgstr ""
-#empty string with id 448
+#: system/settings/settings.xml
+msgctxt "#448"
+msgid "Dolby Digital Plus (E-AC3) capable receiver"
+msgstr ""
#: system/settings/settings.xml
msgctxt "#449"
@@ -14372,3 +14375,8 @@ msgstr ""
msgctxt "#37015"
msgid "Browse Into"
msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#37016"
+msgid "Select this option if your receiver is capable of decoding E-AC3 streams."
+msgstr "" \ No newline at end of file
diff --git a/system/settings/settings.xml b/system/settings/settings.xml
index 3da9550590..56710c7429 100644
--- a/system/settings/settings.xml
+++ b/system/settings/settings.xml
@@ -2021,6 +2021,18 @@
</dependency>
</dependencies>
</setting>
+ <setting id="audiooutput.eac3passthrough" type="boolean" parent="audiooutput.mode" label="448" help="37016">
+ <level>2</level>
+ <default>true</default>
+ <dependencies>
+ <dependency type="enable">
+ <or>
+ <condition setting="audiooutput.mode">1</condition> <!-- AUDIO_IEC958 -->
+ <condition setting="audiooutput.mode">2</condition> <!-- AUDIO_HDMI -->
+ </or>
+ </dependency>
+ </dependencies>
+ </setting>
<setting id="audiooutput.dtspassthrough" type="boolean" parent="audiooutput.mode" label="254" help="36366">
<level>2</level>
<default>true</default>
diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp
index d203fb7346..5d7a08cda4 100644
--- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp
+++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp
@@ -1218,6 +1218,7 @@ void CActiveAE::ApplySettingsToFormat(AEAudioFormat &format, AudioSettings &sett
if (m_settings.mode != AUDIO_ANALOG && AE_IS_RAW(format.m_dataFormat))
{
if ((format.m_dataFormat == AE_FMT_AC3 && !settings.ac3passthrough) ||
+ (format.m_dataFormat == AE_FMT_EAC3 && !settings.eac3passthrough) ||
(format.m_dataFormat == AE_FMT_TRUEHD && !settings.truehdpassthrough) ||
(format.m_dataFormat == AE_FMT_DTS && !settings.dtspassthrough) ||
(format.m_dataFormat == AE_FMT_DTSHD && !settings.dtshdpassthrough))
@@ -1903,6 +1904,7 @@ void CActiveAE::LoadSettings()
m_settings.stereoupmix = CSettings::Get().GetBool("audiooutput.stereoupmix");
m_settings.ac3passthrough = CSettings::Get().GetBool("audiooutput.ac3passthrough");
+ m_settings.eac3passthrough = CSettings::Get().GetBool("audiooutput.eac3passthrough");
m_settings.truehdpassthrough = CSettings::Get().GetBool("audiooutput.truehdpassthrough");
m_settings.dtspassthrough = CSettings::Get().GetBool("audiooutput.dtspassthrough");
m_settings.dtshdpassthrough = CSettings::Get().GetBool("audiooutput.dtshdpassthrough");
@@ -1968,6 +1970,7 @@ void CActiveAE::OnSettingsChange(const std::string& setting)
setting == "audiooutput.audiodevice" ||
setting == "audiooutput.mode" ||
setting == "audiooutput.ac3passthrough" ||
+ setting == "audiooutput.eac3passthrough" ||
setting == "audiooutput.dtspassthrough" ||
setting == "audiooutput.passthroughaac" ||
setting == "audiooutput.truehdpassthrough" ||
diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h
index 2333a5f260..7a0865c1c9 100644
--- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h
+++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h
@@ -51,6 +51,7 @@ struct AudioSettings
int mode;
int channels;
bool ac3passthrough;
+ bool eac3passthrough;
bool dtspassthrough;
bool aacpassthrough;
bool truehdpassthrough;
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecPassthrough.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecPassthrough.cpp
index d4bcf2b17a..5fb8bc7712 100644
--- a/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecPassthrough.cpp
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecPassthrough.cpp
@@ -45,6 +45,7 @@ bool CDVDAudioCodecPassthrough::Open(CDVDStreamInfo &hints, CDVDCodecOptions &op
return false;
bool bSupportsAC3Out = false;
+ bool bSupportsEAC3Out = false;
bool bSupportsDTSOut = false;
bool bSupportsTrueHDOut = false;
bool bSupportsDTSHDOut = false;
@@ -53,6 +54,7 @@ bool CDVDAudioCodecPassthrough::Open(CDVDStreamInfo &hints, CDVDCodecOptions &op
if (AUDIO_IS_BITSTREAM(audioMode))
{
bSupportsAC3Out = CSettings::Get().GetBool("audiooutput.ac3passthrough");
+ bSupportsEAC3Out = CSettings::Get().GetBool("audiooutput.eac3passthrough");
bSupportsDTSOut = CSettings::Get().GetBool("audiooutput.dtspassthrough");
}
@@ -66,17 +68,13 @@ bool CDVDAudioCodecPassthrough::Open(CDVDStreamInfo &hints, CDVDCodecOptions &op
m_info.SetCoreOnly(!bSupportsDTSHDOut);
m_bufferSize = 0;
- if (
- (hints.codec == AV_CODEC_ID_AC3 && bSupportsAC3Out) ||
+ if ((hints.codec == AV_CODEC_ID_AC3 && bSupportsAC3Out) ||
+ (hints.codec == AV_CODEC_ID_EAC3 && bSupportsEAC3Out) ||
(hints.codec == AV_CODEC_ID_DTS && bSupportsDTSOut) ||
- (audioMode == AUDIO_HDMI &&
- (
- (hints.codec == AV_CODEC_ID_EAC3 && bSupportsAC3Out ) ||
- (hints.codec == AV_CODEC_ID_TRUEHD && bSupportsTrueHDOut)
- )
- )
- )
+ (hints.codec == AV_CODEC_ID_TRUEHD && bSupportsTrueHDOut))
+ {
return true;
+ }
return false;
}
diff --git a/xbmc/settings/Settings.cpp b/xbmc/settings/Settings.cpp
index 486a26c658..0ff415c31c 100644
--- a/xbmc/settings/Settings.cpp
+++ b/xbmc/settings/Settings.cpp
@@ -869,6 +869,7 @@ void CSettings::InitializeISettingCallbacks()
settingSet.insert("audiooutput.guisoundmode");
settingSet.insert("audiooutput.stereoupmix");
settingSet.insert("audiooutput.ac3passthrough");
+ settingSet.insert("audiooutput.eac3passthrough");
settingSet.insert("audiooutput.dtspassthrough");
settingSet.insert("audiooutput.passthroughaac");
settingSet.insert("audiooutput.truehdpassthrough");