00001
00002
00003 #ifndef __sound_h__
00004 #define __sound_h__
00005
00006 #include <linux/soundcard.h>
00007
00008 typedef struct {
00009
00010 char dsp_device[ PATH_MAX + 1 ];
00011 char mixer_device[ PATH_MAX + 1 ];
00012
00013 int dsp_fd;
00014 int mix_fd;
00015 unsigned int sampleSize;
00016 unsigned int sampleRate;
00017 unsigned int nbChannels;
00018 unsigned int bytePerSample;
00019
00020 short * ibuf;
00021 short * iend;
00022 unsigned int isize;
00023
00024 short * obuf;
00025 short * oend;
00026 unsigned int osize;
00027
00028 unsigned int fragSize;
00029 unsigned int fragCount;
00030 }
00031 snd_t;
00032
00033
00034
00035 extern void kb_snd_init( snd_t * snd ,
00036 const char * mixer_device ,
00037 const char * dsp_device );
00038
00039 extern void kb_snd_exit( snd_t * snd );
00040
00041 extern int kb_snd_open( snd_t * snd );
00042
00043 extern void kb_snd_close( snd_t * snd );
00044
00045 extern int kb_snd_doMmap( snd_t * snd );
00046
00047 extern int kb_snd_doMunmap( snd_t * snd );
00048
00049 extern int kb_snd_enableTrigger( snd_t * snd , int mask );
00050
00051 extern int kb_snd_enableFrag( snd_t * snd );
00052
00053 extern short * kb_snd_getIPtr( snd_t * snd );
00054
00055 extern short * kb_snd_getOPtr( snd_t * snd );
00056
00057 extern unsigned int kb_snd_getFragSize( snd_t * snd );
00058
00059 extern void kb_snd_copyFragTo( snd_t * snd , short * buf );
00060
00061 extern void kb_snd_copyFragFrom( snd_t * snd , short * buf );
00062
00063 extern int kb_snd_setVolume( snd_t * snd ,
00064 unsigned int line ,
00065 unsigned int vol_left ,
00066 unsigned int vol_right );
00067
00068 extern int kb_snd_setSampleRate( snd_t * snd ,
00069 unsigned int sampleRate );
00070
00071 extern int kb_snd_waitFrag( snd_t * snd );
00072
00073 extern int kb_snd_record( snd_t * snd ,
00074 short * data , unsigned long nsamples );
00075
00076 extern int kb_snd_play( snd_t * snd ,
00077 short * data , unsigned long nsamples );
00078
00079 extern int kb_snd_reset( snd_t * snd );
00080
00081 extern int kb_snd_flush( snd_t * snd );
00082
00083 extern int kb_snd_openDevices( snd_t *snd );
00084
00085 extern unsigned long kb_smplfromdur(unsigned int duration, unsigned smplrate);
00086
00087 extern unsigned long kb_durfromsmpl(unsigned int smplnbr, unsigned smplrate);
00088
00089 extern unsigned int kb_snd_fragInit(snd_t *snd, int line1Vol, int line2Vol, int smplRate, int mode);
00090
00091 extern void kb_snd_fragPlay(snd_t *snd, int fragSize);
00092
00093
00094
00095 #endif