summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorschmirl <schmirl>2008-03-13 16:01:17 +0000
committerschmirl <schmirl>2008-03-13 16:01:17 +0000
commit21da96308d73458deaa121e1b7a1ce712273c82a (patch)
treed9d222d46730d7da07dafebfcf4df884b47b286f
parent650b4d5443fb5d1980f69170124893a1f6b27c9e (diff)
downloadvdr-plugin-streamdev-21da96308d73458deaa121e1b7a1ce712273c82a.tar.gz
vdr-plugin-streamdev-21da96308d73458deaa121e1b7a1ce712273c82a.tar.bz2
Make sure that a FilterStreamer is only started if client supports it
(#261) Modified Files: client/socket.c server/connectionVTP.c server/connectionVTP.h
-rw-r--r--client/socket.c12
-rw-r--r--server/connectionVTP.c18
-rw-r--r--server/connectionVTP.h1
3 files changed, 22 insertions, 9 deletions
diff --git a/client/socket.c b/client/socket.c
index 5db6efe..f349e71 100644
--- a/client/socket.c
+++ b/client/socket.c
@@ -1,5 +1,5 @@
/*
- * $Id: socket.c,v 1.8 2007/04/24 10:57:34 schmirl Exp $
+ * $Id: socket.c,v 1.9 2008/03/13 16:01:17 schmirl Exp $
*/
#include <tools/select.h>
@@ -140,8 +140,14 @@ bool cClientSocket::CheckConnection(void) {
return false;
}
- isyslog("Streamdev: Connected to server %s:%d using capabilities TSPIDS",
- RemoteIp().c_str(), RemotePort());
+ const char *Filters = "";
+#if VDRVERSNUM >= 10300
+ if(Command("CAPS FILTERS", 220))
+ Filters = ",FILTERS";
+#endif
+
+ isyslog("Streamdev: Connected to server %s:%d using capabilities TSPIDS%s",
+ RemoteIp().c_str(), RemotePort(), Filters);
return true;
}
diff --git a/server/connectionVTP.c b/server/connectionVTP.c
index 60237ea..2829c13 100644
--- a/server/connectionVTP.c
+++ b/server/connectionVTP.c
@@ -1,5 +1,5 @@
/*
- * $Id: connectionVTP.c,v 1.16 2008/03/12 09:36:27 schmirl Exp $
+ * $Id: connectionVTP.c,v 1.17 2008/03/13 16:01:18 schmirl Exp $
*/
#include "server/connectionVTP.h"
@@ -478,6 +478,7 @@ cConnectionVTP::cConnectionVTP(void):
m_FilterStreamer(NULL),
m_LastCommand(NULL),
m_StreamType(stTSPIDS),
+ m_FiltersSupport(false),
m_LSTEHandler(NULL),
m_LSTCHandler(NULL),
m_LSTTHandler(NULL)
@@ -608,8 +609,10 @@ bool cConnectionVTP::CmdCAPS(char *Opts)
//
// Deliver section filters data in separate, channel-independent data stream
//
- if (strcasecmp(Opts, "FILTERS") == 0)
+ if (strcasecmp(Opts, "FILTERS") == 0) {
+ m_FiltersSupport = true;
return Respond(220, "Capability \"%s\" accepted", Opts);
+ }
#endif
return Respond(561, "Capability \"%s\" not known", Opts);
@@ -680,6 +683,7 @@ bool cConnectionVTP::CmdPORT(char *Opts)
#if VDRVERSNUM >= 10300
if (id == siLiveFilter) {
+ m_FiltersSupport = true;
if(m_FilterStreamer)
m_FilterStreamer->Stop();
delete m_FilterSocket;
@@ -743,10 +747,12 @@ bool cConnectionVTP::CmdTUNE(char *Opts)
m_LiveStreamer->Start(m_LiveSocket);
#if VDRVERSNUM >= 10300
- if(!m_FilterStreamer)
- m_FilterStreamer = new cStreamdevFilterStreamer;
- m_FilterStreamer->SetDevice(dev);
- //m_FilterStreamer->SetChannel(chan);
+ if(m_FiltersSupport) {
+ if(!m_FilterStreamer)
+ m_FilterStreamer = new cStreamdevFilterStreamer;
+ m_FilterStreamer->SetDevice(dev);
+ //m_FilterStreamer->SetChannel(chan);
+ }
#endif
return Respond(220, "Channel tuned");
diff --git a/server/connectionVTP.h b/server/connectionVTP.h
index aa9a90f..3acb1a2 100644
--- a/server/connectionVTP.h
+++ b/server/connectionVTP.h
@@ -24,6 +24,7 @@ private:
char *m_LastCommand;
eStreamType m_StreamType;
+ bool m_FiltersSupport;
// Members adopted for SVDRP
cRecordings Recordings;