Re: audiomixer usage

Michael Gruner via gstreamer-devel <[email protected]> Wed, 25 Dec 2024 12:24:38 -0600
Newsgroups gmane.comp.video.gstreamer.devel
Message-ID <[email protected]>
--Apple-Mail-5ABC748E-6CB7-44CE-A075-D892605FDA87
Content-Type: text/plain;
	charset=utf-8
Content-Transfer-Encoding: quoted-printable

Hi there, happy holidays.

What you describe is a well known topology named MCU: Multipoint Control Uni=
t. There are others worth exploring, like SFU: Selective Forwarding Unit or M=
esh. I know this is not was what you asked, but I hope it eases your researc=
h.

https://medium.com/@toshvelaga/webrtc-architectures-mesh-mcu-and-sfu-12c5022=
74d7

Now to your question, the MCU approach would be to have one audiomixer per c=
lient. Each client audiomixer will mix all the other channels, except itself=
. This is easy to implement, but will load tremendously the server. It might=
 not more manageable with audio only.

The SFU approach would be not to use an audiomixer in the server at all. Eac=
h client would receive N network stream, each for every other clients. These=
 are then mixed locally by each client. This is very lightweight in the serv=
er, but consumes exponentially more network bandwidth which, again, may be m=
anageable with audio only.=20

If, for whatever reason, you need to filter out using DSP techniques, you ma=
y look into echo cancellation. Check the work by Nicholas in

https://www.collabora.com/news-and-blog/blog/2016/07/08/gstreamer-echo-cance=
ller/

Note that this is not quite the intended purpose and, personally, is not the=
 approach I would go for.

Finally, please recall that you'll likely get more answers in the gstreamer d=
iscourse:

https://discourse.gstreamer.org/

Michael
www.ridgerun.com

> On 25 Dec 2024, at 07:27, Pradeep Acharya via gstreamer-devel <gstreamer-d=
[email protected]> wrote:
>=20
> =EF=BB=BF
> Hi All,
>=20
> I'm new to developing audio conferencing solutions on server side and impl=
ementing the same using audiomixer plugin. The output of the mixer has audio=
 mixed that is received from all participants. The mixed audio has to be tra=
nsmitted to all participants.  Before transmitting mixed audio, participants=
' audio has to be filtered out from the output generated by the audio mixer a=
nd sent to that participant. Is there any plugin that checks and filters out=
 samples from the output generated by audiomixer plugin? If there is no such=
 plugin , kindly let me know other possible solutions for this.
>=20
> Thanks & Regards
>=20
>=20
>=20

--Apple-Mail-5ABC748E-6CB7-44CE-A075-D892605FDA87
Content-Type: text/html;
	charset=utf-8
Content-Transfer-Encoding: quoted-printable

<html><head><meta http-equiv=3D"content-type" content=3D"text/html; charset=3D=
utf-8"></head><body dir=3D"auto">Hi there, happy holidays.<div><br></div><di=
v>What you describe is a well known topology named MCU: Multipoint Control U=
nit. There are others worth exploring, like SFU: Selective Forwarding Unit o=
r Mesh. I know this is not was what you asked, but I hope it eases your rese=
arch.</div><div><br></div><div><div style=3D"display: block;" class=3D""><a h=
ref=3D"https://medium.com/@toshvelaga/webrtc-architectures-mesh-mcu-and-sfu-=
12c502274d7">https://medium.com/@toshvelaga/webrtc-architectures-mesh-mcu-an=
d-sfu-12c502274d7</a><br></div></div><div><br></div><div>Now to your questio=
n, the MCU approach would be to have one audiomixer per client. Each client a=
udiomixer will mix all the other channels, except itself. This is easy to im=
plement, but will load tremendously the server. It might not more manageable=
 with audio only.</div><div><br></div><div>The SFU approach would be not to u=
se an audiomixer in the server at all. Each client would receive N network s=
tream, each for every other clients. These are then mixed locally by each cl=
ient. This is very lightweight in the server, but consumes exponentially mor=
e network bandwidth which, again, may be manageable with audio only.&nbsp;</=
div><div><br></div><div>If, for whatever reason, you need to filter out usin=
g DSP techniques, you may look into echo cancellation. Check the work by Nic=
holas in</div><div><br></div><div><a href=3D"https://www.collabora.com/news-=
and-blog/blog/2016/07/08/gstreamer-echo-canceller/">https://www.collabora.co=
m/news-and-blog/blog/2016/07/08/gstreamer-echo-canceller/</a></div><div><div=
 style=3D"display: block;" class=3D""><br></div><div style=3D"display: block=
;" class=3D"">Note that this is not quite the intended purpose and, personal=
ly, is not the approach I would go for.</div></div><div><br></div><div>Final=
ly, please recall that you'll likely get more answers in the gstreamer disco=
urse:</div><div><br></div><div><div style=3D"display: block;" class=3D""><a h=
ref=3D"https://discourse.gstreamer.org/">https://discourse.gstreamer.org/</a=
></div></div><div><br id=3D"lineBreakAtBeginningOfSignature"><div dir=3D"ltr=
">Michael</div><div dir=3D"ltr">www.ridgerun.com</div><div dir=3D"ltr"><br><=
blockquote type=3D"cite">On 25 Dec 2024, at 07:27, Pradeep Acharya via gstre=
amer-devel &lt;[email protected]&gt; wrote:<br><br></blo=
ckquote></div><blockquote type=3D"cite"><div dir=3D"ltr">=EF=BB=BF<div dir=3D=
"ltr"><div>Hi All,</div><div><br></div><div>I'm new to developing audio conf=
erencing solutions on server side and implementing the same using audiomixer=
 plugin. The output of the mixer has audio mixed that is received from all p=
articipants. The mixed audio has to be transmitted to all participants.&nbsp=
; Before transmitting mixed audio, participants' audio has to be filtered ou=
t from the output generated by the audio mixer and sent to that participant.=
 Is there any plugin that checks and filters out samples from the output gen=
erated by audiomixer plugin? If there is no such plugin , kindly let me know=
 other possible solutions for this.</div><div><br></div><div>Thanks &amp; Re=
gards</div><div><br></div><div><br></div><div></div><div><br></div></div>
</div></blockquote></div></body></html>=

--Apple-Mail-5ABC748E-6CB7-44CE-A075-D892605FDA87--