From 0c9bd7a5758d7866f130c73111d938a525e6695c Mon Sep 17 00:00:00 2001 From: aler9 <46489434+aler9@users.noreply.github.com> Date: Tue, 1 Feb 2022 19:09:56 +0100 Subject: [PATCH] fix track.clone() (https://github.com/aler9/rtsp-simple-server/issues/808) --- track_aac.go | 12 +++++++----- track_aac_test.go | 9 +++++++++ track_h264.go | 1 + track_h264_test.go | 9 +++++++++ track_opus_test.go | 9 +++++++++ 5 files changed, 35 insertions(+), 5 deletions(-) diff --git a/track_aac.go b/track_aac.go index a371ae00..3ce550f1 100644 --- a/track_aac.go +++ b/track_aac.go @@ -126,11 +126,13 @@ func (t *TrackAAC) AOTSpecificConfig() []byte { func (t *TrackAAC) clone() Track { return &TrackAAC{ - control: t.control, - payloadType: t.payloadType, - sampleRate: t.sampleRate, - channelCount: t.channelCount, - mpegConf: t.mpegConf, + control: t.control, + payloadType: t.payloadType, + typ: t.typ, + sampleRate: t.sampleRate, + channelCount: t.channelCount, + aotSpecificConfig: t.aotSpecificConfig, + mpegConf: t.mpegConf, } } diff --git a/track_aac_test.go b/track_aac_test.go index 6d97342b..7e7925ab 100644 --- a/track_aac_test.go +++ b/track_aac_test.go @@ -200,6 +200,15 @@ func TestTrackAACNewFromMediaDescriptionErrors(t *testing.T) { } } +func TestTrackAACClone(t *testing.T) { + track, err := NewTrackAAC(96, 2, 48000, 2, []byte{0x01, 0x02}) + require.NoError(t, err) + + copy := track.clone() + require.NotSame(t, track, copy) + require.Equal(t, track, copy) +} + func TestTrackAACMediaDescription(t *testing.T) { track, err := NewTrackAAC(96, 2, 48000, 2, nil) require.NoError(t, err) diff --git a/track_h264.go b/track_h264.go index 44a269da..bb51cddb 100644 --- a/track_h264.go +++ b/track_h264.go @@ -106,6 +106,7 @@ func (t *TrackH264) clone() Track { payloadType: t.payloadType, sps: t.sps, pps: t.pps, + extradata: t.extradata, } } diff --git a/track_h264_test.go b/track_h264_test.go index 8a5d1628..0057a96a 100644 --- a/track_h264_test.go +++ b/track_h264_test.go @@ -286,6 +286,15 @@ func TestTrackH264NewFromMediaDescription(t *testing.T) { } } +func TestTrackH264Clone(t *testing.T) { + track, err := NewTrackH264(96, []byte{0x01, 0x02}, []byte{0x03, 0x04}, []byte{0x05, 0x06}) + require.NoError(t, err) + + copy := track.clone() + require.NotSame(t, track, copy) + require.Equal(t, track, copy) +} + func TestTrackH264MediaDescription(t *testing.T) { track, err := NewTrackH264(96, []byte{ diff --git a/track_opus_test.go b/track_opus_test.go index f3932615..dee910d0 100644 --- a/track_opus_test.go +++ b/track_opus_test.go @@ -97,6 +97,15 @@ func TestTrackOpusNewFromMediaDescriptionErrors(t *testing.T) { } } +func TestTracOpusClone(t *testing.T) { + track, err := NewTrackOpus(96, 96000, 4) + require.NoError(t, err) + + copy := track.clone() + require.NotSame(t, track, copy) + require.Equal(t, track, copy) +} + func TestTrackOpusMediaDescription(t *testing.T) { track, err := NewTrackOpus(96, 48000, 2) require.NoError(t, err)