MythTV  master
Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Friends | List of all members
AvFormatDecoder Class Reference

A decoder for media files. More...

#include <avformatdecoder.h>

Inheritance diagram for AvFormatDecoder:
Inheritance graph
[legend]
Collaboration diagram for AvFormatDecoder:
Collaboration graph
[legend]

Public Member Functions

 AvFormatDecoder (MythPlayer *parent, const ProgramInfo &pginfo, PlayerFlags flags)
 
 ~AvFormatDecoder () override
 
 AvFormatDecoder (const AvFormatDecoder &)=delete
 
AvFormatDecoderoperator= (const AvFormatDecoder &)=delete
 
void SetEof (bool eof) override
 
MythCodecMapCodecMap (void)
 
void CloseCodecs ()
 
void CloseContext ()
 
void Reset (bool reset_video_data, bool seek_reset, bool reset_file) override
 
int OpenFile (MythMediaBuffer *Buffer, bool novideo, TestBufferVec &testbuf) override
 Open our file and set up or audio and video parameters. More...
 
bool GetFrame (DecodeType Type, bool &Retry) override
 Demux, preprocess and possibly decode a frame of video/audio. More...
 
bool IsLastFrameKey (void) const override
 
void WriteStoredData (MythMediaBuffer *Buffer, bool storevid, std::chrono::milliseconds timecodeOffset) override
 This is a No-op for this class. More...
 
void SetRawAudioState (bool state) override
 This is a No-op for this class. More...
 
bool GetRawAudioState (void) const override
 This is a No-op for this class. More...
 
void SetRawVideoState (bool state) override
 This is a No-op for this class. More...
 
bool GetRawVideoState (void) const override
 This is a No-op for this class. More...
 
long UpdateStoredFrameNum (long frame) override
 This is a No-op for this class. More...
 
QString GetCodecDecoderName (void) const override
 
QString GetRawEncodingType (void) override
 
MythCodecID GetVideoCodecID (void) const override
 
void SetDisablePassThrough (bool disable) override
 Disables AC3/DTS pass through. More...
 
void ForceSetupAudioStream (void) override
 
void AddTextData (unsigned char *buf, int len, int64_t timecode, char type)
 
QString GetTrackDesc (uint Type, uint TrackNo) override
 
int SetTrack (uint Type, int TrackNo) override
 
int ScanStreams (bool novideo)
 
int FindStreamInfo (void)
 
int GetNumChapters () override
 
void GetChapterTimes (QList< std::chrono::seconds > &times) override
 
int GetCurrentChapter (long long framesPlayed) override
 
long long GetChapter (int chapter) override
 
bool DoRewind (long long desiredFrame, bool discardFrames=true) override
 
bool DoFastForward (long long desiredFrame, bool discardFrames=true) override
 Skips ahead or rewinds to desiredFrame. More...
 
void SetIdrOnlyKeyframes (bool value) override
 
std::chrono::milliseconds NormalizeVideoTimecode (std::chrono::milliseconds timecode) override
 
virtual std::chrono::milliseconds NormalizeVideoTimecode (AVStream *st, std::chrono::milliseconds timecode)
 
int GetTeletextDecoderType (void) const override
 
QString GetXDS (const QString &Key) const override
 
QByteArray GetSubHeader (uint TrackNo) override
 
void GetAttachmentData (uint TrackNo, QByteArray &Filename, QByteArray &Data) override
 
bool SetAudioByComponentTag (int Tag) override
 
bool SetVideoByComponentTag (int Tag) override
 
virtual int GetTeletextLanguage (uint Index)
 Returns TeleText language. More...
 
virtual int GetSubtitleLanguage (uint, uint StreamIndex)
 Returns DVD Subtitle language. More...
 
virtual int GetCaptionLanguage (TrackType TrackType, int ServiceNum)
 Return ATSC Closed Caption Language. More...
 
virtual int GetAudioLanguage (uint AudioIndex, uint StreamIndex)
 
virtual AudioTrackType GetAudioTrackType (uint StreamIndex)
 
- Public Member Functions inherited from DecoderBase
 DecoderBase (MythPlayer *parent, const ProgramInfo &pginfo)
 
virtual ~DecoderBase ()
 
void SetRenderFormats (const VideoFrameTypes *RenderFormats)
 
virtual void SetEofState (EofState eof)
 
EofState GetEof (void)
 
void SetSeekSnap (uint64_t snap)
 
uint64_t GetSeekSnap (void) const
 
void SetLiveTVMode (bool live)
 
void SetProgramInfo (const ProgramInfo &pginfo)
 
virtual void SetWatchingRecording (bool mode)
 
MythPlayerGetPlayer ()
 
std::chrono::milliseconds TranslatePositionFrameToMs (long long position, float fallback_framerate, const frm_dir_map_t &cutlist)
 
uint64_t TranslatePositionMsToFrame (std::chrono::milliseconds dur_ms, float fallback_framerate, const frm_dir_map_t &cutlist)
 
float GetVideoAspect (void) const
 
virtual void ClearStoredData (void)
 
virtual double GetFPS (void) const
 
uint GetRawBitrate (void) const
 Returns the estimated bitrate if the video were played at normal speed. More...
 
long long GetFramesRead (void) const
 
long long GetFramesPlayed (void) const
 
void SetFramesPlayed (long long newValue)
 
virtual void ResetPosMap (void)
 
virtual bool SyncPositionMap (void)
 Updates the position map used for skipping frames. More...
 
virtual bool PosMapFromDb (void)
 
virtual bool PosMapFromEnc (void)
 Queries encoder for position map data that has not been committed to the DB yet. More...
 
virtual bool FindPosition (long long desired_value, bool search_adjusted, int &lower_bound, int &upper_bound)
 
uint64_t SavePositionMapDelta (long long first_frame, long long last_frame)
 
void SetTranscoding (bool value)
 
bool IsErrored () const
 
bool HasPositionMap (void) const
 
void SetWaitForChange (void)
 
bool GetWaitForChange (void) const
 
void SetReadAdjust (long long adjust)
 
void SetDecodeAllSubtitles (bool DecodeAll)
 
virtual QStringList GetTracks (uint Type)
 
virtual uint GetTrackCount (uint Type)
 
virtual int GetTrackLanguageIndex (uint Type, uint TrackNo)
 
int GetTrack (uint Type)
 
StreamInfo GetTrackInfo (uint Type, uint TrackNo)
 
int ChangeTrack (uint Type, int Dir)
 
virtual bool InsertTrack (uint Type, const StreamInfo &Info)
 
int NextTrack (uint Type)
 
void SaveTotalDuration (void)
 
void ResetTotalDuration (void)
 
void SaveTotalFrames (void)
 
void TrackTotalDuration (bool track)
 
int GetfpsMultiplier (void) const
 
MythCodecContextGetMythCodecContext (void)
 

Static Public Member Functions

static bool CanHandle (TestBufferVec &testbuf, const QString &filename)
 Perform an av_probe_input_format on the passed data to see if we can decode it with this class. More...
 
static int GetMaxReferenceFrames (AVCodecContext *Context)
 
- Static Public Member Functions inherited from DecoderBase
static uint64_t TranslatePositionAbsToRel (const frm_dir_map_t &deleteMap, uint64_t absPosition, const frm_pos_map_t &map=frm_pos_map_t(), float fallback_ratio=1.0)
 
static uint64_t TranslatePositionRelToAbs (const frm_dir_map_t &deleteMap, uint64_t relPosition, const frm_pos_map_t &map=frm_pos_map_t(), float fallback_ratio=1.0)
 
static uint64_t TranslatePosition (const frm_pos_map_t &map, long long key, float fallback_ratio)
 
static AVPixelFormat GetBestVideoFormat (AVPixelFormat *Formats, const VideoFrameTypes *RenderFormats)
 Find a suitable frame format that is mutually acceptable to the decoder and render device. More...
 

