Skip to content

Commit 0dea1f9

Browse files
jechSean-Der
authored andcommitted
Fix RTPSendParameters
RTPSendParameters contains an array of encodings. RTPSender.GetParameters returns RTPSendParameters.
1 parent 5ee9a31 commit 0dea1f9

File tree

4 files changed

+48
-8
lines changed

4 files changed

+48
-8
lines changed

peerconnection.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1236,10 +1236,12 @@ func (pc *PeerConnection) startRTPSenders(currentTransceivers []*RTPTransceiver)
12361236
for _, transceiver := range currentTransceivers {
12371237
if transceiver.Sender() != nil && transceiver.Sender().isNegotiated() && !transceiver.Sender().hasSent() {
12381238
err := transceiver.Sender().Send(RTPSendParameters{
1239-
Encodings: RTPEncodingParameters{
1240-
RTPCodingParameters{
1241-
SSRC: transceiver.Sender().ssrc,
1242-
PayloadType: transceiver.Sender().payloadType,
1239+
Encodings: []RTPEncodingParameters{
1240+
{
1241+
RTPCodingParameters{
1242+
SSRC: transceiver.Sender().ssrc,
1243+
PayloadType: transceiver.Sender().payloadType,
1244+
},
12431245
},
12441246
},
12451247
})

rtpsender.go

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,21 @@ func (r *RTPSender) Transport() *DTLSTransport {
9292

9393
// GetParameters describes the current configuration for the encoding and
9494
// transmission of media on the sender's track.
95-
func (r *RTPSender) GetParameters() RTPParameters {
96-
return r.api.mediaEngine.getRTPParametersByKind(r.track.Kind(), []RTPTransceiverDirection{RTPTransceiverDirectionSendonly})
95+
func (r *RTPSender) GetParameters() RTPSendParameters {
96+
return RTPSendParameters{
97+
RTPParameters: r.api.mediaEngine.getRTPParametersByKind(
98+
r.track.Kind(),
99+
[]RTPTransceiverDirection{RTPTransceiverDirectionSendonly},
100+
),
101+
Encodings: []RTPEncodingParameters{
102+
{
103+
RTPCodingParameters: RTPCodingParameters{
104+
SSRC: r.ssrc,
105+
PayloadType: r.payloadType,
106+
},
107+
},
108+
},
109+
}
97110
}
98111

99112
// Track returns the RTCRtpTransceiver track, or nil
@@ -148,7 +161,7 @@ func (r *RTPSender) Send(parameters RTPSendParameters) error {
148161
r.context = TrackLocalContext{
149162
id: r.id,
150163
params: r.api.mediaEngine.getRTPParametersByKind(r.track.Kind(), []RTPTransceiverDirection{RTPTransceiverDirectionSendonly}),
151-
ssrc: parameters.Encodings.SSRC,
164+
ssrc: parameters.Encodings[0].SSRC,
152165
writeStream: writeStream,
153166
}
154167

rtpsender_test.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,3 +134,27 @@ func Test_RTPSender_ReplaceTrack(t *testing.T) {
134134
assert.NoError(t, receiver.Close())
135135
})
136136
}
137+
138+
func Test_RTPSender_GetParameters(t *testing.T) {
139+
lim := test.TimeOut(time.Second * 10)
140+
defer lim.Stop()
141+
142+
report := test.CheckRoutines(t)
143+
defer report()
144+
145+
offerer, answerer, err := newPair()
146+
assert.NoError(t, err)
147+
148+
rtpTransceiver, err := offerer.AddTransceiverFromKind(RTPCodecTypeVideo)
149+
assert.NoError(t, err)
150+
151+
assert.NoError(t, signalPair(offerer, answerer))
152+
153+
parameters := rtpTransceiver.Sender().GetParameters()
154+
assert.NotEqual(t, 0, len(parameters.Codecs))
155+
assert.Equal(t, 1, len(parameters.Encodings))
156+
assert.Equal(t, rtpTransceiver.Sender().ssrc, parameters.Encodings[0].SSRC)
157+
158+
assert.NoError(t, offerer.Close())
159+
assert.NoError(t, answerer.Close())
160+
}

rtpsendparameters.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@ package webrtc
22

33
// RTPSendParameters contains the RTP stack settings used by receivers
44
type RTPSendParameters struct {
5-
Encodings RTPEncodingParameters
5+
RTPParameters
6+
Encodings []RTPEncodingParameters
67
}

0 commit comments

Comments
 (0)