From caac121856b833018a5aadaa5ca56925b3c09d2a Mon Sep 17 00:00:00 2001 From: Mark Kremer Date: Sat, 21 Sep 2024 15:19:35 +0200 Subject: [PATCH] Make Clamp Go 1.20 compatible --- buffer.go | 4 ++-- internal/util/math.go | 12 ++++++++---- internal/util/math_test.go | 6 +++--- speaker/speaker.go | 2 +- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/buffer.go b/buffer.go index 775e947..3a26677 100644 --- a/buffer.go +++ b/buffer.go @@ -65,11 +65,11 @@ func (f Format) DecodeUnsigned(p []byte) (sample [2]float64, n int) { func (f Format) encode(signed bool, p []byte, sample [2]float64) (n int) { switch { case f.NumChannels == 1: - x := util.Clamp((sample[0]+sample[1])/2, -1, 1) + x := util.ClampFloat64((sample[0]+sample[1])/2, -1, 1) p = p[encodeFloat(signed, f.Precision, p, x):] case f.NumChannels >= 2: for c := range sample { - x := util.Clamp(sample[c], -1, 1) + x := util.ClampFloat64(sample[c], -1, 1) p = p[encodeFloat(signed, f.Precision, p, x):] } for c := len(sample); c < f.NumChannels; c++ { diff --git a/internal/util/math.go b/internal/util/math.go index e335edb..b988d02 100644 --- a/internal/util/math.go +++ b/internal/util/math.go @@ -1,7 +1,11 @@ package util -import "cmp" - -func Clamp[T cmp.Ordered](x, minV, maxV T) T { - return max(min(x, maxV), minV) +func ClampFloat64(x, minV, maxV float64) float64 { + if x <= minV { + return minV + } + if x >= maxV { + return maxV + } + return x } diff --git a/internal/util/math_test.go b/internal/util/math_test.go index aa669f3..b3255ec 100644 --- a/internal/util/math_test.go +++ b/internal/util/math_test.go @@ -7,7 +7,7 @@ import ( ) func TestClamp(t *testing.T) { - assert.Equal(t, 0, Clamp(-5, 0, 1)) - assert.Equal(t, 1, Clamp(5, 0, 1)) - assert.Equal(t, 0.5, Clamp(0.5, 0, 1)) + assert.Equal(t, 0.0, ClampFloat64(-5, 0, 1)) + assert.Equal(t, 1.0, ClampFloat64(5, 0, 1)) + assert.Equal(t, 0.5, ClampFloat64(0.5, 0, 1)) } diff --git a/speaker/speaker.go b/speaker/speaker.go index 4e81900..6246083 100644 --- a/speaker/speaker.go +++ b/speaker/speaker.go @@ -187,7 +187,7 @@ func (s *sampleReader) Read(buf []byte) (n int, err error) { for i := range s.buf[:ns] { for c := range s.buf[i] { val := s.buf[i][c] - val = util.Clamp(val, -1, 1) + val = util.ClampFloat64(val, -1, 1) valInt16 := int16(val * (1<<15 - 1)) low := byte(valInt16) high := byte(valInt16 >> 8)