diff options
author | Fei Jiang <fei.jiang@intel.com> | 2013-04-11 22:43:20 +0800 |
---|---|---|
committer | buildbot <buildbot@intel.com> | 2013-04-16 22:54:50 -0700 |
commit | 7769002df8c21dbfbf6b78ffcbc28bf321a03134 (patch) | |
tree | 9fdad3421f49a1aa0efe6ca01d48cb36aa5ba6d4 /va | |
parent | baf2f69a5fe5853d865bc5c701751441a925a4c4 (diff) | |
download | libva-7769002df8c21dbfbf6b78ffcbc28bf321a03134.tar.gz |
libva: on android, will pass driver name through vaDisplay
BZ: 98522
On baytrail, VP8 and MPEG4 are decoded by VXD engine,
while other codecs are decoded by GEN engine,
VXD user space driver is pvr_drv_video.so,
GEN user space driver is i965_drv_video.so, so sometime,
different decoding thread need let libva load different video driver.
Will pass driver name through vaDisplay in function vaGetDisplay.
To load pvr driver, need set vaDisplay="libva_driver_name=pvr".
Previous vaDisplay setting is still workable
Change-Id: Idcf974d1ba883b6e7283bc88e930a871abd920fc
Signed-off-by: Fei Jiang <fei.jiang@intel.com>
Reviewed-on: http://android.intel.com:8080/101399
Reviewed-by: Shi, PingX <pingx.shi@intel.com>
Reviewed-by: cactus <cactus@intel.com>
Tested-by: Shi, PingX <pingx.shi@intel.com>
Reviewed-by: buildbot <buildbot@intel.com>
Tested-by: buildbot <buildbot@intel.com>
Diffstat (limited to 'va')
-rw-r--r-- | va/android/va_android.cpp | 11 | ||||
-rwxr-xr-x | va/va.c | 4 |
2 files changed, 12 insertions, 3 deletions
diff --git a/va/android/va_android.cpp b/va/android/va_android.cpp index e2edb92..97c884c 100644 --- a/va/android/va_android.cpp +++ b/va/android/va_android.cpp @@ -115,8 +115,17 @@ static VAStatus va_DisplayContextGetDriverName ( return VA_STATUS_ERROR_UNKNOWN; } drm_state->auth_type = VA_DRM_AUTH_CUSTOM; + *driver_name = NULL; - return VA_DRM_GetDriverName(ctx, driver_name); + if (strncmp((char *)ctx->native_dpy, "libva_driver_name=", 18) == 0) { + *driver_name = strdup((char *)ctx->native_dpy + 18); + if (!driver_name) + return VA_STATUS_ERROR_ALLOCATION_FAILED; + else + return VA_STATUS_SUCCESS; + } else { + return VA_DRM_GetDriverName(ctx, driver_name); + } } @@ -458,7 +458,7 @@ VAStatus vaInitialize ( va_infoMessage("VA-API version %s\n", VA_VERSION_S); vaStatus = va_getDriverName(dpy, &driver_name); - va_infoMessage("va_getDriverName() returns %d\n", vaStatus); + va_infoMessage("va_getDriverName() returns %d, driver_name is %s.\n", vaStatus, driver_name); driver_name_env = getenv("LIBVA_DRIVER_NAME"); if (driver_name_env && geteuid() == getuid()) { @@ -470,7 +470,7 @@ VAStatus vaInitialize ( if (VA_STATUS_SUCCESS == vaStatus) { vaStatus = va_openDriver(dpy, driver_name); - va_infoMessage("va_openDriver() returns %d\n", vaStatus); + va_infoMessage("va_openDriver() returns %d.\n", vaStatus); *major_version = VA_MAJOR_VERSION; *minor_version = VA_MINOR_VERSION; |