aboutsummaryrefslogtreecommitdiff
path: root/lib/dvb/decoder.h
blob: 6694e9fcdb60814f97a0ad260dfe808d1ee5b1d8 (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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#ifndef __decoder_h
#define __decoder_h

#include <lib/base/object.h>
#include <lib/dvb/demux.h>

class eDVBAudio: public virtual iObject
{
DECLARE_REF;
private:
	ePtr<eDVBDemux> m_demux;
	int m_fd, m_fd_demux;
public:
	eDVBAudio(eDVBDemux *demux, int dev);
	int startPid(int pid);
	void stop();
	virtual ~eDVBAudio();
};

class eDVBVideo: public virtual iObject
{
DECLARE_REF;
private:
	ePtr<eDVBDemux> m_demux;
	int m_fd, m_fd_demux;
public:
	eDVBVideo(eDVBDemux *demux, int dev);
	int startPid(int pid);
	void stop();
	virtual ~eDVBVideo();
};

class eTSMPEGDecoder: public virtual iTSMPEGDecoder
{
DECLARE_REF;
private:
	ePtr<eDVBDemux> m_demux;
	ePtr<eDVBAudio> m_audio;
	ePtr<eDVBVideo> m_video;
	
	int m_vpid, m_apid, m_atype, m_pcrpid;
	enum
	{
		changeVideo = 1, 
		changeAudio = 2, 
		changePCR   = 4
	};
	int m_changed;
	int setState();
public:
	enum { pidNone = -1 };
	eTSMPEGDecoder(eDVBDemux *demux, int decoder);
	virtual ~eTSMPEGDecoder();
	RESULT setVideoPID(int vpid);
	RESULT setAudioPID(int apid, int type);
	RESULT setSyncPCR(int pcrpid);
	RESULT setSyncMaster(int who);
	RESULT start();
	RESULT freeze(int cont);
	RESULT unfreeze();
	RESULT setSinglePictureMode(int when);
	RESULT setPictureSkipMode(int what);
	RESULT setSlowMotion(int repeat);
	RESULT setZoom(int what);
};
#endif