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 cd2d2a6d8fa14b8e54b348690c4522c115895307..5fcf1303981daa8fe32489e193bae3db94cc6a00 100644 |
| --- a/content/common/gpu/media/vaapi_wrapper.h |
| +++ b/content/common/gpu/media/vaapi_wrapper.h |
| @@ -134,9 +134,6 @@ class CONTENT_EXPORT VaapiWrapper { |
| gfx::Size dest_size); |
| #endif // USE_X11 |
| - // Returns true if the VAAPI version is less than the specified version. |
| - bool VAAPIVersionLessThan(int major, int minor); |
| - |
| // Get a VAImage from a VASurface and map it into memory. The size and format |
| // are derived from the surface. Use GetVaImage() instead if |format| or |
| // |size| are different from surface internal representation. The VAImage |
| @@ -191,6 +188,9 @@ class CONTENT_EXPORT VaapiWrapper { |
| VASurfaceID va_surface_id_dest, |
| const gfx::Size& dest_size); |
| + // Initialize static data before sandbox is enabled. |
| + static void PreSandboxInitialization(); |
| + |
| private: |
| struct ProfileInfo { |
| VAProfile va_profile; |
| @@ -209,6 +209,46 @@ class CONTENT_EXPORT VaapiWrapper { |
| std::vector<ProfileInfo> supported_profiles_[kCodecModeMax]; |
| }; |
| + class VADisplayState { |
| + public: |
| + VADisplayState(); |
| + ~VADisplayState(); |
| + |
| + // |va_lock_| must be held on entry. |
|
Pawel Osciak
2015/05/11 05:51:45
va_lock_ is not a member of this class and is per-
hshi1
2015/05/11 17:14:39
I have moved va_lock_ into VADisplayState, which w
|
| + bool Initialize(VAStatus* status); |
| + void Deinitialize(VAStatus* status); |
| + |
| + VADisplay GetVADisplay() const; |
| + |
| +#if defined(USE_OZONE) |
| + void SetDrmFd(base::PlatformFile fd); |
| +#endif // USE_OZONE |
| + |
| + private: |
| +#if defined(USE_OZONE) |
| + friend class base::LazyInstance<VADisplayState>; |
| +#endif // USE_OZONE |
| + |
| + // Returns true if the VAAPI version is less than the specified version. |
| + bool VAAPIVersionLessThan(int major, int minor); |
| + |
| + int refcount_; |
| + |
| +#if defined(USE_OZONE) |
| + // Drm fd used to obtain access to the driver interface by VA. |
| + base::ScopedFD drm_fd_; |
| +#endif // USE_OZONE |
| + |
| + // The VADisplay handle. |
| + VADisplay va_display_; |
| + |
| + // The VAAPI version. |
| + int major_version_, minor_version_; |
| + |
| + // True if vaInitialize has been called successfully. |
| + bool va_initialized_; |
| + }; |
| + |
| VaapiWrapper(); |
| bool Initialize(CodecMode mode, VAProfile va_profile); |
| @@ -277,8 +317,13 @@ class CONTENT_EXPORT VaapiWrapper { |
| // Allocated ids for VASurfaces. |
| std::vector<VASurfaceID> va_surface_ids_; |
| - // The VAAPI version. |
| - int major_version_, minor_version_; |
| +#if defined(USE_X11) |
| + // VADisplay and related state. |
| + scoped_ptr<VADisplayState> va_display_state_; |
| +#elif defined(USE_OZONE) |
| + // Singleton instance of VADisplayState. |
| + static base::LazyInstance<VADisplayState> g_va_display_state_; |
| +#endif // USE_X11 |
| // VA handles. |
| // All valid after successful Initialize() and until Deinitialize(). |
| @@ -287,8 +332,6 @@ class CONTENT_EXPORT VaapiWrapper { |
| // Created for the current set of va_surface_ids_ in CreateSurfaces() and |
| // valid until DestroySurfaces(). |
| VAContextID va_context_id_; |
| - // True if vaInitialize has been called successfully. |
| - bool va_initialized_; |
| // Data queued up for HW codec, to be committed on next execution. |
| std::vector<VABufferID> pending_slice_bufs_; |
| @@ -308,11 +351,6 @@ class CONTENT_EXPORT VaapiWrapper { |
| VAContextID va_vpp_context_id_; |
| VABufferID va_vpp_buffer_id_; |
| -#if defined(USE_OZONE) |
| - // Drm file used to obtain access to the driver interface by VA. |
| - base::File drm_file_; |
| -#endif // USE_OZONE |
| - |
| // Singleton variable to store supported profile information for encode and |
| // decode. |
| static base::LazyInstance<LazyProfileInfos> profile_infos_; |