Files

64 lines
1.5 KiB
Go

package stream_test
import (
"testing"
"github.com/bluenviron/gortsplib/v5/pkg/description"
"github.com/bluenviron/gortsplib/v5/pkg/format"
"github.com/stretchr/testify/require"
"github.com/bluenviron/mediamtx/internal/stream"
"github.com/bluenviron/mediamtx/internal/test"
"github.com/bluenviron/mediamtx/internal/unit"
)
func TestRTPEncoder(t *testing.T) {
for _, ca := range casesDecodeEncode {
t.Run(ca.name, func(t *testing.T) {
desc := &description.Session{Medias: []*description.Media{{
Formats: []format.Format{ca.format},
}}}
strm := &stream.Stream{
OrigDesc: desc,
WriteQueueSize: 512,
RTPMaxPayloadSize: 1450,
Parent: test.NilLogger,
}
err := strm.Initialize()
require.NoError(t, err)
defer strm.Close()
subStream := &stream.SubStream{
Stream: strm,
UseRTPPackets: false,
}
err = subStream.Initialize()
require.NoError(t, err)
r := &stream.Reader{}
recv := make(chan struct{})
r.OnData(desc.Medias[0], ca.format, func(u *unit.Unit) error {
for i := range min(len(u.RTPPackets), len(ca.encoded)) {
u.RTPPackets[i].Timestamp = ca.encoded[i].Timestamp
u.RTPPackets[i].SequenceNumber = ca.encoded[i].SequenceNumber
u.RTPPackets[i].SSRC = ca.encoded[i].SSRC
}
require.Equal(t, ca.encoded, u.RTPPackets)
close(recv)
return nil
})
strm.AddReader(r)
defer strm.RemoveReader(r)
subStream.WriteUnit(desc.Medias[0], ca.format, &unit.Unit{
Payload: ca.decoded,
})
<-recv
})
}
}