Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/canvas_capture_handler.h" | 5 #include "content/renderer/media/canvas_capture_handler.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/base64.h" | 9 #include "base/base64.h" |
| 10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| 11 #include "base/macros.h" | 11 #include "base/macros.h" |
| 12 #include "base/rand_util.h" | 12 #include "base/rand_util.h" |
| 13 #include "base/strings/utf_string_conversions.h" | 13 #include "base/strings/utf_string_conversions.h" |
| 14 #include "content/public/renderer/render_thread.h" | 14 #include "content/public/renderer/render_thread.h" |
| 15 #include "content/renderer/media/media_stream_video_capturer_source.h" | 15 #include "content/renderer/media/media_stream_video_capturer_source.h" |
| 16 #include "content/renderer/media/media_stream_video_source.h" | 16 #include "content/renderer/media/media_stream_video_source.h" |
| 17 #include "content/renderer/media/media_stream_video_track.h" | 17 #include "content/renderer/media/media_stream_video_track.h" |
| 18 #include "content/renderer/media/webrtc_uma_histograms.h" | 18 #include "content/renderer/media/webrtc_uma_histograms.h" |
| 19 #include "content/renderer/render_thread_impl.h" | 19 #include "content/renderer/render_thread_impl.h" |
| 20 #include "third_party/WebKit/public/platform/WebMediaStreamSource.h" | 20 #include "third_party/WebKit/public/platform/WebMediaStreamSource.h" |
| 21 #include "third_party/WebKit/public/platform/WebString.h" | 21 #include "third_party/WebKit/public/platform/WebString.h" |
| 22 #include "third_party/libyuv/include/libyuv.h" | 22 #include "third_party/libyuv/include/libyuv.h" |
| 23 | 23 |
| 24 namespace content { | 24 namespace content { |
| 25 | 25 |
| 26 class CanvasCaptureHandler::VideoCapturerSource | 26 class CanvasCaptureHandler::VideoCapturerSource |
|
mcasas
2016/03/23 17:54:30
nit: could you add a comment saying that
this clas
emircan
2016/03/23 22:12:03
Done.
| |
| 27 : public media::VideoCapturerSource { | 27 : public media::VideoCapturerSource { |
| 28 public: | 28 public: |
| 29 explicit VideoCapturerSource(base::WeakPtr<CanvasCaptureHandler> | 29 explicit VideoCapturerSource(base::WeakPtr<CanvasCaptureHandler> |
| 30 canvas_handler, | 30 canvas_handler, |
| 31 double frame_rate) | 31 double frame_rate) |
| 32 : frame_rate_(frame_rate), | 32 : frame_rate_(frame_rate), |
| 33 canvas_handler_(canvas_handler) {} | 33 canvas_handler_(canvas_handler) {} |
| 34 | 34 |
| 35 protected: | 35 protected: |
| 36 void GetCurrentSupportedFormats( | 36 void GetCurrentSupportedFormats( |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 51 } | 51 } |
| 52 void StartCapture(const media::VideoCaptureParams& params, | 52 void StartCapture(const media::VideoCaptureParams& params, |
| 53 const VideoCaptureDeliverFrameCB& frame_callback, | 53 const VideoCaptureDeliverFrameCB& frame_callback, |
| 54 const RunningCallback& running_callback) override { | 54 const RunningCallback& running_callback) override { |
| 55 DCHECK(main_render_thread_checker_.CalledOnValidThread()); | 55 DCHECK(main_render_thread_checker_.CalledOnValidThread()); |
| 56 canvas_handler_->StartVideoCapture(params, frame_callback, | 56 canvas_handler_->StartVideoCapture(params, frame_callback, |
| 57 running_callback); | 57 running_callback); |
| 58 } | 58 } |
| 59 void StopCapture() override { | 59 void StopCapture() override { |
| 60 DCHECK(main_render_thread_checker_.CalledOnValidThread()); | 60 DCHECK(main_render_thread_checker_.CalledOnValidThread()); |
| 61 canvas_handler_->StopVideoCapture(); | 61 if (canvas_handler_.get()) |
| 62 canvas_handler_->StopVideoCapture(); | |
| 62 } | 63 } |
| 63 | 64 |
| 64 private: | 65 private: |
| 65 double frame_rate_; | 66 double frame_rate_; |
|
mcasas
2016/03/23 17:54:30
const? :)
emircan
2016/03/23 22:12:03
Done :)
| |
| 66 // Bound to Main Render thread. | 67 // Bound to Main Render thread. |
| 67 base::ThreadChecker main_render_thread_checker_; | 68 base::ThreadChecker main_render_thread_checker_; |
| 68 // CanvasCaptureHandler is owned by CanvasDrawListener in blink and | 69 // CanvasCaptureHandler is owned by CanvasDrawListener in blink and might be |
| 69 // guaranteed to be alive during the lifetime of this class. | 70 // destructed before StopCapture() call. |
|
mcasas
2016/03/23 17:54:30
nit: s/destructed/destroyed/ ?
emircan
2016/03/23 22:12:03
Done.
| |
| 70 base::WeakPtr<CanvasCaptureHandler> canvas_handler_; | 71 base::WeakPtr<CanvasCaptureHandler> canvas_handler_; |
| 71 }; | 72 }; |
| 72 | 73 |
| 73 class CanvasCaptureHandler::CanvasCaptureHandlerDelegate { | 74 class CanvasCaptureHandler::CanvasCaptureHandlerDelegate { |
| 74 public: | 75 public: |
| 75 explicit CanvasCaptureHandlerDelegate( | 76 explicit CanvasCaptureHandlerDelegate( |
| 76 media::VideoCapturerSource::VideoCaptureDeliverFrameCB new_frame_callback) | 77 media::VideoCapturerSource::VideoCaptureDeliverFrameCB new_frame_callback) |
| 77 : new_frame_callback_(new_frame_callback), | 78 : new_frame_callback_(new_frame_callback), |
| 78 weak_ptr_factory_(this) { | 79 weak_ptr_factory_(this) { |
| 79 io_thread_checker_.DetachFromThread(); | 80 io_thread_checker_.DetachFromThread(); |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 238 | 239 |
| 239 web_track->initialize(webkit_source); | 240 web_track->initialize(webkit_source); |
| 240 blink::WebMediaConstraints constraints; | 241 blink::WebMediaConstraints constraints; |
| 241 constraints.initialize(); | 242 constraints.initialize(); |
| 242 web_track->setExtraData(new MediaStreamVideoTrack( | 243 web_track->setExtraData(new MediaStreamVideoTrack( |
| 243 media_stream_source.release(), constraints, | 244 media_stream_source.release(), constraints, |
| 244 MediaStreamVideoSource::ConstraintsCallback(), true)); | 245 MediaStreamVideoSource::ConstraintsCallback(), true)); |
| 245 } | 246 } |
| 246 | 247 |
| 247 } // namespace content | 248 } // namespace content |
| OLD | NEW |