Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: pion/webrtc
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v3.0.9
Choose a base ref
...
head repository: pion/webrtc
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v3.0.10
Choose a head ref
  • 4 commits
  • 20 files changed
  • 4 contributors

Commits on Feb 16, 2021

  1. Fix register the same codec

    Otherwise addTransceiverSDP will add duplicate codec sdp
    adwpc authored and Sean-Der committed Feb 16, 2021

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    Copy the full SHA
    7069c5d View commit details
  2. Use a pool in Write and WriteRTP

    This avoids one allocation for every write.
    jech authored and Sean-Der committed Feb 16, 2021
    Copy the full SHA
    026ffcd View commit details
  3. Use closePairNow in tests

    Instead of explicitly closing each PeerConnection use helper.
    No change in test behavior, just makes code more consistent.
    Sean-Der committed Feb 16, 2021
    Copy the full SHA
    9c7b365 View commit details
  4. Update module pion/dtls/v2 to v2.0.6

    Generated by renovateBot
    renovate-bot authored and Sean-Der committed Feb 16, 2021
    Copy the full SHA
    19537f2 View commit details
3 changes: 1 addition & 2 deletions datachannel_go_test.go
Original file line number Diff line number Diff line change
@@ -575,6 +575,5 @@ func TestDataChannel_NonStandardSessionDescription(t *testing.T) {
assert.NoError(t, offerPC.SetRemoteDescription(*answerPC.LocalDescription()))

<-onDataChannelCalled
assert.NoError(t, offerPC.Close())
assert.NoError(t, answerPC.Close())
closePairNow(t, offerPC, answerPC)
}
6 changes: 2 additions & 4 deletions datachannel_test.go
Original file line number Diff line number Diff line change
@@ -284,8 +284,7 @@ func TestDataChannel_Close(t *testing.T) {
dc, err := offerPC.CreateDataChannel(expectedLabel, nil)
assert.NoError(t, err)

assert.NoError(t, offerPC.Close())
assert.NoError(t, answerPC.Close())
closePairNow(t, offerPC, answerPC)
assert.NoError(t, dc.Close())
})

@@ -297,8 +296,7 @@ func TestDataChannel_Close(t *testing.T) {
assert.NoError(t, err)

assert.NoError(t, dc.Close())
assert.NoError(t, offerPC.Close())
assert.NoError(t, answerPC.Close())
closePairNow(t, offerPC, answerPC)
})
}

3 changes: 1 addition & 2 deletions dtlstransport_test.go
Original file line number Diff line number Diff line change
@@ -102,8 +102,7 @@ func TestPeerConnection_DTLSRoleSettingEngine(t *testing.T) {

connectionComplete := untilConnectionState(PeerConnectionStateConnected, answerPC)
connectionComplete.Wait()
assert.NoError(t, offerPC.Close())
assert.NoError(t, answerPC.Close())
closePairNow(t, offerPC, answerPC)
}

report := test.CheckRoutines(t)
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
@@ -6,7 +6,7 @@ require (
github.com/onsi/ginkgo v1.14.2 // indirect
github.com/onsi/gomega v1.10.3 // indirect
github.com/pion/datachannel v1.4.21
github.com/pion/dtls/v2 v2.0.5
github.com/pion/dtls/v2 v2.0.6
github.com/pion/ice/v2 v2.0.15
github.com/pion/interceptor v0.0.9
github.com/pion/logging v0.2.2
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
@@ -38,8 +38,8 @@ github.com/pion/datachannel v1.4.21 h1:3ZvhNyfmxsAqltQrApLPQMhSFNA+aT87RqyCq4OXm
github.com/pion/datachannel v1.4.21/go.mod h1:oiNyP4gHx2DIwRzX/MFyH0Rz/Gz05OgBlayAI2hAWjg=
github.com/pion/dtls/v2 v2.0.4 h1:WuUcqi6oYMu/noNTz92QrF1DaFj4eXbhQ6dzaaAwOiI=
github.com/pion/dtls/v2 v2.0.4/go.mod h1:qAkFscX0ZHoI1E07RfYPoRw3manThveu+mlTDdOxoGI=
github.com/pion/dtls/v2 v2.0.5 h1:jgQJRK2IJ9eWQAcUEZN4M0tnCi5X/cERnxH9J8qOjR0=
github.com/pion/dtls/v2 v2.0.5/go.mod h1:QuDII+8FVvk9Dp5t5vYIMTo7hh7uBkra+8QIm7QGm10=
github.com/pion/dtls/v2 v2.0.6 h1:v0Cg/3o+PqRrSsbHoM2CQgUKvnwo8XgOVrr3XKP1/ek=
github.com/pion/dtls/v2 v2.0.6/go.mod h1:QuDII+8FVvk9Dp5t5vYIMTo7hh7uBkra+8QIm7QGm10=
github.com/pion/ice/v2 v2.0.15 h1:KZrwa2ciL9od8+TUVJiYTNsCW9J5lktBjGwW1MacEnQ=
github.com/pion/ice/v2 v2.0.15/go.mod h1:ZIiVGevpgAxF/cXiIVmuIUtCb3Xs4gCzCbXB6+nFkSI=
github.com/pion/interceptor v0.0.9 h1:fk5hTdyLO3KURQsf/+RjMpEm4NE3yeTY9Kh97b5BvwA=
3 changes: 1 addition & 2 deletions interceptor_test.go
Original file line number Diff line number Diff line change
@@ -102,6 +102,5 @@ func TestPeerConnection_Interceptor(t *testing.T) {
}
}()

