summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim.muller@collabora.co.uk>2010-07-18 11:38:19 +0100
committerTim-Philipp Müller <tim.muller@collabora.co.uk>2010-07-18 11:38:19 +0100
commit01ace4a124a8f28d4892b5f3194e00c43b8c12e0 (patch)
tree04566af3a383e4bff754a6f3a9abf7e237991413
parentbd0adb11fd11ff1b026ab27f16658ecf117cca42 (diff)
tests: add unit test for mpeg-ts typefinding bug
See #623663.
-rw-r--r--tests/check/gst/typefindfunctions.c45
-rw-r--r--tests/files/623663.mtsbin0 -> 4000 bytes
2 files changed, 39 insertions, 6 deletions
diff --git a/tests/check/gst/typefindfunctions.c b/tests/check/gst/typefindfunctions.c
index 4a2ee1924..cec594393 100644
--- a/tests/check/gst/typefindfunctions.c
+++ b/tests/check/gst/typefindfunctions.c
@@ -107,16 +107,16 @@ GST_START_TEST (test_broken_flac_in_ogg)
GST_END_TEST;
-GST_START_TEST (test_jpeg_not_ac3)
+static GstCaps *
+typefind_test_file (const gchar * filename)
{
- const gchar *type;
GstBuffer *buf;
GError *err = NULL;
GstCaps *caps = NULL;
gchar *path, *data = NULL;
gsize data_len;
- path = g_build_filename (GST_TEST_FILES_PATH, "partialframe.mjpeg", NULL);
+ path = g_build_filename (GST_TEST_FILES_PATH, filename, NULL);
GST_LOG ("reading file '%s'", path);
if (!g_file_get_contents (path, &data, &data_len, &err)) {
g_error ("error loading test file: %s", err->message);
@@ -131,13 +131,45 @@ GST_START_TEST (test_jpeg_not_ac3)
fail_unless (caps != NULL);
GST_LOG ("Found type: %" GST_PTR_FORMAT, caps);
+ gst_buffer_unref (buf);
+ g_free (data);
+ g_free (path);
+
+ return caps;
+}
+
+GST_START_TEST (test_jpeg_not_ac3)
+{
+ const gchar *type;
+ GstCaps *caps = NULL;
+
+ caps = typefind_test_file ("partialframe.mjpeg");
type = gst_structure_get_name (gst_caps_get_structure (caps, 0));
fail_unless_equals_string (type, "image/jpeg");
- gst_buffer_unref (buf);
gst_caps_unref (caps);
- g_free (data);
- g_free (path);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_mpegts)
+{
+ GstStructure *s;
+ gboolean systemstream = FALSE;
+ GstCaps *caps = NULL;
+ gint packetsize = -1;
+
+ caps = typefind_test_file ("623663.mts");
+ s = gst_caps_get_structure (caps, 0);
+ fail_unless (gst_structure_has_name (s, "video/mpegts"));
+ fail_unless (gst_structure_has_field (s, "systemstream"));
+ fail_unless (gst_structure_get_boolean (s, "systemstream", &systemstream));
+ fail_unless_equals_int (systemstream, TRUE);
+ fail_unless (gst_structure_has_field (s, "packetsize"));
+ fail_unless (gst_structure_get_int (s, "packetsize", &packetsize));
+ fail_unless_equals_int (packetsize, 192);
+
+ gst_caps_unref (caps);
}
GST_END_TEST;
@@ -198,6 +230,7 @@ typefindfunctions_suite (void)
tcase_add_test (tc_chain, test_quicktime_mpeg4video);
tcase_add_test (tc_chain, test_broken_flac_in_ogg);
tcase_add_test (tc_chain, test_jpeg_not_ac3);
+ tcase_add_test (tc_chain, test_mpegts);
tcase_add_test (tc_chain, test_random_data);
return s;
diff --git a/tests/files/623663.mts b/tests/files/623663.mts
new file mode 100644
index 000000000..482ddf7f7
--- /dev/null
+++ b/tests/files/623663.mts
Binary files differ