From c03cb92fb43baab9136bd9122d757359e0590fda Mon Sep 17 00:00:00 2001 From: Lars Hanisch Date: Wed, 2 Feb 2011 14:18:45 +0100 Subject: initial commit of version 0.0.5c --- dynamicdevice.h | 127 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 dynamicdevice.h (limited to 'dynamicdevice.h') 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 + +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 -- cgit v1.2.3