Push source scheduling and the create function

Martin Kelly martin at surround.io
Fri Apr 29 15:53:38 UTC 2016


I apologize in advance if some documentation makes this question clear; 
I searched but have not found an answer. I have an issue with a 
Gstreamer application that I cannot figure out. Specifically, I'm trying 
two different pipeline configurations that I would expect to yield 
identical results, but they are not. One of these cases is breaking 
while the other appears to be working. Below I describe the setup:

Case 1:
- create one pipeline
- use gst_bin_add_many to add many bins to it
- the first bin is of the form "some-video-element ! [encode and many 
other elements] udpsink"
- all other bins are in the form "my-push-src ! fakesink"
- set the pipeline to playing

Case 2:
- create one pipeline per bin via gst_pipeline_new + gst_bin_add
- the first pipeline is of the form "some-video-element ! [encode and 
many other elements] udpsink"
- set each pipeline to playing

In both cases, I see the video element playing correctly. In case 1, I'm 
seeing that the create function in "my-push-src" is being called once 
for each push source and never being called again. In case 2, create 
continually gets called, and everything seems OK. It seems that somehow 
the scheduling is different between cases 1 and 2, and I'm guessing the 
video element's scheduling is somehow changing that of the push source 

I don't understand the interplay between push sources and other sources, 
so I'm not sure how to debug this. I'm wondering if someone could give 
me a pointer as to what may be wrong or where I should look.

In case it matters, I'm using gstreamer 1.6.3 on Android, and 
"my-push-src" is my own custom element, so it's entirely possible it has 
some bug that I haven't caught.

Thanks in advance,

More information about the gstreamer-devel mailing list