summaryrefslogtreecommitdiff
path: root/setup_menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'setup_menu.c')
-rw-r--r--setup_menu.c89
1 files changed, 68 insertions, 21 deletions
diff --git a/setup_menu.c b/setup_menu.c
index 5700438a..41a8e583 100644
--- a/setup_menu.c
+++ b/setup_menu.c
@@ -4,7 +4,7 @@
* See the main source file 'xineliboutput.c' for copyright information and
* how to reach the author.
*
- * $Id: setup_menu.c,v 1.4 2006-08-07 18:20:43 phintuka Exp $
+ * $Id: setup_menu.c,v 1.5 2006-08-22 03:45:34 phintuka Exp $
*
*/
@@ -97,6 +97,7 @@ class cMenuSetupAudio : public cMenuSetupPage
int visualization;
cOsdItem *audio_driver_item;
+ cOsdItem *audio_ctrl_speakers;
cOsdItem *audio_ctrl_delay;
cOsdItem *audio_ctrl_compression;
cOsdItem *audio_ctrl_upmix;
@@ -131,7 +132,7 @@ cMenuSetupAudio::~cMenuSetupAudio(void)
{
cXinelibDevice::Instance().ConfigurePostprocessing(
xc.deinterlace_method, xc.audio_delay, xc.audio_compression,
- xc.audio_equalizer, xc.audio_surround);
+ xc.audio_equalizer, xc.audio_surround, xc.speaker_type);
cXinelibDevice::Instance().ConfigurePostprocessing(
"upmix", xc.audio_upmix ? true : false, NULL);
#ifdef ENABLE_TEST_POSTPLUGINS
@@ -156,6 +157,10 @@ void cMenuSetupAudio::Set(void)
DriverNameChars));
else
audio_port_item = NULL;
+
+ Add(audio_ctrl_speakers =
+ new cMenuEditStraI18nItem(tr("Speakers"), &newconfig.speaker_type,
+ SPEAKERS_count, xc.s_speakerArrangements));
Add(audio_ctrl_delay =
new cMenuEditTypedIntItem(tr("Delay"), tr("ms"), &newconfig.audio_delay,
-3000, 3000, tr("Off")));
@@ -217,16 +222,40 @@ eOSState cMenuSetupAudio::ProcessKey(eKeys Key)
audio_port_item)
Set();
}
- else if(item == audio_ctrl_delay || item == audio_ctrl_compression ||
- item == audio_ctrl_surround) {
+ else if(item == audio_ctrl_delay || item == audio_ctrl_compression) {
cXinelibDevice::Instance().ConfigurePostprocessing(
xc.deinterlace_method, newconfig.audio_delay,
newconfig.audio_compression, newconfig.audio_equalizer,
- newconfig.audio_surround);
+ newconfig.audio_surround, newconfig.speaker_type);
+ }
+ else if(item == audio_ctrl_speakers) {
+ cXinelibDevice::Instance().ConfigurePostprocessing(
+ xc.deinterlace_method, newconfig.audio_delay,
+ newconfig.audio_compression, newconfig.audio_equalizer,
+ newconfig.audio_surround, newconfig.speaker_type);
+ if(newconfig.speaker_type <= SPEAKERS_STEREO &&
+ newconfig.audio_upmix) {
+ newconfig.audio_upmix = false;
+ Set();
+ }
+ }
+ else if(item == audio_ctrl_surround) {
+ cXinelibDevice::Instance().ConfigurePostprocessing(
+ xc.deinterlace_method, newconfig.audio_delay,
+ newconfig.audio_compression, newconfig.audio_equalizer,
+ newconfig.audio_surround, newconfig.speaker_type);
+ if(newconfig.audio_surround && newconfig.audio_upmix) {
+ newconfig.audio_upmix = 0;
+ Set();
+ }
}
else if(item == audio_ctrl_upmix) {
cXinelibDevice::Instance().ConfigurePostprocessing(
"upmix", newconfig.audio_upmix ? true : false, NULL);
+ if(newconfig.audio_upmix && newconfig.audio_surround) {
+ newconfig.audio_surround = 0;
+ Set();
+ }
}
#ifdef ENABLE_TEST_POSTPLUGINS
else if(item == audio_ctrl_headphone) {
@@ -245,9 +274,10 @@ void cMenuSetupAudio::Store(void)
strcpy(xc.audio_driver, xc.s_audioDrivers[audio_driver]);
strcpy(xc.audio_visualization, xc.s_audioVisualizations[visualization]);
- SetupStore("Audio.Driver", xc.audio_driver);
- SetupStore("Audio.Port", xc.audio_port);
- SetupStore("Audio.Delay", xc.audio_delay);
+ SetupStore("Audio.Driver", xc.audio_driver);
+ SetupStore("Audio.Port", xc.audio_port);
+ SetupStore("Audio.Speakers", xc.s_speakerArrangements[xc.speaker_type]);
+ SetupStore("Audio.Delay", xc.audio_delay);
SetupStore("Audio.Compression", xc.audio_compression);
SetupStore("Audio.Surround", xc.audio_surround);
SetupStore("Audio.Upmix", xc.audio_upmix);
@@ -283,7 +313,7 @@ cMenuSetupAudioEq::~cMenuSetupAudioEq(void)
{
cXinelibDevice::Instance().ConfigurePostprocessing(
xc.deinterlace_method, xc.audio_delay, xc.audio_compression,
- xc.audio_equalizer, xc.audio_surround);
+ xc.audio_equalizer, xc.audio_surround, xc.speaker_type);
}
void cMenuSetupAudioEq::Set(void)
@@ -310,7 +340,7 @@ eOSState cMenuSetupAudioEq::ProcessKey(eKeys Key)
if(Key == kLeft || Key == kRight) {
cXinelibDevice::Instance().ConfigurePostprocessing(
xc.deinterlace_method, xc.audio_delay, xc.audio_compression,
- newconfig.audio_equalizer, xc.audio_surround);
+ newconfig.audio_equalizer, xc.audio_surround, xc.speaker_type);
}
return state;
@@ -371,13 +401,13 @@ cMenuSetupVideo::~cMenuSetupVideo(void)
cXinelibDevice::Instance().ConfigureVideo(xc.hue, xc.saturation,
xc.brightness, xc.contrast);
cXinelibDevice::Instance().ConfigurePostprocessing(
- "autocrop", xc.autocrop ? true : false, NULL);
+ "autocrop", xc.autocrop ? true : false, xc.AutocropOptions());
}
void cMenuSetupVideo::Set(void)
{
SetPlugin(cPluginManager::GetPlugin(PLUGIN_NAME_I18N));
- //int current = Current();
+ int current = Current();
Clear();
Add(NewTitle("Video"));
@@ -385,6 +415,17 @@ void cMenuSetupVideo::Set(void)
Add(ctrl_autocrop =
new cMenuEditBoolItem(tr("Crop letterbox 4:3 to 16:9"),
&newconfig.autocrop));
+ if(newconfig.autocrop) {
+ Add(new cMenuEditBoolItem(tr(" Autodetect letterbox"),
+ &newconfig.autocrop_autodetect));
+ Add(new cMenuEditBoolItem(tr(" Soft start"),
+ &newconfig.autocrop_soft));
+ Add(new cMenuEditBoolItem(tr(" Cropping size"),
+ &newconfig.autocrop_fixedsize,
+ "4:3...20:9", "14:9/16:9"));
+ Add(new cMenuEditBoolItem(tr(" Detect subtitles"),
+ &newconfig.autocrop_subs));
+ }
#ifdef INTEGER_CONFIG_VIDEO_CONTROLS
Add(new cMenuEditIntItem(tr("HUE"), &newconfig.hue, -1, 0xffff));
@@ -405,9 +446,9 @@ void cMenuSetupVideo::Set(void)
controls));
#endif
- //if(current<1) current=1; /* first item is not selectable */
- //SetCurrent(Get(current));
- SetCurrent(Get(1));
+ if(current<1) current=1; /* first item is not selectable */
+ SetCurrent(Get(current));
+ //SetCurrent(Get(1));
Display();
}
@@ -434,10 +475,12 @@ eOSState cMenuSetupVideo::ProcessKey(eKeys Key)
INDEX_TO_CONTROL(newconfig.brightness),
INDEX_TO_CONTROL(newconfig.contrast));
#endif
- else if(item == ctrl_autocrop)
+ else if(item == ctrl_autocrop) {
cXinelibDevice::Instance().ConfigurePostprocessing(
- "autocrop", xc.autocrop ? true : false, NULL);
-
+ "autocrop", newconfig.autocrop ? true : false,
+ newconfig.AutocropOptions());
+ Set();
+ }
return state;
}
@@ -453,7 +496,11 @@ void cMenuSetupVideo::Store(void)
xc.brightness = INDEX_TO_CONTROL(xc.brightness);
#endif
- SetupStore("Video.AutoCrop", xc.autocrop);
+ SetupStore("Video.AutoCrop", xc.autocrop);
+ SetupStore("Video.AutoCrop.AutoDetect", xc.autocrop_autodetect);
+ SetupStore("Video.AutoCrop.SoftStart", xc.autocrop_soft);
+ SetupStore("Video.AutoCrop.FixedSize", xc.autocrop_fixedsize);
+ SetupStore("Video.AutoCrop.DetectSubs", xc.autocrop_subs);
SetupStore("Video.HUE", xc.hue);
SetupStore("Video.Saturation", xc.saturation);
SetupStore("Video.Contrast", xc.contrast);
@@ -551,7 +598,7 @@ void cMenuSetupOSD::Set(void)
if(current<1) current=1; /* first item is not selectable */
SetCurrent(Get(current));
- SetCurrent(Get(1));
+ //SetCurrent(Get(1));
Display();
}
@@ -759,7 +806,7 @@ cMenuSetupLocal::~cMenuSetupLocal(void)
xc.display_aspect, xc.scale_video, xc.field_order);
cXinelibDevice::Instance().ConfigurePostprocessing(
xc.deinterlace_method, xc.audio_delay, xc.audio_compression,
- xc.audio_equalizer, xc.audio_surround);
+ xc.audio_equalizer, xc.audio_surround, xc.speaker_type);
}
void cMenuSetupLocal::Set(void)