Do not recalculate ratio all the time.

This commit is contained in:
Themaister 2011-10-15 16:16:13 +02:00
parent b2dd12d186
commit e91ebdac97
3 changed files with 10 additions and 5 deletions

View File

@ -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();
}

View File

@ -213,6 +213,8 @@ struct global
size_t nonblock_chunk_size;
size_t block_chunk_size;
double src_ratio;
bool use_float;
float *outsamples;

10
ssnes.c
View File

@ -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;
}
}