Index: webrtc/video/video_send_stream.cc |
diff --git a/webrtc/video/video_send_stream.cc b/webrtc/video/video_send_stream.cc |
index 58ed646363ebbee899656dbb95731eeeeaa36d2a..1be17632ed5d664d8b834e328698e71cbd39981f 100644 |
--- a/webrtc/video/video_send_stream.cc |
+++ b/webrtc/video/video_send_stream.cc |
@@ -176,7 +176,7 @@ VideoSendStream::VideoSendStream( |
module_process_thread_, |
&payload_router_, |
nullptr, |
- encoder_feedback_.GetRtcpIntraFrameObserver(), |
+ &encoder_feedback_, |
congestion_controller_->GetBitrateController() |
->CreateRtcpBandwidthObserver(), |
congestion_controller_->GetTransportFeedbackObserver(), |
@@ -209,6 +209,7 @@ VideoSendStream::VideoSendStream( |
RTC_DCHECK(remb_); |
RTC_CHECK(vie_encoder_.Init()); |
+ encoder_feedback_.Init(config_.rtp.ssrcs, &vie_encoder_); |
RTC_CHECK(vie_channel_.Init() == 0); |
vcm_->RegisterProtectionCallback(vie_channel_.vcm_protection_callback()); |
@@ -288,8 +289,6 @@ VideoSendStream::VideoSendStream( |
if (config_.suspend_below_min_bitrate) |
vie_encoder_.SuspendBelowMinBitrate(); |
- encoder_feedback_.AddEncoder(config_.rtp.ssrcs, &vie_encoder_); |
- |
vie_channel_.RegisterSendChannelRtcpStatisticsCallback(&stats_proxy_); |
vie_channel_.RegisterSendChannelRtpStatisticsCallback(&stats_proxy_); |
vie_channel_.RegisterRtcpPacketTypeCounterObserver(&stats_proxy_); |
@@ -319,9 +318,9 @@ VideoSendStream::~VideoSendStream() { |
rtp_module->SetREMBStatus(false); |
remb_->RemoveRembSender(rtp_module); |
- // Remove the feedback, stop all encoding threads and processing. This must be |
- // done before deleting the channel. |
- encoder_feedback_.RemoveEncoder(&vie_encoder_); |
+ // ViEChannel outlives ViEEncoder so remove encoder from feedback before |
+ // destruction. |
+ encoder_feedback_.TearDown(); |
congestion_controller_->GetRemoteBitrateEstimator(false)->RemoveStream( |
vie_receiver_->GetRemoteSsrc()); |