MythTV  master
mythplayervisualiserui.cpp
Go to the documentation of this file.
1 // MythTV
5 
6 #include "audioplayer.h"
8 #include "tv_play.h"
9 
10 #define LOC QString("PlayerVis: ")
11 
13  PlayerContext *Context, PlayerFlags Flags)
14  : MythPlayerVideoUI(MainWindow, Tv, Context, Flags)
15 {
16  // Register our state type for signalling
17  qRegisterMetaType<MythVisualiserState>();
18 
19  // Connect signals and slots
25 
26 
27  m_defaultVisualiser = gCoreContext->GetSetting("AudioVisualiser", "");
29  if (m_render)
30  {
32  }
33  else
34  {
35  LOG(VB_GENERAL, LOG_ERR, LOC + "Failed to initialise m_visualiserList, m_render null");
36  }
37 }
38 
41 {
42  LOG(VB_GENERAL, LOG_INFO, LOC + "Initialising visualiser");
45 }
46 
48 {
50 }
51 
53 {
54  m_visualiserState.m_canVisualise = State.m_channels == 1 || State.m_channels == 2;
56 }
57 
59 {
60  m_uiScreenRect = Rect;
61 }
62 
64 {
65  delete m_visual;
66  m_visual = nullptr;
69 }
70 
71 void MythPlayerVisualiserUI::EnableVisualiser(bool Enable, bool Toggle, const QString &Name)
72 {
73  bool osd = true;
74  QString visualiser = Name;
75  if (visualiser.startsWith("_AUTO_"))
76  {
77  visualiser = visualiser.mid(6);
78  osd = false;
79  }
80 
81  bool want = Enable || !visualiser.isEmpty();
82  if (Toggle)
84 
85  if (!want || !m_visualiserState.m_canVisualise)
86  {
88  }
90  {
91  if (visualiser.isEmpty())
92  visualiser = m_defaultVisualiser;
93 
94  if (m_visualiserState.m_visualiserName != visualiser)
95  {
98  if (m_visual)
99  {
102  }
103  }
104  }
105 
106  if (osd)
107  UpdateOSDMessage(m_visual ? m_visualiserState.m_visualiserName : tr("Visualisation Off"));
109 }
110 
114 {
115  m_checkAutoVisualise = false;
116 
117  if (HaveVideo || !m_audio.HasAudioIn() || m_defaultVisualiser.isEmpty())
118  return;
119 
121  return;
122 
123  EnableVisualiser(true, false, "_AUTO_" + m_defaultVisualiser);
124 }
125 
126 void MythPlayerVisualiserUI::EmbedVisualiser(bool Embed, QRect Rect)
127 {
128  m_embedRect = Rect;
131 }
132 
134 {
135  // Note - we must call the visualiser to drain its buffers even if it is not
136  // to be displayed (otherwise it fails). So do not check for output rect
137  // size (embedding) etc
138  if (!m_visual)
139  return;
140  if (m_visual->NeedsPrepare())
142 }
143 
145 {
146  // As for PrepareVisualiser - always call the visualiser if it is present
147  if (!m_visual)
148  return;
150 }
MythUIScreenBounds::GetUIScreenRect
QRect GetUIScreenRect()
Definition: mythuiscreenbounds.cpp:198
MythPlayerVisualiserUI::m_checkAutoVisualise
bool m_checkAutoVisualise
Definition: mythplayervisualiserui.h:31
MythPlayerVisualiserUI::~MythPlayerVisualiserUI
~MythPlayerVisualiserUI() override
Definition: mythplayervisualiserui.cpp:47
MythPlayerVisualiserUI::m_visual
VideoVisual * m_visual
Definition: mythplayervisualiserui.h:38
MythPlayerVisualiserUI::PrepareVisualiser
void PrepareVisualiser()
Definition: mythplayervisualiserui.cpp:133
MythVisualiserState::m_embedding
bool m_embedding
Definition: mythplayerstate.h:136
MythPlayerVisualiserUI::m_embedRect
QRect m_embedRect
Definition: mythplayervisualiserui.h:40
MythVisualiserState::m_visualising
bool m_visualising
Definition: mythplayerstate.h:137
VideoVisual::Create
static VideoVisual * Create(const QString &name, AudioPlayer *audio, MythRender *render)
Definition: videovisual.cpp:23
VideoVisual::NeedsPrepare
bool NeedsPrepare() const
Definition: videovisual.h:52
MythPlayerVisualiserUI::m_uiScreenRect
QRect m_uiScreenRect
Definition: mythplayervisualiserui.h:39
TVPlaybackState::EnableVisualiser
void EnableVisualiser(bool Enable, bool Toggle=false, const QString &Name=QString())
AudioPlayer::AudioPlayerStateChanged
void AudioPlayerStateChanged(MythAudioPlayerState State)
MythVisualiserState::m_visualiserList
QStringList m_visualiserList
Definition: mythplayerstate.h:139
MythPlayerVisualiserUI::EmbedVisualiser
void EmbedVisualiser(bool Embed, QRect Rect={})
Definition: mythplayervisualiserui.cpp:126
LOG
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
Definition: mythlogging.h:39
PlayerFlags
PlayerFlags
Definition: mythplayer.h:64
MythPlayerVisualiserUI::RenderVisualiser
void RenderVisualiser()
Definition: mythplayervisualiserui.cpp:144
VideoVisual::Name
virtual QString Name(void)=0
MythPlayerCaptionsUI::InitialiseState
void InitialiseState() override
Definition: mythplayercaptionsui.cpp:63
State
State
Definition: zmserver.h:68
MythPlayer::m_audio
AudioPlayer m_audio
Definition: mythplayer.h:472
MythPlayerOverlayUI::UpdateOSDMessage
void UpdateOSDMessage(const QString &Message)
Definition: mythplayeroverlayui.cpp:78
mythlogging.h
MythVisualiserState::m_canVisualise
bool m_canVisualise
Definition: mythplayerstate.h:135
MythVisualiserState::m_visualiserName
QString m_visualiserName
Definition: mythplayerstate.h:138
MythPlayerUIBase::m_painter
MythPainter * m_painter
Definition: mythplayeruibase.h:20
VideoVisual::Draw
virtual void Draw(QRect area, MythPainter *painter, QPaintDevice *device)=0
AudioPlayer::HasAudioIn
bool HasAudioIn(void) const
Definition: audioplayer.h:51
TVPlaybackState::VisualiserStateChanged
void VisualiserStateChanged(const MythVisualiserState &VisualiserState)
Definition: tvplaybackstate.cpp:48
gCoreContext
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
Definition: mythcorecontext.cpp:57
VideoVisual::GetVisualiserList
static QStringList GetVisualiserList(RenderType type)
Definition: videovisual.cpp:10
MythPlayerVisualiserUI::m_visualiserState
MythVisualiserState m_visualiserState
Definition: mythplayervisualiserui.h:37
mythplayervisualiserui.h
MythPlayerVisualiserUI::EnableVisualiser
void EnableVisualiser(bool Enable, bool Toggle, const QString &Name)
Definition: mythplayervisualiserui.cpp:71
MythPlayerVisualiserUI::InitialiseState
void InitialiseState() override
Set initial state and update player.
Definition: mythplayervisualiserui.cpp:40
mythcorecontext.h
LOC
#define LOC
Definition: mythplayervisualiserui.cpp:10
MythPlayerVisualiserUI::VisualiserStateChanged
void VisualiserStateChanged(MythVisualiserState VisualiserState)
Name
Definition: channelsettings.cpp:103
MythUIScreenBounds::UIScreenRectChanged
void UIScreenRectChanged(const QRect &Rect)
MythPlayerVisualiserUI::UIScreenRectChanged
void UIScreenRectChanged(QRect Rect)
Definition: mythplayervisualiserui.cpp:58
MythPlayerUIBase::m_mainWindow
MythMainWindow * m_mainWindow
Definition: mythplayeruibase.h:17
MythPlayerUIBase::m_tv
TV * m_tv
Definition: mythplayeruibase.h:18
MythPlayerVisualiserUI::AutoVisualise
void AutoVisualise(bool HaveVideo)
Enable visualisation if possible, there is no video and user has requested.
Definition: mythplayervisualiserui.cpp:113
MythPlayerVisualiserUI::DestroyVisualiser
void DestroyVisualiser()
Definition: mythplayervisualiserui.cpp:63
MythPlayerVisualiserUI::MythPlayerVisualiserUI
MythPlayerVisualiserUI(MythMainWindow *MainWindow, TV *Tv, PlayerContext *Context, PlayerFlags Flags)
Definition: mythplayervisualiserui.cpp:12
TVPlaybackState::EmbedPlayback
void EmbedPlayback(bool Embed, const QRect &Rect={})
MythPlayerVisualiserUI::m_defaultVisualiser
QString m_defaultVisualiser
Definition: mythplayervisualiserui.h:36
PlayerContext
Definition: playercontext.h:49
audioplayer.h
MythPlayerVisualiserUI::AudioPlayerStateChanged
void AudioPlayerStateChanged(const MythAudioPlayerState &State)
Definition: mythplayervisualiserui.cpp:52
MythRender::Type
RenderType Type(void) const
Definition: mythrender_base.h:32
VideoVisual::Prepare
virtual void Prepare(const QRect)
Definition: videovisual.h:53
MythPlayerUIBase::m_render
MythRender * m_render
Definition: mythplayeruibase.h:19
MythPlayerVideoUI
Definition: mythplayervideoui.h:33
mythmainwindow.h
MythMainWindow
Definition: mythmainwindow.h:28
MythCoreContext::GetSetting
QString GetSetting(const QString &key, const QString &defaultval="")
Definition: mythcorecontext.cpp:904
tv_play.h
TV
Control TV playback.
Definition: tv_play.h:154
MythAudioPlayerState
Definition: mythplayerstate.h:31