plugins: don't use gst_pad_get_allowed_caps()

gst_pad_get_allowed_caps() query the pad and the peer pad. In the case
decoders, that is OK, but in the case of the postproc might lead loops,
since the gst_base_transform_query_caps() forwards the query upstream
and forth.

Instead of gst_pad_get_allowed_caps() we only query the peer with
gst_pad_peer_query_caps() using the pad's template as filter.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>

https://bugzilla.gnome.org/show_bug.cgi?id=752558
This commit is contained in:
Víctor Manuel Jáquez Leal 2015-07-21 18:45:56 +02:00
parent 4b5fcaaf04
commit c76fe74297

View file

@ -461,10 +461,12 @@ gst_vaapi_find_preferred_caps_feature (GstPad * pad, GstVideoFormat format,
GstCaps *gl_texture_upload_caps = NULL; GstCaps *gl_texture_upload_caps = NULL;
GstCaps *sysmem_caps = NULL; GstCaps *sysmem_caps = NULL;
GstCaps *vaapi_caps = NULL; GstCaps *vaapi_caps = NULL;
GstCaps *out_caps; GstCaps *out_caps, *templ;
GstVideoFormat out_format; GstVideoFormat out_format;
out_caps = gst_pad_get_allowed_caps (pad); templ = gst_pad_get_pad_template_caps (pad);
out_caps = gst_pad_peer_query_caps (pad, templ);
gst_caps_unref (templ);
if (!out_caps) { if (!out_caps) {
feature = GST_VAAPI_CAPS_FEATURE_NOT_NEGOTIATED; feature = GST_VAAPI_CAPS_FEATURE_NOT_NEGOTIATED;
goto cleanup; goto cleanup;