aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xlanguage/English/strings.po72
-rw-r--r--system/settings/settings.xml231
-rw-r--r--system/settings/win32.xml20
-rw-r--r--xbmc/cores/AudioEngine/AEFactory.cpp44
-rw-r--r--xbmc/cores/AudioEngine/AEFactory.h4
-rw-r--r--xbmc/cores/AudioEngine/Interfaces/AE.h13
-rw-r--r--xbmc/cores/AudioEngine/Utils/AEUtil.h9
-rw-r--r--xbmc/settings/Settings.cpp8
8 files changed, 251 insertions, 150 deletions
diff --git a/language/English/strings.po b/language/English/strings.po
index 4d3e6ff54f..a403c5d576 100755
--- a/language/English/strings.po
+++ b/language/English/strings.po
@@ -1393,17 +1393,17 @@ msgstr ""
#: system/settings/settings.xml
msgctxt "#337"
-msgid "Audio output"
+msgid "Output configuration"
msgstr ""
#: system/settings/settings.xml
msgctxt "#338"
-msgid "Analogue"
+msgid "Fixed"
msgstr ""
#: system/settings/settings.xml
msgctxt "#339"
-msgid "Optical/Coax"
+msgid "Optimized"
msgstr ""
msgctxt "#340"
@@ -1447,7 +1447,7 @@ msgstr ""
#: system/settings/settings.xml
msgctxt "#348"
-msgid "Multichannel LPCM capable receiver"
+msgid "Enable passthrough"
msgstr ""
#: system/settings/settings.xml
@@ -1780,12 +1780,12 @@ msgstr ""
#: system/settings/settings.xml
msgctxt "#420"
-msgid "HDMI"
+msgid "Best Match"
msgstr ""
#: system/settings/settings.xml
msgctxt "#421"
-msgid "Stream silence when idle"
+msgid "Keep audio device alive"
msgstr ""
msgctxt "#422"
@@ -1937,7 +1937,10 @@ msgctxt "#457"
msgid "Switch view"
msgstr ""
-#empty string with id 458
+#: system/settings/settings.xml
+msgctxt "#458"
+msgid "Limit sampling rate (kHz)"
+msgstr ""
msgctxt "#459"
msgid "Subs"
@@ -12442,7 +12445,7 @@ msgstr ""
#: system/settings/settings.xml
msgctxt "#34111"
-msgid "When activated silence is output in order to keep alive receiver, otherwise sink is drained in idle state"
+msgid "When enabled very quiet noise is sent (for a given period of time) to the audio output device when XBMC is idle, this keeps the receiving device alive ensuring any new sounds are not missed. This might block concurrent applications from outputting sound."
msgstr ""
#empty strings from id 34112 to 34119
@@ -12471,8 +12474,38 @@ msgctxt "#34123"
msgid "Never"
msgstr ""
-#empty strings from id 34124 to 34200
-#34124-34200 reserved for future use
+#. SPDIF max sampling rate
+#: system/settings/settings.xml
+msgctxt "#34124"
+msgid "44.1"
+msgstr ""
+
+#. SPDIF max sampling rate
+#: system/settings/settings.xml
+msgctxt "#34125"
+msgid "48.0"
+msgstr ""
+
+#. SPDIF max sampling rate
+#: system/settings/settings.xml
+msgctxt "#34126"
+msgid "88.2"
+msgstr ""
+
+#. SPDIF max sampling rate
+#: system/settings/settings.xml
+msgctxt "#34127"
+msgid "96.0"
+msgstr ""
+
+#. SPDIF max sampling rate
+#: system/settings/settings.xml
+msgctxt "#34128"
+msgid "192.0"
+msgstr ""
+
+#empty strings from id 34129 to 34200
+#34129-34200 reserved for future use
#: xbmc\PlayListPlayer.cpp
msgctxt "#34201"
@@ -13215,7 +13248,7 @@ msgstr ""
#: system/settings/settings.xml
msgctxt "#36169"
-msgid "Resampling and other sound processing quality. Low quality is fast, higher quality will consume more CPU."
+msgid "Select the quality of resampling when audio output needs to be at a different sampling rate from that used by the source. Low quality is fast and will have minimal impact on system resources such as the use of the CPU, Medium & High will use progressively more system resources."
msgstr ""
#: system/settings/settings.xml
@@ -14175,12 +14208,12 @@ msgstr ""
#: system/settings/settings.xml
msgctxt "#36361"
-msgid "Type of connection to the audio equipment."
+msgid "Select how audio is output. Fixed - the properties of the audio output are fixed to the specified sampling rate & speaker configuration; Best Match - the properties of the audio output are set to match the properties of the audio source where possible if not the closest match is chosen; Optimized - the properties of the audio output are not changed during playback."
msgstr ""
#: system/settings/settings.xml
msgctxt "#36362"
-msgid "Select your physical speaker layout."
+msgid "Select the maximum number of audio channels/speakers available for audio decoded. On OS-X systems where optical/coax digital outputs are used this must be set to 2.0"
msgstr ""
#: system/settings/settings.xml
@@ -14190,7 +14223,7 @@ msgstr ""
#: system/settings/settings.xml
msgctxt "#36364"
-msgid "Upmix 2 channel stereo sources so the number of audio channels matches the number of speakers."
+msgid "When enabled upmix 2 channel stereo sources to the number of audio channels specified by the Speaker Configuration."
msgstr ""
#: system/settings/settings.xml
@@ -14210,7 +14243,7 @@ msgstr ""
#: system/settings/settings.xml
msgctxt "#36368"
-msgid "Select this option if your receiver is capable of decoding LPCM streams."
+msgid "Select to enable the passthrough audio options for playback of encoded audio such as Dolby Digital."
msgstr ""
#: system/settings/settings.xml
@@ -14225,12 +14258,12 @@ msgstr ""
#: system/settings/settings.xml
msgctxt "#36371"
-msgid "Select the device you use to play audio decoded by XBMC such as mp3's and FLAC."
+msgid "Select the device to be used for playback of audio that has been decoded such as mp3"
msgstr ""
#: system/settings/settings.xml
msgctxt "#36372"
-msgid "Select the device you use to play encoded formats, these are any of the formats checked above in the 'capable receiver' options."
+msgid "Select the device to be used for playback of encoded formats, these are any of the formats below in the 'capable receiver' options."
msgstr ""
#: system/settings/settings.xml
@@ -14556,7 +14589,10 @@ msgctxt "#36522"
msgid "Use preferred mode"
msgstr ""
-#empty string with id 36523
+#: system/settings/settings.xml
+msgctxt "#36523"
+msgid "Maximum sampling rate for spdif or sampling rate for fixed output configuration"
+msgstr ""
#: system/settings/settings.xml
msgctxt "#36524"
diff --git a/system/settings/settings.xml b/system/settings/settings.xml
index a381862310..baab060344 100644
--- a/system/settings/settings.xml
+++ b/system/settings/settings.xml
@@ -1967,17 +1967,20 @@
</category>
<category id="audiooutput" label="772" help="36360">
<group id="1">
- <setting id="audiooutput.mode" type="integer" label="337" help="36361">
- <level>1</level>
- <default>0</default> <!-- AUDIO_ANALOG -->
+ <setting id="audiooutput.audiodevice" type="string" label="545" help="36371">
+ <level>0</level>
+ <default>Default</default> <!-- will be properly set on startup -->
<constraints>
- <options>audiooutputmodes</options>
+ <options>audiodevices</options>
</constraints>
- <control type="spinner" format="string" />
+ <control type="list" format="string" />
</setting>
<setting id="audiooutput.channels" type="integer" label="34100" help="36362">
<level>0</level>
<default>1</default> <!-- AE_CH_LAYOUT_2_0 -->
+ <dependencies>
+ <dependency type="visible" on="property" name="aesettingvisible" setting="audiooutput.audiodevice">audiooutput.channels</dependency>
+ </dependencies>
<constraints>
<options>
<option label="34101">1</option> <!-- AE_CH_LAYOUT_2_0 -->
@@ -1992,14 +1995,48 @@
<option label="34110">10</option> <!-- AE_CH_LAYOUT_7_1 -->
</options>
</constraints>
- <updates>
- <update type="rename">audiooutput.channellayout</update>
- </updates>
<control type="spinner" format="string" />
</setting>
- <setting id="audiooutput.normalizelevels" type="boolean" label="346" help="36363">
+ <setting id="audiooutput.config" type="integer" label="337" help="36361">
<level>2</level>
- <default>true</default>
+ <default>2</default>
+ <constraints>
+ <options>
+ <option label="338">1</option>
+ <option label="339">2</option>
+ <option label="420">3</option>
+ </options>
+ </constraints>
+ <control type="spinner" format="integer" />
+ </setting>
+ <setting id="audiooutput.samplerate" type="integer" label="458" help="36523">
+ <level>2</level>
+ <default>48000</default>
+ <dependencies>
+ <dependency type="visible">
+ <and>
+ <condition on="property" name="aesettingvisible" setting="audiooutput.audiodevice">audiooutput.samplerate</condition>
+ <condition on="property" name="aesettingvisible" setting="audiooutput.config">audiooutput.samplerate</condition>
+ </and>
+ </dependency>
+ </dependencies>
+ <constraints>
+ <options>
+ <option label="34124">44100</option>
+ <option label="34125">48000</option>
+ <option label="34126">88200</option>
+ <option label="34127">96000</option>
+ <option label="34128">192000</option>
+ </options>
+ </constraints>
+ <control type="spinner" format="integer" />
+ </setting>
+ <setting id="audiooutput.stereoupmix" type="boolean" label="252" help="36364">
+ <level>2</level>
+ <default>false</default>
+ <dependencies>
+ <dependency type="visible" setting="audiooutput.channels" operator="!is">1</dependency>
+ </dependencies>
</setting>
<setting id="audiooutput.processquality" type="integer" label="13505" help="36169">
<requirement>HAS_AE_QUALITY_LEVELS</requirement>
@@ -2010,128 +2047,130 @@
</constraints>
<control type="spinner" format="string" />
</setting>
- <setting id="audiooutput.stereoupmix" type="boolean" label="252" help="36364">
- <level>2</level>
- <default>false</default>
+ <setting id="audiooutput.streamsilence" type="boolean" label="421" help="34111">
+ <level>1</level>
+ <requirement>audiosupportsdrain</requirement>
+ <default>true</default>
+ </setting>
+ </group>
+ <group id="2">
+ <setting id="audiooutput.guisoundmode" type="integer" label="34120" help="36373">
+ <level>0</level>
+ <default>1</default> <!-- AE_SOUND_IDLE -->
+ <constraints>
+ <options>
+ <option label="34121">1</option> <!-- AE_SOUND_IDLE -->
+ <option label="34122">2</option> <!-- AE_SOUND_ALWAYS -->
+ <option label="34123">0</option> <!-- AE_SOUND_OFF -->
+ </options>
+ </constraints>
+ <control type="spinner" format="string" />
</setting>
- <setting id="audiooutput.ac3passthrough" type="boolean" parent="audiooutput.mode" label="364" help="36365">
+ </group>
+ <group id="3">
+ <setting id="audiooutput.passthrough" type="boolean" label="348" help="36368">
<level>2</level>
- <default>true</default>
+ <default>false</default>
<dependencies>
- <dependency type="enable">
- <or>
- <condition setting="audiooutput.mode">1</condition> <!-- AUDIO_IEC958 -->
- <condition setting="audiooutput.mode">2</condition> <!-- AUDIO_HDMI -->
- </or>
+ <dependency type="visible">
+ <and>
+ <condition on="property" name="aesettingvisible" setting="audiooutput.audiodevice">audiooutput.passthrough</condition>
+ <condition on="property" name="aesettingvisible" setting="audiooutput.config">audiooutput.passthrough</condition>
+ </and>
</dependency>
</dependencies>
</setting>
- <setting id="audiooutput.eac3passthrough" type="boolean" parent="audiooutput.mode" label="448" help="37016">
+ <setting id="audiooutput.passthroughdevice" type="string" label="546" help="36372">
<level>2</level>
- <default>true</default>
+ <default>Default</default> <!-- will be properly set on startup -->
<dependencies>
- <dependency type="enable">
- <or>
- <condition setting="audiooutput.mode">1</condition> <!-- AUDIO_IEC958 -->
- <condition setting="audiooutput.mode">2</condition> <!-- AUDIO_HDMI -->
- </or>
+ <dependency type="visible">
+ <and>
+ <condition setting="audiooutput.passthrough" operator="is">true</condition>
+ <condition on="property" name="aesettingvisible" setting="audiooutput.passthrough">audiooutput.passthrough</condition>
+ <condition on="property" name="aesettingvisible" setting="audiooutput.config">audiooutput.passthrough</condition>
+ </and>
</dependency>
</dependencies>
- </setting>
- <setting id="audiooutput.dtspassthrough" type="boolean" parent="audiooutput.mode" label="254" help="36366">
+ <constraints>
+ <options>audiodevicespassthrough</options>
+ </constraints>
+ <control type="list" format="string" />
+ </setting>
+ <setting id="audiooutput.ac3passthrough" type="boolean" label="364" help="36365">
<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 type="visible">
+ <and>
+ <condition setting="audiooutput.passthrough" operator="is">true</condition>
+ <condition on="property" name="aesettingvisible" setting="audiooutput.config">audiooutput.passthrough</condition>
+ </and>
</dependency>
</dependencies>
</setting>
- <setting id="audiooutput.passthroughaac" type="boolean" parent="audiooutput.mode" label="299" help="36367">
+ <setting id="audiooutput.eac3passthrough" type="boolean" label="448" help="37016">
<level>2</level>
<default>false</default>
<dependencies>
- <dependency type="enable">
- <or>
- <condition setting="audiooutput.mode">1</condition> <!-- AUDIO_IEC958 -->
- <condition setting="audiooutput.mode">2</condition> <!-- AUDIO_HDMI -->
- </or>
+ <dependency type="visible">
+ <and>
+ <condition setting="audiooutput.passthrough" operator="is">true</condition>
+ <condition on="property" name="aesettingvisible" setting="audiooutput.config">audiooutput.passthrough</condition>
+ </and>
</dependency>
- </dependencies>
+ </dependencies>
</setting>
- <setting id="audiooutput.multichannellpcm" type="boolean" parent="audiooutput.mode" label="348" help="36368">
+ <setting id="audiooutput.dtspassthrough" type="boolean" label="254" help="36366">
<level>2</level>
- <default>true</default>
+ <default>false</default>
<dependencies>
- <dependency type="enable" setting="audiooutput.mode">2</dependency> <!-- AUDIO_HDMI -->
- </dependencies>
+ <dependency type="visible">
+ <and>
+ <condition setting="audiooutput.passthrough" operator="is">true</condition>
+ <condition on="property" name="aesettingvisible" setting="audiooutput.config">audiooutput.passthrough</condition>
+ </and>
+ </dependency>
+ </dependencies>
</setting>
- <setting id="audiooutput.truehdpassthrough" type="boolean" parent="audiooutput.mode" label="349" help="36369">
+ <setting id="audiooutput.passthroughaac" type="boolean" label="299" help="36367">
<level>2</level>
- <default>true</default>
+ <default>false</default>
<dependencies>
- <dependency type="enable" setting="audiooutput.mode">2</dependency> <!-- AUDIO_HDMI -->
- </dependencies>
+ <dependency type="visible">
+ <and>
+ <condition setting="audiooutput.passthrough" operator="is">true</condition>
+ <condition on="property" name="aesettingvisible" setting="audiooutput.passthrough">audiooutput.passthrough</condition>
+ <condition on="property" name="aesettingvisible" setting="audiooutput.config">audiooutput.passthrough</condition>
+ </and>
+ </dependency>
+ </dependencies>
</setting>
- <setting id="audiooutput.dtshdpassthrough" type="boolean" parent="audiooutput.mode" label="347" help="36370">
+ <setting id="audiooutput.truehdpassthrough" type="boolean" label="349" help="36369">
<level>2</level>
- <default>true</default>
+ <default>false</default>
<dependencies>
- <dependency type="enable">
+ <dependency type="visible">
<and>
- <condition setting="audiooutput.dtspassthrough">true</condition>
- <condition setting="audiooutput.mode">2</condition> <!-- AUDIO_HDMI -->
+ <condition setting="audiooutput.passthrough" operator="is">true</condition>
+ <condition on="property" name="aesettingvisible" setting="audiooutput.config">audiooutput.truehdpassthrough</condition>
+ <condition on="property" name="aesettingvisible" setting="audiooutput.passthroughdevice">audiooutput.truehdpassthrough</condition>
</and>
</dependency>
- </dependencies>
+ </dependencies>
</setting>
- <setting id="audiooutput.streamsilence" type="boolean" label="421" help="34111">
+ <setting id="audiooutput.dtshdpassthrough" type="boolean" label="347" help="36370">
<level>2</level>
- <requirement>audiosupportsdrain</requirement>
- <default>true</default>
- </setting>
- </group>
- <group id="2">
- <setting id="audiooutput.audiodevice" type="string" label="545" help="36371">
- <level>2</level>
- <default>Default</default> <!-- will be properly set on startup -->
- <constraints>
- <options>audiodevices</options>
- </constraints>
- <control type="spinner" format="string" />
- </setting>
- <setting id="audiooutput.passthroughdevice" type="string" label="546" help="36372">
- <level>2</level>
- <default>Default</default> <!-- will be properly set on startup -->
- <constraints>
- <options>audiodevicespassthrough</options>
- </constraints>
+ <default>false</default>
<dependencies>
- <dependency type="enable">
- <or>
- <condition setting="audiooutput.mode">1</condition> <!-- AUDIO_IEC958 -->
- <condition setting="audiooutput.mode">2</condition> <!-- AUDIO_HDMI -->
- </or>
+ <dependency type="visible">
+ <and>
+ <condition setting="audiooutput.passthrough" operator="is">true</condition>
+ <condition on="property" name="aesettingvisible" setting="audiooutput.config">audiooutput.dtshdpassthrough</condition>
+ <condition on="property" name="aesettingvisible" setting="audiooutput.passthroughdevice">audiooutput.dtshdpassthrough</condition>
+ </and>
</dependency>
- </dependencies>
- <control type="spinner" format="string" />
- </setting>
- </group>
- <group id="3">
- <setting id="audiooutput.guisoundmode" type="integer" label="34120" help="36373">
- <level>0</level>
- <default>1</default> <!-- AE_SOUND_IDLE -->
- <constraints>
- <options>
- <option label="34121">1</option> <!-- AE_SOUND_IDLE -->
- <option label="34122">2</option> <!-- AE_SOUND_ALWAYS -->
- <option label="34123">0</option> <!-- AE_SOUND_OFF -->
- </options>
- </constraints>
- <control type="spinner" format="string" />
+ </dependencies>
</setting>
</group>
</category>
diff --git a/system/settings/win32.xml b/system/settings/win32.xml
index bb716a2edd..acf63d1164 100644
--- a/system/settings/win32.xml
+++ b/system/settings/win32.xml
@@ -40,15 +40,17 @@
</group>
</category>
<category id="audiooutput" label="772" help="36360">
- <group id="2">
+ <group id="1">
<setting id="audiooutput.audiodevice" type="string" label="545" help="36371">
- <level>2</level>
+ <level>1</level>
<default>DirectSound:default</default>
<constraints>
<options>audiodevices</options>
</constraints>
- <control type="spinner" format="string" />
+ <control type="list" format="string" />
</setting>
+ </group>
+ <group id="3">
<setting id="audiooutput.passthroughdevice" type="string" label="546" help="36372">
<level>2</level>
<default>DirectSound:default</default>
@@ -56,14 +58,14 @@
<options>audiodevicespassthrough</options>
</constraints>
<dependencies>
- <dependency type="enable">
- <or>
- <condition setting="audiooutput.mode">1</condition> <!-- AUDIO_IEC958 -->
- <condition setting="audiooutput.mode">2</condition> <!-- AUDIO_HDMI -->
- </or>
+ <dependency type="visible">
+ <and>
+ <condition on="property" name="aesettingvisible" setting="audiooutput.audiodevice">audiooutput.passthrough</condition>
+ <condition on="property" name="aesettingvisible" setting="audiooutput.config">audiooutput.passthrough</condition>
+ </and>
</dependency>
</dependencies>
- <control type="spinner" format="string" />
+ <control type="list" format="string" />
</setting>
</group>
</category>
diff --git a/xbmc/cores/AudioEngine/AEFactory.cpp b/xbmc/cores/AudioEngine/AEFactory.cpp
index 16fc7085c1..3092898291 100644
--- a/xbmc/cores/AudioEngine/AEFactory.cpp
+++ b/xbmc/cores/AudioEngine/AEFactory.cpp
@@ -40,6 +40,7 @@
#include "guilib/LocalizeStrings.h"
#include "settings/Setting.h"
+#include "settings/Settings.h"
#include "utils/StringUtils.h"
IAE* CAEFactory::AE = NULL;
@@ -238,10 +239,32 @@ std::string CAEFactory::GetDefaultDevice(bool passthrough)
return "default";
}
-bool CAEFactory::SupportsRaw()
+bool CAEFactory::SupportsRaw(AEDataFormat format)
{
+ // check if passthrough is enabled
+ if (!CSettings::Get().GetBool("audiooutput.passthrough"))
+ return false;
+
+ // fixed config disabled passthrough
+ if (CSettings::Get().GetInt("audiooutput.config") == AE_CONFIG_FIXED)
+ return false;
+
+ // check if the format is enabled in settings
+ if (format == AE_FMT_AC3 && !CSettings::Get().GetBool("audiooutput.ac3passthrough"))
+ return false;
+ if (format == AE_FMT_DTS && !CSettings::Get().GetBool("audiooutput.dtspassthrough"))
+ return false;
+ if (format == AE_FMT_EAC3 && !CSettings::Get().GetBool("audiooutput.eac3passthrough"))
+ return false;
+ if (format == AE_FMT_AAC && !CSettings::Get().GetBool("audiooutput.passthroughaac"))
+ return false;
+ if (format == AE_FMT_TRUEHD && !CSettings::Get().GetBool("audiooutput.truehdpassthrough"))
+ return false;
+ if (format == AE_FMT_DTSHD && !CSettings::Get().GetBool("audiooutput.dtshdpassthrough"))
+ return false;
+
if(AE)
- return AE->SupportsRaw();
+ return AE->SupportsRaw(format);
return false;
}
@@ -339,15 +362,6 @@ void CAEFactory::SettingOptionsAudioDevicesPassthroughFiller(const CSetting *set
SettingOptionsAudioDevicesFillerGeneral(setting, list, current, true);
}
-void CAEFactory::SettingOptionsAudioOutputModesFiller(const CSetting *setting, std::vector< std::pair<std::string, int> > &list, int &current)
-{
- list.push_back(std::make_pair(g_localizeStrings.Get(338), AUDIO_ANALOG));
-#if !defined(TARGET_RASPBERRY_PI)
- list.push_back(std::make_pair(g_localizeStrings.Get(339), AUDIO_IEC958));
-#endif
- list.push_back(std::make_pair(g_localizeStrings.Get(420), AUDIO_HDMI));
-}
-
void CAEFactory::SettingOptionsAudioQualityLevelsFiller(const CSetting *setting, std::vector< std::pair<std::string, int> > &list, int &current)
{
if (!AE)
@@ -410,3 +424,11 @@ void CAEFactory::UnregisterAudioCallback()
if (AE)
AE->UnregisterAudioCallback();
}
+
+bool CAEFactory::IsSettingVisible(const std::string &condition, const std::string &value, const std::string &settingId)
+{
+ if (settingId.empty() || value.empty() || !AE)
+ return false;
+
+ return AE->IsSettingVisible(value);
+}
diff --git a/xbmc/cores/AudioEngine/AEFactory.h b/xbmc/cores/AudioEngine/AEFactory.h
index e3e8a3a30c..b0076274c7 100644
--- a/xbmc/cores/AudioEngine/AEFactory.h
+++ b/xbmc/cores/AudioEngine/AEFactory.h
@@ -54,7 +54,7 @@ public:
static void EnumerateOutputDevices(AEDeviceList &devices, bool passthrough);
static void VerifyOutputDevice(std::string &device, bool passthrough);
static std::string GetDefaultDevice(bool passthrough);
- static bool SupportsRaw();
+ static bool SupportsRaw(AEDataFormat format);
static bool SupportsDrain();
/**
@@ -74,8 +74,8 @@ public:
static void SettingOptionsAudioDevicesFiller(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string &current);
static void SettingOptionsAudioDevicesPassthroughFiller(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string &current);
- static void SettingOptionsAudioOutputModesFiller(const CSetting *setting, std::vector< std::pair<std::string, int> > &list, int &current);
static void SettingOptionsAudioQualityLevelsFiller(const CSetting *setting, std::vector< std::pair<std::string, int> > &list, int &current);
+ static bool IsSettingVisible(const std::string &condition, const std::string &value, const std::string &settingId);
static void RegisterAudioCallback(IAudioCallback* pCallback);
static void UnregisterAudioCallback();
diff --git a/xbmc/cores/AudioEngine/Interfaces/AE.h b/xbmc/cores/AudioEngine/Interfaces/AE.h
index b1f30085e8..e60aa664cc 100644
--- a/xbmc/cores/AudioEngine/Interfaces/AE.h
+++ b/xbmc/cores/AudioEngine/Interfaces/AE.h
@@ -41,6 +41,11 @@ class IAudioCallback;
#define AE_SOUND_IDLE 1 /* only play sounds while no streams are running */
#define AE_SOUND_ALWAYS 2 /* always play sounds */
+/* config options */
+#define AE_CONFIG_FIXED 1
+#define AE_CONFIG_AUTO 2
+#define AE_CONFIG_MATCH 3
+
enum AEQuality
{
AE_QUALITY_UNKNOWN = -1, /* Unset, unknown or incorrect quality level */
@@ -198,7 +203,7 @@ public:
* @see CAEPackIEC61937::CAEPackIEC61937()
* @returns true if the AudioEngine is capable of RAW output
*/
- virtual bool SupportsRaw() { return false; }
+ virtual bool SupportsRaw(AEDataFormat format) { return false; }
/**
* Returns true if the AudioEngine supports drain mode which is not streaming silence when idle
@@ -215,5 +220,11 @@ public:
* @return true if specified quality level is supported, otherwise false
*/
virtual bool SupportsQualityLevel(enum AEQuality level) { return false; }
+
+ /**
+ * AE decides whether this settings should be displayed
+ * @return true if AudioEngine wants to display this setting
+ */
+ virtual bool IsSettingVisible(const std::string &settingId) {return false; }
};
diff --git a/xbmc/cores/AudioEngine/Utils/AEUtil.h b/xbmc/cores/AudioEngine/Utils/AEUtil.h
index ef67b3451c..c6a31841e4 100644
--- a/xbmc/cores/AudioEngine/Utils/AEUtil.h
+++ b/xbmc/cores/AudioEngine/Utils/AEUtil.h
@@ -49,15 +49,6 @@
#define MEMALIGN(b, x) __declspec(align(b)) x
#endif
-#define AUDIO_IS_BITSTREAM(x) ((x) == AUDIO_IEC958 || (x) == AUDIO_HDMI)
-
-enum AudioOutputs
-{
- AUDIO_ANALOG = 0,
- AUDIO_IEC958,
- AUDIO_HDMI
-};
-
// AV sync options
enum AVSync
{
diff --git a/xbmc/settings/Settings.cpp b/xbmc/settings/Settings.cpp
index a8d82af012..41e5d0471a 100644
--- a/xbmc/settings/Settings.cpp
+++ b/xbmc/settings/Settings.cpp
@@ -372,7 +372,6 @@ void CSettings::Uninitialize()
m_settingsManager->UnregisterSettingOptionsFiller("aequalitylevels");
m_settingsManager->UnregisterSettingOptionsFiller("audiodevices");
m_settingsManager->UnregisterSettingOptionsFiller("audiodevicespassthrough");
- m_settingsManager->UnregisterSettingOptionsFiller("audiooutputmodes");
m_settingsManager->UnregisterSettingOptionsFiller("charsets");
m_settingsManager->UnregisterSettingOptionsFiller("epgguideviews");
m_settingsManager->UnregisterSettingOptionsFiller("fontheights");
@@ -687,7 +686,6 @@ void CSettings::InitializeOptionFillers()
m_settingsManager->RegisterSettingOptionsFiller("aequalitylevels", CAEFactory::SettingOptionsAudioQualityLevelsFiller);
m_settingsManager->RegisterSettingOptionsFiller("audiodevices", CAEFactory::SettingOptionsAudioDevicesFiller);
m_settingsManager->RegisterSettingOptionsFiller("audiodevicespassthrough", CAEFactory::SettingOptionsAudioDevicesPassthroughFiller);
- m_settingsManager->RegisterSettingOptionsFiller("audiooutputmodes", CAEFactory::SettingOptionsAudioOutputModesFiller);
m_settingsManager->RegisterSettingOptionsFiller("charsets", CCharsetConverter::SettingOptionsCharsetsFiller);
m_settingsManager->RegisterSettingOptionsFiller("epgguideviews", PVR::CGUIWindowPVRGuide::SettingOptionsEpgGuideViewFiller);
m_settingsManager->RegisterSettingOptionsFiller("fonts", GUIFontManager::SettingOptionsFontsFiller);
@@ -824,6 +822,7 @@ void CSettings::InitializeConditions()
m_settingsManager->AddCondition("profilehassettingslocked", ProfileHasSettingsLocked);
m_settingsManager->AddCondition("profilehasvideoslocked", ProfileHasVideosLocked);
m_settingsManager->AddCondition("profilelockmode", ProfileLockMode);
+ m_settingsManager->AddCondition("aesettingvisible", CAEFactory::IsSettingVisible);
}
void CSettings::InitializeISettingsHandlers()
@@ -887,7 +886,9 @@ void CSettings::InitializeISettingCallbacks()
m_settingsManager->RegisterCallback(&CStereoscopicsManager::Get(), settingSet);
settingSet.clear();
- settingSet.insert("audiooutput.mode");
+ settingSet.insert("audiooutput.config");
+ settingSet.insert("audiooutput.samplerate");
+ settingSet.insert("audiooutput.passthrough");
settingSet.insert("audiooutput.channels");
settingSet.insert("audiooutput.processquality");
settingSet.insert("audiooutput.guisoundmode");
@@ -898,7 +899,6 @@ void CSettings::InitializeISettingCallbacks()
settingSet.insert("audiooutput.passthroughaac");
settingSet.insert("audiooutput.truehdpassthrough");
settingSet.insert("audiooutput.dtshdpassthrough");
- settingSet.insert("audiooutput.multichannellpcm");
settingSet.insert("audiooutput.audiodevice");
settingSet.insert("audiooutput.passthroughdevice");
settingSet.insert("audiooutput.streamsilence");