static void audio_deactivate(void) { gui_data.sndbuf_status = 3; gui_data.sndbuf = 0; reset_sound (); clear_sound_buffers(); audio_event_reset(); }
void reset_sound (void) { clear_sound_buffers(); }
int init_sound (void) { /* If setup_sound wasn't called or didn't complete successfully. */ if (!ppb_audio_interface) { write_log("init_sound called, but audio not set up yet.\n"); return 0; } /* If sound is set to none (0) or interrupts (1). */ if (currprefs.produce_sound <= 1) { write_log("init_sound called, but UAE is configured not to produce" " sound.\n"); return 0; } PP_AudioSampleRate sample_rate = ppb_audio_config_interface-> RecommendSampleRate(pp_instance); uint32_t frame_count = ppb_audio_config_interface-> RecommendSampleFrameCount(pp_instance, sample_rate, sample_rate * currprefs.sound_latency / 1000); audio_config = ppb_audio_config_interface-> CreateStereo16Bit(pp_instance, sample_rate, frame_count); if (!audio_config) { write_log("Could not create Pepper audio config.\n"); return 0; } /* Adjust preferences to reflect what the underlying system gave us. */ if (!audio_config_is_ok(audio_config)) { write_log("Pepper AudioConfig failed.\n"); return 0; } adjust_prefs(audio_config); audio_resource = ppb_audio_interface->Create( pp_instance, audio_config, sound_callback, 0 /* user_data */); if (!audio_resource) { write_log("Could not create a Pepper audio resource.\n"); return 0; } paula_sndbufsize = frame_count * 2 /* stereo */ * 2 /* 16-bit */; paula_sndbufpt = paula_sndbuffer = malloc(paula_sndbufsize); paula_sndbuffer_front_buffer = malloc(paula_sndbufsize); memset(paula_sndbuffer_front_buffer, 0, paula_sndbufsize); clear_sound_buffers(); #ifdef DRIVESOUND driveclick_reset(); #endif if (!ppb_audio_interface->StartPlayback(audio_resource)) { write_log("Could not start Pepper audio playback.\n"); return 0; } return 1; }