mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 04:36:20 +00:00
Added element query
Original commit message from CVS: Added element query
This commit is contained in:
parent
225d11913c
commit
9e238148e1
2 changed files with 43 additions and 0 deletions
|
@ -64,6 +64,8 @@ static void gst_element_dispatch_properties_changed (GObject * object, guint n
|
||||||
static void gst_element_dispose (GObject *object);
|
static void gst_element_dispose (GObject *object);
|
||||||
|
|
||||||
static gboolean gst_element_send_event_default (GstElement *element, GstEvent *event);
|
static gboolean gst_element_send_event_default (GstElement *element, GstEvent *event);
|
||||||
|
static gboolean gst_element_query_default (GstElement *element, GstPadQueryType type,
|
||||||
|
GstFormat *format, gint64 *value);
|
||||||
|
|
||||||
static GstElementStateReturn gst_element_change_state (GstElement *element);
|
static GstElementStateReturn gst_element_change_state (GstElement *element);
|
||||||
static void gst_element_error_func (GstElement* element, GstElement *source, gchar *errormsg);
|
static void gst_element_error_func (GstElement* element, GstElement *source, gchar *errormsg);
|
||||||
|
@ -162,6 +164,7 @@ gst_element_class_init (GstElementClass *klass)
|
||||||
klass->padtemplates = NULL;
|
klass->padtemplates = NULL;
|
||||||
klass->numpadtemplates = 0;
|
klass->numpadtemplates = 0;
|
||||||
klass->send_event = GST_DEBUG_FUNCPTR (gst_element_send_event_default);
|
klass->send_event = GST_DEBUG_FUNCPTR (gst_element_send_event_default);
|
||||||
|
klass->query = GST_DEBUG_FUNCPTR (gst_element_query_default);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1658,6 +1661,42 @@ gst_element_send_event (GstElement *element, GstEvent *event)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
gst_element_query_default (GstElement *element, GstPadQueryType type,
|
||||||
|
GstFormat *format, gint64 *value)
|
||||||
|
{
|
||||||
|
GList *pads = element->pads;
|
||||||
|
gboolean res = FALSE;
|
||||||
|
|
||||||
|
while (pads) {
|
||||||
|
GstPad *pad = GST_PAD_CAST (pads->data);
|
||||||
|
|
||||||
|
if (GST_PAD_DIRECTION (pad) == GST_PAD_SINK) {
|
||||||
|
if (GST_PAD_IS_CONNECTED (pad)) {
|
||||||
|
res = gst_pad_query (GST_PAD_PEER (pad), type, format, value);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pads = g_list_next (pads);
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
gst_element_query (GstElement *element, GstPadQueryType type,
|
||||||
|
GstFormat *format, gint64 *value)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (GST_IS_ELEMENT (element), FALSE);
|
||||||
|
g_return_val_if_fail (format != NULL, FALSE);
|
||||||
|
g_return_val_if_fail (value != NULL, FALSE);
|
||||||
|
|
||||||
|
if (CLASS (element)->query)
|
||||||
|
return CLASS (element)->query (element, type, format, value);
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gst_element_error:
|
* gst_element_error:
|
||||||
|
|
|
@ -172,6 +172,8 @@ struct _GstElementClass {
|
||||||
/* vtable*/
|
/* vtable*/
|
||||||
gboolean (*release_locks) (GstElement *element);
|
gboolean (*release_locks) (GstElement *element);
|
||||||
gboolean (*send_event) (GstElement *element, GstEvent *event);
|
gboolean (*send_event) (GstElement *element, GstEvent *event);
|
||||||
|
gboolean (*query) (GstElement *element, GstPadQueryType type,
|
||||||
|
GstFormat *format, gint64 *value);
|
||||||
/* change the element state */
|
/* change the element state */
|
||||||
GstElementStateReturn (*change_state) (GstElement *element);
|
GstElementStateReturn (*change_state) (GstElement *element);
|
||||||
/* request a new pad */
|
/* request a new pad */
|
||||||
|
@ -263,6 +265,8 @@ void gst_element_disconnect_pads (GstElement *src, const gchar *srcpadname,
|
||||||
GstElement *dest, const gchar *destpadname);
|
GstElement *dest, const gchar *destpadname);
|
||||||
|
|
||||||
gboolean gst_element_send_event (GstElement *element, GstEvent *event);
|
gboolean gst_element_send_event (GstElement *element, GstEvent *event);
|
||||||
|
gboolean gst_element_query (GstElement *element, GstPadQueryType type,
|
||||||
|
GstFormat *format, gint64 *value);
|
||||||
|
|
||||||
void gst_element_set_eos (GstElement *element);
|
void gst_element_set_eos (GstElement *element);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue