Chromium Code Reviews| 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 242684e0315b6594f47692a121af7d63cd93aba3..18c292ac21265c122a6e0c21c997e130771d33e8 100644 |
| --- a/content/common/gpu/media/vaapi_wrapper.h |
| +++ b/content/common/gpu/media/vaapi_wrapper.h |
| @@ -20,6 +20,7 @@ |
| #include "media/base/video_decoder_config.h" |
| #include "media/base/video_frame.h" |
| #include "third_party/libva/va/va.h" |
| +#include "third_party/libva/va/va_vpp.h" |
| #include "ui/gfx/size.h" |
| #if defined(USE_X11) |
| #include "third_party/libva/va/va_x11.h" |
| @@ -71,6 +72,16 @@ class CONTENT_EXPORT VaapiWrapper { |
| // Free all memory allocated in CreateSurfaces. |
| void DestroySurfaces(); |
| + // Create a VASurface of |va_format|, |size| and using |
| + // |num_va_attribs| attributes from |va_attribs|. 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> CreateUnownedSurface( |
| + unsigned int va_format, |
| + const gfx::Size& size, |
| + std::vector<VASurfaceAttrib>& va_attribs); |
|
Pawel Osciak
2014/12/29 00:08:01
Please always const with references.
|
| + |
| // 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. |
| @@ -141,6 +152,14 @@ class CONTENT_EXPORT VaapiWrapper { |
| // Destroy all previously-allocated (and not yet destroyed) coded buffers. |
| void DestroyCodedBuffers(); |
| + // Blits a VASurface |va_surface_id_src| into another VASurface |
| + // |va_surface_id_dest| applying pixel format conversion and scaling |
| + // if needed. |
| + bool BlitSurface(VASurfaceID va_surface_id_src, |
| + const gfx::Size& src_size, |
| + VASurfaceID va_surface_id_dest, |
| + const gfx::Size& dest_size); |
| + |
| private: |
| VaapiWrapper(); |
| @@ -155,6 +174,16 @@ class CONTENT_EXPORT VaapiWrapper { |
| VAEntrypoint entrypoint, |
| const std::vector<VAConfigAttrib>& required_attribs); |
| + // Destroys a |va_surface| created using CreateUnownedSurface. |
| + void DestroyUnownedSurface(VASurfaceID va_surface_id); |
| + |
| + // Initialize the video post processing context with the |size| of |
| + // the input pictures to be processed. |
| + bool InitializeVpp_Locked(); |
| + |
| + // Deinitialize the video post processing context. |
| + void DeinitializeVpp(); |
| + |
| // Execute pending job in hardware and destroy pending buffers. Return false |
| // if vaapi driver refuses to accept parameter or slice buffers submitted |
| // by client, or if execution fails in hardware. |
| @@ -199,6 +228,13 @@ class CONTENT_EXPORT VaapiWrapper { |
| // return values from public methods. |
| base::Closure report_error_to_uma_cb_; |
| + // VPP (Video Post Processing) context, this is used to convert NV12 |
|
Pawel Osciak
2014/12/29 00:08:01
s/NV12//
llandwerlin-old
2014/12/29 02:30:34
Done.
|
| + // pictures used by the decoder to RGBA pictures usable by GL or the |
| + // display hardware. |
| + VAConfigID va_vpp_config_id_; |
| + VAContextID va_vpp_context_id_; |
| + VABufferID va_vpp_buffer_id_; |
| + |
| DISALLOW_COPY_AND_ASSIGN(VaapiWrapper); |
| }; |