Advertisement
herrpaco

Pipeline stops

Nov 10th, 2014
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.61 KB | None | 0 0
  1. #include <gst/gst.h>
  2.  
  3. static GstPad *audiosrc_blockpad;
  4. static GstElement *videosrc, *videosink, *pipeline, *audiosrc, *audiosink;
  5.  
  6. static GstPadProbeReturn pad_probe_cb (GstPad * pad, GstPadProbeInfo * info, gpointer user_data){
  7.    
  8.     /* remove audio */
  9.     gst_element_set_state(audiosink, GST_STATE_NULL);
  10.     gst_bin_remove(GST_BIN(pipeline), audiosink);
  11.        
  12.     return GST_PAD_PROBE_OK;
  13. }
  14.  
  15. static gboolean timeout_cb (gpointer user_data)
  16. {
  17.     gst_pad_add_probe (audiosrc_blockpad, GST_PAD_PROBE_TYPE_BLOCK_DOWNSTREAM, pad_probe_cb, user_data, NULL);
  18.     return FALSE;
  19. }
  20.  
  21. int main (int argc, char **argv){
  22.     GMainLoop *loop;
  23.    
  24.     /* init GStreamer */
  25.     gst_init (&argc, &argv);
  26.     loop = g_main_loop_new (NULL, FALSE);
  27.    
  28.     videosrc = gst_element_factory_make("videotestsrc", NULL);
  29.     videosink = gst_element_factory_make("ximagesink", NULL);
  30.    
  31.     audiosrc = gst_element_factory_make("audiotestsrc", NULL);
  32.     audiosink = gst_element_factory_make("osxaudiosink", NULL);
  33.  
  34.     audiosrc_blockpad = gst_element_get_static_pad(audiosrc, "src");
  35.    
  36.     pipeline = gst_pipeline_new("pipeline");
  37.    
  38.     gst_bin_add_many(GST_BIN(pipeline), audiosink, audiosrc, videosrc, videosink, NULL);
  39.    
  40.     gst_element_link_many(videosrc, videosink, NULL);
  41.     gst_element_link_many(audiosrc, audiosink, NULL);
  42.    
  43.     gst_element_set_state(pipeline, GST_STATE_PLAYING);
  44.        
  45.     g_timeout_add_seconds (5, timeout_cb, loop);
  46.    
  47.     g_main_loop_run (loop);
  48.    
  49.     gst_element_set_state (pipeline, GST_STATE_NULL);
  50.    
  51.     gst_object_unref (pipeline);
  52.    
  53.     return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement