| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/user_media_client_impl.h" | 5 #include "content/renderer/media/user_media_client_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <utility> | 9 #include <utility> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 580 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 591 << ", name = " << webkit_source->name().utf8(); | 591 << ", name = " << webkit_source->name().utf8(); |
| 592 | 592 |
| 593 if (type == blink::WebMediaStreamSource::TypeVideo) { | 593 if (type == blink::WebMediaStreamSource::TypeVideo) { |
| 594 webkit_source->setExtraData( | 594 webkit_source->setExtraData( |
| 595 CreateVideoSource( | 595 CreateVideoSource( |
| 596 device, | 596 device, |
| 597 base::Bind(&UserMediaClientImpl::OnLocalSourceStopped, | 597 base::Bind(&UserMediaClientImpl::OnLocalSourceStopped, |
| 598 weak_factory_.GetWeakPtr()))); | 598 weak_factory_.GetWeakPtr()))); |
| 599 } else { | 599 } else { |
| 600 DCHECK_EQ(blink::WebMediaStreamSource::TypeAudio, type); | 600 DCHECK_EQ(blink::WebMediaStreamSource::TypeAudio, type); |
| 601 MediaStreamAudioSource* audio_source( | 601 MediaStreamAudioSource* audio_source; |
| 602 new MediaStreamAudioSource( | 602 // When no RenderFrame was provided, create a "null" |
| 603 RenderFrameObserver::routing_id(), | 603 // MediaStreamAudioSource. This should only happen for non-browser unit |
| 604 device, | 604 // tests (e.g., user_media_client_impl_unittest.cc). |
| 605 base::Bind(&UserMediaClientImpl::OnLocalSourceStopped, | 605 if (RenderFrameObserver::render_frame()) { |
| 606 weak_factory_.GetWeakPtr()), | 606 audio_source = |
| 607 dependency_factory_)); | 607 new MediaStreamAudioSource(RenderFrameObserver::routing_id(), device); |
| 608 webkit_source->setExtraData(audio_source); | 608 } else { |
| 609 audio_source = new MediaStreamAudioSource(); |
| 610 audio_source->SetDeviceInfo(device); |
| 611 } |
| 612 audio_source->SetStopCallback( |
| 613 base::Bind(&UserMediaClientImpl::OnLocalSourceStopped, |
| 614 weak_factory_.GetWeakPtr())); |
| 615 audio_source->set_dependency_factory(dependency_factory_); |
| 616 webkit_source->setExtraData(audio_source); // Takes ownership. |
| 609 } | 617 } |
| 610 local_sources_.push_back(*webkit_source); | 618 local_sources_.push_back(*webkit_source); |
| 611 } | 619 } |
| 612 | 620 |
| 613 MediaStreamVideoSource* UserMediaClientImpl::CreateVideoSource( | 621 MediaStreamVideoSource* UserMediaClientImpl::CreateVideoSource( |
| 614 const StreamDeviceInfo& device, | 622 const StreamDeviceInfo& device, |
| 615 const MediaStreamSource::SourceStoppedCallback& stop_callback) { | 623 const MediaStreamSource::SourceStoppedCallback& stop_callback) { |
| 616 content::MediaStreamVideoCapturerSource* ret = | 624 content::MediaStreamVideoCapturerSource* ret = |
| 617 new content::MediaStreamVideoCapturerSource(stop_callback, device); | 625 new content::MediaStreamVideoCapturerSource(stop_callback, device); |
| 618 return ret; | 626 return ret; |
| (...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1048 void UserMediaClientImpl::UserMediaRequestInfo::StartAudioTrack( | 1056 void UserMediaClientImpl::UserMediaRequestInfo::StartAudioTrack( |
| 1049 const blink::WebMediaStreamTrack& track, | 1057 const blink::WebMediaStreamTrack& track, |
| 1050 const blink::WebMediaConstraints& constraints) { | 1058 const blink::WebMediaConstraints& constraints) { |
| 1051 DCHECK(track.source().type() == blink::WebMediaStreamSource::TypeAudio); | 1059 DCHECK(track.source().type() == blink::WebMediaStreamSource::TypeAudio); |
| 1052 MediaStreamAudioSource* native_source = | 1060 MediaStreamAudioSource* native_source = |
| 1053 static_cast <MediaStreamAudioSource*>(track.source().extraData()); | 1061 static_cast <MediaStreamAudioSource*>(track.source().extraData()); |
| 1054 DCHECK(native_source); | 1062 DCHECK(native_source); |
| 1055 | 1063 |
| 1056 sources_.push_back(track.source()); | 1064 sources_.push_back(track.source()); |
| 1057 sources_waiting_for_callback_.push_back(native_source); | 1065 sources_waiting_for_callback_.push_back(native_source); |
| 1058 native_source->AddTrack( | 1066 if (native_source->ConnectToTrack(track, constraints)) |
| 1059 track, constraints, base::Bind( | 1067 OnTrackStarted(native_source, MEDIA_DEVICE_OK, ""); |
| 1060 &UserMediaClientImpl::UserMediaRequestInfo::OnTrackStarted, | 1068 else |
| 1061 AsWeakPtr())); | 1069 OnTrackStarted(native_source, MEDIA_DEVICE_TRACK_START_FAILURE, ""); |
| 1062 } | 1070 } |
| 1063 | 1071 |
| 1064 blink::WebMediaStreamTrack | 1072 blink::WebMediaStreamTrack |
| 1065 UserMediaClientImpl::UserMediaRequestInfo::CreateAndStartVideoTrack( | 1073 UserMediaClientImpl::UserMediaRequestInfo::CreateAndStartVideoTrack( |
| 1066 const blink::WebMediaStreamSource& source, | 1074 const blink::WebMediaStreamSource& source, |
| 1067 const blink::WebMediaConstraints& constraints) { | 1075 const blink::WebMediaConstraints& constraints) { |
| 1068 DCHECK(source.type() == blink::WebMediaStreamSource::TypeVideo); | 1076 DCHECK(source.type() == blink::WebMediaStreamSource::TypeVideo); |
| 1069 MediaStreamVideoSource* native_source = | 1077 MediaStreamVideoSource* native_source = |
| 1070 MediaStreamVideoSource::GetVideoSource(source); | 1078 MediaStreamVideoSource::GetVideoSource(source); |
| 1071 DCHECK(native_source); | 1079 DCHECK(native_source); |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1133 return; | 1141 return; |
| 1134 } | 1142 } |
| 1135 } | 1143 } |
| 1136 } | 1144 } |
| 1137 | 1145 |
| 1138 bool UserMediaClientImpl::UserMediaRequestInfo::HasPendingSources() const { | 1146 bool UserMediaClientImpl::UserMediaRequestInfo::HasPendingSources() const { |
| 1139 return !sources_waiting_for_callback_.empty(); | 1147 return !sources_waiting_for_callback_.empty(); |
| 1140 } | 1148 } |
| 1141 | 1149 |
| 1142 } // namespace content | 1150 } // namespace content |
| OLD | NEW |