Is there any way to intercept errors without pipeline bus?

marcin at marcin at
Tue Oct 9 08:13:58 PDT 2012

Because it will simplify a lot architecture of my application.

My problem is that I have highly dynamic pipeline with multiple
branches combined with adder. They are added and removed with quite
high frequency (and it has to be like that). If one of the branches
causes error (let's say souphttpsrc encounters 404 not found),
pipeline is likely to be stopped, even if I remove such erroneous
branch right after receiving error on the bus. When it is stopped it
obviously hangs all playback even if all of the remaining branches
have state of PLAYING and are OK. So I need to set pipeline state
again to PLAYING and the problem is that can rarely happen at the same
time as one of the branches is during removal so it's state is being
set to NULL. When I remove a branch I set it's bin as locked to avoid
recursive updates from pipeline but in rare cases, such
pipeline.set_state => PLAYING happens a bit earlier than lock is taken
on the bin. So I need to make extra checks during finalizing if that
hadn't happened.

All of that could be easily avoided if error never left branch's bin
and I could immediately unlink it and pipeline state wasn't affected
in the same way as I can handle e.g. EOS event.


2012/10/9 Edward Hervey <bilboed at>:
> On Tue, 2012-10-09 at 12:24 +0200, marcin at wrote:
>> Hi,
>> is there any clean way to intercept elements' errors without pipeline bus?
>   No.
>   Why wouldn't you want to get it from the pipeline bus ?
>     Edward
>> m.
>> _______________________________________________
>> gstreamer-devel mailing list
>> gstreamer-devel at
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at

More information about the gstreamer-devel mailing list