00001
00040
00041
00042
00043 #include <sp/spAudioLib.h>
00044
00045 #include <sent/stddefs.h>
00046 #include <sent/adin.h>
00047
00048 static spAudio audio = NULL;
00049 static long buffer_length = 256;
00050
00051 static float rate;
00052
00061 boolean
00062 adin_mic_standby(int sfreq, void *dummy)
00063 {
00064 rate = sfreq;
00065 if (adin_mic_start() == FALSE) return FALSE;
00066 if (adin_mic_stop() == FALSE) return FALSE;
00067 return TRUE;
00068 }
00069
00075 boolean
00076 adin_mic_start()
00077 {
00078 if (audio == NULL) {
00079 audio = spInitAudio();
00080 }
00081 spSetAudioSampleRate(audio, rate);
00082 spSetAudioChannel(audio, 1);
00083 spSetAudioSampleBit(audio, 16);
00084 #ifdef SP_AUDIO_NONBLOCKING
00085 spSetAudioBlockingMode(audio, SP_AUDIO_NONBLOCKING);
00086 #endif
00087
00088 if (!spOpenAudioDevice(audio, "ro")) {
00089 j_printerr("Error: adin_mic_sp: spOpenAudioDevice\n");
00090 return FALSE;
00091 }
00092
00093 return TRUE;
00094 }
00095
00101 boolean
00102 adin_mic_stop()
00103 {
00104 spCloseAudioDevice(audio);
00105 return TRUE;
00106 }
00107
00120 int
00121 adin_mic_read(SP16 *buf, int sampnum)
00122 {
00123 long nread;
00124
00125 #ifdef SP_AUDIO_NONBLOCKING
00126 nread = sampnum;
00127 #else
00128 if (sampnum <= buffer_length) {
00129 nread = sampnum;
00130 } else {
00131 nread = buffer_length;
00132 }
00133 #endif
00134 nread = spReadAudio(audio, (short *)buf, nread);
00135
00136 return nread;
00137 }