| 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 <string> | 7 #include <string> | 
| 8 #include <utility> | 8 #include <utility> | 
| 9 | 9 | 
| 10 #include "base/bind.h" | 10 #include "base/bind.h" | 
| 11 #include "base/location.h" | 11 #include "base/location.h" | 
| 12 #include "base/macros.h" | 12 #include "base/macros.h" | 
| 13 #include "base/memory/ptr_util.h" | 13 #include "base/memory/ptr_util.h" | 
| 14 #include "base/single_thread_task_runner.h" | 14 #include "base/single_thread_task_runner.h" | 
| 15 #include "base/threading/thread_task_runner_handle.h" | 15 #include "base/threading/thread_task_runner_handle.h" | 
| 16 #include "build/build_config.h" | 16 #include "build/build_config.h" | 
| 17 #include "content/renderer/media/media_stream_constraints_util_video_device.h" | 17 #include "content/renderer/media/media_stream_constraints_util_video_device.h" | 
| 18 #include "media/capture/video_capture_types.h" | 18 #include "media/capture/video_capture_types.h" | 
| 19 | 19 | 
| 20 namespace content { | 20 namespace content { | 
| 21 | 21 | 
| 22 namespace { | 22 namespace { | 
| 23 void ResetCallback(std::unique_ptr<VideoCaptureDeliverFrameCB> callback) { | 23 void ResetCallback(std::unique_ptr<VideoCaptureDeliverFrameCB> callback) { | 
| 24   // |callback| will be deleted when this exits. | 24   // |callback| will be deleted when this exits. | 
| 25 } | 25 } | 
| 26 | 26 | 
| 27 // Empty method used for keeping a reference to the original media::VideoFrame. | 27 // Empty method used for keeping a reference to the original media::VideoFrame. | 
| 28 // The reference to |frame| is kept in the closure that calls this method. | 28 // The reference to |frame| is kept in the closure that calls this method. | 
| 29 void ReleaseOriginalFrame(const scoped_refptr<media::VideoFrame>& frame) { | 29 void ReleaseOriginalVideoFrame(const scoped_refptr<media::VideoFrame>& frame) { | 
| 30 } | 30 } | 
| 31 | 31 | 
| 32 }  // namespace | 32 }  // namespace | 
| 33 | 33 | 
| 34 // MediaStreamVideoTrack::FrameDeliverer is a helper class used for registering | 34 // MediaStreamVideoTrack::FrameDeliverer is a helper class used for registering | 
| 35 // VideoCaptureDeliverFrameCB on the main render thread to receive video frames | 35 // VideoCaptureDeliverFrameCB on the main render thread to receive video frames | 
| 36 // on the IO-thread. | 36 // on the IO-thread. | 
| 37 // Frames are only delivered to the sinks if the track is enabled. If the track | 37 // Frames are only delivered to the sinks if the track is enabled. If the track | 
| 38 // is disabled, a black frame is instead forwarded to the sinks at the same | 38 // is disabled, a black frame is instead forwarded to the sinks at the same | 
| 39 // frame rate. | 39 // frame rate. | 
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 180 | 180 | 
| 181   // Wrap |black_frame_| so we get a fresh timestamp we can modify. Frames | 181   // Wrap |black_frame_| so we get a fresh timestamp we can modify. Frames | 
| 182   // returned from this function may still be in use. | 182   // returned from this function may still be in use. | 
| 183   scoped_refptr<media::VideoFrame> wrapped_black_frame = | 183   scoped_refptr<media::VideoFrame> wrapped_black_frame = | 
| 184       media::VideoFrame::WrapVideoFrame(black_frame_, black_frame_->format(), | 184       media::VideoFrame::WrapVideoFrame(black_frame_, black_frame_->format(), | 
| 185                                         black_frame_->visible_rect(), | 185                                         black_frame_->visible_rect(), | 
| 186                                         black_frame_->natural_size()); | 186                                         black_frame_->natural_size()); | 
| 187   if (!wrapped_black_frame) | 187   if (!wrapped_black_frame) | 
| 188     return nullptr; | 188     return nullptr; | 
| 189   wrapped_black_frame->AddDestructionObserver( | 189   wrapped_black_frame->AddDestructionObserver( | 
| 190       base::BindOnce(&ReleaseOriginalFrame, black_frame_)); | 190       base::BindOnce(&ReleaseOriginalVideoFrame, black_frame_)); | 
| 191 | 191 | 
| 192   wrapped_black_frame->set_timestamp(reference_frame->timestamp()); | 192   wrapped_black_frame->set_timestamp(reference_frame->timestamp()); | 
| 193   base::TimeTicks reference_time; | 193   base::TimeTicks reference_time; | 
| 194   if (reference_frame->metadata()->GetTimeTicks( | 194   if (reference_frame->metadata()->GetTimeTicks( | 
| 195           media::VideoFrameMetadata::REFERENCE_TIME, &reference_time)) { | 195           media::VideoFrameMetadata::REFERENCE_TIME, &reference_time)) { | 
| 196     wrapped_black_frame->metadata()->SetTimeTicks( | 196     wrapped_black_frame->metadata()->SetTimeTicks( | 
| 197         media::VideoFrameMetadata::REFERENCE_TIME, reference_time); | 197         media::VideoFrameMetadata::REFERENCE_TIME, reference_time); | 
| 198   } | 198   } | 
| 199 | 199 | 
| 200   return wrapped_black_frame; | 200   return wrapped_black_frame; | 
| (...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 407 } | 407 } | 
| 408 | 408 | 
| 409 void MediaStreamVideoTrack::OnReadyStateChanged( | 409 void MediaStreamVideoTrack::OnReadyStateChanged( | 
| 410     blink::WebMediaStreamSource::ReadyState state) { | 410     blink::WebMediaStreamSource::ReadyState state) { | 
| 411   DCHECK(main_render_thread_checker_.CalledOnValidThread()); | 411   DCHECK(main_render_thread_checker_.CalledOnValidThread()); | 
| 412   for (auto* sink : sinks_) | 412   for (auto* sink : sinks_) | 
| 413     sink->OnReadyStateChanged(state); | 413     sink->OnReadyStateChanged(state); | 
| 414 } | 414 } | 
| 415 | 415 | 
| 416 }  // namespace content | 416 }  // namespace content | 
| OLD | NEW | 
|---|