From 42e42226b876a31d66b1d26b2d7d8cb566a53201 Mon Sep 17 00:00:00 2001 From: Jonathan Gordon Date: Tue, 31 Jul 2007 11:41:42 +0000 Subject: working volume control in the sim git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14097 a1c6a512-1295-4272-9138-f99709370657 --- firmware/sound.c | 3 ++- uisimulator/sdl/sound.c | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/firmware/sound.c b/firmware/sound.c index 30b9b6a2d2..dd70b42230 100644 --- a/firmware/sound.c +++ b/firmware/sound.c @@ -663,9 +663,10 @@ void sound_set_superbass(int value) #endif /* (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) */ #else /* SIMULATOR */ +int sim_volume; void sound_set_volume(int value) { - (void)value; + sim_volume =128*(value +40)/46; /* 128 is SDL_MIX_MAXVOLUME */ } void sound_set_balance(int value) diff --git a/uisimulator/sdl/sound.c b/uisimulator/sdl/sound.c index c3bb4d6592..0ade0c9edc 100644 --- a/uisimulator/sdl/sound.c +++ b/uisimulator/sdl/sound.c @@ -286,6 +286,7 @@ void pcm_calculate_peaks(int *left, int *right) } } +extern int sim_volume; /* in firmware/sound.c void write_to_soundcard(struct pcm_udata *udata) { if (cvt.needed) { Uint32 rd = udata->num_in; @@ -315,8 +316,7 @@ void write_to_soundcard(struct pcm_udata *udata) { memcpy(cvt.buf, pcm_data, cvt.len); SDL_ConvertAudio(&cvt); - - memcpy(udata->stream, cvt.buf, cvt.len_cvt); + SDL_MixAudio(udata->stream, cvt.buf, cvt.len_cvt, sim_volume); udata->num_in = cvt.len / pcm_sample_bytes; udata->num_out = cvt.len_cvt / pcm_sample_bytes; @@ -357,7 +357,8 @@ void write_to_soundcard(struct pcm_udata *udata) { } } else { udata->num_in = udata->num_out = MIN(udata->num_in, udata->num_out); - memcpy(udata->stream, pcm_data, udata->num_out * pcm_sample_bytes); + SDL_MixAudio(udata->stream, pcm_data, + udata->num_out * pcm_sample_bytes, sim_volume); if (udata->debug != NULL) { fwrite(pcm_data, sizeof(Uint8), udata->num_out * pcm_sample_bytes, -- cgit v1.2.3