Protected Member Functions

int AutoSelectTrack (uint type) override
 Select best track. More...
 
void ScanATSCCaptionStreams (int av_index)
 
void UpdateATSCCaptionTracks (void)
 
void UpdateCaptionTracksFromStreams (bool check_608, bool check_708)
 
void ScanTeletextCaptions (int av_index)
 
void ScanRawTextCaptions (int av_stream_index)
 
void ScanDSMCCStreams (void)
 Check to see whether there is a Network Boot Ifo sub-descriptor in the PMT which requires the MHEG application to reboot. More...
 
int AutoSelectAudioTrack (void)
 Selects the best audio track. More...
 
int filter_max_ch (const AVFormatContext *ic, const sinfo_vec_t &tracks, const std::vector< int > &fs, enum AVCodecID codecId=AV_CODEC_ID_NONE, int profile=-1)
 
void DecodeDTVCC (const uint8_t *buf, uint buf_size, bool scte)
 
void DecodeCCx08 (const uint8_t *buf, uint buf_size, bool scte)
 
void InitByteContext (bool forceseek=false)
 
void InitVideoCodec (AVStream *stream, AVCodecContext *enc, bool selectedStream=false)
 
void MpegPreProcessPkt (AVStream *stream, AVPacket *pkt)
 Preprocess a packet, setting the video parms if necessary. More...
 
int H264PreProcessPkt (AVStream *stream, AVPacket *pkt)
 
bool PreProcessVideoPacket (AVStream *stream, AVPacket *pkt)
 
virtual bool ProcessVideoPacket (AVStream *stream, AVPacket *pkt, bool &Retry)
 
virtual bool ProcessVideoFrame (AVStream *Stream, AVFrame *AvFrame)
 
bool ProcessAudioPacket (AVStream *stream, AVPacket *pkt, DecodeType decodetype)
 
bool ProcessSubtitlePacket (AVStream *stream, AVPacket *pkt)
 
bool ProcessRawTextPacket (AVPacket *Packet)
 
virtual bool ProcessDataPacket (AVStream *curstream, AVPacket *pkt, DecodeType decodetype)
 
void ProcessVBIDataPacket (const AVStream *stream, const AVPacket *pkt)
 Process ivtv proprietary embedded vertical blanking interval captions. More...
 
void ProcessDVBDataPacket (const AVStream *stream, const AVPacket *pkt)
 Process DVB Teletext. More...
 
void ProcessDSMCCPacket (const AVStream *stream, const AVPacket *pkt)
 Process DSMCC object carousel packet. More...
 
void SeekReset (long long newkey, uint skipFrames, bool doFlush, bool discardFrames) override
 
bool DecoderWillDownmix (const AVCodecContext *ctx)
 
bool DoPassThrough (const AVCodecParameters *par, bool withProfile=true)
 
bool SetupAudioStream (void)
 Reinitializes audio if it needs to be reinitialized. More...
 
void SetupAudioStreamSubIndexes (int streamIndex)
 Reacts to DUAL/STEREO changes on the fly and fix streams. More...
 
void RemoveAudioStreams ()
 remove audio streams from the context used by dvd code during title transitions to remove stale audio streams More...
 
void HandleGopStart (AVPacket *pkt, bool can_reliably_parse_keyframes)
 Update our position map, keyframe distance, and the like. More...
 
bool GenerateDummyVideoFrames (void)
 
bool HasVideo (const AVFormatContext *ic)
 
float GetVideoFrameRate (AVStream *Stream, AVCodecContext *Context, bool Sanitise=false)
 
bool OpenAVCodec (AVCodecContext *avctx, const AVCodec *codec)
 
void UpdateFramesPlayed (void) override
 
bool DoRewindSeek (long long desiredFrame) override
 
void DoFastForwardSeek (long long desiredFrame, bool &needflush) override
 Seeks to the keyframe just before the desiredFrame if exact seeks is enabled, or the frame just after it if exact seeks is not enabled. More...
 
virtual void StreamChangeCheck (void)
 
virtual void PostProcessTracks (void)
 
virtual bool IsValidStream (int)
 
int DecodeAudio (AVCodecContext *ctx, uint8_t *buffer, int &data_size, AVPacket *pkt)
 
virtual int ReadPacket (AVFormatContext *ctx, AVPacket *pkt, bool &storePacket)
 
bool FlagIsSet (PlayerFlags arg)
 
- Protected Member Functions inherited from DecoderBase
void AutoSelectTracks (void)
 
void ResetTracks (void)
 
void FileChanged (void)
 
long long ConditionallyUpdatePosMap (long long desiredFrame)
 
long long GetLastFrameInPosMap (void) const
 
unsigned long GetPositionMapSize (void) const
 
long long GetKey (const PosMapEntry &entry) const
 

Static Protected Member Functions

static void av_update_stream_timings_video (AVFormatContext *ic)
 

Protected Attributes

bool m_isDbIgnored
 
AVCParserm_avcParser {nullptr}
 
AVFormatContext * m_ic {nullptr}
 
MythCodecMap m_codecMap { }
 
URLContext m_readContext {}
 
int m_frameDecoded {0}
 
MythVideoFramem_decodedVideoFrame {nullptr}
 
MythAVFormatBufferm_avfRingBuffer {nullptr}
 
struct SwsContext * m_swsCtx {nullptr}
 
bool m_directRendering {false}
 
bool m_noDtsHack {false}
 
bool m_doRewind {false}
 
bool m_gopSet {false}
 
bool m_seenGop {false}
 A flag to indicate that we've seen a GOP frame. Used in junction with seq_count. More...
 
int m_seqCount {0}
 A counter used to determine if we need to force a call to HandleGopStart. More...
 
QList< AVPacket * > m_storedPackets
 
int m_prevGopPos {0}
 
bool m_gotVideoFrame {false}
 
bool m_hasVideo {false}
 
bool m_needDummyVideoFrames {false}
 
bool m_skipAudio {false}
 
bool m_allowedQuit {false}
 
uint32_t m_startCodeState {0xffffffff}
 
std::chrono::milliseconds m_lastVPts {0ms}
 
std::chrono::milliseconds m_lastAPts {0ms}
 
std::chrono::microseconds m_lastCcPtsu {0ms}
 
std::chrono::milliseconds m_firstVPts {0ms}
 
bool m_firstVPtsInuse {false}
 
int64_t m_faultyPts {0}
 
int64_t m_faultyDts {0}
 
int64_t m_lastPtsForFaultDetection {0}
 
int64_t m_lastDtsForFaultDetection {0}
 
bool m_ptsDetected {false}
 
bool m_reorderedPtsDetected {false}
 
bool m_ptsSelected {true}
 
bool m_useFrameTiming {false}
 
bool m_forceDtsTimestamps {false}
 
PlayerFlags m_playerFlags
 
MythCodecID m_videoCodecId {kCodec_NONE}
 
int m_maxKeyframeDist {-1}
 
int m_averrorCount {0}
 
uint m_ignoreScte {0}
 
uint m_invertScteField {0}
 
uint m_lastScteField {0}
 
CC608Decoderm_ccd608 {nullptr}
 
CC708Decoderm_ccd708 {nullptr}
 
TeletextDecoderm_ttd {nullptr}
 
std::array< bool, 68 > m_ccX08InPmt {}
 Lookup table for whether a stream was seen in the PMT entries 0-3 correspond to CEA-608 CC1 through CC4, while entries 4-67 corresport to CEA-708 streams 0 through 64. More...
 
std::array< bool, 68 > m_ccX08InTracks {}
 Lookup table for whether a stream is represented in the UI entries 0-3 correspond to CEA-608 CC1 through CC4, while entries 4-67 corresport to CEA-708 streams 0 through 64. More...
 
