OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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_adapter.h" | 5 #include "content/renderer/media/webrtc/webrtc_media_stream_adapter.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "content/renderer/media/media_stream_audio_source.h" | 8 #include "content/renderer/media/media_stream_audio_source.h" |
9 #include "content/renderer/media/media_stream_track.h" | 9 #include "content/renderer/media/media_stream_track.h" |
10 #include "content/renderer/media/webrtc/peer_connection_dependency_factory.h" | 10 #include "content/renderer/media/webrtc/peer_connection_dependency_factory.h" |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
57 webrtc_media_stream_->RemoveTrack( | 57 webrtc_media_stream_->RemoveTrack( |
58 webrtc_media_stream_->FindAudioTrack(track_id)); | 58 webrtc_media_stream_->FindAudioTrack(track_id)); |
59 } else { | 59 } else { |
60 DCHECK_EQ(track.source().type(), blink::WebMediaStreamSource::TypeVideo); | 60 DCHECK_EQ(track.source().type(), blink::WebMediaStreamSource::TypeVideo); |
61 scoped_refptr<webrtc::VideoTrackInterface> webrtc_track = | 61 scoped_refptr<webrtc::VideoTrackInterface> webrtc_track = |
62 webrtc_media_stream_->FindVideoTrack(track_id).get(); | 62 webrtc_media_stream_->FindVideoTrack(track_id).get(); |
63 webrtc_media_stream_->RemoveTrack(webrtc_track.get()); | 63 webrtc_media_stream_->RemoveTrack(webrtc_track.get()); |
64 | 64 |
65 for (ScopedVector<WebRtcVideoTrackAdapter>::iterator it = | 65 for (ScopedVector<WebRtcVideoTrackAdapter>::iterator it = |
66 video_adapters_.begin(); it != video_adapters_.end(); ++it) { | 66 video_adapters_.begin(); it != video_adapters_.end(); ++it) { |
67 if ((*it)->webrtc_video_track() == webrtc_track) { | 67 if ((*it)->webrtc_video_track() == webrtc_track.get()) { |
68 video_adapters_.erase(it); | 68 video_adapters_.erase(it); |
69 break; | 69 break; |
70 } | 70 } |
71 } | 71 } |
72 } | 72 } |
73 } | 73 } |
74 | 74 |
75 void WebRtcMediaStreamAdapter::CreateAudioTrack( | 75 void WebRtcMediaStreamAdapter::CreateAudioTrack( |
76 const blink::WebMediaStreamTrack& track) { | 76 const blink::WebMediaStreamTrack& track) { |
77 DCHECK_EQ(track.source().type(), blink::WebMediaStreamSource::TypeAudio); | 77 DCHECK_EQ(track.source().type(), blink::WebMediaStreamSource::TypeAudio); |
78 // A media stream is connected to a peer connection, enable the | 78 // A media stream is connected to a peer connection, enable the |
79 // peer connection mode for the sources. | 79 // peer connection mode for the sources. |
80 MediaStreamTrack* native_track = MediaStreamTrack::GetTrack(track); | 80 MediaStreamTrack* native_track = MediaStreamTrack::GetTrack(track); |
81 if (!native_track || !native_track->is_local_track()) { | 81 if (!native_track || !native_track->is_local_track()) { |
82 // We don't support connecting remote audio tracks to PeerConnection yet. | 82 // We don't support connecting remote audio tracks to PeerConnection yet. |
83 // See issue http://crbug/344303. | 83 // See issue http://crbug/344303. |
84 // TODO(xians): Remove this after we support connecting remote audio track | 84 // TODO(xians): Remove this after we support connecting remote audio track |
85 // to PeerConnection. | 85 // to PeerConnection. |
86 DLOG(ERROR) << "webrtc audio track can not be created from a remote audio" | 86 DLOG(ERROR) << "webrtc audio track can not be created from a remote audio" |
87 << " track."; | 87 << " track."; |
88 NOTIMPLEMENTED(); | 88 NOTIMPLEMENTED(); |
89 return; | 89 return; |
90 } | 90 } |
91 | 91 |
92 // This is a local audio track. | 92 // This is a local audio track. |
93 const blink::WebMediaStreamSource& source = track.source(); | 93 const blink::WebMediaStreamSource& source = track.source(); |
94 MediaStreamAudioSource* audio_source = | 94 MediaStreamAudioSource* audio_source = |
95 static_cast<MediaStreamAudioSource*>(source.extraData()); | 95 static_cast<MediaStreamAudioSource*>(source.extraData()); |
96 if (audio_source && audio_source->GetAudioCapturer()) | 96 if (audio_source && audio_source->GetAudioCapturer().get()) |
97 audio_source->GetAudioCapturer()->EnablePeerConnectionMode(); | 97 audio_source->GetAudioCapturer()->EnablePeerConnectionMode(); |
98 | 98 |
99 webrtc_media_stream_->AddTrack(native_track->GetAudioAdapter()); | 99 webrtc_media_stream_->AddTrack(native_track->GetAudioAdapter()); |
100 } | 100 } |
101 | 101 |
102 void WebRtcMediaStreamAdapter::CreateVideoTrack( | 102 void WebRtcMediaStreamAdapter::CreateVideoTrack( |
103 const blink::WebMediaStreamTrack& track) { | 103 const blink::WebMediaStreamTrack& track) { |
104 DCHECK_EQ(track.source().type(), blink::WebMediaStreamSource::TypeVideo); | 104 DCHECK_EQ(track.source().type(), blink::WebMediaStreamSource::TypeVideo); |
105 WebRtcVideoTrackAdapter* adapter = | 105 WebRtcVideoTrackAdapter* adapter = |
106 new WebRtcVideoTrackAdapter(track, factory_); | 106 new WebRtcVideoTrackAdapter(track, factory_); |
107 video_adapters_.push_back(adapter); | 107 video_adapters_.push_back(adapter); |
108 webrtc_media_stream_->AddTrack(adapter->webrtc_video_track()); | 108 webrtc_media_stream_->AddTrack(adapter->webrtc_video_track()); |
109 } | 109 } |
110 | 110 |
111 } // namespace content | 111 } // namespace content |
OLD | NEW |