GstElement

GstElement

Functions

#define GST_STATE()
#define GST_STATE_GET_NEXT()
#define GST_STATE_NEXT()
#define GST_STATE_PENDING()
#define GST_STATE_RETURN()
#define GST_STATE_TARGET()
#define GST_STATE_TRANSITION()
#define GST_STATE_TRANSITION_CURRENT()
#define GST_STATE_TRANSITION_NEXT()
#define GST_STATE_GET_LOCK()
#define GST_STATE_GET_COND()
#define GST_ELEMENT_NAME()
#define GST_ELEMENT_PARENT()
#define GST_ELEMENT_BUS()
#define GST_ELEMENT_CLOCK()
#define GST_ELEMENT_PADS()
#define GST_ELEMENT_START_TIME()
#define GST_ELEMENT_ERROR()
#define GST_ELEMENT_WARNING()
#define GST_ELEMENT_INFO()
#define GST_ELEMENT_IS_LOCKED_STATE()
void gst_element_class_add_pad_template ()
void gst_element_class_add_static_pad_template ()
GstPadTemplate * gst_element_class_get_pad_template ()
GList * gst_element_class_get_pad_template_list ()
void gst_element_class_set_metadata ()
void gst_element_class_set_static_metadata ()
void gst_element_class_add_metadata ()
void gst_element_class_add_static_metadata ()
gboolean gst_element_add_pad ()
void gst_element_create_all_pads ()
GstPad * gst_element_get_compatible_pad ()
GstPadTemplate * gst_element_get_compatible_pad_template ()
GstPad * gst_element_get_request_pad ()
GstPad * gst_element_get_static_pad ()
GstPad * gst_element_request_pad ()
void gst_element_no_more_pads ()
void gst_element_release_request_pad ()
gboolean gst_element_remove_pad ()
GstIterator * gst_element_iterate_pads ()
GstIterator * gst_element_iterate_sink_pads ()
GstIterator * gst_element_iterate_src_pads ()
gboolean gst_element_link ()
void gst_element_unlink ()
gboolean gst_element_link_many ()
void gst_element_unlink_many ()
gboolean gst_element_link_pads ()
gboolean gst_element_link_pads_full ()
void gst_element_unlink_pads ()
gboolean gst_element_link_pads_filtered ()
gboolean gst_element_link_filtered ()
const gchar * gst_element_class_get_metadata ()
void gst_element_set_base_time ()
GstClockTime gst_element_get_base_time ()
void gst_element_set_start_time ()
GstClockTime gst_element_get_start_time ()
void gst_element_set_bus ()
GstBus * gst_element_get_bus ()
void gst_element_set_context ()
GstContext * gst_element_get_context ()
GstContext * gst_element_get_context_unlocked ()
GList * gst_element_get_contexts ()
GstElementFactory * gst_element_get_factory ()
#define gst_element_set_name()
#define gst_element_get_name()
#define gst_element_set_parent()
#define gst_element_get_parent()
gboolean gst_element_set_clock ()
GstClock * gst_element_get_clock ()
GstClock * gst_element_provide_clock ()
GstStateChangeReturn gst_element_set_state ()
GstStateChangeReturn gst_element_get_state ()
gboolean gst_element_set_locked_state ()
gboolean gst_element_is_locked_state ()
void gst_element_abort_state ()
GstStateChangeReturn gst_element_continue_state ()
void gst_element_lost_state ()
const gchar * gst_element_state_get_name ()
const gchar * gst_element_state_change_return_get_name ()
gboolean gst_element_sync_state_with_parent ()
GstStateChangeReturn gst_element_change_state ()
void gst_element_message_full ()
gboolean gst_element_post_message ()
gboolean gst_element_query ()
gboolean gst_element_query_convert ()
gboolean gst_element_query_position ()
gboolean gst_element_query_duration ()
gboolean gst_element_send_event ()
gboolean gst_element_seek_simple ()
gboolean gst_element_seek ()
gulong gst_element_add_property_notify_watch ()
gulong gst_element_add_property_deep_notify_watch ()
void gst_element_remove_property_notify_watch ()
void (*GstElementCallAsyncFunc) ()
void gst_element_call_async ()

Signals

Types and Values

Object Hierarchy

    GObject
    ╰── GInitiallyUnowned
        ╰── GstObject
            ╰── GstElement
                ╰── GstBin

Known Derived Interfaces

GstElement is required by GstTagSetter.

Includes

#include <gst/gst.h>

Description

Functions

GST_STATE()

#define GST_STATE(elem)                 (GST_ELEMENT_CAST(elem)->current_state)

GST_STATE_GET_NEXT()

