gst: Fix various Since markers
[platform/upstream/gstreamer.git] / gst / gstelement.h
index 85ffed3..4ebfd09 100644 (file)
@@ -28,7 +28,7 @@
 
 G_BEGIN_DECLS
 
-/* gstelement.h and gstelementfactory.h include eachother */
+/* gstelement.h and gstelementfactory.h include each other */
 typedef struct _GstElement GstElement;
 typedef struct _GstElementClass GstElementClass;
 
@@ -230,6 +230,14 @@ typedef enum {
  * @GST_STATE_CHANGE_READY_TO_NULL    : state change from READY to NULL.
  *   * Elements close devices
  *   * Elements reset any internal state.
+ * @GST_STATE_CHANGE_NULL_TO_NULL       : state change from NULL to NULL. (Since: 1.14)
+ * @GST_STATE_CHANGE_READY_TO_READY     : state change from READY to READY,
+ * This might happen when going to PAUSED asynchronously failed, in that case
+ * elements should make sure they are in a proper, coherent READY state. (Since: 1.14)
+ * @GST_STATE_CHANGE_PAUSED_TO_PAUSED   : state change from PAUSED to PAUSED.
+ * This might happen when elements were in PLAYING state and 'lost state',
+ * they should make sure to go back to real 'PAUSED' state (prerolling for example). (Since: 1.14)
+ * @GST_STATE_CHANGE_PLAYING_TO_PLAYING : state change from PLAYING to PLAYING. (Since: 1.14)
  *
  * These are the different state changes an element goes through.
  * %GST_STATE_NULL ⇒ %GST_STATE_PLAYING is called an upwards state change
@@ -242,7 +250,11 @@ typedef enum /*< flags=0 >*/
   GST_STATE_CHANGE_PAUSED_TO_PLAYING    = (GST_STATE_PAUSED<<3) | GST_STATE_PLAYING,
   GST_STATE_CHANGE_PLAYING_TO_PAUSED    = (GST_STATE_PLAYING<<3) | GST_STATE_PAUSED,
   GST_STATE_CHANGE_PAUSED_TO_READY      = (GST_STATE_PAUSED<<3) | GST_STATE_READY,
-  GST_STATE_CHANGE_READY_TO_NULL        = (GST_STATE_READY<<3) | GST_STATE_NULL
+  GST_STATE_CHANGE_READY_TO_NULL        = (GST_STATE_READY<<3) | GST_STATE_NULL,
+  GST_STATE_CHANGE_NULL_TO_NULL         = (GST_STATE_NULL<<3) | GST_STATE_NULL,
+  GST_STATE_CHANGE_READY_TO_READY       = (GST_STATE_READY<<3) | GST_STATE_READY,
+  GST_STATE_CHANGE_PAUSED_TO_PAUSED     = (GST_STATE_PAUSED<<3) | GST_STATE_PAUSED,
+  GST_STATE_CHANGE_PLAYING_TO_PLAYING   = (GST_STATE_PLAYING<<3) | GST_STATE_PLAYING
 } GstStateChange;
 
 /**
@@ -335,7 +347,7 @@ typedef enum
  */
 #define GST_ELEMENT_START_TIME(elem)            (GST_ELEMENT_CAST(elem)->start_time)
 
-GST_EXPORT
+GST_API
 GstStructure *gst_make_element_message_details (const char *name, ...);
 
 #define GST_ELEMENT_MESSAGE_MAKE_DETAILS(args) gst_make_element_message_details args
@@ -733,46 +745,51 @@ struct _GstElementClass
 
 /* element class pad templates */
 
-GST_EXPORT
+GST_API
 void                    gst_element_class_add_pad_template      (GstElementClass *klass, GstPadTemplate *templ);
 
-GST_EXPORT
+GST_API
 void                    gst_element_class_add_static_pad_template (GstElementClass *klass, GstStaticPadTemplate *static_templ);
 
-GST_EXPORT
+GST_API
+void                    gst_element_class_add_static_pad_template_with_gtype (GstElementClass *klass,
+                                                                              GstStaticPadTemplate *static_templ,
+                                                                              GType pad_type);
+
+GST_API
 GstPadTemplate*         gst_element_class_get_pad_template      (GstElementClass *element_class, const gchar *name);
 
-GST_EXPORT
+GST_API
 GList*                  gst_element_class_get_pad_template_list (GstElementClass *element_class);
 
 /* element class meta data */
 
-GST_EXPORT
+GST_API
 void                    gst_element_class_set_metadata          (GstElementClass *klass,
                                                                  const gchar     *longname,
                                                                  const gchar     *classification,
                                                                  const gchar     *description,
                                                                  const gchar     *author);
