Add sound blaster support in device model
PATCH 1/1 Add sound blaster support in device model
Add sound blaster support in device model
Signed-off-by Zhai Edwin <[email protected]>
tools/examples/xmexample.vmx +1 -1
@@ -135,7 +135,7 @@ #----------------------------------------------------------------------------- # enable audio support -#enable-audio=1 +#audio=1 #-----------------------------------------------------------------------------
tools/ioemu/hw/pc.c +9 -0
@@ -563,6 +563,15 @@kbd_init ();DMA_init (0 ); + +if (audio_enabled) { +AUD_init (); +#ifdef USE_SB16 +if (sb16_enabled) +SB16_init (); +#endif + } + floppy_controller =fdctrl_init (6 ,2 ,0 ,0x3f0 , fd_table);
tools/ioemu/target-i386-dm/Makefile +1 -0
@@ -272,6 +272,7 @@ VL_OBJS+= ide.o ne2000.o pckbd.o vga.o dma.o VL_OBJS+= fdc.o mc146818rtc.o serial.o i8259_stub.o i8254.o pc.o port-e9.o VL_OBJS+= cirrus_vga.o pcnet.o +VL_OBJS+= $(SOUND_HW) $(AUDIODRV) mixeng.o ifeq ($(TARGET_ARCH), ppc) VL_OBJS+= ppc.o ide.o ne2000.o pckbd.o vga.o $(SOUND_HW) dma.o $(AUDIODRV)
tools/ioemu/vl.h +1 -0
@@ -37,6 +37,7 @@#include <unistd.h> #include <fcntl.h> #include <sys/stat.h> +#include "audio/audio.h" #ifndef O_LARGEFILE #define O_LARGEFILE 0
tools/python/xen/xend/image.py +3 -2
@@ -237,7 +237,7 @@ # Return a list of cmd line args to the device models based on the # xm config file def parseDeviceModelArgs(self, imageConfig, deviceConfig): - dmargs = [ 'cdrom', 'boot', 'fda', 'fdb', 'ne2000', + dmargs = [ 'cdrom', 'boot', 'fda', 'fdb', 'ne2000', 'audio', 'localtime', 'serial', 'stdvga', 'isa', 'vcpus'] ret = [] for a in dmargs:
@@ -246,9 +246,10 @@ # python doesn't allow '-' in variable names if a == 'stdvga': a = 'std-vga' if a == 'ne2000': a = 'nic-ne2000' + if a == 'audio': a = 'enable-audio' # Handle booleans gracefully - if a in ['localtime', 'std-vga', 'isa', 'nic-ne2000']: + if a in ['localtime', 'std-vga', 'isa', 'nic-ne2000', 'enable-audio']: if v != None: v = int(v) if v: ret.append("-%s" % a) else:
tools/python/xen/xm/create.py +5 -1
@@ -371,6 +371,10 @@ gopts.var('ne2000', val='no|yes', fn=set_bool, default=0, use="Should device models use ne2000?") + +gopts.var('audio', val='no|yes', + fn=set_bool, default=0, + use="Should device models enable audio?") gopts.var('vnc', val='', fn=set_value, default=None,
@@ -521,7 +525,7 @@ """Create the config for VMX devices. """ args = [ 'device_model', 'vcpus', 'cdrom', 'boot', 'fda', 'fdb', - 'localtime', 'serial', 'stdvga', 'isa', 'nographic', + 'localtime', 'serial', 'stdvga', 'isa', 'nographic', 'audio', 'vnc', 'vncviewer', 'sdl', 'display', 'ne2000', 'lapic'] for a in args: if (vals.__dict__[a]):
tools/ioemu/audio/audio.c new file +910 -0
910 lines not on this page · raw message
tools/ioemu/audio/audio.h new file +65 -0
65 lines not on this page · raw message
tools/ioemu/audio/audio_int.h new file +164 -0
164 lines not on this page · raw message
tools/ioemu/audio/mixeng.c new file +255 -0
255 lines not on this page · raw message
tools/ioemu/audio/mixeng.h new file +39 -0
@@ -0,0 +1,39 @@ +/* +* QEMU Mixing engine header +* +* Copyright (c) 2004 Vassili Karpov (malc) +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +* THE SOFTWARE. +*/ +#ifndef QEMU_MIXENG_H +#define QEMU_MIXENG_H + +typedef void (t_sample ) (void *dst,const void *src,int samples); +typedef void (f_sample ) (void *dst,const void *src,int samples); +typedef struct {int64_t l;int64_t r; }st_sample_t ; + +extern t_sample *mixeng_conv[2 ][2 ][2 ]; +extern f_sample *mixeng_clip[2 ][2 ][2 ]; + +void *st_rate_start (int inrate,int outrate); +void st_rate_flow (void *opaque,st_sample_t *ibuf,st_sample_t *obuf, +int *isamp,int *osamp); +void st_rate_stop (void *opaque); + +#endif /* mixeng.h */
tools/ioemu/audio/mixeng_template.h new file +111 -0
111 lines not on this page · raw message
tools/ioemu/audio/noaudio.c new file +130 -0
130 lines not on this page · raw message
tools/ioemu/audio/ossaudio.c new file +475 -0
475 lines not on this page · raw message
tools/ioemu/audio/sdlaudio.c new file +332 -0
332 lines not on this page · raw message
tools/ioemu/audio/wavaudio.c new file +217 -0
217 lines not on this page · raw message