[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH] Make mixer emulation a configure option
From: |
Jan Kiszka |
Subject: |
[Qemu-devel] [PATCH] Make mixer emulation a configure option |
Date: |
Mon, 23 Jun 2008 09:03:07 +0200 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.1.12) Gecko/20080226 SUSE/2.0.0.12-1.1 Thunderbird/2.0.0.12 Mnenhy/0.7.5.666 |
QEMU is able to provide software-based mixer emulation (volume control),
but so far the user has to comment out the undocumented NOVOL define in
the source code. This patch makes the switch controllable via configure.
As malc and I still disagree about the preferred default :), the patch
comes in two versions: The first one aims at improving the user
experience (by making things work out-off-the-box), the second one is
for the case that concerns about noticeable performance regressions of
CONFIG_MIXEMU/!NOVOL dominate (I don't see them on common QEMU host
platforms, though).
Whatever you finally pick is not that important as long as a patch is
applied at all. Keep in mind that more and more targets' sound emulation
may rely on full mixer emulation. Right now, Musicpal already does.
Signed-off-by: Jan Kiszka <address@hidden>
---
audio/mixeng.c | 2 --
audio/mixeng_template.h | 10 +++++-----
configure | 9 +++++++++
3 files changed, 14 insertions(+), 7 deletions(-)
Index: b/audio/mixeng.c
===================================================================
--- a/audio/mixeng.c
+++ b/audio/mixeng.c
@@ -28,8 +28,6 @@
#define AUDIO_CAP "mixeng"
#include "audio_int.h"
-#define NOVOL
-
/* 8 bit */
#define ENDIAN_CONVERSION natural
#define ENDIAN_CONVERT(v) (v)
Index: b/audio/mixeng_template.h
===================================================================
--- a/audio/mixeng_template.h
+++ b/audio/mixeng_template.h
@@ -31,14 +31,14 @@
#define HALF (IN_MAX >> 1)
#endif
-#ifdef NOVOL
-#define VOL(a, b) a
-#else
+#ifdef CONFIG_MIXEMU
#ifdef FLOAT_MIXENG
#define VOL(a, b) ((a) * (b))
#else
#define VOL(a, b) ((a) * (b)) >> 32
#endif
+#else
+#define VOL(a, b) a
#endif
#define ET glue (ENDIAN_CONVERSION, glue (_, IN_T))
@@ -113,7 +113,7 @@ static void glue (glue (conv_, ET), _to_
{
st_sample_t *out = dst;
IN_T *in = (IN_T *) src;
-#ifndef NOVOL
+#ifdef CONFIG_MIXEMU
if (vol->mute) {
mixeng_clear (dst, samples);
return;
@@ -133,7 +133,7 @@ static void glue (glue (conv_, ET), _to_
{
st_sample_t *out = dst;
IN_T *in = (IN_T *) src;
-#ifndef NOVOL
+#ifdef CONFIG_MIXEMU
if (vol->mute) {
mixeng_clear (dst, samples);
return;
Index: b/configure
===================================================================
--- a/configure
+++ b/configure
@@ -114,6 +114,7 @@ build_docs="no"
uname_release=""
curses="yes"
nptl="yes"
+mixemu="yes"
# OS specific
targetos=`uname -s`
@@ -337,6 +338,8 @@ for opt do
;;
--disable-nptl) nptl="no"
;;
+ --disable-mixemu) mixemu="no"
+ ;;
*) echo "ERROR: unknown option $opt"; show_help="yes"
;;
esac
@@ -428,6 +431,7 @@ echo " --enable-alsa enable
echo " --enable-esd enable EsoundD audio driver"
echo " --enable-fmod enable FMOD audio driver"
echo " --enable-dsound enable DirectSound audio driver"
+echo " --disable-mixemu disable mixer emulation"
echo " --disable-brlapi disable BrlAPI"
echo " --disable-vnc-tls disable TLS encryption for VNC server"
echo " --disable-curses disable curses output"
@@ -839,6 +843,7 @@ echo "CoreAudio support $coreaudio"
echo "ALSA support $alsa"
echo "EsounD support $esd"
echo "DSound support $dsound"
+echo "Mixer emulation $mixemu"
if test "$fmod" = "yes"; then
if test -z $fmod_lib || test -z $fmod_inc; then
echo
@@ -1067,6 +1072,10 @@ if test "$dsound" = "yes" ; then
echo "CONFIG_DSOUND=yes" >> $config_mak
echo "#define CONFIG_DSOUND 1" >> $config_h
fi
+if test "$mixemu" = "yes" ; then
+ echo "CONFIG_MIXEMU=yes" >> $config_mak
+ echo "#define CONFIG_MIXEMU 1" >> $config_h
+fi
if test "$fmod" = "yes" ; then
echo "CONFIG_FMOD=yes" >> $config_mak
echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
---------------
---
audio/mixeng.c | 2 --
audio/mixeng_template.h | 10 +++++-----
configure | 9 +++++++++
3 files changed, 14 insertions(+), 7 deletions(-)
Index: b/audio/mixeng.c
===================================================================
--- a/audio/mixeng.c
+++ b/audio/mixeng.c
@@ -28,8 +28,6 @@
#define AUDIO_CAP "mixeng"
#include "audio_int.h"
-#define NOVOL
-
/* 8 bit */
#define ENDIAN_CONVERSION natural
#define ENDIAN_CONVERT(v) (v)
Index: b/audio/mixeng_template.h
===================================================================
--- a/audio/mixeng_template.h
+++ b/audio/mixeng_template.h
@@ -31,14 +31,14 @@
#define HALF (IN_MAX >> 1)
#endif
-#ifdef NOVOL
-#define VOL(a, b) a
-#else
+#ifdef CONFIG_MIXEMU
#ifdef FLOAT_MIXENG
#define VOL(a, b) ((a) * (b))
#else
#define VOL(a, b) ((a) * (b)) >> 32
#endif
+#else
+#define VOL(a, b) a
#endif
#define ET glue (ENDIAN_CONVERSION, glue (_, IN_T))
@@ -113,7 +113,7 @@ static void glue (glue (conv_, ET), _to_
{
st_sample_t *out = dst;
IN_T *in = (IN_T *) src;
-#ifndef NOVOL
+#ifdef CONFIG_MIXEMU
if (vol->mute) {
mixeng_clear (dst, samples);
return;
@@ -133,7 +133,7 @@ static void glue (glue (conv_, ET), _to_
{
st_sample_t *out = dst;
IN_T *in = (IN_T *) src;
-#ifndef NOVOL
+#ifdef CONFIG_MIXEMU
if (vol->mute) {
mixeng_clear (dst, samples);
return;
Index: b/configure
===================================================================
--- a/configure
+++ b/configure
@@ -114,6 +114,7 @@ build_docs="no"
uname_release=""
curses="yes"
nptl="yes"
+mixemu="no"
# OS specific
targetos=`uname -s`
@@ -337,6 +338,8 @@ for opt do
;;
--disable-nptl) nptl="no"
;;
+ --enable-mixemu) mixemu="yes"
+ ;;
*) echo "ERROR: unknown option $opt"; show_help="yes"
;;
esac
@@ -428,6 +431,7 @@ echo " --enable-alsa enable
echo " --enable-esd enable EsoundD audio driver"
echo " --enable-fmod enable FMOD audio driver"
echo " --enable-dsound enable DirectSound audio driver"
+echo " --enable-mixemu enable mixer emulation"
echo " --disable-brlapi disable BrlAPI"
echo " --disable-vnc-tls disable TLS encryption for VNC server"
echo " --disable-curses disable curses output"
@@ -839,6 +843,7 @@ echo "CoreAudio support $coreaudio"
echo "ALSA support $alsa"
echo "EsounD support $esd"
echo "DSound support $dsound"
+echo "Mixer emulation $mixemu"
if test "$fmod" = "yes"; then
if test -z $fmod_lib || test -z $fmod_inc; then
echo
@@ -1067,6 +1072,10 @@ if test "$dsound" = "yes" ; then
echo "CONFIG_DSOUND=yes" >> $config_mak
echo "#define CONFIG_DSOUND 1" >> $config_h
fi
+if test "$mixemu" = "yes" ; then
+ echo "CONFIG_MIXEMU=yes" >> $config_mak
+ echo "#define CONFIG_MIXEMU 1" >> $config_h
+fi
if test "$fmod" = "yes" ; then
echo "CONFIG_FMOD=yes" >> $config_mak
echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemu-devel] [PATCH] Make mixer emulation a configure option,
Jan Kiszka <=