info about dynamic request pads

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

info about dynamic request pads

Luca Ognibene-3
Hi, i would like to create a bin that works this way:
 * a single sink pad
 * src%d are request pad
 * inside the bin i have the sink pad linked to a tee
 * every time i request a pad i want my bin to create a "queue !
identity" bin and attach it to the internal tee
 * every time i release a pad i want my bin to stop the "queue !
identity" bin and release the internal tee pad

Everything work if the bin is in the NULL state but i have
segfaults/hangs if the bin is in PLAYING state. I've tried to read
part-block and other
docs but i'm not able to fix this problem..

I've implemented the bin this way:
 * in _init the internal tee is created

 * test app call bin.get_request_pad('src0')

 * in _request_new_pad:
   * get element state
   * request a pad from internal tee
   * block this pad if state is PLAYING
   * add the "queue ! identity" bin
   * create the ghost pad and set target to bin.src
   * link tee request pad to bin.sink
   * call sync_state_with_parent on the bin (is this ok? right now
bin.src is not linked and the bin is in playing state)
   * unblock tee request pad

 * test app block received ghost pad
 * add queue ! fakesink
 * link them to ghost pad
 * call sync_state_with_parent on queue and fakesink
 * unblock ghost pad

Problems:
 * sometime (really often) program hangs on blocking ghost pad
 * sometime (not very often) i have segfaults while queue is trying to
fixate caps

A strange thing is that if i change my bin to add "identity !
identity" instead of "queue ! identity" everything works fine.. but i
don't know why! And i need the queue there :)

This is a svg graph of my pipeline after having received the ghost
pad: http://people.freedesktop.org/~skaboy/test76-3.dot.svg
I'm using gstreamer 0.10.21 (core).

ciao
Luca

------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: info about dynamic request pads

Luca Ognibene-3
More info of a segfault:
 * pipeline: http://people.freedesktop.org/~skaboy/76.svg
 * backtrace:  http://people.freedesktop.org/~skaboy/76.bt
 * GST_DEBUG info: http://people.freedesktop.org/~skaboy/76.log.bz2

Please tell me if you need more info.

Luca

On Mon, Jan 19, 2009 at 11:10 AM, Luca Ognibene <[hidden email]> wrote:

> Hi, i would like to create a bin that works this way:
>  * a single sink pad
>  * src%d are request pad
>  * inside the bin i have the sink pad linked to a tee
>  * every time i request a pad i want my bin to create a "queue !
> identity" bin and attach it to the internal tee
>  * every time i release a pad i want my bin to stop the "queue !
> identity" bin and release the internal tee pad
>
> Everything work if the bin is in the NULL state but i have
> segfaults/hangs if the bin is in PLAYING state. I've tried to read
> part-block and other
> docs but i'm not able to fix this problem..
>
> I've implemented the bin this way:
>  * in _init the internal tee is created
>
>  * test app call bin.get_request_pad('src0')
>
>  * in _request_new_pad:
>   * get element state
>   * request a pad from internal tee
>   * block this pad if state is PLAYING
>   * add the "queue ! identity" bin
>   * create the ghost pad and set target to bin.src
>   * link tee request pad to bin.sink
>   * call sync_state_with_parent on the bin (is this ok? right now
> bin.src is not linked and the bin is in playing state)
>   * unblock tee request pad
>
>  * test app block received ghost pad
>  * add queue ! fakesink
>  * link them to ghost pad
>  * call sync_state_with_parent on queue and fakesink
>  * unblock ghost pad
>
> Problems:
>  * sometime (really often) program hangs on blocking ghost pad
>  * sometime (not very often) i have segfaults while queue is trying to
> fixate caps
>
> A strange thing is that if i change my bin to add "identity !
> identity" instead of "queue ! identity" everything works fine.. but i
> don't know why! And i need the queue there :)
>
> This is a svg graph of my pipeline after having received the ghost
> pad: http://people.freedesktop.org/~skaboy/test76-3.dot.svg
> I'm using gstreamer 0.10.21 (core).
>
> ciao
> Luca
>

------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel