static void audio_deactivate(void)
{
  gui_data.sndbuf_status = 3;
  gui_data.sndbuf = 0;
  reset_sound ();
  clear_sound_buffers();
  audio_event_reset();
}
Exemple #2
0
void reset_sound (void) {
    clear_sound_buffers();
}
Exemple #3
0
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;
}