Soft validate caps since we only care about video/x-vaapi-surface as input. _setcaps() will check for other fields.

This commit is contained in:
gb 2010-05-17 12:32:34 +00:00 committed by Gwenole Beauchesne
parent 28f85a916d
commit 6b8f76b2ce

View file

@ -486,14 +486,11 @@ gst_vaapisink_buffer_alloc(
) )
{ {
GstVaapiSink * const sink = GST_VAAPISINK(base_sink); GstVaapiSink * const sink = GST_VAAPISINK(base_sink);
GstStructure *structure;
GstBuffer *buffer; GstBuffer *buffer;
GstCaps *sink_caps;
sink_caps = gst_static_pad_template_get_caps(&gst_vaapisink_sink_factory); structure = gst_caps_get_structure(caps, 0);
if (!sink_caps) if (!gst_structure_has_name(structure, "video/x-vaapi-surface"))
goto error_no_sink_caps;
if (!gst_caps_is_always_compatible(caps, sink_caps))
goto error_invalid_caps; goto error_invalid_caps;
buffer = gst_vaapi_video_buffer_new(sink->display); buffer = gst_vaapi_video_buffer_new(sink->display);
@ -501,26 +498,18 @@ gst_vaapisink_buffer_alloc(
goto error_create_buffer; goto error_create_buffer;
gst_buffer_set_caps(buffer, caps); gst_buffer_set_caps(buffer, caps);
gst_caps_unref(sink_caps);
*pout_buffer = buffer; *pout_buffer = buffer;
return GST_FLOW_OK; return GST_FLOW_OK;
/* ERRORS */ /* ERRORS */
error_no_sink_caps:
{
GST_DEBUG("failed to get static sink caps");
return GST_FLOW_UNEXPECTED;
}
error_invalid_caps: error_invalid_caps:
{ {
GST_DEBUG("failed to validate input caps"); GST_DEBUG("failed to validate input caps");
gst_caps_unref(sink_caps);
return GST_FLOW_UNEXPECTED; return GST_FLOW_UNEXPECTED;
} }
error_create_buffer: error_create_buffer:
{ {
GST_DEBUG("failed to create video buffer"); GST_DEBUG("failed to create video buffer");
gst_caps_unref(sink_caps);
return GST_FLOW_UNEXPECTED; return GST_FLOW_UNEXPECTED;
} }
} }