mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 12:11:13 +00:00
vaapipostproc: return caps template if no display
This patch is a fix for my bad review of commit 6d73ca8d
. The element should
be able to return the available raw caps handled by the VA display, but that
only should happen when there a VA display. If there's none, the element
should use the caps template.
https://bugzilla.gnome.org/show_bug.cgi?id=768161
This commit is contained in:
parent
6d73ca8da2
commit
649c00d3c7
1 changed files with 13 additions and 17 deletions
|
@ -911,31 +911,27 @@ ensure_allowed_sinkpad_caps (GstVaapiPostproc * postproc)
|
||||||
if (postproc->allowed_sinkpad_caps)
|
if (postproc->allowed_sinkpad_caps)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
if (!GST_VAAPI_PLUGIN_BASE_DISPLAY (postproc))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
/* Create VA caps */
|
/* Create VA caps */
|
||||||
out_caps = gst_caps_from_string (GST_VAAPI_MAKE_SURFACE_CAPS ", "
|
out_caps = gst_caps_from_string (GST_VAAPI_MAKE_SURFACE_CAPS ", "
|
||||||
GST_CAPS_INTERLACED_MODES);
|
GST_CAPS_INTERLACED_MODES);
|
||||||
if (!out_caps) {
|
if (!out_caps) {
|
||||||
GST_ERROR_OBJECT (postproc, "failed to create VA sink caps");
|
GST_WARNING_OBJECT (postproc, "failed to create VA sink caps");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Append raw video caps */
|
raw_caps = gst_vaapi_plugin_base_get_allowed_raw_caps
|
||||||
if (GST_VAAPI_PLUGIN_BASE (postproc)->display) {
|
(GST_VAAPI_PLUGIN_BASE (postproc));
|
||||||
raw_caps =
|
if (!raw_caps) {
|
||||||
gst_vaapi_plugin_base_get_allowed_raw_caps (GST_VAAPI_PLUGIN_BASE
|
gst_caps_unref (out_caps);
|
||||||
(postproc));
|
GST_WARNING_OBJECT (postproc, "failed to create YUV sink caps");
|
||||||
} else {
|
return FALSE;
|
||||||
raw_caps =
|
|
||||||
gst_caps_from_string (GST_VIDEO_CAPS_MAKE (GST_VIDEO_FORMATS_ALL) ", "
|
|
||||||
GST_CAPS_INTERLACED_MODES);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (raw_caps) {
|
out_caps = gst_caps_make_writable (out_caps);
|
||||||
out_caps = gst_caps_make_writable (out_caps);
|
gst_caps_append (out_caps, gst_caps_copy (raw_caps));
|
||||||
gst_caps_append (out_caps, gst_caps_copy (raw_caps));
|
|
||||||
} else {
|
|
||||||
GST_WARNING_OBJECT (postproc, "failed to create YUV sink caps");
|
|
||||||
}
|
|
||||||
postproc->allowed_sinkpad_caps = out_caps;
|
postproc->allowed_sinkpad_caps = out_caps;
|
||||||
|
|
||||||
/* XXX: append VA/VPP filters */
|
/* XXX: append VA/VPP filters */
|
||||||
|
@ -1011,7 +1007,7 @@ gst_vaapipostproc_transform_caps_impl (GstBaseTransform * trans,
|
||||||
/* Generate the sink pad caps, that could be fixated afterwards */
|
/* Generate the sink pad caps, that could be fixated afterwards */
|
||||||
if (direction == GST_PAD_SRC) {
|
if (direction == GST_PAD_SRC) {
|
||||||
if (!ensure_allowed_sinkpad_caps (postproc))
|
if (!ensure_allowed_sinkpad_caps (postproc))
|
||||||
return NULL;
|
return gst_caps_from_string (gst_vaapipostproc_sink_caps_str);
|
||||||
return gst_caps_ref (postproc->allowed_sinkpad_caps);
|
return gst_caps_ref (postproc->allowed_sinkpad_caps);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue