Chromium Code Reviews| Index: media/filters/skcanvas_video_renderer.h |
| diff --git a/media/filters/skcanvas_video_renderer.h b/media/filters/skcanvas_video_renderer.h |
| index 146e7cd16cec099ffc12b62019a4b1c466f59b63..461248a14bcee16f141d652b35bc4b51c64837c3 100644 |
| --- a/media/filters/skcanvas_video_renderer.h |
| +++ b/media/filters/skcanvas_video_renderer.h |
| @@ -13,8 +13,15 @@ |
| #include "third_party/skia/include/core/SkXfermode.h" |
| #include "ui/gfx/rect.h" |
| +class GrContext; |
| class SkCanvas; |
| +namespace gpu { |
| +namespace gles2 { |
| +class GLES2Interface; |
| +} |
| +} |
| + |
| namespace media { |
| class VideoFrame; |
| @@ -27,6 +34,10 @@ class MEDIA_EXPORT SkCanvasVideoRenderer { |
| SkCanvasVideoRenderer(); |
| ~SkCanvasVideoRenderer(); |
| + struct Context3DProvider { |
|
scherkus (not reviewing)
2014/10/15 17:10:24
to be clear, we need this because we don't depend
|
| + gpu::gles2::GLES2Interface* gl; |
| + class GrContext* gr_context; |
| + }; |
| // Paints |video_frame| on |canvas|, scaling and rotating the result to fit |
| // dimensions specified by |dest_rect|. |
| // |
| @@ -36,19 +47,34 @@ class MEDIA_EXPORT SkCanvasVideoRenderer { |
| const gfx::RectF& dest_rect, |
| uint8 alpha, |
| SkXfermode::Mode mode, |
| - VideoRotation video_rotation); |
| + VideoRotation video_rotation, |
| + Context3DProvider* context_provider); |
| // Copy |video_frame| on |canvas|. |
| void Copy(const scoped_refptr<VideoFrame>&, SkCanvas* canvas); |
| + static void CopyVideoFrameToTexture(gpu::gles2::GLES2Interface* gl, |
| + media::VideoFrame* video_frame, |
| + unsigned int texture, |
| + unsigned int level, |
| + unsigned int internal_format, |
| + unsigned int type, |
| + bool premultiply_alpha, |
| + bool flip_y); |
| + |
| private: |
| - VideoImageGenerator* generator_; |
| + void CleanUpTemporaryBuffers(); |
| // An RGB bitmap and corresponding timestamp of the previously converted |
| // video frame data. |
| SkBitmap last_frame_; |
| + VideoImageGenerator* generator_; |
| base::TimeDelta last_frame_timestamp_; |
| + // It's possible to be used by accelerated client and non-accelerated client. |
| + SkBitmap accelerated_last_frame_; |
| + base::TimeDelta accelerated_last_frame_timestamp_; |
| + |
| DISALLOW_COPY_AND_ASSIGN(SkCanvasVideoRenderer); |
| }; |