QList< StreamInfom_pmtTracks
 StreamInfo for 608 and 708 Captions seen in the PMT descriptor. More...
 
QList< TrackTypem_pmtTrackTypes
 TrackType (608 or 708) for Captions seen in the PMT descriptor. More...
 
QList< StreamInfom_streamTracks
 StreamInfo for 608 and 708 Captions seen in the caption stream itself but not seen in the PMT. More...
 
QList< TrackTypem_streamTrackTypes
 TrackType (608 or 708) for Captions seen in the caption stream itself but not seen in the PMT. More...
 
InteractiveTVm_itv {nullptr}
 MHEG/MHP decoder. More...
 
uint8_t * m_audioSamples {nullptr}
 
bool m_disablePassthru {false}
 
AudioInfo m_audioIn
 
AudioInfo m_audioOut
 
bool m_processFrames {true}
 
bool m_streamsChanged { false }
 
bool m_resetHardwareDecoders { false }
 
std::chrono::milliseconds m_audioReadAhead {100ms}
 
QRecursiveMutex m_avCodecLock
 
- Protected Attributes inherited from DecoderBase
MythPlayerm_parent {nullptr}
 
ProgramInfom_playbackInfo {nullptr}
 
AudioPlayerm_audio {nullptr}
 
MythMediaBufferm_ringBuffer {nullptr}
 
double m_fps {29.97}
 
int m_fpsMultiplier {1}
 
int m_fpsSkip {0}
 
uint m_bitrate {4000}
 
int m_currentWidth {640}
 
int m_currentHeight {480}
 
float m_currentAspect {1.33333F}
 
long long m_framesPlayed {0}
 
long long m_framesRead {0}
 
uint64_t m_frameCounter {0}
 
AVRational m_totalDuration
 
int m_keyframeDist {-1}
 
long long m_lastKey {0}
 
long long m_indexOffset {0}
 
MythAVCopy m_copyFrame
 
bool m_nextDecodedFrameIsKeyFrame { false }
 
EofState m_atEof {kEofStateNone}
 
bool m_trackTotalDuration {false}
 
bool m_exitAfterDecoded {false}
 
bool m_transcoding {false}
 
bool m_hasFullPositionMap {false}
 
bool m_recordingHasPositionMap {false}
 
bool m_posmapStarted {false}
 
MarkTypes m_positionMapType {MARK_UNSET}
 
QRecursiveMutex m_positionMapLock
 
std::vector< PosMapEntrym_positionMap
 
frm_pos_map_t m_frameToDurMap
 
frm_pos_map_t m_durToFrameMap
 
QDateTime m_lastPositionMapUpdate
 
uint64_t m_seekSnap {UINT64_MAX}
 
bool m_dontSyncPositionMap {false}
 
bool m_livetv {false}
 
bool m_watchingRecording {false}
 
bool m_hasKeyFrameAdjustTable {false}
 
bool m_getRawFrames {false}
 
bool m_getRawVideo {false}
 
bool m_errored {false}
 
bool m_waitingForChange {false}
 
bool m_justAfterChange {false}
 
long long m_readAdjust {0}
 
int m_videoRotation {0}
 
uint m_stereo3D {0}
 
QRecursiveMutex m_trackLock
 
bool m_decodeAllSubtitles { false }
 
std::array< int, kTrackTypeCountm_currentTrack {}
 
std::array< sinfo_vec_t, kTrackTypeCountm_tracks
 
std::array< StreamInfo, kTrackTypeCountm_wantedTrack
 
std::array< StreamInfo, kTrackTypeCountm_selectedTrack
 
std::vector< int > m_languagePreference
 language preferences for auto-selection of streams More...
 
MythCodecContextm_mythCodecCtx { nullptr }
 
MythVideoProfile m_videoDisplayProfile
 
const VideoFrameTypesm_renderFormats { &MythVideoFrame::kDefaultRenderFormats }
 

Friends

void HandleStreamChange (void *data)
 
int get_avf_buffer (struct AVCodecContext *c, AVFrame *pic, int flags)
 
int open_avf (URLContext *h, const char *filename, int flags)
 
int read_avf (URLContext *h, uint8_t *buf, int buf_size)
 
int write_avf (URLContext *h, uint8_t *buf, int buf_size)
 
int64_t seek_avf (URLContext *h, int64_t offset, int whence)
 
int close_avf (URLContext *h)
 

Detailed Description

A decoder for media files.

Definition at line 82 of file avformatdecoder.h.

Constructor & Destructor Documentation

◆ AvFormatDecoder() [1/2]

AvFormatDecoder::AvFormatDecoder ( MythPlayer parent,
const ProgramInfo pginfo,
PlayerFlags  flags 
)

Definition at line 335 of file avformatdecoder.cpp.

◆ ~AvFormatDecoder()

AvFormatDecoder::~AvFormatDecoder ( )
override

Definition at line 365 of file avformatdecoder.cpp.

◆ AvFormatDecoder() [2/2]

AvFormatDecoder::AvFormatDecoder ( const AvFormatDecoder )
delete

Member Function Documentation

◆ operator=()

AvFormatDecoder& AvFormatDecoder::operator= ( const AvFormatDecoder )
delete

◆ SetEof()

void AvFormatDecoder::SetEof ( bool  eof)
overridevirtual

Reimplemented from DecoderBase.

Definition at line 835 of file avformatdecoder.cpp.

Referenced by GetFrame().

◆ CodecMap()

MythCodecMap * AvFormatDecoder::CodecMap ( void  )

◆ CloseCodecs()

void AvFormatDecoder::CloseCodecs ( )

Definition at line 401 of file avformatdecoder.cpp.

Referenced by CloseContext(), and MythBDDecoder::StreamChangeCheck().

◆ CloseContext()

void AvFormatDecoder::CloseContext ( )

Definition at line 415 of file avformatdecoder.cpp.

Referenced by OpenFile(), and ~AvFormatDecoder().

◆ Reset()

void AvFormatDecoder::Reset ( bool  reset_video_data,
bool  seek_reset,
bool  reset_file 
)
overridevirtual

Reimplemented from DecoderBase.

Reimplemented in MythDVDDecoder.

Definition at line 847 of file avformatdecoder.cpp.

Referenced by OpenFile(), MythBDDecoder::Reset(), and MythDVDDecoder::Reset().

◆ CanHandle()

bool AvFormatDecoder::CanHandle ( TestBufferVec testbuf,
const QString &  filename 
)
static

Perform an av_probe_input_format on the passed data to see if we can decode it with this class.

Definition at line 866 of file avformatdecoder.cpp.

Referenced by MythBDPlayer::CreateDecoder(), MythDVDPlayer::CreateDecoder(), and MythPlayer::CreateDecoder().

◆ OpenFile()

int AvFormatDecoder::OpenFile ( MythMediaBuffer Buffer,
bool  novideo,
TestBufferVec testbuf 
)
overridevirtual

Open our file and set up or audio and video parameters.

OpenFile opens a ringbuffer for playback.

OpenFile deletes any existing context then use testbuf to guess at the stream type. It then calls ScanStreams to find any valid streams to decode. If possible a position map is also built for quick skipping.

Parameters
rbufferpointer to a valid ringuffer.
novideoif true then no video is sought in ScanSreams.
testbufTemporary buffer for probing the input.
testbufsizeThe size of the test buffer. The minimum of this value or kDecoderProbeBufferSize will be used.

Implements DecoderBase.

Definition at line 957 of file avformatdecoder.cpp.

◆ GetFrame()

bool AvFormatDecoder::GetFrame ( DecodeType  Type,
bool Retry 
)
overridevirtual

Demux, preprocess and possibly decode a frame of video/audio.

Implements DecoderBase.

