Index: content/renderer/media/webrtc/rtc_rtp_receiver.h |
diff --git a/content/renderer/media/webrtc/rtc_rtp_receiver.h b/content/renderer/media/webrtc/rtc_rtp_receiver.h |
index 5990976f490336f7b9766b0330374790c08b4b61..7863676804e6692a71b6d811b07cbbe79e940631 100644 |
--- a/content/renderer/media/webrtc/rtc_rtp_receiver.h |
+++ b/content/renderer/media/webrtc/rtc_rtp_receiver.h |
@@ -8,6 +8,7 @@ |
#include "base/macros.h" |
#include "base/memory/ref_counted.h" |
#include "content/common/content_export.h" |
+#include "content/renderer/media/webrtc/webrtc_media_stream_track_adapter_map.h" |
#include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" |
#include "third_party/WebKit/public/platform/WebRTCRtpReceiver.h" |
#include "third_party/webrtc/api/rtpreceiverinterface.h" |
@@ -22,8 +23,10 @@ class CONTENT_EXPORT RTCRtpReceiver : public blink::WebRTCRtpReceiver { |
static uintptr_t getId( |
const webrtc::RtpReceiverInterface* webrtc_rtp_receiver); |
- RTCRtpReceiver(webrtc::RtpReceiverInterface* webrtc_rtp_receiver, |
- const blink::WebMediaStreamTrack& web_track); |
+ RTCRtpReceiver( |
+ scoped_refptr<webrtc::RtpReceiverInterface> webrtc_rtp_receiver, |
+ std::unique_ptr<WebRtcMediaStreamTrackAdapterMap::AdapterRef> |
+ track_adapter); |
~RTCRtpReceiver() override; |
uintptr_t Id() const override; |
@@ -35,7 +38,10 @@ class CONTENT_EXPORT RTCRtpReceiver : public blink::WebRTCRtpReceiver { |
private: |
const scoped_refptr<webrtc::RtpReceiverInterface> webrtc_rtp_receiver_; |
- const blink::WebMediaStreamTrack web_track_; |
+ // The track adapter is the glue between blink and webrtc layer tracks. |
+ // Keeping a reference to the adapter ensures it is not disposed, as is |
+ // required as long as the webrtc layer track is in use by the receiver. |
+ std::unique_ptr<WebRtcMediaStreamTrackAdapterMap::AdapterRef> track_adapter_; |
DISALLOW_COPY_AND_ASSIGN(RTCRtpReceiver); |
}; |