Module Name:    src
Committed By:   nia
Date:           Tue May 26 10:12:12 UTC 2020

Modified Files:
        src/sys/dev/audio: audio.c

Log Message:
audio: Restore compat with Solaris for 8-bit LINEAR.

It's always signed, unless it's LINEAR8.

PR kern/55175


To generate a diff of this commit:
cvs rdiff -u -r1.71 -r1.72 src/sys/dev/audio/audio.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/audio/audio.c
diff -u src/sys/dev/audio/audio.c:1.71 src/sys/dev/audio/audio.c:1.72
--- src/sys/dev/audio/audio.c:1.71	Tue May 26 10:07:29 2020
+++ src/sys/dev/audio/audio.c	Tue May 26 10:12:12 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: audio.c,v 1.71 2020/05/26 10:07:29 nia Exp $	*/
+/*	$NetBSD: audio.c,v 1.72 2020/05/26 10:12:12 nia Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -138,7 +138,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: audio.c,v 1.71 2020/05/26 10:07:29 nia Exp $");
+__KERNEL_RCSID(0, "$NetBSD: audio.c,v 1.72 2020/05/26 10:12:12 nia Exp $");
 
 #ifdef _KERNEL_OPT
 #include "audio.h"
@@ -6120,13 +6120,17 @@ static int
 audio_check_params(audio_format2_t *p)
 {
 
-	/* Convert obsoleted AUDIO_ENCODING_PCM* */
-	/* XXX Is this conversion right? */
+	/*
+	 * Convert obsolete AUDIO_ENCODING_PCM encodings.
+	 * 
+	 * AUDIO_ENCODING_PCM16 == AUDIO_ENCODING_LINEAR
+	 * So, it's always signed, as in SunOS.
+	 *
+	 * AUDIO_ENCODING_PCM8 == AUDIO_ENCODING_LINEAR8
+	 * So, it's always unsigned, as in SunOS.
+	 */
 	if (p->encoding == AUDIO_ENCODING_PCM16) {
-		if (p->precision == 8)
-			p->encoding = AUDIO_ENCODING_ULINEAR;
-		else
-			p->encoding = AUDIO_ENCODING_SLINEAR;
+		p->encoding = AUDIO_ENCODING_SLINEAR;
 	} else if (p->encoding == AUDIO_ENCODING_PCM8) {
 		if (p->precision == 8)
 			p->encoding = AUDIO_ENCODING_ULINEAR;

Reply via email to