|
vdr-plugin-softhddevice-drm-gles 1.5.9-20e15de
|
cVideoDecoder - VideoDecoder class More...
#include <codec_video.h>
Public Member Functions | |
| cVideoDecoder (int, const char *) | |
| cVideoDecoder constructor | |
| int | Open (enum AVCodecID, AVCodecParameters *, AVRational, bool, int, int) |
| Open the video decoder. | |
| void | Close (void) |
| Close video decoder. | |
| int | SendPacket (const AVPacket *) |
| Send a video packet to be decoded. | |
| int | ReceiveFrame (AVFrame **) |
| Receive a decoded a video frame. | |
| void | FlushBuffers (void) |
| Flush the video decoder. | |
| int | ReopenCodec (enum AVCodecID, AVCodecParameters *, AVRational, int) |
| Reopen the video decoder. | |
| AVCodecContext * | GetContext (void) |
| bool | IsHardwareDecoder (void) |
| const char * | Name (void) |
| int | GetPacketsSent (void) |
| int | GetFramesReceived (void) |
Private Member Functions | |
| int | GetExtraData (const AVPacket *) |
| Get extradata from avpkt. | |
| bool | IsKeyFrame (AVFrame *) |
| Check, if this is a key frame. | |
Private Attributes | |
| AVCodecContext * | m_pVideoCtx = nullptr |
| video codec context | |
| const char * | m_identifier |
| identifier for logging | |
| const char * | m_pCodecString = "unknown" |
| codec (long) name string | |
| cMutex | m_mutex |
| mutex to lock codec context (TODO: is this needed?) | |
| int | m_cntPacketsSent |
| number of packets sent to decoder | |
| int | m_cntFramesReceived |
| number of decoded frames received from decoder | |
| int | m_cntStartKeyFrames |
| number of keyframes arrived while starting the coded (needed for amlogic h264 decoder in order to drop some frames in ReceiveFrame() before sending them to the renderer) | |
| int | m_lastCodedWidth |
| save coded width while closing for a directly reopen | |
| int | m_lastCodedHeight |
| save coded height while closing for a directly reopen | |
| int | m_hardwareQuirks |
| hardware specific quirks needed for decoder | |
| bool | m_isHardwareDecoder = false |
| true, if this is a hardware decoder | |
cVideoDecoder - VideoDecoder class
Definition at line 33 of file codec_video.h.
| cVideoDecoder::cVideoDecoder | ( | int | hardwareQuirks, |
| const char * | identifier | ||
| ) |
cVideoDecoder constructor
| hardwareQuirks | hardware specific quirks for decoder |
| identifier | string to identify decoder for video or pip stream (used within logging only) |
Definition at line 150 of file codec_video.cpp.
References cSoftHdLogger::LogFFmpegCallback().
| void cVideoDecoder::Close | ( | void | ) |
Close video decoder.
Definition at line 319 of file codec_video.cpp.
References L_CODEC, LOGDEBUG2, m_cntFramesReceived, m_cntPacketsSent, m_identifier, m_lastCodedHeight, m_lastCodedWidth, m_mutex, and m_pVideoCtx.
Referenced by cVideoStream::CloseDecoder(), cVideoStream::Exit(), and ReopenCodec().
| void cVideoDecoder::FlushBuffers | ( | void | ) |
Flush the video decoder.
Definition at line 575 of file codec_video.cpp.
References L_CODEC, LOGDEBUG2, m_cntFramesReceived, m_cntPacketsSent, m_identifier, m_mutex, and m_pVideoCtx.
Referenced by cVideoStream::FlushDecoder().
|
inline |
Definition at line 42 of file codec_video.h.
References m_pVideoCtx.
Referenced by cVideoStream::GetVideoSize(), and cVideoStream::RenderFrame().
|
private |
Get extradata from avpkt.
| avpkt | video packet |
Definition at line 341 of file codec_video.cpp.
References LOGERROR, m_identifier, and m_pVideoCtx.
Referenced by SendPacket().
|
inline |
Definition at line 46 of file codec_video.h.
References m_cntFramesReceived.
Referenced by cVideoStream::DecodeInput().
|
inline |
Definition at line 45 of file codec_video.h.
References m_cntPacketsSent.
Referenced by cVideoStream::DecodeInput().
|
inline |
Definition at line 43 of file codec_video.h.
References m_isHardwareDecoder.
Referenced by cVideoStream::DecodeInput(), cVideoStream::FlushDecoder(), and cVideoStream::OpenDecoder().
|
private |
Check, if this is a key frame.
| frame | AVFrame |
Definition at line 592 of file codec_video.cpp.
Referenced by ReceiveFrame().
|
inline |
Definition at line 44 of file codec_video.h.
References m_pCodecString.
Referenced by cVideoStream::OpenDecoder().
| int cVideoDecoder::Open | ( | enum AVCodecID | codecId, |
| AVCodecParameters * | par, | ||
| AVRational | timebase, | ||
| bool | forceSoftwareDecoder, | ||
| int | width, | ||
| int | height | ||
| ) |
Open the video decoder.
| codecId | video codec id |
| par | codec parameters |
| timebase | timebase |
| forceSoftwareDecoder | force software decoding |
| width | force width (only for H264 and if par is not set) |
| height | force height (only for H264 and if par is not set) |
Definition at line 174 of file codec_video.cpp.
References FindHWConfig(), FindHWDecoder(), FindSWDecoder(), GetFormat(), L_CODEC, LOGDEBUG2, LOGERROR, LOGINFO, m_cntFramesReceived, m_cntPacketsSent, m_cntStartKeyFrames, m_hardwareQuirks, m_identifier, m_isHardwareDecoder, m_mutex, m_pCodecString, m_pVideoCtx, Open(), QUIRK_CODEC_DISABLE_H264_HW, and QUIRK_CODEC_DISABLE_MPEG_HW.
Referenced by Open(), cVideoStream::OpenDecoder(), and ReopenCodec().
| int cVideoDecoder::ReceiveFrame | ( | AVFrame ** | frame | ) |
Receive a decoded a video frame.
| [out] | frame | decoded AVFrame |
| instance | instance name for logging |
Definition at line 482 of file codec_video.cpp.
References isInterlacedFrame(), IsKeyFrame(), L_CODEC, L_PACKET, LOGDEBUG2, LOGFATAL, m_cntFramesReceived, m_cntPacketsSent, m_cntStartKeyFrames, m_hardwareQuirks, m_identifier, m_mutex, m_pVideoCtx, QUIRK_CODEC_SKIP_FIRST_FRAMES, QUIRK_CODEC_SKIP_NUM_FRAMES, and Timestamp2String().
Referenced by cVideoStream::DecodeInput().
| int cVideoDecoder::ReopenCodec | ( | enum AVCodecID | codecId, |
| AVCodecParameters * | par, | ||
| AVRational | timebase, | ||
| int | forceSoftwareDecoding | ||
| ) |
Reopen the video decoder.
| codecId | video codec id |
| par | codec parameters |
| timebase | timebase |
| forceSoftwareDecoding | force software decoding |
Definition at line 559 of file codec_video.cpp.
References Close(), L_CODEC, LOGDEBUG2, m_cntFramesReceived, m_cntPacketsSent, m_cntStartKeyFrames, m_identifier, m_lastCodedHeight, m_lastCodedWidth, m_pVideoCtx, and Open().
Referenced by cVideoStream::DecodeInput(), and cVideoStream::FlushDecoder().
| int cVideoDecoder::SendPacket | ( | const AVPacket * | avpkt | ) |
Send a video packet to be decoded.
| avpkt | video packet |
Definition at line 427 of file codec_video.cpp.
References GetExtraData(), L_CODEC, L_PACKET, LOGDEBUG2, m_cntPacketsSent, m_identifier, m_mutex, m_pVideoCtx, and Timestamp2String().
Referenced by cVideoStream::CheckForcingFrameDecode(), and cVideoStream::DecodeInput().
|
private |
number of decoded frames received from decoder
Definition at line 54 of file codec_video.h.
Referenced by Close(), FlushBuffers(), GetFramesReceived(), Open(), ReceiveFrame(), and ReopenCodec().
|
private |
number of packets sent to decoder
Definition at line 53 of file codec_video.h.
Referenced by Close(), FlushBuffers(), GetPacketsSent(), Open(), ReceiveFrame(), ReopenCodec(), and SendPacket().
|
private |
number of keyframes arrived while starting the coded (needed for amlogic h264 decoder in order to drop some frames in ReceiveFrame() before sending them to the renderer)
Definition at line 55 of file codec_video.h.
Referenced by Open(), ReceiveFrame(), and ReopenCodec().
|
private |
hardware specific quirks needed for decoder
Definition at line 60 of file codec_video.h.
Referenced by Open(), and ReceiveFrame().
|
private |
identifier for logging
Definition at line 50 of file codec_video.h.
Referenced by Close(), FlushBuffers(), GetExtraData(), Open(), ReceiveFrame(), ReopenCodec(), and SendPacket().
|
private |
true, if this is a hardware decoder
Definition at line 61 of file codec_video.h.
Referenced by IsHardwareDecoder(), and Open().
|
private |
save coded height while closing for a directly reopen
Definition at line 59 of file codec_video.h.
Referenced by Close(), and ReopenCodec().
|
private |
save coded width while closing for a directly reopen
Definition at line 58 of file codec_video.h.
Referenced by Close(), and ReopenCodec().
|
private |
mutex to lock codec context (TODO: is this needed?)
Definition at line 52 of file codec_video.h.
Referenced by Close(), FlushBuffers(), Open(), ReceiveFrame(), and SendPacket().
|
private |
codec (long) name string
Definition at line 51 of file codec_video.h.
|
private |
video codec context
Definition at line 49 of file codec_video.h.
Referenced by Close(), FlushBuffers(), GetContext(), GetExtraData(), Open(), ReceiveFrame(), ReopenCodec(), and SendPacket().