|
vdr-plugin-softhddevice-drm-gles 1.5.9-20e15de
|
Filter thread class. More...
#include <threads.h>
Public Member Functions | |
| cFilterThread (cVideoRender *, cQueue< cDrmBuffer > *, const char *, std::function< void(AVFrame *)>) | |
| void | InitAndStart (const AVCodecContext *, AVFrame *, bool) |
| Init and start the video filter thread. | |
| void | Stop (void) |
| void | PushFrame (AVFrame *) |
| Put a frame in the buffer to be filtered. | |
| bool | IsInputBufferFull (void) |
| int | GetNumFramesToFilter (void) |
Private Member Functions | |
| void | Action (void) |
| void | SetFilterOutputPixFormat (AVPixelFormat) |
| Setup the filter output pixel format. | |
Private Attributes | |
| cVideoRender * | m_pRender |
| AVFilterGraph * | m_pFilterGraph |
| AVFilterContext * | m_pBuffersrcCtx |
| AVFilterContext * | m_pBuffersinkCtx |
| bool | m_filterBug |
| flag for a ffmpeg bug | |
| cQueue< AVFrame > | m_frames {VIDEO_SURFACES_MAX} |
| queue for frames to be filtered | |
| std::function< void(AVFrame *)> | m_frameOutput |
| function to output the frame | |
| cQueue< cDrmBuffer > * | m_pDrmBufferQueue |
| pointer to renderer's DRM buffer queue | |
| int | m_numFramesToFilter = 0 |
| number of frames to be filtered | |
| cFilterThread::cFilterThread | ( | cVideoRender * | videoRender, |
| cQueue< cDrmBuffer > * | drmBufferQueue, | ||
| const char * | name, | ||
| std::function< void(AVFrame *)> | frameOutput | ||
| ) |
Definition at line 159 of file threads.cpp.
|
private |
Definition at line 323 of file threads.cpp.
References cQueue< T >::IsEmpty(), cQueue< T >::IsFull(), isInterlacedFrame(), LOGDEBUG, LOGERROR, LOGFATAL, LOGWARNING, m_filterBug, m_frameOutput, m_frames, m_numFramesToFilter, m_pBuffersinkCtx, m_pBuffersrcCtx, m_pDrmBufferQueue, and cQueue< T >::Pop().
|
inline |
Definition at line 107 of file threads.h.
References m_numFramesToFilter.
Referenced by cVideoStream::RenderFrame().
| void cFilterThread::InitAndStart | ( | const AVCodecContext * | videoCtx, |
| AVFrame * | frame, | ||
| bool | enableDeinterlacer | ||
| ) |
Init and start the video filter thread.
| videoCtx | codec context |
| frame | AVFrame to take init parameters from |
| enableDeinterlacer | true, if the deinterlacer should be used |
Definition at line 196 of file threads.cpp.
References L_CODEC, LOGDEBUG2, LOGFATAL, m_filterBug, m_numFramesToFilter, m_pBuffersinkCtx, m_pBuffersrcCtx, m_pFilterGraph, and SetFilterOutputPixFormat().
Referenced by cVideoStream::RenderFrame().
|
inline |
Definition at line 106 of file threads.h.
References cQueue< T >::IsFull(), and m_frames.
Referenced by cVideoStream::DecodeInput().
| void cFilterThread::PushFrame | ( | AVFrame * | frame | ) |
Put a frame in the buffer to be filtered.
Definition at line 381 of file threads.cpp.
References m_frames, and cQueue< T >::Push().
Referenced by cVideoStream::RenderFrame().
|
private |
Setup the filter output pixel format.
| pixFmt | AV pixel format |
Definition at line 172 of file threads.cpp.
References LOGFATAL, and m_pBuffersinkCtx.
Referenced by InitAndStart().
| void cFilterThread::Stop | ( | void | ) |
Definition at line 386 of file threads.cpp.
References cQueue< T >::IsEmpty(), LOGDEBUG, m_filterBug, m_frames, m_numFramesToFilter, m_pFilterGraph, and cQueue< T >::Pop().
Referenced by cVideoStream::CancelFilterThread().
|
private |
flag for a ffmpeg bug
Definition at line 116 of file threads.h.
Referenced by Action(), InitAndStart(), and Stop().
|
private |
|
private |
queue for frames to be filtered
Definition at line 117 of file threads.h.
Referenced by Action(), IsInputBufferFull(), PushFrame(), and Stop().
|
private |
number of frames to be filtered
Definition at line 120 of file threads.h.
Referenced by Action(), GetNumFramesToFilter(), InitAndStart(), and Stop().
|
private |
Definition at line 114 of file threads.h.
Referenced by Action(), InitAndStart(), and SetFilterOutputPixFormat().
|
private |
Definition at line 113 of file threads.h.
Referenced by Action(), and InitAndStart().
|
private |
|
private |
Definition at line 112 of file threads.h.
Referenced by InitAndStart(), and Stop().
|
private |