#define GST_STATE_GET_NEXT(cur,pending)         ((GstState)((cur) + __GST_SIGN ((gint)(pending) - (gint)(cur))))

GST_STATE_NEXT()

#define GST_STATE_NEXT(elem)            (GST_ELEMENT_CAST(elem)->next_state)

GST_STATE_PENDING()

#define GST_STATE_PENDING(elem)         (GST_ELEMENT_CAST(elem)->pending_state)

GST_STATE_RETURN()

#define GST_STATE_RETURN(elem)          (GST_ELEMENT_CAST(elem)->last_return)

GST_STATE_TARGET()

#define GST_STATE_TARGET(elem)          (GST_ELEMENT_CAST(elem)->target_state)

GST_STATE_TRANSITION()

#define GST_STATE_TRANSITION(cur,next)          ((GstStateChange)(((cur)<<3)|(next)))

GST_STATE_TRANSITION_CURRENT()

#define GST_STATE_TRANSITION_CURRENT(trans)     ((GstState)((trans)>>3))

GST_STATE_TRANSITION_NEXT()

#define GST_STATE_TRANSITION_NEXT(trans)        ((GstState)((trans)&0x7))

GST_STATE_GET_LOCK()

#define GST_STATE_GET_LOCK(elem)               (&(GST_ELEMENT_CAST(elem)->state_lock))

GST_STATE_GET_COND()

#define GST_STATE_GET_COND(elem)               (&GST_ELEMENT_CAST(elem)->state_cond)

GST_ELEMENT_NAME()

#define GST_ELEMENT_NAME(elem)                  (GST_OBJECT_NAME(elem))

GST_ELEMENT_PARENT()

#define GST_ELEMENT_PARENT(elem)                (GST_ELEMENT_CAST(GST_OBJECT_PARENT(elem)))

GST_ELEMENT_BUS()

#define GST_ELEMENT_BUS(elem)                   (GST_ELEMENT_CAST(elem)->bus)

GST_ELEMENT_CLOCK()

#define GST_ELEMENT_CLOCK(elem)                 (GST_ELEMENT_CAST(elem)->clock)

GST_ELEMENT_PADS()

#define GST_ELEMENT_PADS(elem)                  (GST_ELEMENT_CAST(elem)->pads)

GST_ELEMENT_START_TIME()

#define GST_ELEMENT_START_TIME(elem)            (GST_ELEMENT_CAST(elem)->start_time)

GST_ELEMENT_ERROR()

#define             GST_ELEMENT_ERROR(el, domain, code, text, debug)

GST_ELEMENT_WARNING()

#define             GST_ELEMENT_WARNING(el, domain, code, text, debug)

GST_ELEMENT_INFO()

#define             GST_ELEMENT_INFO(el, domain, code, text, debug)

GST_ELEMENT_IS_LOCKED_STATE()

#define GST_ELEMENT_IS_LOCKED_STATE(elem)        (GST_OBJECT_FLAG_IS_SET(elem,GST_ELEMENT_FLAG_LOCKED_STATE))

gst_element_class_add_pad_template ()

void
gst_element_class_add_pad_template (GstElementClass *klass,
                                    GstPadTemplate *templ);

gst_element_class_add_static_pad_template ()

void
gst_element_class_add_static_pad_template
                               (GstElementClass *klass,
                                GstStaticPadTemplate *static_templ);

gst_element_class_get_pad_template ()

GstPadTemplate *
gst_element_class_get_pad_template (GstElementClass *element_class,
                                    const gchar *name);

gst_element_class_get_pad_template_list ()

GList *
gst_element_class_get_pad_template_list
                               (GstElementClass *element_class);

gst_element_class_set_metadata ()

void
gst_element_class_set_metadata (GstElementClass *klass,
                                const gchar *longname,
                                const gchar *classification,
                                const gchar *description,
                                const gchar *author);

gst_element_class_set_static_metadata ()

void
gst_element_class_set_static_metadata (GstElementClass *klass,
                                       const gchar *longname,
                                       const gchar *classification,
                                       const gchar *description,
                                       const gchar *author);

gst_element_class_add_metadata ()

void
gst_element_class_add_metadata (GstElementClass *klass,
                                const gchar *key,
                                const gchar *value);

gst_element_class_add_static_metadata ()

void
gst_element_class_add_static_metadata (GstElementClass *klass,
                                       const gchar *key,
                                       const gchar *value);

gst_element_add_pad ()

gboolean
gst_element_add_pad (GstElement *element,
                     GstPad *pad);

gst_element_create_all_pads ()

void
gst_element_create_all_pads (GstElement *element);

