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}
diff --git a/video/video_send_stream.cc b/video/video_send_stream.cc
index f54a4ab..a51a5ae 100644
--- a/video/video_send_stream.cc
+++ b/video/video_send_stream.cc
@@ -427,6 +427,7 @@
   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 @@
       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 @@
   // 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 @@
   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 @@
   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 @@
     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_);
   }
 }