Reimplemented in MythDVDDecoder.

Definition at line 4819 of file avformatdecoder.cpp.

Referenced by MythDVDDecoder::GetFrame(), and SeekReset().

◆ IsLastFrameKey()

bool AvFormatDecoder::IsLastFrameKey ( void  ) const
inlineoverridevirtual

Implements DecoderBase.

Definition at line 114 of file avformatdecoder.h.

◆ WriteStoredData()

void AvFormatDecoder::WriteStoredData ( MythMediaBuffer Buffer,
bool  storevid,
std::chrono::milliseconds  timecodeOffset 
)
inlineoverridevirtual

This is a No-op for this class.

Implements DecoderBase.

Definition at line 117 of file avformatdecoder.h.

◆ SetRawAudioState()

void AvFormatDecoder::SetRawAudioState ( bool  state)
inlineoverridevirtual

This is a No-op for this class.

Reimplemented from DecoderBase.

Definition at line 122 of file avformatdecoder.h.

◆ GetRawAudioState()

bool AvFormatDecoder::GetRawAudioState ( void  ) const
inlineoverridevirtual

This is a No-op for this class.

Reimplemented from DecoderBase.

Definition at line 125 of file avformatdecoder.h.

◆ SetRawVideoState()

void AvFormatDecoder::SetRawVideoState ( bool  state)
inlineoverridevirtual

This is a No-op for this class.

Reimplemented from DecoderBase.

Definition at line 128 of file avformatdecoder.h.

◆ GetRawVideoState()

bool AvFormatDecoder::GetRawVideoState ( void  ) const
inlineoverridevirtual

This is a No-op for this class.

Reimplemented from DecoderBase.

Definition at line 131 of file avformatdecoder.h.

◆ UpdateStoredFrameNum()

long AvFormatDecoder::UpdateStoredFrameNum ( long  frame)
inlineoverridevirtual

This is a No-op for this class.

Implements DecoderBase.

Definition at line 134 of file avformatdecoder.h.

◆ GetCodecDecoderName()

QString AvFormatDecoder::GetCodecDecoderName ( void  ) const
overridevirtual

Implements DecoderBase.

Definition at line 5181 of file avformatdecoder.cpp.

Referenced by ScanStreams().

◆ GetRawEncodingType()

QString AvFormatDecoder::GetRawEncodingType ( void  )
overridevirtual

Reimplemented from DecoderBase.

Definition at line 5186 of file avformatdecoder.cpp.

◆ GetVideoCodecID()

MythCodecID AvFormatDecoder::GetVideoCodecID ( void  ) const
inlineoverridevirtual

Implements DecoderBase.

Definition at line 138 of file avformatdecoder.h.

Referenced by MythMMALContext::GetBuffer().

◆ SetDisablePassThrough()

void AvFormatDecoder::SetDisablePassThrough ( bool  disable)
overridevirtual

Disables AC3/DTS pass through.

Reimplemented from DecoderBase.

Definition at line 5194 of file avformatdecoder.cpp.

◆ ForceSetupAudioStream()

void AvFormatDecoder::ForceSetupAudioStream ( void  )
overridevirtual

Reimplemented from DecoderBase.

Definition at line 5213 of file avformatdecoder.cpp.

Referenced by SetDisablePassThrough().

◆ AddTextData()

void AvFormatDecoder::AddTextData ( unsigned char *  buf,
int  len,
int64_t  timecode,
char  type 
)

◆ GetTrackDesc()

QString AvFormatDecoder::GetTrackDesc ( uint  Type,
uint  TrackNo 
)
overridevirtual

Reimplemented from DecoderBase.

Definition at line 4101 of file avformatdecoder.cpp.

◆ SetTrack()

int AvFormatDecoder::SetTrack ( uint  Type,
int  TrackNo 
)
overridevirtual

Reimplemented from DecoderBase.

Definition at line 4089 of file avformatdecoder.cpp.

Referenced by MythDVDDecoder::PostProcessTracks(), and SetAudioByComponentTag().

◆ ScanStreams()

int AvFormatDecoder::ScanStreams ( bool  novideo)

◆ FindStreamInfo()

int AvFormatDecoder::FindStreamInfo ( void  )

Definition at line 928 of file avformatdecoder.cpp.

Referenced by OpenFile(), and MythBDDecoder::StreamChangeCheck().

◆ GetNumChapters()

int AvFormatDecoder::GetNumChapters ( )
overridevirtual

Reimplemented from DecoderBase.

Definition at line 495 of file avformatdecoder.cpp.

Referenced by GetChapter(), GetChapterTimes(), and GetCurrentChapter().

◆ GetChapterTimes()

void AvFormatDecoder::GetChapterTimes ( QList< std::chrono::seconds > &  times)
overridevirtual

Reimplemented from DecoderBase.

Definition at line 502 of file avformatdecoder.cpp.

◆ GetCurrentChapter()

int AvFormatDecoder::GetCurrentChapter ( long long  framesPlayed)
overridevirtual

Reimplemented from DecoderBase.

Definition at line 519 of file avformatdecoder.cpp.

◆ GetChapter()

long long AvFormatDecoder::GetChapter ( int  chapter)
overridevirtual

Reimplemented from DecoderBase.

Definition at line 543 of file avformatdecoder.cpp.

◆ DoRewind()

bool AvFormatDecoder::DoRewind ( long long  desiredFrame,
bool  discardFrames = true 
)
overridevirtual

Reimplemented from DecoderBase.

Definition at line 559 of file avformatdecoder.cpp.

◆ DoFastForward()

bool AvFormatDecoder::DoFastForward ( long long  desiredFrame,
bool  discardFrames = true 
)
overridevirtual

Skips ahead or rewinds to desiredFrame.

If discardFrames is true and cached frames are released and playback continues at the desiredFrame, if it is not any interviening frames between the last frame already in the buffer and the desiredFrame are released, but none of the frames decoded at the time this is called are released.

Reimplemented from DecoderBase.

Definition at line 573 of file avformatdecoder.cpp.

Referenced by DoRewind().

◆ SetIdrOnlyKeyframes()

void AvFormatDecoder::SetIdrOnlyKeyframes ( bool  value)
inlineoverridevirtual

Reimplemented from DecoderBase.

Definition at line 156 of file avformatdecoder.h.

Referenced by AvFormatDecoder().

◆ NormalizeVideoTimecode() [1/2]

std::chrono::milliseconds AvFormatDecoder::NormalizeVideoTimecode ( std::chrono::milliseconds  timecode)
overridevirtual

Reimplemented from DecoderBase.

Definition at line 439 of file avformatdecoder.cpp.

Referenced by ProcessVideoFrame().

◆ NormalizeVideoTimecode() [2/2]

std::chrono::milliseconds AvFormatDecoder::NormalizeVideoTimecode ( AVStream *  st,
std::chrono::milliseconds  timecode 
)
virtual

Definition at line 473 of file avformatdecoder.cpp.

◆ GetTeletextDecoderType()

int AvFormatDecoder::GetTeletextDecoderType ( void  ) const
overridevirtual

Reimplemented from DecoderBase.

Definition at line 4180 of file avformatdecoder.cpp.

◆ GetXDS()

QString AvFormatDecoder::GetXDS ( const QString &  Key) const
overridevirtual

Reimplemented from DecoderBase.

Definition at line 4185 of file avformatdecoder.cpp.

◆ GetSubHeader()

QByteArray AvFormatDecoder::GetSubHeader ( uint  TrackNo)
overridevirtual

Reimplemented from DecoderBase.

Definition at line 4190 of file avformatdecoder.cpp.

◆ GetAttachmentData()

void AvFormatDecoder::GetAttachmentData ( uint  TrackNo,
QByteArray &  Filename,
QByteArray &  Data 
)
overridevirtual

