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/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/strings/string_util.h" | 10 #include "base/strings/string_util.h" |
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
219 const GURL& url, | 219 const GURL& url, |
220 const base::Closure& error_cb, | 220 const base::Closure& error_cb, |
221 const VideoFrameProvider::RepaintCB& repaint_cb) { | 221 const VideoFrameProvider::RepaintCB& repaint_cb) { |
222 DCHECK(CalledOnValidThread()); | 222 DCHECK(CalledOnValidThread()); |
223 blink::WebMediaStream web_stream(GetMediaStream(url)); | 223 blink::WebMediaStream web_stream(GetMediaStream(url)); |
224 | 224 |
225 if (web_stream.isNull() || !web_stream.extraData()) | 225 if (web_stream.isNull() || !web_stream.extraData()) |
226 return NULL; // This is not a valid stream. | 226 return NULL; // This is not a valid stream. |
227 | 227 |
228 DVLOG(1) << "MediaStreamImpl::GetVideoFrameProvider stream:" | 228 DVLOG(1) << "MediaStreamImpl::GetVideoFrameProvider stream:" |
229 << UTF16ToUTF8(web_stream.id()); | 229 << base::UTF16ToUTF8(web_stream.id()); |
230 | 230 |
231 blink::WebVector<blink::WebMediaStreamTrack> video_tracks; | 231 blink::WebVector<blink::WebMediaStreamTrack> video_tracks; |
232 web_stream.videoTracks(video_tracks); | 232 web_stream.videoTracks(video_tracks); |
233 if (video_tracks.isEmpty()) | 233 if (video_tracks.isEmpty()) |
234 return NULL; | 234 return NULL; |
235 | 235 |
236 return new RTCVideoRenderer(video_tracks[0], error_cb, repaint_cb); | 236 return new RTCVideoRenderer(video_tracks[0], error_cb, repaint_cb); |
237 } | 237 } |
238 | 238 |
239 scoped_refptr<MediaStreamAudioRenderer> | 239 scoped_refptr<MediaStreamAudioRenderer> |
240 MediaStreamImpl::GetAudioRenderer(const GURL& url) { | 240 MediaStreamImpl::GetAudioRenderer(const GURL& url) { |
241 DCHECK(CalledOnValidThread()); | 241 DCHECK(CalledOnValidThread()); |
242 blink::WebMediaStream web_stream(GetMediaStream(url)); | 242 blink::WebMediaStream web_stream(GetMediaStream(url)); |
243 | 243 |
244 if (web_stream.isNull() || !web_stream.extraData()) | 244 if (web_stream.isNull() || !web_stream.extraData()) |
245 return NULL; // This is not a valid stream. | 245 return NULL; // This is not a valid stream. |
246 | 246 |
247 DVLOG(1) << "MediaStreamImpl::GetAudioRenderer stream:" | 247 DVLOG(1) << "MediaStreamImpl::GetAudioRenderer stream:" |
248 << UTF16ToUTF8(web_stream.id()); | 248 << base::UTF16ToUTF8(web_stream.id()); |
249 | 249 |
250 MediaStreamExtraData* extra_data = | 250 MediaStreamExtraData* extra_data = |
251 static_cast<MediaStreamExtraData*>(web_stream.extraData()); | 251 static_cast<MediaStreamExtraData*>(web_stream.extraData()); |
252 | 252 |
253 if (extra_data->is_local()) { | 253 if (extra_data->is_local()) { |
254 // Create the local audio renderer if the stream contains audio tracks. | 254 // Create the local audio renderer if the stream contains audio tracks. |
255 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks; | 255 blink::WebVector<blink::WebMediaStreamTrack> audio_tracks; |
256 web_stream.audioTracks(audio_tracks); | 256 web_stream.audioTracks(audio_tracks); |
257 if (audio_tracks.isEmpty()) | 257 if (audio_tracks.isEmpty()) |
258 return NULL; | 258 return NULL; |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
343 request_info->frame, | 343 request_info->frame, |
344 audio_source_vector); | 344 audio_source_vector); |
345 | 345 |
346 blink::WebVector<blink::WebMediaStreamSource> video_source_vector( | 346 blink::WebVector<blink::WebMediaStreamSource> video_source_vector( |
347 video_array.size()); | 347 video_array.size()); |
348 CreateWebKitSourceVector(label, video_array, | 348 CreateWebKitSourceVector(label, video_array, |
349 blink::WebMediaStreamSource::TypeVideo, | 349 blink::WebMediaStreamSource::TypeVideo, |
350 request_info->frame, | 350 request_info->frame, |
351 video_source_vector); | 351 video_source_vector); |
352 blink::WebUserMediaRequest* request = &(request_info->request); | 352 blink::WebUserMediaRequest* request = &(request_info->request); |
353 blink::WebString webkit_id = UTF8ToUTF16(label); | 353 blink::WebString webkit_id = base::UTF8ToUTF16(label); |
354 blink::WebMediaStream* web_stream = &(request_info->web_stream); | 354 blink::WebMediaStream* web_stream = &(request_info->web_stream); |
355 | 355 |
356 blink::WebVector<blink::WebMediaStreamTrack> audio_track_vector( | 356 blink::WebVector<blink::WebMediaStreamTrack> audio_track_vector( |
357 audio_array.size()); | 357 audio_array.size()); |
358 for (size_t i = 0; i < audio_track_vector.size(); ++i) { | 358 for (size_t i = 0; i < audio_track_vector.size(); ++i) { |
359 audio_track_vector[i].initialize(audio_source_vector[i]); | 359 audio_track_vector[i].initialize(audio_source_vector[i]); |
360 request_info->sources.push_back(audio_source_vector[i]); | 360 request_info->sources.push_back(audio_source_vector[i]); |
361 } | 361 } |
362 | 362 |
363 blink::WebVector<blink::WebMediaStreamTrack> video_track_vector( | 363 blink::WebVector<blink::WebMediaStreamTrack> video_track_vector( |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
455 for (size_t i = 0; i < devices.size(); ++i) { | 455 for (size_t i = 0; i < devices.size(); ++i) { |
456 const blink::WebMediaStreamSource* existing_source = | 456 const blink::WebMediaStreamSource* existing_source = |
457 FindLocalSource(devices[i]); | 457 FindLocalSource(devices[i]); |
458 if (existing_source) { | 458 if (existing_source) { |
459 webkit_sources[i] = *existing_source; | 459 webkit_sources[i] = *existing_source; |
460 DVLOG(1) << "Source already exist. Reusing source with id " | 460 DVLOG(1) << "Source already exist. Reusing source with id " |
461 << webkit_sources[i]. id().utf8(); | 461 << webkit_sources[i]. id().utf8(); |
462 continue; | 462 continue; |
463 } | 463 } |
464 webkit_sources[i].initialize( | 464 webkit_sources[i].initialize( |
465 UTF8ToUTF16(devices[i].device.id), | 465 base::UTF8ToUTF16(devices[i].device.id), |
466 type, | 466 type, |
467 UTF8ToUTF16(devices[i].device.name)); | 467 base::UTF8ToUTF16(devices[i].device.name)); |
468 MediaStreamSourceExtraData* source_extra_data( | 468 MediaStreamSourceExtraData* source_extra_data( |
469 new content::MediaStreamSourceExtraData( | 469 new content::MediaStreamSourceExtraData( |
470 devices[i], | 470 devices[i], |
471 base::Bind(&MediaStreamImpl::OnLocalSourceStop, AsWeakPtr()))); | 471 base::Bind(&MediaStreamImpl::OnLocalSourceStop, AsWeakPtr()))); |
472 // |source_extra_data| is owned by webkit_sources[i]. | 472 // |source_extra_data| is owned by webkit_sources[i]. |
473 webkit_sources[i].setExtraData(source_extra_data); | 473 webkit_sources[i].setExtraData(source_extra_data); |
474 local_sources_.push_back(LocalStreamSource(frame, webkit_sources[i])); | 474 local_sources_.push_back(LocalStreamSource(frame, webkit_sources[i])); |
475 } | 475 } |
476 } | 476 } |
477 | 477 |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
593 if ((*it)->request == request) | 593 if ((*it)->request == request) |
594 return (*it); | 594 return (*it); |
595 } | 595 } |
596 return NULL; | 596 return NULL; |
597 } | 597 } |
598 | 598 |
599 MediaStreamImpl::UserMediaRequestInfo* | 599 MediaStreamImpl::UserMediaRequestInfo* |
600 MediaStreamImpl::FindUserMediaRequestInfo(const std::string& label) { | 600 MediaStreamImpl::FindUserMediaRequestInfo(const std::string& label) { |
601 UserMediaRequests::iterator it = user_media_requests_.begin(); | 601 UserMediaRequests::iterator it = user_media_requests_.begin(); |
602 for (; it != user_media_requests_.end(); ++it) { | 602 for (; it != user_media_requests_.end(); ++it) { |
603 if ((*it)->generated && (*it)->web_stream.id() == UTF8ToUTF16(label)) | 603 if ((*it)->generated && (*it)->web_stream.id() == base::UTF8ToUTF16(label)) |
604 return (*it); | 604 return (*it); |
605 } | 605 } |
606 return NULL; | 606 return NULL; |
607 } | 607 } |
608 | 608 |
609 MediaStreamImpl::UserMediaRequestInfo* | 609 MediaStreamImpl::UserMediaRequestInfo* |
610 MediaStreamImpl::FindUserMediaRequestInfo( | 610 MediaStreamImpl::FindUserMediaRequestInfo( |
611 blink::WebMediaStream* web_stream) { | 611 blink::WebMediaStream* web_stream) { |
612 UserMediaRequests::iterator it = user_media_requests_.begin(); | 612 UserMediaRequests::iterator it = user_media_requests_.begin(); |
613 for (; it != user_media_requests_.end(); ++it) { | 613 for (; it != user_media_requests_.end(); ++it) { |
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
855 enable_automatic_output_device_selection( | 855 enable_automatic_output_device_selection( |
856 enable_automatic_output_device_selection), | 856 enable_automatic_output_device_selection), |
857 frame(frame), | 857 frame(frame), |
858 request(request) { | 858 request(request) { |
859 } | 859 } |
860 | 860 |
861 MediaStreamImpl::UserMediaRequestInfo::~UserMediaRequestInfo() { | 861 MediaStreamImpl::UserMediaRequestInfo::~UserMediaRequestInfo() { |
862 } | 862 } |
863 | 863 |
864 } // namespace content | 864 } // namespace content |
OLD | NEW |