gst/base/gstbasetransform.c: Handle PAUSED->READY->PAUSED transition after negotiation occurred already.

Original commit message from CVS:
2005-08-01  Jan Schmidt  <thaytan@mad.scientist.com>
* gst/base/gstbasetransform.c: (gst_base_transform_init),
(gst_base_transform_handle_buffer),
(gst_base_transform_change_state):
Handle PAUSED->READY->PAUSED transition after negotiation
occurred already.
* gst/gstmessage.c: (gst_message_init):
Extra piece of debug for new messages.
This commit is contained in:
Jan Schmidt 2005-08-01 17:26:00 +00:00
parent 990ddc3b22
commit 4572dcaa86
4 changed files with 24 additions and 4 deletions

View file

@ -1,3 +1,12 @@
2005-08-01 Jan Schmidt <thaytan@mad.scientist.com>
* gst/base/gstbasetransform.c: (gst_base_transform_init),
(gst_base_transform_handle_buffer),
(gst_base_transform_change_state):
Handle PAUSED->READY->PAUSED transition after negotiation
occurred already.
* gst/gstmessage.c: (gst_message_init):
Extra piece of debug for new messages.
2005-08-01 Stefan Kost <ensonic@users.sf.net>
* configure.ac:

View file

@ -180,6 +180,7 @@ gst_base_transform_init (GstBaseTransform * trans, gpointer g_class)
gst_element_add_pad (GST_ELEMENT (trans), trans->srcpad);
trans->passthrough = FALSE;
trans->out_size = -1;
}
static GstCaps *
@ -581,7 +582,7 @@ gst_base_transform_handle_buffer (GstBaseTransform * trans, GstBuffer * inbuf,
else
ret = GST_FLOW_NOT_SUPPORTED;
if (ret)
if (ret != GST_FLOW_OK)
ret =
gst_base_transform_configure_caps (trans,
GST_PAD_CAPS (trans->sinkpad), GST_PAD_CAPS (trans->srcpad));
@ -734,7 +735,11 @@ gst_base_transform_change_state (GstElement * element)
break;
case GST_STATE_READY_TO_PAUSED:
GST_LOCK (trans);
trans->in_place = trans->passthrough;
if (GST_PAD_CAPS (trans->sinkpad) && GST_PAD_CAPS (trans->srcpad))
trans->in_place = gst_caps_is_equal (GST_PAD_CAPS (trans->sinkpad),
GST_PAD_CAPS (trans->srcpad)) || trans->passthrough;
else
trans->in_place = trans->passthrough;
trans->out_size = -1;
GST_UNLOCK (trans);
break;

View file

@ -94,6 +94,7 @@ gst_message_init (GTypeInstance * instance, gpointer g_class)
{
GstMessage *message = GST_MESSAGE (instance);
GST_CAT_INFO (GST_CAT_MESSAGE, "new message %p", message);
GST_MESSAGE_TIMESTAMP (message) = GST_CLOCK_TIME_NONE;
}

View file

@ -180,6 +180,7 @@ gst_base_transform_init (GstBaseTransform * trans, gpointer g_class)
gst_element_add_pad (GST_ELEMENT (trans), trans->srcpad);
trans->passthrough = FALSE;
trans->out_size = -1;
}
static GstCaps *
@ -581,7 +582,7 @@ gst_base_transform_handle_buffer (GstBaseTransform * trans, GstBuffer * inbuf,
else
ret = GST_FLOW_NOT_SUPPORTED;
if (ret)
if (ret != GST_FLOW_OK)
ret =
gst_base_transform_configure_caps (trans,
GST_PAD_CAPS (trans->sinkpad), GST_PAD_CAPS (trans->srcpad));
@ -734,7 +735,11 @@ gst_base_transform_change_state (GstElement * element)
break;
case GST_STATE_READY_TO_PAUSED:
GST_LOCK (trans);
trans->in_place = trans->passthrough;
if (GST_PAD_CAPS (trans->sinkpad) && GST_PAD_CAPS (trans->srcpad))
trans->in_place = gst_caps_is_equal (GST_PAD_CAPS (trans->sinkpad),
GST_PAD_CAPS (trans->srcpad)) || trans->passthrough;
else
trans->in_place = trans->passthrough;
trans->out_size = -1;
GST_UNLOCK (trans);
break;