|
vdr-plugin-softhddevice-drm-gles 1.7.3-98a2ef7
|
Video Decoder. More...
#include <codec_video.h>
Public Member Functions | |
| cVideoDecoder (const char *) | |
| Create a new video decoder. | |
| int | Open (enum AVCodecID, AVCodecParameters *, AVRational, bool) |
| 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 buffers. | |
| 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. | |
| void | ResetPacketCounter (void) |
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 | |
| std::mutex | m_mutex |
| mutex to lock codec context | |
| int | m_cntPacketsSent |
| number of packets sent to decoder | |
| int | m_cntFramesReceived |
| number of decoded frames received from decoder | |
| bool | m_isHardwareDecoder = false |
| true, if this is a hardware decoder | |
Video Decoder.
FFmpeg based Video Decoder Frontend
Handles:
Definition at line 37 of file codec_video.h.
Create a new video decoder.
| identifier | string to identify decoder for video or pip stream (used within logging only) |
Definition at line 146 of file codec_video.cpp.
References cSoftHdLogger::LogFFmpegCallback().
Close video decoder.
Definition at line 299 of file codec_video.cpp.
References L_CODEC, LOGDEBUG2, m_identifier, m_mutex, m_pVideoCtx, and ResetPacketCounter().
Referenced by cVideoStream::CloseDecoder(), cVideoStream::Exit(), and ReopenCodec().
Flush the video decoder buffers.
Also reset packet sent/ frame received counter
Definition at line 542 of file codec_video.cpp.
References L_CODEC, LOGDEBUG2, m_identifier, m_mutex, m_pVideoCtx, and ResetPacketCounter().
Referenced by cVideoStream::FlushDecoder().
|
inline |
Definition at line 46 of file codec_video.h.
References m_pVideoCtx.
Referenced by cVideoStream::GetVideoSize(), and cVideoStream::RenderFrame().
Get extradata from avpkt.
| avpkt | video packet |
| 0 | extradata set |
| -1 | something went wrong |
Definition at line 319 of file codec_video.cpp.
References LOGERROR, m_identifier, and m_pVideoCtx.
Referenced by SendPacket().
Definition at line 50 of file codec_video.h.
References m_cntFramesReceived.
Referenced by cVideoStream::DecodeInput().
Definition at line 49 of file codec_video.h.
References m_cntPacketsSent.
Referenced by cVideoStream::DecodeInput().
Definition at line 47 of file codec_video.h.
References m_isHardwareDecoder.
Referenced by cVideoStream::DecodeInput(), cVideoStream::FlushDecoder(), and cVideoStream::OpenDecoder().
Definition at line 48 of file codec_video.h.
References m_pCodecString.
Referenced by cVideoStream::OpenDecoder().
| int cVideoDecoder::Open | ( | enum AVCodecID | codecId, |
| AVCodecParameters * | par, | ||
| AVRational | timebase, | ||
| bool | forceSoftwareDecoder | ||
| ) |
Open the video decoder.
| codecId | video codec id |
| par | codec parameters |
| timebase | timebase |
| forceSoftwareDecoder | force software decoding |
| 0 | decoder successfully opend |
| -1 | opening the decoder failed |
Definition at line 167 of file codec_video.cpp.
References av_err2str, FindHWConfig(), FindHWDecoder(), FindSWDecoder(), GetFormat(), L_AV_SYNC, L_CODEC, LOGDEBUG, LOGDEBUG2, LOGERROR, LOGGER, m_identifier, m_isHardwareDecoder, m_mutex, m_pCodecString, m_pVideoCtx, Open(), and ResetPacketCounter().
Referenced by Open(), cVideoStream::OpenDecoder(), and ReopenCodec().
Receive a decoded a video frame.
| [out] | frame | decoded AVFrame |
| instance | instance name for logging |
| 0 | received frame |
| AVERROR(EAGAIN) | get no frame, send avpkt again |
| AVERROR_EOF | EOF, needs flushing |
| AVERROR(EINVAL) | get no frame, something went wrong |
| ret | return other ffmpeg error |
Definition at line 463 of file codec_video.cpp.
References av_err2str, isInterlacedFrame(), L_AV_SYNC, L_CODEC, L_PACKET, LOGDEBUG2, LOGFATAL, LOGGER, m_cntFramesReceived, m_cntPacketsSent, m_identifier, m_mutex, m_pVideoCtx, and Timestamp2StringPts().
Referenced by cVideoStream::ReceiveFrame().
| 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 |
| 0 | success |
| -1 | reopen decoder failed |
Definition at line 526 of file codec_video.cpp.
References Close(), L_CODEC, LOGDEBUG2, m_identifier, m_pVideoCtx, and Open().
Referenced by cVideoStream::DecodeInput(), and cVideoStream::FlushDecoder().
Definition at line 62 of file codec_video.h.
References m_cntFramesReceived, and m_cntPacketsSent.
Referenced by Close(), FlushBuffers(), and Open().
Send a video packet to be decoded.
| avpkt | video packet |
| 0 | packet was sent |
| AVERROR(EAGAIN) | packet was not accepted, first receive frame and send packet again |
| AVERROR(EINVAL) | invalid input or missing m_pVideoCtx |
| ret | other ffmpeg error |
Definition at line 405 of file codec_video.cpp.
References av_err2str, GetExtraData(), L_AV_SYNC, L_CODEC, L_PACKET, LOGDEBUG2, LOGGER, m_cntPacketsSent, m_identifier, m_mutex, m_pVideoCtx, and Timestamp2StringPts().
Referenced by cVideoStream::CheckForcingFrameDecode(), and cVideoStream::SendPacket().
|
private |
number of decoded frames received from decoder
Definition at line 58 of file codec_video.h.
Referenced by GetFramesReceived(), ReceiveFrame(), and ResetPacketCounter().
|
private |
number of packets sent to decoder
Definition at line 57 of file codec_video.h.
Referenced by GetPacketsSent(), ReceiveFrame(), ResetPacketCounter(), and SendPacket().
identifier for logging
Definition at line 54 of file codec_video.h.
Referenced by Close(), FlushBuffers(), GetExtraData(), Open(), ReceiveFrame(), ReopenCodec(), and SendPacket().
true, if this is a hardware decoder
Definition at line 59 of file codec_video.h.
Referenced by IsHardwareDecoder(), and Open().
|
private |
mutex to lock codec context
Definition at line 56 of file codec_video.h.
Referenced by Close(), FlushBuffers(), Open(), ReceiveFrame(), and SendPacket().
codec (long) name string
Definition at line 55 of file codec_video.h.
|
private |
video codec context
Definition at line 53 of file codec_video.h.
Referenced by Close(), FlushBuffers(), GetContext(), GetExtraData(), Open(), ReceiveFrame(), ReopenCodec(), and SendPacket().