-GST_EXPORT
+GST_API
 void                    gst_element_class_set_static_metadata   (GstElementClass *klass,
                                                                  const gchar     *longname,
                                                                  const gchar     *classification,
                                                                  const gchar     *description,
                                                                  const gchar     *author);
-GST_EXPORT
+GST_API
 void                    gst_element_class_add_metadata          (GstElementClass * klass,
                                                                  const gchar * key, const gchar * value);
-GST_EXPORT
+GST_API
 void                    gst_element_class_add_static_metadata   (GstElementClass * klass,
                                                                  const gchar * key, const gchar * value);
-GST_EXPORT
+GST_API
 const gchar *           gst_element_class_get_metadata          (GstElementClass * klass,
                                                                  const gchar * key);
 
 
 /* element instance */
 
-GST_EXPORT
+GST_API
 GType                   gst_element_get_type            (void);
 
 /* basic name and parentage stuff from GstObject */
@@ -822,115 +839,144 @@ GType                   gst_element_get_type            (void);
 
 /* clocking */
 
-GST_EXPORT
+GST_API
 GstClock*               gst_element_provide_clock       (GstElement *element);
 
-GST_EXPORT
+GST_API
 GstClock*               gst_element_get_clock           (GstElement *element);
 
-GST_EXPORT
+GST_API
 gboolean                gst_element_set_clock           (GstElement *element, GstClock *clock);
 
-GST_EXPORT
+GST_API
 void                    gst_element_set_base_time       (GstElement *element, GstClockTime time);
 
-GST_EXPORT
+GST_API
 GstClockTime            gst_element_get_base_time       (GstElement *element);
 
-GST_EXPORT
+GST_API
 void                    gst_element_set_start_time      (GstElement *element, GstClockTime time);
 
-GST_EXPORT
+GST_API
 GstClockTime            gst_element_get_start_time      (GstElement *element);
 
 /* bus */
 
-GST_EXPORT
+GST_API
 void                    gst_element_set_bus             (GstElement * element, GstBus * bus);
 
-GST_EXPORT
+GST_API
 GstBus *                gst_element_get_bus             (GstElement * element);
 
 /* context */
 
-GST_EXPORT
+GST_API
 void                    gst_element_set_context         (GstElement * element, GstContext * context);
 
-GST_EXPORT
+GST_API
 GList *                 gst_element_get_contexts        (GstElement * element);
 
-GST_EXPORT
+GST_API
 GstContext *            gst_element_get_context         (GstElement * element, const gchar * context_type);
 
-GST_EXPORT
+GST_API
 GstContext *            gst_element_get_context_unlocked (GstElement * element, const gchar * context_type);
 
 /* pad management */
 
-GST_EXPORT
+GST_API
 gboolean                gst_element_add_pad             (GstElement *element, GstPad *pad);
 
-GST_EXPORT
+GST_API
 gboolean                gst_element_remove_pad          (GstElement *element, GstPad *pad);
 
-GST_EXPORT
+GST_API
 void                    gst_element_no_more_pads        (GstElement *element);
 
-GST_EXPORT
+GST_API
 GstPad*                 gst_element_get_static_pad      (GstElement *element, const gchar *name);
 
-GST_EXPORT
+GST_API
 GstPad*                 gst_element_get_request_pad     (GstElement *element, const gchar *name);
 
-GST_EXPORT
+GST_API
 GstPad*                 gst_element_request_pad         (GstElement *element, GstPadTemplate *templ,
                                                         const gchar * name, const GstCaps *caps);
-GST_EXPORT
+GST_API
 void                    gst_element_release_request_pad (GstElement *element, GstPad *pad);
 
-GST_EXPORT
+GST_API
 GstIterator *           gst_element_iterate_pads        (GstElement * element);
 
-GST_EXPORT
+GST_API
 GstIterator *           gst_element_iterate_src_pads    (GstElement * element);
 
-GST_EXPORT
+GST_API
 GstIterator *           gst_element_iterate_sink_pads   (GstElement * element);
 
+/**
+ * GstElementForeachPadFunc:
+ * @element: the #GstElement
+ * @pad: a #GstPad
+ * @user_data: user data passed to the foreach function
+ *
+ * Function called for each pad when using gst_element_foreach_sink_pad(),
+ * gst_element_foreach_src_pad(), or gst_element_foreach_pad().
+ *
+ * Returns: %FALSE to stop iterating pads, %TRUE to continue
+ *
+ * Since: 1.14
+ */
+typedef gboolean (*GstElementForeachPadFunc) (GstElement * element,
+                                              GstPad     * pad,
+                                              gpointer     user_data);
+
+GST_API
+gboolean                gst_element_foreach_sink_pad    (GstElement * element,
+                                                         GstElementForeachPadFunc func,
+                                                         gpointer     user_data);
+GST_API
+gboolean                gst_element_foreach_src_pad     (GstElement * element,
+                                                         GstElementForeachPadFunc func,
+                                                         gpointer     user_data);
+GST_API
+gboolean                gst_element_foreach_pad         (GstElement * element,
+                                                         GstElementForeachPadFunc func,
+                                                         gpointer     user_data);
 /* event/query/format stuff */
 
