Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/lib/libossaudio ossaudio(3): Simplify setting rate (try to s...



details:   https://anonhg.NetBSD.org/src/rev/d0754663cc12
branches:  trunk
changeset: 945455:d0754663cc12
user:      nia <nia%NetBSD.org@localhost>
date:      Fri Oct 30 21:44:49 2020 +0000

description:
ossaudio(3): Simplify setting rate (try to supply the nearest one possible)

diffstat:

 lib/libossaudio/ossaudio.c |  37 ++++++++-----------------------------
 1 files changed, 8 insertions(+), 29 deletions(-)

diffs (61 lines):

diff -r cb99a95d0b6b -r d0754663cc12 lib/libossaudio/ossaudio.c
--- a/lib/libossaudio/ossaudio.c        Fri Oct 30 21:06:13 2020 +0000
+++ b/lib/libossaudio/ossaudio.c        Fri Oct 30 21:44:49 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: ossaudio.c,v 1.58 2020/10/24 14:43:53 roy Exp $        */
+/*     $NetBSD: ossaudio.c,v 1.59 2020/10/30 21:44:49 nia Exp $        */
 
 /*-
  * Copyright (c) 1997, 2020 The NetBSD Foundation, Inc.
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: ossaudio.c,v 1.58 2020/10/24 14:43:53 roy Exp $");
+__RCSID("$NetBSD: ossaudio.c,v 1.59 2020/10/30 21:44:49 nia Exp $");
 
 /*
  * This is an Open Sound System compatibility layer, which provides
@@ -180,36 +180,15 @@
                break;
        case SNDCTL_DSP_SPEED:
                AUDIO_INITINFO(&tmpinfo);
+               /* Conform to kernel limits. */
+               if (INTARG < 1000)
+                       INTARG = 1000;
+               if (INTARG > 192000)
+                       INTARG = 192000;
                tmpinfo.play.sample_rate =
                tmpinfo.record.sample_rate = INTARG;
-               /*
-                * The default NetBSD behavior if an unsupported sample rate
-                * is set is to return an error code and keep the rate at the
-                * default of 8000 Hz.
-                * 
-                * However, OSS specifies that a sample rate supported by the
-                * hardware is returned if the exact rate could not be set.
-                * 
-                * So, if the chosen sample rate is invalid, set and return
-                * the current hardware rate.
-                */
                if (ioctl(fd, AUDIO_SETINFO, &tmpinfo) < 0) {
-                       /* Don't care that SETINFO failed the first time... */
-                       errno = 0;
-                       retval = ioctl(fd, AUDIO_GETFORMAT, &hwfmt);
-                       if (retval < 0)
-                               return retval;
-                       retval = ioctl(fd, AUDIO_GETINFO, &tmpinfo);
-                       if (retval < 0)
-                               return retval;
-                       tmpinfo.play.sample_rate =
-                       tmpinfo.record.sample_rate =
-                           (tmpinfo.mode == AUMODE_RECORD) ?
-                           hwfmt.record.sample_rate :
-                           hwfmt.play.sample_rate;
-                       retval = ioctl(fd, AUDIO_SETINFO, &tmpinfo);
-                       if (retval < 0)
-                               return retval;
+                       return retval;
                }
                /* FALLTHRU */
        case SOUND_PCM_READ_RATE:



Home | Main Index | Thread Index | Old Index