summaryrefslogtreecommitdiffstats
path: root/content/common/gpu/media/vaapi_drm_picture.h
diff options
context:
space:
mode:
Diffstat (limited to 'content/common/gpu/media/vaapi_drm_picture.h')
-rw-r--r--content/common/gpu/media/vaapi_drm_picture.h22
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);
};