Added caps testsuite.

Original commit message from CVS:
Added caps testsuite.
This commit is contained in:
Wim Taymans 2002-01-13 22:46:34 +00:00
parent 04667da435
commit dcfb86bb73
9 changed files with 823 additions and 0 deletions

View file

@ -698,6 +698,7 @@ tests/muxing/Makefile
tests/sched/Makefile
testsuite/Makefile
testsuite/bytestream/Makefile
testsuite/caps/Makefile
testsuite/capsnego/Makefile
testsuite/cleanup/Makefile
testsuite/plugin/Makefile

View file

@ -0,0 +1,14 @@
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)

View file

@ -0,0 +1,123 @@
#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;
}

View file

@ -0,0 +1,125 @@
#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;
}

View file

@ -0,0 +1,149 @@
#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;
}

View file

@ -0,0 +1,14 @@
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)

View file

@ -0,0 +1,123 @@
#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;
}

View file

@ -0,0 +1,125 @@
#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;
}

View file

@ -0,0 +1,149 @@
#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;
}