diff options
Diffstat (limited to 'tests/threadlock.c')
-rw-r--r-- | tests/threadlock.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/tests/threadlock.c b/tests/threadlock.c new file mode 100644 index 000000000..83b62aa6b --- /dev/null +++ b/tests/threadlock.c @@ -0,0 +1,51 @@ +#include <stdio.h> +#include <gst/gst.h> + +int main(int argc,char *argv[]) { + GstBin *pipeline, *thread; + GstElement *src, *queue1, *sink; + + gst_init(&argc,&argv); + gst_info_set_categories(-1); + gst_debug_set_categories(-1); + + pipeline = gst_pipeline_new("pipeline"); + thread = gst_thread_new("thread"); + src = gst_elementfactory_make("fakesrc","src"); + sink = gst_elementfactory_make("fakesink","sink"); + + fprintf(stderr,"ADDING src\n"); + gst_bin_add(thread,src); + fprintf(stderr,"ADDING sink\n"); + gst_bin_add(thread,sink); + fprintf(stderr,"ADDING thread\n"); + gst_bin_add(pipeline,GST_ELEMENT(thread)); + +// gst_element_add_ghost_pad(GST_ELEMENT(thread),gst_element_get_pad(sink,"sink"),"sink"); + + fprintf(stderr,"CONNECTING src to sink\n"); + gst_element_connect (src, "src", sink, "sink"); + + fprintf(stderr,"\nSWITCHING to READY:\n"); + gst_element_set_state (thread, GST_STATE_READY); + fprintf(stderr,"\nPIPELINE sched:\n"); + gst_schedule_show(GST_ELEMENT_SCHED(pipeline)); + fprintf(stderr,"\nTHREAD sched:\n"); + gst_schedule_show(GST_ELEMENT_SCHED(thread)); + + fprintf(stderr,"\nSWITCHING to PLAYING:\n"); + gst_element_set_state (thread, GST_STATE_PLAYING); + gst_schedule_show(GST_ELEMENT_SCHED(pipeline)); + gst_schedule_show(GST_ELEMENT_SCHED(thread)); + +fprintf(stderr,"sleeping...\n"); +sleep(1); +fprintf(stderr,"done sleeping...\n"); + + fprintf(stderr,"\nSWITCHING to READY:\n"); + gst_element_set_state (thread, GST_STATE_READY); + gst_schedule_show(GST_ELEMENT_SCHED(pipeline)); + gst_schedule_show(GST_ELEMENT_SCHED(thread)); + +sleep(1); +} |