trunk/src/osd/modules/lib/osdobj_common.c
| r245464 | r245465 | |
| 163 | 163 | REGISTER_MODULE(m_mod_man, FONT_NONE); |
| 164 | 164 | |
| 165 | 165 | REGISTER_MODULE(m_mod_man, SOUND_DSOUND); |
| 166 | REGISTER_MODULE(m_mod_man, SOUND_COREAUDIO); |
| 166 | 167 | REGISTER_MODULE(m_mod_man, SOUND_JS); |
| 167 | 168 | REGISTER_MODULE(m_mod_man, SOUND_SDL); |
| 168 | | REGISTER_MODULE(m_mod_man, SOUND_COREAUDIO); |
| 169 | 169 | REGISTER_MODULE(m_mod_man, SOUND_NONE); |
| 170 | 170 | |
| 171 | 171 | #ifdef SDLMAME_MACOSX |
trunk/src/osd/modules/sound/coreaudio_sound.c
| r245464 | r245465 | |
| 26 | 26 | osd_module(OSD_SOUND_PROVIDER, "coreaudio"), |
| 27 | 27 | sound_module(), |
| 28 | 28 | m_open(false), |
| 29 | | m_attenuation(0), |
| 30 | | m_scale(128), |
| 31 | 29 | m_sample_bytes(0), |
| 32 | 30 | m_headroom(0), |
| 33 | 31 | m_buffer_size(0), |
| r245464 | r245465 | |
| 35 | 33 | m_playpos(0), |
| 36 | 34 | m_writepos(0), |
| 37 | 35 | m_in_underrun(false), |
| 36 | m_scale(128), |
| 38 | 37 | m_overflows(0), |
| 39 | 38 | m_underflows(0) |
| 40 | 39 | { |
| r245464 | r245465 | |
| 87 | 86 | |
| 88 | 87 | bool m_open; |
| 89 | 88 | AudioUnit m_output; |
| 90 | | int m_attenuation; |
| 91 | | INT32 m_scale; |
| 92 | 89 | UINT32 m_sample_bytes; |
| 93 | 90 | UINT32 m_headroom; |
| 94 | 91 | UINT32 m_buffer_size; |
| r245464 | r245465 | |
| 96 | 93 | UINT32 m_playpos; |
| 97 | 94 | UINT32 m_writepos; |
| 98 | 95 | bool m_in_underrun; |
| 96 | INT32 m_scale; |
| 99 | 97 | unsigned m_overflows; |
| 100 | 98 | unsigned m_underflows; |
| 101 | 99 | }; |
| r245464 | r245465 | |
| 163 | 161 | m_sample_bytes = format.mBytesPerFrame; |
| 164 | 162 | |
| 165 | 163 | // Allocate buffer |
| 166 | | m_headroom = (clamped_latency() * sample_rate() / 40) * m_sample_bytes; |
| 167 | | m_buffer_size = MAX(sample_rate() * m_sample_bytes * (clamped_latency() + 2) / 40, m_sample_bytes * 256); |
| 164 | m_headroom = m_sample_bytes * (clamped_latency() * sample_rate() / 40); |
| 165 | m_buffer_size = m_sample_bytes * MAX(sample_rate() * (clamped_latency() + 3) / 40, 256); |
| 168 | 166 | m_buffer = global_alloc_array_clear(INT8, m_buffer_size); |
| 169 | 167 | if (!m_buffer) |
| 170 | 168 | { |
| r245464 | r245465 | |
| 175 | 173 | m_playpos = 0; |
| 176 | 174 | m_writepos = m_headroom; |
| 177 | 175 | m_in_underrun = false; |
| 176 | m_scale = 128; |
| 178 | 177 | m_overflows = m_underflows = 0; |
| 179 | 178 | |
| 180 | 179 | // Initialise and start |
| r245464 | r245465 | |
| 253 | 252 | |
| 254 | 253 | void sound_coreaudio::set_mastervolume(int attenuation) |
| 255 | 254 | { |
| 256 | | m_attenuation = MAX(MIN(attenuation, 0), -32); |
| 257 | | m_scale = (-32 == m_attenuation) ? 0 : (INT32)(pow(10.0, m_attenuation / 20.0) * 128); |
| 255 | int const clamped_attenuation = MAX(MIN(attenuation, 0), -32); |
| 256 | m_scale = (-32 == clamped_attenuation) ? 0 : (INT32)(pow(10.0, clamped_attenuation / 20.0) * 128); |
| 258 | 257 | } |
| 259 | 258 | |
| 260 | 259 | |