if (sinktype && 0==strcmp(sinktype,"xvimagesink")) { videosink = gst_element_factory_make("xvimagesink", NULL); g_object_set (G_OBJECT (videosink), "sync", FALSE, NULL); } if (sinktype && 0==strcmp(sinktype, "glimagesink")) { videosink = gst_element_factory_make("glimagesink", NULL); g_object_set (G_OBJECT (videosink), "sync", FALSE, NULL); } else { ximagesink = gst_element_factory_make("ximagesink", NULL); g_object_set (G_OBJECT (ximagesink), "sync", FALSE, NULL); videoscale = gst_element_factory_make("videoscale", NULL); colorspace = gst_element_factory_make("ffmpegcolorspace", NULL); videosink = gst_pipeline_new ("videosinkbin"); gst_bin_add_many (GST_BIN (videosink), colorspace, videoscale, ximagesink, NULL); gst_element_link_many (colorspace, videoscale, ximagesink, NULL); pad = gst_element_get_pad (colorspace, "sink"); gst_element_add_pad (videosink, gst_ghost_pad_new ("sink", pad)); gst_object_unref (GST_OBJECT (pad)); }