<div dir="ltr">This is not an easy problem to solve. Your solution assumes that there isn't any delay, so you can invert the sample fast enough. But, if you can identify the participant's input, why not simply mute that input? <br>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sun, May 5, 2013 at 3:26 AM, Althaf K Backer <span dir="ltr"><<a href="mailto:k.althaf@ais.aliftech.co.in" target="_blank">k.althaf@ais.aliftech.co.in</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Below is the 'theoretical' pipeline that would cancel of particular<br>
user's audio contribution in an audio conference mixer. Theory goes<br>
like, we invert the user's audio samples from the original and it<br>
finallyadded to the amixer output. It should cancel off. However i<br>
can't figure of why i doesn't work in the pipeline below. The idea of<br>
the mixer is that it sums of all the user's audio contribution and<br>
when streaming back to individual user, their contribution is canceled<br>
of with an 'invert' + 'addder' elements.<br>
<br>
I suspect clocking. or is it because these pipelines are separate ie<br>
not in the single pipeline ?<br>
<br>
Readable representation of pipeline<br>
<br>
gst-launch<br>
audiotestsrc name="sinewave" wave=sine ! tee name="audio_in_user1"<br>
audio_in_user1. ! queue ! audioconvert ! amixer.sink0<br>
audiotestsrc wave=ticks ! queue ! audioconvert ! amixer.sink2<br>
adder name="amixer" ! tee name="mixerout"<br>
mixerout. ! queue ! audio_out_user1.sink1<br>
audio_in_user1. ! queue ! audioinvert degree=1 ! audioconvert !<br>
audio_out_user1.sink1<br>
adder name="audio_out_user1" ! alsasink<br>
<br>
Copy paste execute representation<br>
<br>
gst-launch audiotestsrc name="sinewave" wave=sine ! tee<br>
name="audio_in_user1" audio_in_user1. ! queue ! audioconvert !<br>
amixer.sink0 audiotestsrc wave=ticks ! queue ! audioconvert !<br>
amixer.sink2 adder name="amixer" ! tee name="mixerout" mixerout. !<br>
queue ! audio_out_user1.sink1 audio_in_user1. ! queue ! audioinvert<br>
degree=1 ! audioconvert ! audio_out_user1.sink1 adder<br>
name="audio_out_user1" ! alsasink<br>
<br>
A sample pipeline that works from above theory, pipeline has only one<br>
audio source and it is cancelled in the adder.<br>
<br>
audioinvert degree=1<br>
<br>
gst-launch audiotestsrc name="sinewave" wave=sine ! tee<br>
name="audiosource" audiosource. ! queue ! audioconvert ! adder.sink0<br>
audiosource. ! queue ! audioinvert degree=1 ! audioconvert !<br>
adder.sink1 adder name="adder" ! alsasink<br>
<br>
<br>
audioinvert degree=1<br>
<br>
gst-launch audiotestsrc name="sinewave" wave=sine ! tee<br>
name="audiosource" audiosource. ! queue ! audioconvert ! adder.sink0<br>
audiosource. ! queue ! audioinvert degree=0.55 ! audioconvert !<br>
adder.sink1 adder name="adder" ! alsasink<br>
_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
</blockquote></div><br></div>