diff --git a/docs/libs/ges-docs.sgml b/docs/libs/ges-docs.sgml
index 180250b524..145160a107 100644
--- a/docs/libs/ges-docs.sgml
+++ b/docs/libs/ges-docs.sgml
@@ -87,7 +87,6 @@ platform as well as Windows. It is released under the GNU Library General Public
Serialization Classes
-
diff --git a/docs/libs/ges.types b/docs/libs/ges.types
index eeb644c47a..a1e25bba2c 100644
--- a/docs/libs/ges.types
+++ b/docs/libs/ges.types
@@ -3,7 +3,6 @@
ges_custom_timeline_source_get_type
ges_formatter_get_type
-ges_keyfile_formatter_get_type
ges_simple_timeline_layer_get_type
%ges_text_halign_get_type
%ges_text_valign_get_type
diff --git a/ges/Makefile.am b/ges/Makefile.am
index c3ce3e411a..1ed85f50f7 100644
--- a/ges/Makefile.am
+++ b/ges/Makefile.am
@@ -45,7 +45,6 @@ libges_@GST_API_VERSION@_la_SOURCES = \
ges-track-parse-launch-effect.c \
ges-screenshot.c \
ges-formatter.c \
- ges-keyfile-formatter.c \
ges-pitivi-formatter.c \
ges-utils.c
@@ -89,7 +88,6 @@ libges_@GST_API_VERSION@include_HEADERS = \
ges-track-text-overlay.h \
ges-screenshot.h \
ges-formatter.h \
- ges-keyfile-formatter.h \
ges-pitivi-formatter.h \
ges-utils.h
diff --git a/ges/ges-formatter.c b/ges/ges-formatter.c
index ec0bad24de..8d85176a0e 100644
--- a/ges/ges-formatter.c
+++ b/ges/ges-formatter.c
@@ -48,7 +48,6 @@
#include
#include "ges-formatter.h"
-#include "ges-keyfile-formatter.h"
#include "ges-internal.h"
#include "ges.h"
@@ -168,39 +167,6 @@ ges_formatter_find_for_uri (const gchar * uri)
return ret;
}
-/**
- * ges_formatter_new_for_uri:
- * @uri: a #gchar * pointing to the uri
- *
- * Creates a #GESFormatter that can handle the given URI.
- *
- * Returns: A GESFormatter that can load the given uri, or NULL if
- * the uri is not supported.
- */
-
-GESFormatter *
-ges_formatter_new_for_uri (const gchar * uri)
-{
- if (ges_formatter_can_load_uri (uri, NULL))
- return GES_FORMATTER (ges_keyfile_formatter_new ());
- return NULL;
-}
-
-/**
- * ges_default_formatter_new:
- *
- * Creates a new instance of the default GESFormatter type on this system
- * (currently #GESKeyfileFormatter).
- *
- * Returns: (transfer full): a #GESFormatter instance or %NULL
- */
-
-GESFormatter *
-ges_default_formatter_new (void)
-{
- return GES_FORMATTER (ges_keyfile_formatter_new ());
-}
-
static gboolean
default_can_load_uri (const gchar * uri, GError ** error)
{
diff --git a/ges/ges-formatter.h b/ges/ges-formatter.h
index 753ccd35bb..40d6ea2d71 100644
--- a/ges/ges-formatter.h
+++ b/ges/ges-formatter.h
@@ -169,9 +169,6 @@ struct _GESFormatterClass {
GType ges_formatter_get_type (void);
/* Main Formatter methods */
-GESFormatter *ges_formatter_new_for_uri (const gchar *uri);
-GESFormatter *ges_default_formatter_new (void);
-
gboolean ges_formatter_can_load_uri (const gchar * uri, GError **error);
gboolean ges_formatter_can_save_uri (const gchar * uri, GError **error);
diff --git a/ges/ges-keyfile-formatter.c b/ges/ges-keyfile-formatter.c
deleted file mode 100644
index 7f99382d61..0000000000
--- a/ges/ges-keyfile-formatter.c
+++ /dev/null
@@ -1,463 +0,0 @@
-/* GStreamer Editing Services
- * Copyright (C) 2010 Brandon Lewis
- * 2010 Nokia Corporation
- *
- * 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., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-/**
- * SECTION:ges-keyfile-formatter
- * @short_description: GKeyFile formatter
- **/
-
-#include
-#include
-#include "ges.h"
-#include "ges-internal.h"
-
-G_DEFINE_TYPE (GESKeyfileFormatter, ges_keyfile_formatter, GES_TYPE_FORMATTER);
-
-/* for ini format */
-static gboolean save_keyfile (GESFormatter * keyfile_formatter,
- GESTimeline * timeline);
-static gboolean load_keyfile (GESFormatter * keyfile_formatter,
- GESTimeline * timeline);
-
-static void
-ges_keyfile_formatter_class_init (GESKeyfileFormatterClass * klass)
-{
- GESFormatterClass *formatter_klass;
-
- formatter_klass = GES_FORMATTER_CLASS (klass);
-
- formatter_klass->save = save_keyfile;
- formatter_klass->load = load_keyfile;
-}
-
-static void
-ges_keyfile_formatter_init (GESKeyfileFormatter * object)
-{
-}
-
-/**
- * ges_keyfile_formatter_new:
- *
- * Creates a new #GESKeyfileFormatter.
- *
- * Returns: The newly created #GESKeyfileFormatter.
- */
-GESKeyfileFormatter *
-ges_keyfile_formatter_new (void)
-{
- return g_object_new (GES_TYPE_KEYFILE_FORMATTER, NULL);
-}
-
-static gboolean
-save_keyfile (GESFormatter * keyfile_formatter, GESTimeline * timeline)
-{
- GKeyFile *kf;
- GList *tmp, *tracks, *layers;
- int i = 0;
- int n_objects = 0;
- gchar buffer[255];
- gchar *data;
- gsize length;
-
- GST_DEBUG ("saving keyfile_formatter");
-
- kf = g_key_file_new ();
-
- g_key_file_set_value (kf, "General", "version", "1");
-
- tracks = ges_timeline_get_tracks (timeline);
-
- for (i = 0, tmp = tracks; tmp; i++, tmp = tmp->next) {
- GESTrack *track;
- gchar *type;
- gchar *caps;
- GValue v = { 0 };
-
- track = GES_TRACK (tmp->data);
-
- g_snprintf (buffer, 255, "Track%d", i);
- g_value_init (&v, GES_TYPE_TRACK_TYPE);
- g_object_get_property (G_OBJECT (track), "track-type", &v);
-
- type = gst_value_serialize (&v);
- caps = gst_caps_to_string (ges_track_get_caps (track));
-
- g_key_file_set_value (kf, buffer, "type", type);
- g_key_file_set_string (kf, buffer, "caps", caps);
-
- g_free (caps);
- g_free (type);
- gst_object_unref (track);
- tmp->data = NULL;
- }
-
- g_list_free (tracks);
-
- layers = ges_timeline_get_layers (timeline);
-
- for (i = 0, tmp = layers; tmp; i++, tmp = tmp->next) {
- const gchar *type;
- GESTimelineLayer *layer;
- GList *objs, *cur;
- layer = tmp->data;
-
- g_snprintf (buffer, 255, "Layer%d", i);
-
- if (GES_IS_SIMPLE_TIMELINE_LAYER (tmp->data)) {
- type = "simple";
- } else {
- type = "default";
- }
-
- g_key_file_set_integer (kf, buffer, "priority",
- ges_timeline_layer_get_priority (layer));
- g_key_file_set_value (kf, buffer, "type", type);
-
- objs = ges_timeline_layer_get_objects (layer);
-
- for (cur = objs; cur; cur = cur->next) {
- GESTimelineObject *obj;
- GParamSpec **properties;
- guint i, n;
-
- obj = GES_TIMELINE_OBJECT (cur->data);
- properties =
- g_object_class_list_properties (G_OBJECT_GET_CLASS (obj), &n);
-
- g_snprintf (buffer, 255, "Object%d", n_objects);
- n_objects++;
-
- g_key_file_set_value (kf, buffer, "type",
- G_OBJECT_TYPE_NAME (G_OBJECT (obj)));
-
- for (i = 0; i < n; i++) {
- GValue v = { 0 };
- gchar *serialized;
- GParamSpec *p = properties[i];
-
- g_value_init (&v, p->value_type);
- g_object_get_property (G_OBJECT (obj), p->name, &v);
-
- /* FIXME: does this work for properties marked G_PARAM_CONSTRUCT_ONLY?
- * */
-
- if ((p->flags & G_PARAM_READABLE) && (p->flags & G_PARAM_WRITABLE)) {
- if (!(serialized = gst_value_serialize (&v)))
- continue;
-
- g_key_file_set_string (kf, buffer, p->name, serialized);
- g_free (serialized);
- }
-
- g_value_unset (&v);
- }
-
- g_free (properties);
- g_object_unref (obj);
- cur->data = NULL;
- }
-
- g_list_free (objs);
- }
-
- g_list_foreach (layers, (GFunc) g_object_unref, NULL);
- g_list_free (layers);
-
- data = g_key_file_to_data (kf, &length, NULL);
- ges_formatter_set_data (keyfile_formatter, data, length);
- g_key_file_free (kf);
-
- return TRUE;
-}
-
-static gboolean
-create_track (GKeyFile * kf, gchar * group, GESTimeline * timeline)
-{
- GESTrack *track;
- GstCaps *caps;
- gchar *caps_field, *type_field;
- gboolean res;
- GValue v = { 0 };
-
- if (!(caps_field = g_key_file_get_string (kf, group, "caps", NULL)))
- return FALSE;
-
- caps = gst_caps_from_string (caps_field);
- g_free (caps_field);
-
- if (!(type_field = g_key_file_get_value (kf, group, "type", NULL)))
- return FALSE;
-
- g_value_init (&v, GES_TYPE_TRACK_TYPE);
- res = gst_value_deserialize (&v, type_field);
- g_free (type_field);
-
- if (!caps || !res)
- return FALSE;
-
- track = ges_track_new (g_value_get_flags (&v), caps);
-
- if (!ges_timeline_add_track (timeline, track)) {
- g_object_unref (track);
- return FALSE;
- }
-
- return TRUE;
-}
-
-static GESTimelineLayer *
-create_layer (GKeyFile * kf, gchar * group, GESTimeline * timeline)
-{
- GESTimelineLayer *ret = NULL;
- gchar *type_field, *priority_field;
- gboolean is_simple;
- guint priority;
-
- if (!(type_field = g_key_file_get_value (kf, group, "type", NULL)))
- return FALSE;
-
- is_simple = g_str_equal (type_field, "simple");
- g_free (type_field);
-
- if (!(priority_field = g_key_file_get_value (kf, group, "priority", NULL)))
- return FALSE;
-
- priority = strtoul (priority_field, NULL, 10);
- g_free (priority_field);
-
- if (is_simple) {
- GESSimpleTimelineLayer *simple;
- simple = ges_simple_timeline_layer_new ();
- ret = (GESTimelineLayer *) simple;
- } else {
- ret = ges_timeline_layer_new ();
- }
-
- ges_timeline_layer_set_priority (ret, priority);
- if (!ges_timeline_add_layer (timeline, ret)) {
- g_object_unref (ret);
- ret = NULL;
- }
-
- return ret;
-}
-
-static gboolean
-create_object (GKeyFile * kf, gchar * group, GESTimelineLayer * layer)
-{
- GType type;
- gchar *type_name;
- GObject *obj;
- GESTimelineObject *timeline_obj;
- gchar **keys;
- gsize n_keys, i;
- GParamSpec *pspec;
- GObjectClass *klass;
- GParameter *params, *p;
- gboolean ret = FALSE;
-
- GST_INFO ("processing '%s'", group);
-
- /* get a reference to the object class */
-
- if (!(type_name = g_key_file_get_value (kf, group, "type", NULL))) {
- GST_ERROR ("no type name for object '%s'", group);
- return FALSE;
- }
-
- if (!(type = g_type_from_name (type_name))) {
- GST_ERROR ("invalid type name '%s'", type_name);
- goto fail_free_type_name;
- }
-
- if (!(klass = g_type_class_ref (type))) {
- GST_ERROR ("couldn't get class ref");
- goto fail_free_type_name;
- }
-
- if (!(keys = g_key_file_get_keys (kf, group, &n_keys, NULL)))
- goto fail_unref_class;
-
- /* create an array of parameters for the call to g_new0 */
- /* skip first field 'type' */
-
- if (!(params = g_new0 (GParameter, (n_keys - 1)))) {
- GST_ERROR ("couldn't allocate parameter list");
- goto fail_free_keys;
- }
-
- GST_DEBUG ("processing parameter list '%s'", group);
-
- for (p = params, i = 1; i < n_keys; i++, p++) {
- gchar *value;
- gchar *key;
-
- key = keys[i];
-
- GST_DEBUG ("processing key '%s'", key);
-
- /* find the param spec for this property */
- if (!(pspec = g_object_class_find_property (klass, key))) {
- GST_ERROR ("Object type %s has no property %s", type_name, key);
- goto fail_free_params;
- }
-
- p->name = key;
- g_value_init (&p->value, pspec->value_type);
-
- /* assume this is going to work */
- value = g_key_file_get_string (kf, group, key, NULL);
-
- if (!gst_value_deserialize (&p->value, value)) {
- GST_ERROR ("Couldn't read property value '%s' for property '%s'",
- key, value);
- goto fail_free_params;
- }
-
- g_free (value);
- }
-
- /* create the object from the supplied type name */
-
- if (!(obj = g_object_newv (type, (n_keys - 1), params))) {
- GST_ERROR ("couldn't create object");
- goto fail_free_type_name;
- }
-
- /* check that we have a subclass of GESTimelineObject */
-
- if (!GES_IS_TIMELINE_OBJECT (obj)) {
- GST_ERROR ("'%s' is not a subclass of GESTimelineObject!", type_name);
- goto fail_unref_obj;
- }
- timeline_obj = (GESTimelineObject *) obj;
-
- /* add the object to the layer */
-
- if (GES_IS_SIMPLE_TIMELINE_LAYER (layer)) {
- if (!ges_simple_timeline_layer_add_object ((GESSimpleTimelineLayer *)
- layer, timeline_obj, -1)) {
- goto fail_unref_obj;
- }
- } else {
- if (!ges_timeline_layer_add_object (layer, timeline_obj)) {
- goto fail_unref_obj;
- }
- }
-
- ret = TRUE;
-
-fail_unref_obj:
- if (!ret)
- g_object_unref (obj);
-
-fail_free_params:
- for (p = params, i = 1; i < n_keys; i++, p++) {
- g_value_unset (&p->value);
- }
- g_free (params);
-
-fail_free_keys:
- g_strfreev (keys);
-
-fail_unref_class:
- g_type_class_unref (klass);
-
-fail_free_type_name:
- g_free (type_name);
-
- return ret;
-}
-
-static gboolean
-load_keyfile (GESFormatter * keyfile_formatter, GESTimeline * timeline)
-{
- GKeyFile *kf;
- GError *error = NULL;
- gboolean ret = TRUE;
- gchar **groups;
- gsize n_groups, i;
- GESTimelineLayer *cur_layer = NULL;
- gchar *data;
- gsize length;
-
- kf = g_key_file_new ();
- data = ges_formatter_get_data (keyfile_formatter, &length);
- if (!g_key_file_load_from_data (kf, data, length, G_KEY_FILE_NONE, &error)) {
- ret = FALSE;
- GST_ERROR ("%s", error->message);
- GST_INFO ("%s", data);
- goto free_kf;
- }
-
- if (!(groups = g_key_file_get_groups (kf, &n_groups))) {
- goto free_kf;
- }
-
- for (i = 0; i < n_groups; i++) {
- gchar *group = groups[i];
-
- if (g_str_has_prefix (group, "Track")) {
- if (!create_track (kf, group, timeline)) {
- GST_ERROR ("couldn't create object for %s", group);
- ret = FALSE;
- break;
- }
- }
-
- else if (g_str_has_prefix (group, "Layer")) {
- if (!(cur_layer = create_layer (kf, group, timeline))) {
- GST_ERROR ("couldn't create object for %s", group);
- ret = FALSE;
- break;
- }
- }
-
- else if (g_str_has_prefix (group, "Object")) {
- if (!cur_layer) {
- GST_ERROR ("Group %s occurs outside of Layer", group);
- ret = FALSE;
- break;
- }
-
- if (!create_object (kf, group, cur_layer)) {
- GST_ERROR ("couldn't create object for %s", group);
- ret = FALSE;
- break;
- }
- }
-
- else if (g_str_equal (group, "General")) {
- continue;
- }
-
- else {
- GST_ERROR ("Unrecognized group name %s", group);
- ret = FALSE;
- break;
- }
- }
-
- g_strfreev (groups);
-
-free_kf:
- g_key_file_free (kf);
- return ret;
-}
diff --git a/ges/ges-keyfile-formatter.h b/ges/ges-keyfile-formatter.h
deleted file mode 100644
index 60e8e31dc6..0000000000
--- a/ges/ges-keyfile-formatter.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* GStreamer Editing Services
- * Copyright (C) 2010 Brandon Lewis
- * 2010 Nokia Corporation
- *
- * 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., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _GES_KEYFILE_FORMATTER
-#define _GES_KEYFILE_FORMATTER
-
-#include
-#include
-
-#define GES_TYPE_KEYFILE_FORMATTER ges_keyfile_formatter_get_type()
-
-#define GES_KEYFILE_FORMATTER(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), GES_TYPE_KEYFILE_FORMATTER, GESKeyfileFormatter))
-
-#define GES_KEYFILE_FORMATTER_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), GES_TYPE_KEYFILE_FORMATTER, GESKeyfileFormatterClass))
-
-#define GES_IS_KEYFILE_FORMATTER(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GES_TYPE_KEYFILE_FORMATTER))
-
-#define GES_IS_KEYFILE_FORMATTER_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), GES_TYPE_KEYFILE_FORMATTER))
-
-#define GES_KEYFILE_FORMATTER_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS ((obj), GES_TYPE_KEYFILE_FORMATTER, GESKeyfileFormatterClass))
-
-/**
- * GESKeyfileFormatter:
- *
- * Serializes a #GESTimeline to a file using #GKeyFile
- */
-
-struct _GESKeyfileFormatter {
- /*< private >*/
- GESFormatter parent;
-
- /* Padding for API extension */
- gpointer _ges_reserved[GES_PADDING];
-};
-
-struct _GESKeyfileFormatterClass {
- /*< private >*/
- GESFormatterClass parent_class;
-
- /* Padding for API extension */
- gpointer _ges_reserved[GES_PADDING];
-};
-
-GType ges_keyfile_formatter_get_type (void);
-
-GESKeyfileFormatter *ges_keyfile_formatter_new (void);
-
-#endif /* _GES_KEYFILE_FORMATTER */
diff --git a/ges/ges-timeline.c b/ges/ges-timeline.c
index 29c219bb25..fbdcbae6e3 100644
--- a/ges/ges-timeline.c
+++ b/ges/ges-timeline.c
@@ -1940,29 +1940,8 @@ gboolean
ges_timeline_load_from_uri (GESTimeline * timeline, const gchar * uri,
GError ** error)
{
- GESFormatter *p = NULL;
- gboolean ret = FALSE;
-
- /* FIXME : we should have a GError** argument so the user can know why
- * it wasn't able to load the uri
- */
-
- if (!(p = ges_formatter_new_for_uri (uri))) {
- GST_ERROR ("unsupported uri '%s'", uri);
- goto fail;
- }
-
- if (!ges_formatter_load_from_uri (p, timeline, uri, error)) {
- GST_ERROR ("error deserializing formatter");
- goto fail;
- }
-
- ret = TRUE;
-
-fail:
- if (p)
- g_object_unref (p);
- return ret;
+ GST_FIXME ("This should be reimplemented");
+ return FALSE;
}
/**
@@ -1980,32 +1959,8 @@ gboolean
ges_timeline_save_to_uri (GESTimeline * timeline, const gchar * uri,
GError ** error)
{
- GESFormatter *p = NULL;
- gboolean ret = FALSE;
-
- /* FIXME : How will the user be able to chose the format he
- * wishes to store to ? */
-
- /* FIXME : How will we ensure a timeline loaded with a certain format
- * will be saved with the same one by default ? We need to make this
- * easy from an API perspective */
-
- if (!(p = ges_formatter_new_for_uri (uri))) {
- GST_ERROR ("unsupported uri '%s'", uri);
- goto fail;
- }
-
- if (!ges_formatter_save_to_uri (p, timeline, uri, error)) {
- GST_ERROR ("error serializing formatter");
- goto fail;
- }
-
- ret = TRUE;
-
-fail:
- if (p)
- g_object_unref (p);
- return ret;
+ GST_FIXME ("This should be reimplemented");
+ return FALSE;
}
/**
diff --git a/ges/ges.c b/ges/ges.c
index af26c41177..3017309b6a 100644
--- a/ges/ges.c
+++ b/ges/ges.c
@@ -72,7 +72,6 @@ ges_init (void)
/* register formatter types with the system */
GES_TYPE_PITIVI_FORMATTER;
- GES_TYPE_KEYFILE_FORMATTER;
/* check the gnonlin elements are available */
if (!ges_check_gnonlin_availability ())
diff --git a/ges/ges.h b/ges/ges.h
index 649a5170da..a3cdeb9722 100644
--- a/ges/ges.h
+++ b/ges/ges.h
@@ -63,7 +63,6 @@
#include
#include
#include
-#include
#include
#include
diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am
index 8065d41485..d737150e72 100644
--- a/tests/check/Makefile.am
+++ b/tests/check/Makefile.am
@@ -39,8 +39,7 @@ check_PROGRAMS = \
ges/titles\
ges/transition \
ges/overlays\
- ges/text_properties\
- ges/save_and_load
+ ges/text_properties
noinst_LTLIBRARIES=$(testutils_noisnt_libraries)
noinst_HEADERS=$(testutils_noinst_headers)
diff --git a/tests/check/ges/save_and_load.c b/tests/check/ges/save_and_load.c
deleted file mode 100644
index 508c9380d2..0000000000
--- a/tests/check/ges/save_and_load.c
+++ /dev/null
@@ -1,808 +0,0 @@
-/* GStreamer Editing Services
- * Copyright (C) 2010 Brandon Lewis
- *
- * 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., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "test-utils.h"
-#include
-#include
-#include
-#include
-#define GetCurrentDir getcwd
-
-#include
-
-#define KEY_FILE_START {\
- if (cmp) g_key_file_free (cmp);\
- cmp = g_key_file_new ();\
-}
-
-#define KEY(group, key, value) \
- g_key_file_set_value (cmp, group, key, value)
-
-#define COMPARE fail_unless(compare (cmp, formatter, timeline))
-
-static gboolean
-compare (GKeyFile * cmp, GESFormatter * formatter, GESTimeline * timeline)
-{
- gchar *data, *fmt_data;
- gsize length;
- gboolean result = TRUE;
-
- data = g_key_file_to_data (cmp, &length, NULL);
- ges_formatter_save (formatter, timeline);
- fmt_data = ges_formatter_get_data (formatter, &length);
-
- if (!(g_strcmp0 (data, fmt_data) == 0)) {
- GST_ERROR ("difference between expected and output");
- GST_ERROR ("expected: \n%s", data);
- GST_ERROR ("actual: \n%s", fmt_data);
- result = FALSE;
- }
- g_free (data);
- return result;
-}
-
-GST_START_TEST (test_simple)
-{
- gchar *uri = ges_test_file_uri ("test.xptv");
-
- ges_init ();
-
- fail_unless (ges_formatter_can_load_uri (uri, NULL));
- g_free (uri);
-
- uri = ges_test_file_uri ("wrong_test.xptv");
- fail_if (ges_formatter_can_load_uri (uri, NULL));
- g_free (uri);
-}
-
-GST_END_TEST;
-
-GST_START_TEST (test_keyfile_save)
-{
- GESTimeline *timeline;
- GESTimelineLayer *layer, *layer2;
- GESTrack *track;
- GESTimelineObject *source;
- GESFormatter *formatter;
- GKeyFile *cmp = NULL;
-
- ges_init ();
-
- /* setup timeline */
-
- GST_DEBUG ("Create a timeline");
- timeline = ges_timeline_new ();
- fail_unless (timeline != NULL);
-
- /* create serialization object */
-
- GST_DEBUG ("creating a keyfile formatter");
- formatter = GES_FORMATTER (ges_keyfile_formatter_new ());
-
- /* add a layer and make sure it's serialized */
-
- GST_DEBUG ("Create a layer");
- layer = GES_TIMELINE_LAYER (ges_simple_timeline_layer_new ());
- fail_unless (layer != NULL);
-
- GST_DEBUG ("Add the layer to the timeline");
- fail_unless (ges_timeline_add_layer (timeline, layer));
-
- KEY_FILE_START;
- KEY ("General", "version", "1");
- KEY ("Layer0", "priority", "0");
- KEY ("Layer0", "type", "simple");
- COMPARE;
-
- /* add a track and make sure it's serialized */
-
- GST_DEBUG ("Create a Track");
- track = ges_track_audio_raw_new ();
- fail_unless (track != NULL);
-
- GST_DEBUG ("Add the track to the timeline");
- fail_unless (ges_timeline_add_track (timeline, track));
-
- KEY_FILE_START;
- KEY ("General", "version", "1");
- KEY ("Track0", "type", "GES_TRACK_TYPE_AUDIO");
- KEY ("Track0", "caps", "audio/x-raw");
- KEY ("Layer0", "priority", "0");
- KEY ("Layer0", "type", "simple");
- COMPARE;
-
- /* add sources */
-
- GST_DEBUG ("Adding first source");
- source = (GESTimelineObject *) ges_timeline_test_source_new ();
- ges_simple_timeline_layer_add_object (GES_SIMPLE_TIMELINE_LAYER (layer),
- source, -1);
- g_object_set (G_OBJECT (source), "duration", (guint64) 2 * GST_SECOND, NULL);
-
- KEY ("Object0", "type", "GESTimelineTestSource");
- KEY ("Object0", "start", "0");
- KEY ("Object0", "in-point", "0");
- KEY ("Object0", "duration", "2000000000");
- KEY ("Object0", "priority", "2");
- KEY ("Object0", "supported-formats", "GES_TRACK_TYPE_UNKNOWN");
- KEY ("Object0", "max-duration", "18446744073709551615");
- KEY ("Object0", "mute", "false");
- KEY ("Object0", "vpattern", "100% Black");
- KEY ("Object0", "freq", "440");
- KEY ("Object0", "volume", "0");
- COMPARE;
-
- GST_DEBUG ("Adding transition");
- source = (GESTimelineObject *)
- ges_timeline_standard_transition_new_for_nick ((gchar *) "bar-wipe-lr");
-
- g_object_set (G_OBJECT (source), "duration", (guint64) GST_SECOND / 2, NULL);
- ges_simple_timeline_layer_add_object (GES_SIMPLE_TIMELINE_LAYER (layer),
- source, -1);
-
- KEY ("Object1", "type", "GESTimelineStandardTransition");
- KEY ("Object1", "start", "1500000000");
- KEY ("Object1", "in-point", "0");
- KEY ("Object1", "duration", "500000000");
- KEY ("Object1", "priority", "1");
- KEY ("Object1", "supported-formats", "GES_TRACK_TYPE_UNKNOWN");
- KEY ("Object1", "max-duration", "18446744073709551615");
- KEY ("Object1", "vtype", "A bar moves from left to right");
- COMPARE;
-
- GST_DEBUG ("Adding second source");
- source = (GESTimelineObject *) ges_timeline_test_source_new ();
- g_object_set (G_OBJECT (source), "duration", (guint64) 2 * GST_SECOND, NULL);
- ges_simple_timeline_layer_add_object (GES_SIMPLE_TIMELINE_LAYER (layer),
- source, -1);
-
- KEY ("Object2", "type", "GESTimelineTestSource");
- KEY ("Object2", "start", "1500000000");
- KEY ("Object2", "in-point", "0");
- KEY ("Object2", "duration", "2000000000");
- KEY ("Object2", "priority", "3");
- KEY ("Object2", "supported-formats", "GES_TRACK_TYPE_UNKNOWN");
- KEY ("Object2", "max-duration", "18446744073709551615");
- KEY ("Object2", "mute", "false");
- KEY ("Object2", "vpattern", "100% Black");
- KEY ("Object2", "freq", "440");
- KEY ("Object2", "volume", "0");
- COMPARE;
-
- /* add a second layer to the timeline */
-
- GST_DEBUG ("Adding a second layer to the timeline");
- layer2 = ges_timeline_layer_new ();
- ges_timeline_layer_set_priority (layer2, 1);
- fail_unless (layer != NULL);
- fail_unless (ges_timeline_add_layer (timeline, layer2));
-
- KEY ("Layer1", "priority", "1");
- KEY ("Layer1", "type", "default");
- COMPARE;
-
- GST_DEBUG ("Adding a few more sources");
- source = (GESTimelineObject *) ges_timeline_title_source_new ();
- g_object_set (G_OBJECT (source),
- "duration", (guint64) GST_SECOND,
- "start", (guint64) 5 * GST_SECOND, "text", "the quick brown fox", NULL);
- fail_unless (ges_timeline_layer_add_object (layer2, source));
-
- KEY ("Object3", "type", "GESTimelineTitleSource");
- KEY ("Object3", "start", "5000000000");
- KEY ("Object3", "in-point", "0");
- KEY ("Object3", "duration", "1000000000");
- KEY ("Object3", "priority", "0");
- KEY ("Object3", "supported-formats", "GES_TRACK_TYPE_UNKNOWN");
- KEY ("Object3", "max-duration", "18446744073709551615");
- KEY ("Object3", "mute", "false");
- KEY ("Object3", "text", "\"the\\\\ quick\\\\ brown\\\\ fox\"");
- KEY ("Object3", "font-desc", "\"Serif\\\\ 36\"");
- KEY ("Object3", "halignment", "center");
- KEY ("Object3", "valignment", "baseline");
- KEY ("Object3", "color", "4294967295");
- KEY ("Object3", "background", "4294967295");
- KEY ("Object3", "xpos", "0.5");
- KEY ("Object3", "ypos", "0.5");
- COMPARE;
-
- /* tear-down */
- g_key_file_free (cmp);
-
-
- GST_DEBUG ("Removing layer from the timeline");
- fail_unless (ges_timeline_remove_layer (timeline, layer));
- fail_unless (ges_timeline_remove_layer (timeline, layer2));
-
- GST_DEBUG ("Removing track from the timeline");
- g_object_ref (track);
- fail_unless (ges_timeline_remove_track (timeline, track));
- fail_unless (ges_track_get_timeline (track) == NULL);
- ASSERT_OBJECT_REFCOUNT (track, "track", 1);
- g_object_unref (track);
-
- ASSERT_OBJECT_REFCOUNT (timeline, "timeline", 1);
-
- g_object_unref (timeline);
- g_object_unref (formatter);
-}
-
-GST_END_TEST;
-
-/* do action for every item and then free the list */
-
-#define g_list_free_all(list) \
- { \
- g_list_foreach(list, (GFunc) g_object_unref, NULL); \
- g_list_free(list); \
- }
-
-/* print out a helpful error message when a comparison fails. Works with the
- * TIMELINE_COMPARE_*, LAYER*, SIMPLE_LAYER*, abd TRACK, macros below to give
- * information about the source line where the failing object was created.
- */
-
-#define CMP_FAIL(a, ...) \
- fail_unless (FALSE, __VA_ARGS__);
-
-/* compare two GObjects for equality. pointer identity and GType short-circuit
- * the comparison. If a and b are not identical pointers and of the same
- * GType, compares every readable property for equality using
- * g_param_values_cmp.
- */
-
-static gboolean
-ges_objs_equal (GObject * a, GObject * b)
-{
- GType at;
- GObjectClass *klass;
- GParamSpec **props = NULL, **iter = NULL;
- guint n_props, i;
- guint ret = FALSE;
- gchar *typename;
-
- GST_DEBUG ("comparing %s (%p) and %s (%p)\n",
- G_OBJECT_TYPE_NAME (a), a, G_OBJECT_TYPE_NAME (b), b);
-
- if (a == b)
- return TRUE;
-
- at = G_TYPE_FROM_INSTANCE (a);
-
- fail_unless (at == G_TYPE_FROM_INSTANCE (b));
-
- typename = (gchar *) g_type_name (at);
-
- /* compare every readable property */
-
- klass = G_OBJECT_GET_CLASS (a);
- props = g_object_class_list_properties (klass, &n_props);
-
- for (i = 0, iter = props; i < n_props; i++, iter++) {
- GValue av = { 0 }
- , bv = {
- 0};
-
- /* ignore name and layer properties */
- if (!g_strcmp0 ("name", (*iter)->name) ||
- !g_strcmp0 ("layer", (*iter)->name) ||
- !g_strcmp0 ("parent", (*iter)->name))
- continue;
-
- /* special case caps property */
- if (!g_strcmp0 ("caps", (*iter)->name)) {
- GstCaps *acaps, *bcaps;
-
- g_object_get (a, "caps", &acaps, NULL);
- g_object_get (b, "caps", &bcaps, NULL);
- if (gst_caps_is_equal (acaps, bcaps)) {
- gst_caps_unref (acaps);
- gst_caps_unref (bcaps);
- continue;
- } else {
- gst_caps_unref (acaps);
- gst_caps_unref (bcaps);
- CMP_FAIL (b, "%s's %p and %p differ by property caps", a, b);
- goto fail;
- }
- }
-
- g_value_init (&av, (*iter)->value_type);
- g_value_init (&bv, (*iter)->value_type);
-
- if (!((*iter)->flags & G_PARAM_READABLE))
- continue;
-
- g_object_get_property (a, (*iter)->name, &av);
- g_object_get_property (b, (*iter)->name, &bv);
-
- if (g_param_values_cmp (*iter, &av, &bv) != 0) {
- gchar *a_str, *b_str;
-
- a_str = gst_value_serialize (&av);
- b_str = gst_value_serialize (&bv);
-
- CMP_FAIL (b, "%s's %p and %p differ by property %s (%s != %s)",
- typename, a, b, (*iter)->name, a_str, b_str);
-
- g_free (a_str);
- g_free (b_str);
-
- goto fail;
- }
-
- g_value_unset (&av);
- g_value_unset (&bv);
- }
-
- ret = TRUE;
-
-fail:
- if (props)
- g_free (props);
- return ret;
-}
-
-static gboolean
-ges_tracks_equal (GESTrack * a, GESTrack * b)
-{
- return ges_objs_equal (G_OBJECT (a), G_OBJECT (b));
-}
-
-static gboolean
-ges_layers_equal (GESTimelineLayer * a, GESTimelineLayer * b)
-{
- GList *a_objs = NULL, *b_objs = NULL, *a_iter, *b_iter;
- gboolean ret = FALSE;
- guint i;
-
- if (!ges_objs_equal (G_OBJECT (a), G_OBJECT (b)))
- return FALSE;
-
- a_objs = ges_timeline_layer_get_objects (a);
- b_objs = ges_timeline_layer_get_objects (b);
-
- /* one shortcoming of this procedure is that the objects need to be stored
- * in the same order. Not sure if this is a problem in practice */
-
- for (i = 0, a_iter = a_objs, b_iter = b_objs; a_iter && b_iter; a_iter =
- a_iter->next, b_iter = b_iter->next, i++) {
- if (!ges_objs_equal (a_iter->data, b_iter->data)) {
- CMP_FAIL (b, "layers %p and %p differ by obj at position %d", a, b, i);
- goto fail;
- }
- }
-
- if (a_iter || b_iter) {
- CMP_FAIL (b, "layers %p and %p have differing number of objects", a, b);
- goto fail;
- }
-
- ret = TRUE;
-
-fail:
-
- g_list_free_all (a_objs);
- g_list_free_all (b_objs);
-
- return ret;
-}
-
-static gboolean
-ges_timelines_equal (GESTimeline * a, GESTimeline * b)
-{
- GList *a_tracks, *b_tracks, *a_iter, *b_iter, *a_layers, *b_layers;
-
- gboolean ret = FALSE;
- guint i;
-
- if (!ges_objs_equal (G_OBJECT (a), G_OBJECT (b))) {
- CMP_FAIL (b, "%p and %p are not of the same type");
- return FALSE;
- }
-
- a_tracks = ges_timeline_get_tracks (a);
- b_tracks = ges_timeline_get_tracks (b);
- a_layers = ges_timeline_get_layers (a);
- b_layers = ges_timeline_get_layers (b);
-
- /* one shortcoming of this procedure is that the objects need to be stored
- * in the same order. Not sure if this is a problem in practice */
-
- for (i = 0, a_iter = a_tracks, b_iter = b_tracks; a_iter && b_iter; a_iter =
- a_iter->next, b_iter = b_iter->next, i++) {
- if (!ges_tracks_equal (a_iter->data, b_iter->data)) {
- CMP_FAIL (b, "GESTimelines %p and %p differ by tracks at position %d", a,
- b, i);
- goto fail;
- }
- }
-
- if (a_iter || b_iter) {
- CMP_FAIL (b, "GESTimelines %p and %p have differing number of tracks", a,
- b);
- goto fail;
- }
-
- for (i = 0, a_iter = a_layers, b_iter = b_layers; a_iter && b_iter; a_iter =
- a_iter->next, b_iter = b_iter->next, i++) {
- if (!ges_layers_equal (a_iter->data, b_iter->data)) {
- goto fail;
- }
- }
-
- if (a_iter || b_iter) {
- CMP_FAIL (b, "GESTimelines %p and %p have differing numbre of layers", a,
- b);
- goto fail;
- }
-
- ret = TRUE;
-
-fail:
-
- g_list_free_all (a_tracks);
- g_list_free_all (b_tracks);
- g_list_free_all (a_layers);
- g_list_free_all (b_layers);
-
- return ret;
-}
-
-#define TIMELINE_BEGIN(location) \
-{\
- GESTimeline **a, *b;\
- a = &(location);\
- if (*a) g_object_unref (*a);\
- b = ges_timeline_new();\
- *a = b;\
-
-#define TIMELINE_END }
-
-#define TIMELINE_COMPARE(a, b)\
-{\
- fail_unless (ges_timelines_equal(a, b));\
-}
-
-#define TRACK(type, caps) \
-{\
- GESTrack *trk;\
- GstCaps *c;\
- c = gst_caps_from_string(caps);\
- trk = ges_track_new (type, c);\
- ges_timeline_add_track (b, trk);\
- g_object_set_data(G_OBJECT(trk),"file", (void *) __FILE__);\
- g_object_set_data(G_OBJECT(trk),"line", (void *) __LINE__);\
- g_object_set_data(G_OBJECT(trk),"function", (void *) GST_FUNCTION);\
-}
-
-#define LAYER_BEGIN(priority) \
-{\
- GESTimelineLayer *l;\
- l = ges_timeline_layer_new ();\
- ges_timeline_add_layer (b, l);\
- ges_timeline_layer_set_priority (l, priority);\
- g_object_set_data(G_OBJECT(l),"file", (void *) __FILE__);\
- g_object_set_data(G_OBJECT(l),"line", (void *) __LINE__);\
- g_object_set_data(G_OBJECT(l),"function", (void *) GST_FUNCTION);
-
-#define LAYER_END \
-}
-
-#define LAYER_OBJECT(type, ...) \
-{\
- GESTimelineObject *obj;\
- obj = GES_TIMELINE_OBJECT(\
- g_object_new ((type), __VA_ARGS__, NULL));\
- ges_timeline_layer_add_object (l, obj);\
- g_object_set_data(G_OBJECT(obj),"file", (void *) __FILE__);\
- g_object_set_data(G_OBJECT(obj),"line", (void *) __LINE__);\
- g_object_set_data(G_OBJECT(obj),"function", (void *) GST_FUNCTION);\
-}
-
-#define SIMPLE_LAYER_BEGIN(priority) \
-{\
- GESSimpleTimelineLayer *l;\
- l = ges_simple_timeline_layer_new ();\
- ges_timeline_add_layer (b, GES_TIMELINE_LAYER(l));\
- ges_timeline_layer_set_priority(GES_TIMELINE_LAYER(l), priority);\
- g_object_set_data(G_OBJECT(l),"file", (void *) __FILE__);\
- g_object_set_data(G_OBJECT(l),"line", (void *) __LINE__);\
- g_object_set_data(G_OBJECT(l),"function", (void *) GST_FUNCTION);
-
-#define SIMPLE_LAYER_OBJECT(type, position, ...) \
-{\
- GESTimelineObject *obj;\
- obj = GES_TIMELINE_OBJECT(\
- g_object_new ((type), __VA_ARGS__, NULL));\
- ges_simple_timeline_layer_add_object (l, obj, position);\
- g_object_set_data(G_OBJECT(obj),"file", (void *) __FILE__);\
- g_object_set_data(G_OBJECT(obj),"line", (void *) __LINE__);\
- g_object_set_data(G_OBJECT(obj),"function", (void *) GST_FUNCTION);\
-}
-
-/* */
-static const gchar *data = "\n[General]\n"
- "[Track0]\n"
- "type=GES_TRACK_TYPE_AUDIO\n"
- "caps=audio/x-raw\n"
- "\n"
- "[Layer0]\n"
- "priority=0\n"
- "type=simple\n"
- "\n"
- "[Object0]\n"
- "type=GESTimelineTestSource\n"
- "start=0\n"
- "in-point=0\n"
- "duration=2000000000\n"
- "priority=2\n"
- "mute=false\n"
- "vpattern=100% Black\n"
- "freq=440\n"
- "volume=0\n"
- "\n"
- "[Object1]\n"
- "type=GESTimelineStandardTransition\n"
- "start=1500000000\n"
- "in-point=0\n"
- "duration=500000000\n"
- "priority=1\n"
- "vtype=A bar moves from left to right\n"
- "\n"
- "[Object2]\n"
- "type=GESTimelineTestSource\n"
- "start=1500000000\n"
- "in-point=0\n"
- "duration=2000000000\n"
- "priority=2\n"
- "mute=false\n"
- "vpattern=100% Black\n"
- "freq=440\n"
- "volume=0\n"
- "\n"
- "[Layer1]\n"
- "priority=1\n"
- "type=default\n"
- "\n"
- "[Object3]\n"
- "type=GESTimelineTitleSource\n"
- "start=5000000000\n"
- "in-point=0\n"
- "duration=1000000000\n"
- "priority=2\n"
- "mute=false\n"
- "text=\"the\\\\ quick\\\\ brown\\\\ fox\"\n"
- "font-desc=\"Serif\\\\ 36\"\n"
- "halignment=center\n" "valignment=baseline\n";
-
-GST_START_TEST (test_keyfile_load)
-{
- GESTimeline *timeline = NULL, *expected = NULL;
- GESFormatter *formatter;
-
- ges_init ();
-
- /* setup timeline */
-
- GST_DEBUG ("Create a timeline");
- timeline = ges_timeline_new ();
- fail_unless (timeline != NULL);
-
- /* create serialization object */
-
- GST_DEBUG ("creating a default formatter");
- formatter = GES_FORMATTER (ges_keyfile_formatter_new ());
-
- ges_formatter_set_data (formatter, g_strdup (data), strlen (data));
-
- fail_unless (ges_formatter_load (formatter, timeline));
-
- TIMELINE_BEGIN (expected) {
-
- TRACK (GES_TRACK_TYPE_AUDIO, "audio/x-raw");
-
- SIMPLE_LAYER_BEGIN (0) {
-
- SIMPLE_LAYER_OBJECT ((GES_TYPE_TIMELINE_TEST_SOURCE), -1,
- "duration", (guint64) 2 * GST_SECOND);
-
- SIMPLE_LAYER_OBJECT ((GES_TYPE_TIMELINE_STANDARD_TRANSITION), -1,
- "duration", (guint64) GST_SECOND / 2,
- "vtype", GES_VIDEO_STANDARD_TRANSITION_TYPE_BAR_WIPE_LR);
-
- SIMPLE_LAYER_OBJECT ((GES_TYPE_TIMELINE_TEST_SOURCE), -1,
- "duration", (guint64) 2 * GST_SECOND);
-
- } LAYER_END;
-
- LAYER_BEGIN (1) {
-
- LAYER_OBJECT (GES_TYPE_TIMELINE_TITLE_SOURCE,
- "start", (guint64) 5 * GST_SECOND,
- "duration", (guint64) GST_SECOND, "priority", 2, "text",
- "the quick brown fox");
-
- } LAYER_END;
-
- } TIMELINE_END;
-
- TIMELINE_COMPARE (timeline, expected);
-
- /* tear-down */
- g_object_unref (formatter);
- g_object_unref (timeline);
- g_object_unref (expected);
-}
-
-GST_END_TEST;
-
-GST_START_TEST (test_pitivi_file_load)
-{
- GESFormatter *formatter;
- GESTimeline *timeline, *expected;
- GMainLoop *mainloop;
- gchar *uri, *save_uri, *cur_dir;
-
- /*create the expected timeline */
- timeline = ges_timeline_new ();
- mainloop = g_main_loop_new (NULL, FALSE);
- expected = ges_timeline_new ();
-
- /* create the timeline from formatter */
- formatter = GES_FORMATTER (ges_pitivi_formatter_new ());
- cur_dir = g_get_current_dir ();
- uri = g_build_filename (cur_dir, "test.xptv", NULL);
- save_uri = g_build_filename (cur_dir, "testsave.xptv", NULL);
- g_free (cur_dir);
-
- if (g_file_test (uri, G_FILE_TEST_EXISTS) == FALSE) {
- GST_ERROR ("Could not test GESPitiviFormatter as no project file found");
- return;
- }
-
- ges_formatter_load_from_uri (formatter, timeline, uri, NULL);
- g_timeout_add (1000, (GSourceFunc) g_main_loop_quit, mainloop);
- g_main_loop_run (mainloop);
-
- formatter = GES_FORMATTER (ges_pitivi_formatter_new ());
- ges_formatter_save_to_uri (formatter, timeline, save_uri, NULL);
- formatter = GES_FORMATTER (ges_pitivi_formatter_new ());
- ges_formatter_load_from_uri (formatter, expected, uri, NULL);
- g_timeout_add (1000, (GSourceFunc) g_main_loop_quit, mainloop);
- g_main_loop_run (mainloop);
-
- /* compare the two timelines and fail test if they are different */
- TIMELINE_COMPARE (expected, timeline);
- g_free (uri);
- g_free (save_uri);
- g_main_loop_unref (mainloop);
- g_object_unref (formatter);
- g_object_unref (timeline);
- g_object_unref (expected);
-}
-
-GST_END_TEST;
-
-GST_START_TEST (test_keyfile_identity)
-{
-
- /* we will create several timelines. they will first be serialized, then
- * deseriailzed and compared against the original. */
-
- GESTimeline *orig = NULL, *serialized = NULL;
- GESFormatter *formatter;
-
- ges_init ();
-
- formatter = GES_FORMATTER (ges_keyfile_formatter_new ());
-
- TIMELINE_BEGIN (orig) {
-
- TRACK (GES_TRACK_TYPE_AUDIO, "audio/x-raw,"
- "format=(string)" GST_AUDIO_NE (S32) ",rate=8000");
- TRACK (GES_TRACK_TYPE_VIDEO, "video/x-raw,format=(string)RGB24");
-
- LAYER_BEGIN (5) {
-
- LAYER_OBJECT (GES_TYPE_TIMELINE_TEXT_OVERLAY,
- "start", (guint64) GST_SECOND,
- "duration", (guint64) 2 * GST_SECOND,
- "priority", 1,
- "text", "Hello, world!",
- "font-desc", "Sans 9",
- "halignment", GES_TEXT_HALIGN_LEFT,
- "valignment", GES_TEXT_VALIGN_TOP);
-
- LAYER_OBJECT (GES_TYPE_TIMELINE_TEST_SOURCE,
- "start", (guint64) 0,
- "duration", (guint64) 5 * GST_SECOND,
- "priority", 2,
- "freq", (gdouble) 500,
- "volume", 1.0, "vpattern", GES_VIDEO_TEST_PATTERN_WHITE);
-
- LAYER_OBJECT (GES_TYPE_TIMELINE_TEXT_OVERLAY,
- "start", (guint64) 7 * GST_SECOND,
- "duration", (guint64) 2 * GST_SECOND,
- "priority", 2,
- "text", "Hello, world!",
- "font-desc", "Sans 9",
- "halignment", GES_TEXT_HALIGN_LEFT,
- "valignment", GES_TEXT_VALIGN_TOP);
-
- LAYER_OBJECT (GES_TYPE_TIMELINE_TEST_SOURCE,
- "start", (guint64) 6 * GST_SECOND,
- "duration", (guint64) 5 * GST_SECOND,
- "priority", 3,
- "freq", (gdouble) 600,
- "volume", 1.0, "vpattern", GES_VIDEO_TEST_PATTERN_RED);
-
- }
- LAYER_END;
-
- }
- TIMELINE_END;
-
- serialized = ges_timeline_new ();
-
- ges_formatter_save (formatter, orig);
- ges_formatter_load (formatter, serialized);
-
- TIMELINE_COMPARE (serialized, orig);
-
- g_object_unref (formatter);
- g_object_unref (serialized);
- g_object_unref (orig);
-}
-
-GST_END_TEST;
-
-static Suite *
-ges_suite (void)
-{
- Suite *s = suite_create ("ges-save-load");
- TCase *tc_chain = tcase_create ("basic");
-
- suite_add_tcase (s, tc_chain);
-
- tcase_add_test (tc_chain, test_simple);
- tcase_add_test (tc_chain, test_keyfile_save);
- tcase_add_test (tc_chain, test_keyfile_load);
- tcase_add_test (tc_chain, test_keyfile_identity);
- tcase_add_test (tc_chain, test_pitivi_file_load);
-
- return s;
-}
-
-int
-main (int argc, char **argv)
-{
- int nf;
-
- Suite *s = ges_suite ();
- SRunner *sr = srunner_create (s);
-
- gst_check_init (&argc, &argv);
-
- srunner_run_all (sr, CK_NORMAL);
- nf = srunner_ntests_failed (sr);
- srunner_free (sr);
-
- return nf;
-}
diff --git a/tests/examples/ges-ui.c b/tests/examples/ges-ui.c
index 80374e98d5..e3422b4376 100644
--- a/tests/examples/ges-ui.c
+++ b/tests/examples/ges-ui.c
@@ -1377,6 +1377,8 @@ fail:
static gboolean
load_file_async (App * app)
{
+
+#if 0
GESFormatter *formatter;
g_printf ("%s\n", app->pending_uri);
@@ -1386,6 +1388,9 @@ load_file_async (App * app)
g_free (app->pending_uri);
app->pending_uri = NULL;
+#endif
+
+ GST_FIXME ("This should be reimplemented");
return FALSE;
}