00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00021
00022 #ifndef __SNDKIT_
00023
00024 #import <Foundation/Foundation.h>
00025
00026 #import "Snd.h"
00027
00029
00038 @interface SndOnDisk : Snd {
00039 BOOL bImageInMemory;
00040 NSString *theFileName;
00041
00042 SndAudioBuffer *cachedBuffer;
00043 NSRange cachedBufferRange;
00044 NSLock *cacheLock;
00045
00046 NSConditionLock *readAheadLock;
00047 SndAudioBuffer *readAheadBuffer;
00048 NSRange readAheadRange;
00049 }
00050
00051 - init;
00052 - (void) dealloc;
00053 - (unsigned char*) data;
00054 - (int) dataSize;
00055 - (int) readSoundfile:(NSString *)filename startFrame: (int) startFrame frameCount: (int) frameCount;
00056 - (int) readSoundfile: (NSString*) filename;
00057 - (SndAudioBuffer*) audioBufferForSamplesInRange: (NSRange) playRegion;
00058 - (long) fillAudioBuffer: (SndAudioBuffer *) buff
00059 toLength: (long) fillLength
00060 samplesInRange: (NSRange) sndSampleReadRange;
00061
00062 - (NSString*) filename;
00063
00064 - requestNextBufferWithRange: (NSRange) range;
00065 - receiveRequestedBuffer: (SndAudioBuffer*) aBuffer;
00066
00067 @end
00068
00069 @interface SndOnDiskAudioBufferServerJob : NSObject {
00070 SndOnDisk *clientSndOnDisk;
00071 NSRange audioBufferRange;
00072 SndAudioBuffer *audioBuffer;
00073 }
00074
00075 - initWithSndOnDisk: (SndOnDisk*) sndExpt bufferRange: (NSRange) range;
00076 - (SndOnDisk*) snd;
00077 - (NSRange) range;
00078 - (SndAudioBuffer*) buffer;
00079
00080 @end
00081
00082 @interface SndOnDiskAudioBufferServer : NSObject {
00083 NSMutableArray *pendingJobsArray;
00084 NSConditionLock *pendingJobsArrayLock;
00085 BOOL bGo;
00086 SndOnDiskAudioBufferServerJob *activeJob;
00087 }
00088
00089 + (void) initialize;
00090 + defaultServer;
00091 + (SndAudioBuffer*) readRange: (NSRange) range ofSoundFile: (NSString*) theFileName;
00092 - addJob: (SndOnDiskAudioBufferServerJob*) aJob;
00093 - (void) serverThread;
00094 @end
00095
00097
00098 #endif