audiomixer implementation for audio conference , cancel user[1] contribution when streaming to user[1]

Althaf K Backer k.althaf at ais.aliftech.co.in
Sun May 5 00:26:40 PDT 2013


Below is the 'theoretical' pipeline that would cancel of particular
user's audio contribution in an audio conference mixer. Theory goes
like, we invert the user's audio samples from the original and it
finallyadded to the amixer output. It should cancel off. However i
can't figure of why i doesn't work in the pipeline below. The idea of
the mixer is that it sums of all the user's audio contribution and
when streaming back to individual user, their contribution is canceled
of with an 'invert' + 'addder' elements.

I suspect clocking. or is it because these pipelines are separate ie
not in the single pipeline ?

Readable representation of pipeline

gst-launch
audiotestsrc name="sinewave" wave=sine ! tee name="audio_in_user1"
audio_in_user1. ! queue ! audioconvert ! amixer.sink0
audiotestsrc wave=ticks ! queue ! audioconvert !  amixer.sink2
adder name="amixer" ! tee name="mixerout"
mixerout. ! queue ! audio_out_user1.sink1
audio_in_user1. ! queue ! audioinvert degree=1 ! audioconvert !
audio_out_user1.sink1
adder name="audio_out_user1" ! alsasink

Copy paste execute representation

gst-launch audiotestsrc name="sinewave" wave=sine ! tee
name="audio_in_user1"  audio_in_user1. ! queue ! audioconvert !
amixer.sink0  audiotestsrc wave=ticks ! queue ! audioconvert !
amixer.sink2  adder name="amixer" ! tee name="mixerout"  mixerout. !
queue ! audio_out_user1.sink1  audio_in_user1. ! queue ! audioinvert
degree=1 ! audioconvert ! audio_out_user1.sink1  adder
name="audio_out_user1" ! alsasink

A sample pipeline that works from above theory, pipeline has only one
audio source and it is cancelled in the adder.

audioinvert degree=1

gst-launch audiotestsrc name="sinewave" wave=sine ! tee
name="audiosource"  audiosource. ! queue ! audioconvert ! adder.sink0
audiosource. ! queue ! audioinvert degree=1 ! audioconvert !
adder.sink1   adder name="adder" ! alsasink


audioinvert degree=1

gst-launch audiotestsrc name="sinewave" wave=sine ! tee
name="audiosource"  audiosource. ! queue ! audioconvert ! adder.sink0
audiosource. ! queue ! audioinvert degree=0.55 ! audioconvert !
adder.sink1   adder name="adder" ! alsasink


More information about the gstreamer-devel mailing list