| 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 |