diff options
author | Frank Schmirler <schmirl@puter.linogate.de> | 2010-12-02 08:53:01 +0100 |
---|---|---|
committer | Frank Schmirler <schmirl@puter.linogate.de> | 2010-12-02 08:53:01 +0100 |
commit | 5e30711bfdb28085234a5ef6da4f4e44305ac3e4 (patch) | |
tree | d15809d23eeeed7fda55d9450b1af7c99d6eb5d6 /server/streamer.h | |
download | vdr-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.h | 69 |
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 + |