-GST_EXPORT
+GST_API
 gboolean                gst_element_send_event          (GstElement *element, GstEvent *event);
 
-GST_EXPORT
+GST_API
 gboolean                gst_element_seek                (GstElement *element, gdouble rate,
                                                          GstFormat format, GstSeekFlags flags,
                                                          GstSeekType start_type, gint64 start,
                                                          GstSeekType stop_type, gint64 stop);
-GST_EXPORT
+GST_API
 gboolean                gst_element_query               (GstElement *element, GstQuery *query);
 
 /* messages */
 
-GST_EXPORT
+GST_API
 gboolean                gst_element_post_message        (GstElement * element, GstMessage * message);
 
 /* error handling */
 /* gcc versions < 3.3 warn about NULL being passed as format to printf */
 #if (!defined(__GNUC__) || (__GNUC__ < 3) || (__GNUC__ == 3 && __GNUC_MINOR__ < 3))
-GST_EXPORT
+GST_API
 gchar *                 _gst_element_error_printf       (const gchar *format, ...);
 #else
-GST_EXPORT
+GST_API
 gchar *                 _gst_element_error_printf       (const gchar *format, ...) G_GNUC_PRINTF (1, 2);
 #endif
 
-GST_EXPORT
+GST_API
 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_EXPORT
+GST_API
 void                    gst_element_message_full_with_details (GstElement * element, GstMessageType type,
                                                          GQuark domain, gint code, gchar * text,
                                                          gchar * debug, const gchar * file,
@@ -939,63 +985,71 @@ void                    gst_element_message_full_with_details (GstElement * elem
 
 /* state management */
 
-GST_EXPORT
+GST_API
 gboolean                gst_element_is_locked_state     (GstElement *element);
 
-GST_EXPORT
+GST_API
 gboolean                gst_element_set_locked_state    (GstElement *element, gboolean locked_state);
 
-GST_EXPORT
+GST_API
 gboolean                gst_element_sync_state_with_parent (GstElement *element);
 
-GST_EXPORT
+GST_API
 GstStateChangeReturn    gst_element_get_state           (GstElement * element,
                                                          GstState * state,
                                                          GstState * pending,
                                                          GstClockTime timeout);
-GST_EXPORT
+GST_API
 GstStateChangeReturn    gst_element_set_state           (GstElement *element, GstState state);
 
-GST_EXPORT
+GST_API
 void                    gst_element_abort_state         (GstElement * element);
 
-GST_EXPORT
+GST_API
 GstStateChangeReturn    gst_element_change_state        (GstElement * element,
                                                          GstStateChange transition);
 
-GST_EXPORT
+GST_API
 GstStateChangeReturn    gst_element_continue_state      (GstElement * element,
                                                          GstStateChangeReturn ret);
-GST_EXPORT
+GST_API
 void                    gst_element_lost_state          (GstElement * element);
 
 
 typedef void          (*GstElementCallAsyncFunc)        (GstElement * element,
                                                          gpointer     user_data);
-GST_EXPORT
+GST_API
 void                    gst_element_call_async          (GstElement * element,
                                                          GstElementCallAsyncFunc func, gpointer user_data,
                                                          GDestroyNotify destroy_notify);
 
 /* factory management */
 
-GST_EXPORT
+GST_API
 GstElementFactory*      gst_element_get_factory         (GstElement *element);
 
 /* utility functions */
 
-GST_EXPORT
+GST_API
 gulong                  gst_element_add_property_notify_watch (GstElement  * element,
                                                                const gchar * property_name,
                                                                gboolean      include_value);
-GST_EXPORT
+GST_API
 gulong                  gst_element_add_property_deep_notify_watch (GstElement  * element,
                                                                     const gchar * property_name,
                                                                     gboolean      include_value);
-GST_EXPORT
+GST_API
 void                    gst_element_remove_property_notify_watch (GstElement * element,
                                                                   gulong       watch_id);
 
+GST_API
+GstPadTemplate*         gst_element_get_pad_template           (GstElement *element, const gchar *name);
+
+GST_API
+GList*                  gst_element_get_pad_template_list      (GstElement *element);
+GST_API
+const gchar *           gst_element_get_metadata               (GstElement * element, const gchar * key);
+
 #ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstElement, gst_object_unref)
 #endif