diff --git a/track.go b/track.go index 96c87e79..393789f5 100644 --- a/track.go +++ b/track.go @@ -12,6 +12,9 @@ import ( // Track is a RTSP track. type Track interface { + // String returns the track codec. + String() string + // ClockRate returns the track clock rate. ClockRate() int diff --git a/track_g722.go b/track_g722.go index 95800f45..f4cb61dc 100644 --- a/track_g722.go +++ b/track_g722.go @@ -31,6 +31,11 @@ func newTrackG722FromMediaDescription( }, nil } +// String returns the track codec. +func (t *TrackG722) String() string { + return "G722" +} + // ClockRate returns the track clock rate. func (t *TrackG722) ClockRate() int { return 8000 diff --git a/track_g722_test.go b/track_g722_test.go index 51e56327..cd2bcfd0 100644 --- a/track_g722_test.go +++ b/track_g722_test.go @@ -9,6 +9,7 @@ import ( func TestTrackG722Attributes(t *testing.T) { track := &TrackG722{} + require.Equal(t, "G722", track.String()) require.Equal(t, 8000, track.ClockRate()) require.Equal(t, "", track.GetControl()) } diff --git a/track_generic.go b/track_generic.go index e8b47016..4bb4c840 100644 --- a/track_generic.go +++ b/track_generic.go @@ -119,6 +119,11 @@ func (t *TrackGeneric) Init() error { return nil } +// String returns the track codec. +func (t *TrackGeneric) String() string { + return "Generic" +} + // ClockRate returns the track clock rate. func (t *TrackGeneric) ClockRate() int { return t.clockRate diff --git a/track_generic_test.go b/track_generic_test.go index dde50ade..05815484 100644 --- a/track_generic_test.go +++ b/track_generic_test.go @@ -7,6 +7,29 @@ import ( "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) { track := &TrackGeneric{ Media: "video", diff --git a/track_h264.go b/track_h264.go index 6c23bd4d..c3d3bf8d 100644 --- a/track_h264.go +++ b/track_h264.go @@ -97,6 +97,11 @@ func (t *TrackH264) fillParamsFromMediaDescription(md *psdp.MediaDescription) er 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. func (t *TrackH264) ClockRate() int { return 90000 diff --git a/track_h264_test.go b/track_h264_test.go index 5d0f48e2..595480f8 100644 --- a/track_h264_test.go +++ b/track_h264_test.go @@ -14,6 +14,7 @@ func TestTrackH264Attributes(t *testing.T) { PPS: []byte{0x03, 0x04}, PacketizationMode: 1, } + require.Equal(t, "H264", track.String()) require.Equal(t, 90000, track.ClockRate()) require.Equal(t, "", track.GetControl()) require.Equal(t, []byte{0x01, 0x02}, track.SafeSPS()) diff --git a/track_h265.go b/track_h265.go index b235c093..8afbdd48 100644 --- a/track_h265.go +++ b/track_h265.go @@ -98,6 +98,11 @@ func (t *TrackH265) fillParamsFromMediaDescription(md *psdp.MediaDescription) er return nil } +// String returns the track codec. +func (t *TrackH265) String() string { + return "H265" +} + // ClockRate returns the track clock rate. func (t *TrackH265) ClockRate() int { return 90000 diff --git a/track_h265_test.go b/track_h265_test.go index bfc32daa..fda021a2 100644 --- a/track_h265_test.go +++ b/track_h265_test.go @@ -14,6 +14,7 @@ func TestTrackH265Attributes(t *testing.T) { SPS: []byte{0x03, 0x04}, PPS: []byte{0x05, 0x06}, } + require.Equal(t, "H265", track.String()) require.Equal(t, 90000, track.ClockRate()) require.Equal(t, "", track.GetControl()) require.Equal(t, []byte{0x01, 0x02}, track.SafeVPS()) diff --git a/track_jpeg.go b/track_jpeg.go index c5b3a943..f9b72bf9 100644 --- a/track_jpeg.go +++ b/track_jpeg.go @@ -20,6 +20,11 @@ func newTrackJPEGFromMediaDescription( }, nil } +// String returns the track codec. +func (t *TrackJPEG) String() string { + return "JPEG" +} + // ClockRate returns the track clock rate. func (t *TrackJPEG) ClockRate() int { return 90000 diff --git a/track_jpeg_test.go b/track_jpeg_test.go index 3e001bd3..ba9257d1 100644 --- a/track_jpeg_test.go +++ b/track_jpeg_test.go @@ -9,6 +9,7 @@ import ( func TestTrackJPEGAttributes(t *testing.T) { track := &TrackJPEG{} + require.Equal(t, "JPEG", track.String()) require.Equal(t, 90000, track.ClockRate()) require.Equal(t, "", track.GetControl()) } diff --git a/track_lpcm.go b/track_lpcm.go index d32f2ab7..f75732f8 100644 --- a/track_lpcm.go +++ b/track_lpcm.go @@ -65,6 +65,11 @@ func newTrackLPCMFromMediaDescription( }, nil } +// String returns the track codec. +func (t *TrackLPCM) String() string { + return "LPCM" +} + // ClockRate returns the track clock rate. func (t *TrackLPCM) ClockRate() int { return t.SampleRate diff --git a/track_lpcm_test.go b/track_lpcm_test.go index 51cb20ca..097d4928 100644 --- a/track_lpcm_test.go +++ b/track_lpcm_test.go @@ -14,6 +14,7 @@ func TestTrackLPCMAttributes(t *testing.T) { SampleRate: 44100, ChannelCount: 2, } + require.Equal(t, "LPCM", track.String()) require.Equal(t, 44100, track.ClockRate()) require.Equal(t, "", track.GetControl()) } diff --git a/track_mpeg2audio.go b/track_mpeg2audio.go index d552fef8..62394297 100644 --- a/track_mpeg2audio.go +++ b/track_mpeg2audio.go @@ -20,6 +20,11 @@ func newTrackMPEG2AudioFromMediaDescription( }, nil } +// String returns the track codec. +func (t *TrackMPEG2Audio) String() string { + return "MPEG2-audio" +} + // ClockRate returns the track clock rate. func (t *TrackMPEG2Audio) ClockRate() int { return 90000 diff --git a/track_mpeg2audio_test.go b/track_mpeg2audio_test.go index bf9c4a91..29bf35bb 100644 --- a/track_mpeg2audio_test.go +++ b/track_mpeg2audio_test.go @@ -9,6 +9,7 @@ import ( func TestTrackMPEG2AudioAttributes(t *testing.T) { track := &TrackMPEG2Audio{} + require.Equal(t, "MPEG2-audio", track.String()) require.Equal(t, 90000, track.ClockRate()) require.Equal(t, "", track.GetControl()) } diff --git a/track_mpeg2video.go b/track_mpeg2video.go index d87243de..e627e7bd 100644 --- a/track_mpeg2video.go +++ b/track_mpeg2video.go @@ -20,6 +20,11 @@ func newTrackMPEG2VideoFromMediaDescription( }, nil } +// String returns the track codec. +func (t *TrackMPEG2Video) String() string { + return "MPEG2-video" +} + // ClockRate returns the track clock rate. func (t *TrackMPEG2Video) ClockRate() int { return 90000 diff --git a/track_mpeg2video_test.go b/track_mpeg2video_test.go index 608bf9c4..39acf896 100644 --- a/track_mpeg2video_test.go +++ b/track_mpeg2video_test.go @@ -9,6 +9,7 @@ import ( func TestTrackMPEG2VideoAttributes(t *testing.T) { track := &TrackMPEG2Video{} + require.Equal(t, "MPEG2-video", track.String()) require.Equal(t, 90000, track.ClockRate()) require.Equal(t, "", track.GetControl()) } diff --git a/track_mpeg4audio.go b/track_mpeg4audio.go index 47577449..e4a45e54 100644 --- a/track_mpeg4audio.go +++ b/track_mpeg4audio.go @@ -104,6 +104,11 @@ func newTrackMPEG4AudioFromMediaDescription( return t, nil } +// String returns the track codec. +func (t *TrackMPEG4Audio) String() string { + return "MPEG4-audio" +} + // ClockRate returns the track clock rate. func (t *TrackMPEG4Audio) ClockRate() int { return t.Config.SampleRate diff --git a/track_mpeg4audio_test.go b/track_mpeg4audio_test.go index bc7bf754..a30b8ea4 100644 --- a/track_mpeg4audio_test.go +++ b/track_mpeg4audio_test.go @@ -21,6 +21,7 @@ func TestTrackMPEG4AudioAttributes(t *testing.T) { IndexLength: 3, IndexDeltaLength: 3, } + require.Equal(t, "MPEG4-audio", track.String()) require.Equal(t, 48000, track.ClockRate()) require.Equal(t, "", track.GetControl()) } diff --git a/track_opus.go b/track_opus.go index 082d8c2b..250cdbb2 100644 --- a/track_opus.go +++ b/track_opus.go @@ -49,6 +49,11 @@ func newTrackOpusFromMediaDescription( }, nil } +// String returns the track codec. +func (t *TrackOpus) String() string { + return "Opus" +} + // ClockRate returns the track clock rate. func (t *TrackOpus) ClockRate() int { return t.SampleRate diff --git a/track_opus_test.go b/track_opus_test.go index ee30eb56..00dc4867 100644 --- a/track_opus_test.go +++ b/track_opus_test.go @@ -13,6 +13,7 @@ func TestTrackOpusAttributes(t *testing.T) { SampleRate: 48000, ChannelCount: 2, } + require.Equal(t, "Opus", track.String()) require.Equal(t, 48000, track.ClockRate()) require.Equal(t, "", track.GetControl()) } diff --git a/track_pcma.go b/track_pcma.go index c520795f..38f5dc0b 100644 --- a/track_pcma.go +++ b/track_pcma.go @@ -31,6 +31,11 @@ func newTrackPCMAFromMediaDescription( }, nil } +// String returns the track codec. +func (t *TrackPCMA) String() string { + return "PCMA" +} + // ClockRate returns the track clock rate. func (t *TrackPCMA) ClockRate() int { return 8000 diff --git a/track_pcma_test.go b/track_pcma_test.go index b5b75c96..967cfa64 100644 --- a/track_pcma_test.go +++ b/track_pcma_test.go @@ -9,6 +9,7 @@ import ( func TestTrackPCMAAttributes(t *testing.T) { track := &TrackPCMA{} + require.Equal(t, "PCMA", track.String()) require.Equal(t, 8000, track.ClockRate()) require.Equal(t, "", track.GetControl()) } diff --git a/track_pcmu.go b/track_pcmu.go index beb8e1e1..c48b4a43 100644 --- a/track_pcmu.go +++ b/track_pcmu.go @@ -31,6 +31,11 @@ func newTrackPCMUFromMediaDescription( }, nil } +// String returns the track codec. +func (t *TrackPCMU) String() string { + return "PCMU" +} + // ClockRate returns the track clock rate. func (t *TrackPCMU) ClockRate() int { return 8000 diff --git a/track_pcmu_test.go b/track_pcmu_test.go index 2bf55d57..03f5ca8d 100644 --- a/track_pcmu_test.go +++ b/track_pcmu_test.go @@ -9,6 +9,7 @@ import ( func TestTrackPCMUAttributes(t *testing.T) { track := &TrackPCMU{} + require.Equal(t, "PCMU", track.String()) require.Equal(t, 8000, track.ClockRate()) require.Equal(t, "", track.GetControl()) } diff --git a/track_vorbis.go b/track_vorbis.go index 59256877..b494b37d 100644 --- a/track_vorbis.go +++ b/track_vorbis.go @@ -90,6 +90,11 @@ func newTrackVorbisFromMediaDescription( return t, nil } +// String returns the track codec. +func (t *TrackVorbis) String() string { + return "Vorbis" +} + // ClockRate returns the track clock rate. func (t *TrackVorbis) ClockRate() int { return t.SampleRate diff --git a/track_vorbis_test.go b/track_vorbis_test.go index 02a32118..c3813eee 100644 --- a/track_vorbis_test.go +++ b/track_vorbis_test.go @@ -14,6 +14,7 @@ func TestTrackVorbisAttributes(t *testing.T) { ChannelCount: 2, Configuration: []byte{0x01, 0x02, 0x03, 0x04}, } + require.Equal(t, "Vorbis", track.String()) require.Equal(t, 48000, track.ClockRate()) require.Equal(t, "", track.GetControl()) } diff --git a/track_vp8.go b/track_vp8.go index 07e687cd..48bcc731 100644 --- a/track_vp8.go +++ b/track_vp8.go @@ -80,6 +80,11 @@ func (t *TrackVP8) fillParamsFromMediaDescription(md *psdp.MediaDescription) err return nil } +// String returns the track codec. +func (t *TrackVP8) String() string { + return "VP8" +} + // ClockRate returns the track clock rate. func (t *TrackVP8) ClockRate() int { return 90000 diff --git a/track_vp8_test.go b/track_vp8_test.go index 45b62553..4ff2c66c 100644 --- a/track_vp8_test.go +++ b/track_vp8_test.go @@ -9,6 +9,7 @@ import ( func TestTrackVP8ttributes(t *testing.T) { track := &TrackVP8{} + require.Equal(t, "VP8", track.String()) require.Equal(t, 90000, track.ClockRate()) require.Equal(t, "", track.GetControl()) } diff --git a/track_vp9.go b/track_vp9.go index e528f9cd..afc08f9b 100644 --- a/track_vp9.go +++ b/track_vp9.go @@ -89,6 +89,11 @@ func (t *TrackVP9) fillParamsFromMediaDescription(md *psdp.MediaDescription) err return nil } +// String returns the track codec. +func (t *TrackVP9) String() string { + return "VP9" +} + // ClockRate returns the track clock rate. func (t *TrackVP9) ClockRate() int { return 90000 diff --git a/track_vp9_test.go b/track_vp9_test.go index 94adf530..5fdd1a3b 100644 --- a/track_vp9_test.go +++ b/track_vp9_test.go @@ -7,8 +7,9 @@ import ( "github.com/stretchr/testify/require" ) -func TestTrackVP9ttributes(t *testing.T) { +func TestTrackVP9Attributes(t *testing.T) { track := &TrackVP9{} + require.Equal(t, "VP9", track.String()) require.Equal(t, 90000, track.ClockRate()) require.Equal(t, "", track.GetControl()) }