sip-connector 14.1.0-alpha.5 → 14.1.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/SipConnectorFacade/SipConnectorFacade.d.ts +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +78 -75
- package/dist/types.d.ts +9 -0
- package/package.json +1 -1
|
@@ -132,7 +132,7 @@ declare class SipConnectorFacade implements IProxyMethods {
|
|
|
132
132
|
sendEncodings?: RTCRtpEncodingParameters[];
|
|
133
133
|
preferredMimeTypesVideoCodecs?: string[];
|
|
134
134
|
excludeMimeTypesVideoCodecs?: string[];
|
|
135
|
-
callLimit
|
|
135
|
+
callLimit?: number;
|
|
136
136
|
}) => Promise<MediaStream | undefined>;
|
|
137
137
|
stopShareSipConnector: ({ isP2P }?: {
|
|
138
138
|
isP2P?: boolean;
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("events-constructor");const i=require("./@SipConnector-C09fG-9w.cjs"),W=require("@krivega/cancelable-promise"),ie=require("repeated-calls"),ce=require("ts-debounce"),_=require("debug"),ae=require("sequent-promises"),le=require("stack-promises"),ue=e=>e instanceof Object&&("originator"in e||"cause"in e),de=e=>{if(W.isCanceledError(e))return!0;if(!ue(e))return!1;const{originator:n,cause:t}=e;return typeof t=="string"?t===i.ECallCause.REQUEST_TIMEOUT||t===i.ECallCause.REJECTED||n===i.Originator.LOCAL&&(t===i.ECallCause.CANCELED||t===i.ECallCause.BYE):!1},ge=(e,n)=>(e.degradationPreference=n.degradationPreference,e),fe=(e,n)=>{e.encodings??=[];for(let t=e.encodings.length;t<n;t+=1)e.encodings.push({});return e},G=e=>(n,t)=>t!==void 0&&n!==t||t===void 0&&n!==e,Ce=G(),he=(e,n)=>{if(Ce(e,n))return e},Se=(e,n)=>{const t=e.maxBitrate,o=he(n,t);return o!==void 0&&(e.maxBitrate=o),e},K=1,me=G(K),Re=(e,n)=>{const t=e===void 0?void 0:Math.max(e,K);if(t!==void 0&&me(t,n))return t},ye=(e,n)=>{const t=e.scaleResolutionDownBy,o=Re(n,t);return o!==void 0&&(e.scaleResolutionDownBy=o),e},pe=(e,n)=>{const t=n.encodings?.length??0;return fe(e,t),e.encodings.forEach((o,r)=>{const s=(n?.encodings??[])[r],c=s?.maxBitrate,a=s?.scaleResolutionDownBy;Se(o,c),ye(o,a)}),e},Ee=(e,n)=>{if(e.codecs?.length!==n.codecs?.length)return!0;for(let t=0;t<(e.codecs?.length??0);t++)if(JSON.stringify(e.codecs[t])!==JSON.stringify(n.codecs[t]))return!0;if(e.headerExtensions?.length!==n.headerExtensions?.length)return!0;for(let t=0;t<(e.headerExtensions?.length??0);t++)if(JSON.stringify(e.headerExtensions[t])!==JSON.stringify(n.headerExtensions[t]))return!0;if(e.encodings?.length!==n.encodings?.length)return!0;for(let t=0;t<(e.encodings.length??0);t++)if(JSON.stringify(e.encodings[t])!==JSON.stringify(n.encodings[t]))return!0;return e.rtcp?.cname!==n.rtcp?.cname||e.rtcp?.reducedSize!==n.rtcp?.reducedSize||e.degradationPreference!==n.degradationPreference},H=async(e,n)=>{const t=e.getParameters(),o=JSON.parse(JSON.stringify(t));pe(t,n),ge(t,n);const r=Ee(o,t);return r&&await e.setParameters(t),{parameters:t,isChanged:r}},Te=e=>e.getVideoTracks()[0],Me=1e6,m=e=>e*Me,Y=m(.06),be=m(4),ve=e=>e<=64?Y:e<=128?m(.12):e<=256?m(.25):e<=384?m(.32):e<=426?m(.38):e<=640?m(.5):e<=848?m(.7):e<=1280?m(1):e<=1920?m(2):be,z=(e,n)=>e!==void 0&&n!==void 0&&e.toLowerCase().includes(n.toLowerCase()),_e="av1",Ae=e=>z(e,_e),Oe=.6,Q=(e,n)=>Ae(n)?e*Oe:e,Ne=e=>Q(Y,e),Z=(e,n)=>{const t=ve(e);return Q(t,n)},$=1,ee=({videoTrack:e,targetSize:n,codec:t})=>{const o=e.getSettings(),r=o.width,s=o.height,c=r===void 0?$:r/n.width,a=s===void 0?$:s/n.height,l=Math.max(c,a,$),d=Z(n.width,t);return{scaleResolutionDownBy:l,maxBitrate:d}},w=({mediaStream:e,simulcastEncodings:n,sendEncodings:t})=>{if(n&&n.length>0){const o=t??[],r=Te(e);if(r===void 0)throw new Error("No video track");return n.forEach((s,c)=>{const a=o[c]??{};a.active=!0,s.rid!==void 0&&(a.rid=s.rid),s.scalabilityMode!==void 0&&(a.scalabilityMode=s.scalabilityMode);const{maxBitrate:l,scaleResolutionDownBy:d}=ee({videoTrack:r,targetSize:{width:s.width,height:s.height}});a.maxBitrate=l,a.scaleResolutionDownBy=d,o[c]=a}),o}return t},ne="purgatory",P=e=>e===ne,Be=(e,n)=>e.filter(o=>n.some(r=>r.clockRate===o.clockRate&&r.mimeType===o.mimeType&&r.channels===o.channels&&r.sdpFmtpLine===o.sdpFmtpLine)),we=e=>{const n=RTCRtpSender.getCapabilities(e),t=RTCRtpReceiver.getCapabilities(e),o=n===null?[]:n.codecs,r=t===null?[]:t.codecs;return Be(o,r)},De=(e,n)=>n===void 0||n.length===0?e:e.sort((t,o)=>{const r=n.indexOf(t.mimeType),s=n.indexOf(o.mimeType),c=r===-1?Number.MAX_VALUE:r,a=s===-1?Number.MAX_VALUE:s;return c-a}),Pe=(e,n)=>n===void 0||n.length===0?e:e.filter(t=>!n.includes(t.mimeType)),D=(e,{preferredMimeTypesVideoCodecs:n,excludeMimeTypesVideoCodecs:t})=>async o=>{try{if(typeof o.setCodecPreferences=="function"&&o.sender.track?.kind==="video"&&(n!==void 0&&n.length>0||t!==void 0&&t.length>0)){const r=we("video"),s=Pe(r,t),c=De(s,n);o.setCodecPreferences(c)}Object.keys(e).length>0&&await H(o.sender,e)}catch(r){i.logger("updateTransceiver error",r)}},q=e=>{if(!W.isCanceledError(e)&&!ie.hasCanceledError(e))throw e;return{isSuccessful:!1}},Ie=({kind:e,readyState:n})=>e==="video"&&n==="live",xe=new Set(["on","once","onceRace","wait","off","sendDTMF","hangUp","declineToIncomingCall","sendChannels","checkTelephony","waitChannels","ping","connection","isConfigured","isRegistered"]);class Fe{on;once;onceRace;wait;off;sendDTMF;hangUp;declineToIncomingCall;sendChannels;checkTelephony;waitChannels;ping;connection;isConfigured;isRegistered;sipConnector;preferredMimeTypesVideoCodecs;excludeMimeTypesVideoCodecs;constructor(n,{preferredMimeTypesVideoCodecs:t,excludeMimeTypesVideoCodecs:o}={}){return this.preferredMimeTypesVideoCodecs=t,this.excludeMimeTypesVideoCodecs=o,this.sipConnector=n,new Proxy(this,{get:(r,s,c)=>{if(typeof s=="string"&&xe.has(s)&&s in this.sipConnector){const l=Reflect.get(this.sipConnector,s,this.sipConnector);return typeof l=="function"?l.bind(this.sipConnector):l}const a=Reflect.get(r,s,c);return typeof a=="function"?a.bind(r):a}})}connectToServer=async n=>{const{userAgent:t,sipWebSocketServerURL:o,sipServerUrl:r,remoteAddress:s,displayName:c,name:a,password:l,isRegisteredUser:d,isDisconnectOnFail:f}=n;return i.logger("connectToServer",n),this.sipConnector.connect({userAgent:t,sipWebSocketServerURL:o,sipServerUrl:r,remoteAddress:s,displayName:c,password:l,user:a,register:d}).then(g=>(i.logger("connectToServer then"),{ua:g,isSuccessful:!0})).catch(async g=>(i.logger("connectToServer catch: error",g),f===!0?this.sipConnector.disconnect().then(()=>q(g)).catch(()=>q(g)):q(g)))};callToServer=async n=>{const{conference:t,mediaStream:o,extraHeaders:r,iceServers:s,contentHint:c,simulcastEncodings:a,degradationPreference:l,sendEncodings:d,offerToReceiveAudio:f,offerToReceiveVideo:g,directionVideo:I,directionAudio:x,setRemoteStreams:C,onBeforeProgressCall:R,onSuccessProgressCall:h,onEnterPurgatory:S,onEnterConference:y,onFailProgressCall:p,onFinishProgressCall:E,onEndedCall:T}=n,v=this.resolveHandleReadyRemoteStreamsDebounced({onReadyRemoteStreams:C}),A=this.resolveHandleReadyRemoteStreams({onReadyRemoteStreams:()=>{v().catch(_)}}),O=D({degradationPreference:l},{preferredMimeTypesVideoCodecs:this.preferredMimeTypesVideoCodecs,excludeMimeTypesVideoCodecs:this.excludeMimeTypesVideoCodecs});i.logger("callToServer",n);const N=async()=>(i.logger("startCall"),this.sipConnector.call({mediaStream:o,extraHeaders:r,iceServers:s,contentHint:c,offerToReceiveAudio:f,offerToReceiveVideo:g,directionVideo:I,directionAudio:x,sendEncodings:w({mediaStream:o,simulcastEncodings:a,sendEncodings:d}),number:t,onAddedTransceiver:O,ontrack:A}));let M=!1,b;const B=(i.logger("subscribeEnterConference: onEnterConference",y),S??y?this.sipConnector.on("api:enterRoom",({room:u})=>{i.logger("enterRoom",{_room:u,isSuccessProgressCall:M}),b=u,P(b)?S&&S():y&&y({isSuccessProgressCall:M})}):()=>{}),U=u=>(i.logger("onSuccess"),M=!0,v().catch(_),h&&h({isPurgatory:P(b)}),this.sipConnector.onceRace(["call:ended","call:failed"],()=>{B(),T&&T()}),u),V=u=>{throw i.logger("onFail"),p&&p(),B(),u},L=()=>{i.logger("onFinish"),E&&E()};return i.logger("onBeforeProgressCall"),R&&R(t),N().then(U).catch(u=>V(u)).finally(L)};disconnectFromServer=async()=>this.sipConnector.disconnect().then(()=>(i.logger("disconnectFromServer: then"),{isSuccessful:!0})).catch(n=>(i.logger("disconnectFromServer: catch",n),{isSuccessful:!1}));answerToIncomingCall=async n=>{const{mediaStream:t,extraHeaders:o,iceServers:r,contentHint:s,simulcastEncodings:c,degradationPreference:a,sendEncodings:l,offerToReceiveAudio:d,offerToReceiveVideo:f,directionVideo:g,directionAudio:I,setRemoteStreams:x,onBeforeProgressCall:C,onSuccessProgressCall:R,onEnterPurgatory:h,onEnterConference:S,onFailProgressCall:y,onFinishProgressCall:p,onEndedCall:E}=n,T=this.resolveHandleReadyRemoteStreamsDebounced({onReadyRemoteStreams:x}),v=this.resolveHandleReadyRemoteStreams({onReadyRemoteStreams:()=>{T().catch(_)}}),A=D({degradationPreference:a},{preferredMimeTypesVideoCodecs:this.preferredMimeTypesVideoCodecs,excludeMimeTypesVideoCodecs:this.excludeMimeTypesVideoCodecs});i.logger("answerToIncomingCall",n);const O=async()=>this.sipConnector.answerToIncomingCall({mediaStream:t,extraHeaders:o,iceServers:r,contentHint:s,offerToReceiveAudio:d,offerToReceiveVideo:f,directionVideo:g,directionAudio:I,sendEncodings:w({mediaStream:t,simulcastEncodings:c,sendEncodings:l}),onAddedTransceiver:A,ontrack:v}),N=()=>{const{remoteCallerData:u}=this.sipConnector;return u.incomingNumber};let M=!1,b;const B=(i.logger("subscribeEnterConference: onEnterConference",S),h??S?this.sipConnector.on("api:enterRoom",u=>{i.logger("enterRoom",{_room:u,isSuccessProgressCall:M}),b=u,P(b)?h&&h():S&&S({isSuccessProgressCall:M})}):()=>{}),U=u=>(i.logger("onSuccess"),M=!0,T().catch(_),R&&R({isPurgatory:P(b)}),this.sipConnector.onceRace(["call:ended","call:failed"],()=>{B(),E&&E()}),u),V=u=>{throw i.logger("onFail"),y&&y(),B(),u},L=()=>{i.logger("onFinish"),p&&p()};if(i.logger("onBeforeProgressCall"),C){const u=N();C(u)}return O().then(U).catch(u=>V(u)).finally(L)};updatePresentation=async({mediaStream:n,isP2P:t,maxBitrate:o,contentHint:r,simulcastEncodings:s,degradationPreference:c,sendEncodings:a,preferredMimeTypesVideoCodecs:l,excludeMimeTypesVideoCodecs:d})=>{const f=D({degradationPreference:c},{preferredMimeTypesVideoCodecs:l,excludeMimeTypesVideoCodecs:d});return i.logger("updatePresentation"),this.sipConnector.updatePresentation(n,{isP2P:t,maxBitrate:o,contentHint:r,sendEncodings:w({mediaStream:n,simulcastEncodings:s,sendEncodings:a}),onAddedTransceiver:f})};startPresentation=async({mediaStream:n,isP2P:t,maxBitrate:o,contentHint:r,simulcastEncodings:s,degradationPreference:c,sendEncodings:a,preferredMimeTypesVideoCodecs:l,excludeMimeTypesVideoCodecs:d,callLimit:f})=>{const g=D({degradationPreference:c},{preferredMimeTypesVideoCodecs:l,excludeMimeTypesVideoCodecs:d});return i.logger("startPresentation"),this.sipConnector.startPresentation(n,{isP2P:t,maxBitrate:o,contentHint:r,callLimit:f,sendEncodings:w({mediaStream:n,simulcastEncodings:s,sendEncodings:a}),onAddedTransceiver:g})};stopShareSipConnector=async({isP2P:n=!1}={})=>(i.logger("stopShareSipConnector"),this.sipConnector.stopPresentation({isP2P:n}).catch(t=>{i.logger(t)}));sendRefusalToTurnOnMic=async()=>{i.logger("sendRefusalToTurnOnMic"),await this.sipConnector.sendRefusalToTurnOnMic().catch(n=>{i.logger("sendRefusalToTurnOnMic: error",n)})};sendRefusalToTurnOnCam=async()=>{i.logger("sendRefusalToTurnOnCam"),await this.sipConnector.sendRefusalToTurnOnCam().catch(n=>{i.logger("sendRefusalToTurnOnCam: error",n)})};sendMediaState=async({isEnabledCam:n,isEnabledMic:t})=>{i.logger("sendMediaState"),await this.sipConnector.sendMediaState({cam:n,mic:t})};replaceMediaStream=async(n,{deleteExisting:t,addMissing:o,forceRenegotiation:r,contentHint:s,simulcastEncodings:c,degradationPreference:a,sendEncodings:l}={})=>{const d=D({degradationPreference:a},{preferredMimeTypesVideoCodecs:this.preferredMimeTypesVideoCodecs,excludeMimeTypesVideoCodecs:this.excludeMimeTypesVideoCodecs});return i.logger("replaceMediaStream"),this.sipConnector.replaceMediaStream(n,{deleteExisting:t,addMissing:o,forceRenegotiation:r,contentHint:s,sendEncodings:w({mediaStream:n,simulcastEncodings:c,sendEncodings:l}),onAddedTransceiver:d})};askPermissionToEnableCam=async()=>{i.logger("askPermissionToEnableCam"),await this.sipConnector.askPermissionToEnableCam()};resolveHandleReadyRemoteStreamsDebounced=({onReadyRemoteStreams:n})=>ce.debounce(()=>{const t=this.sipConnector.getRemoteStreams();i.logger("remoteStreams",t),t&&n(t)},200);resolveHandleReadyRemoteStreams=({onReadyRemoteStreams:n})=>({track:t})=>{Ie(t)&&n()};getRemoteStreams=()=>(i.logger("getRemoteStreams"),this.sipConnector.getRemoteStreams());onUseLicense=n=>(i.logger("onUseLicense"),this.sipConnector.on("api:useLicense",n));onMustStopPresentation=n=>(i.logger("onMustStopPresentation"),this.sipConnector.on("api:mustStopPresentation",n));onMoveToSpectators=n=>(i.logger("onMoveToSpectators"),this.sipConnector.on("api:participant:move-request-to-spectators",n));onMoveToParticipants=n=>(i.logger("onMoveToParticipants"),this.sipConnector.on("api:participant:move-request-to-participants",n))}const k=e=>{const{url:n,cause:t}=e;let o=n;return(t===i.ECallCause.BAD_MEDIA_DESCRIPTION||t===i.ECallCause.NOT_FOUND)&&(o=`${e.message.to.uri.user}@${e.message.to.uri.host}`),o};var te=(e=>(e.CONNECT_SERVER_FAILED="CONNECT_SERVER_FAILED",e.WRONG_USER_OR_PASSWORD="WRONG_USER_OR_PASSWORD",e.BAD_MEDIA_ERROR="BAD_MEDIA_ERROR",e.NOT_FOUND_ERROR="NOT_FOUND_ERROR",e.WS_CONNECTION_FAILED="WS_CONNECTION_FAILED",e.CONNECT_SERVER_FAILED_BY_LINK="CONNECT_SERVER_FAILED_BY_LINK",e))(te||{});const ke=new Error("Unknown error"),Ue=(e=ke)=>{const{cause:n,socket:t}=e;let o="CONNECT_SERVER_FAILED";switch(n){case"Forbidden":{o="WRONG_USER_OR_PASSWORD";break}case i.ECallCause.BAD_MEDIA_DESCRIPTION:{o="BAD_MEDIA_ERROR";break}case i.ECallCause.NOT_FOUND:{o="NOT_FOUND_ERROR";break}default:t!==void 0&&t._ws?.readyState===3?o="WS_CONNECTION_FAILED":k(e)!==void 0&&k(e)!==""&&(o="CONNECT_SERVER_FAILED_BY_LINK")}return o},Ve=e=>{let n="";try{n=JSON.stringify(e)}catch(t){i.logger("failed to stringify message",t)}return n},Le=new Error("Unknown error"),$e=(e=Le)=>{const{code:n,cause:t,message:o}=e,r=k(e),s={code:"",cause:"",message:""};return typeof o=="object"&&o!==null?s.message=Ve(o):o&&(s.message=String(o)),r!==void 0&&r!==""&&(s.link=r),n!==void 0&&n!==""&&(s.code=n),t!==void 0&&t!==""&&(s.cause=t),s},qe=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:te,getLinkError:k,getTypeFromError:Ue,getValuesFromError:$e},Symbol.toStringTag,{value:"Module"})),He=({sessionId:e,remoteAddress:n,isMutedAudio:t,isMutedVideo:o,isRegistered:r,isPresentationCall:s})=>{const c=[],a=t?"0":"1",l=o?"0":"1";return c.push(`X-Vinteo-Mic-State: ${a}`,`X-Vinteo-MainCam-State: ${l}`),(r===!1||r===void 0)&&c.push("X-Vinteo-Purgatory-Call: yes"),e!==void 0&&e!==""&&c.push(`X-Vinteo-Session: ${e}`),s===!0&&c.push("X-Vinteo-Presentation-Call: yes"),n!==void 0&&n!==""&&c.push(`X-Vinteo-Remote: ${n}`),c},Je="[@*!|]",Xe="_",je=e=>{let n=e;return n=n.replaceAll(new RegExp(Je,"g"),Xe),n},We=({appName:e,appVersion:n,browserName:t,browserVersion:o})=>{const s=`${je(e)} ${n}`;return`ChromeNew - ${t===void 0?s:`${t} ${o}, ${s}`}`},Ge=({isUnifiedSdpSemantic:e,appVersion:n,browserName:t,browserVersion:o,appName:r})=>e?We({appVersion:n,browserName:t,browserVersion:o,appName:r}):"Chrome",Ke=e=>n=>[...n].map(o=>async()=>e(o)),Ye=async({accumulatedKeys:e,sendKey:n,canRunTask:t})=>{const r=Ke(n)(e);return ae.sequentPromises(r,t)},ze=e=>t=>(i.logger("onStartMainCam"),e.on("api:admin-start-main-cam",t)),Qe=e=>t=>(i.logger("onStartMic"),e.on("api:admin-start-mic",t)),Ze=e=>t=>(i.logger("onStopMainCam"),e.on("api:admin-stop-main-cam",t)),en=e=>t=>(i.logger("onStopMic"),e.on("api:admin-stop-mic",t)),nn=({sipConnector:e})=>{const n=(C,R)=>({isSyncForced:h})=>{if(h===!0){C();return}R()},t=ze(e),o=Ze(e),r=Qe(e),s=en(e);let c,a,l,d;const f=({onStartMainCamForced:C,onStartMainCamNotForced:R,onStopMainCamForced:h,onStopMainCamNotForced:S,onStartMicForced:y,onStartMicNotForced:p,onStopMicForced:E,onStopMicNotForced:T})=>{const v=n(C,R);c=t(v);const A=n(h,S);a=o(A);const O=n(y,p);l=r(O);const N=n(E,T);d=s(N)},g=()=>{c?.(),a?.(),l?.(),d?.()};return{start:C=>{f(C)},stop:()=>{g()}}},tn=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:ne,createSyncMediaState:nn,error:qe,getExtraHeaders:He,getUserAgent:Ge,hasPurgatory:P,sendDtmfAccumulated:Ye},Symbol.toStringTag,{value:"Module"})),on=e=>[...e.keys()].map(n=>e.get(n)),rn=(e,n)=>on(e).find(t=>t?.type===n),oe=async e=>e.getStats().then(n=>rn(n,"codec")?.mimeType),sn=e=>e.find(n=>n.track?.kind==="video"),cn=async(e,n,t)=>{const{isChanged:o,parameters:r}=await H(e,{encodings:[{scaleResolutionDownBy:n.scaleResolutionDownBy,maxBitrate:n.maxBitrate}]});return o&&t&&t(r),{isChanged:o,parameters:r}},re=le.createStackPromises(),an=async()=>re().catch(e=>{i.logger("videoSendingBalancer: error",e)}),ln=async e=>(re.add(e),an()),J=async({sender:e,scaleResolutionDownBy:n,maxBitrate:t,onSetParameters:o})=>ln(async()=>cn(e,{scaleResolutionDownBy:n,maxBitrate:t},o)),un=async({sender:e,codec:n},t)=>{const r=Ne(n);return J({sender:e,maxBitrate:r,onSetParameters:t,scaleResolutionDownBy:200})},F=async({sender:e,videoTrack:n,codec:t},o)=>{const c=n.getSettings().width,a=Z(c??0,t);return J({sender:e,maxBitrate:a,onSetParameters:o,scaleResolutionDownBy:1})},dn=async({sender:e,videoTrack:n,resolution:t,codec:o},r)=>{const[s,c]=t.split("x"),{maxBitrate:a,scaleResolutionDownBy:l}=ee({videoTrack:n,codec:o,targetSize:{width:Number(s),height:Number(c)}});return J({sender:e,maxBitrate:a,onSetParameters:r,scaleResolutionDownBy:l})},gn=async({mainCam:e,resolutionMainCam:n,sender:t,videoTrack:o,codec:r},s)=>{switch(e){case i.EEventsMainCAM.PAUSE_MAIN_CAM:return un({sender:t,codec:r},s);case i.EEventsMainCAM.RESUME_MAIN_CAM:return F({sender:t,videoTrack:o,codec:r},s);case i.EEventsMainCAM.MAX_MAIN_CAM_RESOLUTION:return n!==void 0?dn({sender:t,videoTrack:o,codec:r,resolution:n},s):F({sender:t,videoTrack:o,codec:r},s);case i.EEventsMainCAM.ADMIN_STOP_MAIN_CAM:case i.EEventsMainCAM.ADMIN_START_MAIN_CAM:case void 0:return F({sender:t,videoTrack:o,codec:r},s);default:return F({sender:t,videoTrack:o,codec:r},s)}},X={isChanged:!1,parameters:{encodings:[{}],transactionId:"0",codecs:[],headerExtensions:[],rtcp:{}}},j=async({mainCam:e,resolutionMainCam:n,connection:t,onSetParameters:o,ignoreForCodec:r})=>{const s=t.getSenders(),c=sn(s);if(!c?.track)return X;const a=await oe(c);return z(a,r)?X:gn({mainCam:e,resolutionMainCam:n,sender:c,codec:a,videoTrack:c.track},o)},fn=(e,{ignoreForCodec:n,onSetParameters:t}={})=>{const o=async()=>{const{connection:l}=e;if(!l)throw new Error("connection is not exist");return j({connection:l,onSetParameters:t,ignoreForCodec:n})};let r=o;const s=l=>{r=async()=>{const{mainCam:d,resolutionMainCam:f}=l,{connection:g}=e;if(!g)throw new Error("connection is not exist");return j({mainCam:d,resolutionMainCam:f,connection:g,onSetParameters:t,ignoreForCodec:n})},r().catch(_)};return{subscribe:()=>{e.on("api:main-cam-control",s)},unsubscribe:()=>{e.off("api:main-cam-control",s)},balanceByTrack:o,resetMainCamControl(){r=o},async reBalance(){return r()}}};exports.ECallCause=i.ECallCause;exports.EUseLicense=i.EUseLicense;exports.SipConnector=i.SipConnector;exports.disableDebug=i.disableDebug;exports.enableDebug=i.enableDebug;exports.hasCanceledStartPresentationError=i.hasCanceledStartPresentationError;exports.debug=_;exports.SipConnectorFacade=Fe;exports.getCodecFromSender=oe;exports.hasCanceledCallError=de;exports.resolveVideoSendingBalancer=fn;exports.setParametersToSender=H;exports.tools=tn;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("events-constructor");const i=require("./@SipConnector-C09fG-9w.cjs"),W=require("@krivega/cancelable-promise"),ce=require("repeated-calls"),ae=require("ts-debounce"),_=require("debug"),le=require("sequent-promises"),ue=require("stack-promises"),de=e=>e instanceof Object&&("originator"in e||"cause"in e),ge=e=>{if(W.isCanceledError(e))return!0;if(!de(e))return!1;const{originator:n,cause:t}=e;return typeof t=="string"?t===i.ECallCause.REQUEST_TIMEOUT||t===i.ECallCause.REJECTED||n===i.Originator.LOCAL&&(t===i.ECallCause.CANCELED||t===i.ECallCause.BYE):!1},fe=(e,n)=>(e.degradationPreference=n.degradationPreference,e),Ce=(e,n)=>{e.encodings??=[];for(let t=e.encodings.length;t<n;t+=1)e.encodings.push({});return e},G=e=>(n,t)=>t!==void 0&&n!==t||t===void 0&&n!==e,he=G(),Se=(e,n)=>{if(he(e,n))return e},me=(e,n)=>{const t=e.maxBitrate,o=Se(n,t);return o!==void 0&&(e.maxBitrate=o),e},K=1,Re=G(K),ye=(e,n)=>{const t=e===void 0?void 0:Math.max(e,K);if(t!==void 0&&Re(t,n))return t},pe=(e,n)=>{const t=e.scaleResolutionDownBy,o=ye(n,t);return o!==void 0&&(e.scaleResolutionDownBy=o),e},Ee=(e,n)=>{const t=n.encodings?.length??0;return Ce(e,t),e.encodings.forEach((o,r)=>{const s=(n?.encodings??[])[r],c=s?.maxBitrate,a=s?.scaleResolutionDownBy;me(o,c),pe(o,a)}),e},Te=(e,n)=>{if(e.codecs?.length!==n.codecs?.length)return!0;for(let t=0;t<(e.codecs?.length??0);t++)if(JSON.stringify(e.codecs[t])!==JSON.stringify(n.codecs[t]))return!0;if(e.headerExtensions?.length!==n.headerExtensions?.length)return!0;for(let t=0;t<(e.headerExtensions?.length??0);t++)if(JSON.stringify(e.headerExtensions[t])!==JSON.stringify(n.headerExtensions[t]))return!0;if(e.encodings?.length!==n.encodings?.length)return!0;for(let t=0;t<(e.encodings.length??0);t++)if(JSON.stringify(e.encodings[t])!==JSON.stringify(n.encodings[t]))return!0;return e.rtcp?.cname!==n.rtcp?.cname||e.rtcp?.reducedSize!==n.rtcp?.reducedSize||e.degradationPreference!==n.degradationPreference},q=async(e,n)=>{const t=e.getParameters(),o=JSON.parse(JSON.stringify(t));Ee(t,n),fe(t,n);const r=Te(o,t);return r&&await e.setParameters(t),{parameters:t,isChanged:r}},Me=e=>e.getVideoTracks()[0],ve=1e6,m=e=>e*ve,Y=m(.06),be=m(4),_e=e=>e<=64?Y:e<=128?m(.12):e<=256?m(.25):e<=384?m(.32):e<=426?m(.38):e<=640?m(.5):e<=848?m(.7):e<=1280?m(1):e<=1920?m(2):be,z=(e,n)=>e!==void 0&&n!==void 0&&e.toLowerCase().includes(n.toLowerCase()),Ae="av1",Oe=e=>z(e,Ae),Ne=.6,Q=(e,n)=>Oe(n)?e*Ne:e,Be=e=>Q(Y,e),Z=(e,n)=>{const t=_e(e);return Q(t,n)},H=1,ee=({videoTrack:e,targetSize:n,codec:t})=>{const o=e.getSettings(),r=o.width,s=o.height,c=r===void 0?H:r/n.width,a=s===void 0?H:s/n.height,l=Math.max(c,a,H),d=Z(n.width,t);return{scaleResolutionDownBy:l,maxBitrate:d}},w=({mediaStream:e,simulcastEncodings:n,sendEncodings:t})=>{if(n&&n.length>0){const o=t??[],r=Me(e);if(r===void 0)throw new Error("No video track");return n.forEach((s,c)=>{const a=o[c]??{};a.active=!0,s.rid!==void 0&&(a.rid=s.rid),s.scalabilityMode!==void 0&&(a.scalabilityMode=s.scalabilityMode);const{maxBitrate:l,scaleResolutionDownBy:d}=ee({videoTrack:r,targetSize:{width:s.width,height:s.height}});a.maxBitrate=l,a.scaleResolutionDownBy=d,o[c]=a}),o}return t},ne="purgatory",P=e=>e===ne,we=(e,n)=>e.filter(o=>n.some(r=>r.clockRate===o.clockRate&&r.mimeType===o.mimeType&&r.channels===o.channels&&r.sdpFmtpLine===o.sdpFmtpLine)),De=e=>{const n=RTCRtpSender.getCapabilities(e),t=RTCRtpReceiver.getCapabilities(e),o=n===null?[]:n.codecs,r=t===null?[]:t.codecs;return we(o,r)},Pe=(e,n)=>n===void 0||n.length===0?e:e.sort((t,o)=>{const r=n.indexOf(t.mimeType),s=n.indexOf(o.mimeType),c=r===-1?Number.MAX_VALUE:r,a=s===-1?Number.MAX_VALUE:s;return c-a}),Ie=(e,n)=>n===void 0||n.length===0?e:e.filter(t=>!n.includes(t.mimeType)),D=(e,{preferredMimeTypesVideoCodecs:n,excludeMimeTypesVideoCodecs:t})=>async o=>{try{if(typeof o.setCodecPreferences=="function"&&o.sender.track?.kind==="video"&&(n!==void 0&&n.length>0||t!==void 0&&t.length>0)){const r=De("video"),s=Ie(r,t),c=Pe(s,n);o.setCodecPreferences(c)}Object.keys(e).length>0&&await q(o.sender,e)}catch(r){i.logger("updateTransceiver error",r)}},$=e=>{if(!W.isCanceledError(e)&&!ce.hasCanceledError(e))throw e;return{isSuccessful:!1}},xe=({kind:e,readyState:n})=>e==="video"&&n==="live",Fe=new Set(["on","once","onceRace","wait","off","sendDTMF","hangUp","declineToIncomingCall","sendChannels","checkTelephony","waitChannels","ping","connection","isConfigured","isRegistered"]);class ke{on;once;onceRace;wait;off;sendDTMF;hangUp;declineToIncomingCall;sendChannels;checkTelephony;waitChannels;ping;connection;isConfigured;isRegistered;sipConnector;preferredMimeTypesVideoCodecs;excludeMimeTypesVideoCodecs;constructor(n,{preferredMimeTypesVideoCodecs:t,excludeMimeTypesVideoCodecs:o}={}){return this.preferredMimeTypesVideoCodecs=t,this.excludeMimeTypesVideoCodecs=o,this.sipConnector=n,new Proxy(this,{get:(r,s,c)=>{if(typeof s=="string"&&Fe.has(s)&&s in this.sipConnector){const l=Reflect.get(this.sipConnector,s,this.sipConnector);return typeof l=="function"?l.bind(this.sipConnector):l}const a=Reflect.get(r,s,c);return typeof a=="function"?a.bind(r):a}})}connectToServer=async n=>{const{userAgent:t,sipWebSocketServerURL:o,sipServerUrl:r,remoteAddress:s,displayName:c,name:a,password:l,isRegisteredUser:d,isDisconnectOnFail:f}=n;return i.logger("connectToServer",n),this.sipConnector.connect({userAgent:t,sipWebSocketServerURL:o,sipServerUrl:r,remoteAddress:s,displayName:c,password:l,user:a,register:d}).then(g=>(i.logger("connectToServer then"),{ua:g,isSuccessful:!0})).catch(async g=>(i.logger("connectToServer catch: error",g),f===!0?this.sipConnector.disconnect().then(()=>$(g)).catch(()=>$(g)):$(g)))};callToServer=async n=>{const{conference:t,mediaStream:o,extraHeaders:r,iceServers:s,contentHint:c,simulcastEncodings:a,degradationPreference:l,sendEncodings:d,offerToReceiveAudio:f,offerToReceiveVideo:g,directionVideo:I,directionAudio:x,setRemoteStreams:C,onBeforeProgressCall:R,onSuccessProgressCall:h,onEnterPurgatory:S,onEnterConference:y,onFailProgressCall:p,onFinishProgressCall:E,onEndedCall:T}=n,b=this.resolveHandleReadyRemoteStreamsDebounced({onReadyRemoteStreams:C}),A=this.resolveHandleReadyRemoteStreams({onReadyRemoteStreams:()=>{b().catch(_)}}),O=D({degradationPreference:l},{preferredMimeTypesVideoCodecs:this.preferredMimeTypesVideoCodecs,excludeMimeTypesVideoCodecs:this.excludeMimeTypesVideoCodecs});i.logger("callToServer",n);const N=async()=>(i.logger("startCall"),this.sipConnector.call({mediaStream:o,extraHeaders:r,iceServers:s,contentHint:c,offerToReceiveAudio:f,offerToReceiveVideo:g,directionVideo:I,directionAudio:x,sendEncodings:w({mediaStream:o,simulcastEncodings:a,sendEncodings:d}),number:t,onAddedTransceiver:O,ontrack:A}));let M=!1,v;const B=(i.logger("subscribeEnterConference: onEnterConference",y),S??y?this.sipConnector.on("api:enterRoom",({room:u})=>{i.logger("enterRoom",{_room:u,isSuccessProgressCall:M}),v=u,P(v)?S&&S():y&&y({isSuccessProgressCall:M})}):()=>{}),U=u=>(i.logger("onSuccess"),M=!0,b().catch(_),h&&h({isPurgatory:P(v)}),this.sipConnector.onceRace(["call:ended","call:failed"],()=>{B(),T&&T()}),u),V=u=>{throw i.logger("onFail"),p&&p(),B(),u},L=()=>{i.logger("onFinish"),E&&E()};return i.logger("onBeforeProgressCall"),R&&R(t),N().then(U).catch(u=>V(u)).finally(L)};disconnectFromServer=async()=>this.sipConnector.disconnect().then(()=>(i.logger("disconnectFromServer: then"),{isSuccessful:!0})).catch(n=>(i.logger("disconnectFromServer: catch",n),{isSuccessful:!1}));answerToIncomingCall=async n=>{const{mediaStream:t,extraHeaders:o,iceServers:r,contentHint:s,simulcastEncodings:c,degradationPreference:a,sendEncodings:l,offerToReceiveAudio:d,offerToReceiveVideo:f,directionVideo:g,directionAudio:I,setRemoteStreams:x,onBeforeProgressCall:C,onSuccessProgressCall:R,onEnterPurgatory:h,onEnterConference:S,onFailProgressCall:y,onFinishProgressCall:p,onEndedCall:E}=n,T=this.resolveHandleReadyRemoteStreamsDebounced({onReadyRemoteStreams:x}),b=this.resolveHandleReadyRemoteStreams({onReadyRemoteStreams:()=>{T().catch(_)}}),A=D({degradationPreference:a},{preferredMimeTypesVideoCodecs:this.preferredMimeTypesVideoCodecs,excludeMimeTypesVideoCodecs:this.excludeMimeTypesVideoCodecs});i.logger("answerToIncomingCall",n);const O=async()=>this.sipConnector.answerToIncomingCall({mediaStream:t,extraHeaders:o,iceServers:r,contentHint:s,offerToReceiveAudio:d,offerToReceiveVideo:f,directionVideo:g,directionAudio:I,sendEncodings:w({mediaStream:t,simulcastEncodings:c,sendEncodings:l}),onAddedTransceiver:A,ontrack:b}),N=()=>{const{remoteCallerData:u}=this.sipConnector;return u.incomingNumber};let M=!1,v;const B=(i.logger("subscribeEnterConference: onEnterConference",S),h??S?this.sipConnector.on("api:enterRoom",u=>{i.logger("enterRoom",{_room:u,isSuccessProgressCall:M}),v=u,P(v)?h&&h():S&&S({isSuccessProgressCall:M})}):()=>{}),U=u=>(i.logger("onSuccess"),M=!0,T().catch(_),R&&R({isPurgatory:P(v)}),this.sipConnector.onceRace(["call:ended","call:failed"],()=>{B(),E&&E()}),u),V=u=>{throw i.logger("onFail"),y&&y(),B(),u},L=()=>{i.logger("onFinish"),p&&p()};if(i.logger("onBeforeProgressCall"),C){const u=N();C(u)}return O().then(U).catch(u=>V(u)).finally(L)};updatePresentation=async({mediaStream:n,isP2P:t,maxBitrate:o,contentHint:r,simulcastEncodings:s,degradationPreference:c,sendEncodings:a,preferredMimeTypesVideoCodecs:l,excludeMimeTypesVideoCodecs:d})=>{const f=D({degradationPreference:c},{preferredMimeTypesVideoCodecs:l,excludeMimeTypesVideoCodecs:d});return i.logger("updatePresentation"),this.sipConnector.updatePresentation(n,{isP2P:t,maxBitrate:o,contentHint:r,sendEncodings:w({mediaStream:n,simulcastEncodings:s,sendEncodings:a}),onAddedTransceiver:f})};startPresentation=async({mediaStream:n,isP2P:t,maxBitrate:o,contentHint:r,simulcastEncodings:s,degradationPreference:c,sendEncodings:a,preferredMimeTypesVideoCodecs:l,excludeMimeTypesVideoCodecs:d,callLimit:f})=>{const g=D({degradationPreference:c},{preferredMimeTypesVideoCodecs:l,excludeMimeTypesVideoCodecs:d});return i.logger("startPresentation"),this.sipConnector.startPresentation(n,{isP2P:t,maxBitrate:o,contentHint:r,callLimit:f,sendEncodings:w({mediaStream:n,simulcastEncodings:s,sendEncodings:a}),onAddedTransceiver:g})};stopShareSipConnector=async({isP2P:n=!1}={})=>(i.logger("stopShareSipConnector"),this.sipConnector.stopPresentation({isP2P:n}).catch(t=>{i.logger(t)}));sendRefusalToTurnOnMic=async()=>{i.logger("sendRefusalToTurnOnMic"),await this.sipConnector.sendRefusalToTurnOnMic().catch(n=>{i.logger("sendRefusalToTurnOnMic: error",n)})};sendRefusalToTurnOnCam=async()=>{i.logger("sendRefusalToTurnOnCam"),await this.sipConnector.sendRefusalToTurnOnCam().catch(n=>{i.logger("sendRefusalToTurnOnCam: error",n)})};sendMediaState=async({isEnabledCam:n,isEnabledMic:t})=>{i.logger("sendMediaState"),await this.sipConnector.sendMediaState({cam:n,mic:t})};replaceMediaStream=async(n,{deleteExisting:t,addMissing:o,forceRenegotiation:r,contentHint:s,simulcastEncodings:c,degradationPreference:a,sendEncodings:l}={})=>{const d=D({degradationPreference:a},{preferredMimeTypesVideoCodecs:this.preferredMimeTypesVideoCodecs,excludeMimeTypesVideoCodecs:this.excludeMimeTypesVideoCodecs});return i.logger("replaceMediaStream"),this.sipConnector.replaceMediaStream(n,{deleteExisting:t,addMissing:o,forceRenegotiation:r,contentHint:s,sendEncodings:w({mediaStream:n,simulcastEncodings:c,sendEncodings:l}),onAddedTransceiver:d})};askPermissionToEnableCam=async()=>{i.logger("askPermissionToEnableCam"),await this.sipConnector.askPermissionToEnableCam()};resolveHandleReadyRemoteStreamsDebounced=({onReadyRemoteStreams:n})=>ae.debounce(()=>{const t=this.sipConnector.getRemoteStreams();i.logger("remoteStreams",t),t&&n(t)},200);resolveHandleReadyRemoteStreams=({onReadyRemoteStreams:n})=>({track:t})=>{xe(t)&&n()};getRemoteStreams=()=>(i.logger("getRemoteStreams"),this.sipConnector.getRemoteStreams());onUseLicense=n=>(i.logger("onUseLicense"),this.sipConnector.on("api:useLicense",n));onMustStopPresentation=n=>(i.logger("onMustStopPresentation"),this.sipConnector.on("api:mustStopPresentation",n));onMoveToSpectators=n=>(i.logger("onMoveToSpectators"),this.sipConnector.on("api:participant:move-request-to-spectators",n));onMoveToParticipants=n=>(i.logger("onMoveToParticipants"),this.sipConnector.on("api:participant:move-request-to-participants",n))}const k=e=>{const{url:n,cause:t}=e;let o=n;return(t===i.ECallCause.BAD_MEDIA_DESCRIPTION||t===i.ECallCause.NOT_FOUND)&&(o=`${e.message.to.uri.user}@${e.message.to.uri.host}`),o};var te=(e=>(e.CONNECT_SERVER_FAILED="CONNECT_SERVER_FAILED",e.WRONG_USER_OR_PASSWORD="WRONG_USER_OR_PASSWORD",e.BAD_MEDIA_ERROR="BAD_MEDIA_ERROR",e.NOT_FOUND_ERROR="NOT_FOUND_ERROR",e.WS_CONNECTION_FAILED="WS_CONNECTION_FAILED",e.CONNECT_SERVER_FAILED_BY_LINK="CONNECT_SERVER_FAILED_BY_LINK",e))(te||{});const Ue=new Error("Unknown error"),Ve=(e=Ue)=>{const{cause:n,socket:t}=e;let o="CONNECT_SERVER_FAILED";switch(n){case"Forbidden":{o="WRONG_USER_OR_PASSWORD";break}case i.ECallCause.BAD_MEDIA_DESCRIPTION:{o="BAD_MEDIA_ERROR";break}case i.ECallCause.NOT_FOUND:{o="NOT_FOUND_ERROR";break}default:t!==void 0&&t._ws?.readyState===3?o="WS_CONNECTION_FAILED":k(e)!==void 0&&k(e)!==""&&(o="CONNECT_SERVER_FAILED_BY_LINK")}return o},Le=e=>{let n="";try{n=JSON.stringify(e)}catch(t){i.logger("failed to stringify message",t)}return n},He=new Error("Unknown error"),$e=(e=He)=>{const{code:n,cause:t,message:o}=e,r=k(e),s={code:"",cause:"",message:""};return typeof o=="object"&&o!==null?s.message=Le(o):o&&(s.message=String(o)),r!==void 0&&r!==""&&(s.link=r),n!==void 0&&n!==""&&(s.code=n),t!==void 0&&t!==""&&(s.cause=t),s},qe=Object.freeze(Object.defineProperty({__proto__:null,EErrorTypes:te,getLinkError:k,getTypeFromError:Ve,getValuesFromError:$e},Symbol.toStringTag,{value:"Module"})),Je=({sessionId:e,remoteAddress:n,isMutedAudio:t,isMutedVideo:o,isRegistered:r,isPresentationCall:s})=>{const c=[],a=t?"0":"1",l=o?"0":"1";return c.push(`X-Vinteo-Mic-State: ${a}`,`X-Vinteo-MainCam-State: ${l}`),(r===!1||r===void 0)&&c.push("X-Vinteo-Purgatory-Call: yes"),e!==void 0&&e!==""&&c.push(`X-Vinteo-Session: ${e}`),s===!0&&c.push("X-Vinteo-Presentation-Call: yes"),n!==void 0&&n!==""&&c.push(`X-Vinteo-Remote: ${n}`),c},Xe="[@*!|]",je="_",We=e=>{let n=e;return n=n.replaceAll(new RegExp(Xe,"g"),je),n},Ge=({appName:e,appVersion:n,browserName:t,browserVersion:o})=>{const s=`${We(e)} ${n}`;return`ChromeNew - ${t===void 0?s:`${t} ${o}, ${s}`}`},Ke=({isUnifiedSdpSemantic:e,appVersion:n,browserName:t,browserVersion:o,appName:r})=>e?Ge({appVersion:n,browserName:t,browserVersion:o,appName:r}):"Chrome",Ye=e=>n=>[...n].map(o=>async()=>e(o)),ze=async({accumulatedKeys:e,sendKey:n,canRunTask:t})=>{const r=Ye(n)(e);return le.sequentPromises(r,t)},Qe=e=>t=>(i.logger("onStartMainCam"),e.on("api:admin-start-main-cam",t)),Ze=e=>t=>(i.logger("onStartMic"),e.on("api:admin-start-mic",t)),en=e=>t=>(i.logger("onStopMainCam"),e.on("api:admin-stop-main-cam",t)),nn=e=>t=>(i.logger("onStopMic"),e.on("api:admin-stop-mic",t)),tn=({sipConnector:e})=>{const n=(C,R)=>({isSyncForced:h})=>{if(h===!0){C();return}R()},t=Qe(e),o=en(e),r=Ze(e),s=nn(e);let c,a,l,d;const f=({onStartMainCamForced:C,onStartMainCamNotForced:R,onStopMainCamForced:h,onStopMainCamNotForced:S,onStartMicForced:y,onStartMicNotForced:p,onStopMicForced:E,onStopMicNotForced:T})=>{const b=n(C,R);c=t(b);const A=n(h,S);a=o(A);const O=n(y,p);l=r(O);const N=n(E,T);d=s(N)},g=()=>{c?.(),a?.(),l?.(),d?.()};return{start:C=>{f(C)},stop:()=>{g()}}},on=Object.freeze(Object.defineProperty({__proto__:null,PURGATORY_CONFERENCE_NUMBER:ne,createSyncMediaState:tn,error:qe,getExtraHeaders:Je,getUserAgent:Ke,hasPurgatory:P,sendDtmfAccumulated:ze},Symbol.toStringTag,{value:"Module"}));var oe=(e=>(e.VP8="video/VP8",e.VP9="video/VP9",e.H264="video/H264",e.AV1="video/AV1",e.rtx="video/rtx",e.red="video/red",e.flexfec03="video/flexfec-03",e))(oe||{});const rn=e=>[...e.keys()].map(n=>e.get(n)),sn=(e,n)=>rn(e).find(t=>t?.type===n),re=async e=>e.getStats().then(n=>sn(n,"codec")?.mimeType),cn=e=>e.find(n=>n.track?.kind==="video"),an=async(e,n,t)=>{const{isChanged:o,parameters:r}=await q(e,{encodings:[{scaleResolutionDownBy:n.scaleResolutionDownBy,maxBitrate:n.maxBitrate}]});return o&&t&&t(r),{isChanged:o,parameters:r}},se=ue.createStackPromises(),ln=async()=>se().catch(e=>{i.logger("videoSendingBalancer: error",e)}),un=async e=>(se.add(e),ln()),J=async({sender:e,scaleResolutionDownBy:n,maxBitrate:t,onSetParameters:o})=>un(async()=>an(e,{scaleResolutionDownBy:n,maxBitrate:t},o)),dn=async({sender:e,codec:n},t)=>{const r=Be(n);return J({sender:e,maxBitrate:r,onSetParameters:t,scaleResolutionDownBy:200})},F=async({sender:e,videoTrack:n,codec:t},o)=>{const c=n.getSettings().width,a=Z(c??0,t);return J({sender:e,maxBitrate:a,onSetParameters:o,scaleResolutionDownBy:1})},gn=async({sender:e,videoTrack:n,resolution:t,codec:o},r)=>{const[s,c]=t.split("x"),{maxBitrate:a,scaleResolutionDownBy:l}=ee({videoTrack:n,codec:o,targetSize:{width:Number(s),height:Number(c)}});return J({sender:e,maxBitrate:a,onSetParameters:r,scaleResolutionDownBy:l})},fn=async({mainCam:e,resolutionMainCam:n,sender:t,videoTrack:o,codec:r},s)=>{switch(e){case i.EEventsMainCAM.PAUSE_MAIN_CAM:return dn({sender:t,codec:r},s);case i.EEventsMainCAM.RESUME_MAIN_CAM:return F({sender:t,videoTrack:o,codec:r},s);case i.EEventsMainCAM.MAX_MAIN_CAM_RESOLUTION:return n!==void 0?gn({sender:t,videoTrack:o,codec:r,resolution:n},s):F({sender:t,videoTrack:o,codec:r},s);case i.EEventsMainCAM.ADMIN_STOP_MAIN_CAM:case i.EEventsMainCAM.ADMIN_START_MAIN_CAM:case void 0:return F({sender:t,videoTrack:o,codec:r},s);default:return F({sender:t,videoTrack:o,codec:r},s)}},X={isChanged:!1,parameters:{encodings:[{}],transactionId:"0",codecs:[],headerExtensions:[],rtcp:{}}},j=async({mainCam:e,resolutionMainCam:n,connection:t,onSetParameters:o,ignoreForCodec:r})=>{const s=t.getSenders(),c=cn(s);if(!c?.track)return X;const a=await re(c);return z(a,r)?X:fn({mainCam:e,resolutionMainCam:n,sender:c,codec:a,videoTrack:c.track},o)},Cn=(e,{ignoreForCodec:n,onSetParameters:t}={})=>{const o=async()=>{const{connection:l}=e;if(!l)throw new Error("connection is not exist");return j({connection:l,onSetParameters:t,ignoreForCodec:n})};let r=o;const s=l=>{r=async()=>{const{mainCam:d,resolutionMainCam:f}=l,{connection:g}=e;if(!g)throw new Error("connection is not exist");return j({mainCam:d,resolutionMainCam:f,connection:g,onSetParameters:t,ignoreForCodec:n})},r().catch(_)};return{subscribe:()=>{e.on("api:main-cam-control",s)},unsubscribe:()=>{e.off("api:main-cam-control",s)},balanceByTrack:o,resetMainCamControl(){r=o},async reBalance(){return r()}}};exports.ECallCause=i.ECallCause;exports.EUseLicense=i.EUseLicense;exports.SipConnector=i.SipConnector;exports.disableDebug=i.disableDebug;exports.enableDebug=i.enableDebug;exports.hasCanceledStartPresentationError=i.hasCanceledStartPresentationError;exports.debug=_;exports.EMimeTypesVideoCodecs=oe;exports.SipConnectorFacade=ke;exports.getCodecFromSender=re;exports.hasCanceledCallError=ge;exports.resolveVideoSendingBalancer=Cn;exports.setParametersToSender=q;exports.tools=on;
|
package/dist/index.d.ts
CHANGED
|
@@ -8,5 +8,6 @@ export { default as setParametersToSender } from './setParametersToSender';
|
|
|
8
8
|
export { SipConnector } from './SipConnector';
|
|
9
9
|
export { SipConnectorFacade } from './SipConnectorFacade';
|
|
10
10
|
export * as tools from './tools';
|
|
11
|
+
export { EMimeTypesVideoCodecs } from './types';
|
|
11
12
|
export { default as getCodecFromSender } from './utils/getCodecFromSender';
|
|
12
13
|
export { default as resolveVideoSendingBalancer } from './videoSendingBalancer';
|
package/dist/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import "events-constructor";
|
|
2
2
|
import { E as y, O as ce, l as c, a as w } from "./@SipConnector-7Q9X7euI.js";
|
|
3
|
-
import { b as On, S as
|
|
3
|
+
import { b as On, S as Nn, d as Bn, e as wn, h as Dn } from "./@SipConnector-7Q9X7euI.js";
|
|
4
4
|
import { isCanceledError as K } from "@krivega/cancelable-promise";
|
|
5
5
|
import { hasCanceledError as ae } from "repeated-calls";
|
|
6
6
|
import { debounce as ue } from "ts-debounce";
|
|
7
7
|
import I from "debug";
|
|
8
|
-
import { default as
|
|
8
|
+
import { default as In } from "debug";
|
|
9
9
|
import { sequentPromises as de } from "sequent-promises";
|
|
10
10
|
import { createStackPromises as le } from "stack-promises";
|
|
11
|
-
const fe = (e) => e instanceof Object && ("originator" in e || "cause" in e),
|
|
11
|
+
const fe = (e) => e instanceof Object && ("originator" in e || "cause" in e), Tn = (e) => {
|
|
12
12
|
if (K(e))
|
|
13
13
|
return !0;
|
|
14
14
|
if (!fe(e))
|
|
@@ -26,17 +26,17 @@ const fe = (e) => e instanceof Object && ("originator" in e || "cause" in e), En
|
|
|
26
26
|
}, me = (e, n) => {
|
|
27
27
|
const t = e.maxBitrate, o = Se(n, t);
|
|
28
28
|
return o !== void 0 && (e.maxBitrate = o), e;
|
|
29
|
-
}, q = 1,
|
|
29
|
+
}, q = 1, Re = Y(
|
|
30
30
|
q
|
|
31
|
-
),
|
|
31
|
+
), pe = (e, n) => {
|
|
32
32
|
const t = e === void 0 ? void 0 : Math.max(e, q);
|
|
33
|
-
if (t !== void 0 &&
|
|
33
|
+
if (t !== void 0 && Re(
|
|
34
34
|
t,
|
|
35
35
|
n
|
|
36
36
|
))
|
|
37
37
|
return t;
|
|
38
38
|
}, ye = (e, n) => {
|
|
39
|
-
const t = e.scaleResolutionDownBy, o =
|
|
39
|
+
const t = e.scaleResolutionDownBy, o = pe(
|
|
40
40
|
n,
|
|
41
41
|
t
|
|
42
42
|
);
|
|
@@ -71,7 +71,7 @@ const fe = (e) => e instanceof Object && ("originator" in e || "cause" in e), En
|
|
|
71
71
|
Ee(t, n), he(t, n);
|
|
72
72
|
const s = Te(o, t);
|
|
73
73
|
return s && await e.setParameters(t), { parameters: t, isChanged: s };
|
|
74
|
-
},
|
|
74
|
+
}, ve = (e) => e.getVideoTracks()[0], Me = 1e6, m = (e) => e * Me, Q = m(0.06), be = m(4), _e = (e) => e <= 64 ? Q : e <= 128 ? m(0.12) : e <= 256 ? m(0.25) : e <= 384 ? m(0.32) : e <= 426 ? m(0.38) : e <= 640 ? m(0.5) : e <= 848 ? m(0.7) : e <= 1280 ? m(1) : e <= 1920 ? m(2) : be, Z = (e, n) => e !== void 0 && n !== void 0 && e.toLowerCase().includes(n.toLowerCase()), Ae = "av1", Oe = (e) => Z(e, Ae), Ne = 0.6, ee = (e, n) => Oe(n) ? e * Ne : e, Be = (e) => ee(Q, e), ne = (e, n) => {
|
|
75
75
|
const t = _e(e);
|
|
76
76
|
return ee(t, n);
|
|
77
77
|
}, J = 1, te = ({
|
|
@@ -87,7 +87,7 @@ const fe = (e) => e instanceof Object && ("originator" in e || "cause" in e), En
|
|
|
87
87
|
sendEncodings: t
|
|
88
88
|
}) => {
|
|
89
89
|
if (n && n.length > 0) {
|
|
90
|
-
const o = t ?? [], s =
|
|
90
|
+
const o = t ?? [], s = ve(e);
|
|
91
91
|
if (s === void 0)
|
|
92
92
|
throw new Error("No video track");
|
|
93
93
|
return n.forEach((r, i) => {
|
|
@@ -144,7 +144,7 @@ const fe = (e) => e instanceof Object && ("originator" in e || "cause" in e), En
|
|
|
144
144
|
"isConfigured",
|
|
145
145
|
"isRegistered"
|
|
146
146
|
]);
|
|
147
|
-
class
|
|
147
|
+
class vn {
|
|
148
148
|
// @ts-expect-error: proxy method
|
|
149
149
|
on;
|
|
150
150
|
// @ts-expect-error: proxy method
|
|
@@ -231,20 +231,20 @@ class Tn {
|
|
|
231
231
|
directionVideo: F,
|
|
232
232
|
directionAudio: k,
|
|
233
233
|
setRemoteStreams: g,
|
|
234
|
-
onBeforeProgressCall:
|
|
234
|
+
onBeforeProgressCall: R,
|
|
235
235
|
onSuccessProgressCall: C,
|
|
236
236
|
onEnterPurgatory: S,
|
|
237
|
-
onEnterConference:
|
|
237
|
+
onEnterConference: p,
|
|
238
238
|
onFailProgressCall: E,
|
|
239
239
|
onFinishProgressCall: T,
|
|
240
|
-
onEndedCall:
|
|
240
|
+
onEndedCall: v
|
|
241
241
|
} = n, _ = this.resolveHandleReadyRemoteStreamsDebounced({
|
|
242
242
|
onReadyRemoteStreams: g
|
|
243
|
-
}),
|
|
243
|
+
}), A = this.resolveHandleReadyRemoteStreams({
|
|
244
244
|
onReadyRemoteStreams: () => {
|
|
245
245
|
_().catch(I);
|
|
246
246
|
}
|
|
247
|
-
}),
|
|
247
|
+
}), O = P(
|
|
248
248
|
{
|
|
249
249
|
degradationPreference: u
|
|
250
250
|
},
|
|
@@ -269,21 +269,21 @@ class Tn {
|
|
|
269
269
|
sendEncodings: l
|
|
270
270
|
}),
|
|
271
271
|
number: t,
|
|
272
|
-
onAddedTransceiver:
|
|
273
|
-
ontrack:
|
|
272
|
+
onAddedTransceiver: O,
|
|
273
|
+
ontrack: A
|
|
274
274
|
}));
|
|
275
|
-
let
|
|
276
|
-
const B = (c("subscribeEnterConference: onEnterConference",
|
|
277
|
-
c("enterRoom", { _room: d, isSuccessProgressCall:
|
|
275
|
+
let M = !1, b;
|
|
276
|
+
const B = (c("subscribeEnterConference: onEnterConference", p), S ?? p ? this.sipConnector.on("api:enterRoom", ({ room: d }) => {
|
|
277
|
+
c("enterRoom", { _room: d, isSuccessProgressCall: M }), b = d, x(b) ? S && S() : p && p({ isSuccessProgressCall: M });
|
|
278
278
|
}) : () => {
|
|
279
|
-
}), L = (d) => (c("onSuccess"),
|
|
280
|
-
B(),
|
|
281
|
-
}), d),
|
|
279
|
+
}), L = (d) => (c("onSuccess"), M = !0, _().catch(I), C && C({ isPurgatory: x(b) }), this.sipConnector.onceRace(["call:ended", "call:failed"], () => {
|
|
280
|
+
B(), v && v();
|
|
281
|
+
}), d), H = (d) => {
|
|
282
282
|
throw c("onFail"), E && E(), B(), d;
|
|
283
|
-
},
|
|
283
|
+
}, $ = () => {
|
|
284
284
|
c("onFinish"), T && T();
|
|
285
285
|
};
|
|
286
|
-
return c("onBeforeProgressCall"),
|
|
286
|
+
return c("onBeforeProgressCall"), R && R(t), N().then(L).catch((d) => H(d)).finally($);
|
|
287
287
|
};
|
|
288
288
|
disconnectFromServer = async () => this.sipConnector.disconnect().then(() => (c("disconnectFromServer: then"), { isSuccessful: !0 })).catch((n) => (c("disconnectFromServer: catch", n), { isSuccessful: !1 }));
|
|
289
289
|
answerToIncomingCall = async (n) => {
|
|
@@ -301,19 +301,19 @@ class Tn {
|
|
|
301
301
|
directionAudio: F,
|
|
302
302
|
setRemoteStreams: k,
|
|
303
303
|
onBeforeProgressCall: g,
|
|
304
|
-
onSuccessProgressCall:
|
|
304
|
+
onSuccessProgressCall: R,
|
|
305
305
|
onEnterPurgatory: C,
|
|
306
306
|
onEnterConference: S,
|
|
307
|
-
onFailProgressCall:
|
|
307
|
+
onFailProgressCall: p,
|
|
308
308
|
onFinishProgressCall: E,
|
|
309
309
|
onEndedCall: T
|
|
310
|
-
} = n,
|
|
310
|
+
} = n, v = this.resolveHandleReadyRemoteStreamsDebounced({
|
|
311
311
|
onReadyRemoteStreams: k
|
|
312
312
|
}), _ = this.resolveHandleReadyRemoteStreams({
|
|
313
313
|
onReadyRemoteStreams: () => {
|
|
314
|
-
|
|
314
|
+
v().catch(I);
|
|
315
315
|
}
|
|
316
|
-
}),
|
|
316
|
+
}), A = P(
|
|
317
317
|
{
|
|
318
318
|
degradationPreference: a
|
|
319
319
|
},
|
|
@@ -323,7 +323,7 @@ class Tn {
|
|
|
323
323
|
}
|
|
324
324
|
);
|
|
325
325
|
c("answerToIncomingCall", n);
|
|
326
|
-
const
|
|
326
|
+
const O = async () => this.sipConnector.answerToIncomingCall({
|
|
327
327
|
mediaStream: t,
|
|
328
328
|
extraHeaders: o,
|
|
329
329
|
iceServers: s,
|
|
@@ -337,28 +337,28 @@ class Tn {
|
|
|
337
337
|
simulcastEncodings: i,
|
|
338
338
|
sendEncodings: u
|
|
339
339
|
}),
|
|
340
|
-
onAddedTransceiver:
|
|
340
|
+
onAddedTransceiver: A,
|
|
341
341
|
ontrack: _
|
|
342
342
|
}), N = () => {
|
|
343
343
|
const { remoteCallerData: d } = this.sipConnector;
|
|
344
344
|
return d.incomingNumber;
|
|
345
345
|
};
|
|
346
|
-
let
|
|
346
|
+
let M = !1, b;
|
|
347
347
|
const B = (c("subscribeEnterConference: onEnterConference", S), C ?? S ? this.sipConnector.on("api:enterRoom", (d) => {
|
|
348
|
-
c("enterRoom", { _room: d, isSuccessProgressCall:
|
|
348
|
+
c("enterRoom", { _room: d, isSuccessProgressCall: M }), b = d, x(b) ? C && C() : S && S({ isSuccessProgressCall: M });
|
|
349
349
|
}) : () => {
|
|
350
|
-
}), L = (d) => (c("onSuccess"),
|
|
350
|
+
}), L = (d) => (c("onSuccess"), M = !0, v().catch(I), R && R({ isPurgatory: x(b) }), this.sipConnector.onceRace(["call:ended", "call:failed"], () => {
|
|
351
351
|
B(), T && T();
|
|
352
|
-
}), d),
|
|
353
|
-
throw c("onFail"),
|
|
354
|
-
},
|
|
352
|
+
}), d), H = (d) => {
|
|
353
|
+
throw c("onFail"), p && p(), B(), d;
|
|
354
|
+
}, $ = () => {
|
|
355
355
|
c("onFinish"), E && E();
|
|
356
356
|
};
|
|
357
357
|
if (c("onBeforeProgressCall"), g) {
|
|
358
358
|
const d = N();
|
|
359
359
|
g(d);
|
|
360
360
|
}
|
|
361
|
-
return
|
|
361
|
+
return O().then(L).catch((d) => H(d)).finally($);
|
|
362
362
|
};
|
|
363
363
|
updatePresentation = async ({
|
|
364
364
|
mediaStream: n,
|
|
@@ -533,15 +533,15 @@ const ke = new Error("Unknown error"), Ue = (e = ke) => {
|
|
|
533
533
|
c("failed to stringify message", t);
|
|
534
534
|
}
|
|
535
535
|
return n;
|
|
536
|
-
}, Le = new Error("Unknown error"),
|
|
536
|
+
}, Le = new Error("Unknown error"), He = (e = Le) => {
|
|
537
537
|
const { code: n, cause: t, message: o } = e, s = V(e), r = { code: "", cause: "", message: "" };
|
|
538
538
|
return typeof o == "object" && o !== null ? r.message = Ve(o) : o && (r.message = String(o)), s !== void 0 && s !== "" && (r.link = s), n !== void 0 && n !== "" && (r.code = n), t !== void 0 && t !== "" && (r.cause = t), r;
|
|
539
|
-
},
|
|
539
|
+
}, $e = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
540
540
|
__proto__: null,
|
|
541
541
|
EErrorTypes: se,
|
|
542
542
|
getLinkError: V,
|
|
543
543
|
getTypeFromError: Ue,
|
|
544
|
-
getValuesFromError:
|
|
544
|
+
getValuesFromError: He
|
|
545
545
|
}, Symbol.toStringTag, { value: "Module" })), Je = ({
|
|
546
546
|
sessionId: e,
|
|
547
547
|
remoteAddress: n,
|
|
@@ -577,37 +577,37 @@ const ke = new Error("Unknown error"), Ue = (e = ke) => {
|
|
|
577
577
|
const s = Ye(n)(e);
|
|
578
578
|
return de(s, t);
|
|
579
579
|
}, ze = (e) => (t) => (c("onStartMainCam"), e.on("api:admin-start-main-cam", t)), Qe = (e) => (t) => (c("onStartMic"), e.on("api:admin-start-mic", t)), Ze = (e) => (t) => (c("onStopMainCam"), e.on("api:admin-stop-main-cam", t)), en = (e) => (t) => (c("onStopMic"), e.on("api:admin-stop-mic", t)), nn = ({ sipConnector: e }) => {
|
|
580
|
-
const n = (g,
|
|
580
|
+
const n = (g, R) => ({ isSyncForced: C }) => {
|
|
581
581
|
if (C === !0) {
|
|
582
582
|
g();
|
|
583
583
|
return;
|
|
584
584
|
}
|
|
585
|
-
|
|
585
|
+
R();
|
|
586
586
|
}, t = ze(e), o = Ze(e), s = Qe(e), r = en(e);
|
|
587
587
|
let i, a, u, l;
|
|
588
588
|
const h = ({
|
|
589
589
|
onStartMainCamForced: g,
|
|
590
|
-
onStartMainCamNotForced:
|
|
590
|
+
onStartMainCamNotForced: R,
|
|
591
591
|
onStopMainCamForced: C,
|
|
592
592
|
onStopMainCamNotForced: S,
|
|
593
|
-
onStartMicForced:
|
|
593
|
+
onStartMicForced: p,
|
|
594
594
|
onStartMicNotForced: E,
|
|
595
595
|
onStopMicForced: T,
|
|
596
|
-
onStopMicNotForced:
|
|
596
|
+
onStopMicNotForced: v
|
|
597
597
|
}) => {
|
|
598
598
|
const _ = n(
|
|
599
599
|
g,
|
|
600
|
-
|
|
600
|
+
R
|
|
601
601
|
);
|
|
602
602
|
i = t(_);
|
|
603
|
-
const
|
|
603
|
+
const A = n(
|
|
604
604
|
C,
|
|
605
605
|
S
|
|
606
606
|
);
|
|
607
|
-
a = o(
|
|
608
|
-
const
|
|
609
|
-
u = s(
|
|
610
|
-
const N = n(T,
|
|
607
|
+
a = o(A);
|
|
608
|
+
const O = n(p, E);
|
|
609
|
+
u = s(O);
|
|
610
|
+
const N = n(T, v);
|
|
611
611
|
l = r(N);
|
|
612
612
|
}, f = () => {
|
|
613
613
|
i?.(), a?.(), u?.(), l?.();
|
|
@@ -624,12 +624,14 @@ const ke = new Error("Unknown error"), Ue = (e = ke) => {
|
|
|
624
624
|
__proto__: null,
|
|
625
625
|
PURGATORY_CONFERENCE_NUMBER: oe,
|
|
626
626
|
createSyncMediaState: nn,
|
|
627
|
-
error:
|
|
627
|
+
error: $e,
|
|
628
628
|
getExtraHeaders: Je,
|
|
629
629
|
getUserAgent: Ke,
|
|
630
630
|
hasPurgatory: x,
|
|
631
631
|
sendDtmfAccumulated: qe
|
|
632
|
-
}, Symbol.toStringTag, { value: "Module" }))
|
|
632
|
+
}, Symbol.toStringTag, { value: "Module" }));
|
|
633
|
+
var tn = /* @__PURE__ */ ((e) => (e.VP8 = "video/VP8", e.VP9 = "video/VP9", e.H264 = "video/H264", e.AV1 = "video/AV1", e.rtx = "video/rtx", e.red = "video/red", e.flexfec03 = "video/flexfec-03", e))(tn || {});
|
|
634
|
+
const on = (e) => [...e.keys()].map((n) => e.get(n)), sn = (e, n) => on(e).find((t) => t?.type === n), rn = async (e) => e.getStats().then((n) => sn(n, "codec")?.mimeType), cn = (e) => e.find((n) => n.track?.kind === "video"), an = async (e, n, t) => {
|
|
633
635
|
const { isChanged: o, parameters: s } = await z(e, {
|
|
634
636
|
encodings: [
|
|
635
637
|
{
|
|
@@ -639,14 +641,14 @@ const ke = new Error("Unknown error"), Ue = (e = ke) => {
|
|
|
639
641
|
]
|
|
640
642
|
});
|
|
641
643
|
return o && t && t(s), { isChanged: o, parameters: s };
|
|
642
|
-
}, re = le(),
|
|
644
|
+
}, re = le(), un = async () => re().catch((e) => {
|
|
643
645
|
c("videoSendingBalancer: error", e);
|
|
644
|
-
}),
|
|
646
|
+
}), dn = async (e) => (re.add(e), un()), W = async ({
|
|
645
647
|
sender: e,
|
|
646
648
|
scaleResolutionDownBy: n,
|
|
647
649
|
maxBitrate: t,
|
|
648
650
|
onSetParameters: o
|
|
649
|
-
}) =>
|
|
651
|
+
}) => dn(async () => an(e, { scaleResolutionDownBy: n, maxBitrate: t }, o)), ln = async ({ sender: e, codec: n }, t) => {
|
|
650
652
|
const s = Be(n);
|
|
651
653
|
return W({
|
|
652
654
|
sender: e,
|
|
@@ -666,7 +668,7 @@ const ke = new Error("Unknown error"), Ue = (e = ke) => {
|
|
|
666
668
|
onSetParameters: o,
|
|
667
669
|
scaleResolutionDownBy: 1
|
|
668
670
|
});
|
|
669
|
-
},
|
|
671
|
+
}, fn = async ({
|
|
670
672
|
sender: e,
|
|
671
673
|
videoTrack: n,
|
|
672
674
|
resolution: t,
|
|
@@ -686,7 +688,7 @@ const ke = new Error("Unknown error"), Ue = (e = ke) => {
|
|
|
686
688
|
onSetParameters: s,
|
|
687
689
|
scaleResolutionDownBy: u
|
|
688
690
|
});
|
|
689
|
-
},
|
|
691
|
+
}, hn = async ({
|
|
690
692
|
mainCam: e,
|
|
691
693
|
resolutionMainCam: n,
|
|
692
694
|
sender: t,
|
|
@@ -695,11 +697,11 @@ const ke = new Error("Unknown error"), Ue = (e = ke) => {
|
|
|
695
697
|
}, r) => {
|
|
696
698
|
switch (e) {
|
|
697
699
|
case w.PAUSE_MAIN_CAM:
|
|
698
|
-
return
|
|
700
|
+
return ln({ sender: t, codec: s }, r);
|
|
699
701
|
case w.RESUME_MAIN_CAM:
|
|
700
702
|
return U({ sender: t, videoTrack: o, codec: s }, r);
|
|
701
703
|
case w.MAX_MAIN_CAM_RESOLUTION:
|
|
702
|
-
return n !== void 0 ?
|
|
704
|
+
return n !== void 0 ? fn(
|
|
703
705
|
{ sender: t, videoTrack: o, codec: s, resolution: n },
|
|
704
706
|
r
|
|
705
707
|
) : U({ sender: t, videoTrack: o, codec: s }, r);
|
|
@@ -726,11 +728,11 @@ const ke = new Error("Unknown error"), Ue = (e = ke) => {
|
|
|
726
728
|
onSetParameters: o,
|
|
727
729
|
ignoreForCodec: s
|
|
728
730
|
}) => {
|
|
729
|
-
const r = t.getSenders(), i =
|
|
731
|
+
const r = t.getSenders(), i = cn(r);
|
|
730
732
|
if (!i?.track)
|
|
731
733
|
return j;
|
|
732
|
-
const a = await
|
|
733
|
-
return Z(a, s) ? j :
|
|
734
|
+
const a = await rn(i);
|
|
735
|
+
return Z(a, s) ? j : hn(
|
|
734
736
|
{
|
|
735
737
|
mainCam: e,
|
|
736
738
|
resolutionMainCam: n,
|
|
@@ -740,7 +742,7 @@ const ke = new Error("Unknown error"), Ue = (e = ke) => {
|
|
|
740
742
|
},
|
|
741
743
|
o
|
|
742
744
|
);
|
|
743
|
-
},
|
|
745
|
+
}, bn = (e, {
|
|
744
746
|
ignoreForCodec: n,
|
|
745
747
|
onSetParameters: t
|
|
746
748
|
} = {}) => {
|
|
@@ -787,16 +789,17 @@ const ke = new Error("Unknown error"), Ue = (e = ke) => {
|
|
|
787
789
|
};
|
|
788
790
|
export {
|
|
789
791
|
y as ECallCause,
|
|
792
|
+
tn as EMimeTypesVideoCodecs,
|
|
790
793
|
On as EUseLicense,
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
794
|
+
Nn as SipConnector,
|
|
795
|
+
vn as SipConnectorFacade,
|
|
796
|
+
In as debug,
|
|
797
|
+
Bn as disableDebug,
|
|
798
|
+
wn as enableDebug,
|
|
799
|
+
rn as getCodecFromSender,
|
|
800
|
+
Tn as hasCanceledCallError,
|
|
801
|
+
Dn as hasCanceledStartPresentationError,
|
|
802
|
+
bn as resolveVideoSendingBalancer,
|
|
800
803
|
z as setParametersToSender,
|
|
801
804
|
Mn as tools
|
|
802
805
|
};
|
package/dist/types.d.ts
CHANGED
|
@@ -13,3 +13,12 @@ export type TSimulcastEncoding = TSize & {
|
|
|
13
13
|
rid?: string;
|
|
14
14
|
scalabilityMode?: string;
|
|
15
15
|
};
|
|
16
|
+
export declare enum EMimeTypesVideoCodecs {
|
|
17
|
+
VP8 = "video/VP8",
|
|
18
|
+
VP9 = "video/VP9",
|
|
19
|
+
H264 = "video/H264",
|
|
20
|
+
AV1 = "video/AV1",
|
|
21
|
+
rtx = "video/rtx",
|
|
22
|
+
red = "video/red",
|
|
23
|
+
flexfec03 = "video/flexfec-03"
|
|
24
|
+
}
|