335 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			335 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* GStreamer Editing Services
 | |
|  * Copyright (C) 2012 Paul Lange <palango@gmx.de>
 | |
|  *
 | |
|  * This library is free software; you can redistribute it and/or
 | |
|  * modify it under the terms of the GNU Library General Public
 | |
|  * License as published by the Free Software Foundation; either
 | |
|  * version 2 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
 | |
|  * Library General Public License for more details.
 | |
|  *
 | |
|  * 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.
 | |
|  */
 | |
| #pragma once
 | |
| 
 | |
| #include <glib-object.h>
 | |
| #include <gst/gst.h>
 | |
| #include <ges/ges-types.h>
 | |
| #include "ges-enums.h"
 | |
| 
 | |
| G_BEGIN_DECLS
 | |
| 
 | |
| #define GES_TYPE_META_CONTAINER                 (ges_meta_container_get_type ())
 | |
| #define GES_META_CONTAINER_GET_INTERFACE (inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), GES_TYPE_META_CONTAINER, GESMetaContainerInterface))
 | |
| GES_API
 | |
| G_DECLARE_INTERFACE(GESMetaContainer, ges_meta_container, GES, META_CONTAINER, GObject);
 | |
| 
 | |
| /**
 | |
|  * GES_META_FORMATTER_NAME:
 | |
|  *
 | |
|  * The name of a formatter, used as the #GESAsset:id for #GESFormatter
 | |
|  * assets (string).
 | |
|  */
 | |
| #define GES_META_FORMATTER_NAME                       "name"
 | |
| 
 | |
| /**
 | |
|  * GES_META_DESCRIPTION:
 | |
|  *
 | |
|  * The description of the object, to be used in various contexts (string).
 | |
|  */
 | |
| #define GES_META_DESCRIPTION                         "description"
 | |
| 
 | |
| /**
 | |
|  * GES_META_FORMATTER_MIMETYPE:
 | |
|  *
 | |
|  * The mimetype used for the file produced by a #GESFormatter (string).
 | |
|  */
 | |
| #define GES_META_FORMATTER_MIMETYPE                   "mimetype"
 | |
| 
 | |
| /**
 | |
|  * GES_META_FORMATTER_EXTENSION:
 | |
|  *
 | |
|  * The file extension of files produced by a #GESFormatter (string).
 | |
|  */
 | |
| #define GES_META_FORMATTER_EXTENSION                  "extension"
 | |
| 
 | |
| /**
 | |
|  * GES_META_FORMATTER_VERSION:
 | |
|  *
 | |
|  * The version of a #GESFormatter (double).
 | |
|  */
 | |
| #define GES_META_FORMATTER_VERSION                    "version"
 | |
| 
 | |
| /**
 | |
|  * GES_META_FORMATTER_RANK:
 | |
|  *
 | |
|  * The rank of a #GESFormatter (a #GstRank).
 | |
|  */
 | |
| #define GES_META_FORMATTER_RANK                       "rank"
 | |
| 
 | |
| /**
 | |
|  * GES_META_VOLUME:
 | |
|  *
 | |
|  * The volume for a #GESTrack or a #GESLayer (float).
 | |
|  */
 | |
| #define GES_META_VOLUME                              "volume"
 | |
| 
 | |
| /**
 | |
|  * GES_META_VOLUME_DEFAULT:
 | |
|  *
 | |
|  * The default volume for a #GESTrack or a #GESLayer as a float.
 | |
|  */
 | |
| #define GES_META_VOLUME_DEFAULT                       1.0
 | |
| 
 | |
| /**
 | |
|  * GES_META_FORMAT_VERSION:
 | |
|  *
 | |
|  * The version of the format in which a project is serialized (string).
 | |
|  */
 | |
| #define GES_META_FORMAT_VERSION                       "format-version"
 | |
| 
 | |
| /**
 | |
|  * GES_META_MARKER_COLOR:
 | |
|  *
 | |
|  * The ARGB color of a #GESMarker (an AARRGGBB hex as a uint).
 | |
|  */
 | |
| #define GES_META_MARKER_COLOR                         "marker-color"
 | |
| 
 | |
| typedef struct _GESMetaContainer          GESMetaContainer;
 | |
| typedef struct _GESMetaContainerInterface GESMetaContainerInterface;
 | |
| 
 | |
