int SDL_Android_AudioTrack_write_byte(JNIEnv *env, SDL_Android_AudioTrack *atrack, uint8_t *data, int size_in_byte) { if (size_in_byte <= 0) return size_in_byte; int reserved = SDL_Android_AudioTrack_reserve_byte_buffer(env, atrack, size_in_byte); if (reserved < size_in_byte) { ALOGE("%s failed %d < %d\n", __func__, reserved, size_in_byte); return -1; } (*env)->SetByteArrayRegion(env, atrack->byte_buffer, 0, (int)size_in_byte, (jbyte*) data); if ((*env)->ExceptionCheck(env)) { ALOGE("%s: SetByteArrayRegion: Exception:\n", __func__); if ((*env)->ExceptionCheck(env)) { (*env)->ExceptionDescribe(env); (*env)->ExceptionClear(env); } return -1; } int retval = (*env)->CallIntMethod(env, atrack->thiz, g_clazz.write_byte, atrack->byte_buffer, 0, (int)size_in_byte); if ((*env)->ExceptionCheck(env)) { ALOGE("%s: write_byte: Exception:\n", __func__); if ((*env)->ExceptionCheck(env)) { (*env)->ExceptionDescribe(env); (*env)->ExceptionClear(env); } return -1; } return retval; }
int SDL_Android_AudioTrack_write(JNIEnv *env, SDL_Android_AudioTrack *atrack, uint8_t *data, int size_in_byte) { if (size_in_byte <= 0) return size_in_byte; int reserved = SDL_Android_AudioTrack_reserve_byte_buffer(env, atrack, size_in_byte); if (reserved < size_in_byte) { ALOGE("%s failed %d < %d\n", __func__, reserved, size_in_byte); return -1; } (*env)->SetByteArrayRegion(env, atrack->byte_buffer, 0, (int)size_in_byte, (jbyte*) data); if (JJK_ExceptionCheck__catchAll(env)) return -1; int retval = JJKC_AudioTrack__write(env, atrack->thiz, atrack->byte_buffer, 0, (int)size_in_byte); if (JJK_ExceptionCheck__catchAll(env)) return -1; return retval; }