timeline-object: Add TrackObject to the Track after the TimelineObject
[platform/upstream/gstreamer.git] / ges / ges.c
1 /* GStreamer Editing Services
2  * Copyright (C) 2009 Edward Hervey <edward.hervey@collabora.co.uk>
3  *               2009 Nokia Corporation
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Library General Public
7  * License as published by the Free Software Foundation; either
8  * version 2 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Library General Public License for more details.
14  *
15  * You should have received a copy of the GNU Library General Public
16  * License along with this library; if not, write to the
17  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18  * Boston, MA 02111-1307, USA.
19  */
20
21 #include <ges/ges.h>
22 #include <gst/controller/gstcontroller.h>
23 #include "ges-internal.h"
24
25 #define GES_GNONLIN_VERSION_NEEDED_MAJOR 0
26 #define GES_GNONLIN_VERSION_NEEDED_MINOR 10
27 #define GES_GNONLIN_VERSION_NEEDED_MICRO 16
28
29 GST_DEBUG_CATEGORY (_ges_debug);
30
31 /**
32  * SECTION:ges-common
33  * @short_description: Initialization.
34  */
35
36 static gboolean
37 ges_check_gnonlin_availability (void)
38 {
39   gboolean ret = TRUE;
40   if (!gst_default_registry_check_feature_version ("gnlcomposition",
41           GES_GNONLIN_VERSION_NEEDED_MAJOR, GES_GNONLIN_VERSION_NEEDED_MINOR,
42           GES_GNONLIN_VERSION_NEEDED_MICRO)) {
43     GST_ERROR
44         ("GNonLin plugins not found, or not at least version %u.%u.%u",
45         GES_GNONLIN_VERSION_NEEDED_MAJOR,
46         GES_GNONLIN_VERSION_NEEDED_MINOR, GES_GNONLIN_VERSION_NEEDED_MICRO);
47     ret = FALSE;
48   }
49   return ret;
50 }
51
52 /**
53  * ges_init:
54  *
55  * Initialize the GStreamer Editing Service. Call this before any usage of
56  * GES. You should take care of initilizing GStreamer before calling this
57  * function.
58  */
59
60 gboolean
61 ges_init (void)
62 {
63   /* initialize debugging category */
64   GST_DEBUG_CATEGORY_INIT (_ges_debug, "ges", GST_DEBUG_FG_YELLOW,
65       "GStreamer Editing Services");
66   gst_controller_init (NULL, NULL);
67
68   /* register timeline object classes with the system */
69
70   GES_TYPE_TIMELINE_TEST_SOURCE;
71   GES_TYPE_TIMELINE_FILE_SOURCE;
72   GES_TYPE_TIMELINE_TITLE_SOURCE;
73   GES_TYPE_TIMELINE_STANDARD_TRANSITION;
74   GES_TYPE_TIMELINE_OVERLAY;
75
76   /* check the gnonlin elements are available */
77   if (!ges_check_gnonlin_availability ())
78     return FALSE;
79
80   /* TODO: user-defined types? */
81
82   GST_DEBUG ("GStreamer Editing Services initialized");
83
84   return TRUE;
85 }
86
87
88 /**
89  * ges_version:
90  * @major: (out): pointer to a guint to store the major version number
91  * @minor: (out): pointer to a guint to store the minor version number
92  * @micro: (out): pointer to a guint to store the micro version number
93  * @nano:  (out): pointer to a guint to store the nano version number
94  *
95  * Gets the version number of the GStreamer Editing Services library.
96  */
97 void
98 ges_version (guint * major, guint * minor, guint * micro, guint * nano)
99 {
100   g_return_if_fail (major);
101   g_return_if_fail (minor);
102   g_return_if_fail (micro);
103   g_return_if_fail (nano);
104
105   *major = GES_VERSION_MAJOR;
106   *minor = GES_VERSION_MINOR;
107   *micro = GES_VERSION_MICRO;
108   *nano = GES_VERSION_NANO;
109 }