Files
bikinibottom/installs_on_host/go2rtc/pkg/pcm/pcm_test.go
T
2026-04-04 19:36:14 +02:00

80 lines
2.7 KiB
Go

package pcm
import (
"encoding/hex"
"fmt"
"testing"
"github.com/AlexxIT/go2rtc/pkg/core"
"github.com/stretchr/testify/require"
)
func TestTranscode(t *testing.T) {
tests := []struct {
name string
src core.Codec
dst core.Codec
source string
expect string
}{
{
name: "s16be->s16be",
src: core.Codec{Name: core.CodecPCM, ClockRate: 8000, Channels: 1},
dst: core.Codec{Name: core.CodecPCM, ClockRate: 8000, Channels: 1},
source: "FCCA00130343062808130B510D9E0F7610DA111113EA15BD16F2168215D41561",
expect: "FCCA00130343062808130B510D9E0F7610DA111113EA15BD16F2168215D41561",
},
{
name: "s16be->s16le",
src: core.Codec{Name: core.CodecPCM, ClockRate: 8000, Channels: 1},
dst: core.Codec{Name: core.CodecPCML, ClockRate: 8000, Channels: 1},
source: "FCCA00130343062808130B510D9E0F7610DA111113EA15BD16F2168215D41561",
expect: "CAFC1300430328061308510B9E0D760FDA101111EA13BD15F2168216D4156115",
},
{
name: "s16be->mulaw",
src: core.Codec{Name: core.CodecPCM, ClockRate: 8000, Channels: 1},
dst: core.Codec{Name: core.CodecPCMU, ClockRate: 8000, Channels: 1},
source: "FCCA00130343062808130B510D9E0F7610DA111113EA15BD16F2168215D41561",
expect: "52FDD1C5BEB8B3B0AEAEABA9A8A8A9AA",
},
{
name: "s16be->alaw",
src: core.Codec{Name: core.CodecPCM, ClockRate: 8000, Channels: 1},
dst: core.Codec{Name: core.CodecPCMA, ClockRate: 8000, Channels: 1},
source: "FCCA00130343062808130B510D9E0F7610DA111113EA15BD16F2168215D41561",
expect: "7CD4FFED95939E9B8584868083838080",
},
{
name: "2ch->1ch",
src: core.Codec{Name: core.CodecPCM, ClockRate: 8000, Channels: 2},
dst: core.Codec{Name: core.CodecPCM, ClockRate: 8000, Channels: 1},
source: "FCCAFCCA001300130343034306280628081308130B510B510D9E0D9E0F760F76",
expect: "FCCA00130343062808130B510D9E0F76",
},
{
name: "1ch->2ch",
src: core.Codec{Name: core.CodecPCM, ClockRate: 8000, Channels: 1},
dst: core.Codec{Name: core.CodecPCM, ClockRate: 8000, Channels: 2},
source: "FCCA00130343062808130B510D9E0F76",
expect: "FCCAFCCA001300130343034306280628081308130B510B510D9E0D9E0F760F76",
},
{
name: "16khz->8khz",
src: core.Codec{Name: core.CodecPCM, ClockRate: 16000, Channels: 1},
dst: core.Codec{Name: core.CodecPCM, ClockRate: 8000, Channels: 1},
source: "FCCAFCCA001300130343034306280628081308130B510B510D9E0D9E0F760F76",
expect: "FCCA00130343062808130B510D9E0F76",
},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
f := Transcode(&test.dst, &test.src)
b, _ := hex.DecodeString(test.source)
b = f(b)
s := fmt.Sprintf("%X", b)
require.Equal(t, test.expect, s)
})
}
}