Index: media/renderers/skcanvas_video_renderer.cc |
diff --git a/media/renderers/skcanvas_video_renderer.cc b/media/renderers/skcanvas_video_renderer.cc |
index 3a2a3547553606f631e32a2f87cc24d94e2f254e..bca39a96a5526603a6cbd31c56037abb3c90addf 100644 |
--- a/media/renderers/skcanvas_video_renderer.cc |
+++ b/media/renderers/skcanvas_video_renderer.cc |
@@ -787,6 +787,7 @@ bool SkCanvasVideoRenderer::UpdateLastImage( |
auto* video_generator = new VideoImageGenerator(video_frame); |
last_image_ = SkImage::MakeFromGenerator(video_generator); |
} |
+ CorrectLastImageDimensions(gfx::RectToSkIRect(video_frame->visible_rect())); |
if (!last_image_) // Couldn't create the SkImage. |
return false; |
last_timestamp_ = video_frame->timestamp(); |
@@ -796,4 +797,19 @@ bool SkCanvasVideoRenderer::UpdateLastImage( |
return true; |
} |
+void SkCanvasVideoRenderer::CorrectLastImageDimensions( |
+ const SkIRect& visible_rect) { |
+ last_image_dimensions_for_testing_ = visible_rect.size(); |
+ if (!last_image_) |
+ return; |
+ if (last_image_->dimensions() != visible_rect.size() && |
+ last_image_->bounds().contains(visible_rect)) { |
+ last_image_ = last_image_->makeSubset(visible_rect); |
+ } |
+} |
+ |
+SkISize SkCanvasVideoRenderer::LastImageDimensionsForTesting() { |
+ return last_image_dimensions_for_testing_; |
+} |
+ |
} // namespace media |