From cc30fa7de95cffa961e9fd3aead2dd8f3bb55aeb Mon Sep 17 00:00:00 2001 From: Xerxes RĂ„nby Date: Fri, 10 May 2013 12:42:09 +0200 Subject: FFMPEGMediaPlayer: blocking Java Sound output --- .../libav/jogamp_opengl_util_av_impl_FFMPEGMediaPlayer.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src/jogl/native') diff --git a/src/jogl/native/libav/jogamp_opengl_util_av_impl_FFMPEGMediaPlayer.c b/src/jogl/native/libav/jogamp_opengl_util_av_impl_FFMPEGMediaPlayer.c index 8e5f4124c..b8ff9a6ca 100644 --- a/src/jogl/native/libav/jogamp_opengl_util_av_impl_FFMPEGMediaPlayer.c +++ b/src/jogl/native/libav/jogamp_opengl_util_av_impl_FFMPEGMediaPlayer.c @@ -192,10 +192,12 @@ JNIEXPORT jboolean JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGDynamicLibraryB return JNI_TRUE; } -static void _updateSound(JNIEnv *env, jobject instance, char *data, int32_t data_size, int32_t sample_rate) { +static void _updateSound(JNIEnv *env, jobject instance, char *data, int32_t data_size) { if(NULL!=env) { fprintf(stderr, "nA"); - (*env)->CallVoidMethod(env, instance, jni_mid_updateSound); + jbyteArray jbArray = (*env)->NewByteArray(env, data_size); + (*env)->SetByteArrayRegion(env, jbArray, 0, data_size, (jbyte*)data); + (*env)->CallVoidMethod(env, instance, jni_mid_updateSound, jbArray, data_size); } } @@ -342,7 +344,7 @@ JNIEXPORT jboolean JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGMediaPlayer_ini JoglCommon_FatalError(env, "JOGL FFMPEG: can't use %s", ClazzNameFFMPEGMediaPlayer); } - jni_mid_updateSound = (*env)->GetMethodID(env, ffmpegMediaPlayerClazz, "updateSound", "()V"); + jni_mid_updateSound = (*env)->GetMethodID(env, ffmpegMediaPlayerClazz, "updateSound", "([BI)V"); jni_mid_updateAttributes1 = (*env)->GetMethodID(env, ffmpegMediaPlayerClazz, "updateAttributes", "(IIIIIFIILjava/lang/String;Ljava/lang/String;)V"); jni_mid_updateAttributes2 = (*env)->GetMethodID(env, ffmpegMediaPlayerClazz, "updateAttributes2", "(IIIIIIIIII)V"); @@ -654,7 +656,7 @@ JNIEXPORT jint JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGMediaPlayer_readNex // TODO: Wrap audio buffer data in a com.jogamp.openal.sound3d.Buffer or similar // and hand it over to the user using a suitable API. // TODO: OR send the audio buffer data down to sound card directly using JOAL. - _updateSound(env, instance, pAV->pAFrame->data[0], data_size, pAV->aSampleRate); + _updateSound(env, instance, pAV->pAFrame->data[0], data_size); res = 1; } -- cgit v1.2.3