Nested pipelines with different running time

Andrzej Bartoszek andrzej.bartoszek at flytronic.pl
Mon Oct 24 09:26:19 UTC 2016


Hello.

Let's suppose that we work with such pipeline:

+-pipeline-------------------------------------+
|               +-pipeline A-----------------+ |
|             --| timeshift buffer ---> sink | |
|            /  +----------------------------+ |
| live src --                                  |
|            \ +-pipeline B-----------------+ |
|             --| timeshift buffer ---> sink | |
|               +----------------------------+ |
+----------------------------------------------+

Currently, both inner pipelines can be in different states (let's 
consider only PAUSED and PLAYING). Which is good.

However, when one pipeline is paused (after being in PLAYING) and then 
it goes back to PLAYING, it does not change base_time. In this way, when 
inner pipeline is calculating its running time (clock_time - base_time), 
it is equal to running time of outer pipeline. Despite being in PAUSED 
state for some time. Is that a valid behavior?

This is caused by patch to bug #665390 - after this change, only 
toplevel pipelines perform clock/time management. If described behavior 
is not valid, maybe there is need for some better fix (flag in 
GstElement, similar to locked state?) allowing for nesting pipelines 
with different running time?

Best regards,
Andrzej Bartoszek


More information about the gstreamer-devel mailing list