MythTV
master
mythtv
libs
libmythtv
mythplayervisualiserui.cpp
Go to the documentation of this file.
1
// MythTV
2
#include "
libmythbase/mythcorecontext.h
"
3
#include "
libmythbase/mythlogging.h
"
4
#include "
libmythui/mythmainwindow.h
"
5
6
#include "
audioplayer.h
"
7
#include "
mythplayervisualiserui.h
"
8
#include "
tv_play.h
"
9
10
#define LOC QString("PlayerVis: ")
11
12
MythPlayerVisualiserUI::MythPlayerVisualiserUI
(
MythMainWindow
*MainWindow,
TV
*Tv,
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
20
connect(&
m_audio
, &
AudioPlayer::AudioPlayerStateChanged
,
this
, &
MythPlayerVisualiserUI::AudioPlayerStateChanged
);
21
connect(
m_mainWindow
, &
MythMainWindow::UIScreenRectChanged
,
this
, &
MythPlayerVisualiserUI::UIScreenRectChanged
);
22
connect(
m_tv
, &
TV::EnableVisualiser
,
this
, &
MythPlayerVisualiserUI::EnableVisualiser
);
23
connect(
m_tv
, &
TV::EmbedPlayback
,
this
, &
MythPlayerVisualiserUI::EmbedVisualiser
);
24
connect(
this
, &
MythPlayerVisualiserUI::VisualiserStateChanged
,
m_tv
, &
TV::VisualiserStateChanged
);
25
26
27
m_defaultVisualiser
=
gCoreContext
->
GetSetting
(
"AudioVisualiser"
,
""
);
28
m_uiScreenRect
=
m_mainWindow
->
GetUIScreenRect
();
29
if
(
m_render
)
30
{
31
m_visualiserState
.
m_visualiserList
=
VideoVisual::GetVisualiserList
(
m_render
->
Type
());
32
}
33
else
34
{
35
LOG
(VB_GENERAL, LOG_ERR,
LOC
+
"Failed to initialise m_visualiserList, m_render null"
);
36
}
37
}
38
40
void
MythPlayerVisualiserUI::InitialiseState
()
41
{
42
LOG
(VB_GENERAL, LOG_INFO,
LOC
+
"Initialising visualiser"
);
43
emit
VisualiserStateChanged
(
m_visualiserState
);
44
MythPlayerVideoUI::InitialiseState
();
45
}
46
47
MythPlayerVisualiserUI::~MythPlayerVisualiserUI
()
48
{
49
MythPlayerVisualiserUI::DestroyVisualiser
();
50
}
51
52
void
MythPlayerVisualiserUI::AudioPlayerStateChanged
(
const
MythAudioPlayerState
&
State
)
53
{
54
m_visualiserState
.
m_canVisualise
=
State
.m_channels == 1 ||
State
.m_channels == 2;
55
emit
VisualiserStateChanged
(
m_visualiserState
);
56
}
57
58
void
MythPlayerVisualiserUI::UIScreenRectChanged
(QRect Rect)
59
{
60
m_uiScreenRect
= Rect;
61
}
62
63
void
MythPlayerVisualiserUI::DestroyVisualiser
()
64
{
65
delete
m_visual
;
66
m_visual
=
nullptr
;
67
m_visualiserState
.
m_visualiserName
= QString();
68
m_visualiserState
.
m_visualising
=
false
;
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)
83
want = !
m_visualiserState
.
m_visualising
;
84
85
if
(!want || !
m_visualiserState
.
m_canVisualise
)
86
{
87
DestroyVisualiser
();
88
}
89
else
if
(
m_visualiserState
.
m_canVisualise
)
90
{
91
if
(visualiser.isEmpty())
92
visualiser =
m_defaultVisualiser
;
93
94
if
(
m_visualiserState
.
m_visualiserName
!= visualiser)
95
{
96
DestroyVisualiser
();
97
m_visual
=
VideoVisual::Create
(visualiser, &
m_audio
,
m_render
);
98
if
(
m_visual
)
99
{
100
m_visualiserState
.
m_visualiserName
=
m_visual
->
Name
();
101
m_visualiserState
.
m_visualising
=
true
;
102
}
103
}
104
}
105
106
if
(osd)
107
UpdateOSDMessage
(
m_visual
?
m_visualiserState
.
m_visualiserName
: tr(
"Visualisation Off"
));
108
emit
VisualiserStateChanged
(
m_visualiserState
);
109
}
110
113
void
MythPlayerVisualiserUI::AutoVisualise
(
bool
HaveVideo)
114
{
115
m_checkAutoVisualise
=
false
;
116
117
if
(HaveVideo || !
m_audio
.
HasAudioIn
() ||
m_defaultVisualiser
.isEmpty())
118
return
;
119
120
if
(!
m_visualiserState
.
m_canVisualise
||
m_visualiserState
.
m_visualising
)
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;
129
m_visualiserState
.
m_embedding
= Embed;
130
emit
VisualiserStateChanged
(
m_visualiserState
);
131
}
132
133
void
MythPlayerVisualiserUI::PrepareVisualiser
()
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
())
141
m_visual
->
Prepare
(
m_visualiserState
.
m_embedding
?
m_embedRect
:
m_uiScreenRect
);
142
}
143
144
void
MythPlayerVisualiserUI::RenderVisualiser
()
145
{
146
// As for PrepareVisualiser - always call the visualiser if it is present
147
if
(!
m_visual
)
148
return
;
149
m_visual
->
Draw
(
m_visualiserState
.
m_embedding
?
m_embedRect
:
m_uiScreenRect
,
m_painter
,
nullptr
);
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
Generated on Wed Feb 26 2025 03:17:59 for MythTV by
1.8.17