|
|
@@ -453,6 +453,29 @@ var SDPUtil = {
|
|
453
|
453
|
getMedia: function (sdp, type) {
|
|
454
|
454
|
return sdp.media.find(m => m.type === type);
|
|
455
|
455
|
},
|
|
|
456
|
+ /**
|
|
|
457
|
+ * Sets the given codecName as the preferred codec by
|
|
|
458
|
+ * moving it to the beginning of the payload types
|
|
|
459
|
+ * list (modifies the given mline in place)
|
|
|
460
|
+ * @param {object} videoMLine the video mline object from
|
|
|
461
|
+ * an sdp as parsed by transform.parse
|
|
|
462
|
+ * @param {string} the name of the preferred codec
|
|
|
463
|
+ */
|
|
|
464
|
+ preferVideoCodec: function(videoMLine, codecName) {
|
|
|
465
|
+ let payloadType = null;
|
|
|
466
|
+ videoMLine.rtp.forEach(rtp => {
|
|
|
467
|
+ if (rtp.codec === codecName) {
|
|
|
468
|
+ payloadType = rtp.payload;
|
|
|
469
|
+ }
|
|
|
470
|
+ });
|
|
|
471
|
+ if (payloadType) {
|
|
|
472
|
+ let payloadTypes = videoMLine.payloads.split(" ").map(p => parseInt(p));
|
|
|
473
|
+ const payloadIndex = payloadTypes.indexOf(payloadType);
|
|
|
474
|
+ payloadTypes.splice(payloadIndex, 1);
|
|
|
475
|
+ payloadTypes.unshift(payloadType);
|
|
|
476
|
+ videoMLine.payloads = payloadTypes.join(" ");
|
|
|
477
|
+ }
|
|
|
478
|
+ },
|
|
456
|
479
|
};
|
|
457
|
480
|
|
|
458
|
481
|
module.exports = SDPUtil;
|