aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRainer Hochecker <fernetmenta@online.de>2013-10-23 20:49:12 +0200
committerRainer Hochecker <fernetmenta@online.de>2013-10-28 12:54:52 +0100
commitf2286ac963b111a567f090ee90eb79c44cf1889b (patch)
tree142296095a7a836e97b488153247eb5d156a0f98
parenta3269a0114c04d7918bf69dcb2398fc9c8e0f19e (diff)
AE: rework streamsilence
-rw-r--r--system/settings/rbp.xml7
-rw-r--r--system/settings/settings.xml1
-rw-r--r--xbmc/cores/AudioEngine/AEFactory.cpp14
-rw-r--r--xbmc/cores/AudioEngine/AEFactory.h2
-rw-r--r--xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp2
-rw-r--r--xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h2
-rw-r--r--xbmc/cores/AudioEngine/Engines/CoreAudio/CoreAudioAE.cpp2
-rw-r--r--xbmc/cores/AudioEngine/Engines/PiAudio/PiAudioAE.cpp6
-rw-r--r--xbmc/cores/AudioEngine/Engines/PiAudio/PiAudioAE.h2
-rw-r--r--xbmc/cores/AudioEngine/Interfaces/AE.h2
-rw-r--r--xbmc/settings/Settings.cpp3
11 files changed, 23 insertions, 20 deletions
diff --git a/system/settings/rbp.xml b/system/settings/rbp.xml
index 866aed47ab..166314a202 100644
--- a/system/settings/rbp.xml
+++ b/system/settings/rbp.xml
@@ -65,13 +65,16 @@
</setting>
<setting id="audiooutput.streamsilence">
<level>2</level>
- <requirement>audiosupportsdrain</requirement>
- <default>false</default>
+ <default>0</default>
<dependencies>
<dependency type="visible">
<condition on="property" name="aesettingvisible" setting="audiooutput.audiodevice">audiooutput.streamsilence</condition>
</dependency>
</dependencies>
+ <constraints>
+ <options>audiostreamsilence</options>
+ </constraints>
+ <control type="spinner" format="string" />
</setting>
</group>
<group id="2">
diff --git a/system/settings/settings.xml b/system/settings/settings.xml
index b9f2ded5ba..a8eef1c83e 100644
--- a/system/settings/settings.xml
+++ b/system/settings/settings.xml
@@ -2049,7 +2049,6 @@
</setting>
<setting id="audiooutput.streamsilence" type="integer" label="421" help="34111">
<level>1</level>
- <requirement>audiosupportsdrain</requirement>
<default>1</default>
<constraints>
<options>audiostreamsilence</options>
diff --git a/xbmc/cores/AudioEngine/AEFactory.cpp b/xbmc/cores/AudioEngine/AEFactory.cpp
index a5fc6e13c0..18288bc69d 100644
--- a/xbmc/cores/AudioEngine/AEFactory.cpp
+++ b/xbmc/cores/AudioEngine/AEFactory.cpp
@@ -262,10 +262,10 @@ bool CAEFactory::SupportsRaw(AEDataFormat format)
return false;
}
-bool CAEFactory::SupportsDrain()
+bool CAEFactory::SupportsSilenceTimeout()
{
if(AE)
- return AE->SupportsDrain();
+ return AE->SupportsSilenceTimeout();
return false;
}
@@ -377,10 +377,14 @@ void CAEFactory::SettingOptionsAudioStreamsilenceFiller(const CSetting *setting,
list.push_back(std::make_pair(g_localizeStrings.Get(20422), XbmcThreads::EndTime::InfiniteValue));
list.push_back(std::make_pair(g_localizeStrings.Get(13551), 0));
- list.push_back(std::make_pair(StringUtils::Format(g_localizeStrings.Get(13554).c_str(), 1), 1));
- for (int i = 2; i <= 10; i++)
+
+ if (AE->SupportsSilenceTimeout())
{
- list.push_back(std::make_pair(StringUtils::Format(g_localizeStrings.Get(13555).c_str(), i), i));
+ list.push_back(std::make_pair(StringUtils::Format(g_localizeStrings.Get(13554).c_str(), 1), 1));
+ for (int i = 2; i <= 10; i++)
+ {
+ list.push_back(std::make_pair(StringUtils::Format(g_localizeStrings.Get(13555).c_str(), i), i));
+ }
}
}
diff --git a/xbmc/cores/AudioEngine/AEFactory.h b/xbmc/cores/AudioEngine/AEFactory.h
index ccf57c1bcd..745ddc1333 100644
--- a/xbmc/cores/AudioEngine/AEFactory.h
+++ b/xbmc/cores/AudioEngine/AEFactory.h
@@ -54,7 +54,7 @@ public:
static void VerifyOutputDevice(std::string &device, bool passthrough);
static std::string GetDefaultDevice(bool passthrough);
static bool SupportsRaw(AEDataFormat format);
- static bool SupportsDrain();
+ static bool SupportsSilenceTimeout();
/**
* Returns true if current AudioEngine supports at lest two basic quality levels
diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp
index e5e4c5c1ca..0837b7cd8f 100644
--- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp
+++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp
@@ -2069,7 +2069,7 @@ bool CActiveAE::SupportsRaw(AEDataFormat format)
return true;
}
-bool CActiveAE::SupportsDrain()
+bool CActiveAE::SupportsSilenceTimeout()
{
return true;
}
diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h
index 1ac70310c7..e3e772a2ac 100644
--- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h
+++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.h
@@ -215,7 +215,7 @@ public:
virtual void EnumerateOutputDevices(AEDeviceList &devices, bool passthrough);
virtual std::string GetDefaultDevice(bool passthrough);
virtual bool SupportsRaw(AEDataFormat format);
- virtual bool SupportsDrain();
+ virtual bool SupportsSilenceTimeout();
virtual bool SupportsQualityLevel(enum AEQuality level);
virtual bool IsSettingVisible(const std::string &settingId);
diff --git a/xbmc/cores/AudioEngine/Engines/CoreAudio/CoreAudioAE.cpp b/xbmc/cores/AudioEngine/Engines/CoreAudio/CoreAudioAE.cpp
index f067343ac4..d57dd5a3a7 100644
--- a/xbmc/cores/AudioEngine/Engines/CoreAudio/CoreAudioAE.cpp
+++ b/xbmc/cores/AudioEngine/Engines/CoreAudio/CoreAudioAE.cpp
@@ -766,7 +766,7 @@ void CCoreAudioAE::MixSounds(float *buffer, unsigned int samples)
void CCoreAudioAE::GarbageCollect()
{
#if defined(TARGET_DARWIN_OSX)
- if (CSettings::Get().GetBool("audiooutput.streamsilence"))
+ if (CSettings::Get().GetInt("audiooutput.streamsilence") != 0)
return;
if (!m_streamsPlaying && m_playing_sounds.empty())
diff --git a/xbmc/cores/AudioEngine/Engines/PiAudio/PiAudioAE.cpp b/xbmc/cores/AudioEngine/Engines/PiAudio/PiAudioAE.cpp
index 5daa1ffd69..9eb46b7897 100644
--- a/xbmc/cores/AudioEngine/Engines/PiAudio/PiAudioAE.cpp
+++ b/xbmc/cores/AudioEngine/Engines/PiAudio/PiAudioAE.cpp
@@ -49,7 +49,7 @@ void CPiAudioAE::UpdateStreamSilence()
{
#if defined(TARGET_RASPBERRY_PI)
bool enable = CSettings::Get().GetString("audiooutput.audiodevice") == "HDMI" &&
- CSettings::Get().GetBool("audiooutput.streamsilence");
+ CSettings::Get().GetInt("audiooutput.streamsilence") != 0;
char response[80] = "";
char command[80] = "";
sprintf(command, "force_audio hdmi %d", enable);
@@ -129,9 +129,9 @@ bool CPiAudioAE::SupportsRaw(AEDataFormat format)
return supported;
}
-bool CPiAudioAE::SupportsDrain()
+bool CPiAudioAE::SupportsSilenceTimeout()
{
- return true;
+ return false;
}
void CPiAudioAE::OnSettingsChange(const std::string& setting)
diff --git a/xbmc/cores/AudioEngine/Engines/PiAudio/PiAudioAE.h b/xbmc/cores/AudioEngine/Engines/PiAudio/PiAudioAE.h
index 5eefdd8a53..4836ed6861 100644
--- a/xbmc/cores/AudioEngine/Engines/PiAudio/PiAudioAE.h
+++ b/xbmc/cores/AudioEngine/Engines/PiAudio/PiAudioAE.h
@@ -62,7 +62,7 @@ public:
virtual bool IsSettingVisible(const std::string &settingId);
virtual bool SupportsRaw(AEDataFormat format);
- virtual bool SupportsDrain();
+ virtual bool SupportsSilenceTimeout();
virtual void OnLostDevice() {}
virtual void OnResetDevice() {}
diff --git a/xbmc/cores/AudioEngine/Interfaces/AE.h b/xbmc/cores/AudioEngine/Interfaces/AE.h
index e60aa664cc..d2f895cddc 100644
--- a/xbmc/cores/AudioEngine/Interfaces/AE.h
+++ b/xbmc/cores/AudioEngine/Interfaces/AE.h
@@ -209,7 +209,7 @@ public:
* Returns true if the AudioEngine supports drain mode which is not streaming silence when idle
* @returns true if the AudioEngine is capable of drain mode
*/
- virtual bool SupportsDrain() { return false; }
+ virtual bool SupportsSilenceTimeout() { return false; }
virtual void RegisterAudioCallback(IAudioCallback* pCallback) {}
diff --git a/xbmc/settings/Settings.cpp b/xbmc/settings/Settings.cpp
index b73bdda0e6..72c8700426 100644
--- a/xbmc/settings/Settings.cpp
+++ b/xbmc/settings/Settings.cpp
@@ -797,9 +797,6 @@ void CSettings::InitializeConditions()
if (g_application.IsStandAlone())
m_settingsManager->AddCondition("isstandalone");
- if (CAEFactory::SupportsDrain())
- m_settingsManager->AddCondition("audiosupportsdrain");
-
if(CAEFactory::SupportsQualitySetting())
m_settingsManager->AddCondition("has_ae_quality_levels");