mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-23 06:26:23 +00:00
Now metadataparse works in push or pull mode.
Original commit message from CVS: Now metadataparse works in push or pull mode.
This commit is contained in:
parent
929954f595
commit
05e1fdf681
2 changed files with 35 additions and 18 deletions
|
@ -1,3 +1,10 @@
|
|||
2007-11-02 Edgard Lima <edgard.lima@indt.org.br>
|
||||
|
||||
* ext/metadata/gstmetadataparse.c: (gst_metadata_parse_init),
|
||||
(gst_metadata_parse_activate), (gst_metadata_parse_get_range),
|
||||
(gst_metadata_parse_element_activate_src_pull):
|
||||
Now metadataparse works in push or pull mode.
|
||||
|
||||
2007-11-01 Edgard Lima <edgard.lima@indt.org.br>
|
||||
|
||||
* configure.ac:
|
||||
|
|
|
@ -143,6 +143,9 @@ gst_metadata_parse_get_range (GstPad * pad, guint64 offset, guint size,
|
|||
|
||||
static gboolean gst_metadata_parse_activate (GstPad * pad);
|
||||
|
||||
static gboolean
|
||||
gst_metadata_parse_element_activate_src_pull (GstPad * pad, gboolean active);
|
||||
|
||||
static void gst_metadata_parse_init_members (GstMetadataParse * filter);
|
||||
static void gst_metadata_parse_dispose_members (GstMetadataParse * filter);
|
||||
|
||||
|
@ -242,9 +245,9 @@ gst_metadata_parse_init (GstMetadataParse * filter,
|
|||
GST_DEBUG_FUNCPTR (gst_metadata_parse_get_caps));
|
||||
gst_pad_set_event_function (filter->srcpad, gst_metadata_parse_src_event);
|
||||
gst_pad_use_fixed_caps (filter->srcpad);
|
||||
#if 0 /* FIXME it should also work with it */
|
||||
gst_pad_set_getrange_function (filter->srcpad, gst_metadata_parse_get_range);
|
||||
#endif
|
||||
gst_pad_set_activatepull_function (filter->srcpad,
|
||||
GST_DEBUG_FUNCPTR (gst_metadata_parse_element_activate_src_pull));
|
||||
/* addind pads */
|
||||
|
||||
gst_element_add_pad (GST_ELEMENT (filter), filter->sinkpad);
|
||||
|
@ -813,12 +816,12 @@ gst_metadata_parse_activate (GstPad * pad)
|
|||
int res;
|
||||
guint32 offset = 0;
|
||||
|
||||
filter = GST_METADATA_PARSE (gst_pad_get_parent (pad));
|
||||
filter = GST_METADATA_PARSE (GST_PAD_PARENT (pad));
|
||||
|
||||
if (!gst_pad_check_pull_range (pad) ||
|
||||
!gst_pad_activate_pull (filter->sinkpad, TRUE)) {
|
||||
/* nothing to be done by now, activate push mode */
|
||||
goto done;
|
||||
return gst_pad_activate_push (pad, TRUE);
|
||||
}
|
||||
|
||||
if (!(ret =
|
||||
|
@ -870,16 +873,12 @@ gst_metadata_parse_activate (GstPad * pad)
|
|||
done:
|
||||
|
||||
if (ret) {
|
||||
do {
|
||||
if (!(ret = gst_pad_activate_pull (filter->sinkpad, FALSE)))
|
||||
break;
|
||||
|
||||
if (!gst_pad_is_active (filter->sinkpad)) {
|
||||
ret = gst_pad_activate_push (filter->srcpad, TRUE);
|
||||
ret = ret && gst_pad_activate_push (filter->sinkpad, TRUE);
|
||||
}
|
||||
|
||||
} while (FALSE);
|
||||
gst_pad_activate_pull (pad, FALSE);
|
||||
gst_pad_activate_push (filter->srcpad, FALSE);
|
||||
if (!gst_pad_is_active (pad)) {
|
||||
ret = gst_pad_activate_push (filter->srcpad, TRUE);
|
||||
ret = ret && gst_pad_activate_push (pad, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
@ -891,22 +890,33 @@ gst_metadata_parse_get_range (GstPad * pad,
|
|||
guint64 offset, guint size, GstBuffer ** buf)
|
||||
{
|
||||
GstMetadataParse *filter = NULL;
|
||||
gboolean ret;
|
||||
|
||||
filter = GST_METADATA_PARSE (gst_pad_get_parent (pad));
|
||||
filter = GST_METADATA_PARSE (GST_PAD_PARENT (pad));
|
||||
|
||||
if (filter->need_send_tag) {
|
||||
gst_metadata_parse_send_tags (filter);
|
||||
}
|
||||
|
||||
ret = gst_pad_pull_range (filter->sinkpad, offset, size, buf);
|
||||
return gst_pad_pull_range (filter->sinkpad, offset, size, buf);
|
||||
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gst_metadata_parse_element_activate_src_pull (GstPad * pad, gboolean active)
|
||||
{
|
||||
GstMetadataParse *filter = NULL;
|
||||
gboolean ret;
|
||||
|
||||
filter = GST_METADATA_PARSE (gst_pad_get_parent (pad));
|
||||
|
||||
ret = gst_pad_activate_pull (filter->sinkpad, active);
|
||||
|
||||
gst_object_unref (filter);
|
||||
|
||||
return ret;
|
||||
|
||||
}
|
||||
|
||||
|
||||
static GstStateChangeReturn
|
||||
gst_metadata_parse_change_state (GstElement * element,
|
||||
GstStateChange transition)
|
||||
|
|
Loading…
Reference in a new issue