static GstStateChangeReturn gst_wavpack_parse_change_state (GstElement * element, GstStateChange transition) { GstWavpackParse *wvparse = GST_WAVPACK_PARSE (element); GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS; switch (transition) { case GST_STATE_CHANGE_READY_TO_PAUSED: gst_segment_init (&wvparse->segment, GST_FORMAT_DEFAULT); wvparse->segment.last_stop = 0; default: break; } if (GST_ELEMENT_CLASS (parent_class)->change_state) ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition); switch (transition) { case GST_STATE_CHANGE_PAUSED_TO_READY: gst_wavpack_parse_reset (wvparse); break; default: break; } return ret; }
static void gst_wavpack_parse_finalize (GObject * object) { gst_wavpack_parse_reset (GST_WAVPACK_PARSE (object)); G_OBJECT_CLASS (parent_class)->finalize (object); }
static void gst_wavpack_parse_init (GstWavpackParse * parse, GstWavpackParseClass * gclass) { GstElementClass *klass = GST_ELEMENT_GET_CLASS (parse); GstPadTemplate *tmpl; tmpl = gst_element_class_get_pad_template (klass, "sink"); parse->sinkpad = gst_pad_new_from_template (tmpl, "sink"); gst_pad_set_activate_function (parse->sinkpad, GST_DEBUG_FUNCPTR (gst_wavpack_parse_sink_activate)); gst_pad_set_activatepull_function (parse->sinkpad, GST_DEBUG_FUNCPTR (gst_wavpack_parse_sink_activate_pull)); gst_pad_set_event_function (parse->sinkpad, GST_DEBUG_FUNCPTR (gst_wavpack_parse_sink_event)); gst_pad_set_chain_function (parse->sinkpad, GST_DEBUG_FUNCPTR (gst_wavpack_parse_chain)); gst_element_add_pad (GST_ELEMENT (parse), parse->sinkpad); parse->srcpad = NULL; gst_wavpack_parse_reset (parse); }