[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