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