Chromium Code Reviews| Index: content/renderer/media/webrtc/webrtc_media_stream_adapter.h |
| diff --git a/content/renderer/media/webrtc/webrtc_media_stream_adapter.h b/content/renderer/media/webrtc/webrtc_media_stream_adapter.h |
| index 7b7816e947a98af32630d6a0a891807f276bc1f7..bedd77fe8a47bf774185a8a5525b44788424d536 100644 |
| --- a/content/renderer/media/webrtc/webrtc_media_stream_adapter.h |
| +++ b/content/renderer/media/webrtc/webrtc_media_stream_adapter.h |
| @@ -5,21 +5,21 @@ |
| #ifndef CONTENT_RENDERER_MEDIA_WEBRTC_WEBRTC_MEDIA_STREAM_ADAPTER_H_ |
| #define CONTENT_RENDERER_MEDIA_WEBRTC_WEBRTC_MEDIA_STREAM_ADAPTER_H_ |
| +#include <map> |
| #include <memory> |
| -#include <vector> |
| +#include <string> |
| #include "base/macros.h" |
| #include "base/memory/ref_counted.h" |
| #include "content/common/content_export.h" |
| #include "content/renderer/media/media_stream.h" |
| +#include "content/renderer/media/webrtc/webrtc_media_stream_track_adapter_map.h" |
| #include "third_party/WebKit/public/platform/WebMediaStream.h" |
| #include "third_party/webrtc/api/mediastreaminterface.h" |
| namespace content { |
| class PeerConnectionDependencyFactory; |
| -class MediaStreamVideoWebRtcSink; |
| -class WebRtcAudioSink; |
| // WebRtcMediaStreamAdapter is an adapter between a blink::WebMediaStream |
| // object and a webrtc MediaStreams that is currently sent on a PeerConnection. |
| @@ -32,8 +32,10 @@ class WebRtcAudioSink; |
| class CONTENT_EXPORT WebRtcMediaStreamAdapter |
| : NON_EXPORTED_BASE(public MediaStreamObserver) { |
| public: |
| - WebRtcMediaStreamAdapter(const blink::WebMediaStream& web_stream, |
| - PeerConnectionDependencyFactory* factory); |
| + WebRtcMediaStreamAdapter( |
| + PeerConnectionDependencyFactory* factory, |
| + scoped_refptr<WebRtcMediaStreamTrackAdapterMap> track_adapter_map, |
| + const blink::WebMediaStream& web_stream); |
| ~WebRtcMediaStreamAdapter() override; |
| bool IsEqual(const blink::WebMediaStream& web_stream) const { |
| @@ -47,25 +49,26 @@ class CONTENT_EXPORT WebRtcMediaStreamAdapter |
| const blink::WebMediaStream& web_stream() const { return web_stream_; } |
| protected: |
| - // MediaStreamObserver implementation. |
| - void TrackAdded(const blink::WebMediaStreamTrack& track) override; |
| - void TrackRemoved(const blink::WebMediaStreamTrack& track) override; |
| + // MediaStreamObserver implementation. Also used as a helper functions when |
| + // adding/removing all tracks in the constructor/destructor. |
| + void TrackAdded(const blink::WebMediaStreamTrack& web_track) override; |
| + void TrackRemoved(const blink::WebMediaStreamTrack& web_track) override; |
| private: |
| - void AddAudioSinkToTrack(const blink::WebMediaStreamTrack& track); |
| - void AddVideoSinkToTrack(const blink::WebMediaStreamTrack& track); |
| - |
| - const blink::WebMediaStream web_stream_; |
| - |
| // Pointer to a PeerConnectionDependencyFactory, owned by the RenderThread. |
| // It's valid for the lifetime of RenderThread. |
| PeerConnectionDependencyFactory* const factory_; |
| + scoped_refptr<WebRtcMediaStreamTrackAdapterMap> track_adapter_map_; |
|
Guido Urdaneta
2017/06/08 13:54:35
document this field
hbos_chromium
2017/06/08 14:34:43
Done.
|
| + const blink::WebMediaStream web_stream_; |
| scoped_refptr<webrtc::MediaStreamInterface> webrtc_media_stream_; |
| - std::vector<std::unique_ptr<WebRtcAudioSink>> audio_sinks_; |
| - std::vector<std::unique_ptr<MediaStreamVideoWebRtcSink>> video_sinks_; |
| + // Retaining |AdapterRef|s of adapters in use protects them from being |
| + // disposed by the |track_adapter_map_|. |
| + std::map<std::string, |
|
Guido Urdaneta
2017/06/08 13:54:35
document what this map is. In particular, document
hbos_chromium
2017/06/08 14:34:43
Done.
|
| + std::unique_ptr<WebRtcMediaStreamTrackAdapterMap::AdapterRef>> |
| + adapter_refs_; |
| - DISALLOW_COPY_AND_ASSIGN (WebRtcMediaStreamAdapter); |
| + DISALLOW_COPY_AND_ASSIGN(WebRtcMediaStreamAdapter); |
| }; |
| } // namespace content |