#include #include #include #include #include static int launch_argc; static char **launch_argv; #ifndef USE_GLIB2 GtkWidget *window; GtkWidget *gtk_socket; #endif typedef void (*found_handler) (GstElement *element, gint xid, void *priv); void arg_search (GstBin *bin, gchar *argname, found_handler handler, void *priv) { GList *children; gchar *ccargname; ccargname = g_strdup_printf("::%s",argname); children = gst_bin_get_list(bin); #ifndef USE_GLIB2 while (children) { GstElement *child; child = GST_ELEMENT (children->data); children = g_list_next (children); if (GST_IS_BIN (child)) arg_search (GST_BIN (child), argname, handler, priv); else { GtkType type; type = GTK_OBJECT_TYPE (child); while (type != GTK_TYPE_INVALID) { GtkArg *args; guint32 *flags; guint num_args,i; args = gtk_object_query_args(type,&flags,&num_args); for (i=0;i= 3 && !strcmp(argv[1], "-o")) { save_pipeline = TRUE; run_pipeline = FALSE; savefile = argv[2]; argv[2] = argv[0]; argv+=2; argc-=2; } launch_argc = argc; launch_argv = argv; pipeline = gst_pipeline_new ("launch"); /* make a null-terminated version of argv */ argvn = g_new0 (char *,argc); memcpy (argvn, argv+1, sizeof (char*) * (argc-1)); /* escape spaces */ for (i=0; i