From 038ee1a6dd360a51430bd8c2cca8aed661f60b36 Mon Sep 17 00:00:00 2001 From: Emmanuel Hansen Date: Sat, 11 Nov 2023 18:33:14 +0000 Subject: [PATCH] android - remove oboe --- src/LibRyujinx/Android/JniExportedMethods.cs | 3 +- src/LibRyujinx/LibRyujinx.cs | 3 + src/LibRyujinx/LibRyujinx.csproj | 1 + src/RyujinxAndroid/app/build.gradle | 5 +- .../app/src/main/cpp/CMakeLists.txt | 4 - src/RyujinxAndroid/app/src/main/cpp/oboe.cpp | 147 ------------------ src/RyujinxAndroid/app/src/main/cpp/oboe.h | 29 ---- .../org/ryujinx/android/views/HomeViews.kt | 2 +- 8 files changed, 9 insertions(+), 185 deletions(-) delete mode 100644 src/RyujinxAndroid/app/src/main/cpp/oboe.cpp delete mode 100644 src/RyujinxAndroid/app/src/main/cpp/oboe.h diff --git a/src/LibRyujinx/Android/JniExportedMethods.cs b/src/LibRyujinx/Android/JniExportedMethods.cs index 1f0a46fa4..1d443f299 100644 --- a/src/LibRyujinx/Android/JniExportedMethods.cs +++ b/src/LibRyujinx/Android/JniExportedMethods.cs @@ -6,6 +6,7 @@ using LibRyujinx.Jni.Values; using LibRyujinx.Shared.Audio.Oboe; using Microsoft.Win32.SafeHandles; using Rxmxnx.PInvoke; +using Ryujinx.Audio.Backends.OpenAL; using Ryujinx.Common.Configuration; using Ryujinx.Common.Logging; using Ryujinx.Common.Logging.Targets; @@ -137,7 +138,7 @@ namespace LibRyujinx JBoolean ignoreMissingServices) { Logger.Trace?.Print(LogClass.Application, "Jni Function Call"); - AudioDriver = new OboeHardwareDeviceDriver(); + AudioDriver = new OpenALHardwareDeviceDriver();//new OboeHardwareDeviceDriver(); return InitializeDevice(isHostMapped, useNce, (SystemLanguage)(int)systemLanguage, diff --git a/src/LibRyujinx/LibRyujinx.cs b/src/LibRyujinx/LibRyujinx.cs index 321bdad69..7e75931a2 100644 --- a/src/LibRyujinx/LibRyujinx.cs +++ b/src/LibRyujinx/LibRyujinx.cs @@ -26,6 +26,7 @@ using LibHac.FsSystem; using LibHac.Fs; using Path = System.IO.Path; using LibHac; +using OpenTK.Audio.OpenAL; using Ryujinx.Common.Configuration.Multiplayer; using Ryujinx.HLE.Loaders.Npdm; using Ryujinx.Common.Utilities; @@ -94,6 +95,8 @@ namespace LibRyujinx Console.WriteLine(ex); return false; } + + OpenALLibraryNameContainer.OverridePath = "libopenal.so"; Logger.Notice.Print(LogClass.Application, "RyujinxAndroid is ready!"); diff --git a/src/LibRyujinx/LibRyujinx.csproj b/src/LibRyujinx/LibRyujinx.csproj index f9e7ab255..06e2c55f1 100644 --- a/src/LibRyujinx/LibRyujinx.csproj +++ b/src/LibRyujinx/LibRyujinx.csproj @@ -16,6 +16,7 @@ Speed + diff --git a/src/RyujinxAndroid/app/build.gradle b/src/RyujinxAndroid/app/build.gradle index 008e7dd39..606440096 100644 --- a/src/RyujinxAndroid/app/build.gradle +++ b/src/RyujinxAndroid/app/build.gradle @@ -11,8 +11,8 @@ android { applicationId "org.ryujinx.android" minSdk 30 targetSdk 33 - versionCode 10003 - versionName '1.0.3' + versionCode 10004 + versionName '1.0.4' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { @@ -94,7 +94,6 @@ dependencies { implementation 'androidx.compose.material3:material3' implementation 'com.github.swordfish90:radialgamepad:2.0.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' - implementation 'com.google.oboe:oboe:1.7.0' implementation "com.anggrayudi:storage:1.5.5" implementation "androidx.preference:preference-ktx:1.2.0" implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.2' diff --git a/src/RyujinxAndroid/app/src/main/cpp/CMakeLists.txt b/src/RyujinxAndroid/app/src/main/cpp/CMakeLists.txt index 0c9871c6b..5900c6212 100644 --- a/src/RyujinxAndroid/app/src/main/cpp/CMakeLists.txt +++ b/src/RyujinxAndroid/app/src/main/cpp/CMakeLists.txt @@ -28,7 +28,6 @@ add_library( # Sets the name of the library. # Provides a relative path to your source file(s). vulkan_wrapper.cpp - oboe.cpp string_helper.cpp ryujinx.cpp) @@ -45,8 +44,6 @@ find_library( # Sets the name of the path variable. # you want CMake to locate. log ) -find_package (oboe REQUIRED CONFIG) - # Specifies libraries CMake should link to your target library. You # can link multiple libraries, such as libraries you define in this # build script, prebuilt third-party libraries, or system libraries. @@ -55,7 +52,6 @@ target_link_libraries( # Specifies the target library. ryujinxjni # Links the target library to the log library # included in the NDK. - oboe::oboe ${log-lib} -lvulkan -landroid diff --git a/src/RyujinxAndroid/app/src/main/cpp/oboe.cpp b/src/RyujinxAndroid/app/src/main/cpp/oboe.cpp deleted file mode 100644 index f643a4fbe..000000000 --- a/src/RyujinxAndroid/app/src/main/cpp/oboe.cpp +++ /dev/null @@ -1,147 +0,0 @@ -// -// Created by Emmanuel Hansen on 6/27/2023. -// - -#include "oboe.h" - -static int s_device_id = 0; - -void AudioSession::initialize() { -} - -void AudioSession::destroy() { - if(stream == nullptr) - return; - stream->close(); - - stream = nullptr; -} - -void AudioSession::start() { - isStarted = true; - - stream->requestStart(); -} - -void AudioSession::stop() { - isStarted = false; - stream->requestStop(); -} - - -void AudioSession::read(uint64_t data, uint64_t samples) { - int timeout = INT32_MAX; - - stream->write((void*)data, samples, timeout); -} - -extern "C" -{ -JNIEXPORT void JNICALL -Java_org_ryujinx_android_NativeHelpers_setDeviceId( - JNIEnv *env, - jobject instance, - jint device_id) { - s_device_id = device_id; -} - -AudioSession *create_session(int sample_format, - uint sample_rate, - uint channel_count) { - using namespace oboe; - - AudioStreamBuilder builder; - - AudioFormat format; - - switch (sample_format) { - case 0: - format = AudioFormat::Invalid; - break; - case 1: - case 2: - format = AudioFormat::I16; - break; - case 3: - format = AudioFormat::I24; - break; - case 4: - format = AudioFormat::I32; - break; - case 5: - format = AudioFormat::Float; - break; - default: - std::ostringstream string; - string << "Invalid Format" << sample_format; - - throw std::runtime_error(string.str()); - } - - auto session = new AudioSession(); - session->initialize(); - - session->format = format; - session->channelCount = channel_count; - - builder.setDirection(Direction::Output) - ->setPerformanceMode(PerformanceMode::LowLatency) - ->setSharingMode(SharingMode::Shared) - ->setFormat(format) - ->setChannelCount(channel_count) - ->setSampleRate(sample_rate); - AudioStream *stream; - if (builder.openStream(&stream) != oboe::Result::OK) { - delete session; - session = nullptr; - return nullptr; - } - session->stream = stream; - - return session; -} - -void start_session(AudioSession *session) { - if (session == nullptr) - return; - session->start(); -} - -void stop_session(AudioSession *session) { - if (session == nullptr) - return; - session->stop(); -} - -void set_session_volume(AudioSession *session, float volume) { - if (session == nullptr) - return; - session->volume = volume; -} - -float get_session_volume(AudioSession *session) { - if (session == nullptr) - return 0; - return session->volume; -} - -void close_session(AudioSession *session) { - if (session == nullptr) - return; - session->destroy(); - - delete session; -} - -bool is_playing(AudioSession *session) { - if (session == nullptr) - return false; - return session->isStarted; -} - -void write_to_session(AudioSession *session, uint64_t data, uint64_t samples) { - if (session == nullptr) - return; - session->read(data, samples); -} -} \ No newline at end of file diff --git a/src/RyujinxAndroid/app/src/main/cpp/oboe.h b/src/RyujinxAndroid/app/src/main/cpp/oboe.h deleted file mode 100644 index 0d6559417..000000000 --- a/src/RyujinxAndroid/app/src/main/cpp/oboe.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// Created by Emmanuel Hansen on 6/27/2023. -// - -#ifndef RYUJINXNATIVE_OBOE_H -#define RYUJINXNATIVE_OBOE_H - -#include -#include -#include -#include -#include - -class AudioSession { -public: - oboe::AudioStream* stream; - float volume = 1.0f; - bool isStarted; - oboe::AudioFormat format; - uint channelCount; - - void initialize(); - void destroy(); - void start(); - void stop(); - void read(uint64_t data, uint64_t samples); -}; - -#endif //RYUJINXNATIVE_OBOE_H diff --git a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/views/HomeViews.kt b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/views/HomeViews.kt index 3914b47aa..877aa8cb7 100644 --- a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/views/HomeViews.kt +++ b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/views/HomeViews.kt @@ -226,7 +226,7 @@ class HomeViews { } } - /*val showAppletMenu = remember { mutableStateOf(false) } + /*\val showAppletMenu = remember { mutableStateOf(false) } Box { IconButton(onClick = { showAppletMenu.value = true