From ade4c035b7900eedc69f5e81dbd8eacdfe7374a6 Mon Sep 17 00:00:00 2001 From: Alexey Khit Date: Sun, 16 Jul 2023 06:36:04 +0300 Subject: [PATCH] Fix resample to G711 for WebRTC --- pkg/pcm/pcm.go | 6 +++--- pkg/webrtc/consumer.go | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/pcm/pcm.go b/pkg/pcm/pcm.go index 2a9d26e1..920dfd1d 100644 --- a/pkg/pcm/pcm.go +++ b/pkg/pcm/pcm.go @@ -7,15 +7,15 @@ import ( "github.com/pion/rtp" ) -// ResampleToPCMA - convert PCMA/PCMU/PCM/PCML to PCMA with decreasing sample rate -func ResampleToPCMA(codec *core.Codec, sampleRate uint32, handler core.HandlerFunc) core.HandlerFunc { +// ResampleToG711 - convert PCMA/PCM/PCML to PCMA and PCMU to PCMU with decreasing sample rate +func ResampleToG711(codec *core.Codec, sampleRate uint32, handler core.HandlerFunc) core.HandlerFunc { n := float32(codec.ClockRate) / float32(sampleRate) switch codec.Name { case core.CodecPCMA: return DownsampleByte(PCMAtoPCM, PCMtoPCMA, n, handler) case core.CodecPCMU: - return DownsampleByte(PCMUtoPCM, PCMtoPCMA, n, handler) + return DownsampleByte(PCMUtoPCM, PCMtoPCMU, n, handler) case core.CodecPCM, core.CodecPCML: if n == 1 { handler = ResamplePCM(PCMtoPCMA, handler) diff --git a/pkg/webrtc/consumer.go b/pkg/webrtc/consumer.go index 405468fe..340ec30e 100644 --- a/pkg/webrtc/consumer.go +++ b/pkg/webrtc/consumer.go @@ -70,7 +70,7 @@ func (c *Conn) AddTrack(media *core.Media, codec *core.Codec, track *core.Receiv codec.Name = core.CodecPCMA } codec.ClockRate = 8000 - sender.Handler = pcm.ResampleToPCMA(track.Codec, 8000, sender.Handler) + sender.Handler = pcm.ResampleToG711(track.Codec, 8000, sender.Handler) } // Fix audio quality https://github.com/AlexxIT/WebRTC/issues/500