From c58cbb47875043679af04b3c281a822d8d24ea62 Mon Sep 17 00:00:00 2001
From: SSimco <37044560+SSimco@users.noreply.github.com>
Date: Sun, 13 Oct 2024 12:35:16 +0300
Subject: [PATCH] Added missing audio delay setting
---
src/android/app/src/main/cpp/NativeSettings.cpp | 13 +++++++++++++
.../cemu/Cemu/nativeinterface/NativeSettings.java | 6 ++++++
.../Cemu/settings/audio/AudioSettingsFragment.java | 8 ++++++++
src/android/app/src/main/res/values/strings.xml | 1 +
4 files changed, 28 insertions(+)
diff --git a/src/android/app/src/main/cpp/NativeSettings.cpp b/src/android/app/src/main/cpp/NativeSettings.cpp
index bff31c0e..4e470c1d 100644
--- a/src/android/app/src/main/cpp/NativeSettings.cpp
+++ b/src/android/app/src/main/cpp/NativeSettings.cpp
@@ -333,4 +333,17 @@ Java_info_cemu_Cemu_nativeinterface_NativeSettings_setAudioDeviceVolume([[maybe_
auto& deviceVolume = tv ? g_config.data().tv_volume : g_config.data().pad_volume;
deviceVolume = volume;
g_config.Save();
+}
+
+extern "C" [[maybe_unused]] JNIEXPORT jint JNICALL
+Java_info_cemu_Cemu_nativeinterface_NativeSettings_getAudioLatency([[maybe_unused]] JNIEnv* env, [[maybe_unused]] jclass clazz)
+{
+ return g_config.data().audio_delay;
+}
+
+extern "C" [[maybe_unused]] JNIEXPORT void JNICALL
+Java_info_cemu_Cemu_nativeinterface_NativeSettings_setAudioLatency([[maybe_unused]] JNIEnv* env, [[maybe_unused]] jclass clazz, jint latency)
+{
+ g_config.data().audio_delay = latency;
+ g_config.Save();
}
\ No newline at end of file
diff --git a/src/android/app/src/main/java/info/cemu/Cemu/nativeinterface/NativeSettings.java b/src/android/app/src/main/java/info/cemu/Cemu/nativeinterface/NativeSettings.java
index e3fe001c..511275cf 100644
--- a/src/android/app/src/main/java/info/cemu/Cemu/nativeinterface/NativeSettings.java
+++ b/src/android/app/src/main/java/info/cemu/Cemu/nativeinterface/NativeSettings.java
@@ -64,6 +64,12 @@ public class NativeSettings {
public static native int getAudioDeviceVolume(boolean tv);
+ public static final int AUDIO_BLOCK_COUNT = 24;
+
+ public static native void setAudioLatency(int latency);
+
+ public static native int getAudioLatency();
+
public static final int OVERLAY_SCREEN_POSITION_DISABLED = 0;
public static final int OVERLAY_SCREEN_POSITION_TOP_LEFT = 1;
public static final int OVERLAY_SCREEN_POSITION_TOP_CENTER = 2;
diff --git a/src/android/app/src/main/java/info/cemu/Cemu/settings/audio/AudioSettingsFragment.java b/src/android/app/src/main/java/info/cemu/Cemu/settings/audio/AudioSettingsFragment.java
index 459b46d2..98e11917 100644
--- a/src/android/app/src/main/java/info/cemu/Cemu/settings/audio/AudioSettingsFragment.java
+++ b/src/android/app/src/main/java/info/cemu/Cemu/settings/audio/AudioSettingsFragment.java
@@ -37,6 +37,14 @@ public class AudioSettingsFragment extends Fragment {
GenericRecyclerViewAdapter genericRecyclerViewAdapter = new GenericRecyclerViewAdapter();
+ SliderRecyclerViewItem latencySlider = new SliderRecyclerViewItem(getString(R.string.audio_latency),
+ 0,
+ NativeSettings.AUDIO_BLOCK_COUNT - 1,
+ NativeSettings.getAudioLatency(),
+ value -> NativeSettings.setAudioLatency((int) value),
+ value -> (int) (value * 12) + "ms");
+ genericRecyclerViewAdapter.addRecyclerViewItem(latencySlider);
+
ToggleRecyclerViewItem tvDeviceToggle = new ToggleRecyclerViewItem(getString(R.string.tv),
getString(R.string.tv_audio_description), NativeSettings.getAudioDeviceEnabled(true),
checked -> NativeSettings.setAudioDeviceEnabled(checked, true));
diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml
index c449c51b..44a29fc8 100644
--- a/src/android/app/src/main/res/values/strings.xml
+++ b/src/android/app/src/main/res/values/strings.xml
@@ -222,4 +222,5 @@
Multi-core recompiler
CPU mode
Thread quantum
+ Latency
\ No newline at end of file