AvFormatDecoder Class Reference

A decoder for video files. More...

#include <avformatdecoder.h>

Inheritance diagram for AvFormatDecoder:
DecoderBase AvFormatDecoderBD AvFormatDecoderDVD

List of all members.

Public Member Functions

 AvFormatDecoder (MythPlayer *parent, const ProgramInfo &pginfo, PlayerFlags flags)
 ~AvFormatDecoder ()
virtual void SetEof (bool eof)
void CloseCodecs ()
void CloseContext ()
virtual void Reset (bool reset_video_data, bool seek_reset, bool reset_file)
int OpenFile (RingBuffer *rbuffer, bool novideo, char testbuf[kDecoderProbeBufferSize], int testbufsize=kDecoderProbeBufferSize)
 Open our file and set up or audio and video parameters.
virtual bool GetFrame (DecodeType)
 Demux, preprocess and possibly decode a frame of video/audio.
virtual bool IsLastFrameKey (void) const
virtual bool IsCodecMPEG (void) const
void WriteStoredData (RingBuffer *rb, bool storevid, long timecodeOffset)
 This is a No-op for this class.
void SetRawAudioState (bool state)
 This is a No-op for this class.
bool GetRawAudioState (void) const
 This is a No-op for this class.
void SetRawVideoState (bool state)
 This is a No-op for this class.
bool GetRawVideoState (void) const
 This is a No-op for this class.
long UpdateStoredFrameNum (long frame)
 This is a No-op for this class.
QString GetCodecDecoderName (void) const
QString GetRawEncodingType (void)
MythCodecID GetVideoCodecID (void) const
void * GetVideoCodecPrivate (void)
virtual void SetDisablePassThrough (bool disable)
 Disables AC3/DTS pass through.
void AddTextData (unsigned char *buf, int len, int64_t timecode, char type)
virtual QString GetTrackDesc (uint type, uint trackNo) const
virtual int SetTrack (uint type, int trackNo)
int ScanStreams (bool novideo)
int FindStreamInfo (void)
virtual int GetNumChapters ()
virtual void GetChapterTimes (QList< long long > &times)
virtual int GetCurrentChapter (long long framesPlayed)
virtual long long GetChapter (int chapter)
virtual bool DoRewind (long long desiredFrame, bool doflush=true)
virtual bool DoFastForward (long long desiredFrame, bool doflush=true)
 Skips ahead or rewinds to desiredFrame.
virtual int64_t NormalizeVideoTimecode (int64_t timecode)
virtual int64_t NormalizeVideoTimecode (AVStream *st, int64_t timecode)
virtual int GetTeletextDecoderType (void) const
virtual QString GetXDS (const QString &) const
virtual QByteArray GetSubHeader (uint trackNo) const
virtual void GetAttachmentData (uint trackNo, QByteArray &filename, QByteArray &data)
virtual bool SetAudioByComponentTag (int tag)
virtual bool SetVideoByComponentTag (int tag)
virtual int GetSubtitleLanguage (uint subtitle_index, uint stream_index)
 Returns DVD Subtitle language.
virtual int GetCaptionLanguage (TrackTypes trackType, int service_num)
 Return ATSC Closed Caption Language.
virtual int GetAudioLanguage (uint audio_index, uint stream_index)

Static Public Member Functions

static void GetDecoders (render_opts &opts)
static bool CanHandle (char testbuf[kDecoderProbeBufferSize], const QString &filename, int testbufsize=kDecoderProbeBufferSize)
 Perform an av_probe_input_format on the passed data to see if we can decode it with this class.

Protected Member Functions

RingBuffergetRingBuf (void)
virtual int AutoSelectTrack (uint type)
 Select best track.
void ScanATSCCaptionStreams (int av_stream_index)
void UpdateATSCCaptionTracks (void)
void UpdateCaptionTracksFromStreams (bool check_608, bool check_708)
void ScanTeletextCaptions (int av_stream_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.
int AutoSelectAudioTrack (void)
 Selects the best audio track.
int filter_max_ch (const AVFormatContext *ic, const sinfo_vec_t &tracks, const vector< int > &fs, enum CodecID codecId=CODEC_ID_NONE, int profile=-1)
void DecodeDTVCC (const uint8_t *buf, uint buf_size, bool scte)
void InitByteContext (void)
void InitVideoCodec (AVStream *stream, AVCodecContext *enc, bool selectedStream=false)
void MpegPreProcessPkt (AVStream *stream, AVPacket *pkt)
 Preprocess a packet, setting the video parms if necessary.
bool H264PreProcessPkt (AVStream *stream, AVPacket *pkt)
bool PreProcessVideoPacket (AVStream *stream, AVPacket *pkt)
bool ProcessVideoPacket (AVStream *stream, AVPacket *pkt)
bool ProcessVideoFrame (AVStream *stream, AVFrame *mpa_pic)
bool ProcessAudioPacket (AVStream *stream, AVPacket *pkt, DecodeType decodetype)
bool ProcessSubtitlePacket (AVStream *stream, AVPacket *pkt)
bool ProcessRawTextPacket (AVPacket *pkt)
bool ProcessDataPacket (AVStream *curstream, AVPacket *pkt, DecodeType decodetype)
void ProcessVBIDataPacket (const AVStream *stream, const AVPacket *pkt)
 Process ivtv proprietary embedded vertical blanking interval captions.
void ProcessDVBDataPacket (const AVStream *stream, const AVPacket *pkt)
 Process DVB Teletext.
void ProcessDSMCCPacket (const AVStream *stream, const AVPacket *pkt)
 Process DSMCC object carousel packet.
float GetMpegAspect (AVCodecContext *context, int aspect_ratio_info, int width, int height)
void SeekReset (long long, uint skipFrames, bool doFlush, bool discardFrames)
bool DecoderWillDownmix (const AVCodecContext *ctx)
bool DoPassThrough (const AVCodecContext *ctx, bool withProfile=true)
bool SetupAudioStream (void)
 Reinitializes audio if it needs to be reinitialized.
void SetupAudioStreamSubIndexes (int streamIndex)
 Reacts to DUAL/STEREO changes on the fly and fix streams.
void RemoveAudioStreams ()
 remove audio streams from the context used by dvd code during title transitions to remove stale audio streams
void HandleGopStart (AVPacket *pkt, bool can_reliably_parse_keyframes)
 Update our position map, keyframe distance, and the like.
bool GenerateDummyVideoFrames (void)
bool HasVideo (const AVFormatContext *ic)
float normalized_fps (AVStream *stream, AVCodecContext *enc)
void av_update_stream_timings_video (AVFormatContext *ic)
virtual void UpdateFramesPlayed (void)
virtual bool DoRewindSeek (long long desiredFrame)
virtual void DoFastForwardSeek (long long desiredFrame, bool &needflush)
 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.
virtual void StreamChangeCheck (void)
virtual void PostProcessTracks (void)
int DecodeAudio (AVCodecContext *ctx, uint8_t *buffer, int &data_size, AVPacket *pkt)

Protected Attributes

PrivateDecoderprivate_dec
bool is_db_ignored
H264Parserm_h264_parser
AVFormatContext * ic
URLContext readcontext
int frame_decoded
VideoFramedecoded_video_frame
AVFRingBufferavfRingBuffer
struct SwsContext * sws_ctx
bool directrendering
bool no_dts_hack
bool dorewind
bool gopset
bool seen_gop
 A flag to indicate that we've seen a GOP frame. Used in junction with seq_count.
int seq_count
 A counter used to determine if we need to force a call to HandleGopStart.
QList< AVPacket * > storedPackets
int prevgoppos
bool gotVideoFrame
bool hasVideo
bool needDummyVideoFrames
bool skipaudio
bool allowedquit
uint32_t start_code_state
long long lastvpts
long long lastapts
long long lastccptsu
long long firstvpts
bool firstvptsinuse
int64_t faulty_pts
int64_t faulty_dts
int64_t last_pts_for_fault_detection
int64_t last_dts_for_fault_detection
bool pts_detected
bool reordered_pts_detected
bool pts_selected
bool force_dts_timestamps
PlayerFlags playerFlags
MythCodecID video_codec_id
int maxkeyframedist
bool ignore_scte
uint invert_scte_field
uint last_scte_field
CC608Decoderccd608
CC708Decoderccd708
TeletextDecoderttd
int cc608_parity_table [256]
bool ccX08_in_pmt [64+4]
 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.
bool ccX08_in_tracks [64+4]
 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.
QList< StreamInfopmt_tracks
 StreamInfo for 608 and 708 Captions seen in the PMT descriptor.
QList< TrackTypepmt_track_types
 TrackType (608 or 708) for Captions seen in the PMT descriptor.
QList< StreamInfostream_tracks
 StreamInfo for 608 and 708 Captions seen in the caption stream itself but not seen in the PMT.
QList< TrackTypestream_track_types
 TrackType (608 or 708) for Captions seen in the caption stream itself but not seen in the PMT.
InteractiveTVitv
 MHEG/MHP decoder.
uint8_taudioSamples
bool disable_passthru
AudioInfo audioIn
AudioInfo audioOut
float m_fps
bool codec_is_mpeg

Friends

void HandleStreamChange (void *)
void HandleDVDStreamChange (void *)
void HandleBDStreamChange (void *)
int get_avf_buffer (struct AVCodecContext *c, AVFrame *pic)
void release_avf_buffer (struct AVCodecContext *c, AVFrame *pic)
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 video files.

The AvFormatDecoder is used to decode non-NuppleVideo files. It's used as a decoder of last resort after trying the NuppelDecoder

Definition at line 89 of file avformatdecoder.h.


Constructor & Destructor Documentation

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

Definition at line 265 of file avformatdecoder.cpp.

AvFormatDecoder::~AvFormatDecoder (  ) 

Definition at line 331 of file avformatdecoder.cpp.


Member Function Documentation

void AvFormatDecoder::GetDecoders ( render_opts opts  )  [static]

Definition at line 242 of file avformatdecoder.cpp.

void AvFormatDecoder::SetEof ( bool  eof  )  [virtual]

Reimplemented from DecoderBase.

Definition at line 747 of file avformatdecoder.cpp.

Referenced by GetFrame().

void AvFormatDecoder::CloseCodecs (  ) 

Definition at line 364 of file avformatdecoder.cpp.

Referenced by CloseContext(), and HandleBDStreamChange().

void AvFormatDecoder::CloseContext (  ) 

Definition at line 378 of file avformatdecoder.cpp.

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

void AvFormatDecoder::Reset ( bool  reset_video_data,
bool  seek_reset,
bool  reset_file 
) [virtual]

Reimplemented from DecoderBase.

Reimplemented in AvFormatDecoderBD, and AvFormatDecoderDVD.

Definition at line 759 of file avformatdecoder.cpp.

Referenced by HandleBDStreamChange().

bool AvFormatDecoder::CanHandle ( char  testbuf[kDecoderProbeBufferSize],
const QString &  filename,
int  testbufsize = kDecoderProbeBufferSize 
) [static]

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

Definition at line 778 of file avformatdecoder.cpp.

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

int AvFormatDecoder::OpenFile ( RingBuffer rbuffer,
bool  novideo,
char  testbuf[kDecoderProbeBufferSize],
int  testbufsize = kDecoderProbeBufferSize 
) [virtual]

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:
rbuffer pointer to a valid ringuffer.
novideo if true then no video is sought in ScanSreams.
testbuf this parameter is not used by AvFormatDecoder.

Implements DecoderBase.

Definition at line 899 of file avformatdecoder.cpp.

bool AvFormatDecoder::GetFrame ( DecodeType   )  [virtual]

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

Implements DecoderBase.

Definition at line 4289 of file avformatdecoder.cpp.

Referenced by SeekReset().

virtual bool AvFormatDecoder::IsLastFrameKey ( void   )  const [inline, virtual]

Implements DecoderBase.

Definition at line 119 of file avformatdecoder.h.

virtual bool AvFormatDecoder::IsCodecMPEG ( void   )  const [inline, virtual]

Reimplemented from DecoderBase.

Definition at line 121 of file avformatdecoder.h.

void AvFormatDecoder::WriteStoredData ( RingBuffer rb,
bool  storevid,
long  timecodeOffset 
) [inline, virtual]

This is a No-op for this class.

Implements DecoderBase.

Definition at line 125 of file avformatdecoder.h.

void AvFormatDecoder::SetRawAudioState ( bool  state  )  [inline, virtual]

This is a No-op for this class.

Reimplemented from DecoderBase.

Definition at line 129 of file avformatdecoder.h.

bool AvFormatDecoder::GetRawAudioState ( void   )  const [inline, virtual]

This is a No-op for this class.

Reimplemented from DecoderBase.

Definition at line 132 of file avformatdecoder.h.

void AvFormatDecoder::SetRawVideoState ( bool  state  )  [inline, virtual]

This is a No-op for this class.

Reimplemented from DecoderBase.

Definition at line 135 of file avformatdecoder.h.

bool AvFormatDecoder::GetRawVideoState ( void   )  const [inline, virtual]

This is a No-op for this class.

Reimplemented from DecoderBase.

Definition at line 138 of file avformatdecoder.h.

long AvFormatDecoder::UpdateStoredFrameNum ( long  frame  )  [inline, virtual]

This is a No-op for this class.

Implements DecoderBase.

Definition at line 141 of file avformatdecoder.h.

QString AvFormatDecoder::GetCodecDecoderName ( void   )  const [virtual]

Implements DecoderBase.

Definition at line 4624 of file avformatdecoder.cpp.

Referenced by ScanStreams().

QString AvFormatDecoder::GetRawEncodingType ( void   )  [virtual]

Reimplemented from DecoderBase.

Definition at line 4631 of file avformatdecoder.cpp.

MythCodecID AvFormatDecoder::GetVideoCodecID ( void   )  const [inline, virtual]

Implements DecoderBase.

Definition at line 145 of file avformatdecoder.h.

void * AvFormatDecoder::GetVideoCodecPrivate ( void   )  [virtual]

Reimplemented from DecoderBase.

Definition at line 4639 of file avformatdecoder.cpp.

void AvFormatDecoder::SetDisablePassThrough ( bool  disable  )  [virtual]

Disables AC3/DTS pass through.

Reimplemented from DecoderBase.

Definition at line 4644 of file avformatdecoder.cpp.

void AvFormatDecoder::AddTextData ( unsigned char *  buf,
int  len,
int64_t  timecode,
char  type 
)
QString AvFormatDecoder::GetTrackDesc ( uint  type,
uint  trackNo 
) const [virtual]

Reimplemented from DecoderBase.

Definition at line 3562 of file avformatdecoder.cpp.

Referenced by AutoSelectAudioTrack().

int AvFormatDecoder::SetTrack ( uint  type,
int  trackNo 
) [virtual]

Reimplemented from DecoderBase.

Definition at line 3549 of file avformatdecoder.cpp.

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

int AvFormatDecoder::ScanStreams ( bool  novideo  ) 
int AvFormatDecoder::FindStreamInfo ( void   ) 

Definition at line 878 of file avformatdecoder.cpp.

Referenced by HandleBDStreamChange(), and OpenFile().

int AvFormatDecoder::GetNumChapters ( void   )  [virtual]

Reimplemented from DecoderBase.

Definition at line 457 of file avformatdecoder.cpp.

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

void AvFormatDecoder::GetChapterTimes ( QList< long long > &  times  )  [virtual]

Reimplemented from DecoderBase.

Definition at line 464 of file avformatdecoder.cpp.

int AvFormatDecoder::GetCurrentChapter ( long long  framesPlayed  )  [virtual]

Reimplemented from DecoderBase.

Definition at line 481 of file avformatdecoder.cpp.

long long AvFormatDecoder::GetChapter ( int  chapter  )  [virtual]

Reimplemented from DecoderBase.

Definition at line 505 of file avformatdecoder.cpp.

bool AvFormatDecoder::DoRewind ( long long  desiredFrame,
bool  doflush = true 
) [virtual]

Reimplemented from DecoderBase.

Definition at line 521 of file avformatdecoder.cpp.

bool AvFormatDecoder::DoFastForward ( long long  desiredFrame,
bool  doflush = true 
) [virtual]

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 535 of file avformatdecoder.cpp.

Referenced by DoRewind().

int64_t AvFormatDecoder::NormalizeVideoTimecode ( int64_t  timecode  )  [virtual]

Reimplemented from DecoderBase.

Definition at line 405 of file avformatdecoder.cpp.

Referenced by ProcessVideoFrame().

int64_t AvFormatDecoder::NormalizeVideoTimecode ( AVStream *  st,
int64_t  timecode 
) [virtual]

Definition at line 437 of file avformatdecoder.cpp.

int AvFormatDecoder::GetTeletextDecoderType ( void   )  const [virtual]

Reimplemented from DecoderBase.

Definition at line 3630 of file avformatdecoder.cpp.

QString AvFormatDecoder::GetXDS ( const QString &  key  )  const [virtual]

Reimplemented from DecoderBase.

Definition at line 3635 of file avformatdecoder.cpp.

QByteArray AvFormatDecoder::GetSubHeader ( uint  trackNo  )  const [virtual]

Reimplemented from DecoderBase.

Definition at line 3640 of file avformatdecoder.cpp.

void AvFormatDecoder::GetAttachmentData ( uint  trackNo,
QByteArray &  filename,
QByteArray &  data 
) [virtual]

Reimplemented from DecoderBase.

Definition at line 3653 of file avformatdecoder.cpp.

bool AvFormatDecoder::SetAudioByComponentTag ( int  tag  )  [virtual]

Reimplemented from DecoderBase.

Definition at line 3668 of file avformatdecoder.cpp.

Referenced by OpenFile().

bool AvFormatDecoder::SetVideoByComponentTag ( int  tag  )  [virtual]

Reimplemented from DecoderBase.

Definition at line 3685 of file avformatdecoder.cpp.

Referenced by OpenFile().

int AvFormatDecoder::GetSubtitleLanguage ( uint  subtitle_index,
uint  stream_index 
) [virtual]

Returns DVD Subtitle language.

Reimplemented in AvFormatDecoderBD.

Definition at line 2246 of file avformatdecoder.cpp.

Referenced by GetAudioLanguage(), and ScanStreams().

int AvFormatDecoder::GetCaptionLanguage ( TrackTypes  trackType,
int  service_num 
) [virtual]
int AvFormatDecoder::GetAudioLanguage ( uint  audio_index,
uint  stream_index 
) [virtual]

Reimplemented in AvFormatDecoderBD, and AvFormatDecoderDVD.

Definition at line 2284 of file avformatdecoder.cpp.

Referenced by ScanStreams().

RingBuffer* AvFormatDecoder::getRingBuf ( void   )  [inline, protected]

Definition at line 184 of file avformatdecoder.h.

int AvFormatDecoder::AutoSelectTrack ( uint  type  )  [protected, virtual]

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 3704 of file avformatdecoder.cpp.

void AvFormatDecoder::ScanATSCCaptionStreams ( int  av_stream_index  )  [protected]

Definition at line 1463 of file avformatdecoder.cpp.

Referenced by ScanStreams(), and UpdateCaptionTracksFromStreams().

void AvFormatDecoder::UpdateATSCCaptionTracks ( void   )  [protected]

Definition at line 1534 of file avformatdecoder.cpp.

Referenced by ScanStreams(), and UpdateCaptionTracksFromStreams().

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

Definition at line 2637 of file avformatdecoder.cpp.

Referenced by DecodeDTVCC(), and ProcessVBIDataPacket().

void AvFormatDecoder::ScanTeletextCaptions ( int  av_stream_index  )  [protected]

Definition at line 1598 of file avformatdecoder.cpp.

Referenced by ScanStreams().

void AvFormatDecoder::ScanRawTextCaptions ( int  av_stream_index  )  [protected]

Definition at line 1651 of file avformatdecoder.cpp.

Referenced by ScanStreams().

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 1671 of file avformatdecoder.cpp.

Referenced by ScanStreams().

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 3815 of file avformatdecoder.cpp.

Referenced by AutoSelectTrack(), and ProcessAudioPacket().

int AvFormatDecoder::filter_max_ch ( const AVFormatContext *  ic,
const sinfo_vec_t tracks,
const vector< int > &  fs,
enum CodecID  codecId = CODEC_ID_NONE,
int  profile = -1 
) [protected]

Definition at line 3739 of file avformatdecoder.cpp.

Referenced by AutoSelectAudioTrack().

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

Definition at line 2552 of file avformatdecoder.cpp.

Referenced by ProcessVideoFrame().

void AvFormatDecoder::InitByteContext ( void   )  [protected]

Definition at line 810 of file avformatdecoder.cpp.

Referenced by OpenFile().

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

Definition at line 1249 of file avformatdecoder.cpp.

Referenced by ScanStreams().

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

Preprocess a packet, setting the video parms if necessary.

Definition at line 2810 of file avformatdecoder.cpp.

Referenced by PreProcessVideoPacket().

bool AvFormatDecoder::H264PreProcessPkt ( AVStream *  stream,
AVPacket *  pkt 
) [protected]

Definition at line 2897 of file avformatdecoder.cpp.

Referenced by PreProcessVideoPacket().

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

Definition at line 2991 of file avformatdecoder.cpp.

Referenced by GetFrame().

bool AvFormatDecoder::ProcessVideoPacket ( AVStream *  stream,
AVPacket *  pkt 
) [protected]

Definition at line 3041 of file avformatdecoder.cpp.

Referenced by GetFrame().

bool AvFormatDecoder::ProcessVideoFrame ( AVStream *  stream,
AVFrame *  mpa_pic 
) [protected]

Definition at line 3146 of file avformatdecoder.cpp.

Referenced by GetFrame(), and ProcessVideoPacket().

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

Definition at line 4049 of file avformatdecoder.cpp.

Referenced by GetFrame().

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

Definition at line 3433 of file avformatdecoder.cpp.

Referenced by GetFrame().

bool AvFormatDecoder::ProcessRawTextPacket ( AVPacket *  pkt  )  [protected]

Definition at line 3497 of file avformatdecoder.cpp.

Referenced by GetFrame().

bool AvFormatDecoder::ProcessDataPacket ( AVStream *  curstream,
AVPacket *  pkt,
DecodeType  decodetype 
) [protected]

Definition at line 3520 of file avformatdecoder.cpp.

Referenced by GetFrame().

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 3274 of file avformatdecoder.cpp.

Referenced by ProcessDataPacket().

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

Process DVB Teletext.

See also:
TeletextDecoder

Definition at line 3356 of file avformatdecoder.cpp.

Referenced by GetFrame(), and ProcessDataPacket().

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

Process DSMCC object carousel packet.

Definition at line 3399 of file avformatdecoder.cpp.

Referenced by ProcessDataPacket().

float AvFormatDecoder::GetMpegAspect ( AVCodecContext *  context,
int  aspect_ratio_info,
int  width,
int  height 
) [protected]
void AvFormatDecoder::SeekReset ( long long  newKey,
uint  skipFrames,
bool  doFlush,
bool  discardFrames 
) [protected, virtual]

Reimplemented from DecoderBase.

Definition at line 652 of file avformatdecoder.cpp.

Referenced by DoFastForward(), HandleStreamChange(), and Reset().

bool AvFormatDecoder::DecoderWillDownmix ( const AVCodecContext *  ctx  )  [inline, protected]

Definition at line 4669 of file avformatdecoder.cpp.

Referenced by ProcessAudioPacket(), and SetupAudioStream().

bool AvFormatDecoder::DoPassThrough ( const AVCodecContext *  ctx,
bool  withProfile = true 
) [protected]
bool AvFormatDecoder::SetupAudioStream ( void   )  [protected]

Reinitializes audio if it needs to be reinitialized.

NOTE: The avcodeclock must be held when this is called.

Returns:
true if audio changed, false otherwise

Definition at line 4714 of file avformatdecoder.cpp.

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

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:
streamIndex av_stream_index of the stream that has changed

Definition at line 2301 of file avformatdecoder.cpp.

Referenced by ProcessAudioPacket().

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 2390 of file avformatdecoder.cpp.

Referenced by ScanStreams().

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 2705 of file avformatdecoder.cpp.

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

bool AvFormatDecoder::GenerateDummyVideoFrames ( void   )  [protected]

Definition at line 4598 of file avformatdecoder.cpp.

Referenced by GetFrame(), and ProcessDataPacket().

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

Definition at line 4570 of file avformatdecoder.cpp.

Referenced by GetFrame().

float AvFormatDecoder::normalized_fps ( AVStream *  stream,
AVCodecContext *  enc 
) [protected]

Definition at line 1120 of file avformatdecoder.cpp.

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

void AvFormatDecoder::av_update_stream_timings_video ( AVFormatContext *  ic  )  [protected]

Definition at line 4871 of file avformatdecoder.cpp.

Referenced by OpenFile().

void AvFormatDecoder::UpdateFramesPlayed ( void   )  [protected, virtual]

Reimplemented from DecoderBase.

Reimplemented in AvFormatDecoderBD, and AvFormatDecoderDVD.

Definition at line 2229 of file avformatdecoder.cpp.

bool AvFormatDecoder::DoRewindSeek ( long long  desiredFrame  )  [protected, virtual]

Reimplemented from DecoderBase.

Reimplemented in AvFormatDecoderBD, and AvFormatDecoderDVD.

Definition at line 2234 of file avformatdecoder.cpp.

void AvFormatDecoder::DoFastForwardSeek ( long long  desiredFrame,
bool needflush 
) [protected, virtual]

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:
desiredFrame frame we are attempting to seek to.
needflush set to true if a seek is made.

Reimplemented from DecoderBase.

Reimplemented in AvFormatDecoderBD, and AvFormatDecoderDVD.

Definition at line 2239 of file avformatdecoder.cpp.

virtual void AvFormatDecoder::StreamChangeCheck ( void   )  [inline, protected, virtual]

Reimplemented in AvFormatDecoderBD, and AvFormatDecoderDVD.

Definition at line 255 of file avformatdecoder.h.

Referenced by GetFrame().

virtual void AvFormatDecoder::PostProcessTracks ( void   )  [inline, protected, virtual]

Reimplemented in AvFormatDecoderDVD.

Definition at line 256 of file avformatdecoder.h.

Referenced by ScanStreams().

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

Definition at line 4255 of file avformatdecoder.cpp.

Referenced by ProcessAudioPacket().


Friends And Related Function Documentation

void HandleStreamChange ( void *   )  [friend]

Definition at line 832 of file avformatdecoder.cpp.

Referenced by OpenFile().

void HandleDVDStreamChange ( void *   )  [friend]

Definition at line 848 of file avformatdecoder.cpp.

Referenced by OpenFile().

void HandleBDStreamChange ( void *   )  [friend]

Definition at line 864 of file avformatdecoder.cpp.

Referenced by OpenFile().

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

Definition at line 2356 of file avformatdecoder.cpp.

Referenced by InitVideoCodec().

void release_avf_buffer ( struct AVCodecContext *  c,
AVFrame *  pic 
) [friend]

Definition at line 2409 of file avformatdecoder.cpp.

Referenced by InitVideoCodec().

int open_avf ( URLContext *  h,
const char *  filename,
int  flags 
) [friend]
int read_avf ( URLContext *  h,
uint8_t buf,
int  buf_size 
) [friend]
int write_avf ( URLContext *  h,
uint8_t buf,
int  buf_size 
) [friend]
int64_t seek_avf ( URLContext *  h,
int64_t  offset,
int  whence 
) [friend]
int close_avf ( URLContext *  h  )  [friend]

Member Data Documentation

Definition at line 262 of file avformatdecoder.h.

Referenced by OpenFile(), and ScanStreams().

Definition at line 264 of file avformatdecoder.h.

Referenced by CloseContext(), H264PreProcessPkt(), ScanStreams(), and ~AvFormatDecoder().

AVFormatContext* AvFormatDecoder::ic [protected]
URLContext AvFormatDecoder::readcontext [protected]

Definition at line 269 of file avformatdecoder.h.

Referenced by AvFormatDecoder(), and InitByteContext().

Definition at line 271 of file avformatdecoder.h.

Referenced by GetFrame().

Definition at line 273 of file avformatdecoder.h.

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

struct SwsContext* AvFormatDecoder::sws_ctx [protected]

Definition at line 275 of file avformatdecoder.h.

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

Definition at line 276 of file avformatdecoder.h.

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

Definition at line 278 of file avformatdecoder.h.

Referenced by DoFastForward(), and SeekReset().

Definition at line 279 of file avformatdecoder.h.

Referenced by DoFastForward(), and DoRewind().

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

Definition at line 283 of file avformatdecoder.h.

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

int AvFormatDecoder::seq_count [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().

QList<AVPacket*> AvFormatDecoder::storedPackets [protected]

Definition at line 286 of file avformatdecoder.h.

Referenced by GetFrame(), SeekReset(), and ~AvFormatDecoder().

int AvFormatDecoder::prevgoppos [protected]

Definition at line 288 of file avformatdecoder.h.

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

Definition at line 292 of file avformatdecoder.h.

Referenced by GetFrame().

Definition at line 293 of file avformatdecoder.h.

Referenced by GenerateDummyVideoFrames(), and GetFrame().

Definition at line 294 of file avformatdecoder.h.

Referenced by GetFrame(), and ProcessAudioPacket().

Definition at line 295 of file avformatdecoder.h.

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

Definition at line 297 of file avformatdecoder.h.

Referenced by MpegPreProcessPkt().

long long AvFormatDecoder::lastvpts [protected]
long long AvFormatDecoder::lastapts [protected]
long long AvFormatDecoder::lastccptsu [protected]
long long AvFormatDecoder::firstvpts [protected]

Definition at line 311 of file avformatdecoder.h.

Referenced by ProcessVideoPacket().

Definition at line 313 of file avformatdecoder.h.

Referenced by OpenFile(), and ProcessVideoPacket().

Definition at line 315 of file avformatdecoder.h.

Referenced by AvFormatDecoder(), and ScanStreams().

Definition at line 318 of file avformatdecoder.h.

Referenced by HandleGopStart().

Definition at line 321 of file avformatdecoder.h.

Referenced by ProcessVideoFrame().

Definition at line 322 of file avformatdecoder.h.

Referenced by DecodeDTVCC().

Definition at line 323 of file avformatdecoder.h.

Referenced by DecodeDTVCC().

Definition at line 327 of file avformatdecoder.h.

Referenced by AvFormatDecoder(), DecodeDTVCC(), and ProcessVBIDataPacket().

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 331 of file avformatdecoder.h.

Referenced by AvFormatDecoder(), ScanATSCCaptionStreams(), and UpdateCaptionTracksFromStreams().

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 335 of file avformatdecoder.h.

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

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

Definition at line 337 of file avformatdecoder.h.

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

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

Definition at line 339 of file avformatdecoder.h.

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

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

Definition at line 342 of file avformatdecoder.h.

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

TrackType (608 or 708) for 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().

MHEG/MHP decoder.

Definition at line 348 of file avformatdecoder.h.

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

Definition at line 351 of file avformatdecoder.h.

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

Definition at line 352 of file avformatdecoder.h.

Referenced by DoPassThrough(), and SetDisablePassThrough().

Definition at line 354 of file avformatdecoder.h.

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

Definition at line 355 of file avformatdecoder.h.

Referenced by ProcessAudioPacket(), and SetupAudioStream().

float AvFormatDecoder::m_fps [protected]

Definition at line 357 of file avformatdecoder.h.

Referenced by normalized_fps().

Definition at line 358 of file avformatdecoder.h.

Referenced by IsCodecMPEG(), and ScanStreams().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends
Generated on Mon May 28 06:41:52 2012 for MythTV by  doxygen 1.6.3