[Scummvm-git-logs] scummvm master -> 0554419be2f70d1c34f3e9a0aaf0410a84100ecb
spleen1981
noreply at scummvm.org
Thu Mar 21 22:36:23 UTC 2024
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
a38cc2b6d9 LIBRETRO: BUILD: remove -rdynamic for debug builds
2b1ad93f0e LIBRETRO: add silence-only buffers detection
0554419be2 LIBRETRO: use same libretro buffer size for mixer
Commit: a38cc2b6d9bbccea4187a90d5c512defbc8cbce4
https://github.com/scummvm/scummvm/commit/a38cc2b6d9bbccea4187a90d5c512defbc8cbce4
Author: Giovanni Cascione (ing.cascione at gmail.com)
Date: 2024-03-21T23:35:55+01:00
Commit Message:
LIBRETRO: BUILD: remove -rdynamic for debug builds
Changed paths:
backends/platform/libretro/Makefile.common
diff --git a/backends/platform/libretro/Makefile.common b/backends/platform/libretro/Makefile.common
index f6ca4615829..308bde8f444 100644
--- a/backends/platform/libretro/Makefile.common
+++ b/backends/platform/libretro/Makefile.common
@@ -106,7 +106,7 @@ else
endif
ifeq ($(DEBUG), 1)
- DEFINES += -O0 -g -rdynamic -DLIBRETRO_DEBUG -DDEBUG_BUILD
+ DEFINES += -O0 -g -DLIBRETRO_DEBUG -DDEBUG_BUILD
else
DEFINES += -DDISABLE_TEXT_CONSOLE -DRELEASE_BUILD
endif
Commit: 2b1ad93f0ec738b60e99e1746bd7253c4f233bc6
https://github.com/scummvm/scummvm/commit/2b1ad93f0ec738b60e99e1746bd7253c4f233bc6
Author: Giovanni Cascione (ing.cascione at gmail.com)
Date: 2024-03-21T23:35:55+01:00
Commit Message:
LIBRETRO: add silence-only buffers detection
Changed paths:
backends/platform/libretro/src/libretro-core.cpp
diff --git a/backends/platform/libretro/src/libretro-core.cpp b/backends/platform/libretro/src/libretro-core.cpp
index 884acd59099..9858ce7834e 100644
--- a/backends/platform/libretro/src/libretro-core.cpp
+++ b/backends/platform/libretro/src/libretro-core.cpp
@@ -154,7 +154,23 @@ static void audio_run(void) {
}
samples_produced = ((Audio::MixerImpl *)g_system->getMixer())->mixCallback((byte *) audio_sample_buffer, samples_to_read * 2 * sizeof(int16));
- audio_status = samples_produced ? (audio_status & ~AUDIO_STATUS_MUTE) : (audio_status | AUDIO_STATUS_MUTE);
+
+ /* Workaround as currently there's no way to detect silence-only buffers from the mixer */
+ if (samples_produced) {
+ int i = 0;
+ for (; i < samples_produced; i += 2)
+ /* SID streams constant crap */
+ if (READ_UINT16(audio_sample_buffer + i) > 32)
+ break;
+ samples_produced = i >= samples_produced ? 0 : samples_produced;
+ }
+
+ if (samples_produced)
+ audio_status &= ~AUDIO_STATUS_MUTE;
+ else {
+ audio_status |= AUDIO_STATUS_MUTE;
+ return;
+ }
/* Workaround for a RetroArch audio driver
* limitation: a maximum of 1024 frames
Commit: 0554419be2f70d1c34f3e9a0aaf0410a84100ecb
https://github.com/scummvm/scummvm/commit/0554419be2f70d1c34f3e9a0aaf0410a84100ecb
Author: Giovanni Cascione (ing.cascione at gmail.com)
Date: 2024-03-21T23:35:55+01:00
Commit Message:
LIBRETRO: use same libretro buffer size for mixer
Changed paths:
backends/platform/libretro/include/libretro-core.h
backends/platform/libretro/src/libretro-core.cpp
backends/platform/libretro/src/libretro-os-base.cpp
diff --git a/backends/platform/libretro/include/libretro-core.h b/backends/platform/libretro/include/libretro-core.h
index c3ec8f9ef09..158664e04e0 100644
--- a/backends/platform/libretro/include/libretro-core.h
+++ b/backends/platform/libretro/include/libretro-core.h
@@ -35,6 +35,7 @@ const char * retro_get_playlist_dir(void);
bool retro_setting_get_timing_inaccuracies_enabled(void);
float retro_setting_get_frame_rate(void);
uint16 retro_setting_get_sample_rate(void);
+uint16 retro_setting_get_audio_samples_buffer_size(void);
int retro_setting_get_analog_deadzone(void);
bool retro_setting_get_analog_response_is_quadratic(void);
float retro_setting_get_mouse_speed(void);
diff --git a/backends/platform/libretro/src/libretro-core.cpp b/backends/platform/libretro/src/libretro-core.cpp
index 9858ce7834e..147dd8252a9 100644
--- a/backends/platform/libretro/src/libretro-core.cpp
+++ b/backends/platform/libretro/src/libretro-core.cpp
@@ -127,7 +127,7 @@ static void log_scummvm_exit_code(void) {
static void audio_buffer_init(uint16 sample_rate, uint16 frame_rate) {
audio_samples_accumulator = 0.0f;
audio_samples_per_frame = (float)sample_rate / (float)frame_rate;
- uint32 audio_sample_buffer_size = ((uint32)audio_samples_per_frame + 1) * 2 * sizeof(int16);
+ uint32 audio_sample_buffer_size = ((uint32)retro_setting_get_audio_samples_buffer_size()) * 2 * sizeof(int16);
audio_sample_buffer = audio_sample_buffer ? (int16 *)realloc(audio_sample_buffer, audio_sample_buffer_size) : (int16 *)malloc(audio_sample_buffer_size);
if (audio_sample_buffer)
@@ -609,6 +609,10 @@ uint16 retro_setting_get_sample_rate(void) {
return sample_rate;
}
+uint16 retro_setting_get_audio_samples_buffer_size(void) {
+ return audio_samples_per_frame + 1;
+}
+
void init_command_params(void) {
memset(cmd_params, 0, sizeof(cmd_params));
cmd_params_num = 1;
diff --git a/backends/platform/libretro/src/libretro-os-base.cpp b/backends/platform/libretro/src/libretro-os-base.cpp
index b774ab6b45b..28d63b80268 100644
--- a/backends/platform/libretro/src/libretro-os-base.cpp
+++ b/backends/platform/libretro/src/libretro-os-base.cpp
@@ -112,7 +112,7 @@ void OSystem_libretro::initBackend() {
#else
_overlay.create(RES_W_OVERLAY, RES_H_OVERLAY, Graphics::PixelFormat(2, 5, 5, 5, 1, 10, 5, 0, 15));
#endif
- _mixer = new Audio::MixerImpl(retro_setting_get_sample_rate());
+ _mixer = new Audio::MixerImpl(retro_setting_get_sample_rate(), true, retro_setting_get_audio_samples_buffer_size());
retro_log_cb(RETRO_LOG_DEBUG, "Mixer set up at %dHz\n", retro_setting_get_sample_rate());
_timerManager = new LibretroTimerManager(retro_setting_get_frame_rate());
More information about the Scummvm-git-logs
mailing list