summaryrefslogtreecommitdiff
path: root/server/streamer.h
diff options
context:
space:
mode:
authorFrank Schmirler <schmirl@puter.linogate.de>2010-12-02 08:53:01 +0100
committerFrank Schmirler <schmirl@puter.linogate.de>2010-12-02 08:53:01 +0100
commit5e30711bfdb28085234a5ef6da4f4e44305ac3e4 (patch)
treed15809d23eeeed7fda55d9450b1af7c99d6eb5d6 /server/streamer.h
downloadvdr-plugin-streamdev-5e30711bfdb28085234a5ef6da4f4e44305ac3e4.tar.gz
vdr-plugin-streamdev-5e30711bfdb28085234a5ef6da4f4e44305ac3e4.tar.bz2
Snapshot 2007-03-20
Diffstat (limited to 'server/streamer.h')
-rw-r--r--server/streamer.h69
1 files changed, 69 insertions, 0 deletions
diff --git a/server/streamer.h b/server/streamer.h
new file mode 100644
index 0000000..c27677c
--- /dev/null
+++ b/server/streamer.h
@@ -0,0 +1,69 @@
+/*
+ * $Id: streamer.h,v 1.7 2005/03/12 12:54:19 lordjaxom Exp $
+ */
+
+#ifndef VDR_STREAMDEV_STREAMER_H
+#define VDR_STREAMDEV_STREAMER_H
+
+#include <vdr/thread.h>
+#include <vdr/ringbuffer.h>
+#include <vdr/tools.h>
+
+class cTBSocket;
+class cStreamdevStreamer;
+
+#define STREAMERBUFSIZE MEGABYTE(4)
+#define WRITERBUFSIZE KILOBYTE(256)
+
+// --- cStreamdevWriter -------------------------------------------------------
+
+class cStreamdevWriter: public cThread {
+private:
+ cStreamdevStreamer *m_Streamer;
+ cTBSocket *m_Socket;
+ bool m_Active;
+
+protected:
+ virtual void Action(void);
+
+public:
+ cStreamdevWriter(cTBSocket *Socket, cStreamdevStreamer *Streamer);
+ virtual ~cStreamdevWriter();
+};
+
+// --- cStreamdevStreamer -----------------------------------------------------
+
+class cStreamdevStreamer: public cThread {
+private:
+ bool m_Active;
+ bool m_Running;
+ cStreamdevWriter *m_Writer;
+ cRingBufferLinear *m_RingBuffer;
+ cRingBufferLinear *m_SendBuffer;
+
+protected:
+ virtual void Action(void);
+
+ bool IsRunning(void) const { return m_Running; }
+
+public:
+ cStreamdevStreamer(const char *Name);
+ virtual ~cStreamdevStreamer();
+
+ virtual void Start(cTBSocket *Socket);
+ virtual void Stop(void);
+
+ void Activate(bool On);
+ int Receive(uchar *Data, int Length) { return m_RingBuffer->Put(Data, Length); }
+ void ReportOverflow(int Bytes) { m_RingBuffer->ReportOverflow(Bytes); }
+
+ virtual int Put(const uchar *Data, int Count) { return m_SendBuffer->Put(Data, Count); }
+ virtual uchar *Get(int &Count) { return m_SendBuffer->Get(Count); }
+ virtual void Del(int Count) { m_SendBuffer->Del(Count); }
+
+ virtual void Detach(void) {}
+ virtual void Attach(void) {}
+};
+
+#endif // VDR_STREAMDEV_STREAMER_H
+