Fixed the autoplugger

Original commit message from CVS:
Fixed the autoplugger
This commit is contained in:
Wim Taymans 2001-04-27 19:17:08 +00:00
parent c5cce64b7b
commit f7784bdb6f
2 changed files with 26 additions and 36 deletions

View file

@ -56,7 +56,7 @@ gst_play_typefind (GstBin *bin, GstElement *element)
int main(int argc,char *argv[]) int main(int argc,char *argv[])
{ {
GstElement *disksrc, *osssink, *videosink; GstElement *disksrc, *osssink, *videosink;
GstElement *bin; GstElement *pipeline;
GtkWidget *appwindow; GtkWidget *appwindow;
GstCaps *srccaps; GstCaps *srccaps;
GstElement *new_element; GstElement *new_element;
@ -72,18 +72,18 @@ int main(int argc,char *argv[])
exit(-1); exit(-1);
} }
/* create a new bin to hold the elements */ /* create a new pipeline to hold the elements */
bin = gst_pipeline_new("pipeline"); pipeline = gst_pipeline_new("pipeline");
g_assert(bin != NULL); g_assert(pipeline != NULL);
/* create a disk reader */ /* create a disk reader */
disksrc = gst_elementfactory_make("disksrc", "disk_source"); disksrc = gst_elementfactory_make("disksrc", "disk_source");
g_assert(disksrc != NULL); g_assert(disksrc != NULL);
gtk_object_set(GTK_OBJECT(disksrc),"location", argv[1],NULL); gtk_object_set(GTK_OBJECT(disksrc),"location", argv[1],NULL);
gst_bin_add (GST_BIN (bin), disksrc); gst_bin_add (GST_BIN (pipeline), disksrc);
srccaps = gst_play_typefind (GST_BIN (bin), disksrc); srccaps = gst_play_typefind (GST_BIN (pipeline), disksrc);
if (!srccaps) { if (!srccaps) {
g_print ("could not autoplug, unknown media type...\n"); g_print ("could not autoplug, unknown media type...\n");
@ -112,12 +112,7 @@ int main(int argc,char *argv[])
exit (-1); exit (-1);
} }
gst_bin_remove (GST_BIN (bin), disksrc); gst_bin_add (GST_BIN (pipeline), new_element);
// FIXME hack, reparent the disksrc so the scheduler doesn't break
bin = gst_pipeline_new("pipeline");
gst_bin_add (GST_BIN (bin), disksrc);
gst_bin_add (GST_BIN (bin), new_element);
gst_element_connect (disksrc, "src", new_element, "sink"); gst_element_connect (disksrc, "src", new_element, "sink");
@ -135,19 +130,19 @@ int main(int argc,char *argv[])
gtk_widget_show_all(appwindow); gtk_widget_show_all(appwindow);
xmlSaveFile("xmlTest.gst", gst_xml_write(GST_ELEMENT(bin))); xmlSaveFile("xmlTest.gst", gst_xml_write(GST_ELEMENT(pipeline)));
/* start playing */ /* start playing */
gst_element_set_state(GST_ELEMENT(bin), GST_STATE_PLAYING); gst_element_set_state(GST_ELEMENT(pipeline), GST_STATE_PLAYING);
gtk_idle_add(idle_func, bin); gtk_idle_add(idle_func, pipeline);
gst_main(); gst_main();
/* stop the bin */ /* stop the pipeline */
gst_element_set_state(GST_ELEMENT(bin), GST_STATE_NULL); gst_element_set_state(GST_ELEMENT(pipeline), GST_STATE_NULL);
gst_pipeline_destroy(bin); gst_pipeline_destroy(pipeline);
exit(0); exit(0);
} }

View file

@ -56,7 +56,7 @@ gst_play_typefind (GstBin *bin, GstElement *element)
int main(int argc,char *argv[]) int main(int argc,char *argv[])
{ {
GstElement *disksrc, *osssink, *videosink; GstElement *disksrc, *osssink, *videosink;
GstElement *bin; GstElement *pipeline;
GtkWidget *appwindow; GtkWidget *appwindow;
GstCaps *srccaps; GstCaps *srccaps;
GstElement *new_element; GstElement *new_element;
@ -72,18 +72,18 @@ int main(int argc,char *argv[])
exit(-1); exit(-1);
} }
/* create a new bin to hold the elements */ /* create a new pipeline to hold the elements */
bin = gst_pipeline_new("pipeline"); pipeline = gst_pipeline_new("pipeline");
g_assert(bin != NULL); g_assert(pipeline != NULL);
/* create a disk reader */ /* create a disk reader */
disksrc = gst_elementfactory_make("disksrc", "disk_source"); disksrc = gst_elementfactory_make("disksrc", "disk_source");
g_assert(disksrc != NULL); g_assert(disksrc != NULL);
gtk_object_set(GTK_OBJECT(disksrc),"location", argv[1],NULL); gtk_object_set(GTK_OBJECT(disksrc),"location", argv[1],NULL);
gst_bin_add (GST_BIN (bin), disksrc); gst_bin_add (GST_BIN (pipeline), disksrc);
srccaps = gst_play_typefind (GST_BIN (bin), disksrc); srccaps = gst_play_typefind (GST_BIN (pipeline), disksrc);
if (!srccaps) { if (!srccaps) {
g_print ("could not autoplug, unknown media type...\n"); g_print ("could not autoplug, unknown media type...\n");
@ -112,12 +112,7 @@ int main(int argc,char *argv[])
exit (-1); exit (-1);
} }
gst_bin_remove (GST_BIN (bin), disksrc); gst_bin_add (GST_BIN (pipeline), new_element);
// FIXME hack, reparent the disksrc so the scheduler doesn't break
bin = gst_pipeline_new("pipeline");
gst_bin_add (GST_BIN (bin), disksrc);
gst_bin_add (GST_BIN (bin), new_element);
gst_element_connect (disksrc, "src", new_element, "sink"); gst_element_connect (disksrc, "src", new_element, "sink");
@ -135,19 +130,19 @@ int main(int argc,char *argv[])
gtk_widget_show_all(appwindow); gtk_widget_show_all(appwindow);
xmlSaveFile("xmlTest.gst", gst_xml_write(GST_ELEMENT(bin))); xmlSaveFile("xmlTest.gst", gst_xml_write(GST_ELEMENT(pipeline)));
/* start playing */ /* start playing */
gst_element_set_state(GST_ELEMENT(bin), GST_STATE_PLAYING); gst_element_set_state(GST_ELEMENT(pipeline), GST_STATE_PLAYING);
gtk_idle_add(idle_func, bin); gtk_idle_add(idle_func, pipeline);
gst_main(); gst_main();
/* stop the bin */ /* stop the pipeline */
gst_element_set_state(GST_ELEMENT(bin), GST_STATE_NULL); gst_element_set_state(GST_ELEMENT(pipeline), GST_STATE_NULL);
gst_pipeline_destroy(bin); gst_pipeline_destroy(pipeline);
exit(0); exit(0);
} }