Android: Fix getting encoder queue in encoder wrapper.
Get the encoder queue in init instead of the constructor. The
constructor is not always called on the same thread as init. The
encoder may also be reinitialized on a different thread.
Bug: webrtc:7760
Change-Id: I32a025a8bdf652ab019ac4c2ffc6be1533008925
Reviewed-on: https://webrtc-review.googlesource.com/5480
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20074}
diff --git a/sdk/android/src/jni/videoencoderwrapper.cc b/sdk/android/src/jni/videoencoderwrapper.cc
index ceecda2..55ebeef 100644
--- a/sdk/android/src/jni/videoencoderwrapper.cc
+++ b/sdk/android/src/jni/videoencoderwrapper.cc
@@ -97,8 +97,6 @@
implementation_name_ = GetImplementationName(jni);
- encoder_queue_ = rtc::TaskQueue::Current();
-
initialized_ = false;
num_resets_ = 0;
@@ -116,6 +114,7 @@
number_of_cores_ = number_of_cores;
codec_settings_ = *codec_settings;
num_resets_ = 0;
+ encoder_queue_ = rtc::TaskQueue::Current();
return InitEncodeInternal(jni);
}
@@ -167,6 +166,7 @@
jobject ret = jni->CallObjectMethod(*encoder_, release_method_);
frame_extra_infos_.clear();
initialized_ = false;
+ encoder_queue_ = nullptr;
return HandleReturnCode(jni, ret);
}