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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
/*
* dvbhdffdevice.h: The DVB HD Full Featured device interface
*
* See the README file for copyright information and how to reach the author.
*
* $Id: dvbhdffdevice.h 1.8 2012/11/05 08:49:29 kls Exp $
*/
#ifndef __DVBHDFFDEVICE_H
#define __DVBHDFFDEVICE_H
#include "hdffcmd.h"
#include "vdr/dvbdevice.h"
#include "vdr/dvbspu.h"
/// The cDvbHdFfDevice implements a DVB device which can be accessed through the Linux DVB driver API.
class cDvbHdFfDevice : public cDvbDevice {
private:
int fd_osd, fd_audio, fd_video;
protected:
virtual void MakePrimaryDevice(bool On);
public:
static bool Probe(int Adapter, int Frontend);
cDvbHdFfDevice(int Adapter, int Frontend);
virtual ~cDvbHdFfDevice();
virtual bool HasDecoder(void) const;
// SPU facilities
private:
cDvbSpuDecoder *spuDecoder;
public:
virtual cSpuDecoder *GetSpuDecoder(void);
// Channel facilities
private:
void TurnOffLiveMode(bool LiveView);
protected:
virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView);
// PID handle facilities
protected:
virtual bool SetPid(cPidHandle *Handle, int Type, bool On);
// Image Grab facilities
public:
virtual uchar *GrabImage(int &Size, bool Jpeg = true, int Quality = -1, int SizeX = -1, int SizeY = -1);
// Video format facilities
public:
virtual void SetVideoDisplayFormat(eVideoDisplayFormat VideoDisplayFormat);
virtual void SetVideoFormat(bool VideoFormat16_9);
virtual eVideoSystem GetVideoSystem(void);
virtual void GetVideoSize(int &Width, int &Height, double &VideoAspect);
virtual void GetOsdSize(int &Width, int &Height, double &PixelAspect);
// Track facilities
protected:
virtual void SetAudioTrackDevice(eTrackType Type);
// Audio facilities
private:
int audioChannel;
protected:
virtual int GetAudioChannelDevice(void);
virtual void SetAudioChannelDevice(int AudioChannel);
virtual void SetVolumeDevice(int Volume);
virtual void SetDigitalAudioDevice(bool On);
// Player facilities
private:
int playVideoPid;
int playAudioPid;
bool freezed;
bool trickMode;
bool isPlayingVideo;
// Pes2Ts conversion stuff
uint8_t videoCounter;
uint8_t audioCounter;
void BuildTsPacket(uint8_t * TsBuffer, bool PusiSet, uint16_t Pid, uint8_t Counter, const uint8_t * Data, uint32_t Length);
uint32_t PesToTs(uint8_t * TsBuffer, uint16_t Pid, uint8_t & Counter, const uint8_t * Data, uint32_t Length);
protected:
ePlayMode playMode;
virtual bool CanReplay(void) const;
virtual bool SetPlayMode(ePlayMode PlayMode);
virtual int PlayVideo(const uchar *Data, int Length);
virtual int PlayAudio(const uchar *Data, int Length, uchar Id);
virtual int PlayTsVideo(const uchar *Data, int Length);
virtual int PlayTsAudio(const uchar *Data, int Length);
public:
virtual int64_t GetSTC(void);
virtual void TrickSpeed(int Speed);
virtual void Clear(void);
virtual void Play(void);
virtual void Freeze(void);
virtual void Mute(void);
virtual void StillPicture(const uchar *Data, int Length);
virtual bool Poll(cPoller &Poller, int TimeoutMs = 0);
virtual bool Flush(int TimeoutMs = 0);
// HDFF specific things
public:
static HDFF::cHdffCmdIf *GetHdffCmdHandler(void);
private:
static int devHdffOffset;//TODO
bool isHdffPrimary;//TODO implicit!
HDFF::cHdffCmdIf *mHdffCmdIf;
};
class cDvbHdFfDeviceProbe : public cDvbDeviceProbe {
public:
virtual bool Probe(int Adapter, int Frontend);
};
#endif //__DVBHDFFDEVICE_H
|