From 57d48f53e03e06e4af5c92f9bf8889af543e604b Mon Sep 17 00:00:00 2001 From: Alex X Date: Fri, 26 Jul 2024 14:15:53 +0300 Subject: [PATCH] Fix PCM audio quality for WebRTC --- pkg/webrtc/consumer.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pkg/webrtc/consumer.go b/pkg/webrtc/consumer.go index 2dcab436..fb90442c 100644 --- a/pkg/webrtc/consumer.go +++ b/pkg/webrtc/consumer.go @@ -64,6 +64,10 @@ func (c *Conn) AddTrack(media *core.Media, codec *core.Codec, track *core.Receiv } case core.CodecPCMA, core.CodecPCMU, core.CodecPCM, core.CodecPCML: + // Fix audio quality https://github.com/AlexxIT/WebRTC/issues/500 + // should be before ResampleToG711, because it will be called last + sender.Handler = pcm.RepackG711(false, sender.Handler) + if codec.ClockRate == 0 { if codec.Name == core.CodecPCM || codec.Name == core.CodecPCML { codec.Name = core.CodecPCMA @@ -71,9 +75,6 @@ func (c *Conn) AddTrack(media *core.Media, codec *core.Codec, track *core.Receiv codec.ClockRate = 8000 sender.Handler = pcm.ResampleToG711(track.Codec, 8000, sender.Handler) } - - // Fix audio quality https://github.com/AlexxIT/WebRTC/issues/500 - sender.Handler = pcm.RepackG711(false, sender.Handler) } // TODO: rewrite this dirty logic