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}
This commit is contained in:
committed by
Commit Bot
parent
e3044fe12e
commit
a265da4082
@ -97,8 +97,6 @@ VideoEncoderWrapper::VideoEncoderWrapper(JNIEnv* jni, jobject j_encoder)
|
|||||||
|
|
||||||
implementation_name_ = GetImplementationName(jni);
|
implementation_name_ = GetImplementationName(jni);
|
||||||
|
|
||||||
encoder_queue_ = rtc::TaskQueue::Current();
|
|
||||||
|
|
||||||
initialized_ = false;
|
initialized_ = false;
|
||||||
num_resets_ = 0;
|
num_resets_ = 0;
|
||||||
|
|
||||||
@ -116,6 +114,7 @@ int32_t VideoEncoderWrapper::InitEncode(const VideoCodec* codec_settings,
|
|||||||
number_of_cores_ = number_of_cores;
|
number_of_cores_ = number_of_cores;
|
||||||
codec_settings_ = *codec_settings;
|
codec_settings_ = *codec_settings;
|
||||||
num_resets_ = 0;
|
num_resets_ = 0;
|
||||||
|
encoder_queue_ = rtc::TaskQueue::Current();
|
||||||
|
|
||||||
return InitEncodeInternal(jni);
|
return InitEncodeInternal(jni);
|
||||||
}
|
}
|
||||||
@ -167,6 +166,7 @@ int32_t VideoEncoderWrapper::Release() {
|
|||||||
jobject ret = jni->CallObjectMethod(*encoder_, release_method_);
|
jobject ret = jni->CallObjectMethod(*encoder_, release_method_);
|
||||||
frame_extra_infos_.clear();
|
frame_extra_infos_.clear();
|
||||||
initialized_ = false;
|
initialized_ = false;
|
||||||
|
encoder_queue_ = nullptr;
|
||||||
return HandleReturnCode(jni, ret);
|
return HandleReturnCode(jni, ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user