Module Name: src
Committed By: nat
Date: Mon Jun 26 12:17:10 UTC 2017
Modified Files:
src/sys/dev: mulaw.c
Log Message:
Better solution to mulaw/alaw conversion on big endian systems/sound
devices.
To generate a diff of this commit:
cvs rdiff -u -r1.31 -r1.32 src/sys/dev/mulaw.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/mulaw.c
diff -u src/sys/dev/mulaw.c:1.31 src/sys/dev/mulaw.c:1.32
--- src/sys/dev/mulaw.c:1.31 Mon Jun 26 11:45:46 2017
+++ src/sys/dev/mulaw.c Mon Jun 26 12:17:09 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: mulaw.c,v 1.31 2017/06/26 11:45:46 nat Exp $ */
+/* $NetBSD: mulaw.c,v 1.32 2017/06/26 12:17:09 nat Exp $ */
/*
* Copyright (c) 1991-1993 Regents of the University of California.
@@ -35,7 +35,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mulaw.c,v 1.31 2017/06/26 11:45:46 nat Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mulaw.c,v 1.32 2017/06/26 12:17:09 nat Exp $");
#include <sys/types.h>
#include <sys/systm.h>
@@ -321,10 +321,10 @@ DEFINE_FILTER(mulaw_to_linear##n_prec)
break; \
case AUDIO_ENCODING_ULINEAR_BE: \
FILTER_LOOP_PROLOGUE(this->src, 1, dst, hw, m) { \
- j = hw - 2; \
+ j = 2; \
d[0] = mulawtolin16[s[0]][0]; \
d[1] = mulawtolin16[s[0]][1]; \
- while (j > 0 && j < hw) \
+ while (j < hw) \
d[j++] = 0; \
} FILTER_LOOP_EPILOGUE(this->src, dst); \
break; \
@@ -339,10 +339,10 @@ DEFINE_FILTER(mulaw_to_linear##n_prec)
break; \
case AUDIO_ENCODING_SLINEAR_BE: \
FILTER_LOOP_PROLOGUE(this->src, 1, dst, hw, m) { \
- j = hw - 2; \
+ j = 2; \
d[0] = mulawtolin16[s[0]][0] ^ 0x80; \
d[1] = mulawtolin16[s[0]][1]; \
- while (j > 0 && j < hw) \
+ while (j < hw) \
d[j++] = 0; \
} FILTER_LOOP_EPILOGUE(this->src, dst); \
break; \
@@ -456,10 +456,10 @@ DEFINE_FILTER(alaw_to_linear##n_prec)
break; \
case AUDIO_ENCODING_ULINEAR_BE: \
FILTER_LOOP_PROLOGUE(this->src, 1, dst, hw, m) { \
- j = hw - 2; \
+ j = 2; \
d[0] = alawtolin16[s[0]][0]; \
d[1] = alawtolin16[s[0]][1]; \
- while (j > 0 && j < hw) \
+ while (j < hw) \
d[j++] = 0; \
} FILTER_LOOP_EPILOGUE(this->src, dst); \
break; \
@@ -474,10 +474,10 @@ DEFINE_FILTER(alaw_to_linear##n_prec)
break; \
case AUDIO_ENCODING_SLINEAR_BE: \
FILTER_LOOP_PROLOGUE(this->src, 1, dst, hw, m) { \
- j = hw - 2; \
+ j = 2; \
d[0] = alawtolin16[s[0]][0] ^ 0x80; \
d[1] = alawtolin16[s[0]][1]; \
- while (j > 0 && j < hw) \
+ while (j < hw) \
d[j++] = 0; \
} FILTER_LOOP_EPILOGUE(this->src, dst); \
break; \