summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian.droege@collabora.co.uk>2010-09-12 16:53:59 +0200
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2010-09-14 08:42:44 +0200
commit2f781d69d2e31ccece4c06ce823b759f6a5c2bab (patch)
tree19a6048e820d86552b172b5457ef5fe72f6fa1f3
parenta30371ab15385742000d793d3a32c28f27ce049c (diff)
video: Add a simple unit test for the new convert_frame API
Unfortunately this can't test the encoding because there's no image encoder in base.
-rw-r--r--tests/check/libs/video.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/tests/check/libs/video.c b/tests/check/libs/video.c
index af7f2a8d5..0ee45054d 100644
--- a/tests/check/libs/video.c
+++ b/tests/check/libs/video.c
@@ -583,6 +583,57 @@ GST_START_TEST (test_events)
GST_END_TEST;
+GST_START_TEST (test_convert_frame)
+{
+ GstCaps *from_caps, *to_caps;
+ GstBuffer *from_buffer, *to_buffer;
+ GError *error = NULL;
+ gint i;
+ guint8 *data;
+
+ from_buffer = gst_buffer_new_and_alloc (640 * 480 * 4);
+ data = GST_BUFFER_DATA (from_buffer);
+
+ for (i = 0; i < 640 * 480; i++) {
+ data[4 * i + 0] = 0; /* x */
+ data[4 * i + 1] = 255; /* R */
+ data[4 * i + 2] = 0; /* G */
+ data[4 * i + 3] = 0; /* B */
+ }
+ from_caps = gst_video_format_new_caps (GST_VIDEO_FORMAT_xRGB,
+ 640, 480, 25, 1, 1, 1);
+ gst_buffer_set_caps (from_buffer, from_caps);
+
+ to_caps =
+ gst_caps_from_string
+ ("something/that, does=(string)not, exist=(boolean)FALSE");
+
+ to_buffer =
+ gst_video_convert_frame (from_buffer, to_caps, GST_CLOCK_TIME_NONE,
+ &error);
+ fail_if (to_buffer != NULL);
+ fail_unless (error != NULL);
+ g_error_free (error);
+ error = NULL;
+
+ gst_caps_unref (to_caps);
+ to_caps =
+ gst_video_format_new_caps (GST_VIDEO_FORMAT_I420, 240, 320, 25, 1, 1, 2);
+ to_buffer =
+ gst_video_convert_frame (from_buffer, to_caps, GST_CLOCK_TIME_NONE,
+ &error);
+ fail_unless (to_buffer != NULL);
+ fail_unless (gst_caps_can_intersect (to_caps, GST_BUFFER_CAPS (to_buffer)));
+ fail_unless (error == NULL);
+
+ gst_buffer_unref (from_buffer);
+ gst_caps_unref (from_caps);
+ gst_buffer_unref (to_buffer);
+ gst_caps_unref (to_caps);
+}
+
+GST_END_TEST;
+
static Suite *
video_suite (void)
{
@@ -594,6 +645,7 @@ video_suite (void)
tcase_add_test (tc_chain, test_dar_calc);
tcase_add_test (tc_chain, test_parse_caps_rgb);
tcase_add_test (tc_chain, test_events);
+ tcase_add_test (tc_chain, test_convert_frame);
return s;
}