00001 #ifndef ENCODERLINK_H_
00002 #define ENCODERLINK_H_
00003
00004 #include <QString>
00005 #include <QMap>
00006
00007 #include "tv.h"
00008 #include "programinfo.h"
00009 #include "inputinfo.h"
00010
00011 class TVRec;
00012 class MainServer;
00013 class PlaybackSock;
00014 class LiveTVChain;
00015
00016 class EncoderLink
00017 {
00018 public:
00019 EncoderLink(int capturecardnum, PlaybackSock *lsock, QString lhostname);
00020 EncoderLink(int capturecardnum, TVRec *ltv);
00021
00022 ~EncoderLink();
00023
00025 void SetSocket(PlaybackSock *lsock);
00027 PlaybackSock *GetSocket(void) { return sock; }
00028
00030 void SetSleepStatus(SleepStatus newStatus);
00032 QDateTime GetSleepStatusTime(void) const { return sleepStatusTime; }
00034 QDateTime GetLastSleepTime(void) const { return lastSleepTime; }
00036 void SetLastWakeTime(QDateTime newTime) { lastWakeTime = newTime; }
00038 QDateTime GetLastWakeTime(void) const { return lastWakeTime; }
00039
00041 QString GetHostName(void) const { return hostname; }
00043 bool IsLocal(void) const { return local; }
00045 bool IsConnected(void) const { return (IsLocal() || sock!=NULL); }
00047 bool IsAwake(void) const { return (sleepStatus == sStatus_Awake); }
00049 bool IsAsleep(void) const { return (sleepStatus & sStatus_Asleep); }
00051 bool IsWaking(void) const { return (sleepStatus == sStatus_Waking); }
00053 bool IsFallingAsleep(void) const
00054 { return (sleepStatus == sStatus_FallingAsleep); }
00056 bool CanSleep(void) const { return (sleepStatus != sStatus_Undefined); }
00057
00059 SleepStatus GetSleepStatus(void) const { return (sleepStatus); }
00060
00062 int GetCardID(void) const { return m_capturecardnum; }
00064 TVRec *GetTVRec(void) { return tv; }
00065
00067 bool GoToSleep(void);
00068 int LockTuner(void);
00071 void FreeTuner(void) { locked = false; }
00074 bool IsTunerLocked(void) const { return locked; }
00075
00076 bool CheckFile(ProgramInfo *pginfo);
00077 void GetDiskSpace(QStringList &o_strlist);
00078 long long GetMaxBitrate(void);
00079 int SetSignalMonitoringRate(int rate, int notifyFrontend);
00080
00081 bool IsBusy(TunedInputInfo *busy_input = NULL, int time_buffer = 5);
00082 bool IsBusyRecording(void);
00083
00084 TVState GetState();
00085 uint GetFlags(void) const;
00086 bool IsRecording(const ProgramInfo *rec);
00087
00088 bool MatchesRecording(const ProgramInfo *rec);
00089 void RecordPending(const ProgramInfo *rec, int secsleft, bool hasLater);
00090 RecStatusType StartRecording(const ProgramInfo *rec);
00091 RecStatusType GetRecordingStatus(void);
00092 void StopRecording(bool killFile = false);
00093 void FinishRecording(void);
00094 void FrontendReady(void);
00095 void CancelNextRecording(bool);
00096 bool WouldConflict(const ProgramInfo *rec);
00097
00098 bool IsReallyRecording(void);
00099 ProgramInfo *GetRecording(void);
00100 float GetFramerate(void);
00101 long long GetFramesWritten(void);
00102 long long GetFilePosition(void);
00103 int64_t GetKeyframePosition(uint64_t desired);
00104 bool GetKeyframePositions(int64_t start, int64_t end, frm_pos_map_t&);
00105 void SpawnLiveTV(LiveTVChain *chain, bool pip, QString startchan);
00106 QString GetChainID(void);
00107 void StopLiveTV(void);
00108 void PauseRecorder(void);
00109 void SetLiveRecording(int);
00110 void SetNextLiveTVDir(QString dir);
00111 vector<InputInfo> GetFreeInputs(const vector<uint> &excluded_cards) const;
00112 QString GetInput(void) const;
00113 QString SetInput(QString);
00114 void ToggleChannelFavorite(QString);
00115 void ChangeChannel(ChannelChangeDirection channeldirection);
00116 void SetChannel(const QString &name);
00117 int GetPictureAttribute(PictureAttribute attr);
00118 int ChangePictureAttribute(PictureAdjustType type,
00119 PictureAttribute attr,
00120 bool direction);
00121 bool CheckChannel(const QString &name);
00122 bool ShouldSwitchToAnotherCard(const QString &channelid);
00123 bool CheckChannelPrefix(const QString&,uint&,bool&,QString&);
00124 void GetNextProgram(BrowseDirection direction,
00125 QString &title, QString &subtitle, QString &desc,
00126 QString &category, QString &starttime,
00127 QString &endtime, QString &callsign, QString &iconpath,
00128 QString &channelname, uint &chanid,
00129 QString &seriesid, QString &programid);
00130 bool GetChannelInfo(uint &chanid, uint &sourceid,
00131 QString &callsign, QString &channum,
00132 QString &channame, QString &xmltv) const;
00133 bool SetChannelInfo(uint chanid, uint sourceid,
00134 QString oldchannum,
00135 QString callsign, QString channum,
00136 QString channame, QString xmltv);
00137
00138 private:
00139 int m_capturecardnum;
00140
00141 PlaybackSock *sock;
00142 QString hostname;
00143
00144 long long freeDiskSpaceKB;
00145
00146 TVRec *tv;
00147
00148 bool local;
00149 bool locked;
00150
00151 SleepStatus sleepStatus;
00152 QDateTime sleepStatusTime;
00153 QDateTime lastSleepTime;
00154 QDateTime lastWakeTime;
00155
00156 QDateTime endRecordingTime;
00157 QDateTime startRecordingTime;
00158 uint chanid;
00159 };
00160
00161 #endif