diff options
author | Johns <johns98@gmx.net> | 2012-07-27 19:15:48 +0200 |
---|---|---|
committer | Johns <johns98@gmx.net> | 2012-07-27 19:15:48 +0200 |
commit | 9ec077ec8a2d598fd80a4d03144724b03096b804 (patch) | |
tree | 67d8ea5b6e5b0a35319e86b5146d11a651b117f6 /video.c | |
parent | 8b0d8d84463b22a4183a567aaa300f30bc2a2815 (diff) | |
download | vdr-plugin-softhddevice-9ec077ec8a2d598fd80a4d03144724b03096b804.tar.gz vdr-plugin-softhddevice-9ec077ec8a2d598fd80a4d03144724b03096b804.tar.bz2 |
VA-API/XvBA backend improvements.
Diffstat (limited to 'video.c')
-rw-r--r-- | video.c | 17 |
1 files changed, 13 insertions, 4 deletions
@@ -1271,9 +1271,10 @@ static void AutoCropDetect(AutoCropCtx * autocrop, int width, int height, #ifdef USE_VAAPI -static int VaapiBuggyVdpau; ///< fix libva-driver-vdpau bugs -static int VaapiBuggyIntel; ///< fix libva-driver-intel bugs -static int VaapiNewIntel; ///< new libva-driver-intel driver +static char VaapiBuggyXvBA; ///< fix xvba-video bugs +static char VaapiBuggyVdpau; ///< fix libva-driver-vdpau bugs +static char VaapiBuggyIntel; ///< fix libva-driver-intel bugs +static char VaapiNewIntel; ///< new libva-driver-intel driver static VADisplay *VaDisplay; ///< VA-API display @@ -1591,7 +1592,10 @@ static VASurfaceID VaapiGetSurface(VaapiDecoder * decoder) surface = decoder->SurfacesFree[i]; if (vaQuerySurfaceStatus(decoder->VaDisplay, surface, &status) != VA_STATUS_SUCCESS) { - Error(_("video/vaapi: vaQuerySurface failed\n")); + // this fails with XvBA und mpeg softdecoder + if (!VaapiBuggyXvBA) { + Error(_("video/vaapi: vaQuerySurface failed\n")); + } status = VASurfaceReady; } // surface still in use, try next @@ -2111,6 +2115,8 @@ static int VaapiInit(const char *display_name) display_name); return 0; } + // XvBA needs this: + setenv("DISPLAY", display_name, 1); if (vaInitialize(VaDisplay, &major, &minor) != VA_STATUS_SUCCESS) { Error(_("video/vaapi: Can't inititialize VA-API on '%s'\n"), @@ -2130,6 +2136,9 @@ static int VaapiInit(const char *display_name) setenv("VDPAU_VIDEO_PUTSURFACE_FAST", "0", 0); VaapiBuggyVdpau = 1; } + if (strstr(s, "XvBA")) { + VaapiBuggyXvBA = 1; + } if (strstr(s, "Intel i965")) { VaapiBuggyIntel = 1; } |