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

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

Issue 2339193002: Wip - cl for implemening VideoTrackSource::ApplyConstraints(constraints, VideoTrack) and adopt safe…
Patch Set: Created 4 years, 3 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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_video_track.h" 5 #include "content/renderer/media/media_stream_video_track.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/location.h" 10 #include "base/location.h"
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 media::VideoFrameMetadata::REFERENCE_TIME, &reference_time)) { 189 media::VideoFrameMetadata::REFERENCE_TIME, &reference_time)) {
190 wrapped_black_frame->metadata()->SetTimeTicks( 190 wrapped_black_frame->metadata()->SetTimeTicks(
191 media::VideoFrameMetadata::REFERENCE_TIME, reference_time); 191 media::VideoFrameMetadata::REFERENCE_TIME, reference_time);
192 } 192 }
193 193
194 return wrapped_black_frame; 194 return wrapped_black_frame;
195 } 195 }
196 196
197 // static 197 // static
198 blink::WebMediaStreamTrack MediaStreamVideoTrack::CreateVideoTrack( 198 blink::WebMediaStreamTrack MediaStreamVideoTrack::CreateVideoTrack(
199 MediaStreamVideoSource* source, 199 MediaStreamVideoSource* source) {
200 const blink::WebMediaConstraints& constraints,
201 const MediaStreamVideoSource::ConstraintsCallback& callback,
202 bool enabled) {
203 blink::WebMediaStreamTrack track; 200 blink::WebMediaStreamTrack track;
204 track.initialize(source->owner()); 201 track.initialize(source->owner());
205 track.setTrackData( 202 source->ConnectToTrack(track);
206 new MediaStreamVideoTrack(source, constraints, callback, enabled)); 203
204 blink::WebMediaConstraints constraints;
205 constraints.initialize();
206 source->ApplyConstraints(track, constraints,
207 MediaStreamVideoSource::ConstraintsCallback());
208
207 return track; 209 return track;
208 } 210 }
209 211
210 // static 212 // static
213 void MediaStreamVideoTrack::InitializeVideoTrack(MediaStreamVideoSource* source,
214 const blink::WebMediaStreamTrac k& track) {
215 DCHECK(!track.isNull());
216 source->ConnectToTrack(track);
217
218 blink::WebMediaConstraints constraints;
219 constraints.initialize();
220 source->ApplyConstraints(track, constraints,
221 MediaStreamVideoSource::ConstraintsCallback());
222 }
223
224 // static
211 MediaStreamVideoTrack* MediaStreamVideoTrack::GetVideoTrack( 225 MediaStreamVideoTrack* MediaStreamVideoTrack::GetVideoTrack(
212 const blink::WebMediaStreamTrack& track) { 226 const blink::WebMediaStreamTrack& track) {
213 if (track.isNull() || 227 if (track.isNull() ||
214 track.source().getType() != blink::WebMediaStreamSource::TypeVideo) { 228 track.source().getType() != blink::WebMediaStreamSource::TypeVideo) {
215 return nullptr; 229 return nullptr;
216 } 230 }
217 return static_cast<MediaStreamVideoTrack*>(track.getTrackData()); 231 return static_cast<MediaStreamVideoTrack*>(track.getTrackData());
218 } 232 }
219 233
220 MediaStreamVideoTrack::MediaStreamVideoTrack( 234 MediaStreamVideoTrack::MediaStreamVideoTrack(
221 MediaStreamVideoSource* source, 235 base::WeakPtr<MediaStreamVideoSource> source,
222 const blink::WebMediaConstraints& constraints,
223 const MediaStreamVideoSource::ConstraintsCallback& callback,
224 bool enabled) 236 bool enabled)
225 : MediaStreamTrack(true), 237 : MediaStreamTrack(true),
226 frame_deliverer_( 238 frame_deliverer_(
227 new MediaStreamVideoTrack::FrameDeliverer(source->io_task_runner(), 239 new MediaStreamVideoTrack::FrameDeliverer(source->io_task_runner(),
228 enabled)), 240 enabled)),
229 constraints_(constraints), 241 source_(source) {
230 source_(source->GetWeakPtr()) { 242 // DCHECK(!constraints.isNull());
231 DCHECK(!constraints.isNull()); 243 /* source->AddTrack(this,
232 source->AddTrack(this,
233 base::Bind( 244 base::Bind(
234 &MediaStreamVideoTrack::FrameDeliverer::DeliverFrameOnIO, 245 &MediaStreamVideoTrack::FrameDeliverer::DeliverFrameOnIO,
235 frame_deliverer_), 246 frame_deliverer_),
236 constraints, callback); 247 constraints, callback);*/
237 } 248 }
238 249
239 MediaStreamVideoTrack::~MediaStreamVideoTrack() { 250 MediaStreamVideoTrack::~MediaStreamVideoTrack() {
240 DCHECK(main_render_thread_checker_.CalledOnValidThread()); 251 DCHECK(main_render_thread_checker_.CalledOnValidThread());
241 DCHECK(sinks_.empty()); 252 DCHECK(sinks_.empty());
242 Stop(); 253 Stop();
243 DVLOG(3) << "~MediaStreamVideoTrack()"; 254 DVLOG(3) << "~MediaStreamVideoTrack()";
244 } 255 }
245 256
257 VideoCaptureDeliverFrameCB MediaStreamVideoTrack::frame_input() const {
258 DCHECK(main_render_thread_checker_.CalledOnValidThread());
259 return base::Bind(
260 &MediaStreamVideoTrack::FrameDeliverer::DeliverFrameOnIO,
261 frame_deliverer_);
262 }
263
246 void MediaStreamVideoTrack::AddSink(MediaStreamVideoSink* sink, 264 void MediaStreamVideoTrack::AddSink(MediaStreamVideoSink* sink,
247 const VideoCaptureDeliverFrameCB& callback, 265 const VideoCaptureDeliverFrameCB& callback,
248 bool is_sink_secure) { 266 bool is_sink_secure) {
249 DCHECK(main_render_thread_checker_.CalledOnValidThread()); 267 DCHECK(main_render_thread_checker_.CalledOnValidThread());
250 DCHECK(std::find(sinks_.begin(), sinks_.end(), sink) == sinks_.end()); 268 DCHECK(std::find(sinks_.begin(), sinks_.end(), sink) == sinks_.end());
251 sinks_.push_back(sink); 269 sinks_.push_back(sink);
252 frame_deliverer_->AddCallback(sink, callback); 270 frame_deliverer_->AddCallback(sink, callback);
253 secure_tracker_.Add(sink, is_sink_secure); 271 secure_tracker_.Add(sink, is_sink_secure);
254 // Request source to deliver a frame because a new sink is added. 272 // Request source to deliver a frame because a new sink is added.
255 if (source_) { 273 if (source_) {
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 } 321 }
304 322
305 void MediaStreamVideoTrack::OnReadyStateChanged( 323 void MediaStreamVideoTrack::OnReadyStateChanged(
306 blink::WebMediaStreamSource::ReadyState state) { 324 blink::WebMediaStreamSource::ReadyState state) {
307 DCHECK(main_render_thread_checker_.CalledOnValidThread()); 325 DCHECK(main_render_thread_checker_.CalledOnValidThread());
308 for (auto* sink : sinks_) 326 for (auto* sink : sinks_)
309 sink->OnReadyStateChanged(state); 327 sink->OnReadyStateChanged(state);
310 } 328 }
311 329
312 } // namespace content 330 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/media_stream_video_track.h ('k') | content/renderer/media/pepper_to_video_track_adapter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698