Reporting packet feedback availability in VideoSendStream

This CL adds tracking and reporting of packet feedback availability in
the VideoSendStream class.

This is part of a series of CLs tracking the transport feedback status
of the streams known to BitrateAllocator and reporting the status to
the congestion controller.

Bug: webrtc:8415
Change-Id: I4e7b6d5b034b4ae1e86ea439e6d001eea04784ce
Reviewed-on: https://webrtc-review.googlesource.com/63204
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22545}
This commit is contained in:
Sebastian Jansson 2018-03-21 12:47:03 +01:00 committed by Commit Bot
parent 1b0decc0f6
commit ccd1523be4

View File

@ -427,6 +427,7 @@ class VideoSendStreamImpl : public webrtc::BitrateAllocatorObserver,
uint32_t encoder_max_bitrate_bps_;
uint32_t encoder_target_rate_bps_;
double encoder_bitrate_priority_;
bool has_packet_feedback_;
VideoStreamEncoder* const video_stream_encoder_;
EncoderRtcpFeedback encoder_feedback_;
@ -710,6 +711,7 @@ VideoSendStreamImpl::VideoSendStreamImpl(
encoder_min_bitrate_bps_(0),
encoder_target_rate_bps_(0),
encoder_bitrate_priority_(initial_encoder_bitrate_priority),
has_packet_feedback_(false),
video_stream_encoder_(video_stream_encoder),
encoder_feedback_(Clock::GetRealTimeClock(),
config_->rtp.ssrcs,
@ -765,6 +767,8 @@ VideoSendStreamImpl::VideoSendStreamImpl(
// If send-side BWE is enabled, check if we should apply updated probing and
// pacing settings.
if (TransportSeqNumExtensionConfigured(*config_)) {
has_packet_feedback_ = true;
rtc::Optional<AlrExperimentSettings> alr_settings;
if (content_type == VideoEncoderConfig::ContentType::kScreen) {
alr_settings = AlrExperimentSettings::CreateFromFieldTrial(
@ -924,7 +928,7 @@ void VideoSendStreamImpl::StartupVideoSendStream() {
bitrate_allocator_->AddObserver(
this, encoder_min_bitrate_bps_, encoder_max_bitrate_bps_,
max_padding_bitrate_, !config_->suspend_below_min_bitrate,
config_->track_id, encoder_bitrate_priority_);
config_->track_id, encoder_bitrate_priority_, has_packet_feedback_);
// Start monitoring encoder activity.
{
rtc::CritScope lock(&encoder_activity_crit_sect_);
@ -981,7 +985,7 @@ void VideoSendStreamImpl::SignalEncoderActive() {
bitrate_allocator_->AddObserver(
this, encoder_min_bitrate_bps_, encoder_max_bitrate_bps_,
max_padding_bitrate_, !config_->suspend_below_min_bitrate,
config_->track_id, encoder_bitrate_priority_);
config_->track_id, encoder_bitrate_priority_, has_packet_feedback_);
}
void VideoSendStreamImpl::OnEncoderConfigurationChanged(
@ -1038,7 +1042,7 @@ void VideoSendStreamImpl::OnEncoderConfigurationChanged(
bitrate_allocator_->AddObserver(
this, encoder_min_bitrate_bps_, encoder_max_bitrate_bps_,
max_padding_bitrate_, !config_->suspend_below_min_bitrate,
config_->track_id, encoder_bitrate_priority_);
config_->track_id, encoder_bitrate_priority_, has_packet_feedback_);
}
}