Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1487)

Unified Diff: content/renderer/media/canvas_capture_handler.cc

Issue 1829193003: Request frame for new sinks from MediaStreamVideoTrack (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Propogate RequestFrame() calls. Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/renderer/media/canvas_capture_handler.cc
diff --git a/content/renderer/media/canvas_capture_handler.cc b/content/renderer/media/canvas_capture_handler.cc
index e0d6089ed167b3c84822a76c70c7225e9e9824d9..bbbaf2d33b10757af6fdff03a1761d9b499666f4 100644
--- a/content/renderer/media/canvas_capture_handler.cc
+++ b/content/renderer/media/canvas_capture_handler.cc
@@ -85,6 +85,10 @@ class VideoCapturerSource : public media::VideoCapturerSource {
canvas_handler_->StartVideoCapture(params, frame_callback,
running_callback);
}
+ void RequestFrame() override {
+ DCHECK(main_render_thread_checker_.CalledOnValidThread());
+ canvas_handler_->RequestLastFrame();
+ }
void StopCapture() override {
DCHECK(main_render_thread_checker_.CalledOnValidThread());
if (canvas_handler_.get())
@@ -194,6 +198,19 @@ void CanvasCaptureHandler::StartVideoCapture(
running_callback.Run(true);
}
+void CanvasCaptureHandler::RequestLastFrame() {
+ DVLOG(3) << __FUNCTION__;
+ DCHECK(main_render_thread_checker_.CalledOnValidThread());
+ if (last_frame_ && delegate_) {
+ io_task_runner_->PostTask(
+ FROM_HERE,
+ base::Bind(&CanvasCaptureHandler::CanvasCaptureHandlerDelegate::
+ SendNewFrameOnIOThread,
+ delegate_->GetWeakPtrForIOThread(), last_frame_,
+ last_frame_estimated_capture_time_));
+ }
+}
+
void CanvasCaptureHandler::StopVideoCapture() {
DVLOG(3) << __FUNCTION__;
DCHECK(main_render_thread_checker_.CalledOnValidThread());
@@ -202,6 +219,7 @@ void CanvasCaptureHandler::StopVideoCapture() {
}
void CanvasCaptureHandler::CreateNewFrame(const SkImage* image) {
+ DVLOG(4) << __FUNCTION__;
DCHECK(main_render_thread_checker_.CalledOnValidThread());
DCHECK(image);
@@ -243,6 +261,8 @@ void CanvasCaptureHandler::CreateNewFrame(const SkImage* image) {
CopyAlphaChannelIntoVideoFrame(temp_data_.data(), video_frame);
}
+ last_frame_ = video_frame;
+ last_frame_estimated_capture_time_ = timestamp;
io_task_runner_->PostTask(
FROM_HERE,
base::Bind(&CanvasCaptureHandler::CanvasCaptureHandlerDelegate::

Powered by Google App Engine
This is Rietveld 408576698