Report frame qp to quality scaler via overuse module
Bug: webrtc:11222
Change-Id: I63938adf5f623429eab1bcd668cde8fa5a1a083a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/167924
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30435}
diff --git a/call/adaptation/resource_adaptation_module_interface.h b/call/adaptation/resource_adaptation_module_interface.h
index 3a3deb2..52b0760 100644
--- a/call/adaptation/resource_adaptation_module_interface.h
+++ b/call/adaptation/resource_adaptation_module_interface.h
@@ -122,9 +122,8 @@
// 3. The frame has successfully completed encoding. Next up: The encoded
// frame is dropped or packetized and sent over the network. There is
// currently no signal what happens beyond this point.
- virtual void OnEncodeCompleted(uint32_t timestamp,
+ virtual void OnEncodeCompleted(const EncodedImage& encoded_image,
int64_t time_sent_in_us,
- int64_t capture_time_us,
absl::optional<int> encode_duration_us) = 0;
};
diff --git a/video/overuse_frame_detector_resource_adaptation_module.cc b/video/overuse_frame_detector_resource_adaptation_module.cc
index e73f7fa..3fd2204 100644
--- a/video/overuse_frame_detector_resource_adaptation_module.cc
+++ b/video/overuse_frame_detector_resource_adaptation_module.cc
@@ -470,14 +470,18 @@
}
void OveruseFrameDetectorResourceAdaptationModule::OnEncodeCompleted(
- uint32_t timestamp,
+ const EncodedImage& encoded_image,
int64_t time_sent_in_us,
- int64_t capture_time_us,
absl::optional<int> encode_duration_us) {
// TODO(hbos): Rename FrameSent() to something more appropriate (e.g.
// "OnEncodeCompleted"?).
+ uint32_t timestamp = encoded_image.Timestamp();
+ int64_t capture_time_us =
+ encoded_image.capture_time_ms_ * rtc::kNumMicrosecsPerMillisec;
overuse_detector_->FrameSent(timestamp, time_sent_in_us, capture_time_us,
encode_duration_us);
+ if (quality_scaler_ && encoded_image.qp_ >= 0)
+ quality_scaler_->ReportQp(encoded_image.qp_, time_sent_in_us);
}
void OveruseFrameDetectorResourceAdaptationModule::UpdateQualityScalerSettings(
diff --git a/video/overuse_frame_detector_resource_adaptation_module.h b/video/overuse_frame_detector_resource_adaptation_module.h
index 2bb05f9..8cc8242 100644
--- a/video/overuse_frame_detector_resource_adaptation_module.h
+++ b/video/overuse_frame_detector_resource_adaptation_module.h
@@ -81,9 +81,8 @@
void OnFrameDroppedDueToSize() override;
void OnEncodeStarted(const VideoFrame& cropped_frame,
int64_t time_when_first_seen_us) override;
- void OnEncodeCompleted(uint32_t timestamp,
+ void OnEncodeCompleted(const EncodedImage& encoded_image,
int64_t time_sent_in_us,
- int64_t capture_time_us,
absl::optional<int> encode_duration_us) override;
// Use nullopt to disable quality scaling.
diff --git a/video/video_stream_encoder.cc b/video/video_stream_encoder.cc
index 7ec659d..335532c 100644
--- a/video/video_stream_encoder.cc
+++ b/video/video_stream_encoder.cc
@@ -1762,13 +1762,8 @@
}
}
- resource_adaptation_module_->OnEncodeCompleted(
- encoded_image.Timestamp(), time_sent_us,
- encoded_image.capture_time_ms_ * rtc::kNumMicrosecsPerMillisec,
- encode_duration_us);
- QualityScaler* quality_scaler = resource_adaptation_module_->quality_scaler();
- if (quality_scaler && encoded_image.qp_ >= 0)
- quality_scaler->ReportQp(encoded_image.qp_, time_sent_us);
+ resource_adaptation_module_->OnEncodeCompleted(encoded_image, time_sent_us,
+ encode_duration_us);
if (bitrate_adjuster_) {
bitrate_adjuster_->OnEncodedFrame(encoded_image, temporal_index);
}