X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gst%2Fgststructure.h;h=8e6b9726d3cde812c0405c405309d91c68f66684;hb=e6bd5b41935f125bf43e030dcb909c3537d33b31;hp=86e100e2e1da9f40b19013e5eac4b116e8481258;hpb=e4725d9df2ea5ea72352fb896a0980b0596697c8;p=platform%2Fupstream%2Fgstreamer.git diff --git a/gst/gststructure.h b/gst/gststructure.h index 86e100e..8e6b972 100644 --- a/gst/gststructure.h +++ b/gst/gststructure.h @@ -13,8 +13,8 @@ * * You should have received a copy of the GNU Library 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. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ #ifndef __GST_STRUCTURE_H__ @@ -28,7 +28,7 @@ G_BEGIN_DECLS -extern GType _gst_structure_type; +GST_API GType _gst_structure_type; typedef struct _GstStructure GstStructure; @@ -47,12 +47,12 @@ typedef struct _GstStructure GstStructure; * A function that will be called in gst_structure_foreach(). The function may * not modify @value. * - * Returns: TRUE if the foreach operation should continue, FALSE if - * the foreach operation should stop with FALSE. + * Returns: %TRUE if the foreach operation should continue, %FALSE if + * the foreach operation should stop with %FALSE. */ typedef gboolean (*GstStructureForeachFunc) (GQuark field_id, - const GValue * value, - gpointer user_data); + const GValue * value, + gpointer user_data); /** * GstStructureMapFunc: @@ -63,12 +63,29 @@ typedef gboolean (*GstStructureForeachFunc) (GQuark field_id, * A function that will be called in gst_structure_map_in_place(). The function * may modify @value. * - * Returns: TRUE if the map operation should continue, FALSE if - * the map operation should stop with FALSE. + * Returns: %TRUE if the map operation should continue, %FALSE if + * the map operation should stop with %FALSE. */ typedef gboolean (*GstStructureMapFunc) (GQuark field_id, - GValue * value, - gpointer user_data); + GValue * value, + gpointer user_data); + +/** + * GstStructureFilterMapFunc: + * @field_id: the #GQuark of the field name + * @value: the #GValue of the field + * @user_data: user data + * + * A function that will be called in gst_structure_filter_and_map_in_place(). + * The function may modify @value, and the value will be removed from + * the structure if %FALSE is returned. + * + * Returns: %TRUE if the field should be preserved, %FALSE if it + * should be removed. + */ +typedef gboolean (*GstStructureFilterMapFunc) (GQuark field_id, + GValue * value, + gpointer user_data); /** * GstStructure: @@ -83,176 +100,280 @@ struct _GstStructure { GQuark name; }; -GType gst_structure_get_type (void); - -GstStructure * gst_structure_new_empty (const gchar * name); -GstStructure * gst_structure_new_id_empty (GQuark quark); -GstStructure * gst_structure_new (const gchar * name, - const gchar * firstfield, - ...) G_GNUC_NULL_TERMINATED; -GstStructure * gst_structure_new_valist (const gchar * name, - const gchar * firstfield, - va_list varargs); -GstStructure * gst_structure_new_id (GQuark name_quark, - GQuark field_quark, - ...); -GstStructure * gst_structure_copy (const GstStructure *structure); -gboolean gst_structure_set_parent_refcount (GstStructure *structure, - gint *refcount); -void gst_structure_free (GstStructure *structure); - -const gchar * gst_structure_get_name (const GstStructure *structure); -GQuark gst_structure_get_name_id (const GstStructure *structure); -gboolean gst_structure_has_name (const GstStructure *structure, - const gchar *name); -void gst_structure_set_name (GstStructure *structure, - const gchar *name); - -void gst_structure_id_set_value (GstStructure *structure, - GQuark field, - const GValue *value); -void gst_structure_set_value (GstStructure *structure, - const gchar *fieldname, - const GValue *value); -void gst_structure_id_take_value (GstStructure *structure, - GQuark field, - GValue *value); -void gst_structure_take_value (GstStructure *structure, - const gchar *fieldname, - GValue *value); -void gst_structure_set (GstStructure *structure, - const gchar *fieldname, - ...) G_GNUC_NULL_TERMINATED; - -void gst_structure_set_valist (GstStructure *structure, - const gchar *fieldname, - va_list varargs); - -void gst_structure_id_set (GstStructure *structure, - GQuark fieldname, - ...) G_GNUC_NULL_TERMINATED; - -void gst_structure_id_set_valist (GstStructure *structure, - GQuark fieldname, - va_list varargs); - -gboolean gst_structure_get_valist (const GstStructure *structure, - const char *first_fieldname, - va_list args); - -gboolean gst_structure_get (const GstStructure *structure, - const char *first_fieldname, - ...) G_GNUC_NULL_TERMINATED; - -gboolean gst_structure_id_get_valist (const GstStructure *structure, - GQuark first_field_id, - va_list args); - -gboolean gst_structure_id_get (const GstStructure *structure, - GQuark first_field_id, - ...) G_GNUC_NULL_TERMINATED; - -const GValue * gst_structure_id_get_value (const GstStructure *structure, - GQuark field); -const GValue * gst_structure_get_value (const GstStructure *structure, - const gchar *fieldname); -void gst_structure_remove_field (GstStructure *structure, - const gchar *fieldname); -void gst_structure_remove_fields (GstStructure *structure, - const gchar *fieldname, - ...) G_GNUC_NULL_TERMINATED; -void gst_structure_remove_fields_valist (GstStructure *structure, - const gchar *fieldname, - va_list varargs); -void gst_structure_remove_all_fields (GstStructure *structure); - -GType gst_structure_get_field_type (const GstStructure *structure, - const gchar *fieldname); -gboolean gst_structure_foreach (const GstStructure *structure, - GstStructureForeachFunc func, - gpointer user_data); -gboolean gst_structure_map_in_place (GstStructure *structure, - GstStructureMapFunc func, - gpointer user_data); -gint gst_structure_n_fields (const GstStructure *structure); -const gchar * gst_structure_nth_field_name (const GstStructure *structure, guint index); -gboolean gst_structure_id_has_field (const GstStructure *structure, - GQuark field); -gboolean gst_structure_id_has_field_typed (const GstStructure *structure, - GQuark field, - GType type); -gboolean gst_structure_has_field (const GstStructure *structure, - const gchar *fieldname); -gboolean gst_structure_has_field_typed (const GstStructure *structure, - const gchar *fieldname, - GType type); +GST_API +GType gst_structure_get_type (void); + +GST_API +GstStructure * gst_structure_new_empty (const gchar * name) G_GNUC_MALLOC; + +GST_API +GstStructure * gst_structure_new_id_empty (GQuark quark) G_GNUC_MALLOC; + +GST_API +GstStructure * gst_structure_new (const gchar * name, + const gchar * firstfield, + ...) G_GNUC_NULL_TERMINATED G_GNUC_MALLOC; +GST_API +GstStructure * gst_structure_new_valist (const gchar * name, + const gchar * firstfield, + va_list varargs) G_GNUC_MALLOC; +GST_API +GstStructure * gst_structure_new_id (GQuark name_quark, + GQuark field_quark, + ...) G_GNUC_MALLOC; +GST_API +GstStructure * gst_structure_new_from_string (const gchar * string); + +GST_API +GstStructure * gst_structure_copy (const GstStructure * structure) G_GNUC_MALLOC; + +GST_API +gboolean gst_structure_set_parent_refcount (GstStructure * structure, + gint * refcount); +GST_API +void gst_structure_free (GstStructure * structure); + +GST_API +void gst_clear_structure (GstStructure **structure_ptr); +#define gst_clear_structure(structure_ptr) g_clear_pointer ((structure_ptr), gst_structure_free) + +GST_API +const gchar * gst_structure_get_name (const GstStructure * structure); + +GST_API +GQuark gst_structure_get_name_id (const GstStructure * structure); + +GST_API +gboolean gst_structure_has_name (const GstStructure * structure, + const gchar * name); +GST_API +void gst_structure_set_name (GstStructure * structure, + const gchar * name); +GST_API +void gst_structure_id_set_value (GstStructure * structure, + GQuark field, + const GValue * value); +GST_API +void gst_structure_set_value (GstStructure * structure, + const gchar * fieldname, + const GValue * value); +GST_API +void gst_structure_set_array (GstStructure * structure, + const gchar * fieldname, + const GValueArray * array); +GST_API +void gst_structure_set_list (GstStructure * structure, + const gchar * fieldname, + const GValueArray * array); +GST_API +void gst_structure_id_take_value (GstStructure * structure, + GQuark field, + GValue * value); +GST_API +void gst_structure_take_value (GstStructure * structure, + const gchar * fieldname, + GValue * value); +GST_API +void gst_structure_set (GstStructure * structure, + const gchar * fieldname, + ...) G_GNUC_NULL_TERMINATED; +GST_API +void gst_structure_set_valist (GstStructure * structure, + const gchar * fieldname, + va_list varargs); +GST_API +void gst_structure_id_set (GstStructure * structure, + GQuark fieldname, + ...) G_GNUC_NULL_TERMINATED; +GST_API +void gst_structure_id_set_valist (GstStructure * structure, + GQuark fieldname, + va_list varargs); +GST_API +gboolean gst_structure_get_valist (const GstStructure * structure, + const char * first_fieldname, + va_list args); +GST_API +gboolean gst_structure_get (const GstStructure * structure, + const char * first_fieldname, + ...) G_GNUC_NULL_TERMINATED; +GST_API +gboolean gst_structure_id_get_valist (const GstStructure * structure, + GQuark first_field_id, + va_list args); +GST_API +gboolean gst_structure_id_get (const GstStructure * structure, + GQuark first_field_id, + ...) G_GNUC_NULL_TERMINATED; +GST_API +const GValue * gst_structure_id_get_value (const GstStructure * structure, + GQuark field); +GST_API +const GValue * gst_structure_get_value (const GstStructure * structure, + const gchar * fieldname); +GST_API +void gst_structure_remove_field (GstStructure * structure, + const gchar * fieldname); +GST_API +void gst_structure_remove_fields (GstStructure * structure, + const gchar * fieldname, + ...) G_GNUC_NULL_TERMINATED; +GST_API +void gst_structure_remove_fields_valist (GstStructure * structure, + const gchar * fieldname, + va_list varargs); +GST_API +void gst_structure_remove_all_fields (GstStructure * structure); + +GST_API +GType gst_structure_get_field_type (const GstStructure * structure, + const gchar * fieldname); +GST_API +gboolean gst_structure_foreach (const GstStructure * structure, + GstStructureForeachFunc func, + gpointer user_data); +GST_API +gboolean gst_structure_map_in_place (GstStructure * structure, + GstStructureMapFunc func, + gpointer user_data); +GST_API +void gst_structure_filter_and_map_in_place (GstStructure * structure, + GstStructureFilterMapFunc func, + gpointer user_data); +GST_API +gint gst_structure_n_fields (const GstStructure * structure); + +GST_API +const gchar * gst_structure_nth_field_name (const GstStructure * structure, + guint index); +GST_API +gboolean gst_structure_id_has_field (const GstStructure * structure, + GQuark field); +GST_API +gboolean gst_structure_id_has_field_typed (const GstStructure * structure, + GQuark field, + GType type); +GST_API +gboolean gst_structure_has_field (const GstStructure * structure, + const gchar * fieldname); +GST_API +gboolean gst_structure_has_field_typed (const GstStructure * structure, + const gchar * fieldname, + GType type); /* utility functions */ -gboolean gst_structure_get_boolean (const GstStructure *structure, - const gchar *fieldname, - gboolean *value); -gboolean gst_structure_get_int (const GstStructure *structure, - const gchar *fieldname, - gint *value); -gboolean gst_structure_get_uint (const GstStructure *structure, - const gchar *fieldname, - guint *value); -gboolean gst_structure_get_double (const GstStructure *structure, - const gchar *fieldname, - gdouble *value); -gboolean gst_structure_get_date (const GstStructure *structure, - const gchar *fieldname, - GDate **value); -gboolean gst_structure_get_date_time (const GstStructure *structure, - const gchar *fieldname, - GstDateTime **value); -gboolean gst_structure_get_clock_time (const GstStructure *structure, - const gchar *fieldname, - GstClockTime *value); -const gchar * gst_structure_get_string (const GstStructure *structure, - const gchar *fieldname); -gboolean gst_structure_get_enum (const GstStructure *structure, - const gchar *fieldname, - GType enumtype, - gint *value); -gboolean gst_structure_get_fraction (const GstStructure *structure, - const gchar *fieldname, - gint *value_numerator, - gint *value_denominator); - -gchar * gst_structure_to_string (const GstStructure *structure); -GstStructure * gst_structure_from_string (const gchar *string, - gchar **end); - -gboolean gst_structure_fixate_field_nearest_int (GstStructure *structure, - const char *field_name, - int target); -gboolean gst_structure_fixate_field_nearest_double (GstStructure *structure, - const char *field_name, - double target); - -gboolean gst_structure_fixate_field_boolean (GstStructure *structure, - const char *field_name, - gboolean target); -gboolean gst_structure_fixate_field_string (GstStructure *structure, - const char *field_name, - const gchar *target); -gboolean gst_structure_fixate_field_nearest_fraction (GstStructure *structure, - const char *field_name, - const gint target_numerator, - const gint target_denominator); -gboolean gst_structure_fixate_field (GstStructure *structure, - const char *field_name); - -gboolean gst_structure_is_equal(const GstStructure *structure1, - const GstStructure *structure2); -gboolean gst_structure_is_subset(const GstStructure *subset, - const GstStructure *superset); -gboolean gst_structure_can_intersect(const GstStructure *struct1, - const GstStructure *struct2); -GstStructure* gst_structure_intersect (const GstStructure *struct1, - const GstStructure *struct2); -void gst_structure_fixate (GstStructure *structure); + +GST_API +gboolean gst_structure_get_boolean (const GstStructure * structure, + const gchar * fieldname, + gboolean * value); +GST_API +gboolean gst_structure_get_int (const GstStructure * structure, + const gchar * fieldname, + gint * value); +GST_API +gboolean gst_structure_get_uint (const GstStructure * structure, + const gchar * fieldname, + guint * value); +GST_API +gboolean gst_structure_get_int64 (const GstStructure * structure, + const gchar * fieldname, + gint64 * value); +GST_API +gboolean gst_structure_get_uint64 (const GstStructure * structure, + const gchar * fieldname, + guint64 * value); +GST_API +gboolean gst_structure_get_double (const GstStructure * structure, + const gchar * fieldname, + gdouble * value); +GST_API +gboolean gst_structure_get_date (const GstStructure * structure, + const gchar * fieldname, + GDate ** value); +GST_API +gboolean gst_structure_get_date_time (const GstStructure * structure, + const gchar * fieldname, + GstDateTime ** value); +GST_API +gboolean gst_structure_get_clock_time (const GstStructure * structure, + const gchar * fieldname, + GstClockTime * value); +GST_API +const gchar * gst_structure_get_string (const GstStructure * structure, + const gchar * fieldname); +GST_API +gboolean gst_structure_get_enum (const GstStructure * structure, + const gchar * fieldname, + GType enumtype, + gint * value); +GST_API +gboolean gst_structure_get_fraction (const GstStructure * structure, + const gchar * fieldname, + gint * value_numerator, + gint * value_denominator); +GST_API +gboolean gst_structure_get_flagset (const GstStructure * structure, + const gchar * fieldname, + guint * value_flags, + guint * value_mask); +GST_API +gboolean gst_structure_get_array (GstStructure * structure, + const gchar * fieldname, + GValueArray ** array); +GST_API +gboolean gst_structure_get_list (GstStructure * structure, + const gchar * fieldname, + GValueArray ** array); +GST_API +gchar * gst_structure_to_string (const GstStructure * structure) G_GNUC_MALLOC; + +GST_API +GstStructure * gst_structure_from_string (const gchar * string, + gchar ** end) G_GNUC_MALLOC; +GST_API +gboolean gst_structure_fixate_field_nearest_int (GstStructure * structure, + const char * field_name, + int target); +GST_API +gboolean gst_structure_fixate_field_nearest_double (GstStructure * structure, + const char * field_name, + double target); +GST_API +gboolean gst_structure_fixate_field_boolean (GstStructure * structure, + const char * field_name, + gboolean target); +GST_API +gboolean gst_structure_fixate_field_string (GstStructure * structure, + const char * field_name, + const gchar * target); +GST_API +gboolean gst_structure_fixate_field_nearest_fraction (GstStructure * structure, + const char * field_name, + const gint target_numerator, + const gint target_denominator); +GST_API +gboolean gst_structure_fixate_field (GstStructure * structure, + const char * field_name); +GST_API +void gst_structure_fixate (GstStructure * structure); + +GST_API +gboolean gst_structure_is_equal (const GstStructure * structure1, + const GstStructure * structure2); +GST_API +gboolean gst_structure_is_subset (const GstStructure * subset, + const GstStructure * superset); +GST_API +gboolean gst_structure_can_intersect (const GstStructure * struct1, + const GstStructure * struct2); +GST_API +GstStructure * gst_structure_intersect (const GstStructure * struct1, + const GstStructure * struct2) G_GNUC_MALLOC; + +#ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstStructure, gst_structure_free) +#endif G_END_DECLS