static gboolean gst_chop_my_data_sink_event (GstPad * pad, GstEvent * event) { GstFlowReturn ret = GST_FLOW_OK; gboolean res; GstChopMyData *chopmydata; chopmydata = GST_CHOP_MY_DATA (gst_pad_get_parent (pad)); GST_DEBUG_OBJECT (chopmydata, "event"); switch (GST_EVENT_TYPE (event)) { case GST_EVENT_FLUSH_START: ret = gst_chop_my_data_process (chopmydata, TRUE); res = gst_pad_push_event (chopmydata->srcpad, event); break; case GST_EVENT_FLUSH_STOP: res = gst_pad_push_event (chopmydata->srcpad, event); break; case GST_EVENT_NEWSEGMENT: res = gst_pad_push_event (chopmydata->srcpad, event); break; case GST_EVENT_EOS: ret = gst_chop_my_data_process (chopmydata, TRUE); res = gst_pad_push_event (chopmydata->srcpad, event); break; default: res = gst_pad_push_event (chopmydata->srcpad, event); break; } gst_object_unref (chopmydata); return TRUE; }
static gboolean gst_chop_my_data_sink_event (GstPad * pad, GstObject * parent, GstEvent * event) { gboolean res; GstChopMyData *chopmydata; chopmydata = GST_CHOP_MY_DATA (parent); GST_DEBUG_OBJECT (chopmydata, "event"); switch (GST_EVENT_TYPE (event)) { case GST_EVENT_FLUSH_START: res = gst_pad_push_event (chopmydata->srcpad, event); break; case GST_EVENT_FLUSH_STOP: gst_adapter_clear (chopmydata->adapter); res = gst_pad_push_event (chopmydata->srcpad, event); break; case GST_EVENT_SEGMENT: res = gst_pad_push_event (chopmydata->srcpad, event); break; case GST_EVENT_EOS: gst_chop_my_data_process (chopmydata, TRUE); res = gst_pad_push_event (chopmydata->srcpad, event); break; default: res = gst_pad_push_event (chopmydata->srcpad, event); break; } return res; }
static GstFlowReturn gst_chop_my_data_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer) { GstChopMyData *chopmydata; GstFlowReturn ret; chopmydata = GST_CHOP_MY_DATA (parent); GST_DEBUG_OBJECT (chopmydata, "chain"); gst_adapter_push (chopmydata->adapter, buffer); ret = gst_chop_my_data_process (chopmydata, FALSE); return ret; }