00001 #ifndef ENCODERLINK_H_
00002 #define ENCODERLINK_H_
00003
00004 #include <qstring.h>
00005
00006 #include "tv.h"
00007 #include "programinfo.h"
00008 #include "inputinfo.h"
00009
00010 class TVRec;
00011 class MainServer;
00012 class PlaybackSock;
00013 class LiveTVChain;
00014
00015 class EncoderLink
00016 {
00017 public:
00018 EncoderLink(int capturecardnum, PlaybackSock *lsock, QString lhostname);
00019 EncoderLink(int capturecardnum, TVRec *ltv);
00020
00021 ~EncoderLink();
00022
00024 void SetSocket(PlaybackSock *lsock);
00026 PlaybackSock *GetSocket(void) { return sock; }
00027
00029 QString GetHostName(void) const { return hostname; }
00031 bool IsLocal(void) const { return local; }
00033 bool IsConnected(void) const { return (IsLocal() || sock!=NULL); }
00034
00036 int GetCardID(void) const { return m_capturecardnum; }
00038 TVRec *GetTVRec(void) { return tv; }
00039
00040 int LockTuner(void);
00043 void FreeTuner(void) { locked = false; }
00046 bool IsTunerLocked(void) const { return locked; }
00047
00048 bool CheckFile(ProgramInfo *pginfo);
00049 void GetDiskSpace(QStringList &o_strlist);
00050 long long GetMaxBitrate(void);
00051 int SetSignalMonitoringRate(int rate, int notifyFrontend);
00052
00053 bool IsBusy(TunedInputInfo *busy_input = NULL, int time_buffer = 5);
00054 bool IsBusyRecording(void);
00055
00056 TVState GetState();
00057 uint GetFlags(void) const;
00058 bool IsRecording(const ProgramInfo *rec);
00059
00060 bool MatchesRecording(const ProgramInfo *rec);
00061 void RecordPending(const ProgramInfo *rec, int secsleft, bool hasLater);
00062 RecStatusType StartRecording(const ProgramInfo *rec);
00063 void StopRecording(void);
00064 void FinishRecording(void);
00065 void FrontendReady(void);
00066 void CancelNextRecording(bool);
00067 bool WouldConflict(const ProgramInfo *rec);
00068
00069 bool IsReallyRecording(void);
00070 ProgramInfo *GetRecording(void);
00071 float GetFramerate(void);
00072 long long GetFramesWritten(void);
00073 long long GetFilePosition(void);
00074 long long GetKeyframePosition(long long desired);
00075 void SpawnLiveTV(LiveTVChain *chain, bool pip, QString startchan);
00076 QString GetChainID(void);
00077 void StopLiveTV(void);
00078 void PauseRecorder(void);
00079 void SetLiveRecording(int);
00080 void SetNextLiveTVDir(QString dir);
00081 vector<InputInfo> GetFreeInputs(const vector<uint> &excluded_cards) const;
00082 QString GetInput(void) const;
00083 QString SetInput(QString);
00084 void ToggleChannelFavorite(void);
00085 void ChangeChannel(int channeldirection);
00086 void SetChannel(const QString &name);
00087 int GetPictureAttribute(PictureAttribute attr);
00088 int ChangePictureAttribute(PictureAdjustType type,
00089 PictureAttribute attr,
00090 bool direction);
00091 bool CheckChannel(const QString &name);
00092 bool ShouldSwitchToAnotherCard(const QString &channelid);
00093 bool CheckChannelPrefix(const QString&,uint&,bool&,QString&);
00094 void GetNextProgram(int direction,
00095 QString &title, QString &subtitle, QString &desc,
00096 QString &category, QString &starttime,
00097 QString &endtime, QString &callsign, QString &iconpath,
00098 QString &channelname, QString &chanid,
00099 QString &seriesid, QString &programid);
00100 bool GetChannelInfo(uint &chanid, uint &sourceid,
00101 QString &callsign, QString &channum,
00102 QString &channame, QString &xmltv) const;
00103 bool SetChannelInfo(uint chanid, uint sourceid,
00104 QString oldchannum,
00105 QString callsign, QString channum,
00106 QString channame, QString xmltv);
00107
00108 private:
00109 int m_capturecardnum;
00110
00111 PlaybackSock *sock;
00112 QString hostname;
00113
00114 long long freeDiskSpaceKB;
00115
00116 TVRec *tv;
00117
00118 bool local;
00119 bool locked;
00120
00121 QDateTime endRecordingTime;
00122 QDateTime startRecordingTime;
00123 QString chanid;
00124 };
00125
00126 #endif