diff options
author | Michael Sevakis <jethead71@rockbox.org> | 2008-12-12 11:01:07 +0000 |
---|---|---|
committer | Michael Sevakis <jethead71@rockbox.org> | 2008-12-12 11:01:07 +0000 |
commit | e69d567d9ebf7d236ff9663b11ac396cc71dcd75 (patch) | |
tree | 093b9d1bc979d79be1fcd0daac1d8daf8ac55503 /uisimulator | |
parent | 0ad97d13fc52b28de566dc0ddaf7245583eec2cc (diff) | |
download | rockbox-e69d567d9ebf7d236ff9663b11ac396cc71dcd75.tar.gz rockbox-e69d567d9ebf7d236ff9663b11ac396cc71dcd75.zip |
Bring consistency to pcm implementation and samplerate handling. Less low-level duplication. A small test_sampr fix so it works on coldfire again.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19400 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'uisimulator')
-rw-r--r-- | uisimulator/sdl/sound.c | 41 |
1 files changed, 7 insertions, 34 deletions
diff --git a/uisimulator/sdl/sound.c b/uisimulator/sdl/sound.c index 5f061695a8..39abc85aca 100644 --- a/uisimulator/sdl/sound.c +++ b/uisimulator/sdl/sound.c | |||
@@ -33,7 +33,6 @@ | |||
33 | #include "SDL.h" | 33 | #include "SDL.h" |
34 | 34 | ||
35 | static int cvt_status = -1; | 35 | static int cvt_status = -1; |
36 | static unsigned long pcm_frequency = SAMPR_44; | ||
37 | 36 | ||
38 | static Uint8* pcm_data; | 37 | static Uint8* pcm_data; |
39 | static size_t pcm_data_size; | 38 | static size_t pcm_data_size; |
@@ -67,28 +66,26 @@ void pcm_play_unlock(void) | |||
67 | SDL_UnlockAudio(); | 66 | SDL_UnlockAudio(); |
68 | } | 67 | } |
69 | 68 | ||
70 | static void pcm_apply_settings_nolock(void) | 69 | static void pcm_dma_apply_settings_nolock(void) |
71 | { | 70 | { |
72 | cvt_status = SDL_BuildAudioCVT(&cvt, AUDIO_S16SYS, 2, pcm_frequency, | 71 | cvt_status = SDL_BuildAudioCVT(&cvt, AUDIO_S16SYS, 2, pcm_sampr, |
73 | obtained.format, obtained.channels, obtained.freq); | 72 | obtained.format, obtained.channels, obtained.freq); |
74 | 73 | ||
75 | pcm_curr_sampr = pcm_frequency; | ||
76 | |||
77 | if (cvt_status < 0) { | 74 | if (cvt_status < 0) { |
78 | cvt.len_ratio = (double)obtained.freq / (double)pcm_curr_sampr; | 75 | cvt.len_ratio = (double)obtained.freq / (double)pcm_sampr; |
79 | } | 76 | } |
80 | } | 77 | } |
81 | 78 | ||
82 | void pcm_apply_settings(void) | 79 | void pcm_dma_apply_settings(void) |
83 | { | 80 | { |
84 | pcm_play_lock(); | 81 | pcm_play_lock(); |
85 | pcm_apply_settings_nolock(); | 82 | pcm_dma_apply_settings_nolock(); |
86 | pcm_play_unlock(); | 83 | pcm_play_unlock(); |
87 | } | 84 | } |
88 | 85 | ||
89 | void pcm_play_dma_start(const void *addr, size_t size) | 86 | void pcm_play_dma_start(const void *addr, size_t size) |
90 | { | 87 | { |
91 | pcm_apply_settings_nolock(); | 88 | pcm_dma_apply_settings_nolock(); |
92 | 89 | ||
93 | pcm_data = (Uint8 *) addr; | 90 | pcm_data = (Uint8 *) addr; |
94 | pcm_data_size = size; | 91 | pcm_data_size = size; |
@@ -114,30 +111,6 @@ size_t pcm_get_bytes_waiting(void) | |||
114 | return pcm_data_size; | 111 | return pcm_data_size; |
115 | } | 112 | } |
116 | 113 | ||
117 | void pcm_set_frequency(unsigned int frequency) | ||
118 | { | ||
119 | switch (frequency) | ||
120 | { | ||
121 | HW_HAVE_8_( case SAMPR_8:) | ||
122 | HW_HAVE_11_(case SAMPR_11:) | ||
123 | HW_HAVE_12_(case SAMPR_12:) | ||
124 | HW_HAVE_16_(case SAMPR_16:) | ||
125 | HW_HAVE_22_(case SAMPR_22:) | ||
126 | HW_HAVE_24_(case SAMPR_24:) | ||
127 | HW_HAVE_32_(case SAMPR_32:) | ||
128 | HW_HAVE_44_(case SAMPR_44:) | ||
129 | HW_HAVE_48_(case SAMPR_48:) | ||
130 | HW_HAVE_64_(case SAMPR_64:) | ||
131 | HW_HAVE_88_(case SAMPR_88:) | ||
132 | HW_HAVE_96_(case SAMPR_96:) | ||
133 | break; | ||
134 | default: | ||
135 | frequency = SAMPR_44; | ||
136 | } | ||
137 | |||
138 | pcm_frequency = frequency; | ||
139 | } | ||
140 | |||
141 | extern int sim_volume; /* in firmware/sound.c */ | 114 | extern int sim_volume; /* in firmware/sound.c */ |
142 | void write_to_soundcard(struct pcm_udata *udata) { | 115 | void write_to_soundcard(struct pcm_udata *udata) { |
143 | if (cvt.needed) { | 116 | if (cvt.needed) { |
@@ -357,7 +330,7 @@ void pcm_play_dma_init(void) | |||
357 | 330 | ||
358 | pcm_sample_bytes = obtained.channels * pcm_channel_bytes; | 331 | pcm_sample_bytes = obtained.channels * pcm_channel_bytes; |
359 | 332 | ||
360 | pcm_apply_settings_nolock(); | 333 | pcm_dma_apply_settings_nolock(); |
361 | } | 334 | } |
362 | 335 | ||
363 | void pcm_postinit(void) | 336 | void pcm_postinit(void) |