assert.NoError(t, offerer.Close())
assert.NoError(t, answerer.Close())
closePairNow(t, offerer, answerer)
}
18 changes: 14 additions & 4 deletions mediaengine.go
Original file line number Diff line number Diff line change
@@ -182,16 +182,26 @@ func (m *MediaEngine) RegisterDefaultCodecs() error {
return nil
}

// addCodec will append codec if it not exists
func (m *MediaEngine) addCodec(codecs []RTPCodecParameters, codec RTPCodecParameters) []RTPCodecParameters {
for _, c := range codecs {
if c.MimeType == codec.MimeType && c.PayloadType == codec.PayloadType {
return codecs
}
}
return append(codecs, codec)
}

// RegisterCodec adds codec to the MediaEngine
// These are the list of codecs supported by this PeerConnection.
// RegisterCodec is not safe for concurrent use.
func (m *MediaEngine) RegisterCodec(codec RTPCodecParameters, typ RTPCodecType) error {
codec.statsID = fmt.Sprintf("RTPCodec-%d", time.Now().UnixNano())
switch typ {
case RTPCodecTypeAudio:
m.audioCodecs = append(m.audioCodecs, codec)
m.audioCodecs = m.addCodec(m.audioCodecs, codec)
case RTPCodecTypeVideo:
m.videoCodecs = append(m.videoCodecs, codec)
m.videoCodecs = m.addCodec(m.videoCodecs, codec)
default:
return ErrUnknownType
}
@@ -328,9 +338,9 @@ func (m *MediaEngine) updateCodecParameters(remoteCodec RTPCodecParameters, typ

pushCodec := func(codec RTPCodecParameters) error {
if typ == RTPCodecTypeAudio {
m.negotiatedAudioCodecs = append(m.negotiatedAudioCodecs, codec)
m.negotiatedAudioCodecs = m.addCodec(m.negotiatedAudioCodecs, codec)
} else if typ == RTPCodecTypeVideo {
m.negotiatedVideoCodecs = append(m.negotiatedVideoCodecs, codec)
m.negotiatedVideoCodecs = m.addCodec(m.negotiatedVideoCodecs, codec)
}
return nil
}
19 changes: 19 additions & 0 deletions mediaengine_test.go
Original file line number Diff line number Diff line change
@@ -242,3 +242,22 @@ func TestMediaEngineHeaderExtensionDirection(t *testing.T) {
assert.Error(t, m.RegisterHeaderExtension(RTPHeaderExtensionCapability{"pion-header-test"}, RTPCodecTypeAudio, RTPTransceiverDirection(0)), ErrRegisterHeaderExtensionInvalidDirection)
})
}

// If a user attempts to register a codec twice we should just discard duplicate calls
func TestMediaEngineDoubleRegister(t *testing.T) {
m := MediaEngine{}

assert.NoError(t, m.RegisterCodec(
RTPCodecParameters{
RTPCodecCapability: RTPCodecCapability{MimeTypeOpus, 48000, 0, "", nil},
PayloadType: 111,
}, RTPCodecTypeAudio))

assert.NoError(t, m.RegisterCodec(
RTPCodecParameters{
RTPCodecCapability: RTPCodecCapability{MimeTypeOpus, 48000, 0, "", nil},
PayloadType: 111,
}, RTPCodecTypeAudio))

assert.Equal(t, len(m.audioCodecs), 1)
}
3 changes: 1 addition & 2 deletions peerconnection_close_test.go
Original file line number Diff line number Diff line change
@@ -52,8 +52,7 @@ func TestPeerConnection_Close(t *testing.T) {

<-awaitSetup

assert.NoError(t, pcOffer.Close())
assert.NoError(t, pcAnswer.Close())
closePairNow(t, pcOffer, pcAnswer)

<-awaitICEClosed
}
24 changes: 8 additions & 16 deletions peerconnection_go_test.go
Original file line number Diff line number Diff line change
@@ -374,8 +374,7 @@ func TestPeerConnection_ShutdownNoDTLS(t *testing.T) {
})

<-iceComplete
assert.NoError(t, offerPC.Close())
assert.NoError(t, answerPC.Close())
closePairNow(t, offerPC, answerPC)
}

