com_jme3_audio_android_AndroidOpenALSoftAudioRenderer.cpp 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483
  1. #include "com_jme3_audio_android_AndroidOpenALSoftAudioRenderer.h"
  2. #include "AL/alc.h"
  3. #include "AL/al.h"
  4. #include "AL/alext.h"
  5. // for __android_log_print(ANDROID_LOG_INFO, "YourApp", "formatted message");
  6. #include <android/log.h>
  7. #include <jni.h>
  8. #include <stddef.h>
  9. #include <stdio.h>
  10. #include <assert.h>
  11. #include <string.h>
  12. #include <time.h>
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16. static jboolean created = JNI_FALSE;
  17. #define BUFFER_COUNT 1
  18. ALuint* buffers[BUFFER_COUNT] = { 0 };
  19. ALuint* source = 0;
  20. int getError() {
  21. int errorcode = alGetError();
  22. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "getError: %d", errorcode);
  23. return errorcode;
  24. }
  25. /* InitAL opens the default device and sets up a context using default
  26. * attributes, making the program ready to call OpenAL functions. */
  27. int InitAL()
  28. {
  29. ALCdevice *device;
  30. ALCcontext *ctx;
  31. /* Open and initialize a device with default settings */
  32. device = alcOpenDevice(NULL);
  33. if(!device)
  34. {
  35. fprintf(stderr, "Could not open a device!\n");
  36. return 1;
  37. }
  38. ctx = alcCreateContext(device, NULL);
  39. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "NULL: %d", NULL);
  40. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "Created context: %d", ctx);
  41. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "Created context addr: %d", &ctx);
  42. if(ctx == NULL || alcMakeContextCurrent(ctx) == ALC_FALSE)
  43. {
  44. if(ctx != NULL)
  45. alcDestroyContext(ctx);
  46. alcCloseDevice(device);
  47. fprintf(stderr, "Could not set a context!\n");
  48. return 1;
  49. }
  50. printf("Opened \"%s\"\n", alcGetString(device, ALC_DEVICE_SPECIFIER));
  51. __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "Opened %s", alcGetString(device, ALC_DEVICE_SPECIFIER));
  52. return 0;
  53. }
  54. /* CloseAL closes the device belonging to the current context, and destroys the
  55. * context. */
  56. void CloseAL()
  57. {
  58. ALCdevice *device;
  59. ALCcontext *ctx;
  60. ALCboolean result;
  61. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "Getting current context");
  62. ctx = alcGetCurrentContext();
  63. // getError();
  64. if(ctx == NULL){
  65. __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "No context found");
  66. return;
  67. }
  68. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "Getting current context device");
  69. device = alcGetContextsDevice(ctx);
  70. if(device == NULL) {
  71. __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "No device found");
  72. return;
  73. } else {
  74. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alcGetContextsDevice device: %d", device);
  75. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alcGetContextsDevice device addr: %d", &device);
  76. }
  77. // getError();
  78. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "Setting context to NULL");
  79. result = alcMakeContextCurrent(NULL);
  80. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alcMakeContextCurrent returned");
  81. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alcMakeContextCurrent returned with result: %d", result);
  82. if(!result) {
  83. __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alcMakeContextCurrent failed");
  84. return;
  85. }
  86. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "Destroying context: %d", ctx);
  87. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "Destroying context addr: %d", &ctx);
  88. alcDestroyContext(ctx);
  89. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "Closing device");
  90. result = alcCloseDevice(device);
  91. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alcCloseDevice result: %d", result);
  92. }
  93. JNIEXPORT jboolean JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alIsCreated
  94. (JNIEnv* env, jclass)
  95. {
  96. return created;
  97. }
  98. JNIEXPORT jboolean JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alCreate
  99. (JNIEnv* env, jclass)
  100. {
  101. __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "Starting Audio Engine");
  102. InitAL();
  103. created = JNI_TRUE;
  104. return created;
  105. }
  106. JNIEXPORT jboolean JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alDestroy
  107. (JNIEnv* env, jclass)
  108. {
  109. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alDestroy");
  110. CloseAL();
  111. created = JNI_FALSE;
  112. return created;
  113. }
  114. JNIEXPORT jstring JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alcGetString
  115. (JNIEnv* env, jclass, jint param)
  116. {
  117. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alcGetString for param: %d", param);
  118. ALCdevice *device;
  119. ALCcontext *ctx;
  120. ctx = alcGetCurrentContext();
  121. if(ctx != NULL) {
  122. device = alcGetContextsDevice(ctx);
  123. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alcGetString param value: %s", alcGetString(device, param));
  124. return env->NewStringUTF(alcGetString(device, param));
  125. }
  126. }
  127. JNIEXPORT jstring JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alGetString
  128. (JNIEnv* env, jclass, jint param)
  129. {
  130. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alGetString for param: %d", param);
  131. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alGetString param value: %s", alGetString(param));
  132. return env->NewStringUTF(alGetString(param));
  133. }
  134. JNIEXPORT jint JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alGenSources
  135. (JNIEnv *, jclass)
  136. {
  137. ALuint source;
  138. alGenSources(1, &source);
  139. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alGenSources: %d", source);
  140. return source;
  141. }
  142. JNIEXPORT jint JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alGetError
  143. (JNIEnv *, jclass)
  144. {
  145. return getError();
  146. }
  147. JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alDeleteSources
  148. (JNIEnv* env, jclass, jint numSources, jobject intbufSources)
  149. {
  150. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alDeleteSources numSources: %d", numSources);
  151. ALuint* pIntBufSources = (ALuint*) env->GetDirectBufferAddress(intbufSources);
  152. alDeleteSources((ALsizei)numSources, pIntBufSources);
  153. }
  154. JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alGenBuffers
  155. (JNIEnv* env, jclass, jint numBuffers, jobject intbufBuffers)
  156. {
  157. ALuint* pIntBufBuffers = (ALuint*) env->GetDirectBufferAddress(intbufBuffers);
  158. alGenBuffers((ALsizei)numBuffers, pIntBufBuffers);
  159. // for (int i=0; i<numBuffers; i++) {
  160. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alGenBuffers[%d]: %d", i, *(pIntBufBuffers+i));
  161. // }
  162. }
  163. JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alDeleteBuffers
  164. (JNIEnv* env, jclass, jint numBuffers, jobject intbufBuffers)
  165. {
  166. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alDeleteBuffers numBuffers: %d", numBuffers);
  167. ALuint* pIntBufBuffers = (ALuint*) env->GetDirectBufferAddress(intbufBuffers);
  168. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alDeleteBuffers Buffers: %d", *pIntBufBuffers);
  169. // for (int i=0; i<numBuffers; i++) {
  170. // if(alIsBuffer(*(pIntBufBuffers+i)) == AL_TRUE) {
  171. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alDeleteBuffers[%d]: %d", i, *(pIntBufBuffers+i));
  172. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alDeleteBuffers buffer is a known buffer");
  173. // }
  174. // }
  175. alDeleteBuffers((ALsizei)numBuffers, pIntBufBuffers);
  176. }
  177. JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alSourceStop
  178. (JNIEnv *, jclass, jint source)
  179. {
  180. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alSourceStop for source: %d", source);
  181. alSourceStop((ALuint)source);
  182. }
  183. JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alSourcei
  184. (JNIEnv *, jclass, jint source, jint param, jint value)
  185. {
  186. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alSourcei for source: %d, param: %d, value: %d", source, param, value);
  187. alSourcei((ALuint)source, (ALenum)param, (ALint)value);
  188. }
  189. JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alBufferData
  190. (JNIEnv* env, jclass, jint buffer, jint format, jobject bufferData, jint bufferSize, jint frequency)
  191. {
  192. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alBufferData for source: %d, format: %d, size: %d, frequency: %d", buffer, format, bufferSize, frequency);
  193. ALuint* pBufferData = (ALuint*) env->GetDirectBufferAddress(bufferData);
  194. alBufferData((ALuint)buffer, (ALenum)format, pBufferData, (ALsizei)bufferSize, (ALsizei)frequency);
  195. }
  196. JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alSourcePlay
  197. (JNIEnv *, jclass, jint source)
  198. {
  199. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alSourcePlay for source: %d", source);
  200. alSourcePlay((ALuint)source);
  201. }
  202. JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alSourcePause
  203. (JNIEnv *, jclass, jint source)
  204. {
  205. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alSourcePause for source: %d", source);
  206. alSourcePause((ALuint)source);
  207. }
  208. JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alSourcef
  209. (JNIEnv *, jclass, jint source, jint param, jfloat value)
  210. {
  211. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alSourcef for source: %d, param: %d, value: %f", source, param, value);
  212. alSourcef((ALuint)source, (ALenum)param, (ALfloat)value);
  213. }
  214. JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alSource3f
  215. (JNIEnv *, jclass, jint source, jint param, jfloat value1, jfloat value2, jfloat value3)
  216. {
  217. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alSource3f for source: %d, param: %d, value1: %f, value2: %f, value3: %f", source, param, value1, value2, value3);
  218. alSource3f((ALuint)source, (ALenum)param, (ALfloat)value1, (ALfloat)value2, (ALfloat)value3);
  219. }
  220. JNIEXPORT jint JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alGetSourcei
  221. (JNIEnv *, jclass, jint source, jint param)
  222. {
  223. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alGetSourcei for source: %d, param: %d", source, param);
  224. ALint result;
  225. alGetSourcei((ALuint)source, (ALenum)param, &result);
  226. return (jint)result;
  227. }
  228. JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alSourceUnqueueBuffers
  229. (JNIEnv* env, jclass, jint source, jint numBuffers, jobject buffers)
  230. {
  231. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alSourceUnqueueBuffers for source: %d, numBuffers: %d", source, numBuffers);
  232. ALuint* pBuffers = (ALuint*) env->GetDirectBufferAddress(buffers);
  233. // for (ALuint i=0; i<numBuffers; i++) {
  234. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alSourceUnqueueBuffers, checking buffer[%d]: %d", i, *(pBuffers+i));
  235. // ALboolean isBuffer = alIsBuffer(*(pBuffers+i));
  236. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "buffer check result: %d", isBuffer);
  237. // }
  238. alSourceUnqueueBuffers((ALuint)source, (ALsizei)numBuffers, pBuffers);
  239. // for (ALuint i=0; i<numBuffers; i++) {
  240. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alSourceUnqueueBuffers[%d]: %d", i, *(pBuffers+i));
  241. // }
  242. }
  243. JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alSourceQueueBuffers
  244. (JNIEnv* env, jclass, jint source, jint numBuffers, jobject buffers)
  245. {
  246. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alSourceQueueBuffers for source: %d, numBuffers: %d", source, numBuffers);
  247. ALuint* pBuffers = (ALuint*) env->GetDirectBufferAddress(buffers);
  248. alSourceQueueBuffers((ALuint)source, (ALsizei)numBuffers, pBuffers);
  249. // for (ALuint i=0; i<numBuffers; i++) {
  250. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alSourceQueueBuffers[%d]: %d", i, *(pBuffers+i));
  251. // }
  252. }
  253. JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alListener
  254. (JNIEnv* env, jclass, jint param, jobject bufferData)
  255. {
  256. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alListener for param: %d", param);
  257. ALfloat* pBufferData = (ALfloat*) env->GetDirectBufferAddress(bufferData);
  258. alListenerfv((ALenum)param, pBufferData);
  259. // getError();
  260. // for (int i=0; i<4; i++) {
  261. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alListener[%d]: %f", i, *(pBufferData+(i*sizeof(ALfloat))));
  262. // }
  263. }
  264. JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alListenerf
  265. (JNIEnv *, jclass, jint param, jfloat value)
  266. {
  267. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alListenerf for param: %d, value: %f", param, value);
  268. alListenerf((ALenum)param, (ALfloat)value);
  269. }
  270. JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alListener3f
  271. (JNIEnv *, jclass, jint param, jfloat value1, jfloat value2, jfloat value3)
  272. {
  273. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alListener3f for param: %d, value1: %f, value2: %f, value3: %f", param, value1, value2, value3);
  274. alListener3f((ALenum)param, (ALfloat)value1, (ALfloat)value2, (ALfloat)value3);
  275. }
  276. JNIEXPORT jboolean JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alcIsExtensionPresent
  277. (JNIEnv* env, jclass, jstring extension)
  278. {
  279. ALCdevice *device;
  280. ALCcontext *ctx;
  281. ALboolean result;
  282. // char buf[128];
  283. const char* strExtension;
  284. jsize strLength = env->GetStringUTFLength(extension);
  285. ctx = alcGetCurrentContext();
  286. if(ctx != NULL) {
  287. device = alcGetContextsDevice(ctx);
  288. if (device != NULL) {
  289. strExtension = env->GetStringUTFChars(extension, NULL);
  290. if (strExtension == NULL) {
  291. return JNI_FALSE; /* OutOfMemoryError already thrown */
  292. }
  293. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alcIsExtensionPresent for param: %s with size: %d", strExtension, strLength);
  294. result = alcIsExtensionPresent(device, strExtension);
  295. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alcIsExtensionPresent found: %d", result);
  296. env->ReleaseStringUTFChars(extension, strExtension);
  297. return (jboolean)result;
  298. } else {
  299. __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "device is null in alcIsExtensionPresent");
  300. }
  301. } else {
  302. __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "current context is null in alcIsExtensionPresent");
  303. }
  304. return JNI_FALSE;
  305. }
  306. JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alcGetInteger
  307. (JNIEnv* env, jclass, jint param, jobject buffer, jint bufferSize)
  308. {
  309. ALCdevice *device;
  310. ALCcontext *ctx;
  311. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alcGetInteger for param: %d", param);
  312. ALCint* pBuffers = (ALCint*) env->GetDirectBufferAddress(buffer);
  313. ctx = alcGetCurrentContext();
  314. if(ctx != NULL) {
  315. device = alcGetContextsDevice(ctx);
  316. if (device != NULL) {
  317. alcGetIntegerv(device, (ALCenum)param, (ALCsizei)bufferSize, pBuffers);
  318. } else {
  319. __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "device is null in alcGetInteger");
  320. }
  321. } else {
  322. __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "current context is null in alcGetInteger");
  323. }
  324. }
  325. JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alGenAuxiliaryEffectSlots
  326. (JNIEnv* env, jclass, jint numSlots, jobject buffer)
  327. {
  328. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alGenAuxiliaryEffectSlots for numSlots: %d", numSlots);
  329. ALuint* pBuffers = (ALuint*) env->GetDirectBufferAddress(buffer);
  330. alGenAuxiliaryEffectSlots((ALsizei)numSlots, pBuffers);
  331. }
  332. JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alGenEffects
  333. (JNIEnv* env, jclass, jint numEffects, jobject buffer)
  334. {
  335. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alGenEffects for numEffects: %d", numEffects);
  336. ALuint* pBuffers = (ALuint*) env->GetDirectBufferAddress(buffer);
  337. alGenEffects((ALsizei)numEffects, pBuffers);
  338. }
  339. JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alEffecti
  340. (JNIEnv *, jclass, jint effect, jint param, jint value)
  341. {
  342. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alEffecti for effect: %d, param: %d, value: %d", effect, param, value);
  343. alEffecti((ALuint)effect, (ALenum)param, (ALint)value);
  344. }
  345. JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alAuxiliaryEffectSloti
  346. (JNIEnv *, jclass, jint effectSlot, jint param, jint value)
  347. {
  348. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alAuxiliaryEffectSloti for effect: %d, param: %d, value: %d", effectSlot, param, value);
  349. alAuxiliaryEffectSloti((ALuint)effectSlot, (ALenum)param, (ALint)value);
  350. }
  351. JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alDeleteEffects
  352. (JNIEnv* env, jclass, jint numEffects, jobject buffer)
  353. {
  354. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alDeleteEffects for numEffects: %d", numEffects);
  355. ALuint* pBuffers = (ALuint*) env->GetDirectBufferAddress(buffer);
  356. alDeleteEffects((ALsizei)numEffects, pBuffers);
  357. }
  358. JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alDeleteAuxiliaryEffectSlots
  359. (JNIEnv* env, jclass, jint numEffectSlots, jobject buffer)
  360. {
  361. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alDeleteAuxiliaryEffectSlots for numEffectSlots: %d", numEffectSlots);
  362. ALuint* pBuffers = (ALuint*) env->GetDirectBufferAddress(buffer);
  363. alDeleteAuxiliaryEffectSlots((ALsizei)numEffectSlots, pBuffers);
  364. }
  365. JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alGenFilters
  366. (JNIEnv* env, jclass, jint numFilters, jobject buffer)
  367. {
  368. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alGenFilters for numFilters: %d", numFilters);
  369. ALuint* pBuffers = (ALuint*) env->GetDirectBufferAddress(buffer);
  370. alGenFilters((ALsizei)numFilters, pBuffers);
  371. }
  372. JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alFilteri
  373. (JNIEnv *, jclass, jint filter, jint param, jint value)
  374. {
  375. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alFilteri for filter: %d, param: %d, value: %d", filter, param, value);
  376. alFilteri((ALuint)filter, (ALenum)param, (ALint)value);
  377. }
  378. JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alFilterf
  379. (JNIEnv *, jclass, jint filter, jint param, jfloat value)
  380. {
  381. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alFilterf for filter: %d, param: %d, value: %f", filter, param, value);
  382. alFilterf((ALuint)filter, (ALenum)param, (ALfloat)value);
  383. }
  384. JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alSource3i
  385. (JNIEnv *, jclass, jint source, jint param, jint value1, jint value2, jint value3)
  386. {
  387. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alSource3i for source: %d, param: %d, value1: %d, value2: %d, value3: %d", source, param, value1, value2, value3);
  388. alSource3i((ALuint)source, (ALenum)param, (ALint)value1, (ALint)value2, (ALint)value3);
  389. }
  390. JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alDeleteFilters
  391. (JNIEnv* env, jclass, jint numFilters, jobject buffer)
  392. {
  393. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alDeleteFilters for numFilters: %d", numFilters);
  394. ALuint* pBuffers = (ALuint*) env->GetDirectBufferAddress(buffer);
  395. alDeleteFilters((ALsizei)numFilters, pBuffers);
  396. }
  397. JNIEXPORT void JNICALL Java_com_jme3_audio_android_AndroidOpenALSoftAudioRenderer_alEffectf
  398. (JNIEnv *, jclass, jint effect, jint param, jfloat value)
  399. {
  400. // __android_log_print(ANDROID_LOG_INFO, "OpenAL Soft", "alEffectf for effect: %d, param: %d, value: %d", effect, param, value);
  401. alEffectf((ALuint)effect, (ALenum)param, (ALfloat)value);
  402. }
  403. #ifdef __cplusplus
  404. }
  405. #endif