xbmc
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Friends | List of all members
CDVDDemuxFFmpeg Class Reference
Inheritance diagram for CDVDDemuxFFmpeg:
Inheritance graph
[legend]
Collaboration diagram for CDVDDemuxFFmpeg:
Collaboration graph
[legend]

Public Member Functions

bool Open (const std::shared_ptr< CDVDInputStream > &pInput, bool fileinfo)
 
void Dispose ()
 
bool Reset () override
 
void Flush () override
 
void Abort () override
 
void SetSpeed (int iSpeed) override
 
std::string GetFileName () override
 
DemuxPacketRead () override
 
bool SeekTime (double time, bool backwards=false, double *startpts=NULL) override
 
bool SeekByte (int64_t pos)
 
int GetStreamLength () override
 
CDemuxStreamGetStream (int iStreamId) const override
 Finds stream based on unique id.
 
std::vector< CDemuxStream * > GetStreams () const override
 
int GetNrOfStreams () const override
 
int GetPrograms (std::vector< ProgramInfo > &programs) override
 
void SetProgram (int progId) override
 
bool SeekChapter (int chapter, double *startpts=NULL) override
 
int GetChapterCount () override
 
int GetChapter () override
 
void GetChapterName (std::string &strChapterName, int chapterIdx=-1) override
 
int64_t GetChapterPos (int chapterIdx=-1) override
 
std::string GetStreamCodecName (int iStreamId) override
 
bool Aborted ()
 
- Public Member Functions inherited from CDVDDemux
virtual void FillBuffer (bool mode)
 
virtual CDemuxStreamGetStream (int64_t demuxerId, int iStreamId) const
 
int GetNrOfSubtitleStreams ()
 
virtual std::string GetStreamCodecName (int64_t demuxerId, int iStreamId)
 
virtual void EnableStream (int64_t demuxerId, int id, bool enable)
 
virtual void OpenStream (int64_t demuxerId, int id)
 
virtual void SetVideoResolution (unsigned int width, unsigned int height)
 
int64_t GetDemuxerId ()
 

Public Attributes

AVFormatContext * m_pFormatContext
 
std::shared_ptr< CDVDInputStreamm_pInput
 
AVPacket pkt
 
int result
 

Protected Member Functions

CDemuxStreamAddStream (int streamIdx)
 
void AddStream (int streamIdx, CDemuxStream *stream)
 Adds or updates a demux stream based in ffmpeg id.
 
void CreateStreams (unsigned int program=UINT_MAX)
 
void DisposeStreams ()
 
void ParsePacket (AVPacket *pkt)
 
TRANSPORT_STREAM_STATE TransportStreamAudioState ()
 
TRANSPORT_STREAM_STATE TransportStreamVideoState ()
 
bool IsTransportStreamReady ()
 
void ResetVideoStreams ()
 
AVDictionary * GetFFMpegOptionsFromInput ()
 
double ConvertTimestamp (int64_t pts, int den, int num)
 
void UpdateCurrentPTS ()
 
bool IsProgramChange ()
 
unsigned int HLSSelectProgram ()
 
std::string GetStereoModeFromMetadata (AVDictionary *pMetadata)
 
std::string ConvertCodecToInternalStereoMode (const std::string &mode, const StereoModeConversionMap *conversionMap)
 
void GetL16Parameters (int &channels, int &samplerate)
 
double SelectAspect (AVStream *st, bool &forced)
 
StreamHdrType DetermineHdrType (AVStream *pStream)
 
- Protected Member Functions inherited from CDVDDemux
virtual void EnableStream (int id, bool enable)
 
virtual void OpenStream (int id)
 
int GetNrOfStreams (StreamType streamType)
 

Protected Attributes

CCriticalSection m_critSection
 
std::map< int, CDemuxStream * > m_streams
 
std::map< int, std::unique_ptr< CDemuxParserFFmpeg > > m_parsers
 
AVIOContext * m_ioContext
 
double m_currentPts
 
bool m_bMatroska
 
bool m_bAVI
 
bool m_bSup
 
int m_speed
 
unsigned int m_program
 
unsigned int m_streamsInProgram
 
unsigned int m_newProgram
 
unsigned int m_initialProgramNumber
 
int m_seekStream
 
XbmcThreads::EndTime m_timeout
 
struct {
   AVPacket   pkt
 
   int   result
 
m_pkt
 
bool m_streaminfo
 
bool m_reopen = false
 
bool m_checkTransportStream
 
int m_displayTime = 0
 
double m_dtsAtDisplayTime
 
bool m_seekToKeyFrame = false
 
double m_startTime = 0
 
- Protected Attributes inherited from CDVDDemux
int64_t m_demuxerId
 

Friends

class CDemuxStreamAudioFFmpeg
 
class CDemuxStreamVideoFFmpeg
 
class CDemuxStreamSubtitleFFmpeg
 

Member Function Documentation

◆ AddStream()

CDemuxStream * CDVDDemuxFFmpeg::AddStream ( int  streamIdx)
protected
Todo:
: temporary font file management should be completely removed, by sending font data to the subtitle renderer and using libass ass_add_font to add the fonts directly in memory.

: Matroska v4 support BCP-47 language code with LanguageIETF element that have the priority over the Language element, but this is not currently implemented in to ffmpeg library. Since ffmpeg read only the Language element all tracks will be identified with same language (of Language element). As workaround to allow set the right language code we provide the possibility to set the language code in the title field, this allow to kodi to recognize the right language and select the right track to be played at playback starts.


The documentation for this class was generated from the following files: