MythTV  master
mythdvdplayer.h
Go to the documentation of this file.
1 #ifndef MYTHDVDPLAYER_H
2 #define MYTHDVDPLAYER_H
3 
4 // MythTV
5 #include "mythplayer.h"
6 
7 // Std
8 #include <cstdint>
9 
10 class MythDVDPlayer : public MythPlayer
11 {
12  Q_DECLARE_TR_FUNCTIONS(MythDVDPlayer)
13 
14  public:
16  : MythPlayer(flags) {}
17 
18  void ReleaseNextVideoFrame(VideoFrame *Buffer, int64_t Timecode, bool Wrap = true) override;
19  bool HasReachedEof(void) const override;
20  bool PrepareAudioSample(int64_t &Timecode) override;
21  uint64_t GetBookmark(void) override;
22  int64_t GetSecondsPlayed(bool HonorCutList, int Divisor = 1000) override;
23  int64_t GetTotalSeconds(bool HonorCutList, int Divisor = 1000) const override;
24  bool GoToMenu(const QString& Menu) override;
25  void GoToDVDProgram(bool Direction) override;
26  bool IsInStillFrame() const override;
27  int GetNumAngles(void) const override;
28  int GetCurrentAngle(void) const override;
29  QString GetAngleName(int Angle) const override;
30  bool SwitchAngle(int Angle) override;
31  int GetNumChapters(void) override;
32  int GetCurrentChapter(void) override;
33  void GetChapterTimes(QList<long long> &Times) override;
34 
35  void ResetStillFrameTimer(void);
36  void SetStillFrameTimeout(int Length);
37  void StillFrameCheck(void);
38 
39  protected:
40  void SetBookmark(bool Clear = false) override;
41  void ResetPlaying(bool ResetFrames = true) override;
42  bool PrebufferEnoughFrames(int MinBuffers = 0) override;
43  void DecoderPauseCheck(void) override;
44  bool DecoderGetFrameFFREW(void) override;
45  bool DecoderGetFrameREW(void) override;
46  void ChangeSpeed(void) override;
47  void DisplayPauseFrame(void) override;
48  void PreProcessNormalFrame(void) override;
49  void VideoStart(void) override;
50  bool VideoLoop(void) override;
51  void EventStart(void) override;
52  virtual void EventEnd(void);
53  void InitialSeek(void) override;
54  void SeekForScreenGrab(uint64_t &Number, uint64_t FrameNum,
55  bool Absolute) override;
56  void AutoDeint(VideoFrame* Frame, bool AllowLock = true) override;
57  long long CalcMaxFFTime(long long FastFwd, bool Setjump = true) const override;
58  bool FastForward(float Seconds) override;
59  bool Rewind(float Seconds) override;
60  bool JumpToFrame(uint64_t Frame) override;
61  void DisableCaptions(uint Mode, bool OSDMsg = true) override;
62  void EnableCaptions(uint Mode, bool OSDMsg = true) override;
63  int SetTrack(uint Type, int TrackNo) override;
64  void CreateDecoder(char *Testbuf, int TestReadSize) override;
65  bool DoJumpChapter(int Chapter) override;
66 
67  private:
68  void DoChangeDVDTrack(void);
69  void DisplayDVDButton(void);
70  void DisplayLastFrame(void);
71 
72  int m_buttonVersion { 0 };
73  bool m_dvdStillFrameShowing { false };
74 
75  // additional bookmark seeking information
76  int m_initialTitle { -1 };
77  int m_initialAudioTrack { -1 };
79  QString m_initialDvdState { };
80 
81  // still frame timing
83  int m_stillFrameLength { 0 };
84  QMutex m_stillFrameTimerLock { QMutex::Recursive };
85 };
86 
87 #endif // MYTHDVDPLAYER_H
bool DoJumpChapter(int Chapter) override
int GetCurrentAngle(void) const override
void GetChapterTimes(QList< long long > &Times) override
A QElapsedTimer based timer to replace use of QTime as a timer.
Definition: mythtimer.h:13
bool VideoLoop(void) override
int GetNumAngles(void) const override
bool m_dvdStillFrameShowing
Definition: mythdvdplayer.h:73
bool FastForward(float Seconds) override
PlayerFlags
Definition: mythplayer.h:85
void EnableCaptions(uint Mode, bool OSDMsg=true) override
QMutex m_stillFrameTimerLock
Definition: mythdvdplayer.h:84
int64_t GetSecondsPlayed(bool HonorCutList, int Divisor=1000) override
int64_t GetTotalSeconds(bool HonorCutList, int Divisor=1000) const override
void AutoDeint(VideoFrame *Frame, bool AllowLock=true) override
bool SwitchAngle(int Angle) override
bool PrepareAudioSample(int64_t &Timecode) override
void ChangeSpeed(void) override
void DisplayLastFrame(void)
void ReleaseNextVideoFrame(VideoFrame *Buffer, int64_t Timecode, bool Wrap=true) override
bool DecoderGetFrameFFREW(void) override
bool PrebufferEnoughFrames(int MinBuffers=0) override
bool DecoderGetFrameREW(void) override
void DecoderPauseCheck(void) override
void InitialSeek(void) override
bool HasReachedEof(void) const override
bool IsInStillFrame() const override
void SeekForScreenGrab(uint64_t &Number, uint64_t FrameNum, bool Absolute) override
bool Rewind(float Seconds) override
MythDVDPlayer(PlayerFlags flags=kNoFlags)
Definition: mythdvdplayer.h:15
void SetStillFrameTimeout(int Length)
int GetCurrentChapter(void) override
void ResetPlaying(bool ResetFrames=true) override
unsigned int uint
Definition: compat.h:140
void VideoStart(void) override
MythTimer m_stillFrameTimer
Definition: mythdvdplayer.h:82
QString m_initialDvdState
Definition: mythdvdplayer.h:79
void SetBookmark(bool Clear=false) override
int m_stillFrameLength
Definition: mythdvdplayer.h:83
uint64_t GetBookmark(void) override
void ResetStillFrameTimer(void)
int SetTrack(uint Type, int TrackNo) override
int m_initialAudioTrack
Definition: mythdvdplayer.h:77
void DisableCaptions(uint Mode, bool OSDMsg=true) override
void StillFrameCheck(void)
bool GoToMenu(const QString &Menu) override
void DoChangeDVDTrack(void)
void CreateDecoder(char *Testbuf, int TestReadSize) override
int GetNumChapters(void) override
void PreProcessNormalFrame(void) override
void GoToDVDProgram(bool Direction) override
virtual void EventEnd(void)
QString GetAngleName(int Angle) const override
void DisplayDVDButton(void)
long long CalcMaxFFTime(long long FastFwd, bool Setjump=true) const override
CalcMaxFFTime(ffframes): forward ffframes forward.
void EventStart(void) override
#define Clear(a)
int m_initialSubtitleTrack
Definition: mythdvdplayer.h:78
void DisplayPauseFrame(void) override
bool JumpToFrame(uint64_t Frame) override