OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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/remote_media_stream_impl.h" | 5 #include "content/renderer/media/remote_media_stream_impl.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <string> | 8 #include <string> |
9 #include <utility> | 9 #include <utility> |
10 #include <vector> | 10 #include <vector> |
11 | 11 |
12 #include "base/bind.h" | 12 #include "base/bind.h" |
13 #include "base/location.h" | 13 #include "base/location.h" |
14 #include "base/logging.h" | 14 #include "base/logging.h" |
15 #include "base/macros.h" | 15 #include "base/macros.h" |
16 #include "base/strings/utf_string_conversions.h" | 16 #include "base/strings/utf_string_conversions.h" |
17 #include "base/thread_task_runner_handle.h" | 17 #include "base/thread_task_runner_handle.h" |
18 #include "content/renderer/media/media_stream.h" | 18 #include "content/renderer/media/media_stream.h" |
19 #include "content/renderer/media/media_stream_track.h" | 19 #include "content/renderer/media/media_stream_track.h" |
20 #include "content/renderer/media/media_stream_video_track.h" | 20 #include "content/renderer/media/media_stream_video_track.h" |
21 #include "content/renderer/media/webrtc/media_stream_remote_audio_track.h" | |
22 #include "content/renderer/media/webrtc/media_stream_remote_video_source.h" | 21 #include "content/renderer/media/webrtc/media_stream_remote_video_source.h" |
23 #include "content/renderer/media/webrtc/peer_connection_dependency_factory.h" | 22 #include "content/renderer/media/webrtc/peer_connection_dependency_factory.h" |
| 23 #include "content/renderer/media/webrtc/peer_connection_remote_audio_source.h" |
24 #include "content/renderer/media/webrtc/track_observer.h" | 24 #include "content/renderer/media/webrtc/track_observer.h" |
25 #include "third_party/WebKit/public/platform/WebMediaStreamSource.h" | 25 #include "third_party/WebKit/public/platform/WebMediaStreamSource.h" |
26 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" | 26 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" |
27 #include "third_party/WebKit/public/platform/WebString.h" | 27 #include "third_party/WebKit/public/platform/WebString.h" |
28 | 28 |
29 namespace content { | 29 namespace content { |
30 namespace { | 30 namespace { |
31 | 31 |
32 template <typename WebRtcTrackVector, typename AdapterType> | 32 template <typename WebRtcTrackVector, typename AdapterType> |
33 void CreateAdaptersForTracks( | 33 void CreateAdaptersForTracks( |
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
231 #if DCHECK_IS_ON() | 231 #if DCHECK_IS_ON() |
232 DCHECK(!unregistered_); | 232 DCHECK(!unregistered_); |
233 unregistered_ = true; | 233 unregistered_ = true; |
234 #endif | 234 #endif |
235 observed_track()->UnregisterObserver(this); | 235 observed_track()->UnregisterObserver(this); |
236 } | 236 } |
237 | 237 |
238 void RemoteAudioTrackAdapter::InitializeWebkitAudioTrack() { | 238 void RemoteAudioTrackAdapter::InitializeWebkitAudioTrack() { |
239 InitializeWebkitTrack(blink::WebMediaStreamSource::TypeAudio); | 239 InitializeWebkitTrack(blink::WebMediaStreamSource::TypeAudio); |
240 | 240 |
241 webkit_track()->source().setExtraData( | 241 MediaStreamAudioSource* const source = |
242 new MediaStreamRemoteAudioSource(observed_track().get())); | 242 new PeerConnectionRemoteAudioSource(observed_track().get()); |
243 webkit_track()->setExtraData( | 243 webkit_track()->source().setExtraData(source); // Takes ownership. |
244 new MediaStreamRemoteAudioTrack( | 244 source->ConnectToTrack(*(webkit_track())); |
245 webkit_track()->source(), webkit_track()->isEnabled())); | |
246 } | 245 } |
247 | 246 |
248 void RemoteAudioTrackAdapter::OnChanged() { | 247 void RemoteAudioTrackAdapter::OnChanged() { |
249 main_thread_->PostTask(FROM_HERE, | 248 main_thread_->PostTask(FROM_HERE, |
250 base::Bind(&RemoteAudioTrackAdapter::OnChangedOnMainThread, | 249 base::Bind(&RemoteAudioTrackAdapter::OnChangedOnMainThread, |
251 this, observed_track()->state())); | 250 this, observed_track()->state())); |
252 } | 251 } |
253 | 252 |
254 void RemoteAudioTrackAdapter::OnChangedOnMainThread( | 253 void RemoteAudioTrackAdapter::OnChangedOnMainThread( |
255 webrtc::MediaStreamTrackInterface::TrackState state) { | 254 webrtc::MediaStreamTrackInterface::TrackState state) { |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
425 // Unregister all the audio track observers that were not used. | 424 // Unregister all the audio track observers that were not used. |
426 // We need to do this before destruction since the observers can't unregister | 425 // We need to do this before destruction since the observers can't unregister |
427 // from within the dtor due to a race. | 426 // from within the dtor due to a race. |
428 for (auto& track : *audio_tracks.get()) { | 427 for (auto& track : *audio_tracks.get()) { |
429 if (track.get()) | 428 if (track.get()) |
430 track->Unregister(); | 429 track->Unregister(); |
431 } | 430 } |
432 } | 431 } |
433 | 432 |
434 } // namespace content | 433 } // namespace content |
OLD | NEW |