/*
* Copyright (C) 2005 by the gtk2-perl team
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id$
*/
#include "gst2perl.h"
MODULE = GStreamer::Element PACKAGE = GStreamer::Element PREFIX = gst_element_
# FIXME?
# void gst_element_class_add_pad_template (GstElementClass *klass, GstPadTemplate *templ);
# GstPadTemplate* gst_element_class_get_pad_template (GstElementClass *element_class, const gchar *name);
# GList* gst_element_class_get_pad_template_list (GstElementClass *element_class);
# void gst_element_class_set_details (GstElementClass *klass, const GstElementDetails *details);
gboolean gst_element_requires_clock (GstElement *element);
gboolean gst_element_provides_clock (GstElement *element);
GstClock_ornull * gst_element_provide_clock (GstElement *element);
GstClock_ornull * gst_element_get_clock (GstElement *element);
void gst_element_set_clock (GstElement *element, GstClock_ornull *clock);
void gst_element_set_base_time (GstElement *element, GstClockTime time);
GstClockTime gst_element_get_base_time (GstElement *element);
void gst_element_no_more_pads (GstElement *element);
gboolean gst_element_is_indexable (GstElement *element);
void gst_element_set_index (GstElement *element, GstIndex *index);
GstIndex_ornull* gst_element_get_index (GstElement *element);
# Docs say "for internal use only".
# void gst_element_set_bus (GstElement * element, GstBus * bus);
GstBus_ornull * gst_element_get_bus (GstElement * element);
gboolean gst_element_add_pad (GstElement *element, GstPad *pad);
gboolean gst_element_remove_pad (GstElement *element, GstPad *pad);
GstPad_ornull * gst_element_get_pad (GstElement *element, const gchar *name);
GstPad_ornull * gst_element_get_static_pad (GstElement *element, const gchar *name);
GstPad_ornull * gst_element_get_request_pad (GstElement *element, const gchar *name);
# FIXME: Needed?
# void gst_element_release_request_pad (GstElement *element, GstPad *pad);
GstIterator * gst_element_iterate_pads (GstElement * element);
GstIterator * gst_element_iterate_src_pads (GstElement * element);
GstIterator * gst_element_iterate_sink_pads (GstElement * element);
GstPad* gst_element_get_compatible_pad (GstElement *element, GstPad *pad, const GstCaps *caps);
GstPadTemplate_ornull* gst_element_get_compatible_pad_template (GstElement *element, GstPadTemplate *compattempl);
# gboolean gst_element_link (GstElement *src, GstElement *dest);
gboolean
gst_element_link (src, dest, ...)
GstElement *src
GstElement *dest
PREINIT:
int i;
CODE:
RETVAL = TRUE;
for (i = 1; i < items && RETVAL != FALSE; i++) {
dest = SvGstElement (ST (i));
if (!gst_element_link (src, dest))
RETVAL = FALSE;
src = dest;
}
OUTPUT:
RETVAL
gboolean gst_element_link_filtered (GstElement *src, GstElement *dest, GstCaps_ornull *filtercaps);
# void gst_element_unlink (GstElement *src, GstElement *dest);
void
gst_element_unlink (src, dest, ...)
GstElement *src
GstElement *dest
PREINIT:
int i;
CODE:
for (i = 1; i < items; i++) {
dest = SvGstElement (ST (i));
gst_element_unlink (src, dest);
src = dest;
}
gboolean gst_element_link_pads (GstElement *src, const gchar *srcpadname, GstElement *dest, const gchar *destpadname);
gboolean gst_element_link_pads_filtered (GstElement *src, const gchar *srcpadname, GstElement *dest, const gchar *destpadname, GstCaps_ornull *filtercaps);
void gst_element_unlink_pads (GstElement *src, const gchar *srcpadname, GstElement *dest, const gchar *destpadname);
# gboolean gst_element_send_event (GstElement *element, GstEvent *event);
gboolean
gst_element_send_event (element, event)
GstElement *element
GstEvent *event
C_ARGS:
/* event gets unref'ed, we need to keep it alive. */
element, gst_event_ref (event)
gboolean gst_element_seek (GstElement *element, gdouble rate, GstFormat format, GstSeekFlags flags, GstSeekType cur_type, gint64 cur, GstSeekType stop_type, gint64 stop);
# G_CONST_RETURN GstQueryType* gst_element_get_query_types (GstElement *element);
void
gst_element_get_query_types (element)
GstElement *element
PREINIT:
GstQueryType *types;
PPCODE:
types = (GstQueryType *) gst_element_get_query_types (element);
if (types)
while (*types++)
XPUSHs (sv_2mortal (newSVGstQueryType (*types)));
gboolean gst_element_query (GstElement *element, GstQuery *query);
# gboolean gst_element_post_message (GstElement * element, GstMessage * message);
gboolean
gst_element_post_message (GstElement * element, GstMessage * message)
C_ARGS:
/* element takes ownership of message. */
element, gst_message_ref (message)
void gst_element_found_tags (GstElement *element, GstTagList *tag_list);
# void gst_element_found_tags_for_pad (GstElement *element, GstPad *pad, GstTagList *list);
void
gst_element_found_tags_for_pad (element, pad, list)
GstElement *element
GstPad *pad
GstTagList *list
C_ARGS:
/* gst_element_found_tags_for_pad takes ownership of list. */
element, pad, gst_tag_list_copy (list)
# FIXME?
# gchar * _gst_element_error_printf (const gchar *format, ...);
# void gst_element_message_full (GstElement * element, GstMessageType type, GQuark domain, gint code, gchar * text, gchar * debug, const gchar * file, const gchar * function, gint line);
gboolean gst_element_is_locked_state (GstElement *element);
gboolean gst_element_set_locked_state (GstElement *element, gboolean locked_state);
gboolean gst_element_sync_state_with_parent (GstElement *element);
# GstStateChangeReturn gst_element_get_state (GstElement * element, GstState * state, GstState * pending, GstClockTime timeout);
void
gst_element_get_state (GstElement * element, GstClockTime timeout)
PREINIT:
GstStateChangeReturn retval;
GstState state;
GstState pending;
PPCODE:
retval = gst_element_get_state (element, &state, &pending, timeout);
EXTEND (sp, 3);
PUSHs (sv_2mortal (newSVGstStateChangeReturn (retval)));
PUSHs (sv_2mortal (newSVGstState (state)));
PUSHs (sv_2mortal (newSVGstState (pending)));
GstStateChangeReturn gst_element_set_state (GstElement *element, GstState state);
void gst_element_abort_state (GstElement * element);
GstStateChangeReturn gst_element_continue_state (GstElement * element, GstStateChangeReturn ret);
void gst_element_lost_state (GstElement * element);
GstElementFactory* gst_element_get_factory (GstElement *element);