Make VideoSendStreamImpl::configured_pacing_factor_ const
Bug: webrtc:12840 Change-Id: Ie479aa39437e373f3dc84de663dc5641d847ded9 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/221110 Commit-Queue: Tommi <tommi@webrtc.org> Reviewed-by: Markus Handell <handellm@webrtc.org> Cr-Commit-Position: refs/heads/master@{#34215}
This commit is contained in:
@ -227,7 +227,7 @@ VideoSendStream::Stats VideoSendStream::GetStats() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
absl::optional<float> VideoSendStream::GetPacingFactorOverride() const {
|
absl::optional<float> VideoSendStream::GetPacingFactorOverride() const {
|
||||||
return send_stream_->configured_pacing_factor_;
|
return send_stream_->configured_pacing_factor();
|
||||||
}
|
}
|
||||||
|
|
||||||
void VideoSendStream::StopPermanentlyAndGetRtpStates(
|
void VideoSendStream::StopPermanentlyAndGetRtpStates(
|
||||||
|
@ -177,6 +177,27 @@ bool SameStreamsEnabled(const VideoBitrateAllocation& lhs,
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Returns an optional that has value iff TransportSeqNumExtensionConfigured
|
||||||
|
// is `true` for the given video send stream config.
|
||||||
|
absl::optional<float> GetConfiguredPacingFactor(
|
||||||
|
const VideoSendStream::Config& config,
|
||||||
|
VideoEncoderConfig::ContentType content_type,
|
||||||
|
const PacingConfig& default_pacing_config) {
|
||||||
|
if (!TransportSeqNumExtensionConfigured(config))
|
||||||
|
return absl::nullopt;
|
||||||
|
|
||||||
|
absl::optional<AlrExperimentSettings> alr_settings =
|
||||||
|
GetAlrSettings(content_type);
|
||||||
|
if (alr_settings)
|
||||||
|
return alr_settings->pacing_factor;
|
||||||
|
|
||||||
|
RateControlSettings rate_control_settings =
|
||||||
|
RateControlSettings::ParseFromFieldTrials();
|
||||||
|
return rate_control_settings.GetPacingFactor().value_or(
|
||||||
|
default_pacing_config.pacing_factor);
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
PacingConfig::PacingConfig()
|
PacingConfig::PacingConfig()
|
||||||
@ -221,7 +242,6 @@ VideoSendStreamImpl::VideoSendStreamImpl(
|
|||||||
encoder_min_bitrate_bps_(0),
|
encoder_min_bitrate_bps_(0),
|
||||||
encoder_target_rate_bps_(0),
|
encoder_target_rate_bps_(0),
|
||||||
encoder_bitrate_priority_(initial_encoder_bitrate_priority),
|
encoder_bitrate_priority_(initial_encoder_bitrate_priority),
|
||||||
has_packet_feedback_(false),
|
|
||||||
video_stream_encoder_(video_stream_encoder),
|
video_stream_encoder_(video_stream_encoder),
|
||||||
encoder_feedback_(
|
encoder_feedback_(
|
||||||
clock,
|
clock,
|
||||||
@ -245,7 +265,9 @@ VideoSendStreamImpl::VideoSendStreamImpl(
|
|||||||
std::move(fec_controller),
|
std::move(fec_controller),
|
||||||
CreateFrameEncryptionConfig(config_),
|
CreateFrameEncryptionConfig(config_),
|
||||||
config->frame_transformer)),
|
config->frame_transformer)),
|
||||||
weak_ptr_factory_(this) {
|
weak_ptr_factory_(this),
|
||||||
|
configured_pacing_factor_(
|
||||||
|
GetConfiguredPacingFactor(*config_, content_type, pacing_config_)) {
|
||||||
video_stream_encoder->SetFecControllerOverride(rtp_video_sender_);
|
video_stream_encoder->SetFecControllerOverride(rtp_video_sender_);
|
||||||
RTC_DCHECK_RUN_ON(worker_queue_);
|
RTC_DCHECK_RUN_ON(worker_queue_);
|
||||||
RTC_LOG(LS_INFO) << "VideoSendStreamInternal: " << config_->ToString();
|
RTC_LOG(LS_INFO) << "VideoSendStreamInternal: " << config_->ToString();
|
||||||
@ -275,15 +297,11 @@ VideoSendStreamImpl::VideoSendStreamImpl(
|
|||||||
RTC_CHECK(AlrExperimentSettings::MaxOneFieldTrialEnabled());
|
RTC_CHECK(AlrExperimentSettings::MaxOneFieldTrialEnabled());
|
||||||
// If send-side BWE is enabled, check if we should apply updated probing and
|
// If send-side BWE is enabled, check if we should apply updated probing and
|
||||||
// pacing settings.
|
// pacing settings.
|
||||||
if (TransportSeqNumExtensionConfigured(*config_)) {
|
if (configured_pacing_factor_.has_value()) {
|
||||||
has_packet_feedback_ = true;
|
|
||||||
|
|
||||||
absl::optional<AlrExperimentSettings> alr_settings =
|
absl::optional<AlrExperimentSettings> alr_settings =
|
||||||
GetAlrSettings(content_type);
|
GetAlrSettings(content_type);
|
||||||
if (alr_settings) {
|
if (alr_settings) {
|
||||||
transport->EnablePeriodicAlrProbing(true);
|
transport->EnablePeriodicAlrProbing(true);
|
||||||
transport->SetPacingFactor(alr_settings->pacing_factor);
|
|
||||||
configured_pacing_factor_ = alr_settings->pacing_factor;
|
|
||||||
transport->SetQueueTimeLimit(alr_settings->max_paced_queue_time);
|
transport->SetQueueTimeLimit(alr_settings->max_paced_queue_time);
|
||||||
} else {
|
} else {
|
||||||
RateControlSettings rate_control_settings =
|
RateControlSettings rate_control_settings =
|
||||||
@ -291,13 +309,10 @@ VideoSendStreamImpl::VideoSendStreamImpl(
|
|||||||
|
|
||||||
transport->EnablePeriodicAlrProbing(
|
transport->EnablePeriodicAlrProbing(
|
||||||
rate_control_settings.UseAlrProbing());
|
rate_control_settings.UseAlrProbing());
|
||||||
const double pacing_factor =
|
|
||||||
rate_control_settings.GetPacingFactor().value_or(
|
|
||||||
pacing_config_.pacing_factor);
|
|
||||||
transport->SetPacingFactor(pacing_factor);
|
|
||||||
configured_pacing_factor_ = pacing_factor;
|
|
||||||
transport->SetQueueTimeLimit(pacing_config_.max_pacing_delay.Get().ms());
|
transport->SetQueueTimeLimit(pacing_config_.max_pacing_delay.Get().ms());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
transport->SetPacingFactor(*configured_pacing_factor_);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config_->periodic_alr_bandwidth_probing) {
|
if (config_->periodic_alr_bandwidth_probing) {
|
||||||
|
@ -106,7 +106,9 @@ class VideoSendStreamImpl : public webrtc::BitrateAllocatorObserver,
|
|||||||
|
|
||||||
std::map<uint32_t, RtpPayloadState> GetRtpPayloadStates() const;
|
std::map<uint32_t, RtpPayloadState> GetRtpPayloadStates() const;
|
||||||
|
|
||||||
absl::optional<float> configured_pacing_factor_;
|
const absl::optional<float>& configured_pacing_factor() const {
|
||||||
|
return configured_pacing_factor_;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Implements BitrateAllocatorObserver.
|
// Implements BitrateAllocatorObserver.
|
||||||
@ -172,7 +174,6 @@ class VideoSendStreamImpl : public webrtc::BitrateAllocatorObserver,
|
|||||||
uint32_t encoder_max_bitrate_bps_;
|
uint32_t encoder_max_bitrate_bps_;
|
||||||
uint32_t encoder_target_rate_bps_;
|
uint32_t encoder_target_rate_bps_;
|
||||||
double encoder_bitrate_priority_;
|
double encoder_bitrate_priority_;
|
||||||
bool has_packet_feedback_;
|
|
||||||
|
|
||||||
VideoStreamEncoderInterface* const video_stream_encoder_;
|
VideoStreamEncoderInterface* const video_stream_encoder_;
|
||||||
EncoderRtcpFeedback encoder_feedback_;
|
EncoderRtcpFeedback encoder_feedback_;
|
||||||
@ -197,6 +198,7 @@ class VideoSendStreamImpl : public webrtc::BitrateAllocatorObserver,
|
|||||||
};
|
};
|
||||||
absl::optional<VbaSendContext> video_bitrate_allocation_context_
|
absl::optional<VbaSendContext> video_bitrate_allocation_context_
|
||||||
RTC_GUARDED_BY(worker_queue_);
|
RTC_GUARDED_BY(worker_queue_);
|
||||||
|
const absl::optional<float> configured_pacing_factor_;
|
||||||
};
|
};
|
||||||
} // namespace internal
|
} // namespace internal
|
||||||
} // namespace webrtc
|
} // namespace webrtc
|
||||||
|
Reference in New Issue
Block a user