From 9c60fb4e42bce2fd3b6d7d9c011f1688cddd4394 Mon Sep 17 00:00:00 2001 From: schmirl Date: Mon, 7 Apr 2008 14:50:32 +0000 Subject: - changed location of streamdevhosts.conf to VDRCONFDIR/plugins/streamdev - changed externremux.sh's default location to VDRCONFDIR/plugins/streamdev - added sample externremux.sh from http://www.vdr-wiki.de/ - stop providing channels after client has been disabled at runtime - added logging of the client device's card index - changed default suspend mode to "Always suspended" - added "Hide Mainmenu Entry" setup option on client --- CONTRIBUTORS | 4 + HISTORY | 16 + Makefile | 4 +- README | 96 ++-- client/device.c | 7 +- client/setup.c | 8 +- client/setup.h | 3 +- i18n.c | 1233 ++++++++++++++++++++++++----------------- remux/extern.c | 3 +- server/server.h | 5 +- server/setup.c | 4 +- streamdev-client.c | 4 +- streamdev/externremux.sh | 48 ++ streamdev/streamdevhosts.conf | 13 + streamdevhosts.conf.example | 13 - 15 files changed, 899 insertions(+), 562 deletions(-) create mode 100755 streamdev/externremux.sh create mode 100644 streamdev/streamdevhosts.conf delete mode 100644 streamdevhosts.conf.example diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 6f9c812..c6f4e0a 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -24,6 +24,7 @@ Rolf Ahrenberg for suggesting a fix of the Makefile's default target for a TS PAT repacker based on Petri Laine's VDR TS recording patch for making it possible to pass parameters to externremux.sh + for removing pre VDR 1.4 legacy code Rantanen Teemu for providing vdr-incompletesections.diff @@ -70,3 +71,6 @@ Olli Lammi Joerg Pulz for his FreeBSD compatibility patch + +tobi + for pointing to unused files in the libdvbmpeg directory diff --git a/HISTORY b/HISTORY index 160994e..9302946 100644 --- a/HISTORY +++ b/HISTORY @@ -1,6 +1,22 @@ VDR Plugin 'streamdev' Revision History --------------------------------------- +2008-04-07: Branched v0_4 + +- changed location of streamdevhosts.conf to VDRCONFDIR/plugins/streamdev +- changed externremux.sh's default location to VDRCONFDIR/plugins/streamdev +- added sample externremux.sh from http://www.vdr-wiki.de/ +- stop providing channels after client has been disabled at runtime +- added logging of the client device's card index +- changed default suspend mode to "Always suspended" +- added "Hide Mainmenu Entry" setup option on client +- resurrected clients "Suspend Server" menu item as its mainmenu entry +- dropped unused code for remote timers/recordings on client side +- dropped unused files client/{assembler,menu,remote}.[hc] +- dropped unused files in libdvbmpeg (reported by tobi) +- dropped patches for pre VDR 1.4 +- removed legacy code for pre VDR 1.4 (thanks to Rolf Ahrenberg) + 2008-03-31: Version 0.3.4 - added possibility to pass parameter to externremux.sh (thanks to Rolf diff --git a/Makefile b/Makefile index ad0cb1b..9ca4cad 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # # Makefile for a Video Disk Recorder plugin # -# $Id: Makefile,v 1.14 2008/04/07 14:40:39 schmirl Exp $ +# $Id: Makefile,v 1.15 2008/04/07 14:50:32 schmirl Exp $ # The official name of this plugin. # This name will be used in the '-P...' option of VDR to load the plugin. @@ -41,7 +41,7 @@ PACKAGE = vdr-$(ARCHIVE) INCLUDES += -I$(VDRDIR)/include -I. -DEFINES += -D_GNU_SOURCE +DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"' ### The object files (add further files here): diff --git a/README b/README index 5a82acb..39a0312 100644 --- a/README +++ b/README @@ -15,13 +15,17 @@ Contents: 1. Description 2. Installation -2.1 VDR 1.2.X -2.2 VDR 1.3.X and above +2.1 VDR 1.3.X and older +2.2 VDR 1.4.X and above +2.3 Updating from streamdev 0.3.x 3. Usage 3.1 Usage HTTP server 3.2 Usage VDR-to-VDR server 3.3 Usage VDR-to-VDR client 4. Other useful Plugins +4.1 Plugins for VDR-to-VDR clients +4.2 Plugins for Server +4.3 Alternatives 5. Known Problems @@ -57,7 +61,7 @@ the PROTOCOL file. 2. Installation: ---------------- -Let's say streamdev's version is 0.3.1 and vdr's version is 1.X.X. If you +Let's say streamdev's version is 0.4.0 and vdr's version is 1.X.X. If you use anything else please exchange the version numbers appropriately (this way I don't have to update this section all the times;) ). @@ -68,48 +72,62 @@ command line. What's important is that the client requests a channel using its Unique Channel ID. So, in order to find the channel at the server, it must have the same ID that is used on the client. You can achieve this by putting the server's -channels.conf on the client, preferably after scanning (in case you use 1.2.X -with AutoPID or 1.3.X). +channels.conf on the client, preferably after scanning. If you want to drive additional Input-Devices (with different sources) on the client, you can merge the channels.conf files. VDR will detect if the local device or the network device can receive the channels. -Last, but not least you have to put the provided streamdevhosts.conf.example -into the "plugins" subfolder of your config-directory (which is equal to your -video-directory if not specified otherwise), rename it to streamdevhosts.conf -and adjust it to your needs. The syntax is the same as for svdrphosts.conf, so -please consult VDR's documentation on how to fill that file, if you can't do -it on-the-fly. For example, if you didn't specify a separate config-directory, -and specified your video directory as "/video0", the file has to be put to -/video0/plugins/streamdevhosts.conf. +Last, but not least you have to copy the streamdev folder into the +"plugins/streamdev" subfolder of VDR's config-directory (which is equal to your +video-directory if not specified otherwise). For example, if you didn't specify +a separate config-directory, and specified your video directory as "/video0", +the directory has to be copied to /video0/plugins/streamdev. +The directory contains a file named streamdevhosts.conf which you must adjust +to your needs. The syntax is the same as for svdrphosts.conf, so please consult +VDR's documentation on how to fill that file, if you can't do it on-the-fly. -2.1 VDR 1.2.X: --------------- +There's also a sample externremux.sh script in this directory. It is used by +streamdev's external remux feature. The sample script uses mencoder. Please +check the script for further information. You can specify a different script +location with the -r parameter. The VDR commandline would then include a +"-P 'streamdev-server -r /usr/local/bin/remux.sh'". Note the additional quotes, +as otherwise -r will be passed to VDR and not to streamdev. -It is recommended that you apply a patch to VDR that improves thread -cancellation. You can work without it, but you _might_ have delays in switching -(especially when using VDR-to-VDR streaming) that are around three seconds. -cd vdr-1.X.X/PLUGINS/src -tar xvfz vdr-streamdev-0.3.1.tgz -ln -s streamdev-0.3.1 streamdev -cd ../.. -patch -p1 this->Priority(); bool ndr = false; + + if (!StreamdevClientSetup.StartClient) + return false; + Dprintf("ProvidesChannel, Channel=%s, Prio=%d\n", Channel->Name(), Priority); if (ClientSocket.DataSocket(siLive) != NULL diff --git a/client/setup.c b/client/setup.c index 31e20ad..5c04c61 100644 --- a/client/setup.c +++ b/client/setup.c @@ -1,5 +1,5 @@ /* - * $Id: setup.c,v 1.4 2008/04/07 14:40:40 schmirl Exp $ + * $Id: setup.c,v 1.5 2008/04/07 14:50:32 schmirl Exp $ */ #include @@ -15,6 +15,7 @@ cStreamdevClientSetup::cStreamdevClientSetup(void) { RemotePort = 2004; StreamFilters = false; SyncEPG = false; + HideMenuEntry = false; strcpy(RemoteIp, ""); } @@ -29,6 +30,7 @@ bool cStreamdevClientSetup::SetupParse(const char *Name, const char *Value) { else if (strcmp(Name, "RemotePort") == 0) RemotePort = atoi(Value); else if (strcmp(Name, "StreamFilters") == 0) StreamFilters = atoi(Value); else if (strcmp(Name, "SyncEPG") == 0) SyncEPG = atoi(Value); + else if (strcmp(Name, "HideMenuEntry") == 0) HideMenuEntry = atoi(Value); else return false; return true; } @@ -36,6 +38,7 @@ bool cStreamdevClientSetup::SetupParse(const char *Name, const char *Value) { cStreamdevClientMenuSetupPage::cStreamdevClientMenuSetupPage(void) { m_NewSetup = StreamdevClientSetup; + AddBoolEdit (tr("Hide Mainmenu Entry"),m_NewSetup.HideMenuEntry); AddBoolEdit (tr("Start Client"), m_NewSetup.StartClient); AddIpEdit (tr("Remote IP"), m_NewSetup.RemoteIp); AddShortEdit(tr("Remote Port"), m_NewSetup.RemotePort); @@ -51,8 +54,6 @@ void cStreamdevClientMenuSetupPage::Store(void) { if (m_NewSetup.StartClient != StreamdevClientSetup.StartClient) { if (m_NewSetup.StartClient) cStreamdevDevice::Init(); - else - Skins.Message(mtInfo, tr("Please restart VDR to activate changes")); } SetupStore("StartClient", m_NewSetup.StartClient); @@ -63,6 +64,7 @@ void cStreamdevClientMenuSetupPage::Store(void) { SetupStore("RemotePort", m_NewSetup.RemotePort); SetupStore("StreamFilters", m_NewSetup.StreamFilters); SetupStore("SyncEPG", m_NewSetup.SyncEPG); + SetupStore("HideMenuEntry", m_NewSetup.HideMenuEntry); StreamdevClientSetup = m_NewSetup; diff --git a/client/setup.h b/client/setup.h index c1908e0..e220c22 100644 --- a/client/setup.h +++ b/client/setup.h @@ -1,5 +1,5 @@ /* - * $Id: setup.h,v 1.3 2008/04/07 14:27:28 schmirl Exp $ + * $Id: setup.h,v 1.4 2008/04/07 14:50:32 schmirl Exp $ */ #ifndef VDR_STREAMDEV_SETUPCLIENT_H @@ -17,6 +17,7 @@ struct cStreamdevClientSetup { int RemotePort; int StreamFilters; int SyncEPG; + int HideMenuEntry; }; extern cStreamdevClientSetup StreamdevClientSetup; diff --git a/i18n.c b/i18n.c index a6c1c20..5e57699 100644 --- a/i18n.c +++ b/i18n.c @@ -1,5 +1,5 @@ /* - * $Id: i18n.c,v 1.7 2008/04/07 14:40:39 schmirl Exp $ + * $Id: i18n.c,v 1.8 2008/04/07 14:50:32 schmirl Exp $ */ #include "i18n.h" @@ -7,545 +7,780 @@ const char *i18n_name = NULL; const tI18nPhrase Phrases[] = { - { "VDR Streaming Server", // English - "VDR Streaming Server", // Deutsch - "", // Slovenski - "", // Italiano - "", // Nederlands - "", // Português - "", // Français - "", // Norsk - "VDR-suoratoistopalvelin", // suomi - "", // Polski - "", // Español - "", // Ellinika / Greek - "", // Svenska - "", // Romaneste - "", // Magyar - "", // Catala - "" // Russian + { "VDR Streaming Server", // English + "VDR Streaming Server", // Deutsch + "", // Slovenski + "", // Italiano + "", // Nederlands + "", // Português + "", // Français + "", // Norsk + "VDR-suoratoistopalvelin", // suomi + "", // Polski + "", // Español + "", // Ellinika / Greek + "", // Svenska + "", // Romaneste + "", // Magyar + "", // Catala + "", // Russian + "", // Hrvatski + "", // Eesti + "", // Dansk + "", // Czech +#if VDRVERSNUM >= 10502 + "", // Türkçe +#endif }, - { "VTP Streaming Client", // English - "VTP Streaming Client", // Deutsch - "", // Slovenski - "", // Italiano - "", // Nederlands - "", // Português - "", // Français - "", // Norsk - "VTP-suoratoistoasiakas ", // suomi - "", // Polski - "", // Español - "", // Ellinika / Greek - "", // Svenska - "", // Romaneste - "", // Magyar - "", // Catala - "" // Russian + { "VTP Streaming Client", // English + "VTP Streaming Client", // Deutsch + "", // Slovenski + "", // Italiano + "", // Nederlands + "", // Português + "", // Français + "", // Norsk + "VTP-suoratoistoasiakas ", // suomi + "", // Polski + "", // Español + "", // Ellinika / Greek + "", // Svenska + "", // Romaneste + "", // Magyar + "", // Catala + "", // Russian + "", // Hrvatski + "", // Eesti + "", // Dansk + "", // Czech +#if VDRVERSNUM >= 10502 + "", // Türkçe +#endif }, - { "Start VDR-to-VDR Server",// English - "VDR-zu-VDR Server starten",// Deutsch - "", // Slovenski - "Avvia il Server VDR-toVDR",// Italiano - "", // Nederlands - "", // Português - "", // Français - "", // Norsk - "Käynnistä VDR-palvelin", // suomi - "", // Polski - "", // Español - "", // Ellinika / Greek - "", // Svenska - "", // Romaneste - "", // Magyar - "", // Catala - "" // Russian + { "Start VDR-to-VDR Server", // English + "VDR-zu-VDR Server starten", // Deutsch + "", // Slovenski + "Avvia il Server VDR-toVDR", // Italiano + "", // Nederlands + "", // Português + "", // Français + "", // Norsk + "Käynnistä VDR-palvelin", // suomi + "", // Polski + "", // Español + "", // Ellinika / Greek + "", // Svenska + "", // Romaneste + "", // Magyar + "", // Catala + "", // Russian + "", // Hrvatski + "", // Eesti + "", // Dansk + "", // Czech +#if VDRVERSNUM >= 10502 + "", // Türkçe +#endif }, { "Start HTTP Server", // English - "HTTP Server starten", // Deutsch - "", // Slovenski - "Avvia il Server HTTP", // Italiano - "", // Nederlands - "", // Português - "", // Français - "", // Norsk - "Käynnistä HTTP-palvelin", // suomi - "", // Polski - "", // Español - "", // Ellinika - "", // Svenska - "", // Romaneste - "", // Magyar - "", // Catala - "" // Russian + "HTTP Server starten", // Deutsch + "", // Slovenski + "Avvia il Server HTTP", // Italiano + "", // Nederlands + "", // Português + "", // Français + "", // Norsk + "Käynnistä HTTP-palvelin", // suomi + "", // Polski + "", // Español + "", // Ellinika + "", // Svenska + "", // Romaneste + "", // Magyar + "", // Catala + "", // Russian + "", // Hrvatski + "", // Eesti + "", // Dansk + "", // Czech +#if VDRVERSNUM >= 10502 + "", // Türkçe +#endif }, - { "HTTP Streamtype", // English - "HTTP Streamtyp", // Deutsch - "", // Slovenski - "Tipo di Stream HTTP", // Italiano - "", // Nederlands - "", // Português - "", // Français - "", // Norsk - "HTTP-lähetysmuoto", // Suomi - "", // Polski - "", // Español - "", // Ellinika - "", // Svenska - "", // Romaneste - "", // Magyar - "", // Catala - "" // Russian + { "HTTP Streamtype", // English + "HTTP Streamtyp", // Deutsch + "", // Slovenski + "Tipo di Stream HTTP", // Italiano + "", // Nederlands + "", // Português + "", // Français + "", // Norsk + "HTTP-lähetysmuoto", // Suomi + "", // Polski + "", // Español + "", // Ellinika + "", // Svenska + "", // Romaneste + "", // Magyar + "", // Catala + "", // Russian + "", // Hrvatski + "", // Eesti + "", // Dansk + "", // Czech +#if VDRVERSNUM >= 10502 + "", // Türkçe +#endif }, - { "Start Client", // English - "Client starten", // Deutsch - "", // Slovenski - "Avvia il Client", // Italiano - "", // Nederlands - "", // Português - "", // Français - "", // Norsk - "Käynnistä VDR-asiakas", // suomi - "", // Polski - "", // Español - "", // Ellinika - "", // Svenska - "", // Romaneste - "", // Magyar - "", // Catala - "" // Russian + { "Start Client", // English + "Client starten", // Deutsch + "", // Slovenski + "Avvia il Client", // Italiano + "", // Nederlands + "", // Português + "", // Français + "", // Norsk + "Käynnistä VDR-asiakas", // suomi + "", // Polski + "", // Español + "", // Ellinika + "", // Svenska + "", // Romaneste + "", // Magyar + "", // Catala + "", // Russian + "", // Hrvatski + "", // Eesti + "", // Dansk + "", // Czech +#if VDRVERSNUM >= 10502 + "", // Türkçe +#endif }, - { "VDR-to-VDR Server Port",// English - "Port des VDR-zu-VDR Servers",// Deutsch - "", // Slovenski - "Porta del Server VDR-to-VDR",// Italiano - "", // Nederlands - "", // Português - "", // Français - "", // Norsk - "VDR-palvelimen portti", // Suomi - "", // Polski - "", // Español - "", // Ellinika - "", // Svenska - "", // Romaneste - "", // Magyar - "", // Catala - "" // Russian + { "VDR-to-VDR Server Port", // English + "Port des VDR-zu-VDR Servers", // Deutsch + "", // Slovenski + "Porta del Server VDR-to-VDR", // Italiano + "", // Nederlands + "", // Português + "", // Français + "", // Norsk + "VDR-palvelimen portti", // Suomi + "", // Polski + "", // Español + "", // Ellinika + "", // Svenska + "", // Romaneste + "", // Magyar + "", // Catala + "", // Russian + "", // Hrvatski + "", // Eesti + "", // Dansk + "", // Czech +#if VDRVERSNUM >= 10502 + "", // Türkçe +#endif }, - { "HTTP Server Port", // English - "Port des HTTP Servers",// Deutsch - "", // Slovenski - "Porta del Server HTTP",// Italiano - "", // Nederlands - "", // Português - "", // Français - "", // Norsk - "HTTP-palvelimen portti", // suomi - "", // Polski - "", // Español - "", // Ellinika - "", // Svenska - "", // Romaneste - "", // Magyar - "", // Catala - "" // Russian + { "HTTP Server Port", // English + "Port des HTTP Servers", // Deutsch + "", // Slovenski + "Porta del Server HTTP", // Italiano + "", // Nederlands + "", // Português + "", // Français + "", // Norsk + "HTTP-palvelimen portti", // suomi + "", // Polski + "", // Español + "", // Ellinika + "", // Svenska + "", // Romaneste + "", // Magyar + "", // Catala + "", // Russian + "", // Hrvatski + "", // Eesti + "", // Dansk + "", // Czech +#if VDRVERSNUM >= 10502 + "", // Türkçe +#endif }, - { "Maximum Number of Clients",// English - "Maximalanzahl an Clients",// Deutsch - "", // Slovenski - "Numero Massimo di Client",// Italiano - "", // Nederlands - "", // Português - "", // Français - "", // Norsk - "Suurin sallittu asiakkaiden määrä", // suomi - "", // Polski - "", // Español - "", // Ellinika - "", // Svenska - "", // Romaneste - "", // Magyar - "", // Catala - "" // Russian + { "Maximum Number of Clients", // English + "Maximalanzahl an Clients", // Deutsch + "", // Slovenski + "Numero Massimo di Client", // Italiano + "", // Nederlands + "", // Português + "", // Français + "", // Norsk + "Suurin sallittu asiakkaiden määrä", // suomi + "", // Polski + "", // Español + "", // Ellinika + "", // Svenska + "", // Romaneste + "", // Magyar + "", // Catala + "", // Russian + "", // Hrvatski + "", // Eesti + "", // Dansk + "", // Czech +#if VDRVERSNUM >= 10502 + "", // Türkçe +#endif }, - { "Remote IP", // English + { "Remote IP", // English "IP der Gegenseite", // Deutsch - "", // Slovenski - "Indirizzo IP del Server",// Italiano - "", // Nederlands - "", // Português - "", // Français - "", // Norsk - "Etäkoneen IP-osoite", // suomi - "", // Polski - "", // Español - "", // Ellinika - "", // Svenska - "", // Romaneste - "", // Magyar - "", // Catala - "" // Russian + "", // Slovenski + "Indirizzo IP del Server", // Italiano + "", // Nederlands + "", // Português + "", // Français + "", // Norsk + "Etäkoneen IP-osoite", // suomi + "", // Polski + "", // Español + "", // Ellinika + "", // Svenska + "", // Romaneste + "", // Magyar + "", // Catala + "", // Russian + "", // Hrvatski + "", // Eesti + "", // Dansk + "", // Czech +#if VDRVERSNUM >= 10502 + "", // Türkçe +#endif }, - { "Remote Port", // English - "Port der Gegenseite", // Deutsch - "", // Slovenski - "Porta del Server Remoto",// Italiano - "", // Nederlands - "", // Português - "", // Français - "", // Norsk - "Etäkoneen portti", // suomi - "", // Polski - "", // Español - "", // Ellinika - "", // Svenska - "", // Romaneste - "", // Magyar - "", // Catala - "" // Russian + { "Remote Port", // English + "Port der Gegenseite", // Deutsch + "", // Slovenski + "Porta del Server Remoto", // Italiano + "", // Nederlands + "", // Português + "", // Français + "", // Norsk + "Etäkoneen portti", // suomi + "", // Polski + "", // Español + "", // Ellinika + "", // Svenska + "", // Romaneste + "", // Magyar + "", // Catala + "", // Russian + "", // Hrvatski + "", // Eesti + "", // Dansk + "", // Czech +#if VDRVERSNUM >= 10502 + "", // Türkçe +#endif }, { "Remote Streamtype", // English - "Streamtyp von Gegenseite",// Deutsch - "", // Slovenski - "Tipo di Stream", // Italiano (oppure Flusso ?) - "", // Nederlands - "", // Português - "", // Français - "", // Norsk - "Etäkoneen lähetysmuoto", // suomi - "", // Polski - "", // Español - "", // Ellinika - "", // Svenska - "", // Romaneste - "", // Magyar - "", // Catala - "" // Russian + "Streamtyp von Gegenseite", // Deutsch + "", // Slovenski + "Tipo di Stream", // Italiano (oppure Flusso ?) + "", // Nederlands + "", // Português + "", // Français + "", // Norsk + "Etäkoneen lähetysmuoto", // suomi + "", // Polski + "", // Español + "", // Ellinika + "", // Svenska + "", // Romaneste + "", // Magyar + "", // Catala + "", // Russian + "", // Hrvatski + "", // Eesti + "", // Dansk + "", // Czech +#if VDRVERSNUM >= 10502 + "", // Türkçe +#endif }, - { "Common Settings", // English - "Allgemeines", // Deutsch - "", // Slovenski - "Settaggi Comuni", // Italiano - "", // Nederlands - "", // Português - "", // Français - "", // Norsk - "Yleiset asetukset", // suomi - "", // Polski - "", // Español - "", // Ellinika - "", // Svenska - "", // Romaneste - "", // Magyar - "", // Catala - "" // Russian + { "Common Settings", // English + "Allgemeines", // Deutsch + "", // Slovenski + "Settaggi Comuni", // Italiano + "", // Nederlands + "", // Português + "", // Français + "", // Norsk + "Yleiset asetukset", // suomi + "", // Polski + "", // Español + "", // Ellinika + "", // Svenska + "", // Romaneste + "", // Magyar + "", // Catala + "", // Russian + "", // Hrvatski + "", // Eesti + "", // Dansk + "", // Czech +#if VDRVERSNUM >= 10502 + "", // Türkçe +#endif }, { "VDR-to-VDR Server", // English - "VDR-zu-VDR Server", // Deutsch - "", // Slovenski + "VDR-zu-VDR Server", // Deutsch + "", // Slovenski "Server VDR-to-VDR", // Italiano - "", // Nederlands - "", // Português - "", // Français - "", // Norsk - "VDR-palvelin", // suomi - "", // Polski - "", // Español - "", // Ellinika - "", // Svenska - "", // Romaneste - "", // Magyar - "", // Catala - "" // Russian + "", // Nederlands + "", // Português + "", // Français + "", // Norsk + "VDR-palvelin", // suomi + "", // Polski + "", // Español + "", // Ellinika + "", // Svenska + "", // Romaneste + "", // Magyar + "", // Catala + "", // Russian + "", // Hrvatski + "", // Eesti + "", // Dansk + "", // Czech +#if VDRVERSNUM >= 10502 + "", // Türkçe +#endif }, - { "HTTP Server", // English - "HTTP Server", // Deutsch - "", // Slovenski - "Server HTTP", // Italiano - "", // Nederlands - "", // Português - "", // Français - "", // Norsk - "HTTP-palvelin", // suomi - "", // Polski - "", // Español - "", // Ellinika - "", // Svenska - "", // Romaneste - "", // Magyar - "", // Catala - "" // Russian + { "HTTP Server", // English + "HTTP Server", // Deutsch + "", // Slovenski + "Server HTTP", // Italiano + "", // Nederlands + "", // Português + "", // Français + "", // Norsk + "HTTP-palvelin", // suomi + "", // Polski + "", // Español + "", // Ellinika + "", // Svenska + "", // Romaneste + "", // Magyar + "", // Catala + "", // Russian + "", // Hrvatski + "", // Eesti + "", // Dansk + "", // Czech +#if VDRVERSNUM >= 10502 + "", // Türkçe +#endif }, { "VDR-to-VDR Client", // English - "VDR-zu-VDR Client", // Deutsch - "", // Slovenski + "VDR-zu-VDR Client", // Deutsch + "", // Slovenski "Client VDR-to-VDR", // Italiano - "", // Nederlands - "", // Português - "", // Français - "", // Norsk - "VDR-asiakas", // suomi - "", // Polski - "", // Español - "", // Ellinika - "", // Svenska - "", // Romaneste - "", // Magyar - "", // Catala - "" // Russian + "", // Nederlands + "", // Português + "", // Français + "", // Norsk + "VDR-asiakas", // suomi + "", // Polski + "", // Español + "", // Ellinika + "", // Svenska + "", // Romaneste + "", // Magyar + "", // Catala + "", // Russian + "", // Hrvatski + "", // Eesti + "", // Dansk + "", // Czech +#if VDRVERSNUM >= 10502 + "", // Türkçe +#endif }, - { "Please restart VDR to activate changes",// English - "Bitte starten Sie für die Änderungen VDR neu",// Deutsch - "", // Slovenski - "Riavviare VDR per attivare i cambiamenti",// Italiano - "", // Nederlands - "", // Português - "", // Français - "", // Norsk - "Aktivoi muutokset käynnistämällä VDR uudelleen", // suomi - "", // Polski - "", // Español - "", // Ellinika - "", // Svenska - "", // Romaneste - "", // Magyar - "", // Catala - "" // Russian + { "Please restart VDR to activate changes", // English + "Bitte starten Sie für die Änderungen VDR neu", // Deutsch + "", // Slovenski + "Riavviare VDR per attivare i cambiamenti", // Italiano + "", // Nederlands + "", // Português + "", // Français + "", // Norsk + "Aktivoi muutokset käynnistämällä VDR uudelleen", // suomi + "", // Polski + "", // Español + "", // Ellinika + "", // Svenska + "", // Romaneste + "", // Magyar + "", // Catala + "", // Russian + "", // Hrvatski + "", // Eesti + "", // Dansk + "", // Czech +#if VDRVERSNUM >= 10502 + "", // Türkçe +#endif }, - { "Synchronize EPG", // English - "EPG synchronisieren", // Deutsch - "", // Slovenski - "", // Italiano - "", // Nederlands - "", // Português - "", // Français - "", // Norsk - "Päivitä ohjelmaopas", // suomi - "", // Polski - "", // Español - "", // Ellinika - "", // Svenska - "", // Romaneste - "", // Magyar - "", // Catala - "" // Russian + { "Synchronize EPG", // English + "EPG synchronisieren", // Deutsch + "", // Slovenski + "", // Italiano + "", // Nederlands + "", // Português + "", // Français + "", // Norsk + "Päivitä ohjelmaopas", // suomi + "", // Polski + "", // Español + "", // Ellinika + "", // Svenska + "", // Romaneste + "", // Magyar + "", // Catala + "", // Russian + "", // Hrvatski + "", // Eesti + "", // Dansk + "", // Czech +#if VDRVERSNUM >= 10502 + "", // Türkçe +#endif }, - { "Suspend Live TV", // English + { "Suspend Live TV", // English "Live-TV pausieren", // Deutsch - "", // Slovenski - "", // Italiano - "", // Nederlands - "", // Português - "", // Français - "", // Norsk - "Pysäytä suora TV-lähetys", // suomi - "", // Polski - "", // Español - "", // Ellinika - "", // Svenska - "", // Romaneste - "", // Magyar - "", // Catala - "" // Russian + "", // Slovenski + "", // Italiano + "", // Nederlands + "", // Português + "", // Français + "", // Norsk + "Pysäytä suora TV-lähetys", // suomi + "", // Polski + "", // Español + "", // Ellinika + "", // Svenska + "", // Romaneste + "", // Magyar + "", // Catala + "", // Russian + "", // Hrvatski + "", // Eesti + "", // Dansk + "", // Czech +#if VDRVERSNUM >= 10502 + "", // Türkçe +#endif }, { "Suspend behaviour", // English - "Pausierverhalten", // Deutsch - "", // Slovenski - "", // Italiano - "", // Nederlands - "", // Português - "", // Français - "", // Norsk - "Pysäytystoiminto", // suomi - "", // Polski - "", // Español - "", // Ellinika - "", // Svenska - "", // Romaneste - "", // Magyar - "", // Catala - "" // Russian + "Pausierverhalten", // Deutsch + "", // Slovenski + "", // Italiano + "", // Nederlands + "", // Português + "", // Français + "", // Norsk + "Pysäytystoiminto", // suomi + "", // Polski + "", // Español + "", // Ellinika + "", // Svenska + "", // Romaneste + "", // Magyar + "", // Catala + "", // Russian + "", // Hrvatski + "", // Eesti + "", // Dansk + "", // Czech +#if VDRVERSNUM >= 10502 + "", // Türkçe +#endif }, { "Offer suspend mode", // English "Pausieren anbieten", // Deutsch - "", // Slovenski - "", // Italiano - "", // Nederlands - "", // Português - "", // Français - "", // Norsk - "tyrkytä", // suomi - "", // Polski - "", // Español - "", // Ellinika - "", // Svenska - "", // Romaneste - "", // Magyar - "", // Catala - "" // Russian + "", // Slovenski + "", // Italiano + "", // Nederlands + "", // Português + "", // Français + "", // Norsk + "tyrkytä", // suomi + "", // Polski + "", // Español + "", // Ellinika + "", // Svenska + "", // Romaneste + "", // Magyar + "", // Catala + "", // Russian + "", // Hrvatski + "", // Eesti + "", // Dansk + "", // Czech +#if VDRVERSNUM >= 10502 + "", // Türkçe +#endif }, - { "Always suspended", // English - "Immer pausiert", // Deutsch - "", // Slovenski - "", // Italiano - "", // Nederlands - "", // Português - "", // Français - "", // Norsk - "aina", // suomi - "", // Polski - "", // Español - "", // Ellinika - "", // Svenska - "", // Romaneste - "", // Magyar - "", // Catala - "" // Russian + { "Always suspended", // English + "Immer pausiert", // Deutsch + "", // Slovenski + "", // Italiano + "", // Nederlands + "", // Português + "", // Français + "", // Norsk + "aina", // suomi + "", // Polski + "", // Español + "", // Ellinika + "", // Svenska + "", // Romaneste + "", // Magyar + "", // Catala + "", // Russian + "", // Hrvatski + "", // Eesti + "", // Dansk + "", // Czech +#if VDRVERSNUM >= 10502 + "", // Türkçe +#endif }, - { "Never suspended", // English - "Nie pausiert", // Deutsch - "", // Slovenski - "", // Italiano - "", // Nederlands - "", // Português - "", // Français - "", // Norsk - "ei koskaan", // suomi - "", // Polski - "", // Español - "", // Ellinika - "", // Svenska - "", // Romaneste - "", // Magyar - "", // Catala - "" // Russian + { "Never suspended", // English + "Nie pausiert", // Deutsch + "", // Slovenski + "", // Italiano + "", // Nederlands + "", // Português + "", // Français + "", // Norsk + "ei koskaan", // suomi + "", // Polski + "", // Español + "", // Ellinika + "", // Svenska + "", // Romaneste + "", // Magyar + "", // Catala + "", // Russian + "", // Hrvatski + "", // Eesti + "", // Dansk + "", // Czech +#if VDRVERSNUM >= 10502 + "", // Türkçe +#endif }, - { "Suspend Server", // English - "Server pausieren", // Deutsch - "", // Slovenski - "", // Italiano - "", // Nederlands - "", // Português - "", // Français - "", // Norsk - "Pysäytä palvelin", // suomi - "", // Polski - "", // Español - "", // Ellinika - "", // Svenska - "", // Romaneste - "", // Magyar - "", // Catala - "" // Russian + { "Suspend Server", // English + "Server pausieren", // Deutsch + "", // Slovenski + "", // Italiano + "", // Nederlands + "", // Português + "", // Français + "", // Norsk + "Pysäytä palvelin", // suomi + "", // Polski + "", // Español + "", // Ellinika + "", // Svenska + "", // Romaneste + "", // Magyar + "", // Catala + "", // Russian + "", // Hrvatski + "", // Eesti + "", // Dansk + "", // Czech +#if VDRVERSNUM >= 10502 + "", // Türkçe +#endif }, - { "Server is suspended", // English - "Server ist pausiert", // Deutsch - "", // Slovenski - "", // Italiano - "", // Nederlands - "", // Português - "", // Français - "", // Norsk - "Palvelin on pysäytetty", // suomi - "", // Polski - "", // Español - "", // Ellinika - "", // Svenska - "", // Romaneste - "", // Magyar - "", // Catala - "" // Russian + { "Server is suspended", // English + "Server ist pausiert", // Deutsch + "", // Slovenski + "", // Italiano + "", // Nederlands + "", // Português + "", // Français + "", // Norsk + "Palvelin on pysäytetty", // suomi + "", // Polski + "", // Español + "", // Ellinika + "", // Svenska + "", // Romaneste + "", // Magyar + "", // Catala + "", // Russian + "", // Hrvatski + "", // Eesti + "", // Dansk + "", // Czech +#if VDRVERSNUM >= 10502 + "", // Türkçe +#endif }, - { "Couldn't suspend Server!",// English - "Konnte Server nicht pausieren!",// Deutsch - "", // Slovenski - "", // Italiano - "", // Nederlands - "", // Português - "", // Français - "", // Norsk - "Palvelinta ei onnistuttu pysäyttämään!", // suomi - "", // Polski - "", // Español - "", // Ellinika - "", // Svenska - "", // Romaneste - "", // Magyar - "", // Catala - "" // Russian + { "Couldn't suspend Server!", // English + "Konnte Server nicht pausieren!", // Deutsch + "", // Slovenski + "", // Italiano + "", // Nederlands + "", // Português + "", // Français + "", // Norsk + "Palvelinta ei onnistuttu pysäyttämään!", // suomi + "", // Polski + "", // Español + "", // Ellinika + "", // Svenska + "", // Romaneste + "", // Magyar + "", // Catala + "", // Russian + "", // Hrvatski + "", // Eesti + "", // Dansk + "", // Czech +#if VDRVERSNUM >= 10502 + "", // Türkçe +#endif }, { "Client may suspend", // English - "Client darf pausieren",// Deutsch - "", // Slovenski - "", // Italiano - "", // Nederlands - "", // Português - "", // Français - "", // Norsk - "Asiakas saa pysäyttää palvelimen", // suomi - "", // Polski - "", // Español - "", // Ellinika - "", // Svenska - "", // Romaneste - "", // Magyar - "", // Catala - "" // Russian + "Client darf pausieren", // Deutsch + "", // Slovenski + "", // Italiano + "", // Nederlands + "", // Português + "", // Français + "", // Norsk + "Asiakas saa pysäyttää palvelimen", // suomi + "", // Polski + "", // Español + "", // Ellinika + "", // Svenska + "", // Romaneste + "", // Magyar + "", // Catala + "", // Russian + "", // Hrvatski + "", // Eesti + "", // Dansk + "", // Czech +#if VDRVERSNUM >= 10502 + "", // Türkçe +#endif }, - { "Bind to IP", // English - "",// Deutsch - "", // Slovenski - "", // Italiano - "", // Nederlands - "", // Português - "", // Français - "", // Norsk - "Sido osoitteeseen", // suomi - "", // Polski - "", // Español - "", // Ellinika - "", // Svenska - "", // Romaneste - "", // Magyar - "", // Catala - "" // Russian + { "Bind to IP", // English + "", // Deutsch + "", // Slovenski + "", // Italiano + "", // Nederlands + "", // Português + "", // Français + "", // Norsk + "Sido osoitteeseen", // suomi + "", // Polski + "", // Español + "", // Ellinika + "", // Svenska + "", // Romaneste + "", // Magyar + "", // Catala + "", // Russian + "", // Hrvatski + "", // Eesti + "", // Dansk + "", // Czech +#if VDRVERSNUM >= 10502 + "", // Türkçe +#endif }, - { "Filter Streaming", // English - "",// Deutsch - "", // Slovenski - "", // Italiano - "", // Nederlands - "", // Português - "", // Français - "", // Norsk - "Suodatetun tiedon suoratoisto", // suomi - "", // Polski - "", // Español - "", // Ellinika - "", // Svenska - "", // Romaneste - "", // Magyar - "", // Catala - "" // Russian + { "Filter Streaming", // English + "", // Deutsch + "", // Slovenski + "", // Italiano + "", // Nederlands + "", // Português + "", // Français + "", // Norsk + "Suodatetun tiedon suoratoisto", // suomi + "", // Polski + "", // Español + "", // Ellinika + "", // Svenska + "", // Romaneste + "", // Magyar + "", // Catala + "", // Russian + "", // Hrvatski + "", // Eesti + "", // Dansk + "", // Czech +#if VDRVERSNUM >= 10502 + "", // Türkçe +#endif }, - { "Streaming active", // English - "Streamen im Gange",// Deutsch - "", // Slovenski - "", // Italiano - "", // Nederlands - "", // Português - "", // Français - "", // Norsk - "Suoratoistopalvelin aktiivinen", // suomi - "", // Polski - "", // Español - "", // Ellinika - "", // Svenska - "", // Romaneste - "", // Magyar - "", // Catala - "" // Russian + { "Streaming active", // English + "Streamen im Gange", // Deutsch + "", // Slovenski + "", // Italiano + "", // Nederlands + "", // Português + "", // Français + "", // Norsk + "Suoratoistopalvelin aktiivinen", // suomi + "", // Polski + "", // Español + "", // Ellinika + "", // Svenska + "", // Romaneste + "", // Magyar + "", // Catala + "", // Russian + "", // Hrvatski + "", // Eesti + "", // Dansk + "", // Czech +#if VDRVERSNUM >= 10502 + "", // Türkçe +#endif }, + { "Hide Mainmenu Entry", // English + "Hauptmenüeintrag verstecken", // Deutsch + "", // Slovenski + "", // Italiano + "", // Nederlands + "", // Português + "", // Français + "", // Norsk + "Piilota valinta päävalikosta", // suomi + "", // Polski + "", // Español + "", // Ellinika + "", // Svenska + "", // Romaneste + "", // Magyar + "", // Catala + "", // Russian + "", // Hrvatski + "", // Eesti + "", // Dansk + "", // Czech +#if VDRVERSNUM >= 10502 + "", // Türkçe +#endif + }, { NULL } }; diff --git a/remux/extern.c b/remux/extern.c index e137c4a..cebaa2c 100644 --- a/remux/extern.c +++ b/remux/extern.c @@ -1,4 +1,5 @@ #include "remux/extern.h" +#include "server/server.h" #include "server/streamer.h" #include #include @@ -6,7 +7,7 @@ #include #include -const char *g_ExternRemux = "/root/externremux.sh"; +const char *g_ExternRemux = EXTERNREMUXPATH; class cTSExt: public cThread { private: diff --git a/server/server.h b/server/server.h index af574f5..be74d51 100644 --- a/server/server.h +++ b/server/server.h @@ -1,5 +1,5 @@ /* - * $Id: server.h,v 1.2 2005/05/09 20:22:29 lordjaxom Exp $ + * $Id: server.h,v 1.3 2008/04/07 14:50:33 schmirl Exp $ */ #ifndef VDR_STREAMDEV_SERVER_H @@ -10,7 +10,8 @@ #include "server/component.h" #include "server/connection.h" -#define STREAMDEVHOSTSPATH (*AddDirectory(cPlugin::ConfigDirectory(), "streamdevhosts.conf")) +#define EXTERNREMUXPATH (*AddDirectory(cPlugin::ConfigDirectory(PLUGIN_NAME_I18N), "externremux.sh")) +#define STREAMDEVHOSTSPATH (*AddDirectory(cPlugin::ConfigDirectory(PLUGIN_NAME_I18N), "streamdevhosts.conf")) class cStreamdevServer: public cThread { private: diff --git a/server/setup.c b/server/setup.c index 2589fec..4b43adf 100644 --- a/server/setup.c +++ b/server/setup.c @@ -1,5 +1,5 @@ /* - * $Id: setup.c,v 1.2 2005/05/09 20:22:29 lordjaxom Exp $ + * $Id: setup.c,v 1.3 2008/04/07 14:50:33 schmirl Exp $ */ #include @@ -17,7 +17,7 @@ cStreamdevServerSetup::cStreamdevServerSetup(void) { StartHTTPServer = true; HTTPServerPort = 3000; HTTPStreamType = stPES; - SuspendMode = smOffer; + SuspendMode = smAlways; AllowSuspend = false; strcpy(VTPBindIP, "0.0.0.0"); strcpy(HTTPBindIP, "0.0.0.0"); diff --git a/streamdev-client.c b/streamdev-client.c index 1f03733..340ff52 100644 --- a/streamdev-client.c +++ b/streamdev-client.c @@ -3,7 +3,7 @@ * * See the README file for copyright information and how to reach the author. * - * $Id: streamdev-client.c,v 1.4 2008/04/07 14:40:39 schmirl Exp $ + * $Id: streamdev-client.c,v 1.5 2008/04/07 14:50:32 schmirl Exp $ */ #include "streamdev-client.h" @@ -42,7 +42,7 @@ void cPluginStreamdevClient::Housekeeping(void) { } const char *cPluginStreamdevClient::MainMenuEntry(void) { - return StreamdevClientSetup.StartClient ? tr("Suspend Server") : NULL; + return StreamdevClientSetup.StartClient && !StreamdevClientSetup.HideMenuEntry ? tr("Suspend Server") : NULL; } cOsdObject *cPluginStreamdevClient::MainMenuAction(void) { diff --git a/streamdev/externremux.sh b/streamdev/externremux.sh new file mode 100755 index 0000000..e2b4156 --- /dev/null +++ b/streamdev/externremux.sh @@ -0,0 +1,48 @@ +#!/bin/sh +# +# externremux.sh - sample remux script using mencoder for remuxing. +# +# Install this script as VDRCONFDIR/plugins/streamdev/externremux.sh +# +# The parameter STREAMQUALITY selects the default remux parameters. Adjust +# to your needs and point your web browser to http://servername:3000/extern/ +# To select different remux parameters on the fly, insert a semicolon and +# the name of the requested quality: http://servername:3000/extern;WLAN11/ + +# CONFIG START + STREAMQUALITY="DSL6000" # DSL{1,2,3,6}000, LAN10, WLAN{11,54}, IPAQ + TMP=/tmp/externremux-${RANDOM:-$$} + MENCODER=mencoder +# CONFIG END + +mkdir -p $TMP +mkfifo $TMP/out.avi +(trap "rm -rf $TMP" EXIT HUP INT TERM ABRT; cat $TMP/out.avi) & + +case ${1:-$STREAMQUALITY} in + DSL1000) exec $MENCODER -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=100 \ + -oac mp3lame -lameopts preset=15:mode=3 -vf scale=160:104 \ + -o $TMP/out.avi -- - &>$TMP/out.log ;; + DSL2000) exec $MENCODER -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=128 \ + -oac mp3lame -lameopts preset=15:mode=3 -vf scale=160:104 \ + -o $TMP/out.avi -- - &>$TMP/out.log ;; + DSL3000) exec $MENCODER -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=250 \ + -oac mp3lame -lameopts preset=15:mode=3 -vf scale=320:208 \ + -o $TMP/out.avi -- - &>$TMP/out.log ;; + DSL6000) exec $MENCODER -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350 \ + -oac mp3lame -lameopts preset=15:mode=3 -vf scale=320:208 \ + -o $TMP/out.avi -- - &>$TMP/out.log ;; + LAN10) exec $MENCODER -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=4096 \ + -oac mp3lame -lameopts preset=standard \ + -o $TMP/out.avi -- - &>$TMP/out.log ;; + WLAN11) exec $MENCODER -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=768 \ + -oac mp3lame -lameopts preset=standard -vf scale=640:408 \ + -o $TMP/out.avi -- - &>$TMP/out.log ;; + WLAN54) exec $MENCODER -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=2048 \ + -oac mp3lame -lameopts preset=standard \ + -o $TMP/out.avi -- - &>$TMP/out.log ;; + IPAQ) exec $MENCODER -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350 \ + -oac mp3lame -lameopts preset=15:mode=3 -vf scale=320:208 \ + -o $TMP/out.avi -- - &>$TMP/out.log ;; + *) touch $TMP/out.avi ;; +esac diff --git a/streamdev/streamdevhosts.conf b/streamdev/streamdevhosts.conf new file mode 100644 index 0000000..6c13598 --- /dev/null +++ b/streamdev/streamdevhosts.conf @@ -0,0 +1,13 @@ +# +# streamdevhosts This file describes a number of host addresses that +# are allowed to connect to the streamdev server running +# with the Video Disk Recorder (VDR) on this system. +# Syntax: +# +# IP-Address[/Netmask] +# + +127.0.0.1 # always accept localhost +#192.168.100.0/24 # any host on the local net +#204.152.189.113 # a specific host +#0.0.0.0/0 # any host on any net (USE THIS WITH CARE!) diff --git a/streamdevhosts.conf.example b/streamdevhosts.conf.example deleted file mode 100644 index 6c13598..0000000 --- a/streamdevhosts.conf.example +++ /dev/null @@ -1,13 +0,0 @@ -# -# streamdevhosts This file describes a number of host addresses that -# are allowed to connect to the streamdev server running -# with the Video Disk Recorder (VDR) on this system. -# Syntax: -# -# IP-Address[/Netmask] -# - -127.0.0.1 # always accept localhost -#192.168.100.0/24 # any host on the local net -#204.152.189.113 # a specific host -#0.0.0.0/0 # any host on any net (USE THIS WITH CARE!) -- cgit v1.2.3