From 8fae40f1e4eeda3e92d9980ed223006e44d4daba Mon Sep 17 00:00:00 2001 From: Arun Raghavan Date: Sun, 11 Nov 2012 17:35:56 +0530 Subject: [PATCH] Fix upload progress callback in transcoder --- jni/Android.mk | 2 +- jni/transcode.c | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/jni/Android.mk b/jni/Android.mk index 74c1acb5b..74d87c80a 100644 --- a/jni/Android.mk +++ b/jni/Android.mk @@ -5,7 +5,7 @@ include $(CLEAR_VARS) LOCAL_MODULE := libtranscode LOCAL_SRC_FILES := transcode.c LOCAL_SHARED_LIBRARIES := gstreamer_android -LOCAL_LDLIBS := -landroid +LOCAL_LDLIBS := -landroid -llog include $(BUILD_SHARED_LIBRARY) diff --git a/jni/transcode.c b/jni/transcode.c index 516ef39ec..00090fa03 100644 --- a/jni/transcode.c +++ b/jni/transcode.c @@ -1,6 +1,7 @@ #include #include +#include static int init(void) { @@ -56,11 +57,23 @@ static int transcode(const char *infile, const char *outfile, gst_structure_get_int(s, "percent", &percent); - break; + cb_class = (*env)->FindClass(env, "org/wikimedia/commons/Transcoder$TranscoderProgressCallback"); + if ((*env)->ExceptionCheck(env)) { + __android_log_print(ANDROID_LOG_ERROR, "GStreamer", "Class not found"); + break; + } - cb_class = (*env)->FindClass(env, "org/wikimedia/commons/TranscoderProgressCallback"); cb_id = (*env)->GetMethodID(env, cb_class, "transcodeProgressCb", "(I)V"); + if ((*env)->ExceptionCheck(env)) { + __android_log_print(ANDROID_LOG_ERROR, "GStreamer", "Method not found"); + break; + } + (*env)->CallVoidMethod(env, cb_obj, cb_id, percent); + if ((*env)->ExceptionCheck(env)) { + __android_log_print(ANDROID_LOG_ERROR, "GStreamer", "Method call failed"); + break; + } break; }