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
13class MythFIFOWriter;
14
15class MythFIFOThread : public MThread
16{
17 public:
19 ~MythFIFOThread() override;
20
21 void SetId(int Id);
22 void SetParent(MythFIFOWriter *Parent);
23
24 protected:
25 void run(void) override;
26
27 private:
29 int m_id { -1 };
30};
31
33{
34 friend class MythFIFOThread;
35
36 public:
37 MythFIFOWriter(uint Count, bool Sync);
38 ~MythFIFOWriter(void);
39
40 bool FIFOInit (uint Id, const QString& Desc, const QString& Name, long Size, int NumBufs);
41 void FIFOWrite(uint Id, void *Buffer, long Size);
42 void FIFODrain(void);
43
44 private:
45 Q_DISABLE_COPY(MythFIFOWriter)
46 void FIFOWriteThread(int Id);
47
49 {
51 unsigned char *m_data;
53 };
54
55 MythFifoBuffer **m_fifoBuf { nullptr };
56 MythFifoBuffer **m_fbInptr { nullptr };
57 MythFifoBuffer **m_fbOutptr { nullptr };
58
59 MythFIFOThread *m_fifoThrds { nullptr };
60 QMutex *m_fifoLock { nullptr };
61 QWaitCondition *m_fullCond { nullptr };
62 QWaitCondition *m_emptyCond { nullptr };
63
64 QString *m_filename { nullptr };
65 QString *m_fbDesc { nullptr };
66
67 long *m_maxBlkSize { nullptr };
68 int *m_killWr { nullptr };
69 int *m_fbCount { nullptr };
70 int *m_fbMaxCount { nullptr };
71 uint m_numFifos { 0 };
73};
74
75#endif
76
This is a wrapper around QThread that does several additional things.
Definition: mthread.h:49
MythFIFOWriter * m_parent
void SetParent(MythFIFOWriter *Parent)
~MythFIFOThread() override
void run(void) override
Runs the Qt event loop unless we have a QRunnable, in which case we run the runnable run instead.
void SetId(int Id)
unsigned int uint
Definition: compat.h:60
#define MTV_PUBLIC
Definition: mythtvexp.h:8
struct MythFifoBuffer * m_next