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 |