static jobject wseemann_media_FFmpegMediaMetadataRetriever_extractMetadata(JNIEnv *env, jobject thiz, jstring jkey) { //__android_log_write(ANDROID_LOG_INFO, LOG_TAG, "extractMetadata"); MediaMetadataRetriever* retriever = getRetriever(env, thiz); if (retriever == 0) { jniThrowException(env, "java/lang/IllegalStateException", "No retriever available"); return NULL; } if (!jkey) { jniThrowException(env, "java/lang/IllegalArgumentException", "Null pointer"); return NULL; } const char *key = env->GetStringUTFChars(jkey, NULL); if (!key) { // OutOfMemoryError exception already thrown return NULL; } const char* value = retriever->extractMetadata(key); if (!value) { //__android_log_write(ANDROID_LOG_INFO, LOG_TAG, "extractMetadata: Metadata is not found"); return NULL; } //__android_log_print(ANDROID_LOG_INFO, LOG_TAG, "extractMetadata: value (%s) for keyCode(%s)", value, key); env->ReleaseStringUTFChars(jkey, key); return NewStringUTF(env, value); }
static jobject android_media_MediaMetadataRetriever_extractMetadata(JNIEnv *env, jobject thiz, jint keyCode) { ALOGV("extractMetadata"); MediaMetadataRetriever* retriever = getRetriever(env, thiz); if (retriever == 0) { jniThrowException(env, "java/lang/IllegalStateException", "No retriever available"); return NULL; } const char* value = retriever->extractMetadata(keyCode); if (!value) { ALOGV("extractMetadata: Metadata is not found"); return NULL; } ALOGV("extractMetadata: value (%s) for keyCode(%d)", value, keyCode); return env->NewStringUTF(value); }