summaryrefslogtreecommitdiff
path: root/server/livestreamer.h
diff options
context:
space:
mode:
Diffstat (limited to 'server/livestreamer.h')
-rw-r--r--server/livestreamer.h70
1 files changed, 70 insertions, 0 deletions
diff --git a/server/livestreamer.h b/server/livestreamer.h
new file mode 100644
index 0000000..7682206
--- /dev/null
+++ b/server/livestreamer.h
@@ -0,0 +1,70 @@
+#ifndef VDR_STREAMDEV_LIVESTREAMER_H
+#define VDR_STREAMDEV_LIVESTREAMER_H
+
+#include <vdr/config.h>
+#include <vdr/receiver.h>
+
+#include "server/streamer.h"
+#include "server/livefilter.h"
+#include "common.h"
+
+#if MAXRECEIVEPIDS < 16
+# error Too few receiver pids allowed! Please contact sascha@akv-soft.de!
+#endif
+
+class cTSRemux;
+
+class cStreamdevLiveReceiver: public cReceiver {
+ friend class cStreamdevLiveStreamer;
+
+private:
+ cStreamdevLiveStreamer *m_Streamer;
+
+protected:
+ virtual void Receive(uchar *Data, int Length);
+
+public:
+ cStreamdevLiveReceiver(cStreamdevLiveStreamer *Streamer, int Priority, int Ca,
+ int Pid1 = 0, int Pid2 = 0, int Pid3 = 0, int Pid4 = 0,
+ int Pid5 = 0, int Pid6 = 0, int Pid7 = 0, int Pid8 = 0,
+ int Pid9 = 0, int Pid10 = 0, int Pid11 = 0, int Pid12 = 0,
+ int Pid13 = 0, int Pid14 = 0, int Pid15 = 0, int Pid16 = 0);
+ virtual ~cStreamdevLiveReceiver();
+};
+
+class cStreamdevLiveStreamer: public cStreamdevStreamer {
+private:
+ int m_Priority;
+ int m_Pids[MAXRECEIVEPIDS];
+ const cChannel *m_Channel;
+ cDevice *m_Device;
+ cStreamdevLiveReceiver *m_Receiver;
+ cTSRemux *m_Remux;
+ uchar *m_Buffer;
+ int m_Sequence;
+#if VDRVERSNUM >= 10300
+ cStreamdevLiveFilter *m_Filter;
+#endif
+
+protected:
+ virtual uchar *Process(const uchar *Data, int &Count, int &Result);
+
+public:
+ cStreamdevLiveStreamer(int Priority);
+ virtual ~cStreamdevLiveStreamer();
+
+ void SetDevice(cDevice *Device) { m_Device = Device; }
+ bool SetPid(int Pid, bool On);
+ bool SetChannel(const cChannel *Channel, int StreamType, bool StreamPIDS);
+ bool SetFilter(u_short Pid, u_char Tid, u_char Mask, bool On);
+
+ virtual void Detach(void);
+ virtual void Attach(void);
+
+ virtual void Start(cTBSocket *Socket);
+
+ // Statistical purposes:
+ virtual cTBString Report(void);
+};
+
+#endif // VDR_STREAMDEV_LIVESTREAMER_H