How to remove a source of a Adder while playing?

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

How to remove a source of a Adder while playing?

Lucas Alberto
Hi People,

i'm trying to remove dinamically a audio input that is linked to a
Adder element. Does someone know how to remove a source element and
let the Adder continue mixing the other sources?

I've googled a lot to find the answer but I only found references to
removing a branch of a "Tee". I don't know how to adapt the steps used
in the "Tee case" because the Adder element is the inverse of a Tee.

Thanks in advance.
Lucas Alberto, from Brazil.
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
ej
Reply | Threaded
Open this post in threaded view
|

Re: How to remove a source of a Adder while playing?

ej
Lucas,

First try the option sync=false for the alsasink at the end of the pipeline.

If no success try to use the liveadder.

I had the same problem and I solved it with the liveadder. You can not solve it with a "static" gst-launch command, you have to write a program yourself.
The programs I made (source and linux executables) are attached as source for inspiration.

The sender sends MP3 file to a RTP network stream.
The receiver may receive multiple network streams (of multiple senders from different machines) and mixes these streams.
If new streams arrive or old streams are removed, the corresponding mixer pads are created/removed dynamically.

Be aware that liveadder seems to have a "big" memory leak, or my program is wrong (see bug report https://bugzilla.gnome.org/show_bug.cgi?id=647055)
If you make better versions of them please let me know!

E-J





Op 8 apr 2011, om 05:06 heeft Lucas Alberto het volgende geschreven:

Hi People,

i'm trying to remove dinamically a audio input that is linked to a
Adder element. Does someone know how to remove a source element and
let the Adder continue mixing the other sources?

I've googled a lot to find the answer but I only found references to
removing a branch of a "Tee". I don't know how to adapt the steps used
in the "Tee case" because the Adder element is the inverse of a Tee.

Thanks in advance.
Lucas Alberto, from Brazil.
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

myRtpReceiver.c (11K) Download Attachment
myRtpSender (16K) Download Attachment
myRtpSender.c (5K) Download Attachment
myRtpReceiver (22K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: How to remove a source of a Adder while playing?

Tim-Philipp Müller-2
In reply to this post by Lucas Alberto
On Fri, 2011-04-08 at 00:06 -0300, Lucas Alberto wrote:

Hi Lucas,

> I'm trying to remove dynamically a audio input that is linked to a
> Adder element. Does someone know how to remove a source element and
> let the Adder continue mixing the other sources?
>
> I've googled a lot to find the answer but I only found references to
> removing a branch of a "Tee". I don't know how to adapt the steps used
> in the "Tee case" because the Adder element is the inverse of a Tee.

Have you tried just unlinking the input you don't need any longer and
then releasing the now-unlinked adder pad using
gst_element_release_request_pad() ?

 Cheers
  -Tim

_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: How to remove a source of a Adder while playing?

Lucas Alberto
In reply to this post by Lucas Alberto
Hi Tim,
Thanks for the answer.
Now I can add new sources to a Adder element, it works just as simple
as you wrote.

But I got another problem when I tried to dinamically connect live
sources (rtmpsrc) to a Liveadder element. It's dropping all the new
source's buffers because they has late timestamps.
Do you or another gstreamer master knows how to timestamp the input
buffers to the running time?

I can't pause the pipeline because the audio processing has to be gapless.

Lucas Alberto


> Message: 2
> Date: Fri, 08 Apr 2011 09:28:18 +0100
> From: Tim-Philipp M?ller <[hidden email]>
> Subject: Re: How to remove a source of a Adder while playing?
> To: [hidden email]
> Message-ID: <1302251298.24722.2.camel@zingle>
> Content-Type: text/plain; charset="UTF-8"
>
> On Fri, 2011-04-08 at 00:06 -0300, Lucas Alberto wrote:
>
> Hi Lucas,
>
>> I'm trying to remove dynamically a audio input that is linked to a
>> Adder element. Does someone know how to remove a source element and
>> let the Adder continue mixing the other sources?
>>
>> I've googled a lot to find the answer but I only found references to
>> removing a branch of a "Tee". I don't know how to adapt the steps used
>> in the "Tee case" because the Adder element is the inverse of a Tee.
>
> Have you tried just unlinking the input you don't need any longer and
> then releasing the now-unlinked adder pad using
> gst_element_release_request_pad() ?
>
>  Cheers
>  -Tim
>
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Re: How to remove a source of a Adder while playing?

Lucas Alberto
In reply to this post by Lucas Alberto
Hi E-J,

I tried the liveadder and now the action of removing a source is OK.
Your code really helped me.
But, as described in my previously message, now I have trouble when
dynamically adding live sources to liveadder, it's dropping the
buffers.

Lucas

> Message: 3
> Date: Fri, 8 Apr 2011 07:04:37 +0200
> From: E-J van der Linden <[hidden email]>
> Subject: Re: How to remove a source of a Adder while playing?
> To: Discussion of the development of and with GStreamer
>        <[hidden email]>
> Message-ID: <[hidden email]>
> Content-Type: text/plain; charset="us-ascii"
>
> Lucas,
>
> First try the option sync=false for the alsasink at the end of the pipeline.
>
> If no success try to use the liveadder.
>
> I had the same problem and I solved it with the liveadder. You can not solve it with a "static" gst-launch command, you have to write a program yourself.
> The programs I made (source and linux executables) are attached as source for inspiration.
>
> The sender sends MP3 file to a RTP network stream.
> The receiver may receive multiple network streams (of multiple senders from different machines) and mixes these streams.
> If new streams arrive or old streams are removed, the corresponding mixer pads are created/removed dynamically.
>
> Be aware that liveadder seems to have a "big" memory leak, or my program is wrong (see bug report https://bugzilla.gnome.org/show_bug.cgi?id=647055)
> If you make better versions of them please let me know!
>
> E-J
>
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: How to remove a source of a Adder while playing?

toto-2
In reply to this post by Lucas Alberto
hi, lucasa,
I used adder in my application and i can remove source element
dynamically by unlink and release-request-pad method.
But, i can not add the removed element to adder again.
Do you have any idea?
Thanks a lot.

_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: How to remove a source of a Adder while playing?

Thomas Roos
In reply to this post by Lucas Alberto
hi all,
I'm facing the same problem: I wanna  have a RUNNING pipeline with
gstrtpbin and filesrc/wavparse dynamically added to an adder (going to
an alsasink)

adder: runs with "dynamically by unlink and release-request-pad
method" BUT I'm getting some added delay to the pipeline every time
I'm add and play the filesrc/wavparse AND the filesrc/wavparse is not
mixed (added) to??? (just played after each other)

liveadder: runs BUT "dropping all the new source's buffers because
they has late timestamps"

can anybody give me some help?

cheers Thomas
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: How to remove a source of a Adder while playing?

Lucas Alberto
In reply to this post by Lucas Alberto

Hi!
It add/remove inputs to/from adder while playing.


Lucas Alberto

 
------------------------------

Message: 4
Date: Fri, 29 Apr 2011 14:05:01 +0800
From: toto <[hidden email]>
Subject: Re: How to remove a source of a Adder while playing?
To: [hidden email]
Message-ID: <1304057101.5079.6.camel@toto-desktop>
Content-Type: text/plain; charset="UTF-8"

hi, lucasa,
I used adder in my application and i can remove source element
dynamically by unlink and release-request-pad method.
But, i can not add the removed element to adder again.
Do you have any idea?
Thanks a lot.


_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: How to remove a source of a Adder while playing?

Stefan Sauer
In reply to this post by toto-2
On 29.04.2011 09:05, toto wrote:
> hi, lucasa,
> I used adder in my application and i can remove source element
> dynamically by unlink and release-request-pad method.
> But, i can not add the removed element to adder again.
> Do you have any idea?
> Thanks a lot.
>
> _______________________________________________
What is failing? Do you stop the element?

Stefan
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: How to remove a source of a Adder while playing?

tanmay.ambre
In reply to this post by Thomas Roos
Hello All,
I am facing a similar problem with live adder.It is 9/10 times drops the new source buffers. I am testing it with just two rtp sources.

My sample pipeline is shown in attached diagram

Does anyone know the solution to that?

Thanks

Tanmay Ambre