kodi
|
Public Types | |
enum | VCReturn { VC_NONE = 0, VC_ERROR, VC_FATAL, VC_BUFFER, VC_PICTURE, VC_FLUSHED, VC_NOBUFFER, VC_REOPEN, VC_EOF } |
Public Member Functions | |
CDVDVideoCodec (CProcessInfo &processInfo) | |
virtual bool | Open (CDVDStreamInfo &hints, CDVDCodecOptions &options)=0 |
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. | |
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 bool | AddData (const DemuxPacket &packet)=0 |
add data, decoder has to consume the entire packet returns true if the packet was consumed or if resubmitting it is useless | |
virtual void | Reset ()=0 |
Reset the decoder. More... | |
virtual VCReturn | GetPicture (VideoPicture *pVideoPicture)=0 |
GetPicture controls decoding. More... | |
virtual void | SetSpeed (int iSpeed) |
will be called by video player indicating the playback speed. More... | |
virtual const char * | GetName ()=0 |
should return codecs name | |
virtual unsigned | GetConvergeCount () |
How many packets should player remember, so codec can recover should something cause it to flush outside of players control. | |
virtual unsigned | GetAllowedReferences () |
Number of references to old pictures that are allowed to be retained when calling decode on the next demux packet. | |
virtual bool | GetCodecStats (double &pts, int &droppedFrames, int &skippedPics) |
For calculation of dropping requirements player asks for some information. More... | |
virtual void | SetCodecControl (int flags) |
Codec can be informed by player with the following flags: More... | |
virtual void | Reopen () |
Re-open the decoder. More... | |
Protected Attributes | |
CProcessInfo & | m_processInfo |
|
inlinevirtual |
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 in CDVDVideoCodecFFmpeg.
|
pure virtual |
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
Implemented in CDVDVideoCodecAndroidMediaCodec, CDVDVideoCodecStarfish, CDVDVideoCodecFFmpeg, CAddonVideoCodec, and CDVDVideoCodecDRMPRIME.
|
inlinevirtual |
Reconfigure the decoder, returns true on success Decoders not capable of running multiple instances may be capable of reconfiguring the running instance.
If Reconfigure returns false, player will close / open the decoder
Reimplemented in CDVDVideoCodecAndroidMediaCodec, CDVDVideoCodecStarfish, and CAddonVideoCodec.
|
inlinevirtual |
|
pure virtual |
Reset the decoder.
Should be the same as calling Dispose and Open after each other
Implemented in CDVDVideoCodecAndroidMediaCodec, CDVDVideoCodecStarfish, CDVDVideoCodecFFmpeg, CAddonVideoCodec, and CDVDVideoCodecDRMPRIME.
|
inlinevirtual |
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 in CDVDVideoCodecAndroidMediaCodec, CDVDVideoCodecStarfish, CDVDVideoCodecFFmpeg, CAddonVideoCodec, and CDVDVideoCodecDRMPRIME.
|
inlinevirtual |
will be called by video player indicating the playback speed.
see DVD_PLAYSPEED_NORMAL, DVD_PLAYSPEED_PAUSE and friends.
Reimplemented in CDVDVideoCodecStarfish.