static GstElementStateReturn gst_esdsink_change_state (GstElement *element);
static GstPadLinkReturn gst_esdsink_sinkconnect (GstPad *pad, GstCaps *caps);
+static void gst_esdsink_set_clock (GstElement *element, GstClock *clock);
static void gst_esdsink_chain (GstPad *pad, GstBuffer *buf);
static void gst_esdsink_set_property (GObject *object, guint prop_id,
gobject_class->get_property = gst_esdsink_get_property;
gstelement_class->change_state = gst_esdsink_change_state;
+ gstelement_class->set_clock = gst_esdsink_set_clock;
+ //gstelement_class->get_clock = gst_esdsink_get_clock;
}
static void
gst_pad_set_chain_function(esdsink->sinkpad, GST_DEBUG_FUNCPTR(gst_esdsink_chain));
gst_pad_set_link_function(esdsink->sinkpad, gst_esdsink_sinkconnect);
+ GST_FLAG_SET (esdsink, GST_ELEMENT_EVENT_AWARE);
+
esdsink->mute = FALSE;
esdsink->fd = -1;
/* FIXME: get default from somewhere better than just putting them inline. */
return GST_PAD_LINK_REFUSED;
}
+#if 0
+static GstClock *
+gst_esdsink_get_clock (GstElement *element)
+{
+ GstEsdsink *esdsink;
+
+ esdsink = GET_ESDSINK (element);
+
+ return GST_CLOCK(esdsink->provided_clock);
+}
+#endif
+
+static void
+gst_esdsink_set_clock (GstElement *element, GstClock *clock)
+{
+ GstEsdsink *esdsink;
+
+ esdsink = GST_ESDSINK (element);
+
+ esdsink->clock = clock;
+}
+
static void
gst_esdsink_chain (GstPad *pad, GstBuffer *buf)
{
goto done;
}
+ if (GST_IS_EVENT(buf)){
+ GstEvent *event = GST_EVENT(buf);
+
+ g_print("got event\n");
+
+ switch(GST_EVENT_TYPE(event)){
+ case GST_EVENT_EOS:
+ break;
+ case GST_EVENT_DISCONTINUOUS:
+ {
+ gint64 value;
+
+ if (gst_event_discont_get_value (event, GST_FORMAT_TIME, &value)) {
+ if (!gst_clock_handle_discont (esdsink->clock, value)){
+ //gst_esdsink_clock_set_active (osssink->provided_clock, FALSE);
+ }
+ //esdsink->handled = 0;
+ }
+ //esdsink->resync = TRUE;
+ break;
+ }
+ default:
+ gst_pad_event_default(pad, event);
+ break;
+ }
+ gst_event_unref(event);
+ return;
+ }
+
if (GST_BUFFER_DATA (buf) != NULL) {
if (!esdsink->mute && esdsink->fd >= 0) {
GST_DEBUG ("esdsink: fd=%d data=%p size=%d",