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 460 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
471 UserMediaRequestInfo* request) { | 471 UserMediaRequestInfo* request) { |
472 DCHECK_EQ(devices.size(), webkit_tracks->size()); | 472 DCHECK_EQ(devices.size(), webkit_tracks->size()); |
473 | 473 |
474 for (size_t i = 0; i < devices.size(); ++i) { | 474 for (size_t i = 0; i < devices.size(); ++i) { |
475 blink::WebMediaStreamSource webkit_source; | 475 blink::WebMediaStreamSource webkit_source; |
476 InitializeSourceObject(devices[i], | 476 InitializeSourceObject(devices[i], |
477 blink::WebMediaStreamSource::TypeVideo, | 477 blink::WebMediaStreamSource::TypeVideo, |
478 constraints, | 478 constraints, |
479 request->frame, | 479 request->frame, |
480 &webkit_source); | 480 &webkit_source); |
481 (*webkit_tracks)[i].initialize(webkit_source); | 481 (*webkit_tracks)[i] = |
482 (*webkit_tracks)[i].setExtraData(new MediaStreamVideoTrack( | 482 request->CreateAndStartVideoTrack(webkit_source, constraints, |
483 dependency_factory_)); | 483 dependency_factory_); |
484 request->StartTrack((*webkit_tracks)[i], constraints); | |
485 } | 484 } |
486 } | 485 } |
487 | 486 |
488 void MediaStreamImpl::CreateAudioTracks( | 487 void MediaStreamImpl::CreateAudioTracks( |
489 const StreamDeviceInfoArray& devices, | 488 const StreamDeviceInfoArray& devices, |
490 const blink::WebMediaConstraints& constraints, | 489 const blink::WebMediaConstraints& constraints, |
491 blink::WebVector<blink::WebMediaStreamTrack>* webkit_tracks, | 490 blink::WebVector<blink::WebMediaStreamTrack>* webkit_tracks, |
492 UserMediaRequestInfo* request) { | 491 UserMediaRequestInfo* request) { |
493 DCHECK_EQ(devices.size(), webkit_tracks->size()); | 492 DCHECK_EQ(devices.size(), webkit_tracks->size()); |
494 | 493 |
(...skipping 20 matching lines...) Expand all Loading... |
515 } | 514 } |
516 | 515 |
517 for (size_t i = 0; i < overridden_audio_array.size(); ++i) { | 516 for (size_t i = 0; i < overridden_audio_array.size(); ++i) { |
518 blink::WebMediaStreamSource webkit_source; | 517 blink::WebMediaStreamSource webkit_source; |
519 InitializeSourceObject(overridden_audio_array[i], | 518 InitializeSourceObject(overridden_audio_array[i], |
520 blink::WebMediaStreamSource::TypeAudio, | 519 blink::WebMediaStreamSource::TypeAudio, |
521 constraints, | 520 constraints, |
522 request->frame, | 521 request->frame, |
523 &webkit_source); | 522 &webkit_source); |
524 (*webkit_tracks)[i].initialize(webkit_source); | 523 (*webkit_tracks)[i].initialize(webkit_source); |
525 request->StartTrack((*webkit_tracks)[i], constraints); | 524 request->StartAudioTrack((*webkit_tracks)[i], constraints); |
526 } | 525 } |
527 } | 526 } |
528 | 527 |
529 void MediaStreamImpl::OnCreateNativeTracksCompleted( | 528 void MediaStreamImpl::OnCreateNativeTracksCompleted( |
530 UserMediaRequestInfo* request, | 529 UserMediaRequestInfo* request, |
531 bool request_succeeded) { | 530 bool request_succeeded) { |
532 DVLOG(1) << "MediaStreamImpl::OnCreateNativeTracksComplete(" | 531 DVLOG(1) << "MediaStreamImpl::OnCreateNativeTracksComplete(" |
533 << "{request_id = " << request->request_id << "} " | 532 << "{request_id = " << request->request_id << "} " |
534 << "{request_succeeded = " << request_succeeded << "})"; | 533 << "{request_succeeded = " << request_succeeded << "})"; |
535 CompleteGetUserMediaRequest(request->web_stream, &request->request, | 534 CompleteGetUserMediaRequest(request->web_stream, &request->request, |
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
827 enable_automatic_output_device_selection), | 826 enable_automatic_output_device_selection), |
828 frame(frame), | 827 frame(frame), |
829 request(request), | 828 request(request), |
830 request_failed_(false) { | 829 request_failed_(false) { |
831 } | 830 } |
832 | 831 |
833 MediaStreamImpl::UserMediaRequestInfo::~UserMediaRequestInfo() { | 832 MediaStreamImpl::UserMediaRequestInfo::~UserMediaRequestInfo() { |
834 DVLOG(1) << "~UserMediaRequestInfo"; | 833 DVLOG(1) << "~UserMediaRequestInfo"; |
835 } | 834 } |
836 | 835 |
837 void MediaStreamImpl::UserMediaRequestInfo::StartTrack( | 836 void MediaStreamImpl::UserMediaRequestInfo::StartAudioTrack( |
838 const blink::WebMediaStreamTrack& track, | 837 const blink::WebMediaStreamTrack& track, |
839 const blink::WebMediaConstraints& constraints) { | 838 const blink::WebMediaConstraints& constraints) { |
840 MediaStreamSource* native_source = | 839 DCHECK(track.source().type() == blink::WebMediaStreamSource::TypeAudio); |
841 static_cast <MediaStreamSource*>(track.source().extraData()); | 840 MediaStreamAudioSource* native_source = |
| 841 static_cast <MediaStreamAudioSource*>(track.source().extraData()); |
842 DCHECK(native_source); | 842 DCHECK(native_source); |
843 | 843 |
844 sources_.push_back(track.source()); | 844 sources_.push_back(track.source()); |
845 sources_waiting_for_callback_.push_back(native_source); | 845 sources_waiting_for_callback_.push_back(native_source); |
846 native_source->AddTrack( | 846 native_source->AddTrack( |
847 track, constraints, base::Bind( | 847 track, constraints, base::Bind( |
848 &MediaStreamImpl::UserMediaRequestInfo::OnTrackStarted, | 848 &MediaStreamImpl::UserMediaRequestInfo::OnTrackStarted, |
849 AsWeakPtr())); | 849 AsWeakPtr())); |
850 } | 850 } |
851 | 851 |
| 852 blink::WebMediaStreamTrack |
| 853 MediaStreamImpl::UserMediaRequestInfo::CreateAndStartVideoTrack( |
| 854 const blink::WebMediaStreamSource& source, |
| 855 const blink::WebMediaConstraints& constraints, |
| 856 MediaStreamDependencyFactory* factory) { |
| 857 DCHECK(source.type() == blink::WebMediaStreamSource::TypeVideo); |
| 858 MediaStreamVideoSource* native_source = |
| 859 MediaStreamVideoSource::GetVideoSource(source); |
| 860 DCHECK(native_source); |
| 861 sources_.push_back(source); |
| 862 sources_waiting_for_callback_.push_back(native_source); |
| 863 return MediaStreamVideoTrack::CreateVideoTrack( |
| 864 native_source, constraints, base::Bind( |
| 865 &MediaStreamImpl::UserMediaRequestInfo::OnTrackStarted, |
| 866 AsWeakPtr()), |
| 867 true, factory); |
| 868 } |
| 869 |
852 void MediaStreamImpl::UserMediaRequestInfo::CallbackOnTracksStarted( | 870 void MediaStreamImpl::UserMediaRequestInfo::CallbackOnTracksStarted( |
853 const ResourcesReady& callback) { | 871 const ResourcesReady& callback) { |
854 DCHECK(ready_callback_.is_null()); | 872 DCHECK(ready_callback_.is_null()); |
855 ready_callback_ = callback; | 873 ready_callback_ = callback; |
856 CheckAllTracksStarted(); | 874 CheckAllTracksStarted(); |
857 } | 875 } |
858 | 876 |
859 void MediaStreamImpl::UserMediaRequestInfo::OnTrackStarted( | 877 void MediaStreamImpl::UserMediaRequestInfo::OnTrackStarted( |
860 MediaStreamSource* source, bool success) { | 878 MediaStreamSource* source, bool success) { |
861 DVLOG(1) << "OnTrackStarted"; | 879 DVLOG(1) << "OnTrackStarted"; |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
894 sources_.begin(); | 912 sources_.begin(); |
895 it != sources_.end(); ++it) { | 913 it != sources_.end(); ++it) { |
896 if (source.id() == it->id()) { | 914 if (source.id() == it->id()) { |
897 sources_.erase(it); | 915 sources_.erase(it); |
898 return; | 916 return; |
899 } | 917 } |
900 } | 918 } |
901 } | 919 } |
902 | 920 |
903 } // namespace content | 921 } // namespace content |
OLD | NEW |