MythTV  master
audioplayer.cpp
Go to the documentation of this file.
1 
2 #include "audioplayer.h"
4 #include "mythplayer.h"
5 #include "audiooutput.h"
7 
8 #define LOC QString("AudioPlayer: ")
9 
10 //static const QString _Location = AudioPlayer::tr("Audio Player");
11 
13  : m_parent(parent),
14  m_mutedOnCreation(muted)
15 {
16  m_controlsVolume = gCoreContext->GetBoolSetting("MythControlsVolume", true);
17 }
18 
20 {
21  DeleteOutput();
22  m_visuals.clear();
23 }
24 
26 {
27  if (!m_audioOutput)
28  return;
29 
30  QMutexLocker lock(&m_lock);
31  auto it = std::find(m_visuals.begin(), m_visuals.end(), vis);
32  if (it == m_visuals.end())
33  {
34  m_visuals.push_back(vis);
36  }
37 }
38 
40 {
41  if (!m_audioOutput)
42  return;
43 
44  QMutexLocker lock(&m_lock);
45  auto it = std::find(m_visuals.begin(), m_visuals.end(), vis);
46  if (it != m_visuals.end())
47  {
48  m_visuals.erase(it);
50  }
51 }
52 
54 {
55  if (!m_audioOutput)
56  return;
57 
58  QMutexLocker lock(&m_lock);
59  for (auto & visual : m_visuals)
60  m_audioOutput->addVisual(visual);
61 }
62 
64 {
65  if (!m_audioOutput)
66  return;
67 
68  QMutexLocker lock(&m_lock);
69  for (auto & visual : m_visuals)
70  m_audioOutput->removeVisual(visual);
71 }
72 
74 {
75  if (!m_audioOutput)
76  return;
77 
78  QMutexLocker lock(&m_lock);
79  for (auto & visual : m_visuals)
80  visual->prepare();
81 }
82 
84 {
85  if (!m_audioOutput)
86  return;
87 
88  QMutexLocker lock(&m_lock);
90 }
91 
93 {
94  RemoveVisuals();
95  QMutexLocker locker(&m_lock);
96  if (m_audioOutput)
97  {
98  delete m_audioOutput;
99  m_audioOutput = nullptr;
100  }
101  m_noAudioOut = true;
102 }
103 
105 {
106  bool want_audio = m_parent->IsAudioNeeded();
107  QString errMsg;
108  QMutexLocker lock(&m_lock);
109 
110  if ((m_state.m_format == FORMAT_NONE) || (m_state.m_channels <= 0) || (m_state.m_sampleRate <= 0))
111  m_noAudioIn = m_noAudioOut = true;
112  else
113  m_noAudioIn = false;
114 
115  if (want_audio && !m_audioOutput)
116  {
117  // AudioOutput has never been created and we will want audio
123  if (m_noAudioIn)
124  aos.m_init = false;
125 
127  if (!m_audioOutput)
128  {
129  errMsg = tr("Unable to create AudioOutput.");
130  }
131  else
132  {
133  errMsg = m_audioOutput->GetError();
134  }
135  AddVisuals();
136  }
137  else if (!m_noAudioIn && m_audioOutput)
138  {
142  m_audioOutput->Reconfigure(settings);
143  errMsg = m_audioOutput->GetError();
145  }
146 
147  if (!errMsg.isEmpty())
148  {
149  LOG(VB_GENERAL, LOG_NOTICE, LOC + "Disabling Audio" +
150  QString(", reason is: %1").arg(errMsg));
151  ShowNotificationError(tr("Disabling Audio"),
152  AudioPlayer::tr( "Audio Player" ), errMsg);
153  m_noAudioOut = true;
154  }
155  else if (m_noAudioOut && m_audioOutput)
156  {
157  LOG(VB_GENERAL, LOG_NOTICE, LOC + "Enabling Audio");
158  m_noAudioOut = false;
159  }
160 
161  if (m_mutedOnCreation)
162  {
164  m_mutedOnCreation = false;
165  }
166 
167  ResetVisuals();
168 
169  return errMsg;
170 }
171 
173 {
175  m_noAudioIn = m_noAudioOut = true;
176 }
177 
178 bool AudioPlayer::Pause(bool pause)
179 {
180  if (!m_audioOutput || m_noAudioOut)
181  return false;
182 
183  QMutexLocker lock(&m_lock);
184  m_audioOutput->Pause(pause);
185  return true;
186 }
187 
189 {
190  if (!m_audioOutput || m_noAudioOut)
191  return false;
192  QMutexLocker lock(&m_lock);
193  return m_audioOutput->IsPaused();
194 }
195 
197 {
198  if (!m_audioOutput || m_noAudioOut)
199  return;
200  QMutexLocker lock(&m_lock);
202 }
203 
205 {
206  // delete current audio class if any
207  DeleteOutput();
208  m_lock.lock();
209  m_audioOutput = ao;
210  AddVisuals();
211  m_lock.unlock();
212 }
213 
215 {
216  if (!m_audioOutput || m_noAudioOut)
217  return 0;
218  QMutexLocker lock(&m_lock);
220 }
221 
226 void AudioPlayer::SetAudioInfo(const QString &main_device,
227  const QString &passthru_device,
228  uint samplerate,
229  int codec_profile)
230 {
231  m_mainDevice.clear();
232  m_passthruDevice.clear();
233  if (!main_device.isEmpty())
234  m_mainDevice = main_device;
235  if (!passthru_device.isEmpty())
236  m_passthruDevice = passthru_device;
237  m_state.m_sampleRate = static_cast<int>(samplerate);
238  m_state.m_codecProfile = codec_profile;
240 }
241 
246 void AudioPlayer::SetAudioParams(AudioFormat format, int orig_channels,
247  int channels, AVCodecID codec,
248  int samplerate, bool passthru,
249  int codec_profile)
250 {
251  m_state.m_format = CanProcess(format) ? format : FORMAT_S16;
252  m_state.m_origChannels = orig_channels;
253  m_state.m_channels = channels;
254  m_state.m_codec = codec;
255  m_state.m_sampleRate = samplerate;
256  m_state.m_passthru = passthru;
257  m_state.m_codecProfile = codec_profile;
258  ResetVisuals();
260 }
261 
262 void AudioPlayer::SetEffDsp(int dsprate)
263 {
264  if (!m_audioOutput || !m_noAudioOut)
265  return;
266  QMutexLocker lock(&m_lock);
267  m_audioOutput->SetEffDsp(dsprate);
268 }
269 
270 bool AudioPlayer::SetMuted(bool mute)
271 {
272  bool is_muted = IsMuted();
273  QMutexLocker lock(&m_lock);
274 
275  if (m_audioOutput && !m_noAudioOut && !is_muted && mute &&
277  {
278  LOG(VB_AUDIO, LOG_INFO, QString("muting sound %1").arg(IsMuted()));
279  return true;
280  }
281  if (m_audioOutput && !m_noAudioOut && is_muted && !mute &&
283  {
284  LOG(VB_AUDIO, LOG_INFO, QString("unmuting sound %1").arg(IsMuted()));
285  return true;
286  }
287 
288  LOG(VB_AUDIO, LOG_ERR,
289  QString("not changing sound mute state %1").arg(IsMuted()));
290 
291  return false;
292 }
293 
295 {
296  if (!m_audioOutput || m_noAudioOut)
297  return kMuteAll;
298  QMutexLocker lock(&m_lock);
299  return m_audioOutput->SetMuteState(mstate);
300 }
301 
303 {
304  if (!m_audioOutput || m_noAudioOut)
305  return kMuteAll;
307 }
308 
310 {
311  if (!m_audioOutput || m_noAudioOut)
312  return kMuteAll;
313  QMutexLocker lock(&m_lock);
314  return m_audioOutput->GetMuteState();
315 }
316 
318 {
319  if (!m_audioOutput || m_noAudioOut)
320  return GetVolume();
321  QMutexLocker lock(&m_lock);
323  return GetVolume();
324 }
325 
327 {
328  if (!m_audioOutput || m_noAudioOut)
329  return GetVolume();
330  QMutexLocker lock(&m_lock);
331  m_audioOutput->SetCurrentVolume(newvolume);
332  return GetVolume();
333 }
334 
336 {
337  if (!m_audioOutput || m_noAudioOut)
338  return 0LL;
339  QMutexLocker lock(&m_lock);
340  return m_audioOutput->GetAudiotime();
341 }
342 
344 {
345  if (!m_audioOutput)
346  return false;
347  QMutexLocker lock(&m_lock);
348  return m_audioOutput->IsUpmixing();
349 }
350 
351 bool AudioPlayer::EnableUpmix(bool enable, bool toggle)
352 {
353  if (!m_audioOutput)
354  return false;
355  QMutexLocker lock(&m_lock);
356  if (toggle || (enable != IsUpmixing()))
357  return m_audioOutput->ToggleUpmix();
358  return enable;
359 }
360 
362 {
363  if (!m_audioOutput)
364  return false;
365  QMutexLocker lock(&m_lock);
366  return m_audioOutput->CanUpmix();
367 }
368 
370 {
371  m_stretchFactor = factor;
372  if (!m_audioOutput)
373  return;
374  QMutexLocker lock(&m_lock);
376 }
377 
378 // The following methods are not locked as this hinders performance.
379 // They are however only called from the Decoder and only the decode
380 // thread will trigger a deletion/recreation of the AudioOutput device, hence
381 // they should be safe.
382 
384 {
385  if (!ao)
386  return false;
387 
388  return ao->GetOutputSettingsUsers(true)->canFeature(feature);
389 }
390 
392 {
394 }
395 
397 {
399 }
400 
402 {
404 }
405 
407 {
409 }
410 
412 {
414 }
415 
417 {
418  if (!m_audioOutput)
419  return 2;
421 }
422 
424 {
425  if (!m_audioOutput)
426  return 0;
428 }
429 
430 bool AudioPlayer::CanPassthrough(int samplerate, int channels,
431  AVCodecID codec, int profile)
432 {
433  if (!m_audioOutput)
434  return false;
435  return m_audioOutput->CanPassthrough(samplerate, channels, codec, profile);
436 }
437 
439 {
440  if (!m_audioOutput)
441  return false;
442  return m_audioOutput->CanDownmix();
443 }
444 
445 /*
446  * if frames = -1 : let AudioOuput calculate value
447  * if frames = 0 && len > 0: will calculate according to len
448  */
449 void AudioPlayer::AddAudioData(char *buffer, int len,
450  int64_t timecode, int frames)
451 {
452  if (!m_audioOutput || m_noAudioOut)
453  return;
454 
455  if (m_parent->PrepareAudioSample(timecode) && !m_noAudioOut)
456  m_audioOutput->Drain();
457  int samplesize = m_audioOutput->GetBytesPerFrame();
458 
459  if (samplesize <= 0)
460  return;
461 
462  if (frames == 0 && len > 0)
463  frames = len / samplesize;
464 
465  if (!m_audioOutput->AddData(buffer, len, timecode, frames))
466  LOG(VB_PLAYBACK, LOG_ERR, LOC + "AddAudioData(): "
467  "Audio buffer overflow, audio data lost!");
468 }
469 
471 {
472  if (!m_audioOutput)
473  return true;
475 }
476 
478 {
479  if (!m_audioOutput)
480  return 0;
481  return m_audioOutput->LengthLastData();
482 }
483 
485 {
486  fill = total = 0;
487  if (!m_audioOutput || m_noAudioOut)
488  return false;
489  m_audioOutput->GetBufferStatus(fill, total);
490  return true;
491 }
492 
494 {
495  uint ofill = 0;
496  uint ototal = 0;
497  if (GetBufferStatus(ofill, ototal))
498  {
499  uint othresh = ((ototal>>1) + (ototal>>2));
500  if (ofill > othresh)
501  return true;
502  return GetAudioBufferedTime() > 8000;
503  }
504  return false;
505 }
506 
508 {
510 }
511 
512 
514 {
515  if (!m_audioOutput)
516  return false;
517  return m_audioOutput->CanProcess(fmt);
518 }
519 
521 {
522  if (!m_audioOutput)
523  return 0;
524  return m_audioOutput->CanProcess();
525 }
526 
537 int AudioPlayer::DecodeAudio(AVCodecContext *ctx,
538  uint8_t *buffer, int &data_size,
539  const AVPacket *pkt)
540 {
541  if (!m_audioOutput)
542  {
543  data_size = 0;
544  return 0;
545  }
546  return m_audioOutput->DecodeAudio(ctx, buffer, data_size, pkt);
547 }
AudioOutput::GetError
QString GetError(void) const
Definition: audiooutput.h:146
OutputListeners::addVisual
void addVisual(MythTV::Visual *v)
Definition: output.cpp:35
AudioPlayer::addVisual
void addVisual(MythTV::Visual *vis)
Definition: audioplayer.cpp:25
FORMAT_NONE
@ FORMAT_NONE
Definition: audiooutputsettings.h:26
AudioPlayer::CanAC3
bool CanAC3(void)
Definition: audioplayer.cpp:391
VolumeBase::SetCurrentVolume
virtual void SetCurrentVolume(int value)
Definition: volumebase.cpp:122
AudioOutput::LengthLastData
virtual int64_t LengthLastData(void) const
Definition: audiooutput.h:129
AudioOutput::GetAudioBufferedTime
virtual int64_t GetAudioBufferedTime(void)
report amount of audio buffered in milliseconds.
Definition: audiooutput.h:142
LOC
#define LOC
Definition: audioplayer.cpp:8
AudioPlayer::SetEffDsp
void SetEffDsp(int dsprate)
Definition: audioplayer.cpp:262
AudioPlayer::m_audioOutput
AudioOutput * m_audioOutput
Definition: audioplayer.h:113
AudioPlayer::Reset
void Reset(void)
Definition: audioplayer.cpp:83
ShowNotificationError
void ShowNotificationError(const QString &msg, const QString &from, const QString &detail, const VNMask visibility, const MythNotification::Priority priority)
convenience utility to display error message as notification
Definition: mythnotificationcenter.cpp:1428
FORMAT_S16
@ FORMAT_S16
Definition: audiooutputsettings.h:28
MythPlayer::PrepareAudioSample
virtual bool PrepareAudioSample(int64_t &timecode)
Definition: mythplayer.cpp:1272
VolumeBase::AdjustCurrentVolume
virtual void AdjustCurrentVolume(int change)
Definition: volumebase.cpp:131
AudioPlayer::ReinitAudio
QString ReinitAudio(void)
Definition: audioplayer.cpp:104
VolumeBase::GetCurrentVolume
virtual uint GetCurrentVolume(void) const
Definition: volumebase.cpp:117
AudioPlayer::~AudioPlayer
~AudioPlayer() override
Definition: audioplayer.cpp:19
AudioOutput::Reset
virtual void Reset(void)=0
AudioPlayer::ResetVisuals
void ResetVisuals(void)
Definition: audioplayer.cpp:73
FEATURE_AC3
@ FEATURE_AC3
Definition: audiooutputsettings.h:37
AudioPlayer::EnableUpmix
bool EnableUpmix(bool enable, bool toggle=false)
Definition: audioplayer.cpp:351
AudioPlayer::AudioPlayerStateChanged
void AudioPlayerStateChanged(MythAudioPlayerState State)
AudioPlayer::m_lock
QMutex m_lock
Definition: audioplayer.h:116
AudioOutput::GetBytesPerFrame
virtual int GetBytesPerFrame(void) const
Definition: audiooutput.h:78
VolumeBase::SetMuteState
virtual MuteState SetMuteState(MuteState)
Definition: volumebase.cpp:136
AudioPlayer::GetVolume
uint GetVolume(void)
Definition: audioplayer.cpp:214
arg
arg(title).arg(filename).arg(doDelete))
AudioPlayer::SetStretchFactor
void SetStretchFactor(float factor)
Definition: audioplayer.cpp:369
AudioPlayer::SetMuteState
MuteState SetMuteState(MuteState mstate)
Definition: audioplayer.cpp:294
AudioOutput::NeedDecodingBeforePassthrough
virtual bool NeedDecodingBeforePassthrough(void) const
Definition: audiooutput.h:122
AudioPlayer::CheckFormat
void CheckFormat(void)
Definition: audioplayer.cpp:172
AudioPlayer::IsBufferAlmostFull
bool IsBufferAlmostFull(void)
Definition: audioplayer.cpp:493
FEATURE_TRUEHD
@ FEATURE_TRUEHD
Definition: audiooutputsettings.h:41
LOG
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
Definition: mythlogging.h:23
AudioPlayer::m_mainDevice
QString m_mainDevice
Definition: audioplayer.h:118
mythplayer.h
FEATURE_EAC3
@ FEATURE_EAC3
Definition: audiooutputsettings.h:40
MythPlayer
Definition: mythplayer.h:83
AudioPlayer::SetMuted
bool SetMuted(bool mute)
Definition: audioplayer.cpp:270
AudioPlayer::GetMuteState
MuteState GetMuteState(void)
Definition: audioplayer.cpp:309
OutputListeners::removeVisual
void removeVisual(MythTV::Visual *v)
Definition: output.cpp:42
AudioPlayer::CanTrueHD
bool CanTrueHD(void)
Definition: audioplayer.cpp:406
AudioPlayer::GetAudioBufferedTime
int64_t GetAudioBufferedTime(void)
Definition: audioplayer.cpp:507
AudioOutput::CanDownmix
virtual bool CanDownmix(void) const
Definition: audiooutput.h:84
AudioOutput::OpenAudio
static AudioOutput * OpenAudio(const QString &main_device, const QString &passthru_device, AudioFormat format, int channels, AVCodecID codec, int samplerate, AudioOutputSource source, bool set_initial_vol, bool passthru, int upmixer_startup=0, AudioOutputSettings *custom=nullptr)
Definition: audiooutput.cpp:56
AudioOutput::CanProcess
virtual bool CanProcess(AudioFormat fmt)
Definition: audiooutput.h:167
AudioOutput::CanUpmix
virtual bool CanUpmix(void)
Definition: audiooutput.h:159
AudioOutput::Drain
virtual void Drain(void)=0
MuteState
MuteState
Definition: volumebase.h:6
AudioPlayer::SetAudioInfo
void SetAudioInfo(const QString &main_device, const QString &passthru_device, uint samplerate, int codec_profile=-1)
Set audio output device parameters.
Definition: audioplayer.cpp:226
AudioSettings
Definition: audiosettings.h:28
AudioPlayer::IsPaused
bool IsPaused(void)
Definition: audioplayer.cpp:188
MythTV::Visual
Definition: visual.h:16
AudioOutput::CanPassthrough
virtual bool CanPassthrough(int samplerate, int channels, AVCodecID codec, int profile) const
Definition: audiooutput.cpp:265
AudioPlayer::GetAudioTime
int64_t GetAudioTime(void)
Definition: audioplayer.cpp:335
AudioOutput
Definition: audiooutput.h:25
AudioPlayer::SetVolume
uint SetVolume(int newvolume)
Definition: audioplayer.cpp:326
TestDigitalFeature
bool TestDigitalFeature(AudioOutput *ao, DigitalFeature feature)
Definition: audioplayer.cpp:383
AudioSettings::m_init
bool m_init
If set to false, AudioOutput instance will not try to initially open the audio device.
Definition: audiosettings.h:85
AudioPlayer::DecodeAudio
int DecodeAudio(AVCodecContext *ctx, uint8_t *buffer, int &data_size, const AVPacket *pkt)
DecodeAudio Utility routine.
Definition: audioplayer.cpp:537
AudioOutput::Pause
virtual void Pause(bool paused)=0
hardwareprofile.scan.profile
profile
Definition: scan.py:99
AudioOutputSettings::GetMaxHDRate
int GetMaxHDRate() const
return the highest iec958 rate supported.
Definition: audiooutputsettings.cpp:414
AudioPlayer::m_controlsVolume
bool m_controlsVolume
Definition: audioplayer.h:122
AudioPlayer::DeleteOutput
void DeleteOutput(void)
Definition: audioplayer.cpp:92
AudioPlayer::AudioPlayer
AudioPlayer(MythPlayer *parent, bool muted)
Definition: audioplayer.cpp:12
feature
static const std::array< featureStruct, 7 > feature
Definition: audiooutputsettings.cpp:433
AudioPlayer::SetAudioParams
void SetAudioParams(AudioFormat format, int orig_channels, int channels, AVCodecID codec, int samplerate, bool passthru, int codec_profile=-1)
Set audio output parameters.
Definition: audioplayer.cpp:246
AudioOutputSettings::BestSupportedChannels
int BestSupportedChannels()
Definition: audiooutputsettings.cpp:253
FEATURE_DTS
@ FEATURE_DTS
Definition: audiooutputsettings.h:38
MythAudioPlayerState::m_sampleRate
int m_sampleRate
Definition: mythplayerstate.h:39
AudioPlayer::AdjustVolume
uint AdjustVolume(int change)
Definition: audioplayer.cpp:317
AudioPlayer::m_stretchFactor
float m_stretchFactor
Definition: audioplayer.h:115
AudioPlayer::CanPassthrough
bool CanPassthrough(int samplerate, int channels, AVCodecID codec, int profile)
Definition: audioplayer.cpp:430
AudioPlayer::CanDTS
bool CanDTS(void)
Definition: audioplayer.cpp:396
AudioOutput::GetAudiotime
virtual int64_t GetAudiotime(void)=0
AudioPlayer::IsUpmixing
bool IsUpmixing(void)
Definition: audioplayer.cpp:343
MythPlayer::IsAudioNeeded
bool IsAudioNeeded(void)
Definition: mythplayer.h:134
VolumeBase::GetMuteState
virtual MuteState GetMuteState(void) const
Definition: volumebase.cpp:149
AudioPlayer::IncrMuteState
MuteState IncrMuteState(void)
Definition: audioplayer.cpp:302
AudioPlayer::GetMaxHDRate
int GetMaxHDRate(void)
Definition: audioplayer.cpp:423
MythAudioPlayerState::m_codecProfile
int m_codecProfile
Definition: mythplayerstate.h:40
VolumeBase::NextMuteState
static MuteState NextMuteState(MuteState)
Definition: volumebase.cpp:154
AudioPlayer::RemoveVisuals
void RemoveVisuals(void)
Definition: audioplayer.cpp:63
AudioOutput::DecodeAudio
virtual int DecodeAudio(AVCodecContext *ctx, uint8_t *buffer, int &data_size, const AVPacket *pkt)
Utility routine.
Definition: audiooutput.cpp:594
AudioPlayer::GetBufferStatus
bool GetBufferStatus(uint &fill, uint &total)
Definition: audioplayer.cpp:484
MythAudioPlayerState::m_passthru
bool m_passthru
Definition: mythplayerstate.h:41
AudioPlayer::CanDTSHD
bool CanDTSHD(void)
Definition: audioplayer.cpp:411
AudioPlayer::IsMuted
bool IsMuted(void)
Definition: audioplayer.h:88
AudioOutput::SetEffDsp
virtual void SetEffDsp(int dsprate)=0
AudioOutputSettings::canFeature
bool canFeature(DigitalFeature arg) const
return DigitalFeature mask.
Definition: audiooutputsettings.h:89
kMuteOff
@ kMuteOff
Definition: volumebase.h:7
uint
unsigned int uint
Definition: compat.h:141
gCoreContext
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
Definition: mythcorecontext.cpp:60
AudioPlayer::AddAudioData
void AddAudioData(char *buffer, int len, int64_t timecode, int frames)
Definition: audioplayer.cpp:449
AudioPlayer::m_noAudioIn
bool m_noAudioIn
Definition: audioplayer.h:120
AudioPlayer::m_parent
MythPlayer * m_parent
Definition: audioplayer.h:112
MythAudioPlayerState::m_format
AudioFormat m_format
Definition: mythplayerstate.h:38
AudioOutput::AddData
virtual bool AddData(void *buffer, int len, int64_t timecode, int frames)=0
Add data to the audiobuffer for playback.
AudioPlayer::SetAudioOutput
void SetAudioOutput(AudioOutput *ao)
Definition: audioplayer.cpp:204
MythCoreContext::GetBoolSetting
bool GetBoolSetting(const QString &key, bool defaultval=false)
Definition: mythcorecontext.cpp:927
AudioPlayer::GetMaxChannels
uint GetMaxChannels(void)
Definition: audioplayer.cpp:416
AudioPlayer::removeVisual
void removeVisual(MythTV::Visual *vis)
Definition: audioplayer.cpp:39
MythAudioPlayerState::m_codec
AVCodecID m_codec
Definition: mythplayerstate.h:37
AudioPlayer::AddVisuals
void AddVisuals(void)
Definition: audioplayer.cpp:53
AudioPlayer::CanUpmix
bool CanUpmix(void)
Definition: audioplayer.cpp:361
AudioPlayer::m_state
MythAudioPlayerState m_state
Definition: audioplayer.h:114
AudioPlayer::m_visuals
vector< MythTV::Visual * > m_visuals
Definition: audioplayer.h:123
AudioPlayer::NeedDecodingBeforePassthrough
bool NeedDecodingBeforePassthrough(void)
Definition: audioplayer.cpp:470
AudioOutput::Reconfigure
virtual void Reconfigure(const AudioSettings &settings)=0
AUDIOOUTPUT_VIDEO
@ AUDIOOUTPUT_VIDEO
Definition: audiosettings.h:23
AudioOutput::GetBufferStatus
virtual void GetBufferStatus(uint &fill, uint &total)
Definition: audiooutput.h:149
AudioOutput::SetStretchFactor
virtual void SetStretchFactor(float factor)
Definition: audiooutput.cpp:251
AudioPlayer::m_noAudioOut
bool m_noAudioOut
Definition: audioplayer.h:121
audiooutput.h
DigitalFeature
DigitalFeature
Definition: audiooutputsettings.h:35
AudioPlayer::LengthLastData
int64_t LengthLastData(void)
Definition: audioplayer.cpp:477
audioplayer.h
videovisual.h
AudioPlayer::Pause
bool Pause(bool pause)
Definition: audioplayer.cpp:178
AudioPlayer::m_passthruDevice
QString m_passthruDevice
Definition: audioplayer.h:119
AudioOutput::IsUpmixing
virtual bool IsUpmixing(void)
Definition: audiooutput.h:157
AudioPlayer::CanDownmix
bool CanDownmix(void)
Definition: audioplayer.cpp:438
AudioPlayer::CanProcess
uint32_t CanProcess(void)
Definition: audioplayer.cpp:520
kMuteAll
@ kMuteAll
Definition: volumebase.h:10
AudioPlayer::PauseAudioUntilBuffered
void PauseAudioUntilBuffered(void)
Definition: audioplayer.cpp:196
AudioPlayer::CanEAC3
bool CanEAC3(void)
Definition: audioplayer.cpp:401
AudioFormat
AudioFormat
Definition: audiooutputsettings.h:25
MythAudioPlayerState::m_origChannels
int m_origChannels
Definition: mythplayerstate.h:36
AudioOutput::GetOutputSettingsUsers
virtual AudioOutputSettings * GetOutputSettingsUsers(bool digital=true)
Definition: audiooutput.cpp:260
mythnotificationcenter.h
FEATURE_DTSHD
@ FEATURE_DTSHD
Definition: audiooutputsettings.h:42
AudioPlayer::m_mutedOnCreation
bool m_mutedOnCreation
Definition: audioplayer.h:117
AudioOutput::ToggleUpmix
virtual bool ToggleUpmix(void)
Definition: audiooutput.h:158
AudioOutput::PauseUntilBuffered
virtual void PauseUntilBuffered(void)=0
AudioOutput::IsPaused
virtual bool IsPaused(void) const =0
find
static pid_list_t::iterator find(const PIDInfoMap &map, pid_list_t &list, pid_list_t::iterator begin, pid_list_t::iterator end, bool find_open)
Definition: dvbstreamhandler.cpp:356
MythAudioPlayerState::m_channels
int m_channels
Definition: mythplayerstate.h:35