From f9af7007d2fa12c7220ba3f558f3dabf0bdc7007 Mon Sep 17 00:00:00 2001 From: Henrik Rydgard Date: Thu, 30 May 2013 15:26:12 +0200 Subject: [PATCH] Add support for loading at3plusdecoder.so on Android. Make sure the .so files are at /PSP/libs/armeabi-v7a and/or /PSP/libs/armeabi on your Android external storage. --- Core/HW/atrac3plus.cpp | 28 +++++++++++++++++++++++++++- android/jni/Android.mk | 2 ++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/Core/HW/atrac3plus.cpp b/Core/HW/atrac3plus.cpp index 720e883728..47cfd30d82 100644 --- a/Core/HW/atrac3plus.cpp +++ b/Core/HW/atrac3plus.cpp @@ -6,6 +6,13 @@ #endif // _WIN32 #include +#include + + +#include "base/logging.h" +#include "Core/Config.h" + +extern std::string externalDirectory; namespace Atrac3plus_Decoder { @@ -39,13 +46,32 @@ namespace Atrac3plus_Decoder { return -1; } #else + std::string filename = "at3plusdecoder.so"; + +#if defined(ANDROID) && defined(ARM) + +#if ARMEABI_V7A + filename = g_Config.memCardDirectory + "PSP/libs/armeabi-v7a/lib" + filename; +#else + filename = g_Config.memCardDirectory + "PSP/libs/armeabi/lib" + filename; +#endif + + #endif + + ILOG("Attempting to load atrac3plus decoder from %s", filename.c_str()); // TODO: from which directory on Android? - so = dlopen("at3plusdecoder.so", RTLD_LAZY); + so = dlopen(filename.c_str(), RTLD_LAZY); if (so) { frame_decoder = (ATRAC3PLUS_DECODEFRAME)dlsym(so, "Atrac3plusDecoder_decodeFrame"); open_context = (ATRAC3PLUS_OPENCONTEXT)dlsym(so, "Atrac3plusDecoder_openContext"); close_context = (ATRAC3PLUS_CLOSECONTEXT)dlsym(so, "Atrac3plusDecoder_closeContext"); + ILOG("Successfully loaded atrac3plus decoder from %s", filename.c_str()); + if (!frame_decoder || !open_context || !close_context) { + ILOG("Found atrac3plus decoder at %s but failed to load functions", filename.c_str()); + return -1; + } } else { + ELOG("Failed to load atrac3plus decoder from %s", filename.c_str()); return -1; } #endif // _WIN32 diff --git a/android/jni/Android.mk b/android/jni/Android.mk index 5801e92eea..17f49abe6f 100644 --- a/android/jni/Android.mk +++ b/android/jni/Android.mk @@ -46,6 +46,7 @@ LOCAL_LDLIBS += $(LOCAL_PATH)/../../ffmpeg/android/armv7/lib/libswresample.a LOCAL_LDLIBS += $(LOCAL_PATH)/../../ffmpeg/android/armv7/lib/libswscale.a LOCAL_LDLIBS += $(LOCAL_PATH)/../../ffmpeg/android/armv7/lib/libavutil.a LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../ffmpeg/android/armv7/include +LOCAL_CFLAGS += -DARMEABI_V7A endif ifeq ($(TARGET_ARCH_ABI),armeabi) LOCAL_LDLIBS += $(LOCAL_PATH)/../../ffmpeg/android/armv6/lib/libavformat.a @@ -54,6 +55,7 @@ LOCAL_LDLIBS += $(LOCAL_PATH)/../../ffmpeg/android/armv6/lib/libswresample.a LOCAL_LDLIBS += $(LOCAL_PATH)/../../ffmpeg/android/armv6/lib/libswscale.a LOCAL_LDLIBS += $(LOCAL_PATH)/../../ffmpeg/android/armv6/lib/libavutil.a LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../ffmpeg/android/armv6/include +LOCAL_CFLAGS += -DARMEABI endif # $(SRC)/Core/EmuThread.cpp \