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 void run(void) override;
25
26 private:
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 };
72};
73
74#endif
75
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:68
#define MTV_PUBLIC
Definition: mythtvexp.h:11
struct MythFifoBuffer * m_next