From 03bc3a0fa67e274efb4518da005f4c5b77c607e9 Mon Sep 17 00:00:00 2001 From: Markus Handell Date: Tue, 7 Nov 2023 13:20:50 +0100 Subject: [PATCH] VideoStreamEncoder: exclude screencast from capture time measurement. This CL avoids measurement for screencast encoding work. The reason is screencast can cling on to and re-encode old video frames for which webrtc::VideoFrame::reference_time() is unchanged. Bug: chromium:1498378 Change-Id: I5bf79d29ef7f57ddff2622cbb6c3436480bd16ba Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/326103 Commit-Queue: Markus Handell Reviewed-by: Harald Alvestrand Auto-Submit: Markus Handell Cr-Commit-Position: refs/heads/main@{#41097} --- video/video_stream_encoder.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/video/video_stream_encoder.cc b/video/video_stream_encoder.cc index c9bd604d05..a5711c104a 100644 --- a/video/video_stream_encoder.cc +++ b/video/video_stream_encoder.cc @@ -2065,8 +2065,11 @@ void VideoStreamEncoder::EncodeVideoFrame(const VideoFrame& video_frame, frame_encode_metadata_writer_.OnEncodeStarted(out_frame); - CaptureProcessingDurationMeasurement::AttachToCurrentVoucher( - out_frame.reference_time().value_or(clock_->CurrentTime())); + if (encoder_config_.content_type != + VideoEncoderConfig::ContentType::kScreen) { + CaptureProcessingDurationMeasurement::AttachToCurrentVoucher( + out_frame.reference_time().value_or(clock_->CurrentTime())); + } const int32_t encode_status = encoder_->Encode(out_frame, &next_frame_types_); was_encode_called_since_last_initialization_ = true;