| 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" |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 148 : ask_for_new_frame_(false), | 148 : ask_for_new_frame_(false), |
| 149 size_(size), | 149 size_(size), |
| 150 io_task_runner_(io_task_runner), | 150 io_task_runner_(io_task_runner), |
| 151 weak_ptr_factory_(this) { | 151 weak_ptr_factory_(this) { |
| 152 std::unique_ptr<media::VideoCapturerSource> video_source( | 152 std::unique_ptr<media::VideoCapturerSource> video_source( |
| 153 new VideoCapturerSource(weak_ptr_factory_.GetWeakPtr(), frame_rate)); | 153 new VideoCapturerSource(weak_ptr_factory_.GetWeakPtr(), frame_rate)); |
| 154 AddVideoCapturerSourceToVideoTrack(std::move(video_source), track); | 154 AddVideoCapturerSourceToVideoTrack(std::move(video_source), track); |
| 155 } | 155 } |
| 156 | 156 |
| 157 CanvasCaptureHandler::~CanvasCaptureHandler() { | 157 CanvasCaptureHandler::~CanvasCaptureHandler() { |
| 158 DVLOG(3) << __FUNCTION__; | 158 DVLOG(3) << __func__; |
| 159 DCHECK(main_render_thread_checker_.CalledOnValidThread()); | 159 DCHECK(main_render_thread_checker_.CalledOnValidThread()); |
| 160 io_task_runner_->DeleteSoon(FROM_HERE, delegate_.release()); | 160 io_task_runner_->DeleteSoon(FROM_HERE, delegate_.release()); |
| 161 } | 161 } |
| 162 | 162 |
| 163 // static | 163 // static |
| 164 CanvasCaptureHandler* CanvasCaptureHandler::CreateCanvasCaptureHandler( | 164 CanvasCaptureHandler* CanvasCaptureHandler::CreateCanvasCaptureHandler( |
| 165 const blink::WebSize& size, | 165 const blink::WebSize& size, |
| 166 double frame_rate, | 166 double frame_rate, |
| 167 const scoped_refptr<base::SingleThreadTaskRunner>& io_task_runner, | 167 const scoped_refptr<base::SingleThreadTaskRunner>& io_task_runner, |
| 168 blink::WebMediaStreamTrack* track) { | 168 blink::WebMediaStreamTrack* track) { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 181 bool CanvasCaptureHandler::needsNewFrame() const { | 181 bool CanvasCaptureHandler::needsNewFrame() const { |
| 182 DCHECK(main_render_thread_checker_.CalledOnValidThread()); | 182 DCHECK(main_render_thread_checker_.CalledOnValidThread()); |
| 183 return ask_for_new_frame_; | 183 return ask_for_new_frame_; |
| 184 } | 184 } |
| 185 | 185 |
| 186 void CanvasCaptureHandler::StartVideoCapture( | 186 void CanvasCaptureHandler::StartVideoCapture( |
| 187 const media::VideoCaptureParams& params, | 187 const media::VideoCaptureParams& params, |
| 188 const media::VideoCapturerSource::VideoCaptureDeliverFrameCB& | 188 const media::VideoCapturerSource::VideoCaptureDeliverFrameCB& |
| 189 new_frame_callback, | 189 new_frame_callback, |
| 190 const media::VideoCapturerSource::RunningCallback& running_callback) { | 190 const media::VideoCapturerSource::RunningCallback& running_callback) { |
| 191 DVLOG(3) << __FUNCTION__ << " requested " | 191 DVLOG(3) << __func__ << " requested " |
| 192 << media::VideoCaptureFormat::ToString(params.requested_format); | 192 << media::VideoCaptureFormat::ToString(params.requested_format); |
| 193 DCHECK(main_render_thread_checker_.CalledOnValidThread()); | 193 DCHECK(main_render_thread_checker_.CalledOnValidThread()); |
| 194 DCHECK(params.requested_format.IsValid()); | 194 DCHECK(params.requested_format.IsValid()); |
| 195 | 195 |
| 196 // TODO(emircan): Accomodate to the given frame rate constraints here. | 196 // TODO(emircan): Accomodate to the given frame rate constraints here. |
| 197 capture_format_ = params.requested_format; | 197 capture_format_ = params.requested_format; |
| 198 delegate_.reset(new CanvasCaptureHandlerDelegate(new_frame_callback)); | 198 delegate_.reset(new CanvasCaptureHandlerDelegate(new_frame_callback)); |
| 199 DCHECK(delegate_); | 199 DCHECK(delegate_); |
| 200 ask_for_new_frame_ = true; | 200 ask_for_new_frame_ = true; |
| 201 running_callback.Run(true); | 201 running_callback.Run(true); |
| 202 } | 202 } |
| 203 | 203 |
| 204 void CanvasCaptureHandler::RequestRefreshFrame() { | 204 void CanvasCaptureHandler::RequestRefreshFrame() { |
| 205 DVLOG(3) << __FUNCTION__; | 205 DVLOG(3) << __func__; |
| 206 DCHECK(main_render_thread_checker_.CalledOnValidThread()); | 206 DCHECK(main_render_thread_checker_.CalledOnValidThread()); |
| 207 if (last_frame_ && delegate_) { | 207 if (last_frame_ && delegate_) { |
| 208 io_task_runner_->PostTask( | 208 io_task_runner_->PostTask( |
| 209 FROM_HERE, | 209 FROM_HERE, |
| 210 base::Bind(&CanvasCaptureHandler::CanvasCaptureHandlerDelegate:: | 210 base::Bind(&CanvasCaptureHandler::CanvasCaptureHandlerDelegate:: |
| 211 SendNewFrameOnIOThread, | 211 SendNewFrameOnIOThread, |
| 212 delegate_->GetWeakPtrForIOThread(), last_frame_, | 212 delegate_->GetWeakPtrForIOThread(), last_frame_, |
| 213 base::TimeTicks::Now())); | 213 base::TimeTicks::Now())); |
| 214 } | 214 } |
| 215 } | 215 } |
| 216 | 216 |
| 217 void CanvasCaptureHandler::StopVideoCapture() { | 217 void CanvasCaptureHandler::StopVideoCapture() { |
| 218 DVLOG(3) << __FUNCTION__; | 218 DVLOG(3) << __func__; |
| 219 DCHECK(main_render_thread_checker_.CalledOnValidThread()); | 219 DCHECK(main_render_thread_checker_.CalledOnValidThread()); |
| 220 ask_for_new_frame_ = false; | 220 ask_for_new_frame_ = false; |
| 221 io_task_runner_->DeleteSoon(FROM_HERE, delegate_.release()); | 221 io_task_runner_->DeleteSoon(FROM_HERE, delegate_.release()); |
| 222 } | 222 } |
| 223 | 223 |
| 224 void CanvasCaptureHandler::CreateNewFrame(const SkImage* image) { | 224 void CanvasCaptureHandler::CreateNewFrame(const SkImage* image) { |
| 225 DVLOG(4) << __FUNCTION__; | 225 DVLOG(4) << __func__; |
| 226 DCHECK(main_render_thread_checker_.CalledOnValidThread()); | 226 DCHECK(main_render_thread_checker_.CalledOnValidThread()); |
| 227 DCHECK(image); | 227 DCHECK(image); |
| 228 | 228 |
| 229 const gfx::Size size(image->width(), image->height()); | 229 const gfx::Size size(image->width(), image->height()); |
| 230 if (size != last_size) { | 230 if (size != last_size) { |
| 231 temp_data_.resize( | 231 temp_data_.resize( |
| 232 media::VideoFrame::AllocationSize(media::PIXEL_FORMAT_ARGB, size)); | 232 media::VideoFrame::AllocationSize(media::PIXEL_FORMAT_ARGB, size)); |
| 233 row_bytes_ = | 233 row_bytes_ = |
| 234 media::VideoFrame::RowBytes(0, media::PIXEL_FORMAT_ARGB, size.width()); | 234 media::VideoFrame::RowBytes(0, media::PIXEL_FORMAT_ARGB, size.width()); |
| 235 image_info_ = | 235 image_info_ = |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 288 | 288 |
| 289 web_track->initialize(webkit_source); | 289 web_track->initialize(webkit_source); |
| 290 blink::WebMediaConstraints constraints; | 290 blink::WebMediaConstraints constraints; |
| 291 constraints.initialize(); | 291 constraints.initialize(); |
| 292 web_track->setTrackData(new MediaStreamVideoTrack( | 292 web_track->setTrackData(new MediaStreamVideoTrack( |
| 293 media_stream_source.release(), constraints, | 293 media_stream_source.release(), constraints, |
| 294 MediaStreamVideoSource::ConstraintsCallback(), true)); | 294 MediaStreamVideoSource::ConstraintsCallback(), true)); |
| 295 } | 295 } |
| 296 | 296 |
| 297 } // namespace content | 297 } // namespace content |
| OLD | NEW |