xbmc
|
Classes | |
struct | CDropControl |
Public Member Functions | |
CDVDVideoCodecFFmpeg (CProcessInfo &processInfo) | |
bool | Open (CDVDStreamInfo &hints, CDVDCodecOptions &options) override |
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. More... | |
bool | AddData (const DemuxPacket &packet) override |
add data, decoder has to consume the entire packet returns true if the packet was consumed or if resubmitting it is useless More... | |
void | Reset () override |
Reset the decoder. More... | |
void | Reopen () override |
Re-open the decoder. More... | |
CDVDVideoCodec::VCReturn | GetPicture (VideoPicture *pVideoPicture) override |
GetPicture controls decoding. More... | |
const char * | GetName () override |
should return codecs name | |
unsigned | GetConvergeCount () override |
How many packets should player remember, so codec can recover should something cause it to flush outside of players control. | |
unsigned | GetAllowedReferences () override |
Number of references to old pictures that are allowed to be retained when calling decode on the next demux packet. | |
bool | GetCodecStats (double &pts, int &droppedFrames, int &skippedPics) override |
For calculation of dropping requirements player asks for some information. More... | |
void | SetCodecControl (int flags) override |
Codec can be informed by player with the following flags: More... | |
IHardwareDecoder * | GetHWAccel () override |
bool | GetPictureCommon (VideoPicture *pVideoPicture) override |
![]() | |
CDVDVideoCodec (CProcessInfo &processInfo) | |
virtual bool | Reconfigure (CDVDStreamInfo &hints) |
Reconfigure the decoder, returns true on success Decoders not capable of running multiple instances may be capable of reconfiguring the running instance. More... | |
virtual void | SetSpeed (int iSpeed) |
will be called by video player indicating the playback speed. More... | |
Protected Member Functions | |
void | Dispose () |
int | FilterOpen (const std::string &filters, bool scale) |
void | FilterClose () |
CDVDVideoCodec::VCReturn | FilterProcess (AVFrame *frame) |
void | SetFilters () |
void | UpdateName () |
bool | SetPictureParams (VideoPicture *pVideoPicture) |
bool | HasHardware () |
void | SetHardware (IHardwareDecoder *hardware) |
Static Protected Member Functions | |
static enum AVPixelFormat | GetFormat (struct AVCodecContext *avctx, const AVPixelFormat *fmt) |
Protected Attributes | |
AVFrame * | m_pFrame = nullptr |
AVFrame * | m_pDecodedFrame = nullptr |
AVCodecContext * | m_pCodecContext = nullptr |
std::shared_ptr< CVideoBufferPoolFFmpeg > | m_videoBufferPool |
std::string | m_filters |
std::string | m_filters_next |
AVFilterGraph * | m_pFilterGraph = nullptr |
AVFilterContext * | m_pFilterIn = nullptr |
AVFilterContext * | m_pFilterOut = nullptr |
AVFrame * | m_pFilterFrame = nullptr |
bool | m_filterEof = false |
bool | m_eof = false |
CDVDVideoPPFFmpeg | m_postProc |
int | m_iPictureWidth = 0 |
int | m_iPictureHeight = 0 |
int | m_iScreenWidth = 0 |
int | m_iScreenHeight = 0 |
int | m_iOrientation = 0 |
std::string | m_name |
int | m_decoderState |
IHardwareDecoder * | m_pHardware = nullptr |
int | m_iLastKeyframe = 0 |
double | m_dts = DVD_NOPTS_VALUE |
bool | m_started = false |
bool | m_startedInput = false |
std::vector< AVPixelFormat > | m_formats |
double | m_decoderPts = DVD_NOPTS_VALUE |
int | m_skippedDeint = 0 |
int | m_droppedFrames = 0 |
bool | m_requestSkipDeint = false |
int | m_codecControlFlags = 0 |
bool | m_interlaced = false |
double | m_DAR = 1.0 |
CDVDStreamInfo | m_hints |
CDVDCodecOptions | m_options |
struct CDVDVideoCodecFFmpeg::CDropControl | m_dropCtrl |
![]() | |
CProcessInfo & | m_processInfo |
Additional Inherited Members | |
![]() | |
enum | VCReturn { VC_NONE = 0, VC_ERROR, VC_FATAL, VC_BUFFER, VC_PICTURE, VC_FLUSHED, VC_NOBUFFER, VC_REOPEN, VC_EOF } |
|
overridevirtual |
add data, decoder has to consume the entire packet returns true if the packet was consumed or if resubmitting it is useless
Implements CDVDVideoCodec.
|
overridevirtual |
For calculation of dropping requirements player asks for some information.
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.
|
overridevirtual |
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.
|
overridevirtual |
Implements ICallbackHWAccel.
|
overridevirtual |
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.
Implements CDVDVideoCodec.
|
overridevirtual |
|
overridevirtual |
Reset the decoder.
Should be the same as calling Dispose and Open after each other
Implements CDVDVideoCodec.
|
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.