func TestPeerConnection_PropertyGetters(t *testing.T) {
@@ -598,8 +597,7 @@ func TestPeerConnection_OfferingLite(t *testing.T) {
})

<-iceComplete
assert.NoError(t, offerPC.Close())
assert.NoError(t, answerPC.Close())
closePairNow(t, offerPC, answerPC)
}

func TestPeerConnection_AnsweringLite(t *testing.T) {
@@ -637,8 +635,7 @@ func TestPeerConnection_AnsweringLite(t *testing.T) {
})

<-iceComplete
assert.NoError(t, offerPC.Close())
assert.NoError(t, answerPC.Close())
closePairNow(t, offerPC, answerPC)
}

func TestOnICEGatheringStateChange(t *testing.T) {
@@ -792,8 +789,7 @@ func TestPeerConnectionTrickle(t *testing.T) {

<-answerPCConnected.Done()
<-offerPCConnected.Done()
assert.NoError(t, offerPC.Close())
assert.NoError(t, answerPC.Close())
closePairNow(t, offerPC, answerPC)
}

// Issue #1121, assert populateLocalCandidates doesn't mutate
@@ -858,8 +854,7 @@ func TestMulticastDNSCandidates(t *testing.T) {
})
<-onDataChannel.Done()

assert.NoError(t, pcOffer.Close())
assert.NoError(t, pcAnswer.Close())
closePairNow(t, pcOffer, pcAnswer)
}

func TestICERestart(t *testing.T) {
@@ -938,8 +933,7 @@ func TestICERestart(t *testing.T) {
// Compare ICE Candidates across each run, fail if they haven't changed
assert.NotEqual(t, firstOfferCandidates, extractCandidates(offerPC.LocalDescription().SDP))
assert.NotEqual(t, firstAnswerCandidates, extractCandidates(answerPC.LocalDescription().SDP))
assert.NoError(t, offerPC.Close())
assert.NoError(t, answerPC.Close())
closePairNow(t, offerPC, answerPC)
}

// Assert error handling when an Agent is restart
@@ -1043,8 +1037,7 @@ func TestICERestart_Error_Handling(t *testing.T) {
assert.Equal(t, testMessage, <-dataChannelMessages)

assert.NoError(t, wan.Stop())
assert.NoError(t, offerPeerConnection.Close())
assert.NoError(t, answerPeerConnection.Close())
closePairNow(t, offerPeerConnection, answerPeerConnection)
}

type trackRecords struct {
@@ -1161,8 +1154,7 @@ func TestPeerConnection_MassiveTracks(t *testing.T) {
}
}
close(stopped)
assert.NoError(t, offerPC.Close())
assert.NoError(t, answerPC.Close())
closePairNow(t, offerPC, answerPC)
}

func TestEmptyCandidate(t *testing.T) {
18 changes: 6 additions & 12 deletions peerconnection_media_test.go
Original file line number Diff line number Diff line change
@@ -193,8 +193,7 @@ func TestPeerConnection_Media_Sample(t *testing.T) {
t.Fatal(err)
}

assert.NoError(t, pcOffer.Close())
assert.NoError(t, pcAnswer.Close())
closePairNow(t, pcOffer, pcAnswer)
<-awaitRTPRecvClosed
}

@@ -292,8 +291,7 @@ func TestPeerConnection_Media_Shutdown(t *testing.T) {
}
}

assert.NoError(t, pcOffer.Close())
assert.NoError(t, pcAnswer.Close())
closePairNow(t, pcOffer, pcAnswer)

onTrackFiredLock.Lock()
if onTrackFired {
@@ -463,8 +461,7 @@ func TestUndeclaredSSRC(t *testing.T) {
}()

<-onTrackFired
assert.NoError(t, pcOffer.Close())
assert.NoError(t, pcAnswer.Close())
closePairNow(t, pcOffer, pcAnswer)
}

func TestAddTransceiverFromTrackSendOnly(t *testing.T) {
@@ -847,8 +844,7 @@ func TestPlanBMediaExchange(t *testing.T) {
}
}()

assert.NoError(t, pcOffer.Close())
assert.NoError(t, pcAnswer.Close())
closePairNow(t, pcOffer, pcAnswer)
}

lim := test.TimeOut(time.Second * 30)
@@ -997,8 +993,7 @@ func TestPeerConnection_Start_Right_Receiver(t *testing.T) {
assert.NoError(t, err)
assert.True(t, started, "transceiver with mid 2 should be started")

assert.NoError(t, pcOffer.Close())
assert.NoError(t, pcAnswer.Close())
closePairNow(t, pcOffer, pcAnswer)
}

// Assert that failed Simulcast probing doesn't cause
@@ -1055,8 +1050,7 @@ func TestPeerConnection_Simulcast_Probe(t *testing.T) {

<-seenFiveStreams.Done()

assert.NoError(t, answerer.Close())
assert.NoError(t, offerer.Close())
closePairNow(t, offerer, answerer)
close(testFinished)
}

Loading