MythTV master
audiogeneralsettings.h
Go to the documentation of this file.
1#ifndef MYTHAUDIOSETTINGS_H
2#define MYTHAUDIOSETTINGS_H
3
4#include <utility>
5
6// Qt headers
7#include <QMutex>
8#include <QObject>
9#include <QStringList>
10
11// MythTV headers
14#include "libmythbase/mthread.h"
19
21class AudioTest;
22
24{
25 Q_OBJECT
26
27 public:
28 AudioConfigScreen(MythScreenStack *parent, const char *name,
29 GroupSetting *groupSetting);
30 protected:
31 void Load(void) override; // StandardSettingDialog
32 void Init(void) override; // StandardSettingDialog
33};
34
36{
37 Q_OBJECT
38
39 public:
41 void Load() override; // StandardSetting
42
43 using ADCMap = QMap<QString,AudioOutput::AudioDeviceConfig>;
44
47
48 void CheckConfiguration(void);
49
50 private slots:
51 void UpdateVisibility(StandardSetting */*setting*/);
52 AudioOutputSettings UpdateCapabilities(bool restore = true,
53 bool AC3 = false);
54 void UpdateCapabilities(StandardSetting */*setting*/);
56 void UpdateCapabilitiesAC3(StandardSetting */*setting*/);
57 void AudioRescan();
58 void UpdateAudioTest();
59
60 private:
61 void setMPCMEnabled(bool flag);
62
77
78 //advanced setting
79 static HostCheckBoxSetting *MPCM();
87
88 bool CheckPassthrough();
89
94
95 // digital settings
102 //advanced setting
106
108
112
115 static const std::array<const char *,2> kMixerControlControls;
116};
117
119{
120 Q_OBJECT
121 public:
123 void AudioRescan();
124
125 void edit(MythScreenType * screen) override; // MythUIComboBoxSetting
126
127 private slots:
129
130 private:
132};
133
134class ChannelChangedEvent : public QEvent
135{
136 public:
137 ChannelChangedEvent(QString channame, bool fulltest);
138 ~ChannelChangedEvent() override = default;
139
140 QString m_channel;
142
143 static const Type kEventType;
144};
145
147{
148 Q_DECLARE_TR_FUNCTIONS(AudioTestThread)
149
150 public:
151
152 AudioTestThread(QObject *parent, QString main, QString passthrough,
153 int channels, AudioOutputSettings &settings, bool hd);
154 ~AudioTestThread() override;
155
156 void cancel();
157 QString result();
158 void setChannel(int channel);
159
160 protected:
161 void run() override; // MThread
162
163 private:
164 QObject *m_parent {nullptr};
167 QString m_device;
169 bool m_interrupted {false};
170 int m_channel {-1};
171 bool m_hd {false};
172 int m_samplerate {48000};
174};
175
177{
178 Q_OBJECT
179 public:
180 AudioTest();
181 ~AudioTest() override;
182 void UpdateCapabilities(const QString &main, const QString &passthrough,
183 int channels, const AudioOutputSettings &settings);
184 bool event(QEvent *event) override; // QObject
185
186 private:
187 int m_channels {2};
199 QString m_main;
202 bool m_quality {false};
203
204 private slots:
205 void toggle();
206 void togglequality(const QString &/*value*/);
207 void cancelTest();
208 void prepareTest();
209};
210#endif
@ FORMAT_S16
void Load(void) override
Load data which will ultimately be displayed on-screen or used to determine what appears on-screen (S...
AudioConfigScreen(MythScreenStack *parent, const char *name, GroupSetting *groupSetting)
void Init(void) override
Used after calling Load() to assign data to widgets and other UI initilisation which is prohibited in...
void UpdateVisibility(StandardSetting *)
AudioDeviceComboBox * m_outputDevice
HostCheckBoxSetting * m_passThroughOverride
ADCMap & AudioDeviceMap(void)
AudioOutputSettings UpdateCapabilitiesAC3(void)
HostComboBoxSetting * m_audioUpmixType
static const std::array< const char *, 2 > kMixerControlControls
static HostComboBoxSetting * PassThroughOutputDevice()
HostCheckBoxSetting * m_trueHDPassThrough
static HostComboBoxSetting * MixerDevice()
static HostCheckBoxSetting * AudioUpmix()
static HostCheckBoxSetting * DTSPassThrough()
static HostCheckBoxSetting * SRCQualityOverride()
static HostCheckBoxSetting * TrueHDPassThrough()
HostCheckBoxSetting * m_dtsPassThrough
static HostCheckBoxSetting * EAC3PassThrough()
static HostComboBoxSetting * AudioUpmixType()
static HostCheckBoxSetting * AC3PassThrough()
static HostCheckBoxSetting * HBRPassthrough()
HostComboBoxSetting * m_passThroughDeviceOverride
HostCheckBoxSetting * m_dtsHDPassThrough
static HostComboBoxSetting * MixerControl()
static HostCheckBoxSetting * Audio48kOverride()
HostCheckBoxSetting * m_ac3PassThrough
static HostComboBoxSetting * MaxAudioChannels()
static HostCheckBoxSetting * MPCM()
HostCheckBoxSetting * m_mpcm
GroupSetting * m_triggerDigital
HostCheckBoxSetting * m_eac3PassThrough
static HostCheckBoxSetting * DTSHDPassThrough()
HostComboBoxSetting * m_maxAudioChannels
static HostCheckBoxSetting * MythControlsVolume()
AudioOutput::ADCVect m_devices
AudioOutputSettings UpdateCapabilities(bool restore=true, bool AC3=false)
AudioDeviceComboBox * OutputDevice()
static HostCheckBoxSetting * SPDIFRateOverride()
static HostSpinBoxSetting * PCMVolume()
QMap< QString, AudioOutput::AudioDeviceConfig > ADCMap
AudioOutput::ADCVect & AudioDeviceVect(void)
static HostComboBoxSetting * SRCQuality()
static HostSpinBoxSetting * MixerVolume()
HostCheckBoxSetting * m_audioUpmix
static HostCheckBoxSetting * PassThroughOverride()
void AudioDescriptionHelp(StandardSetting *setting)
void edit(MythScreenType *screen) override
AudioConfigSettings * m_parent
AudioDeviceComboBox(AudioConfigSettings *parent)
QVector< AudioDeviceConfig > ADCVect
Definition: audiooutput.h:47
void setChannel(int channel)
void run() override
Runs the Qt event loop unless we have a QRunnable, in which case we run the runnable run instead.
AudioTestThread(QObject *parent, QString main, QString passthrough, int channels, AudioOutputSettings &settings, bool hd)
AudioOutput * m_audioOutput
ButtonStandardSetting * m_startButton
ButtonStandardSetting * m_frontright
ButtonStandardSetting * m_lfe
ButtonStandardSetting * m_surroundleft
ButtonStandardSetting * m_frontleft
TransMythUICheckBoxSetting * m_hd
ButtonStandardSetting * m_center
ButtonStandardSetting * m_surroundright
void togglequality(const QString &)
ButtonStandardSetting * m_rearright
bool event(QEvent *event) override
ButtonStandardSetting * m_rearleft
AudioTestThread * m_at
~AudioTest() override
AudioOutputSettings m_settings
void UpdateCapabilities(const QString &main, const QString &passthrough, int channels, const AudioOutputSettings &settings)
~ChannelChangedEvent() override=default
ChannelChangedEvent(QString channame, bool fulltest)
static const Type kEventType
This is a wrapper around QThread that does several additional things.
Definition: mthread.h:49
Screen in which all other widgets are contained and rendered.
@ AC3
Definition: element.h:84