Properly clean up RtpVideoSender.
Bug: webrtc:9517 Change-Id: I625c132907bd178f62c8b99f4b2407c75aa7e947 Reviewed-on: https://webrtc-review.googlesource.com/89382 Reviewed-by: Björn Terelius <terelius@webrtc.org> Commit-Queue: Stefan Holmer <stefan@webrtc.org> Cr-Commit-Position: refs/heads/master@{#24022}
This commit is contained in:

committed by
Commit Bot

parent
0c7ec80927
commit
5ed25af448
@ -84,7 +84,7 @@ RtpTransportControllerSend::~RtpTransportControllerSend() {
|
|||||||
process_thread_->DeRegisterModule(&pacer_);
|
process_thread_->DeRegisterModule(&pacer_);
|
||||||
}
|
}
|
||||||
|
|
||||||
PayloadRouter* RtpTransportControllerSend::CreateVideoRtpSender(
|
VideoRtpSenderInterface* RtpTransportControllerSend::CreateVideoRtpSender(
|
||||||
const std::vector<uint32_t>& ssrcs,
|
const std::vector<uint32_t>& ssrcs,
|
||||||
std::map<uint32_t, RtpState> suspended_ssrcs,
|
std::map<uint32_t, RtpState> suspended_ssrcs,
|
||||||
const std::map<uint32_t, RtpPayloadState>& states,
|
const std::map<uint32_t, RtpPayloadState>& states,
|
||||||
@ -102,6 +102,19 @@ PayloadRouter* RtpTransportControllerSend::CreateVideoRtpSender(
|
|||||||
return video_rtp_senders_.back().get();
|
return video_rtp_senders_.back().get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RtpTransportControllerSend::DestroyVideoRtpSender(
|
||||||
|
VideoRtpSenderInterface* rtp_video_sender) {
|
||||||
|
std::vector<std::unique_ptr<VideoRtpSenderInterface>>::iterator it =
|
||||||
|
video_rtp_senders_.end();
|
||||||
|
for (it = video_rtp_senders_.begin(); it != video_rtp_senders_.end(); ++it) {
|
||||||
|
if (it->get() == rtp_video_sender) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
RTC_DCHECK(it != video_rtp_senders_.end());
|
||||||
|
video_rtp_senders_.erase(it);
|
||||||
|
}
|
||||||
|
|
||||||
void RtpTransportControllerSend::OnNetworkChanged(uint32_t bitrate_bps,
|
void RtpTransportControllerSend::OnNetworkChanged(uint32_t bitrate_bps,
|
||||||
uint8_t fraction_loss,
|
uint8_t fraction_loss,
|
||||||
int64_t rtt_ms,
|
int64_t rtt_ms,
|
||||||
|
@ -46,7 +46,7 @@ class RtpTransportControllerSend final
|
|||||||
const BitrateConstraints& bitrate_config);
|
const BitrateConstraints& bitrate_config);
|
||||||
~RtpTransportControllerSend() override;
|
~RtpTransportControllerSend() override;
|
||||||
|
|
||||||
PayloadRouter* CreateVideoRtpSender(
|
VideoRtpSenderInterface* CreateVideoRtpSender(
|
||||||
const std::vector<uint32_t>& ssrcs,
|
const std::vector<uint32_t>& ssrcs,
|
||||||
std::map<uint32_t, RtpState> suspended_ssrcs,
|
std::map<uint32_t, RtpState> suspended_ssrcs,
|
||||||
const std::map<uint32_t, RtpPayloadState>&
|
const std::map<uint32_t, RtpPayloadState>&
|
||||||
@ -56,6 +56,8 @@ class RtpTransportControllerSend final
|
|||||||
Transport* send_transport,
|
Transport* send_transport,
|
||||||
const RtpSenderObservers& observers,
|
const RtpSenderObservers& observers,
|
||||||
RtcEventLog* event_log) override;
|
RtcEventLog* event_log) override;
|
||||||
|
void DestroyVideoRtpSender(
|
||||||
|
VideoRtpSenderInterface* rtp_video_sender) override;
|
||||||
|
|
||||||
// Implements NetworkChangedObserver interface.
|
// Implements NetworkChangedObserver interface.
|
||||||
void OnNetworkChanged(uint32_t bitrate_bps,
|
void OnNetworkChanged(uint32_t bitrate_bps,
|
||||||
@ -103,7 +105,7 @@ class RtpTransportControllerSend final
|
|||||||
private:
|
private:
|
||||||
const Clock* const clock_;
|
const Clock* const clock_;
|
||||||
PacketRouter packet_router_;
|
PacketRouter packet_router_;
|
||||||
std::vector<std::unique_ptr<PayloadRouter>> video_rtp_senders_;
|
std::vector<std::unique_ptr<VideoRtpSenderInterface>> video_rtp_senders_;
|
||||||
PacedSender pacer_;
|
PacedSender pacer_;
|
||||||
RtpKeepAliveConfig keepalive_;
|
RtpKeepAliveConfig keepalive_;
|
||||||
RtpBitrateConfigurator bitrate_configurator_;
|
RtpBitrateConfigurator bitrate_configurator_;
|
||||||
|
@ -100,6 +100,8 @@ class RtpTransportControllerSendInterface {
|
|||||||
Transport* send_transport,
|
Transport* send_transport,
|
||||||
const RtpSenderObservers& observers,
|
const RtpSenderObservers& observers,
|
||||||
RtcEventLog* event_log) = 0;
|
RtcEventLog* event_log) = 0;
|
||||||
|
virtual void DestroyVideoRtpSender(
|
||||||
|
VideoRtpSenderInterface* rtp_video_sender) = 0;
|
||||||
|
|
||||||
virtual TransportFeedbackObserver* transport_feedback_observer() = 0;
|
virtual TransportFeedbackObserver* transport_feedback_observer() = 0;
|
||||||
|
|
||||||
|
@ -39,6 +39,7 @@ class MockRtpTransportControllerSend
|
|||||||
Transport*,
|
Transport*,
|
||||||
const RtpSenderObservers&,
|
const RtpSenderObservers&,
|
||||||
RtcEventLog*));
|
RtcEventLog*));
|
||||||
|
MOCK_METHOD1(DestroyVideoRtpSender, void(VideoRtpSenderInterface*));
|
||||||
MOCK_METHOD0(GetWorkerQueue, rtc::TaskQueue*());
|
MOCK_METHOD0(GetWorkerQueue, rtc::TaskQueue*());
|
||||||
MOCK_METHOD0(packet_router, PacketRouter*());
|
MOCK_METHOD0(packet_router, PacketRouter*());
|
||||||
MOCK_METHOD0(transport_feedback_observer, TransportFeedbackObserver*());
|
MOCK_METHOD0(transport_feedback_observer, TransportFeedbackObserver*());
|
||||||
|
@ -341,6 +341,7 @@ VideoSendStreamImpl::~VideoSendStreamImpl() {
|
|||||||
if (fec_controller_->UseLossVectorMask()) {
|
if (fec_controller_->UseLossVectorMask()) {
|
||||||
transport_->DeRegisterPacketFeedbackObserver(this);
|
transport_->DeRegisterPacketFeedbackObserver(this);
|
||||||
}
|
}
|
||||||
|
transport_->DestroyVideoRtpSender(payload_router_);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VideoSendStreamImpl::RegisterProcessThread(
|
void VideoSendStreamImpl::RegisterProcessThread(
|
||||||
|
Reference in New Issue
Block a user