add Track.String() method

This commit is contained in:
aler9
2022-11-19 20:39:50 +01:00
parent a682c228b2
commit e6477ceacc
31 changed files with 116 additions and 1 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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())
} }

View File

@@ -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

View File

@@ -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",

View File

@@ -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

View File

@@ -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())

View File

@@ -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

View File

@@ -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())

View File

@@ -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

View File

@@ -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())
} }

View File

@@ -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

View File

@@ -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())
} }

View File

@@ -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

View File

@@ -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())
} }

View File

@@ -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

View File

@@ -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())
} }

View File

@@ -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

View File

@@ -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())
} }

View File

@@ -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

View File

@@ -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())
} }

View File

@@ -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

View File

@@ -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())
} }

View File

@@ -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

View File

@@ -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())
} }

View File

@@ -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

View File

@@ -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())
} }

View File

@@ -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

View File

@@ -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())
} }

View File

@@ -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

View File

@@ -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())
} }