colorchord/sound.h
2015-01-06 22:51:39 -05:00

37 lines
1.1 KiB
C

#ifndef _SOUND_H
#define _SOUND_H
#define MAX_SOUND_DRIVERS 10
struct SoundDriver;
typedef void(*SoundCBType)( float * out, float * in, int samplesr, int * samplesp, struct SoundDriver * sd );
typedef void*(SoundInitFn)( SoundCBType cb );
struct SoundDriver
{
void (*CloseFn)( void * object );
int (*SoundStateFn)( struct SoundDriver * object );
SoundCBType callback;
int channelsPlay;
int spsPlay;
int channelsRec;
int spsRec;
//More fields may exist on a per-sound-driver basis
};
//Accepts:
// samplerate=44100;channels=2;devplay=default;devrecord=default;record=1;play=1;minavailcount=4096;stopthresh=1024;startthresh=4096;buffer=1024
// buffer is in samples
//If DriverName = 0 or empty, will try to find best driver.
struct SoundDriver * InitSound( const char * driver_name, SoundCBType cb );
int SoundState( struct SoundDriver * soundobject ); //returns 0 if okay, negative if faulted.
void CloseSound( struct SoundDriver * soundobject );
//Called by various sound drivers. Notice priority must be greater than 0. Priority of 0 or less will not register.
void RegSound( int priority, const char * name, SoundInitFn * fn );
#endif