cel->pipeline = gst_pipeline_new("pipeline"); g_assert (cel->pipeline); cel->camera_src = gst_element_factory_make(VIDEO_SRC, "camera_src"); g_assert(cel->camera_src); cel->tee = gst_element_factory_make("tee", "tee"); g_assert(cel->tee); tee_pad = gst_element_get_request_pad (cel->tee, "src%d"); g_print ("new pad %s\n", gst_pad_get_name (tee_pad)); cel->bin = gst_bin_new("bin"); g_assert(cel->bin); cel->screen_queue = gst_element_factory_make("queue", "screen_queue"); g_assert(cel->screen_queue); cel->csp_filter = gst_element_factory_make("ffmpegcolorspace", "csp_filter"); g_assert(cel->csp_filter); cel->screen_sink = gst_element_factory_make(VIDEO_SINK, "screen_sink"); g_assert(cel->screen_sink); gst_bin_add_many (GST_BIN (cel->pipeline), cel->camera_src, cel->tee, NULL); gst_bin_add_many (GST_BIN (cel->bin), cel->screen_queue, cel->csp_filter,cel->screen_sink, NULL); gst_bin_add (GST_BIN (cel->pipeline), cel->bin); ret = gst_element_link_many (cel->screen_queue, cel->csp_filter,cel->screen_sink, NULL); ret = gst_element_link (cel->camera_src, cel->tee); pad = gst_element_get_static_pad (cel->screen_queue, "sink"); gst_element_add_pad (cel->bin, gst_ghost_pad_new ("sink", pad)); ret = gst_pad_link (tee_pad, pad); gst_object_unref (pad); gst_element_set_state(cel->pipeline, GST_STATE_PLAYING);