mirror of
https://github.com/libretro/RetroArch
synced 2025-02-20 06:40:18 +00:00
Move readjust_input_rate function to audio_driver.c
This commit is contained in:
parent
d99a224688
commit
d0e6685d3d
@ -409,3 +409,37 @@ bool audio_driver_mute_toggle(void)
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* audio_driver_readjust_input_rate:
|
||||
*
|
||||
* Readjust the audio input rate.
|
||||
*/
|
||||
void audio_driver_readjust_input_rate(void)
|
||||
{
|
||||
double direction, adjust;
|
||||
int half_size, delta_mid, avail;
|
||||
unsigned write_idx;
|
||||
|
||||
avail = driver.audio->write_avail(driver.audio_data);
|
||||
|
||||
#if 0
|
||||
RARCH_LOG_OUTPUT("Audio buffer is %u%% full\n",
|
||||
(unsigned)(100 - (avail * 100) / g_extern.audio_data.driver_buffer_size));
|
||||
#endif
|
||||
|
||||
write_idx = g_extern.measure_data.buffer_free_samples_count++ &
|
||||
(AUDIO_BUFFER_FREE_SAMPLES_COUNT - 1);
|
||||
half_size = g_extern.audio_data.driver_buffer_size / 2;
|
||||
delta_mid = avail - half_size;
|
||||
direction = (double)delta_mid / half_size;
|
||||
adjust = 1.0 + g_settings.audio.rate_control_delta * direction;
|
||||
|
||||
g_extern.measure_data.buffer_free_samples[write_idx] = avail;
|
||||
g_extern.audio_data.src_ratio = g_extern.audio_data.orig_src_ratio * adjust;
|
||||
|
||||
#if 0
|
||||
RARCH_LOG_OUTPUT("New rate: %lf, Orig rate: %lf\n",
|
||||
g_extern.audio_data.src_ratio, g_extern.audio_data.orig_src_ratio);
|
||||
#endif
|
||||
}
|
||||
|
@ -112,6 +112,13 @@ const char *audio_driver_find_ident(int index);
|
||||
|
||||
bool audio_driver_mute_toggle(void);
|
||||
|
||||
/*
|
||||
* audio_driver_readjust_input_rate:
|
||||
*
|
||||
* Readjust the audio input rate.
|
||||
*/
|
||||
void audio_driver_readjust_input_rate(void);
|
||||
|
||||
/**
|
||||
* config_get_audio_driver_options:
|
||||
*
|
||||
|
@ -141,33 +141,6 @@ static void video_frame(const void *data, unsigned width,
|
||||
driver.video_active = false;
|
||||
}
|
||||
|
||||
/*
|
||||
* readjust_audio_input_rate:
|
||||
*
|
||||
* Readjust the audio input rate.
|
||||
*/
|
||||
static void readjust_audio_input_rate(void)
|
||||
{
|
||||
int avail = driver.audio->write_avail(driver.audio_data);
|
||||
|
||||
//RARCH_LOG_OUTPUT("Audio buffer is %u%% full\n",
|
||||
// (unsigned)(100 - (avail * 100) / g_extern.audio_data.driver_buffer_size));
|
||||
|
||||
unsigned write_idx = g_extern.measure_data.buffer_free_samples_count++ &
|
||||
(AUDIO_BUFFER_FREE_SAMPLES_COUNT - 1);
|
||||
int half_size = g_extern.audio_data.driver_buffer_size / 2;
|
||||
int delta_mid = avail - half_size;
|
||||
double direction = (double)delta_mid / half_size;
|
||||
double adjust = 1.0 + g_settings.audio.rate_control_delta *
|
||||
direction;
|
||||
|
||||
g_extern.measure_data.buffer_free_samples[write_idx] = avail;
|
||||
g_extern.audio_data.src_ratio = g_extern.audio_data.orig_src_ratio * adjust;
|
||||
|
||||
//RARCH_LOG_OUTPUT("New rate: %lf, Orig rate: %lf\n",
|
||||
// g_extern.audio_data.src_ratio, g_extern.audio_data.orig_src_ratio);
|
||||
}
|
||||
|
||||
/**
|
||||
* retro_flush_audio:
|
||||
* @data : pointer to audio buffer.
|
||||
@ -231,7 +204,7 @@ bool retro_flush_audio(const int16_t *data, size_t samples)
|
||||
src_data.data_out = g_extern.audio_data.outsamples;
|
||||
|
||||
if (g_extern.audio_data.rate_control)
|
||||
readjust_audio_input_rate();
|
||||
audio_driver_readjust_input_rate();
|
||||
|
||||
src_data.ratio = g_extern.audio_data.src_ratio;
|
||||
if (g_extern.is_slowmotion)
|
||||
|
Loading…
x
Reference in New Issue
Block a user