| struct _GESMetaContainerInterface {
 | |
|   GTypeInterface parent_iface;
 | |
| 
 | |
|   gpointer _ges_reserved[GES_PADDING];
 | |
| };
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_set_boolean     (GESMetaContainer *container,
 | |
|                                         const gchar* meta_item,
 | |
|                                         gboolean value);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_set_int         (GESMetaContainer *container,
 | |
|                                         const gchar* meta_item,
 | |
|                                         gint value);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_set_uint        (GESMetaContainer *container,
 | |
|                                         const gchar* meta_item,
 | |
|                                         guint value);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_set_int64       (GESMetaContainer *container,
 | |
|                                         const gchar* meta_item,
 | |
|                                         gint64 value);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_set_uint64      (GESMetaContainer *container,
 | |
|                                         const gchar* meta_item,
 | |
|                                         guint64 value);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_set_float       (GESMetaContainer *container,
 | |
|                                         const gchar* meta_item,
 | |
|                                         gfloat value);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_set_double      (GESMetaContainer *container,
 | |
|                                         const gchar* meta_item,
 | |
|                                         gdouble value);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_set_date        (GESMetaContainer *container,
 | |
|                                         const gchar* meta_item,
 | |
|                                         const GDate* value);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_set_date_time   (GESMetaContainer *container,
 | |
|                                         const gchar* meta_item,
 | |
|                                         const GstDateTime* value);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_set_string      (GESMetaContainer *container,
 | |
|                                         const gchar* meta_item,
 | |
|                                         const gchar* value);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_set_meta            (GESMetaContainer * container,
 | |
|                                         const gchar* meta_item,
 | |
|                                         const GValue *value);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_set_marker_list     (GESMetaContainer * container,
 | |
|                                         const gchar * meta_item,
 | |
|                                         const GESMarkerList *list);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_register_static_meta (GESMetaContainer * container,
 | |
|                                          GESMetaFlag flags,
 | |
|                                          const gchar * meta_item,
 | |
|                                          GType type);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_register_meta_boolean (GESMetaContainer *container,
 | |
|                                           GESMetaFlag flags,
 | |
|                                           const gchar* meta_item,
 | |
|                                           gboolean value);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_register_meta_int     (GESMetaContainer *container,
 | |
|                                           GESMetaFlag flags,
 | |
|                                           const gchar* meta_item,
 | |
|                                           gint value);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_register_meta_uint    (GESMetaContainer *container,
 | |
|                                           GESMetaFlag flags,
 | |
|                                           const gchar* meta_item,
 | |
|                                           guint value);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_register_meta_int64   (GESMetaContainer *container,
 | |
|                                           GESMetaFlag flags,
 | |
|                                           const gchar* meta_item,
 | |
|                                           gint64 value);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_register_meta_uint64  (GESMetaContainer *container,
 | |
|                                           GESMetaFlag flags,
 | |
|                                           const gchar* meta_item,
 | |
|                                           guint64 value);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_register_meta_float   (GESMetaContainer *container,
 | |
|                                           GESMetaFlag flags,
 | |
|                                           const gchar* meta_item,
 | |
|                                           gfloat value);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_register_meta_double  (GESMetaContainer *container,
 | |
|                                           GESMetaFlag flags,
 | |
|                                           const gchar* meta_item,
 | |
|                                           gdouble value);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_register_meta_date    (GESMetaContainer *container,
 | |
|                                           GESMetaFlag flags,
 | |
|                                           const gchar* meta_item,
 | |
|                                           const GDate* value);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_register_meta_date_time  (GESMetaContainer *container,
 | |
|                                              GESMetaFlag flags,
 | |
|                                              const gchar* meta_item,
 | |
|                                              const GstDateTime* value);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_register_meta_string     (GESMetaContainer *container,
 | |
|                                              GESMetaFlag flags,
 | |
|                                              const gchar* meta_item,
 | |
|                                              const gchar* value);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_register_meta            (GESMetaContainer *container,
 | |
|                                              GESMetaFlag flags,
 | |
|                                              const gchar* meta_item,
 | |
|                                              const GValue * value);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_check_meta_registered    (GESMetaContainer *container,
 | |
|                                              const gchar * meta_item,
 | |
|                                              GESMetaFlag * flags,
 | |
|                                              GType * type);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_get_boolean     (GESMetaContainer *container,
 | |
|                                         const gchar* meta_item,
 | |
|                                         gboolean* dest);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_get_int         (GESMetaContainer *container,
 | |
|                                         const gchar* meta_item,
 | |
|                                         gint* dest);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_get_uint        (GESMetaContainer *container,
 | |
|                                         const gchar* meta_item,
 | |
|                                         guint* dest);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_get_int64       (GESMetaContainer *container,
 | |
|                                         const gchar* meta_item,
 | |
|                                         gint64* dest);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_get_uint64      (GESMetaContainer *container,
 | |
|                                         const gchar* meta_item,
 | |
|                                         guint64* dest);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_get_float       (GESMetaContainer *container,
 | |
|                                         const gchar* meta_item,
 | |
|                                         gfloat* dest);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_get_double      (GESMetaContainer *container,
 | |
|                                         const gchar* meta_item,
 | |
|                                         gdouble* dest);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_get_date        (GESMetaContainer *container,
 | |
|                                         const gchar* meta_item,
 | |
|                                         GDate** dest);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_get_date_time   (GESMetaContainer *container,
 | |
|                                         const gchar* meta_item,
 | |
|                                         GstDateTime** dest);
 | |
| 
 | |
| GES_API const gchar *
 | |
| ges_meta_container_get_string      (GESMetaContainer * container,
 | |
|                                         const gchar * meta_item);
 | |
| 
 | |
| GES_API GESMarkerList *
 | |
| ges_meta_container_get_marker_list (GESMetaContainer * container,
 | |
|                                     const gchar * key);
 | |
| 
 | |
| GES_API const GValue *
 | |
| ges_meta_container_get_meta            (GESMetaContainer * container,
 | |
|                                         const gchar * key);
 | |
| /**
 | |
|  * GESMetaForeachFunc:
 | |
|  * @container: A #GESMetaContainer
 | |
|  * @key: The key for one of @container's fields
 | |
|  * @value: The set value under @key
 | |
|  * @user_data: User data
 | |
|  *
 | |
|  * A method to be called on all of a meta container's fields.
 | |
|  */
 | |
| typedef void
 | |
| (*GESMetaForeachFunc)                  (const GESMetaContainer *container,
 | |
|                                         const gchar *key,
 | |
|                                         const GValue *value,
 | |
|                                         gpointer user_data);
 | |
| 
 | |
| GES_API void
 | |
| ges_meta_container_foreach             (GESMetaContainer *container,
 | |
|                                         GESMetaForeachFunc func,
 | |
|                                         gpointer user_data);
 | |
| 
 | |
| GES_API gchar *
 | |
| ges_meta_container_metas_to_string     (GESMetaContainer *container);
 | |
| 
 | |
| GES_API gboolean
 | |
| ges_meta_container_add_metas_from_string (GESMetaContainer *container,
 | |
|                                           const gchar *str);
 | |
| 
 | |
| G_END_DECLS
 |