mirror of
https://github.com/libretro/RetroArch
synced 2025-03-23 19:21:03 +00:00
Add RARCH_AUDIO_CTL_SETUP_REWIND
This commit is contained in:
parent
f60c3395f0
commit
b59e2907f3
@ -703,24 +703,6 @@ void audio_driver_dsp_filter_init(const char *device)
|
||||
RARCH_ERR("[DSP]: Failed to initialize DSP filter \"%s\".\n", device);
|
||||
}
|
||||
|
||||
void audio_driver_setup_rewind(void)
|
||||
{
|
||||
unsigned i;
|
||||
|
||||
/* Push audio ready to be played. */
|
||||
audio_data.rewind_ptr = audio_data.rewind_size;
|
||||
|
||||
for (i = 0; i < audio_data.data_ptr; i += 2)
|
||||
{
|
||||
audio_data.rewind_buf[--audio_data.rewind_ptr] =
|
||||
audio_data.conv_outsamples[i + 1];
|
||||
|
||||
audio_data.rewind_buf[--audio_data.rewind_ptr] =
|
||||
audio_data.conv_outsamples[i + 0];
|
||||
}
|
||||
|
||||
audio_data.data_ptr = 0;
|
||||
}
|
||||
|
||||
void audio_driver_frame_is_reverse(void)
|
||||
{
|
||||
@ -775,6 +757,25 @@ static void audio_monitor_adjust_system_rates(void)
|
||||
audio_data.in_rate);
|
||||
}
|
||||
|
||||
static void audio_driver_setup_rewind(void)
|
||||
{
|
||||
unsigned i;
|
||||
|
||||
/* Push audio ready to be played. */
|
||||
audio_data.rewind_ptr = audio_data.rewind_size;
|
||||
|
||||
for (i = 0; i < audio_data.data_ptr; i += 2)
|
||||
{
|
||||
audio_data.rewind_buf[--audio_data.rewind_ptr] =
|
||||
audio_data.conv_outsamples[i + 1];
|
||||
|
||||
audio_data.rewind_buf[--audio_data.rewind_ptr] =
|
||||
audio_data.conv_outsamples[i + 0];
|
||||
}
|
||||
|
||||
audio_data.data_ptr = 0;
|
||||
}
|
||||
|
||||
bool audio_driver_ctl(enum rarch_audio_ctl_state state, void *data)
|
||||
{
|
||||
driver_t *driver = driver_get_ptr();
|
||||
@ -790,6 +791,9 @@ bool audio_driver_ctl(enum rarch_audio_ctl_state state, void *data)
|
||||
return init_audio();
|
||||
case RARCH_AUDIO_CTL_DEINIT:
|
||||
return uninit_audio();
|
||||
case RARCH_AUDIO_CTL_SETUP_REWIND:
|
||||
audio_driver_setup_rewind();
|
||||
return true;
|
||||
case RARCH_AUDIO_CTL_HAS_CALLBACK:
|
||||
return audio_data.audio_callback.callback;
|
||||
case RARCH_AUDIO_CTL_CALLBACK:
|
||||
|
@ -79,6 +79,7 @@ enum rarch_audio_ctl_state
|
||||
RARCH_AUDIO_CTL_DEINIT,
|
||||
RARCH_AUDIO_CTL_START,
|
||||
RARCH_AUDIO_CTL_STOP,
|
||||
RARCH_AUDIO_CTL_SETUP_REWIND,
|
||||
/* Sets audio monitor refresh rate to new value. */
|
||||
RARCH_AUDIO_CTL_MONITOR_SET_REFRESH_RATE,
|
||||
RARCH_AUDIO_CTL_MONITOR_ADJUST_SYSTEM_RATES,
|
||||
@ -137,8 +138,6 @@ void audio_driver_dsp_filter_free(void);
|
||||
|
||||
void audio_driver_dsp_filter_init(const char *device);
|
||||
|
||||
void audio_driver_setup_rewind(void);
|
||||
|
||||
void audio_driver_frame_is_reverse(void);
|
||||
|
||||
void audio_driver_set_buffer_size(size_t bufsize);
|
||||
|
@ -192,7 +192,7 @@ static void check_rewind(settings_t *settings,
|
||||
if (state_manager_pop(global->rewind.state, &buf))
|
||||
{
|
||||
state_manager_set_frame_is_reversed(true);
|
||||
audio_driver_setup_rewind();
|
||||
audio_driver_ctl(RARCH_AUDIO_CTL_SETUP_REWIND, NULL);
|
||||
|
||||
rarch_main_msg_queue_push_new(MSG_REWINDING, 0,
|
||||
main_is_paused ? 1 : 30, true);
|
||||
|
Loading…
x
Reference in New Issue
Block a user