mirror of
https://projects.vdr-developer.org/git/vdr-plugin-streamdev.git
synced 2023-10-10 19:16:51 +02:00
Added option to suspend live TV when the server starts (closes #1296)
This commit is contained in:
parent
1d4a7e06b4
commit
f194ca2074
1
HISTORY
1
HISTORY
@ -1,6 +1,7 @@
|
|||||||
VDR Plugin 'streamdev' Revision History
|
VDR Plugin 'streamdev' Revision History
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
|
|
||||||
|
- Added option to suspend live TV when the server starts
|
||||||
- Set device occupied when streamdev switches away LiveTV on the server, to
|
- Set device occupied when streamdev switches away LiveTV on the server, to
|
||||||
reduce the risk that the VDR main loop immediately switches back, resulting
|
reduce the risk that the VDR main loop immediately switches back, resulting
|
||||||
in a black screen on the client (reported by hummel99)
|
in a black screen on the client (reported by hummel99)
|
||||||
|
4
README
4
README
@ -218,6 +218,10 @@ image is displayed instead. This would allow a low priority client to switch
|
|||||||
to a different transponder. Enable "Client may suspend" in the server setup
|
to a different transponder. Enable "Client may suspend" in the server setup
|
||||||
to allow VDR clients to suspend live TV remotely.
|
to allow VDR clients to suspend live TV remotely.
|
||||||
|
|
||||||
|
In the server's setup there's also an option to suspend live TV when starting
|
||||||
|
the server. The "auto" option will suspend live TV if there's no device with
|
||||||
|
an MPEG decoder available which is typically the case on a headless server.
|
||||||
|
|
||||||
NOTE: Precedence is mainly an issue on One-Card-Systems, since with multiple
|
NOTE: Precedence is mainly an issue on One-Card-Systems, since with multiple
|
||||||
cards there is no need to switch transponders on the primary interface, if on
|
cards there is no need to switch transponders on the primary interface, if on
|
||||||
of the other cards is idle (i.e. if it is not blocked by a recording). If all
|
of the other cards is idle (i.e. if it is not blocked by a recording). If all
|
||||||
|
@ -5,9 +5,9 @@
|
|||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: streamdev 0.5.0\n"
|
"Project-Id-Version: streamdev\n"
|
||||||
"Report-Msgid-Bugs-To: <http://www.vdr-developer.org/mantisbt/>\n"
|
"Report-Msgid-Bugs-To: <vdrdev@schmirler.de>\n"
|
||||||
"POT-Creation-Date: 2012-03-31 15:06+0200\n"
|
"POT-Creation-Date: 2013-11-02 16:55+0100\n"
|
||||||
"PO-Revision-Date: 2008-03-30 02:11+0200\n"
|
"PO-Revision-Date: 2008-03-30 02:11+0200\n"
|
||||||
"Last-Translator: Frank Schmirler <vdrdev@schmirler.de>\n"
|
"Last-Translator: Frank Schmirler <vdrdev@schmirler.de>\n"
|
||||||
"Language-Team: German <vdr@linuxtv.org>\n"
|
"Language-Team: German <vdr@linuxtv.org>\n"
|
||||||
@ -16,9 +16,6 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=ISO-8859-15\n"
|
"Content-Type: text/plain; charset=ISO-8859-15\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
msgid "VDR Streaming Server"
|
|
||||||
msgstr "VDR Streaming Server"
|
|
||||||
|
|
||||||
msgid "Streaming active"
|
msgid "Streaming active"
|
||||||
msgstr "Streamen im Gange"
|
msgstr "Streamen im Gange"
|
||||||
|
|
||||||
@ -37,6 +34,9 @@ msgstr "Allgemeines"
|
|||||||
msgid "Hide Mainmenu Entry"
|
msgid "Hide Mainmenu Entry"
|
||||||
msgstr "Hauptmenüeintrag verstecken"
|
msgstr "Hauptmenüeintrag verstecken"
|
||||||
|
|
||||||
|
msgid "Start with Live TV suspended"
|
||||||
|
msgstr "Live-TV beim Start pausieren"
|
||||||
|
|
||||||
msgid "Maximum Number of Clients"
|
msgid "Maximum Number of Clients"
|
||||||
msgstr "Maximalanzahl an Clients"
|
msgstr "Maximalanzahl an Clients"
|
||||||
|
|
||||||
@ -87,3 +87,7 @@ msgstr "Port des Multicast Clients"
|
|||||||
|
|
||||||
msgid "Multicast Streamtype"
|
msgid "Multicast Streamtype"
|
||||||
msgstr "Multicast Streamtyp"
|
msgstr "Multicast Streamtyp"
|
||||||
|
|
||||||
|
msgid "VDR Streaming Server"
|
||||||
|
msgstr "VDR Streaming Server"
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@ cStreamdevServerSetup StreamdevServerSetup;
|
|||||||
cStreamdevServerSetup::cStreamdevServerSetup(void) {
|
cStreamdevServerSetup::cStreamdevServerSetup(void) {
|
||||||
HideMenuEntry = false;
|
HideMenuEntry = false;
|
||||||
MaxClients = 5;
|
MaxClients = 5;
|
||||||
|
StartSuspended = ssAuto;
|
||||||
StartVTPServer = true;
|
StartVTPServer = true;
|
||||||
VTPServerPort = 2004;
|
VTPServerPort = 2004;
|
||||||
VTPPriority = 0;
|
VTPPriority = 0;
|
||||||
@ -33,6 +34,7 @@ cStreamdevServerSetup::cStreamdevServerSetup(void) {
|
|||||||
bool cStreamdevServerSetup::SetupParse(const char *Name, const char *Value) {
|
bool cStreamdevServerSetup::SetupParse(const char *Name, const char *Value) {
|
||||||
if (strcmp(Name, "HideMenuEntry") == 0) HideMenuEntry = atoi(Value);
|
if (strcmp(Name, "HideMenuEntry") == 0) HideMenuEntry = atoi(Value);
|
||||||
else if (strcmp(Name, "MaxClients") == 0) MaxClients = atoi(Value);
|
else if (strcmp(Name, "MaxClients") == 0) MaxClients = atoi(Value);
|
||||||
|
else if (strcmp(Name, "StartSuspended") == 0) StartSuspended = atoi(Value);
|
||||||
else if (strcmp(Name, "StartServer") == 0) StartVTPServer = atoi(Value);
|
else if (strcmp(Name, "StartServer") == 0) StartVTPServer = atoi(Value);
|
||||||
else if (strcmp(Name, "ServerPort") == 0) VTPServerPort = atoi(Value);
|
else if (strcmp(Name, "ServerPort") == 0) VTPServerPort = atoi(Value);
|
||||||
else if (strcmp(Name, "VTPPriority") == 0) VTPPriority = atoi(Value);
|
else if (strcmp(Name, "VTPPriority") == 0) VTPPriority = atoi(Value);
|
||||||
@ -71,10 +73,18 @@ cStreamdevServerMenuSetupPage::~cStreamdevServerMenuSetupPage() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void cStreamdevServerMenuSetupPage::Set(void) {
|
void cStreamdevServerMenuSetupPage::Set(void) {
|
||||||
|
static const char *StartSuspendedItems[ss_Count] =
|
||||||
|
{
|
||||||
|
trVDR("no"),
|
||||||
|
trVDR("yes"),
|
||||||
|
trVDR("auto")
|
||||||
|
};
|
||||||
|
|
||||||
int current = Current();
|
int current = Current();
|
||||||
Clear();
|
Clear();
|
||||||
AddCategory (tr("Common Settings"));
|
AddCategory (tr("Common Settings"));
|
||||||
Add(new cMenuEditBoolItem(tr("Hide Mainmenu Entry"), &m_NewSetup.HideMenuEntry));
|
Add(new cMenuEditBoolItem(tr("Hide Mainmenu Entry"), &m_NewSetup.HideMenuEntry));
|
||||||
|
Add(new cMenuEditStraItem(tr("Start with Live TV suspended"), &m_NewSetup.StartSuspended, ss_Count, StartSuspendedItems));
|
||||||
Add(new cMenuEditIntItem (tr("Maximum Number of Clients"), &m_NewSetup.MaxClients, 0, 100));
|
Add(new cMenuEditIntItem (tr("Maximum Number of Clients"), &m_NewSetup.MaxClients, 0, 100));
|
||||||
|
|
||||||
|
|
||||||
@ -131,6 +141,7 @@ void cStreamdevServerMenuSetupPage::Store(void) {
|
|||||||
|
|
||||||
SetupStore("HideMenuEntry", m_NewSetup.HideMenuEntry);
|
SetupStore("HideMenuEntry", m_NewSetup.HideMenuEntry);
|
||||||
SetupStore("MaxClients", m_NewSetup.MaxClients);
|
SetupStore("MaxClients", m_NewSetup.MaxClients);
|
||||||
|
SetupStore("StartSuspended", m_NewSetup.StartSuspended);
|
||||||
SetupStore("StartServer", m_NewSetup.StartVTPServer);
|
SetupStore("StartServer", m_NewSetup.StartVTPServer);
|
||||||
SetupStore("ServerPort", m_NewSetup.VTPServerPort);
|
SetupStore("ServerPort", m_NewSetup.VTPServerPort);
|
||||||
SetupStore("VTPBindIP", m_NewSetup.VTPBindIP);
|
SetupStore("VTPBindIP", m_NewSetup.VTPBindIP);
|
||||||
|
@ -7,6 +7,13 @@
|
|||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
|
enum eStartSuspended {
|
||||||
|
ssNo,
|
||||||
|
ssYes,
|
||||||
|
ssAuto,
|
||||||
|
ss_Count
|
||||||
|
};
|
||||||
|
|
||||||
struct cStreamdevServerSetup {
|
struct cStreamdevServerSetup {
|
||||||
cStreamdevServerSetup(void);
|
cStreamdevServerSetup(void);
|
||||||
|
|
||||||
@ -14,6 +21,7 @@ struct cStreamdevServerSetup {
|
|||||||
|
|
||||||
int HideMenuEntry;
|
int HideMenuEntry;
|
||||||
int MaxClients;
|
int MaxClients;
|
||||||
|
int StartSuspended;
|
||||||
int StartVTPServer;
|
int StartVTPServer;
|
||||||
int VTPServerPort;
|
int VTPServerPort;
|
||||||
char VTPBindIP[20];
|
char VTPBindIP[20];
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
#include "server/menu.h"
|
#include "server/menu.h"
|
||||||
#include "server/setup.h"
|
#include "server/setup.h"
|
||||||
#include "server/server.h"
|
#include "server/server.h"
|
||||||
|
#include "server/suspend.h"
|
||||||
|
|
||||||
#if !defined(APIVERSNUM) || APIVERSNUM < 10725
|
#if !defined(APIVERSNUM) || APIVERSNUM < 10725
|
||||||
#error "VDR-1.7.25 or greater required to compile server! Use 'make client' to compile client only."
|
#error "VDR-1.7.25 or greater required to compile server! Use 'make client' to compile client only."
|
||||||
@ -21,6 +22,7 @@ const char *cPluginStreamdevServer::DESCRIPTION = trNOOP("VDR Streaming Server")
|
|||||||
|
|
||||||
cPluginStreamdevServer::cPluginStreamdevServer(void)
|
cPluginStreamdevServer::cPluginStreamdevServer(void)
|
||||||
{
|
{
|
||||||
|
m_Suspend = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
cPluginStreamdevServer::~cPluginStreamdevServer()
|
cPluginStreamdevServer::~cPluginStreamdevServer()
|
||||||
@ -98,6 +100,9 @@ bool cPluginStreamdevServer::Start(void)
|
|||||||
|
|
||||||
cStreamdevServer::Initialize();
|
cStreamdevServer::Initialize();
|
||||||
|
|
||||||
|
m_Suspend = StreamdevServerSetup.StartSuspended == ssAuto ?
|
||||||
|
!cDevice::PrimaryDevice()->HasDecoder() :
|
||||||
|
StreamdevServerSetup.StartSuspended;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -129,6 +134,11 @@ cOsdObject *cPluginStreamdevServer::MainMenuAction(void)
|
|||||||
|
|
||||||
void cPluginStreamdevServer::MainThreadHook(void)
|
void cPluginStreamdevServer::MainThreadHook(void)
|
||||||
{
|
{
|
||||||
|
if (m_Suspend) {
|
||||||
|
cControl::Launch(new cSuspendCtl);
|
||||||
|
m_Suspend = false;
|
||||||
|
}
|
||||||
|
|
||||||
cThreadLock lock;
|
cThreadLock lock;
|
||||||
const cList<cServerConnection>& clients = cStreamdevServer::Clients(lock);
|
const cList<cServerConnection>& clients = cStreamdevServer::Clients(lock);
|
||||||
for (cServerConnection *s = clients.First(); s; s = clients.Next(s))
|
for (cServerConnection *s = clients.First(); s; s = clients.Next(s))
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
class cPluginStreamdevServer : public cPlugin {
|
class cPluginStreamdevServer : public cPlugin {
|
||||||
private:
|
private:
|
||||||
static const char *DESCRIPTION;
|
static const char *DESCRIPTION;
|
||||||
|
bool m_Suspend;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
cPluginStreamdevServer(void);
|
cPluginStreamdevServer(void);
|
||||||
|
Loading…
Reference in New Issue
Block a user