summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Gordon <rockbox@jdgordon.info>2007-07-31 11:41:42 +0000
committerJonathan Gordon <rockbox@jdgordon.info>2007-07-31 11:41:42 +0000
commit42e42226b876a31d66b1d26b2d7d8cb566a53201 (patch)
tree7234d46888259044b8595ef53c4bcf09b6595bd7
parent1bc3b7feb2b0fc1014c41203ab82047ec94f69d4 (diff)
downloadrockbox-42e42226b876a31d66b1d26b2d7d8cb566a53201.zip
rockbox-42e42226b876a31d66b1d26b2d7d8cb566a53201.tar.gz
rockbox-42e42226b876a31d66b1d26b2d7d8cb566a53201.tar.bz2
rockbox-42e42226b876a31d66b1d26b2d7d8cb566a53201.tar.xz
working volume control in the sim
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14097 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/sound.c3
-rw-r--r--uisimulator/sdl/sound.c7
2 files changed, 6 insertions, 4 deletions
diff --git a/firmware/sound.c b/firmware/sound.c
index 30b9b6a..dd70b42 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 c3bb4d6..0ade0c9 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,