MythTV  master
audiooutputca.h
Go to the documentation of this file.
1 #ifndef AUDIOOUTPUTCA
2 #define AUDIOOUTPUTCA
3 
4 #include "audiooutputbase.h"
5 
6 #undef AUDBUFSIZE
7 #define AUDBUFSIZE 512000
8 
9 // We hide Core Audio-specific items, to avoid
10 // pulling in Mac-specific header files.
11 class CoreAudioData;
12 
14 {
15 public:
16  explicit AudioOutputCA(const AudioSettings &settings);
17  virtual ~AudioOutputCA();
18 
19  AudioOutputSettings* GetOutputSettings(bool digital) override; // AudioOutputBase
20  static QMap<QString, QString> *GetDevices(const char *type = nullptr);
21 
22  std::chrono::milliseconds GetAudiotime(void) override; // AudioOutputBase
23 
24  // callback for delivering audio to output device
25  bool RenderAudio(unsigned char *aubuf, int size,
26  unsigned long long timestamp);
27 
28  // Volume control
29  int GetVolumeChannel(int channel) const override; // VolumeBase
30  void SetVolumeChannel(int channel, int volume) override; // VolumeBase
31 
32  // TODO: convert these to macros!
33  static void Debug(const QString& msg)
34  { LOG(VB_AUDIO, LOG_INFO, "AudioOutputCA::" + msg); }
35 
36  static void Error(const QString& msg)
37  { LOG(VB_GENERAL, LOG_ERR, "AudioOutputCA Error: " + msg); }
38 
39  static void Warn(const QString& msg)
40  { LOG(VB_GENERAL, LOG_WARNING, "AudioOutputCA Warning: " + msg); }
41 
42 protected:
43 
44  // You need to implement the following functions
45  bool OpenDevice(void) override; // AudioOutputBase
46  void CloseDevice(void) override; // AudioOutputBase
47  void WriteAudio(unsigned char *aubuf, int size) override; // AudioOutputBase
48  int GetBufferedOnSoundcard(void) const override; // AudioOutputBase
49 
50  bool StartOutputThread(void) override { return true; } // AudioOutputBase
51  void StopOutputThread(void) override {} // AudioOutputBase
52 
53 private:
54 
55  CoreAudioData * d {nullptr};
56  friend class CoreAudioData;
57 
58  int m_bufferedBytes {-1};
59 };
60 
61 #endif
62 
AudioOutputCA::OpenDevice
bool OpenDevice(void) override
Definition: audiooutputca.cpp:265
AudioOutputCA::m_bufferedBytes
int m_bufferedBytes
Definition: audiooutputca.h:58
AudioOutputCA::GetBufferedOnSoundcard
int GetBufferedOnSoundcard(void) const override
Return the size in bytes of frames currently in the audio buffer adjusted with the audio playback lat...
Definition: audiooutputca.cpp:403
AudioOutputCA::StartOutputThread
bool StartOutputThread(void) override
Definition: audiooutputca.h:50
AudioOutputCA::RenderAudio
bool RenderAudio(unsigned char *aubuf, int size, unsigned long long timestamp)
Object-oriented part of callback.
Definition: audiooutputca.cpp:358
AudioOutputCA::GetOutputSettings
AudioOutputSettings * GetOutputSettings(bool digital) override
Definition: audiooutputca.cpp:208
CoreAudioData
This holds Core Audio member variables and low-level audio IO methods The name is now a misnomer,...
Definition: audiooutputca.cpp:101
AudioOutputCA::d
CoreAudioData * d
Definition: audiooutputca.h:55
LOG
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
Definition: mythlogging.h:39
AudioOutputCA::GetAudiotime
std::chrono::milliseconds GetAudiotime(void) override
Reimplement the base class's version of GetAudiotime() so that we don't use gettimeofday or Qt mutexe...
Definition: audiooutputca.cpp:411
AudioOutputCA
Implements Core Audio (Mac OS X Hardware Abstraction Layer) output.
Definition: audiooutputca.h:13
AudioOutputCA::GetDevices
static QMap< QString, QString > * GetDevices(const char *type=nullptr)
Definition: audiooutputca.cpp:1758
AudioSettings
Definition: audiosettings.h:28
AudioOutputCA::~AudioOutputCA
virtual ~AudioOutputCA()
Definition: audiooutputca.cpp:201
AudioOutputBase
Definition: audiooutputbase.h:51
AudioOutputCA::CloseDevice
void CloseDevice(void) override
Definition: audiooutputca.cpp:314
AudioOutputCA::WriteAudio
void WriteAudio(unsigned char *aubuf, int size) override
Definition: audiooutputca.cpp:398
AudioOutputCA::StopOutputThread
void StopOutputThread(void) override
Definition: audiooutputca.h:51
AudioOutputCA::Debug
static void Debug(const QString &msg)
Definition: audiooutputca.h:33
audiooutputbase.h
AudioOutputSettings
Definition: audiooutputsettings.h:48
AudioOutputCA::AudioOutputCA
AudioOutputCA(const AudioSettings &settings)
Definition: audiooutputca.cpp:189
AudioOutputCA::SetVolumeChannel
void SetVolumeChannel(int channel, int volume) override
Definition: audiooutputca.cpp:459
AudioOutputCA::GetVolumeChannel
int GetVolumeChannel(int channel) const override
Definition: audiooutputca.cpp:446
AudioOutputCA::Error
static void Error(const QString &msg)
Definition: audiooutputca.h:36
AudioOutputCA::Warn
static void Warn(const QString &msg)
Definition: audiooutputca.h:39