1 #include <sys/types.h>
2 #include <sys/stat.h>
3 #include <fcntl.h>
5 #include <gst/gst.h>
7 extern gboolean _gst_plugin_spew;
9 int main(int argc,char *argv[]) {
10 GstElement *pipeline;
11 GstElement *src, *sink;
12 int fd;
14 _gst_plugin_spew = TRUE;
15 gst_init(&argc,&argv);
16 gst_plugin_load_all();
17 // gst_plugin_load("dvdsrc");
19 fd = creat("output.vob",0644);
21 pipeline = gst_elementfactory_make("pipeline","dvdcat");
22 g_return_if_fail(pipeline != NULL);
24 src = gst_elementfactory_make("dvdsrc","src");
25 g_return_if_fail(src != NULL);
26 gtk_object_set(GTK_OBJECT(src),"location",argv[1],NULL);
27 if (argc >= 3)
28 gtk_object_set(GTK_OBJECT(src),"offset",atoi(argv[2]),NULL);
29 sink = gst_elementfactory_make("fdsink","sink");
30 g_return_if_fail(sink != NULL);
31 gtk_object_set(GTK_OBJECT(sink),"fd",fd,NULL);
33 // construct the outer pipeline
34 gst_bin_add(GST_BIN(pipeline),GST_ELEMENT(src));
35 gst_bin_add(GST_BIN(pipeline),GST_ELEMENT(sink));
36 gst_pad_connect(gst_element_get_pad(src,"src"),
37 gst_element_get_pad(sink,"sink"));
39 gst_element_set_state(GST_ELEMENT(pipeline),GST_STATE_RUNNING);
40 gst_element_set_state(GST_ELEMENT(pipeline),GST_STATE_PLAYING);
42 // while (GST_STATE_IS_SET(src,GST_STATE_RUNNING))
43 // while (1)
44 while (GST_STATE_IS_SET(src,1<<16))
45 gst_src_push(GST_SRC(src));
46 }