#ifndef __InputPlayer_H__ #define __InputPlayer_H__ #include "AudioRingBuffer3.h" #include "arplayer.h" #include #include #include #include #include using namespace std; class lineInDef { public: lineInDef(void); void set(string UID, unsigned long, long[], unsigned long, unsigned long); ~lineInDef(void); string deviceUID; unsigned long bus; long *channelMap; unsigned long startMIDI; unsigned long stopMIDI; }; typedef map > input_map; typedef map >::iterator input_map_ptr; class InputPlayer: public ARPlayer { public: InputPlayer(unsigned long); ~InputPlayer(void); unsigned char load(string, long*); void start(void); void stop(void); void volChange(float); void setPosition(float); void setStatus(unsigned long); unsigned char IsRunning(); unsigned long startMIDI; unsigned long stopMIDI; AudioDeviceID devID; long * chanMap; private: AudioBufferList *mInputBuffer; AudioRingBuffer *mBuffer; AudioUnit mConverterUnit; AudioUnit mInputUnit; double FirstInputTime; double FirstOutputTime; double EndInputTime; double TargetLatency; double IOOffset; double errorFactor; unsigned long inbufferSizeFrames; unsigned long safteyFrames; AudioStreamBasicDescription inFormat; AudioStreamBasicDescription outFormat; OSStatus SetupAudio(AudioDeviceID, long*); unsigned char SetupBuffers(void); static OSStatus FillBuffer(void*, AudioUnitRenderActionFlags*, const AudioTimeStamp*, unsigned long, unsigned long, AudioBufferList*); static OSStatus ReadBuffer(void*, AudioUnitRenderActionFlags*, const AudioTimeStamp*, unsigned long, unsigned long, AudioBufferList*); }; #endif //__InputPlayer_H__