Skip to content

Commit

Permalink
transmux: add test for stream and file based concat
Browse files Browse the repository at this point in the history
  • Loading branch information
emranemran committed Nov 22, 2023
1 parent c7b2d8a commit 19aa630
Showing 1 changed file with 48 additions and 0 deletions.
48 changes: 48 additions & 0 deletions video/transmux_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package video

import (
"github.com/stretchr/testify/require"
"os"
"testing"
)

func TestItConcatsStreams(t *testing.T) {
// test pre-reqs
tr := populateRenditionSegmentList()
segmentList := tr.GetSegmentList("rendition-1080p0")
concatDir, err := os.MkdirTemp(os.TempDir(), "concat_stage_")
require.NoError(t, err)
// verify file-based concatenation
totalBytesWritten, err := ConcatTS(concatDir+"test.ts", segmentList, false)
require.NoError(t, err)
require.Equal(t, int64(594644), totalBytesWritten)
// verify stream-based concatenation
totalBytesW, err := ConcatTS(concatDir+"test.ts", segmentList, true)
require.NoError(t, err)
require.Equal(t, int64(594644), totalBytesW)
}

func populateRenditionSegmentList() *TRenditionList {
segmentFiles := []string{"../test/fixtures/seg-0.ts", "../test/fixtures/seg-1.ts", "../test/fixtures/seg-2.ts"}

renditionList := &TRenditionList{
RenditionSegmentTable: make(map[string]*TSegmentList),
}
segmentList := &TSegmentList{
SegmentDataTable: make(map[int][]byte),
}

for i, filePath := range segmentFiles {
data := readSegmentData(filePath)
segmentList.AddSegmentData(i, data)
}

renditionList.AddRenditionSegment("rendition-1080p0", segmentList)

return renditionList
}

func readSegmentData(filePath string) []byte {
data, _ := os.ReadFile(filePath)
return data
}

0 comments on commit 19aa630

Please sign in to comment.