diff options
Diffstat (limited to 'content/common/gpu/media/vaapi_drm_picture.h')
-rw-r--r-- | content/common/gpu/media/vaapi_drm_picture.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/content/common/gpu/media/vaapi_drm_picture.h b/content/common/gpu/media/vaapi_drm_picture.h index e982b59..4a0b83b 100644 --- a/content/common/gpu/media/vaapi_drm_picture.h +++ b/content/common/gpu/media/vaapi_drm_picture.h @@ -11,6 +11,7 @@ #include "base/callback.h" #include "base/memory/ref_counted.h" +#include "base/memory/weak_ptr.h" #include "content/common/gpu/media/vaapi_picture.h" #include "ui/gfx/geometry/size.h" @@ -46,18 +47,39 @@ class VaapiDrmPicture : public VaapiPicture { bool AllowOverlay() const override; private: + // Calls ScalePixmap() if weak_ptr is not NULL. + static scoped_refptr<ui::NativePixmap> CallScalePixmap( + base::WeakPtr<VaapiDrmPicture> weak_ptr, + gfx::Size new_size); + // Use VPP to scale underlying pixmap_ to |new_size| and return the + // scaling result with a new pixmap. + scoped_refptr<ui::NativePixmap> ScalePixmap(gfx::Size new_size); + scoped_refptr<VASurface> CreateVASurfaceForPixmap( + scoped_refptr<ui::NativePixmap> pixmap, + gfx::Size pixmap_size); + scoped_refptr<ui::NativePixmap> CreateNativePixmap(gfx::Size size); + VaapiWrapper* vaapi_wrapper_; // Not owned. base::Callback<bool(void)> make_context_current_; // Ozone buffer, the storage of the EGLImage and the VASurface. scoped_refptr<ui::NativePixmap> pixmap_; + // Ozone buffer, the storage of the scaled buffer for overlay. + scoped_refptr<ui::NativePixmap> scaled_pixmap_; + // EGLImage bound to the GL textures used by the VDA client. scoped_refptr<gfx::GLImage> gl_image_; // VASurface used to transfer from the decoder's pixel format. scoped_refptr<VASurface> va_surface_; + // VaSurface used to apply scaling. + scoped_refptr<VASurface> scaled_va_surface_; + + // The WeakPtrFactory for VaapiDrmPicture. + base::WeakPtrFactory<VaapiDrmPicture> weak_this_factory_; + DISALLOW_COPY_AND_ASSIGN(VaapiDrmPicture); }; |