Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 26 additions & 10 deletions lib/RTCSession.js
Original file line number Diff line number Diff line change
Expand Up @@ -278,6 +278,7 @@ module.exports = class RTCSession extends EventEmitter
const pcConfig = Utils.cloneObject(options.pcConfig, { iceServers: [] });
const rtcConstraints = options.rtcConstraints || null;
const rtcOfferConstraints = options.rtcOfferConstraints || null;
const encodingsPriority = options.encodingsPriority;

this._rtcOfferConstraints = rtcOfferConstraints;
this._rtcAnswerConstraints = options.rtcAnswerConstraints || null;
Expand Down Expand Up @@ -395,7 +396,7 @@ module.exports = class RTCSession extends EventEmitter

this._newRTCSession('local', this._request);

this._sendInitialRequest(mediaConstraints, rtcOfferConstraints, mediaStream);
this._sendInitialRequest(mediaConstraints, rtcOfferConstraints, mediaStream, encodingsPriority);
}

init_incoming(request, initCallback)
Expand Down Expand Up @@ -503,6 +504,26 @@ module.exports = class RTCSession extends EventEmitter
this._progress('local', null);
}

addStreamTracksWithPriority(stream, priority) {
logger.debug('Adding stream tracks with priority: %s', priority);
stream.getTracks().forEach((track) => {
let sender = this._connection.addTrack(track, stream);
if (priority && ['very-low', 'low', 'medium', 'high'].includes(priority)) {
const params = sender.getParameters();
params.encodings = params.encodings.map((e) => {
if (e.priority) {
e.priority = priority;
}
if (e.networkPriority) {
e.networkPriority = priority;
}
return e;
});
sender.setParameters(params);
}
});
}

/**
* Answer the call.
*/
Expand All @@ -518,6 +539,7 @@ module.exports = class RTCSession extends EventEmitter
const rtcConstraints = options.rtcConstraints || null;
const rtcAnswerConstraints = options.rtcAnswerConstraints || null;
const rtcOfferConstraints = Utils.cloneObject(options.rtcOfferConstraints);
const encodingsPriority = options.encodingsPriority;

let tracks;
let peerHasAudioLine = false;
Expand Down Expand Up @@ -695,10 +717,7 @@ module.exports = class RTCSession extends EventEmitter
this._localMediaStream = stream;
if (stream)
{
stream.getTracks().forEach((track) =>
{
this._connection.addTrack(track, stream);
});
this.addStreamTracksWithPriority(stream, encodingsPriority);
}
})
// Set remote description.
Expand Down Expand Up @@ -2594,7 +2613,7 @@ module.exports = class RTCSession extends EventEmitter
/**
* Initial Request Sender
*/
_sendInitialRequest(mediaConstraints, rtcOfferConstraints, mediaStream)
_sendInitialRequest(mediaConstraints, rtcOfferConstraints, mediaStream, encodingsPriority)
{
const request_sender = new RequestSender(this._ua, this._request, {
onRequestTimeout : () =>
Expand Down Expand Up @@ -2661,10 +2680,7 @@ module.exports = class RTCSession extends EventEmitter

if (stream)
{
stream.getTracks().forEach((track) =>
{
this._connection.addTrack(track, stream);
});
this.addStreamTracksWithPriority(stream, encodingsPriority);
}

// TODO: should this be triggered here?
Expand Down