resync on discont events

Original commit message from CVS:
resync on discont events
This commit is contained in:
Wim Taymans 2003-03-04 22:04:05 +00:00
parent 2ce9feebb7
commit a92a485542

View file

@ -198,6 +198,8 @@ gst_goom_init (GstGOOM *goom)
gst_element_add_pad (GST_ELEMENT (goom), goom->sinkpad); gst_element_add_pad (GST_ELEMENT (goom), goom->sinkpad);
gst_element_add_pad (GST_ELEMENT (goom), goom->srcpad); gst_element_add_pad (GST_ELEMENT (goom), goom->srcpad);
GST_FLAG_SET (goom, GST_ELEMENT_EVENT_AWARE);
gst_pad_set_chain_function (goom->sinkpad, gst_goom_chain); gst_pad_set_chain_function (goom->sinkpad, gst_goom_chain);
gst_pad_set_link_function (goom->sinkpad, gst_goom_sinkconnect); gst_pad_set_link_function (goom->sinkpad, gst_goom_sinkconnect);
@ -232,6 +234,25 @@ gst_goom_chain (GstPad *pad, GstBuffer *bufin)
GST_DEBUG (0, "GOOM: chainfunc called"); GST_DEBUG (0, "GOOM: chainfunc called");
if (GST_IS_EVENT (bufin)) {
GstEvent *event = GST_EVENT (bufin);
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_DISCONTINUOUS:
{
gint64 value = 0;
gst_event_discont_get_value (event, GST_FORMAT_TIME, &value);
goom->next_time = value;
}
default:
gst_pad_event_default (pad, event);
break;
}
return;
}
samples_in = GST_BUFFER_SIZE (bufin) / sizeof (gint16); samples_in = GST_BUFFER_SIZE (bufin) / sizeof (gint16);
GST_DEBUG (0, "input buffer has %d samples", samples_in); GST_DEBUG (0, "input buffer has %d samples", samples_in);