MythTV master
mythdvddecoder.h
Go to the documentation of this file.
1#ifndef AVFORMATDECODERDVD_H
2#define AVFORMATDECODERDVD_H
3
4// Qt
5#include <QList>
6
7// MythTV
9
10static constexpr uint32_t INVALID_LBA { 0xbfffffff };
11
12class MythDVDContext;
13
15{
16 public:
17 MythDVDDecoder(MythPlayer *Parent, const ProgramInfo &PGInfo, PlayerFlags Flags);
18 ~MythDVDDecoder() override;
19
20 void Reset (bool ResetVideoData, bool SeekReset, bool ResetFile) override;
21 void UpdateFramesPlayed(void) override;
22 bool GetFrame (DecodeType Type, bool &Retry) override;
23
24 protected:
25 int ReadPacket (AVFormatContext *Ctx, AVPacket *Pkt, bool &StorePacket) override;
26 bool ProcessVideoPacket(AVCodecContext* codecContext, AVStream *Stream, AVPacket *Pkt, bool &Retry) override;
27 bool ProcessVideoFrame (AVCodecContext* codecContext, AVStream *Stream, AVFrame *Frame) override;
28 bool ProcessDataPacket (AVStream *Curstream, AVPacket *Pkt, DecodeType Decodetype) override;
29
30 private:
31 bool DoRewindSeek (long long DesiredFrame) override;
32 void DoFastForwardSeek (long long DesiredFrame, bool &NeedFlush) override;
33 void StreamChangeCheck (void) override;
34 void PostProcessTracks (void) override;
35 int GetAudioLanguage (uint AudioIndex, uint StreamIndex) override;
37
38 void CheckContext (int64_t Pts);
39 void ReleaseLastVideoPkt (void);
40 static void ReleaseContext (MythDVDContext *&Context);
41 long long DVDFindPosition(long long DesiredFrame);
42
44 QList<MythDVDContext*> m_contextList;
45 AVPacket* m_lastVideoPkt { nullptr };
47 int m_framesReq { 0 };
49};
50
51#endif
AVFrame AVFrame
A decoder for media files.
void SeekReset(long long newkey, uint skipFrames, bool doFlush, bool discardFrames) override
Encapsulates playback context at any given moment.
uint32_t m_lbaLastVideoPkt
void CheckContext(int64_t Pts)
bool GetFrame(DecodeType Type, bool &Retry) override
Demux, preprocess and possibly decode a frame of video/audio.
~MythDVDDecoder() override
MythDVDContext * m_returnContext
long long DVDFindPosition(long long DesiredFrame)
int GetAudioLanguage(uint AudioIndex, uint StreamIndex) override
bool ProcessVideoFrame(AVCodecContext *codecContext, AVStream *Stream, AVFrame *Frame) override
QList< MythDVDContext * > m_contextList
MythDVDDecoder(MythPlayer *Parent, const ProgramInfo &PGInfo, PlayerFlags Flags)
bool DoRewindSeek(long long DesiredFrame) override
bool ProcessDataPacket(AVStream *Curstream, AVPacket *Pkt, DecodeType Decodetype) override
int ReadPacket(AVFormatContext *Ctx, AVPacket *Pkt, bool &StorePacket) override
MythDVDContext * m_curContext
void PostProcessTracks(void) override
void Reset(bool ResetVideoData, bool SeekReset, bool ResetFile) override
void UpdateFramesPlayed(void) override
void StreamChangeCheck(void) override
static void ReleaseContext(MythDVDContext *&Context)
AudioTrackType GetAudioTrackType(uint Index) 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...
AVPacket * m_lastVideoPkt
bool ProcessVideoPacket(AVCodecContext *codecContext, AVStream *Stream, AVPacket *Pkt, bool &Retry) override
void ReleaseLastVideoPkt(void)
Holds information on recordings and videos.
Definition: programinfo.h:68
AudioTrackType
Definition: decoderbase.h:56
DecodeType
Definition: decoderbase.h:48
unsigned int uint
Definition: freesurround.h:24
static constexpr uint32_t INVALID_LBA
PlayerFlags
Definition: mythplayer.h:65