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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
#ifndef __decoder_h
#define __decoder_h
#include <lib/base/object.h>
#include <lib/dvb/demux.h>
class eDVBAudio: public iObject
{
DECLARE_REF(eDVBAudio);
private:
ePtr<eDVBDemux> m_demux;
int m_fd, m_fd_demux;
public:
enum {aMPEG, aAC3, aDTS };
eDVBAudio(eDVBDemux *demux, int dev);
int startPid(int pid, int type);
void stop();
#if HAVE_DVB_API_VERSION < 3
void start();
void stopPid();
#endif
void flush();
void freeze();
void unfreeze();
virtual ~eDVBAudio();
};
class eDVBVideo: public iObject
{
DECLARE_REF(eDVBVideo);
private:
ePtr<eDVBDemux> m_demux;
int m_fd, m_fd_demux;
int m_is_slow_motion, m_is_fast_forward;
public:
eDVBVideo(eDVBDemux *demux, int dev);
int startPid(int pid);
void stop();
#if HAVE_DVB_API_VERSION < 3
void start();
void stopPid();
#endif
void flush();
void freeze();
int setSlowMotion(int repeat);
int setFastForward(int skip);
void unfreeze();
virtual ~eDVBVideo();
};
class eDVBPCR: public iObject
{
DECLARE_REF(eDVBPCR);
private:
ePtr<eDVBDemux> m_demux;
int m_fd_demux;
public:
eDVBPCR(eDVBDemux *demux);
int startPid(int pid);
void stop();
virtual ~eDVBPCR();
};
class eTSMPEGDecoder: public Object, public iTSMPEGDecoder
{
DECLARE_REF(eTSMPEGDecoder);
private:
ePtr<eDVBDemux> m_demux;
ePtr<eDVBAudio> m_audio;
ePtr<eDVBVideo> m_video;
ePtr<eDVBPCR> m_pcr;
int m_vpid, m_apid, m_atype, m_pcrpid;
enum
{
changeVideo = 1,
changeAudio = 2,
changePCR = 4
};
int m_changed;
int m_is_ff, m_is_sm, m_is_trickmode;
int setState();
ePtr<eConnection> m_demux_event;
void demux_event(int event);
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 setFastForward(int frames_to_skip);
RESULT setSlowMotion(int repeat);
RESULT setZoom(int what);
RESULT flush();
RESULT setTrickmode(int what);
};
#endif
|