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

Side by Side Diff: content/renderer/media/media_stream_impl.cc

Issue 11339014: Move content\browser\renderer_host\media to content namespace. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 1 month 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 | Annotate | Revision Log
OLDNEW
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/media_stream_impl.h" 5 #include "content/renderer/media/media_stream_impl.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/string_number_conversions.h" 10 #include "base/string_number_conversions.h"
(...skipping 10 matching lines...) Expand all
21 #include "media/base/message_loop_factory.h" 21 #include "media/base/message_loop_factory.h"
22 #include "third_party/WebKit/Source/Platform/chromium/public/WebMediaConstraints .h" 22 #include "third_party/WebKit/Source/Platform/chromium/public/WebMediaConstraints .h"
23 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h" 23 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h"
24 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" 24 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
25 #include "third_party/WebKit/Source/WebKit/chromium/public/WebMediaStreamRegistr y.h" 25 #include "third_party/WebKit/Source/WebKit/chromium/public/WebMediaStreamRegistr y.h"
26 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityOrigin.h" 26 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityOrigin.h"
27 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebMediaStre amComponent.h" 27 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebMediaStre amComponent.h"
28 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebMediaStre amSource.h" 28 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebMediaStre amSource.h"
29 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebVector.h" 29 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebVector.h"
30 30
31 namespace content {
31 namespace { 32 namespace {
32 33
33 std::string GetMandatoryStreamConstraint( 34 std::string GetMandatoryStreamConstraint(
34 const WebKit::WebMediaConstraints& constraints, const std::string& key) { 35 const WebKit::WebMediaConstraints& constraints, const std::string& key) {
35 if (constraints.isNull()) 36 if (constraints.isNull())
36 return std::string(); 37 return std::string();
37 38
38 WebKit::WebString value; 39 WebKit::WebString value;
39 constraints.getMandatoryConstraintValue(UTF8ToUTF16(key), value); 40 constraints.getMandatoryConstraintValue(UTF8ToUTF16(key), value);
40 return UTF16ToUTF8(value); 41 return UTF16ToUTF8(value);
41 } 42 }
42 43
43 void UpdateOptionsIfTabMediaRequest( 44 void UpdateOptionsIfTabMediaRequest(
44 const WebKit::WebUserMediaRequest& user_media_request, 45 const WebKit::WebUserMediaRequest& user_media_request,
45 media_stream::StreamOptions* options) { 46 StreamOptions* options) {
46 if (options->audio_type != content::MEDIA_NO_SERVICE && 47 if (options->audio_type != content::MEDIA_NO_SERVICE &&
47 GetMandatoryStreamConstraint(user_media_request.audioConstraints(), 48 GetMandatoryStreamConstraint(user_media_request.audioConstraints(),
48 media_stream::kMediaStreamSource) == 49 kMediaStreamSource) ==
49 media_stream::kMediaStreamSourceTab) { 50 kMediaStreamSourceTab) {
50 options->audio_type = content::MEDIA_TAB_AUDIO_CAPTURE; 51 options->audio_type = content::MEDIA_TAB_AUDIO_CAPTURE;
51 options->audio_device_id = GetMandatoryStreamConstraint( 52 options->audio_device_id = GetMandatoryStreamConstraint(
52 user_media_request.audioConstraints(), 53 user_media_request.audioConstraints(),
53 media_stream::kMediaStreamSourceId); 54 kMediaStreamSourceId);
54 } 55 }
55 56
56 if (options->video_type != content::MEDIA_NO_SERVICE && 57 if (options->video_type != content::MEDIA_NO_SERVICE &&
57 GetMandatoryStreamConstraint(user_media_request.videoConstraints(), 58 GetMandatoryStreamConstraint(user_media_request.videoConstraints(),
58 media_stream::kMediaStreamSource) == 59 kMediaStreamSource) ==
59 media_stream::kMediaStreamSourceTab) { 60 kMediaStreamSourceTab) {
60 options->video_type = content::MEDIA_TAB_VIDEO_CAPTURE; 61 options->video_type = content::MEDIA_TAB_VIDEO_CAPTURE;
61 options->video_device_id = GetMandatoryStreamConstraint( 62 options->video_device_id = GetMandatoryStreamConstraint(
62 user_media_request.videoConstraints(), 63 user_media_request.videoConstraints(),
63 media_stream::kMediaStreamSourceId); 64 kMediaStreamSourceId);
64 } 65 }
65 } 66 }
66 67
67 static int g_next_request_id = 0; 68 static int g_next_request_id = 0;
68 69
69 // Creates a WebKit representation of a stream sources based on 70 // Creates a WebKit representation of a stream sources based on
70 // |devices| from the MediaStreamDispatcher. 71 // |devices| from the MediaStreamDispatcher.
71 void CreateWebKitSourceVector( 72 void CreateWebKitSourceVector(
72 const std::string& label, 73 const std::string& label,
73 const media_stream::StreamDeviceInfoArray& devices, 74 const StreamDeviceInfoArray& devices,
74 WebKit::WebMediaStreamSource::Type type, 75 WebKit::WebMediaStreamSource::Type type,
75 WebKit::WebVector<WebKit::WebMediaStreamSource>& webkit_sources) { 76 WebKit::WebVector<WebKit::WebMediaStreamSource>& webkit_sources) {
76 CHECK_EQ(devices.size(), webkit_sources.size()); 77 CHECK_EQ(devices.size(), webkit_sources.size());
77 for (size_t i = 0; i < devices.size(); ++i) { 78 for (size_t i = 0; i < devices.size(); ++i) {
78 std::string source_id = StringPrintf("%s%d%u", label.c_str(), type, 79 std::string source_id = StringPrintf("%s%d%u", label.c_str(), type,
79 static_cast<unsigned int>(i)); 80 static_cast<unsigned int>(i));
80 webkit_sources[i].initialize( 81 webkit_sources[i].initialize(
81 UTF8ToUTF16(source_id), 82 UTF8ToUTF16(source_id),
82 type, 83 type,
83 UTF8ToUTF16(devices[i].name)); 84 UTF8ToUTF16(devices[i].name));
84 webkit_sources[i].setExtraData( 85 webkit_sources[i].setExtraData(
85 new content::MediaStreamSourceExtraData(devices[i])); 86 new content::MediaStreamSourceExtraData(devices[i]));
86 } 87 }
87 } 88 }
88 89
89 webrtc::MediaStreamInterface* GetNativeMediaStream( 90 webrtc::MediaStreamInterface* GetNativeMediaStream(
90 const WebKit::WebMediaStreamDescriptor& descriptor) { 91 const WebKit::WebMediaStreamDescriptor& descriptor) {
91 content::MediaStreamExtraData* extra_data = 92 content::MediaStreamExtraData* extra_data =
92 static_cast<content::MediaStreamExtraData*>(descriptor.extraData()); 93 static_cast<content::MediaStreamExtraData*>(descriptor.extraData());
93 if (!extra_data) 94 if (!extra_data)
94 return NULL; 95 return NULL;
95 webrtc::MediaStreamInterface* stream = extra_data->local_stream(); 96 webrtc::MediaStreamInterface* stream = extra_data->local_stream();
96 if (!stream) 97 if (!stream)
97 stream = extra_data->remote_stream(); 98 stream = extra_data->remote_stream();
98 return stream; 99 return stream;
99 } 100 }
100 101
101 } // namespace 102 } // namespace
102 103
103 namespace content {
104
105 MediaStreamImpl::MediaStreamImpl( 104 MediaStreamImpl::MediaStreamImpl(
106 RenderView* render_view, 105 RenderView* render_view,
107 MediaStreamDispatcher* media_stream_dispatcher, 106 MediaStreamDispatcher* media_stream_dispatcher,
108 VideoCaptureImplManager* vc_manager, 107 VideoCaptureImplManager* vc_manager,
109 MediaStreamDependencyFactory* dependency_factory) 108 MediaStreamDependencyFactory* dependency_factory)
110 : RenderViewObserver(render_view), 109 : RenderViewObserver(render_view),
111 dependency_factory_(dependency_factory), 110 dependency_factory_(dependency_factory),
112 media_stream_dispatcher_(media_stream_dispatcher), 111 media_stream_dispatcher_(media_stream_dispatcher),
113 vc_manager_(vc_manager) { 112 vc_manager_(vc_manager) {
114 } 113 }
(...skipping 15 matching lines...) Expand all
130 void MediaStreamImpl::requestUserMedia( 129 void MediaStreamImpl::requestUserMedia(
131 const WebKit::WebUserMediaRequest& user_media_request, 130 const WebKit::WebUserMediaRequest& user_media_request,
132 const WebKit::WebVector<WebKit::WebMediaStreamSource>& audio_sources, 131 const WebKit::WebVector<WebKit::WebMediaStreamSource>& audio_sources,
133 const WebKit::WebVector<WebKit::WebMediaStreamSource>& video_sources) { 132 const WebKit::WebVector<WebKit::WebMediaStreamSource>& video_sources) {
134 // Save histogram data so we can see how much GetUserMedia is used. 133 // Save histogram data so we can see how much GetUserMedia is used.
135 // The histogram counts the number of calls to the JS API 134 // The histogram counts the number of calls to the JS API
136 // webGetUserMedia. 135 // webGetUserMedia.
137 UpdateWebRTCMethodCount(WEBKIT_GET_USER_MEDIA); 136 UpdateWebRTCMethodCount(WEBKIT_GET_USER_MEDIA);
138 DCHECK(CalledOnValidThread()); 137 DCHECK(CalledOnValidThread());
139 int request_id = g_next_request_id++; 138 int request_id = g_next_request_id++;
140 media_stream::StreamOptions options(MEDIA_NO_SERVICE, MEDIA_NO_SERVICE); 139 StreamOptions options(MEDIA_NO_SERVICE, MEDIA_NO_SERVICE);
141 WebKit::WebFrame* frame = NULL; 140 WebKit::WebFrame* frame = NULL;
142 GURL security_origin; 141 GURL security_origin;
143 142
144 // |user_media_request| can't be mocked. So in order to test at all we check 143 // |user_media_request| can't be mocked. So in order to test at all we check
145 // if it isNull. 144 // if it isNull.
146 if (user_media_request.isNull()) { 145 if (user_media_request.isNull()) {
147 // We are in a test. 146 // We are in a test.
148 if (audio_sources.size() > 0) 147 if (audio_sources.size() > 0)
149 options.audio_type = MEDIA_DEVICE_AUDIO_CAPTURE; 148 options.audio_type = MEDIA_DEVICE_AUDIO_CAPTURE;
150 if (video_sources.size() > 0) 149 if (video_sources.size() > 0)
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 return CreateVideoDecoder(stream, message_loop_factory); 252 return CreateVideoDecoder(stream, message_loop_factory);
254 NOTREACHED(); 253 NOTREACHED();
255 return NULL; 254 return NULL;
256 } 255 }
257 256
258 // Callback from MediaStreamDispatcher. 257 // Callback from MediaStreamDispatcher.
259 // The requested stream have been generated by the MediaStreamDispatcher. 258 // The requested stream have been generated by the MediaStreamDispatcher.
260 void MediaStreamImpl::OnStreamGenerated( 259 void MediaStreamImpl::OnStreamGenerated(
261 int request_id, 260 int request_id,
262 const std::string& label, 261 const std::string& label,
263 const media_stream::StreamDeviceInfoArray& audio_array, 262 const StreamDeviceInfoArray& audio_array,
264 const media_stream::StreamDeviceInfoArray& video_array) { 263 const StreamDeviceInfoArray& video_array) {
265 DCHECK(CalledOnValidThread()); 264 DCHECK(CalledOnValidThread());
266 265
267 UserMediaRequestInfo* request_info = FindUserMediaRequestInfo(request_id); 266 UserMediaRequestInfo* request_info = FindUserMediaRequestInfo(request_id);
268 if (!request_info) { 267 if (!request_info) {
269 // This can happen if the request is canceled or the frame reloads while 268 // This can happen if the request is canceled or the frame reloads while
270 // MediaStreamDispatcher is processing the request. 269 // MediaStreamDispatcher is processing the request.
271 // We need to tell the dispatcher to stop the stream. 270 // We need to tell the dispatcher to stop the stream.
272 media_stream_dispatcher_->StopStream(label); 271 media_stream_dispatcher_->StopStream(label);
273 DVLOG(1) << "Request ID not found"; 272 DVLOG(1) << "Request ID not found";
274 return; 273 return;
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 } 344 }
346 CompleteGetUserMediaRequest(request_info->descriptor, &request_info->request, 345 CompleteGetUserMediaRequest(request_info->descriptor, &request_info->request,
347 request_succeeded); 346 request_succeeded);
348 if (!request_succeeded) { 347 if (!request_succeeded) {
349 OnLocalMediaStreamStop(UTF16ToUTF8(description->label())); 348 OnLocalMediaStreamStop(UTF16ToUTF8(description->label()));
350 } 349 }
351 } 350 }
352 351
353 void MediaStreamImpl::OnDevicesEnumerated( 352 void MediaStreamImpl::OnDevicesEnumerated(
354 int request_id, 353 int request_id,
355 const media_stream::StreamDeviceInfoArray& device_array) { 354 const StreamDeviceInfoArray& device_array) {
356 DVLOG(1) << "MediaStreamImpl::OnDevicesEnumerated(" 355 DVLOG(1) << "MediaStreamImpl::OnDevicesEnumerated("
357 << request_id << ")"; 356 << request_id << ")";
358 NOTIMPLEMENTED(); 357 NOTIMPLEMENTED();
359 } 358 }
360 359
361 void MediaStreamImpl::OnDevicesEnumerationFailed(int request_id) { 360 void MediaStreamImpl::OnDevicesEnumerationFailed(int request_id) {
362 DVLOG(1) << "MediaStreamImpl::OnDevicesEnumerationFailed(" 361 DVLOG(1) << "MediaStreamImpl::OnDevicesEnumerationFailed("
363 << request_id << ")"; 362 << request_id << ")";
364 NOTIMPLEMENTED(); 363 NOTIMPLEMENTED();
365 } 364 }
366 365
367 void MediaStreamImpl::OnDeviceOpened( 366 void MediaStreamImpl::OnDeviceOpened(
368 int request_id, 367 int request_id,
369 const std::string& label, 368 const std::string& label,
370 const media_stream::StreamDeviceInfo& video_device) { 369 const StreamDeviceInfo& video_device) {
371 DVLOG(1) << "MediaStreamImpl::OnDeviceOpened(" 370 DVLOG(1) << "MediaStreamImpl::OnDeviceOpened("
372 << request_id << ", " << label << ")"; 371 << request_id << ", " << label << ")";
373 NOTIMPLEMENTED(); 372 NOTIMPLEMENTED();
374 } 373 }
375 374
376 void MediaStreamImpl::OnDeviceOpenFailed(int request_id) { 375 void MediaStreamImpl::OnDeviceOpenFailed(int request_id) {
377 DVLOG(1) << "MediaStreamImpl::VideoDeviceOpenFailed(" 376 DVLOG(1) << "MediaStreamImpl::VideoDeviceOpenFailed("
378 << request_id << ")"; 377 << request_id << ")";
379 NOTIMPLEMENTED(); 378 NOTIMPLEMENTED();
380 } 379 }
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
495 DVLOG(1) << "MediaStreamImpl::CreateRemoteVideoDecoder label:" 494 DVLOG(1) << "MediaStreamImpl::CreateRemoteVideoDecoder label:"
496 << stream->label(); 495 << stream->label();
497 496
498 return new RTCVideoDecoder( 497 return new RTCVideoDecoder(
499 message_loop_factory->GetMessageLoop(media::MessageLoopFactory::kDecoder), 498 message_loop_factory->GetMessageLoop(media::MessageLoopFactory::kDecoder),
500 base::MessageLoopProxy::current(), 499 base::MessageLoopProxy::current(),
501 stream->video_tracks()->at(0)); 500 stream->video_tracks()->at(0));
502 } 501 }
503 502
504 MediaStreamSourceExtraData::MediaStreamSourceExtraData( 503 MediaStreamSourceExtraData::MediaStreamSourceExtraData(
505 const media_stream::StreamDeviceInfo& device_info) 504 const StreamDeviceInfo& device_info)
506 : device_info_(device_info) { 505 : device_info_(device_info) {
507 } 506 }
508 507
509 MediaStreamSourceExtraData::~MediaStreamSourceExtraData() {} 508 MediaStreamSourceExtraData::~MediaStreamSourceExtraData() {}
510 509
511 MediaStreamExtraData::MediaStreamExtraData( 510 MediaStreamExtraData::MediaStreamExtraData(
512 webrtc::MediaStreamInterface* remote_stream) 511 webrtc::MediaStreamInterface* remote_stream)
513 : remote_stream_(remote_stream) { 512 : remote_stream_(remote_stream) {
514 } 513 }
515 514
516 MediaStreamExtraData::MediaStreamExtraData( 515 MediaStreamExtraData::MediaStreamExtraData(
517 webrtc::LocalMediaStreamInterface* local_stream) 516 webrtc::LocalMediaStreamInterface* local_stream)
518 : local_stream_(local_stream) { 517 : local_stream_(local_stream) {
519 } 518 }
520 519
521 MediaStreamExtraData::~MediaStreamExtraData() { 520 MediaStreamExtraData::~MediaStreamExtraData() {
522 } 521 }
523 522
524 void MediaStreamExtraData::SetLocalStreamStopCallback( 523 void MediaStreamExtraData::SetLocalStreamStopCallback(
525 const StreamStopCallback& stop_callback) { 524 const StreamStopCallback& stop_callback) {
526 stream_stop_callback_ = stop_callback; 525 stream_stop_callback_ = stop_callback;
527 } 526 }
528 527
529 void MediaStreamExtraData::OnLocalStreamStop() { 528 void MediaStreamExtraData::OnLocalStreamStop() {
530 if (!stream_stop_callback_.is_null()) 529 if (!stream_stop_callback_.is_null())
531 stream_stop_callback_.Run(local_stream_->label()); 530 stream_stop_callback_.Run(local_stream_->label());
532 } 531 }
533 532
534 } // namespace content 533 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698