2009-12-31 15:38:18 +01:00
|
|
|
/*
|
|
|
|
* dvbsdffdevice.h: The DVB SD Full Featured device interface
|
|
|
|
*
|
|
|
|
* See the README file for copyright information and how to reach the author.
|
|
|
|
*
|
2013-12-25 13:36:51 +01:00
|
|
|
* $Id: dvbsdffdevice.h 3.1 2013/12/25 13:27:00 kls Exp $
|
2009-12-31 15:38:18 +01:00
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __DVBSDFFDEVICE_H
|
|
|
|
#define __DVBSDFFDEVICE_H
|
|
|
|
|
2012-12-03 13:46:46 +01:00
|
|
|
#include <vdr/dvbdevice.h>
|
|
|
|
#include <vdr/dvbspu.h>
|
2009-12-31 15:38:18 +01:00
|
|
|
|
|
|
|
/// The cDvbSdFfDevice implements a DVB device which can be accessed through the Linux DVB driver API.
|
|
|
|
|
|
|
|
class cDvbSdFfDevice : public cDvbDevice {
|
|
|
|
private:
|
|
|
|
int fd_osd, fd_audio, fd_video, fd_stc;
|
2011-08-27 11:40:21 +02:00
|
|
|
bool outputOnly;
|
2009-12-31 15:38:18 +01:00
|
|
|
protected:
|
|
|
|
virtual void MakePrimaryDevice(bool On);
|
|
|
|
public:
|
2011-08-27 11:40:21 +02:00
|
|
|
cDvbSdFfDevice(int Adapter, int Frontend, bool OutputOnly);
|
2009-12-31 15:38:18 +01:00
|
|
|
virtual ~cDvbSdFfDevice();
|
|
|
|
virtual bool HasDecoder(void) const;
|
2011-05-21 13:40:47 +02:00
|
|
|
virtual bool AvoidRecording(void) const;
|
2009-12-31 15:38:18 +01:00
|
|
|
|
|
|
|
// SPU facilities
|
|
|
|
|
|
|
|
private:
|
|
|
|
cDvbSpuDecoder *spuDecoder;
|
|
|
|
public:
|
|
|
|
virtual cSpuDecoder *GetSpuDecoder(void);
|
|
|
|
|
|
|
|
// Channel facilities
|
|
|
|
|
2011-08-27 11:40:21 +02:00
|
|
|
public:
|
|
|
|
virtual bool ProvidesSource(int Source) const;
|
2013-01-25 10:52:43 +01:00
|
|
|
virtual int NumProvidedSystems(void) const;
|
2009-12-31 15:38:18 +01:00
|
|
|
private:
|
|
|
|
void TurnOffLiveMode(bool LiveView);
|
|
|
|
protected:
|
|
|
|
virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView);
|
|
|
|
|
|
|
|
// PID handle facilities
|
|
|
|
|
|
|
|
private:
|
|
|
|
bool SetAudioBypass(bool On);
|
|
|
|
protected:
|
|
|
|
virtual bool SetPid(cPidHandle *Handle, int Type, bool On);
|
|
|
|
|
|
|
|
// Image Grab facilities
|
|
|
|
|
|
|
|
private:
|
|
|
|
static int devVideoOffset;
|
|
|
|
int devVideoIndex;
|
|
|
|
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:
|
|
|
|
bool digitalAudio;
|
|
|
|
protected:
|
|
|
|
virtual int GetAudioChannelDevice(void);
|
|
|
|
virtual void SetAudioChannelDevice(int AudioChannel);
|
|
|
|
virtual void SetVolumeDevice(int Volume);
|
|
|
|
virtual void SetDigitalAudioDevice(bool On);
|
|
|
|
|
|
|
|
// Player facilities
|
|
|
|
|
|
|
|
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);
|
2013-12-25 13:36:51 +01:00
|
|
|
virtual void TrickSpeed(int Speed, bool Forward);
|
2009-12-31 15:38:18 +01:00
|
|
|
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);
|
|
|
|
};
|
|
|
|
|
|
|
|
class cDvbSdFfDeviceProbe : public cDvbDeviceProbe {
|
2011-08-27 11:40:21 +02:00
|
|
|
private:
|
|
|
|
bool outputOnly;
|
2009-12-31 15:38:18 +01:00
|
|
|
public:
|
2011-08-27 11:40:21 +02:00
|
|
|
cDvbSdFfDeviceProbe(void);
|
|
|
|
void SetOutputOnly(bool On) { outputOnly = On; }
|
2010-01-04 14:16:11 +01:00
|
|
|
virtual bool Probe(int Adapter, int Frontend);
|
2009-12-31 15:38:18 +01:00
|
|
|
};
|
2013-02-17 13:19:36 +01:00
|
|
|
|
2009-12-31 15:38:18 +01:00
|
|
|
#endif //__DVBSDFFDEVICE_H
|