summaryrefslogtreecommitdiff
path: root/audio/rat30/files/patch-aa
diff options
context:
space:
mode:
Diffstat (limited to 'audio/rat30/files/patch-aa')
-rw-r--r--audio/rat30/files/patch-aa69
1 files changed, 69 insertions, 0 deletions
diff --git a/audio/rat30/files/patch-aa b/audio/rat30/files/patch-aa
new file mode 100644
index 000000000000..83e874042ceb
--- /dev/null
+++ b/audio/rat30/files/patch-aa
@@ -0,0 +1,69 @@
+*** src/auddev_freebsd.c.orig Wed Mar 24 16:22:19 1999
+--- src/auddev_freebsd.c Sat Sep 16 00:03:22 2000
+***************
+*** 89,102 ****
+ }
+ if ((ioctl(audio_fd, SNDCTL_DSP_SETFMT, &mode) == -1) || (mode != AFMT_S16_LE)) {
+ printf("Device doesn't support 16bit linear format!\n");
+ return -1;
+ }
+ if ((ioctl(audio_fd, SNDCTL_DSP_STEREO, &stereo) == -1) || (stereo != 0)) {
+ printf("Device doesn't support mono!\n");
+ return -1;
+ }
+! if ((ioctl(audio_fd, SNDCTL_DSP_SPEED, &speed) == -1) || (speed != 8000)) {
+ printf("Device doesn't support 8kHz sampling!\n");
+ return -1;
+ }
+
+--- 89,106 ----
+ }
+ if ((ioctl(audio_fd, SNDCTL_DSP_SETFMT, &mode) == -1) || (mode != AFMT_S16_LE)) {
+ printf("Device doesn't support 16bit linear format!\n");
++ close(audio_fd);
+ return -1;
+ }
+ if ((ioctl(audio_fd, SNDCTL_DSP_STEREO, &stereo) == -1) || (stereo != 0)) {
+ printf("Device doesn't support mono!\n");
++ close(audio_fd);
+ return -1;
+ }
+! // if ((ioctl(audio_fd, SNDCTL_DSP_SPEED, &speed) == -1) || (speed != 8000)) {
+! if (ioctl(audio_fd, SNDCTL_DSP_SPEED, &speed) == -1){
+ printf("Device doesn't support 8kHz sampling!\n");
++ close(audio_fd);
+ return -1;
+ }
+
+***************
+*** 158,163 ****
+--- 162,168 ----
+ * be open to do this, so if we're passed -1 as a file-descriptor we open
+ * the device, do the ioctl, and then close it again...
+ */
++ /*
+ snd_chan_param scp;
+ if (audio_fd == -1) {
+ audio_fd = audio_open_rw(O_RDONLY);
+***************
+*** 174,179 ****
+--- 179,197 ----
+ if (ioctl(audio_fd, AIOSFMT, 0) == -1) {
+ return FALSE;
+ }
++ */
++ int caps;
++ int was_defined = 1;
++ if (audio_fd == -1) {
++ audio_fd = audio_open_rw(O_RDWR);
++ was_defined = 0;
++ }
++ ioctl(audio_fd, SNDCTL_DSP_GETCAPS, &caps);
++ if ((caps & DSP_CAP_DUPLEX) == 0) {
++ if( was_defined == 0 ) audio_close(audio_fd);
++ return FALSE;
++ }
++ if( was_defined == 0 ) audio_close(audio_fd);
+ return TRUE;
+ }
+