mirror of
https://github.com/aler9/gortsplib
synced 2025-10-05 15:16:51 +08:00
add Track.String() method
This commit is contained in:
3
track.go
3
track.go
@@ -12,6 +12,9 @@ import (
|
|||||||
|
|
||||||
// Track is a RTSP track.
|
// Track is a RTSP track.
|
||||||
type Track interface {
|
type Track interface {
|
||||||
|
// String returns the track codec.
|
||||||
|
String() string
|
||||||
|
|
||||||
// ClockRate returns the track clock rate.
|
// ClockRate returns the track clock rate.
|
||||||
ClockRate() int
|
ClockRate() int
|
||||||
|
|
||||||
|
@@ -31,6 +31,11 @@ func newTrackG722FromMediaDescription(
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// String returns the track codec.
|
||||||
|
func (t *TrackG722) String() string {
|
||||||
|
return "G722"
|
||||||
|
}
|
||||||
|
|
||||||
// ClockRate returns the track clock rate.
|
// ClockRate returns the track clock rate.
|
||||||
func (t *TrackG722) ClockRate() int {
|
func (t *TrackG722) ClockRate() int {
|
||||||
return 8000
|
return 8000
|
||||||
|
@@ -9,6 +9,7 @@ import (
|
|||||||
|
|
||||||
func TestTrackG722Attributes(t *testing.T) {
|
func TestTrackG722Attributes(t *testing.T) {
|
||||||
track := &TrackG722{}
|
track := &TrackG722{}
|
||||||
|
require.Equal(t, "G722", track.String())
|
||||||
require.Equal(t, 8000, track.ClockRate())
|
require.Equal(t, 8000, track.ClockRate())
|
||||||
require.Equal(t, "", track.GetControl())
|
require.Equal(t, "", track.GetControl())
|
||||||
}
|
}
|
||||||
|
@@ -119,6 +119,11 @@ func (t *TrackGeneric) Init() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// String returns the track codec.
|
||||||
|
func (t *TrackGeneric) String() string {
|
||||||
|
return "Generic"
|
||||||
|
}
|
||||||
|
|
||||||
// ClockRate returns the track clock rate.
|
// ClockRate returns the track clock rate.
|
||||||
func (t *TrackGeneric) ClockRate() int {
|
func (t *TrackGeneric) ClockRate() int {
|
||||||
return t.clockRate
|
return t.clockRate
|
||||||
|
@@ -7,6 +7,29 @@ import (
|
|||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func TestTrackGenericAttributes(t *testing.T) {
|
||||||
|
track := &TrackGeneric{
|
||||||
|
Media: "video",
|
||||||
|
Payloads: []TrackGenericPayload{
|
||||||
|
{
|
||||||
|
Type: 98,
|
||||||
|
RTPMap: "H265/90000",
|
||||||
|
FMTP: "profile-id=1; sprop-vps=QAEMAf//AWAAAAMAAAMAAAMAAAMAlqwJ; " +
|
||||||
|
"sprop-sps=QgEBAWAAAAMAAAMAAAMAAAMAlqADwIAQ5Za5JMmuWcBSSgAAB9AAAHUwgkA=; sprop-pps=RAHgdrAwxmQ=",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Type: 100,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
err := track.Init()
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
require.Equal(t, "Generic", track.String())
|
||||||
|
require.Equal(t, 90000, track.ClockRate())
|
||||||
|
require.Equal(t, "", track.GetControl())
|
||||||
|
}
|
||||||
|
|
||||||
func TestTrackGenericClone(t *testing.T) {
|
func TestTrackGenericClone(t *testing.T) {
|
||||||
track := &TrackGeneric{
|
track := &TrackGeneric{
|
||||||
Media: "video",
|
Media: "video",
|
||||||
|
@@ -97,6 +97,11 @@ func (t *TrackH264) fillParamsFromMediaDescription(md *psdp.MediaDescription) er
|
|||||||
return fmt.Errorf("sprop-parameter-sets is missing (%v)", v)
|
return fmt.Errorf("sprop-parameter-sets is missing (%v)", v)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// String returns the track codec.
|
||||||
|
func (t *TrackH264) String() string {
|
||||||
|
return "H264"
|
||||||
|
}
|
||||||
|
|
||||||
// ClockRate returns the track clock rate.
|
// ClockRate returns the track clock rate.
|
||||||
func (t *TrackH264) ClockRate() int {
|
func (t *TrackH264) ClockRate() int {
|
||||||
return 90000
|
return 90000
|
||||||
|
@@ -14,6 +14,7 @@ func TestTrackH264Attributes(t *testing.T) {
|
|||||||
PPS: []byte{0x03, 0x04},
|
PPS: []byte{0x03, 0x04},
|
||||||
PacketizationMode: 1,
|
PacketizationMode: 1,
|
||||||
}
|
}
|
||||||
|
require.Equal(t, "H264", track.String())
|
||||||
require.Equal(t, 90000, track.ClockRate())
|
require.Equal(t, 90000, track.ClockRate())
|
||||||
require.Equal(t, "", track.GetControl())
|
require.Equal(t, "", track.GetControl())
|
||||||
require.Equal(t, []byte{0x01, 0x02}, track.SafeSPS())
|
require.Equal(t, []byte{0x01, 0x02}, track.SafeSPS())
|
||||||
|
@@ -98,6 +98,11 @@ func (t *TrackH265) fillParamsFromMediaDescription(md *psdp.MediaDescription) er
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// String returns the track codec.
|
||||||
|
func (t *TrackH265) String() string {
|
||||||
|
return "H265"
|
||||||
|
}
|
||||||
|
|
||||||
// ClockRate returns the track clock rate.
|
// ClockRate returns the track clock rate.
|
||||||
func (t *TrackH265) ClockRate() int {
|
func (t *TrackH265) ClockRate() int {
|
||||||
return 90000
|
return 90000
|
||||||
|
@@ -14,6 +14,7 @@ func TestTrackH265Attributes(t *testing.T) {
|
|||||||
SPS: []byte{0x03, 0x04},
|
SPS: []byte{0x03, 0x04},
|
||||||
PPS: []byte{0x05, 0x06},
|
PPS: []byte{0x05, 0x06},
|
||||||
}
|
}
|
||||||
|
require.Equal(t, "H265", track.String())
|
||||||
require.Equal(t, 90000, track.ClockRate())
|
require.Equal(t, 90000, track.ClockRate())
|
||||||
require.Equal(t, "", track.GetControl())
|
require.Equal(t, "", track.GetControl())
|
||||||
require.Equal(t, []byte{0x01, 0x02}, track.SafeVPS())
|
require.Equal(t, []byte{0x01, 0x02}, track.SafeVPS())
|
||||||
|
@@ -20,6 +20,11 @@ func newTrackJPEGFromMediaDescription(
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// String returns the track codec.
|
||||||
|
func (t *TrackJPEG) String() string {
|
||||||
|
return "JPEG"
|
||||||
|
}
|
||||||
|
|
||||||
// ClockRate returns the track clock rate.
|
// ClockRate returns the track clock rate.
|
||||||
func (t *TrackJPEG) ClockRate() int {
|
func (t *TrackJPEG) ClockRate() int {
|
||||||
return 90000
|
return 90000
|
||||||
|
@@ -9,6 +9,7 @@ import (
|
|||||||
|
|
||||||
func TestTrackJPEGAttributes(t *testing.T) {
|
func TestTrackJPEGAttributes(t *testing.T) {
|
||||||
track := &TrackJPEG{}
|
track := &TrackJPEG{}
|
||||||
|
require.Equal(t, "JPEG", track.String())
|
||||||
require.Equal(t, 90000, track.ClockRate())
|
require.Equal(t, 90000, track.ClockRate())
|
||||||
require.Equal(t, "", track.GetControl())
|
require.Equal(t, "", track.GetControl())
|
||||||
}
|
}
|
||||||
|
@@ -65,6 +65,11 @@ func newTrackLPCMFromMediaDescription(
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// String returns the track codec.
|
||||||
|
func (t *TrackLPCM) String() string {
|
||||||
|
return "LPCM"
|
||||||
|
}
|
||||||
|
|
||||||
// ClockRate returns the track clock rate.
|
// ClockRate returns the track clock rate.
|
||||||
func (t *TrackLPCM) ClockRate() int {
|
func (t *TrackLPCM) ClockRate() int {
|
||||||
return t.SampleRate
|
return t.SampleRate
|
||||||
|
@@ -14,6 +14,7 @@ func TestTrackLPCMAttributes(t *testing.T) {
|
|||||||
SampleRate: 44100,
|
SampleRate: 44100,
|
||||||
ChannelCount: 2,
|
ChannelCount: 2,
|
||||||
}
|
}
|
||||||
|
require.Equal(t, "LPCM", track.String())
|
||||||
require.Equal(t, 44100, track.ClockRate())
|
require.Equal(t, 44100, track.ClockRate())
|
||||||
require.Equal(t, "", track.GetControl())
|
require.Equal(t, "", track.GetControl())
|
||||||
}
|
}
|
||||||
|
@@ -20,6 +20,11 @@ func newTrackMPEG2AudioFromMediaDescription(
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// String returns the track codec.
|
||||||
|
func (t *TrackMPEG2Audio) String() string {
|
||||||
|
return "MPEG2-audio"
|
||||||
|
}
|
||||||
|
|
||||||
// ClockRate returns the track clock rate.
|
// ClockRate returns the track clock rate.
|
||||||
func (t *TrackMPEG2Audio) ClockRate() int {
|
func (t *TrackMPEG2Audio) ClockRate() int {
|
||||||
return 90000
|
return 90000
|
||||||
|
@@ -9,6 +9,7 @@ import (
|
|||||||
|
|
||||||
func TestTrackMPEG2AudioAttributes(t *testing.T) {
|
func TestTrackMPEG2AudioAttributes(t *testing.T) {
|
||||||
track := &TrackMPEG2Audio{}
|
track := &TrackMPEG2Audio{}
|
||||||
|
require.Equal(t, "MPEG2-audio", track.String())
|
||||||
require.Equal(t, 90000, track.ClockRate())
|
require.Equal(t, 90000, track.ClockRate())
|
||||||
require.Equal(t, "", track.GetControl())
|
require.Equal(t, "", track.GetControl())
|
||||||
}
|
}
|
||||||
|
@@ -20,6 +20,11 @@ func newTrackMPEG2VideoFromMediaDescription(
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// String returns the track codec.
|
||||||
|
func (t *TrackMPEG2Video) String() string {
|
||||||
|
return "MPEG2-video"
|
||||||
|
}
|
||||||
|
|
||||||
// ClockRate returns the track clock rate.
|
// ClockRate returns the track clock rate.
|
||||||
func (t *TrackMPEG2Video) ClockRate() int {
|
func (t *TrackMPEG2Video) ClockRate() int {
|
||||||
return 90000
|
return 90000
|
||||||
|
@@ -9,6 +9,7 @@ import (
|
|||||||
|
|
||||||
func TestTrackMPEG2VideoAttributes(t *testing.T) {
|
func TestTrackMPEG2VideoAttributes(t *testing.T) {
|
||||||
track := &TrackMPEG2Video{}
|
track := &TrackMPEG2Video{}
|
||||||
|
require.Equal(t, "MPEG2-video", track.String())
|
||||||
require.Equal(t, 90000, track.ClockRate())
|
require.Equal(t, 90000, track.ClockRate())
|
||||||
require.Equal(t, "", track.GetControl())
|
require.Equal(t, "", track.GetControl())
|
||||||
}
|
}
|
||||||
|
@@ -104,6 +104,11 @@ func newTrackMPEG4AudioFromMediaDescription(
|
|||||||
return t, nil
|
return t, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// String returns the track codec.
|
||||||
|
func (t *TrackMPEG4Audio) String() string {
|
||||||
|
return "MPEG4-audio"
|
||||||
|
}
|
||||||
|
|
||||||
// ClockRate returns the track clock rate.
|
// ClockRate returns the track clock rate.
|
||||||
func (t *TrackMPEG4Audio) ClockRate() int {
|
func (t *TrackMPEG4Audio) ClockRate() int {
|
||||||
return t.Config.SampleRate
|
return t.Config.SampleRate
|
||||||
|
@@ -21,6 +21,7 @@ func TestTrackMPEG4AudioAttributes(t *testing.T) {
|
|||||||
IndexLength: 3,
|
IndexLength: 3,
|
||||||
IndexDeltaLength: 3,
|
IndexDeltaLength: 3,
|
||||||
}
|
}
|
||||||
|
require.Equal(t, "MPEG4-audio", track.String())
|
||||||
require.Equal(t, 48000, track.ClockRate())
|
require.Equal(t, 48000, track.ClockRate())
|
||||||
require.Equal(t, "", track.GetControl())
|
require.Equal(t, "", track.GetControl())
|
||||||
}
|
}
|
||||||
|
@@ -49,6 +49,11 @@ func newTrackOpusFromMediaDescription(
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// String returns the track codec.
|
||||||
|
func (t *TrackOpus) String() string {
|
||||||
|
return "Opus"
|
||||||
|
}
|
||||||
|
|
||||||
// ClockRate returns the track clock rate.
|
// ClockRate returns the track clock rate.
|
||||||
func (t *TrackOpus) ClockRate() int {
|
func (t *TrackOpus) ClockRate() int {
|
||||||
return t.SampleRate
|
return t.SampleRate
|
||||||
|
@@ -13,6 +13,7 @@ func TestTrackOpusAttributes(t *testing.T) {
|
|||||||
SampleRate: 48000,
|
SampleRate: 48000,
|
||||||
ChannelCount: 2,
|
ChannelCount: 2,
|
||||||
}
|
}
|
||||||
|
require.Equal(t, "Opus", track.String())
|
||||||
require.Equal(t, 48000, track.ClockRate())
|
require.Equal(t, 48000, track.ClockRate())
|
||||||
require.Equal(t, "", track.GetControl())
|
require.Equal(t, "", track.GetControl())
|
||||||
}
|
}
|
||||||
|
@@ -31,6 +31,11 @@ func newTrackPCMAFromMediaDescription(
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// String returns the track codec.
|
||||||
|
func (t *TrackPCMA) String() string {
|
||||||
|
return "PCMA"
|
||||||
|
}
|
||||||
|
|
||||||
// ClockRate returns the track clock rate.
|
// ClockRate returns the track clock rate.
|
||||||
func (t *TrackPCMA) ClockRate() int {
|
func (t *TrackPCMA) ClockRate() int {
|
||||||
return 8000
|
return 8000
|
||||||
|
@@ -9,6 +9,7 @@ import (
|
|||||||
|
|
||||||
func TestTrackPCMAAttributes(t *testing.T) {
|
func TestTrackPCMAAttributes(t *testing.T) {
|
||||||
track := &TrackPCMA{}
|
track := &TrackPCMA{}
|
||||||
|
require.Equal(t, "PCMA", track.String())
|
||||||
require.Equal(t, 8000, track.ClockRate())
|
require.Equal(t, 8000, track.ClockRate())
|
||||||
require.Equal(t, "", track.GetControl())
|
require.Equal(t, "", track.GetControl())
|
||||||
}
|
}
|
||||||
|
@@ -31,6 +31,11 @@ func newTrackPCMUFromMediaDescription(
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// String returns the track codec.
|
||||||
|
func (t *TrackPCMU) String() string {
|
||||||
|
return "PCMU"
|
||||||
|
}
|
||||||
|
|
||||||
// ClockRate returns the track clock rate.
|
// ClockRate returns the track clock rate.
|
||||||
func (t *TrackPCMU) ClockRate() int {
|
func (t *TrackPCMU) ClockRate() int {
|
||||||
return 8000
|
return 8000
|
||||||
|
@@ -9,6 +9,7 @@ import (
|
|||||||
|
|
||||||
func TestTrackPCMUAttributes(t *testing.T) {
|
func TestTrackPCMUAttributes(t *testing.T) {
|
||||||
track := &TrackPCMU{}
|
track := &TrackPCMU{}
|
||||||
|
require.Equal(t, "PCMU", track.String())
|
||||||
require.Equal(t, 8000, track.ClockRate())
|
require.Equal(t, 8000, track.ClockRate())
|
||||||
require.Equal(t, "", track.GetControl())
|
require.Equal(t, "", track.GetControl())
|
||||||
}
|
}
|
||||||
|
@@ -90,6 +90,11 @@ func newTrackVorbisFromMediaDescription(
|
|||||||
return t, nil
|
return t, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// String returns the track codec.
|
||||||
|
func (t *TrackVorbis) String() string {
|
||||||
|
return "Vorbis"
|
||||||
|
}
|
||||||
|
|
||||||
// ClockRate returns the track clock rate.
|
// ClockRate returns the track clock rate.
|
||||||
func (t *TrackVorbis) ClockRate() int {
|
func (t *TrackVorbis) ClockRate() int {
|
||||||
return t.SampleRate
|
return t.SampleRate
|
||||||
|
@@ -14,6 +14,7 @@ func TestTrackVorbisAttributes(t *testing.T) {
|
|||||||
ChannelCount: 2,
|
ChannelCount: 2,
|
||||||
Configuration: []byte{0x01, 0x02, 0x03, 0x04},
|
Configuration: []byte{0x01, 0x02, 0x03, 0x04},
|
||||||
}
|
}
|
||||||
|
require.Equal(t, "Vorbis", track.String())
|
||||||
require.Equal(t, 48000, track.ClockRate())
|
require.Equal(t, 48000, track.ClockRate())
|
||||||
require.Equal(t, "", track.GetControl())
|
require.Equal(t, "", track.GetControl())
|
||||||
}
|
}
|
||||||
|
@@ -80,6 +80,11 @@ func (t *TrackVP8) fillParamsFromMediaDescription(md *psdp.MediaDescription) err
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// String returns the track codec.
|
||||||
|
func (t *TrackVP8) String() string {
|
||||||
|
return "VP8"
|
||||||
|
}
|
||||||
|
|
||||||
// ClockRate returns the track clock rate.
|
// ClockRate returns the track clock rate.
|
||||||
func (t *TrackVP8) ClockRate() int {
|
func (t *TrackVP8) ClockRate() int {
|
||||||
return 90000
|
return 90000
|
||||||
|
@@ -9,6 +9,7 @@ import (
|
|||||||
|
|
||||||
func TestTrackVP8ttributes(t *testing.T) {
|
func TestTrackVP8ttributes(t *testing.T) {
|
||||||
track := &TrackVP8{}
|
track := &TrackVP8{}
|
||||||
|
require.Equal(t, "VP8", track.String())
|
||||||
require.Equal(t, 90000, track.ClockRate())
|
require.Equal(t, 90000, track.ClockRate())
|
||||||
require.Equal(t, "", track.GetControl())
|
require.Equal(t, "", track.GetControl())
|
||||||
}
|
}
|
||||||
|
@@ -89,6 +89,11 @@ func (t *TrackVP9) fillParamsFromMediaDescription(md *psdp.MediaDescription) err
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// String returns the track codec.
|
||||||
|
func (t *TrackVP9) String() string {
|
||||||
|
return "VP9"
|
||||||
|
}
|
||||||
|
|
||||||
// ClockRate returns the track clock rate.
|
// ClockRate returns the track clock rate.
|
||||||
func (t *TrackVP9) ClockRate() int {
|
func (t *TrackVP9) ClockRate() int {
|
||||||
return 90000
|
return 90000
|
||||||
|
@@ -7,8 +7,9 @@ import (
|
|||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestTrackVP9ttributes(t *testing.T) {
|
func TestTrackVP9Attributes(t *testing.T) {
|
||||||
track := &TrackVP9{}
|
track := &TrackVP9{}
|
||||||
|
require.Equal(t, "VP9", track.String())
|
||||||
require.Equal(t, 90000, track.ClockRate())
|
require.Equal(t, 90000, track.ClockRate())
|
||||||
require.Equal(t, "", track.GetControl())
|
require.Equal(t, "", track.GetControl())
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user