Creating BIN, dynamic connection and pad blocking

Daniel Doron danielmeirdoron at
Wed Apr 17 01:54:28 PDT 2013

Hi all,

I would like to write a service that provides the following features:
1. Constant stream of onboard camera (tcpserversink)
2. Upon request (event) record to file 30 seconds of video (post event)
3. Upon request (event) record to file the last 10 seconds preceding the
event (pre-event)
4. Upon request (event) save an single image (snapshot) to file.

It has been suggested to me over the IRC channel (__tim) to use the
camerabin2 from bad plugins. I would like to avoid that if possible.

Number 1, no problem.
Number 2,3,4 I was thinking of creating a BIN, connecting it to the
pipeline tee as needed, get the data and send an EOS.
Theory and practice, are not the same (in practice :-))

I found this code example: "Dynamically Recording From a Live Stream & EOS

I tried to run it, but it seems to be stuck (can't figure out why).

here is how I think it could be designed:

my thoughts on approach for each item:
for #2, connect the BIN upon request, set a timer and disconnect it when
time is up, send an EOS to flush data to file.
for #4, set the queue max buffers to say 10, connect the BIN upon request,
capture any GST_FLOW upstream messages, flush data, EOS and disconnect.
for #3, set queue ring-buffer-max-size (will have to find how much 10
seconds is in bytes), when request received, block pad, disconnect BIN,
send EOS

I would appreciate your input on:
1. dynamic creation and manipulation of BINs in the pipeline.
2. on the project, design and other suggestions.

P.S: important information, I am using version 0.10.36, cross compiled for
ARM based board.

Thank you in advance for your time,

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the gstreamer-devel mailing list