imagefreeze: avoid assertion when using accept caps query

This query must receive a fixed caps, so imagefreeze should
fixate its framerate before sending the query downstream.

https://bugzilla.gnome.org/show_bug.cgi?id=686837
This commit is contained in:
Thiago Santos 2012-10-25 00:43:51 -03:00
parent 4c6ca8c0fc
commit 115581eb2e

View file

@ -216,9 +216,9 @@ gst_image_freeze_sink_setcaps (GstImageFreeze * self, GstCaps * caps)
GstStructure *s = gst_structure_copy (gst_caps_get_structure (caps, i)); GstStructure *s = gst_structure_copy (gst_caps_get_structure (caps, i));
gst_caps_append_structure (candidate, s); gst_caps_append_structure (candidate, s);
if (gst_pad_peer_query_accept_caps (self->srcpad, candidate)) { if (gst_structure_has_field_typed (s, "framerate", GST_TYPE_FRACTION) ||
if (gst_structure_has_field_typed (s, "framerate", GST_TYPE_FRACTION) || gst_structure_fixate_field_nearest_fraction (s, "framerate", 25, 1)) {
gst_structure_fixate_field_nearest_fraction (s, "framerate", 25, 1)) { if (gst_pad_peer_query_accept_caps (self->srcpad, candidate)) {
gst_structure_get_fraction (s, "framerate", &fps_n, &fps_d); gst_structure_get_fraction (s, "framerate", &fps_n, &fps_d);
if (fps_d != 0) { if (fps_d != 0) {
g_mutex_lock (&self->lock); g_mutex_lock (&self->lock);