00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef DRIVER_H
00024 #define DRIVER_H
00025
00026 #include "defines.h"
00027 #include <memops.h>
00028
00029
00030 #define DEFAULTDRIVERBUFFERSIZE 1024
00031
00032 #include <QList>
00033 #include <QString>
00034 #include <QObject>
00035
00036 class AudioDevice;
00037 class AudioChannel;
00038
00039 class Driver : public QObject
00040 {
00041 public:
00042 Driver(AudioDevice* dev, int rate, nframes_t bufferSize);
00043 virtual ~Driver();
00044
00045 virtual int _run_cycle();
00046 virtual int _read(nframes_t nframes);
00047 virtual int _write(nframes_t nframes);
00048 virtual int _null_cycle(nframes_t nframes);
00049 virtual int setup(bool capture=true, bool playback=true, const QString& cardDevice="none");
00050 virtual int attach();
00051 virtual int detach();
00052 virtual int start();
00053 virtual int stop();
00054 virtual QString get_device_name();
00055 virtual QString get_device_longname();
00056
00057 ProcessCallback read;
00058 ProcessCallback write;
00059 RunCycleCallback run_cycle;
00060
00061
00062 protected:
00063 AudioDevice* device;
00064 QList<AudioChannel* > captureChannels;
00065 QList<AudioChannel* > playbackChannels;
00066 int dither;
00067 dither_state_t* dither_state;
00068 trav_time_t period_usecs;
00069 trav_time_t last_wait_ust;
00070 nframes_t frame_rate;
00071 nframes_t frames_per_cycle;
00072 nframes_t capture_frame_latency;
00073 nframes_t playback_frame_latency;
00074
00075 };
00076
00077
00078 #endif
00079
00080
00081