| Index: talk/app/webrtc/java/jni/androidvideocapturer_jni.h
|
| diff --git a/talk/app/webrtc/java/jni/androidvideocapturer_jni.h b/talk/app/webrtc/java/jni/androidvideocapturer_jni.h
|
| index ed3f8d2cc2ac6d66e8f9969824b577cc89205d64..625486fadbbe0a80259fe90d01ff63322730b657 100644
|
| --- a/talk/app/webrtc/java/jni/androidvideocapturer_jni.h
|
| +++ b/talk/app/webrtc/java/jni/androidvideocapturer_jni.h
|
| @@ -34,6 +34,7 @@
|
| #include "talk/app/webrtc/androidvideocapturer.h"
|
| #include "talk/app/webrtc/java/jni/jni_helpers.h"
|
| #include "webrtc/base/asyncinvoker.h"
|
| +#include "webrtc/base/criticalsection.h"
|
| #include "webrtc/base/thread_checker.h"
|
|
|
| namespace webrtc_jni {
|
| @@ -56,8 +57,6 @@ class AndroidVideoCapturerJni : public webrtc::AndroidVideoCapturerDelegate {
|
| webrtc::AndroidVideoCapturer* capturer) override;
|
| void Stop() override;
|
|
|
| - void ReturnBuffer(int64 time_stamp) override;
|
| -
|
| std::string GetSupportedFormats() override;
|
|
|
| // Called from VideoCapturerAndroid::NativeObserver on a Java thread.
|
| @@ -75,34 +74,31 @@ protected:
|
|
|
| private:
|
| bool Init(jstring device_name);
|
| -
|
| - void OnCapturerStarted_w(bool success);
|
| - void OnCapturerStopped_w();
|
| - void OnIncomingFrame_w(void* video_frame,
|
| - int length,
|
| - int width,
|
| - int height,
|
| - int rotation,
|
| - int64 time_stamp);
|
| - void OnOutputFormatRequest_w(int width, int height, int fps);
|
| - void ReturnBuffer_w(int64 time_stamp);
|
| -
|
| + void ReturnBuffer(int64 time_stamp);
|
| JNIEnv* jni();
|
|
|
| + // Helper function to make safe asynchronous calls to |capturer_|. The calls
|
| + // are not guaranteed to be delivered.
|
| + template <typename... Args>
|
| + void AsyncCapturerInvoke(
|
| + const char* method_name,
|
| + void (webrtc::AndroidVideoCapturer::*method)(Args...),
|
| + Args... args);
|
| +
|
| const ScopedGlobalRef<jobject> j_capturer_global_;
|
| const ScopedGlobalRef<jclass> j_video_capturer_class_;
|
| const ScopedGlobalRef<jclass> j_observer_class_;
|
| - volatile bool valid_global_refs_;
|
| - jobject j_frame_observer_;
|
|
|
| rtc::ThreadChecker thread_checker_;
|
|
|
| - rtc::Thread* thread_; // The thread where Start is called on.
|
| // |capturer| is a guaranteed to be a valid pointer between a call to
|
| // AndroidVideoCapturerDelegate::Start
|
| // until AndroidVideoCapturerDelegate::Stop.
|
| - webrtc::AndroidVideoCapturer* capturer_;
|
| - rtc::AsyncInvoker invoker_;
|
| + rtc::CriticalSection capturer_lock_;
|
| + webrtc::AndroidVideoCapturer* capturer_ GUARDED_BY(capturer_lock_);
|
| + // |invoker_| is used to communicate with |capturer_| on the thread Start() is
|
| + // called on.
|
| + rtc::scoped_ptr<rtc::GuardedAsyncInvoker> invoker_ GUARDED_BY(capturer_lock_);
|
|
|
| static jobject application_context_;
|
|
|
|
|