summaryrefslogtreecommitdiff
path: root/dvbdevice.h
diff options
context:
space:
mode:
Diffstat (limited to 'dvbdevice.h')
-rw-r--r--dvbdevice.h112
1 files changed, 42 insertions, 70 deletions
diff --git a/dvbdevice.h b/dvbdevice.h
index 3e35d91..b6cc950 100644
--- a/dvbdevice.h
+++ b/dvbdevice.h
@@ -1,10 +1,10 @@
/*
- * dvbdevice.h: The DVB device interface
+ * dvbdevice.h: The DVB device tuner interface
*
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: dvbdevice.h 2.9 2009/10/25 13:58:20 kls Exp $
+ * $Id: dvbdevice.h 2.11 2010/01/04 14:07:12 kls Exp $
*/
#ifndef __DVBDEVICE_H
@@ -14,7 +14,6 @@
#include <linux/dvb/frontend.h>
#include <linux/dvb/version.h>
#include "device.h"
-#include "dvbspu.h"
#if DVB_API_VERSION < 5
#error VDR requires Linux DVB driver API version 5.0 or higher!
@@ -22,49 +21,55 @@
#define MAXDVBDEVICES 8
+#define DEV_VIDEO "/dev/video"
+#define DEV_DVB_ADAPTER "/dev/dvb/adapter"
+#define DEV_DVB_OSD "osd"
+#define DEV_DVB_FRONTEND "frontend"
+#define DEV_DVB_DVR "dvr"
+#define DEV_DVB_DEMUX "demux"
+#define DEV_DVB_VIDEO "video"
+#define DEV_DVB_AUDIO "audio"
+#define DEV_DVB_CA "ca"
+
class cDvbTuner;
/// The cDvbDevice implements a DVB device which can be accessed through the Linux DVB driver API.
class cDvbDevice : public cDevice {
+protected:
+ static cString DvbName(const char *Name, int Adapter, int Frontend);
+ static int DvbOpen(const char *Name, int Adapter, int Frontend, int Mode, bool ReportError = false);
private:
- static bool Probe(const char *FileName);
+ static bool Exists(int Adapter, int Frontend);
+ ///< Checks whether the given adapter/frontend exists.
+ static bool Probe(int Adapter, int Frontend);
///< Probes for existing DVB devices.
public:
static bool Initialize(void);
///< Initializes the DVB devices.
///< Must be called before accessing any DVB functions.
///< \return True if any devices are available.
+protected:
+ int adapter, frontend;
private:
dvb_frontend_info frontendInfo;
int numProvidedSystems;
fe_delivery_system frontendType;
- int fd_osd, fd_audio, fd_video, fd_dvr, fd_stc, fd_ca;
-protected:
- virtual void MakePrimaryDevice(bool On);
+ int fd_dvr, fd_ca;
public:
- cDvbDevice(int n);
+ cDvbDevice(int Adapter, int Frontend);
virtual ~cDvbDevice();
virtual bool Ready(void);
- virtual bool HasDecoder(void) const;
// Common Interface facilities:
private:
cCiAdapter *ciAdapter;
-// SPU facilities
-
-private:
- cDvbSpuDecoder *spuDecoder;
-public:
- virtual cSpuDecoder *GetSpuDecoder(void);
-
// Channel facilities
private:
cDvbTuner *dvbTuner;
- void TurnOffLiveMode(bool LiveView);
public:
virtual bool ProvidesSource(int Source) const;
virtual bool ProvidesTransponder(const cChannel *Channel) const;
@@ -78,8 +83,6 @@ public:
// PID handle facilities
-private:
- bool SetAudioBypass(bool On);
protected:
virtual bool SetPid(cPidHandle *Handle, int Type, bool On);
@@ -94,67 +97,18 @@ protected:
public:
virtual bool HasCi(void);
-// 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;
- static int setTransferModeForDolbyDigital;
protected:
- virtual int GetAudioChannelDevice(void);
- virtual void SetAudioChannelDevice(int AudioChannel);
- virtual void SetVolumeDevice(int Volume);
- virtual void SetDigitalAudioDevice(bool On);
+ static int setTransferModeForDolbyDigital;
public:
- static void SetTransferModeForDolbyDigital(int Mode);
+ static void SetTransferModeForDolbyDigital(int Mode); // needs to be here for backwards compatibilty
///< Controls how the DVB device handles Transfer Mode when replaying
///< Dolby Digital audio.
///< 0 = don't set "audio bypass" in driver/firmware, don't force Transfer Mode
///< 1 = set "audio bypass" in driver/firmware, force Transfer Mode (default)
///< 2 = don't set "audio bypass" in driver/firmware, force Transfer Mode
-// 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);
- 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);
-
// Receiver facilities
private:
@@ -165,4 +119,22 @@ protected:
virtual bool GetTSPacket(uchar *&Data);
};
+// A plugin that implements a DVB device derived from cDvbDevice needs to create
+// a cDvbDeviceProbe derived object on the heap in order to have its Probe()
+// function called, where it can actually create the appropriate device.
+// The cDvbDeviceProbe object must be created in the plugin's constructor,
+// and deleted in its destructor.
+
+class cDvbDeviceProbe : public cListObject {
+public:
+ cDvbDeviceProbe(void);
+ virtual ~cDvbDeviceProbe();
+ virtual bool Probe(int Adapter, int Frontend) = 0;
+ ///< Probes for a DVB device at the given Adapter and creates the appropriate
+ ///< object derived from cDvbDevice if applicable.
+ ///< Returns true if a device has been created.
+ };
+
+extern cList<cDvbDeviceProbe> DvbDeviceProbes;
+
#endif //__DVBDEVICE_H