Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(218)

Side by Side Diff: content/renderer/media/webrtc/webrtc_media_stream_track_adapter_map.cc

Issue 2902733003: RemoteMediaStreamImpl using WebRtcMediaStreamTrackMap. (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2017 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/media/webrtc/webrtc_media_stream_track_adapter_map.h" 5 #include "content/renderer/media/webrtc/webrtc_media_stream_track_adapter_map.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "content/renderer/media/webrtc/peer_connection_dependency_factory.h" 9 #include "content/renderer/media/webrtc/peer_connection_dependency_factory.h"
10 10
(...skipping 29 matching lines...) Expand all
40 if (entry()->adapter->HasOneRef()) { 40 if (entry()->adapter->HasOneRef()) {
41 entry()->adapter->Dispose(); 41 entry()->adapter->Dispose();
42 if (type_ == Type::kLocal) 42 if (type_ == Type::kLocal)
43 map_->local_track_adapters_.erase(it_); 43 map_->local_track_adapters_.erase(it_);
44 else 44 else
45 map_->remote_track_adapters_.erase(it_); 45 map_->remote_track_adapters_.erase(it_);
46 } 46 }
47 } 47 }
48 48
49 WebRtcMediaStreamTrackAdapterMap::WebRtcMediaStreamTrackAdapterMap( 49 WebRtcMediaStreamTrackAdapterMap::WebRtcMediaStreamTrackAdapterMap(
50 PeerConnectionDependencyFactory* const factory, 50 PeerConnectionDependencyFactory* const factory)
51 const scoped_refptr<base::SingleThreadTaskRunner>& main_thread) 51 : factory_(factory), main_thread_(base::ThreadTaskRunnerHandle::Get()) {
Guido Urdaneta 2017/06/12 14:25:29 How do you know this is the main thread? Shouldn't
hbos_chromium 2017/06/12 15:05:21 It has to be the main thread since it is used by W
Guido Urdaneta 2017/06/12 15:18:35 It's fine this way then. Just add a comment saying
52 : factory_(factory), main_thread_(main_thread) {
53 DCHECK(factory_); 52 DCHECK(factory_);
54 DCHECK(main_thread_); 53 DCHECK(main_thread_);
55 } 54 }
56 55
57 WebRtcMediaStreamTrackAdapterMap::~WebRtcMediaStreamTrackAdapterMap() { 56 WebRtcMediaStreamTrackAdapterMap::~WebRtcMediaStreamTrackAdapterMap() {
58 DCHECK(local_track_adapters_.empty()); 57 DCHECK(local_track_adapters_.empty());
59 DCHECK(remote_track_adapters_.empty()); 58 DCHECK(remote_track_adapters_.empty());
60 } 59 }
61 60
62 std::unique_ptr<WebRtcMediaStreamTrackAdapterMap::AdapterRef> 61 std::unique_ptr<WebRtcMediaStreamTrackAdapterMap::AdapterRef>
(...skipping 20 matching lines...) Expand all
83 82
84 std::unique_ptr<WebRtcMediaStreamTrackAdapterMap::AdapterRef> 83 std::unique_ptr<WebRtcMediaStreamTrackAdapterMap::AdapterRef>
85 WebRtcMediaStreamTrackAdapterMap::GetRemoteTrackAdapter(const std::string& id) { 84 WebRtcMediaStreamTrackAdapterMap::GetRemoteTrackAdapter(const std::string& id) {
86 return GetTrackAdapter(AdapterRef::Type::kRemote, id); 85 return GetTrackAdapter(AdapterRef::Type::kRemote, id);
87 } 86 }
88 87
89 std::unique_ptr<WebRtcMediaStreamTrackAdapterMap::AdapterRef> 88 std::unique_ptr<WebRtcMediaStreamTrackAdapterMap::AdapterRef>
90 WebRtcMediaStreamTrackAdapterMap::GetOrCreateRemoteTrackAdapter( 89 WebRtcMediaStreamTrackAdapterMap::GetOrCreateRemoteTrackAdapter(
91 webrtc::MediaStreamTrackInterface* webrtc_track) { 90 webrtc::MediaStreamTrackInterface* webrtc_track) {
92 DCHECK(webrtc_track); 91 DCHECK(webrtc_track);
93 DCHECK(factory_->GetWebRtcSignalingThread()->BelongsToCurrentThread()); 92 DCHECK(!main_thread_->BelongsToCurrentThread());
94 return GetOrCreateTrackAdapter( 93 return GetOrCreateTrackAdapter(
Guido Urdaneta 2017/06/12 14:25:29 What happens if there are concurrent calls to this
hbos_chromium 2017/06/12 15:05:21 This is thread safe thanks to use of lock_.
hbos_chromium 2017/06/12 15:07:51 But the WebRtcMediaStreamTrackAdapter needs this t
Guido Urdaneta 2017/06/12 15:18:35 Acknowledged.
95 AdapterRef::Type::kRemote, 94 AdapterRef::Type::kRemote,
96 base::Bind(&WebRtcMediaStreamTrackAdapter::CreateRemoteTrackAdapter, 95 base::Bind(&WebRtcMediaStreamTrackAdapter::CreateRemoteTrackAdapter,
97 factory_, main_thread_, webrtc_track), 96 factory_, main_thread_, webrtc_track),
98 webrtc_track->id()); 97 webrtc_track->id());
99 } 98 }
100 99
101 size_t WebRtcMediaStreamTrackAdapterMap::GetRemoteTrackCount() const { 100 size_t WebRtcMediaStreamTrackAdapterMap::GetRemoteTrackCount() const {
102 base::AutoLock scoped_lock(lock_); 101 base::AutoLock scoped_lock(lock_);
103 return remote_track_adapters_.size(); 102 return remote_track_adapters_.size();
104 } 103 }
(...skipping 26 matching lines...) Expand all
131 if (it == track_adapters->end()) { 130 if (it == track_adapters->end()) {
132 scoped_refptr<WebRtcMediaStreamTrackAdapter> adapter = 131 scoped_refptr<WebRtcMediaStreamTrackAdapter> adapter =
133 create_adapter_callback.Run(); 132 create_adapter_callback.Run();
134 it = 133 it =
135 track_adapters->insert(std::make_pair(id, AdapterEntry(adapter))).first; 134 track_adapters->insert(std::make_pair(id, AdapterEntry(adapter))).first;
136 } 135 }
137 return base::WrapUnique(new AdapterRef(this, type, it)); 136 return base::WrapUnique(new AdapterRef(this, type, it));
138 } 137 }
139 138
140 } // namespace content 139 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698