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_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 |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
76 // cloned track and not the originating source. | 76 // cloned track and not the originating source. |
77 // Also - source.constraints() returns an uninitialized constraint if the | 77 // Also - source.constraints() returns an uninitialized constraint if the |
78 // source is coming from a remote video track. See http://crbug/287805. | 78 // source is coming from a remote video track. See http://crbug/287805. |
79 blink::WebMediaConstraints constraints = source.constraints(); | 79 blink::WebMediaConstraints constraints = source.constraints(); |
80 if (constraints.isNull()) | 80 if (constraints.isNull()) |
81 constraints.initialize(); | 81 constraints.initialize(); |
82 writable_track.setTrackData(new MediaStreamVideoTrack( | 82 writable_track.setTrackData(new MediaStreamVideoTrack( |
83 native_source, constraints, | 83 native_source, constraints, |
84 MediaStreamVideoSource::ConstraintsCallback(), track.isEnabled())); | 84 MediaStreamVideoSource::ConstraintsCallback(), track.isEnabled())); |
85 } else { | 85 } else { |
86 // TODO(guidou): All existing uses are without constraints except for the | |
87 // case of cloning a track. To fix this, create a new function in | |
88 // MediaStreamCenter specifically for cloning. | |
89 writable_track.setTrackData(new MediaStreamVideoTrack( | 86 writable_track.setTrackData(new MediaStreamVideoTrack( |
90 native_source, MediaStreamVideoSource::ConstraintsCallback(), | 87 native_source, MediaStreamVideoSource::ConstraintsCallback(), |
91 track.isEnabled())); | 88 track.isEnabled())); |
92 } | 89 } |
93 } | 90 } |
94 | 91 |
92 void CloneNativeVideoMediaStreamTrack( | |
93 const blink::WebMediaStreamTrack& original, | |
94 const blink::WebMediaStreamTrack& clone) { | |
95 DCHECK(!clone.getTrackData()); | |
96 blink::WebMediaStreamSource source = clone.source(); | |
97 DCHECK_EQ(source.getType(), blink::WebMediaStreamSource::TypeVideo); | |
98 MediaStreamVideoSource* native_source = | |
99 MediaStreamVideoSource::GetVideoSource(source); | |
100 DCHECK(native_source); | |
101 blink::WebMediaStreamTrack writable_clone(clone); | |
hbos_chromium
2017/04/04 11:21:43
Can you add a comment explaining that doing setTra
Guido Urdaneta
2017/04/04 15:42:53
Went instead for passing by value. WebMSTrack just
| |
102 if (IsOldVideoConstraints()) { | |
103 // TODO(perkj): The constraints to use here should be passed from blink when | |
104 // a new track is created. For cloning, it should be the constraints of the | |
105 // cloned track and not the originating source. | |
106 // Also - source.constraints() returns an uninitialized constraint if the | |
107 // source is coming from a remote video track. See http://crbug/287805. | |
108 blink::WebMediaConstraints constraints = source.constraints(); | |
109 if (constraints.isNull()) | |
110 constraints.initialize(); | |
111 writable_clone.setTrackData(new MediaStreamVideoTrack( | |
112 native_source, constraints, | |
113 MediaStreamVideoSource::ConstraintsCallback(), clone.isEnabled())); | |
114 } else { | |
115 MediaStreamVideoTrack* original_track = | |
116 MediaStreamVideoTrack::GetVideoTrack(original); | |
117 DCHECK(original_track); | |
118 writable_clone.setTrackData(new MediaStreamVideoTrack( | |
119 native_source, original_track->adapter_settings(), | |
120 original_track->noise_reduction(), original_track->is_screencast(), | |
121 original_track->min_frame_rate(), | |
122 MediaStreamVideoSource::ConstraintsCallback(), clone.isEnabled())); | |
123 } | |
124 } | |
125 | |
95 } // namespace | 126 } // namespace |
96 | 127 |
97 MediaStreamCenter::MediaStreamCenter( | 128 MediaStreamCenter::MediaStreamCenter( |
98 blink::WebMediaStreamCenterClient* client, | 129 blink::WebMediaStreamCenterClient* client, |
99 PeerConnectionDependencyFactory* factory) {} | 130 PeerConnectionDependencyFactory* factory) {} |
100 | 131 |
101 MediaStreamCenter::~MediaStreamCenter() {} | 132 MediaStreamCenter::~MediaStreamCenter() {} |
102 | 133 |
103 void MediaStreamCenter::didCreateMediaStreamTrack( | 134 void MediaStreamCenter::didCreateMediaStreamTrack( |
104 const blink::WebMediaStreamTrack& track) { | 135 const blink::WebMediaStreamTrack& track) { |
105 DVLOG(1) << "MediaStreamCenter::didCreateMediaStreamTrack"; | 136 DVLOG(1) << "MediaStreamCenter::didCreateMediaStreamTrack"; |
106 DCHECK(!track.isNull() && !track.getTrackData()); | 137 DCHECK(!track.isNull() && !track.getTrackData()); |
107 DCHECK(!track.source().isNull()); | 138 DCHECK(!track.source().isNull()); |
108 | 139 |
109 switch (track.source().getType()) { | 140 switch (track.source().getType()) { |
110 case blink::WebMediaStreamSource::TypeAudio: | 141 case blink::WebMediaStreamSource::TypeAudio: |
111 CreateNativeAudioMediaStreamTrack(track); | 142 CreateNativeAudioMediaStreamTrack(track); |
112 break; | 143 break; |
113 case blink::WebMediaStreamSource::TypeVideo: | 144 case blink::WebMediaStreamSource::TypeVideo: |
114 CreateNativeVideoMediaStreamTrack(track); | 145 CreateNativeVideoMediaStreamTrack(track); |
115 break; | 146 break; |
116 } | 147 } |
117 } | 148 } |
118 | 149 |
150 void MediaStreamCenter::didCloneMediaStreamTrack( | |
151 const blink::WebMediaStreamTrack& original, | |
152 const blink::WebMediaStreamTrack& clone) { | |
153 DCHECK(!clone.isNull()); | |
154 DCHECK(!clone.getTrackData()); | |
155 DCHECK(!clone.source().isNull()); | |
156 | |
157 switch (clone.source().getType()) { | |
158 case blink::WebMediaStreamSource::TypeAudio: | |
159 CreateNativeAudioMediaStreamTrack(clone); | |
160 break; | |
161 case blink::WebMediaStreamSource::TypeVideo: | |
162 CloneNativeVideoMediaStreamTrack(original, clone); | |
163 break; | |
164 } | |
165 } | |
166 | |
119 void MediaStreamCenter::didSetContentHint( | 167 void MediaStreamCenter::didSetContentHint( |
120 const blink::WebMediaStreamTrack& track) { | 168 const blink::WebMediaStreamTrack& track) { |
121 MediaStreamTrack* native_track = MediaStreamTrack::GetTrack(track); | 169 MediaStreamTrack* native_track = MediaStreamTrack::GetTrack(track); |
122 if (native_track) | 170 if (native_track) |
123 native_track->SetContentHint(track.contentHint()); | 171 native_track->SetContentHint(track.contentHint()); |
124 } | 172 } |
125 | 173 |
126 void MediaStreamCenter::didEnableMediaStreamTrack( | 174 void MediaStreamCenter::didEnableMediaStreamTrack( |
127 const blink::WebMediaStreamTrack& track) { | 175 const blink::WebMediaStreamTrack& track) { |
128 MediaStreamTrack* native_track = | 176 MediaStreamTrack* native_track = |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
206 | 254 |
207 bool MediaStreamCenter::didRemoveMediaStreamTrack( | 255 bool MediaStreamCenter::didRemoveMediaStreamTrack( |
208 const blink::WebMediaStream& stream, | 256 const blink::WebMediaStream& stream, |
209 const blink::WebMediaStreamTrack& track) { | 257 const blink::WebMediaStreamTrack& track) { |
210 DVLOG(1) << "MediaStreamCenter::didRemoveMediaStreamTrack"; | 258 DVLOG(1) << "MediaStreamCenter::didRemoveMediaStreamTrack"; |
211 MediaStream* native_stream = MediaStream::GetMediaStream(stream); | 259 MediaStream* native_stream = MediaStream::GetMediaStream(stream); |
212 return native_stream->RemoveTrack(track); | 260 return native_stream->RemoveTrack(track); |
213 } | 261 } |
214 | 262 |
215 } // namespace content | 263 } // namespace content |
OLD | NEW |