mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2026-08-22 15:48:56 +00:00
[android] Initial implementation for MediaCodec
This commit is contained in:
@@ -123,6 +123,10 @@ namespace Common::Android {
|
||||
return owned.env;
|
||||
}
|
||||
|
||||
JavaVM *GetJavaVM() {
|
||||
return s_java_vm;
|
||||
}
|
||||
|
||||
jclass GetNativeLibraryClass() {
|
||||
return s_native_library_class;
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
namespace Common::Android {
|
||||
|
||||
JNIEnv* GetEnvForThread();
|
||||
JavaVM* GetJavaVM();
|
||||
|
||||
/**
|
||||
* Starts a new thread to run JNI. Intended to be used when you must run JNI from a fiber.
|
||||
|
||||
@@ -19,8 +19,16 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
#include <libavutil/hwcontext.h>
|
||||
|
||||
#if defined(__ANDROID__)
|
||||
#include <libavcodec/jni.h>
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined(__ANDROID__)
|
||||
#include "common/android/id_cache.h"
|
||||
#endif
|
||||
|
||||
namespace FFmpeg {
|
||||
|
||||
namespace {
|
||||
@@ -290,6 +298,11 @@ bool DecodeApi::Initialize(Tegra::Host1x::NvdecCommon::VideoCodec codec) {
|
||||
|
||||
// Enable GPU decoding if requested.
|
||||
if (Settings::values.nvdec_emulation.GetValue() == Settings::NvdecEmulation::Gpu) {
|
||||
#if defined(__ANDROID__)
|
||||
static const int jni_vm_result =
|
||||
av_jni_set_java_vm(Common::Android::GetJavaVM(), nullptr);
|
||||
(void)jni_vm_result;
|
||||
#endif
|
||||
m_hardware_context.emplace();
|
||||
m_hardware_context->InitializeForDecoder(*m_decoder_context, *m_decoder);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user