if (!(g_strcmp0 (data, fmt_data) == 0)) {
GST_ERROR ("difference between expected and output");
- g_printf ("expected: \n%s\n\n", data);
- g_printf ("actual: \n%s\n\n", fmt_data);
+ GST_ERROR ("expected: \n%s", data);
+ GST_ERROR ("actual: \n%s", fmt_data);
result = FALSE;
}
g_free (data);
/* 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);
KEY ("Object0", "volume", "0");
COMPARE;
+ GST_DEBUG ("Adding transition");
source = (GESTimelineObject *)
ges_timeline_transition_new_for_nick ((gchar *) "bar-wipe-lr");
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", 2 * GST_SECOND, NULL);
ges_simple_timeline_layer_add_object (GES_SIMPLE_TIMELINE_LAYER (layer),
KEY ("Object2", "start", "1500000000");
KEY ("Object2", "in-point", "0");
KEY ("Object2", "duration", "2000000000");
- KEY ("Object2", "priority", "2");
+ /* This object will be under the other object and transition */
+ KEY ("Object2", "priority", "4");
KEY ("Object2", "font-desc", "\"Serif\\\\ 36\"");
KEY ("Object2", "halignment", "center");
KEY ("Object2", "valignment", "baseline");
KEY ("Object3", "start", "5000000000");
KEY ("Object3", "in-point", "0");
KEY ("Object3", "duration", "1000000000");
- KEY ("Object3", "priority", "2");
+ /* The second layer's minimum priority will be 10 */
+ KEY ("Object3", "priority", "10");
KEY ("Object3", "mute", "false");
KEY ("Object3", "text", "\"the\\\\ quick\\\\ brown\\\\ fox\"");
KEY ("Object3", "font-desc", "\"Serif\\\\ 36\"");
return ret;
}
-#define TIMELINE_COMPARE_BEGIN(orig) \
+#define TIMELINE_BEGIN(location) \
{\
- GESTimeline *a, *b;\
- a = orig;\
- b = ges_timeline_new ();
+ GESTimeline **a, *b;\
+ a = &(location);\
+ if (*a) g_object_unref (*a);\
+ b = ges_timeline_new();\
+ *a = b;\
-#define TIMELINE_COMPARE_END \
- ges_timelines_equal (a, b);\
- g_object_unref (b);\
+#define TIMELINE_END }
+
+#define TIMELINE_COMPARE(a, b)\
+{\
+ fail_unless (ges_timelines_equal(a, b));\
}
#define TRACK(type, caps) \
GST_START_TEST (test_keyfile_load)
{
- GESTimeline *timeline;
+ GESTimeline *timeline = NULL, *expected = NULL;
GESFormatter *formatter;
ges_init ();
fail_unless (ges_formatter_load (formatter, timeline));
- TIMELINE_COMPARE_BEGIN (timeline) {
+ TIMELINE_BEGIN (expected) {
TRACK (GES_TRACK_TYPE_AUDIO, "audio/x-raw-float; audio/x-raw-int");
} LAYER_END;
- } TIMELINE_COMPARE_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_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-int,width=32,rate=8000");
+ TRACK (GES_TRACK_TYPE_VIDEO, "video/x-raw-rgb");
+
+ LAYER_BEGIN (5) {
+
+ LAYER_OBJECT (GES_TYPE_TIMELINE_TEXT_OVERLAY,
+ "start", GST_SECOND,
+ "duration", 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", 0,
+ "duration", 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", 7 * GST_SECOND,
+ "duration", 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", 6 * GST_SECOND,
+ "duration", 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;
tcase_add_test (tc_chain, test_keyfile_save);
tcase_add_test (tc_chain, test_keyfile_load);
+ tcase_add_test (tc_chain, test_keyfile_identity);
return s;
}