MythTV  master
mythvideooutgpu.h
Go to the documentation of this file.
1 #ifndef MYTHVIDEOOUTGPU_H
2 #define MYTHVIDEOOUTGPU_H
3 
4 // MythTV
5 #include "mythvideoout.h"
6 #include "mythhdrtracker.h"
7 
8 class MythMainWindow;
9 class MythVideoGPU;
10 class MythPainterGPU;
11 
13 {
14  Q_OBJECT
15 
16  public:
17  static void GetRenderOptions(RenderOptions& Options, MythRender* Render);
18  static MythVideoOutputGPU* Create(MythMainWindow* MainWindow, MythRender* Render,
19  MythPainter* Painter, MythDisplay* Display,
20  const QString& Decoder,
21  MythCodecID CodecID, QSize VideoDim,
22  QSize VideoDispDim, float VideoAspect,
23  float FrameRate, uint PlayerFlags,
24  const QString& Codec, int ReferenceFrames,
25  const VideoFrameTypes*& RenderFormats);
27  ~MythVideoOutputGPU() override;
28 
29  signals:
30  void ChangePictureAttribute(PictureAttribute Attribute, bool Direction, int Value);
31  void PictureAttributeChanged(PictureAttribute Attribute, int Value);
33  void PictureAttributesUpdated(const std::map<PictureAttribute,int>& Values);
34  void RefreshState();
35  void DoRefreshState();
36 
37  public slots:
38  void WindowResized (QSize Size);
39  void ResizeForVideo (QSize Size = QSize());
40 
41  public:
42  void InitPictureAttributes () override;
43  void SetVideoFrameRate (float NewRate) override;
44  void DiscardFrames (bool KeyFrame, bool Flushed) override;
45  void DoneDisplayingFrame (MythVideoFrame* Frame) override;
46  void UpdatePauseFrame (std::chrono::milliseconds& DisplayTimecode, FrameScanType Scan = kScan_Progressive) override;
47  bool InputChanged (QSize VideoDim, QSize VideoDispDim,
48  float VideoAspect, MythCodecID CodecId, bool& AspectOnly,
49  int ReferenceFrames, bool ForceChange) override;
50  void EndFrame () override;
51  void ClearAfterSeek () override;
52 
53  protected:
54  MythVideoOutputGPU(MythMainWindow* MainWindow, MythRender* Render,
55  MythPainterGPU* Painter, MythDisplay* Display,
56  MythVideoProfilePtr VideoProfile, QString& Profile);
57  virtual QRect GetDisplayVisibleRectAdj();
58  bool Init (QSize VideoDim, QSize VideoDispDim, float Aspect,
59  QRect DisplayVisibleRect, MythCodecID CodecId) override;
60  void PrepareFrame (MythVideoFrame* Frame, FrameScanType Scan) override;
61  void RenderFrame (MythVideoFrame* Frame, FrameScanType Scan) override;
62  bool CreateBuffers (MythCodecID CodecID, QSize Size);
63  void DestroyBuffers ();
64  bool ProcessInputChange ();
66  void SetReferenceFrames (int ReferenceFrames);
67 
69  MythRender* m_render { nullptr };
70  MythVideoGPU* m_video { nullptr };
71  MythPainterGPU* m_painter { nullptr };
73  QSize m_newVideoDim { 0, 0 };
74  QSize m_newVideoDispDim { 0, 0 };
75  float m_newAspect { 0.0F };
76  bool m_newFrameRate { false };
77  bool m_buffersCreated { false };
78  QString m_profile;
79  bool m_needFullClear { false };
80  HDRTracker m_hdrTracker { nullptr };
81 
82  private:
83  Q_DISABLE_COPY(MythVideoOutputGPU)
84 };
85 
86 #endif
MythVideoOutputGPU::InitPictureAttributes
void InitPictureAttributes() override
Definition: mythvideooutgpu.cpp:270
MythVideoOutputGPU::DiscardFrames
void DiscardFrames(bool KeyFrame, bool Flushed) override
Discard video frames.
Definition: mythvideooutgpu.cpp:348
MythVideoOutputGPU::SetVideoFrameRate
void SetVideoFrameRate(float NewRate) override
Definition: mythvideooutgpu.cpp:281
MythVideoOutput
Definition: mythvideoout.h:35
mythvideoout.h
PictureAttribute
PictureAttribute
Definition: videoouttypes.h:103
MythVideoOutputGPU::RefreshState
void RefreshState()
MythVideoOutputGPU::InitDisplayMeasurements
void InitDisplayMeasurements()
Initialise display measurement.
Definition: mythvideooutgpu.cpp:560
MythCodecID
MythCodecID
Definition: mythcodecid.h:11
MythVideoOutputGPU::DestroyBuffers
void DestroyBuffers()
Definition: mythvideooutgpu.cpp:430
kScan_Progressive
@ kScan_Progressive
Definition: videoouttypes.h:100
Frame
Definition: zmdefines.h:93
MythVideoOutputGPU::m_render
MythRender * m_render
Definition: mythvideooutgpu.h:69
MythVideoOutputGPU::PictureAttributesUpdated
void PictureAttributesUpdated(const std::map< PictureAttribute, int > &Values)
MythVideoOutputGPU::m_hdrTracker
HDRTracker m_hdrTracker
Definition: mythvideooutgpu.h:80
MythVideoOutputGPU::m_profile
QString m_profile
Definition: mythvideooutgpu.h:78
MythVideoOutputGPU::ClearAfterSeek
void ClearAfterSeek() override
Tells video output to toss decoded buffers due to a seek.
Definition: mythvideooutgpu.cpp:696
PlayerFlags
PlayerFlags
Definition: mythplayer.h:64
MythVideoOutputGPU::ResizeForVideo
void ResizeForVideo(QSize Size=QSize())
Definition: mythvideooutgpu.cpp:716
MythVideoOutputGPU::Init
bool Init(QSize VideoDim, QSize VideoDispDim, float Aspect, QRect DisplayVisibleRect, MythCodecID CodecId) override
Definition: mythvideooutgpu.cpp:295
kCodec_NONE
@ kCodec_NONE
Definition: mythcodecid.h:15
MythVideoOutputGPU::m_newVideoDispDim
QSize m_newVideoDispDim
Definition: mythvideooutgpu.h:74
MythVideoOutputGPU::GetRenderOptions
static void GetRenderOptions(RenderOptions &Options, MythRender *Render)
Definition: mythvideooutgpu.cpp:25
MythVideoGPU
Definition: mythvideogpu.h:20
MythVideoOutputGPU::DoneDisplayingFrame
void DoneDisplayingFrame(MythVideoFrame *Frame) override
Release a video frame back into the decoder pool.
Definition: mythvideooutgpu.cpp:369
MythVideoOutputGPU::m_mainWindow
MythMainWindow * m_mainWindow
Definition: mythvideooutgpu.h:68
Decoder
Definition: decoder.h:70
PictureAttributeSupported
PictureAttributeSupported
Definition: videoouttypes.h:116
RenderOptions
Definition: mythvideoprofile.h:41
MythVideoOutputGPU::UpdatePauseFrame
void UpdatePauseFrame(std::chrono::milliseconds &DisplayTimecode, FrameScanType Scan=kScan_Progressive) override
Definition: mythvideooutgpu.cpp:661
VideoFrameTypes
std::vector< VideoFrameType > VideoFrameTypes
Definition: mythframe.h:83
MythVideoOutputGPU::PictureAttributeChanged
void PictureAttributeChanged(PictureAttribute Attribute, int Value)
MythVideoOutputGPU::m_newCodecId
MythCodecID m_newCodecId
Definition: mythvideooutgpu.h:72
MythVideoOutputGPU::m_newFrameRate
bool m_newFrameRate
Definition: mythvideooutgpu.h:76
VideoFrameType
VideoFrameType
Definition: mythframe.h:20
FrameRate
Definition: recorderbase.h:38
MythVideoOutputGPU::Create
static MythVideoOutputGPU * Create(MythMainWindow *MainWindow, MythRender *Render, MythPainter *Painter, MythDisplay *Display, const QString &Decoder, MythCodecID CodecID, QSize VideoDim, QSize VideoDispDim, float VideoAspect, float FrameRate, uint PlayerFlags, const QString &Codec, int ReferenceFrames, const VideoFrameTypes *&RenderFormats)
Definition: mythvideooutgpu.cpp:38
MythVideoOutputGPU::m_buffersCreated
bool m_buffersCreated
Definition: mythvideooutgpu.h:77
MythVideoOutputGPU::m_newVideoDim
QSize m_newVideoDim
Definition: mythvideooutgpu.h:73
mythhdrtracker.h
uint
unsigned int uint
Definition: compat.h:81
MythVideoOutputGPU::m_newAspect
float m_newAspect
Definition: mythvideooutgpu.h:75
MythVideoOutputGPU::SetReferenceFrames
void SetReferenceFrames(int ReferenceFrames)
Definition: mythvideooutgpu.cpp:437
MythDisplay
Definition: mythdisplay.h:22
MythVideoOutputGPU::PrepareFrame
void PrepareFrame(MythVideoFrame *Frame, FrameScanType Scan) override
Definition: mythvideooutgpu.cpp:595
MythVideoOutputGPU::m_needFullClear
bool m_needFullClear
Definition: mythvideooutgpu.h:79
HDRTracker
std::shared_ptr< class MythHDRTracker > HDRTracker
Definition: mythhdrtracker.h:10
MythVideoOutputGPU::FrameTypeForCodec
static VideoFrameType FrameTypeForCodec(MythCodecID CodecId)
Definition: mythvideooutgpu.cpp:185
MythVideoOutputGPU::ProcessInputChange
bool ProcessInputChange()
Definition: mythvideooutgpu.cpp:500
MythVideoOutputGPU::ChangePictureAttribute
void ChangePictureAttribute(PictureAttribute Attribute, bool Direction, int Value)
MythRender
Definition: mythrender_base.h:23
MythVideoOutputGPU::InputChanged
bool InputChanged(QSize VideoDim, QSize VideoDispDim, float VideoAspect, MythCodecID CodecId, bool &AspectOnly, int ReferenceFrames, bool ForceChange) override
Tells video output to discard decoded frames and wait for new ones.
Definition: mythvideooutgpu.cpp:442
MythPainter
Definition: mythpainter.h:34
MythVideoOutputGPU::MythVideoOutputGPU
MythVideoOutputGPU(MythMainWindow *MainWindow, MythRender *Render, MythPainterGPU *Painter, MythDisplay *Display, MythVideoProfilePtr VideoProfile, QString &Profile)
Definition: mythvideooutgpu.cpp:209
MythVideoOutputGPU::RenderFrame
void RenderFrame(MythVideoFrame *Frame, FrameScanType Scan) override
Definition: mythvideooutgpu.cpp:620
MythVideoOutputGPU::CreateBuffers
bool CreateBuffers(MythCodecID CodecID, QSize Size)
Definition: mythvideooutgpu.cpp:401
MythVideoOutputGPU::DoRefreshState
void DoRefreshState()
MythVideoOutputGPU
Common code shared between GPU accelerated sub-classes (e.g. OpenGL)
Definition: mythvideooutgpu.h:12
MythVideoOutputGPU::SupportedAttributesChanged
void SupportedAttributesChanged(PictureAttributeSupported Supported)
MythVideoOutputGPU::m_video
MythVideoGPU * m_video
Definition: mythvideooutgpu.h:70
MythVideoOutputGPU::GetDisplayVisibleRectAdj
virtual QRect GetDisplayVisibleRectAdj()
Definition: mythvideooutgpu.cpp:265
FrameScanType
FrameScanType
Definition: videoouttypes.h:94
MythVideoProfilePtr
std::shared_ptr< MythVideoProfile > MythVideoProfilePtr
Definition: mythvideogpu.h:18
MythVideoOutputGPU::m_painter
MythPainterGPU * m_painter
Definition: mythvideooutgpu.h:71
MythVideoFrame
Definition: mythframe.h:88
MythVideoOutputGPU::~MythVideoOutputGPU
~MythVideoOutputGPU() override
Definition: mythvideooutgpu.cpp:253
MythVideoOutputGPU::EndFrame
void EndFrame() override
Definition: mythvideooutgpu.cpp:691
MythMainWindow
Definition: mythmainwindow.h:28
MythPainterGPU
Definition: mythpaintergpu.h:11
MythVideoOutputGPU::WindowResized
void WindowResized(QSize Size)
Definition: mythvideooutgpu.cpp:275