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

Unified Diff: content/common/gpu/media/vaapi_h264_decoder.cc

Issue 10836098: Revert 150007 - Only dlopen() OMX/VAAPI libs in the GPU process, and only lazily dlsym() their symb… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 4 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: content/common/gpu/media/vaapi_h264_decoder.cc
===================================================================
--- content/common/gpu/media/vaapi_h264_decoder.cc (revision 150008)
+++ content/common/gpu/media/vaapi_h264_decoder.cc (working copy)
@@ -33,8 +33,8 @@
namespace content {
-void *vaapi_handle = NULL;
-void *vaapi_x11_handle = NULL;
+void *vaapi_handle = dlopen("libva.so", RTLD_NOW);
+void *vaapi_x11_handle = dlopen("libva-x11.so", RTLD_NOW);
typedef VADisplay (*VaapiGetDisplay)(Display *dpy);
typedef int (*VaapiDisplayIsValid)(VADisplay dpy);
@@ -105,30 +105,51 @@
typedef VAStatus (*VaapiDestroyBuffer)(VADisplay dpy, VABufferID buffer_id);
typedef const char* (*VaapiErrorStr)(VAStatus error_status);
-#define VAAPI_SYM(name, handle) Vaapi##name VAAPI_##name = NULL
+#define VAAPI_DLSYM(name, handle) \
+ Vaapi##name VAAPI_##name = \
+ reinterpret_cast<Vaapi##name>(dlsym((handle), "va"#name))
-VAAPI_SYM(GetDisplay, vaapi_x11_handle);
-VAAPI_SYM(DisplayIsValid, vaapi_handle);
-VAAPI_SYM(Initialize, vaapi_handle);
-VAAPI_SYM(Terminate, vaapi_handle);
-VAAPI_SYM(GetConfigAttributes, vaapi_handle);
-VAAPI_SYM(CreateConfig, vaapi_handle);
-VAAPI_SYM(DestroyConfig, vaapi_handle);
-VAAPI_SYM(CreateSurfaces, vaapi_handle);
-VAAPI_SYM(DestroySurfaces, vaapi_handle);
-VAAPI_SYM(CreateContext, vaapi_handle);
-VAAPI_SYM(DestroyContext, vaapi_handle);
-VAAPI_SYM(PutSurface, vaapi_x11_handle);
-VAAPI_SYM(SyncSurface, vaapi_x11_handle);
-VAAPI_SYM(BeginPicture, vaapi_handle);
-VAAPI_SYM(RenderPicture, vaapi_handle);
-VAAPI_SYM(EndPicture, vaapi_handle);
-VAAPI_SYM(CreateBuffer, vaapi_handle);
-VAAPI_SYM(DestroyBuffer, vaapi_handle);
-VAAPI_SYM(ErrorStr, vaapi_handle);
+VAAPI_DLSYM(GetDisplay, vaapi_x11_handle);
+VAAPI_DLSYM(DisplayIsValid, vaapi_handle);
+VAAPI_DLSYM(Initialize, vaapi_handle);
+VAAPI_DLSYM(Terminate, vaapi_handle);
+VAAPI_DLSYM(GetConfigAttributes, vaapi_handle);
+VAAPI_DLSYM(CreateConfig, vaapi_handle);
+VAAPI_DLSYM(DestroyConfig, vaapi_handle);
+VAAPI_DLSYM(CreateSurfaces, vaapi_handle);
+VAAPI_DLSYM(DestroySurfaces, vaapi_handle);
+VAAPI_DLSYM(CreateContext, vaapi_handle);
+VAAPI_DLSYM(DestroyContext, vaapi_handle);
+VAAPI_DLSYM(PutSurface, vaapi_x11_handle);
+VAAPI_DLSYM(SyncSurface, vaapi_x11_handle);
+VAAPI_DLSYM(BeginPicture, vaapi_handle);
+VAAPI_DLSYM(RenderPicture, vaapi_handle);
+VAAPI_DLSYM(EndPicture, vaapi_handle);
+VAAPI_DLSYM(CreateBuffer, vaapi_handle);
+VAAPI_DLSYM(DestroyBuffer, vaapi_handle);
+VAAPI_DLSYM(ErrorStr, vaapi_handle);
-// static
-bool VaapiH264Decoder::pre_sandbox_init_done_ = false;
+static bool AreVaapiFunctionPointersInitialized() {
+ return VAAPI_GetDisplay &&
+ VAAPI_DisplayIsValid &&
+ VAAPI_Initialize &&
+ VAAPI_Terminate &&
+ VAAPI_GetConfigAttributes &&
+ VAAPI_CreateConfig &&
+ VAAPI_DestroyConfig &&
+ VAAPI_CreateSurfaces &&
+ VAAPI_DestroySurfaces &&
+ VAAPI_CreateContext &&
+ VAAPI_DestroyContext &&
+ VAAPI_PutSurface &&
+ VAAPI_SyncSurface &&
+ VAAPI_BeginPicture &&
+ VAAPI_RenderPicture &&
+ VAAPI_EndPicture &&
+ VAAPI_CreateBuffer &&
+ VAAPI_DestroyBuffer &&
+ VAAPI_ErrorStr;
+}
class VaapiH264Decoder::DecodeSurface {
public:
@@ -475,6 +496,11 @@
return false;
}
+ if (!AreVaapiFunctionPointersInitialized()) {
+ DVLOG(1) << "Could not load libva";
+ return false;
+ }
+
if (!InitializeFBConfig()) {
DVLOG(1) << "Could not get a usable FBConfig";
return false;
@@ -2072,61 +2098,4 @@
return kNumReqPictures;
}
-// static
-void VaapiH264Decoder::PreSandboxInitialization() {
- DCHECK(!pre_sandbox_init_done_);
- vaapi_handle = dlopen("libva.so", RTLD_NOW);
- vaapi_x11_handle = dlopen("libva-x11.so", RTLD_NOW);
- pre_sandbox_init_done_ = vaapi_handle && vaapi_x11_handle;
-}
-
-// static
-bool VaapiH264Decoder::PostSandboxInitialization() {
- if (!pre_sandbox_init_done_)
- return false;
-#define VAAPI_DLSYM(name, handle) \
- VAAPI_##name = reinterpret_cast<Vaapi##name>(dlsym((handle), "va"#name)) \
-
- VAAPI_DLSYM(GetDisplay, vaapi_x11_handle);
- VAAPI_DLSYM(DisplayIsValid, vaapi_handle);
- VAAPI_DLSYM(Initialize, vaapi_handle);
- VAAPI_DLSYM(Terminate, vaapi_handle);
- VAAPI_DLSYM(GetConfigAttributes, vaapi_handle);
- VAAPI_DLSYM(CreateConfig, vaapi_handle);
- VAAPI_DLSYM(DestroyConfig, vaapi_handle);
- VAAPI_DLSYM(CreateSurfaces, vaapi_handle);
- VAAPI_DLSYM(DestroySurfaces, vaapi_handle);
- VAAPI_DLSYM(CreateContext, vaapi_handle);
- VAAPI_DLSYM(DestroyContext, vaapi_handle);
- VAAPI_DLSYM(PutSurface, vaapi_x11_handle);
- VAAPI_DLSYM(SyncSurface, vaapi_x11_handle);
- VAAPI_DLSYM(BeginPicture, vaapi_handle);
- VAAPI_DLSYM(RenderPicture, vaapi_handle);
- VAAPI_DLSYM(EndPicture, vaapi_handle);
- VAAPI_DLSYM(CreateBuffer, vaapi_handle);
- VAAPI_DLSYM(DestroyBuffer, vaapi_handle);
- VAAPI_DLSYM(ErrorStr, vaapi_handle);
-#undef VAAPI_DLSYM
-
- return VAAPI_GetDisplay &&
- VAAPI_DisplayIsValid &&
- VAAPI_Initialize &&
- VAAPI_Terminate &&
- VAAPI_GetConfigAttributes &&
- VAAPI_CreateConfig &&
- VAAPI_DestroyConfig &&
- VAAPI_CreateSurfaces &&
- VAAPI_DestroySurfaces &&
- VAAPI_CreateContext &&
- VAAPI_DestroyContext &&
- VAAPI_PutSurface &&
- VAAPI_SyncSurface &&
- VAAPI_BeginPicture &&
- VAAPI_RenderPicture &&
- VAAPI_EndPicture &&
- VAAPI_CreateBuffer &&
- VAAPI_DestroyBuffer &&
- VAAPI_ErrorStr;
-}
-
} // namespace content
« no previous file with comments | « content/common/gpu/media/vaapi_h264_decoder.h ('k') | content/common/gpu/media/vaapi_video_decode_accelerator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698