Commit 9f734472 authored by Sebastian Dröge's avatar Sebastian Dröge 🍵

goom2k1: Fix event handling and negotiate as soon as possible

parent 78c7c16e
......@@ -106,6 +106,8 @@ static gboolean gst_goom_sink_event (GstPad * pad, GstObject * parent,
static gboolean gst_goom_src_query (GstPad * pad, GstObject * parent,
GstQuery * query);
static gboolean gst_goom_src_negotiate (GstGoom * goom);
#define gst_goom_parent_class parent_class
typedef GstGoom GstGoom2k1;
typedef GstGoomClass GstGoom2k1Class;
......@@ -203,10 +205,12 @@ gst_goom_sink_setcaps (GstGoom * goom, GstCaps * caps)
res = gst_structure_get_int (structure, "channels", &goom->channels);
res &= gst_structure_get_int (structure, "rate", &goom->rate);
if (!res)
return FALSE;
goom->bps = goom->channels * sizeof (gint16);
return res;
return gst_goom_src_negotiate (goom);
}
static gboolean
......@@ -356,11 +360,11 @@ gst_goom_src_event (GstPad * pad, GstObject * parent, GstEvent * event)
goom->earliest_time = timestamp + diff;
GST_OBJECT_UNLOCK (goom);
res = gst_pad_push_event (goom->sinkpad, event);
res = gst_pad_event_default (pad, parent, event);
break;
}
default:
res = gst_pad_push_event (goom->sinkpad, event);
res = gst_pad_event_default (pad, parent, event);
break;
}
......@@ -385,12 +389,9 @@ gst_goom_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
gst_event_unref (event);
break;
}
case GST_EVENT_FLUSH_START:
res = gst_pad_push_event (goom->srcpad, event);
break;
case GST_EVENT_FLUSH_STOP:
gst_goom_reset (goom);
res = gst_pad_push_event (goom->srcpad, event);
res = gst_pad_event_default (pad, parent, event);
break;
case GST_EVENT_SEGMENT:
{
......@@ -399,11 +400,11 @@ gst_goom_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
* we can do QoS */
gst_event_copy_segment (event, &goom->segment);
res = gst_pad_push_event (goom->srcpad, event);
res = gst_pad_event_default (pad, parent, event);
break;
}
default:
res = gst_pad_push_event (goom->srcpad, event);
res = gst_pad_event_default (pad, parent, event);
break;
}
......@@ -469,12 +470,7 @@ gst_goom_src_query (GstPad * pad, GstObject * parent, GstQuery * query)
static GstFlowReturn
ensure_negotiated (GstGoom * goom)
{
gboolean reconfigure;
reconfigure = gst_pad_check_reconfigure (goom->srcpad);
/* we don't know an output format yet, pick one */
if (reconfigure || !gst_pad_has_current_caps (goom->srcpad)) {
if (gst_pad_check_reconfigure (goom->srcpad)) {
if (!gst_goom_src_negotiate (goom))
return GST_FLOW_NOT_NEGOTIATED;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment