vdr-plugin-softhddevice-drm-gles 1.5.9-20e15de
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
26extern "C"
27{
28#include <libavcodec/avcodec.h>
29#include <libavfilter/avfilter.h>
30}
31
32#include <vdr/thread.h>
33
34#include "misc.h"
35#include "queue.h"
36
37class cDrmBuffer;
38class cSoftHdAudio;
39class cVideoRender;
40class cVideoStream;
41
45class cDecodingThread : public cThread
46{
47public:
48 cDecodingThread(cVideoStream *, const char *);
49 void Stop(void);
50 void Halt(void) { m_mutex.lock(); };
51 void Resume(void) { m_mutex.unlock(); };
52
53private:
54 std::mutex m_mutex;
56
57protected:
58 virtual void Action(void);
59};
60
64class cDisplayThread : public cThread
65{
66public:
68 void Stop(void);
69 void Halt(void) { m_mutex.lock(); };
70 void Resume(void) { m_mutex.unlock(); };
71
72private:
73 std::mutex m_mutex;
75
76protected:
77 virtual void Action(void);
78};
79
83class cAudioThread : public cThread
84{
85public:
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 void InitAndStart(const AVCodecContext *, AVFrame *, bool);
104 void Stop(void);
105 void PushFrame(AVFrame *);
106 bool IsInputBufferFull(void) { return m_frames.IsFull(); };
108
109private:
111
112 AVFilterGraph *m_pFilterGraph;
113 AVFilterContext *m_pBuffersrcCtx;
114 AVFilterContext *m_pBuffersinkCtx;
115
118 std::function<void(AVFrame *)> m_frameOutput;
121
122 void Action(void);
123 void SetFilterOutputPixFormat(AVPixelFormat);
124};
125
126#endif
Audio thread class.
Definition threads.h:84
cSoftHdAudio * m_pAudio
Definition threads.h:90
void Stop(void)
Definition threads.cpp:145
virtual void Action(void)
Definition threads.cpp:133
Decoding thread class.
Definition threads.h:46
std::mutex m_mutex
Definition threads.h:54
void Stop(void)
Definition threads.cpp:71
void Resume(void)
Definition threads.h:51
virtual void Action(void)
Definition threads.cpp:56
void Halt(void)
Definition threads.h:50
cVideoStream * m_pStream
Definition threads.h:55
Display thread class.
Definition threads.h:65
cVideoRender * m_pRender
Definition threads.h:74
void Halt(void)
Definition threads.h:69
void Resume(void)
Definition threads.h:70
virtual void Action(void)
Definition threads.cpp:92
std::mutex m_mutex
Definition threads.h:73
void Stop(void)
Definition threads.cpp:112
Filter thread class.
Definition threads.h:100
void InitAndStart(const AVCodecContext *, AVFrame *, bool)
Init and start the video filter thread.
Definition threads.cpp:196
void Action(void)
Definition threads.cpp:323
int GetNumFramesToFilter(void)
Definition threads.h:107
void Stop(void)
Definition threads.cpp:386
AVFilterContext * m_pBuffersinkCtx
Definition threads.h:114
cVideoRender * m_pRender
Definition threads.h:110
void PushFrame(AVFrame *)
Put a frame in the buffer to be filtered.
Definition threads.cpp:381
cQueue< cDrmBuffer > * m_pDrmBufferQueue
pointer to renderer's DRM buffer queue
Definition threads.h:119
bool IsInputBufferFull(void)
Definition threads.h:106
void SetFilterOutputPixFormat(AVPixelFormat)
Setup the filter output pixel format.
Definition threads.cpp:172
AVFilterContext * m_pBuffersrcCtx
Definition threads.h:113
bool m_filterBug
flag for a ffmpeg bug
Definition threads.h:116
AVFilterGraph * m_pFilterGraph
Definition threads.h:112
int m_numFramesToFilter
number of frames to be filtered
Definition threads.h:120
std::function< void(AVFrame *)> m_frameOutput
function to output the frame
Definition threads.h:118
cQueue< AVFrame > m_frames
queue for frames to be filtered
Definition threads.h:117
Thread-safe queue class.
Definition queue.h:36
bool IsFull(void)
Check if the queue is full.
Definition queue.h:117
cSoftHdAudio - Audio class
Definition audio.h:51
cVideoRender - Video render class
cVideoStream - Video stream class
Definition videostream.h:55
Misc function header file.
#define VIDEO_SURFACES_MAX
Definition misc.h:72
Thread-safe queue header file.