| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |