mirror of
https://github.com/jambonz/jambonz-feature-server.git
synced 2025-12-20 08:40:38 +00:00
fixed dial verb cannot bridge 2 leg endpoints due to transcoding (#1457)
* fixed dial verb cannot bridge 2 leg endpoints due to transcoding * wip
This commit is contained in:
@@ -158,7 +158,7 @@ class TaskDial extends Task {
|
|||||||
|
|
||||||
get canReleaseMedia() {
|
get canReleaseMedia() {
|
||||||
const keepAnchor = this.data.anchorMedia ||
|
const keepAnchor = this.data.anchorMedia ||
|
||||||
this.weAreTranscoding ||
|
this.isTranscoding ||
|
||||||
this.cs.isBackGroundListen ||
|
this.cs.isBackGroundListen ||
|
||||||
this.cs.onHoldMusic ||
|
this.cs.onHoldMusic ||
|
||||||
ANCHOR_MEDIA_ALWAYS ||
|
ANCHOR_MEDIA_ALWAYS ||
|
||||||
@@ -773,6 +773,15 @@ class TaskDial extends Task {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async _connectSingleDial(cs, sd) {
|
async _connectSingleDial(cs, sd) {
|
||||||
|
// start connect with dialed leg, this is the soonest we can identify transcoding
|
||||||
|
if (this.epOther && sd.ep) {
|
||||||
|
const codecA = getLeadingCodec(this.epOther.local.sdp);
|
||||||
|
const codecB = getLeadingCodec(sd.ep.remote.sdp);
|
||||||
|
this.isTranscoding = (codecA !== codecB);
|
||||||
|
if (this.isTranscoding) {
|
||||||
|
this.logger.info(`Dial:_connectSingleDial - transcoding from ${codecA} (A leg) to ${codecB} (B leg)`);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (!this.bridged && !this.canReleaseMedia) {
|
if (!this.bridged && !this.canReleaseMedia) {
|
||||||
this.logger.debug('Dial:_connectSingleDial bridging endpoints');
|
this.logger.debug('Dial:_connectSingleDial bridging endpoints');
|
||||||
if (this.epOther) {
|
if (this.epOther) {
|
||||||
@@ -930,13 +939,6 @@ class TaskDial extends Task {
|
|||||||
this.logger.info({err}, 'Dial:_selectSingleDial - Error boosting audio signal');
|
this.logger.info({err}, 'Dial:_selectSingleDial - Error boosting audio signal');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* basic determination to see if call is being transcoded */
|
|
||||||
const codecA = getLeadingCodec(this.epOther.local.sdp);
|
|
||||||
const codecB = getLeadingCodec(this.ep.remote.sdp);
|
|
||||||
this.weAreTranscoding = (codecA !== codecB);
|
|
||||||
if (this.weAreTranscoding) {
|
|
||||||
this.logger.info(`Dial:_selectSingleDial - transcoding from ${codecA} (A leg) to ${codecB} (B leg)`);
|
|
||||||
}
|
|
||||||
/* if we can release the media back to the SBC, do so now */
|
/* if we can release the media back to the SBC, do so now */
|
||||||
if (this.canReleaseMedia || this.shouldExitMediaPathEntirely) {
|
if (this.canReleaseMedia || this.shouldExitMediaPathEntirely) {
|
||||||
setTimeout(this._releaseMedia.bind(this, cs, sd, this.shouldExitMediaPathEntirely), 200);
|
setTimeout(this._releaseMedia.bind(this, cs, sd, this.shouldExitMediaPathEntirely), 200);
|
||||||
|
|||||||
Reference in New Issue
Block a user