Reimplemented from DecoderBase.

Definition at line 4202 of file avformatdecoder.cpp.

◆ SetAudioByComponentTag()

bool AvFormatDecoder::SetAudioByComponentTag ( int  Tag)
overridevirtual

Reimplemented from DecoderBase.

Definition at line 4216 of file avformatdecoder.cpp.

Referenced by OpenFile().

◆ SetVideoByComponentTag()

bool AvFormatDecoder::SetVideoByComponentTag ( int  Tag)
overridevirtual

Reimplemented from DecoderBase.

Definition at line 4229 of file avformatdecoder.cpp.

Referenced by OpenFile().

◆ GetTeletextLanguage()

int AvFormatDecoder::GetTeletextLanguage ( uint  Index)
virtual

Returns TeleText language.

Definition at line 2569 of file avformatdecoder.cpp.

Referenced by MythCCExtractorPlayer::ProcessTeletext().

◆ GetSubtitleLanguage()

int AvFormatDecoder::GetSubtitleLanguage ( uint  ,
uint  StreamIndex 
)
virtual

Returns DVD Subtitle language.

Reimplemented in MythBDDecoder.

Definition at line 2579 of file avformatdecoder.cpp.

Referenced by GetAudioLanguage(), MythCCExtractorPlayer::ProcessDVBSubtitles(), and ScanStreams().

◆ GetCaptionLanguage()

int AvFormatDecoder::GetCaptionLanguage ( TrackType  TrackType,
int  ServiceNum 
)
virtual

◆ GetAudioLanguage()

int AvFormatDecoder::GetAudioLanguage ( uint  AudioIndex,
uint  StreamIndex 
)
virtual

Reimplemented in MythDVDDecoder, and MythBDDecoder.

Definition at line 2616 of file avformatdecoder.cpp.

Referenced by ScanStreams().

◆ GetAudioTrackType()

AudioTrackType AvFormatDecoder::GetAudioTrackType ( uint  StreamIndex)
virtual

Reimplemented in MythDVDDecoder.

Definition at line 2621 of file avformatdecoder.cpp.

Referenced by MythDVDDecoder::GetAudioTrackType(), and ScanStreams().

◆ GetMaxReferenceFrames()

int AvFormatDecoder::GetMaxReferenceFrames ( AVCodecContext *  Context)
static

◆ AutoSelectTrack()

int AvFormatDecoder::AutoSelectTrack ( uint  Type)
overrideprotectedvirtual

Select best track.

In case there's only one track available, always choose it.

If there is a user selected track we try to find it.

If we can't find the user selected track we try to picked according to the ISO639Language[0..] settings.

In case there are no ISOLanguage[0..] settings, or no preferred language is found, the first found track stream is chosen

Returns
track if a track was selected, -1 otherwise

Reimplemented from DecoderBase.

Definition at line 4249 of file avformatdecoder.cpp.

◆ ScanATSCCaptionStreams()

void AvFormatDecoder::ScanATSCCaptionStreams ( int  av_index)
protected

Definition at line 1665 of file avformatdecoder.cpp.

Referenced by ScanStreams(), and UpdateCaptionTracksFromStreams().

◆ UpdateATSCCaptionTracks()

void AvFormatDecoder::UpdateATSCCaptionTracks ( void  )
protected

Definition at line 1744 of file avformatdecoder.cpp.

Referenced by ScanStreams(), and UpdateCaptionTracksFromStreams().

◆ UpdateCaptionTracksFromStreams()

void AvFormatDecoder::UpdateCaptionTracksFromStreams ( bool  check_608,
bool  check_708 
)
protected

Definition at line 2930 of file avformatdecoder.cpp.

Referenced by DecodeCCx08(), and ProcessVBIDataPacket().

◆ ScanTeletextCaptions()

void AvFormatDecoder::ScanTeletextCaptions ( int  av_index)
protected

Definition at line 1811 of file avformatdecoder.cpp.

Referenced by ScanStreams().

◆ ScanRawTextCaptions()

void AvFormatDecoder::ScanRawTextCaptions ( int  av_stream_index)
protected

Definition at line 1868 of file avformatdecoder.cpp.

Referenced by ScanStreams().

◆ ScanDSMCCStreams()

void AvFormatDecoder::ScanDSMCCStreams ( void  )
protected

Check to see whether there is a Network Boot Ifo sub-descriptor in the PMT which requires the MHEG application to reboot.

Definition at line 1891 of file avformatdecoder.cpp.

Referenced by ScanStreams().

◆ AutoSelectAudioTrack()

int AvFormatDecoder::AutoSelectAudioTrack ( void  )
protected

Selects the best audio track.

It is primarily needed for DVB recordings

This function will select the best audio track available using the following criteria, in order of decreasing preference:

1) The stream last selected by the user, which is recalled as the Nth stream in the preferred language or the Nth substream when audio is in dual language format (each channel contains a different language track) If it cannot be located we attempt to find a stream in the same language.

2) If we cannot reselect the last user selected stream, then for each preferred language from most preferred to least preferred, we try to find a new stream based on the algorithm below.

3) If we cannot select a stream in a preferred language we try to select a stream irrespective of language based on the algorithm below.

When searching for a new stream (ie. options 2 and 3 above), the following search is carried out in order:

i) If DTS passthrough is enabled then the DTS track with the greatest number of audio channels is selected (the first will be chosen if there are several the same). If DTS passthrough is not enabled this step will be skipped because internal DTS decoding is not currently supported.

ii) If no DTS track is chosen, the AC3 track with the greatest number of audio channels is selected (the first will be chosen if there are several the same). Internal decoding of AC3 is supported, so this will be used irrespective of whether AC3 passthrough is enabled.

iii) Lastly the track with the greatest number of audio channels irrespective of type will be selected.

Returns
track if a track was selected, -1 otherwise

Definition at line 4363 of file avformatdecoder.cpp.

Referenced by AutoSelectTrack(), and ProcessAudioPacket().

◆ filter_max_ch()

int AvFormatDecoder::filter_max_ch ( const AVFormatContext *  ic,
const sinfo_vec_t tracks,
const std::vector< int > &  fs,
enum AVCodecID  codecId = AV_CODEC_ID_NONE,
int  profile = -1 
)
protected

Definition at line 4287 of file avformatdecoder.cpp.

Referenced by AutoSelectAudioTrack().

◆ DecodeDTVCC()

void AvFormatDecoder::DecodeDTVCC ( const uint8_t *  buf,
uint  buf_size,
bool  scte 
)
protected

Definition at line 2836 of file avformatdecoder.cpp.

Referenced by ProcessVideoFrame().

◆ DecodeCCx08()

void AvFormatDecoder::DecodeCCx08 ( const uint8_t *  buf,
uint  buf_size,
bool  scte 
)
protected

Definition at line 2861 of file avformatdecoder.cpp.

Referenced by DecodeDTVCC(), and ProcessVideoFrame().

◆ InitByteContext()

void AvFormatDecoder::InitByteContext ( bool  forceseek = false)
protected

Definition at line 893 of file avformatdecoder.cpp.

Referenced by OpenFile().

◆ InitVideoCodec()

void AvFormatDecoder::InitVideoCodec ( AVStream *  stream,
AVCodecContext *  enc,
bool  selectedStream = false 
)
protected

Definition at line 1477 of file avformatdecoder.cpp.

Referenced by ScanStreams().

◆ MpegPreProcessPkt()

void AvFormatDecoder::MpegPreProcessPkt ( AVStream *  stream,
AVPacket *  pkt 
)
protected

Preprocess a packet, setting the video parms if necessary.

Definition at line 3119 of file avformatdecoder.cpp.

Referenced by PreProcessVideoPacket().

◆ H264PreProcessPkt()

