diff --git a/core/oslib/audiobackend_android.h b/core/oslib/audiobackend_android.h new file mode 100644 index 000000000..c2765c14b --- /dev/null +++ b/core/oslib/audiobackend_android.h @@ -0,0 +1,4 @@ +#pragma once +#include "oslib/audiostream.h" + +extern audiobackend_t audiobackend_android; \ No newline at end of file diff --git a/core/oslib/audiostream.cpp b/core/oslib/audiostream.cpp index 1e2f045dd..1f510ac78 100644 --- a/core/oslib/audiostream.cpp +++ b/core/oslib/audiostream.cpp @@ -3,6 +3,7 @@ #include "oslib/oslib.h" #include "audiostream.h" #include "oslib/audiobackend_directsound.h" +#include "oslib/audiobackend_android.h" #include "oslib/audiobackend_alsa.h" #include "oslib/audiobackend_oss.h" @@ -73,6 +74,9 @@ void RegisterAllAudioBackends() { #if HOST_OS==OS_WINDOWS RegisterAudioBackend(&audiobackend_directsound); #endif + #if ANDROID + RegisterAudioBackend(&audiobackend_android); + #endif #if USE_OSS RegisterAudioBackend(&audiobackend_oss); #endif diff --git a/shell/android/jni/src/Android.cpp b/shell/android/jni/src/Android.cpp index 98e69b7a2..68ec18572 100644 --- a/shell/android/jni/src/Android.cpp +++ b/shell/android/jni/src/Android.cpp @@ -16,6 +16,7 @@ #include "rend/TexCache.h" #include "hw/maple/maple_devs.h" #include "hw/maple/maple_if.h" +#include "oslib/audiobackend_android.h" #include "util.h" @@ -485,21 +486,38 @@ JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_initControllers(JNIEn env->ReleaseBooleanArrayElements(controllers, controllers_body, 0); } -#if 0 -u32 PushAudio(void* frame, u32 amt, bool wait) +// Audio Stuff +u32 androidaudio_push(void* frame, u32 amt, bool wait) { verify(amt==SAMPLE_COUNT); //yeah, do some audio piping magic here ! jenv->SetShortArrayRegion(jsamples,0,amt*2,(jshort*)frame); return jenv->CallIntMethod(emu,writemid,jsamples,wait); } -#endif + +void androidaudio_init() +{ + // Nothing to do here... +} + +void androidaudio_term() +{ + // Move along, there is nothing to see here! +} bool os_IsAudioBuffered() { return jenv->CallIntMethod(emu,writemid,jsamples,-1)==0; } +audiobackend_t audiobackend_android = { + "android", // Slug + "Android Audio", // Name + &androidaudio_init, + &androidaudio_push, + &androidaudio_term +}; + int get_mic_data(u8* buffer) { jbyteArray jdata = (jbyteArray)jenv->CallObjectMethod(sipemu,getmicdata);