summaryrefslogtreecommitdiff
path: root/xineSettings.c
diff options
context:
space:
mode:
Diffstat (limited to 'xineSettings.c')
-rw-r--r--xineSettings.c791
1 files changed, 791 insertions, 0 deletions
diff --git a/xineSettings.c b/xineSettings.c
new file mode 100644
index 0000000..8796995
--- /dev/null
+++ b/xineSettings.c
@@ -0,0 +1,791 @@
+
+#include "xineCommon.h"
+
+#include <vdr/interface.h>
+#include <vdr/i18n.h>
+
+#include "xineSettings.h"
+#include "xineSetupPage.h"
+#include "xineDevice.h"
+
+
+
+namespace PluginXine
+{
+
+ cXineSettings::cModeParams::cModeParams()
+ : m_prebufferFramesVideoSD(4)
+ , m_prebufferFramesVideoHD(4)
+ , m_prebufferFramesAudio(4)
+ , m_prebufferHysteresis(4)
+ , m_monitoringDuration(10)
+ , m_monitoringMode(monitoringOnce)
+ {
+ }
+
+ bool cXineSettings::cModeParams::SetupParse(const char *optionName, int &optionValue, const char *Name, const char *Value)
+ {
+ if (0 != ::strcasecmp(optionName, Name))
+ return false;
+
+ char c;
+ int v = 0;
+ if (1 != ::sscanf(Value, "%d%c", &v, &c))
+ return false;
+
+ if (0 <= v && v <= 100)
+ {
+ optionValue = v;
+ return true;
+ }
+
+ return false;
+ }
+
+ bool cXineSettings::cModeParams::SetupParse(const char *optionName, eMonitoringMode &optionValue, const char *Name, const char *Value)
+ {
+ if (0 != ::strcasecmp(optionName, Name))
+ return false;
+
+ if (0 == ::strcasecmp("monitoringOnce", Value))
+ {
+ optionValue = monitoringOnce;
+ return true;
+ }
+
+ if (0 == ::strcasecmp("monitoringContinuous", Value))
+ {
+ optionValue = monitoringContinuous;
+ return true;
+ }
+
+ return false;
+ }
+
+ bool cXineSettings::cModeParams::SetupParse(const char *prefix, const char *Name, const char *Value)
+ {
+ const int prefixLen = ::strlen(prefix);
+
+ if (0 != ::strncasecmp(prefix, Name, prefixLen))
+ return false;
+
+ Name += prefixLen;
+
+ if (SetupParse("prebufferFrames", m_prebufferFramesVideoSD, Name, Value)
+ && SetupParse("prebufferFrames", m_prebufferFramesVideoHD, Name, Value)
+ && SetupParse("prebufferFrames", m_prebufferFramesAudio, Name, Value))
+ {
+ return true;
+ }
+
+ if (SetupParse("prebufferFramesVideoSD", m_prebufferFramesVideoSD, Name, Value))
+ return true;
+
+ if (SetupParse("prebufferFramesVideoHD", m_prebufferFramesVideoHD, Name, Value))
+ return true;
+
+ if (SetupParse("prebufferFramesAudio", m_prebufferFramesAudio, Name, Value))
+ return true;
+
+ if (SetupParse("prebufferHysteresis", m_prebufferHysteresis, Name, Value))
+ return true;
+
+ if (SetupParse("monitoringDuration", m_monitoringDuration, Name, Value))
+ return true;
+
+ if (SetupParse("monitoringMode", m_monitoringMode, Name, Value))
+ return true;
+
+ return false;
+ }
+
+ bool cXineSettings::cModeParams::MonitoringContinuous() const
+ {
+ return monitoringContinuous == m_monitoringMode;
+ }
+
+
+ cXineSettings::cZoomParams::cZoomParams()
+ : m_zoomX(imageZoomDefault)
+ , m_zoomY(imageZoomDefault)
+ {
+ }
+
+ bool cXineSettings::cZoomParams::SetupParse(const char *optionName, eImageZoom &optionValue, const char *Name, const char *Value)
+ {
+ if (0 != ::strcasecmp(optionName, Name))
+ return false;
+
+ char c;
+ int v = 0;
+ if (1 != ::sscanf(Value, "%d%c", &v, &c))
+ return false;
+
+ if (imageZoomMin <= v && v <= imageZoomMax)
+ {
+ optionValue = (eImageZoom)v;
+ return true;
+ }
+
+ return false;
+ }
+
+ bool cXineSettings::cZoomParams::SetupParse(const char *prefix, const char *Name, const char *Value)
+ {
+ const int prefixLen = ::strlen(prefix);
+
+ if (0 != ::strncasecmp(prefix, Name, prefixLen))
+ return false;
+
+ Name += prefixLen;
+
+ if (SetupParse("zoomX", m_zoomX, Name, Value))
+ return true;
+
+ if (SetupParse("zoomY", m_zoomY, Name, Value))
+ return true;
+
+ return false;
+ }
+
+ bool cXineSettings::cZoomParams::operator !=(const cXineSettings::cZoomParams &rhs) const
+ {
+ return GetZoomX() != rhs.GetZoomX()
+ || GetZoomY() != rhs.GetZoomY();
+ }
+
+
+ cXineSettings::cOsdExtentParams::cOsdExtentParams()
+ : m_osdExtentWidth(osdExtentWidthDefault)
+ , m_osdExtentHeight(osdExtentHeightDefault)
+ {
+ }
+
+ bool cXineSettings::cOsdExtentParams::SetupParse(const char *optionName, eOsdExtentWidth &optionValue, const char *Name, const char *Value)
+ {
+ if (0 != ::strcasecmp(optionName, Name))
+ return false;
+
+ char c;
+ int v = 0;
+ if (1 != ::sscanf(Value, "%d%c", &v, &c))
+ return false;
+
+ if (osdExtentWidthMin <= v && v <= osdExtentWidthMax)
+ {
+ optionValue = (eOsdExtentWidth)v;
+ return true;
+ }
+
+ return false;
+ }
+
+ bool cXineSettings::cOsdExtentParams::SetupParse(const char *optionName, eOsdExtentHeight &optionValue, const char *Name, const char *Value)
+ {
+ if (0 != ::strcasecmp(optionName, Name))
+ return false;
+
+ char c;
+ int v = 0;
+ if (1 != ::sscanf(Value, "%d%c", &v, &c))
+ return false;
+
+ if (osdExtentHeightMin <= v && v <= osdExtentHeightMax)
+ {
+ optionValue = (eOsdExtentHeight)v;
+ return true;
+ }
+
+ return false;
+ }
+ bool cXineSettings::cOsdExtentParams::SetupParse(const char *prefix, const char *Name, const char *Value)
+ {
+ const int prefixLen = ::strlen(prefix);
+
+ if (0 != ::strncasecmp(prefix, Name, prefixLen))
+ return false;
+
+ Name += prefixLen;
+
+ if (SetupParse("X", m_osdExtentWidth, Name, Value))
+ return true;
+
+ if (SetupParse("Y", m_osdExtentHeight, Name, Value))
+ return true;
+
+ return false;
+ }
+
+ bool cXineSettings::cOsdExtentParams::operator !=(const cXineSettings::cOsdExtentParams &rhs) const
+ {
+ return GetOsdExtentWidth() != rhs.GetOsdExtentWidth()
+ || GetOsdExtentHeight() != rhs.GetOsdExtentHeight();
+ }
+
+
+
+ cXineSettings::cXineSettings()
+ : m_switchSkin(false)
+ , m_beQuiet(false)
+ , m_defaultGrabSizeX(720)
+ , m_defaultGrabSizeY(576)
+ , m_osdMode(osdBlendScaledAuto)
+ , m_usageMode(modeLiveTV)
+// , m_usageModeDefault(modeLiveTV)
+ , m_audioMode(audioDolbyOff)
+ , m_volumeMode(volumeChangeHW)
+ , m_muteMode(muteSimulate)
+ , m_crtGamma(monitorGammaDefault)
+ , m_autoPrimaryDeviceMode(autoPrimaryDeviceOn)
+ , m_transparencyMode(transparencyOn)
+ , m_interactWithEitScannerMode(interactWithEitScannerOff)
+ {
+// m_modeParams[ modeLiveTV ].m_prebufferFrames = 4; //2 * 15 + 1;
+// m_modeParams[ modeLiveTV ].m_prebufferHysteresis = 4; //2 * 15 + 1;
+ }
+
+ bool cXineSettings::SetupParse(const char *optionName, eUsageMode &optionValue, const char *Name, const char *Value)
+ {
+ if (0 != ::strcasecmp(optionName, Name))
+ return false;
+
+ if (0 == ::strcasecmp("modeLiveTV", Value))
+ {
+ optionValue = modeLiveTV;
+ return true;
+ }
+
+ if (0 == ::strcasecmp("modeReplay", Value))
+ {
+ optionValue = modeReplay;
+ return true;
+ }
+
+ return false;
+ }
+
+ bool cXineSettings::SetupParse(const char *optionName, eVolumeMode &optionValue, const char *Name, const char *Value)
+ {
+ if (0 != ::strcasecmp(optionName, Name))
+ return false;
+
+ if (0 == ::strcasecmp("volumeChangeHW", Value))
+ {
+ optionValue = volumeChangeHW;
+ return true;
+ }
+
+ if (0 == ::strcasecmp("volumeChangeSW", Value))
+ {
+ optionValue = volumeChangeSW;
+ return true;
+ }
+
+ if (0 == ::strcasecmp("volumeIgnore", Value))
+ {
+ optionValue = volumeIgnore;
+ return true;
+ }
+
+ // backward compatibilty
+ if (0 == ::strcasecmp("volumeChange", Value))
+ {
+ optionValue = volumeChangeHW;
+ return true;
+ }
+
+ if (0 == ::strcasecmp("volumeDontTouch", Value))
+ {
+ optionValue = volumeIgnore;
+ return true;
+ }
+
+ return false;
+ }
+
+ bool cXineSettings::SetupParse(const char *optionName, eMuteMode &optionValue, const char *Name, const char *Value)
+ {
+ if (0 != ::strcasecmp(optionName, Name))
+ return false;
+
+ if (0 == ::strcasecmp("muteExecute", Value))
+ {
+ optionValue = muteExecute;
+ return true;
+ }
+
+ if (0 == ::strcasecmp("muteSimulate", Value))
+ {
+ optionValue = muteSimulate;
+ return true;
+ }
+
+ if (0 == ::strcasecmp("muteIgnore", Value))
+ {
+ optionValue = muteIgnore;
+ return true;
+ }
+
+ return false;
+ }
+
+ bool cXineSettings::SetupParse(const char *optionName, eOsdMode &optionValue, const char *Name, const char *Value)
+ {
+ if (0 != ::strcasecmp(optionName, Name))
+ return false;
+
+ if (0 == ::strcasecmp("osdOverlay", Value))
+ {
+ optionValue = osdOverlay;
+ return true;
+ }
+
+ if (0 == ::strcasecmp("osdBlendClipped", Value))
+ {
+ optionValue = osdBlendClipped;
+ return true;
+ }
+
+ if (0 == ::strcasecmp("osdBlendScaledLQ", Value))
+ {
+ optionValue = osdBlendScaledLQ;
+ return true;
+ }
+
+ if (0 == ::strcasecmp("osdBlendScaledHQ", Value))
+ {
+ optionValue = osdBlendScaledHQ;
+ return true;
+ }
+
+ if (0 == ::strcasecmp("osdBlendScaledSHQ", Value))
+ {
+ optionValue = osdBlendScaledSHQ;
+ return true;
+ }
+
+ if (0 == ::strcasecmp("osdBlendScaledAuto", Value))
+ {
+ optionValue = osdBlendScaledAuto;
+ return true;
+ }
+
+ // backward compatibilty
+ if (0 == ::strcasecmp("osdScaled", Value))
+ {
+ optionValue = osdBlendScaledAuto;
+ return true;
+ }
+
+ if (0 == ::strcasecmp("osdUnscaled", Value))
+ {
+ optionValue = osdOverlay;
+ return true;
+ }
+
+ return false;
+ }
+
+ bool cXineSettings::SetupParse(const char *optionName, eMonitorGamma &optionValue, const char *Name, const char *Value)
+ {
+ if (0 != ::strcasecmp(optionName, Name))
+ return false;
+
+ char c;
+ int v = 0;
+ if (1 != ::sscanf(Value, "%d%c", &v, &c))
+ return false;
+
+ if (monitorGammaMin <= v && v <= monitorGammaMax)
+ {
+ optionValue = (eMonitorGamma)v;
+ return true;
+ }
+
+ return false;
+ }
+
+ bool cXineSettings::SetupParse(const char *optionName, eAudioMode &optionValue, const char *Name, const char *Value)
+ {
+ if (0 != ::strcasecmp(optionName, Name))
+ return false;
+
+ if (0 == ::strcasecmp("audioDolbyOff", Value))
+ {
+ optionValue = audioDolbyOff;
+ return true;
+ }
+
+ if (0 == ::strcasecmp("audioDolbyOn", Value))
+ {
+ optionValue = audioDolbyOn;
+ return true;
+ }
+
+ return false;
+ }
+
+ bool cXineSettings::SetupParse(const char *optionName, eAutoPrimaryDeviceMode &optionValue, const char *Name, const char *Value)
+ {
+ if (0 != ::strcasecmp(optionName, Name))
+ return false;
+
+ if (0 == ::strcasecmp("autoPrimaryDeviceOff", Value))
+ {
+ optionValue = autoPrimaryDeviceOff;
+ return true;
+ }
+
+ if (0 == ::strcasecmp("autoPrimaryDeviceOn", Value))
+ {
+ optionValue = autoPrimaryDeviceOn;
+ return true;
+ }
+
+ return false;
+ }
+
+ bool cXineSettings::SetupParse(const char *optionName, eInteractWithEitScannerMode &optionValue, const char *Name, const char *Value)
+ {
+ if (0 != ::strcasecmp(optionName, Name))
+ return false;
+
+ if (0 == ::strcasecmp("interactWithEitScannerOff", Value))
+ {
+ optionValue = interactWithEitScannerOff;
+ return true;
+ }
+
+ if (0 == ::strcasecmp("interactWithEitScannerOn", Value))
+ {
+ optionValue = interactWithEitScannerOn;
+ return true;
+ }
+
+ return false;
+ }
+
+ bool cXineSettings::SetupParse(const char *optionName, eTransparencyMode &optionValue, const char *Name, const char *Value)
+ {
+ if (0 != ::strcasecmp(optionName, Name))
+ return false;
+
+ if (0 == ::strcasecmp("transparencyOff", Value))
+ {
+ optionValue = transparencyOff;
+ return true;
+ }
+
+ if (0 == ::strcasecmp("transparencyOn", Value))
+ {
+ optionValue = transparencyOn;
+ return true;
+ }
+
+ return false;
+ }
+
+ bool cXineSettings::SetupParse(const char *Name, const char *Value)
+ {
+ if (m_modeParams[ modeLiveTV ].SetupParse("modeLiveTV.", Name, Value))
+ return true;
+/*
+ if (m_modeParams[ modeReplay ].SetupParse("modeReplay.", Name, Value))
+ return true;
+
+ if (SetupParse("usageModeDefault", m_usageModeDefault, Name, Value))
+ {
+ m_usageMode = m_usageModeDefault;
+ return true;
+ }
+*/
+ if (m_zoomParams[ image4_3 ].SetupParse("image4:3.", Name, Value))
+ return true;
+
+ if (m_zoomParams[ image16_9 ].SetupParse("image16:9.", Name, Value))
+ return true;
+
+ if (SetupParse("osdMode", m_osdMode, Name, Value))
+ return true;
+
+ if (SetupParse("osdGammaCorrection", m_crtGamma, Name, Value))
+ return true;
+
+#if APIVERSNUM >= 10707
+ if (m_osdExtentParams.SetupParse("osdExtent.", Name, Value))
+ return true;
+#endif
+
+#if APIVERSNUM < 10318
+ if (SetupParse("audioMode", m_audioMode, Name, Value))
+ return true;
+#endif
+
+ if (SetupParse("volumeMode", m_volumeMode, Name, Value))
+ return true;
+
+ if (SetupParse("muteMode", m_muteMode, Name, Value))
+ return true;
+
+#if APIVERSNUM >= 10332
+ if (SetupParse("autoPrimaryDeviceMode", m_autoPrimaryDeviceMode, Name, Value))
+ return true;
+#endif
+
+ if (SetupParse("transparencyMode", m_transparencyMode, Name, Value))
+ return true;
+
+ if (SetupParse("interactWithEitScannerMode", m_interactWithEitScannerMode, Name, Value))
+ return true;
+
+ return false;
+ }
+
+ const cXineSettings::cModeParams *cXineSettings::GetModeParams() const
+ {
+ return &m_modeParams[ m_usageMode ];
+ }
+
+ cXineSettings::eOsdMode cXineSettings::OsdMode() const
+ {
+ return m_osdMode;
+ }
+
+ cXineSettings::eVolumeMode cXineSettings::VolumeMode() const
+ {
+ return m_volumeMode;
+ }
+
+ cXineSettings::eMuteMode cXineSettings::MuteMode() const
+ {
+ return m_muteMode;
+ }
+
+ bool cXineSettings::AudioDolbyOn() const
+ {
+#if APIVERSNUM >= 10318
+ return true;
+#else
+ return audioDolbyOn == m_audioMode;
+#endif
+ }
+
+ void cXineSettings::Create(cXineSetupPage *const setupPage)
+ {
+ static const char *osdModes[ 6 ];
+ osdModes[ osdOverlay ] = tr("X11 overlay");
+ osdModes[ osdBlendClipped ] = tr("Blend clipped");
+ osdModes[ osdBlendScaledLQ ] = tr("Blend scaled LQ");
+ osdModes[ osdBlendScaledHQ ] = tr("Blend scaled HQ");
+ osdModes[ osdBlendScaledSHQ ] = tr("Blend scaled SHQ");
+ osdModes[ osdBlendScaledAuto ] = tr("Blend scaled Auto");
+
+ static const char *volumeModes[ 3 ];
+ volumeModes[ volumeIgnore ] = tr("No");
+ volumeModes[ volumeChangeHW ] = tr("Yes (by hardware)");
+ volumeModes[ volumeChangeSW ] = tr("Yes (by software)");
+
+ static const char *muteModes[ 3 ];
+ muteModes[ muteIgnore ] = tr("Ignore");
+ muteModes[ muteExecute ] = tr("Execute");
+ muteModes[ muteSimulate ] = tr("Simulate");
+
+ setupPage->Add(new cMenuEditIntItem(tr("Live-TV SD video buffer [frames]"), &m_modeParams[ modeLiveTV ].m_prebufferFramesVideoSD, 0, 50));
+ setupPage->Add(new cMenuEditIntItem(tr("Live-TV HD video buffer [frames]"), &m_modeParams[ modeLiveTV ].m_prebufferFramesVideoHD, 0, 50));
+ setupPage->Add(new cMenuEditIntItem(tr("Live-TV audio buffer [frames]"), &m_modeParams[ modeLiveTV ].m_prebufferFramesAudio, 0, 50));
+// setupPage->Add(new cMenuEditIntItem(tr("Replay prebuffer [frames]"), &m_modeParams[ modeReplay ].m_prebufferFrames, 0, 50));
+// setupPage->Add(new cMenuEditBoolItem(tr("Default settings optimized for"), (int *)&m_usageModeDefault, tr("Live-TV"), tr("Replay")));
+ setupPage->Add(new cMenuEditIntItem(tr("Buffer hysteresis [frames]"), &m_modeParams[ modeLiveTV ].m_prebufferHysteresis, 0, 50));
+ setupPage->Add(new cMenuEditIntItem(tr("Buffer monitoring duration [s]"), &m_modeParams[ modeLiveTV ].m_monitoringDuration, 0, 300));
+ setupPage->Add(new cMenuEditBoolItem(tr("Buffer monitoring mode"), &alias_cast<int>(m_modeParams[ modeLiveTV ].m_monitoringMode), tr("Once"), tr("Continuous")));
+ setupPage->Add(new cMenuEditStraItem(tr("OSD display mode"), &alias_cast<int>(m_osdMode), sizeof (osdModes) / sizeof (*osdModes), osdModes));
+ setupPage->Add(new cMenuEditIntItem(tr("OSD gamma correction [ 123 => 1.23 ]"), &alias_cast<int>(m_crtGamma), monitorGammaMin, monitorGammaMax));
+
+#if APIVERSNUM >= 10707
+ setupPage->Add(new cMenuEditIntItem(tr("OSD extent X"), &alias_cast<int>(m_osdExtentParams.m_osdExtentWidth), osdExtentWidthMin, osdExtentWidthMax));
+ setupPage->Add(new cMenuEditIntItem(tr("OSD extent Y"), &alias_cast<int>(m_osdExtentParams.m_osdExtentHeight), osdExtentHeightMin, osdExtentHeightMax));
+#endif
+
+ setupPage->Add(new cMenuEditIntItem(tr("4:3 image zoom X [%]"), &alias_cast<int>(m_zoomParams[ image4_3 ].m_zoomX), imageZoomMin, imageZoomMax));
+ setupPage->Add(new cMenuEditIntItem(tr("4:3 image zoom Y [%]"), &alias_cast<int>(m_zoomParams[ image4_3 ].m_zoomY), imageZoomMin, imageZoomMax));
+ setupPage->Add(new cMenuEditIntItem(tr("16:9 image zoom X [%]"), &alias_cast<int>(m_zoomParams[ image16_9 ].m_zoomX), imageZoomMin, imageZoomMax));
+ setupPage->Add(new cMenuEditIntItem(tr("16:9 image zoom Y [%]"), &alias_cast<int>(m_zoomParams[ image16_9 ].m_zoomY), imageZoomMin, imageZoomMax));
+#if APIVERSNUM < 10318
+ setupPage->Add(new cMenuEditBoolItem(tr("Audio mode"), &alias_cast<int>(m_audioMode), tr("Dolby off"), tr("Dolby on")));
+#endif
+ setupPage->Add(new cMenuEditStraItem(tr("Control xine's volume"), &alias_cast<int>(m_volumeMode), sizeof (volumeModes) / sizeof (*volumeModes), volumeModes));
+ setupPage->Add(new cMenuEditStraItem(tr("Muting"), &alias_cast<int>(m_muteMode), sizeof (muteModes) / sizeof (*muteModes), muteModes));
+ setupPage->Add(new cMenuEditBoolItem(tr("Get primary device when xine connects"), &alias_cast<int>(m_autoPrimaryDeviceMode), tr("No"), tr("Yes")));
+ setupPage->Add(new cMenuEditBoolItem(tr("Support semi transparent colors"), &alias_cast<int>(m_transparencyMode), tr("No"), tr("Yes")));
+ setupPage->Add(new cMenuEditBoolItem(tr("Connection interacts with EIT scanner"), &alias_cast<int>(m_interactWithEitScannerMode), tr("No"), tr("Yes")));
+ }
+
+ void cXineSettings::Store(cXineSetupPage *const setupPage)
+ {
+ setupPage->SetupStore("modeLiveTV.prebufferFramesVideoSD", m_modeParams[ modeLiveTV ].m_prebufferFramesVideoSD);
+ setupPage->SetupStore("modeLiveTV.prebufferFramesVideoHD", m_modeParams[ modeLiveTV ].m_prebufferFramesVideoHD);
+ setupPage->SetupStore("modeLiveTV.prebufferFramesAudio", m_modeParams[ modeLiveTV ].m_prebufferFramesAudio);
+// setupPage->SetupStore("modeReplay.prebufferFrames", m_modeParams[ modeReplay ].m_prebufferFrames);
+// setupPage->SetupStore("usageModeDefault", (m_usageModeDefault ? "modeReplay" : "modeLiveTV"));
+ setupPage->SetupStore("modeLiveTV.prebufferHysteresis", m_modeParams[ modeLiveTV ].m_prebufferHysteresis);
+ setupPage->SetupStore("modeLiveTV.monitoringDuration", m_modeParams[ modeLiveTV ].m_monitoringDuration);
+ setupPage->SetupStore("modeLiveTV.monitoringMode", (m_modeParams[ modeLiveTV ].m_monitoringMode ? "monitoringContinuous" : "monitoringOnce"));
+
+ setupPage->SetupStore("image4:3.zoomX", m_zoomParams[ image4_3 ].m_zoomX);
+ setupPage->SetupStore("image4:3.zoomY", m_zoomParams[ image4_3 ].m_zoomY);
+ setupPage->SetupStore("image16:9.zoomX", m_zoomParams[ image16_9 ].m_zoomX);
+ setupPage->SetupStore("image16:9.zoomY", m_zoomParams[ image16_9 ].m_zoomY);
+
+ {
+ const char *mode = 0;
+
+ switch (m_osdMode)
+ {
+ case osdOverlay: mode = "osdOverlay"; break;
+ case osdBlendClipped: mode = "osdBlendClipped"; break;
+ case osdBlendScaledLQ: mode = "osdBlendScaledLQ"; break;
+ case osdBlendScaledHQ: mode = "osdBlendScaledHQ"; break;
+ case osdBlendScaledSHQ: mode = "osdBlendScaledSHQ"; break;
+ case osdBlendScaledAuto: mode = "osdBlendScaledAuto"; break;
+ default:
+ assert(false);
+ }
+
+ setupPage->SetupStore("osdMode", mode);
+ }
+
+ setupPage->SetupStore("osdGammaCorrection", (int)m_crtGamma);
+
+#if APIVERSNUM >= 10707
+ setupPage->SetupStore("osdExtent.X", m_osdExtentParams.m_osdExtentWidth);
+ setupPage->SetupStore("osdExtent.Y", m_osdExtentParams.m_osdExtentHeight);
+#endif
+
+#if APIVERSNUM < 10318
+ setupPage->SetupStore("audioMode", (m_audioMode ? "audioDolbyOn" : "audioDolbyOff"));
+#endif
+
+ {
+ const char *mode = 0;
+
+ switch (m_volumeMode)
+ {
+ case volumeIgnore: mode = "volumeIgnore"; break;
+ case volumeChangeHW: mode = "volumeChangeHW"; break;
+ case volumeChangeSW: mode = "volumeChangeSW"; break;
+ }
+
+ setupPage->SetupStore("volumeMode", mode);
+ }
+
+ {
+ const char *mode = 0;
+
+ switch (m_muteMode)
+ {
+ case muteIgnore: mode = "muteIgnore"; break;
+ case muteExecute: mode = "muteExecute"; break;
+ case muteSimulate: mode = "muteSimulate"; break;
+ default:
+ assert(false);
+ }
+
+ setupPage->SetupStore("muteMode", mode);
+ }
+
+ setupPage->SetupStore("autoPrimaryDeviceMode", (m_autoPrimaryDeviceMode ? "autoPrimaryDeviceOn" : "autoPrimaryDeviceOff"));
+ setupPage->SetupStore("transparencyMode", (m_transparencyMode ? "transparencyOn" : "transparencyOff"));
+ setupPage->SetupStore("interactWithEitScannerMode", (m_interactWithEitScannerMode ? "interactWithEitScannerOn" : "interactWithEitScannerOff"));
+ }
+
+ void cXineSettings::SelectReplayPrebufferMode(const bool select /* = true */)
+ {
+ m_usageMode = (!select ? modeLiveTV : modeReplay);
+/*
+ if (Interface)
+ Interface->Info(m_usageMode ? tr("Settings are now optimized for 'Replay'") : tr("Settings are now optimized for 'Live-TV'"));
+*/
+// cXineDevice::GetDevice()->AdjustPrebufferMode();
+ }
+
+ void cXineSettings::TogglePrebufferMode()
+ {
+ m_usageMode = (m_usageMode ? modeLiveTV : modeReplay);
+/*
+ if (Interface)
+ Interface->Info(m_usageMode ? tr("Settings are now optimized for 'Replay'") : tr("Settings are now optimized for 'Live-TV'"));
+*/
+// cXineDevice::GetDevice()->AdjustPrebufferMode();
+ }
+
+ const char *cXineSettings::GetMainMenuEntry()
+ {
+ return 0;
+// return (m_usageMode ? tr("xine - Choose optimized settings for 'Live-TV'") : tr("xine - Choose optimized settings for 'Replay'"));
+ }
+
+ bool cXineSettings::LiveTV() const
+ {
+ return (m_usageMode == modeLiveTV);
+ }
+
+ bool cXineSettings::AutoPrimaryDevice() const
+ {
+ return (m_autoPrimaryDeviceMode == autoPrimaryDeviceOn);
+ }
+
+ bool cXineSettings::InteractWithEitScanner() const
+ {
+ return (m_interactWithEitScannerMode == interactWithEitScannerOn);
+ }
+
+ bool cXineSettings::SupportTransparency() const
+ {
+ return (m_transparencyMode == transparencyOn);
+ }
+
+ void cXineSettings::SetSwitchSkin(const bool switchSkin)
+ {
+ m_switchSkin = switchSkin;
+ }
+
+ bool cXineSettings::ShallSwitchSkin() const
+ {
+ return m_switchSkin;
+ }
+
+ bool beQuiet = false;
+
+ void cXineSettings::SetBeQuiet(const bool beQuiet)
+ {
+ m_beQuiet = beQuiet;
+
+ PluginXine::beQuiet = m_beQuiet;
+ }
+
+ bool cXineSettings::ShallBeQuiet() const
+ {
+ return m_beQuiet;
+ }
+
+ void cXineSettings::SetDefaultGrabSizeX(const int defaultGrabSizeX)
+ {
+ m_defaultGrabSizeX = defaultGrabSizeX;
+ }
+
+ int cXineSettings::DefaultGrabSizeX() const
+ {
+ return m_defaultGrabSizeX;
+ }
+
+ void cXineSettings::SetDefaultGrabSizeY(const int defaultGrabSizeY)
+ {
+ m_defaultGrabSizeY = defaultGrabSizeY;
+ }
+
+ int cXineSettings::DefaultGrabSizeY() const
+ {
+ return m_defaultGrabSizeY;
+ }
+
+};