vdr-plugin-softhddevice-drm-gles 1.4.0
threads.h
Go to the documentation of this file.
1
20#ifndef __THREADS_H
21#define __THREADS_H
22
23#include <mutex>
24#include <functional>
25
26#include "vdr/thread.h"
27#include "queue.h"
28#include "misc.h"
29#include "drmbuffer.h"
30#include "queue.h"
31
32class cSoftHdDevice;
33class cVideoStream;
34
38class cDecodingThread : public cThread
39{
40public:
41 cDecodingThread(cVideoStream *, const char *);
42 virtual ~cDecodingThread(void);
43 void Stop(void);
44 void Halt(void) { m_mutex.lock(); };
45 void Resume(void) { m_mutex.unlock(); };
46
47private:
48 std::mutex m_mutex;
50
51protected:
52 virtual void Action(void);
53};
54
55class cVideoRender;
56
60class cDisplayThread : public cThread
61{
62public:
64 virtual ~cDisplayThread(void);
65 void Stop(void);
66 void Halt(void) { m_mutex.lock(); };
67 void Resume(void) { m_mutex.unlock(); };
68
69private:
70 std::mutex m_mutex;
72
73protected:
74 virtual void Action(void);
75};
76
80class cSoftHdAudio;
81
82class cAudioThread : public cThread
83{
84public:
86 virtual ~cAudioThread(void);
87 void Stop(void);
88
89private:
91
92protected:
93 virtual void Action(void);
94};
95
99class cFilterThread : public cThread
100{
101public:
102 cFilterThread(cVideoRender *, cQueue<cDrmBuffer> *, const char *, std::function<void(AVFrame *)>);
103 virtual ~cFilterThread(void);
104 void InitAndStart(const AVCodecContext *, AVFrame *, bool);
105 void Stop(void);
106 void PushFrame(AVFrame *);
107 bool IsInputBufferFull(void) { return m_frames.IsFull(); };
109
110private:
112
113 AVFilterGraph *m_pFilterGraph;
114 AVFilterContext *m_pBuffersrcCtx;
115 AVFilterContext *m_pBuffersinkCtx;
116
119 std::function<void(AVFrame *)> m_frameOutput;
122
123 void Action(void);
124};
125
126#endif
cSoftHdAudio * m_pAudio
Definition: threads.h:90
cAudioThread(cSoftHdAudio *)
Definition: threads.cpp:131
void Stop(void)
Definition: threads.cpp:153
virtual ~cAudioThread(void)
Definition: threads.cpp:137
virtual void Action(void)
Definition: threads.cpp:141
Decoding thread class.
Definition: threads.h:39
std::mutex m_mutex
Definition: threads.h:48
cDecodingThread(cVideoStream *, const char *)
Definition: threads.cpp:48
void Stop(void)
Definition: threads.cpp:73
void Resume(void)
Definition: threads.h:45
virtual void Action(void)
Definition: threads.cpp:58
void Halt(void)
Definition: threads.h:44
cVideoStream * m_pStream
Definition: threads.h:49
virtual ~cDecodingThread(void)
Definition: threads.cpp:54
Display thread class.
Definition: threads.h:61
cVideoRender * m_pRender
Definition: threads.h:71
void Halt(void)
Definition: threads.h:66
cDisplayThread(cVideoRender *)
Definition: threads.cpp:87
void Resume(void)
Definition: threads.h:67
virtual void Action(void)
Definition: threads.cpp:97
std::mutex m_mutex
Definition: threads.h:70
virtual ~cDisplayThread(void)
Definition: threads.cpp:93
void Stop(void)
Definition: threads.cpp:117
Filter thread class.
Definition: threads.h:100
void InitAndStart(const AVCodecContext *, AVFrame *, bool)
Init and start the video filter thread.
Definition: threads.cpp:185
void Action(void)
Definition: threads.cpp:286
int GetNumFramesToFilter(void)
Definition: threads.h:108
void Stop(void)
Definition: threads.cpp:349
AVFilterContext * m_pBuffersinkCtx
Definition: threads.h:115
cVideoRender * m_pRender
Definition: threads.h:111
void PushFrame(AVFrame *)
Put a frame in the buffer to be filtered.
Definition: threads.cpp:344
cQueue< cDrmBuffer > * m_pDrmBufferQueue
pointer to renderer's DRM buffer queue
Definition: threads.h:120
bool IsInputBufferFull(void)
Definition: threads.h:107
AVFilterContext * m_pBuffersrcCtx
Definition: threads.h:114
bool m_filterBug
flag for a ffmpeg bug
Definition: threads.h:117
AVFilterGraph * m_pFilterGraph
Definition: threads.h:113
cFilterThread(cVideoRender *, cQueue< cDrmBuffer > *, const char *, std::function< void(AVFrame *)>)
Definition: threads.cpp:167
int m_numFramesToFilter
number of frames to be filtered
Definition: threads.h:121
std::function< void(AVFrame *)> m_frameOutput
function to output the frame
Definition: threads.h:119
virtual ~cFilterThread(void)
Definition: threads.cpp:174
cQueue< AVFrame > m_frames
queue for frames to be filtered
Definition: threads.h:118
bool IsFull(void)
Check if the queue is full.
Definition: queue.h:117
cSoftHdAudio - Audio class
Definition: audio.h:45
cVideoRender - Video render class
Definition: videorender.h:122
cVideoStream - Video stream class
Definition: videostream.h:51
DRM buffer header file.
Misc function header file.
#define VIDEO_SURFACES_MAX
Definition: misc.h:38
Thread-safe queue header file.