dual streams (#467)

* dual streams

* dual streams

* dual streams

* dual streams

* use sdp transform
This commit is contained in:
Hoan Luu Huu
2023-09-21 18:57:30 +07:00
committed by GitHub
parent 76cf4e527f
commit 991fff3386
4 changed files with 57 additions and 12 deletions

View File

@@ -10,6 +10,7 @@ const HttpRequestor = require('../../utils/http-requestor');
const WsRequestor = require('../../utils/ws-requestor');
const RootSpan = require('../../utils/call-tracer');
const dbUtils = require('../../utils/db-utils');
const { mergeSdpMedia, extractSdpMedia } = require('../../utils/sdp-utils');
router.post('/', async(req, res) => {
const {logger} = req.app.locals;
@@ -127,16 +128,35 @@ router.post('/', async(req, res) => {
/* launch outdial */
let sdp, sipLogger;
let dualEp;
let localSdp = ep.local.sdp;
if (req.body.dual_streams) {
dualEp = await ms.createEndpoint();
localSdp = mergeSdpMedia(localSdp, dualEp.local.sdp);
ep.on('destroy', () => {
dualEp.destroy();
});
}
const connectStream = async(remoteSdp) => {
if (remoteSdp !== sdp) {
ep.modify(sdp = remoteSdp);
sdp = remoteSdp;
if (req.body.dual_streams) {
const [sdpLegA, sdpLebB] = extractSdpMedia(remoteSdp);
await Promise.all([ep.modify(sdpLegA), dualEp.modify(sdpLebB)]);
await ep.bridge(dualEp);
} else {
ep.modify(sdp);
}
return true;
}
return false;
};
Object.assign(opts, {
proxy: `sip:${sbcAddress}`,
localSdp: ep.local.sdp
localSdp
});
if (target.auth) opts.auth = target.auth;