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

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

Issue 14312015: Effects Pepper Plugin and MediaStream Glue. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 7 years, 7 months 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_dependency_factory.h" 5 #include "content/renderer/media/media_stream_dependency_factory.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/synchronization/waitable_event.h" 9 #include "base/synchronization/waitable_event.h"
10 #include "base/utf_string_conversions.h" 10 #include "base/utf_string_conversions.h"
(...skipping 23 matching lines...) Expand all
34 #endif 34 #endif
35 35
36 namespace content { 36 namespace content {
37 37
38 // Constant constraint keys which disables all audio constraints. 38 // Constant constraint keys which disables all audio constraints.
39 // Only used in combination with WebAudio sources. 39 // Only used in combination with WebAudio sources.
40 struct { 40 struct {
41 const char* key; 41 const char* key;
42 const char* value; 42 const char* value;
43 } const kWebAudioConstraints[] = { 43 } const kWebAudioConstraints[] = {
44 {webrtc::MediaConstraintsInterface::kEchoCancellation, 44 {webrtc::MediaConstraintsInterface::kEchoCancellation,
45 webrtc::MediaConstraintsInterface::kValueFalse}, 45 webrtc::MediaConstraintsInterface::kValueFalse},
46 {webrtc::MediaConstraintsInterface::kAutoGainControl, 46 {webrtc::MediaConstraintsInterface::kAutoGainControl,
47 webrtc::MediaConstraintsInterface::kValueFalse}, 47 webrtc::MediaConstraintsInterface::kValueFalse},
48 {webrtc::MediaConstraintsInterface::kNoiseSuppression, 48 {webrtc::MediaConstraintsInterface::kNoiseSuppression,
49 webrtc::MediaConstraintsInterface::kValueFalse}, 49 webrtc::MediaConstraintsInterface::kValueFalse},
50 {webrtc::MediaConstraintsInterface::kHighpassFilter, 50 {webrtc::MediaConstraintsInterface::kHighpassFilter,
51 webrtc::MediaConstraintsInterface::kValueFalse}, 51 webrtc::MediaConstraintsInterface::kValueFalse},
52 }; 52 };
53 53
54 class WebAudioConstraints : public RTCMediaConstraints { 54 class WebAudioConstraints : public RTCMediaConstraints {
55 public: 55 public:
56 WebAudioConstraints() 56 WebAudioConstraints()
57 : RTCMediaConstraints(WebKit::WebMediaConstraints()) { 57 : RTCMediaConstraints(WebKit::WebMediaConstraints()) {
58 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kWebAudioConstraints); ++i) { 58 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kWebAudioConstraints); ++i) {
59 webrtc::MediaConstraintsInterface::Constraint constraint; 59 webrtc::MediaConstraintsInterface::Constraint constraint;
60 constraint.key = kWebAudioConstraints[i].key; 60 constraint.key = kWebAudioConstraints[i].key;
61 constraint.value = kWebAudioConstraints[i].value; 61 constraint.value = kWebAudioConstraints[i].value;
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
395 } 395 }
396 return native_stream->AddTrack(audio_track); 396 return native_stream->AddTrack(audio_track);
397 } else { 397 } else {
398 scoped_refptr<webrtc::VideoTrackInterface> video_track( 398 scoped_refptr<webrtc::VideoTrackInterface> video_track(
399 CreateLocalVideoTrack(track_id, source_data->video_source())); 399 CreateLocalVideoTrack(track_id, source_data->video_source()));
400 video_track->set_enabled(track.isEnabled()); 400 video_track->set_enabled(track.isEnabled());
401 return native_stream->AddTrack(video_track); 401 return native_stream->AddTrack(video_track);
402 } 402 }
403 } 403 }
404 404
405 bool MediaStreamDependencyFactory::AddNativeVideoMediaTrack(
406 const std::string& track_id,
407 WebKit::WebMediaStream* stream,
408 cricket::VideoCapturer* capturer) {
409 if (!stream) {
410 LOG(ERROR) << "AddNativeVideoMediaTrack called with null WebMediaStream.";
411 return false;
412 }
413
414 // Create native track from the source.
415 scoped_refptr<webrtc::VideoTrackInterface> native_track =
416 CreateLocalVideoTrack(track_id, capturer);
417
418 // Add the native track to native stream
419 MediaStreamExtraData* extra_data =
420 static_cast<MediaStreamExtraData*>(stream->extraData());
421 DCHECK(extra_data);
422 webrtc::MediaStreamInterface* native_stream = extra_data->stream();
423 native_stream->AddTrack(native_track);
424
425 // Create a new webkit video track.
426 WebKit::WebMediaStreamTrack webkit_track;
427 WebKit::WebMediaStreamSource webkit_source;
428 WebKit::WebString webkit_track_id(UTF8ToUTF16(track_id));
429 WebKit::WebMediaStreamSource::Type type =
430 WebKit::WebMediaStreamSource::TypeVideo;
431 webkit_source.initialize(webkit_track_id, type, webkit_track_id);
432 webkit_track.initialize(webkit_track_id, webkit_source);
433
434 // Add the track to WebMediaStream.
435 stream->addTrack(webkit_track);
436 return true;
437 }
438
405 bool MediaStreamDependencyFactory::RemoveNativeMediaStreamTrack( 439 bool MediaStreamDependencyFactory::RemoveNativeMediaStreamTrack(
406 const WebKit::WebMediaStream& stream, 440 const WebKit::WebMediaStream& stream,
407 const WebKit::WebMediaStreamTrack& track) { 441 const WebKit::WebMediaStreamTrack& track) {
408 MediaStreamExtraData* extra_data = 442 MediaStreamExtraData* extra_data =
409 static_cast<MediaStreamExtraData*>(stream.extraData()); 443 static_cast<MediaStreamExtraData*>(stream.extraData());
410 webrtc::MediaStreamInterface* native_stream = extra_data->stream(); 444 webrtc::MediaStreamInterface* native_stream = extra_data->stream();
411 DCHECK(native_stream); 445 DCHECK(native_stream);
412 446
413 WebKit::WebMediaStreamSource::Type type = track.source().type(); 447 WebKit::WebMediaStreamSource::Type type = track.source().type();
414 DCHECK(type == WebKit::WebMediaStreamSource::TypeAudio || 448 DCHECK(type == WebKit::WebMediaStreamSource::TypeAudio ||
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 return true; 581 return true;
548 } 582 }
549 583
550 scoped_refptr<webrtc::VideoTrackInterface> 584 scoped_refptr<webrtc::VideoTrackInterface>
551 MediaStreamDependencyFactory::CreateLocalVideoTrack( 585 MediaStreamDependencyFactory::CreateLocalVideoTrack(
552 const std::string& id, 586 const std::string& id,
553 webrtc::VideoSourceInterface* source) { 587 webrtc::VideoSourceInterface* source) {
554 return pc_factory_->CreateVideoTrack(id, source).get(); 588 return pc_factory_->CreateVideoTrack(id, source).get();
555 } 589 }
556 590
591 scoped_refptr<webrtc::VideoTrackInterface>
592 MediaStreamDependencyFactory::CreateLocalVideoTrack(
593 const std::string& id, cricket::VideoCapturer* capturer) {
594 if (!capturer) {
595 LOG(ERROR) << "CreateLocalVideoTrack called with null VideoCapturer.";
596 return NULL;
597 }
598
599 // Create video source from the |capturer|.
600 scoped_refptr<webrtc::VideoSourceInterface> source =
601 pc_factory_->CreateVideoSource(capturer, NULL).get();
602
603 // Create native track from the source.
604 return pc_factory_->CreateVideoTrack(id, source).get();
605 }
606
557 scoped_refptr<webrtc::AudioTrackInterface> 607 scoped_refptr<webrtc::AudioTrackInterface>
558 MediaStreamDependencyFactory::CreateLocalAudioTrack( 608 MediaStreamDependencyFactory::CreateLocalAudioTrack(
559 const std::string& id, 609 const std::string& id,
560 webrtc::AudioSourceInterface* source) { 610 webrtc::AudioSourceInterface* source) {
561 // TODO(xians): Merge |source| to the capturer(). We can't do this today 611 // TODO(xians): Merge |source| to the capturer(). We can't do this today
562 // because only one capturer() is supported while one |source| is created 612 // because only one capturer() is supported while one |source| is created
563 // for each audio track. 613 // for each audio track.
564 return WebRtcLocalAudioTrack::Create(id, GetWebRtcAudioDevice()->capturer(), 614 return WebRtcLocalAudioTrack::Create(id, GetWebRtcAudioDevice()->capturer(),
565 source); 615 source);
566 } 616 }
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
697 // processed before returning. We wait for the above task to finish before 747 // processed before returning. We wait for the above task to finish before
698 // letting the the function continue to avoid any potential race issues. 748 // letting the the function continue to avoid any potential race issues.
699 chrome_worker_thread_.Stop(); 749 chrome_worker_thread_.Stop();
700 } else { 750 } else {
701 NOTREACHED() << "Worker thread not running."; 751 NOTREACHED() << "Worker thread not running.";
702 } 752 }
703 } 753 }
704 } 754 }
705 755
706 } // namespace content 756 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/media_stream_dependency_factory.h ('k') | content/renderer/media/media_stream_registry_interface.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698