summaryrefslogtreecommitdiff
path: root/tools/gstreamer-launch.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/gstreamer-launch.c')
-rw-r--r--tools/gstreamer-launch.c35
1 files changed, 25 insertions, 10 deletions
diff --git a/tools/gstreamer-launch.c b/tools/gstreamer-launch.c
index e9df116977..42da4f5a37 100644
--- a/tools/gstreamer-launch.c
+++ b/tools/gstreamer-launch.c
@@ -98,9 +98,21 @@ main(int argc, char *argv[])
char **argvn;
gchar *cmdline;
int i;
+ gboolean save_pipeline = FALSE;
+ gboolean run_pipeline = TRUE;
+ gchar *savefile = "";
gst_init (&argc, &argv);
+ if (argc >= 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;
@@ -132,19 +144,22 @@ main(int argc, char *argv[])
gst_parse_launch (cmdline, GST_BIN (pipeline));
- arg_search(GST_BIN(pipeline),"xid",xid_handler,NULL);
-
-// xmlSaveFile("gstreamer-launch.gst",gst_xml_write(pipeline));
+ if (save_pipeline) {
+ xmlSaveFile (savefile, gst_xml_write (pipeline));
+ }
+ if (run_pipeline) {
+ arg_search(GST_BIN(pipeline),"xid",xid_handler,NULL);
- fprintf(stderr,"RUNNING pipeline\n");
- gst_element_set_state (pipeline, GST_STATE_PLAYING);
+ fprintf(stderr,"RUNNING pipeline\n");
+ gst_element_set_state (pipeline, GST_STATE_PLAYING);
- //g_idle_add(idle_func,pipeline);
- // g_main_loop_run (g_main_loop_new (NULL, FALSE));
- while (1)
- gst_bin_iterate (GST_BIN (pipeline));
+// g_idle_add(idle_func,pipeline);
+// g_main_loop_run (g_main_loop_new (NULL, FALSE));
+ while (1)
+ gst_bin_iterate (GST_BIN (pipeline));
- gst_element_set_state (pipeline, GST_STATE_NULL);
+ gst_element_set_state (pipeline, GST_STATE_NULL);
+ }
return 0;
}