Pull mode and queue2

Jan Alexander Steffens jan.steffens at gmail.com
Wed Sep 24 07:43:55 PDT 2014


On Wed, Sep 24, 2014 at 3:44 PM, Demeyer Jonathan
<Jonathan.Demeyer at macq.eu> wrote:
> For testing purpose, I wrote two filters. One filter "pullfilter" uses pull mode for its sink and push mode for its source. The other is a dispenser (wrongly named "mdispatch", based on tee), source pad on requests and giving buffers as pullfilter requests them.
>
> This pipeline works like expected :
> gst-launch-1.0 fakesrc can-activate-push=false ! pullfilter ! fakesink
>
> This one also works :
> gst-launch-1.0 fakesrc ! queue2 ! pullfilter ! fakesink
>
>
> With two branches, no problem :
> gst-launch-1.0 --gst-debug-level=3 fakesrc can-activate-push=false ! mdispatch has-chain=false name=t ! pullfilter ! fakesink t. ! pullfilter ! fakesink
> But when I put a queue2 in the previous pipeline, it fails :
> gst-launch-1.0 --gst-debug=pullfilter:5 fakesrc ! queue2 ! mdispatch has-chain=false name=t ! pullfilter ! fakesink t. ! pullfilter ! fakesink
> Setting pipeline to PAUSED ...
> mdispatch: Pull mode not supported by peer
> mdispatch: Push mode activated
> mdispatch: Pull mode not supported by peer
> mdispatch: Push mode activated
> 0:00:00.011082003 11673  0x80958c0 WARN                GST_PADS gstpad.c:974:gst_pad_set_active:<t:sink> Failed to activate pad
> ERROR: Pipeline doesn't want to pause.
> Setting pipeline to NULL ...
> Freeing pipeline ...
> I doesn't see why it fails when setting a queue2 to the pipeline (I tested in previous pipeline if "queue2" in pull mode can works with fakesrc in push mode).
>
> Is there a problem with the design ?

I don't think your pullfilter element works as expected. queue2
without temp-template or ring-buffer-max-size set can only operate in
push mode. If pullfilter's sink really could not be activated in push
mode the second pipeline (fakesrc ! queue2 ! pullfilter ! fakesink)
should fail.

Also, a pullfilter element shouldn't be needed in front of fakesink as
it can already do pulling by setting can-activate-push=false
can-activate-pull=true.


More information about the gstreamer-devel mailing list