| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #ifndef MEDIA_BLINK_SKCANVAS_VIDEO_RENDERER_H_ | 5 #ifndef MEDIA_BLINK_SKCANVAS_VIDEO_RENDERER_H_ |
| 6 #define MEDIA_BLINK_SKCANVAS_VIDEO_RENDERER_H_ | 6 #define MEDIA_BLINK_SKCANVAS_VIDEO_RENDERER_H_ |
| 7 | 7 |
| 8 #include "base/memory/ref_counted.h" | 8 #include "base/memory/ref_counted.h" |
| 9 #include "base/time/time.h" | 9 #include "base/time/time.h" |
| 10 #include "base/timer/timer.h" | 10 #include "base/timer/timer.h" |
| 11 #include "media/base/media_export.h" | 11 #include "media/base/media_export.h" |
| 12 #include "media/base/video_rotation.h" | 12 #include "media/base/video_rotation.h" |
| 13 #include "media/filters/context_3d.h" | 13 #include "media/filters/context_3d.h" |
| 14 #include "third_party/skia/include/core/SkBitmap.h" | 14 #include "third_party/skia/include/core/SkBitmap.h" |
| 15 #include "third_party/skia/include/core/SkImage.h" |
| 15 #include "third_party/skia/include/core/SkXfermode.h" | 16 #include "third_party/skia/include/core/SkXfermode.h" |
| 16 #include "ui/gfx/geometry/rect.h" | 17 #include "ui/gfx/geometry/rect.h" |
| 17 | 18 |
| 18 class SkCanvas; | 19 class SkCanvas; |
| 19 | 20 |
| 20 namespace media { | 21 namespace media { |
| 21 | 22 |
| 22 class VideoFrame; | 23 class VideoFrame; |
| 23 class VideoImageGenerator; | 24 class VideoImageGenerator; |
| 24 | 25 |
| (...skipping 29 matching lines...) Expand all Loading... |
| 54 // should point into a buffer large enough to hold as many 32 bit RGBA pixels | 55 // should point into a buffer large enough to hold as many 32 bit RGBA pixels |
| 55 // as are in the visible_rect() area of the frame. | 56 // as are in the visible_rect() area of the frame. |
| 56 static void ConvertVideoFrameToRGBPixels( | 57 static void ConvertVideoFrameToRGBPixels( |
| 57 const scoped_refptr<media::VideoFrame>& video_frame, | 58 const scoped_refptr<media::VideoFrame>& video_frame, |
| 58 void* rgb_pixels, | 59 void* rgb_pixels, |
| 59 size_t row_bytes); | 60 size_t row_bytes); |
| 60 | 61 |
| 61 // Copy the contents of texture of |video_frame| to texture |texture|. | 62 // Copy the contents of texture of |video_frame| to texture |texture|. |
| 62 // |level|, |internal_format|, |type| specify target texture |texture|. | 63 // |level|, |internal_format|, |type| specify target texture |texture|. |
| 63 // The format of |video_frame| must be VideoFrame::NATIVE_TEXTURE. | 64 // The format of |video_frame| must be VideoFrame::NATIVE_TEXTURE. |
| 64 static void CopyVideoFrameTextureToGLTexture(gpu::gles2::GLES2Interface* gl, | 65 static void CopyVideoFrameSingleTextureToGLTexture( |
| 65 VideoFrame* video_frame, | 66 gpu::gles2::GLES2Interface* gl, |
| 66 unsigned int texture, | 67 VideoFrame* video_frame, |
| 67 unsigned int internal_format, | 68 unsigned int texture, |
| 68 unsigned int type, | 69 unsigned int internal_format, |
| 69 bool premultiply_alpha, | 70 unsigned int type, |
| 70 bool flip_y); | 71 bool premultiply_alpha, |
| 72 bool flip_y); |
| 71 | 73 |
| 72 private: | 74 private: |
| 73 void ResetLastFrame(); | 75 void ResetLastFrame(); |
| 74 void ResetAcceleratedLastFrame(); | 76 void ResetAcceleratedLastFrame(); |
| 75 | 77 |
| 76 // An RGB bitmap and corresponding timestamp of the previously converted | 78 // An RGB bitmap and corresponding timestamp of the previously converted |
| 77 // video frame data by software color space conversion. | 79 // video frame data by software color space conversion. |
| 78 SkBitmap last_frame_; | 80 SkBitmap last_frame_; |
| 79 base::TimeDelta last_frame_timestamp_; | 81 base::TimeDelta last_frame_timestamp_; |
| 80 // If |last_frame_| is not used for a while, it's deleted to save memory. | 82 // If |last_frame_| is not used for a while, it's deleted to save memory. |
| 81 base::DelayTimer<SkCanvasVideoRenderer> frame_deleting_timer_; | 83 base::DelayTimer<SkCanvasVideoRenderer> frame_deleting_timer_; |
| 82 | 84 |
| 83 // This is a hardware accelerated copy of the frame generated by | 85 // This is a hardware accelerated copy of the frame generated by |
| 84 // |accelerated_generator_|. | 86 // |accelerated_generator_|. |
| 85 // It's used when |canvas| parameter in Paint() is Ganesh canvas. | 87 // It's used when |canvas| parameter in Paint() is Ganesh canvas. |
| 86 // Note: all GrContext in SkCanvas instances are same. | 88 // Note: all GrContext in SkCanvas instances are same. |
| 89 scoped_ptr<SkImage> accelerated_last_image_; |
| 87 SkBitmap accelerated_last_frame_; | 90 SkBitmap accelerated_last_frame_; |
| 88 VideoImageGenerator* accelerated_generator_; | 91 VideoImageGenerator* accelerated_generator_; |
| 89 base::TimeDelta accelerated_last_frame_timestamp_; | 92 base::TimeDelta accelerated_last_frame_timestamp_; |
| 90 base::DelayTimer<SkCanvasVideoRenderer> accelerated_frame_deleting_timer_; | 93 base::DelayTimer<SkCanvasVideoRenderer> accelerated_frame_deleting_timer_; |
| 91 | 94 |
| 92 DISALLOW_COPY_AND_ASSIGN(SkCanvasVideoRenderer); | 95 DISALLOW_COPY_AND_ASSIGN(SkCanvasVideoRenderer); |
| 93 }; | 96 }; |
| 94 | 97 |
| 95 } // namespace media | 98 } // namespace media |
| 96 | 99 |
| 97 #endif // MEDIA_BLINK_SKCANVAS_VIDEO_RENDERER_H_ | 100 #endif // MEDIA_BLINK_SKCANVAS_VIDEO_RENDERER_H_ |
| OLD | NEW |