gst_element_get_compatible_pad ()

GstPad *
gst_element_get_compatible_pad (GstElement *element,
                                GstPad *pad,
                                GstCaps *caps);

gst_element_get_compatible_pad_template ()

GstPadTemplate *
gst_element_get_compatible_pad_template
                               (GstElement *element,
                                GstPadTemplate *compattempl);

gst_element_get_request_pad ()

GstPad *
gst_element_get_request_pad (GstElement *element,
                             const gchar *name);

gst_element_get_static_pad ()

GstPad *
gst_element_get_static_pad (GstElement *element,
                            const gchar *name);

gst_element_request_pad ()

GstPad *
gst_element_request_pad (GstElement *element,
                         GstPadTemplate *templ,
                         const gchar *name,
                         const GstCaps *caps);

gst_element_no_more_pads ()

void
gst_element_no_more_pads (GstElement *element);

gst_element_release_request_pad ()

void
gst_element_release_request_pad (GstElement *element,
                                 GstPad *pad);

gst_element_remove_pad ()

gboolean
gst_element_remove_pad (GstElement *element,
                        GstPad *pad);

gst_element_iterate_pads ()

GstIterator *
gst_element_iterate_pads (GstElement *element);

gst_element_iterate_sink_pads ()

GstIterator *
gst_element_iterate_sink_pads (GstElement *element);

gst_element_iterate_src_pads ()

GstIterator *
gst_element_iterate_src_pads (GstElement *element);

gst_element_link ()

gboolean
gst_element_link (GstElement *src,
                  GstElement *dest);

gst_element_unlink ()

void
gst_element_unlink (GstElement *src,
                    GstElement *dest);

gst_element_link_many ()

gboolean
gst_element_link_many (GstElement *element_1,
                       GstElement *element_2,
                       ...);

gst_element_unlink_many ()

void
gst_element_unlink_many (GstElement *element_1,
                         GstElement *element_2,
                         ...);

gst_element_link_pads ()

gboolean
gst_element_link_pads (GstElement *src,
                       const gchar *srcpadname,
                       GstElement *dest,
                       const gchar *destpadname);

gst_element_link_pads_full ()

gboolean
gst_element_link_pads_full (GstElement *src,
                            const gchar *srcpadname,
                            GstElement *dest,
                            const gchar *destpadname,
                            GstPadLinkCheck flags);

gst_element_unlink_pads ()

void
gst_element_unlink_pads (GstElement *src,
                         const gchar *srcpadname,
                         GstElement *dest,
                         const gchar *destpadname);

gst_element_link_pads_filtered ()

gboolean
gst_element_link_pads_filtered (GstElement *src,
                                const gchar *srcpadname,
                                GstElement *dest,
                                const gchar *destpadname,
                                GstCaps *filter);

gst_element_link_filtered ()

gboolean
gst_element_link_filtered (GstElement *src,
                           GstElement *dest,
                           GstCaps *filter);

gst_element_class_get_metadata ()

const gchar *
gst_element_class_get_metadata (GstElementClass *klass,
                                const gchar *key);

gst_element_set_base_time ()

void
gst_element_set_base_time (GstElement *element,
                           GstClockTime time);

gst_element_get_base_time ()

GstClockTime
gst_element_get_base_time (GstElement *element);

gst_element_set_start_time ()

void
gst_element_set_start_time (GstElement *element,
                            GstClockTime time);

gst_element_get_start_time ()

GstClockTime
gst_element_get_start_time (GstElement *element);

gst_element_set_bus ()

void
gst_element_set_bus (GstElement *element,
                     GstBus *bus);

gst_element_get_bus ()

GstBus *
gst_element_get_bus (GstElement *element);

gst_element_set_context ()

void
gst_element_set_context (GstElement *element,
                         GstContext *context);

gst_element_get_context ()

GstContext *
gst_element_get_context (GstElement *element,
                         const gchar *context_type);

gst_element_get_context_unlocked ()

GstContext *
gst_element_get_context_unlocked (GstElement *element,
                                  const gchar *context_type);

gst_element_get_contexts ()

GList *
gst_element_get_contexts (GstElement *element);

gst_element_get_factory ()

GstElementFactory *
gst_element_get_factory (GstElement *element);

gst_element_set_name()

#define                 gst_element_set_name(elem,name) gst_object_set_name(GST_OBJECT_CAST(elem),name)

gst_element_get_name()

#define                 gst_element_get_name(elem)      gst_object_get_name(GST_OBJECT_CAST(elem))

gst_element_set_parent()

#define                 gst_element_set_parent(elem,parent)     gst_object_set_parent(GST_OBJECT_CAST(elem),parent)

