00001 #ifndef AUDIOOUTPUTNULL
00002 #define AUDIOOUTPUTNULL
00003
00004 #include <qmutex.h>
00005 #include <pthread.h>
00006
00007 #include "audiooutputbase.h"
00008
00009 #define NULLAUDIO_OUTPUT_BUFFER_SIZE 32768
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 class AudioOutputNULL : public AudioOutputBase
00025 {
00026 public:
00027 AudioOutputNULL(QString laudio_main_device,
00028 QString laudio_passthru_device,
00029 int laudio_bits,
00030 int laudio_channels, int laudio_samplerate,
00031 AudioOutputSource lsource,
00032 bool lset_initial_vol, bool laudio_passthru);
00033 virtual ~AudioOutputNULL();
00034
00035 virtual void Reset(void);
00036
00037
00038
00039 virtual int GetVolumeChannel(int ){ return 100; }
00040 virtual void SetVolumeChannel(int , int ){ return; }
00041
00042 virtual int readOutputData(unsigned char *read_buffer, int max_length);
00043
00044 protected:
00045
00046 virtual bool OpenDevice(void);
00047 virtual void CloseDevice(void);
00048 virtual void WriteAudio(unsigned char *aubuf, int size);
00049 virtual inline int getSpaceOnSoundcard(void);
00050 virtual inline int getBufferedOnSoundcard(void);
00051
00052 private:
00053
00054 QMutex pcm_output_buffer_mutex;
00055 unsigned char pcm_output_buffer[NULLAUDIO_OUTPUT_BUFFER_SIZE];
00056 int current_buffer_size;
00057
00058 int locked_audio_channels;
00059 int locked_audio_bits;
00060 int locked_audio_samplerate;
00061 };
00062
00063 #endif
00064