diff --git a/webrtc/common_video/BUILD.gn b/webrtc/common_video/BUILD.gn index d8e6bbfe0f..c4edeaf0b1 100644 --- a/webrtc/common_video/BUILD.gn +++ b/webrtc/common_video/BUILD.gn @@ -58,6 +58,7 @@ source_set("common_video") { deps = [ "..:webrtc_common", + "../base:rtc_task_queue", "../system_wrappers", ] diff --git a/webrtc/common_video/common_video.gyp b/webrtc/common_video/common_video.gyp index b1f460418a..eee0c048e7 100644 --- a/webrtc/common_video/common_video.gyp +++ b/webrtc/common_video/common_video.gyp @@ -18,6 +18,7 @@ 'libyuv/include', ], 'dependencies': [ + '<(webrtc_root)/base/base.gyp:rtc_task_queue', '<(webrtc_root)/common.gyp:webrtc_common', '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', ], diff --git a/webrtc/common_video/i420_buffer_pool.cc b/webrtc/common_video/i420_buffer_pool.cc index bdc0e821c6..7110639e03 100644 --- a/webrtc/common_video/i420_buffer_pool.cc +++ b/webrtc/common_video/i420_buffer_pool.cc @@ -16,17 +16,17 @@ namespace webrtc { I420BufferPool::I420BufferPool(bool zero_initialize) : zero_initialize_(zero_initialize) { - thread_checker_.DetachFromThread(); + sequenced_checker_.Detach(); } void I420BufferPool::Release() { - thread_checker_.DetachFromThread(); + sequenced_checker_.Detach(); buffers_.clear(); } rtc::scoped_refptr I420BufferPool::CreateBuffer(int width, int height) { - RTC_DCHECK(thread_checker_.CalledOnValidThread()); + RTC_DCHECK(sequenced_checker_.CalledSequentially()); // Release buffers with wrong resolution. for (auto it = buffers_.begin(); it != buffers_.end();) { if ((*it)->width() != width || (*it)->height() != height) diff --git a/webrtc/common_video/include/i420_buffer_pool.h b/webrtc/common_video/include/i420_buffer_pool.h index 1465ddf4ec..5c19f3facd 100644 --- a/webrtc/common_video/include/i420_buffer_pool.h +++ b/webrtc/common_video/include/i420_buffer_pool.h @@ -13,7 +13,7 @@ #include -#include "webrtc/base/thread_checker.h" +#include "webrtc/base/sequenced_task_checker.h" #include "webrtc/common_video/include/video_frame_buffer.h" namespace webrtc { @@ -40,7 +40,7 @@ class I420BufferPool { // needed by the pool to check exclusive access. using PooledI420Buffer = rtc::RefCountedObject; - rtc::ThreadChecker thread_checker_; + rtc::SequencedTaskChecker sequenced_checker_; std::list> buffers_; // If true, newly allocated buffers are zero-initialized. Note that recycled // buffers are not zero'd before reuse. This is required of buffers used by diff --git a/webrtc/modules/video_coding/video_coding.gypi b/webrtc/modules/video_coding/video_coding.gypi index 602f3686b7..0b682c7d99 100644 --- a/webrtc/modules/video_coding/video_coding.gypi +++ b/webrtc/modules/video_coding/video_coding.gypi @@ -14,6 +14,7 @@ 'dependencies': [ 'webrtc_h264', 'webrtc_i420', + '../base/base.gyp:rtc_task_queue', '<(webrtc_root)/common_video/common_video.gyp:common_video', '<(webrtc_root)/modules/video_coding/utility/video_coding_utility.gyp:video_coding_utility', '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', diff --git a/webrtc/modules/video_coding/video_coding_impl.h b/webrtc/modules/video_coding/video_coding_impl.h index 6bafd5ab0f..40bccf2530 100644 --- a/webrtc/modules/video_coding/video_coding_impl.h +++ b/webrtc/modules/video_coding/video_coding_impl.h @@ -19,7 +19,7 @@ #include "webrtc/base/onetimeevent.h" #include "webrtc/base/thread_annotations.h" -#include "webrtc/base/thread_checker.h" +#include "webrtc/base/sequenced_task_checker.h" #include "webrtc/common_video/include/frame_callback.h" #include "webrtc/modules/video_coding/codec_database.h" #include "webrtc/modules/video_coding/frame_buffer.h" @@ -108,8 +108,7 @@ class VideoSender : public Module { // Must be accessed on the construction thread of VideoSender. VideoCodec current_codec_; - rtc::ThreadChecker main_thread_; - + rtc::SequencedTaskChecker sequenced_checker_; rtc::CriticalSection params_crit_; EncoderParameters encoder_params_ GUARDED_BY(params_crit_); diff --git a/webrtc/modules/video_coding/video_sender.cc b/webrtc/modules/video_coding/video_sender.cc index aecc60cde8..f3e2bfe1b6 100644 --- a/webrtc/modules/video_coding/video_sender.cc +++ b/webrtc/modules/video_coding/video_sender.cc @@ -43,7 +43,7 @@ VideoSender::VideoSender(Clock* clock, // Allow VideoSender to be created on one thread but used on another, post // construction. This is currently how this class is being used by at least // one external project (diffractor). - main_thread_.DetachFromThread(); + sequenced_checker_.Detach(); } VideoSender::~VideoSender() {} @@ -82,7 +82,7 @@ int64_t VideoSender::TimeUntilNextProcess() { int32_t VideoSender::RegisterSendCodec(const VideoCodec* sendCodec, uint32_t numberOfCores, uint32_t maxPayloadSize) { - RTC_DCHECK(main_thread_.CalledOnValidThread()); + RTC_DCHECK(sequenced_checker_.CalledSequentially()); rtc::CritScope lock(&encoder_crit_); if (sendCodec == nullptr) { return VCM_PARAMETER_ERROR; @@ -150,7 +150,7 @@ int32_t VideoSender::RegisterSendCodec(const VideoCodec* sendCodec, void VideoSender::RegisterExternalEncoder(VideoEncoder* externalEncoder, uint8_t payloadType, bool internalSource /*= false*/) { - RTC_DCHECK(main_thread_.CalledOnValidThread()); + RTC_DCHECK(sequenced_checker_.CalledSequentially()); rtc::CritScope lock(&encoder_crit_); @@ -172,7 +172,7 @@ void VideoSender::RegisterExternalEncoder(VideoEncoder* externalEncoder, // Get encode bitrate int VideoSender::Bitrate(unsigned int* bitrate) const { - RTC_DCHECK(main_thread_.CalledOnValidThread()); + RTC_DCHECK(sequenced_checker_.CalledSequentially()); // Since we're running on the thread that's the only thread known to modify // the value of _encoder, we don't need to grab the lock here. @@ -184,7 +184,7 @@ int VideoSender::Bitrate(unsigned int* bitrate) const { // Get encode frame rate int VideoSender::FrameRate(unsigned int* framerate) const { - RTC_DCHECK(main_thread_.CalledOnValidThread()); + RTC_DCHECK(sequenced_checker_.CalledSequentially()); // Since we're running on the thread that's the only thread known to modify // the value of _encoder, we don't need to grab the lock here. diff --git a/webrtc/video/BUILD.gn b/webrtc/video/BUILD.gn index 6b623d518a..1f116bf239 100644 --- a/webrtc/video/BUILD.gn +++ b/webrtc/video/BUILD.gn @@ -100,6 +100,7 @@ if (rtc_include_tests) { "video_send_stream_tests.cc", "vie_remb_unittest.cc", ] + configs += [ "..:common_config" ] deps = [ ":video", "//testing/gmock",