Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2558)

Unified Diff: webrtc/modules/video_coding/codecs/test/videoprocessor.cc

Issue 2996253002: VideoProcessor: make it runnable on a task queue. (Closed)
Patch Set: Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/modules/video_coding/codecs/test/videoprocessor.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 e0e3ef8105818d1ee65eec50fc4dad58e5d56fbf..ac5efd23f2c84a361222d5eb3e3bd709d7be79c9 100644
--- a/webrtc/modules/video_coding/codecs/test/videoprocessor.cc
+++ b/webrtc/modules/video_coding/codecs/test/videoprocessor.cc
@@ -121,7 +121,8 @@ VideoProcessor::VideoProcessor(webrtc::VideoEncoder* encoder,
Stats* stats,
IvfFileWriter* encoded_frame_writer,
FrameWriter* decoded_frame_writer)
- : config_(config),
+ : initialized_(false),
+ config_(config),
encoder_(encoder),
decoder_(decoder),
bitrate_allocator_(CreateBitrateAllocator(&config_)),
@@ -132,7 +133,6 @@ VideoProcessor::VideoProcessor(webrtc::VideoEncoder* encoder,
analysis_frame_writer_(analysis_frame_writer),
encoded_frame_writer_(encoded_frame_writer),
decoded_frame_writer_(decoded_frame_writer),
- initialized_(false),
last_encoded_frame_num_(-1),
last_decoded_frame_num_(-1),
first_key_frame_has_been_excluded_(false),
@@ -152,6 +152,7 @@ VideoProcessor::VideoProcessor(webrtc::VideoEncoder* encoder,
VideoProcessor::~VideoProcessor() = default;
void VideoProcessor::Init() {
+ RTC_DCHECK_CALLED_SEQUENTIALLY(&sequence_checker_);
RTC_DCHECK(!initialized_) << "VideoProcessor already initialized.";
initialized_ = true;
@@ -198,6 +199,8 @@ void VideoProcessor::Init() {
}
void VideoProcessor::Release() {
+ RTC_DCHECK_CALLED_SEQUENTIALLY(&sequence_checker_);
+
RTC_CHECK_EQ(encoder_->Release(), WEBRTC_VIDEO_CODEC_OK);
RTC_CHECK_EQ(decoder_->Release(), WEBRTC_VIDEO_CODEC_OK);
@@ -208,6 +211,7 @@ void VideoProcessor::Release() {
}
void VideoProcessor::ProcessFrame(int frame_number) {
+ RTC_DCHECK_CALLED_SEQUENTIALLY(&sequence_checker_);
RTC_DCHECK_EQ(frame_number, frame_infos_.size())
<< "Must process frames in sequence.";
RTC_DCHECK(initialized_) << "VideoProcessor not initialized.";
@@ -248,6 +252,8 @@ void VideoProcessor::ProcessFrame(int frame_number) {
}
void VideoProcessor::SetRates(int bitrate_kbps, int framerate_fps) {
+ RTC_DCHECK_CALLED_SEQUENTIALLY(&sequence_checker_);
+
config_.codec_settings.maxFramerate = framerate_fps;
int set_rates_result = encoder_->SetRateAllocation(
bitrate_allocator_->GetAllocation(bitrate_kbps * 1000, framerate_fps),
@@ -259,20 +265,24 @@ void VideoProcessor::SetRates(int bitrate_kbps, int framerate_fps) {
}
int VideoProcessor::GetQpFromEncoder(int frame_number) const {
+ RTC_DCHECK_CALLED_SEQUENTIALLY(&sequence_checker_);
RTC_CHECK_LT(frame_number, frame_infos_.size());
return frame_infos_[frame_number].qp_encoder;
}
int VideoProcessor::GetQpFromBitstream(int frame_number) const {
+ RTC_DCHECK_CALLED_SEQUENTIALLY(&sequence_checker_);
RTC_CHECK_LT(frame_number, frame_infos_.size());
return frame_infos_[frame_number].qp_bitstream;
}
int VideoProcessor::NumberDroppedFrames() {
+ RTC_DCHECK_CALLED_SEQUENTIALLY(&sequence_checker_);
return num_dropped_frames_;
}
int VideoProcessor::NumberSpatialResizes() {
+ RTC_DCHECK_CALLED_SEQUENTIALLY(&sequence_checker_);
return num_spatial_resizes_;
}
@@ -280,6 +290,8 @@ void VideoProcessor::FrameEncoded(
webrtc::VideoCodecType codec,
const EncodedImage& encoded_image,
const webrtc::RTPFragmentationHeader* fragmentation) {
+ RTC_DCHECK_CALLED_SEQUENTIALLY(&sequence_checker_);
+
// For the highest measurement accuracy of the encode time, the start/stop
// time recordings should wrap the Encode call as tightly as possible.
int64_t encode_stop_ns = rtc::TimeNanos();
@@ -411,6 +423,8 @@ void VideoProcessor::FrameEncoded(
}
void VideoProcessor::FrameDecoded(const VideoFrame& image) {
+ RTC_DCHECK_CALLED_SEQUENTIALLY(&sequence_checker_);
+
// For the highest measurement accuracy of the decode time, the start/stop
// time recordings should wrap the Decode call as tightly as possible.
int64_t decode_stop_ns = rtc::TimeNanos();
@@ -479,6 +493,8 @@ void VideoProcessor::FrameDecoded(const VideoFrame& image) {
}
uint32_t VideoProcessor::FrameNumberToTimestamp(int frame_number) const {
+ RTC_DCHECK_CALLED_SEQUENTIALLY(&sequence_checker_);
+
RTC_DCHECK_GE(frame_number, 0);
const int ticks_per_frame =
kRtpClockRateHz / config_.codec_settings.maxFramerate;
@@ -486,6 +502,8 @@ uint32_t VideoProcessor::FrameNumberToTimestamp(int frame_number) const {
}
int VideoProcessor::TimestampToFrameNumber(uint32_t timestamp) const {
+ RTC_DCHECK_CALLED_SEQUENTIALLY(&sequence_checker_);
+
RTC_DCHECK_GT(timestamp, 0);
const int ticks_per_frame =
kRtpClockRateHz / config_.codec_settings.maxFramerate;
« no previous file with comments | « webrtc/modules/video_coding/codecs/test/videoprocessor.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698