gst_element_get_parent()

#define                 gst_element_get_parent(elem)    gst_object_get_parent(GST_OBJECT_CAST(elem))

gst_element_set_clock ()

gboolean
gst_element_set_clock (GstElement *element,
                       GstClock *clock);

gst_element_get_clock ()

GstClock *
gst_element_get_clock (GstElement *element);

gst_element_provide_clock ()

GstClock *
gst_element_provide_clock (GstElement *element);

gst_element_set_state ()

GstStateChangeReturn
gst_element_set_state (GstElement *element,
                       GstState state);

gst_element_get_state ()

GstStateChangeReturn
gst_element_get_state (GstElement *element,
                       GstState *state,
                       GstState *pending,
                       GstClockTime timeout);

gst_element_set_locked_state ()

gboolean
gst_element_set_locked_state (GstElement *element,
                              gboolean locked_state);

gst_element_is_locked_state ()

gboolean
gst_element_is_locked_state (GstElement *element);

gst_element_abort_state ()

void
gst_element_abort_state (GstElement *element);

gst_element_continue_state ()

GstStateChangeReturn
gst_element_continue_state (GstElement *element,
                            GstStateChangeReturn ret);

gst_element_lost_state ()

void
gst_element_lost_state (GstElement *element);

gst_element_state_get_name ()

const gchar *
gst_element_state_get_name (GstState state);

gst_element_state_change_return_get_name ()

const gchar *
gst_element_state_change_return_get_name
                               (GstStateChangeReturn state_ret);

gst_element_sync_state_with_parent ()

gboolean
gst_element_sync_state_with_parent (GstElement *element);

gst_element_change_state ()

GstStateChangeReturn
gst_element_change_state (GstElement *element,
                          GstStateChange transition);

gst_element_message_full ()

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);

gst_element_post_message ()

gboolean
gst_element_post_message (GstElement *element,
                          GstMessage *message);

gst_element_query ()

gboolean
gst_element_query (GstElement *element,
                   GstQuery *query);

gst_element_query_convert ()

gboolean
gst_element_query_convert (GstElement *element,
                           GstFormat src_format,
                           gint64 src_val,
                           GstFormat dest_format,
                           gint64 *dest_val);

gst_element_query_position ()

gboolean
gst_element_query_position (GstElement *element,
                            GstFormat format,
                            gint64 *cur);

gst_element_query_duration ()

gboolean
gst_element_query_duration (GstElement *element,
                            GstFormat format,
                            gint64 *duration);

gst_element_send_event ()

gboolean
gst_element_send_event (GstElement *element,
                        GstEvent *event);

gst_element_seek_simple ()

gboolean
gst_element_seek_simple (GstElement *element,
                         GstFormat format,
                         GstSeekFlags seek_flags,
                         gint64 seek_pos);

gst_element_seek ()

gboolean
gst_element_seek (GstElement *element,
                  gdouble rate,
                  GstFormat format,
                  GstSeekFlags flags,
                  GstSeekType start_type,
                  gint64 start,
                  GstSeekType stop_type,
                  gint64 stop);

gst_element_add_property_notify_watch ()

gulong
gst_element_add_property_notify_watch (GstElement *element,
                                       const gchar *property_name,
                                       gboolean include_value);

gst_element_add_property_deep_notify_watch ()

gulong
gst_element_add_property_deep_notify_watch
                               (GstElement *element,
                                const gchar *property_name,
                                gboolean include_value);

gst_element_remove_property_notify_watch ()

void
gst_element_remove_property_notify_watch
                               (GstElement *element,
                                gulong watch_id);

GstElementCallAsyncFunc ()

void
(*GstElementCallAsyncFunc) (GstElement *element,
                            gpointer user_data);

gst_element_call_async ()

void
gst_element_call_async (GstElement *element,
                        GstElementCallAsyncFunc func,
                        gpointer user_data,
                        GDestroyNotify destroy_notify);

Types and Values

struct GstElement

struct GstElement {
  GRecMutex             state_lock;

  /* element state */
  GCond                 state_cond;
  guint32               state_cookie;
  GstState              target_state;
  GstState              current_state;
  GstState              next_state;
  GstState              pending_state;
  GstStateChangeReturn  last_return;

  GstBus               *bus;

  /* allocated clock */
  GstClock             *clock;
  GstClockTimeDiff      base_time; /* NULL/READY: 0 - PAUSED: current time - PLAYING: difference to clock */
  GstClockTime          start_time;

