mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-26 19:51:11 +00:00
Added caps testsuite.
Original commit message from CVS: Added caps testsuite.
This commit is contained in:
parent
04667da435
commit
dcfb86bb73
9 changed files with 823 additions and 0 deletions
|
@ -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
|
||||
|
|
14
tests/old/testsuite/caps/Makefile.am
Normal file
14
tests/old/testsuite/caps/Makefile.am
Normal 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)
|
||||
|
123
tests/old/testsuite/caps/compatibility.c
Normal file
123
tests/old/testsuite/caps/compatibility.c
Normal 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;
|
||||
}
|
125
tests/old/testsuite/caps/intersection.c
Normal file
125
tests/old/testsuite/caps/intersection.c
Normal 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;
|
||||
}
|
149
tests/old/testsuite/caps/normalisation.c
Normal file
149
tests/old/testsuite/caps/normalisation.c
Normal 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;
|
||||
}
|
14
testsuite/caps/Makefile.am
Normal file
14
testsuite/caps/Makefile.am
Normal 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)
|
||||
|
123
testsuite/caps/compatibility.c
Normal file
123
testsuite/caps/compatibility.c
Normal 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;
|
||||
}
|
125
testsuite/caps/intersection.c
Normal file
125
testsuite/caps/intersection.c
Normal 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;
|
||||
}
|
149
testsuite/caps/normalisation.c
Normal file
149
testsuite/caps/normalisation.c
Normal 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;
|
||||
}
|
Loading…
Reference in a new issue