MythTV  master
videovisual.h
Go to the documentation of this file.
1 #ifndef VIDEOVISUAL_H
2 #define VIDEOVISUAL_H
3 
4 #include <cstdint>
5 
6 #include <QRect>
7 #include <QList>
8 #include <QDateTime>
9 
10 #include "libmyth/visual.h"
12 #include "libmythtv/mythtvexp.h"
13 #include "libmythui/mythpainter.h"
15 
16 #include "videovisualdefs.h"
17 
18 using namespace std::chrono_literals;
19 
20 #define DESC QString("Visualiser: ")
21 
22 class MythRender;
23 class AudioPlayer;
24 
26 {
27  public:
28  VisualNode(short *l, short *r, unsigned long n, std::chrono::milliseconds timecode)
29  : m_left(l), m_right(r), m_length(n), m_offset(timecode) { }
30 
32  {
33  delete [] m_left;
34  delete [] m_right;
35  }
36 
37  short *m_left {nullptr};
38  short *m_right {nullptr};
39  long m_length;
40  std::chrono::milliseconds m_offset;
41 };
42 
44 {
45  public:
46  static VideoVisual* Create(const QString &name,
47  AudioPlayer *audio, MythRender *render);
48  static QStringList GetVisualiserList(RenderType type);
49 
50  VideoVisual(AudioPlayer *audio, MythRender *render);
51  ~VideoVisual() override;
52 
53  bool NeedsPrepare() const { return m_needsPrepare; }
54  virtual void Prepare(const QRect /*Area*/) { }
55  virtual void Draw(QRect area, MythPainter *painter,
56  QPaintDevice* device) = 0;
57  virtual QString Name(void) = 0;
58 
59  void add(const void *b, unsigned long b_len,
60  std::chrono::milliseconds timecode,
61  int c, int p) override; // Visual
62  void prepare() override; // Visual
63 
64  protected:
65  VisualNode* GetNode(void);
66  void DeleteNodes(void);
67  std::chrono::milliseconds SetLastUpdate(void);
68 
69  AudioPlayer *m_audio { nullptr };
70  bool m_needsPrepare { false };
71  bool m_disabled { false };
72  QRect m_area;
73  MythRender *m_render { nullptr };
74  QList<VisualNode*> m_nodes;
75  QDateTime m_lastUpdate;
76 };
77 
79 {
80  public:
82  {
83  m_nextVideoVisualFactory = g_videoVisualFactory;
84  g_videoVisualFactory = this;
85  }
86  virtual ~VideoVisualFactory() = default;
87  virtual const QString &name(void) const = 0;
88  virtual VideoVisual* Create(AudioPlayer *audio,
89  MythRender *render) const = 0;
91  {
92  return g_videoVisualFactory;
93  }
95  {
96  return m_nextVideoVisualFactory;
97  }
98  virtual bool SupportedRenderer(RenderType type) = 0;
99 
100  protected:
102  VideoVisualFactory* m_nextVideoVisualFactory {nullptr};
103 };
104 #endif // VIDEOVISUAL_H
VisualNode::~VisualNode
~VisualNode()
Definition: videovisual.h:31
VideoVisualFactory::VideoVisualFactories
static VideoVisualFactory * VideoVisualFactories()
Definition: videovisual.h:90
VideoVisualFactory::g_videoVisualFactory
static VideoVisualFactory * g_videoVisualFactory
Definition: videovisual.h:101
VideoVisual::m_lastUpdate
QDateTime m_lastUpdate
Definition: videovisual.h:75
AudioPlayer
Definition: audioplayer.h:22
VisualNode
Definition: videovisual.h:25
VisualNode::VisualNode
VisualNode(short *l, short *r, unsigned long n, std::chrono::milliseconds timecode)
Definition: videovisual.h:28
VideoVisual::NeedsPrepare
bool NeedsPrepare() const
Definition: videovisual.h:53
mythtvexp.h
VideoVisual::m_nodes
QList< VisualNode * > m_nodes
Definition: videovisual.h:74
MythTV::Visual
Definition: visual.h:16
VisualNode::m_offset
std::chrono::milliseconds m_offset
Definition: videovisual.h:40
mythrender_base.h
mythlogging.h
hardwareprofile.config.p
p
Definition: config.py:33
VideoVisualFactory::VideoVisualFactory
VideoVisualFactory()
Definition: videovisual.h:81
VideoVisualFactory
Definition: videovisual.h:78
VideoVisualFactory::next
VideoVisualFactory * next() const
Definition: videovisual.h:94
RenderType
RenderType
Definition: mythrender_base.h:15
mythpainter.h
MTV_PUBLIC
#define MTV_PUBLIC
Definition: mythtvexp.h:15
VisualNode::m_length
long m_length
Definition: videovisual.h:39
MythRender
Definition: mythrender_base.h:23
MythPainter
Definition: mythpainter.h:34
Name
Definition: channelsettings.cpp:71
VideoVisual
Definition: videovisual.h:43
VideoVisual::m_area
QRect m_area
Definition: videovisual.h:72
VideoVisual::Prepare
virtual void Prepare(const QRect)
Definition: videovisual.h:54
videovisualdefs.h
visual.h