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

View File

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

View File

@@ -134,3 +134,27 @@ func Test_RTPSender_ReplaceTrack(t *testing.T) {
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
type RTPSendParameters struct {
Encodings RTPEncodingParameters
RTPParameters
Encodings []RTPEncodingParameters
}