Index: webrtc/modules/video_coding/codecs/test/videoprocessor.cc |
diff --git a/webrtc/modules/video_coding/codecs/test/videoprocessor.cc b/webrtc/modules/video_coding/codecs/test/videoprocessor.cc |
index 0bb04a99df03d7a193411ab829832e3092343e1a..9822a76dc82007085a2ebaebdd0bdca7da70c53d 100644 |
--- a/webrtc/modules/video_coding/codecs/test/videoprocessor.cc |
+++ b/webrtc/modules/video_coding/codecs/test/videoprocessor.cc |
@@ -114,7 +114,7 @@ TestConfig::TestConfig() |
codec_settings(nullptr), |
verbose(true) {} |
-TestConfig::~TestConfig() {} |
+TestConfig::~TestConfig() = default; |
VideoProcessorImpl::VideoProcessorImpl(webrtc::VideoEncoder* encoder, |
webrtc::VideoDecoder* decoder, |
@@ -156,9 +156,14 @@ VideoProcessorImpl::VideoProcessorImpl(webrtc::VideoEncoder* encoder, |
RTC_DCHECK(stats); |
frame_infos_.reserve(num_frames_); |
+ |
+ task_checker_.Detach(); |
} |
+VideoProcessorImpl::~VideoProcessorImpl() = default; |
sprang_webrtc
2017/03/20 19:36:17
nit: Could you declare ~VideoProcessor and ~Video
brandtr
2017/03/21 09:40:54
Done.
|
+ |
bool VideoProcessorImpl::Init() { |
+ RTC_DCHECK_CALLED_SEQUENTIALLY(&task_checker_); |
RTC_DCHECK(!initialized_) |
<< "This VideoProcessor has already been initialized."; |
@@ -203,12 +208,14 @@ bool VideoProcessorImpl::Init() { |
return true; |
} |
-VideoProcessorImpl::~VideoProcessorImpl() { |
+void VideoProcessorImpl::DeregisterCallbacks() { |
+ RTC_DCHECK_CALLED_SEQUENTIALLY(&task_checker_); |
encoder_->RegisterEncodeCompleteCallback(nullptr); |
decoder_->RegisterDecodeCompleteCallback(nullptr); |
} |
void VideoProcessorImpl::SetRates(int bit_rate, int frame_rate) { |
+ RTC_DCHECK_CALLED_SEQUENTIALLY(&task_checker_); |
int set_rates_result = encoder_->SetRateAllocation( |
bitrate_allocator_->GetAllocation(bit_rate * 1000, frame_rate), |
frame_rate); |
@@ -219,24 +226,29 @@ void VideoProcessorImpl::SetRates(int bit_rate, int frame_rate) { |
} |
size_t VideoProcessorImpl::EncodedFrameSize(int frame_number) { |
+ RTC_DCHECK_CALLED_SEQUENTIALLY(&task_checker_); |
RTC_DCHECK_LT(frame_number, frame_infos_.size()); |
return frame_infos_[frame_number].encoded_frame_size; |
} |
FrameType VideoProcessorImpl::EncodedFrameType(int frame_number) { |
+ RTC_DCHECK_CALLED_SEQUENTIALLY(&task_checker_); |
RTC_DCHECK_LT(frame_number, frame_infos_.size()); |
return frame_infos_[frame_number].encoded_frame_type; |
} |
int VideoProcessorImpl::NumberDroppedFrames() { |
+ RTC_DCHECK_CALLED_SEQUENTIALLY(&task_checker_); |
return num_dropped_frames_; |
} |
int VideoProcessorImpl::NumberSpatialResizes() { |
+ RTC_DCHECK_CALLED_SEQUENTIALLY(&task_checker_); |
return num_spatial_resizes_; |
} |
bool VideoProcessorImpl::ProcessFrame(int frame_number) { |
+ RTC_DCHECK_CALLED_SEQUENTIALLY(&task_checker_); |
RTC_DCHECK_GE(frame_number, 0); |
RTC_DCHECK_LE(frame_number, frame_infos_.size()) |
<< "Must process frames without gaps."; |
@@ -299,6 +311,8 @@ void VideoProcessorImpl::FrameEncoded( |
// time recordings should wrap the Encode call as tightly as possible. |
int64_t encode_stop_ns = rtc::TimeNanos(); |
+ RTC_DCHECK_CALLED_SEQUENTIALLY(&task_checker_); |
+ |
if (encoded_frame_writer_) { |
RTC_CHECK(encoded_frame_writer_->WriteFrame(encoded_image, codec)); |
} |
@@ -423,6 +437,8 @@ void VideoProcessorImpl::FrameDecoded(const VideoFrame& image) { |
// time recordings should wrap the Decode call as tightly as possible. |
int64_t decode_stop_ns = rtc::TimeNanos(); |
+ RTC_DCHECK_CALLED_SEQUENTIALLY(&task_checker_); |
+ |
// Update frame information and statistics. |
int frame_number = TimestampToFrameNumber(image.timestamp()); |
RTC_DCHECK_LT(frame_number, frame_infos_.size()); |