From e91ebdac97592ce5e86ef22e0a2e55d0fbea3703 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sat, 15 Oct 2011 16:16:13 +0200 Subject: [PATCH] Do not recalculate ratio all the time. --- driver.c | 3 +++ general.h | 2 ++ ssnes.c | 10 +++++----- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/driver.c b/driver.c index 7dec8de264..ba089026db 100644 --- a/driver.c +++ b/driver.c @@ -270,6 +270,9 @@ void init_audio(void) assert((g_extern.audio_data.rewind_buf = malloc(max_bufsamples * sizeof(int16_t)))); g_extern.audio_data.rewind_size = max_bufsamples; + g_extern.audio_data.src_ratio = + (double)g_settings.audio.out_rate / g_settings.audio.in_rate; + init_dsp_plugin(); } diff --git a/general.h b/general.h index 9c7ae643d7..1dd230ad51 100644 --- a/general.h +++ b/general.h @@ -213,6 +213,8 @@ struct global size_t nonblock_chunk_size; size_t block_chunk_size; + double src_ratio; + bool use_float; float *outsamples; diff --git a/ssnes.c b/ssnes.c index 5280504b6f..39e345514c 100644 --- a/ssnes.c +++ b/ssnes.c @@ -220,13 +220,10 @@ static bool audio_flush(const int16_t *data, unsigned samples) .data_in = dsp_output.samples ? dsp_output.samples : g_extern.audio_data.data, .data_out = g_extern.audio_data.outsamples, .input_frames = dsp_output.samples ? dsp_output.frames : (samples / 2), - .output_frames = g_extern.audio_data.chunk_size * 8, - .ratio = (double)g_settings.audio.out_rate / (double)g_settings.audio.in_rate, + .ratio = g_extern.audio_data.src_ratio, + .output_frames = samples * g_extern.audio_data.src_ratio, }; - if (g_extern.frame_is_reverse) - src_data.output_frames = (samples) * src_data.ratio; - if (dsp_output.should_resample) { hermite_process(g_extern.audio_data.source, &src_data); @@ -1338,6 +1335,9 @@ static void check_input_rate(void) msg_queue_clear(g_extern.msg_queue); msg_queue_push(g_extern.msg_queue, msg, 0, 180); SSNES_LOG("%s\n", msg); + + g_extern.audio_data.src_ratio = + (double)g_settings.audio.out_rate / g_settings.audio.in_rate; } }