MythTV  master
playbacksock.cpp
Go to the documentation of this file.
1 #include <QStringList>
2 #include <utility>
3 
4 #include "compat.h"
5 #include "playbacksock.h"
6 #include "programinfo.h"
7 #include "mainserver.h"
8 
9 #include "mythcorecontext.h"
10 #include "mythdate.h"
11 #include "inputinfo.h"
12 #include "referencecounter.h"
13 
14 #define LOC QString("PlaybackSock: ")
15 #define LOC_ERR QString("PlaybackSock, Error: ")
16 
18  MainServer *parent, MythSocket *lsock,
19  QString lhostname, PlaybackSockEventsMode eventsMode) :
20  ReferenceCounter("PlaybackSock")
21 {
22  m_parent = parent;
23  QString localhostname = gCoreContext->GetHostName();
24 
25  m_sock = lsock;
26  m_hostname = std::move(lhostname);
28  m_ip = "";
29 
30  m_local = (m_hostname == localhostname);
31 }
32 
34 {
35  m_sock->DecrRef();
36  m_sock = nullptr;
37 }
38 
39 bool PlaybackSock::wantsEvents(void) const
40 {
41  return (m_eventsMode != kPBSEvents_None);
42 }
43 
45 {
46  return ((m_eventsMode == kPBSEvents_Normal) ||
48 }
49 
51 {
52  return ((m_eventsMode == kPBSEvents_Normal) ||
54 }
55 
57 {
59 }
60 
62 {
63  return m_eventsMode;
64 }
65 
66 bool PlaybackSock::ReadStringList(QStringList &list)
67 {
68  m_sock->IncrRef();
69  ReferenceLocker rlocker(m_sock);
70  QMutexLocker locker(&m_sockLock);
71  if (!m_sock->IsDataAvailable())
72  {
73  LOG(VB_GENERAL, LOG_DEBUG,
74  "PlaybackSock::ReadStringList(): Data vanished !!!");
75  return false;
76  }
77  return m_sock->ReadStringList(list);
78 }
79 
81  QStringList &strlist, uint min_reply_length)
82 {
83  bool ok = false;
84 
85  m_sock->IncrRef();
86 
87  {
88  QMutexLocker locker(&m_sockLock);
90 
91  ok = m_sock->SendReceiveStringList(strlist);
92  while (ok && strlist[0] == "BACKEND_MESSAGE")
93  {
94  // oops, not for us
95  if (strlist.size() >= 2)
96  {
97  QString message = strlist[1];
98  strlist.pop_front();
99  strlist.pop_front();
100  MythEvent me(message, strlist);
101  gCoreContext->dispatch(me);
102  }
103 
104  ok = m_sock->ReadStringList(strlist);
105  }
107  }
108 
109  m_sock->DecrRef();
110 
111  if (!ok)
112  {
113  LOG(VB_GENERAL, LOG_ERR,
114  "PlaybackSock::SendReceiveStringList(): No response.");
115  return false;
116  }
117 
118  if (min_reply_length && ((uint)strlist.size() < min_reply_length))
119  {
120  LOG(VB_GENERAL, LOG_ERR,
121  "PlaybackSock::SendReceiveStringList(): Response too short");
122  return false;
123  }
124 
125  return true;
126 }
127 
131 {
132  QStringList strlist(QString("GO_TO_SLEEP"));
133 
134  return SendReceiveStringList(strlist, 1) && (strlist[0] == "OK");
135 }
136 
140 void PlaybackSock::GetDiskSpace(QStringList &o_strlist)
141 {
142  QStringList strlist(QString("QUERY_FREE_SPACE"));
143 
144  if (SendReceiveStringList(strlist, 8))
145  {
146  o_strlist += strlist;
147  }
148 }
149 
151 {
152  QStringList strlist(QString("CHECK_RECORDING"));
153  pginfo->ToStringList(strlist);
154 
155  if (SendReceiveStringList(strlist, 1))
156  return strlist[0].toInt();
157 
158  return 0;
159 }
160 
161 int PlaybackSock::DeleteFile(const QString &filename, const QString &sgroup)
162 {
163  QStringList strlist("DELETE_FILE");
164  strlist << filename;
165  strlist << sgroup;
166 
167  if (SendReceiveStringList(strlist, 1))
168  return strlist[0].toInt();
169 
170  return 0;
171 }
172 
174 {
175  QStringList strlist(QString("STOP_RECORDING"));
176  pginfo->ToStringList(strlist);
177 
178  if (SendReceiveStringList(strlist, 1))
179  return strlist[0].toInt();
180 
181  return 0;
182 }
183 
185  bool forceMetadataDelete)
186 {
187  QStringList strlist;
188 
189  if (forceMetadataDelete)
190  strlist = QStringList( QString("FORCE_DELETE_RECORDING"));
191  else
192  strlist = QStringList( QString("DELETE_RECORDING"));
193 
194  pginfo->ToStringList(strlist);
195 
196  if (SendReceiveStringList(strlist, 1))
197  return strlist[0].toInt();
198 
199  return 0;
200 }
201 
203  const QString &playbackhost)
204 {
205  QStringList strlist(QString("FILL_PROGRAM_INFO"));
206  strlist << playbackhost;
207  pginfo.ToStringList(strlist);
208 
209  if (SendReceiveStringList(strlist))
210  {
211  ProgramInfo tmp(strlist);
212  if (tmp.HasPathname() || tmp.GetChanID())
213  {
214  pginfo.clone(tmp, true);
215  return true;
216  }
217  }
218 
219  return false;
220 }
221 
222 QStringList PlaybackSock::GetSGFileList(const QString &host, const QString &groupname,
223  const QString &directory, bool fileNamesOnly)
224 {
225  QStringList strlist(QString("QUERY_SG_GETFILELIST"));
226  strlist << host;
227  strlist << groupname;
228  strlist << directory;
229  strlist << QString::number(static_cast<int>(fileNamesOnly));
230 
231  SendReceiveStringList(strlist);
232 
233  return strlist;
234 }
235 
236 QStringList PlaybackSock::GetSGFileQuery(const QString &host, const QString &groupname,
237  const QString &filename)
238 {
239  QStringList strlist(QString("QUERY_SG_FILEQUERY"));
240  strlist << host;
241  strlist << groupname;
242  strlist << filename;
243 
244  SendReceiveStringList(strlist);
245 
246  return strlist;
247 }
248 
249 QString PlaybackSock::GetFileHash(const QString& filename, const QString& storageGroup)
250 {
251  QStringList strlist(QString("QUERY_FILE_HASH"));
252  strlist << filename
253  << storageGroup;
254 
255  SendReceiveStringList(strlist);
256  return strlist[0];
257 }
258 
259 QStringList PlaybackSock::GetFindFile(const QString &host, const QString &filename,
260  const QString &storageGroup, bool useRegex)
261 {
262  QStringList strlist(QString("QUERY_FINDFILE"));
263  strlist << host
264  << storageGroup
265  << filename
266  << (useRegex ? "1" : "0")
267  << "0";
268 
269  SendReceiveStringList(strlist);
270  return strlist;
271 }
272 
273 QStringList PlaybackSock::GenPreviewPixmap(const QString &token,
274  const ProgramInfo *pginfo)
275 {
276  QStringList strlist(QString("QUERY_GENPIXMAP2"));
277  strlist += token;
278  pginfo->ToStringList(strlist);
279 
280  SendReceiveStringList(strlist);
281 
282  return strlist;
283 }
284 
285 QStringList PlaybackSock::GenPreviewPixmap(const QString &token,
286  const ProgramInfo *pginfo,
287  bool time_fmt_sec,
288  long long time,
289  const QString &outputFile,
290  const QSize outputSize)
291 {
292  QStringList strlist(QString("QUERY_GENPIXMAP2"));
293  strlist += token;
294  pginfo->ToStringList(strlist);
295  strlist.push_back(time_fmt_sec ? "s" : "f");
296  strlist.push_back(QString::number(time));
297  strlist.push_back((outputFile.isEmpty()) ? "<EMPTY>" : outputFile);
298  strlist.push_back(QString::number(outputSize.width()));
299  strlist.push_back(QString::number(outputSize.height()));
300 
301  SendReceiveStringList(strlist);
302 
303  return strlist;
304 }
305 
307 {
308  QStringList strlist(QString("QUERY_PIXMAP_LASTMODIFIED"));
309  pginfo->ToStringList(strlist);
310 
311  SendReceiveStringList(strlist);
312 
313  if (!strlist.empty() && !strlist[0].isEmpty() && (strlist[0] != "BAD"))
314  {
315  return MythDate::fromSecsSinceEpoch(strlist[0].toLongLong());
316  }
317 
318  return QDateTime();
319 }
320 
322 {
323  QStringList strlist("QUERY_CHECKFILE");
324  strlist << QString::number(0); // don't check slaves
325  pginfo->ToStringList(strlist);
326 
327  if (SendReceiveStringList(strlist, 2))
328  {
329  pginfo->SetPathname(strlist[1]);
330  return strlist[0].toInt() != 0;
331  }
332 
333  return false;
334 }
335 
336 bool PlaybackSock::IsBusy(int capturecardnum, InputInfo *busy_input,
337  int time_buffer)
338 {
339  QStringList strlist(QString("QUERY_REMOTEENCODER %1").arg(capturecardnum));
340 
341  strlist << "IS_BUSY";
342  strlist << QString::number(time_buffer);
343 
344  if (!SendReceiveStringList(strlist, 1))
345  {
346  LOG(VB_GENERAL, LOG_ERR, LOC + "IsBusy: " +
347  QString("QUERY_REMOTEENCODER %1").arg(capturecardnum) +
348  " gave us no response.");
349  }
350 
351  bool state = false;
352 
353  if (!strlist.isEmpty())
354  {
355  QStringList::const_iterator it = strlist.cbegin();
356  state = ((*it).toInt() != 0);
357 
358  if (busy_input)
359  {
360  ++it;
361  if (!busy_input->FromStringList(it, strlist.cend()))
362  {
363  LOG(VB_GENERAL, LOG_ERR, LOC + "IsBusy: "
364  "Failed to parse response to " +
365  QString("QUERY_REMOTEENCODER %1").arg(capturecardnum));
366  state = false;
367  // pretend it's not busy if we can't parse response
368  }
369  }
370  }
371 
372  return state;
373 }
374 
379 int PlaybackSock::GetEncoderState(int capturecardnum)
380 {
381  QStringList strlist(QString("QUERY_REMOTEENCODER %1").arg(capturecardnum));
382  strlist << "GET_STATE";
383 
384  if (!SendReceiveStringList(strlist, 1))
385  {
386  LOG(VB_GENERAL, LOG_ERR, LOC + "GetEncoderState: " +
387  QString("QUERY_REMOTEENCODER %1").arg(capturecardnum) +
388  " gave us no response.");
389 
390  return kState_Error;
391  }
392 
393  return strlist[0].toInt();
394 }
395 
396 long long PlaybackSock::GetMaxBitrate(int capturecardnum)
397 {
398  QStringList strlist(QString("QUERY_REMOTEENCODER %1").arg(capturecardnum));
399  strlist << "GET_MAX_BITRATE";
400 
401  if (SendReceiveStringList(strlist, 1))
402  return strlist[0].toLongLong();
403 
404  return 20200000LL; // Peak bit rate for HD-PVR
405 }
406 
412 {
413  QStringList strlist(QString("QUERY_REMOTEENCODER %1").arg(cardid));
414  strlist << "GET_CURRENT_RECORDING";
415 
416  if (!SendReceiveStringList(strlist))
417  return nullptr;
418 
419  auto *pginfo = new ProgramInfo(strlist);
420  if (!pginfo->HasPathname() && !pginfo->GetChanID())
421  {
422  delete pginfo;
423  pginfo = nullptr;
424  }
425 
426  return pginfo;
427 }
428 
429 bool PlaybackSock::EncoderIsRecording(int capturecardnum,
430  const ProgramInfo *pginfo)
431 {
432  QStringList strlist(QString("QUERY_REMOTEENCODER %1").arg(capturecardnum));
433  strlist << "MATCHES_RECORDING";
434  pginfo->ToStringList(strlist);
435 
436  if (SendReceiveStringList(strlist, 1))
437  return (bool) strlist[0].toInt();
438 
439  return false;
440 }
441 
443  ProgramInfo *pginfo)
444 {
445  QStringList strlist(QString("QUERY_REMOTEENCODER %1").arg(capturecardnum));
446  strlist << "START_RECORDING";
447  pginfo->ToStringList(strlist);
448 
449  if (SendReceiveStringList(strlist, 3))
450  {
451  pginfo->SetRecordingID(strlist[1].toUInt());
452  pginfo->SetRecordingStartTime(
453  MythDate::fromSecsSinceEpoch(strlist[2].toLongLong()));
454  return RecStatus::Type(strlist[0].toInt());
455  }
456 
457  return RecStatus::Unknown;
458 }
459 
461 {
462  QStringList strlist(QString("QUERY_REMOTEENCODER %1").arg(capturecardnum));
463  strlist << "GET_RECORDING_STATUS";
464 
465  if (!SendReceiveStringList(strlist, 1))
466  {
467  LOG(VB_GENERAL, LOG_ERR, LOC + "GetRecordingStatus: " +
468  QString("QUERY_REMOTEENCODER %1").arg(capturecardnum) +
469  " did not respond.");
470 
471  return RecStatus::Unknown;
472  }
473 
474  return RecStatus::Type(strlist[0].toInt());
475 }
476 
477 void PlaybackSock::RecordPending(int capturecardnum, const ProgramInfo *pginfo,
478  int secsleft, bool hasLater)
479 {
480  QStringList strlist(QString("QUERY_REMOTEENCODER %1").arg(capturecardnum));
481  strlist << "RECORD_PENDING";
482  strlist << QString::number(secsleft);
483  strlist << QString::number(static_cast<int>(hasLater));
484  pginfo->ToStringList(strlist);
485 
486  SendReceiveStringList(strlist);
487 }
488 
490  int rate, int notifyFrontend)
491 {
492  QStringList strlist(QString("QUERY_REMOTEENCODER %1").arg(capturecardnum));
493  strlist << "SET_SIGNAL_MONITORING_RATE";
494  strlist << QString::number(rate);
495  strlist << QString::number(notifyFrontend);
496 
497  if (SendReceiveStringList(strlist, 1))
498  return strlist[0].toInt();
499 
500  return -1;
501 }
502 
503 void PlaybackSock::SetNextLiveTVDir(int capturecardnum, const QString& dir)
504 {
505  QStringList strlist(QString("SET_NEXT_LIVETV_DIR %1 %2")
506  .arg(capturecardnum)
507  .arg(dir));
508 
509  SendReceiveStringList(strlist);
510 }
511 
512 void PlaybackSock::CancelNextRecording(int capturecardnum, bool cancel)
513 {
514  QStringList strlist(QString("QUERY_REMOTEENCODER %1")
515  .arg(capturecardnum));
516 
517  strlist << "CANCEL_NEXT_RECORDING";
518  strlist << QString::number(static_cast<int>(cancel));
519 
520  SendReceiveStringList(strlist);
521 }
522 
523 QStringList PlaybackSock::ForwardRequest(const QStringList &slist)
524 {
525  QStringList strlist = slist;
526 
527  if (SendReceiveStringList(strlist))
528  return strlist;
529 
530  return QStringList();
531 }
532 
536 {
537  QStringList strlist(QString("ADD_CHILD_INPUT %1").arg(childid));
538  return SendReceiveStringList(strlist, 1) && (strlist[0] == "OK");
539 }
540 
541 /* vim: set expandtab tabstop=4 shiftwidth=4: */
ReferenceLocker
This decrements the reference on destruction.
Definition: referencecounter.h:67
RecStatus::Type
Type
Definition: recStatus.h:16
kPBSEvents_SystemOnly
@ kPBSEvents_SystemOnly
Definition: playbacksock.h:24
kPBSEvents_None
@ kPBSEvents_None
Definition: playbacksock.h:21
PlaybackSock::GetDiskSpace
void GetDiskSpace(QStringList &o_strlist)
Appends host's dir's total and used space in kilobytes.
Definition: playbacksock.cpp:140
PlaybackSock::wantsOnlySystemEvents
bool wantsOnlySystemEvents(void) const
Definition: playbacksock.cpp:56
PlaybackSock::m_hostname
QString m_hostname
Definition: playbacksock.h:118
PlaybackSock::m_sock
MythSocket * m_sock
Definition: playbacksock.h:117
ReferenceCounter::DecrRef
virtual int DecrRef(void)
Decrements reference count and deletes on 0.
Definition: referencecounter.cpp:125
PlaybackSock::EncoderIsRecording
bool EncoderIsRecording(int capturecardnum, const ProgramInfo *pginfo)
Definition: playbacksock.cpp:429
PlaybackSock::wantsSystemEvents
bool wantsSystemEvents(void) const
Definition: playbacksock.cpp:50
MythSocket::SendReceiveStringList
bool SendReceiveStringList(QStringList &list, uint min_reply_length=0, uint timeoutMS=kLongTimeout)
Definition: mythsocket.cpp:342
PlaybackSock::~PlaybackSock
~PlaybackSock() override
Definition: playbacksock.cpp:33
PlaybackSock::PlaybackSock
PlaybackSock(MainServer *parent, MythSocket *lsock, QString lhostname, PlaybackSockEventsMode eventsMode)
Definition: playbacksock.cpp:17
PlaybackSock::m_eventsMode
PlaybackSockEventsMode m_eventsMode
Definition: playbacksock.h:122
ProgramInfo::SetRecordingID
virtual void SetRecordingID(uint _recordedid)
Definition: programinfo.h:569
kPBSEvents_Normal
@ kPBSEvents_Normal
Definition: playbacksock.h:22
PlaybackSock::m_ip
QString m_ip
Definition: playbacksock.h:119
ProgramInfo::clone
virtual void clone(const ProgramInfo &other, bool ignore_non_serialized_data=false)
Copies important fields from other ProgramInfo.
Definition: programinfo.cpp:834
MythEvent
This class is used as a container for messages.
Definition: mythevent.h:17
PlaybackSock::FillProgramInfo
bool FillProgramInfo(ProgramInfo &pginfo, const QString &playbackhost)
Definition: playbacksock.cpp:202
arg
arg(title).arg(filename).arg(doDelete))
MainServer
Definition: mainserver.h:114
RecStatus::Unknown
@ Unknown
Definition: recStatus.h:32
playbacksock.h
LOG
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
Definition: mythlogging.h:23
kPBSEvents_NonSystem
@ kPBSEvents_NonSystem
Definition: playbacksock.h:23
PlaybackSock::eventsMode
PlaybackSockEventsMode eventsMode(void) const
Definition: playbacksock.cpp:61
PlaybackSock::m_sockLock
QMutex m_sockLock
Definition: playbacksock.h:128
kState_Error
@ kState_Error
Error State, if we ever try to enter this state errored is set.
Definition: tv.h:54
PlaybackSock::GenPreviewPixmap
QStringList GenPreviewPixmap(const QString &token, const ProgramInfo *pginfo)
Definition: playbacksock.cpp:273
PlaybackSock::DeleteFile
int DeleteFile(const QString &filename, const QString &sgroup)
Definition: playbacksock.cpp:161
tmp
static guint32 * tmp
Definition: goom_core.cpp:31
MythSocket
Class for communcating between myth backends and frontends.
Definition: mythsocket.h:27
MythDate::fromSecsSinceEpoch
MBASE_PUBLIC QDateTime fromSecsSinceEpoch(uint seconds)
This function takes the number of seconds since the start of the epoch and returns a QDateTime with t...
Definition: mythdate.cpp:68
PlaybackSock::StopRecording
int StopRecording(const ProgramInfo *pginfo)
Definition: playbacksock.cpp:173
mythdate.h
ProgramInfo::SetPathname
void SetPathname(const QString &pn)
Definition: programinfo.cpp:2335
programinfo.h
PlaybackSock::IsBusy
bool IsBusy(int capturecardnum, InputInfo *busy_input=nullptr, int time_buffer=5)
Definition: playbacksock.cpp:336
PlaybackSock::SendReceiveStringList
bool SendReceiveStringList(QStringList &strlist, uint min_reply_length=0)
Definition: playbacksock.cpp:80
PlaybackSock::m_local
bool m_local
Definition: playbacksock.h:121
PlaybackSock::AddChildInput
bool AddChildInput(uint childid)
Tells a slave to add a child input.
Definition: playbacksock.cpp:535
compat.h
PlaybackSock::GetRecordingStatus
RecStatus::Type GetRecordingStatus(int capturecardnum)
Definition: playbacksock.cpp:460
PlaybackSock::CancelNextRecording
void CancelNextRecording(int capturecardnum, bool cancel)
Definition: playbacksock.cpp:512
PlaybackSock::GetFileHash
QString GetFileHash(const QString &filename, const QString &storageGroup)
Definition: playbacksock.cpp:249
PlaybackSock::CheckFile
bool CheckFile(ProgramInfo *pginfo)
Definition: playbacksock.cpp:321
PlaybackSock::wantsNonSystemEvents
bool wantsNonSystemEvents(void) const
Definition: playbacksock.cpp:44
filename
QString filename
Definition: mythplugins/mytharchive/mytharchivehelper/main.cpp:637
PlaybackSock::SetSignalMonitoringRate
int SetSignalMonitoringRate(int capturecardnum, int rate, int notifyFrontend)
Definition: playbacksock.cpp:489
PlaybackSock::RecordPending
void RecordPending(int capturecardnum, const ProgramInfo *pginfo, int secsleft, bool hasLater)
Definition: playbacksock.cpp:477
PlaybackSock::SetNextLiveTVDir
void SetNextLiveTVDir(int capturecardnum, const QString &dir)
Definition: playbacksock.cpp:503
MythSocket::SetReadyReadCallbackEnabled
void SetReadyReadCallbackEnabled(bool enabled)
Definition: mythsocket.h:49
uint
unsigned int uint
Definition: compat.h:141
PlaybackSock::GetEncoderState
int GetEncoderState(int capturecardnum)
Returns the maximum bits per second the recorder can produce.
Definition: playbacksock.cpp:379
gCoreContext
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
Definition: mythcorecontext.cpp:60
token
return token
Definition: musicutils.cpp:74
PlaybackSock::StartRecording
RecStatus::Type StartRecording(int capturecardnum, ProgramInfo *pginfo)
Definition: playbacksock.cpp:442
PlaybackSock::GoToSleep
bool GoToSleep(void)
Tells a slave to go to sleep.
Definition: playbacksock.cpp:130
referencecounter.h
PlaybackSock::wantsEvents
bool wantsEvents(void) const
Definition: playbacksock.cpp:39
PlaybackSock::GetSGFileQuery
QStringList GetSGFileQuery(const QString &host, const QString &groupname, const QString &filename)
Definition: playbacksock.cpp:236
PlaybackSock::GetRecording
ProgramInfo * GetRecording(uint cardid)
Returns the ProgramInfo being used by any current recording.
Definition: playbacksock.cpp:411
ProgramInfo
Holds information on recordings and videos.
Definition: programinfo.h:68
ProgramInfo::ToStringList
void ToStringList(QStringList &list) const
Serializes ProgramInfo into a QStringList which can be passed over a socket.
Definition: programinfo.cpp:1270
mythcorecontext.h
PlaybackSock::CheckRecordingActive
int CheckRecordingActive(const ProgramInfo *pginfo)
Definition: playbacksock.cpp:150
dir
QDir dir
Definition: mythplugins/mytharchive/mytharchivehelper/main.cpp:1174
PlaybackSock::GetSGFileList
QStringList GetSGFileList(const QString &host, const QString &groupname, const QString &directory, bool fileNamesOnly)
Definition: playbacksock.cpp:222
MythSocket::IsDataAvailable
bool IsDataAvailable(void)
Definition: mythsocket.cpp:573
inputinfo.h
InputInfo
Definition: inputinfo.h:15
mainserver.h
MythCoreContext::GetHostName
QString GetHostName(void)
Definition: mythcorecontext.cpp:859
PlaybackSock::GetFindFile
QStringList GetFindFile(const QString &host, const QString &filename, const QString &storageGroup, bool useRegex)
Definition: playbacksock.cpp:259
PlaybackSock::DeleteRecording
int DeleteRecording(const ProgramInfo *pginfo, bool forceMetadataDelete=false)
Definition: playbacksock.cpp:184
PlaybackSock::ForwardRequest
QStringList ForwardRequest(const QStringList &slist)
Definition: playbacksock.cpp:523
PlaybackSock::ReadStringList
bool ReadStringList(QStringList &list)
Definition: playbacksock.cpp:66
MythSocket::ReadStringList
bool ReadStringList(QStringList &list, uint timeoutMS=kShortTimeout)
Definition: mythsocket.cpp:329
PlaybackSockEventsMode
PlaybackSockEventsMode
Definition: playbacksock.h:20
ReferenceCounter::IncrRef
virtual int IncrRef(void)
Increments reference count.
Definition: referencecounter.cpp:101
MythCoreContext::dispatch
void dispatch(const MythEvent &event)
Definition: mythcorecontext.cpp:1734
LOC
#define LOC
Definition: playbacksock.cpp:14
PlaybackSock::m_parent
MainServer * m_parent
Definition: playbacksock.h:132
ReferenceCounter
General purpose reference counter.
Definition: referencecounter.h:27
PlaybackSock::GetMaxBitrate
long long GetMaxBitrate(int capturecardnum)
Definition: playbacksock.cpp:396
PlaybackSock::PixmapLastModified
QDateTime PixmapLastModified(const ProgramInfo *pginfo)
Definition: playbacksock.cpp:306
ProgramInfo::SetRecordingStartTime
void SetRecordingStartTime(const QDateTime &dt)
Definition: programinfo.h:516
InputInfo::FromStringList
virtual bool FromStringList(QStringList::const_iterator &it, const QStringList::const_iterator &end)
Definition: inputinfo.cpp:13