mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-23 16:50:47 +00:00
libs/gst/base/gstbasetransform.c: Implement a checkgetrange function instead of relying on the default core behaviour...
Original commit message from CVS: * libs/gst/base/gstbasetransform.c: (gst_base_transform_init), (gst_base_transform_check_get_range): Implement a checkgetrange function instead of relying on the default core behaviour that assumes we can operate in pull mode if we have a getrange function. First step at fixing #385084.
This commit is contained in:
parent
efb8033bac
commit
7615bf85c6
2 changed files with 26 additions and 0 deletions
|
@ -1,3 +1,11 @@
|
||||||
|
2007-02-19 Wim Taymans <wim@fluendo.com>
|
||||||
|
|
||||||
|
* libs/gst/base/gstbasetransform.c: (gst_base_transform_init),
|
||||||
|
(gst_base_transform_check_get_range):
|
||||||
|
Implement a checkgetrange function instead of relying on the default
|
||||||
|
core behaviour that assumes we can operate in pull mode if we have a
|
||||||
|
getrange function. First step at fixing #385084.
|
||||||
|
|
||||||
2007-02-15 Stefan Kost <ensonic@users.sf.net>
|
2007-02-15 Stefan Kost <ensonic@users.sf.net>
|
||||||
|
|
||||||
* gst/gstchildproxy.h:
|
* gst/gstchildproxy.h:
|
||||||
|
|
|
@ -287,6 +287,7 @@ static gboolean gst_base_transform_src_eventfunc (GstBaseTransform * trans,
|
||||||
static gboolean gst_base_transform_sink_event (GstPad * pad, GstEvent * event);
|
static gboolean gst_base_transform_sink_event (GstPad * pad, GstEvent * event);
|
||||||
static gboolean gst_base_transform_sink_eventfunc (GstBaseTransform * trans,
|
static gboolean gst_base_transform_sink_eventfunc (GstBaseTransform * trans,
|
||||||
GstEvent * event);
|
GstEvent * event);
|
||||||
|
static gboolean gst_base_transform_check_get_range (GstPad * pad);
|
||||||
static GstFlowReturn gst_base_transform_getrange (GstPad * pad, guint64 offset,
|
static GstFlowReturn gst_base_transform_getrange (GstPad * pad, guint64 offset,
|
||||||
guint length, GstBuffer ** buffer);
|
guint length, GstBuffer ** buffer);
|
||||||
static GstFlowReturn gst_base_transform_chain (GstPad * pad,
|
static GstFlowReturn gst_base_transform_chain (GstPad * pad,
|
||||||
|
@ -382,6 +383,8 @@ gst_base_transform_init (GstBaseTransform * trans,
|
||||||
GST_DEBUG_FUNCPTR (gst_base_transform_setcaps));
|
GST_DEBUG_FUNCPTR (gst_base_transform_setcaps));
|
||||||
gst_pad_set_event_function (trans->srcpad,
|
gst_pad_set_event_function (trans->srcpad,
|
||||||
GST_DEBUG_FUNCPTR (gst_base_transform_src_event));
|
GST_DEBUG_FUNCPTR (gst_base_transform_src_event));
|
||||||
|
gst_pad_set_checkgetrange_function (trans->srcpad,
|
||||||
|
GST_DEBUG_FUNCPTR (gst_base_transform_check_get_range));
|
||||||
gst_pad_set_getrange_function (trans->srcpad,
|
gst_pad_set_getrange_function (trans->srcpad,
|
||||||
GST_DEBUG_FUNCPTR (gst_base_transform_getrange));
|
GST_DEBUG_FUNCPTR (gst_base_transform_getrange));
|
||||||
gst_pad_set_activatepull_function (trans->srcpad,
|
gst_pad_set_activatepull_function (trans->srcpad,
|
||||||
|
@ -1508,6 +1511,21 @@ configure_failed:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
gst_base_transform_check_get_range (GstPad * pad)
|
||||||
|
{
|
||||||
|
GstBaseTransform *trans;
|
||||||
|
gboolean ret;
|
||||||
|
|
||||||
|
trans = GST_BASE_TRANSFORM (gst_pad_get_parent (pad));
|
||||||
|
|
||||||
|
ret = gst_pad_check_pull_range (trans->sinkpad);
|
||||||
|
|
||||||
|
gst_object_unref (trans);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/* FIXME, getrange is broken, need to pull range from the other
|
/* FIXME, getrange is broken, need to pull range from the other
|
||||||
* end based on the transform_size result.
|
* end based on the transform_size result.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in a new issue