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