1 /* GStreamer Editing Services
2 * Copyright (C) 2012 Paul Lange <palango@gmx.de>
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Library General Public License for more details.
14 * You should have received a copy of the GNU Library General Public
15 * License along with this library; if not, write to the
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 * Boston, MA 02111-1307, USA.
20 #ifndef _GES_META_CONTAINER
21 #define _GES_META_CONTAINER
23 #include <glib-object.h>
25 #include <ges/ges-types.h>
26 #include "ges-enums.h"
30 #define GES_TYPE_META_CONTAINER (ges_meta_container_get_type ())
31 #define GES_META_CONTAINER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GES_TYPE_META_CONTAINER, GESMetaContainer))
32 #define GES_IS_META_CONTAINER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GES_TYPE_META_CONTAINER))
33 #define GES_META_CONTAINER_GET_INTERFACE (inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), GES_TYPE_META_CONTAINER, GESMetaContainerInterface))
36 * GES_META_FORMATTER_NAME:
38 * Name of a formatter it is used as ID of Formater assets (string)
40 * The name of the formatter
42 #define GES_META_FORMATTER_NAME "name"
45 * GES_META_DESCRIPTION:
47 * The description of an object, can be used in various context (string)
51 #define GES_META_DESCRIPTION "description"
54 * GES_META_FORMATTER_MIMETYPE:
56 * Mimetype used for the file produced by a formatter (string)
60 #define GES_META_FORMATTER_MIMETYPE "mimetype"
63 * GES_META_FORMATTER_EXTENSION:
65 * The extension of the files produced by a formatter (string)
67 #define GES_META_FORMATTER_EXTENSION "extension"
70 * GES_META_FORMATTER_VERSION:
72 * The version of a formatter (double)
74 * The formatter version
76 #define GES_META_FORMATTER_VERSION "version"
79 * GES_META_FORMATTER_RANK:
81 * The rank of a formatter (GstRank)
83 * The rank of a formatter
85 #define GES_META_FORMATTER_RANK "rank"
90 * The volume, can be used for audio track or layers
92 * The volume for a track or a layer, it is register as a float
94 #define GES_META_VOLUME "volume"
97 * GES_META_VOLUME_DEFAULT:
101 * The default volume for a track or a layer as a float
103 #define GES_META_VOLUME_DEFAULT 1.0
106 * GES_META_FORMAT_VERSION:
108 * The version of the format in which a project is serialized
110 #define GES_META_FORMAT_VERSION "format-version"
112 typedef struct _GESMetaContainer GESMetaContainer;
113 typedef struct _GESMetaContainerInterface GESMetaContainerInterface;
115 struct _GESMetaContainerInterface {
116 GTypeInterface parent_iface;
118 gpointer _ges_reserved[GES_PADDING];
122 GType ges_meta_container_get_type (void);
125 ges_meta_container_set_boolean (GESMetaContainer *container,
126 const gchar* meta_item,
130 ges_meta_container_set_int (GESMetaContainer *container,
131 const gchar* meta_item,
135 ges_meta_container_set_uint (GESMetaContainer *container,
136 const gchar* meta_item,
140 ges_meta_container_set_int64 (GESMetaContainer *container,
141 const gchar* meta_item,
145 ges_meta_container_set_uint64 (GESMetaContainer *container,
146 const gchar* meta_item,
150 ges_meta_container_set_float (GESMetaContainer *container,
151 const gchar* meta_item,
155 ges_meta_container_set_double (GESMetaContainer *container,
156 const gchar* meta_item,
160 ges_meta_container_set_date (GESMetaContainer *container,
161 const gchar* meta_item,
165 ges_meta_container_set_date_time (GESMetaContainer *container,
166 const gchar* meta_item,
167 const GstDateTime* value);
170 ges_meta_container_set_string (GESMetaContainer *container,
171 const gchar* meta_item,
175 ges_meta_container_set_meta (GESMetaContainer * container,
176 const gchar* meta_item,
177 const GValue *value);
180 ges_meta_container_register_meta_boolean (GESMetaContainer *container,
182 const gchar* meta_item,
186 ges_meta_container_register_meta_int (GESMetaContainer *container,
188 const gchar* meta_item,
192 ges_meta_container_register_meta_uint (GESMetaContainer *container,
194 const gchar* meta_item,
198 ges_meta_container_register_meta_int64 (GESMetaContainer *container,
200 const gchar* meta_item,
204 ges_meta_container_register_meta_uint64 (GESMetaContainer *container,
206 const gchar* meta_item,
210 ges_meta_container_register_meta_float (GESMetaContainer *container,
212 const gchar* meta_item,
216 ges_meta_container_register_meta_double (GESMetaContainer *container,
218 const gchar* meta_item,
222 ges_meta_container_register_meta_date (GESMetaContainer *container,
224 const gchar* meta_item,
228 ges_meta_container_register_meta_date_time (GESMetaContainer *container,
230 const gchar* meta_item,
231 const GstDateTime* value);
234 ges_meta_container_register_meta_string (GESMetaContainer *container,
236 const gchar* meta_item,
240 ges_meta_container_register_meta (GESMetaContainer *container,
242 const gchar* meta_item,
243 const GValue * value);
246 ges_meta_container_check_meta_registered (GESMetaContainer *container,
247 const gchar * meta_item,
252 ges_meta_container_get_boolean (GESMetaContainer *container,
253 const gchar* meta_item,
257 ges_meta_container_get_int (GESMetaContainer *container,
258 const gchar* meta_item,
262 ges_meta_container_get_uint (GESMetaContainer *container,
263 const gchar* meta_item,
267 ges_meta_container_get_int64 (GESMetaContainer *container,
268 const gchar* meta_item,
272 ges_meta_container_get_uint64 (GESMetaContainer *container,
273 const gchar* meta_item,
277 ges_meta_container_get_float (GESMetaContainer *container,
278 const gchar* meta_item,
282 ges_meta_container_get_double (GESMetaContainer *container,
283 const gchar* meta_item,
287 ges_meta_container_get_date (GESMetaContainer *container,
288 const gchar* meta_item,
292 ges_meta_container_get_date_time (GESMetaContainer *container,
293 const gchar* meta_item,
296 GES_API const gchar *
297 ges_meta_container_get_string (GESMetaContainer * container,
298 const gchar * meta_item);
300 GES_API const GValue *
301 ges_meta_container_get_meta (GESMetaContainer * container,
305 (*GESMetaForeachFunc) (const GESMetaContainer *container,
311 ges_meta_container_foreach (GESMetaContainer *container,
312 GESMetaForeachFunc func,
316 ges_meta_container_metas_to_string (GESMetaContainer *container);
319 ges_meta_container_add_metas_from_string (GESMetaContainer *container,
323 #endif /* _GES_META_CONTAINER */