int AvFormatDecoder::H264PreProcessPkt ( AVStream *  stream,
AVPacket *  pkt 
)
protected

Definition at line 3219 of file avformatdecoder.cpp.

Referenced by PreProcessVideoPacket().

◆ PreProcessVideoPacket()

bool AvFormatDecoder::PreProcessVideoPacket ( AVStream *  stream,
AVPacket *  pkt 
)
protected

Definition at line 3327 of file avformatdecoder.cpp.

Referenced by GetFrame().

◆ ProcessVideoPacket()

bool AvFormatDecoder::ProcessVideoPacket ( AVStream *  stream,
AVPacket *  pkt,
bool Retry 
)
protectedvirtual

Reimplemented in MythDVDDecoder.

Definition at line 3386 of file avformatdecoder.cpp.

Referenced by GetFrame(), and MythDVDDecoder::ProcessVideoPacket().

◆ ProcessVideoFrame()

bool AvFormatDecoder::ProcessVideoFrame ( AVStream *  Stream,
AVFrame AvFrame 
)
protectedvirtual

Reimplemented in MythDVDDecoder.

Definition at line 3558 of file avformatdecoder.cpp.

Referenced by MythDVDDecoder::ProcessVideoFrame(), and ProcessVideoPacket().

◆ ProcessAudioPacket()

bool AvFormatDecoder::ProcessAudioPacket ( AVStream *  stream,
AVPacket *  pkt,
DecodeType  decodetype 
)
protected

Definition at line 4602 of file avformatdecoder.cpp.

Referenced by GetFrame().

◆ ProcessSubtitlePacket()

bool AvFormatDecoder::ProcessSubtitlePacket ( AVStream *  stream,
AVPacket *  pkt 
)
protected

Definition at line 3959 of file avformatdecoder.cpp.

Referenced by GetFrame().

◆ ProcessRawTextPacket()

bool AvFormatDecoder::ProcessRawTextPacket ( AVPacket *  Packet)
protected

Definition at line 4031 of file avformatdecoder.cpp.

Referenced by GetFrame().

◆ ProcessDataPacket()

bool AvFormatDecoder::ProcessDataPacket ( AVStream *  curstream,
AVPacket *  pkt,
DecodeType  decodetype 
)
protectedvirtual

Reimplemented in MythDVDDecoder.

Definition at line 4056 of file avformatdecoder.cpp.

Referenced by GetFrame(), and MythDVDDecoder::ProcessDataPacket().

◆ ProcessVBIDataPacket()

void AvFormatDecoder::ProcessVBIDataPacket ( const AVStream *  stream,
const AVPacket *  pkt 
)
protected

Process ivtv proprietary embedded vertical blanking interval captions.

See also
CC608Decoder, TeletextDecoder

Definition at line 3792 of file avformatdecoder.cpp.

Referenced by ProcessDataPacket().

◆ ProcessDVBDataPacket()

void AvFormatDecoder::ProcessDVBDataPacket ( const AVStream *  stream,
const AVPacket *  pkt 
)
protected

Process DVB Teletext.

See also
TeletextDecoder

Definition at line 3878 of file avformatdecoder.cpp.

Referenced by GetFrame(), and ProcessDataPacket().

◆ ProcessDSMCCPacket()

void AvFormatDecoder::ProcessDSMCCPacket ( const AVStream *  stream,
const AVPacket *  pkt 
)
protected

Process DSMCC object carousel packet.

Definition at line 3921 of file avformatdecoder.cpp.

Referenced by ProcessDataPacket().

◆ SeekReset()

void AvFormatDecoder::SeekReset ( long long  newkey,
uint  skipFrames,
bool  doFlush,
bool  discardFrames 
)
overrideprotectedvirtual

Reimplemented from DecoderBase.

Definition at line 692 of file avformatdecoder.cpp.

Referenced by DoFastForward(), MythBDDecoder::Reset(), MythDVDDecoder::Reset(), Reset(), and StreamChangeCheck().

◆ DecoderWillDownmix()

bool AvFormatDecoder::DecoderWillDownmix ( const AVCodecContext *  ctx)
inlineprotected

Definition at line 5219 of file avformatdecoder.cpp.

Referenced by ProcessAudioPacket(), and SetupAudioStream().

◆ DoPassThrough()

bool AvFormatDecoder::DoPassThrough ( const AVCodecParameters *  par,
bool  withProfile = true 
)
protected

◆ SetupAudioStream()

bool AvFormatDecoder::SetupAudioStream ( void  )
protected

Reinitializes audio if it needs to be reinitialized.

Returns
true if audio changed, false otherwise

Definition at line 5266 of file avformatdecoder.cpp.

Referenced by AutoSelectAudioTrack(), ForceSetupAudioStream(), and SetTrack().

◆ SetupAudioStreamSubIndexes()

void AvFormatDecoder::SetupAudioStreamSubIndexes ( int  streamIndex)
protected

Reacts to DUAL/STEREO changes on the fly and fix streams.

This function should be called when a switch between dual and stereo mpeg audio is detected. Such changes can and will happen at any time.

After this method returns, a new audio stream should be selected using AvFormatDecoder::autoSelectSubtitleTrack().

Parameters
streamIndexav_stream_index of the stream that has changed

Definition at line 2666 of file avformatdecoder.cpp.

Referenced by ProcessAudioPacket().

◆ RemoveAudioStreams()

void AvFormatDecoder::RemoveAudioStreams ( )
protected

remove audio streams from the context used by dvd code during title transitions to remove stale audio streams

Definition at line 2725 of file avformatdecoder.cpp.

Referenced by ScanStreams().

◆ HandleGopStart()

void AvFormatDecoder::HandleGopStart ( AVPacket *  pkt,
bool  can_reliably_parse_keyframes 
)
protected

Update our position map, keyframe distance, and the like.

Called for key frame packets.

Definition at line 2999 of file avformatdecoder.cpp.

Referenced by H264PreProcessPkt(), MpegPreProcessPkt(), and PreProcessVideoPacket().

◆ GenerateDummyVideoFrames()

bool AvFormatDecoder::GenerateDummyVideoFrames ( void  )
protected

Definition at line 5156 of file avformatdecoder.cpp.

Referenced by GetFrame(), and ProcessDataPacket().

◆ HasVideo()

bool AvFormatDecoder::HasVideo ( const AVFormatContext *  ic)
protected

Definition at line 5130 of file avformatdecoder.cpp.

Referenced by GetFrame().

◆ GetVideoFrameRate()

float AvFormatDecoder::GetVideoFrameRate ( AVStream *  Stream,
AVCodecContext *  Context,
bool  Sanitise = false 
)
protected

◆ av_update_stream_timings_video()

void AvFormatDecoder::av_update_stream_timings_video ( AVFormatContext *  ic)
staticprotected

Definition at line 5418 of file avformatdecoder.cpp.

Referenced by OpenFile().

◆ OpenAVCodec()

bool AvFormatDecoder::OpenAVCodec ( AVCodecContext *  avctx,
const AVCodec *  codec 
)
protected

Definition at line 2524 of file avformatdecoder.cpp.

Referenced by ScanStreams().

◆ UpdateFramesPlayed()

void AvFormatDecoder::UpdateFramesPlayed ( void  )
overrideprotectedvirtual

Reimplemented from DecoderBase.

Reimplemented in MythDVDDecoder.

Definition at line 2553 of file avformatdecoder.cpp.

◆ DoRewindSeek()

bool AvFormatDecoder::DoRewindSeek ( long long  desiredFrame)
overrideprotectedvirtual

Reimplemented from DecoderBase.

Reimplemented in MythDVDDecoder.

Definition at line 2558 of file avformatdecoder.cpp.

◆ DoFastForwardSeek()

void AvFormatDecoder::DoFastForwardSeek ( long long  desiredFrame,
bool needflush 
)
overrideprotectedvirtual

