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 protected:
33 
34  // You need to implement the following functions
35  bool OpenDevice(void) override; // AudioOutputBase
36  void CloseDevice(void) override; // AudioOutputBase
37  void WriteAudio(unsigned char *aubuf, int size) override; // AudioOutputBase
38  int GetBufferedOnSoundcard(void) const override; // AudioOutputBase
39 
40  bool StartOutputThread(void) override { return true; } // AudioOutputBase
41  void StopOutputThread(void) override {} // AudioOutputBase
42 
43 private:
44 
45  CoreAudioData * d {nullptr};
46  friend class CoreAudioData;
47 
48  int m_bufferedBytes {-1};
49 };
50 
51 #endif
52 
AudioOutputCA::OpenDevice
bool OpenDevice(void) override
Definition: audiooutputca.cpp:256
AudioOutputCA::m_bufferedBytes
int m_bufferedBytes
Definition: audiooutputca.h:48
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:394
AudioOutputCA::StartOutputThread
bool StartOutputThread(void) override
Definition: audiooutputca.h:40
AudioOutputCA::RenderAudio
bool RenderAudio(unsigned char *aubuf, int size, unsigned long long timestamp)
Object-oriented part of callback.
Definition: audiooutputca.cpp:349
AudioOutputCA::GetOutputSettings
AudioOutputSettings * GetOutputSettings(bool digital) override
Definition: audiooutputca.cpp:199
CoreAudioData
This holds Core Audio member variables and low-level audio IO methods The name is now a misnomer,...
Definition: audiooutputca.cpp:102
AudioOutputCA::d
CoreAudioData * d
Definition: audiooutputca.h:45
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:402
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:1749
AudioSettings
Definition: audiosettings.h:28
AudioOutputCA::~AudioOutputCA
virtual ~AudioOutputCA()
Definition: audiooutputca.cpp:192
AudioOutputBase
Definition: audiooutputbase.h:40
AudioOutputCA::CloseDevice
void CloseDevice(void) override
Definition: audiooutputca.cpp:305
AudioOutputCA::WriteAudio
void WriteAudio(unsigned char *aubuf, int size) override
Definition: audiooutputca.cpp:389
AudioOutputCA::StopOutputThread
void StopOutputThread(void) override
Definition: audiooutputca.h:41
audiooutputbase.h
AudioOutputSettings
Definition: audiooutputsettings.h:48
AudioOutputCA::AudioOutputCA
AudioOutputCA(const AudioSettings &settings)
Definition: audiooutputca.cpp:180
AudioOutputCA::SetVolumeChannel
void SetVolumeChannel(int channel, int volume) override
Definition: audiooutputca.cpp:450
AudioOutputCA::GetVolumeChannel
int GetVolumeChannel(int channel) const override
Definition: audiooutputca.cpp:437