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

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

Issue 1647773002: MediaStream audio sourcing: Bypass audio processing for non-WebRTC cases. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: NOT FOR REVIEW -- This will be broken-up across multiple CLs. Created 4 years, 10 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
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_center.h" 5 #include "content/renderer/media/media_stream_center.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <string> 9 #include <string>
10 10
11 #include "base/command_line.h" 11 #include "base/command_line.h"
12 #include "base/logging.h" 12 #include "base/logging.h"
13 #include "content/common/media/media_stream_messages.h" 13 #include "content/common/media/media_stream_messages.h"
14 #include "content/public/common/content_switches.h" 14 #include "content/public/common/content_switches.h"
15 #include "content/public/renderer/media_stream_audio_sink.h" 15 #include "content/public/renderer/media_stream_audio_sink.h"
16 #include "content/public/renderer/render_thread.h" 16 #include "content/public/renderer/render_thread.h"
17 #include "content/renderer/media/media_stream.h" 17 #include "content/renderer/media/media_stream.h"
18 #include "content/renderer/media/media_stream_audio_track.h"
18 #include "content/renderer/media/media_stream_source.h" 19 #include "content/renderer/media/media_stream_source.h"
19 #include "content/renderer/media/media_stream_video_source.h" 20 #include "content/renderer/media/media_stream_video_source.h"
20 #include "content/renderer/media/media_stream_video_track.h" 21 #include "content/renderer/media/media_stream_video_track.h"
22 #include "content/renderer/media/webaudio_media_stream_source.h"
21 #include "content/renderer/media/webrtc/peer_connection_dependency_factory.h" 23 #include "content/renderer/media/webrtc/peer_connection_dependency_factory.h"
22 #include "content/renderer/media/webrtc_local_audio_source_provider.h" 24 #include "content/renderer/media/webrtc_local_audio_source_provider.h"
23 #include "third_party/WebKit/public/platform/WebMediaConstraints.h" 25 #include "third_party/WebKit/public/platform/WebMediaConstraints.h"
24 #include "third_party/WebKit/public/platform/WebMediaStream.h" 26 #include "third_party/WebKit/public/platform/WebMediaStream.h"
25 #include "third_party/WebKit/public/platform/WebMediaStreamCenterClient.h" 27 #include "third_party/WebKit/public/platform/WebMediaStreamCenterClient.h"
26 #include "third_party/WebKit/public/platform/WebMediaStreamSource.h" 28 #include "third_party/WebKit/public/platform/WebMediaStreamSource.h"
27 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" 29 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h"
28 #include "third_party/WebKit/public/platform/WebMediaStreamTrackSourcesRequest.h " 30 #include "third_party/WebKit/public/platform/WebMediaStreamTrackSourcesRequest.h "
29 #include "third_party/WebKit/public/platform/WebSourceInfo.h" 31 #include "third_party/WebKit/public/platform/WebSourceInfo.h"
30 #include "third_party/WebKit/public/platform/WebVector.h" 32 #include "third_party/WebKit/public/platform/WebVector.h"
31 #include "third_party/WebKit/public/web/WebFrame.h" 33 #include "third_party/WebKit/public/web/WebFrame.h"
32 34
33 using blink::WebFrame; 35 using blink::WebFrame;
34 using blink::WebView; 36 using blink::WebView;
35 37
36 namespace content { 38 namespace content {
37 39
38 namespace { 40 namespace {
39 41
40 void CreateNativeAudioMediaStreamTrack( 42 void CreateNativeAudioMediaStreamTrack(
41 const blink::WebMediaStreamTrack& track, 43 const blink::WebMediaStreamTrack& track,
42 PeerConnectionDependencyFactory* factory) { 44 PeerConnectionDependencyFactory* factory) {
43 DCHECK(!track.extraData()); 45 DCHECK(!MediaStreamAudioTrack::Get(track));
44 blink::WebMediaStreamSource source = track.source(); 46 blink::WebMediaStreamSource source = track.source();
45 DCHECK_EQ(source.type(), blink::WebMediaStreamSource::TypeAudio); 47 DCHECK_EQ(source.type(), blink::WebMediaStreamSource::TypeAudio);
46 if (source.remote()) { 48
47 factory->CreateRemoteAudioTrack(track); 49 if (!source.extraData()) {
50 // TODO(miu): This needs to be moved to an appropriate location. The source
51 // should have been created before this method was called.
52 if (source.requiresAudioConsumer()) {
53 DVLOG(1) << "Creating WebAudio media stream source.";
54 source.setExtraData(new WebAudioMediaStreamSource(source));
55 }
48 } else { 56 } else {
49 factory->CreateLocalAudioTrack(track); 57 NOTREACHED()
58 << "WebMediaStreamSource missing its MediaStreamAudioSource.";
59 return;
50 } 60 }
61
62 static_cast<MediaStreamAudioSource*>(source.extraData())
63 ->ConnectToTrack(track);
51 } 64 }
52 65
53 void CreateNativeVideoMediaStreamTrack( 66 void CreateNativeVideoMediaStreamTrack(
54 const blink::WebMediaStreamTrack& track) { 67 const blink::WebMediaStreamTrack& track) {
55 DCHECK(track.extraData() == NULL); 68 DCHECK(track.extraData() == NULL);
56 blink::WebMediaStreamSource source = track.source(); 69 blink::WebMediaStreamSource source = track.source();
57 DCHECK_EQ(source.type(), blink::WebMediaStreamSource::TypeVideo); 70 DCHECK_EQ(source.type(), blink::WebMediaStreamSource::TypeVideo);
58 MediaStreamVideoSource* native_source = 71 MediaStreamVideoSource* native_source =
59 MediaStreamVideoSource::GetVideoSource(source); 72 MediaStreamVideoSource::GetVideoSource(source);
60 DCHECK(native_source); 73 DCHECK(native_source);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 MediaStreamCenter::~MediaStreamCenter() {} 110 MediaStreamCenter::~MediaStreamCenter() {}
98 111
99 void MediaStreamCenter::didCreateMediaStreamTrack( 112 void MediaStreamCenter::didCreateMediaStreamTrack(
100 const blink::WebMediaStreamTrack& track) { 113 const blink::WebMediaStreamTrack& track) {
101 DVLOG(1) << "MediaStreamCenter::didCreateMediaStreamTrack"; 114 DVLOG(1) << "MediaStreamCenter::didCreateMediaStreamTrack";
102 CreateNativeMediaStreamTrack(track, rtc_factory_); 115 CreateNativeMediaStreamTrack(track, rtc_factory_);
103 } 116 }
104 117
105 void MediaStreamCenter::didEnableMediaStreamTrack( 118 void MediaStreamCenter::didEnableMediaStreamTrack(
106 const blink::WebMediaStreamTrack& track) { 119 const blink::WebMediaStreamTrack& track) {
107 MediaStreamTrack* native_track = 120 if (MediaStreamTrack* native_track = MediaStreamTrack::GetTrack(track))
108 MediaStreamTrack::GetTrack(track);
109 if (native_track)
110 native_track->SetEnabled(true); 121 native_track->SetEnabled(true);
111 } 122 }
112 123
113 void MediaStreamCenter::didDisableMediaStreamTrack( 124 void MediaStreamCenter::didDisableMediaStreamTrack(
114 const blink::WebMediaStreamTrack& track) { 125 const blink::WebMediaStreamTrack& track) {
115 MediaStreamTrack* native_track = 126 if (MediaStreamTrack* native_track = MediaStreamTrack::GetTrack(track))
116 MediaStreamTrack::GetTrack(track);
117 if (native_track)
118 native_track->SetEnabled(false); 127 native_track->SetEnabled(false);
119 } 128 }
120 129
121 bool MediaStreamCenter::didStopMediaStreamTrack( 130 bool MediaStreamCenter::didStopMediaStreamTrack(
122 const blink::WebMediaStreamTrack& track) { 131 const blink::WebMediaStreamTrack& track) {
123 DVLOG(1) << "MediaStreamCenter::didStopMediaStreamTrack"; 132 DVLOG(1) << "MediaStreamCenter::didStopMediaStreamTrack";
124 MediaStreamTrack* native_track = MediaStreamTrack::GetTrack(track); 133 if (MediaStreamTrack* native_track = MediaStreamTrack::GetTrack(track)) {
125 native_track->Stop(); 134 native_track->Stop();
126 return true; 135 return true;
136 }
137 return false;
127 } 138 }
128 139
129 blink::WebAudioSourceProvider* 140 blink::WebAudioSourceProvider*
130 MediaStreamCenter::createWebAudioSourceFromMediaStreamTrack( 141 MediaStreamCenter::createWebAudioSourceFromMediaStreamTrack(
131 const blink::WebMediaStreamTrack& track) { 142 const blink::WebMediaStreamTrack& track) {
132 DVLOG(1) << "MediaStreamCenter::createWebAudioSourceFromMediaStreamTrack"; 143 DVLOG(1) << "MediaStreamCenter::createWebAudioSourceFromMediaStreamTrack";
133 MediaStreamTrack* media_stream_track = 144 if (!MediaStreamAudioTrack::Get(track)) {
134 static_cast<MediaStreamTrack*>(track.extraData());
135 if (!media_stream_track) {
136 DLOG(ERROR) << "Native track missing for webaudio source."; 145 DLOG(ERROR) << "Native track missing for webaudio source.";
137 return nullptr; 146 return nullptr;
138 } 147 }
139 148
140 blink::WebMediaStreamSource source = track.source(); 149 blink::WebMediaStreamSource source = track.source();
141 DCHECK_EQ(source.type(), blink::WebMediaStreamSource::TypeAudio); 150 DCHECK_EQ(source.type(), blink::WebMediaStreamSource::TypeAudio);
142 151
143 // TODO(tommi): Rename WebRtcLocalAudioSourceProvider to 152 // TODO(tommi): Rename WebRtcLocalAudioSourceProvider to
144 // WebRtcAudioSourceProvider since it's not specific to local. 153 // WebRtcAudioSourceProvider since it's not specific to local.
145 return new WebRtcLocalAudioSourceProvider(track); 154 return new WebRtcLocalAudioSourceProvider(track);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 193
185 bool MediaStreamCenter::didRemoveMediaStreamTrack( 194 bool MediaStreamCenter::didRemoveMediaStreamTrack(
186 const blink::WebMediaStream& stream, 195 const blink::WebMediaStream& stream,
187 const blink::WebMediaStreamTrack& track) { 196 const blink::WebMediaStreamTrack& track) {
188 DVLOG(1) << "MediaStreamCenter::didRemoveMediaStreamTrack"; 197 DVLOG(1) << "MediaStreamCenter::didRemoveMediaStreamTrack";
189 MediaStream* native_stream = MediaStream::GetMediaStream(stream); 198 MediaStream* native_stream = MediaStream::GetMediaStream(stream);
190 return native_stream->RemoveTrack(track); 199 return native_stream->RemoveTrack(track);
191 } 200 }
192 201
193 } // namespace content 202 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/media_stream_audio_track.cc ('k') | content/renderer/media/media_stream_renderer_factory_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698