struct JNIAMediaCodecListFields jfields = { 0 };
struct JNIAMediaFormatFields mediaformat_jfields = { 0 };
- jobject format = NULL;
- jobject codec = NULL;
jobject codec_name = NULL;
jobject info = NULL;
goto done;
}
+ if (codec_name) {
+ (*env)->DeleteLocalRef(env, codec_name);
+ codec_name = NULL;
+ }
+
/* Skip software decoders */
if (
strstr(name, "OMX.google") ||
}
done:
- if (format) {
- (*env)->DeleteLocalRef(env, format);
- }
-
- if (codec) {
- (*env)->DeleteLocalRef(env, codec);
- }
-
if (codec_name) {
(*env)->DeleteLocalRef(env, codec_name);
}
ret = AVERROR_EXTERNAL;
}
+ (*env)->DeleteGlobalRef(env, codec->input_buffers);
+ codec->input_buffers = NULL;
+
+ (*env)->DeleteGlobalRef(env, codec->output_buffers);
+ codec->output_buffers = NULL;
+
(*env)->DeleteGlobalRef(env, codec->object);
codec->object = NULL;
ret = ff_jni_jstring_to_utf_chars(env, name, codec);
fail:
+ if (name) {
+ (*env)->DeleteLocalRef(env, name);
+ }
+
return ret;
}
JNI_GET_ENV_OR_RETURN(env, codec, AVERROR_EXTERNAL);
- (*env)->CallVoidMethod(env, codec->object, codec->jfields.release_output_buffer_at_time_id, (jint)idx, timestampNs);
+ (*env)->CallVoidMethod(env, codec->object, codec->jfields.release_output_buffer_at_time_id, (jint)idx, (jlong)timestampNs);
if (ff_jni_exception_check(env, 1, codec) < 0) {
ret = AVERROR_EXTERNAL;
goto fail;