GNOME Bugzilla – Bug 731645
Vaapi plugins and playbin
Last modified: 2014-07-03 21:17:13 UTC
This bug is the continuation of #719372 to get vaapi plugins to work automatically with playbin. Attached are 2 patches to make that work on master of gstreamer/gst-plugins-base/gst-plugins-good and gstreamer-vaapi.
Created attachment 278435 [details] [review] find_preferred_caps_feature: discard caps with ANY features
Created attachment 278436 [details] [review] vaapidecode: make decoder work with playbin
Comment on attachment 278435 [details] [review] find_preferred_caps_feature: discard caps with ANY features This looks like a bug elsewhere in the code. You should intersect what downstream reports with what you can do, and on that result then decide on the best configuration. This here looks like the intersection is missing. After intersection all the ANY capsfeatures should be gone. If they are not we need to debug a bit more where they come from.
Comment on attachment 278436 [details] [review] vaapidecode: make decoder work with playbin Makes sense
Comment on attachment 278435 [details] [review] find_preferred_caps_feature: discard caps with ANY features First patch made obsolete by : http://cgit.freedesktop.org/gstreamer/gst-plugins-base/commit/?id=9d33b3896968db2abfc5d2cbca8196db09f6bcd5
commit 334a0ca8bd20181bcb66ce910c36a54886f99d56 Author: Lionel Landwerlin <llandwerlin@gmail.com> Date: Fri Jun 13 21:45:04 2014 +0100 vaapidecode: make decoder work with playbin When playbin/decodebin builds the pipeline, it puts decoders and sinks into different bins and forwards the queries from bins to bins. So in the initials steps the pipeline is built iteratively by playbin and looks like this : [filesrc] [filesrc] -> [typefind] [filesrc] -> [typefind] -> [demuxer] [filesrc] -> [typefind] -> [demuxer] -> [decoder] At this point the decoder is asked for its SRC caps and it will make a choice based on what gst_pad_peer_query_caps() returns. The problem is that the caps returns at that point includes caps features like ANY, essentially because playbin can plug in additional elements like videoscale, videoconv or deinterlace. This patch adds a another call to gst_vaapi_find_preferred_caps_feature() when the decoder decides its allocation, to make sure we asks the downstream elements when the entire pipeline has been built. https://bugzilla.gnome.org/show_bug.cgi?id=731645