package rtplpcm import ( "bytes" "testing" "github.com/pion/rtp" "github.com/stretchr/testify/require" ) func uint16Ptr(v uint16) *uint16 { return &v } func uint32Ptr(v uint32) *uint32 { return &v } var cases = []struct { name string samples []byte pkts []*rtp.Packet }{ { "single", []byte{0x01, 0x02, 0x03, 0x04, 0x05, 0x06}, []*rtp.Packet{ { Header: rtp.Header{ Version: 2, Marker: false, PayloadType: 96, SequenceNumber: 17645, SSRC: 0x9dbb7812, }, Payload: []byte{0x01, 0x02, 0x03, 0x04, 0x05, 0x06}, }, }, }, { "splitted", bytes.Repeat([]byte{0x41, 0x42, 0x43}, 400), []*rtp.Packet{ { Header: rtp.Header{ Version: 2, Marker: false, PayloadType: 96, SequenceNumber: 17645, SSRC: 0x9dbb7812, }, Payload: bytes.Repeat([]byte{0x41, 0x42, 0x43}, 332), }, { Header: rtp.Header{ Version: 2, Marker: false, PayloadType: 96, SequenceNumber: 17646, Timestamp: 166, SSRC: 0x9dbb7812, }, Payload: bytes.Repeat([]byte{0x41, 0x42, 0x43}, 68), }, }, }, } func TestEncode(t *testing.T) { for _, ca := range cases { t.Run(ca.name, func(t *testing.T) { e := &Encoder{ PayloadType: 96, SSRC: uint32Ptr(0x9dbb7812), InitialSequenceNumber: uint16Ptr(0x44ed), BitDepth: 24, ChannelCount: 2, PayloadMaxSize: 1000, } err := e.Init() require.NoError(t, err) pkts, err := e.Encode(ca.samples) require.NoError(t, err) require.Equal(t, ca.pkts, pkts) }) } } func TestEncodeRandomInitialState(t *testing.T) { e := &Encoder{ PayloadType: 96, BitDepth: 24, ChannelCount: 2, } err := e.Init() require.NoError(t, err) require.NotEqual(t, nil, e.SSRC) require.NotEqual(t, nil, e.InitialSequenceNumber) }