00001 #ifndef AUDIOOUTPUTCA
00002 #define AUDIOOUTPUTCA
00003
00004 #include <vector>
00005 #include <qstring.h>
00006
00007 #include "audiooutputbase.h"
00008
00009 using namespace std;
00010
00011 #undef AUDBUFSIZE
00012 #define AUDBUFSIZE 512000
00013
00014
00015
00016 class CoreAudioData;
00017
00018 class AudioOutputCA : public AudioOutputBase
00019 {
00020 public:
00021 AudioOutputCA(QString laudio_main_device,
00022 QString laudio_passthru_device,
00023 int laudio_bits,
00024 int laudio_channels, int laudio_samplerate,
00025 AudioOutputSource lsource,
00026 bool lset_initial_vol, bool laudio_passthru);
00027 virtual ~AudioOutputCA();
00028
00029 virtual int GetAudiotime(void);
00030 void SetAudiotime(void);
00031
00032
00033 bool RenderAudio(unsigned char *aubuf, int size,
00034 unsigned long long timestamp);
00035
00036
00037 virtual int GetVolumeChannel(int channel);
00038 virtual void SetVolumeChannel(int channel, int volume);
00039
00040 void Debug(QString msg)
00041 { VERBOSE(VB_AUDIO, "AudioOutputCA::" + msg); }
00042
00043 void Error(QString msg)
00044 { VERBOSE(VB_IMPORTANT, "AudioOutputCA Error: " + msg); }
00045
00046 void Warn(QString msg)
00047 { VERBOSE(VB_IMPORTANT, "AudioOutputCA Warning: " + msg); }
00048
00049 protected:
00050
00051
00052 virtual bool OpenDevice(void);
00053 virtual void CloseDevice(void);
00054 virtual void WriteAudio(unsigned char *aubuf, int size);
00055 virtual int getSpaceOnSoundcard(void);
00056 virtual int getBufferedOnSoundcard(void);
00057
00058 virtual bool StartOutputThread(void) { return true; }
00059 virtual void StopOutputThread(void) {}
00060
00061 private:
00062
00063 CoreAudioData * d;
00064 friend class CoreAudioData;
00065
00066 int bufferedBytes;
00067 long CA_audiotime_updated;
00068 };
00069
00070 #endif
00071