#include /* these caps all have a non empty intersection */ GstStaticCaps sinkcaps = GST_STATIC_CAPS ("video/mpeg, " "mpegtype=(int)1, " "foo1=(int)[20,40], " "foo2=(int)[20,40], " "foo3=(int)[10,20]"); GstStaticCaps mp1parsecaps = GST_STATIC_CAPS ("video/mpeg, " "mpegtype=(int)1, " "foo1=(int)30, " "foo2=(int)[20,30], " "foo3=(int)[20,30]"); GstStaticCaps rawcaps = GST_STATIC_CAPS ("video/raw, " "width=(int)[16,4096], " "height=(int)[16,4096]"); GstStaticCaps rawcaps2 = GST_STATIC_CAPS ("video/raw, " "height=(int)[16,256], " "depth=(int)16"); GstStaticCaps rawcaps3 = GST_STATIC_CAPS ("video/raw, " "fourcc=(fourcc){\"YUY2\", \"YV12\" }, " "height=(int)[16,4096]"); GstStaticCaps rawcaps4 = GST_STATIC_CAPS ("video/raw, " "fourcc=(fourcc){\"YUY2\",\"YV12\",\"YUYV\" }, " "height=(int)[16,4096]"); GstStaticCaps rawcaps5 = GST_STATIC_CAPS ("video/raw, " "fourcc=(fourcc){\"YUYV\",\"YUY2\"}, " "height=(int)[16,4096]"); GstStaticCaps rawcaps6 = GST_STATIC_CAPS ("video/raw, " "fourcc=(fourcc)\"YUYV\", " "height=(int)640, " "width=(int)480, " "framerate=(double)30.0; " "video/raw, " "fourcc=(fourcc)\"I420\", " "height=(int)640, " "width=(int)480, " "framerate=(double)30.0"); GstStaticCaps rawcaps7 = GST_STATIC_CAPS ("video/x-raw-yuv, format=(fourcc)YUY2, width=(int)[1,2147483647], height=(int)[1,2147483647], framerate=(double)[0,1.79769e+308]"); GstStaticCaps rawcaps8 = GST_STATIC_CAPS ("video/x-raw-yuv, format=(fourcc){ I420, YV12, YUY2 }, width=(int)[16,4096], height=(int)[16,4096], framerate=(double)[0,1.79769e+308]"); int main (int argc, char *argv[]) { xmlDocPtr doc; xmlNodePtr parent; GstCaps *caps; 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_static_caps_get (rawcaps3), GST_CAPS_GET (rawcaps4)); gst_caps_unref (caps); } g_mem_chunk_info (); */ caps = gst_caps_intersect (gst_static_caps_get (&sinkcaps), gst_static_caps_get (&mp1parsecaps)); parent = xmlNewChild (doc->xmlRootNode, NULL, "Capabilities1", NULL); gst_caps_save_thyself (caps, parent); caps = gst_caps_intersect (gst_static_caps_get (&rawcaps), gst_static_caps_get (&rawcaps2)); parent = xmlNewChild (doc->xmlRootNode, NULL, "Capabilities2", NULL); gst_caps_save_thyself (caps, parent); caps = gst_caps_intersect (gst_static_caps_get (&rawcaps3), gst_static_caps_get (&rawcaps4)); parent = xmlNewChild (doc->xmlRootNode, NULL, "Capabilities3", NULL); gst_caps_save_thyself (caps, parent); caps = gst_caps_intersect (gst_static_caps_get (&rawcaps3), gst_static_caps_get (&rawcaps5)); parent = xmlNewChild (doc->xmlRootNode, NULL, "Capabilities4", NULL); gst_caps_save_thyself (caps, parent); caps = gst_caps_intersect (gst_static_caps_get (&rawcaps6), gst_caps_new_full (gst_structure_copy (gst_caps_get_structure (gst_static_caps_get (&rawcaps6), 0)), NULL)); parent = xmlNewChild (doc->xmlRootNode, NULL, "Capabilities5", NULL); gst_caps_save_thyself (caps, parent); caps = gst_caps_intersect (gst_static_caps_get (&rawcaps7), gst_static_caps_get (&rawcaps8)); g_print ("intersection: %s\n", gst_caps_to_string (caps)); xmlDocDump (stdout, doc); return 0; }