diff options
author | Lars Hanisch <dvb@flensrocker.de> | 2011-02-02 14:18:45 +0100 |
---|---|---|
committer | Lars Hanisch <dvb@flensrocker.de> | 2011-02-02 14:18:45 +0100 |
commit | c03cb92fb43baab9136bd9122d757359e0590fda (patch) | |
tree | dbd9851e29274ba4b0189f3f859c1a29d20b8a88 /dynamicdevice.h | |
download | vdr-plugin-dynamite-c03cb92fb43baab9136bd9122d757359e0590fda.tar.gz vdr-plugin-dynamite-c03cb92fb43baab9136bd9122d757359e0590fda.tar.bz2 |
initial commit of version 0.0.5c
Diffstat (limited to 'dynamicdevice.h')
-rw-r--r-- | dynamicdevice.h | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/dynamicdevice.h b/dynamicdevice.h new file mode 100644 index 0000000..1fe9831 --- /dev/null +++ b/dynamicdevice.h @@ -0,0 +1,127 @@ +#ifndef __DYNAMITEDEVICE_H +#define __DYNAMITEDEVICE_H + +#include <vdr/dvbdevice.h> + +enum eDynamicDeviceReturnCode { ddrcSuccess, + ddrcNoFreeDynDev, + ddrcAlreadyAttached, + ddrcNotFound, + ddrcIsPrimaryDevice, + ddrcIsReceiving, + ddrcNotAllowed, + ddrcNotSupported + }; + +class cDynamicDevice : public cDevice { +private: + static int defaultGetTSTimeout; + + static int numDynamicDevices; + static cMutex arrayMutex; + static cDynamicDevice *dynamicdevice[MAXDEVICES]; + static int IndexOf(const char *DevPath, int &NextFreeIndex); +public: + static cDvbDeviceProbe *dvbprobe; + static int NumDynamicDevices(void) { return numDynamicDevices; } + ///< Returns the total number of dynamic devices. + static bool ProcessQueuedCommands(void); + static void DetachAllDevices(void); + static cString ListAllDevices(int &ReplyCode); // for SVDRP command LSTD + static cString AttachDevicePattern(const char *Pattern); + static eDynamicDeviceReturnCode AttachDevice(const char *DevPath); + static eDynamicDeviceReturnCode DetachDevice(const char *DevPath); + static eDynamicDeviceReturnCode SetLockDevice(const char *DevPath, bool Lock); + static eDynamicDeviceReturnCode SetGetTSTimeout(const char *DevPath, int Seconds); + static void SetDefaultGetTSTimeout(int Seconds); + static bool IsAttached(const char *DevPath); +private: + int index; + cString *devpath; + bool isDetachable; + time_t getTSWatchdog; + int getTSTimeout; +public: + cDynamicDevice(); + void DeleteSubDevice(void); +protected: + virtual ~cDynamicDevice(); + virtual bool Ready(void); + virtual void MakePrimaryDevice(bool On); +public: + virtual bool HasDecoder(void) const; + virtual cSpuDecoder *GetSpuDecoder(void); + virtual bool ProvidesSource(int Source) const; + virtual bool ProvidesTransponder(const cChannel *Channel) const; + virtual bool ProvidesTransponderExclusively(const cChannel *Channel) const; + virtual bool ProvidesChannel(const cChannel *Channel, int Priority = -1, bool *NeedsDetachReceivers = NULL) const; + virtual int NumProvidedSystems(void) const; + virtual const cChannel *GetCurrentlyTunedTransponder(void) const; + virtual bool IsTunedToTransponder(const cChannel *Channel); + virtual bool MaySwitchTransponder(void); +protected: + virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView); +public: + virtual bool HasLock(int TimeoutMs = 0); + virtual bool HasProgramme(void); +protected: + virtual bool SetPid(cPidHandle *Handle, int Type, bool On); +public: + virtual int OpenFilter(u_short Pid, u_char Tid, u_char Mask); + virtual void CloseFilter(int Handle); + virtual bool HasCi(void); + virtual uchar *GrabImage(int &Size, bool Jpeg = true, int Quality = -1, int SizeX = -1, int SizeY = -1); + 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); +protected: + virtual void SetAudioTrackDevice(eTrackType Type); + virtual void SetSubtitleTrackDevice(eTrackType Type); + virtual int GetAudioChannelDevice(void); + virtual void SetAudioChannelDevice(int AudioChannel); + virtual void SetVolumeDevice(int Volume); + virtual void SetDigitalAudioDevice(bool On); + 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 PlaySubtitle(const uchar *Data, int Length); + virtual int PlayPesPacket(const uchar *Data, int Length, bool VideoOnly = false); + virtual int PlayTsVideo(const uchar *Data, int Length); + virtual int PlayTsAudio(const uchar *Data, int Length); + virtual int PlayTsSubtitle(const uchar *Data, int Length); +public: + virtual int64_t GetSTC(void); + virtual bool IsPlayingVideo(void) const; + virtual bool HasIBPTrickSpeed(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); + virtual int PlayPes(const uchar *Data, int Length, bool VideoOnly = false); + virtual int PlayTs(const uchar *Data, int Length, bool VideoOnly = false); +protected: + virtual bool OpenDvr(void); + virtual void CloseDvr(void); + virtual bool GetTSPacket(uchar *&Data); + +#ifdef YAVDR_PATCHES +//opt-21_internal-cam-devices.dpatch + virtual bool HasInternalCam(void); +//opt-44_rotor.dpatch + virtual bool SendDiseqcCmd(dvb_diseqc_master_cmd cmd); +//opt-64_lnb-sharing.dpatch + virtual void SetLnbNrFromSetup(void); + virtual int LnbNr(void) const; + virtual bool IsShareLnb(const cDevice *Device); + virtual bool IsLnbConflict(const cChannel *Channel); +#endif + }; + +#endif //__DYNAMITEDEVICE_H |