summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--setup_menu.c80
1 files changed, 70 insertions, 10 deletions
diff --git a/setup_menu.c b/setup_menu.c
index 145a153f..91ccdcf3 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.16 2006-12-14 12:42:14 phintuka Exp $
+ * $Id: setup_menu.c,v 1.17 2006-12-24 15:44:04 phintuka Exp $
*
*/
@@ -866,7 +866,7 @@ void cMenuSetupDecoder::Set(void)
Clear();
Add(NewTitle(tr("Decoder")));
- Add(new cMenuEditStraI18nItem(tr("Priority"), &xc.decoder_priority,
+ Add(new cMenuEditStraI18nItem(tr("Priority"), &newconfig.decoder_priority,
DECODER_PRIORITY_count, xc.s_decoderPriority));
Add(ctrl_pes_buffers_ind =
new cMenuEditStraI18nItem(tr("Buffer size"), &pes_buffers_ind,
@@ -910,7 +910,9 @@ void cMenuSetupDecoder::Store(void)
int old_buffers = xc.pes_buffers;
int old_priority = xc.decoder_priority;
- memcpy(&xc, &newconfig, sizeof(config_t));
+ //memcpy(&xc, &newconfig, sizeof(config_t));
+ xc.pes_buffers = newconfig.pes_buffers;
+ xc.decoder_priority = newconfig.decoder_priority;
if(pes_buffers_ind != PES_BUFFERS_CUSTOM)
xc.pes_buffers = xc.i_pesBufferSize[pes_buffers_ind];
@@ -1012,6 +1014,8 @@ void cMenuSetupLocal::Set(void)
}
if(local_frontend != FRONTEND_NONE) {
+ cString tmp = cString::sprintf("%s >>", tr("Decoder"));
+ Add(new cOsdItem(tmp, osUser1));
Add(NewTitle(tr("Video")));
}
@@ -1077,7 +1081,6 @@ void cMenuSetupLocal::Set(void)
Add(ctrl_audio_port =
new cMenuEditStrItem(tr("Port"), newconfig.audio_port, 31,
DriverNameChars));
-
}
if(current<1) current=1; /* first item is not selectable */
@@ -1094,6 +1097,9 @@ eOSState cMenuSetupLocal::ProcessKey(eKeys Key)
eOSState state = cMenuSetupPage::ProcessKey(Key);
+ if(state == osUser1)
+ return AddSubMenu(new XinelibOutputSetupMenu::cMenuSetupDecoder);
+
Key = NORMALKEY(Key);
if((Key!=kLeft && Key!=kRight) || !item)
@@ -1141,8 +1147,14 @@ eOSState cMenuSetupLocal::ProcessKey(eKeys Key)
void cMenuSetupLocal::Store(void)
{
+ int old_buffers = xc.pes_buffers;
+ int old_priority = xc.decoder_priority;
+
memcpy(&xc, &newconfig, sizeof(config_t));
+ xc.pes_buffers = old_buffers;
+ xc.decoder_priority = old_priority;
+
strcpy(xc.audio_driver, xc.s_audioDrivers[audio_driver]);
strcpy(xc.local_frontend, xc.s_frontends[local_frontend]);
if(local_frontend == FRONTEND_X11)
@@ -1176,6 +1188,10 @@ class cMenuSetupRemote : public cMenuSetupPage
cOsdItem *ctrl_remote_mode;
cOsdItem *ctrl_usertp;
cOsdItem *ctrl_rtp_addr;
+ cOsdItem *ctrl_use_http;
+ cOsdItem *ctrl_http_ctrl;
+ cOsdItem *ctrl_use_rtsp;
+ cOsdItem *ctrl_rtsp_ctrl;
protected:
virtual void Store(void);
@@ -1204,6 +1220,10 @@ void cMenuSetupRemote::Set(void)
&newconfig.remote_mode));
ctrl_usertp = NULL;
ctrl_rtp_addr = NULL;
+ ctrl_use_http = NULL;
+ ctrl_use_rtsp = NULL;
+ ctrl_http_ctrl = NULL;
+ ctrl_rtsp_ctrl = NULL;
if(newconfig.remote_mode) {
Add(new cMenuEditIntItem( tr(" Listen port (TCP and broadcast)"),
&newconfig.listen_port,
@@ -1211,6 +1231,8 @@ void cMenuSetupRemote::Set(void)
Add(new cMenuEditBoolItem(tr(" Remote keyboard"),
&newconfig.use_remote_keyboard));
+ Add(new cMenuEditBoolItem(tr(" PIPE transport"),
+ &newconfig.remote_usepipe));
Add(new cMenuEditBoolItem(tr(" TCP transport"),
&newconfig.remote_usetcp));
Add(new cMenuEditBoolItem(tr(" UDP transport"),
@@ -1231,10 +1253,27 @@ void cMenuSetupRemote::Set(void)
Add(new cMenuEditBoolItem(tr(" SAP announcements"),
&newconfig.remote_rtp_sap));
}
- Add(new cMenuEditBoolItem(tr(" PIPE transport"),
- &newconfig.remote_usepipe));
Add(new cMenuEditBoolItem(tr(" Server announce broadcasts"),
&newconfig.remote_usebcast));
+
+ Add(new cMenuEditBoolItem(tr(" HTTP transport for media files"),
+ &newconfig.remote_http_files));
+
+ Add(NewTitle(tr("Additional network services")));
+ Add(ctrl_use_http =
+ new cMenuEditBoolItem(tr("HTTP server"),
+ &newconfig.remote_use_http));
+ if(newconfig.remote_use_http)
+ Add(ctrl_http_ctrl =
+ new cMenuEditBoolItem(tr("HTTP clients can control VDR"),
+ &newconfig.remote_use_http_ctrl));
+ Add(ctrl_use_rtsp =
+ new cMenuEditBoolItem(tr("RTSP server"),
+ &newconfig.remote_use_rtsp));
+ if(newconfig.remote_use_rtsp)
+ Add(ctrl_rtsp_ctrl =
+ new cMenuEditBoolItem(tr("RTSP clients can control VDR"),
+ &newconfig.remote_use_rtsp_ctrl));
}
if(current<1) current=1; /* first item is not selectable */
@@ -1267,6 +1306,20 @@ eOSState cMenuSetupRemote::ProcessKey(eKeys Key)
Set();
}
}
+ if(item == ctrl_use_http) {
+ if(newconfig.remote_use_http && !ctrl_http_ctrl) {
+ Set();
+ } else if(!newconfig.remote_use_http && ctrl_http_ctrl) {
+ Set();
+ }
+ }
+ if(item == ctrl_use_rtsp) {
+ if(newconfig.remote_use_rtsp && !ctrl_rtsp_ctrl) {
+ Set();
+ } else if(!newconfig.remote_use_rtsp && ctrl_rtsp_ctrl) {
+ Set();
+ }
+ }
return state;
}
@@ -1279,18 +1332,25 @@ void cMenuSetupRemote::Store(void)
SetupStore("Remote.ListenPort", xc.listen_port);
SetupStore("Remote.Keyboard", xc.use_remote_keyboard);
+ SetupStore("Remote.UsePipe",xc.remote_usepipe);
SetupStore("Remote.UseTcp", xc.remote_usetcp);
SetupStore("Remote.UseUdp", xc.remote_useudp);
SetupStore("Remote.UseRtp", xc.remote_usertp);
- SetupStore("Remote.UsePipe",xc.remote_usepipe);
SetupStore("Remote.UseBroadcast", xc.remote_usebcast);
+ SetupStore("Remote.UseHttp", xc.remote_http_files);
+
SetupStore("Remote.Rtp.Address", xc.remote_rtp_addr);
SetupStore("Remote.Rtp.Port", xc.remote_rtp_port);
SetupStore("Remote.Rtp.TTL", xc.remote_rtp_ttl);
SetupStore("Remote.Rtp.AlwaysOn", xc.remote_rtp_always_on);
SetupStore("Remote.Rtp.SapAnnouncements", xc.remote_rtp_sap);
+ SetupStore("Remote.AllowRtsp", xc.remote_use_rtsp);
+ SetupStore("Remote.AllowRtspCtrl", xc.remote_use_rtsp_ctrl);
+ SetupStore("Remote.AllowHttp", xc.remote_use_http);
+ SetupStore("Remote.AllowHttpCtrl", xc.remote_use_http_ctrl);
+
cXinelibDevice::Instance().Listen(xc.remote_mode, xc.listen_port);
}
@@ -1557,7 +1617,7 @@ void cMenuSetupXinelib::Set(void)
Add(new cOsdItem(hk(tr("Audio Equalizer")),osUser2));
Add(new cOsdItem(hk(tr("Video")), osUser3));
Add(new cOsdItem(hk(tr("OSD")), osUser4));
- Add(new cOsdItem(hk(tr("Decoder")), osUser5));
+ //Add(new cOsdItem(hk(tr("Decoder")), osUser5));
Add(new cOsdItem(hk(tr("Local Frontend")), osUser6));
Add(new cOsdItem(hk(tr("Remote Clients")), osUser7));
Add(new cOsdItem(hk(tr("Test Images")), osUser8));
@@ -1578,8 +1638,8 @@ eOSState cMenuSetupXinelib::ProcessKey(eKeys Key)
return AddSubMenu(new XinelibOutputSetupMenu::cMenuSetupVideo);
case osUser4:
return AddSubMenu(new XinelibOutputSetupMenu::cMenuSetupOSD);
- case osUser5:
- return AddSubMenu(new XinelibOutputSetupMenu::cMenuSetupDecoder);
+ //case osUser5:
+ // return AddSubMenu(new XinelibOutputSetupMenu::cMenuSetupDecoder);
case osUser6:
return AddSubMenu(new XinelibOutputSetupMenu::cMenuSetupLocal);
case osUser7: