Add mute on rewind option (#17541)
This commit is contained in:
parent
81df9b0491
commit
0d46073bb9
|
@ -161,7 +161,13 @@ enum audio_driver_state_flags
|
||||||
* @see audio_driver_t::write_avail
|
* @see audio_driver_t::write_avail
|
||||||
* @see audio_driver_t::buffer_size
|
* @see audio_driver_t::buffer_size
|
||||||
*/
|
*/
|
||||||
AUDIO_FLAG_CONTROL = (1 << 5)
|
AUDIO_FLAG_CONTROL = (1 << 5),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Indicates that the audio driver is forcing gain to 0.
|
||||||
|
* Used for temporary rewind and fast-forward muting.
|
||||||
|
*/
|
||||||
|
AUDIO_FLAG_MUTED = (1 << 6)
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct audio_statistics
|
typedef struct audio_statistics
|
||||||
|
|
|
@ -400,22 +400,20 @@ bool audio_driver_find_driver(
|
||||||
* @param audio_st The overall state of the audio driver.
|
* @param audio_st The overall state of the audio driver.
|
||||||
* @param slowmotion_ratio The factor by which slow motion extends the core's runtime
|
* @param slowmotion_ratio The factor by which slow motion extends the core's runtime
|
||||||
* (e.g. a value of 2 means the core is running at half speed).
|
* (e.g. a value of 2 means the core is running at half speed).
|
||||||
* @param audio_fastforward_mute True if no audio should be output while the game is in fast-forward.
|
|
||||||
* @param data Audio output data that was most recently provided by the core.
|
* @param data Audio output data that was most recently provided by the core.
|
||||||
* @param samples The size of \c data, in samples.
|
* @param samples The size of \c data, in samples.
|
||||||
* @param is_slowmotion True if the player is currently running the game in slow motion.
|
* @param is_slowmotion True if the core is currently running in slow motion.
|
||||||
* @param is_fastmotion True if the player is currently running the game in fast-forward.
|
* @param is_fastmotion True if the core is currently running in fast-forward.
|
||||||
**/
|
**/
|
||||||
static void audio_driver_flush(
|
static void audio_driver_flush(
|
||||||
audio_driver_state_t *audio_st,
|
audio_driver_state_t *audio_st,
|
||||||
float slowmotion_ratio,
|
float slowmotion_ratio,
|
||||||
bool audio_fastforward_mute,
|
|
||||||
const int16_t *data, size_t samples,
|
const int16_t *data, size_t samples,
|
||||||
bool is_slowmotion, bool is_fastforward)
|
bool is_slowmotion, bool is_fastforward)
|
||||||
{
|
{
|
||||||
struct resampler_data src_data;
|
struct resampler_data src_data;
|
||||||
float audio_volume_gain = (audio_st->mute_enable ||
|
float audio_volume_gain =
|
||||||
(audio_fastforward_mute && is_fastforward))
|
(audio_st->mute_enable || audio_st->flags & AUDIO_FLAG_MUTED)
|
||||||
? 0.0f
|
? 0.0f
|
||||||
: audio_st->volume_gain;
|
: audio_st->volume_gain;
|
||||||
|
|
||||||
|
@ -850,7 +848,6 @@ void audio_driver_sample(int16_t left, int16_t right)
|
||||||
|| !(audio_st->output_samples_buf)))
|
|| !(audio_st->output_samples_buf)))
|
||||||
audio_driver_flush(audio_st,
|
audio_driver_flush(audio_st,
|
||||||
config_get_ptr()->floats.slowmotion_ratio,
|
config_get_ptr()->floats.slowmotion_ratio,
|
||||||
config_get_ptr()->bools.audio_fastforward_mute,
|
|
||||||
audio_st->output_samples_conv_buf,
|
audio_st->output_samples_conv_buf,
|
||||||
audio_st->data_ptr,
|
audio_st->data_ptr,
|
||||||
(runloop_flags & RUNLOOP_FLAG_SLOWMOTION) ? true : false,
|
(runloop_flags & RUNLOOP_FLAG_SLOWMOTION) ? true : false,
|
||||||
|
@ -900,7 +897,6 @@ size_t audio_driver_sample_batch(const int16_t *data, size_t frames)
|
||||||
|| !(audio_st->output_samples_buf)))
|
|| !(audio_st->output_samples_buf)))
|
||||||
audio_driver_flush(audio_st,
|
audio_driver_flush(audio_st,
|
||||||
config_get_ptr()->floats.slowmotion_ratio,
|
config_get_ptr()->floats.slowmotion_ratio,
|
||||||
config_get_ptr()->bools.audio_fastforward_mute,
|
|
||||||
data,
|
data,
|
||||||
frames_to_write << 1,
|
frames_to_write << 1,
|
||||||
(runloop_flags & RUNLOOP_FLAG_SLOWMOTION) ? true : false,
|
(runloop_flags & RUNLOOP_FLAG_SLOWMOTION) ? true : false,
|
||||||
|
@ -1741,7 +1737,6 @@ void audio_driver_frame_is_reverse(void)
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
audio_driver_flush(audio_st,
|
audio_driver_flush(audio_st,
|
||||||
settings->floats.slowmotion_ratio,
|
settings->floats.slowmotion_ratio,
|
||||||
settings->bools.audio_fastforward_mute,
|
|
||||||
audio_st->rewind_buf +
|
audio_st->rewind_buf +
|
||||||
audio_st->rewind_ptr,
|
audio_st->rewind_ptr,
|
||||||
audio_st->rewind_size -
|
audio_st->rewind_size -
|
||||||
|
@ -1911,7 +1906,6 @@ void audio_driver_menu_sample(void)
|
||||||
if (check_flush)
|
if (check_flush)
|
||||||
audio_driver_flush(audio_st,
|
audio_driver_flush(audio_st,
|
||||||
settings->floats.slowmotion_ratio,
|
settings->floats.slowmotion_ratio,
|
||||||
settings->bools.audio_fastforward_mute,
|
|
||||||
samples_buf,
|
samples_buf,
|
||||||
1024,
|
1024,
|
||||||
(runloop_flags & RUNLOOP_FLAG_SLOWMOTION) ? true : false,
|
(runloop_flags & RUNLOOP_FLAG_SLOWMOTION) ? true : false,
|
||||||
|
@ -1933,7 +1927,6 @@ void audio_driver_menu_sample(void)
|
||||||
if (check_flush)
|
if (check_flush)
|
||||||
audio_driver_flush(audio_st,
|
audio_driver_flush(audio_st,
|
||||||
settings->floats.slowmotion_ratio,
|
settings->floats.slowmotion_ratio,
|
||||||
settings->bools.audio_fastforward_mute,
|
|
||||||
samples_buf,
|
samples_buf,
|
||||||
sample_count,
|
sample_count,
|
||||||
(runloop_flags & RUNLOOP_FLAG_SLOWMOTION) ? true : false,
|
(runloop_flags & RUNLOOP_FLAG_SLOWMOTION) ? true : false,
|
||||||
|
|
|
@ -1215,12 +1215,12 @@
|
||||||
#define DEFAULT_AUDIO_RESPECT_SILENT_MODE true
|
#define DEFAULT_AUDIO_RESPECT_SILENT_MODE true
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Automatically mute audio when fast forward
|
/* Automatically mute audio when fast forward is enabled. */
|
||||||
* is enabled */
|
|
||||||
#define DEFAULT_AUDIO_FASTFORWARD_MUTE false
|
#define DEFAULT_AUDIO_FASTFORWARD_MUTE false
|
||||||
/* Speed up audio to match fast-forward speed up.
|
/* Speed up audio to match fast forward speed up. */
|
||||||
* Avoids crackling */
|
|
||||||
#define DEFAULT_AUDIO_FASTFORWARD_SPEEDUP false
|
#define DEFAULT_AUDIO_FASTFORWARD_SPEEDUP false
|
||||||
|
/* Automatically mute audio when rewind is enabled. */
|
||||||
|
#define DEFAULT_AUDIO_REWIND_MUTE false
|
||||||
|
|
||||||
#ifdef HAVE_MICROPHONE
|
#ifdef HAVE_MICROPHONE
|
||||||
/* Microphone support */
|
/* Microphone support */
|
||||||
|
|
|
@ -1838,6 +1838,7 @@ static struct config_bool_setting *populate_settings_bool(
|
||||||
#endif
|
#endif
|
||||||
SETTING_BOOL("audio_fastforward_mute", &settings->bools.audio_fastforward_mute, true, DEFAULT_AUDIO_FASTFORWARD_MUTE, false);
|
SETTING_BOOL("audio_fastforward_mute", &settings->bools.audio_fastforward_mute, true, DEFAULT_AUDIO_FASTFORWARD_MUTE, false);
|
||||||
SETTING_BOOL("audio_fastforward_speedup", &settings->bools.audio_fastforward_speedup, true, DEFAULT_AUDIO_FASTFORWARD_SPEEDUP, false);
|
SETTING_BOOL("audio_fastforward_speedup", &settings->bools.audio_fastforward_speedup, true, DEFAULT_AUDIO_FASTFORWARD_SPEEDUP, false);
|
||||||
|
SETTING_BOOL("audio_rewind_mute", &settings->bools.audio_rewind_mute, true, DEFAULT_AUDIO_REWIND_MUTE, false);
|
||||||
|
|
||||||
#ifdef HAVE_WASAPI
|
#ifdef HAVE_WASAPI
|
||||||
SETTING_BOOL("audio_wasapi_exclusive_mode", &settings->bools.audio_wasapi_exclusive_mode, true, DEFAULT_WASAPI_EXCLUSIVE_MODE, false);
|
SETTING_BOOL("audio_wasapi_exclusive_mode", &settings->bools.audio_wasapi_exclusive_mode, true, DEFAULT_WASAPI_EXCLUSIVE_MODE, false);
|
||||||
|
|
|
@ -662,6 +662,7 @@ typedef struct settings
|
||||||
bool audio_rate_control;
|
bool audio_rate_control;
|
||||||
bool audio_fastforward_mute;
|
bool audio_fastforward_mute;
|
||||||
bool audio_fastforward_speedup;
|
bool audio_fastforward_speedup;
|
||||||
|
bool audio_rewind_mute;
|
||||||
#ifdef IOS
|
#ifdef IOS
|
||||||
bool audio_respect_silent_mode;
|
bool audio_respect_silent_mode;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -2986,7 +2986,7 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_MUTE,
|
MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_MUTE,
|
||||||
"Mute When Fast-Forwarding"
|
"Fast-Forward Audio Mute"
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_MUTE,
|
MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_MUTE,
|
||||||
|
@ -2994,12 +2994,20 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_SPEEDUP,
|
MENU_ENUM_LABEL_VALUE_AUDIO_FASTFORWARD_SPEEDUP,
|
||||||
"Speedup When Fast-Forwarding"
|
"Fast-Forward Audio Speedup"
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_SPEEDUP,
|
MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_SPEEDUP,
|
||||||
"Speed up audio when fast-forwarding. Prevents crackling but shifts pitch."
|
"Speed up audio when fast-forwarding. Prevents crackling but shifts pitch."
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_AUDIO_REWIND_MUTE,
|
||||||
|
"Rewind Audio Mute"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_AUDIO_REWIND_MUTE,
|
||||||
|
"Automatically mute audio when using rewind."
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_AUDIO_VOLUME,
|
MENU_ENUM_LABEL_VALUE_AUDIO_VOLUME,
|
||||||
"Volume Gain (dB)"
|
"Volume Gain (dB)"
|
||||||
|
|
|
@ -538,6 +538,7 @@ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_audio_mixer_mute, MENU_
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_audio_respect_silent_mode, MENU_ENUM_SUBLABEL_AUDIO_RESPECT_SILENT_MODE)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_audio_respect_silent_mode, MENU_ENUM_SUBLABEL_AUDIO_RESPECT_SILENT_MODE)
|
||||||
#endif
|
#endif
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_audio_fastforward_mute, MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_MUTE)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_audio_fastforward_mute, MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_MUTE)
|
||||||
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_audio_rewind_mute, MENU_ENUM_SUBLABEL_AUDIO_REWIND_MUTE)
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_audio_fastforward_speedup, MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_SPEEDUP)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_audio_fastforward_speedup, MENU_ENUM_SUBLABEL_AUDIO_FASTFORWARD_SPEEDUP)
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_camera_allow, MENU_ENUM_SUBLABEL_CAMERA_ALLOW)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_camera_allow, MENU_ENUM_SUBLABEL_CAMERA_ALLOW)
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_location_allow, MENU_ENUM_SUBLABEL_LOCATION_ALLOW)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_location_allow, MENU_ENUM_SUBLABEL_LOCATION_ALLOW)
|
||||||
|
@ -4675,6 +4676,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
|
||||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_audio_respect_silent_mode);
|
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_audio_respect_silent_mode);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
case MENU_ENUM_LABEL_AUDIO_REWIND_MUTE:
|
||||||
|
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_audio_rewind_mute);
|
||||||
|
break;
|
||||||
case MENU_ENUM_LABEL_AUDIO_FASTFORWARD_MUTE:
|
case MENU_ENUM_LABEL_AUDIO_FASTFORWARD_MUTE:
|
||||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_audio_fastforward_mute);
|
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_audio_fastforward_mute);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -7731,52 +7731,31 @@ unsigned menu_displaylist_build_list(
|
||||||
break;
|
break;
|
||||||
case DISPLAYLIST_AUDIO_SETTINGS_LIST:
|
case DISPLAYLIST_AUDIO_SETTINGS_LIST:
|
||||||
{
|
{
|
||||||
bool audio_mute_enable = *audio_get_bool_ptr(AUDIO_ACTION_MUTE_ENABLE);
|
|
||||||
#if defined(HAVE_AUDIOMIXER)
|
|
||||||
bool audio_mixer_mute_enable = *audio_get_bool_ptr(AUDIO_ACTION_MIXER_MUTE_ENABLE);
|
|
||||||
#else
|
|
||||||
bool audio_mixer_mute_enable = true;
|
|
||||||
#endif
|
|
||||||
menu_displaylist_build_info_selective_t build_list[] = {
|
menu_displaylist_build_info_selective_t build_list[] = {
|
||||||
{MENU_ENUM_LABEL_AUDIO_OUTPUT_SETTINGS, PARSE_ACTION, true },
|
{MENU_ENUM_LABEL_AUDIO_OUTPUT_SETTINGS, PARSE_ACTION, true },
|
||||||
#ifdef HAVE_MICROPHONE
|
#ifdef HAVE_MICROPHONE
|
||||||
{MENU_ENUM_LABEL_MICROPHONE_SETTINGS, PARSE_ACTION, true },
|
{MENU_ENUM_LABEL_MICROPHONE_SETTINGS, PARSE_ACTION, true },
|
||||||
#endif
|
#endif
|
||||||
{MENU_ENUM_LABEL_AUDIO_SYNCHRONIZATION_SETTINGS, PARSE_ACTION, true },
|
{MENU_ENUM_LABEL_AUDIO_SYNCHRONIZATION_SETTINGS, PARSE_ACTION, true },
|
||||||
{MENU_ENUM_LABEL_MIDI_SETTINGS, PARSE_ACTION, true },
|
{MENU_ENUM_LABEL_MIDI_SETTINGS, PARSE_ACTION, true },
|
||||||
{MENU_ENUM_LABEL_AUDIO_MIXER_SETTINGS, PARSE_ACTION, false },
|
#if defined(HAVE_AUDIOMIXER)
|
||||||
{MENU_ENUM_LABEL_MENU_SOUNDS, PARSE_ACTION, true },
|
{MENU_ENUM_LABEL_AUDIO_MIXER_SETTINGS, PARSE_ACTION, true },
|
||||||
{MENU_ENUM_LABEL_AUDIO_MUTE, PARSE_ONLY_BOOL, true },
|
#endif
|
||||||
{MENU_ENUM_LABEL_AUDIO_MIXER_MUTE, PARSE_ONLY_BOOL, true },
|
{MENU_ENUM_LABEL_MENU_SOUNDS, PARSE_ACTION, true },
|
||||||
{MENU_ENUM_LABEL_AUDIO_RESPECT_SILENT_MODE, PARSE_ONLY_BOOL, true },
|
{MENU_ENUM_LABEL_AUDIO_VOLUME, PARSE_ONLY_FLOAT, true },
|
||||||
{MENU_ENUM_LABEL_AUDIO_FASTFORWARD_MUTE, PARSE_ONLY_BOOL, true },
|
{MENU_ENUM_LABEL_AUDIO_MIXER_VOLUME, PARSE_ONLY_FLOAT, true },
|
||||||
{MENU_ENUM_LABEL_AUDIO_FASTFORWARD_SPEEDUP, PARSE_ONLY_BOOL, true },
|
{MENU_ENUM_LABEL_AUDIO_MUTE, PARSE_ONLY_BOOL, true },
|
||||||
{MENU_ENUM_LABEL_AUDIO_VOLUME, PARSE_ONLY_FLOAT, false },
|
{MENU_ENUM_LABEL_AUDIO_MIXER_MUTE, PARSE_ONLY_BOOL, true },
|
||||||
{MENU_ENUM_LABEL_AUDIO_MIXER_VOLUME, PARSE_ONLY_FLOAT, false },
|
{MENU_ENUM_LABEL_AUDIO_RESPECT_SILENT_MODE, PARSE_ONLY_BOOL, true },
|
||||||
{MENU_ENUM_LABEL_SYSTEM_BGM_ENABLE, PARSE_ONLY_BOOL, true },
|
{MENU_ENUM_LABEL_SYSTEM_BGM_ENABLE, PARSE_ONLY_BOOL, true },
|
||||||
|
{MENU_ENUM_LABEL_AUDIO_REWIND_MUTE, PARSE_ONLY_BOOL, true },
|
||||||
|
{MENU_ENUM_LABEL_AUDIO_FASTFORWARD_MUTE, PARSE_ONLY_BOOL, true },
|
||||||
|
{MENU_ENUM_LABEL_AUDIO_FASTFORWARD_SPEEDUP, PARSE_ONLY_BOOL, true },
|
||||||
#if defined(HAVE_DSP_FILTER)
|
#if defined(HAVE_DSP_FILTER)
|
||||||
{MENU_ENUM_LABEL_AUDIO_DSP_PLUGIN, PARSE_ONLY_PATH, true },
|
{MENU_ENUM_LABEL_AUDIO_DSP_PLUGIN, PARSE_ONLY_PATH, true },
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(build_list); i++)
|
|
||||||
{
|
|
||||||
switch (build_list[i].enum_idx)
|
|
||||||
{
|
|
||||||
case MENU_ENUM_LABEL_AUDIO_VOLUME:
|
|
||||||
if (!audio_mute_enable)
|
|
||||||
build_list[i].checked = true;
|
|
||||||
break;
|
|
||||||
case MENU_ENUM_LABEL_AUDIO_MIXER_VOLUME:
|
|
||||||
case MENU_ENUM_LABEL_AUDIO_MIXER_SETTINGS:
|
|
||||||
if (!audio_mixer_mute_enable)
|
|
||||||
build_list[i].checked = true;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(build_list); i++)
|
for (i = 0; i < ARRAY_SIZE(build_list); i++)
|
||||||
{
|
{
|
||||||
if (!build_list[i].checked && !include_everything)
|
if (!build_list[i].checked && !include_everything)
|
||||||
|
@ -11441,29 +11420,14 @@ unsigned menu_displaylist_build_list(
|
||||||
break;
|
break;
|
||||||
case DISPLAYLIST_REWIND_SETTINGS_LIST:
|
case DISPLAYLIST_REWIND_SETTINGS_LIST:
|
||||||
{
|
{
|
||||||
bool rewind_enable = settings->bools.rewind_enable;
|
|
||||||
menu_displaylist_build_info_selective_t build_list[] = {
|
menu_displaylist_build_info_selective_t build_list[] = {
|
||||||
{MENU_ENUM_LABEL_REWIND_ENABLE, PARSE_ONLY_BOOL, true},
|
{MENU_ENUM_LABEL_REWIND_ENABLE, PARSE_ONLY_BOOL, true },
|
||||||
{MENU_ENUM_LABEL_REWIND_GRANULARITY, PARSE_ONLY_UINT, false},
|
{MENU_ENUM_LABEL_REWIND_GRANULARITY, PARSE_ONLY_UINT, true },
|
||||||
{MENU_ENUM_LABEL_REWIND_BUFFER_SIZE, PARSE_ONLY_SIZE, false},
|
{MENU_ENUM_LABEL_REWIND_BUFFER_SIZE, PARSE_ONLY_SIZE, true },
|
||||||
{MENU_ENUM_LABEL_REWIND_BUFFER_SIZE_STEP, PARSE_ONLY_UINT, false},
|
{MENU_ENUM_LABEL_REWIND_BUFFER_SIZE_STEP, PARSE_ONLY_UINT, true },
|
||||||
|
{MENU_ENUM_LABEL_AUDIO_REWIND_MUTE, PARSE_ONLY_BOOL, true },
|
||||||
};
|
};
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(build_list); i++)
|
|
||||||
{
|
|
||||||
switch (build_list[i].enum_idx)
|
|
||||||
{
|
|
||||||
case MENU_ENUM_LABEL_REWIND_GRANULARITY:
|
|
||||||
case MENU_ENUM_LABEL_REWIND_BUFFER_SIZE:
|
|
||||||
case MENU_ENUM_LABEL_REWIND_BUFFER_SIZE_STEP:
|
|
||||||
if (rewind_enable)
|
|
||||||
build_list[i].checked = true;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(build_list); i++)
|
for (i = 0; i < ARRAY_SIZE(build_list); i++)
|
||||||
{
|
{
|
||||||
if (!build_list[i].checked && !include_everything)
|
if (!build_list[i].checked && !include_everything)
|
||||||
|
@ -11485,11 +11449,13 @@ unsigned menu_displaylist_build_list(
|
||||||
#ifdef HAVE_REWIND
|
#ifdef HAVE_REWIND
|
||||||
{MENU_ENUM_LABEL_REWIND_SETTINGS, PARSE_ACTION, false},
|
{MENU_ENUM_LABEL_REWIND_SETTINGS, PARSE_ACTION, false},
|
||||||
#endif
|
#endif
|
||||||
{MENU_ENUM_LABEL_FRAME_TIME_COUNTER_SETTINGS, PARSE_ACTION, true},
|
{MENU_ENUM_LABEL_FRAME_TIME_COUNTER_SETTINGS, PARSE_ACTION, true },
|
||||||
{MENU_ENUM_LABEL_FASTFORWARD_RATIO, PARSE_ONLY_FLOAT, true},
|
{MENU_ENUM_LABEL_FASTFORWARD_RATIO, PARSE_ONLY_FLOAT, true },
|
||||||
{MENU_ENUM_LABEL_FASTFORWARD_FRAMESKIP, PARSE_ONLY_BOOL, true},
|
{MENU_ENUM_LABEL_FASTFORWARD_FRAMESKIP, PARSE_ONLY_BOOL, true },
|
||||||
{MENU_ENUM_LABEL_SLOWMOTION_RATIO, PARSE_ONLY_FLOAT, true},
|
{MENU_ENUM_LABEL_AUDIO_FASTFORWARD_MUTE, PARSE_ONLY_BOOL, true },
|
||||||
{MENU_ENUM_LABEL_VRR_RUNLOOP_ENABLE, PARSE_ONLY_BOOL, true},
|
{MENU_ENUM_LABEL_AUDIO_FASTFORWARD_SPEEDUP, PARSE_ONLY_BOOL, true },
|
||||||
|
{MENU_ENUM_LABEL_SLOWMOTION_RATIO, PARSE_ONLY_FLOAT, true },
|
||||||
|
{MENU_ENUM_LABEL_VRR_RUNLOOP_ENABLE, PARSE_ONLY_BOOL, true },
|
||||||
{MENU_ENUM_LABEL_MENU_THROTTLE_FRAMERATE, PARSE_ONLY_BOOL, false},
|
{MENU_ENUM_LABEL_MENU_THROTTLE_FRAMERATE, PARSE_ONLY_BOOL, false},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -12210,10 +12210,7 @@ static bool setting_append_list(
|
||||||
parent_group,
|
parent_group,
|
||||||
general_write_handler,
|
general_write_handler,
|
||||||
general_read_handler,
|
general_read_handler,
|
||||||
SD_FLAG_CMD_APPLY_AUTO);
|
SD_FLAG_NONE);
|
||||||
(*list)[list_info->index - 1].action_ok = &setting_bool_action_left_with_refresh;
|
|
||||||
(*list)[list_info->index - 1].action_left = &setting_bool_action_left_with_refresh;
|
|
||||||
(*list)[list_info->index - 1].action_right = &setting_bool_action_right_with_refresh;
|
|
||||||
MENU_SETTINGS_LIST_CURRENT_ADD_CMD(list, list_info, CMD_EVENT_REWIND_TOGGLE);
|
MENU_SETTINGS_LIST_CURRENT_ADD_CMD(list, list_info, CMD_EVENT_REWIND_TOGGLE);
|
||||||
|
|
||||||
CONFIG_UINT(
|
CONFIG_UINT(
|
||||||
|
@ -14742,6 +14739,22 @@ static bool setting_append_list(
|
||||||
SD_FLAG_NONE
|
SD_FLAG_NONE
|
||||||
);
|
);
|
||||||
|
|
||||||
|
CONFIG_BOOL(
|
||||||
|
list, list_info,
|
||||||
|
&settings->bools.audio_rewind_mute,
|
||||||
|
MENU_ENUM_LABEL_AUDIO_REWIND_MUTE,
|
||||||
|
MENU_ENUM_LABEL_VALUE_AUDIO_REWIND_MUTE,
|
||||||
|
DEFAULT_AUDIO_REWIND_MUTE,
|
||||||
|
MENU_ENUM_LABEL_VALUE_OFF,
|
||||||
|
MENU_ENUM_LABEL_VALUE_ON,
|
||||||
|
&group_info,
|
||||||
|
&subgroup_info,
|
||||||
|
parent_group,
|
||||||
|
general_write_handler,
|
||||||
|
general_read_handler,
|
||||||
|
SD_FLAG_NONE
|
||||||
|
);
|
||||||
|
|
||||||
CONFIG_FLOAT(
|
CONFIG_FLOAT(
|
||||||
list, list_info,
|
list, list_info,
|
||||||
&settings->floats.audio_volume,
|
&settings->floats.audio_volume,
|
||||||
|
|
|
@ -2294,6 +2294,7 @@ enum msg_hash_enums
|
||||||
MENU_LABEL(AUDIO_RESPECT_SILENT_MODE),
|
MENU_LABEL(AUDIO_RESPECT_SILENT_MODE),
|
||||||
MENU_LABEL(AUDIO_FASTFORWARD_MUTE),
|
MENU_LABEL(AUDIO_FASTFORWARD_MUTE),
|
||||||
MENU_LABEL(AUDIO_FASTFORWARD_SPEEDUP),
|
MENU_LABEL(AUDIO_FASTFORWARD_SPEEDUP),
|
||||||
|
MENU_LABEL(AUDIO_REWIND_MUTE),
|
||||||
MENU_LABEL(AUDIO_SYNC),
|
MENU_LABEL(AUDIO_SYNC),
|
||||||
MENU_LBL_H(AUDIO_VOLUME),
|
MENU_LBL_H(AUDIO_VOLUME),
|
||||||
MENU_LABEL(AUDIO_MIXER_VOLUME),
|
MENU_LABEL(AUDIO_MIXER_VOLUME),
|
||||||
|
|
15
retroarch.c
15
retroarch.c
|
@ -5289,17 +5289,14 @@ bool command_event(enum event_command cmd, void *data)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case CMD_EVENT_VOLUME_UP:
|
case CMD_EVENT_VOLUME_UP:
|
||||||
{
|
command_event_set_volume(settings, 0.5f,
|
||||||
audio_driver_state_t
|
|
||||||
*audio_st = audio_state_get_ptr();
|
|
||||||
command_event_set_volume(settings, 0.5f,
|
|
||||||
#if defined(HAVE_GFX_WIDGETS)
|
#if defined(HAVE_GFX_WIDGETS)
|
||||||
dispwidget_get_ptr()->active,
|
dispwidget_get_ptr()->active,
|
||||||
#else
|
#else
|
||||||
false,
|
false,
|
||||||
#endif
|
#endif
|
||||||
audio_st->mute_enable);
|
audio_state_get_ptr()->mute_enable
|
||||||
}
|
);
|
||||||
break;
|
break;
|
||||||
case CMD_EVENT_VOLUME_DOWN:
|
case CMD_EVENT_VOLUME_DOWN:
|
||||||
command_event_set_volume(settings, -0.5f,
|
command_event_set_volume(settings, -0.5f,
|
||||||
|
@ -5309,7 +5306,7 @@ bool command_event(enum event_command cmd, void *data)
|
||||||
false,
|
false,
|
||||||
#endif
|
#endif
|
||||||
audio_state_get_ptr()->mute_enable
|
audio_state_get_ptr()->mute_enable
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
case CMD_EVENT_MIXER_VOLUME_UP:
|
case CMD_EVENT_MIXER_VOLUME_UP:
|
||||||
command_event_set_mixer_volume(settings, 0.5f);
|
command_event_set_mixer_volume(settings, 0.5f);
|
||||||
|
|
20
runloop.c
20
runloop.c
|
@ -3965,6 +3965,7 @@ static void runloop_apply_fastmotion_override(runloop_state_t *runloop_st, setti
|
||||||
{
|
{
|
||||||
float fastforward_ratio_current;
|
float fastforward_ratio_current;
|
||||||
video_driver_state_t *video_st = video_state_get_ptr();
|
video_driver_state_t *video_st = video_state_get_ptr();
|
||||||
|
audio_driver_state_t *audio_st = audio_state_get_ptr();
|
||||||
bool frame_time_counter_reset_after_fastforwarding = settings ?
|
bool frame_time_counter_reset_after_fastforwarding = settings ?
|
||||||
settings->bools.frame_time_counter_reset_after_fastforwarding : false;
|
settings->bools.frame_time_counter_reset_after_fastforwarding : false;
|
||||||
float fastforward_ratio_default = settings ?
|
float fastforward_ratio_default = settings ?
|
||||||
|
@ -3992,6 +3993,11 @@ static void runloop_apply_fastmotion_override(runloop_state_t *runloop_st, setti
|
||||||
else
|
else
|
||||||
runloop_st->flags &= ~RUNLOOP_FLAG_FASTMOTION;
|
runloop_st->flags &= ~RUNLOOP_FLAG_FASTMOTION;
|
||||||
|
|
||||||
|
if (settings->bools.audio_fastforward_mute && (runloop_st->flags & RUNLOOP_FLAG_FASTMOTION))
|
||||||
|
audio_st->flags |= AUDIO_FLAG_MUTED;
|
||||||
|
else
|
||||||
|
audio_st->flags &= ~AUDIO_FLAG_MUTED;
|
||||||
|
|
||||||
if (input_st)
|
if (input_st)
|
||||||
{
|
{
|
||||||
if (runloop_st->flags & RUNLOOP_FLAG_FASTMOTION)
|
if (runloop_st->flags & RUNLOOP_FLAG_FASTMOTION)
|
||||||
|
@ -5458,6 +5464,7 @@ static enum runloop_state_enum runloop_check_state(
|
||||||
uico_driver_state_t *uico_st = uico_state_get_ptr();
|
uico_driver_state_t *uico_st = uico_state_get_ptr();
|
||||||
input_driver_state_t *input_st = input_state_get_ptr();
|
input_driver_state_t *input_st = input_state_get_ptr();
|
||||||
video_driver_state_t *video_st = video_state_get_ptr();
|
video_driver_state_t *video_st = video_state_get_ptr();
|
||||||
|
audio_driver_state_t *audio_st = audio_state_get_ptr();
|
||||||
gfx_display_t *p_disp = disp_get_ptr();
|
gfx_display_t *p_disp = disp_get_ptr();
|
||||||
runloop_state_t *runloop_st = &runloop_state;
|
runloop_state_t *runloop_st = &runloop_state;
|
||||||
static bool old_focus = true;
|
static bool old_focus = true;
|
||||||
|
@ -6165,6 +6172,14 @@ static enum runloop_state_enum runloop_check_state(
|
||||||
,
|
,
|
||||||
s, sizeof(s), &t);
|
s, sizeof(s), &t);
|
||||||
|
|
||||||
|
if (rewind_pressed != old_rewind_pressed)
|
||||||
|
{
|
||||||
|
if (settings->bools.audio_rewind_mute && rewind_pressed)
|
||||||
|
audio_st->flags |= AUDIO_FLAG_MUTED;
|
||||||
|
else
|
||||||
|
audio_st->flags &= ~AUDIO_FLAG_MUTED;
|
||||||
|
}
|
||||||
|
|
||||||
old_rewind_pressed = rewind_pressed;
|
old_rewind_pressed = rewind_pressed;
|
||||||
|
|
||||||
#if defined(HAVE_GFX_WIDGETS)
|
#if defined(HAVE_GFX_WIDGETS)
|
||||||
|
@ -6438,6 +6453,11 @@ static enum runloop_state_enum runloop_check_state(
|
||||||
command_event(CMD_EVENT_SET_FRAME_LIMIT, NULL);
|
command_event(CMD_EVENT_SET_FRAME_LIMIT, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (settings->bools.audio_fastforward_mute && (runloop_st->flags & RUNLOOP_FLAG_FASTMOTION))
|
||||||
|
audio_st->flags |= AUDIO_FLAG_MUTED;
|
||||||
|
else
|
||||||
|
audio_st->flags &= ~AUDIO_FLAG_MUTED;
|
||||||
|
|
||||||
driver_set_nonblock_state();
|
driver_set_nonblock_state();
|
||||||
|
|
||||||
/* Reset frame time counter when toggling
|
/* Reset frame time counter when toggling
|
||||||
|
|
|
@ -190,7 +190,10 @@ QWidget *AudioPage::widget()
|
||||||
2, 3, 1, 1);
|
2, 3, 1, 1);
|
||||||
|
|
||||||
volumeGroup->addRow(volumeLayout);
|
volumeGroup->addRow(volumeLayout);
|
||||||
|
|
||||||
volumeGroup->add(MENU_ENUM_LABEL_AUDIO_FASTFORWARD_MUTE);
|
volumeGroup->add(MENU_ENUM_LABEL_AUDIO_FASTFORWARD_MUTE);
|
||||||
|
volumeGroup->add(MENU_ENUM_LABEL_AUDIO_FASTFORWARD_SPEEDUP);
|
||||||
|
volumeGroup->add(MENU_ENUM_LABEL_AUDIO_REWIND_MUTE);
|
||||||
|
|
||||||
layout->addWidget(outputGroup);
|
layout->addWidget(outputGroup);
|
||||||
layout->addWidget(resamplerGroup);
|
layout->addWidget(resamplerGroup);
|
||||||
|
|
Loading…
Reference in New Issue