Fix RTPSendParameters

RTPSendParameters contains an array of encodings.
RTPSender.GetParameters returns RTPSendParameters.
This commit is contained in:
Juliusz Chroboczek
2020-12-05 22:33:50 +01:00
committed by Sean DuBois
parent 5ee9a316a9
commit 0dea1f91e0
4 changed files with 48 additions and 8 deletions

View File

@@ -1236,10 +1236,12 @@ func (pc *PeerConnection) startRTPSenders(currentTransceivers []*RTPTransceiver)
for _, transceiver := range currentTransceivers { for _, transceiver := range currentTransceivers {
if transceiver.Sender() != nil && transceiver.Sender().isNegotiated() && !transceiver.Sender().hasSent() { if transceiver.Sender() != nil && transceiver.Sender().isNegotiated() && !transceiver.Sender().hasSent() {
err := transceiver.Sender().Send(RTPSendParameters{ err := transceiver.Sender().Send(RTPSendParameters{
Encodings: RTPEncodingParameters{ Encodings: []RTPEncodingParameters{
RTPCodingParameters{ {
SSRC: transceiver.Sender().ssrc, RTPCodingParameters{
PayloadType: transceiver.Sender().payloadType, SSRC: transceiver.Sender().ssrc,
PayloadType: transceiver.Sender().payloadType,
},
}, },
}, },
}) })

View File

@@ -92,8 +92,21 @@ func (r *RTPSender) Transport() *DTLSTransport {
// GetParameters describes the current configuration for the encoding and // GetParameters describes the current configuration for the encoding and
// transmission of media on the sender's track. // transmission of media on the sender's track.
func (r *RTPSender) GetParameters() RTPParameters { func (r *RTPSender) GetParameters() RTPSendParameters {
return r.api.mediaEngine.getRTPParametersByKind(r.track.Kind(), []RTPTransceiverDirection{RTPTransceiverDirectionSendonly}) return RTPSendParameters{
RTPParameters: r.api.mediaEngine.getRTPParametersByKind(
r.track.Kind(),
[]RTPTransceiverDirection{RTPTransceiverDirectionSendonly},
),
Encodings: []RTPEncodingParameters{
{
RTPCodingParameters: RTPCodingParameters{
SSRC: r.ssrc,
PayloadType: r.payloadType,
},
},
},
}
} }
// Track returns the RTCRtpTransceiver track, or nil // Track returns the RTCRtpTransceiver track, or nil
@@ -148,7 +161,7 @@ func (r *RTPSender) Send(parameters RTPSendParameters) error {
r.context = TrackLocalContext{ r.context = TrackLocalContext{
id: r.id, id: r.id,
params: r.api.mediaEngine.getRTPParametersByKind(r.track.Kind(), []RTPTransceiverDirection{RTPTransceiverDirectionSendonly}), params: r.api.mediaEngine.getRTPParametersByKind(r.track.Kind(), []RTPTransceiverDirection{RTPTransceiverDirectionSendonly}),
ssrc: parameters.Encodings.SSRC, ssrc: parameters.Encodings[0].SSRC,
writeStream: writeStream, writeStream: writeStream,
} }

View File

@@ -134,3 +134,27 @@ func Test_RTPSender_ReplaceTrack(t *testing.T) {
assert.NoError(t, receiver.Close()) assert.NoError(t, receiver.Close())
}) })
} }
func Test_RTPSender_GetParameters(t *testing.T) {
lim := test.TimeOut(time.Second * 10)
defer lim.Stop()
report := test.CheckRoutines(t)
defer report()
offerer, answerer, err := newPair()
assert.NoError(t, err)
rtpTransceiver, err := offerer.AddTransceiverFromKind(RTPCodecTypeVideo)
assert.NoError(t, err)
assert.NoError(t, signalPair(offerer, answerer))
parameters := rtpTransceiver.Sender().GetParameters()
assert.NotEqual(t, 0, len(parameters.Codecs))
assert.Equal(t, 1, len(parameters.Encodings))
assert.Equal(t, rtpTransceiver.Sender().ssrc, parameters.Encodings[0].SSRC)
assert.NoError(t, offerer.Close())
assert.NoError(t, answerer.Close())
}

View File

@@ -2,5 +2,6 @@ package webrtc
// RTPSendParameters contains the RTP stack settings used by receivers // RTPSendParameters contains the RTP stack settings used by receivers
type RTPSendParameters struct { type RTPSendParameters struct {
Encodings RTPEncodingParameters RTPParameters
Encodings []RTPEncodingParameters
} }