diff options
author | Frank Schmirler <vdr@schmirler.de> | 2014-08-09 23:04:45 +0200 |
---|---|---|
committer | Frank Schmirler <vdr@schmirler.de> | 2014-08-09 23:04:45 +0200 |
commit | bdee8c1923edc4fb04feffbdc0b548706b9e8a0a (patch) | |
tree | 95954fd1bba95b7be129a66307ca0a2e9cb4d330 /server | |
parent | 83262870d50da36039351c597b210ffe82198c17 (diff) | |
download | vdr-plugin-streamdev-bdee8c1923edc4fb04feffbdc0b548706b9e8a0a.tar.gz vdr-plugin-streamdev-bdee8c1923edc4fb04feffbdc0b548706b9e8a0a.tar.bz2 |
Implemented VDR 2.1.4 cStatus::ChannelChange(...)
Diffstat (limited to 'server')
-rw-r--r-- | server/livestreamer.c | 13 | ||||
-rw-r--r-- | server/livestreamer.h | 9 |
2 files changed, 21 insertions, 1 deletions
diff --git a/server/livestreamer.c b/server/livestreamer.c index 6b18d15..1ddae0c 100644 --- a/server/livestreamer.c +++ b/server/livestreamer.c @@ -670,6 +670,19 @@ bool cStreamdevLiveStreamer::ProvidesChannel(const cChannel *Channel, int Priori return device; } +void cStreamdevLiveStreamer::ChannelChange(const cChannel *Channel) +{ + if (Running() && m_Device && m_Device->ProvidesTransponder(Channel) && ISTRANSPONDER(m_Channel->Transponder(), Channel->Transponder())) { + Detach(); + if (m_Device->SwitchChannel(m_Channel, false)) { + Attach(); + dsyslog("streamdev: channel %d (%s) changed", Channel->Number(), Channel->Name()); + } + else + isyslog("streamdev: failed to re-tune after channel %d (%s) changed", Channel->Number(), Channel->Name()); + } +} + void cStreamdevLiveStreamer::MainThreadHook() { if (!m_SwitchLive && Running() && m_Device && !m_Device->IsTunedToTransponder(m_Channel) && !IsReceiving()) { diff --git a/server/livestreamer.h b/server/livestreamer.h index 29217d9..36e98d1 100644 --- a/server/livestreamer.h +++ b/server/livestreamer.h @@ -2,6 +2,7 @@ #define VDR_STREAMDEV_LIVESTREAMER_H #include <vdr/config.h> +#include <vdr/status.h> #include <vdr/receiver.h> #include "server/streamer.h" @@ -18,7 +19,11 @@ class cStreamdevLiveReceiver; // --- cStreamdevLiveStreamer ------------------------------------------------- -class cStreamdevLiveStreamer: public cStreamdevStreamer, public cMainThreadHookSubscriber { +class cStreamdevLiveStreamer: public cStreamdevStreamer, public cMainThreadHookSubscriber +#if VDRVERSNUM >= 20104 + , public cStatus +#endif + { private: int m_Priority; int m_Pids[MAXRECEIVEPIDS + 1]; @@ -51,6 +56,8 @@ protected: virtual int Put(const uchar *Data, int Count); virtual void Action(void); + virtual void ChannelChange(const cChannel *Channel); + public: cStreamdevLiveStreamer(const cServerConnection *Connection, const cChannel *Channel, int Priority, eStreamType StreamType, const int* Apid = NULL, const int* Dpid = NULL); virtual ~cStreamdevLiveStreamer(); |