mirror of
https://github.com/bluenviron/mediamtx
synced 2025-02-16 11:36:55 +00:00
78 lines
1.7 KiB
Go
78 lines
1.7 KiB
Go
package mpegts
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/asticode/go-astits"
|
|
"github.com/bluenviron/mediacommon/pkg/formats/mpegts"
|
|
"github.com/bluenviron/mediamtx/internal/logger"
|
|
"github.com/bluenviron/mediamtx/internal/test"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestToStreamNoSupportedCodecs(t *testing.T) {
|
|
var buf bytes.Buffer
|
|
mux := astits.NewMuxer(context.Background(), &buf)
|
|
|
|
err := mux.AddElementaryStream(astits.PMTElementaryStream{
|
|
ElementaryPID: 122,
|
|
StreamType: astits.StreamTypeDTSAudio,
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
mux.SetPCRPID(122)
|
|
|
|
_, err = mux.WriteTables()
|
|
require.NoError(t, err)
|
|
|
|
r, err := mpegts.NewReader(&buf)
|
|
require.NoError(t, err)
|
|
|
|
l := test.Logger(func(logger.Level, string, ...interface{}) {
|
|
t.Error("should not happen")
|
|
})
|
|
_, err = ToStream(r, nil, l)
|
|
require.Equal(t, errNoSupportedCodecs, err)
|
|
}
|
|
|
|
func TestToStreamSkipUnsupportedTracks(t *testing.T) {
|
|
var buf bytes.Buffer
|
|
mux := astits.NewMuxer(context.Background(), &buf)
|
|
|
|
err := mux.AddElementaryStream(astits.PMTElementaryStream{
|
|
ElementaryPID: 122,
|
|
StreamType: astits.StreamTypeDTSAudio,
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
err = mux.AddElementaryStream(astits.PMTElementaryStream{
|
|
ElementaryPID: 123,
|
|
StreamType: astits.StreamTypeH264Video,
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
mux.SetPCRPID(122)
|
|
|
|
_, err = mux.WriteTables()
|
|
require.NoError(t, err)
|
|
|
|
r, err := mpegts.NewReader(&buf)
|
|
require.NoError(t, err)
|
|
|
|
n := 0
|
|
|
|
l := test.Logger(func(l logger.Level, format string, args ...interface{}) {
|
|
require.Equal(t, logger.Warn, l)
|
|
if n == 0 {
|
|
require.Equal(t, "skipping track 1 (unsupported codec)", fmt.Sprintf(format, args...))
|
|
}
|
|
n++
|
|
})
|
|
|
|
_, err = ToStream(r, nil, l)
|
|
require.NoError(t, err)
|
|
}
|