Seeks to the keyframe just before the desiredFrame if exact seeks is enabled, or the frame just after it if exact seeks is not enabled.

The seek is not made if framesPlayed is greater than the keyframe this would jump too. This means that frame-by-frame seeking after a keyframe must be done elsewhere.

If the seek is made the needflush parameter is set.

Parameters
desiredFrameframe we are attempting to seek to.
needflushset to true if a seek is made.

Reimplemented from DecoderBase.

Reimplemented in MythDVDDecoder.

Definition at line 2563 of file avformatdecoder.cpp.

◆ StreamChangeCheck()

void AvFormatDecoder::StreamChangeCheck ( void  )
protectedvirtual

Reimplemented in MythDVDDecoder, and MythBDDecoder.

Definition at line 5112 of file avformatdecoder.cpp.

Referenced by GetFrame().

◆ PostProcessTracks()

virtual void AvFormatDecoder::PostProcessTracks ( void  )
inlineprotectedvirtual

Reimplemented in MythDVDDecoder.

Definition at line 249 of file avformatdecoder.h.

Referenced by ScanStreams().

◆ IsValidStream()

virtual bool AvFormatDecoder::IsValidStream ( int  )
inlineprotectedvirtual

Reimplemented in MythBDDecoder.

Definition at line 250 of file avformatdecoder.h.

Referenced by MythBDDecoder::IsValidStream(), and ScanStreams().

◆ DecodeAudio()

int AvFormatDecoder::DecodeAudio ( AVCodecContext *  ctx,
uint8_t *  buffer,
int &  data_size,
AVPacket *  pkt 
)
protected

◆ ReadPacket()

int AvFormatDecoder::ReadPacket ( AVFormatContext *  ctx,
AVPacket *  pkt,
bool storePacket 
)
protectedvirtual

Reimplemented in MythDVDDecoder, and MythBDDecoder.

Definition at line 5122 of file avformatdecoder.cpp.

Referenced by GetFrame().

◆ FlagIsSet()

bool AvFormatDecoder::FlagIsSet ( PlayerFlags  arg)
inlineprotected

Definition at line 257 of file avformatdecoder.h.

Referenced by InitVideoCodec(), ProcessVideoFrame(), and ScanStreams().

Friends And Related Function Documentation

◆ HandleStreamChange

void HandleStreamChange ( void *  data)
friend

Definition at line 915 of file avformatdecoder.cpp.

Referenced by OpenFile().

◆ get_avf_buffer

int get_avf_buffer ( struct AVCodecContext *  c,
AVFrame pic,
int  flags 
)
friend

Definition at line 2747 of file avformatdecoder.cpp.

Referenced by InitVideoCodec().

◆ open_avf

int open_avf ( URLContext *  h,
const char *  filename,
int  flags 
)
friend

◆ read_avf

int read_avf ( URLContext *  h,
uint8_t *  buf,
int  buf_size 
)
friend

◆ write_avf

int write_avf ( URLContext *  h,
uint8_t *  buf,
int  buf_size 
)
friend

◆ seek_avf

int64_t seek_avf ( URLContext *  h,
int64_t  offset,
int  whence 
)
friend

◆ close_avf

int close_avf ( URLContext *  h)
friend

Member Data Documentation

◆ m_isDbIgnored

bool AvFormatDecoder::m_isDbIgnored
protected

Definition at line 259 of file avformatdecoder.h.

Referenced by OpenFile(), and ScanStreams().

◆ m_avcParser

AVCParser* AvFormatDecoder::m_avcParser {nullptr}
protected

◆ m_ic

AVFormatContext* AvFormatDecoder::m_ic {nullptr}
protected

◆ m_codecMap

MythCodecMap AvFormatDecoder::m_codecMap { }
protected

◆ m_readContext

URLContext AvFormatDecoder::m_readContext {}
protected

Definition at line 268 of file avformatdecoder.h.

Referenced by InitByteContext().

◆ m_frameDecoded

int AvFormatDecoder::m_frameDecoded {0}
protected

Definition at line 270 of file avformatdecoder.h.

Referenced by GetFrame().

◆ m_decodedVideoFrame

MythVideoFrame* AvFormatDecoder::m_decodedVideoFrame {nullptr}
protected

◆ m_avfRingBuffer

MythAVFormatBuffer* AvFormatDecoder::m_avfRingBuffer {nullptr}
protected

Definition at line 272 of file avformatdecoder.h.

Referenced by InitByteContext(), OpenFile(), and ~AvFormatDecoder().

◆ m_swsCtx

struct SwsContext* AvFormatDecoder::m_swsCtx {nullptr}
protected

Definition at line 274 of file avformatdecoder.h.

Referenced by ProcessVideoFrame(), and ~AvFormatDecoder().

◆ m_directRendering

bool AvFormatDecoder::m_directRendering {false}
protected

Definition at line 275 of file avformatdecoder.h.

Referenced by InitVideoCodec(), and ProcessVideoFrame().

◆ m_noDtsHack

bool AvFormatDecoder::m_noDtsHack {false}
protected

Definition at line 277 of file avformatdecoder.h.

Referenced by DoFastForward(), and SeekReset().

◆ m_doRewind

bool AvFormatDecoder::m_doRewind {false}
protected

Definition at line 278 of file avformatdecoder.h.

Referenced by DoFastForward(), and DoRewind().

◆ m_gopSet

bool AvFormatDecoder::m_gopSet {false}
protected

◆ m_seenGop

bool AvFormatDecoder::m_seenGop {false}
protected

A flag to indicate that we've seen a GOP frame. Used in junction with seq_count.

Definition at line 282 of file avformatdecoder.h.

Referenced by MpegPreProcessPkt(), PreProcessVideoPacket(), and Reset().

◆ m_seqCount

int AvFormatDecoder::m_seqCount {0}
protected

A counter used to determine if we need to force a call to HandleGopStart.

Definition at line 284 of file avformatdecoder.h.

Referenced by MpegPreProcessPkt(), PreProcessVideoPacket(), and Reset().

◆ m_storedPackets

QList<AVPacket*> AvFormatDecoder::m_storedPackets
protected

◆ m_prevGopPos

int AvFormatDecoder::m_prevGopPos {0}
protected

Definition at line 288 of file avformatdecoder.h.

Referenced by H264PreProcessPkt(), HandleGopStart(), MpegPreProcessPkt(), and SeekReset().

◆ m_gotVideoFrame

bool AvFormatDecoder::m_gotVideoFrame {false}
protected

◆ m_hasVideo

bool AvFormatDecoder::m_hasVideo {false}
protected

Definition at line 292 of file avformatdecoder.h.

Referenced by GetFrame().

◆ m_needDummyVideoFrames

bool AvFormatDecoder::m_needDummyVideoFrames {false}
protected

Definition at line 293 of file avformatdecoder.h.

Referenced by GenerateDummyVideoFrames(), and GetFrame().

◆ m_skipAudio

bool AvFormatDecoder::m_skipAudio {false}
protected

Definition at line 294 of file avformatdecoder.h.

Referenced by GetFrame(), and ProcessAudioPacket().

◆ m_allowedQuit

bool AvFormatDecoder::m_allowedQuit {false}
protected

Definition at line 295 of file avformatdecoder.h.

Referenced by GetFrame(), ProcessAudioPacket(), and ProcessDataPacket().

◆ m_startCodeState

uint32_t AvFormatDecoder::m_startCodeState {0xffffffff}
protected

Definition at line 297 of file avformatdecoder.h.

Referenced by MpegPreProcessPkt().

◆ m_lastVPts

std::chrono::milliseconds AvFormatDecoder::m_lastVPts {0ms}
protected

◆ m_lastAPts

std::chrono::milliseconds AvFormatDecoder::m_lastAPts {0ms}
protected

