tests/sched/Makefile
testsuite/Makefile
testsuite/bytestream/Makefile
+testsuite/caps/Makefile
testsuite/capsnego/Makefile
testsuite/cleanup/Makefile
testsuite/plugin/Makefile
--- /dev/null
+testprogs = intersection compatibility normalisation
+
+TESTS = $(testprogs)
+
+check_PROGRAMS = $(testprogs)
+
+# we have nothing but apps here, we can do this safely
+intersection_LDADD = $(GST_LIBS)
+intersection_CFLAGS = $(GST_CFLAGS) $(GNOME_CFLAGS) $(XML_CFLAGS)
+compatibility_LDADD = $(GST_LIBS)
+compatibility_CFLAGS = $(GST_CFLAGS) $(GNOME_CFLAGS) $(XML_CFLAGS)
+normalisation_LDADD = $(GST_LIBS)
+normalisation_CFLAGS = $(GST_CFLAGS) $(GNOME_CFLAGS) $(XML_CFLAGS)
+
--- /dev/null
+#include <gst/gst.h>
+
+/* these caps all have a non empty intersection */
+GST_CAPS_FACTORY (sinkcaps,
+ GST_CAPS_NEW (
+ "mpeg2dec_sink",
+ "video/mpeg",
+ "mpegtype", GST_PROPS_LIST (
+ GST_PROPS_INT (1),
+ GST_PROPS_INT (2)
+ )
+ )
+);
+
+GST_CAPS_FACTORY (mp1parsecaps,
+ GST_CAPS_NEW (
+ "mp1parse_src",
+ "video/mpeg",
+ "mpegtype", GST_PROPS_LIST (
+ GST_PROPS_INT (1)
+ )
+ )
+);
+
+
+
+GST_CAPS_FACTORY (rawcaps,
+ GST_CAPS_NEW (
+ "mpeg2dec_src",
+ "video/raw",
+ "fourcc", GST_PROPS_LIST (
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YV12")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUY2"))
+ ),
+ "width", GST_PROPS_INT_RANGE (16, 4096),
+ "height", GST_PROPS_INT_RANGE (16, 4096)
+ )
+);
+
+GST_CAPS_FACTORY (rawcaps2,
+ GST_CAPS_NEW (
+ "raw_sink_caps",
+ "video/raw",
+ "fourcc", GST_PROPS_LIST (
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YV12"))
+ ),
+ "height", GST_PROPS_INT_RANGE (16, 256)
+ )
+);
+
+GST_CAPS_FACTORY (rawcaps3,
+ GST_CAPS_NEW (
+ "raw2_sink_caps",
+ "video/raw",
+ "fourcc", GST_PROPS_LIST (
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YV12")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUY2"))
+ ),
+ "height", GST_PROPS_INT_RANGE (16, 4096)
+ )
+);
+
+
+GST_CAPS_FACTORY (rawcaps4,
+ GST_CAPS_NEW (
+ "raw2_sink_caps",
+ "video/raw",
+ "fourcc", GST_PROPS_LIST (
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YV12")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUYV"))
+ ),
+ "height", GST_PROPS_INT_RANGE (16, 4096)
+ )
+);
+
+GST_CAPS_FACTORY (rawcaps5,
+ GST_CAPS_NEW (
+ "raw2_sink_caps",
+ "video/raw",
+ "fourcc", GST_PROPS_LIST (
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUYV")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUY2"))
+ ),
+ "height", GST_PROPS_INT_RANGE (16, 4096)
+ )
+);
+
+int
+main (int argc, char *argv[])
+{
+ gboolean testret;
+
+ gst_init (&argc, &argv);
+
+ testret = gst_caps_check_compatibility (GST_CAPS_GET (mp1parsecaps), GST_CAPS_GET (rawcaps));
+ g_print ("4 <-> 2 == %d (invalid, wrong major type)\n", testret);
+
+ testret = gst_caps_check_compatibility (GST_CAPS_GET (mp1parsecaps), GST_CAPS_GET (sinkcaps));
+ g_print ("4 <-> 1 == %d (valid, subset)\n", testret);
+
+ testret = gst_caps_check_compatibility (GST_CAPS_GET (sinkcaps), GST_CAPS_GET (mp1parsecaps));
+ g_print ("1 <-> 4 == %d (invalid, superset)\n", testret);
+
+ testret = gst_caps_check_compatibility (GST_CAPS_GET (rawcaps), GST_CAPS_GET (rawcaps2));
+ g_print ("2 <-> 3 == %d (invalid, ranges)\n", testret);
+
+ testret = gst_caps_check_compatibility (GST_CAPS_GET (rawcaps), GST_CAPS_GET (rawcaps3));
+ g_print ("2 <-> 5 == %d (valid)\n", testret);
+
+ testret = gst_caps_check_compatibility (GST_CAPS_GET (rawcaps3), GST_CAPS_GET (rawcaps));
+ g_print ("5 <-> 2 == %d (invalid)\n", testret);
+
+ testret = gst_caps_check_compatibility (GST_CAPS_GET (rawcaps2), GST_CAPS_GET (rawcaps3));
+ g_print ("3 <-> 5 == %d (valid)\n", testret);
+
+ testret = gst_caps_check_compatibility (GST_CAPS_GET (rawcaps2), GST_CAPS_GET (rawcaps));
+ g_print ("3 <-> 2 == %d (invalid, property missing in source)\n", testret);
+
+ testret = gst_caps_check_compatibility (GST_CAPS_GET (rawcaps), GST_CAPS_GET (rawcaps));
+ g_print ("2 <-> 2 == %d (valid, same caps)\n", testret);
+
+ return 0;
+}
--- /dev/null
+#include <gst/gst.h>
+
+/* these caps all have a non empty intersection */
+GST_CAPS_FACTORY (sinkcaps,
+ GST_CAPS_NEW (
+ "mpeg2dec_sink",
+ "video/mpeg",
+ "mpegtype", GST_PROPS_INT (1),
+ "foo1", GST_PROPS_INT_RANGE (20,40),
+ "foo2", GST_PROPS_INT_RANGE (20,40),
+ "foo3", GST_PROPS_INT_RANGE (10,20)
+ )
+);
+
+GST_CAPS_FACTORY (mp1parsecaps,
+ GST_CAPS_NEW (
+ "mp1parse_src",
+ "video/mpeg",
+ "mpegtype", GST_PROPS_INT (1),
+ "foo1", GST_PROPS_INT (30),
+ "foo2", GST_PROPS_INT_RANGE (20,30),
+ "foo3", GST_PROPS_INT_RANGE (20,30)
+ )
+);
+
+
+
+GST_CAPS_FACTORY (rawcaps,
+ GST_CAPS_NEW (
+ "mpeg2dec_src",
+ "video/raw",
+ "width", GST_PROPS_INT_RANGE (16, 4096),
+ "height", GST_PROPS_INT_RANGE (16, 4096)
+ )
+);
+
+GST_CAPS_FACTORY (rawcaps2,
+ GST_CAPS_NEW (
+ "raw_sink_caps",
+ "video/raw",
+ "height", GST_PROPS_INT_RANGE (16, 256),
+ "depth", GST_PROPS_INT (16)
+ )
+);
+
+GST_CAPS_FACTORY (rawcaps3,
+ GST_CAPS_NEW (
+ "raw2_sink_caps",
+ "video/raw",
+ "fourcc", GST_PROPS_LIST (
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUY2")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YV12"))
+ ),
+ "height", GST_PROPS_INT_RANGE (16, 4096)
+ )
+);
+
+
+GST_CAPS_FACTORY (rawcaps4,
+ GST_CAPS_NEW (
+ "raw2_sink_caps",
+ "video/raw",
+ "fourcc", GST_PROPS_LIST (
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUY2")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YV12")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUYV"))
+ ),
+ "height", GST_PROPS_INT_RANGE (16, 4096)
+ )
+);
+
+GST_CAPS_FACTORY (rawcaps5,
+ GST_CAPS_NEW (
+ "raw2_sink_caps",
+ "video/raw",
+ "fourcc", GST_PROPS_LIST (
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUYV")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUY2"))
+ ),
+ "height", GST_PROPS_INT_RANGE (16, 4096)
+ )
+);
+int
+main (int argc, char *argv[])
+{
+ gboolean testret;
+ xmlDocPtr doc;
+ xmlNodePtr parent;
+ GstCaps *caps;
+ gint i;
+
+ gst_init (&argc, &argv);
+
+ doc = xmlNewDoc ("1.0");
+ doc->xmlRootNode = xmlNewDocNode (doc, NULL, "Capabilities", NULL);
+
+ /*
+ g_mem_chunk_info ();
+ for (i = 0; i<100000; i++) {
+ caps = gst_caps_intersect (GST_CAPS_GET (rawcaps3), GST_CAPS_GET (rawcaps4));
+ gst_caps_unref (caps);
+ }
+ g_mem_chunk_info ();
+ */
+
+ caps = gst_caps_intersect (GST_CAPS_GET (sinkcaps), GST_CAPS_GET (mp1parsecaps));
+ parent = xmlNewChild (doc->xmlRootNode, NULL, "Capabilities1", NULL);
+ gst_caps_save_thyself (caps, parent);
+
+ caps = gst_caps_intersect (GST_CAPS_GET (rawcaps), GST_CAPS_GET (rawcaps2));
+ parent = xmlNewChild (doc->xmlRootNode, NULL, "Capabilities2", NULL);
+ gst_caps_save_thyself (caps, parent);
+
+ caps = gst_caps_intersect (GST_CAPS_GET (rawcaps3), GST_CAPS_GET (rawcaps4));
+ parent = xmlNewChild (doc->xmlRootNode, NULL, "Capabilities3", NULL);
+ gst_caps_save_thyself (caps, parent);
+
+ caps = gst_caps_intersect (GST_CAPS_GET (rawcaps3), GST_CAPS_GET (rawcaps5));
+ parent = xmlNewChild (doc->xmlRootNode, NULL, "Capabilities4", NULL);
+ gst_caps_save_thyself (caps, parent);
+
+ xmlDocDump(stdout, doc);
+
+ return 0;
+}
--- /dev/null
+#include <gst/gst.h>
+
+/* these caps all have a non empty intersection */
+GST_CAPS_FACTORY (sinkcaps,
+ GST_CAPS_NEW (
+ "mpeg2dec_sink",
+ "video/mpeg",
+ "fourcc", GST_PROPS_LIST (
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YV12")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUY2"))
+ ),
+ "foo1", GST_PROPS_INT_RANGE (20,40),
+ "foo2", GST_PROPS_INT_RANGE (20,40),
+ "foo3", GST_PROPS_INT_RANGE (10,20)
+ )
+);
+
+GST_CAPS_FACTORY (mp1parsecaps,
+ GST_CAPS_NEW (
+ "mp1parse_src",
+ "video/mpeg",
+ "fourcc", GST_PROPS_LIST (
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YV12")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUY2"))
+ ),
+ "foo4", GST_PROPS_LIST (
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YV12")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUY2"))
+ )
+ )
+);
+
+
+
+GST_CAPS_FACTORY (rawcaps,
+ GST_CAPS_NEW (
+ "mpeg2dec_src",
+ "video/raw",
+ "width", GST_PROPS_INT_RANGE (16, 4096),
+ "height", GST_PROPS_INT_RANGE (16, 4096),
+ "fourcc", GST_PROPS_LIST (
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YV12")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUY2"))
+ )
+ )
+);
+
+GST_CAPS_FACTORY (rawcaps2,
+ GST_CAPS_NEW (
+ "raw_sink_caps",
+ "video/raw",
+ "height", GST_PROPS_INT_RANGE (16, 256),
+ "depth", GST_PROPS_INT (16)
+ ),
+ GST_CAPS_NEW (
+ "raw_sink_caps",
+ "video/raw",
+ "height", GST_PROPS_INT_RANGE (16, 256),
+ "depth", GST_PROPS_INT (16)
+ )
+);
+
+GST_CAPS_FACTORY (rawcaps3,
+ GST_CAPS_NEW (
+ "raw_sink_caps",
+ "video/raw",
+ "height", GST_PROPS_INT_RANGE (16, 256),
+ "depth", GST_PROPS_INT (16)
+ ),
+ GST_CAPS_NEW (
+ "raw_sink_caps",
+ "video/raw",
+ "height", GST_PROPS_INT_RANGE (16, 256),
+ "depth", GST_PROPS_INT (16)
+ ),
+ GST_CAPS_NEW (
+ "raw2_sink_caps",
+ "video/raw",
+ "fourcc", GST_PROPS_LIST (
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YV12")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUY2"))
+ ),
+ "height", GST_PROPS_INT_RANGE (16, 4096)
+ )
+);
+
+
+GST_CAPS_FACTORY (rawcaps4,
+ GST_CAPS_NEW (
+ "raw2_sink_caps",
+ "video/raw",
+ "fourcc", GST_PROPS_LIST (
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUY2")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YV12")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUYV"))
+ ),
+ "height", GST_PROPS_INT_RANGE (16, 4096)
+ )
+);
+
+GST_CAPS_FACTORY (rawcaps5,
+ GST_CAPS_NEW (
+ "raw2_sink_caps",
+ "video/raw",
+ "fourcc", GST_PROPS_LIST (
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUYV")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUY2"))
+ ),
+ "height", GST_PROPS_INT_RANGE (16, 4096)
+ )
+);
+int
+main (int argc, char *argv[])
+{
+ gboolean testret;
+ xmlDocPtr doc;
+ xmlNodePtr parent;
+ GstCaps *caps;
+ gint i;
+
+ gst_init (&argc, &argv);
+
+ doc = xmlNewDoc ("1.0");
+ doc->xmlRootNode = xmlNewDocNode (doc, NULL, "Capabilities", NULL);
+
+ caps = gst_caps_normalize (GST_CAPS_GET (sinkcaps));
+ parent = xmlNewChild (doc->xmlRootNode, NULL, "Capabilities1", NULL);
+ gst_caps_save_thyself (caps, parent);
+
+ caps = gst_caps_normalize (GST_CAPS_GET (mp1parsecaps));
+ parent = xmlNewChild (doc->xmlRootNode, NULL, "Capabilities1", NULL);
+ gst_caps_save_thyself (caps, parent);
+
+ caps = gst_caps_normalize (GST_CAPS_GET (rawcaps));
+ parent = xmlNewChild (doc->xmlRootNode, NULL, "Capabilities1", NULL);
+ gst_caps_save_thyself (caps, parent);
+
+ caps = gst_caps_normalize (GST_CAPS_GET (rawcaps2));
+ parent = xmlNewChild (doc->xmlRootNode, NULL, "Capabilities1", NULL);
+ gst_caps_save_thyself (caps, parent);
+
+ caps = gst_caps_normalize (GST_CAPS_GET (rawcaps3));
+ parent = xmlNewChild (doc->xmlRootNode, NULL, "Capabilities1", NULL);
+ gst_caps_save_thyself (caps, parent);
+
+ xmlDocDump(stdout, doc);
+
+ return 0;
+}
--- /dev/null
+testprogs = intersection compatibility normalisation
+
+TESTS = $(testprogs)
+
+check_PROGRAMS = $(testprogs)
+
+# we have nothing but apps here, we can do this safely
+intersection_LDADD = $(GST_LIBS)
+intersection_CFLAGS = $(GST_CFLAGS) $(GNOME_CFLAGS) $(XML_CFLAGS)
+compatibility_LDADD = $(GST_LIBS)
+compatibility_CFLAGS = $(GST_CFLAGS) $(GNOME_CFLAGS) $(XML_CFLAGS)
+normalisation_LDADD = $(GST_LIBS)
+normalisation_CFLAGS = $(GST_CFLAGS) $(GNOME_CFLAGS) $(XML_CFLAGS)
+
--- /dev/null
+#include <gst/gst.h>
+
+/* these caps all have a non empty intersection */
+GST_CAPS_FACTORY (sinkcaps,
+ GST_CAPS_NEW (
+ "mpeg2dec_sink",
+ "video/mpeg",
+ "mpegtype", GST_PROPS_LIST (
+ GST_PROPS_INT (1),
+ GST_PROPS_INT (2)
+ )
+ )
+);
+
+GST_CAPS_FACTORY (mp1parsecaps,
+ GST_CAPS_NEW (
+ "mp1parse_src",
+ "video/mpeg",
+ "mpegtype", GST_PROPS_LIST (
+ GST_PROPS_INT (1)
+ )
+ )
+);
+
+
+
+GST_CAPS_FACTORY (rawcaps,
+ GST_CAPS_NEW (
+ "mpeg2dec_src",
+ "video/raw",
+ "fourcc", GST_PROPS_LIST (
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YV12")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUY2"))
+ ),
+ "width", GST_PROPS_INT_RANGE (16, 4096),
+ "height", GST_PROPS_INT_RANGE (16, 4096)
+ )
+);
+
+GST_CAPS_FACTORY (rawcaps2,
+ GST_CAPS_NEW (
+ "raw_sink_caps",
+ "video/raw",
+ "fourcc", GST_PROPS_LIST (
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YV12"))
+ ),
+ "height", GST_PROPS_INT_RANGE (16, 256)
+ )
+);
+
+GST_CAPS_FACTORY (rawcaps3,
+ GST_CAPS_NEW (
+ "raw2_sink_caps",
+ "video/raw",
+ "fourcc", GST_PROPS_LIST (
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YV12")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUY2"))
+ ),
+ "height", GST_PROPS_INT_RANGE (16, 4096)
+ )
+);
+
+
+GST_CAPS_FACTORY (rawcaps4,
+ GST_CAPS_NEW (
+ "raw2_sink_caps",
+ "video/raw",
+ "fourcc", GST_PROPS_LIST (
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YV12")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUYV"))
+ ),
+ "height", GST_PROPS_INT_RANGE (16, 4096)
+ )
+);
+
+GST_CAPS_FACTORY (rawcaps5,
+ GST_CAPS_NEW (
+ "raw2_sink_caps",
+ "video/raw",
+ "fourcc", GST_PROPS_LIST (
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUYV")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUY2"))
+ ),
+ "height", GST_PROPS_INT_RANGE (16, 4096)
+ )
+);
+
+int
+main (int argc, char *argv[])
+{
+ gboolean testret;
+
+ gst_init (&argc, &argv);
+
+ testret = gst_caps_check_compatibility (GST_CAPS_GET (mp1parsecaps), GST_CAPS_GET (rawcaps));
+ g_print ("4 <-> 2 == %d (invalid, wrong major type)\n", testret);
+
+ testret = gst_caps_check_compatibility (GST_CAPS_GET (mp1parsecaps), GST_CAPS_GET (sinkcaps));
+ g_print ("4 <-> 1 == %d (valid, subset)\n", testret);
+
+ testret = gst_caps_check_compatibility (GST_CAPS_GET (sinkcaps), GST_CAPS_GET (mp1parsecaps));
+ g_print ("1 <-> 4 == %d (invalid, superset)\n", testret);
+
+ testret = gst_caps_check_compatibility (GST_CAPS_GET (rawcaps), GST_CAPS_GET (rawcaps2));
+ g_print ("2 <-> 3 == %d (invalid, ranges)\n", testret);
+
+ testret = gst_caps_check_compatibility (GST_CAPS_GET (rawcaps), GST_CAPS_GET (rawcaps3));
+ g_print ("2 <-> 5 == %d (valid)\n", testret);
+
+ testret = gst_caps_check_compatibility (GST_CAPS_GET (rawcaps3), GST_CAPS_GET (rawcaps));
+ g_print ("5 <-> 2 == %d (invalid)\n", testret);
+
+ testret = gst_caps_check_compatibility (GST_CAPS_GET (rawcaps2), GST_CAPS_GET (rawcaps3));
+ g_print ("3 <-> 5 == %d (valid)\n", testret);
+
+ testret = gst_caps_check_compatibility (GST_CAPS_GET (rawcaps2), GST_CAPS_GET (rawcaps));
+ g_print ("3 <-> 2 == %d (invalid, property missing in source)\n", testret);
+
+ testret = gst_caps_check_compatibility (GST_CAPS_GET (rawcaps), GST_CAPS_GET (rawcaps));
+ g_print ("2 <-> 2 == %d (valid, same caps)\n", testret);
+
+ return 0;
+}
--- /dev/null
+#include <gst/gst.h>
+
+/* these caps all have a non empty intersection */
+GST_CAPS_FACTORY (sinkcaps,
+ GST_CAPS_NEW (
+ "mpeg2dec_sink",
+ "video/mpeg",
+ "mpegtype", GST_PROPS_INT (1),
+ "foo1", GST_PROPS_INT_RANGE (20,40),
+ "foo2", GST_PROPS_INT_RANGE (20,40),
+ "foo3", GST_PROPS_INT_RANGE (10,20)
+ )
+);
+
+GST_CAPS_FACTORY (mp1parsecaps,
+ GST_CAPS_NEW (
+ "mp1parse_src",
+ "video/mpeg",
+ "mpegtype", GST_PROPS_INT (1),
+ "foo1", GST_PROPS_INT (30),
+ "foo2", GST_PROPS_INT_RANGE (20,30),
+ "foo3", GST_PROPS_INT_RANGE (20,30)
+ )
+);
+
+
+
+GST_CAPS_FACTORY (rawcaps,
+ GST_CAPS_NEW (
+ "mpeg2dec_src",
+ "video/raw",
+ "width", GST_PROPS_INT_RANGE (16, 4096),
+ "height", GST_PROPS_INT_RANGE (16, 4096)
+ )
+);
+
+GST_CAPS_FACTORY (rawcaps2,
+ GST_CAPS_NEW (
+ "raw_sink_caps",
+ "video/raw",
+ "height", GST_PROPS_INT_RANGE (16, 256),
+ "depth", GST_PROPS_INT (16)
+ )
+);
+
+GST_CAPS_FACTORY (rawcaps3,
+ GST_CAPS_NEW (
+ "raw2_sink_caps",
+ "video/raw",
+ "fourcc", GST_PROPS_LIST (
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUY2")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YV12"))
+ ),
+ "height", GST_PROPS_INT_RANGE (16, 4096)
+ )
+);
+
+
+GST_CAPS_FACTORY (rawcaps4,
+ GST_CAPS_NEW (
+ "raw2_sink_caps",
+ "video/raw",
+ "fourcc", GST_PROPS_LIST (
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUY2")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YV12")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUYV"))
+ ),
+ "height", GST_PROPS_INT_RANGE (16, 4096)
+ )
+);
+
+GST_CAPS_FACTORY (rawcaps5,
+ GST_CAPS_NEW (
+ "raw2_sink_caps",
+ "video/raw",
+ "fourcc", GST_PROPS_LIST (
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUYV")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUY2"))
+ ),
+ "height", GST_PROPS_INT_RANGE (16, 4096)
+ )
+);
+int
+main (int argc, char *argv[])
+{
+ gboolean testret;
+ xmlDocPtr doc;
+ xmlNodePtr parent;
+ GstCaps *caps;
+ gint i;
+
+ gst_init (&argc, &argv);
+
+ doc = xmlNewDoc ("1.0");
+ doc->xmlRootNode = xmlNewDocNode (doc, NULL, "Capabilities", NULL);
+
+ /*
+ g_mem_chunk_info ();
+ for (i = 0; i<100000; i++) {
+ caps = gst_caps_intersect (GST_CAPS_GET (rawcaps3), GST_CAPS_GET (rawcaps4));
+ gst_caps_unref (caps);
+ }
+ g_mem_chunk_info ();
+ */
+
+ caps = gst_caps_intersect (GST_CAPS_GET (sinkcaps), GST_CAPS_GET (mp1parsecaps));
+ parent = xmlNewChild (doc->xmlRootNode, NULL, "Capabilities1", NULL);
+ gst_caps_save_thyself (caps, parent);
+
+ caps = gst_caps_intersect (GST_CAPS_GET (rawcaps), GST_CAPS_GET (rawcaps2));
+ parent = xmlNewChild (doc->xmlRootNode, NULL, "Capabilities2", NULL);
+ gst_caps_save_thyself (caps, parent);
+
+ caps = gst_caps_intersect (GST_CAPS_GET (rawcaps3), GST_CAPS_GET (rawcaps4));
+ parent = xmlNewChild (doc->xmlRootNode, NULL, "Capabilities3", NULL);
+ gst_caps_save_thyself (caps, parent);
+
+ caps = gst_caps_intersect (GST_CAPS_GET (rawcaps3), GST_CAPS_GET (rawcaps5));
+ parent = xmlNewChild (doc->xmlRootNode, NULL, "Capabilities4", NULL);
+ gst_caps_save_thyself (caps, parent);
+
+ xmlDocDump(stdout, doc);
+
+ return 0;
+}
--- /dev/null
+#include <gst/gst.h>
+
+/* these caps all have a non empty intersection */
+GST_CAPS_FACTORY (sinkcaps,
+ GST_CAPS_NEW (
+ "mpeg2dec_sink",
+ "video/mpeg",
+ "fourcc", GST_PROPS_LIST (
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YV12")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUY2"))
+ ),
+ "foo1", GST_PROPS_INT_RANGE (20,40),
+ "foo2", GST_PROPS_INT_RANGE (20,40),
+ "foo3", GST_PROPS_INT_RANGE (10,20)
+ )
+);
+
+GST_CAPS_FACTORY (mp1parsecaps,
+ GST_CAPS_NEW (
+ "mp1parse_src",
+ "video/mpeg",
+ "fourcc", GST_PROPS_LIST (
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YV12")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUY2"))
+ ),
+ "foo4", GST_PROPS_LIST (
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YV12")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUY2"))
+ )
+ )
+);
+
+
+
+GST_CAPS_FACTORY (rawcaps,
+ GST_CAPS_NEW (
+ "mpeg2dec_src",
+ "video/raw",
+ "width", GST_PROPS_INT_RANGE (16, 4096),
+ "height", GST_PROPS_INT_RANGE (16, 4096),
+ "fourcc", GST_PROPS_LIST (
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YV12")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUY2"))
+ )
+ )
+);
+
+GST_CAPS_FACTORY (rawcaps2,
+ GST_CAPS_NEW (
+ "raw_sink_caps",
+ "video/raw",
+ "height", GST_PROPS_INT_RANGE (16, 256),
+ "depth", GST_PROPS_INT (16)
+ ),
+ GST_CAPS_NEW (
+ "raw_sink_caps",
+ "video/raw",
+ "height", GST_PROPS_INT_RANGE (16, 256),
+ "depth", GST_PROPS_INT (16)
+ )
+);
+
+GST_CAPS_FACTORY (rawcaps3,
+ GST_CAPS_NEW (
+ "raw_sink_caps",
+ "video/raw",
+ "height", GST_PROPS_INT_RANGE (16, 256),
+ "depth", GST_PROPS_INT (16)
+ ),
+ GST_CAPS_NEW (
+ "raw_sink_caps",
+ "video/raw",
+ "height", GST_PROPS_INT_RANGE (16, 256),
+ "depth", GST_PROPS_INT (16)
+ ),
+ GST_CAPS_NEW (
+ "raw2_sink_caps",
+ "video/raw",
+ "fourcc", GST_PROPS_LIST (
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YV12")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUY2"))
+ ),
+ "height", GST_PROPS_INT_RANGE (16, 4096)
+ )
+);
+
+
+GST_CAPS_FACTORY (rawcaps4,
+ GST_CAPS_NEW (
+ "raw2_sink_caps",
+ "video/raw",
+ "fourcc", GST_PROPS_LIST (
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUY2")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YV12")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUYV"))
+ ),
+ "height", GST_PROPS_INT_RANGE (16, 4096)
+ )
+);
+
+GST_CAPS_FACTORY (rawcaps5,
+ GST_CAPS_NEW (
+ "raw2_sink_caps",
+ "video/raw",
+ "fourcc", GST_PROPS_LIST (
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUYV")),
+ GST_PROPS_FOURCC (GST_STR_FOURCC ("YUY2"))
+ ),
+ "height", GST_PROPS_INT_RANGE (16, 4096)
+ )
+);
+int
+main (int argc, char *argv[])
+{
+ gboolean testret;
+ xmlDocPtr doc;
+ xmlNodePtr parent;
+ GstCaps *caps;
+ gint i;
+
+ gst_init (&argc, &argv);
+
+ doc = xmlNewDoc ("1.0");
+ doc->xmlRootNode = xmlNewDocNode (doc, NULL, "Capabilities", NULL);
+
+ caps = gst_caps_normalize (GST_CAPS_GET (sinkcaps));
+ parent = xmlNewChild (doc->xmlRootNode, NULL, "Capabilities1", NULL);
+ gst_caps_save_thyself (caps, parent);
+
+ caps = gst_caps_normalize (GST_CAPS_GET (mp1parsecaps));
+ parent = xmlNewChild (doc->xmlRootNode, NULL, "Capabilities1", NULL);
+ gst_caps_save_thyself (caps, parent);
+
+ caps = gst_caps_normalize (GST_CAPS_GET (rawcaps));
+ parent = xmlNewChild (doc->xmlRootNode, NULL, "Capabilities1", NULL);
+ gst_caps_save_thyself (caps, parent);
+
+ caps = gst_caps_normalize (GST_CAPS_GET (rawcaps2));
+ parent = xmlNewChild (doc->xmlRootNode, NULL, "Capabilities1", NULL);
+ gst_caps_save_thyself (caps, parent);
+
+ caps = gst_caps_normalize (GST_CAPS_GET (rawcaps3));
+ parent = xmlNewChild (doc->xmlRootNode, NULL, "Capabilities1", NULL);
+ gst_caps_save_thyself (caps, parent);
+
+ xmlDocDump(stdout, doc);
+
+ return 0;
+}