Live video on the AT Protocol
1package media
2
3import (
4 "context"
5 "fmt"
6 "io"
7 "os"
8 "testing"
9
10 "github.com/stretchr/testify/require"
11 "go.uber.org/goleak"
12 "stream.place/streamplace/pkg/gstinit"
13 "stream.place/streamplace/pkg/log"
14)
15
16func TestMediaDataParser(t *testing.T) {
17 gstinit.InitGST()
18 before := getLeakCount(t)
19 // defer checkGStreamerLeaks(t, before+1)
20 defer func() {
21 after := getLeakCount(t)
22 if after > before {
23 fmt.Printf("detected %d leaks", after-before)
24 }
25 }()
26 ignore := goleak.IgnoreCurrent()
27 defer goleak.VerifyNone(t, ignore)
28
29 // Open input file
30 inputFile, err := os.Open(getFixture("sample-segment.mp4"))
31 require.NoError(t, err)
32 defer inputFile.Close()
33 bs, err := io.ReadAll(inputFile)
34 require.NoError(t, err)
35
36 ctx := log.WithDebugValue(context.Background(), map[string]map[string]int{"GStreamerFunc": {"ParseSegmentMediaData": 9}})
37 mediaData, err := ParseSegmentMediaData(ctx, bs)
38 require.NoError(t, err)
39 require.NotNil(t, mediaData)
40 require.Greater(t, mediaData.Duration, int64(0), "Video duration should not be empty")
41}