aboutsummaryrefslogtreecommitdiff
path: root/lib/dvb/demux.h
blob: 3b4cbede06fe9b0ef22d45effc26c1916d6000c0 (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
#ifndef __dvb_demux_h
#define __dvb_demux_h

#include <lib/dvb/idvb.h>
#include <lib/dvb/isection.h>

class eDVBDemux: public virtual iDVBDemux
{
	int adapter, demux;
	friend class eDVBSectionReader;
	friend class eDVBAudio;
	friend class eDVBVideo;
public:
	DECLARE_REF
	eDVBDemux(int adapter, int demux);
	virtual ~eDVBDemux();
	RESULT createSectionReader(eMainloop *context, ePtr<iDVBSectionReader> &reader);
	RESULT getMPEGDecoder(ePtr<iTSMPEGDecoder> &reader);
};

class eDVBSectionReader: public virtual iDVBSectionReader, public Object
{
	DECLARE_REF
private:
	int fd;
	Signal1<void, const __u8*> read;
	ePtr<eDVBDemux> demux;
	int active;
	int checkcrc;
	void data(int);
	eSocketNotifier *notifier;
public:
	
	eDVBSectionReader(eDVBDemux *demux, eMainloop *context, RESULT &res);
	virtual ~eDVBSectionReader();
	RESULT start(const eDVBSectionFilterMask &mask);
	RESULT stop();
	RESULT connectRead(const Slot1<void,const __u8*> &read, ePtr<eConnection> &conn);
};

#endif