#include <DVDVideoCodecFFmpeg.h>
|
static enum AVPixelFormat | GetFormat (struct AVCodecContext *avctx, const AVPixelFormat *fmt) |
|
◆ CDVDVideoCodecFFmpeg()
CDVDVideoCodecFFmpeg::CDVDVideoCodecFFmpeg |
( |
CProcessInfo & | processInfo | ) |
|
|
explicit |
◆ ~CDVDVideoCodecFFmpeg()
CDVDVideoCodecFFmpeg::~CDVDVideoCodecFFmpeg |
( |
| ) |
|
|
override |
◆ AddData()
add data, decoder has to consume the entire packet returns true if the packet was consumed or if resubmitting it is useless
- Todo
- : properly handle avpkt side_data. this works around our improper use of the side_data
Implements CDVDVideoCodec.
◆ Dispose()
void CDVDVideoCodecFFmpeg::Dispose |
( |
| ) |
|
|
protected |
◆ FilterClose()
void CDVDVideoCodecFFmpeg::FilterClose |
( |
| ) |
|
|
protected |
◆ FilterOpen()
int CDVDVideoCodecFFmpeg::FilterOpen |
( |
const std::string & | filters, |
|
|
bool | scale ) |
|
protected |
◆ FilterProcess()
◆ GetAllowedReferences()
unsigned CDVDVideoCodecFFmpeg::GetAllowedReferences |
( |
| ) |
|
|
overridevirtual |
Number of references to old pictures that are allowed to be retained when calling decode on the next demux packet
Reimplemented from CDVDVideoCodec.
◆ GetCodecStats()
bool CDVDVideoCodecFFmpeg::GetCodecStats |
( |
double & | pts, |
|
|
int & | droppedFrames, |
|
|
int & | skippedPics ) |
|
overridevirtual |
For calculation of dropping requirements player asks for some information.
- pts : right after decoder, used to detect gaps (dropped frames in decoder)
- droppedFrames : indicates if decoder has dropped a frame -1 means that decoder has no info on this.
- skippedPics : indicates if postproc has skipped a already decoded picture -1 means that decoder has no info on this.
If codec does not implement this method, pts of decoded frame at input video player is used. In case decoder does post-proc and de-interlacing there may be quite some frames queued up between exit decoder and entry player.
Reimplemented from CDVDVideoCodec.
◆ GetConvergeCount()
unsigned CDVDVideoCodecFFmpeg::GetConvergeCount |
( |
| ) |
|
|
overridevirtual |
How many packets should player remember, so codec can recover should something cause it to flush outside of players control
Reimplemented from CDVDVideoCodec.
◆ GetFormat()
enum AVPixelFormat CDVDVideoCodecFFmpeg::GetFormat |
( |
struct AVCodecContext * | avctx, |
|
|
const AVPixelFormat * | fmt ) |
|
staticprotected |
◆ GetHWAccel()
◆ GetName()
const char * CDVDVideoCodecFFmpeg::GetName |
( |
| ) |
|
|
inlineoverridevirtual |
◆ GetPicture()
GetPicture controls decoding. Player calls it on every cycle it can signal a picture, request a buffer, or return none, if nothing applies the data is valid until the next GetPicture return VC_PICTURE
Implements CDVDVideoCodec.
◆ GetPictureCommon()
◆ HasHardware()
bool CDVDVideoCodecFFmpeg::HasHardware |
( |
| ) |
|
|
inlineprotected |
◆ Open()
Open the decoder, returns true on success Decoders not capable of running multiple instances should return false in case there is already a instance open
- Todo
- allow per video setting?
Implements CDVDVideoCodec.
◆ Reopen()
void CDVDVideoCodecFFmpeg::Reopen |
( |
| ) |
|
|
overridevirtual |
Re-open the decoder. Decoder request to re-open
Reimplemented from CDVDVideoCodec.
◆ Reset()
void CDVDVideoCodecFFmpeg::Reset |
( |
| ) |
|
|
overridevirtual |
Reset the decoder. Should be the same as calling Dispose and Open after each other
Implements CDVDVideoCodec.
◆ SetCodecControl()
void CDVDVideoCodecFFmpeg::SetCodecControl |
( |
int | flags | ) |
|
|
overridevirtual |
Codec can be informed by player with the following flags:
DVD_CODEC_CTRL_NO_POSTPROC : if speed is not normal the codec can switch off postprocessing and de-interlacing
DVD_CODEC_CTRL_HURRY : codecs may do postprocessing and de-interlacing. If video buffers in RenderManager are about to run dry, this is signaled to codec. Codec can wait for post-proc to be finished instead of returning empty and getting another packet.
DVD_CODEC_CTRL_DRAIN : instruct decoder to deliver last pictures without requesting new packets
DVD_CODEC_CTRL_DROP : this packet is going to be dropped. decoder is free to use it for decoding
Reimplemented from CDVDVideoCodec.
◆ SetFilters()
void CDVDVideoCodecFFmpeg::SetFilters |
( |
| ) |
|
|
protected |
◆ SetHardware()
◆ SetPictureParams()
◆ UpdateName()
void CDVDVideoCodecFFmpeg::UpdateName |
( |
| ) |
|
|
protected |
◆ m_codecControlFlags
int CDVDVideoCodecFFmpeg::m_codecControlFlags = 0 |
|
protected |
◆ m_DAR
double CDVDVideoCodecFFmpeg::m_DAR = 1.0 |
|
protected |
◆ m_decoderPts
◆ m_decoderState
int CDVDVideoCodecFFmpeg::m_decoderState |
|
protected |
◆ m_dropCtrl
◆ m_droppedFrames
int CDVDVideoCodecFFmpeg::m_droppedFrames = 0 |
|
protected |
◆ m_dts
◆ m_eof
bool CDVDVideoCodecFFmpeg::m_eof = false |
|
protected |
◆ m_filterEof
bool CDVDVideoCodecFFmpeg::m_filterEof = false |
|
protected |
◆ m_filters
std::string CDVDVideoCodecFFmpeg::m_filters |
|
protected |
◆ m_filters_next
std::string CDVDVideoCodecFFmpeg::m_filters_next |
|
protected |
◆ m_formats
std::vector<AVPixelFormat> CDVDVideoCodecFFmpeg::m_formats |
|
protected |
◆ m_hints
◆ m_iLastKeyframe
int CDVDVideoCodecFFmpeg::m_iLastKeyframe = 0 |
|
protected |
◆ m_interlaced
bool CDVDVideoCodecFFmpeg::m_interlaced = false |
|
protected |
◆ m_iOrientation
int CDVDVideoCodecFFmpeg::m_iOrientation = 0 |
|
protected |
◆ m_iPictureHeight
int CDVDVideoCodecFFmpeg::m_iPictureHeight = 0 |
|
protected |
◆ m_iPictureWidth
int CDVDVideoCodecFFmpeg::m_iPictureWidth = 0 |
|
protected |
◆ m_iScreenHeight
int CDVDVideoCodecFFmpeg::m_iScreenHeight = 0 |
|
protected |
◆ m_iScreenWidth
int CDVDVideoCodecFFmpeg::m_iScreenWidth = 0 |
|
protected |
◆ m_name
std::string CDVDVideoCodecFFmpeg::m_name |
|
protected |
◆ m_options
◆ m_pCodecContext
AVCodecContext* CDVDVideoCodecFFmpeg::m_pCodecContext = nullptr |
|
protected |
◆ m_pDecodedFrame
AVFrame* CDVDVideoCodecFFmpeg::m_pDecodedFrame = nullptr |
|
protected |
◆ m_pFilterFrame
AVFrame* CDVDVideoCodecFFmpeg::m_pFilterFrame = nullptr |
|
protected |
◆ m_pFilterGraph
AVFilterGraph* CDVDVideoCodecFFmpeg::m_pFilterGraph = nullptr |
|
protected |
◆ m_pFilterIn
AVFilterContext* CDVDVideoCodecFFmpeg::m_pFilterIn = nullptr |
|
protected |
◆ m_pFilterOut
AVFilterContext* CDVDVideoCodecFFmpeg::m_pFilterOut = nullptr |
|
protected |
◆ m_pFrame
AVFrame* CDVDVideoCodecFFmpeg::m_pFrame = nullptr |
|
protected |
◆ m_pHardware
◆ m_postProc
◆ m_requestSkipDeint
bool CDVDVideoCodecFFmpeg::m_requestSkipDeint = false |
|
protected |
◆ m_skippedDeint
int CDVDVideoCodecFFmpeg::m_skippedDeint = 0 |
|
protected |
◆ m_started
bool CDVDVideoCodecFFmpeg::m_started = false |
|
protected |
◆ m_startedInput
bool CDVDVideoCodecFFmpeg::m_startedInput = false |
|
protected |
◆ m_videoBufferPool
The documentation for this class was generated from the following files: