Live video on the AT Protocol
at eli/node-22 41 lines 1.0 kB view raw
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}