vaapidecodebin should default to disable-vpp mode if vaapipostproc element is missing
On an Ubuntu 23.04 system with a Intel Kaby Lake CPU, I receive the following error when trying to play an MP4 video through Totem:
GStreamer element vaapipostproc is required to play the file, but it is not installed
This is using the VA-API drivers from the intel-media-va-driver package (i.e. intel media-driver compiled with
ENABLE_NONFREE_KERNELS=OFF). In this configuration, VA-API post processing is not supported for this generation of CPU, so the
vaapipostproc element is not made available by the plugin:
$ vainfo libva info: VA-API version 1.17.0 libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so libva info: Found init function __vaDriverInit_1_17 libva info: va_openDriver() returns 0 vainfo: VA-API version: 1.17 (libva 2.12.0) vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 23.1.2 () vainfo: Supported profile and entrypoints VAProfileMPEG2Simple : VAEntrypointVLD VAProfileMPEG2Main : VAEntrypointVLD VAProfileH264Main : VAEntrypointVLD VAProfileH264Main : VAEntrypointEncSliceLP VAProfileH264High : VAEntrypointVLD VAProfileH264High : VAEntrypointEncSliceLP VAProfileJPEGBaseline : VAEntrypointVLD VAProfileJPEGBaseline : VAEntrypointEncPicture VAProfileH264ConstrainedBaseline: VAEntrypointVLD VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP VAProfileVP8Version0_3 : VAEntrypointVLD VAProfileHEVCMain : VAEntrypointVLD VAProfileHEVCMain10 : VAEntrypointVLD VAProfileVP9Profile0 : VAEntrypointVLD VAProfileVP9Profile2 : VAEntrypointVLD
It seems the attempt to create the
vaapipostproc element occurs within
vaapidecodebin, where it goes on to post the missing element message:
This seems like an odd thing to do: there is no other GStreamer plugin I could install that would make the element available, since both elements belong to the same plugin.
The element includes a code path to run without
vaapipostproc, which I can force by setting
GST_VAAPI_DISABLE_VPP=1. Doing so lets Totem play the video correctly. It would seem sensible to default to this mode when the plugin knows that it won't be able to create the element instead of posting the missing element message.