Fix resample to G711 for WebRTC
This commit is contained in:
+3
-3
@@ -7,15 +7,15 @@ import (
|
|||||||
"github.com/pion/rtp"
|
"github.com/pion/rtp"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ResampleToPCMA - convert PCMA/PCMU/PCM/PCML to PCMA with decreasing sample rate
|
// ResampleToG711 - convert PCMA/PCM/PCML to PCMA and PCMU to PCMU with decreasing sample rate
|
||||||
func ResampleToPCMA(codec *core.Codec, sampleRate uint32, handler core.HandlerFunc) core.HandlerFunc {
|
func ResampleToG711(codec *core.Codec, sampleRate uint32, handler core.HandlerFunc) core.HandlerFunc {
|
||||||
n := float32(codec.ClockRate) / float32(sampleRate)
|
n := float32(codec.ClockRate) / float32(sampleRate)
|
||||||
|
|
||||||
switch codec.Name {
|
switch codec.Name {
|
||||||
case core.CodecPCMA:
|
case core.CodecPCMA:
|
||||||
return DownsampleByte(PCMAtoPCM, PCMtoPCMA, n, handler)
|
return DownsampleByte(PCMAtoPCM, PCMtoPCMA, n, handler)
|
||||||
case core.CodecPCMU:
|
case core.CodecPCMU:
|
||||||
return DownsampleByte(PCMUtoPCM, PCMtoPCMA, n, handler)
|
return DownsampleByte(PCMUtoPCM, PCMtoPCMU, n, handler)
|
||||||
case core.CodecPCM, core.CodecPCML:
|
case core.CodecPCM, core.CodecPCML:
|
||||||
if n == 1 {
|
if n == 1 {
|
||||||
handler = ResamplePCM(PCMtoPCMA, handler)
|
handler = ResamplePCM(PCMtoPCMA, handler)
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ func (c *Conn) AddTrack(media *core.Media, codec *core.Codec, track *core.Receiv
|
|||||||
codec.Name = core.CodecPCMA
|
codec.Name = core.CodecPCMA
|
||||||
}
|
}
|
||||||
codec.ClockRate = 8000
|
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
|
// Fix audio quality https://github.com/AlexxIT/WebRTC/issues/500
|
||||||
|
|||||||
Reference in New Issue
Block a user