Chromium Code Reviews| 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 |