gstpad: Probes that return HANDLED can reset the data info field
[platform/upstream/gstreamer.git] / gst / gstpad.h
index 1a4cedc..1908398 100644 (file)
@@ -63,7 +63,7 @@ typedef enum {
 
 #include <glib.h>
 
-GST_EXPORT
+GST_API
 const gchar   * gst_pad_mode_get_name (GstPadMode mode);
 
 #include <gst/gstobject.h>
@@ -182,13 +182,13 @@ typedef enum {
   GST_FLOW_CUSTOM_ERROR_2 = -102
 } GstFlowReturn;
 
-GST_EXPORT
+GST_API
 const gchar *         gst_flow_get_name (GstFlowReturn ret);
 
-GST_EXPORT
+GST_API
 GQuark                gst_flow_to_quark (GstFlowReturn ret);
 
-GST_EXPORT
+GST_API
 const gchar *         gst_pad_link_get_name (GstPadLinkReturn ret);
 
 /**
@@ -452,6 +452,9 @@ typedef GstPadLinkReturn    (*GstPadLinkFunction)           (GstPad *pad, GstObject *parent,
  *          during the execution of this function.
  *
  * Function signature to handle a unlinking the pad prom its peer.
+ *
+ * The pad's lock is already held when the unlink function is called, so most
+ * pad functions cannot be called from within the callback.
  */
 typedef void                   (*GstPadUnlinkFunction)         (GstPad *pad, GstObject *parent);
 
@@ -612,16 +615,16 @@ struct _GstPadProbeInfo
 #define GST_PAD_PROBE_INFO_OFFSET(d)       ((d)->offset)
 #define GST_PAD_PROBE_INFO_SIZE(d)         ((d)->size)
 
-GST_EXPORT
+GST_API
 GstEvent*      gst_pad_probe_info_get_event       (GstPadProbeInfo * info);
 
-GST_EXPORT
+GST_API
 GstQuery*      gst_pad_probe_info_get_query       (GstPadProbeInfo * info);
 
-GST_EXPORT
+GST_API
 GstBuffer*     gst_pad_probe_info_get_buffer      (GstPadProbeInfo * info);
 
-GST_EXPORT
+GST_API
 GstBufferList* gst_pad_probe_info_get_buffer_list (GstPadProbeInfo * info);
 
 /**
@@ -692,7 +695,7 @@ typedef gboolean  (*GstPadStickyEventsForeachFunction) (GstPad *pad, GstEvent **
  * @GST_PAD_FLAG_ACCEPT_TEMPLATE: the default accept-caps handler will use
  *                      the template pad caps instead of query caps to
  *                      compare with the accept caps. Use this in combination
- *                      with %GST_PAD_FLAG_ACCEPT_INTERSECT. (Since 1.6)
+ *                      with %GST_PAD_FLAG_ACCEPT_INTERSECT. (Since: 1.6)
  * @GST_PAD_FLAG_LAST: offset to define more flags
  *
  * Pad state flags
@@ -1273,18 +1276,18 @@ struct _GstPadClass {
 #define GST_PAD_BLOCK_SIGNAL(pad)       (g_cond_signal(GST_PAD_BLOCK_GET_COND (pad)))
 #define GST_PAD_BLOCK_BROADCAST(pad)    (g_cond_broadcast(GST_PAD_BLOCK_GET_COND (pad)))
 
-GST_EXPORT
+GST_API
 GType                  gst_pad_get_type                        (void);
 
 /* creating pads */
 
-GST_EXPORT
+GST_API
 GstPad*                        gst_pad_new                             (const gchar *name, GstPadDirection direction);
 
-GST_EXPORT
+GST_API
 GstPad*                        gst_pad_new_from_template               (GstPadTemplate *templ, const gchar *name);
 
-GST_EXPORT
+GST_API
 GstPad*                        gst_pad_new_from_static_template        (GstStaticPadTemplate *templ, const gchar *name);
 
 
@@ -1311,96 +1314,96 @@ GstPad*                 gst_pad_new_from_static_template        (GstStaticPadTemplate *templ, const g
  */
 #define gst_pad_get_parent(pad) gst_object_get_parent (GST_OBJECT_CAST (pad))
 
-GST_EXPORT
+GST_API
 GstPadDirection                gst_pad_get_direction                   (GstPad *pad);
 
-GST_EXPORT
+GST_API
 gboolean               gst_pad_set_active                      (GstPad *pad, gboolean active);
 
-GST_EXPORT
+GST_API
 gboolean               gst_pad_is_active                       (GstPad *pad);
 
-GST_EXPORT
+GST_API
 gboolean               gst_pad_activate_mode                   (GstPad *pad, GstPadMode mode,
                                                                  gboolean active);
-GST_EXPORT
+GST_API
 gulong                  gst_pad_add_probe                       (GstPad *pad,
                                                                 GstPadProbeType mask,
                                                                 GstPadProbeCallback callback,
                                                                  gpointer user_data,
                                                                  GDestroyNotify destroy_data);
-GST_EXPORT
+GST_API
 void                    gst_pad_remove_probe                    (GstPad *pad, gulong id);
 
-GST_EXPORT
+GST_API
 gboolean               gst_pad_is_blocked                      (GstPad *pad);
 
-GST_EXPORT
+GST_API
 gboolean               gst_pad_is_blocking                     (GstPad *pad);
 
-GST_EXPORT
+GST_API
 void                    gst_pad_mark_reconfigure                (GstPad *pad);
 
-GST_EXPORT
+GST_API
 gboolean               gst_pad_needs_reconfigure               (GstPad *pad);
 
-GST_EXPORT
+GST_API
 gboolean               gst_pad_check_reconfigure               (GstPad *pad);
 
-GST_EXPORT
+GST_API
 void                   gst_pad_set_element_private             (GstPad *pad, gpointer priv);
 
-GST_EXPORT
+GST_API
 gpointer               gst_pad_get_element_private             (GstPad *pad);
 
-GST_EXPORT
+GST_API
 GstPadTemplate*                gst_pad_get_pad_template                (GstPad *pad);
 
-GST_EXPORT
+GST_API
 GstFlowReturn           gst_pad_store_sticky_event              (GstPad *pad, GstEvent *event);
 
-GST_EXPORT
+GST_API
 GstEvent*               gst_pad_get_sticky_event                (GstPad *pad, GstEventType event_type,
                                                                  guint idx);
 
-GST_EXPORT
+GST_API
 void                    gst_pad_sticky_events_foreach           (GstPad *pad, GstPadStickyEventsForeachFunction foreach_func, gpointer user_data);
 
 /* data passing setup functions */
 
-GST_EXPORT
+GST_API
 void                   gst_pad_set_activate_function_full      (GstPad *pad,
                                                                  GstPadActivateFunction activate,
                                                                  gpointer user_data,
                                                                  GDestroyNotify notify);
-GST_EXPORT
+GST_API
 void                   gst_pad_set_activatemode_function_full  (GstPad *pad,
                                                                  GstPadActivateModeFunction activatemode,
                                                                  gpointer user_data,
                                                                  GDestroyNotify notify);
 /* data passing functions */
 
-GST_EXPORT
+GST_API
 void                   gst_pad_set_chain_function_full         (GstPad *pad,
                                                                  GstPadChainFunction chain,
                                                                  gpointer user_data,
                                                                  GDestroyNotify notify);
-GST_EXPORT
+GST_API
 void                   gst_pad_set_chain_list_function_full    (GstPad *pad,
                                                                  GstPadChainListFunction chainlist,
                                                                  gpointer user_data,
                                                                  GDestroyNotify notify);
-GST_EXPORT
+GST_API
 void                   gst_pad_set_getrange_function_full      (GstPad *pad,
                                                                  GstPadGetRangeFunction get,
                                                                  gpointer user_data,
                                                                  GDestroyNotify notify);
-GST_EXPORT
+GST_API
 void                   gst_pad_set_event_function_full         (GstPad *pad,
                                                                  GstPadEventFunction event,
                                                                  gpointer user_data,
                                                                  GDestroyNotify notify);
-GST_EXPORT
+GST_API
 void                   gst_pad_set_event_full_function_full    (GstPad *pad,
                                                                  GstPadEventFullFunction event,
                                                                  gpointer user_data,
@@ -1416,12 +1419,12 @@ void                    gst_pad_set_event_full_function_full    (GstPad *pad,
 
 /* pad links */
 
-GST_EXPORT
+GST_API
 void                   gst_pad_set_link_function_full          (GstPad *pad,
                                                                  GstPadLinkFunction link,
                                                                  gpointer user_data,
                                                                  GDestroyNotify notify);
-GST_EXPORT
+GST_API
 void                   gst_pad_set_unlink_function_full        (GstPad *pad,
                                                                  GstPadUnlinkFunction unlink,
                                                                  gpointer user_data,
@@ -1430,125 +1433,125 @@ void                  gst_pad_set_unlink_function_full        (GstPad *pad,
 #define gst_pad_set_link_function(p,f)          gst_pad_set_link_function_full((p),(f),NULL,NULL)
 #define gst_pad_set_unlink_function(p,f)        gst_pad_set_unlink_function_full((p),(f),NULL,NULL)
 
-GST_EXPORT
+GST_API
 gboolean                gst_pad_can_link                        (GstPad *srcpad, GstPad *sinkpad);
 
-GST_EXPORT
+GST_API
 GstPadLinkReturn        gst_pad_link                           (GstPad *srcpad, GstPad *sinkpad);
 
-GST_EXPORT
+GST_API
 GstPadLinkReturn        gst_pad_link_full                      (GstPad *srcpad, GstPad *sinkpad, GstPadLinkCheck flags);
 
-GST_EXPORT
+GST_API
 gboolean               gst_pad_unlink                          (GstPad *srcpad, GstPad *sinkpad);
 
-GST_EXPORT
+GST_API
 gboolean               gst_pad_is_linked                       (GstPad *pad);
 
-GST_EXPORT
+GST_API
 GstPad*                        gst_pad_get_peer                        (GstPad *pad);
 
-GST_EXPORT
+GST_API
 GstCaps*                gst_pad_get_pad_template_caps          (GstPad *pad);
 
 /* capsnego function for linked/unlinked pads */
 
-GST_EXPORT
+GST_API
 GstCaps *              gst_pad_get_current_caps                (GstPad * pad);
 
-GST_EXPORT
+GST_API
 gboolean               gst_pad_has_current_caps                (GstPad * pad);
 
 /* capsnego for linked pads */
 
-GST_EXPORT
+GST_API
 GstCaps *              gst_pad_get_allowed_caps                (GstPad * pad);
 
 /* pad offsets */
 
-GST_EXPORT
+GST_API
 gint64                  gst_pad_get_offset                      (GstPad *pad);
 
-GST_EXPORT
+GST_API
 void                    gst_pad_set_offset                      (GstPad *pad, gint64 offset);
 
 /* data passing functions to peer */
 
-GST_EXPORT
+GST_API
 GstFlowReturn          gst_pad_push                            (GstPad *pad, GstBuffer *buffer);
 
-GST_EXPORT
+GST_API
 GstFlowReturn          gst_pad_push_list                       (GstPad *pad, GstBufferList *list);
 
-GST_EXPORT
+GST_API
 GstFlowReturn          gst_pad_pull_range                      (GstPad *pad, guint64 offset, guint size,
                                                                 GstBuffer **buffer);
-GST_EXPORT
+GST_API
 gboolean               gst_pad_push_event                      (GstPad *pad, GstEvent *event);
 
-GST_EXPORT
+GST_API
 gboolean               gst_pad_event_default                   (GstPad *pad, GstObject *parent,
                                                                  GstEvent *event);
-GST_EXPORT
+GST_API
 GstFlowReturn           gst_pad_get_last_flow_return            (GstPad *pad);
 
 /* data passing functions on pad */
 
-GST_EXPORT
+GST_API
 GstFlowReturn          gst_pad_chain                           (GstPad *pad, GstBuffer *buffer);
 
-GST_EXPORT
+GST_API
 GstFlowReturn          gst_pad_chain_list                      (GstPad *pad, GstBufferList *list);
 
-GST_EXPORT
+GST_API
 GstFlowReturn          gst_pad_get_range                       (GstPad *pad, guint64 offset, guint size,
                                                                 GstBuffer **buffer);
-GST_EXPORT
+GST_API
 gboolean               gst_pad_send_event                      (GstPad *pad, GstEvent *event);
 
 /* pad tasks */
 
-GST_EXPORT
+GST_API
 gboolean               gst_pad_start_task                      (GstPad *pad, GstTaskFunction func,
                                                                 gpointer user_data, GDestroyNotify notify);
-GST_EXPORT
+GST_API
 gboolean               gst_pad_pause_task                      (GstPad *pad);
 
-GST_EXPORT
+GST_API
 gboolean               gst_pad_stop_task                       (GstPad *pad);
 
-GST_EXPORT
+GST_API
 GstTaskState   gst_pad_get_task_state          (GstPad *pad);
 
 /* internal links */
 
-GST_EXPORT
+GST_API
 void                    gst_pad_set_iterate_internal_links_function_full (GstPad * pad,
                                                                  GstPadIterIntLinkFunction iterintlink,
                                                                  gpointer user_data,
                                                                  GDestroyNotify notify);
 
-GST_EXPORT
+GST_API
 GstIterator *           gst_pad_iterate_internal_links          (GstPad * pad);
 
-GST_EXPORT
+GST_API
 GstIterator *           gst_pad_iterate_internal_links_default  (GstPad * pad, GstObject *parent);
 
 #define gst_pad_set_iterate_internal_links_function(p,f) gst_pad_set_iterate_internal_links_function_full((p),(f),NULL,NULL)
 
 /* generic query function */
 
-GST_EXPORT
+GST_API
 gboolean               gst_pad_query                           (GstPad *pad, GstQuery *query);
 
-GST_EXPORT
+GST_API
 gboolean               gst_pad_peer_query                      (GstPad *pad, GstQuery *query);
 
-GST_EXPORT
+GST_API
 void                   gst_pad_set_query_function_full         (GstPad *pad, GstPadQueryFunction query,
                                                                  gpointer user_data,
                                                                  GDestroyNotify notify);
-GST_EXPORT
+GST_API
 gboolean               gst_pad_query_default                   (GstPad *pad, GstObject *parent,
                                                                  GstQuery *query);
 
@@ -1556,7 +1559,7 @@ gboolean          gst_pad_query_default                   (GstPad *pad, GstObject *parent,
 
 /* misc helper functions */
 
-GST_EXPORT
+GST_API
 gboolean               gst_pad_forward                         (GstPad *pad, GstPadForwardFunction forward,
                                                                 gpointer user_data);