Index: media/filters/skcanvas_video_renderer.h |
diff --git a/media/filters/skcanvas_video_renderer.h b/media/filters/skcanvas_video_renderer.h |
index 3d1f4da56f76ef31b546b581bd1c85ca5ecdb2ee..131859c8756f47d38adeba402fbd2cbbe7470b71 100644 |
--- a/media/filters/skcanvas_video_renderer.h |
+++ b/media/filters/skcanvas_video_renderer.h |
@@ -13,6 +13,7 @@ |
#include "ui/gfx/rect.h" |
class SkCanvas; |
+class GrContext; |
namespace media { |
@@ -40,11 +41,27 @@ class MEDIA_EXPORT SkCanvasVideoRenderer { |
void Copy(media::VideoFrame* video_frame, SkCanvas* canvas); |
private: |
+ // Special paint routine that uses a hardware-accelerated canvas to do YUV |
+ // conversion. |
+ bool HardwarePaint(media::VideoFrame* video_frame, |
+ GrContext* gr, |
+ const SkRect& dest_rect, |
+ SkXfermode::Mode mode, |
+ VideoRotation video_rotation); |
+ |
// An RGB bitmap and corresponding timestamp of the previously converted |
// video frame data. |
SkBitmap last_frame_; |
base::TimeDelta last_frame_timestamp_; |
+ // These never actually allocate pixels, but wrap our yuv planes so that we |
+ // can use them for hardware yuv conversion. |
+ SkBitmap yuv_planes_[3]; |
+ |
+ // We store a separate timestamp for |yuv_planes_|'s contents, as they can get |
+ // cached separately on the GPU. |
+ base::TimeDelta yuv_planes_timestamp_; |
+ |
DISALLOW_COPY_AND_ASSIGN(SkCanvasVideoRenderer); |
}; |