Android: Use scoped java refs
We currently use raw jobject in our code mixed with sporadic ScopedLocalRefFrame. This CL moves every jobject into a scoped object, either local, global, or a parameter. Also, this CL uses the JNI generation script to generate declaration stubs for the Java->C++ functions so that it no longer becomes possible to mistype them without getting compilation errors. TBR=brandt@webrtc.org Bug: webrtc:8278,webrtc:6969 Change-Id: Ic7bac74a89c11180177d65041086d7db1cdfb516 Reviewed-on: https://webrtc-review.googlesource.com/34655 Commit-Queue: Magnus Jedvert <magjed@webrtc.org> Reviewed-by: Sami Kalliomäki <sakal@webrtc.org> Cr-Commit-Position: refs/heads/master@{#21387}
This commit is contained in:
committed by
Commit Bot
parent
ec22e3f503
commit
84d8ae5df7
@ -290,15 +290,15 @@ void VideoProcessorIntegrationTest::CreateEncoderAndDecoder() {
|
||||
if (config_.hw_encoder) {
|
||||
#if defined(WEBRTC_ANDROID)
|
||||
JNIEnv* env = jni::AttachCurrentThreadIfNeeded();
|
||||
jni::ScopedLocalRefFrame local_ref_frame(env);
|
||||
jclass factory_class =
|
||||
webrtc::jni::GetClass(env, "org/webrtc/HardwareVideoEncoderFactory");
|
||||
jni::ScopedJavaLocalRef<jclass> factory_class =
|
||||
jni::GetClass(env, "org/webrtc/HardwareVideoEncoderFactory");
|
||||
jmethodID factory_constructor = env->GetMethodID(
|
||||
factory_class, "<init>", "(Lorg/webrtc/EglBase$Context;ZZ)V");
|
||||
jobject factory_object = env->NewObject(
|
||||
factory_class, factory_constructor, nullptr /* shared_context */,
|
||||
false /* enable_intel_vp8_encoder */,
|
||||
true /* enable_h264_high_profile */);
|
||||
factory_class.obj(), "<init>", "(Lorg/webrtc/EglBase$Context;ZZ)V");
|
||||
jni::ScopedJavaLocalRef<jobject> factory_object(
|
||||
env, env->NewObject(factory_class.obj(), factory_constructor,
|
||||
nullptr /* shared_context */,
|
||||
false /* enable_intel_vp8_encoder */,
|
||||
true /* enable_h264_high_profile */));
|
||||
encoder_factory = rtc::MakeUnique<webrtc::jni::VideoEncoderFactoryWrapper>(
|
||||
env, factory_object);
|
||||
#elif defined(WEBRTC_IOS)
|
||||
@ -316,13 +316,13 @@ void VideoProcessorIntegrationTest::CreateEncoderAndDecoder() {
|
||||
if (config_.hw_decoder) {
|
||||
#if defined(WEBRTC_ANDROID)
|
||||
JNIEnv* env = jni::AttachCurrentThreadIfNeeded();
|
||||
jni::ScopedLocalRefFrame local_ref_frame(env);
|
||||
jclass factory_class =
|
||||
webrtc::jni::GetClass(env, "org/webrtc/HardwareVideoDecoderFactory");
|
||||
jni::ScopedJavaLocalRef<jclass> factory_class =
|
||||
jni::GetClass(env, "org/webrtc/HardwareVideoDecoderFactory");
|
||||
jmethodID factory_constructor = env->GetMethodID(
|
||||
factory_class, "<init>", "(Lorg/webrtc/EglBase$Context;)V");
|
||||
jobject factory_object = env->NewObject(factory_class, factory_constructor,
|
||||
nullptr /* shared_context */);
|
||||
factory_class.obj(), "<init>", "(Lorg/webrtc/EglBase$Context;)V");
|
||||
jni::ScopedJavaLocalRef<jobject> factory_object(
|
||||
env, env->NewObject(factory_class.obj(), factory_constructor,
|
||||
nullptr /* shared_context */));
|
||||
decoder_factory = rtc::MakeUnique<webrtc::jni::VideoDecoderFactoryWrapper>(
|
||||
env, factory_object);
|
||||
#elif defined(WEBRTC_IOS)
|
||||
|
||||
Reference in New Issue
Block a user