vdr-plugin-softhddevice-drm-gles 1.5.9-20e15de
codec_video.h
Go to the documentation of this file.
1
21#ifndef __CODEC_VIDEO_H
22#define __CODEC_VIDEO_H
23
24#include <vdr/thread.h>
25
26extern "C" {
27#include <libavcodec/avcodec.h>
28}
29
34public:
35 cVideoDecoder(int, const char *);
36 int Open(enum AVCodecID, AVCodecParameters *, AVRational, bool, int, int);
37 void Close(void);
38 int SendPacket(const AVPacket *);
39 int ReceiveFrame(AVFrame **);
40 void FlushBuffers(void);
41 int ReopenCodec(enum AVCodecID, AVCodecParameters *, AVRational, int);
42 AVCodecContext *GetContext(void) { return m_pVideoCtx; };
43 bool IsHardwareDecoder(void) { return m_isHardwareDecoder; };
44 const char *Name(void) { return m_pCodecString; };
45 int GetPacketsSent(void) { return m_cntPacketsSent; };
47
48private:
49 AVCodecContext *m_pVideoCtx = nullptr;
50 const char *m_identifier;
51 const char *m_pCodecString = "unknown";
52 cMutex m_mutex;
61 bool m_isHardwareDecoder = false;
62
63 int GetExtraData(const AVPacket *);
64 bool IsKeyFrame(AVFrame *);
65};
66
67#endif
cVideoDecoder - VideoDecoder class
Definition codec_video.h:33
int ReopenCodec(enum AVCodecID, AVCodecParameters *, AVRational, int)
Reopen the video decoder.
int m_lastCodedHeight
save coded height while closing for a directly reopen
Definition codec_video.h:59
bool m_isHardwareDecoder
true, if this is a hardware decoder
Definition codec_video.h:61
AVCodecContext * GetContext(void)
Definition codec_video.h:42
int SendPacket(const AVPacket *)
Send a video packet to be decoded.
int Open(enum AVCodecID, AVCodecParameters *, AVRational, bool, int, int)
Open the video decoder.
int m_cntFramesReceived
number of decoded frames received from decoder
Definition codec_video.h:54
int GetExtraData(const AVPacket *)
Get extradata from avpkt.
int m_cntStartKeyFrames
number of keyframes arrived while starting the coded (needed for amlogic h264 decoder in order to dro...
Definition codec_video.h:55
bool IsHardwareDecoder(void)
Definition codec_video.h:43
int GetFramesReceived(void)
Definition codec_video.h:46
void FlushBuffers(void)
Flush the video decoder.
cMutex m_mutex
mutex to lock codec context (TODO: is this needed?)
Definition codec_video.h:52
AVCodecContext * m_pVideoCtx
video codec context
Definition codec_video.h:49
int m_cntPacketsSent
number of packets sent to decoder
Definition codec_video.h:53
int m_lastCodedWidth
save coded width while closing for a directly reopen
Definition codec_video.h:58
const char * m_pCodecString
codec (long) name string
Definition codec_video.h:51
bool IsKeyFrame(AVFrame *)
Check, if this is a key frame.
const char * m_identifier
identifier for logging
Definition codec_video.h:50
int ReceiveFrame(AVFrame **)
Receive a decoded a video frame.
int GetPacketsSent(void)
Definition codec_video.h:45
const char * Name(void)
Definition codec_video.h:44
void Close(void)
Close video decoder.
int m_hardwareQuirks
hardware specific quirks needed for decoder
Definition codec_video.h:60