@@ -60,10 +60,12 @@ bool AndroidCapturer::EnumVideoDevice(
6060 for (auto device : devices) {
6161 // camera2enumerator.isFrontFacing(device)
6262 // camera2enumerator.isBackFacing(device)
63- webrtc::ScopedJavaLocalRef<jclass> camcls (
64- env, env->GetObjectClass (camera2enumerator.obj ()));
65- webrtc::ScopedJavaLocalRef<jstring> device_str (
66- env, env->NewStringUTF (device.c_str ()));
63+ webrtc::ScopedJavaLocalRef<jclass> camcls =
64+ webrtc::ScopedJavaLocalRef<jclass>::Adopt (
65+ env, env->GetObjectClass (camera2enumerator.obj ()));
66+ webrtc::ScopedJavaLocalRef<jstring> device_str =
67+ webrtc::ScopedJavaLocalRef<jstring>::Adopt (
68+ env, env->NewStringUTF (device.c_str ()));
6769 jmethodID frontid = env->GetMethodID (camcls.obj (), " isFrontFacing" ,
6870 " (Ljava/lang/String;)Z" );
6971 jboolean frontfacing = env->CallBooleanMethod (camera2enumerator.obj (),
@@ -95,11 +97,13 @@ webrtc::ScopedJavaLocalRef<jobject> AndroidCapturer::createSurfaceTextureHelper(
9597 env->GetStaticMethodID (helpcls.obj (), " create" ,
9698 " (Ljava/lang/String;Lorg/webrtc/EglBase$Context;)"
9799 " Lorg/webrtc/SurfaceTextureHelper;" );
98- webrtc::ScopedJavaLocalRef<jstring> str (
99- env, env->NewStringUTF (" VideoCapturerThread" ));
100- webrtc::ScopedJavaLocalRef<jobject> helper (
101- env,
102- env->CallStaticObjectMethod (helpcls.obj (), createid, str.obj (), nullptr ));
100+ webrtc::ScopedJavaLocalRef<jstring> str =
101+ webrtc::ScopedJavaLocalRef<jstring>::Adopt (
102+ env, env->NewStringUTF (" VideoCapturerThread" ));
103+ webrtc::ScopedJavaLocalRef<jobject> helper =
104+ webrtc::ScopedJavaLocalRef<jobject>::Adopt (
105+ env, env->CallStaticObjectMethod (helpcls.obj (), createid, str.obj (),
106+ nullptr ));
103107
104108 return helper;
105109}
@@ -111,8 +115,9 @@ webrtc::ScopedJavaLocalRef<jobject> AndroidCapturer::createCamera2Enumerator(
111115 webrtc::GetClass (env, " org/webrtc/Camera2Enumerator" );
112116 jmethodID ctorid =
113117 env->GetMethodID (camcls.obj (), " <init>" , " (Landroid/content/Context;)V" );
114- webrtc::ScopedJavaLocalRef<jobject> enumerator (
115- env, env->NewObject (camcls.obj (), ctorid, context));
118+ webrtc::ScopedJavaLocalRef<jobject> enumerator =
119+ webrtc::ScopedJavaLocalRef<jobject>::Adopt (
120+ env, env->NewObject (camcls.obj (), ctorid, context));
116121
117122 // Camera1Enumerator enumerator = new Camera1Enumerator();
118123 // webrtc::ScopedJavaLocalRef<jclass> camcls =
@@ -127,12 +132,15 @@ std::vector<std::string> AndroidCapturer::enumDevices(
127132 JNIEnv* env,
128133 jobject camera_enumerator) {
129134 // for (string device in enumerator.getDeviceNames()) { }
130- webrtc::ScopedJavaLocalRef<jclass> camcls (
131- env, env->GetObjectClass (camera_enumerator));
135+ webrtc::ScopedJavaLocalRef<jclass> camcls =
136+ webrtc::ScopedJavaLocalRef<jclass>::Adopt (
137+ env, env->GetObjectClass (camera_enumerator));
132138 jmethodID devicesid =
133139 env->GetMethodID (camcls.obj (), " getDeviceNames" , " ()[Ljava/lang/String;" );
134- webrtc::ScopedJavaLocalRef<jobjectArray> devices (
135- env, (jobjectArray)env->CallObjectMethod (camera_enumerator, devicesid));
140+ webrtc::ScopedJavaLocalRef<jobjectArray> devices =
141+ webrtc::ScopedJavaLocalRef<jobjectArray>::Adopt (
142+ env,
143+ (jobjectArray)env->CallObjectMethod (camera_enumerator, devicesid));
136144
137145 if (devices.obj () == nullptr ) {
138146 RTC_LOG (LS_ERROR) << " Failed to enumerator.getDeviceNames()" ;
@@ -142,8 +150,9 @@ std::vector<std::string> AndroidCapturer::enumDevices(
142150 std::vector<std::string> r;
143151 int count = env->GetArrayLength (devices.obj ());
144152 for (int i = 0 ; i < count; i++) {
145- webrtc::ScopedJavaLocalRef<jstring> device (
146- env, (jstring)env->GetObjectArrayElement (devices.obj (), i));
153+ webrtc::ScopedJavaLocalRef<jstring> device =
154+ webrtc::ScopedJavaLocalRef<jstring>::Adopt (
155+ env, (jstring)env->GetObjectArrayElement (devices.obj (), i));
147156 r.push_back (env->GetStringUTFChars (device.obj (), nullptr ));
148157 }
149158 return r;
@@ -153,20 +162,23 @@ webrtc::ScopedJavaLocalRef<jobject> AndroidCapturer::createCapturer(
153162 jobject camera_enumerator,
154163 std::string device) {
155164 // videoCapturer = enumerator.createCapturer(device, null /* eventsHandler */);
156- webrtc::ScopedJavaLocalRef<jclass> camcls (
157- env, env->GetObjectClass (camera_enumerator));
165+ webrtc::ScopedJavaLocalRef<jclass> camcls =
166+ webrtc::ScopedJavaLocalRef<jclass>::Adopt (
167+ env, env->GetObjectClass (camera_enumerator));
158168 jmethodID createid =
159169 env->GetMethodID (camcls.obj (), " createCapturer" ,
160170 " ("
161171 " Ljava/lang/String;"
162172 " Lorg/webrtc/CameraVideoCapturer$CameraEventsHandler;"
163173 " )"
164174 " Lorg/webrtc/CameraVideoCapturer;" );
165- webrtc::ScopedJavaLocalRef<jstring> str (env,
166- env->NewStringUTF (device.c_str ()));
167- webrtc::ScopedJavaLocalRef<jobject> capturer (
168- env,
169- env->CallObjectMethod (camera_enumerator, createid, str.obj (), nullptr ));
175+ webrtc::ScopedJavaLocalRef<jstring> str =
176+ webrtc::ScopedJavaLocalRef<jstring>::Adopt (
177+ env, env->NewStringUTF (device.c_str ()));
178+ webrtc::ScopedJavaLocalRef<jobject> capturer =
179+ webrtc::ScopedJavaLocalRef<jobject>::Adopt (
180+ env, env->CallObjectMethod (camera_enumerator, createid, str.obj (),
181+ nullptr ));
170182
171183 return capturer;
172184}
@@ -176,7 +188,9 @@ void AndroidCapturer::initializeCapturer(JNIEnv* env,
176188 jobject context,
177189 jobject observer) {
178190 // videoCapturer.initialize(videoCapturerSurfaceTextureHelper, applicationContext, nativeGetJavaVideoCapturerObserver(nativeClient));
179- webrtc::ScopedJavaLocalRef<jclass> capcls (env, env->GetObjectClass (capturer));
191+ webrtc::ScopedJavaLocalRef<jclass> capcls =
192+ webrtc::ScopedJavaLocalRef<jclass>::Adopt (env,
193+ env->GetObjectClass (capturer));
180194 jmethodID initid = env->GetMethodID (capcls.obj (), " initialize" ,
181195 " ("
182196 " Lorg/webrtc/SurfaceTextureHelper;"
@@ -191,24 +205,32 @@ void AndroidCapturer::startCapture(JNIEnv* env,
191205 int height,
192206 int target_fps) {
193207 // videoCapturer.startCapture(width, height, target_fps);
194- webrtc::ScopedJavaLocalRef<jclass> capcls (env, env->GetObjectClass (capturer));
208+ webrtc::ScopedJavaLocalRef<jclass> capcls =
209+ webrtc::ScopedJavaLocalRef<jclass>::Adopt (env,
210+ env->GetObjectClass (capturer));
195211 jmethodID startid = env->GetMethodID (capcls.obj (), " startCapture" , " (III)V" );
196212 env->CallVoidMethod (capturer, startid, width, height, target_fps);
197213}
198214void AndroidCapturer::stopCapture (JNIEnv* env, jobject capturer) {
199215 // videoCapturer.stopCapture();
200- webrtc::ScopedJavaLocalRef<jclass> capcls (env, env->GetObjectClass (capturer));
216+ webrtc::ScopedJavaLocalRef<jclass> capcls =
217+ webrtc::ScopedJavaLocalRef<jclass>::Adopt (env,
218+ env->GetObjectClass (capturer));
201219 jmethodID stopid = env->GetMethodID (capcls.obj (), " stopCapture" , " ()V" );
202220 env->CallVoidMethod (capturer, stopid);
203221}
204222void AndroidCapturer::dispose (JNIEnv* env, jobject capturer, jobject helper) {
205223 // videoCapturer.dispose();
206224 // surfaceTextureHelper.dispose();
207- webrtc::ScopedJavaLocalRef<jclass> capcls (env, env->GetObjectClass (capturer));
225+ webrtc::ScopedJavaLocalRef<jclass> capcls =
226+ webrtc::ScopedJavaLocalRef<jclass>::Adopt (env,
227+ env->GetObjectClass (capturer));
208228 jmethodID capdisposeid = env->GetMethodID (capcls.obj (), " dispose" , " ()V" );
209229 env->CallVoidMethod (capturer, capdisposeid);
210230
211- webrtc::ScopedJavaLocalRef<jclass> helpcls (env, env->GetObjectClass (helper));
231+ webrtc::ScopedJavaLocalRef<jclass> helpcls =
232+ webrtc::ScopedJavaLocalRef<jclass>::Adopt (env,
233+ env->GetObjectClass (helper));
212234 jmethodID helpdisposeid = env->GetMethodID (helpcls.obj (), " dispose" , " ()V" );
213235 env->CallVoidMethod (helper, helpdisposeid);
214236}
0 commit comments