mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 20:21:24 +00:00
Added state change function to clear some state in READY
Original commit message from CVS: Added state change function to clear some state in READY
This commit is contained in:
parent
83fc370be3
commit
2ce9feebb7
1 changed files with 33 additions and 6 deletions
|
@ -123,6 +123,9 @@ GST_PAD_TEMPLATE_FACTORY (sink_template,
|
||||||
static void gst_goom_class_init (GstGOOMClass *klass);
|
static void gst_goom_class_init (GstGOOMClass *klass);
|
||||||
static void gst_goom_init (GstGOOM *goom);
|
static void gst_goom_init (GstGOOM *goom);
|
||||||
|
|
||||||
|
static GstElementStateReturn
|
||||||
|
gst_goom_change_state (GstElement *element);
|
||||||
|
|
||||||
static void gst_goom_set_property (GObject *object, guint prop_id,
|
static void gst_goom_set_property (GObject *object, guint prop_id,
|
||||||
const GValue *value, GParamSpec *pspec);
|
const GValue *value, GParamSpec *pspec);
|
||||||
static void gst_goom_get_property (GObject *object, guint prop_id,
|
static void gst_goom_get_property (GObject *object, guint prop_id,
|
||||||
|
@ -180,6 +183,8 @@ gst_goom_class_init(GstGOOMClass *klass)
|
||||||
|
|
||||||
gobject_class->set_property = gst_goom_set_property;
|
gobject_class->set_property = gst_goom_set_property;
|
||||||
gobject_class->get_property = gst_goom_get_property;
|
gobject_class->get_property = gst_goom_get_property;
|
||||||
|
|
||||||
|
gstelement_class->change_state = gst_goom_change_state;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -196,15 +201,9 @@ gst_goom_init (GstGOOM *goom)
|
||||||
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);
|
||||||
|
|
||||||
goom->next_time = 0;
|
|
||||||
goom->peerpool = NULL;
|
|
||||||
|
|
||||||
/* reset the initial video state */
|
|
||||||
goom->first_buffer = TRUE;
|
|
||||||
goom->width = 320;
|
goom->width = 320;
|
||||||
goom->height = 200;
|
goom->height = 200;
|
||||||
goom->fps = 25; /* desired frame rate */
|
goom->fps = 25; /* desired frame rate */
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static GstPadLinkReturn
|
static GstPadLinkReturn
|
||||||
|
@ -292,6 +291,34 @@ gst_goom_chain (GstPad *pad, GstBuffer *bufin)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static GstElementStateReturn
|
||||||
|
gst_goom_change_state (GstElement *element)
|
||||||
|
{
|
||||||
|
GstGOOM *goom = GST_GOOM (element);
|
||||||
|
|
||||||
|
switch (GST_STATE_TRANSITION (element)) {
|
||||||
|
case GST_STATE_NULL_TO_READY:
|
||||||
|
break;
|
||||||
|
case GST_STATE_READY_TO_NULL:
|
||||||
|
break;
|
||||||
|
case GST_STATE_READY_TO_PAUSED:
|
||||||
|
goom->next_time = 0;
|
||||||
|
goom->peerpool = NULL;
|
||||||
|
/* reset the initial video state */
|
||||||
|
goom->first_buffer = TRUE;
|
||||||
|
break;
|
||||||
|
case GST_STATE_PAUSED_TO_READY:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (GST_ELEMENT_CLASS (parent_class)->change_state)
|
||||||
|
return GST_ELEMENT_CLASS (parent_class)->change_state (element);
|
||||||
|
|
||||||
|
return GST_STATE_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gst_goom_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
|
gst_goom_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue