Update VideoSendStreamImpl for configuration transition.

Yet another followup fix to
https://webrtc-review.googlesource.com/64101.

Bug: webrtc:8830
Change-Id: I742e675589450fea4c212a2435d3a7484e301fa7
Reviewed-on: https://webrtc-review.googlesource.com/64441
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22582}
diff --git a/video/video_send_stream.cc b/video/video_send_stream.cc
index 0bf1cf2..4e1360d 100644
--- a/video/video_send_stream.cc
+++ b/video/video_send_stream.cc
@@ -402,6 +402,11 @@
 
   SendStatisticsProxy* const stats_proxy_;
   const VideoSendStream::Config* const config_;
+  // TODO(nisse): Transition hack, to support either
+  // config.rtp.payload_* or config_.encoder_settings.payload_*.
+  std::string payload_name_;
+  int payload_type_;
+
   std::map<uint32_t, RtpState> suspended_ssrcs_;
 
   std::unique_ptr<FecController> fec_controller_;
@@ -700,6 +705,12 @@
           webrtc::field_trial::IsEnabled("WebRTC-SendSideBwe-WithOverhead")),
       stats_proxy_(stats_proxy),
       config_(config),
+      payload_name_(!config_->rtp.payload_name.empty()
+                        ? config_->rtp.payload_name.c_str()
+                        : config_->encoder_settings.payload_name.c_str()),
+      payload_type_(config_->rtp.payload_type != -1
+                        ? config_->rtp.payload_type
+                        : config_->encoder_settings.payload_type),
       suspended_ssrcs_(std::move(suspended_ssrcs)),
       fec_controller_(std::move(fec_controller)),
       module_process_thread_(nullptr),
@@ -827,18 +838,11 @@
   // TODO(pbos): Should we set CNAME on all RTP modules?
   rtp_rtcp_modules_.front()->SetCNAME(config_->rtp.c_name.c_str());
 
-  int payload_type = config_->rtp.payload_type != -1
-                         ? config_->rtp.payload_type
-                         : config_->encoder_settings.payload_type;
-
   for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_) {
     rtp_rtcp->RegisterRtcpStatisticsCallback(stats_proxy_);
     rtp_rtcp->RegisterSendChannelRtpStatisticsCallback(stats_proxy_);
     rtp_rtcp->SetMaxRtpPacketSize(config_->rtp.max_packet_size);
-    rtp_rtcp->RegisterVideoSendPayload(
-        payload_type, !config_->rtp.payload_name.empty()
-                          ? config_->rtp.payload_name.c_str()
-                          : config_->encoder_settings.payload_name.c_str());
+    rtp_rtcp->RegisterVideoSendPayload(payload_type_, payload_name_.c_str());
   }
 
   fec_controller_->SetProtectionCallback(this);
@@ -848,8 +852,8 @@
   }
 
   RTC_DCHECK(config_->encoder_settings.encoder);
-  RTC_DCHECK_GE(payload_type, 0);
-  RTC_DCHECK_LE(payload_type, 127);
+  RTC_DCHECK_GE(payload_type_, 0);
+  RTC_DCHECK_LE(payload_type_, 127);
 
   video_stream_encoder_->SetStartBitrate(
       bitrate_allocator_->GetStartBitrate(this));
@@ -1142,8 +1146,7 @@
   // is a waste of bandwidth since FEC packets still have to be transmitted.
   // Note that this is not the case with FlexFEC.
   if (nack_enabled && IsUlpfecEnabled() &&
-      !PayloadTypeSupportsSkippingFecPackets(
-          config_->encoder_settings.payload_name)) {
+      !PayloadTypeSupportsSkippingFecPackets(payload_name_)) {
     RTC_LOG(LS_WARNING)
         << "Transmitting payload type without picture ID using "
            "NACK+ULPFEC is a waste of bandwidth since ULPFEC packets "
@@ -1221,7 +1224,7 @@
   RTC_DCHECK_GE(config_->rtp.rtx.payload_type, 0);
   for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_) {
     rtp_rtcp->SetRtxSendPayloadType(config_->rtp.rtx.payload_type,
-                                    config_->encoder_settings.payload_type);
+                                    payload_type_);
     rtp_rtcp->SetRtxSendStatus(kRtxRetransmitted | kRtxRedundantPayloads);
   }
   if (config_->rtp.ulpfec.red_payload_type != -1 &&