From 01cdde101fcfc54e77d240d5e34b3e35ab624a08 Mon Sep 17 00:00:00 2001 From: hap Date: Sat, 31 May 2025 17:04:19 +0200 Subject: [PATCH] sound: change audio_latency meaning similar to what it was before (20ms steps for portaudio, xaudio2, wasapi), old mame.ini default setting of 2 should work fine --- docs/man/mame.6 | 6 +++--- docs/source/commandline/commandline-all.rst | 15 ++++++++------- src/osd/modules/lib/osdobj_common.cpp | 2 +- src/osd/modules/sound/pa_sound.cpp | 2 +- src/osd/modules/sound/wasapi_sound.cpp | 3 ++- src/osd/modules/sound/xaudio2_sound.cpp | 3 ++- 6 files changed, 17 insertions(+), 14 deletions(-) diff --git a/docs/man/mame.6 b/docs/man/mame.6 index fab6c3f22d8..c4d8070b08d 100644 --- a/docs/man/mame.6 +++ b/docs/man/mame.6 @@ -948,11 +948,11 @@ Sets the startup volume. It can later be changed with the user interface .\" +++++++++++++++++++++++++++++++++++++++++++++++++++++++ .TP .B \-audio_latency, \-alat \fIvalue -This controls the amount of latency in seconds built into the audio streaming. +This controls the amount of latency built into the audio streaming. Smaller values provide less audio delay while requiring better system performance. Higher values increase audio delay but may help avoid -buffer under-runs and audio interruptions. The default is 0.0 and will pick -a sane duration. +buffer under-runs and audio interruptions. The default is 0 and will +pick a sane duration. .\" .\" ******************************************************* .SS Input options diff --git a/docs/source/commandline/commandline-all.rst b/docs/source/commandline/commandline-all.rst index 8ee84ae9a27..d96e4536739 100644 --- a/docs/source/commandline/commandline-all.rst +++ b/docs/source/commandline/commandline-all.rst @@ -3065,22 +3065,23 @@ Core Sound Options **-audio_latency** ** / **-alat** ** - Audio latency in seconds, up to a maximum of 0.5 seconds. Smaller values - provide less audio delay while requiring better system performance. Larger - values increase audio delay but may help avoid buffer under-runs and audio - interruptions. A value of 0.0 will use the default for the selected sound - module. + Audio latency, conventionally in number of audio frames (1 audio frame is 20ms). + It is not required to supply whole numbers, eg. a value of ``1.5`` is 30ms). + Smaller values provide less audio delay while requiring better system + performance. Larger values increase audio delay but may help avoid buffer + under-runs and audio interruptions. A value of ``0`` will use the default + for the selected sound module. You may need to change the value of this option if you change the sound module using the :ref:`sound option `. This option is unsupported on sound modules ``pipewire``, ``pulse``, ``sdl``. - The default is ``0.0``. + The default is ``0``. Example: .. code-block:: bash - mame galaga -audio_latency 0.1 + mame galaga -audio_latency 2 .. _mame-commandline-inputoptions: diff --git a/src/osd/modules/lib/osdobj_common.cpp b/src/osd/modules/lib/osdobj_common.cpp index 192b8a7d131..7c08c0ae973 100644 --- a/src/osd/modules/lib/osdobj_common.cpp +++ b/src/osd/modules/lib/osdobj_common.cpp @@ -144,7 +144,7 @@ const options_entry osd_options::s_option_entries[] = { nullptr, nullptr, core_options::option_type::HEADER, "OSD SOUND OPTIONS" }, { OSDOPTION_SOUND, OSDOPTVAL_AUTO, core_options::option_type::STRING, "sound output method: " }, - { OSDOPTION_AUDIO_LATENCY ";alat(0.0-0.5)", "0.0", core_options::option_type::FLOAT, "audio latency in seconds, 0.0 for default (increase to reduce glitches, decrease for responsiveness)" }, + { OSDOPTION_AUDIO_LATENCY ";alat(0.0-50.0)", "0.0", core_options::option_type::FLOAT, "audio latency, 0 for default (increase to reduce glitches, decrease for responsiveness)" }, #ifdef SDLMAME_MACOSX { nullptr, nullptr, core_options::option_type::HEADER, "CoreAudio-SPECIFIC OPTIONS" }, diff --git a/src/osd/modules/sound/pa_sound.cpp b/src/osd/modules/sound/pa_sound.cpp index a69b2277cf1..fd0a37df859 100644 --- a/src/osd/modules/sound/pa_sound.cpp +++ b/src/osd/modules/sound/pa_sound.cpp @@ -163,7 +163,7 @@ int sound_pa::init(osd_interface &osd, osd_options const &options) m_info.m_default_source = dc(Pa_GetDefaultInputDevice()); m_stream_id = 1; - m_audio_latency = options.audio_latency(); + m_audio_latency = options.audio_latency() / sound_manager::STREAMS_UPDATE_FREQUENCY; m_machine = &downcast(osd).machine(); return 0; diff --git a/src/osd/modules/sound/wasapi_sound.cpp b/src/osd/modules/sound/wasapi_sound.cpp index f5a34a44068..34937bf7fef 100644 --- a/src/osd/modules/sound/wasapi_sound.cpp +++ b/src/osd/modules/sound/wasapi_sound.cpp @@ -6,6 +6,7 @@ // //==================================================================== +#include "emu.h" #include "sound_module.h" #include "modules/osdmodule.h" @@ -499,7 +500,7 @@ int sound_wasapi::init(osd_interface &osd, osd_options const &options) HRESULT result; // get relevant options - m_audio_latency = options.audio_latency(); + m_audio_latency = options.audio_latency() / sound_manager::STREAMS_UPDATE_FREQUENCY; if (m_audio_latency == 0.0F) m_audio_latency = 0.03F; m_audio_latency = std::clamp(m_audio_latency, 0.01F, 1.0F); diff --git a/src/osd/modules/sound/xaudio2_sound.cpp b/src/osd/modules/sound/xaudio2_sound.cpp index 804ca3de8e1..d02261f38bc 100644 --- a/src/osd/modules/sound/xaudio2_sound.cpp +++ b/src/osd/modules/sound/xaudio2_sound.cpp @@ -6,6 +6,7 @@ // //==================================================================== +#include "emu.h" #include "sound_module.h" #include "modules/osdmodule.h" @@ -387,7 +388,7 @@ int sound_xaudio2::init(osd_interface &osd, osd_options const &options) } // get relevant options - m_audio_latency = options.audio_latency(); + m_audio_latency = options.audio_latency() / sound_manager::STREAMS_UPDATE_FREQUENCY; if (m_audio_latency == 0.0F) m_audio_latency = 0.03F; m_audio_latency = std::clamp(m_audio_latency, 0.01F, 1.0F);