[Bug 761405] New: decodebin/vaapi: ranking vaapi breaks plugging
GStreamer (GNOME Bugzilla)
bugzilla at gnome.org
Mon Feb 1 16:02:12 UTC 2016
https://bugzilla.gnome.org/show_bug.cgi?id=761405
Bug ID: 761405
Summary: decodebin/vaapi: ranking vaapi breaks plugging
Classification: Platform
Product: GStreamer
Version: git master
OS: Linux
Status: NEW
Severity: major
Priority: Normal
Component: gst-plugins-good
Assignee: gstreamer-bugs at lists.freedesktop.org
Reporter: marc.leeman at gmail.com
QA Contact: gstreamer-bugs at lists.freedesktop.org
GNOME version: ---
Installing gstreamer-vaapi is enough to break auto plugging behaviour.
Because vaapi modules require specific hardware (e.g. QuickSync) and a specific
environment (DISPLAY set with running X Server); installing these modules break
systems that depends on autoplugging.
Consider a simple application that does transcoding in the background, while
using vaapi to decode video if an X server is running.
Due to the higher ranking (PRIMARY+2), the vaapi modules are always picked over
the generic sofware based solution.
See the att'd simple example.
barco at EMS-005008087c8a:~$ gst-launch-1.0 uridecodebin
uri=file:///home/barco/some-file.mkv ! fakesink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Stream with high frequencies VQ coding
libva info: VA-API version 0.38.0
libva info: va_getDriverName() returns -1
libva error: va_getDriverName() failed with unknown libva
error,driver_name=(null)
libva info: VA-API version 0.38.0
libva info: va_getDriverName() returns -1
libva error: va_getDriverName() failed with unknown libva
error,driver_name=(null)
libva info: VA-API version 0.38.0
libva info: va_getDriverName() returns 1
libva error: va_getDriverName() failed with operation failed,driver_name=i965
ERROR: from element
/GstPipeline:pipeline0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstVaapiDecodeBin:vaapidecodebin0/GstVaapiDecode:vaapidecode:
Could not initialize supporting library.
Additional debug info:
gstvideodecoder.c(2571): gst_video_decoder_change_state ():
/GstPipeline:pipeline0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstVaapiDecodeBin:vaapidecodebin0/GstVaapiDecode:vaapidecode:
Failed to open decoder
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
libva info: VA-API version 0.38.0
libva info: va_getDriverName() returns -1
libva error: va_getDriverName() failed with unknown libva
error,driver_name=(null)
libva info: VA-API version 0.38.0
libva info: va_getDriverName() returns -1
libva error: va_getDriverName() failed with unknown libva
error,driver_name=(null)
libva info: VA-API version 0.38.0
libva info: va_getDriverName() returns 1
libva error: va_getDriverName() failed with operation failed,driver_name=i965
Freeing pipeline ...
The current workaround is lowering the ranking of the hardware based elements:
We might need to resort to (in the app):
GstPluginFeature *feature;
GstRegistry *registry = gst_registry_get();
feature = gst_registry_lookup_feature (registry, "vaapidecodebin");
if (feature != NULL) {
gst_plugin_feature_set_rank (feature, GST_RANK_NONE);
gst_object_unref (feature);
}
and so forth :-(
Though this is obviously not a viable solution when new modules are installed
that were not yet considered.
--
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
More information about the gstreamer-bugs
mailing list