Index: webrtc/api/java/jni/peerconnection_jni.cc |
diff --git a/webrtc/api/java/jni/peerconnection_jni.cc b/webrtc/api/java/jni/peerconnection_jni.cc |
index 3997805ef97826cf807fddfb806d8cf7ca788672..f7b9e90202c7a4179f25079018f2e313aef0a947 100644 |
--- a/webrtc/api/java/jni/peerconnection_jni.cc |
+++ b/webrtc/api/java/jni/peerconnection_jni.cc |
@@ -910,10 +910,6 @@ JOW(void, MediaSource_free)(JNIEnv*, jclass, jlong j_p) { |
CHECK_RELEASE(reinterpret_cast<MediaSourceInterface*>(j_p)); |
} |
-JOW(void, VideoCapturer_free)(JNIEnv*, jclass, jlong j_p) { |
- delete reinterpret_cast<cricket::VideoCapturer*>(j_p); |
-} |
- |
JOW(void, VideoRenderer_freeWrappedVideoRenderer)(JNIEnv*, jclass, jlong j_p) { |
delete reinterpret_cast<JavaVideoRendererWrapper*>(j_p); |
} |
@@ -1216,16 +1212,27 @@ JOW(jlong, PeerConnectionFactory_nativeCreateLocalMediaStream)( |
} |
JOW(jlong, PeerConnectionFactory_nativeCreateVideoSource)( |
- JNIEnv* jni, jclass, jlong native_factory, jlong native_capturer, |
+ JNIEnv* jni, jclass, jlong native_factory, jobject j_video_capturer, |
jobject j_constraints) { |
+ // Create a cricket::VideoCapturer from |j_video_capturer|. |
+ jobject j_surface_texture_helper = jni->CallObjectMethod( |
+ j_video_capturer, |
+ GetMethodID(jni, FindClass(jni, "org/webrtc/VideoCapturer"), |
+ "getSurfaceTextureHelper", |
+ "()Lorg/webrtc/SurfaceTextureHelper;")); |
+ rtc::scoped_refptr<webrtc::AndroidVideoCapturerDelegate> delegate = |
+ new rtc::RefCountedObject<AndroidVideoCapturerJni>( |
+ jni, j_video_capturer, j_surface_texture_helper); |
+ rtc::scoped_ptr<cricket::VideoCapturer> capturer( |
+ new webrtc::AndroidVideoCapturer(delegate)); |
+ // Create a webrtc::VideoSourceInterface from the cricket::VideoCapturer, |
+ // native factory and constraints. |
scoped_ptr<ConstraintsWrapper> constraints( |
new ConstraintsWrapper(jni, j_constraints)); |
rtc::scoped_refptr<PeerConnectionFactoryInterface> factory( |
factoryFromJava(native_factory)); |
rtc::scoped_refptr<VideoSourceInterface> source( |
- factory->CreateVideoSource( |
- reinterpret_cast<cricket::VideoCapturer*>(native_capturer), |
- constraints.get())); |
+ factory->CreateVideoSource(capturer.release(), constraints.get())); |
return (jlong)source.release(); |
} |