00001 #ifndef MYTHDVDPLAYER_H
00002 #define MYTHDVDPLAYER_H
00003
00004 #include <stdint.h>
00005
00006 #include "mythplayer.h"
00007
00008 class MythDVDPlayer : public MythPlayer
00009 {
00010 public:
00011 MythDVDPlayer(PlayerFlags flags = kNoFlags);
00012
00013
00014 virtual void ReleaseNextVideoFrame(VideoFrame *buffer, int64_t timecode,
00015 bool wrap = true);
00016
00017
00018 virtual bool PrepareAudioSample(int64_t &timecode);
00019
00020
00021 virtual uint64_t GetBookmark(void);
00022 virtual int64_t GetSecondsPlayed(void);
00023 virtual int64_t GetTotalSeconds(void) const;
00024
00025
00026 virtual bool GoToMenu(QString str);
00027 virtual void GoToDVDProgram(bool direction);
00028
00029
00030 void ResetStillFrameTimer(void);
00031 void SetStillFrameTimeout(int length);
00032 void StillFrameCheck(void);
00033
00034
00035 virtual int GetNumAngles(void) const;
00036 virtual int GetCurrentAngle(void) const;
00037 virtual QString GetAngleName(int angle) const;
00038 virtual bool SwitchAngle(int angle);
00039
00040
00041 virtual int GetNumChapters(void);
00042 virtual int GetCurrentChapter(void);
00043 virtual void GetChapterTimes(QList<long long> ×);
00044
00045 protected:
00046
00047 virtual void SetBookmark(bool clear = false);
00048
00049
00050 virtual void ResetPlaying(bool resetframes = true);
00051
00052
00053 virtual bool PrebufferEnoughFrames(int min_buffers = 0);
00054 virtual void DecoderPauseCheck(void);
00055 virtual bool DecoderGetFrameFFREW(void);
00056 virtual bool DecoderGetFrameREW(void);
00057
00058
00059 virtual void ChangeSpeed(void);
00060
00061
00062 virtual void AVSync(VideoFrame *buffer, bool limit_delay = false);
00063 virtual void DisplayPauseFrame(void);
00064 virtual void PreProcessNormalFrame(void);
00065 virtual bool VideoLoop(void);
00066 virtual void EventStart(void);
00067 virtual void EventEnd(void);
00068 virtual void InitialSeek(void);
00069
00070
00071 virtual void SeekForScreenGrab(uint64_t &number, uint64_t frameNum,
00072 bool absolute);
00073
00074
00075 virtual void AutoDeint(VideoFrame* frame, bool allow_lock = true);
00076
00077
00078 virtual long long CalcMaxFFTime(long long ff, bool setjump = true) const;
00079
00080
00081 virtual bool FastForward(float seconds);
00082 virtual bool Rewind(float seconds);
00083 virtual bool JumpToFrame(uint64_t frame);
00084
00085
00086 virtual void DisableCaptions(uint mode, bool osd_msg=true);
00087 virtual void EnableCaptions(uint mode, bool osd_msg=true);
00088
00089
00090 virtual int SetTrack(uint type, int trackNo);
00091
00092
00093 virtual void CreateDecoder(char *testbuf, int testreadsize);
00094
00095
00096 virtual bool DoJumpChapter(int chapter);
00097
00098 private:
00099 void DoChangeDVDTrack(void);
00100 void SetDVDBookmark(uint64_t frame);
00101 void DisplayDVDButton(void);
00102
00103 void DisplayLastFrame(void);
00104
00105 int m_buttonVersion;
00106 bool dvd_stillframe_showing;
00107
00108
00109 int m_initial_title;
00110 int m_initial_audio_track;
00111 int m_initial_subtitle_track;
00112
00113
00114 MythTimer m_stillFrameTimer;
00115 int m_stillFrameLength;
00116 QMutex m_stillFrameTimerLock;
00117 };
00118
00119 #endif // MYTHDVDPLAYER_H