Chromium Code Reviews| Index: content/renderer/media/webrtc/rtc_rtp_sender.cc |
| diff --git a/content/renderer/media/webrtc/rtc_rtp_sender.cc b/content/renderer/media/webrtc/rtc_rtp_sender.cc |
| index 26b15b8e4f11c1ab773420ca842568afe27598d1..e35447ff0f8ba2f512b1064e6586e65d75f16f62 100644 |
| --- a/content/renderer/media/webrtc/rtc_rtp_sender.cc |
| +++ b/content/renderer/media/webrtc/rtc_rtp_sender.cc |
| @@ -15,8 +15,12 @@ inline bool operator==( |
| const std::unique_ptr<WebRtcMediaStreamTrackAdapterMap::AdapterRef>& |
| track_adapter, |
| const webrtc::MediaStreamTrackInterface* webrtc_track) { |
| - if (!track_adapter) |
| - return !webrtc_track; |
| + if (!track_adapter) { |
| + // TODO(hbos): See TODO in |OnRemoved|. Because we can't set a stopped |
| + // sender's track to null any |webrtc_track| could be correct. When this is |
| + // fixed this line should be: return !webrtc_track; |
| + return true; |
| + } |
| return track_adapter->webrtc_track() == webrtc_track; |
| } |
| @@ -30,8 +34,20 @@ uintptr_t RTCRtpSender::getId( |
| RTCRtpSender::RTCRtpSender( |
| scoped_refptr<webrtc::RtpSenderInterface> webrtc_rtp_sender, |
| std::unique_ptr<WebRtcMediaStreamTrackAdapterMap::AdapterRef> track_adapter) |
| + : RTCRtpSender( |
| + std::move(webrtc_rtp_sender), |
| + std::move(track_adapter), |
| + std::vector< |
| + std::unique_ptr<WebRtcMediaStreamAdapterMap::AdapterRef>>()) {} |
| + |
| +RTCRtpSender::RTCRtpSender( |
| + scoped_refptr<webrtc::RtpSenderInterface> webrtc_rtp_sender, |
| + std::unique_ptr<WebRtcMediaStreamTrackAdapterMap::AdapterRef> track_adapter, |
| + std::vector<std::unique_ptr<WebRtcMediaStreamAdapterMap::AdapterRef>> |
| + stream_adapters) |
| : webrtc_rtp_sender_(std::move(webrtc_rtp_sender)), |
| - track_adapter_(std::move(track_adapter)) { |
| + track_adapter_(std::move(track_adapter)), |
| + stream_adapters_(std::move(stream_adapters)) { |
| DCHECK(webrtc_rtp_sender_); |
| DCHECK(track_adapter_ == webrtc_rtp_sender_->track()); |
| } |
| @@ -47,6 +63,16 @@ const blink::WebMediaStreamTrack* RTCRtpSender::Track() const { |
| return track_adapter_ ? &track_adapter_->web_track() : nullptr; |
| } |
| +void RTCRtpSender::OnRemoved() { |
| + // TODO(hbos): We should do |webrtc_rtp_sender_->SetTrack(null)| but that is |
| + // not allowed on a stopped sender. |
|
Guido Urdaneta
2017/07/05 15:37:06
Include a webrtc bug reference.
hbos_chromium
2017/07/06 12:31:37
Done.
|
| + track_adapter_.reset(); |
| +} |
| + |
| +webrtc::RtpSenderInterface* RTCRtpSender::webrtc_rtp_sender() { |
| + return webrtc_rtp_sender_.get(); |
| +} |
| + |
| const webrtc::MediaStreamTrackInterface* RTCRtpSender::webrtc_track() const { |
| DCHECK(track_adapter_ == webrtc_rtp_sender_->track()); |
| return track_adapter_ ? track_adapter_->webrtc_track() : nullptr; |