Index: talk/app/webrtc/java/jni/androidvideocapturer_jni.cc |
diff --git a/talk/app/webrtc/java/jni/androidvideocapturer_jni.cc b/talk/app/webrtc/java/jni/androidvideocapturer_jni.cc |
index 054719a11d6bd0e572ffa688e944d2c15930c014..9b3053c94033ca24cd923fcb8972c73275a2ef57 100644 |
--- a/talk/app/webrtc/java/jni/androidvideocapturer_jni.cc |
+++ b/talk/app/webrtc/java/jni/androidvideocapturer_jni.cc |
@@ -47,9 +47,12 @@ int AndroidVideoCapturerJni::SetAndroidObjects(JNIEnv* jni, |
return 0; |
} |
-AndroidVideoCapturerJni::AndroidVideoCapturerJni(JNIEnv* jni, |
- jobject j_video_capturer) |
- : j_capturer_global_(jni, j_video_capturer), |
+AndroidVideoCapturerJni::AndroidVideoCapturerJni( |
+ JNIEnv* jni, |
+ jobject j_video_capturer, |
+ jobject j_surface_texture_helper) |
+ : j_video_capturer_(jni, j_video_capturer), |
+ j_surface_texture_helper_(jni, j_surface_texture_helper), |
j_video_capturer_class_( |
jni, FindClass(jni, "org/webrtc/VideoCapturerAndroid")), |
j_observer_class_( |
@@ -64,7 +67,7 @@ AndroidVideoCapturerJni::AndroidVideoCapturerJni(JNIEnv* jni, |
AndroidVideoCapturerJni::~AndroidVideoCapturerJni() { |
LOG(LS_INFO) << "AndroidVideoCapturerJni dtor"; |
jni()->CallVoidMethod( |
- *j_capturer_global_, |
+ *j_video_capturer_, |
GetMethodID(jni(), *j_video_capturer_class_, "release", "()V")); |
CHECK_EXCEPTION(jni()) << "error during VideoCapturerAndroid.release()"; |
} |
@@ -90,7 +93,7 @@ void AndroidVideoCapturerJni::Start(int width, int height, int framerate, |
jni(), *j_video_capturer_class_, "startCapture", |
"(IIILandroid/content/Context;" |
"Lorg/webrtc/VideoCapturerAndroid$CapturerObserver;)V"); |
- jni()->CallVoidMethod(*j_capturer_global_, |
+ jni()->CallVoidMethod(*j_video_capturer_, |
m, width, height, |
framerate, |
application_context_, |
@@ -109,7 +112,7 @@ void AndroidVideoCapturerJni::Stop() { |
} |
jmethodID m = GetMethodID(jni(), *j_video_capturer_class_, |
"stopCapture", "()V"); |
- jni()->CallVoidMethod(*j_capturer_global_, m); |
+ jni()->CallVoidMethod(*j_video_capturer_, m); |
CHECK_EXCEPTION(jni()) << "error during VideoCapturerAndroid.stopCapture"; |
LOG(LS_INFO) << "AndroidVideoCapturerJni stop done"; |
} |
@@ -130,7 +133,7 @@ void AndroidVideoCapturerJni::AsyncCapturerInvoke( |
void AndroidVideoCapturerJni::ReturnBuffer(int64_t time_stamp) { |
jmethodID m = GetMethodID(jni(), *j_video_capturer_class_, |
"returnBuffer", "(J)V"); |
- jni()->CallVoidMethod(*j_capturer_global_, m, time_stamp); |
+ jni()->CallVoidMethod(*j_video_capturer_, m, time_stamp); |
CHECK_EXCEPTION(jni()) << "error during VideoCapturerAndroid.returnBuffer"; |
} |
@@ -139,7 +142,7 @@ std::string AndroidVideoCapturerJni::GetSupportedFormats() { |
GetMethodID(jni(), *j_video_capturer_class_, |
"getSupportedFormatsAsJson", "()Ljava/lang/String;"); |
jstring j_json_caps = |
- (jstring) jni()->CallObjectMethod(*j_capturer_global_, m); |
+ (jstring) jni()->CallObjectMethod(*j_video_capturer_, m); |
CHECK_EXCEPTION(jni()) << "error during supportedFormatsAsJson"; |
return JavaToStdString(jni(), j_json_caps); |
} |
@@ -186,7 +189,7 @@ void AndroidVideoCapturerJni::OnTextureFrame(int width, |
const NativeHandleImpl& handle) { |
rtc::scoped_refptr<webrtc::VideoFrameBuffer> buffer( |
new rtc::RefCountedObject<AndroidTextureBuffer>( |
- width, height, handle, |
+ width, height, handle, *j_surface_texture_helper_, |
rtc::Bind(&AndroidVideoCapturerJni::ReturnBuffer, this, |
timestamp_ns))); |
AsyncCapturerInvoke("OnIncomingFrame", |
@@ -248,9 +251,11 @@ JOW(void, VideoCapturerAndroid_00024NativeObserver_nativeOnOutputFormatRequest) |
} |
JOW(jlong, VideoCapturerAndroid_nativeCreateVideoCapturer) |
- (JNIEnv* jni, jclass, jobject j_video_capturer) { |
+ (JNIEnv* jni, jclass, |
+ jobject j_video_capturer, jobject j_surface_texture_helper) { |
rtc::scoped_refptr<webrtc::AndroidVideoCapturerDelegate> delegate = |
- new rtc::RefCountedObject<AndroidVideoCapturerJni>(jni, j_video_capturer); |
+ new rtc::RefCountedObject<AndroidVideoCapturerJni>( |
+ jni, j_video_capturer, j_surface_texture_helper); |
rtc::scoped_ptr<cricket::VideoCapturer> capturer( |
new webrtc::AndroidVideoCapturer(delegate)); |
// Caller takes ownership of the cricket::VideoCapturer* pointer. |