  /* element pads, these lists can only be iterated while holding
   * the LOCK or checking the cookie after each LOCK. */
  guint16               numpads;
  GList                *pads;
  guint16               numsrcpads;
  GList                *srcpads;
  guint16               numsinkpads;
  GList                *sinkpads;
  guint32               pads_cookie;

  /* with object LOCK */
  GList                *contexts;
};

struct GstElementClass

struct GstElementClass {
  GstObjectClass         parent_class;

  /* the element metadata */
  gpointer		 metadata;

  /* factory that the element was created from */
  GstElementFactory     *elementfactory;

  /* templates for our pads */
  GList                 *padtemplates;
  gint                   numpadtemplates;
  guint32                pad_templ_cookie;

  /* virtual methods for subclasses */

  /* request/release pads */
  /* FIXME 2.0 harmonize naming with gst_element_request_pad */
  GstPad*               (*request_new_pad)      (GstElement *element, GstPadTemplate *templ,
                                                 const gchar* name, const GstCaps *caps);

  void                  (*release_pad)          (GstElement *element, GstPad *pad);

  /* state changes */
  GstStateChangeReturn (*get_state)             (GstElement * element, GstState * state,
                                                 GstState * pending, GstClockTime timeout);
  GstStateChangeReturn (*set_state)             (GstElement *element, GstState state);
  GstStateChangeReturn (*change_state)          (GstElement *element, GstStateChange transition);
  void                 (*state_changed)         (GstElement *element, GstState oldstate,
                                                 GstState newstate, GstState pending);

  /* bus */
  void                  (*set_bus)              (GstElement * element, GstBus * bus);

  /* set/get clocks */
  GstClock*             (*provide_clock)        (GstElement *element);
  gboolean              (*set_clock)            (GstElement *element, GstClock *clock);

  /* query functions */
  gboolean              (*send_event)           (GstElement *element, GstEvent *event);

  gboolean              (*query)                (GstElement *element, GstQuery *query);

  gboolean              (*post_message)         (GstElement *element, GstMessage *message);

  void                  (*set_context)          (GstElement *element, GstContext *context);
};

enum GstElementFlags

Members

GST_ELEMENT_FLAG_LOCKED_STATE

   

GST_ELEMENT_FLAG_SINK

   

GST_ELEMENT_FLAG_SOURCE

   

GST_ELEMENT_FLAG_PROVIDE_CLOCK

   

GST_ELEMENT_FLAG_REQUIRE_CLOCK

   

GST_ELEMENT_FLAG_INDEXABLE

   

GST_ELEMENT_FLAG_LAST

   

enum GstState

Members

GST_STATE_VOID_PENDING

   

GST_STATE_NULL

   

GST_STATE_READY

   

GST_STATE_PAUSED

   

GST_STATE_PLAYING

   

enum GstStateChange

Members

GST_STATE_CHANGE_NULL_TO_READY

   

GST_STATE_CHANGE_READY_TO_PAUSED

   

GST_STATE_CHANGE_PAUSED_TO_PLAYING

   

GST_STATE_CHANGE_PLAYING_TO_PAUSED

   

GST_STATE_CHANGE_PAUSED_TO_READY

   

GST_STATE_CHANGE_READY_TO_NULL

   

enum GstStateChangeReturn

Members

GST_STATE_CHANGE_FAILURE

   

GST_STATE_CHANGE_SUCCESS

   

GST_STATE_CHANGE_ASYNC

   

GST_STATE_CHANGE_NO_PREROLL

   

GST_ELEMENT_METADATA_AUTHOR

#define GST_ELEMENT_METADATA_AUTHOR        "author"

GST_ELEMENT_METADATA_DESCRIPTION

#define GST_ELEMENT_METADATA_DESCRIPTION   "description"

GST_ELEMENT_METADATA_DOC_URI

#define GST_ELEMENT_METADATA_DOC_URI       "doc-uri"

GST_ELEMENT_METADATA_ICON_NAME

#define GST_ELEMENT_METADATA_ICON_NAME     "icon-name"

GST_ELEMENT_METADATA_KLASS

#define GST_ELEMENT_METADATA_KLASS         "klass"

GST_ELEMENT_METADATA_LONGNAME

#define GST_ELEMENT_METADATA_LONGNAME      "long-name"

Signal Details

The “no-more-pads” signal

void
user_function (GstElement *gstelement,
               gpointer    user_data)

Flags: Run Last


The “pad-added” signal

void
user_function (GstElement *gstelement,
               GstPad     *arg1,
               gpointer    user_data)

Flags: Run Last


The “pad-removed” signal

void
user_function (GstElement *gstelement,
               GstPad     *arg1,
               gpointer    user_data)

Flags: Run Last