summaryrefslogtreecommitdiff
path: root/server/streamer.h
blob: 1bfcc472b15b08ac112381e26ddd34fddc5583dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/*
 *  $Id: streamer.h,v 1.1 2004/12/30 22:44:21 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: public cThread {
private:
	bool               m_Active;
	int                m_Receivers;
	uchar             *m_Buffer;
	const char        *m_Name;
	cTBSocket         *m_Socket;
	cRingBufferLinear *m_RingBuffer;

protected:
	virtual uchar *Process(const uchar *Data, int &Count, int &Result);
	virtual void Action(void);

	const cTBSocket *Socket(void) const { return m_Socket; }

public:
	cStreamdevStreamer(const char *Name);
	virtual ~cStreamdevStreamer();

	virtual void Start(cTBSocket *Socket);
	virtual void Stop(void);

	int Put(uchar *Data, int Length) { return m_RingBuffer->Put(Data, Length); }

	virtual void Detach(void) = 0;
	virtual void Attach(void) = 0;
};

#endif // VDR_STREAMDEV_STREAMER_H