Module Name: src Committed By: nia Date: Fri Oct 16 12:36:01 UTC 2020
Modified Files: src/lib/libossaudio: ossaudio.c Log Message: ossaudio: Add comments for the more obscure parts of SNDCTL_AUDIOINFO To generate a diff of this commit: cvs rdiff -u -r1.45 -r1.46 src/lib/libossaudio/ossaudio.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/lib/libossaudio/ossaudio.c diff -u src/lib/libossaudio/ossaudio.c:1.45 src/lib/libossaudio/ossaudio.c:1.46 --- src/lib/libossaudio/ossaudio.c:1.45 Fri Oct 16 12:23:34 2020 +++ src/lib/libossaudio/ossaudio.c Fri Oct 16 12:36:01 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: ossaudio.c,v 1.45 2020/10/16 12:23:34 nia Exp $ */ +/* $NetBSD: ossaudio.c,v 1.46 2020/10/16 12:36:01 nia Exp $ */ /*- * Copyright (c) 1997 The NetBSD Foundation, Inc. @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__RCSID("$NetBSD: ossaudio.c,v 1.45 2020/10/16 12:23:34 nia Exp $"); +__RCSID("$NetBSD: ossaudio.c,v 1.46 2020/10/16 12:36:01 nia Exp $"); /* * This is an OSS (Linux) sound API emulator. @@ -574,6 +574,15 @@ audio_ioctl(int fd, unsigned long com, v tmpaudioinfo = (struct oss_audioinfo*)argp; if (tmpaudioinfo == NULL) return EINVAL; + + /* + * Takes the audio dev node as input, since this ioctl is + * supposed to work on the OSS /dev/mixer to query all + * all available audio devices. + * + * If the input device is -1, guess the device related to + * the open mixer device. + */ if (tmpaudioinfo->dev < 0) { fstat(fd, &tmpstat); if ((tmpstat.st_rdev & 0xff00) == 0x2a00) @@ -619,7 +628,7 @@ audio_ioctl(int fd, unsigned long com, v tmpaudioinfo->caps = idat; ioctl(newfd, SNDCTL_DSP_GETFMTS, &tmpaudioinfo->iformats); tmpaudioinfo->oformats = tmpaudioinfo->iformats; - tmpaudioinfo->magic = -1; + tmpaudioinfo->magic = -1; /* reserved for "internal use" */ memset(tmpaudioinfo->cmd, 0, sizeof(tmpaudioinfo->cmd)); tmpaudioinfo->card_number = -1; memset(tmpaudioinfo->song_name, 0, @@ -627,10 +636,10 @@ audio_ioctl(int fd, unsigned long com, v memset(tmpaudioinfo->label, 0, sizeof(tmpaudioinfo->label)); tmpaudioinfo->port_number = 0; tmpaudioinfo->mixer_dev = tmpaudioinfo->dev; - tmpaudioinfo->legacy_device = -1; + tmpaudioinfo->legacy_device = tmpaudioinfo->dev; tmpaudioinfo->enabled = 1; - tmpaudioinfo->flags = -1; - tmpaudioinfo->min_rate = 8000; + tmpaudioinfo->flags = -1; /* reserved for "future versions" */ + tmpaudioinfo->min_rate = 1000; tmpaudioinfo->max_rate = 192000; tmpaudioinfo->nrates = 0; tmpaudioinfo->min_channels = 1; @@ -639,8 +648,12 @@ audio_ioctl(int fd, unsigned long com, v if (fmtq.fmt.channels > (unsigned)tmpaudioinfo->max_channels) tmpaudioinfo->max_channels = fmtq.fmt.channels; } - tmpaudioinfo->binding = -1; + tmpaudioinfo->binding = -1; /* reserved for "future versions" */ tmpaudioinfo->rate_source = -1; + /* + * 'handle' is supposed to be globally unique. The closest + * we have to that is probably device nodes. + */ strlcpy(tmpaudioinfo->handle, tmpaudioinfo->devnode, sizeof(tmpaudioinfo->handle)); tmpaudioinfo->next_play_engine = 0;