MythTV  master
mythfifowriter.h
Go to the documentation of this file.
1 #ifndef FIFOWRITER
2 #define FIFOWRITER
3 
4 // Qt
5 #include <QWaitCondition>
6 #include <QString>
7 #include <QMutex>
8 
9 // MythTV
10 #include "libmythbase/mthread.h"
11 #include "libmythtv/mythtvexp.h"
12 
13 class MythFIFOWriter;
14 
15 class MythFIFOThread : public MThread
16 {
17  public:
19  ~MythFIFOThread() override;
20 
21  void SetId(int Id);
22  void SetParent(MythFIFOWriter *Parent);
23 
24  void run(void) override;
25 
26  private:
27  MythFIFOWriter *m_parent { nullptr };
28  int m_id { -1 };
29 };
30 
32 {
33  friend class MythFIFOThread;
34 
35  public:
36  MythFIFOWriter(uint Count, bool Sync);
37  ~MythFIFOWriter(void);
38 
39  bool FIFOInit (uint Id, const QString& Desc, const QString& Name, long Size, int NumBufs);
40  void FIFOWrite(uint Id, void *Buffer, long Size);
41  void FIFODrain(void);
42 
43  private:
44  Q_DISABLE_COPY(MythFIFOWriter)
45  void FIFOWriteThread(int Id);
46 
48  {
50  unsigned char *m_data;
52  };
53 
54  MythFifoBuffer **m_fifoBuf { nullptr };
55  MythFifoBuffer **m_fbInptr { nullptr };
56  MythFifoBuffer **m_fbOutptr { nullptr };
57 
58  MythFIFOThread *m_fifoThrds { nullptr };
59  QMutex *m_fifoLock { nullptr };
60  QWaitCondition *m_fullCond { nullptr };
61  QWaitCondition *m_emptyCond { nullptr };
62 
63  QString *m_filename { nullptr };
64  QString *m_fbDesc { nullptr };
65 
66  long *m_maxBlkSize { nullptr };
67  int *m_killWr { nullptr };
68  int *m_fbCount { nullptr };
69  int *m_fbMaxCount { nullptr };
70  uint m_numFifos { 0 };
71  bool m_useSync;
72 };
73 
74 #endif
75 
MythFIFOThread::~MythFIFOThread
~MythFIFOThread() override
Definition: mythfifowriter.cpp:30
mythtvexp.h
MythFIFOThread::MythFIFOThread
MythFIFOThread()
Definition: mythfifowriter.cpp:25
MythFIFOThread
Definition: mythfifowriter.h:15
MythFIFOWriter::m_useSync
bool m_useSync
Definition: mythfifowriter.h:71
MythFIFOWriter
Definition: mythfifowriter.h:31
MythFIFOThread::m_id
int m_id
Definition: mythfifowriter.h:28
MythFIFOThread::SetParent
void SetParent(MythFIFOWriter *Parent)
Definition: mythfifowriter.cpp:42
MythFIFOWriter::MythFifoBuffer
Definition: mythfifowriter.h:47
MythFIFOWriter::MythFifoBuffer::m_blockSize
long m_blockSize
Definition: mythfifowriter.h:51
MythFIFOThread::run
void run(void) override
Runs the Qt event loop unless we have a QRunnable, in which case we run the runnable run instead.
Definition: mythfifowriter.cpp:47
uint
unsigned int uint
Definition: compat.h:81
MythFIFOWriter::MythFifoBuffer::m_next
struct MythFifoBuffer * m_next
Definition: mythfifowriter.h:49
MTV_PUBLIC
#define MTV_PUBLIC
Definition: mythtvexp.h:15
MythFIFOWriter::MythFifoBuffer::m_data
unsigned char * m_data
Definition: mythfifowriter.h:50
Buffer
Definition: MythExternControl.h:36
Name
Definition: channelsettings.cpp:71
MThread
This is a wrapper around QThread that does several additional things.
Definition: mthread.h:48
mthread.h
MythFIFOThread::m_parent
MythFIFOWriter * m_parent
Definition: mythfifowriter.h:27
MythFIFOThread::SetId
void SetId(int Id)
Definition: mythfifowriter.cpp:37