◆ m_lastCcPtsu

std::chrono::microseconds AvFormatDecoder::m_lastCcPtsu {0ms}
protected

◆ m_firstVPts

std::chrono::milliseconds AvFormatDecoder::m_firstVPts {0ms}
protected

◆ m_firstVPtsInuse

bool AvFormatDecoder::m_firstVPtsInuse {false}
protected

◆ m_faultyPts

int64_t AvFormatDecoder::m_faultyPts {0}
protected

◆ m_faultyDts

int64_t AvFormatDecoder::m_faultyDts {0}
protected

◆ m_lastPtsForFaultDetection

int64_t AvFormatDecoder::m_lastPtsForFaultDetection {0}
protected

◆ m_lastDtsForFaultDetection

int64_t AvFormatDecoder::m_lastDtsForFaultDetection {0}
protected

◆ m_ptsDetected

bool AvFormatDecoder::m_ptsDetected {false}
protected

◆ m_reorderedPtsDetected

bool AvFormatDecoder::m_reorderedPtsDetected {false}
protected

◆ m_ptsSelected

bool AvFormatDecoder::m_ptsSelected {true}
protected

Definition at line 311 of file avformatdecoder.h.

Referenced by ProcessVideoPacket().

◆ m_useFrameTiming

bool AvFormatDecoder::m_useFrameTiming {false}
protected

◆ m_forceDtsTimestamps

bool AvFormatDecoder::m_forceDtsTimestamps {false}
protected

Definition at line 316 of file avformatdecoder.h.

Referenced by OpenFile(), and ProcessVideoPacket().

◆ m_playerFlags

PlayerFlags AvFormatDecoder::m_playerFlags
protected

Definition at line 318 of file avformatdecoder.h.

Referenced by AvFormatDecoder(), and FlagIsSet().

◆ m_videoCodecId

MythCodecID AvFormatDecoder::m_videoCodecId {kCodec_NONE}
protected

◆ m_maxKeyframeDist

int AvFormatDecoder::m_maxKeyframeDist {-1}
protected

Definition at line 321 of file avformatdecoder.h.

Referenced by HandleGopStart().

◆ m_averrorCount

int AvFormatDecoder::m_averrorCount {0}
protected

Definition at line 322 of file avformatdecoder.h.

Referenced by InitVideoCodec(), ProcessVideoPacket(), and ScanStreams().

◆ m_ignoreScte

uint AvFormatDecoder::m_ignoreScte {0}
protected

Definition at line 325 of file avformatdecoder.h.

Referenced by ProcessVideoFrame().

◆ m_invertScteField

uint AvFormatDecoder::m_invertScteField {0}
protected

Definition at line 326 of file avformatdecoder.h.

Referenced by DecodeCCx08().

◆ m_lastScteField

uint AvFormatDecoder::m_lastScteField {0}
protected

Definition at line 327 of file avformatdecoder.h.

Referenced by DecodeCCx08().

◆ m_ccd608

CC608Decoder* AvFormatDecoder::m_ccd608 {nullptr}
protected

◆ m_ccd708

CC708Decoder* AvFormatDecoder::m_ccd708 {nullptr}
protected

◆ m_ttd

TeletextDecoder* AvFormatDecoder::m_ttd {nullptr}
protected

◆ m_ccX08InPmt

std::array<bool,68> AvFormatDecoder::m_ccX08InPmt {}
protected

Lookup table for whether a stream was seen in the PMT entries 0-3 correspond to CEA-608 CC1 through CC4, while entries 4-67 corresport to CEA-708 streams 0 through 64.

Definition at line 334 of file avformatdecoder.h.

Referenced by ScanATSCCaptionStreams(), and UpdateCaptionTracksFromStreams().

◆ m_ccX08InTracks

std::array<bool,68> AvFormatDecoder::m_ccX08InTracks {}
protected

Lookup table for whether a stream is represented in the UI entries 0-3 correspond to CEA-608 CC1 through CC4, while entries 4-67 corresport to CEA-708 streams 0 through 64.

Definition at line 338 of file avformatdecoder.h.

Referenced by UpdateATSCCaptionTracks(), and UpdateCaptionTracksFromStreams().

◆ m_pmtTracks

QList<StreamInfo> AvFormatDecoder::m_pmtTracks
protected

StreamInfo for 608 and 708 Captions seen in the PMT descriptor.

Definition at line 340 of file avformatdecoder.h.

Referenced by GetCaptionLanguage(), ScanATSCCaptionStreams(), and UpdateATSCCaptionTracks().

◆ m_pmtTrackTypes

QList<TrackType> AvFormatDecoder::m_pmtTrackTypes
protected

TrackType (608 or 708) for Captions seen in the PMT descriptor.

Definition at line 342 of file avformatdecoder.h.

Referenced by GetCaptionLanguage(), ScanATSCCaptionStreams(), and UpdateATSCCaptionTracks().

◆ m_streamTracks

QList<StreamInfo> AvFormatDecoder::m_streamTracks
protected

StreamInfo for 608 and 708 Captions seen in the caption stream itself but not seen in the PMT.

Definition at line 345 of file avformatdecoder.h.

Referenced by GetCaptionLanguage(), UpdateATSCCaptionTracks(), and UpdateCaptionTracksFromStreams().

◆ m_streamTrackTypes

QList<TrackType> AvFormatDecoder::m_streamTrackTypes
protected

TrackType (608 or 708) for Captions seen in the caption stream itself but not seen in the PMT.

Definition at line 348 of file avformatdecoder.h.

Referenced by GetCaptionLanguage(), UpdateATSCCaptionTracks(), and UpdateCaptionTracksFromStreams().

◆ m_itv

InteractiveTV* AvFormatDecoder::m_itv {nullptr}
protected

MHEG/MHP decoder.

Definition at line 351 of file avformatdecoder.h.

Referenced by AvFormatDecoder(), OpenFile(), ProcessDataPacket(), ProcessDSMCCPacket(), and ScanDSMCCStreams().

◆ m_audioSamples

uint8_t* AvFormatDecoder::m_audioSamples {nullptr}
protected

Definition at line 354 of file avformatdecoder.h.

Referenced by AvFormatDecoder(), ProcessAudioPacket(), and ~AvFormatDecoder().

◆ m_disablePassthru

bool AvFormatDecoder::m_disablePassthru {false}
protected

Definition at line 355 of file avformatdecoder.h.

Referenced by DoPassThrough(), and SetDisablePassThrough().

◆ m_audioIn

AudioInfo AvFormatDecoder::m_audioIn
protected

Definition at line 357 of file avformatdecoder.h.

Referenced by AvFormatDecoder(), ScanStreams(), and SetupAudioStream().

◆ m_audioOut

AudioInfo AvFormatDecoder::m_audioOut
protected

Definition at line 358 of file avformatdecoder.h.

Referenced by ProcessAudioPacket(), and SetupAudioStream().

◆ m_processFrames

bool AvFormatDecoder::m_processFrames {true}
protected

Definition at line 360 of file avformatdecoder.h.

Referenced by GetFrame(), and OpenFile().

◆ m_streamsChanged

bool AvFormatDecoder::m_streamsChanged { false }
protected

◆ m_resetHardwareDecoders

bool AvFormatDecoder::m_resetHardwareDecoders { false }
protected

Definition at line 363 of file avformatdecoder.h.

Referenced by ProcessVideoPacket(), and ScanStreams().

◆ m_audioReadAhead

std::chrono::milliseconds AvFormatDecoder::m_audioReadAhead {100ms}
protected

Definition at line 366 of file avformatdecoder.h.

Referenced by AvFormatDecoder(), and GetFrame().

◆ m_avCodecLock

QRecursiveMutex AvFormatDecoder::m_avCodecLock
protected

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