Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(382)

Unified Diff: media/gpu/vaapi_wrapper.cc

Issue 1882373004: Migrate content/common/gpu/media code to media/gpu (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix several more bot-identified build issues Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/gpu/vaapi_wrapper.cc
diff --git a/content/common/gpu/media/vaapi_wrapper.cc b/media/gpu/vaapi_wrapper.cc
similarity index 87%
rename from content/common/gpu/media/vaapi_wrapper.cc
rename to media/gpu/vaapi_wrapper.cc
index ab4e176e4ec0e869448e192728bcce4a80257d46..c40f8bcf3cee9e8751dbd8c48856f78cca255db2 100644
--- a/content/common/gpu/media/vaapi_wrapper.cc
+++ b/media/gpu/vaapi_wrapper.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "content/common/gpu/media/vaapi_wrapper.h"
+#include "media/gpu/vaapi_wrapper.h"
#include <dlfcn.h>
#include <string.h>
@@ -14,11 +14,14 @@
#include "base/numerics/safe_conversions.h"
#include "base/sys_info.h"
#include "build/build_config.h"
+
// Auto-generated for dlopen libva libraries
-#include "content/common/gpu/media/va_stubs.h"
-#include "content/common/gpu/media/vaapi_picture.h"
+#include "media/gpu/va_stubs.h"
+
+#include "media/gpu/vaapi_picture.h"
#include "third_party/libyuv/include/libyuv.h"
#include "ui/gl/gl_bindings.h"
+
#if defined(USE_X11)
#include "ui/gfx/x/x11_types.h"
#elif defined(USE_OZONE)
@@ -28,34 +31,33 @@
#include "ui/ozone/public/surface_factory_ozone.h"
#endif // USE_X11
-using content_common_gpu_media::kModuleVa;
+using media_gpu::kModuleVa;
#if defined(USE_X11)
-using content_common_gpu_media::kModuleVa_x11;
+using media_gpu::kModuleVa_x11;
#elif defined(USE_OZONE)
-using content_common_gpu_media::kModuleVa_drm;
+using media_gpu::kModuleVa_drm;
#endif // USE_X11
-using content_common_gpu_media::InitializeStubs;
-using content_common_gpu_media::StubPathMap;
-
-#define LOG_VA_ERROR_AND_REPORT(va_error, err_msg) \
- do { \
- LOG(ERROR) << err_msg \
- << " VA error: " << vaErrorStr(va_error); \
- report_error_to_uma_cb_.Run(); \
+using media_gpu::InitializeStubs;
+using media_gpu::StubPathMap;
+
+#define LOG_VA_ERROR_AND_REPORT(va_error, err_msg) \
+ do { \
+ LOG(ERROR) << err_msg << " VA error: " << vaErrorStr(va_error); \
+ report_error_to_uma_cb_.Run(); \
} while (0)
-#define VA_LOG_ON_ERROR(va_error, err_msg) \
- do { \
- if ((va_error) != VA_STATUS_SUCCESS) \
- LOG_VA_ERROR_AND_REPORT(va_error, err_msg); \
+#define VA_LOG_ON_ERROR(va_error, err_msg) \
+ do { \
+ if ((va_error) != VA_STATUS_SUCCESS) \
+ LOG_VA_ERROR_AND_REPORT(va_error, err_msg); \
} while (0)
-#define VA_SUCCESS_OR_RETURN(va_error, err_msg, ret) \
- do { \
- if ((va_error) != VA_STATUS_SUCCESS) { \
- LOG_VA_ERROR_AND_REPORT(va_error, err_msg); \
- return (ret); \
- } \
+#define VA_SUCCESS_OR_RETURN(va_error, err_msg, ret) \
+ do { \
+ if ((va_error) != VA_STATUS_SUCCESS) { \
+ LOG_VA_ERROR_AND_REPORT(va_error, err_msg); \
+ return (ret); \
+ } \
} while (0)
#if defined(USE_OZONE)
@@ -88,7 +90,7 @@ uint32_t BufferFormatToVARTFormat(gfx::BufferFormat fmt) {
} // namespace
#endif
-namespace content {
+namespace media {
// Maximum framerate of encoded profile. This value is an arbitary limit
// and not taken from HW documentation.
@@ -134,13 +136,11 @@ static std::vector<VAConfigAttrib> GetRequiredAttribs(
VaapiWrapper::CodecMode mode) {
std::vector<VAConfigAttrib> required_attribs;
required_attribs.insert(
- required_attribs.end(),
- kCommonVAConfigAttribs,
+ required_attribs.end(), kCommonVAConfigAttribs,
kCommonVAConfigAttribs + arraysize(kCommonVAConfigAttribs));
if (mode == VaapiWrapper::kEncode) {
required_attribs.insert(
- required_attribs.end(),
- kEncodeVAConfigAttribs,
+ required_attribs.end(), kEncodeVAConfigAttribs,
kEncodeVAConfigAttribs + arraysize(kEncodeVAConfigAttribs));
}
return required_attribs;
@@ -270,7 +270,7 @@ bool VaapiWrapper::IsJpegDecodeSupported() {
void VaapiWrapper::TryToSetVADisplayAttributeToLocalGPU() {
base::AutoLock auto_lock(*va_lock_);
VADisplayAttribute item = {VADisplayAttribRenderMode,
- 1, // At least support '_LOCAL_OVERLAY'.
+ 1, // At least support '_LOCAL_OVERLAY'.
-1, // The maximum possible support 'ALL'.
VA_RENDER_MODE_LOCAL_GPU,
VA_DISPLAY_ATTRIB_SETTABLE};
@@ -281,8 +281,8 @@ void VaapiWrapper::TryToSetVADisplayAttributeToLocalGPU() {
}
// static
-VAProfile VaapiWrapper::ProfileToVAProfile(
- media::VideoCodecProfile profile, CodecMode mode) {
+VAProfile VaapiWrapper::ProfileToVAProfile(media::VideoCodecProfile profile,
+ CodecMode mode) {
VAProfile va_profile = VAProfileNone;
for (size_t i = 0; i < arraysize(kProfileMap); ++i) {
if (kProfileMap[i].profile == profile) {
@@ -298,7 +298,7 @@ VAProfile VaapiWrapper::ProfileToVAProfile(
// try constrained baseline and hope this is what it actually is
// (which in practice is true for a great majority of cases).
if (profile_infos_.Get().IsProfileSupported(
- mode, VAProfileH264ConstrainedBaseline)) {
+ mode, VAProfileH264ConstrainedBaseline)) {
va_profile = VAProfileH264ConstrainedBaseline;
DVLOG(1) << "Fall back to constrained baseline profile.";
}
@@ -315,7 +315,7 @@ VaapiWrapper::GetSupportedProfileInfosForCodecModeInternal(CodecMode mode) {
std::vector<VAConfigAttrib> required_attribs = GetRequiredAttribs(mode);
VAEntrypoint entrypoint =
- (mode == kEncode ? VAEntrypointEncSlice: VAEntrypointVLD);
+ (mode == kEncode ? VAEntrypointEncSlice : VAEntrypointVLD);
base::AutoLock auto_lock(*va_lock_);
for (const auto& va_profile : va_profiles) {
@@ -324,9 +324,7 @@ VaapiWrapper::GetSupportedProfileInfosForCodecModeInternal(CodecMode mode) {
if (!AreAttribsSupported_Locked(va_profile, entrypoint, required_attribs))
continue;
ProfileInfo profile_info;
- if (!GetMaxResolution_Locked(va_profile,
- entrypoint,
- required_attribs,
+ if (!GetMaxResolution_Locked(va_profile, entrypoint, required_attribs,
&profile_info.max_resolution)) {
LOG(ERROR) << "GetMaxResolution failed for va_profile " << va_profile
<< " and entrypoint " << entrypoint;
@@ -380,8 +378,8 @@ bool VaapiWrapper::GetSupportedVaProfiles(std::vector<VAProfile>* profiles) {
base::checked_cast<size_t>(max_profiles));
int num_supported_profiles;
- VAStatus va_res = vaQueryConfigProfiles(
- va_display_, &supported_profiles[0], &num_supported_profiles);
+ VAStatus va_res = vaQueryConfigProfiles(va_display_, &supported_profiles[0],
+ &num_supported_profiles);
VA_SUCCESS_OR_RETURN(va_res, "vaQueryConfigProfiles failed", false);
if (num_supported_profiles < 0 || num_supported_profiles > max_profiles) {
LOG(ERROR) << "vaQueryConfigProfiles returned: " << num_supported_profiles;
@@ -402,8 +400,7 @@ bool VaapiWrapper::IsEntrypointSupported_Locked(VAProfile va_profile,
base::checked_cast<size_t>(max_entrypoints));
int num_supported_entrypoints;
- VAStatus va_res = vaQueryConfigEntrypoints(va_display_,
- va_profile,
+ VAStatus va_res = vaQueryConfigEntrypoints(va_display_, va_profile,
&supported_entrypoints[0],
&num_supported_entrypoints);
VA_SUCCESS_OR_RETURN(va_res, "vaQueryConfigEntrypoints failed", false);
@@ -414,8 +411,7 @@ bool VaapiWrapper::IsEntrypointSupported_Locked(VAProfile va_profile,
return false;
}
- if (std::find(supported_entrypoints.begin(),
- supported_entrypoints.end(),
+ if (std::find(supported_entrypoints.begin(), supported_entrypoints.end(),
entrypoint) == supported_entrypoints.end()) {
DVLOG(1) << "Unsupported entrypoint";
return false;
@@ -433,8 +429,8 @@ bool VaapiWrapper::AreAttribsSupported_Locked(
for (size_t i = 0; i < required_attribs.size(); ++i)
attribs[i].value = 0;
- VAStatus va_res = vaGetConfigAttributes(
- va_display_, va_profile, entrypoint, &attribs[0], attribs.size());
+ VAStatus va_res = vaGetConfigAttributes(va_display_, va_profile, entrypoint,
+ &attribs[0], attribs.size());
VA_SUCCESS_OR_RETURN(va_res, "vaGetConfigAttributes failed", false);
for (size_t i = 0; i < required_attribs.size(); ++i) {
@@ -456,21 +452,17 @@ bool VaapiWrapper::GetMaxResolution_Locked(
gfx::Size* resolution) {
va_lock_->AssertAcquired();
VAConfigID va_config_id;
- VAStatus va_res = vaCreateConfig(
- va_display_,
- va_profile,
- entrypoint,
- &required_attribs[0],
- required_attribs.size(),
- &va_config_id);
+ VAStatus va_res =
+ vaCreateConfig(va_display_, va_profile, entrypoint, &required_attribs[0],
+ required_attribs.size(), &va_config_id);
VA_SUCCESS_OR_RETURN(va_res, "vaCreateConfig failed", false);
// Calls vaQuerySurfaceAttributes twice. The first time is to get the number
// of attributes to prepare the space and the second time is to get all
// attributes.
unsigned int num_attribs;
- va_res = vaQuerySurfaceAttributes(
- va_display_, va_config_id, nullptr, &num_attribs);
+ va_res = vaQuerySurfaceAttributes(va_display_, va_config_id, nullptr,
+ &num_attribs);
VA_SUCCESS_OR_RETURN(va_res, "vaQuerySurfaceAttributes failed", false);
if (!num_attribs)
return false;
@@ -478,8 +470,8 @@ bool VaapiWrapper::GetMaxResolution_Locked(
std::vector<VASurfaceAttrib> attrib_list(
base::checked_cast<size_t>(num_attribs));
- va_res = vaQuerySurfaceAttributes(
- va_display_, va_config_id, &attrib_list[0], &num_attribs);
+ va_res = vaQuerySurfaceAttributes(va_display_, va_config_id, &attrib_list[0],
+ &num_attribs);
VA_SUCCESS_OR_RETURN(va_res, "vaQuerySurfaceAttributes failed", false);
resolution->SetSize(0, 0);
@@ -501,15 +493,12 @@ bool VaapiWrapper::Initialize(CodecMode mode, VAProfile va_profile) {
TryToSetVADisplayAttributeToLocalGPU();
VAEntrypoint entrypoint =
- (mode == kEncode ? VAEntrypointEncSlice : VAEntrypointVLD);
+ (mode == kEncode ? VAEntrypointEncSlice : VAEntrypointVLD);
std::vector<VAConfigAttrib> required_attribs = GetRequiredAttribs(mode);
base::AutoLock auto_lock(*va_lock_);
- VAStatus va_res = vaCreateConfig(va_display_,
- va_profile,
- entrypoint,
- &required_attribs[0],
- required_attribs.size(),
- &va_config_id_);
+ VAStatus va_res =
+ vaCreateConfig(va_display_, va_profile, entrypoint, &required_attribs[0],
+ required_attribs.size(), &va_config_id_);
VA_SUCCESS_OR_RETURN(va_res, "vaCreateConfig failed", false);
return true;
@@ -558,10 +547,9 @@ bool VaapiWrapper::CreateSurfaces(unsigned int va_format,
}
// And create a context associated with them.
- va_res = vaCreateContext(va_display_, va_config_id_,
- size.width(), size.height(), VA_PROGRESSIVE,
- &va_surface_ids_[0], va_surface_ids_.size(),
- &va_context_id_);
+ va_res = vaCreateContext(va_display_, va_config_id_, size.width(),
+ size.height(), VA_PROGRESSIVE, &va_surface_ids_[0],
+ va_surface_ids_.size(), &va_context_id_);
VA_LOG_ON_ERROR(va_res, "vaCreateContext failed");
if (va_res != VA_STATUS_SUCCESS) {
@@ -576,7 +564,7 @@ bool VaapiWrapper::CreateSurfaces(unsigned int va_format,
void VaapiWrapper::DestroySurfaces() {
base::AutoLock auto_lock(*va_lock_);
- DVLOG(2) << "Destroying " << va_surface_ids_.size() << " surfaces";
+ DVLOG(2) << "Destroying " << va_surface_ids_.size() << " surfaces";
if (va_context_id_ != VA_INVALID_ID) {
VAStatus va_res = vaDestroyContext(va_display_, va_context_id_);
@@ -711,9 +699,8 @@ bool VaapiWrapper::SubmitBuffer(VABufferType va_buffer_type,
base::AutoLock auto_lock(*va_lock_);
VABufferID buffer_id;
- VAStatus va_res = vaCreateBuffer(va_display_, va_context_id_,
- va_buffer_type, size,
- 1, buffer, &buffer_id);
+ VAStatus va_res = vaCreateBuffer(va_display_, va_context_id_, va_buffer_type,
+ size, 1, buffer, &buffer_id);
VA_SUCCESS_OR_RETURN(va_res, "Failed to create a VA buffer", false);
switch (va_buffer_type) {
@@ -738,13 +725,9 @@ bool VaapiWrapper::SubmitVAEncMiscParamBuffer(
base::AutoLock auto_lock(*va_lock_);
VABufferID buffer_id;
- VAStatus va_res = vaCreateBuffer(va_display_,
- va_context_id_,
- VAEncMiscParameterBufferType,
- sizeof(VAEncMiscParameterBuffer) + size,
- 1,
- NULL,
- &buffer_id);
+ VAStatus va_res = vaCreateBuffer(
+ va_display_, va_context_id_, VAEncMiscParameterBufferType,
+ sizeof(VAEncMiscParameterBuffer) + size, 1, NULL, &buffer_id);
VA_SUCCESS_OR_RETURN(va_res, "Failed to create a VA buffer", false);
void* data_ptr = NULL;
@@ -787,13 +770,9 @@ void VaapiWrapper::DestroyPendingBuffers() {
bool VaapiWrapper::CreateCodedBuffer(size_t size, VABufferID* buffer_id) {
base::AutoLock auto_lock(*va_lock_);
- VAStatus va_res = vaCreateBuffer(va_display_,
- va_context_id_,
- VAEncCodedBufferType,
- size,
- 1,
- NULL,
- buffer_id);
+ VAStatus va_res =
+ vaCreateBuffer(va_display_, va_context_id_, VAEncCodedBufferType, size, 1,
+ NULL, buffer_id);
VA_SUCCESS_OR_RETURN(va_res, "Failed to create a coded buffer", false);
const auto is_new_entry = coded_buffers_.insert(*buffer_id).second;
@@ -805,8 +784,7 @@ void VaapiWrapper::DestroyCodedBuffers() {
base::AutoLock auto_lock(*va_lock_);
for (std::set<VABufferID>::const_iterator iter = coded_buffers_.begin();
- iter != coded_buffers_.end();
- ++iter) {
+ iter != coded_buffers_.end(); ++iter) {
VAStatus va_res = vaDestroyBuffer(va_display_, *iter);
VA_LOG_ON_ERROR(va_res, "vaDestroyBuffer failed");
}
@@ -822,24 +800,20 @@ bool VaapiWrapper::Execute(VASurfaceID va_surface_id) {
DVLOG(4) << "Target VA surface " << va_surface_id;
// Get ready to execute for given surface.
- VAStatus va_res = vaBeginPicture(va_display_, va_context_id_,
- va_surface_id);
+ VAStatus va_res = vaBeginPicture(va_display_, va_context_id_, va_surface_id);
VA_SUCCESS_OR_RETURN(va_res, "vaBeginPicture failed", false);
if (pending_va_bufs_.size() > 0) {
// Commit parameter and slice buffers.
- va_res = vaRenderPicture(va_display_,
- va_context_id_,
- &pending_va_bufs_[0],
+ va_res = vaRenderPicture(va_display_, va_context_id_, &pending_va_bufs_[0],
pending_va_bufs_.size());
VA_SUCCESS_OR_RETURN(va_res, "vaRenderPicture for va_bufs failed", false);
}
if (pending_slice_bufs_.size() > 0) {
- va_res = vaRenderPicture(va_display_,
- va_context_id_,
- &pending_slice_bufs_[0],
- pending_slice_bufs_.size());
+ va_res =
+ vaRenderPicture(va_display_, va_context_id_, &pending_slice_bufs_[0],
+ pending_slice_bufs_.size());
VA_SUCCESS_OR_RETURN(va_res, "vaRenderPicture for slices failed", false);
}
@@ -867,12 +841,9 @@ bool VaapiWrapper::PutSurfaceIntoPixmap(VASurfaceID va_surface_id,
VA_SUCCESS_OR_RETURN(va_res, "Failed syncing surface", false);
// Put the data into an X Pixmap.
- va_res = vaPutSurface(va_display_,
- va_surface_id,
- x_pixmap,
- 0, 0, dest_size.width(), dest_size.height(),
- 0, 0, dest_size.width(), dest_size.height(),
- NULL, 0, 0);
+ va_res = vaPutSurface(va_display_, va_surface_id, x_pixmap, 0, 0,
+ dest_size.width(), dest_size.height(), 0, 0,
+ dest_size.width(), dest_size.height(), NULL, 0, 0);
VA_SUCCESS_OR_RETURN(va_res, "Failed putting surface to pixmap", false);
return true;
}
@@ -1010,8 +981,8 @@ bool VaapiWrapper::DownloadAndDestroyCodedBuffer(VABufferID buffer_id,
VA_SUCCESS_OR_RETURN(va_res, "Failed syncing surface", false);
VACodedBufferSegment* buffer_segment = NULL;
- va_res = vaMapBuffer(
- va_display_, buffer_id, reinterpret_cast<void**>(&buffer_segment));
+ va_res = vaMapBuffer(va_display_, buffer_id,
+ reinterpret_cast<void**>(&buffer_segment));
VA_SUCCESS_OR_RETURN(va_res, "vaMapBuffer failed", false);
DCHECK(target_ptr);
@@ -1184,8 +1155,7 @@ VaapiWrapper::LazyProfileInfos::LazyProfileInfos() {
}
}
-VaapiWrapper::LazyProfileInfos::~LazyProfileInfos() {
-}
+VaapiWrapper::LazyProfileInfos::~LazyProfileInfos() {}
std::vector<VaapiWrapper::ProfileInfo>
VaapiWrapper::LazyProfileInfos::GetSupportedProfileInfosForCodecMode(
@@ -1193,8 +1163,8 @@ VaapiWrapper::LazyProfileInfos::GetSupportedProfileInfosForCodecMode(
return supported_profiles_[mode];
}
-bool VaapiWrapper::LazyProfileInfos::IsProfileSupported(
- CodecMode mode, VAProfile va_profile) {
+bool VaapiWrapper::LazyProfileInfos::IsProfileSupported(CodecMode mode,
+ VAProfile va_profile) {
for (const auto& profile : supported_profiles_[mode]) {
if (profile.va_profile == va_profile)
return true;
@@ -1268,7 +1238,7 @@ void VaapiWrapper::VADisplayState::SetDrmFd(base::PlatformFile fd) {
bool VaapiWrapper::VADisplayState::VAAPIVersionLessThan(int major, int minor) {
return (major_version_ < major) ||
- (major_version_ == major && minor_version_ < minor);
+ (major_version_ == major && minor_version_ < minor);
}
-} // namespace content
+} // namespace media

Powered by Google App Engine
This is Rietveld 408576698