Live video on the AT Protocol
79
fork

Configure Feed

Select the types of activity you want to include in your feed.

at eli/docs-url-fix 55 lines 1.2 kB view raw
1package media 2 3import ( 4 "context" 5 "io" 6 "os" 7 "testing" 8 "time" 9 10 "github.com/stretchr/testify/require" 11 "go.uber.org/goleak" 12 "golang.org/x/sync/errgroup" 13 "stream.place/streamplace/pkg/bus" 14 "stream.place/streamplace/pkg/gstinit" 15) 16 17func TestPacketize(t *testing.T) { 18 gstinit.InitGST() 19 before := getLeakCount(t) 20 defer checkGStreamerLeaks(t, before) 21 ignore := goleak.IgnoreCurrent() 22 defer goleak.VerifyNone(t, ignore) 23 24 g, _ := errgroup.WithContext(context.Background()) 25 for range streamplaceTestCount { 26 g.Go(func() error { 27 innerTestPacketize(t) 28 return nil 29 }) 30 } 31 err := g.Wait() 32 require.NoError(t, err) 33} 34 35func innerTestPacketize(t *testing.T) { 36 filename := getFixture("sample-segment.mp4") 37 inputFile, err := os.Open(filename) 38 require.NoError(t, err) 39 defer inputFile.Close() 40 41 bs, err := io.ReadAll(inputFile) 42 require.NoError(t, err) 43 44 testSeg := &bus.Seg{ 45 Data: bs, 46 Filepath: filename, 47 } 48 49 packet, err := Packetize(context.Background(), testSeg) 50 require.NoError(t, err) 51 require.NotNil(t, packet) 52 require.Equal(t, 49, len(packet.Video)) 53 require.Equal(t, 40, len(packet.Audio)) 54 require.Equal(t, time.Duration(800*time.Millisecond), packet.Duration) 55}