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}
This commit is contained in:
Evan Shrubsole
2020-01-30 14:29:35 +01:00
committed by Commit Bot
parent 8ad9e74d62
commit bfe3ef8feb
4 changed files with 10 additions and 13 deletions

View File

@ -122,9 +122,8 @@ class ResourceAdaptationModuleInterface {
// 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;
};

View File

@ -470,14 +470,18 @@ void OveruseFrameDetectorResourceAdaptationModule::OnEncodeStarted(
}
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(

View File

@ -81,9 +81,8 @@ class OveruseFrameDetectorResourceAdaptationModule
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.

View File

@ -1762,13 +1762,8 @@ void VideoStreamEncoder::RunPostEncode(const EncodedImage& encoded_image,
}
}
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);
}