void myosd_openSound(int rate,int stereo) { if( soundInit == 0 && myosd_sound_value!=-1) { #ifdef ANDROID __android_log_print(ANDROID_LOG_DEBUG, "MAME4droid.so", "openSound rate:%d stereo:%d",rate,stereo); #endif if(sound_engine==1) { __android_log_print(ANDROID_LOG_DEBUG, "SOUND", "Open audioTrack"); if(openSound_callback!=NULL) openSound_callback(rate,stereo); } else { __android_log_print(ANDROID_LOG_DEBUG, "SOUND", "Open openSL %d %d",myosd_sound_value,sound_frames); p = opensl_open(myosd_sound_value,2,sound_frames); } soundInit = 1; } }
audio_module_runner *ami_create(int version, int token, int index) { if (version != PATCHFIELD_PROTOCOL_VERSION) { LOGW("Protocol version mismatch."); return NULL; } audio_module_runner *amr = malloc(sizeof(audio_module_runner)); if (amr) { amr->shm_fd = token; amr->shm_ptr = smi_map(token); smi_protect(amr->shm_ptr, get_protected_size()); amr->index = index; amr->done = 0; amr->timed_out = 0; amr->process = NULL; amr->context = NULL; amr->launch_counter = 3; // Make sure that this number stays current. audio_module *module = ami_get_audio_module(amr->shm_ptr, amr->index); // Clear barriers, just in case. sb_clobber(ami_get_barrier(amr->shm_ptr, module->report)); sb_clobber(ami_get_barrier(amr->shm_ptr, module->wake)); sb_clobber(ami_get_barrier(amr->shm_ptr, module->ready)); OPENSL_STREAM *os = opensl_open(module->sample_rate, 0, 2, module->buffer_frames, launch_thread, amr); sb_clobber(&amr->launched); opensl_start(os); sb_wait(&amr->launched, NULL); opensl_close(os); struct sigaction act; act.sa_sigaction = signal_handler; act.sa_flags = SA_SIGINFO; sigfillset(&act.sa_mask); sigaction(AM_SIG_ALRM, &act, NULL); } return (audio_module_runner *) amr; }