Index: content/common/gpu/media/vaapi_wrapper.h |
diff --git a/content/common/gpu/media/vaapi_wrapper.h b/content/common/gpu/media/vaapi_wrapper.h |
index 036bee4f61d7c05ab8c02749fe8d8343eb3f478c..3a5f6fc6c59eabf4bc86eb5d038db7973178ee18 100644 |
--- a/content/common/gpu/media/vaapi_wrapper.h |
+++ b/content/common/gpu/media/vaapi_wrapper.h |
@@ -31,6 +31,10 @@ |
#include "third_party/libva/va/va_x11.h" |
#endif // USE_X11 |
+namespace ui { |
+class NativePixmap; |
+} |
+ |
namespace content { |
// This class handles VA-API calls and ensures proper locking of VA-API calls |
@@ -43,7 +47,8 @@ namespace content { |
// It is also responsible for managing and freeing VABuffers (not VASurfaces), |
// which are used to queue parameters and slice data to the HW codec, |
// as well as underlying memory for VASurfaces themselves. |
-class CONTENT_EXPORT VaapiWrapper { |
+class CONTENT_EXPORT VaapiWrapper |
+ : public base::RefCountedThreadSafe<VaapiWrapper> { |
public: |
enum CodecMode { |
kDecode, |
@@ -54,7 +59,7 @@ class CONTENT_EXPORT VaapiWrapper { |
// Return an instance of VaapiWrapper initialized for |va_profile| and |
// |mode|. |report_error_to_uma_cb| will be called independently from |
// reporting errors to clients via method return values. |
- static scoped_ptr<VaapiWrapper> Create( |
+ static scoped_refptr<VaapiWrapper> Create( |
CodecMode mode, |
VAProfile va_profile, |
const base::Closure& report_error_to_uma_cb); |
@@ -63,7 +68,7 @@ class CONTENT_EXPORT VaapiWrapper { |
// |profile| to VAProfile. |
// |report_error_to_uma_cb| will be called independently from reporting |
// errors to clients via method return values. |
- static scoped_ptr<VaapiWrapper> CreateForVideoCodec( |
+ static scoped_refptr<VaapiWrapper> CreateForVideoCodec( |
CodecMode mode, |
media::VideoCodecProfile profile, |
const base::Closure& report_error_to_uma_cb); |
@@ -106,6 +111,13 @@ class CONTENT_EXPORT VaapiWrapper { |
const gfx::Size& size, |
const std::vector<VASurfaceAttrib>& va_attribs); |
+ // Create a VASurface for |pixmap| of |pixmap_size|. The ownership of the |
+ // surface is transferred to the caller. It differs from surfaces created |
+ // using CreateSurfaces(), where VaapiWrapper is the owner of the surfaces. |
+ scoped_refptr<VASurface> CreateVASurfaceForPixmap( |
+ scoped_refptr<ui::NativePixmap> pixmap, |
Pawel Osciak
2015/11/20 10:09:18
const&
william.xie1
2015/11/23 03:33:58
Done.
|
+ gfx::Size pixmap_size); |
Pawel Osciak
2015/11/20 10:09:18
const&
william.xie1
2015/11/23 03:33:58
Done.
|
+ |
// Submit parameters or slice data of |va_buffer_type|, copying them from |
// |buffer| of size |size|, into HW codec. The data in |buffer| is no |
// longer needed and can be freed after this method returns. |
@@ -198,6 +210,12 @@ class CONTENT_EXPORT VaapiWrapper { |
// Get the created surfaces format. |
unsigned int va_surface_format() const { return va_surface_format_; } |
+ // Map gfx::BufferFormat value to VA FOURCC value. |
+ static uint32_t BufferFormatToVAFourCC(gfx::BufferFormat fmt); |
Pawel Osciak
2015/11/20 10:09:18
These methods don't need to be members of the clas
william.xie1
2015/11/23 03:33:58
Done.
|
+ |
+ // Map gfx::BufferFormat value to VA render target format value. |
+ static uint32_t BufferFormatToVARTFormat(gfx::BufferFormat fmt); |
+ |
private: |
struct ProfileInfo { |
VAProfile va_profile; |