Black screen with VAAPI on intel-media-driver 22.3.1
Brought to you by:
phintuka
I'm using 2.2.0+git20231014-81-e2192b6 with intel-media-driver 22.3.1 on a Jammy-based Ubuntu (Kernel 6.2)
Hardware is the IGP of an Intel N100M.
When executing vdr-sxfe--hud --syslog xvdr+tcp://127.0.0.1
everything works, except it's software-decoded with a massive CPU load.
When executing vdr-sxfe --video=vaapi --hud --syslog xvdr+tcp://127.0.0.1
I see only a black screen with the audio playing. The menu is visible, useable and hardware-accelerated (confirmed by intel_gpu_tp
).
libva info: VA-API version 1.14.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_14
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.14 (libva 2.12.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 22.3.1 ()
Verbose excerpt from syslog
Source is a 720p DVB-S2 stream from a Astra 19.2E channel.
The problems seems to be xine and/or iHD driver related.
A
xine -V vaapi "xvdr+tcp://127.0.0.1:37890#nocache"
shows a black screen as well.Attached is the verbose log.
Let me know in case I should report this at the xine repository instead (not sure, since you're active as contributor there, too)
Last edit: Interlude 2023-11-05
Is this with "real" X11 or Wayland+XWayland ? Xine's vaapi video output doesn't work with XWayland.
You could also try if xine can play recordings with vaapi:
xine -V vaapi /path/to/some/recording.ts
Real X11 - it's the Xfce edition of Linux Mint 21.2.
I tried xine -V vaapi with a VDR TS recording from yesterday, same result: black screen, only audio.
Attached you can find the verbose log.
Not sure if related, but I found a discussion about xine, vaPutSurface() errors and iHD/i965 problems
https://github.com/intel/libva/issues/677
specifically here
https://github.com/intel/libva/issues/677#issuecomment-1410873348
Yes, I think it is the same issue.
One possible solution is using opengl2 video output with VAAPI decoding. It should be used automatically when EGL is used. With X11 one can "force" EGL instead of GLX by removing xine GLX plugin:
After this, verbose log should show something like this: