/
mythplayerinterface.h
71 lines (60 loc) · 2.46 KB
/
mythplayerinterface.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#ifndef MYTHPLAYERINTERFACE_H
#define MYTHPLAYERINTERFACE_H
// MythTV
#include "mythplayervisualiser.h"
#include "mythvideoscantracker.h"
#include "mythplayeraudiointerface.h"
#include "DetectLetterbox.h"
#include "jitterometer.h"
#include "mythplayer.h"
class MythPlayerInterface : public MythPlayerAudioInterface, public MythVideoScanTracker
{
Q_OBJECT
public:
MythPlayerInterface(MythMainWindow* MainWindow, TV* Tv, PlayerContext* Context, PlayerFlags Flags);
virtual void EventLoop();
bool InitVideo() override;
void ReinitVideo(bool ForceUpdate) override;
void VideoStart() override;
virtual bool VideoLoop();
void ChangeSpeed() override;
void ReleaseNextVideoFrame(VideoFrame* Frame, int64_t Timecode, bool Wrap = true) override;
void SetVideoParams(int Width, int Height, double FrameRate, float Aspect,
bool ForceUpdate, int ReferenceFrames,
FrameScanType Scan = kScan_Ignore,
const QString& CodecName = QString()) override;
void WindowResized(const QSize& Size);
void GetPlaybackData(InfoMap& Map);
void GetCodecDescription(InfoMap& Map);
void ToggleAdjustFill(AdjustFillMode Mode = kAdjustFill_Toggle);
void EnableFrameRateMonitor(bool Enable = false);
bool CanSupportDoubleRate();
// FIXME - should be private
DetectLetterbox m_detectLetterBox { this };
// N.B. Editor - keep ringfenced and move into subclass
bool EnableEdit();
void DisableEdit(int HowToSave);
bool HandleProgramEditorActions(QStringList& Actions);
uint64_t GetNearestMark(uint64_t Frame, bool Right);
bool IsTemporaryMark(uint64_t Frame);
bool HasTemporaryMark();
bool IsCutListSaved();
bool DeleteMapHasUndo();
bool DeleteMapHasRedo();
QString DeleteMapGetUndoMessage();
QString DeleteMapGetRedoMessage();
// End editor stuff
protected:
void InitFrameInterval() override;
void DisplayPauseFrame() override;
virtual void DisplayNormalFrame(bool CheckPrebuffer = true);
void RefreshPauseFrame();
void RenderVideoFrame(VideoFrame* Frame, FrameScanType Scan, bool Prepare, int64_t Wait);
void DoDisplayVideoFrame(VideoFrame* Frame, int64_t Due);
Jitterometer m_outputJmeter { "Player" };
// N.B. Editor - keep ringfenced and move into subclass
QElapsedTimer m_editUpdateTimer;
float m_speedBeforeEdit { 1.0 };
bool m_pausedBeforeEdit { false };
};
#endif