trtc-sdk-v5 5.11.2-beta.6 → 5.11.2-wasm.2
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/assets/av_processing.wasm +0 -0
- package/assets/worker.js +17 -0
- package/package.json +4 -6
- package/plugins/cdn-streaming/cdn-streaming.esm.js +1 -1
- package/plugins/cdn-streaming/cdn-streaming.umd.js +1 -1
- package/plugins/cdn-streaming/package.json +1 -1
- package/plugins/cross-room/cross-room.esm.js +1 -1
- package/plugins/cross-room/cross-room.umd.js +1 -1
- package/plugins/cross-room/package.json +1 -1
- package/plugins/custom-encryption/custom-encryption.esm.js +1 -1
- package/plugins/custom-encryption/custom-encryption.umd.js +1 -1
- package/plugins/custom-encryption/package.json +1 -1
- package/plugins/device-detector/device-detector.esm.js +36 -24
- package/plugins/device-detector/device-detector.umd.js +21 -7
- package/plugins/device-detector/package.json +1 -1
- package/plugins/small-stream-auto-switcher/package.json +1 -1
- package/plugins/small-stream-auto-switcher/small-stream-auto-switcher.esm.js +1 -1
- package/plugins/small-stream-auto-switcher/small-stream-auto-switcher.umd.js +1 -1
- package/plugins/video-decoder/package.json +1 -1
- package/plugins/video-decoder/video-decoder.esm.js +1 -1
- package/plugins/video-decoder/video-decoder.umd.js +1 -1
- package/plugins/video-effect/basic-beauty/basic-beauty.esm.js +1 -1
- package/plugins/video-effect/basic-beauty/basic-beauty.umd.js +1 -1
- package/plugins/video-effect/basic-beauty/package.json +1 -1
- package/plugins/video-effect/beauty/beauty.esm.js +1 -1
- package/plugins/video-effect/beauty/beauty.umd.js +1 -1
- package/plugins/video-effect/beauty/package.json +1 -1
- package/plugins/video-effect/video-mixer/package.json +1 -1
- package/plugins/video-effect/video-mixer/video-mixer.esm.js +1 -1
- package/plugins/video-effect/video-mixer/video-mixer.umd.js +1 -1
- package/plugins/video-effect/virtual-background/package.json +1 -1
- package/plugins/video-effect/virtual-background/virtual-background.esm.js +1 -1
- package/plugins/video-effect/virtual-background/virtual-background.umd.js +1 -1
- package/plugins/video-effect/watermark/package.json +1 -1
- package/plugins/video-effect/watermark/watermark.esm.js +1 -1
- package/plugins/video-effect/watermark/watermark.umd.js +1 -1
- package/plugins/voice-changer/package.json +1 -1
- package/plugins/voice-changer/voice-changer.esm.js +1 -1
- package/plugins/voice-changer/voice-changer.umd.js +1 -1
- package/trtc.esm.js +64 -43
- package/trtc.js +1 -1
package/trtc.esm.js
CHANGED
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
var Tf=Object.create;var es=Object.defineProperty,Ef=Object.defineProperties,Ju=Object.getOwnPropertyDescriptor,Sf=Object.getOwnPropertyDescriptors,If=Object.getOwnPropertyNames,Sn=Object.getOwnPropertySymbols,ju=Object.getPrototypeOf,wc=Object.prototype.hasOwnProperty,qu=Object.prototype.propertyIsEnumerable,Af=Reflect.get;var Zi=Math.pow,Lc=(o,i,e)=>i in o?es(o,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):o[i]=e,N=(o,i)=>{for(var e in i||(i={}))wc.call(i,e)&&Lc(o,e,i[e]);if(Sn)for(var e of Sn(i))qu.call(i,e)&&Lc(o,e,i[e]);return o},L=(o,i)=>Ef(o,Sf(i));var Xu=(o,i)=>{var e={};for(var t in o)wc.call(o,t)&&i.indexOf(t)<0&&(e[t]=o[t]);if(o!=null&&Sn)for(var t of Sn(o))i.indexOf(t)<0&&qu.call(o,t)&&(e[t]=o[t]);return e};var Ei=(o,i)=>()=>(i||o((i={exports:{}}).exports,i),i.exports),Si=(o,i)=>{for(var e in i)es(o,e,{get:i[e],enumerable:!0})},Rf=(o,i,e,t)=>{if(i&&typeof i=="object"||typeof i=="function")for(let r of If(i))!wc.call(o,r)&&r!==e&&es(o,r,{get:()=>i[r],enumerable:!(t=Ju(i,r))||t.enumerable});return o};var $e=(o,i,e)=>(e=o!=null?Tf(ju(o)):{},Rf(i||!o||!o.__esModule?es(e,"default",{value:o,enumerable:!0}):e,o));var v=(o,i,e,t)=>{for(var r=t>1?void 0:t?Ju(i,e):i,s=o.length-1,n;s>=0;s--)(n=o[s])&&(r=(t?n(i,e,r):n(r))||r);return t&&r&&es(i,e,r),r};var d=(o,i,e)=>Lc(o,typeof i!="symbol"?i+"":i,e);var He=(o,i,e)=>Af(ju(o),e,i);var f=(o,i,e)=>new Promise((t,r)=>{var s=c=>{try{a(e.next(c))}catch(l){r(l)}},n=c=>{try{a(e.throw(c))}catch(l){r(l)}},a=c=>c.done?t(c.value):Promise.resolve(c.value).then(s,n);a((e=e.apply(o,i)).next())});var Ye=Ei((ME,Vc)=>{"use strict";var Cf=Object.prototype.hasOwnProperty,Qe="~";function ts(){}Object.create&&(ts.prototype=Object.create(null),new ts().__proto__||(Qe=!1));function yf(o,i,e){this.fn=o,this.context=i,this.once=e||!1}function zu(o,i,e,t,r){if(typeof e!="function")throw new TypeError("The listener must be a function");var s=new yf(e,t||o,r),n=Qe?Qe+i:i;return o._events[n]?o._events[n].fn?o._events[n]=[o._events[n],s]:o._events[n].push(s):(o._events[n]=s,o._eventsCount++),o}function In(o,i){--o._eventsCount===0?o._events=new ts:delete o._events[i]}function We(){this._events=new ts,this._eventsCount=0}We.prototype.eventNames=function(){var i=[],e,t;if(this._eventsCount===0)return i;for(t in e=this._events)Cf.call(e,t)&&i.push(Qe?t.slice(1):t);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i};We.prototype.listeners=function(i){var e=Qe?Qe+i:i,t=this._events[e];if(!t)return[];if(t.fn)return[t.fn];for(var r=0,s=t.length,n=new Array(s);r<s;r++)n[r]=t[r].fn;return n};We.prototype.listenerCount=function(i){var e=Qe?Qe+i:i,t=this._events[e];return t?t.fn?1:t.length:0};We.prototype.emit=function(i,e,t,r,s,n){var a=Qe?Qe+i:i;if(!this._events[a])return!1;var c=this._events[a],l=arguments.length,h,u;if(c.fn){switch(c.once&&this.removeListener(i,c.fn,void 0,!0),l){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,e),!0;case 3:return c.fn.call(c.context,e,t),!0;case 4:return c.fn.call(c.context,e,t,r),!0;case 5:return c.fn.call(c.context,e,t,r,s),!0;case 6:return c.fn.call(c.context,e,t,r,s,n),!0}for(u=1,h=new Array(l-1);u<l;u++)h[u-1]=arguments[u];c.fn.apply(c.context,h)}else{var m=c.length,g;for(u=0;u<m;u++)switch(c[u].once&&this.removeListener(i,c[u].fn,void 0,!0),l){case 1:c[u].fn.call(c[u].context);break;case 2:c[u].fn.call(c[u].context,e);break;case 3:c[u].fn.call(c[u].context,e,t);break;case 4:c[u].fn.call(c[u].context,e,t,r);break;default:if(!h)for(g=1,h=new Array(l-1);g<l;g++)h[g-1]=arguments[g];c[u].fn.apply(c[u].context,h)}}return!0};We.prototype.on=function(i,e,t){return zu(this,i,e,t,!1)};We.prototype.once=function(i,e,t){return zu(this,i,e,t,!0)};We.prototype.removeListener=function(i,e,t,r){var s=Qe?Qe+i:i;if(!this._events[s])return this;if(!e)return In(this,s),this;var n=this._events[s];if(n.fn)n.fn===e&&(!r||n.once)&&(!t||n.context===t)&&In(this,s);else{for(var a=0,c=[],l=n.length;a<l;a++)(n[a].fn!==e||r&&!n[a].once||t&&n[a].context!==t)&&c.push(n[a]);c.length?this._events[s]=c.length===1?c[0]:c:In(this,s)}return this};We.prototype.removeAllListeners=function(i){var e;return i?(e=Qe?Qe+i:i,this._events[e]&&In(this,e)):(this._events=new ts,this._eventsCount=0),this};We.prototype.off=We.prototype.removeListener;We.prototype.addListener=We.prototype.on;We.prefixed=Qe;We.EventEmitter=We;typeof Vc!="undefined"&&(Vc.exports=We)});var ca=Ei((PS,wh)=>{"use strict";var Lh=wh.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(o){return o.encoding?"rtpmap:%d %s/%s/%s":o.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(o){return o.address!=null?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(o){return o.subtype!=null?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(o){return"extmap:%d"+(o.direction?"/%s":"%v")+(o["encrypt-uri"]?" %s":"%v")+" %s"+(o.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(o){return o.sessionConfig!=null?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(o){var i="candidate:%s %d %s %d %s %d typ %s";return i+=o.raddr!=null?" raddr %s rport %d":"%v%v",i+=o.tcptype!=null?" tcptype %s":"%v",o.generation!=null&&(i+=" generation %d"),i+=o["network-id"]!=null?" network-id %d":"%v",i+=o["network-cost"]!=null?" network-cost %d":"%v",i}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(o){var i="ssrc:%d";return o.attribute!=null&&(i+=" %s",o.value!=null&&(i+=":%s")),i}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(o){return o.maxMessageSize!=null?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(o){return o.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(o){return"imageattr:%s %s %s"+(o.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(o){return"simulcast:%s %s"+(o.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(o){return"ts-refclk:%s"+(o.clksrcExt!=null?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(o){var i="mediaclk:";return i+=o.id!=null?"id=%s %s":"%v%s",i+=o.mediaClockValue!=null?"=%s":"",i+=o.rateNumerator!=null?" rate=%s":"",i+=o.rateDenominator!=null?"/%s":"",i}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(Lh).forEach(function(o){var i=Lh[o];i.forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})})});var Bh=Ei(Li=>{"use strict";var No=function(o){return String(Number(o))===o?Number(o):o},I_=function(o,i,e,t){if(t&&!e)i[t]=No(o[1]);else for(var r=0;r<e.length;r+=1)o[r+1]!=null&&(i[e[r]]=No(o[r+1]))},A_=function(o,i,e){var t=o.name&&o.names;o.push&&!i[o.push]?i[o.push]=[]:t&&!i[o.name]&&(i[o.name]={});var r=o.push?{}:t?i[o.name]:i;I_(e.match(o.reg),r,o.names,o.name),o.push&&i[o.push].push(r)},Vh=ca(),R_=RegExp.prototype.test.bind(/^([a-z])=(.*)/);Li.parse=function(o){var i={},e=[],t=i;return o.split(/(\r\n|\r|\n)/).filter(R_).forEach(function(r){var s=r[0],n=r.slice(2);s==="m"&&(e.push({rtp:[],fmtp:[]}),t=e[e.length-1]);for(var a=0;a<(Vh[s]||[]).length;a+=1){var c=Vh[s][a];if(c.reg.test(n))return A_(c,t,n)}}),i.media=e,i};var Uh=function(o,i){var e=i.split(/=(.+)/,2);return e.length===2?o[e[0]]=No(e[1]):e.length===1&&i.length>1&&(o[e[0]]=void 0),o};Li.parseParams=function(o){return o.split(/;\s?/).reduce(Uh,{})};Li.parseFmtpConfig=Li.parseParams;Li.parsePayloads=function(o){return o.toString().split(" ").map(Number)};Li.parseRemoteCandidates=function(o){for(var i=[],e=o.split(" ").map(No),t=0;t<e.length;t+=3)i.push({component:e[t],ip:e[t+1],port:e[t+2]});return i};Li.parseImageAttributes=function(o){return o.split(" ").map(function(i){return i.substring(1,i.length-1).split(",").reduce(Uh,{})})};Li.parseSimulcastStreamList=function(o){return o.split(";").map(function(i){return i.split(",").map(function(e){var t,r=!1;return e[0]!=="~"?t=No(e):(t=No(e.substring(1,e.length)),r=!0),{scid:t,paused:r}})})}});var $h=Ei((wS,Fh)=>{"use strict";var Bd=ca(),C_=/%[sdv%]/g,y_=function(o){var i=1,e=arguments,t=e.length;return o.replace(C_,function(r){if(i>=t)return r;var s=e[i];switch(i+=1,r){case"%%":return"%";case"%s":return String(s);case"%d":return Number(s);case"%v":return""}})},Ms=function(o,i,e){var t=i.format instanceof Function?i.format(i.push?e:e[i.name]):i.format,r=[o+"="+t];if(i.names)for(var s=0;s<i.names.length;s+=1){var n=i.names[s];i.name?r.push(e[i.name][n]):r.push(e[i.names[s]])}else r.push(e[i.name]);return y_.apply(null,r)},b_=["v","o","s","i","u","e","p","c","b","t","r","z","a"],N_=["i","c","b","a"];Fh.exports=function(o,i){i=i||{},o.version==null&&(o.version=0),o.name==null&&(o.name=" "),o.media.forEach(function(s){s.payloads==null&&(s.payloads="")});var e=i.outerOrder||b_,t=i.innerOrder||N_,r=[];return e.forEach(function(s){Bd[s].forEach(function(n){n.name in o&&o[n.name]!=null?r.push(Ms(s,n,o)):n.push in o&&o[n.push]!=null&&o[n.push].forEach(function(a){r.push(Ms(s,n,a))})})}),o.media.forEach(function(s){r.push(Ms("m",Bd.m[0],s)),t.forEach(function(n){Bd[n].forEach(function(a){a.name in s&&s[a.name]!=null?r.push(Ms(n,a,s)):a.push in s&&s[a.push]!=null&&s[a.push].forEach(function(c){r.push(Ms(n,a,c))})})})}),r.join(`\r
|
|
1
|
+
var Xg=Object.create;var yn=Object.defineProperty,Qg=Object.defineProperties,Fp=Object.getOwnPropertyDescriptor,Yg=Object.getOwnPropertyDescriptors,Zg=Object.getOwnPropertyNames,Vp=Object.getOwnPropertySymbols,$p=Object.getPrototypeOf,Bp=Object.prototype.hasOwnProperty,Kg=Object.prototype.propertyIsEnumerable,eE=Reflect.get;var Hi=Math.pow,Wu=(i,t,e)=>t in i?yn(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,q=(i,t)=>{for(var e in t||(t={}))Bp.call(t,e)&&Wu(i,e,t[e]);if(Vp)for(var e of Vp(t))Kg.call(t,e)&&Wu(i,e,t[e]);return i},Ee=(i,t)=>Qg(i,Yg(t));var bn=(i,t)=>()=>(t||i((t={exports:{}}).exports,t),t.exports),Zr=(i,t)=>{for(var e in t)yn(i,e,{get:t[e],enumerable:!0})},tE=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Zg(t))!Bp.call(i,o)&&o!==e&&yn(i,o,{get:()=>t[o],enumerable:!(r=Fp(t,o))||r.enumerable});return i};var Wi=(i,t,e)=>(e=i!=null?Xg($p(i)):{},tE(t||!i||!i.__esModule?yn(e,"default",{value:i,enumerable:!0}):e,i));var Z=(i,t,e,r)=>{for(var o=r>1?void 0:r?Fp(t,e):t,s=i.length-1,n;s>=0;s--)(n=i[s])&&(o=(r?n(t,e,o):n(o))||o);return r&&o&&yn(t,e,o),o};var u=(i,t,e)=>Wu(i,typeof t!="symbol"?t+"":t,e);var Bt=(i,t,e)=>eE($p(i),e,t);var A=(i,t,e)=>new Promise((r,o)=>{var s=l=>{try{c(e.next(l))}catch(m){o(m)}},n=l=>{try{c(e.throw(l))}catch(m){o(m)}},c=l=>l.done?r(l.value):Promise.resolve(l.value).then(s,n);c((e=e.apply(i,t)).next())});var Yi=bn((TA,bl)=>{"use strict";var n_=Object.prototype.hasOwnProperty,Wt="~";function Zn(){}Object.create&&(Zn.prototype=Object.create(null),new Zn().__proto__||(Wt=!1));function a_(i,t,e){this.fn=i,this.context=t,this.once=e||!1}function _h(i,t,e,r,o){if(typeof e!="function")throw new TypeError("The listener must be a function");var s=new a_(e,r||i,o),n=Wt?Wt+t:t;return i._events[n]?i._events[n].fn?i._events[n]=[i._events[n],s]:i._events[n].push(s):(i._events[n]=s,i._eventsCount++),i}function qc(i,t){--i._eventsCount===0?i._events=new Zn:delete i._events[t]}function Ut(){this._events=new Zn,this._eventsCount=0}Ut.prototype.eventNames=function(){var t=[],e,r;if(this._eventsCount===0)return t;for(r in e=this._events)n_.call(e,r)&&t.push(Wt?r.slice(1):r);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(e)):t};Ut.prototype.listeners=function(t){var e=Wt?Wt+t:t,r=this._events[e];if(!r)return[];if(r.fn)return[r.fn];for(var o=0,s=r.length,n=new Array(s);o<s;o++)n[o]=r[o].fn;return n};Ut.prototype.listenerCount=function(t){var e=Wt?Wt+t:t,r=this._events[e];return r?r.fn?1:r.length:0};Ut.prototype.emit=function(t,e,r,o,s,n){var c=Wt?Wt+t:t;if(!this._events[c])return!1;var l=this._events[c],m=arguments.length,E,g;if(l.fn){switch(l.once&&this.removeListener(t,l.fn,void 0,!0),m){case 1:return l.fn.call(l.context),!0;case 2:return l.fn.call(l.context,e),!0;case 3:return l.fn.call(l.context,e,r),!0;case 4:return l.fn.call(l.context,e,r,o),!0;case 5:return l.fn.call(l.context,e,r,o,s),!0;case 6:return l.fn.call(l.context,e,r,o,s,n),!0}for(g=1,E=new Array(m-1);g<m;g++)E[g-1]=arguments[g];l.fn.apply(l.context,E)}else{var _=l.length,v;for(g=0;g<_;g++)switch(l[g].once&&this.removeListener(t,l[g].fn,void 0,!0),m){case 1:l[g].fn.call(l[g].context);break;case 2:l[g].fn.call(l[g].context,e);break;case 3:l[g].fn.call(l[g].context,e,r);break;case 4:l[g].fn.call(l[g].context,e,r,o);break;default:if(!E)for(v=1,E=new Array(m-1);v<m;v++)E[v-1]=arguments[v];l[g].fn.apply(l[g].context,E)}}return!0};Ut.prototype.on=function(t,e,r){return _h(this,t,e,r,!1)};Ut.prototype.once=function(t,e,r){return _h(this,t,e,r,!0)};Ut.prototype.removeListener=function(t,e,r,o){var s=Wt?Wt+t:t;if(!this._events[s])return this;if(!e)return qc(this,s),this;var n=this._events[s];if(n.fn)n.fn===e&&(!o||n.once)&&(!r||n.context===r)&&qc(this,s);else{for(var c=0,l=[],m=n.length;c<m;c++)(n[c].fn!==e||o&&!n[c].once||r&&n[c].context!==r)&&l.push(n[c]);l.length?this._events[s]=l.length===1?l[0]:l:qc(this,s)}return this};Ut.prototype.removeAllListeners=function(t){var e;return t?(e=Wt?Wt+t:t,this._events[e]&&qc(this,e)):(this._events=new Zn,this._eventsCount=0),this};Ut.prototype.off=Ut.prototype.removeListener;Ut.prototype.addListener=Ut.prototype.on;Ut.prefixed=Wt;Ut.EventEmitter=Ut;typeof bl!="undefined"&&(bl.exports=Ut)});var ed=bn((YA,wh)=>{"use strict";var Mh=wh.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(i){return i.encoding?"rtpmap:%d %s/%s/%s":i.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(i){return i.address!=null?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(i){return i.subtype!=null?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(i){return"extmap:%d"+(i.direction?"/%s":"%v")+(i["encrypt-uri"]?" %s":"%v")+" %s"+(i.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(i){return i.sessionConfig!=null?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(i){var t="candidate:%s %d %s %d %s %d typ %s";return t+=i.raddr!=null?" raddr %s rport %d":"%v%v",t+=i.tcptype!=null?" tcptype %s":"%v",i.generation!=null&&(t+=" generation %d"),t+=i["network-id"]!=null?" network-id %d":"%v",t+=i["network-cost"]!=null?" network-cost %d":"%v",t}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(i){var t="ssrc:%d";return i.attribute!=null&&(t+=" %s",i.value!=null&&(t+=":%s")),t}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(i){return i.maxMessageSize!=null?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(i){return i.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(i){return"imageattr:%s %s %s"+(i.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(i){return"simulcast:%s %s"+(i.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(i){return"ts-refclk:%s"+(i.clksrcExt!=null?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(i){var t="mediaclk:";return t+=i.id!=null?"id=%s %s":"%v%s",t+=i.mediaClockValue!=null?"=%s":"",t+=i.rateNumerator!=null?" rate=%s":"",t+=i.rateDenominator!=null?"/%s":"",t}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(Mh).forEach(function(i){var t=Mh[i];t.forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})})});var Ph=bn(pi=>{"use strict";var Gs=function(i){return String(Number(i))===i?Number(i):i},f_=function(i,t,e,r){if(r&&!e)t[r]=Gs(i[1]);else for(var o=0;o<e.length;o+=1)i[o+1]!=null&&(t[e[o]]=Gs(i[o+1]))},g_=function(i,t,e){var r=i.name&&i.names;i.push&&!t[i.push]?t[i.push]=[]:r&&!t[i.name]&&(t[i.name]={});var o=i.push?{}:r?t[i.name]:t;f_(e.match(i.reg),o,i.names,i.name),i.push&&t[i.push].push(o)},Oh=ed(),E_=RegExp.prototype.test.bind(/^([a-z])=(.*)/);pi.parse=function(i){var t={},e=[],r=t;return i.split(/(\r\n|\r|\n)/).filter(E_).forEach(function(o){var s=o[0],n=o.slice(2);s==="m"&&(e.push({rtp:[],fmtp:[]}),r=e[e.length-1]);for(var c=0;c<(Oh[s]||[]).length;c+=1){var l=Oh[s][c];if(l.reg.test(n))return g_(l,r,n)}}),t.media=e,t};var xh=function(i,t){var e=t.split(/=(.+)/,2);return e.length===2?i[e[0]]=Gs(e[1]):e.length===1&&t.length>1&&(i[e[0]]=void 0),i};pi.parseParams=function(i){return i.split(/;\s?/).reduce(xh,{})};pi.parseFmtpConfig=pi.parseParams;pi.parsePayloads=function(i){return i.toString().split(" ").map(Number)};pi.parseRemoteCandidates=function(i){for(var t=[],e=i.split(" ").map(Gs),r=0;r<e.length;r+=3)t.push({component:e[r],ip:e[r+1],port:e[r+2]});return t};pi.parseImageAttributes=function(i){return i.split(" ").map(function(t){return t.substring(1,t.length-1).split(",").reduce(xh,{})})};pi.parseSimulcastStreamList=function(i){return i.split(";").map(function(t){return t.split(",").map(function(e){var r,o=!1;return e[0]!=="~"?r=Gs(e):(r=Gs(e.substring(1,e.length)),o=!0),{scid:r,paused:o}})})}});var Lh=bn((KA,kh)=>{"use strict";var Fl=ed(),__=/%[sdv%]/g,T_=function(i){var t=1,e=arguments,r=e.length;return i.replace(__,function(o){if(t>=r)return o;var s=e[t];switch(t+=1,o){case"%%":return"%";case"%s":return String(s);case"%d":return Number(s);case"%v":return""}})},sa=function(i,t,e){var r=t.format instanceof Function?t.format(t.push?e:e[t.name]):t.format,o=[i+"="+r];if(t.names)for(var s=0;s<t.names.length;s+=1){var n=t.names[s];t.name?o.push(e[t.name][n]):o.push(e[t.names[s]])}else o.push(e[t.name]);return T_.apply(null,o)},I_=["v","o","s","i","u","e","p","c","b","t","r","z","a"],S_=["i","c","b","a"];kh.exports=function(i,t){t=t||{},i.version==null&&(i.version=0),i.name==null&&(i.name=" "),i.media.forEach(function(s){s.payloads==null&&(s.payloads="")});var e=t.outerOrder||I_,r=t.innerOrder||S_,o=[];return e.forEach(function(s){Fl[s].forEach(function(n){n.name in i&&i[n.name]!=null?o.push(sa(s,n,i)):n.push in i&&i[n.push]!=null&&i[n.push].forEach(function(c){o.push(sa(s,n,c))})})}),i.media.forEach(function(s){o.push(sa("m",Fl.m[0],s)),r.forEach(function(n){Fl[n].forEach(function(c){c.name in s&&s[c.name]!=null?o.push(sa(n,c,s)):c.push in s&&s[c.push]!=null&&s[c.push].forEach(function(l){o.push(sa(n,c,l))})})})}),o.join(`\r
|
|
2
2
|
`)+`\r
|
|
3
|
-
`}});var Hh=Ei(ri=>{"use strict";var Pr=Bh(),v_=$h(),D_=ca();ri.grammar=D_;ri.write=v_;ri.parse=Pr.parse;ri.parseParams=Pr.parseParams;ri.parseFmtpConfig=Pr.parseFmtpConfig;ri.parsePayloads=Pr.parsePayloads;ri.parseRemoteCandidates=Pr.parseRemoteCandidates;ri.parseImageAttributes=Pr.parseImageAttributes;ri.parseSimulcastStreamList=Pr.parseSimulcastStreamList});var Nu=Ei((Ww,yp)=>{"use strict";var Cp=yp.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(o){return o.encoding?"rtpmap:%d %s/%s/%s":o.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(o){return o.address!=null?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(o){return o.subtype!=null?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(o){return"extmap:%d"+(o.direction?"/%s":"%v")+(o["encrypt-uri"]?" %s":"%v")+" %s"+(o.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(o){return o.sessionConfig!=null?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(o){var i="candidate:%s %d %s %d %s %d typ %s";return i+=o.raddr!=null?" raddr %s rport %d":"%v%v",i+=o.tcptype!=null?" tcptype %s":"%v",o.generation!=null&&(i+=" generation %d"),i+=o["network-id"]!=null?" network-id %d":"%v",i+=o["network-cost"]!=null?" network-cost %d":"%v",i}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(o){var i="ssrc:%d";return o.attribute!=null&&(i+=" %s",o.value!=null&&(i+=":%s")),i}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(o){return o.maxMessageSize!=null?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(o){return o.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(o){return"imageattr:%s %s %s"+(o.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(o){return"simulcast:%s %s"+(o.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(o){return"ts-refclk:%s"+(o.clksrcExt!=null?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(o){var i="mediaclk:";return i+=o.id!=null?"id=%s %s":"%v%s",i+=o.mediaClockValue!=null?"=%s":"",i+=o.rateNumerator!=null?" rate=%s":"",i+=o.rateDenominator!=null?"/%s":"",i}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(Cp).forEach(function(o){var i=Cp[o];i.forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})})});var vp=Ei(zi=>{"use strict";var zo=function(o){return String(Number(o))===o?Number(o):o},tE=function(o,i,e,t){if(t&&!e)i[t]=zo(o[1]);else for(var r=0;r<e.length;r+=1)o[r+1]!=null&&(i[e[r]]=zo(o[r+1]))},iE=function(o,i,e){var t=o.name&&o.names;o.push&&!i[o.push]?i[o.push]=[]:t&&!i[o.name]&&(i[o.name]={});var r=o.push?{}:t?i[o.name]:i;tE(e.match(o.reg),r,o.names,o.name),o.push&&i[o.push].push(r)},bp=Nu(),rE=RegExp.prototype.test.bind(/^([a-z])=(.*)/);zi.parse=function(o){var i={},e=[],t=i;return o.split(/(\r\n|\r|\n)/).filter(rE).forEach(function(r){var s=r[0],n=r.slice(2);s==="m"&&(e.push({rtp:[],fmtp:[]}),t=e[e.length-1]);for(var a=0;a<(bp[s]||[]).length;a+=1){var c=bp[s][a];if(c.reg.test(n))return iE(c,t,n)}}),i.media=e,i};var Np=function(o,i){var e=i.split(/=(.+)/,2);return e.length===2?o[e[0]]=zo(e[1]):e.length===1&&i.length>1&&(o[e[0]]=void 0),o};zi.parseParams=function(o){return o.split(/;\s?/).reduce(Np,{})};zi.parseFmtpConfig=zi.parseParams;zi.parsePayloads=function(o){return o.toString().split(" ").map(Number)};zi.parseRemoteCandidates=function(o){for(var i=[],e=o.split(" ").map(zo),t=0;t<e.length;t+=3)i.push({component:e[t],ip:e[t+1],port:e[t+2]});return i};zi.parseImageAttributes=function(o){return o.split(" ").map(function(i){return i.substring(1,i.length-1).split(",").reduce(Np,{})})};zi.parseSimulcastStreamList=function(o){return o.split(";").map(function(i){return i.split(",").map(function(e){var t,r=!1;return e[0]!=="~"?t=zo(e):(t=zo(e.substring(1,e.length)),r=!0),{scid:t,paused:r}})})}});var Op=Ei((jw,Dp)=>{"use strict";var vu=Nu(),oE=/%[sdv%]/g,sE=function(o){var i=1,e=arguments,t=e.length;return o.replace(oE,function(r){if(i>=t)return r;var s=e[i];switch(i+=1,r){case"%%":return"%";case"%s":return String(s);case"%d":return Number(s);case"%v":return""}})},hn=function(o,i,e){var t=i.format instanceof Function?i.format(i.push?e:e[i.name]):i.format,r=[o+"="+t];if(i.names)for(var s=0;s<i.names.length;s+=1){var n=i.names[s];i.name?r.push(e[i.name][n]):r.push(e[i.names[s]])}else r.push(e[i.name]);return sE.apply(null,r)},nE=["v","o","s","i","u","e","p","c","b","t","r","z","a"],aE=["i","c","b","a"];Dp.exports=function(o,i){i=i||{},o.version==null&&(o.version=0),o.name==null&&(o.name=" "),o.media.forEach(function(s){s.payloads==null&&(s.payloads="")});var e=i.outerOrder||nE,t=i.innerOrder||aE,r=[];return e.forEach(function(s){vu[s].forEach(function(n){n.name in o&&o[n.name]!=null?r.push(hn(s,n,o)):n.push in o&&o[n.push]!=null&&o[n.push].forEach(function(a){r.push(hn(s,n,a))})})}),o.media.forEach(function(s){r.push(hn("m",vu.m[0],s)),t.forEach(function(n){vu[n].forEach(function(a){a.name in s&&s[a.name]!=null?r.push(hn(n,a,s)):a.push in s&&s[a.push]!=null&&s[a.push].forEach(function(c){r.push(hn(n,a,c))})})})}),r.join(`\r
|
|
4
|
-
`)+`\r
|
|
5
|
-
`}});var Du=Ei(Qi=>{"use strict";var Qr=vp(),cE=Op();Qi.write=cE;Qi.parse=Qr.parse;Qi.parseParams=Qr.parseParams;Qi.parseFmtpConfig=Qr.parseFmtpConfig;Qi.parsePayloads=Qr.parsePayloads;Qi.parseRemoteCandidates=Qr.parseRemoteCandidates;Qi.parseImageAttributes=Qr.parseImageAttributes;Qi.parseSimulcastStreamList=Qr.parseSimulcastStreamList});import sH from"webrtc-adapter";var _p=$e(Ye());var Qu=(U=>(U[U.INVALID_PARAMETER=4096]="INVALID_PARAMETER",U[U.INVALID_OPERATION=4097]="INVALID_OPERATION",U[U.NOT_SUPPORTED=4098]="NOT_SUPPORTED",U[U.DEVICE_NOT_FOUND=4099]="DEVICE_NOT_FOUND",U[U.INITIALIZE_FAILED=4100]="INITIALIZE_FAILED",U[U.SIGNAL_CHANNEL_SETUP_FAILED=16385]="SIGNAL_CHANNEL_SETUP_FAILED",U[U.SIGNAL_CHANNEL_ERROR=16386]="SIGNAL_CHANNEL_ERROR",U[U.ICE_TRANSPORT_ERROR=16387]="ICE_TRANSPORT_ERROR",U[U.JOIN_ROOM_FAILED=16388]="JOIN_ROOM_FAILED",U[U.CREATE_OFFER_FAILED=16389]="CREATE_OFFER_FAILED",U[U.SIGNAL_CHANNEL_RECONNECTION_FAILED=16390]="SIGNAL_CHANNEL_RECONNECTION_FAILED",U[U.UPLINK_RECONNECTION_FAILED=16391]="UPLINK_RECONNECTION_FAILED",U[U.DOWNLINK_RECONNECTION_FAILED=16392]="DOWNLINK_RECONNECTION_FAILED",U[U.REMOTE_STREAM_NOT_EXIST=16400]="REMOTE_STREAM_NOT_EXIST",U[U.CLIENT_BANNED=16448]="CLIENT_BANNED",U[U.SERVER_TIMEOUT=16449]="SERVER_TIMEOUT",U[U.SUBSCRIPTION_TIMEOUT=16450]="SUBSCRIPTION_TIMEOUT",U[U.PLAY_NOT_ALLOWED=16451]="PLAY_NOT_ALLOWED",U[U.DEVICE_AUTO_RECOVER_FAILED=16452]="DEVICE_AUTO_RECOVER_FAILED",U[U.START_PUBLISH_CDN_FAILED=16453]="START_PUBLISH_CDN_FAILED",U[U.STOP_PUBLISH_CDN_FAILED=16454]="STOP_PUBLISH_CDN_FAILED",U[U.START_MIX_TRANSCODE_FAILED=16455]="START_MIX_TRANSCODE_FAILED",U[U.STOP_MIX_TRANSCODE_FAILED=16456]="STOP_MIX_TRANSCODE_FAILED",U[U.NOT_SUPPORTED_H264=16457]="NOT_SUPPORTED_H264",U[U.SWITCH_ROLE_FAILED=16458]="SWITCH_ROLE_FAILED",U[U.API_CALL_TIMEOUT=16459]="API_CALL_TIMEOUT",U[U.SCHEDULE_FAILED=16460]="SCHEDULE_FAILED",U[U.API_CALL_ABORTED=16461]="API_CALL_ABORTED",U[U.SPC_INITIALIZED_FAILED=16462]="SPC_INITIALIZED_FAILED",U[U.VIDEO_MANAGER_ERROR=16463]="VIDEO_MANAGER_ERROR",U[U.SWITCH_ROOM_FAILED=16464]="SWITCH_ROOM_FAILED",U[U.UNKNOWN=65535]="UNKNOWN",U))(Qu||{}),I=Qu;var bf=function(o){for(let i in I)if(I[i]===o)return i;return"UNKNOWN"},Uc=class extends Error{constructor({name:e="RtcError",message:t,code:r=I.UNKNOWN,extraCode:s=0,constraint:n}){let a=`<${bf(r)} 0x${r.toString(16)}>`,c=`${t}${n?` constraint: ${n}`:""}${t!=null&&t.includes(a)?"":` ${a}`}`;super(c);d(this,"code");d(this,"extraCode");d(this,"message");d(this,"originMessage");d(this,"name");d(this,"constraint");this.code=r,this.extraCode=s,this.name=e,this.message=c,this.constraint=n,this.originMessage=t}getCode(){return this.code}getExtraCode(){return this.extraCode}toString(){return this.originMessage}},y=Uc;var Yu=new Date().getTime(),Bc=0,Zu=function(o){Yu=o,Bc=Yu-new Date().getTime();let i=new Date;i.setTime(o),C.info(`baseTime from server: ${i} offset: ${Bc}`)},is=function(){return new Date().getTime()+Bc},An=function(){let o=new Date;return o.setTime(is()),o.toLocaleString()},to=function(o){let i=String(o.getMilliseconds());return"padStart"in String.prototype&&(i=i.toString().padStart(3,"0")),`${o.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/,"$1")}:${i}`};var mt={};Si(mt,{bytes2ms:()=>nh,calculateScaleResolutionDownNumber:()=>ho,convertObjectNumberToInt:()=>ms,copyProperties:()=>sh,deepClone:()=>Rr,deepMerge:()=>At,delay:()=>Ni,fibonacci:()=>yr,formatedTime:()=>fh,getConstructorName:()=>no,getContainerFromElement:()=>ph,getEnv:()=>rh,getInternalVersion:()=>hh,getLoggerUrl:()=>yi,getMediaStreamTrackInfo:()=>Vn,getMuteStateFromFlag:()=>bi,getNetworkType:()=>ed,getNumNetworkType:()=>Cr,getReconnectionTimeout:()=>xt,getStringByteLength:()=>hs,getTurnServer:()=>mh,getUint32Version:()=>Pn,getValueType:()=>Re,getViewListFromView:()=>lo,glog:()=>rd,ipv4ToUint32:()=>co,isArray:()=>Se,isAudioWorkletSupported:()=>lh,isBoolean:()=>me,isConstructor:()=>br,isEmpty:()=>ao,isFunction:()=>ne,isLangChinese:()=>kt,isMediaStreamTrack:()=>ch,isNumber:()=>j,isObject:()=>ht,isOverseaSdkAppId:()=>Ci,isPlainObject:()=>Je,isPortrait:()=>od,isPromise:()=>or,isRemoteTrack:()=>dh,isRotate90Or270:()=>vi,isSetSinkIdSupported:()=>uh,isString:()=>ee,isUndefined:()=>T,loadImage:()=>uo,ms2bytes:()=>ah,ms2samples:()=>id,normalizeUrl:()=>wn,performanceNow:()=>V,promiseAny:()=>Nr,samples2ms:()=>td,setNetworkType:()=>kn,stringify:()=>It,stringifyIncludeValue:()=>xn,throttlePromise:()=>Ln});var Kc={};Si(Kc,{AUDIO_MUTE_BIT:()=>vn,AUDIO_STAT_BIT:()=>ir,AUX_STAT_BIT:()=>Er,AUX_STREAM_MSID:()=>jc,BACKEND_ENV:()=>Nn,BASE_DOC_URL:()=>Xt,BASE_HOST:()=>Ku,CAPABILITIES_KEYS:()=>Mn,CLASS_NAME:()=>Xf,CLOUD_CONSOLE_URL:()=>Of,CROSS_ROOM_BIT:()=>Jc,DATA_FREEZE_TIMING:()=>On,DOC_URL:()=>Mf,DTLS_STATE_UNKNOWN:()=>Mt,ENV_NAME:()=>Ii,EXCHANGE_SDP_TIMEOUT:()=>Yc,IS_WORKER:()=>io,IS_WORKLET:()=>os,KIBANA_EVENT:()=>ot,LOCAL_STREAM_PUBLISH_STATE:()=>th,LOGGER_CMD_TYPE:()=>Ki,LOGGER_DOMAIN:()=>$c,LOGGER_DOMAIN_OVERSEA:()=>Hc,LOG_LEVEL:()=>Dt,LOG_LEVEL_NAME:()=>Qf,MAIN_STREAM_MSID:()=>as,MAX_RTT:()=>ls,MICROPHONE_COMMUNICATIONS:()=>zf,MICROPHONE_DEFAULT:()=>Ar,MUTE_ALL_BIT:()=>Pf,NAME:()=>p,NETWORK_TYPE:()=>Rn,NOT_SUPPORTED_H264:()=>Sr,PAUSED_RETRY_COUNT:()=>Ir,PEERCONNECTION_CONNECTING_TIMEOUT:()=>cs,PEER_CONNECTION_STATE:()=>ge,PEER_LEAVE_REASON:()=>Zc,RECOVER_CAPTURE_INTERVAL:()=>so,REMOTE_STREAM_TYPE_AUX:()=>Xc,REMOTE_STREAM_TYPE_MAIN:()=>qc,RENDER_FREEZE_TIMING:()=>Wf,SCHEDULE_DOMAIN:()=>Ri,SCHEDULE_TIMEOUT:()=>qf,SDP_SEMANTICS_PLAN_B:()=>ro,SDP_SEMANTICS_UNIFIED_PLAN:()=>rr,SECOND_HOST:()=>vf,SIGNAL_PING_PONG_INTERVAL:()=>xf,SIGNAL_PING_TIMEOUT:()=>kf,SIGNAL_RECONNECTION_COUNT:()=>Hf,SMALL_STAT_BIT:()=>ns,SPEAKER_DEFAULT:()=>ds,STORAGE_EXPIRES_TIME:()=>Cn,STREAM_TYPE_BIG:()=>Jf,STREAM_TYPE_SMALL:()=>jf,SUBSCRIBE_SMALL_RETRY_COUNT:()=>oo,SYNC_USER_LIST_INTERVAL:()=>Gf,Scene:()=>zt,THIRD_HOST:()=>Df,TRANSPORT_DIRECTION:()=>te,TRTC_ERROR_ASSISTANCE:()=>Gc,TRTC_QUALITY_BAD:()=>Bf,TRTC_QUALITY_DISCONNECTED:()=>$f,TRTC_QUALITY_EXCELLENT:()=>wf,TRTC_QUALITY_GOOD:()=>Vf,TRTC_QUALITY_POOR:()=>Uf,TRTC_QUALITY_UNKNOWN:()=>Lf,TRTC_QUALITY_VERY_BAD:()=>Ff,UPDATE_OFFER_TIMEOUT:()=>Qc,VIDEO_MUTE_BIT:()=>Dn,VIDEO_STAT_BIT:()=>tr,audioProfileMap:()=>yn,defaultBigVideoProfile:()=>er,defaultSmallVideoProfile:()=>Wc,getRetryCount:()=>Ai,getScriptDir:()=>Nf,innerVersion:()=>rs,loggerProxy:()=>ss,screenProfileMap:()=>bn,setLoggerProxy:()=>Tr,setRetryCount:()=>zc,setVersion:()=>Fc,version:()=>xe,videoProfileMap:()=>Ot});var rs="4.15.00.1600",xe="5.0.0";function Fc(o){xe=o;let[i,e,t]=o.split(".").map(r=>parseInt(r,10));rs=`${i}.${Math.min(15,e)}.${Math.min(15,t)}.${e.toString().padStart(2,"0")}${t.toString().padStart(2,"0")}`}var io=typeof importScripts!="undefined",os=typeof registerProcessor!="undefined",Nf=()=>{let o=io?self.location.href:document.currentScript.src;return o.substring(0,o.lastIndexOf("/")+1)},ss="",Tr=o=>ss=o,Ku="web.sdk.qcloud.com",vf="web.sdk.tencent.cn",Df="web.sdk.cloud.tencent.cn",Of="https://console.cloud.tencent.com/trtc",Xt=`https://${Ku}/trtc/webrtc/v5/doc`,Mf=`${Xt}/zh-cn/`,$c="https://yun.tim.qq.com",Hc="https://apisgp.my-imcloud.com",Gc="trtc_error_assistance",Ki={LOG:"jssdk_log",EVENT:"jssdk_event",KEY_POINT:"jssdk_new_endreport",KV_STAT:"jssdk_key_metrics_report"},Ii={QCLOUD:"qcloud",OLD_CLOUD_LADDER:"trtc",WEBRTC:"webrtc"},Dt=(n=>(n[n.TRACE=0]="TRACE",n[n.DEBUG=1]="DEBUG",n[n.INFO=2]="INFO",n[n.WARN=3]="WARN",n[n.ERROR=4]="ERROR",n[n.NONE=5]="NONE",n))(Dt||{}),kf=18e3,xf=2e3,Rn={unknown:0,wifi:1,"3g":2,"2g":3,"4g":4,wired:5,"5g":6},Cn=7*24*3600*1e3,yn={standard:{sampleRate:48e3,channelCount:1,bitrate:40},"standard-stereo":{sampleRate:48e3,channelCount:2,bitrate:64},high:{sampleRate:48e3,channelCount:1,bitrate:128},"high-stereo":{sampleRate:48e3,channelCount:2,bitrate:192}},Ot={"120p":{width:160,height:120,frameRate:15,bitrate:200},"120p_2":{width:160,height:120,frameRate:15,bitrate:100},"180p":{width:320,height:180,frameRate:15,bitrate:350},"180p_2":{width:320,height:180,frameRate:15,bitrate:150},"240p":{width:320,height:240,frameRate:15,bitrate:400},"240p_2":{width:320,height:240,frameRate:15,bitrate:200},"360p":{width:640,height:360,frameRate:15,bitrate:800},"360p_2":{width:640,height:360,frameRate:15,bitrate:400},"480p":{width:640,height:480,frameRate:15,bitrate:900},"480p_2":{width:640,height:480,frameRate:15,bitrate:500},"720p":{width:1280,height:720,frameRate:15,bitrate:1500},"1080p":{width:1920,height:1080,frameRate:15,bitrate:2e3},"1440p":{width:2560,height:1440,frameRate:30,bitrate:4860},"4K":{width:3840,height:2160,frameRate:30,bitrate:9e3}},er=Ot["480p_2"],Wc=Ot["120p_2"],bn={"480p":{width:640,height:480,frameRate:5,bitrate:900},"480p_2":{width:640,height:480,frameRate:30,bitrate:1e3},"720p":{width:1280,height:720,frameRate:5,bitrate:1200},"720p_2":{width:1280,height:720,frameRate:30,bitrate:3e3},"1080p":{width:1920,height:1080,frameRate:5,bitrate:1600},"1080p_2":{width:1920,height:1080,frameRate:30,bitrate:4e3}},p={CANVAS:"canvas",AUDIO:"audio",VIDEO:"video",SCREEN:"screen",SMALL:"small",BIG:"big",AUXILIARY:"auxiliary",SMALL_VIDEO:"smallVideo",FACING_MODE_USER:"user",FACING_MODE_ENVIRONMENT:"environment",MUTE:"mute",UNMUTE:"unmute",ENDED:"ended",PLAYING:"playing",PAUSE:"pause",ERROR:"error",LOADEDDATA:"loadeddata",LOADEDMETADATA:"loadedmetadata",AUDIO_INPUT:"audioinput",VIDEO_INPUT:"videoinput",DETAIL:"detail",TEXT:"text",MAIN:"main",BACKUP:"backup",BANNED:"banned",KICK:"kick",USER_TIME_OUT:"user_time_out",ROOM_DISBAND:"room_disband",SEI_MESSAGE:"sei-message",ADD:"add",REMOVE:"remove",REPLACE:"replace",TRACK:"track",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",TRANSCEIVER_DIRECTION_SENDONLY:"sendonly",TRANSCEIVER_DIRECTION_RECVONLY:"recvonly",ENTER_PICTURE_IN_PICTURE:"enterpictureinpicture",LEAVE_PICTURE_IN_PICTURE:"leavepictureinpicture"},te={INACTIVE:"inactive",SENDONLY:"sendonly",RECVONLY:"recvonly"},Nn={OLD_CLOUD_LADDER:"wss://trtc.rtc.qq.com",WEBRTC:"wss://webrtc.qq.com"},zt=(e=>(e.LIVE="live",e.RTC="rtc",e))(zt||{}),tr=1,ns=2,Er=4,ir=8,vn=64,Dn=16,Pf=112,Jc=128,as="5Y2wZK8nANNAoVw6dSAHVjNxrD1ObBM2kBPV",jc="224d130c-7b5c-415b-aaa2-79c2eb5a6df2",qc=p.MAIN,Xc=p.AUXILIARY,Lf=0,wf=1,Vf=2,Uf=3,Bf=4,Ff=5,$f=6,Mt="unknown",ge={NEW:"new",CONNECTING:"connecting",FAILED:"failed",CLOSED:"closed",DISCONNECTED:"disconnected",CONNECTED:"connected",COMPLETED:"completed"},eh=1/0;function zc(o){eh=o}function Ai(){return eh}var Hf=30,ot={JOIN:"join",DELTA_JOIN:"delta-join",REJOIN:"rejoin",LEAVE:"leave",DELTA_LEAVE:"delta-leave",PUBLISH:"publish",DELTA_PUBLISH:"delta-publish",UNPUBLISH:"unpublish",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",UPLINK_CONNECTION:"uplink-connection",UPLINK_RECONNECTION:"uplink-reconnection",DOWNLINK_CONNECTION:"downlink-connection",DOWNLINK_RECONNECTION:"downlink-reconnection",ON_TRACK:"ontrack",ICE_CONNECTION_STATE:"iceConnectionState",LOCAL_STREAM_INITIALIZE:"stream-initialize",SIGNAL_CONNECTION:"websocketConnectionState",SIGNAL_RECONNECTION:"websocketReconnectionState",UPDATE_STREAM:"update-stream",RECOVER_LOCAL_AUDIO_TRACK:"recover-local-audio-track",RECOVER_LOCAL_VIDEO_TRACK:"recover-local-video-track",RECOVER_SUBSCRIPTION:"recover-subscription",START_MIX_TRANSCODE:"start-mix-transcode",STOP_MIX_TRANSCODE:"stop-mix-transcode",PLAYER_ERROR:"player-error",SCHEDULE:"schedule",LOAD_WORKLET:"load-worklet",VIDEO_FROZEN_COUNT:"videoFrozenCount",GET_USER_MEDIA_RETRY:"getUserMedia-retry"},Gf=1e4,Qc=1e4,Yc=1e4,rr="unified-plan",ro="plan-b",Sr=1028,th=(t=>(t[t.UNPUBLISH=-1]="UNPUBLISH",t[t.PUBLISHING=0]="PUBLISHING",t[t.PUBLISHED=1]="PUBLISHED",t))(th||{}),On=500,Wf=1e3,Jf=p.BIG,jf=p.SMALL,cs=10*1e3,Ri={MAIN:"schedule.cloud-rtc.com",BACKUP:"schedule.cloud-rtc.net",MAIN_OVERSEA:"schedule.rtc-web.com",BACKUP_OVERSEA:"schedule.rtc-web.io",MAIN_OVERSEA_BACKUP:"intl-schedule.cloud-rtc.com"},qf=2e3,Xf={TRTC:"TRTC",CLIENT:"Client",LOCAL_STREAM:"LocalStream",REMOTE_STREAM:"RemoteStream",STREAM:"Stream"},Ir=5,Ar="default",ds=Ar,zf="communications",Qf=Object.keys(Dt),Zc=["normal leave","timeout leave","kick","role change"],oo=10,so=2e3,Mn=["width","height","frameRate","facingMode","sampleRate","sampleSize","channelCount","deviceId","min","max"],ls=10*1e3;var rh=function(){return new URLSearchParams(location.search).get("trtc_env")||""},Ci=o=>Number(o)<14e8,yi=function(o,i){let e;ss?e=ss:e=Ci(o)?Hc:$c;let t=Math.floor(Math.random()*Zi(2,31));return`${e}/v5/AVQualityReportSvc/C2S?random=${t}&sdkappid=${o}&cmdtype=${i}`},us="unknown";function ed(){if(us!=="unknown")return us;let{userAgent:o,connection:i}=navigator,e=(o.match(/NetType\/\S+/)||[])[0]||"";e=e.toLowerCase().replace("nettype/",""),e==="3gnet"&&(e="3g");let t=i&&i.type&&i.type.toLowerCase(),r=i&&i.effectiveType&&i.effectiveType.toLowerCase();return r==="slow-2"&&(r="2g"),t&&(us=oh(t,r)),us}function oh(o,i){if(Rn[o])return o;switch(o){case"cellular":case"wimax":return i||"unknown";case"ethernet":return"wired";case"none":case"other":default:return"unknown"}}function kn(o){us=oh(o)}function Cr(){return Rn[ed()]}function sh(o,i){for(let e of Reflect.ownKeys(i))if(e!=="constructor"&&e!=="prototype"&&e!=="name"){let t=Object.getOwnPropertyDescriptor(i,e)||"";Object.defineProperty(o,e,t)}return o}function nh(o,i=48e3){return td(o/4,i)}function td(o,i=48e3){return o*1e3/i}function ah(o,i=48e3){return id(o,i)*4}function id(o,i=48e3){return o*i/1e3}var rd=typeof window!="undefined"&&typeof window.glog=="function"?window.glog:()=>{},kt=()=>{let o=navigator.language;return o=o.substring(0,2),o==="zh"},Je=function(o){if(!o||typeof o!="object"||Object.prototype.toString.call(o)!="[object Object]")return!1;let i=Object.getPrototypeOf(o);if(i===null)return!0;let e=Object.prototype.hasOwnProperty.call(i,"constructor")&&i.constructor;return typeof e=="function"&&e instanceof e&&Function.prototype.toString.call(e)===Function.prototype.toString.call(Object)};function yr(o,i=1,e=1){return o<=1?e:yr(o-1,e,i+e)}function xt(o){return o>8?30*1e3:yr(o)*1e3}function Re(o){return Reflect.apply(Object.prototype.toString,o,[]).replace(/^\[object\s(\w+)\]$/,"$1").toLowerCase()}var ne=o=>typeof o=="function",T=o=>typeof o=="undefined",ee=o=>typeof o=="string",j=o=>typeof o=="number",me=o=>typeof o=="boolean",ht=o=>Re(o)==="object",Se=o=>Re(o)==="array",ch=o=>Re(o)==="MediaStreamTrack".toLowerCase(),dh=o=>o.isRemote,or=o=>Re(o)==="promise",br=o=>ne(o)&&o.prototype.constructor===o,no=o=>br(o)?o.prototype.constructor.name:"",lh=typeof AudioWorkletNode!="undefined",uh=()=>"setSinkId"in document.createElement("audio");function Nr(o){return new Promise((i,e)=>{let t=[];o.forEach(r=>{r.then(i).catch(s=>{t.push(s),t.length===o.length&&e(t)})})})}function V(){return!performance||!performance.now?Date.now():Math.floor(performance.now())}var ih=o=>+o<10?`0${o}`:o,hh=o=>{let i=o.match(/^\d+\.\d+\.\d+/)[0];if(!i)return o;let e=i.split("."),t=ih(e[1])+ih(e[2]);return e[1]-15>0&&(e[1]="15"),e[2]-15>0&&(e[2]="15"),`${e.join(".")}.${t}`},Yf=Object.prototype.hasOwnProperty,{toString:$E}=Object.prototype;function ao(o){if(o==null)return!0;if(typeof o=="boolean")return!1;if(typeof o=="number")return o===0;if(typeof o=="string"||typeof o=="function"||Array.isArray(o))return o.length===0;if(o instanceof Error)return o.message==="";if(Je(o))switch(Object.prototype.toString.call(o)){case"[object File]":case"[object Map]":case"[object Set]":return o.size===0;case"[object Object]":{for(let i in o)if(Yf.call(o,i))return!1;return!0}}return!1}function bi(o,i){return{userId:i,hasAudio:!!(o&ir),hasVideo:!!(o&tr),hasAuxiliary:!!(o&Er),hasSmall:!!(o&ns),audioMuted:!!(o&vn),videoMuted:!!(o&Dn),audioAvailable:!!(o&ir)&&!(o&vn),videoAvailable:!!(o&tr)&&!(o&Dn)}}function mh(o){let i={urls:o.url.startsWith("turn:")||o.url.startsWith("turns:")?o.url:`turn:${o.url}`};return!T(o.username)&&!T(o.credential)&&(i.username=o.username,i.credential=o.credential,i.credentialType="password",T(o.credentialType)||(i.credentialType=o.credentialType)),i}function co(o,i=!0){if(!ee(o))return 0;let e=o.split(".");return i?(Number(e[0])<<24|Number(e[1])<<16|Number(e[2])<<8|Number(e[3]))>>>0:(Number(e[3])<<24|Number(e[2])<<16|Number(e[1])<<8|Number(e[0]))>>>0}var At=function(o,i,e,t){if(!(ht(o)&&ht(i)))return 0;let r=0,s=Object.keys(i),n;for(let a=0,c=s.length;a<c;a++)if(n=s[a],!(T(i[n])||e&&e.includes(n)))if(ht(o[n])&&ht(i[n]))r+=At(o[n],i[n],e,t);else{if(t&&t.includes(i[n]))continue;o[n]!==i[n]&&(o[n]=Rr(i[n]),r+=1)}return r};function Rr(o){if(Se(o)){let i=[];return o.forEach((e,t)=>{i[t]=Rr(e)}),i}if(ht(o)){let i={};return Object.keys(o).forEach(e=>{i[e]=Rr(o[e])}),i}return o}var lo=o=>{let i=[];if(Se(o))i=[...o];else if(ee(o)){let e=document.getElementById(o);e&&i.push(e)}else o&&i.push(o);return i},ph=o=>ee(o)?document.getElementById(o):o,Zf=o=>{let i=c=>c<10?`0${c}`:`${c}`,e=o.getFullYear(),t=o.getMonth()+1,r=o.getDate(),s=i(o.getHours()),n=i(o.getMinutes()),a=i(o.getSeconds());return`${e}/${t}/${r} ${s}:${n}:${a}`},fh=()=>Zf(new Date);function It(o,{keysToInclude:i,keysToExclude:e}){try{if(Se(o))return`[${o.map(n=>It(n,{keysToInclude:i,keysToExclude:e})).join(",")}]`;if(!Je(o)||!Se(i)&&!Se(e))return JSON.stringify(o);let t={},r=new Set(i),s=new Set(e);return Object.keys(o).forEach(n=>{(s.size===0&&r.has(n)||r.size===0&&!s.has(n))&&(t[n]=Je(o[n])||Se(o[n])?JSON.parse(It(o[n],{keysToExclude:e,keysToInclude:i})):o[n])}),JSON.stringify(t)}catch(t){return"{}"}}function xn(o,i=!1){let e=[];return Object.keys(o).forEach(t=>{i===o[t]&&e.push(t)}),It(o,{keysToInclude:e})}function hs(o){return o.replace(/[\u4e00-\u9fa5]/g,"aa").length}var od=()=>{var o,i,e,t;return(o=window.screen)!=null&&o.orientation?!!((t=(e=(i=window.screen)==null?void 0:i.orientation)==null?void 0:e.type)!=null&&t.includes("portrait")):window.orientation===0||window.orientation===180},uo=o=>f(void 0,null,function*(){return new Promise((i,e)=>{let t;if(ee(o))t=new Image,t.crossOrigin="anonymous",t.src=o;else if(t=o,t.complete){i(t);return}t.onload=()=>i(t),t.onerror=()=>{e(new y({code:I.INVALID_PARAMETER,message:`load image failed, url: ${o}`}))}})}),Pn=o=>{let i=o.split(".");return+i[0]<<24|+i[1]<<16|+i[2]<<8|+i[3]<<0},ms=o=>(Object.keys(o).forEach(i=>{j(o[i])&&(i.startsWith("uint")||i.startsWith("int"))?o[i]=Math.floor(o[i]):(Je(o[i])||Se(o[i]))&&ms(o[i])}),o);function Ni(o,i){return new Promise(e=>{let t=setTimeout(e,o);i&&i(t)})}function Ln(o,i){let e=null;return function(...t){return e||(e=o.apply(i||this,t),e.finally(()=>e=null),e)}}function wn(o){return o.replace(/(^|[^:])\/{2,}/g,"$1/")}function Vn(o){var i;try{let{width:e,height:t,frameRate:r,sampleRate:s,sampleSize:n,channelCount:a}=(i=o.getSettings)==null?void 0:i.call(o),c=o.kind===p.AUDIO?`${s}x${n}@${a}`:`${e}x${t}@${r}`,l=o.stats?` stats: ${JSON.stringify(o.stats).replaceAll('"',"")}`:"";return`${o.id} ${o.readyState} muted:${o.muted} ${o.kind} ${o.label} ${c}${l}`}catch(e){return""}}function ho(o,i){return o.width*o.height===i.width*i.height?1:od()&&i.width>i.height&&o.height>i.width?Math.max(o.width/i.height,o.height/i.width,1):Math.max(o.width/i.width,o.height/i.height,1)}function vi(o){return o===90||o===270}function Di({url:o,body:i,method:e="POST",timeout:t,priority:r}){return new Promise((s,n)=>{if("fetch"in window)return fetch(o,{method:e,body:i,priority:r}).then(c=>c.text()).then(c=>{try{s({data:JSON.parse(c)})}catch(l){s({data:c})}},n);let a=new XMLHttpRequest;a.onreadystatechange=()=>{if(a.readyState===4)if(a.status>=200&&a.status<300)try{let c=JSON.parse(a.response);s({data:c})}catch(c){s({data:a.response})}else n({status:a.status,statusText:a.statusText||"request failed!"})},a.timeout=t||5e3,a.open(e,o,!0),a.send(i)})}function sd(o){return f(this,null,function*(){let i=V(),e=JSON.stringify(o);try{if(!CompressionStream||e.length<=2800)return e;let r=new Blob([e],{type:"application/json"}).stream().pipeThrough(new CompressionStream("gzip")),a=yield(yield(yield new Response(r)).blob()).arrayBuffer();return C.debug(`compressJSON ${e.length} -> ${a.byteLength} ${V()-i}ms`),a}catch(t){return e}})}var Kf=Object.prototype.hasOwnProperty;var Qt=o=>typeof o=="function",Oi=o=>typeof o=="undefined";var Un=o=>typeof o=="boolean";var nd=o=>o.isRemote;var ad=function(o){if(!o||typeof o!="object"||Object.prototype.toString.call(o)!="[object Object]")return!1;let i=Object.getPrototypeOf(o);if(i===null)return!0;let e=Object.prototype.hasOwnProperty.call(i,"constructor")&&i.constructor;return typeof e=="function"&&e instanceof e&&Function.prototype.toString.call(e)===Function.prototype.toString.call(Object)};function _h(o){if(o==null)return!0;if(typeof o=="boolean")return!1;if(typeof o=="number")return o===0;if(typeof o=="string"||typeof o=="function"||Array.isArray(o))return o.length===0;if(o instanceof Error)return o.message==="";if(ad(o))switch(Object.prototype.toString.call(o)){case"[object File]":case"[object Map]":case"[object Set]":return o.size===0;case"[object Object]":{for(let i in o)if(Kf.call(o,i))return!1;return!0}}return!1}var e_=0,t_=1,gh=2;function i_({retryFunction:o,settings:i,onError:e,onRetrying:t,onRetryFailed:r,onRetrySuccess:s,context:n}){return function(...a){let{retries:c=5,timeout:l=1e3}=i,h=0,u=-1,m=e_,g=(D,_)=>f(this,null,function*(){let S=n||this;try{let O=yield o.apply(S,a);h>0&&s&&s.call(this,h),h=0,D(O)}catch(O){let K=()=>{clearTimeout(u),h=0,m=gh,_(O)},G=()=>{m!==gh&&h<(Qt(c)?c():c)?(h++,m=t_,Qt(t)&&t.call(this,h,K),u=window.setTimeout(()=>{u=-1,g(D,_)},Qt(l)?l(h):l)):(K(),Qt(r)&&r.call(this,O))};Qt(e)?e.call(this,{error:O,retry:G,reject:_,retryFuncArgs:a,retriedCount:h}):G()}});return new Promise(g)}}var Yt=i_;var mo=class{constructor(i){d(this,"userId");d(this,"remoteUserId");d(this,"id");d(this,"sdkAppId");d(this,"type");d(this,"isLocal");this.id=i.id,this.userId=i.userId,this.sdkAppId=i.sdkAppId,this.remoteUserId=i.remoteUserId,this.isLocal=Un(i.isLocal)?i.isLocal:!0,this.type=this.isLocal?"":i.type}createChild(i){return Object.setPrototypeOf(i,this)}setUserId(i){this.userId=i}setSdkAppId(i){this.sdkAppId=i}log(i,e){let t=this.isLocal?this.userId:this.remoteUserId;e.unshift(`[${this.isLocal?"\u2191":"\u2193"}${this.type&&this.type!=="main"?"*":""}${this.id}${t?`|${t}`:""}]`),C.log(i,e,Oi(this.userId)||_h(this.userId),this.userId,this.sdkAppId)}info(...i){this.log(2,i)}debug(...i){this.log(1,i)}warn(...i){this.log(3,i)}error(...i){this.log(4,i)}};var Co={};Si(Co,{ANDROID_VERSION:()=>ld,CHROME_MAJOR_VERSION:()=>st,CHROME_VERSION:()=>ta,EDGE_VERSION:()=>Fn,EDG_MAJOR_VERSION:()=>ud,EDG_VERSION:()=>$n,FIREFOX_MAJOR_VERSION:()=>_o,FIREFOX_VERSION:()=>Bn,HUAWEI_VERSION:()=>Yn,IE_VERSION:()=>a_,IOS_MAIN_VERSION:()=>nt,IOS_VERSION:()=>Kt,IPADQQB_VERSION:()=>zn,IS_ANDROID:()=>pe,IS_ANDROID_WEBVIEW:()=>u_,IS_ANY_SAFARI:()=>nr,IS_CHROME:()=>Ro,IS_CHROME_OS:()=>hd,IS_CHROMIUM_BASE:()=>Ze,IS_DESKTOP_IOS_CHROME:()=>Id,IS_EDG:()=>go,IS_EDGE:()=>vr,IS_ELECTRON:()=>d_,IS_FIREFOX:()=>ae,IS_HEADLESS_CHROME:()=>gd,IS_HONOR:()=>fd,IS_HUAWEI:()=>pd,IS_HUAWEIBROWSER:()=>Is,IS_IE:()=>Ih,IS_IE8:()=>n_,IS_IOS:()=>Ie,IS_IOS_13_OR_14:()=>Sd,IS_IOS_15_1:()=>Ed,IS_IOS_CHROME:()=>Ah,IS_IPAD:()=>fo,IS_IPADQQB:()=>Ts,IS_IPAD_PRO:()=>dd,IS_IPHONE:()=>sr,IS_IPOD:()=>Sh,IS_LINUX:()=>Es,IS_LOCAL:()=>Ut,IS_MAC:()=>Vt,IS_MACQQB:()=>gs,IS_MIBROWSER:()=>Ss,IS_MQQB:()=>Io,IS_NATIVE_ANDROID:()=>s_,IS_OLD_ANDROID:()=>o_,IS_OPENHARMONY:()=>_d,IS_OPPOBROWSER:()=>Rs,IS_SAFARI:()=>Pe,IS_SAFARI_15_1:()=>h_,IS_SAMSUNGBROWSER:()=>As,IS_SOGOU:()=>fs,IS_SOGOUM:()=>ps,IS_TBS:()=>wt,IS_UCBROWSER:()=>md,IS_VIVOBROWSER:()=>Cs,IS_WECHAT:()=>Eo,IS_WIN:()=>Dr,IS_WQQB:()=>_s,IS_WX:()=>c_,IS_X5MQQB:()=>So,IS_XWEB:()=>To,MACQQB_VERSION:()=>Xn,MI_VERSION:()=>Qn,MQQB_VERSION:()=>po,OPENHARMONY_VERSION:()=>l_,OPPO_VERSION:()=>Kn,SAFARI_VERSION:()=>Mi,SAMSUNG_VERSION:()=>Zn,SOGOUM_VERSION:()=>Hn,SOGOU_VERSION:()=>Gn,TBS_VERSION:()=>Wn,UA_DATA_STRING:()=>Pt,USER_AGENT:()=>Lt,VIVO_VERSION:()=>ea,WECHAT_VERSION:()=>jn,WQQB_VERSION:()=>qn,XWEB_VERSION:()=>Jn,browserInfo:()=>Zt,getBrowserInfo:()=>Rh,getChromeMajorVersion:()=>Ao,getDeviceModel:()=>Mr,getGPUInfo:()=>Rd,getOSName:()=>ia,getOSNumber:()=>ys,getOSString:()=>xi,getOSType:()=>m_,getTerminalType:()=>Cd,getUserAgentData:()=>Or,isLocalStorageEnabled:()=>ki,isMobile:()=>Ad,isVersionSmallerThan:()=>Td});var Lt=typeof navigator=="undefined"?"":navigator.userAgent,z=o=>new RegExp(o,"i").test(Lt),Oe=o=>{if(z(o)){let i=new RegExp(`${o}\\/([\\d.]+)`),e=Lt.match(i);if(e&&e[1])return e[1]}return""},cd=o=>{if(z(o)){let i=new RegExp(`${o}\\/(\\d+)`),e=Lt.match(i);if(e&&e[1])return parseFloat(e[1])}return NaN},Th=/AppleWebKit\/([\d.]+)/i.exec(Lt),r_=Th?parseFloat(Th[1]):NaN,fo=z("iPad"),dd=typeof navigator!="undefined"&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&z("Macintosh"),sr=z("iPhone")&&!fo,Sh=z("iPod"),Ie=sr||fo||Sh||dd,pe=z("Android"),ld=function(){if(pe){let o=Lt.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(o){let i=o[1]&&parseFloat(o[1]),e=o[2]&&parseFloat(o[2]);if(i&&e)return parseFloat(`${o[1]}.${o[2]}`);if(i)return i}}return NaN}(),o_=pe&&z("webkit")&&ld<2.3,s_=pe&&ld<5&&r_<537,ae=z("Firefox"),Bn=Oe("Firefox"),_o=cd("Firefox"),vr=z("Edge"),Fn=Oe("Edge"),go=z("Edg"),$n=Oe("Edg"),ud=cd("Edg"),ps=z("SogouMobileBrowser"),Hn=Oe("SogouMobileBrowser"),fs=z("MetaSr\\s"),Gn=Oe("MetaSr\\s"),wt=z("TBS"),Wn=Oe("TBS"),To=z("XWEB"),Jn=Oe("XWEB"),n_=z("MSIE\\s8\\.0"),Ih=z("MSIE\\/\\d+"),a_=function(){if(Ih){let o=/MSIE\s(\d+)\.\d/.exec(Lt),i=o&&parseFloat(o[1]);return!i&&/Trident\/7.0/i.test(Lt)&&/rv:11.0/.test(Lt)&&(i=11),i}return NaN}(),Eo=z("(micromessenger|webbrowser)"),jn=Oe("MicroMessenger"),So=!wt&&z("MQQBrowser")&&z("COVC"),Io=!wt&&z("MQQBrowser")&&!z("COVC"),po=Io||So?Oe("MQQBrowser"):"",_s=!wt&&z(" QQBrowser"),qn=Oe(" QQBrowser"),gs=!wt&&z("QQBrowserLite"),Xn=Oe("QQBrowserLite"),Ts=!wt&&z("MQBHD"),zn=Oe("MQBHD"),Dr=z("Windows"),Vt=!Ie&&z("MAC OS X"),Es=!pe&&z("Linux"),hd=z("CrOS"),c_=z("MicroMessenger"),md=z("UCBrowser"),d_=z("Electron"),Ss=z("MiuiBrowser"),Qn=Oe("MiuiBrowser"),Is=z("HuaweiBrowser"),pd=z("Huawei")||z("HUAWEI"),fd=z("Honor")||z("HONOR"),Yn=Oe("HuaweiBrowser"),As=z("SamsungBrowser"),Zn=Oe("SamsungBrowser"),Rs=z("HeyTapBrowser"),Kn=Oe("HeyTapBrowser"),Cs=z("VivoBrowser"),ea=Oe("VivoBrowser"),_d=z("OpenHarmony"),l_=Oe("OpenHarmony"),Ao=()=>cd("Chrome"),Ze=z("Chrome"),Ro=!vr&&!fs&&!ps&&!wt&&!To&&!go&&!_s&&!Ss&&!Is&&!As&&!Rs&&!Cs&&Ze,gd=z("HeadlessChrome"),st=Ao(),ta=Oe("Chrome"),Pe=!Ze&&!Io&&!So&&!gs&&!Ts&&z("Safari"),nr=Pe||Ie,Mi=Oe("Version"),u_=/Android.*(wv|.0.0.0)/.test(Lt),Kt=(()=>{if(dd)return Mi;if(Ie){let o=Lt.match(/OS (\d+)_(\d+)/i);if(o&&o[1]){let i=o[1];return o[2]&&(i+=`.${o[2]}`),i}}return""})();function Td(o,i){let e=o.split(".").map(r=>Number(r)),t=i.split(".").map(r=>Number(r));for(let r=0;r<Math.max(e.length,t.length);r++){let s=e[r]||0,n=t[r]||0;if(s<n)return!0;if(s>n)return!1}return!1}var nt=Number(Kt.split(".")[0]),h_=Mi==="15.1",Ed=Kt==="15.1",Sd=(()=>{let o=Number(Kt.split(".")[0]);return o===14||o===13})(),Ah=z("CriOS"),Id=Ah&&Mi==="11.1.1",Ut=typeof location=="undefined"?!1:location.protocol==="file:"||location.hostname==="localhost"||location.hostname==="127.0.0.1",ki=(()=>{let o;return()=>{if(typeof o=="undefined")try{o=!!window.localStorage}catch(i){o=!1}return o}})(),Zt=Rh();function Rh(){let o=new Map([[ae,["Firefox",Bn]],[go,["Edg",$n]],[Ro,["Chrome",ta]],[Pe,["Safari",Mi]],[wt,["TBS",Wn]],[To,["XWEB",Jn]],[Eo&&sr,["WeChat",jn]],[_s,["QQ(Win)",qn]],[Io,["QQ(Mobile)",po]],[So,["QQ(Mobile X5)",po]],[gs,["QQ(Mac)",Xn]],[Ts,["QQ(iPad)",zn]],[Ss,["MI",Qn]],[Is,["HW",Yn]],[As,["Samsung",Zn]],[Rs,["OPPO",Kn]],[Cs,["VIVO",ea]],[vr,["EDGE",Fn]],[ps,["SogouMobile",Hn]],[fs,["Sogou",Gn]]]),i="unknown",e="unknown";return o.has(!0)&&([i,e]=o.get(!0)),{name:i,version:e}}var ce=null;function Ad(){return ce&&typeof ce.mobile=="boolean"?ce.mobile:pe||Ie||sr||fo||_d}var Pt="";function Or(){return f(this,null,function*(){if(ce)return ce;if(!navigator.userAgentData||typeof navigator.userAgentData.getHighEntropyValues!="function")return null;try{return ce=yield navigator.userAgentData.getHighEntropyValues(["architecture","bitness","model","platformVersion","fullVersionList"]),ce&&!Pt&&(Pt=`UAData: ${ce.platform}/${ce.platformVersion}`,ce.architecture&&ce.bitness&&(Pt+=` ${ce.architecture}/${ce.bitness}`),ce.mobile&&(Pt+=" mobile"),ce.model&&(Pt+=` model: ${ce.model.replace(/\s+/g,"/")}`),ce.fullVersionList&&(Pt+=` ${ce.fullVersionList.filter(o=>o.brand!=="Not/A)Brand").map(o=>`${o.brand}/${o.version}`).join(",")}`)),ce}catch(o){return null}})}function Rd(){try{let o=document.createElement("canvas"),i=o.getContext("webgl")||o.getContext("experimental-webgl");if(!i)return"";let e=i.getExtension("WEBGL_debug_renderer_info");if(e){let t=i.getParameter(e.UNMASKED_VENDOR_WEBGL),r=i.getParameter(e.UNMASKED_RENDERER_WEBGL);return`${t} ${r}`}return""}catch(o){return""}}function Mr(){return(ce==null?void 0:ce.model)||""}var Eh=new Map([[pe,"Android"],[Ie,"iOS"],[Dr,"Windows"],[Vt,"MacOS"],[Es,"Linux"],[hd,"ChromeOS"]]),ia=function(){return Eh.get(!0)?Eh.get(!0):ce?ce.platform:"unknown"};function ys(){return Dr?1:pe?2:Vt?3:Ie?4:Es?5:hd?6:0}var xi=()=>{let o=ia();return o+=`/${Zt.name}/${Pe?Zt.version:Zt.version.split(".")[0]}`,ce!=null&&ce.platformVersion&&(o+=`/${ce.platformVersion}`),ce!=null&&ce.architecture&&(o+=`/${ce.architecture}`),o};function Cd(){return pe?4:sr?2:fo?3:Vt?12:Dr?5:Es?13:_d?22:1}function m_(){return pe?"Android":sr?"iPhone":fo?"iPad":Vt?"Mac":Dr?"Windows":Es?"Linux":"unknown"}var Ch=$e(Ye(),1),p_=new Ch.default,E=p_;var Bt=($=>($.ROOM_DESTROY="1",$.JOIN_START="21",$.JOIN_SCHEDULE_SUCCESS="22",$.JOIN_SIGNAL_CONNECTION_START="23",$.JOIN_SIGNAL_CONNECTION_END="24",$.JOIN_SEND_CMD="25",$.JOIN_RECEIVED_CMD_RES="26",$.JOIN_SUCCESS="27",$.JOIN_FAILED="28",$.LEAVE_START="51",$.LEAVE_SEND_CMD="52",$.LEAVE_SUCCESS="53",$.PUBLISH_START="61",$.SEND_FIRST_VIDEO_FRAME="62",$.PUBLISH_FAILED="63",$.SUBSCRIBE_START="81",$.SUBSCRIBE_SUCCESS="82",$.SUBSCRIBE_FAILED="84",$.UNSUBSCRIBE_SUCCESS="83",$.LOCAL_TRACK_CAPTURE_START="101",$.LOCAL_TRACK_CAPTURE_SUCCESS="102",$.LOCAL_TRACK_CAPTURE_FAILED="103",$.LOCAL_TRACK_PUBLISHED="104",$.LOCAL_TRACK_UNPUBLISHED="105",$.LOCAL_TRACK_REPLACED="106",$.SWITCH_DEVICE_SUCCESS="107",$.TRACK_MUTED="108",$.TRACK_UNMUTED="109",$.REMOTE_TRACK_SUBSCRIBED="110",$.REMOTE_TRACK_UNSUBSCRIBED="111",$.LOCAL_TRACK_RECAPTURE="112",$.LOCAL_AUDIO_STARTED="113",$.LOCAL_AUDIO_STOPPED="114",$.REMOTE_AUDIO_STARTED="115",$.REMOTE_AUDIO_STOPPED="116",$.PLAY_TRACK_START="151",$.PLAYER_STATE_CHANGED="152",$.VIDEO_LOADED_DATA="153",$.AUTOPLAY_DIALOG_CLICK_CONFIRM="154",$.SIGNAL_CONNECTION_STATE_CHANGED="201",$.PEER_CONNECTION_STATE_CHANGED="202",$.SINGLE_CONNECTION_STAT="203",$.SPC_RECONNECTED="204",$.HEARTBEAT_REPORT="251",$.RECEIVED_PUBLISHED_USER_LIST="252",$.REMOTE_PUBLISH_STATE_CHANGED="253",$.AUDIO_LEVEL_INTERVAL="260",$.NETWORK_QUALITY="261",$.VIDEO_CODEC_IMPLEMENTATION_CHANGED="262",$.QUALITY_LIMITATION_CHANGED="263",$.LOG="264",$.AUDIO_PROCESSOR_DEBUG="265",$.SWITCH_ROOM_START="401",$.SWITCH_ROOM_SUCCESS="407",$.SWITCH_ROOM_FAILED="408",$))(Bt||{});var A=Bt;var f_="%cTRTC%c%s",__="padding: 1px 4px;border-radius: 3px;color: #fff;background: #1E88E5;",g_="display: inline",ra=class ra{constructor(){d(this,"_isEnableUploadLog",!0);d(this,"_localJoinedUser",new Map);d(this,"_queue",[]);d(this,"_timeoutId",-1);d(this,"_logLevel",1);d(this,"_logLevelToUpload",2);!io&&!os&&(this.checkURLParam(),this.installEvents())}get isAbleToUpload(){return this._isEnableUploadLog&&this._timeoutId!==-1}installEvents(){E.on(A.JOIN_SCHEDULE_SUCCESS,({schedule:i})=>{var e;(e=i==null?void 0:i.config)!=null&&e.logLevelToUpload&&Dt[i.config.logLevelToUpload]&&(this._logLevelToUpload=i.config.logLevelToUpload)}),E.on(A.JOIN_SUCCESS,({room:i})=>{this.addJoinedUser({userId:i.userId,sdkAppId:i.sdkAppId}),this.startUpload()}),E.once(A.JOIN_FAILED,()=>{this.startUpload()}),E.on(A.LEAVE_SUCCESS,({room:i})=>{this.deleteJoinedUser(i.userId)})}startUpload(){this._timeoutId===-1&&this.uploadInterval()}addJoinedUser(i){this._localJoinedUser.set(i.userId,i),this.startUpload()}deleteJoinedUser(i){this._localJoinedUser.delete(i)}uploadInterval(){this.upload().catch(()=>{}),this._timeoutId=window.setTimeout(()=>this.uploadInterval(),5e3)}getLogsToUpload(){let i={map:new Map,splicedQueue:[]};if(this._queue[0].forAllJoinedClients&&this._localJoinedUser.size===0)return i;let e=0;for(;e<this._queue.length&&e!==50;e++){let t=this._queue[e];if(t.forAllJoinedClients)this._localJoinedUser.forEach(({userId:r,sdkAppId:s})=>{i.map.has(r)?i.map.get(r).logs.push(t):i.map.set(r,{userId:r,sdkAppId:s,logs:[t]})});else if(ee(t.userId)&&j(t.sdkAppId)){let{userId:r,sdkAppId:s}=t;i.map.has(r)?i.map.get(r).logs.push(t):i.map.set(r,{userId:r,sdkAppId:s,logs:[t]})}}return i.map.size>0&&(i.splicedQueue=this._queue.splice(0,e)),i}upload(){return f(this,null,function*(){if(this._queue.length===0||!this._isEnableUploadLog)return;let{map:i,splicedQueue:e}=this.getLogsToUpload();if(i.size===0)return;try{let r=[...i.values()];for(let s=0;s<r.length;s++){let{userId:n,sdkAppId:a,logs:c}=r[s];yield this.uploadLogWithRetry(JSON.stringify({timestamp:An(),sdkAppId:String(a),userId:n,version:xe,log:c.map(l=>l.log).join(`
|
|
6
|
-
`)}),a),c.forEach(l=>l.uploaded=!0)}}catch(r){}let t=e.filter(r=>!r.uploaded);t.length>0&&(this._queue=t.concat(this._queue))})}uploadLogWithRetry(i,e){return Yt({retryFunction:()=>Di({url:yi(e,Ki.LOG),body:i,timeout:5e3,priority:"low"}),settings:{retries:3,timeout:2e3},onError:({retry:t})=>{t()}})()}getPrefix(i){let e=new Date;return e.setTime(is()),`[${to(e)}] <${Dt[i]}>`}getLogLevel(){return this._logLevel}setLogLevel(i){T(Dt[i])||(this._logLevel!==i&&this.info("setLogLevel",i),this._logLevel=i)}enableUploadLog(){this._isEnableUploadLog=!0}disableUploadLog(){this.warn("disableUploadLog"),this._isEnableUploadLog=!1}logChunkToString(i){if(ee(i))return i;try{return i instanceof Error?i.toString():JSON.stringify(i)}catch(e){return""}}log(i,e,t=!0,r,s){var c;e.unshift(this.getPrefix(i));let n={log:e.reduce((l,h)=>`${l} ${this.logChunkToString(h)}`.trim(),""),level:i,userId:r,sdkAppId:s,forAllJoinedClients:t};if(E.emit(A.LOG,{log:n}),this._isEnableUploadLog&&i>=this._logLevelToUpload&&this._queue.push(n),i<this._logLevel)return;let a=((c=Dt[i])==null?void 0:c.toLowerCase())||"info";ra.PRINT_LOG_TAG?console[a](f_,__,g_,...e):console[a](...e)}debug(...i){this.log(1,i)}info(...i){this.log(2,i)}warn(...i){this.log(3,i)}error(...i){this.log(4,i)}createLogger(i){return new mo(i)}checkURLParam(){let e=new URLSearchParams(location.search).get("logLevelToUpload"),t=e?Number(e):-1;Dt[t]&&(this._logLevelToUpload=t)}getQueue(){return this._queue}};d(ra,"PRINT_LOG_TAG",!(Ie||pe||gd));var yd=ra,C=new yd;var T_=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,o=>{let i=Math.random()*16|0;return(o=="x"?i:i&3|8).toString(16)})},bs=T_;var bd=class{constructor(){d(this,"_prefix","TRTC");d(this,"_queue",new Map)}getRealKey(i){return`${this._prefix}_${i}`}checkStorage(){if(!ki())return;setInterval(this.doFlush.bind(this),2e4),Object.keys(localStorage).filter(t=>{if(t.startsWith(this._prefix))try{let r=localStorage.getItem(t);if(!r)return!1;let s=JSON.parse(r);if(s&&s.expiresIn<Date.now())return!0}catch(r){return!1}return!1}).forEach(t=>localStorage.removeItem(t))}doFlush(){if(ki())try{for(let[i,e]of this._queue)localStorage.setItem(i,JSON.stringify(e))}catch(i){C.warn(i)}}getItem(i){if(!ki())return null;try{let e=localStorage.getItem(this.getRealKey(i));if(!e)return null;let t=JSON.parse(e);return t&&t.expiresIn>=Date.now()?t.value:null}catch(e){C.warn(e)}}setItem(i,e){if(ki())try{let t={expiresIn:Date.now()+Cn,value:e};this._queue.set(this.getRealKey(i),t)}catch(t){C.warn(t)}}deleteItem(i){if(!ki())return!1;try{return i=this.getRealKey(i),this._queue.delete(i),localStorage.removeItem(i),!0}catch(e){return C.warn(e),!1}}clear(){if(ki())try{localStorage.clear()}catch(i){C.warn(i)}}},yo=new bd;var ni={};Si(ni,{HTTPS_API:()=>V_,IS_GET_CAPABILITIES_SUPPORTED:()=>Xd,IS_GET_SETTINGS_SUPPORTED:()=>si,IS_GET_SYNCHRONIZATION_SOURCES_SUPPORTED:()=>qd,IS_INSERTABLE_STREAM_SUPPORTED:()=>Vi,IS_JITTER_BUFFER_TARGET_SUPPORTED:()=>ga,IS_RTC_RTP_SENDER_SUPPORTED:()=>Ps,IS_SCRIPT_TRANSFORM_SUPPORTED:()=>Do,IS_SEI_SUPPORTED:()=>ws,IS_SPC_SUPPORTED:()=>vo,basis:()=>$_,capabilityCheck:()=>Qd,checkSystemRequirementsInternal:()=>pa,decodeSupportStatus:()=>ma,encodeSupportStatus:()=>Wd,getBrowserInfo:()=>P_,getDisplayResolution:()=>Jh,isAddTransceiverSupported:()=>ct,isBrowserSupported:()=>Jd,isCanvasCaptureStreamAPISupported:()=>Xh,isCanvasSmallStreamSupported:()=>fa,isGetReceiversSupported:()=>wr,isGetSendersSupported:()=>dr,isGetTransceiversSupported:()=>oi,isGetUserMediaSupported:()=>jh,isMediaDevicesSupported:()=>ha,isMediaSessionSupported:()=>Yh,isMediaStreamTrackProcessorSupported:()=>ks,isReplaceTrackSupported:()=>jd,isRequestVideoFrameCallbackSupported:()=>Vr,isSIMDSupported:()=>F_,isScaleResolutionDownBySupported:()=>zh,isScreenCaptureApiAvailable:()=>xs,isSelectedCandidatePair:()=>cr,isSetParametersSupported:()=>Ls,isSmallStreamSupported:()=>_a,isStopTransceiverSupported:()=>B_,isTRTCSupported:()=>L_,isUnifiedPlanDefault:()=>U_,isUsedInHttpProtocol:()=>wi,isWebAudioSupported:()=>qh,isWebCodecSupported:()=>Qh,isWebCodecsSupported:()=>Wh,isWebRTCSupported:()=>zd,isWebTransportSupported:()=>Zh});var Ud={};Si(Ud,{AUDIO_LEVEL_SCALE:()=>Rt,AudioCodecPipelineType:()=>wd,AudioDecoderDowngradeState:()=>Od,AudioPlayerMode:()=>Pd,AudioType:()=>vh,BASIC_TYPE:()=>Pi,BannedReason:()=>Ld,CONNECTION_CLOSED_REASON:()=>vd,ClientEvent:()=>yh,CodecType:()=>xh,ConnectionEvent:()=>Ft,ConnectionState:()=>pt,DECODE_FAILED_ERROR_CODE:()=>Vd,FacingMode:()=>sa,LeaveReason:()=>kh,LocalTrackEvent:()=>Ns,MULTI_VIDEO_DATA_TYPE:()=>$t,MediaType:()=>Ve,MediaTypeLabel:()=>E_,MonitorEventId:()=>Ds,MutedFlag:()=>Nh,NetworkQualityValue:()=>xd,PlayerState:()=>kr,ReceiveMode:()=>Mh,RemoteStreamType:()=>at,RemoteTrackEvent:()=>vs,RoomEvent:()=>ei,SMALL_MODE:()=>Os,SceneNumber:()=>Dd,StreamEvent:()=>bh,StreamType:()=>Oh,SubscribeMediaType:()=>Nd,TIMER_TYPE:()=>ii,TRACK_ACTION:()=>kd,TRACK_KIND:()=>Md,TrackEvent:()=>ti,UserRole:()=>Ke,UserRoleNumber:()=>xr,VideoCodec:()=>ar,VideoCodecPipelineType:()=>aa,VideoContentHint:()=>bo,VideoDecoderDowngradeState:()=>oa,VideoPlayerMode:()=>na,VideoType:()=>Dh});var Ft=(_=>(_.TRACK_ADDED="track-added",_.TRACK_UPDATED="track-updated",_.TRACK_SUBSCRIBED="track-subscribed",_.STREAM_ADDED="stream-added",_.STREAM_REMOVED="stream-removed",_.STREAM_UPDATED="stream-updated",_.STREAM_PUBLISHED="stream-published",_.STREAM_SUBSCRIBED="stream-subscribed",_.STREAM_UNSUBSCRIBED="stream-unsubscribed",_.STATE_CHANGED="state-changed",_.ERROR="error",_.CONNECTION_STATE_CHANGED="connection-state-changed",_.FIREWALL_RESTRICTION="firewall-restriction",_.SEI_MESSAGE="sei-message",_.CLOSED="closed",_))(Ft||{}),vd=(n=>(n.REMOTE_LEAVE="remote user exitRoom",n.REMOTE_UNPUBLISH="remote user unpublished",n.LOCAL_LEAVE="you exitRoom",n.LOCAL_UNPUBLISH="you unpublished",n.LOCAL_UNSUBSCRIBE="you unsubscribed",n.SWITCH_ROLE="you switch role to audience",n))(vd||{}),yh=(S=>(S.STREAM_ADDED="stream-added",S.STREAM_REMOVED="stream-removed",S.STREAM_UPDATED="stream-updated",S.STREAM_SUBSCRIBED="stream-subscribed",S.CONNECTION_STATE_CHANGED="connection-state-changed",S.PEER_JOIN="peer-join",S.PEER_LEAVE="peer-leave",S.MUTE_AUDIO="mute-audio",S.MUTE_VIDEO="mute-video",S.UNMUTE_AUDIO="unmute-audio",S.UNMUTE_VIDEO="unmute-video",S.CLIENT_BANNED="client-banned",S.NETWORK_QUALITY="network-quality",S.AUDIO_VOLUME="audio-volume",S.SEI_MESSAGE="sei-message",S.ERROR="error",S))(yh||{}),bh=(s=>(s.PLAYER_STATE_CHANGED="player-state-changed",s.SCREEN_SHARING_STOPPED="screen-sharing-stopped",s.CONNECTION_STATE_CHANGED="connection-state-changed",s.DEVICE_AUTO_RECOVERED="device-auto-recovered",s.ERROR="error",s))(bh||{}),Ns=(n=>(n.DEVICE_AUTO_RECOVERED="1",n.DEVICE_RECOVER_FAILED="5",n.DEVICE_CHANGED="2",n.ERROR="3",n.PUBLISH_STATE_CHANGED="4",n.ENCODE_FAILED="6",n))(Ns||{}),kr=(t=>(t.PAUSED="PAUSED",t.PLAYING="PLAYING",t.STOPPED="STOPPED",t))(kr||{}),ei=(Z=>(Z.PEER_JOIN="peer-join",Z.PEER_LEAVE="peer-leave",Z.SIGNAL_CONNECTION_STATE_CHANGED="signal-connection-state-changed",Z.MEDIA_CONNECTION_STATE_CHANGED="media-connection-state-changed",Z.BANNED="banned",Z.NETWORK_QUALITY="network-quality",Z.AUDIO_VOLUME="audio-volume",Z.SEI_MESSAGE="sei-message",Z.ERROR="error",Z.REMOTE_PUBLISH_STATE_CHANGED="remote-publish-state-changed",Z.REMOTE_PUBLISHED="remote-published",Z.REMOTE_UNPUBLISHED="remote-unpublished",Z.FIREWALL_RESTRICTION="firewall-restriction",Z.HEARTBEAT_REPORT="heartbeat-report",Z.CUSTOM_MESSAGE="custom-message",Z.LAYER_DATA="layerData",Z.FIRST_VIDEO_FRAME="first-video-frame",Z.DUMP="dump",Z.AUDIO_FRAME="audio-frame",Z.SUBSCRIBE_SMALL_VIDEO_CHANGED="subscribe-small-video-changed",Z))(ei||{}),ti=(a=>(a.PLAYER_STATE_CHANGED="player-state-changed",a.MUTE="mute",a.UNMUTE="unmute",a.ERROR="error",a.INPUT_MEDIA_TRACK_CHANGED="input-media-track-changed",a.OUTPUT_MEDIA_TRACK_CHANGED="output-media-track-changed",a.FIRST_VIDEO_FRAME="first-video-frame",a))(ti||{}),vs=(e=>(e.DECODE_FAILED="decode-failed",e.DECODE_DOWNGRADE_STATE_CHANGED="decode-downgrade-state-changed",e))(vs||{}),Nh=(a=>(a[a.VIDEO=1]="VIDEO",a[a.SMALL=2]="SMALL",a[a.AUX=4]="AUX",a[a.AUDIO=8]="AUDIO",a[a.VIDEO_MUTE=16]="VIDEO_MUTE",a[a.AUX_MUTE=32]="AUX_MUTE",a[a.AUDIO_MUTE=64]="AUDIO_MUTE",a))(Nh||{}),Dd=(e=>(e[e.RTC=1]="RTC",e[e.LIVE=2]="LIVE",e))(Dd||{}),xr=(e=>(e[e.ANCHOR=20]="ANCHOR",e[e.AUDIENCE=21]="AUDIENCE",e))(xr||{}),Ke=(e=>(e.ANCHOR="anchor",e.AUDIENCE="audience",e))(Ke||{}),pt=(s=>(s.CONNECTED="CONNECTED",s.DISCONNECTED="DISCONNECTED",s.CONNECTING="CONNECTING",s.RECONNECTED="RECONNECTED",s.RECONNECTING="RECONNECTING",s))(pt||{}),Od=(r=>(r.INITIALIZED="INITIALIZED",r.STARTING="STARTING",r.STARTED="STARTED",r.FAILED="FAILED",r))(Od||{}),oa=(r=>(r.INITIALIZED="INITIALIZED",r.STARTING="STARTING",r.STARTED="STARTED",r.FAILED="FAILED",r))(oa||{}),Md=(t=>(t.AUDIO="audio",t.VIDEO="video",t.AUXILIARY="auxVideo",t))(Md||{}),kd=(e=>(e.ADD="add",e.REMOVE="remove",e))(kd||{}),Ve=(s=>(s[s.NULL=0]="NULL",s[s.AUDIO=1]="AUDIO",s[s.AUX_VIDEO=2]="AUX_VIDEO",s[s.BIG_VIDEO=4]="BIG_VIDEO",s[s.SMALL_VIDEO=8]="SMALL_VIDEO",s))(Ve||{}),E_={1:"audio",2:"auxVideo",4:"video"},vh=(i=>(i[i.opus=111]="opus",i))(vh||{}),Dh=(e=>(e[e.h264=100]="h264",e[e.vp8=101]="vp8",e))(Dh||{}),Oh=(e=>(e.Big="big",e.Small="small",e))(Oh||{}),at=(e=>(e.Main="main",e.Aux="auxiliary",e))(at||{}),$t=(s=>(s[s.MULTI_DATA_AUDIO=1]="MULTI_DATA_AUDIO",s[s.MULTI_DATA_BIG_IMG=2]="MULTI_DATA_BIG_IMG",s[s.MULTI_DATA_SMALL_IMG=3]="MULTI_DATA_SMALL_IMG",s[s.MULTI_DATA_AUX_IMG=7]="MULTI_DATA_AUX_IMG",s[s.MULTI_DATA_TYPE_BUTT=12]="MULTI_DATA_TYPE_BUTT",s))($t||{}),Ds=(M=>(M[M.PUBLISH_VIDEO=32768]="PUBLISH_VIDEO",M[M.PUBLISH_AUDIO=32769]="PUBLISH_AUDIO",M[M.UNPUBLISH_VIDEO=32770]="UNPUBLISH_VIDEO",M[M.UNPUBLISH_AUDIO=32771]="UNPUBLISH_AUDIO",M[M.MUTE_AUDIO=32772]="MUTE_AUDIO",M[M.MUTE_VIDEO=32773]="MUTE_VIDEO",M[M.UNMUTE_AUDIO=32774]="UNMUTE_AUDIO",M[M.UNMUTE_VIDEO=32775]="UNMUTE_VIDEO",M[M.SUBSCRIBE_VIDEO=32776]="SUBSCRIBE_VIDEO",M[M.SUBSCRIBE_AUDIO=32777]="SUBSCRIBE_AUDIO",M[M.UNSUBSCRIBE_VIDEO=32778]="UNSUBSCRIBE_VIDEO",M[M.UNSUBSCRIBE_AUDIO=32779]="UNSUBSCRIBE_AUDIO",M[M.SWITCH_CAMERA=32780]="SWITCH_CAMERA",M[M.SWITCH_MICROPHONE=32781]="SWITCH_MICROPHONE",M[M.REPLACE_VIDEO=32782]="REPLACE_VIDEO",M[M.REPLACE_AUDIO=32783]="REPLACE_AUDIO",M[M.MUTE_REMOTE_VIDEO=32784]="MUTE_REMOTE_VIDEO",M[M.MUTE_REMOTE_AUDIO=32785]="MUTE_REMOTE_AUDIO",M[M.UNMUTE_REMOTE_VIDEO=32786]="UNMUTE_REMOTE_VIDEO",M[M.UNMUTE_REMOTE_AUDIO=32787]="UNMUTE_REMOTE_AUDIO",M[M.JOIN=32788]="JOIN",M[M.LEAVE=32789]="LEAVE",M[M.SIGNAL_DISCONNECTED=32790]="SIGNAL_DISCONNECTED",M[M.SIGNAL_CONNECTED=32791]="SIGNAL_CONNECTED",M[M.TRANSPORT_UPLINK_CONNECTED=32792]="TRANSPORT_UPLINK_CONNECTED",M[M.TRANSPORT_DOWNLINK_CONNECTED=32793]="TRANSPORT_DOWNLINK_CONNECTED",M[M.SIGNAl_RECONNECTING=32794]="SIGNAl_RECONNECTING",M[M.SIGNAL_RECONNECT_SUCCESS=32795]="SIGNAL_RECONNECT_SUCCESS",M[M.SIGNAL_RECONNECT_FAIL=32796]="SIGNAL_RECONNECT_FAIL",M[M.TRANSPORT_UPLINK_RECONNECTING=32797]="TRANSPORT_UPLINK_RECONNECTING",M[M.TRANSPORT_UPLINK_RECONNECT_SUCCESS=32798]="TRANSPORT_UPLINK_RECONNECT_SUCCESS",M[M.TRANSPORT_UPLINK_RECONNECT_FAIL=32799]="TRANSPORT_UPLINK_RECONNECT_FAIL",M[M.TRANSPORT_DOWNLINK_RECONNECTING=32800]="TRANSPORT_DOWNLINK_RECONNECTING",M[M.TRANSPORT_DOWNLINK_RECONNECT_SUCCESS=32801]="TRANSPORT_DOWNLINK_RECONNECT_SUCCESS",M[M.TRANSPORT_DOWNLINK_RECONNECT_FAIL=32802]="TRANSPORT_DOWNLINK_RECONNECT_FAIL",M[M.SUBSCRIBE_SMALL_VIDEO=32803]="SUBSCRIBE_SMALL_VIDEO",M[M.UNSUBSCRIBE_SMALL_VIDEO=32804]="UNSUBSCRIBE_SMALL_VIDEO",M[M.PUBLISH_AUX=32805]="PUBLISH_AUX",M[M.UNPUBLISH_AUX=32806]="UNPUBLISH_AUX",M[M.DEVICE_CAPTURE=2003]="DEVICE_CAPTURE",M[M.VIDEO_ENCODER=4004]="VIDEO_ENCODER",M[M.VIDEO_DECODER=4005]="VIDEO_DECODER",M))(Ds||{}),xd=(a=>(a[a.UNKNOWN=0]="UNKNOWN",a[a.EXCELLENT=1]="EXCELLENT",a[a.GOOD=2]="GOOD",a[a.POOR=3]="POOR",a[a.BAD=4]="BAD",a[a.VERY_BAD=5]="VERY_BAD",a[a.DISCONNECTED=6]="DISCONNECTED",a))(xd||{}),Mh=(r=>(r[r.MANUAL=0]="MANUAL",r[r.AUTO_AUDIO=1]="AUTO_AUDIO",r[r.AUTO_VIDEO=2]="AUTO_VIDEO",r[r.AUTO_ALL=3]="AUTO_ALL",r))(Mh||{}),sa=(e=>(e.user="user",e.environment="environment",e))(sa||{}),na=(t=>(t[t.ELEMENT=0]="ELEMENT",t[t.CANVAS_FROM_ELEMENT=1]="CANVAS_FROM_ELEMENT",t[t.CANVAS_WITHOUT_ELEMENT=2]="CANVAS_WITHOUT_ELEMENT",t))(na||{}),Pd=(e=>(e[e.ELEMENT=0]="ELEMENT",e[e.CONTEXT=1]="CONTEXT",e))(Pd||{}),Ld=(r=>(r.BANNED="banned",r.KICK="kick",r.USER_TIME_OUT="user_time_out",r.ROOM_DISBAND="room_disband",r))(Ld||{}),kh=(l=>(l[l.USER_EXIT_REASON_TC_USER_EXIT_NORMAL=0]="USER_EXIT_REASON_TC_USER_EXIT_NORMAL",l[l.USER_EXIT_REASON_TC_USER_EXIT_TIMEOUT=1]="USER_EXIT_REASON_TC_USER_EXIT_TIMEOUT",l[l.USER_EXIT_REASON_TC_USER_EXIT_KICKED=2]="USER_EXIT_REASON_TC_USER_EXIT_KICKED",l[l.USER_EXIT_REASON_TC_USER_EXIT_CHANGED=3]="USER_EXIT_REASON_TC_USER_EXIT_CHANGED",l[l.USER_KICK_OUT_CODE_BUSINESS_USER=4]="USER_KICK_OUT_CODE_BUSINESS_USER",l[l.USER_KICK_OUT_CODE_BUSINESS_ROOM=5]="USER_KICK_OUT_CODE_BUSINESS_ROOM",l[l.USER_KICK_OUT_CODE_SERVER_USER=6]="USER_KICK_OUT_CODE_SERVER_USER",l[l.USER_KICK_OUT_CODE_SERVER_ROOM=7]="USER_KICK_OUT_CODE_SERVER_ROOM",l[l.USER_KICK_SESS_EXSIT=8]="USER_KICK_SESS_EXSIT",l))(kh||{}),Rt=1e8,Nd=class{constructor(){d(this,"mediaType",0)}set audio(i){i?this.mediaType|=1:this.mediaType&=-2}get audio(){return!!(this.mediaType&1)}set video(i){i?this.mediaType|=4:this.mediaType&=-5}get video(){return!!(this.mediaType&4)}set auxiliary(i){i?this.mediaType|=2:this.mediaType&=-3}get auxiliary(){return!!(this.mediaType&2)}set smallVideo(i){i?this.mediaType|=8:this.mediaType&=-9}get smallVideo(){return!!(this.mediaType&8)}},Pi=(s=>(s.String="string",s.Number="number",s.Boolean="boolean",s.Array="array",s.Object="object",s))(Pi||{}),ar=(t=>(t.H264="h264",t.H265="h265",t.VP8="vp8",t))(ar||{}),aa=(r=>(r[r.ENCRYPT_AND_DECRYPT=0]="ENCRYPT_AND_DECRYPT",r[r.DUMP=1]="DUMP",r[r.SEI=2]="SEI",r[r.ENCODE_AND_DECODE=3]="ENCODE_AND_DECODE",r))(aa||{}),wd=(r=>(r[r.ENCRYPT_AND_DECRYPT=0]="ENCRYPT_AND_DECRYPT",r[r.NTP_TO_AUDIO_FRAME=1]="NTP_TO_AUDIO_FRAME",r[r.DUMP=2]="DUMP",r[r.ENCODE_AND_DECODE=3]="ENCODE_AND_DECODE",r))(wd||{}),xh=(t=>(t.WebRTC="webrtc",t.WebCodecs="webcodecs",t.WebAssembly="webassembly",t))(xh||{}),Vd=(m=>(m[m.SUCCESS=0]="SUCCESS",m[m.FAILED=1]="FAILED",m[m.WEBCODEC_INIT=2]="WEBCODEC_INIT",m[m.WEBCODEC_CONFIG_NOT_SUPPORT=3]="WEBCODEC_CONFIG_NOT_SUPPORT",m[m.WEBCODEC_DECODER_ERROR=4]="WEBCODEC_DECODER_ERROR",m[m.WEBCODEC_TRACK_MUTE=5]="WEBCODEC_TRACK_MUTE",m[m.WASM_INIT=6]="WASM_INIT",m[m.WASM_WEBGL_UNAVALIABLE=7]="WASM_WEBGL_UNAVALIABLE",m[m.WASM_DECODER_ERROR=8]="WASM_DECODER_ERROR",m[m.WASM_TRACK_MUTE=9]="WASM_TRACK_MUTE",m[m.TEST=10]="TEST",m[m.RENDER_2D_ERROR=11]="RENDER_2D_ERROR",m))(Vd||{}),bo=(r=>(r.NONE="",r.DETAIL="detail",r.MOTION="motion",r.TEXT="text",r))(bo||{}),ii=(s=>(s.INTERVAL="interval",s.TIMEOUT="timeout",s.RAF="raf",s.RIC="ric",s.INTERVAL_IN_WORKER="intervalInWorker",s))(ii||{}),Os=(e=>(e.CANVAS="canvas",e.API="api",e))(Os||{});var x={AVOID_REPEATED_CALL:"AVOID_REPEATED_CALL",INVALID_PARAMETER_REQUIRED:"INVALID_PARAMETER_REQUIRED",INVALID_PARAMETER_TYPE:"INVALID_PARAMETER_TYPE",INVALID_PARAMETER_EMPTY:"INVALID_PARAMETER_EMPTY",INVALID_PARAMETER_INSTANCE:"INVALID_PARAMETER_INSTANCE",INVALID_PARAMETER_RANGE:"INVALID_PARAMETER_RANGE",INVALID_PARAMETER_MIN:"INVALID_PARAMETER_MIN",INVALID_PARAMETER_MAX:"INVALID_PARAMETER_MAX",INVALID_PARAMETER_STREAMTYPE:"INVALID_PARAMETER_STREAMTYPE",API_CALL_TIMEOUT:"API_CALL_TIMEOUT",SIGNAL_CHANNEL_RECONNECTION_FAILED:"SIGNAL_CHANNEL_RECONNECTION_FAILED",SIGNAL_CHANNEL_SETUP_FAILED:"SIGNAL_CHANNEL_SETUP_FAILED",ERROR_MESSAGE:"ERROR_MESSAGE",EXCHANGE_SDP_TIMEOUT:"EXCHANGE_SDP_TIMEOUT",DOWNLINK_RECONNECTION_FAILED:"DOWNLINK_RECONNECTION_FAILED",EXCHANGE_SDP_FAILED:"EXCHANGE_SDP_FAILED",UPDATE_OFFER_TIMEOUT:"UPDATE_OFFER_TIMEOUT",UPLINK_RECONNECTION_FAILED:"UPLINK_RECONNECTION_FAILED",INVALID_RECORDID:"INVALID_RECORDID",INVALID_PURE_AUDIO:"INVALID_PURE_AUDIO",INVALID_STREAMID:"INVALID_STREAMID",INVALID_USER_DEFINE_RECORDID:"INVALID_USER_DEFINE_RECORDID",INVALID_USER_DEFINE_PUSH_ARGS:"INVALID_USER_DEFINE_PUSH_ARGS",INVALID_PROXY:"INVALID_PROXY",INVALID_JOIN:"INVALID_JOIN",INVALID_ROOMID_STRING:"INVALID_ROOMID_STRING",INVALID_ROOMID_INTEGER:"INVALID_ROOMID_INTEGER",INVALID_SIGNAL_CHANNEL:"INVALID_SIGNAL_CHANNEL",JOIN_ROOM_TIMEOUT:"JOIN_ROOM_TIMEOUT",JOIN_ROOM_FAILED:"JOIN_ROOM_FAILED",REJOIN_ROOM_FAILED:"REJOIN_ROOM_FAILED",INVALID_DESTROY:"INVALID_DESTROY",INVALID_PUBLISH:"INVALID_PUBLISH",INVALID_UNPUBLISH:"INVALID_UNPUBLISH",INVALID_AUDIENCE:"INVALID_AUDIENCE",INVALID_INITIALIZE:"INVALID_INITIALIZE",INVALID_DUPLICATE_PUBLISHING:"INVALID_DUPLICATE_PUBLISHING",INVALID_SUBSCRIBE_UNDEFINED:"INVALID_SUBSCRIBE_UNDEFINED",INVALID_SUBSCRIBE_LOCAL:"INVALID_SUBSCRIBE_LOCAL",INVALID_REMOTE_STREAM:"INVALID_REMOTE_STREAM",SUBSCRIBE_FAILED:"SUBSCRIBE_FAILED",INVALID_ROLE:"INVALID_ROLE",INVALID_PARAMETER_SWITCH_ROLE:"INVALID_PARAMETER_SWITCH_ROLE",INVALID_OPERATION_SWITCH_ROLE:"INVALID_OPERATION_SWITCH_ROLE",SWITCH_ROLE_TIMEOUT:"SWITCH_ROLE_TIMEOUT",SWITCH_ROLE_FAILED:"SWITCH_ROLE_FAILED",CLIENT_BANNED:"CLIENT_BANNED",INVALID_OPERATION_START_PUBLISH_CDN:"INVALID_OPERATION_START_PUBLISH_CDN",INVALID_OPERATION_STOP_PUBLISH_CDN:"INVALID_OPERATION_STOP_PUBLISH_CDN",INVALID_STREAM_ID:"INVALID_STREAM_ID",START_PUBLISH_CDN_FAILED:"START_PUBLISH_CDN_FAILED",STOP_PUBLISH_CDN_FAILED:"STOP_PUBLISH_CDN_FAILED",START_MIX_TRANSCODE:"START_MIX_TRANSCODE",STOP_MIX_TRANSCODE:"STOP_MIX_TRANSCODE",INVALID_AUDIO_VOLUME:"INVALID_AUDIO_VOLUME",ENABLE_SMALL_STREAM_PUBLISHED:"ENABLE_SMALL_STREAM_PUBLISHED",DISABLE_SMALL_STREAM_PUBLISHED:"DISABLE_SMALL_STREAM_PUBLISHED",NOT_SUPPORTED_SMALL_STREAM:"NOT_SUPPORTED_SMALL_STREAM",INVALID_SMALL_STREAM_PROFILE:"INVALID_SMALL_STREAM_PROFILE",INVALID_PARAMETER_REMOTE_STREAM:"INVALID_PARAMETER_REMOTE_STREAM",INVALID_OPERATION_CHANGE_SMALL:"INVALID_OPERATION_CHANGE_SMALL",REMOTE_NOT_PUBLISH_SMALL_STREAM:"REMOTE_NOT_PUBLISH_SMALL_STREAM",INVALID_SWITCH_DEVICE:"INVALID_SWITCH_DEVICE",INVALID_SWITCH_DEVICE_PUBLISHING:"INVALID_SWITCH_DEVICE_PUBLISHING",INVALID_REPLACE_TRACK:"INVALID_REPLACE_TRACK",INVALID_INITIALIZE_LOCAL_STREAM:"INVALID_INITIALIZE_LOCAL_STREAM",INVALID_ADD_TRACK_REPETITIVE:"INVALID_ADD_TRACK_REPETITIVE",INVALID_ADD_TRACK_REMOVING:"INVALID_ADD_TRACK_REMOVING",INVALID_ADD_TRACK_PUBLISHING:"INVALID_ADD_TRACK_PUBLISHING",INVALID_STREAM_INITIALIZED:"INVALID_STREAM_INITIALIZED",INVALID_ADD_TRACK_NUMBER:"INVALID_ADD_TRACK_NUMBER",INVALID_REMOVE_AUDIO_TRACK:"INVALID_REMOVE_AUDIO_TRACK",INVALID_REMOVE_AUDIO_ADDING:"INVALID_REMOVE_AUDIO_ADDING",INVALID_REMOVE_AUDIO_ON:"INVALID_REMOVE_AUDIO_ON",INVALID_REMOVE_TRACK_PUBLISHING:"INVALID_REMOVE_TRACK_PUBLISHING",INVALID_REMOVE_TRACK_NOT_TRACK:"INVALID_REMOVE_TRACK_NOT_TRACK",INVALID_REMOVE_TRACK_NUMBER:"INVALID_REMOVE_TRACK_NUMBER",INVALID_REPLACE_TRACK_NO_TRACK:"INVALID_REPLACE_TRACK_NO_TRACK",REPEAT_JOIN:"REPEAT_JOIN",CLIENT_DESTROYED:"CLIENT_DESTROYED",NOT_BUG_PACKAGE:"NOT_BUG_PACKAGE",START_MIX_TRANSCODE_FAILED:"START_MIX_TRANSCODE_FAILED",STOP_MIX_TRANSCODE_FAILED:"STOP_MIX_TRANSCODE_FAILED",MIX_TRANSCODE_NOT_STARTED:"MIX_TRANSCODE_NOT_STARTED",CANNOT_LESS_THAN_ZERO:"CANNOT_LESS_THAN_ZERO",MIX_PARAMS_VIDEO_FRAMERATE:"MIX_PARAMS_VIDEO_FRAMERATE",MIX_PARAMS_VIDEO_GOP:"MIX_PARAMS_VIDEO_GOP",MIX_PARAMS_AUDIO_BITRATE:"MIX_PARAMS_AUDIO_BITRATE",MIX_PARAMS_USER_Z_ORDER:"MIX_PARAMS_USER_Z_ORDER",MIX_PARAMS_NOT_SELF:"MIX_PARAMS_NOT_SELF",MIX_PARAMS_USER_STREAM:"MIX_PARAMS_USER_STREAM",INVALID_PLAY:"INVALID_PLAY",INVALID_ELEMENT_ID:"INVALID_ELEMENT_ID",INVALID_ELEMENT_ID_TYPE:"INVALID_ELEMENT_ID_TYPE",PLAY_FAILED:"PLAY_FAILED",INVALID_USERID:"INVALID_USERID",INVALID_CREATE_STREAM_SOURCE:"INVALID_CREATE_STREAM_SOURCE",INVALID_CREATE_STREAM_SCREEN:"INVALID_CREATE_STREAM_SCREEN",INVALID_CREATE_STREAM_AUDIO:"INVALID_CREATE_STREAM_AUDIO",INVALID_CREATE_STREAM_SCREEN_AUDIO:"INVALID_CREATE_STREAM_SCREEN_AUDIO",NOT_SUPPORTED_HTTP:"NOT_SUPPORTED_HTTP",NOT_SUPPORTED_WEBRTC:"NOT_SUPPORTED_WEBRTC",NOT_SUPPORTED_PROFILE:"NOT_SUPPORTED_PROFILE",NOT_SUPPORTED_MEDIA:"NOT_SUPPORTED_MEDIA",NOT_SUPPORTED_H264ENCODE:"NOT_SUPPORTED_H264ENCODE",NOT_SUPPORTED_H264DECODE:"NOT_SUPPORTED_H264DECODE",NOT_SUPPORTED_TRACK:"NOT_SUPPORTED_TRACK",NOT_SUPPORTED_SWITCH_DEVICE:"NOT_SUPPORTED_SWITCH_DEVICE",NOT_SUPPORTED_CAPTURE:"NOT_SUPPORTED_CAPTURE",NOT_SUPPORTED_AUX:"NOT_SUPPORTED_AUX",MICROPHONE_NOT_FOUND:"MICROPHONE_NOT_FOUND",CAMERA_NOT_FOUND:"CAMERA_NOT_FOUND",SIGNAL_RESPONSE_FAILED:"SIGNAL_RESPONSE_FAILED",CATCH_HANDLER_ERROR:"CATCH_HANDLER_ERROR",API_NOT_EXIST:"API_NOT_EXIST",CONNECTION_CLOSED:"CONNECTION_CLOSED",SUBSCRIBE_ALL_FALSE:"SUBSCRIBE_ALL_FALSE",SEI_NOT_SUPPORT:"SEI_NOT_SUPPORT",SEI_DISABLED:"SEI_DISABLED",SEI_BEFORE_PUBLISH:"SEI_BEFORE_PUBLISH",SEI_NOT_VIDEO:"SEI_NOT_VIDEO",CALL_FREQUENCY_LIMIT:"CALL_FREQUENCY_LIMIT",CONNECTION_ABORTED:"CONNECTION_ABORTED",API_CALL_ABORTED:"API_CALL_ABORTED",DUPLICATE_AUX:"DUPLICATE_AUX"},Ue={AVOID_REPEATED_CALL(o){return`previous ${o.name}() is ongoing, please avoid repeated calls.`},INVALID_PARAMETER_REQUIRED({key:o,rule:i,fnName:e,value:t}){return`'${o||i.name}' is a required param when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_TYPE({key:o,rule:i,fnName:e,value:t}){let r=`${o||i.name}`,s="";return Array.isArray(i.type)?s=i.type.join("|"):s=i.type,`'${r}' must be type of ${s} when calling ${e}(), received type: ${Re(t)}.`},INVALID_PARAMETER_EMPTY({key:o,rule:i,fnName:e,value:t}){return`'${o||i.name}' cannot be '${t}' when calling ${e}().`},INVALID_PARAMETER_INSTANCE({key:o,rule:i,fnName:e,value:t}){let r=`${o||i.name}`,s=`${i.instanceOf.name||i.instanceOf}`;return`'${r}' must be instanceof ${s} when calling ${e}(), received type: ${Re(t)}.`},INVALID_PARAMETER_RANGE({key:o,rule:i,fnName:e,value:t}){return`'${o||i.name}' must be one of ${i.values.join("|")} when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_MIN({key:o,rule:i,fnName:e,value:t}){return`the min value of ${o||i.name} is ${i.min}, received: ${t}.`},INVALID_PARAMETER_MAX({key:o,rule:i,fnName:e,value:t}){return`the max value of ${o||i.name} is ${i.max}, received: ${t}.`},API_CALL_TIMEOUT(o){return`${o.commandDesc||o.command} timeout observed.`},SIGNAL_CHANNEL_RECONNECTION_FAILED:"signal channel reconnection failed, please check your network.",SIGNAL_CHANNEL_SETUP_FAILED(o){return`SignalChannel setup failure: (errorCode: ${o.errorCode}, errorMsg: ${o.errorMsg} }).`},ERROR_MESSAGE(o){let i=`${o.type} failed`;return o.message&&(i=`${i}: ${o.message}.`),i},EXCHANGE_SDP_TIMEOUT:"exchange sdp timeout.",DOWNLINK_RECONNECTION_FAILED:"downlink reconnection failed, please check your network and re-join room.",EXCHANGE_SDP_FAILED(o){return`exchange sdp failed ${o.errMsg}.`},UPDATE_OFFER_TIMEOUT:"update offer timeout observed.",UPLINK_RECONNECTION_FAILED:"uplink reconnection failed, please check your network and publish again.",INVALID_RECORDID:"recordId must be an integer number.",INVALID_PURE_AUDIO:"pureAudioPushMode must be 1 or 2.",INVALID_STREAMID:"streamId must be a sting literal within 64 bytes, and not be empty.",INVALID_USER_DEFINE_RECORDID:"userDefineRecordId must be a sting literal contains (a-zA-Z),(0-9), underline and hyphen, within 64 bytes, and not be empty.",INVALID_USER_DEFINE_PUSH_ARGS:"userDefinePushArgs must be a sting literal within 256 bytes, and not be empty.",INVALID_PROXY:'proxy server url must start with "wss://".',INVALID_JOIN:"duplicate join() called.",INVALID_ROOMID_STRING(o){return`'${o}' must be validate string when useStringRoomId is true.`},INVALID_ROOMID_INTEGER(o){return`'${o}' must be an integer between [1, 4294967294] when useStringRoomId is false.`},INVALID_SIGNAL_CHANNEL:"SignalChannel is not ready yet.",JOIN_ROOM_TIMEOUT:"join room timeout.",JOIN_ROOM_FAILED({error:o,code:i}){return`Failed to join room - ${o} code: ${i}`},REJOIN_ROOM_FAILED(o){return`reJoin room: ${o.roomId} failed, please check your network.`},INVALID_DESTROY:"please call leave() before destroy().",INVALID_PUBLISH:"please call join() before publish().",INVALID_UNPUBLISH:"stream has not been published yet.",INVALID_AUDIENCE:'no permission to publish() under live/audience, please call switchRole("anchor") firstly before publish().',INVALID_INITIALIZE:"cannot publish stream because stream is not initialized, is switching device, or has been closed.",INVALID_DUPLICATE_PUBLISHING(o){return`duplicate ${o} stream publishing, please unpublish your prev ${o} stream and then re-publish.`},INVALID_SUBSCRIBE_UNDEFINED:"stream is undefined or null.",INVALID_SUBSCRIBE_LOCAL:"stream cannot be LocalStream.",INVALID_REMOTE_STREAM:"remoteStream does not exist because it has been unpublished by remote peer.",SUBSCRIBE_FAILED({message:o,userId:i,streamType:e}){return`failed to subscribe ${i} ${e} stream, reason: ${o}.`},INVALID_ROLE:"switchRole can only be called in live mode.",INVALID_PARAMETER_SWITCH_ROLE:"role could only be set to a value as anchor or audience.",INVALID_OPERATION_SWITCH_ROLE:"please call join() before switchRole().",SWITCH_ROLE_TIMEOUT:"switchRole timeout.",SWITCH_ROLE_FAILED(o){return`switchRole failed, errCode: ${o.code} errMsg: ${o.message}.`},CLIENT_BANNED(o){return`client was banned because of ${o.message}.`},INVALID_OPERATION_START_PUBLISH_CDN:"please call startPublishCDNStream() after join room and publish the local stream.",INVALID_OPERATION_STOP_PUBLISH_CDN:"please call startPublishCDNStream() before stopPublishCDNStream().",START_PUBLISH_CDN_FAILED(o){return`startPublishCDNStream failed, errMsg: ${o.message}.`},STOP_PUBLISH_CDN_FAILED(o){return`stopPublishCDNStream failed, errMsg: ${o.message}.`},INVALID_STREAM_ID(o){return`'${o}' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.`},START_MIX_TRANSCODE:"please call startMixTranscode() after join().",STOP_MIX_TRANSCODE:"please call stopMixTranscode() after startMixTranscode().",INVALID_AUDIO_VOLUME:"interval must be a number.",ENABLE_SMALL_STREAM_PUBLISHED:"Cannot enable small stream after localStream published.",DISABLE_SMALL_STREAM_PUBLISHED:"Cannot disable small stream after localStream published.",NOT_SUPPORTED_SMALL_STREAM:"your browser does not support opening small stream.",INVALID_SMALL_STREAM_PROFILE:"small stream profile is invalid.",INVALID_PARAMETER_REMOTE_STREAM:"remoteStream is invalid.",INVALID_OPERATION_CHANGE_SMALL:"cannot switch to the small stream without subscribing to the video of remoteStream.",REMOTE_NOT_PUBLISH_SMALL_STREAM:"remote peer does not publish small stream.",INVALID_SWITCH_DEVICE:"cannot switch device on current stream.",INVALID_SWITCH_DEVICE_PUBLISHING:"cannot switch device when publishing localStream.",INVALID_REPLACE_TRACK:"cannot replace track when publishing localStream.",INVALID_INITIALIZE_LOCAL_STREAM:"local stream has not initialized yet.",INVALID_ADD_TRACK_REPETITIVE:"previous addTrack is ongoing, please avoid repetitive execution.",INVALID_ADD_TRACK_REMOVING:"cannot add track when a track is removing.",INVALID_ADD_TRACK_PUBLISHING:"cannot add track when publishing localStream.",INVALID_STREAM_INITIALIZED:"your local stream haven't been initialized yet.",INVALID_ADD_TRACK_NUMBER:"a Stream has at most one audio track and one video track.",INVALID_REMOVE_AUDIO_TRACK:"remove audio track is not supported on your browser.",INVALID_REMOVE_AUDIO_ADDING:"cannot remove track when a track is adding.",INVALID_REMOVE_AUDIO_ON:"previous removeTrack is ongoing, please avoid repetitive execution.",INVALID_REMOVE_TRACK_PUBLISHING:"cannot remove track when publishing localStream.",INVALID_REMOVE_TRACK_NOT_TRACK:"localStream has not this track.",INVALID_REMOVE_TRACK_NUMBER:"remove the only video track is not supported, please use replaceTrack or muteVideo.",INVALID_REPLACE_TRACK_NO_TRACK(o){return`cannot replace ${o.kind} track because stream has not ${o.kind} track`},NOT_BUG_PACKAGE:"You need to buy packages, refer to tencent console.",START_MIX_TRANSCODE_FAILED(o){return`startMixTranscode failed, errMsg: ${o.message}.`},STOP_MIX_TRANSCODE_FAILED(o){return`stopMixTranscode failed, errMsg: ${o.message}.`},MIX_TRANSCODE_NOT_STARTED:"mixTranscode has not been started.",CANNOT_LESS_THAN_ZERO({key:o,rule:i,fnName:e,value:t}){return`'${o||i.name}' cannot be less than 0 when calling ${e}().`},MIX_PARAMS_VIDEO_FRAMERATE:"'config.videoFramerate' should be an integer between 0 and 30, excluding 0.",MIX_PARAMS_VIDEO_GOP:"'config.videoGOP' should be an integer between 1 and 8.",MIX_PARAMS_AUDIO_BITRATE:"'config.audioBitrate' should be an integer between 32 and 192.",MIX_PARAMS_USER_Z_ORDER(o){return`'${o}' is required and must be between 1 and 15.`},MIX_PARAMS_NOT_SELF:"'config.mixUsers' must contain self.",MIX_PARAMS_USER_STREAM:"'config.videoWidth' and 'config.videoHeight' of output stream should be contain all mix stream.",INVALID_PLAY:"duplicate play() call observed, please stop() firstly.",INVALID_ELEMENT_ID:({key:o,fnName:i})=>`'${o}' is not found in the document object when calling ${i}().`,INVALID_ELEMENT_ID_TYPE:({key:o,fnName:i,type:e})=>`the element corresponding to '${o}' must be instanceof HTMLElement when calling ${i}(), received: ${e}.`,PLAY_FAILED:o=>`${o.media} play failed, browser exception: ${o.error.toString()}`,INVALID_USERID:"userId cannot be all spaces.",INVALID_CREATE_STREAM_SOURCE:"LocalStream must be created by createStream() with either audio/video or audioSource/videoSource, but can not be mixed with audio/video and audioSource/videoSource.",INVALID_CREATE_STREAM_SCREEN:"screen/video cannot be both true.",INVALID_CREATE_STREAM_AUDIO:"audio/screenAudio cannot be both true.",INVALID_CREATE_STREAM_SCREEN_AUDIO:"when screen is true, screenAudio can be configured.",NOT_SUPPORTED_HTTP:"http protocol does not support the ability to capture microphone, camera and screen. please use https to deploy your page.",NOT_SUPPORTED_WEBRTC:"your browser or environment does not support full WebRTC capabilities.",NOT_SUPPORTED_PROFILE:"your browser does not support setVideoProfile.",NOT_SUPPORTED_MEDIA:"your browser or environment does not support navigator.mediaDevices.",NOT_SUPPORTED_H264ENCODE:"your device does not support H.264 encoding.",NOT_SUPPORTED_H264DECODE:"your device does not support H.264 decoding.",NOT_SUPPORTED_TRACK(o){return`${o}Track is not supported on your browser.`},NOT_SUPPORTED_SWITCH_DEVICE:"switchDevice is not supported on your browser.",NOT_SUPPORTED_CAPTURE:"Your browser or environment does not support screen sharing, please check whether the browser version.",MICROPHONE_NOT_FOUND:"no microphone detected, please check your microphone.",CAMERA_NOT_FOUND:"no camera detected, please check your camera.",SIGNAL_RESPONSE_FAILED(o){return`${o.signalResponse} failed, response code is ${o.code} , errMsg: ${o.message}.`},CATCH_HANDLER_ERROR({name:o,event:i}){return`an error was caught in ${o}.on('${i}', handler), please check your code in 'handler'.`},API_NOT_EXIST({name:o}){return`experimental api ${o} does not exist.`},REPEAT_JOIN:o=>"please avoid repeated join.",CONNECTION_CLOSED:"remoteStream has been unsubscribed or unpublished by remote user.",SUBSCRIBE_ALL_FALSE:"cannot subscribe when both audio & video are false, use client.unsubscribe() instead",CLIENT_DESTROYED({funName:o}){return`failed to call ${o}() because client was destroyed.`},SEI_NOT_SUPPORT:o=>`not support to sendSEIMessage${o===!1?" without using h264 codec":""}`,SEI_DISABLED:"SEI is disabled",SEI_BEFORE_PUBLISH:"please call sendSEIMessage() after publish() success",SEI_NOT_VIDEO:"cannot send sei when localStream has not video.",CALL_FREQUENCY_LIMIT:({isSize:o,name:i,timesInSecond:e,maxSizeInSecond:t})=>`api ${i} call ${o?"size":"times"} is over ${o?`${t} bytes`:e} in a second.`,CONNECTION_ABORTED(o){return`connection aborted due to: ${o}`},API_CALL_ABORTED(o){let i;return o.message.includes("REMOTE_STREAM_NOT_EXIST")?i=`Subscribe ${o.userId} ${o.streamType} stream aborted, reason: remote user ${o.userId} unpublished stream.`:i=`API aborted, reason: ${o.message}`,i},DUPLICATE_AUX:"only one auxiliary stream can be published in a room.",NOT_SUPPORTED_AUX:"publish auxiliary stream is not supported on your browser.",INVALID_PARAMETER_STREAMTYPE:o=>`'streamType' is required when 'userId' is not '*', calling ${o}()`};var Ph=(o,i)=>i?`${Xt}/${o}/${i}`:`${Xt}/${o}/index.html`;var S_=()=>{if(window.TRTC_ERROR_INFO&&window.TRTC_ERROR_LINK)return{TRTC_ERROR_INFO:window.TRTC_ERROR_INFO,TRTC_ERROR_LINK:window.TRTC_ERROR_LINK};let o=localStorage==null?void 0:localStorage.getItem(Gc);if(o){o=JSON.parse(o);let i=document.createElement("script");i.type="text/javascript",i.text=o.message,document.body.appendChild(i);let e=window.TRTC_ERROR_INFO,t=window.TRTC_ERROR_LINK;return document.body.removeChild(i),{TRTC_ERROR_INFO:e,TRTC_ERROR_LINK:t}}return{}};function P(o){let{key:i,data:e,link:t,addDocLink:r=!0}=o,s="",n="",a="";ne(Ue[i])?s=Ue[i](e):ee(Ue[i])&&(s=Ue[i]);let{TRTC_ERROR_INFO:c,TRTC_ERROR_LINK:l}=S_();t?a=`${t.className}.html#${t.fnName}`:l&&l[i]&&(ne(l[i])?a=l[i](e):ee(l[i])&&(a=l[i]));let h=s;return kt()&&(c&&c[i]&&(ne(c[i])?n=c[i](e):ee(c[i])&&(n=c[i])),n&&(r?h=`${n}
|
|
7
|
-
\u8BF7\u67E5\u770B\u6587\u6863: ${Ph("zh-cn",a)}
|
|
3
|
+
`}});var Uh=bn(Br=>{"use strict";var Go=Ph(),A_=Lh(),y_=ed();Br.grammar=y_;Br.write=A_;Br.parse=Go.parse;Br.parseParams=Go.parseParams;Br.parseFmtpConfig=Go.parseFmtpConfig;Br.parsePayloads=Go.parsePayloads;Br.parseRemoteCandidates=Go.parseRemoteCandidates;Br.parseImageAttributes=Go.parseImageAttributes;Br.parseSimulcastStreamList=Go.parseSimulcastStreamList});var Hp=(te=>(te[te.INVALID_PARAMETER=4096]="INVALID_PARAMETER",te[te.INVALID_OPERATION=4097]="INVALID_OPERATION",te[te.NOT_SUPPORTED=4098]="NOT_SUPPORTED",te[te.DEVICE_NOT_FOUND=4099]="DEVICE_NOT_FOUND",te[te.INITIALIZE_FAILED=4100]="INITIALIZE_FAILED",te[te.SIGNAL_CHANNEL_SETUP_FAILED=16385]="SIGNAL_CHANNEL_SETUP_FAILED",te[te.SIGNAL_CHANNEL_ERROR=16386]="SIGNAL_CHANNEL_ERROR",te[te.ICE_TRANSPORT_ERROR=16387]="ICE_TRANSPORT_ERROR",te[te.JOIN_ROOM_FAILED=16388]="JOIN_ROOM_FAILED",te[te.CREATE_OFFER_FAILED=16389]="CREATE_OFFER_FAILED",te[te.SIGNAL_CHANNEL_RECONNECTION_FAILED=16390]="SIGNAL_CHANNEL_RECONNECTION_FAILED",te[te.UPLINK_RECONNECTION_FAILED=16391]="UPLINK_RECONNECTION_FAILED",te[te.DOWNLINK_RECONNECTION_FAILED=16392]="DOWNLINK_RECONNECTION_FAILED",te[te.REMOTE_STREAM_NOT_EXIST=16400]="REMOTE_STREAM_NOT_EXIST",te[te.CLIENT_BANNED=16448]="CLIENT_BANNED",te[te.SERVER_TIMEOUT=16449]="SERVER_TIMEOUT",te[te.SUBSCRIPTION_TIMEOUT=16450]="SUBSCRIPTION_TIMEOUT",te[te.PLAY_NOT_ALLOWED=16451]="PLAY_NOT_ALLOWED",te[te.DEVICE_AUTO_RECOVER_FAILED=16452]="DEVICE_AUTO_RECOVER_FAILED",te[te.START_PUBLISH_CDN_FAILED=16453]="START_PUBLISH_CDN_FAILED",te[te.STOP_PUBLISH_CDN_FAILED=16454]="STOP_PUBLISH_CDN_FAILED",te[te.START_MIX_TRANSCODE_FAILED=16455]="START_MIX_TRANSCODE_FAILED",te[te.STOP_MIX_TRANSCODE_FAILED=16456]="STOP_MIX_TRANSCODE_FAILED",te[te.NOT_SUPPORTED_H264=16457]="NOT_SUPPORTED_H264",te[te.SWITCH_ROLE_FAILED=16458]="SWITCH_ROLE_FAILED",te[te.API_CALL_TIMEOUT=16459]="API_CALL_TIMEOUT",te[te.SCHEDULE_FAILED=16460]="SCHEDULE_FAILED",te[te.API_CALL_ABORTED=16461]="API_CALL_ABORTED",te[te.SPC_INITIALIZED_FAILED=16462]="SPC_INITIALIZED_FAILED",te[te.VIDEO_MANAGER_ERROR=16463]="VIDEO_MANAGER_ERROR",te[te.SWITCH_ROOM_FAILED=16464]="SWITCH_ROOM_FAILED",te[te.UNKNOWN=65535]="UNKNOWN",te))(Hp||{}),J=Hp;var rE=function(i){for(let t in J)if(J[t]===i)return t;return"UNKNOWN"},Gu=class extends Error{constructor({name:e="RtcError",message:r,code:o=J.UNKNOWN,extraCode:s=0,constraint:n}){let c=`<${rE(o)} 0x${o.toString(16)}>`,l=`${r}${n?` constraint: ${n}`:""}${r!=null&&r.includes(c)?"":` ${c}`}`;super(l);u(this,"code");u(this,"extraCode");u(this,"message");u(this,"originMessage");u(this,"name");u(this,"constraint");this.code=o,this.extraCode=s,this.name=e,this.message=l,this.constraint=n,this.originMessage=r}getCode(){return this.code}getExtraCode(){return this.extraCode}toString(){return this.originMessage}},ue=Gu;var ZS=new Date().getTime(),iE=0;var Rn=function(){return new Date().getTime()+iE},lc=function(){let i=new Date;return i.setTime(Rn()),i.toLocaleString()},Ss=function(i){let t=String(i.getMilliseconds());return"padStart"in String.prototype&&(t=t.toString().padStart(3,"0")),`${i.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/,"$1")}:${t}`};var Lr={};Zr(Lr,{bytes2ms:()=>Zp,calculateScaleResolutionDownNumber:()=>vc,convertObjectNumberToInt:()=>Un,copyProperties:()=>Yp,deepClone:()=>xo,deepMerge:()=>ur,delay:()=>Vn,fibonacci:()=>Po,formatedTime:()=>Sc,getConstructorName:()=>vs,getContainerFromElement:()=>nh,getEnv:()=>zp,getInternalVersion:()=>oh,getLoggerUrl:()=>ii,getMediaStreamTrackInfo:()=>Rc,getMuteStateFromFlag:()=>Ln,getNetworkType:()=>xn,getNumNetworkType:()=>Ic,getReconnectionTimeout:()=>eh,getStringByteLength:()=>ah,getTurnServer:()=>sh,getUint32Version:()=>yc,getValueType:()=>ct,getViewListFromView:()=>Ds,glog:()=>Pn,ipv4ToUint32:()=>Ns,isArray:()=>ot,isAudioWorkletSupported:()=>ih,isBoolean:()=>st,isConstructor:()=>ko,isEmpty:()=>Cs,isFunction:()=>We,isLangChinese:()=>Sr,isMediaStreamTrack:()=>th,isNumber:()=>Pe,isObject:()=>er,isOverseaSdkAppId:()=>ri,isPlainObject:()=>Lt,isPortrait:()=>il,isPromise:()=>ji,isRemoteTrack:()=>rh,isRotate90Or270:()=>oi,isString:()=>we,isUndefined:()=>P,loadImage:()=>Ms,ms2bytes:()=>Kp,ms2samples:()=>rl,normalizeUrl:()=>Lo,performanceNow:()=>Ie,promiseAny:()=>kn,samples2ms:()=>tl,setNetworkType:()=>Qp,stringify:()=>dr,stringifyIncludeValue:()=>Ac,throttlePromise:()=>bc});var el={};Zr(el,{AUDIO_MUTE_BIT:()=>gc,AUDIO_STAT_BIT:()=>bs,AUX_STAT_BIT:()=>Dn,AUX_STREAM_MSID:()=>fE,BACKEND_ENV:()=>fc,BASE_DOC_URL:()=>Pr,BASE_HOST:()=>Wp,CAPABILITIES_KEYS:()=>Tc,CLASS_NAME:()=>FE,CLOUD_CONSOLE_URL:()=>aE,CROSS_ROOM_BIT:()=>pE,DATA_FREEZE_TIMING:()=>_c,DOC_URL:()=>cE,DTLS_STATE_UNKNOWN:()=>RE,ENV_NAME:()=>Kr,EXCHANGE_SDP_TIMEOUT:()=>wE,IS_WORKER:()=>As,IS_WORKLET:()=>vn,KIBANA_EVENT:()=>ei,LOCAL_STREAM_PUBLISH_STATE:()=>jp,LOGGER_CMD_TYPE:()=>Gi,LOGGER_DOMAIN:()=>Ju,LOGGER_DOMAIN_OVERSEA:()=>zu,LOG_LEVEL:()=>Tr,LOG_LEVEL_NAME:()=>BE,MAIN_STREAM_MSID:()=>hE,MAX_RTT:()=>wn,MICROPHONE_COMMUNICATIONS:()=>$E,MICROPHONE_DEFAULT:()=>Oo,MUTE_ALL_BIT:()=>mE,NAME:()=>N,NETWORK_TYPE:()=>Mo,NOT_SUPPORTED_H264:()=>xE,PAUSED_RETRY_COUNT:()=>wo,PEERCONNECTION_CONNECTING_TIMEOUT:()=>UE,PEER_CONNECTION_STATE:()=>vE,PEER_LEAVE_REASON:()=>qp,RECOVER_CAPTURE_INTERVAL:()=>Rs,REMOTE_STREAM_TYPE_AUX:()=>EE,REMOTE_STREAM_TYPE_MAIN:()=>gE,RENDER_FREEZE_TIMING:()=>PE,SCHEDULE_DOMAIN:()=>ti,SCHEDULE_TIMEOUT:()=>VE,SDP_SEMANTICS_PLAN_B:()=>OE,SDP_SEMANTICS_UNIFIED_PLAN:()=>Ku,SECOND_HOST:()=>sE,SIGNAL_PING_PONG_INTERVAL:()=>uE,SIGNAL_PING_TIMEOUT:()=>dE,SIGNAL_RECONNECTION_COUNT:()=>NE,SMALL_STAT_BIT:()=>Yu,SPEAKER_DEFAULT:()=>Mn,STORAGE_EXPIRES_TIME:()=>mc,STREAM_TYPE_BIG:()=>kE,STREAM_TYPE_SMALL:()=>LE,SUBSCRIBE_SMALL_RETRY_COUNT:()=>HE,SYNC_USER_LIST_INTERVAL:()=>DE,Scene:()=>kr,THIRD_HOST:()=>nE,TRANSPORT_DIRECTION:()=>lE,TRTC_ERROR_ASSISTANCE:()=>Xu,TRTC_QUALITY_BAD:()=>AE,TRTC_QUALITY_DISCONNECTED:()=>bE,TRTC_QUALITY_EXCELLENT:()=>TE,TRTC_QUALITY_GOOD:()=>IE,TRTC_QUALITY_POOR:()=>SE,TRTC_QUALITY_UNKNOWN:()=>_E,TRTC_QUALITY_VERY_BAD:()=>yE,UPDATE_OFFER_TIMEOUT:()=>ME,VIDEO_MUTE_BIT:()=>Ec,VIDEO_STAT_BIT:()=>ys,audioProfileMap:()=>pc,defaultBigVideoProfile:()=>Nn,defaultSmallVideoProfile:()=>Qu,getRetryCount:()=>CE,getScriptDir:()=>oE,innerVersion:()=>ju,loggerProxy:()=>Cn,screenProfileMap:()=>hc,setLoggerProxy:()=>Do,setRetryCount:()=>Zu,setVersion:()=>qu,version:()=>at,videoProfileMap:()=>Ir});var ju="4.15.00.1600",at="5.0.0";function qu(i){at=i;let[t,e,r]=i.split(".").map(o=>parseInt(o,10));ju=`${t}.${Math.min(15,e)}.${Math.min(15,r)}.${e.toString().padStart(2,"0")}${r.toString().padStart(2,"0")}`}var As=typeof importScripts!="undefined",vn=typeof registerProcessor!="undefined",oE=()=>{let i=As?self.location.href:document.currentScript.src;return i.substring(0,i.lastIndexOf("/")+1)},Cn="",Do=i=>Cn=i,Wp="web.sdk.qcloud.com",sE="web.sdk.tencent.cn",nE="web.sdk.cloud.tencent.cn",aE="https://console.cloud.tencent.com/trtc",Pr=`https://${Wp}/trtc/webrtc/v5/doc`,cE=`${Pr}/zh-cn/`,Ju="https://yun.tim.qq.com",zu="https://apisgp.my-imcloud.com",Xu="trtc_error_assistance",Gi={LOG:"jssdk_log",EVENT:"jssdk_event",KEY_POINT:"jssdk_new_endreport",KV_STAT:"jssdk_key_metrics_report"},Kr={QCLOUD:"qcloud",OLD_CLOUD_LADDER:"trtc",WEBRTC:"webrtc"},Tr=(n=>(n[n.TRACE=0]="TRACE",n[n.DEBUG=1]="DEBUG",n[n.INFO=2]="INFO",n[n.WARN=3]="WARN",n[n.ERROR=4]="ERROR",n[n.NONE=5]="NONE",n))(Tr||{}),dE=18e3,uE=2e3,Mo={unknown:0,wifi:1,"3g":2,"2g":3,"4g":4,wired:5,"5g":6},mc=7*24*3600*1e3,pc={standard:{sampleRate:48e3,channelCount:1,bitrate:40},"standard-stereo":{sampleRate:48e3,channelCount:2,bitrate:64},high:{sampleRate:48e3,channelCount:1,bitrate:128},"high-stereo":{sampleRate:48e3,channelCount:2,bitrate:192}},Ir={"120p":{width:160,height:120,frameRate:15,bitrate:200},"120p_2":{width:160,height:120,frameRate:15,bitrate:100},"180p":{width:320,height:180,frameRate:15,bitrate:350},"180p_2":{width:320,height:180,frameRate:15,bitrate:150},"240p":{width:320,height:240,frameRate:15,bitrate:400},"240p_2":{width:320,height:240,frameRate:15,bitrate:200},"360p":{width:640,height:360,frameRate:15,bitrate:800},"360p_2":{width:640,height:360,frameRate:15,bitrate:400},"480p":{width:640,height:480,frameRate:15,bitrate:900},"480p_2":{width:640,height:480,frameRate:15,bitrate:500},"720p":{width:1280,height:720,frameRate:15,bitrate:1500},"1080p":{width:1920,height:1080,frameRate:15,bitrate:2e3},"1440p":{width:2560,height:1440,frameRate:30,bitrate:4860},"4K":{width:3840,height:2160,frameRate:30,bitrate:9e3}},Nn=Ir["480p_2"],Qu=Ir["120p_2"],hc={"480p":{width:640,height:480,frameRate:5,bitrate:900},"480p_2":{width:640,height:480,frameRate:30,bitrate:1e3},"720p":{width:1280,height:720,frameRate:5,bitrate:1200},"720p_2":{width:1280,height:720,frameRate:30,bitrate:3e3},"1080p":{width:1920,height:1080,frameRate:5,bitrate:1600},"1080p_2":{width:1920,height:1080,frameRate:30,bitrate:4e3}},N={CANVAS:"canvas",AUDIO:"audio",VIDEO:"video",SCREEN:"screen",SMALL:"small",BIG:"big",AUXILIARY:"auxiliary",SMALL_VIDEO:"smallVideo",FACING_MODE_USER:"user",FACING_MODE_ENVIRONMENT:"environment",MUTE:"mute",UNMUTE:"unmute",ENDED:"ended",PLAYING:"playing",PAUSE:"pause",ERROR:"error",LOADEDDATA:"loadeddata",LOADEDMETADATA:"loadedmetadata",AUDIO_INPUT:"audioinput",VIDEO_INPUT:"videoinput",DETAIL:"detail",TEXT:"text",MAIN:"main",BACKUP:"backup",BANNED:"banned",KICK:"kick",USER_TIME_OUT:"user_time_out",ROOM_DISBAND:"room_disband",SEI_MESSAGE:"sei-message",ADD:"add",REMOVE:"remove",REPLACE:"replace",TRACK:"track",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",TRANSCEIVER_DIRECTION_SENDONLY:"sendonly",TRANSCEIVER_DIRECTION_RECVONLY:"recvonly",ENTER_PICTURE_IN_PICTURE:"enterpictureinpicture",LEAVE_PICTURE_IN_PICTURE:"leavepictureinpicture"},lE={INACTIVE:"inactive",SENDONLY:"sendonly",RECVONLY:"recvonly"},fc={OLD_CLOUD_LADDER:"wss://trtc.rtc.qq.com",WEBRTC:"wss://webrtc.qq.com"},kr=(e=>(e.LIVE="live",e.RTC="rtc",e))(kr||{}),ys=1,Yu=2,Dn=4,bs=8,gc=64,Ec=16,mE=112,pE=128,hE="5Y2wZK8nANNAoVw6dSAHVjNxrD1ObBM2kBPV",fE="224d130c-7b5c-415b-aaa2-79c2eb5a6df2",gE=N.MAIN,EE=N.AUXILIARY,_E=0,TE=1,IE=2,SE=3,AE=4,yE=5,bE=6,RE="unknown",vE={NEW:"new",CONNECTING:"connecting",FAILED:"failed",CLOSED:"closed",DISCONNECTED:"disconnected",CONNECTED:"connected",COMPLETED:"completed"},Gp=1/0;function Zu(i){Gp=i}function CE(){return Gp}var NE=30,ei={JOIN:"join",DELTA_JOIN:"delta-join",REJOIN:"rejoin",LEAVE:"leave",DELTA_LEAVE:"delta-leave",PUBLISH:"publish",DELTA_PUBLISH:"delta-publish",UNPUBLISH:"unpublish",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",UPLINK_CONNECTION:"uplink-connection",UPLINK_RECONNECTION:"uplink-reconnection",DOWNLINK_CONNECTION:"downlink-connection",DOWNLINK_RECONNECTION:"downlink-reconnection",ON_TRACK:"ontrack",ICE_CONNECTION_STATE:"iceConnectionState",LOCAL_STREAM_INITIALIZE:"stream-initialize",SIGNAL_CONNECTION:"websocketConnectionState",SIGNAL_RECONNECTION:"websocketReconnectionState",UPDATE_STREAM:"update-stream",RECOVER_LOCAL_AUDIO_TRACK:"recover-local-audio-track",RECOVER_LOCAL_VIDEO_TRACK:"recover-local-video-track",RECOVER_SUBSCRIPTION:"recover-subscription",START_MIX_TRANSCODE:"start-mix-transcode",STOP_MIX_TRANSCODE:"stop-mix-transcode",PLAYER_ERROR:"player-error",SCHEDULE:"schedule",LOAD_WORKLET:"load-worklet",VIDEO_FROZEN_COUNT:"videoFrozenCount",GET_USER_MEDIA_RETRY:"getUserMedia-retry"},DE=1e4,ME=1e4,wE=1e4,Ku="unified-plan",OE="plan-b",xE=1028,jp=(r=>(r[r.UNPUBLISH=-1]="UNPUBLISH",r[r.PUBLISHING=0]="PUBLISHING",r[r.PUBLISHED=1]="PUBLISHED",r))(jp||{}),_c=500,PE=1e3,kE=N.BIG,LE=N.SMALL,UE=10*1e3,ti={MAIN:"schedule.cloud-rtc.com",BACKUP:"schedule.cloud-rtc.net",MAIN_OVERSEA:"schedule.rtc-web.com",BACKUP_OVERSEA:"schedule.rtc-web.io",MAIN_OVERSEA_BACKUP:"intl-schedule.cloud-rtc.com"},VE=2e3,FE={TRTC:"TRTC",CLIENT:"Client",LOCAL_STREAM:"LocalStream",REMOTE_STREAM:"RemoteStream",STREAM:"Stream"},wo=5,Oo="default",Mn=Oo,$E="communications",BE=Object.keys(Tr),qp=["normal leave","timeout leave","kick","role change"],HE=10,Rs=2e3,Tc=["width","height","frameRate","facingMode","sampleRate","sampleSize","channelCount","deviceId","min","max"],wn=10*1e3;var zp=function(){return new URLSearchParams(location.search).get("trtc_env")||""},ri=i=>Number(i)<14e8,ii=function(i,t){let e;Cn?e=Cn:e=ri(i)?zu:Ju;let r=Math.floor(Math.random()*Hi(2,31));return`${e}/v5/AVQualityReportSvc/C2S?random=${r}&sdkappid=${i}&cmdtype=${t}`},On="unknown";function xn(){if(On!=="unknown")return On;let{userAgent:i,connection:t}=navigator,e=(i.match(/NetType\/\S+/)||[])[0]||"";e=e.toLowerCase().replace("nettype/",""),e==="3gnet"&&(e="3g");let r=t&&t.type&&t.type.toLowerCase(),o=t&&t.effectiveType&&t.effectiveType.toLowerCase();return o==="slow-2"&&(o="2g"),r&&(On=Xp(r,o)),On}function Xp(i,t){if(Mo[i])return i;switch(i){case"cellular":case"wimax":return t||"unknown";case"ethernet":return"wired";case"none":case"other":default:return"unknown"}}function Qp(i){On=Xp(i)}function Ic(){return Mo[xn()]}function Yp(i,t){for(let e of Reflect.ownKeys(t))if(e!=="constructor"&&e!=="prototype"&&e!=="name"){let r=Object.getOwnPropertyDescriptor(t,e)||"";Object.defineProperty(i,e,r)}return i}function Zp(i,t=48e3){return tl(i/4,t)}function tl(i,t=48e3){return i*1e3/t}function Kp(i,t=48e3){return rl(i,t)*4}function rl(i,t=48e3){return i*t/1e3}var Pn=typeof window!="undefined"&&typeof window.glog=="function"?window.glog:()=>{},Sr=()=>{let i=navigator.language;return i=i.substring(0,2),i==="zh"},Lt=function(i){if(!i||typeof i!="object"||Object.prototype.toString.call(i)!="[object Object]")return!1;let t=Object.getPrototypeOf(i);if(t===null)return!0;let e=Object.prototype.hasOwnProperty.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Function.prototype.toString.call(e)===Function.prototype.toString.call(Object)};function Po(i,t=1,e=1){return i<=1?e:Po(i-1,e,t+e)}function eh(i){return i>8?30*1e3:Po(i)*1e3}function ct(i){return Reflect.apply(Object.prototype.toString,i,[]).replace(/^\[object\s(\w+)\]$/,"$1").toLowerCase()}var We=i=>typeof i=="function",P=i=>typeof i=="undefined",we=i=>typeof i=="string",Pe=i=>typeof i=="number",st=i=>typeof i=="boolean",er=i=>ct(i)==="object",ot=i=>ct(i)==="array",th=i=>ct(i)==="MediaStreamTrack".toLowerCase(),rh=i=>i.isRemote,ji=i=>ct(i)==="promise",ko=i=>We(i)&&i.prototype.constructor===i,vs=i=>ko(i)?i.prototype.constructor.name:"",ih=typeof AudioWorkletNode!="undefined";function kn(i){return new Promise((t,e)=>{let r=[];i.forEach(o=>{o.then(t).catch(s=>{r.push(s),r.length===i.length&&e(r)})})})}function Ie(){return!performance||!performance.now?Date.now():Math.floor(performance.now())}var Jp=i=>+i<10?`0${i}`:i,oh=i=>{let t=i.match(/^\d+\.\d+\.\d+/)[0];if(!t)return i;let e=t.split("."),r=Jp(e[1])+Jp(e[2]);return e[1]-15>0&&(e[1]="15"),e[2]-15>0&&(e[2]="15"),`${e.join(".")}.${r}`},WE=Object.prototype.hasOwnProperty,{toString:iA}=Object.prototype;function Cs(i){if(i==null)return!0;if(typeof i=="boolean")return!1;if(typeof i=="number")return i===0;if(typeof i=="string"||typeof i=="function"||Array.isArray(i))return i.length===0;if(i instanceof Error)return i.message==="";if(Lt(i))switch(Object.prototype.toString.call(i)){case"[object File]":case"[object Map]":case"[object Set]":return i.size===0;case"[object Object]":{for(let t in i)if(WE.call(i,t))return!1;return!0}}return!1}function Ln(i,t){return{userId:t,hasAudio:!!(i&bs),hasVideo:!!(i&ys),hasAuxiliary:!!(i&Dn),hasSmall:!!(i&Yu),audioMuted:!!(i&gc),videoMuted:!!(i&Ec),audioAvailable:!!(i&bs)&&!(i&gc),videoAvailable:!!(i&ys)&&!(i&Ec)}}function sh(i){let t={urls:i.url.startsWith("turn:")||i.url.startsWith("turns:")?i.url:`turn:${i.url}`};return!P(i.username)&&!P(i.credential)&&(t.username=i.username,t.credential=i.credential,t.credentialType="password",P(i.credentialType)||(t.credentialType=i.credentialType)),t}function Ns(i,t=!0){if(!we(i))return 0;let e=i.split(".");return t?(Number(e[0])<<24|Number(e[1])<<16|Number(e[2])<<8|Number(e[3]))>>>0:(Number(e[3])<<24|Number(e[2])<<16|Number(e[1])<<8|Number(e[0]))>>>0}var ur=function(i,t,e,r){if(!(er(i)&&er(t)))return 0;let o=0,s=Object.keys(t),n;for(let c=0,l=s.length;c<l;c++)if(n=s[c],!(P(t[n])||e&&e.includes(n)))if(er(i[n])&&er(t[n]))o+=ur(i[n],t[n],e,r);else{if(r&&r.includes(t[n]))continue;i[n]!==t[n]&&(i[n]=xo(t[n]),o+=1)}return o};function xo(i){if(ot(i)){let t=[];return i.forEach((e,r)=>{t[r]=xo(e)}),t}if(er(i)){let t={};return Object.keys(i).forEach(e=>{t[e]=xo(i[e])}),t}return i}var Ds=i=>{let t=[];if(ot(i))t=[...i];else if(we(i)){let e=document.getElementById(i);e&&t.push(e)}else i&&t.push(i);return t},nh=i=>we(i)?document.getElementById(i):i,GE=i=>{let t=l=>l<10?`0${l}`:`${l}`,e=i.getFullYear(),r=i.getMonth()+1,o=i.getDate(),s=t(i.getHours()),n=t(i.getMinutes()),c=t(i.getSeconds());return`${e}/${r}/${o} ${s}:${n}:${c}`},Sc=()=>GE(new Date);function dr(i,{keysToInclude:t,keysToExclude:e}){try{if(ot(i))return`[${i.map(n=>dr(n,{keysToInclude:t,keysToExclude:e})).join(",")}]`;if(!Lt(i)||!ot(t)&&!ot(e))return JSON.stringify(i);let r={},o=new Set(t),s=new Set(e);return Object.keys(i).forEach(n=>{(s.size===0&&o.has(n)||o.size===0&&!s.has(n))&&(r[n]=Lt(i[n])||ot(i[n])?JSON.parse(dr(i[n],{keysToExclude:e,keysToInclude:t})):i[n])}),JSON.stringify(r)}catch(r){return"{}"}}function Ac(i,t=!1){let e=[];return Object.keys(i).forEach(r=>{t===i[r]&&e.push(r)}),dr(i,{keysToInclude:e})}function ah(i){return i.replace(/[\u4e00-\u9fa5]/g,"aa").length}var il=()=>{var i,t,e,r;return(i=window.screen)!=null&&i.orientation?!!((r=(e=(t=window.screen)==null?void 0:t.orientation)==null?void 0:e.type)!=null&&r.includes("portrait")):window.orientation===0||window.orientation===180},Ms=i=>A(void 0,null,function*(){return new Promise((t,e)=>{let r;if(we(i))r=new Image,r.crossOrigin="anonymous",r.src=i;else if(r=i,r.complete){t(r);return}r.onload=()=>t(r),r.onerror=()=>{e(new ue({code:J.INVALID_PARAMETER,message:`load image failed, url: ${i}`}))}})}),yc=i=>{let t=i.split(".");return+t[0]<<24|+t[1]<<16|+t[2]<<8|+t[3]<<0},Un=i=>(Object.keys(i).forEach(t=>{Pe(i[t])&&(t.startsWith("uint")||t.startsWith("int"))?i[t]=Math.floor(i[t]):(Lt(i[t])||ot(i[t]))&&Un(i[t])}),i);function Vn(i,t){return new Promise(e=>{let r=setTimeout(e,i);t&&t(r)})}function bc(i,t){let e=null;return function(...r){return e||(e=i.apply(t||this,r),e.finally(()=>e=null),e)}}function Lo(i){return i.replace(/(^|[^:])\/{2,}/g,"$1/")}function Rc(i){var t;try{let{width:e,height:r,frameRate:o,sampleRate:s,sampleSize:n,channelCount:c}=(t=i.getSettings)==null?void 0:t.call(i),l=i.kind===N.AUDIO?`${s}x${n}@${c}`:`${e}x${r}@${o}`,m=i.stats?` stats: ${JSON.stringify(i.stats).replaceAll('"',"")}`:"";return`${i.id} ${i.readyState} muted:${i.muted} ${i.kind} ${i.label} ${l}${m}`}catch(e){return""}}function vc(i,t){return i.width*i.height===t.width*t.height?1:il()&&t.width>t.height&&i.height>t.width?Math.max(i.width/t.height,i.height/t.width,1):Math.max(i.width/t.width,i.height/t.height,1)}function oi(i){return i===90||i===270}function si({url:i,body:t,method:e="POST",timeout:r,priority:o}){return new Promise((s,n)=>{if("fetch"in window)return fetch(i,{method:e,body:t,priority:o}).then(l=>l.text()).then(l=>{try{s({data:JSON.parse(l)})}catch(m){s({data:l})}},n);let c=new XMLHttpRequest;c.onreadystatechange=()=>{if(c.readyState===4)if(c.status>=200&&c.status<300)try{let l=JSON.parse(c.response);s({data:l})}catch(l){s({data:c.response})}else n({status:c.status,statusText:c.statusText||"request failed!"})},c.timeout=r||5e3,c.open(e,i,!0),c.send(t)})}function ol(i){return A(this,null,function*(){let t=Ie(),e=JSON.stringify(i);try{if(!CompressionStream||e.length<=2800)return e;let o=new Blob([e],{type:"application/json"}).stream().pipeThrough(new CompressionStream("gzip")),c=yield(yield(yield new Response(o)).blob()).arrayBuffer();return $.debug(`compressJSON ${e.length} -> ${c.byteLength} ${Ie()-t}ms`),c}catch(r){return e}})}var jE=Object.prototype.hasOwnProperty;var qi=i=>typeof i=="function",ch=i=>typeof i=="undefined";var dh=i=>typeof i=="boolean";var sl=i=>i.isRemote;var nl=function(i){if(!i||typeof i!="object"||Object.prototype.toString.call(i)!="[object Object]")return!1;let t=Object.getPrototypeOf(i);if(t===null)return!0;let e=Object.prototype.hasOwnProperty.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Function.prototype.toString.call(e)===Function.prototype.toString.call(Object)};function uh(i){if(i==null)return!0;if(typeof i=="boolean")return!1;if(typeof i=="number")return i===0;if(typeof i=="string"||typeof i=="function"||Array.isArray(i))return i.length===0;if(i instanceof Error)return i.message==="";if(nl(i))switch(Object.prototype.toString.call(i)){case"[object File]":case"[object Map]":case"[object Set]":return i.size===0;case"[object Object]":{for(let t in i)if(jE.call(i,t))return!1;return!0}}return!1}var qE=0,JE=1,lh=2;function zE({retryFunction:i,settings:t,onError:e,onRetrying:r,onRetryFailed:o,onRetrySuccess:s,context:n}){return function(...c){let{retries:l=5,timeout:m=1e3}=t,E=0,g=-1,_=qE,v=(L,x)=>A(this,null,function*(){let M=n||this;try{let B=yield i.apply(M,c);E>0&&s&&s.call(this,E),E=0,L(B)}catch(B){let ee=()=>{clearTimeout(g),E=0,_=lh,x(B)},pe=()=>{_!==lh&&E<(qi(l)?l():l)?(E++,_=JE,qi(r)&&r.call(this,E,ee),g=window.setTimeout(()=>{g=-1,v(L,x)},qi(m)?m(E):m)):(ee(),qi(o)&&o.call(this,B))};qi(e)?e.call(this,{error:B,retry:pe,reject:x,retryFuncArgs:c,retriedCount:E}):pe()}});return new Promise(v)}}var Ji=zE;var ws=class{constructor(t){u(this,"userId");u(this,"remoteUserId");u(this,"id");u(this,"sdkAppId");u(this,"type");u(this,"isLocal");this.id=t.id,this.userId=t.userId,this.sdkAppId=t.sdkAppId,this.remoteUserId=t.remoteUserId,this.isLocal=dh(t.isLocal)?t.isLocal:!0,this.type=this.isLocal?"":t.type}createChild(t){return Object.setPrototypeOf(t,this)}setUserId(t){this.userId=t}setSdkAppId(t){this.sdkAppId=t}log(t,e){let r=this.isLocal?this.userId:this.remoteUserId;e.unshift(`[${this.isLocal?"\u2191":"\u2193"}${this.type&&this.type!=="main"?"*":""}${this.id}${r?`|${r}`:""}]`),$.log(t,e,ch(this.userId)||uh(this.userId),this.userId,this.sdkAppId)}info(...t){this.log(2,t)}debug(...t){this.log(1,t)}warn(...t){this.log(3,t)}error(...t){this.log(4,t)}};var Bs={};Zr(Bs,{ANDROID_VERSION:()=>dl,CHROME_MAJOR_VERSION:()=>Vr,CHROME_VERSION:()=>jc,EDGE_VERSION:()=>Dc,EDG_MAJOR_VERSION:()=>ul,EDG_VERSION:()=>Mc,FIREFOX_MAJOR_VERSION:()=>Nc,FIREFOX_VERSION:()=>Cc,HUAWEI_VERSION:()=>$c,IE_VERSION:()=>KE,IOS_MAIN_VERSION:()=>Jt,IOS_VERSION:()=>Qi,IPADQQB_VERSION:()=>Vc,IS_ANDROID:()=>mt,IS_ANDROID_WEBVIEW:()=>i_,IS_ANY_SAFARI:()=>Xi,IS_CHROME:()=>Fs,IS_CHROME_OS:()=>ll,IS_CHROMIUM_BASE:()=>ni,IS_DESKTOP_IOS_CHROME:()=>Tl,IS_EDG:()=>Ps,IS_EDGE:()=>Uo,IS_ELECTRON:()=>t_,IS_FIREFOX:()=>Ht,IS_HEADLESS_CHROME:()=>gl,IS_HONOR:()=>hl,IS_HUAWEI:()=>pl,IS_HUAWEIBROWSER:()=>qn,IS_IE:()=>fh,IS_IE8:()=>ZE,IS_IOS:()=>lt,IS_IOS_13_OR_14:()=>_l,IS_IOS_15_1:()=>El,IS_IOS_CHROME:()=>gh,IS_IPAD:()=>xs,IS_IPADQQB:()=>Wn,IS_IPAD_PRO:()=>cl,IS_IPHONE:()=>zi,IS_IPOD:()=>hh,IS_LINUX:()=>Gn,IS_LOCAL:()=>Rr,IS_MAC:()=>br,IS_MACQQB:()=>Hn,IS_MIBROWSER:()=>jn,IS_MQQB:()=>Vs,IS_NATIVE_ANDROID:()=>YE,IS_OLD_ANDROID:()=>QE,IS_OPENHARMONY:()=>fl,IS_OPPOBROWSER:()=>zn,IS_SAFARI:()=>It,IS_SAFARI_15_1:()=>s_,IS_SAMSUNGBROWSER:()=>Jn,IS_SOGOU:()=>$n,IS_SOGOUM:()=>Fn,IS_TBS:()=>yr,IS_UCBROWSER:()=>ml,IS_VIVOBROWSER:()=>Xn,IS_WECHAT:()=>Ls,IS_WIN:()=>Vo,IS_WQQB:()=>Bn,IS_WX:()=>e_,IS_X5MQQB:()=>Us,IS_XWEB:()=>ks,MACQQB_VERSION:()=>Uc,MI_VERSION:()=>Fc,MQQB_VERSION:()=>Os,OPENHARMONY_VERSION:()=>r_,OPPO_VERSION:()=>Hc,SAFARI_VERSION:()=>ai,SAMSUNG_VERSION:()=>Bc,SOGOUM_VERSION:()=>wc,SOGOU_VERSION:()=>Oc,TBS_VERSION:()=>xc,UA_DATA_STRING:()=>Ar,USER_AGENT:()=>tr,VIVO_VERSION:()=>Wc,WECHAT_VERSION:()=>kc,WQQB_VERSION:()=>Lc,XWEB_VERSION:()=>Pc,browserInfo:()=>Ur,getBrowserInfo:()=>Eh,getChromeMajorVersion:()=>Gc,getDeviceModel:()=>Qn,getGPUInfo:()=>Sl,getOSName:()=>$s,getOSNumber:()=>Yn,getOSString:()=>$o,getOSType:()=>yl,getTerminalType:()=>Al,getUserAgentData:()=>Fo,isLocalStorageEnabled:()=>ci,isMobile:()=>Il,isVersionSmallerThan:()=>o_});var tr=typeof navigator=="undefined"?"":navigator.userAgent,Ae=i=>new RegExp(i,"i").test(tr),Et=i=>{if(Ae(i)){let t=new RegExp(`${i}\\/([\\d.]+)`),e=tr.match(t);if(e&&e[1])return e[1]}return""},al=i=>{if(Ae(i)){let t=new RegExp(`${i}\\/(\\d+)`),e=tr.match(t);if(e&&e[1])return parseFloat(e[1])}return NaN},mh=/AppleWebKit\/([\d.]+)/i.exec(tr),XE=mh?parseFloat(mh[1]):NaN,xs=Ae("iPad"),cl=typeof navigator!="undefined"&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&Ae("Macintosh"),zi=Ae("iPhone")&&!xs,hh=Ae("iPod"),lt=zi||xs||hh||cl,mt=Ae("Android"),dl=function(){if(mt){let i=tr.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(i){let t=i[1]&&parseFloat(i[1]),e=i[2]&&parseFloat(i[2]);if(t&&e)return parseFloat(`${i[1]}.${i[2]}`);if(t)return t}}return NaN}(),QE=mt&&Ae("webkit")&&dl<2.3,YE=mt&&dl<5&&XE<537,Ht=Ae("Firefox"),Cc=Et("Firefox"),Nc=al("Firefox"),Uo=Ae("Edge"),Dc=Et("Edge"),Ps=Ae("Edg"),Mc=Et("Edg"),ul=al("Edg"),Fn=Ae("SogouMobileBrowser"),wc=Et("SogouMobileBrowser"),$n=Ae("MetaSr\\s"),Oc=Et("MetaSr\\s"),yr=Ae("TBS"),xc=Et("TBS"),ks=Ae("XWEB"),Pc=Et("XWEB"),ZE=Ae("MSIE\\s8\\.0"),fh=Ae("MSIE\\/\\d+"),KE=function(){if(fh){let i=/MSIE\s(\d+)\.\d/.exec(tr),t=i&&parseFloat(i[1]);return!t&&/Trident\/7.0/i.test(tr)&&/rv:11.0/.test(tr)&&(t=11),t}return NaN}(),Ls=Ae("(micromessenger|webbrowser)"),kc=Et("MicroMessenger"),Us=!yr&&Ae("MQQBrowser")&&Ae("COVC"),Vs=!yr&&Ae("MQQBrowser")&&!Ae("COVC"),Os=Vs||Us?Et("MQQBrowser"):"",Bn=!yr&&Ae(" QQBrowser"),Lc=Et(" QQBrowser"),Hn=!yr&&Ae("QQBrowserLite"),Uc=Et("QQBrowserLite"),Wn=!yr&&Ae("MQBHD"),Vc=Et("MQBHD"),Vo=Ae("Windows"),br=!lt&&Ae("MAC OS X"),Gn=!mt&&Ae("Linux"),ll=Ae("CrOS"),e_=Ae("MicroMessenger"),ml=Ae("UCBrowser"),t_=Ae("Electron"),jn=Ae("MiuiBrowser"),Fc=Et("MiuiBrowser"),qn=Ae("HuaweiBrowser"),pl=Ae("Huawei")||Ae("HUAWEI"),hl=Ae("Honor")||Ae("HONOR"),$c=Et("HuaweiBrowser"),Jn=Ae("SamsungBrowser"),Bc=Et("SamsungBrowser"),zn=Ae("HeyTapBrowser"),Hc=Et("HeyTapBrowser"),Xn=Ae("VivoBrowser"),Wc=Et("VivoBrowser"),fl=Ae("OpenHarmony"),r_=Et("OpenHarmony"),Gc=()=>al("Chrome"),ni=Ae("Chrome"),Fs=!Uo&&!$n&&!Fn&&!yr&&!ks&&!Ps&&!Bn&&!jn&&!qn&&!Jn&&!zn&&!Xn&&ni,gl=Ae("HeadlessChrome"),Vr=Gc(),jc=Et("Chrome"),It=!ni&&!Vs&&!Us&&!Hn&&!Wn&&Ae("Safari"),Xi=It||lt,ai=Et("Version"),i_=/Android.*(wv|.0.0.0)/.test(tr),Qi=(()=>{if(cl)return ai;if(lt){let i=tr.match(/OS (\d+)_(\d+)/i);if(i&&i[1]){let t=i[1];return i[2]&&(t+=`.${i[2]}`),t}}return""})();function o_(i,t){let e=i.split(".").map(o=>Number(o)),r=t.split(".").map(o=>Number(o));for(let o=0;o<Math.max(e.length,r.length);o++){let s=e[o]||0,n=r[o]||0;if(s<n)return!0;if(s>n)return!1}return!1}var Jt=Number(Qi.split(".")[0]),s_=ai==="15.1",El=Qi==="15.1",_l=(()=>{let i=Number(Qi.split(".")[0]);return i===14||i===13})(),gh=Ae("CriOS"),Tl=gh&&ai==="11.1.1",Rr=typeof location=="undefined"?!1:location.protocol==="file:"||location.hostname==="localhost"||location.hostname==="127.0.0.1",ci=(()=>{let i;return()=>{if(typeof i=="undefined")try{i=!!window.localStorage}catch(t){i=!1}return i}})(),Ur=Eh();function Eh(){let i=new Map([[Ht,["Firefox",Cc]],[Ps,["Edg",Mc]],[Fs,["Chrome",jc]],[It,["Safari",ai]],[yr,["TBS",xc]],[ks,["XWEB",Pc]],[Ls&&zi,["WeChat",kc]],[Bn,["QQ(Win)",Lc]],[Vs,["QQ(Mobile)",Os]],[Us,["QQ(Mobile X5)",Os]],[Hn,["QQ(Mac)",Uc]],[Wn,["QQ(iPad)",Vc]],[jn,["MI",Fc]],[qn,["HW",$c]],[Jn,["Samsung",Bc]],[zn,["OPPO",Hc]],[Xn,["VIVO",Wc]],[Uo,["EDGE",Dc]],[Fn,["SogouMobile",wc]],[$n,["Sogou",Oc]]]),t="unknown",e="unknown";return i.has(!0)&&([t,e]=i.get(!0)),{name:t,version:e}}var Ge=null;function Il(){return Ge&&typeof Ge.mobile=="boolean"?Ge.mobile:mt||lt||zi||xs||fl}var Ar="";function Fo(){return A(this,null,function*(){if(Ge)return Ge;if(!navigator.userAgentData||typeof navigator.userAgentData.getHighEntropyValues!="function")return null;try{return Ge=yield navigator.userAgentData.getHighEntropyValues(["architecture","bitness","model","platformVersion","fullVersionList"]),Ge&&!Ar&&(Ar=`UAData: ${Ge.platform}/${Ge.platformVersion}`,Ge.architecture&&Ge.bitness&&(Ar+=` ${Ge.architecture}/${Ge.bitness}`),Ge.mobile&&(Ar+=" mobile"),Ge.model&&(Ar+=` model: ${Ge.model.replace(/\s+/g,"/")}`),Ge.fullVersionList&&(Ar+=` ${Ge.fullVersionList.filter(i=>i.brand!=="Not/A)Brand").map(i=>`${i.brand}/${i.version}`).join(",")}`)),Ge}catch(i){return null}})}function Sl(){try{let i=document.createElement("canvas"),t=i.getContext("webgl")||i.getContext("experimental-webgl");if(!t)return"";let e=t.getExtension("WEBGL_debug_renderer_info");if(e){let r=t.getParameter(e.UNMASKED_VENDOR_WEBGL),o=t.getParameter(e.UNMASKED_RENDERER_WEBGL);return`${r} ${o}`}return""}catch(i){return""}}function Qn(){return(Ge==null?void 0:Ge.model)||""}var ph=new Map([[mt,"Android"],[lt,"iOS"],[Vo,"Windows"],[br,"MacOS"],[Gn,"Linux"],[ll,"ChromeOS"]]),$s=function(){return ph.get(!0)?ph.get(!0):Ge?Ge.platform:"unknown"};function Yn(){return Vo?1:mt?2:br?3:lt?4:Gn?5:ll?6:0}var $o=()=>{let i=$s();return i+=`/${Ur.name}/${It?Ur.version:Ur.version.split(".")[0]}`,Ge!=null&&Ge.platformVersion&&(i+=`/${Ge.platformVersion}`),Ge!=null&&Ge.architecture&&(i+=`/${Ge.architecture}`),i};function Al(){return mt?4:zi?2:xs?3:br?12:Vo?5:Gn?13:fl?22:1}function yl(){return mt?"Android":zi?"iPhone":xs?"iPad":br?"Mac":Vo?"Windows":Gn?"Linux":"unknown"}var Th=Wi(Yi(),1),c_=new Th.default,V=c_;var di=(ce=>(ce.ROOM_DESTROY="1",ce.JOIN_START="21",ce.JOIN_SCHEDULE_SUCCESS="22",ce.JOIN_SIGNAL_CONNECTION_START="23",ce.JOIN_SIGNAL_CONNECTION_END="24",ce.JOIN_SEND_CMD="25",ce.JOIN_RECEIVED_CMD_RES="26",ce.JOIN_SUCCESS="27",ce.JOIN_FAILED="28",ce.LEAVE_START="51",ce.LEAVE_SEND_CMD="52",ce.LEAVE_SUCCESS="53",ce.PUBLISH_START="61",ce.SEND_FIRST_VIDEO_FRAME="62",ce.PUBLISH_FAILED="63",ce.SUBSCRIBE_START="81",ce.SUBSCRIBE_SUCCESS="82",ce.SUBSCRIBE_FAILED="84",ce.UNSUBSCRIBE_SUCCESS="83",ce.LOCAL_TRACK_CAPTURE_START="101",ce.LOCAL_TRACK_CAPTURE_SUCCESS="102",ce.LOCAL_TRACK_CAPTURE_FAILED="103",ce.LOCAL_TRACK_PUBLISHED="104",ce.LOCAL_TRACK_UNPUBLISHED="105",ce.LOCAL_TRACK_REPLACED="106",ce.SWITCH_DEVICE_SUCCESS="107",ce.TRACK_MUTED="108",ce.TRACK_UNMUTED="109",ce.REMOTE_TRACK_SUBSCRIBED="110",ce.REMOTE_TRACK_UNSUBSCRIBED="111",ce.LOCAL_TRACK_RECAPTURE="112",ce.LOCAL_AUDIO_STARTED="113",ce.LOCAL_AUDIO_STOPPED="114",ce.REMOTE_AUDIO_STARTED="115",ce.REMOTE_AUDIO_STOPPED="116",ce.PLAY_TRACK_START="151",ce.PLAYER_STATE_CHANGED="152",ce.VIDEO_LOADED_DATA="153",ce.AUTOPLAY_DIALOG_CLICK_CONFIRM="154",ce.SIGNAL_CONNECTION_STATE_CHANGED="201",ce.PEER_CONNECTION_STATE_CHANGED="202",ce.SINGLE_CONNECTION_STAT="203",ce.SPC_RECONNECTED="204",ce.HEARTBEAT_REPORT="251",ce.RECEIVED_PUBLISHED_USER_LIST="252",ce.REMOTE_PUBLISH_STATE_CHANGED="253",ce.AUDIO_LEVEL_INTERVAL="260",ce.NETWORK_QUALITY="261",ce.VIDEO_CODEC_IMPLEMENTATION_CHANGED="262",ce.QUALITY_LIMITATION_CHANGED="263",ce.LOG="264",ce.AUDIO_PROCESSOR_DEBUG="265",ce.SWITCH_ROOM_START="401",ce.SWITCH_ROOM_SUCCESS="407",ce.SWITCH_ROOM_FAILED="408",ce))(di||{});var U=di;var d_="%cTRTC%c%s",u_="padding: 1px 4px;border-radius: 3px;color: #fff;background: #1E88E5;",l_="display: inline",Jc=class Jc{constructor(){u(this,"_isEnableUploadLog",!0);u(this,"_localJoinedUser",new Map);u(this,"_queue",[]);u(this,"_timeoutId",-1);u(this,"_logLevel",1);u(this,"_logLevelToUpload",2);!As&&!vn&&(this.checkURLParam(),this.installEvents())}get isAbleToUpload(){return this._isEnableUploadLog&&this._timeoutId!==-1}installEvents(){V.on(U.JOIN_SCHEDULE_SUCCESS,({schedule:t})=>{var e;(e=t==null?void 0:t.config)!=null&&e.logLevelToUpload&&Tr[t.config.logLevelToUpload]&&(this._logLevelToUpload=t.config.logLevelToUpload)}),V.on(U.JOIN_SUCCESS,({room:t})=>{this.addJoinedUser({userId:t.userId,sdkAppId:t.sdkAppId}),this.startUpload()}),V.once(U.JOIN_FAILED,()=>{this.startUpload()}),V.on(U.LEAVE_SUCCESS,({room:t})=>{this.deleteJoinedUser(t.userId)})}startUpload(){this._timeoutId===-1&&this.uploadInterval()}addJoinedUser(t){this._localJoinedUser.set(t.userId,t),this.startUpload()}deleteJoinedUser(t){this._localJoinedUser.delete(t)}uploadInterval(){this.upload().catch(()=>{}),this._timeoutId=window.setTimeout(()=>this.uploadInterval(),5e3)}getLogsToUpload(){let t={map:new Map,splicedQueue:[]};if(this._queue[0].forAllJoinedClients&&this._localJoinedUser.size===0)return t;let e=0;for(;e<this._queue.length&&e!==50;e++){let r=this._queue[e];if(r.forAllJoinedClients)this._localJoinedUser.forEach(({userId:o,sdkAppId:s})=>{t.map.has(o)?t.map.get(o).logs.push(r):t.map.set(o,{userId:o,sdkAppId:s,logs:[r]})});else if(we(r.userId)&&Pe(r.sdkAppId)){let{userId:o,sdkAppId:s}=r;t.map.has(o)?t.map.get(o).logs.push(r):t.map.set(o,{userId:o,sdkAppId:s,logs:[r]})}}return t.map.size>0&&(t.splicedQueue=this._queue.splice(0,e)),t}upload(){return A(this,null,function*(){if(this._queue.length===0||!this._isEnableUploadLog)return;let{map:t,splicedQueue:e}=this.getLogsToUpload();if(t.size===0)return;try{let o=[...t.values()];for(let s=0;s<o.length;s++){let{userId:n,sdkAppId:c,logs:l}=o[s];yield this.uploadLogWithRetry(JSON.stringify({timestamp:lc(),sdkAppId:String(c),userId:n,version:at,log:l.map(m=>m.log).join(`
|
|
4
|
+
`)}),c),l.forEach(m=>m.uploaded=!0)}}catch(o){}let r=e.filter(o=>!o.uploaded);r.length>0&&(this._queue=r.concat(this._queue))})}uploadLogWithRetry(t,e){return Ji({retryFunction:()=>si({url:ii(e,Gi.LOG),body:t,timeout:5e3,priority:"low"}),settings:{retries:3,timeout:2e3},onError:({retry:r})=>{r()}})()}getPrefix(t){let e=new Date;return e.setTime(Rn()),`[${Ss(e)}] <${Tr[t]}>`}getLogLevel(){return this._logLevel}setLogLevel(t){P(Tr[t])||(this._logLevel!==t&&this.info("setLogLevel",t),this._logLevel=t)}enableUploadLog(){this._isEnableUploadLog=!0}disableUploadLog(){this.warn("disableUploadLog"),this._isEnableUploadLog=!1}logChunkToString(t){if(we(t))return t;try{return t instanceof Error?t.toString():JSON.stringify(t)}catch(e){return""}}log(t,e,r=!0,o,s){var l;e.unshift(this.getPrefix(t));let n={log:e.reduce((m,E)=>`${m} ${this.logChunkToString(E)}`.trim(),""),level:t,userId:o,sdkAppId:s,forAllJoinedClients:r};if(V.emit(U.LOG,{log:n}),this._isEnableUploadLog&&t>=this._logLevelToUpload&&this._queue.push(n),t<this._logLevel)return;let c=((l=Tr[t])==null?void 0:l.toLowerCase())||"info";Jc.PRINT_LOG_TAG?console[c](d_,u_,l_,...e):console[c](...e)}debug(...t){this.log(1,t)}info(...t){this.log(2,t)}warn(...t){this.log(3,t)}error(...t){this.log(4,t)}createLogger(t){return new ws(t)}checkURLParam(){let e=new URLSearchParams(location.search).get("logLevelToUpload"),r=e?Number(e):-1;Tr[r]&&(this._logLevelToUpload=r)}getQueue(){return this._queue}};u(Jc,"PRINT_LOG_TAG",!(lt||mt||gl));var Rl=Jc,$=new Rl;var m_=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,i=>{let t=Math.random()*16|0;return(i=="x"?t:t&3|8).toString(16)})},Kn=m_;var vl=class{constructor(){u(this,"_prefix","TRTC");u(this,"_queue",new Map)}getRealKey(t){return`${this._prefix}_${t}`}checkStorage(){if(!ci())return;setInterval(this.doFlush.bind(this),2e4),Object.keys(localStorage).filter(r=>{if(r.startsWith(this._prefix))try{let o=localStorage.getItem(r);if(!o)return!1;let s=JSON.parse(o);if(s&&s.expiresIn<Date.now())return!0}catch(o){return!1}return!1}).forEach(r=>localStorage.removeItem(r))}doFlush(){if(ci())try{for(let[t,e]of this._queue)localStorage.setItem(t,JSON.stringify(e))}catch(t){$.warn(t)}}getItem(t){if(!ci())return null;try{let e=localStorage.getItem(this.getRealKey(t));if(!e)return null;let r=JSON.parse(e);return r&&r.expiresIn>=Date.now()?r.value:null}catch(e){$.warn(e)}}setItem(t,e){if(ci())try{let r={expiresIn:Date.now()+mc,value:e};this._queue.set(this.getRealKey(t),r)}catch(r){$.warn(r)}}deleteItem(t){if(!ci())return!1;try{return t=this.getRealKey(t),this._queue.delete(t),localStorage.removeItem(t),!0}catch(e){return $.warn(e),!1}}clear(){if(ci())try{localStorage.clear()}catch(t){$.warn(t)}}},Hs=new vl;var Ki={};Zr(Ki,{HTTPS_API:()=>M_,IS_GET_CAPABILITIES_SUPPORTED:()=>Jl,IS_GET_SETTINGS_SUPPORTED:()=>js,IS_GET_SYNCHRONIZATION_SOURCES_SUPPORTED:()=>F_,IS_INSERTABLE_STREAM_SUPPORTED:()=>ca,IS_JITTER_BUFFER_TARGET_SUPPORTED:()=>G_,IS_RTC_RTP_SENDER_SUPPORTED:()=>aa,IS_SCRIPT_TRANSFORM_SUPPORTED:()=>zh,IS_SEI_SUPPORTED:()=>da,IS_SPC_SUPPORTED:()=>k_,basis:()=>B_,capabilityCheck:()=>Xl,checkSystemRequirementsInternal:()=>nd,decodeSupportStatus:()=>$h,encodeSupportStatus:()=>Gl,getBrowserInfo:()=>od,getDisplayResolution:()=>Bh,isAddTransceiverSupported:()=>cd,isBrowserSupported:()=>jl,isCanvasCaptureStreamAPISupported:()=>Gh,isCanvasSmallStreamSupported:()=>jh,isGetReceiversSupported:()=>x_,isGetSendersSupported:()=>Jh,isGetTransceiversSupported:()=>P_,isGetUserMediaSupported:()=>Hh,isMediaDevicesSupported:()=>sd,isMediaSessionSupported:()=>Qh,isMediaStreamTrackProcessorSupported:()=>ql,isReplaceTrackSupported:()=>U_,isRequestVideoFrameCallbackSupported:()=>fi,isSIMDSupported:()=>$_,isScaleResolutionDownBySupported:()=>qh,isScreenCaptureApiAvailable:()=>na,isSelectedCandidatePair:()=>w_,isSetParametersSupported:()=>V_,isSmallStreamSupported:()=>ad,isStopTransceiverSupported:()=>L_,isTRTCSupported:()=>N_,isUnifiedPlanDefault:()=>O_,isUsedInHttpProtocol:()=>hi,isWebAudioSupported:()=>Wh,isWebCodecSupported:()=>Xh,isWebCodecsSupported:()=>Fh,isWebRTCSupported:()=>zl,isWebTransportSupported:()=>Yh});var Vl={};Zr(Vl,{AUDIO_LEVEL_SCALE:()=>li,AudioCodecPipelineType:()=>Zc,AudioDecoderDowngradeState:()=>Dl,AudioPlayerMode:()=>xl,AudioType:()=>wl,BASIC_TYPE:()=>mi,BannedReason:()=>Pl,CONNECTION_CLOSED_REASON:()=>Sh,ClientEvent:()=>Cl,CodecType:()=>Nh,ConnectionEvent:()=>Ih,ConnectionState:()=>Xc,DECODE_FAILED_ERROR_CODE:()=>Ul,FacingMode:()=>Qc,LeaveReason:()=>kl,LocalTrackEvent:()=>zc,MULTI_VIDEO_DATA_TYPE:()=>ui,MediaType:()=>Dt,MediaTypeLabel:()=>p_,MonitorEventId:()=>ra,MutedFlag:()=>yh,NetworkQualityValue:()=>vh,PlayerState:()=>Bo,ReceiveMode:()=>Ch,RemoteStreamType:()=>$r,RemoteTrackEvent:()=>Ws,RoomEvent:()=>Zi,SMALL_MODE:()=>Kc,SceneNumber:()=>Nl,StreamEvent:()=>Ah,StreamType:()=>Rh,SubscribeMediaType:()=>ea,TIMER_TYPE:()=>Wo,TRACK_ACTION:()=>bh,TRACK_KIND:()=>Ml,TrackEvent:()=>Fr,UserRole:()=>zt,UserRoleNumber:()=>Ho,VideoCodec:()=>Ll,VideoCodecPipelineType:()=>ia,VideoContentHint:()=>oa,VideoDecoderDowngradeState:()=>ta,VideoPlayerMode:()=>Yc,VideoType:()=>Ol});var Ih=(x=>(x.TRACK_ADDED="track-added",x.TRACK_UPDATED="track-updated",x.TRACK_SUBSCRIBED="track-subscribed",x.STREAM_ADDED="stream-added",x.STREAM_REMOVED="stream-removed",x.STREAM_UPDATED="stream-updated",x.STREAM_PUBLISHED="stream-published",x.STREAM_SUBSCRIBED="stream-subscribed",x.STREAM_UNSUBSCRIBED="stream-unsubscribed",x.STATE_CHANGED="state-changed",x.ERROR="error",x.CONNECTION_STATE_CHANGED="connection-state-changed",x.FIREWALL_RESTRICTION="firewall-restriction",x.SEI_MESSAGE="sei-message",x.CLOSED="closed",x))(Ih||{}),Sh=(n=>(n.REMOTE_LEAVE="remote user exitRoom",n.REMOTE_UNPUBLISH="remote user unpublished",n.LOCAL_LEAVE="you exitRoom",n.LOCAL_UNPUBLISH="you unpublished",n.LOCAL_UNSUBSCRIBE="you unsubscribed",n.SWITCH_ROLE="you switch role to audience",n))(Sh||{}),Cl=(M=>(M.STREAM_ADDED="stream-added",M.STREAM_REMOVED="stream-removed",M.STREAM_UPDATED="stream-updated",M.STREAM_SUBSCRIBED="stream-subscribed",M.CONNECTION_STATE_CHANGED="connection-state-changed",M.PEER_JOIN="peer-join",M.PEER_LEAVE="peer-leave",M.MUTE_AUDIO="mute-audio",M.MUTE_VIDEO="mute-video",M.UNMUTE_AUDIO="unmute-audio",M.UNMUTE_VIDEO="unmute-video",M.CLIENT_BANNED="client-banned",M.NETWORK_QUALITY="network-quality",M.AUDIO_VOLUME="audio-volume",M.SEI_MESSAGE="sei-message",M.ERROR="error",M))(Cl||{}),Ah=(s=>(s.PLAYER_STATE_CHANGED="player-state-changed",s.SCREEN_SHARING_STOPPED="screen-sharing-stopped",s.CONNECTION_STATE_CHANGED="connection-state-changed",s.DEVICE_AUTO_RECOVERED="device-auto-recovered",s.ERROR="error",s))(Ah||{}),zc=(n=>(n.DEVICE_AUTO_RECOVERED="1",n.DEVICE_RECOVER_FAILED="5",n.DEVICE_CHANGED="2",n.ERROR="3",n.PUBLISH_STATE_CHANGED="4",n.ENCODE_FAILED="6",n))(zc||{}),Bo=(r=>(r.PAUSED="PAUSED",r.PLAYING="PLAYING",r.STOPPED="STOPPED",r))(Bo||{}),Zi=(ae=>(ae.PEER_JOIN="peer-join",ae.PEER_LEAVE="peer-leave",ae.SIGNAL_CONNECTION_STATE_CHANGED="signal-connection-state-changed",ae.MEDIA_CONNECTION_STATE_CHANGED="media-connection-state-changed",ae.BANNED="banned",ae.NETWORK_QUALITY="network-quality",ae.AUDIO_VOLUME="audio-volume",ae.SEI_MESSAGE="sei-message",ae.ERROR="error",ae.REMOTE_PUBLISH_STATE_CHANGED="remote-publish-state-changed",ae.REMOTE_PUBLISHED="remote-published",ae.REMOTE_UNPUBLISHED="remote-unpublished",ae.FIREWALL_RESTRICTION="firewall-restriction",ae.HEARTBEAT_REPORT="heartbeat-report",ae.CUSTOM_MESSAGE="custom-message",ae.LAYER_DATA="layerData",ae.FIRST_VIDEO_FRAME="first-video-frame",ae.DUMP="dump",ae.AUDIO_FRAME="audio-frame",ae.SUBSCRIBE_SMALL_VIDEO_CHANGED="subscribe-small-video-changed",ae))(Zi||{}),Fr=(c=>(c.PLAYER_STATE_CHANGED="player-state-changed",c.MUTE="mute",c.UNMUTE="unmute",c.ERROR="error",c.INPUT_MEDIA_TRACK_CHANGED="input-media-track-changed",c.OUTPUT_MEDIA_TRACK_CHANGED="output-media-track-changed",c.FIRST_VIDEO_FRAME="first-video-frame",c))(Fr||{}),Ws=(e=>(e.DECODE_FAILED="decode-failed",e.DECODE_DOWNGRADE_STATE_CHANGED="decode-downgrade-state-changed",e))(Ws||{}),yh=(c=>(c[c.VIDEO=1]="VIDEO",c[c.SMALL=2]="SMALL",c[c.AUX=4]="AUX",c[c.AUDIO=8]="AUDIO",c[c.VIDEO_MUTE=16]="VIDEO_MUTE",c[c.AUX_MUTE=32]="AUX_MUTE",c[c.AUDIO_MUTE=64]="AUDIO_MUTE",c))(yh||{}),Nl=(e=>(e[e.RTC=1]="RTC",e[e.LIVE=2]="LIVE",e))(Nl||{}),Ho=(e=>(e[e.ANCHOR=20]="ANCHOR",e[e.AUDIENCE=21]="AUDIENCE",e))(Ho||{}),zt=(e=>(e.ANCHOR="anchor",e.AUDIENCE="audience",e))(zt||{}),Xc=(s=>(s.CONNECTED="CONNECTED",s.DISCONNECTED="DISCONNECTED",s.CONNECTING="CONNECTING",s.RECONNECTED="RECONNECTED",s.RECONNECTING="RECONNECTING",s))(Xc||{}),Dl=(o=>(o.INITIALIZED="INITIALIZED",o.STARTING="STARTING",o.STARTED="STARTED",o.FAILED="FAILED",o))(Dl||{}),ta=(o=>(o.INITIALIZED="INITIALIZED",o.STARTING="STARTING",o.STARTED="STARTED",o.FAILED="FAILED",o))(ta||{}),Ml=(r=>(r.AUDIO="audio",r.VIDEO="video",r.AUXILIARY="auxVideo",r))(Ml||{}),bh=(e=>(e.ADD="add",e.REMOVE="remove",e))(bh||{}),Dt=(s=>(s[s.NULL=0]="NULL",s[s.AUDIO=1]="AUDIO",s[s.AUX_VIDEO=2]="AUX_VIDEO",s[s.BIG_VIDEO=4]="BIG_VIDEO",s[s.SMALL_VIDEO=8]="SMALL_VIDEO",s))(Dt||{}),p_={1:"audio",2:"auxVideo",4:"video"},wl=(t=>(t[t.opus=111]="opus",t))(wl||{}),Ol=(e=>(e[e.h264=100]="h264",e[e.vp8=101]="vp8",e))(Ol||{}),Rh=(e=>(e.Big="big",e.Small="small",e))(Rh||{}),$r=(e=>(e.Main="main",e.Aux="auxiliary",e))($r||{}),ui=(s=>(s[s.MULTI_DATA_AUDIO=1]="MULTI_DATA_AUDIO",s[s.MULTI_DATA_BIG_IMG=2]="MULTI_DATA_BIG_IMG",s[s.MULTI_DATA_SMALL_IMG=3]="MULTI_DATA_SMALL_IMG",s[s.MULTI_DATA_AUX_IMG=7]="MULTI_DATA_AUX_IMG",s[s.MULTI_DATA_TYPE_BUTT=12]="MULTI_DATA_TYPE_BUTT",s))(ui||{}),ra=(j=>(j[j.PUBLISH_VIDEO=32768]="PUBLISH_VIDEO",j[j.PUBLISH_AUDIO=32769]="PUBLISH_AUDIO",j[j.UNPUBLISH_VIDEO=32770]="UNPUBLISH_VIDEO",j[j.UNPUBLISH_AUDIO=32771]="UNPUBLISH_AUDIO",j[j.MUTE_AUDIO=32772]="MUTE_AUDIO",j[j.MUTE_VIDEO=32773]="MUTE_VIDEO",j[j.UNMUTE_AUDIO=32774]="UNMUTE_AUDIO",j[j.UNMUTE_VIDEO=32775]="UNMUTE_VIDEO",j[j.SUBSCRIBE_VIDEO=32776]="SUBSCRIBE_VIDEO",j[j.SUBSCRIBE_AUDIO=32777]="SUBSCRIBE_AUDIO",j[j.UNSUBSCRIBE_VIDEO=32778]="UNSUBSCRIBE_VIDEO",j[j.UNSUBSCRIBE_AUDIO=32779]="UNSUBSCRIBE_AUDIO",j[j.SWITCH_CAMERA=32780]="SWITCH_CAMERA",j[j.SWITCH_MICROPHONE=32781]="SWITCH_MICROPHONE",j[j.REPLACE_VIDEO=32782]="REPLACE_VIDEO",j[j.REPLACE_AUDIO=32783]="REPLACE_AUDIO",j[j.MUTE_REMOTE_VIDEO=32784]="MUTE_REMOTE_VIDEO",j[j.MUTE_REMOTE_AUDIO=32785]="MUTE_REMOTE_AUDIO",j[j.UNMUTE_REMOTE_VIDEO=32786]="UNMUTE_REMOTE_VIDEO",j[j.UNMUTE_REMOTE_AUDIO=32787]="UNMUTE_REMOTE_AUDIO",j[j.JOIN=32788]="JOIN",j[j.LEAVE=32789]="LEAVE",j[j.SIGNAL_DISCONNECTED=32790]="SIGNAL_DISCONNECTED",j[j.SIGNAL_CONNECTED=32791]="SIGNAL_CONNECTED",j[j.TRANSPORT_UPLINK_CONNECTED=32792]="TRANSPORT_UPLINK_CONNECTED",j[j.TRANSPORT_DOWNLINK_CONNECTED=32793]="TRANSPORT_DOWNLINK_CONNECTED",j[j.SIGNAl_RECONNECTING=32794]="SIGNAl_RECONNECTING",j[j.SIGNAL_RECONNECT_SUCCESS=32795]="SIGNAL_RECONNECT_SUCCESS",j[j.SIGNAL_RECONNECT_FAIL=32796]="SIGNAL_RECONNECT_FAIL",j[j.TRANSPORT_UPLINK_RECONNECTING=32797]="TRANSPORT_UPLINK_RECONNECTING",j[j.TRANSPORT_UPLINK_RECONNECT_SUCCESS=32798]="TRANSPORT_UPLINK_RECONNECT_SUCCESS",j[j.TRANSPORT_UPLINK_RECONNECT_FAIL=32799]="TRANSPORT_UPLINK_RECONNECT_FAIL",j[j.TRANSPORT_DOWNLINK_RECONNECTING=32800]="TRANSPORT_DOWNLINK_RECONNECTING",j[j.TRANSPORT_DOWNLINK_RECONNECT_SUCCESS=32801]="TRANSPORT_DOWNLINK_RECONNECT_SUCCESS",j[j.TRANSPORT_DOWNLINK_RECONNECT_FAIL=32802]="TRANSPORT_DOWNLINK_RECONNECT_FAIL",j[j.SUBSCRIBE_SMALL_VIDEO=32803]="SUBSCRIBE_SMALL_VIDEO",j[j.UNSUBSCRIBE_SMALL_VIDEO=32804]="UNSUBSCRIBE_SMALL_VIDEO",j[j.PUBLISH_AUX=32805]="PUBLISH_AUX",j[j.UNPUBLISH_AUX=32806]="UNPUBLISH_AUX",j[j.DEVICE_CAPTURE=2003]="DEVICE_CAPTURE",j[j.VIDEO_ENCODER=4004]="VIDEO_ENCODER",j[j.VIDEO_DECODER=4005]="VIDEO_DECODER",j))(ra||{}),vh=(c=>(c[c.UNKNOWN=0]="UNKNOWN",c[c.EXCELLENT=1]="EXCELLENT",c[c.GOOD=2]="GOOD",c[c.POOR=3]="POOR",c[c.BAD=4]="BAD",c[c.VERY_BAD=5]="VERY_BAD",c[c.DISCONNECTED=6]="DISCONNECTED",c))(vh||{}),Ch=(o=>(o[o.MANUAL=0]="MANUAL",o[o.AUTO_AUDIO=1]="AUTO_AUDIO",o[o.AUTO_VIDEO=2]="AUTO_VIDEO",o[o.AUTO_ALL=3]="AUTO_ALL",o))(Ch||{}),Qc=(e=>(e.user="user",e.environment="environment",e))(Qc||{}),Yc=(r=>(r[r.ELEMENT=0]="ELEMENT",r[r.CANVAS_FROM_ELEMENT=1]="CANVAS_FROM_ELEMENT",r[r.CANVAS_WITHOUT_ELEMENT=2]="CANVAS_WITHOUT_ELEMENT",r))(Yc||{}),xl=(e=>(e[e.ELEMENT=0]="ELEMENT",e[e.CONTEXT=1]="CONTEXT",e))(xl||{}),Pl=(o=>(o.BANNED="banned",o.KICK="kick",o.USER_TIME_OUT="user_time_out",o.ROOM_DISBAND="room_disband",o))(Pl||{}),kl=(m=>(m[m.USER_EXIT_REASON_TC_USER_EXIT_NORMAL=0]="USER_EXIT_REASON_TC_USER_EXIT_NORMAL",m[m.USER_EXIT_REASON_TC_USER_EXIT_TIMEOUT=1]="USER_EXIT_REASON_TC_USER_EXIT_TIMEOUT",m[m.USER_EXIT_REASON_TC_USER_EXIT_KICKED=2]="USER_EXIT_REASON_TC_USER_EXIT_KICKED",m[m.USER_EXIT_REASON_TC_USER_EXIT_CHANGED=3]="USER_EXIT_REASON_TC_USER_EXIT_CHANGED",m[m.USER_KICK_OUT_CODE_BUSINESS_USER=4]="USER_KICK_OUT_CODE_BUSINESS_USER",m[m.USER_KICK_OUT_CODE_BUSINESS_ROOM=5]="USER_KICK_OUT_CODE_BUSINESS_ROOM",m[m.USER_KICK_OUT_CODE_SERVER_USER=6]="USER_KICK_OUT_CODE_SERVER_USER",m[m.USER_KICK_OUT_CODE_SERVER_ROOM=7]="USER_KICK_OUT_CODE_SERVER_ROOM",m[m.USER_KICK_SESS_EXSIT=8]="USER_KICK_SESS_EXSIT",m))(kl||{}),li=1e8,ea=class{constructor(){u(this,"mediaType",0)}set audio(t){t?this.mediaType|=1:this.mediaType&=-2}get audio(){return!!(this.mediaType&1)}set video(t){t?this.mediaType|=4:this.mediaType&=-5}get video(){return!!(this.mediaType&4)}set auxiliary(t){t?this.mediaType|=2:this.mediaType&=-3}get auxiliary(){return!!(this.mediaType&2)}set smallVideo(t){t?this.mediaType|=8:this.mediaType&=-9}get smallVideo(){return!!(this.mediaType&8)}},mi=(s=>(s.String="string",s.Number="number",s.Boolean="boolean",s.Array="array",s.Object="object",s))(mi||{}),Ll=(r=>(r.H264="h264",r.H265="h265",r.VP8="vp8",r))(Ll||{}),ia=(o=>(o[o.ENCRYPT_AND_DECRYPT=0]="ENCRYPT_AND_DECRYPT",o[o.DUMP=1]="DUMP",o[o.SEI=2]="SEI",o[o.ENCODE_AND_DECODE=3]="ENCODE_AND_DECODE",o))(ia||{}),Zc=(o=>(o[o.ENCRYPT_AND_DECRYPT=0]="ENCRYPT_AND_DECRYPT",o[o.NTP_TO_AUDIO_FRAME=1]="NTP_TO_AUDIO_FRAME",o[o.DUMP=2]="DUMP",o[o.ENCODE_AND_DECODE=3]="ENCODE_AND_DECODE",o))(Zc||{}),Nh=(r=>(r.WebRTC="webrtc",r.WebCodecs="webcodecs",r.WebAssembly="webassembly",r))(Nh||{}),Ul=(_=>(_[_.SUCCESS=0]="SUCCESS",_[_.FAILED=1]="FAILED",_[_.WEBCODEC_INIT=2]="WEBCODEC_INIT",_[_.WEBCODEC_CONFIG_NOT_SUPPORT=3]="WEBCODEC_CONFIG_NOT_SUPPORT",_[_.WEBCODEC_DECODER_ERROR=4]="WEBCODEC_DECODER_ERROR",_[_.WEBCODEC_TRACK_MUTE=5]="WEBCODEC_TRACK_MUTE",_[_.WASM_INIT=6]="WASM_INIT",_[_.WASM_WEBGL_UNAVALIABLE=7]="WASM_WEBGL_UNAVALIABLE",_[_.WASM_DECODER_ERROR=8]="WASM_DECODER_ERROR",_[_.WASM_TRACK_MUTE=9]="WASM_TRACK_MUTE",_[_.TEST=10]="TEST",_[_.RENDER_2D_ERROR=11]="RENDER_2D_ERROR",_))(Ul||{}),oa=(o=>(o.NONE="",o.DETAIL="detail",o.MOTION="motion",o.TEXT="text",o))(oa||{}),Wo=(s=>(s.INTERVAL="interval",s.TIMEOUT="timeout",s.RAF="raf",s.RIC="ric",s.INTERVAL_IN_WORKER="intervalInWorker",s))(Wo||{}),Kc=(e=>(e.CANVAS="canvas",e.API="api",e))(Kc||{});var $e={AVOID_REPEATED_CALL:"AVOID_REPEATED_CALL",INVALID_PARAMETER_REQUIRED:"INVALID_PARAMETER_REQUIRED",INVALID_PARAMETER_TYPE:"INVALID_PARAMETER_TYPE",INVALID_PARAMETER_EMPTY:"INVALID_PARAMETER_EMPTY",INVALID_PARAMETER_INSTANCE:"INVALID_PARAMETER_INSTANCE",INVALID_PARAMETER_RANGE:"INVALID_PARAMETER_RANGE",INVALID_PARAMETER_MIN:"INVALID_PARAMETER_MIN",INVALID_PARAMETER_MAX:"INVALID_PARAMETER_MAX",INVALID_PARAMETER_STREAMTYPE:"INVALID_PARAMETER_STREAMTYPE",API_CALL_TIMEOUT:"API_CALL_TIMEOUT",SIGNAL_CHANNEL_RECONNECTION_FAILED:"SIGNAL_CHANNEL_RECONNECTION_FAILED",SIGNAL_CHANNEL_SETUP_FAILED:"SIGNAL_CHANNEL_SETUP_FAILED",ERROR_MESSAGE:"ERROR_MESSAGE",EXCHANGE_SDP_TIMEOUT:"EXCHANGE_SDP_TIMEOUT",DOWNLINK_RECONNECTION_FAILED:"DOWNLINK_RECONNECTION_FAILED",EXCHANGE_SDP_FAILED:"EXCHANGE_SDP_FAILED",UPDATE_OFFER_TIMEOUT:"UPDATE_OFFER_TIMEOUT",UPLINK_RECONNECTION_FAILED:"UPLINK_RECONNECTION_FAILED",INVALID_RECORDID:"INVALID_RECORDID",INVALID_PURE_AUDIO:"INVALID_PURE_AUDIO",INVALID_STREAMID:"INVALID_STREAMID",INVALID_USER_DEFINE_RECORDID:"INVALID_USER_DEFINE_RECORDID",INVALID_USER_DEFINE_PUSH_ARGS:"INVALID_USER_DEFINE_PUSH_ARGS",INVALID_PROXY:"INVALID_PROXY",INVALID_JOIN:"INVALID_JOIN",INVALID_ROOMID_STRING:"INVALID_ROOMID_STRING",INVALID_ROOMID_INTEGER:"INVALID_ROOMID_INTEGER",INVALID_SIGNAL_CHANNEL:"INVALID_SIGNAL_CHANNEL",JOIN_ROOM_TIMEOUT:"JOIN_ROOM_TIMEOUT",JOIN_ROOM_FAILED:"JOIN_ROOM_FAILED",REJOIN_ROOM_FAILED:"REJOIN_ROOM_FAILED",INVALID_DESTROY:"INVALID_DESTROY",INVALID_PUBLISH:"INVALID_PUBLISH",INVALID_UNPUBLISH:"INVALID_UNPUBLISH",INVALID_AUDIENCE:"INVALID_AUDIENCE",INVALID_INITIALIZE:"INVALID_INITIALIZE",INVALID_DUPLICATE_PUBLISHING:"INVALID_DUPLICATE_PUBLISHING",INVALID_SUBSCRIBE_UNDEFINED:"INVALID_SUBSCRIBE_UNDEFINED",INVALID_SUBSCRIBE_LOCAL:"INVALID_SUBSCRIBE_LOCAL",INVALID_REMOTE_STREAM:"INVALID_REMOTE_STREAM",SUBSCRIBE_FAILED:"SUBSCRIBE_FAILED",INVALID_ROLE:"INVALID_ROLE",INVALID_PARAMETER_SWITCH_ROLE:"INVALID_PARAMETER_SWITCH_ROLE",INVALID_OPERATION_SWITCH_ROLE:"INVALID_OPERATION_SWITCH_ROLE",SWITCH_ROLE_TIMEOUT:"SWITCH_ROLE_TIMEOUT",SWITCH_ROLE_FAILED:"SWITCH_ROLE_FAILED",CLIENT_BANNED:"CLIENT_BANNED",INVALID_OPERATION_START_PUBLISH_CDN:"INVALID_OPERATION_START_PUBLISH_CDN",INVALID_OPERATION_STOP_PUBLISH_CDN:"INVALID_OPERATION_STOP_PUBLISH_CDN",INVALID_STREAM_ID:"INVALID_STREAM_ID",START_PUBLISH_CDN_FAILED:"START_PUBLISH_CDN_FAILED",STOP_PUBLISH_CDN_FAILED:"STOP_PUBLISH_CDN_FAILED",START_MIX_TRANSCODE:"START_MIX_TRANSCODE",STOP_MIX_TRANSCODE:"STOP_MIX_TRANSCODE",INVALID_AUDIO_VOLUME:"INVALID_AUDIO_VOLUME",ENABLE_SMALL_STREAM_PUBLISHED:"ENABLE_SMALL_STREAM_PUBLISHED",DISABLE_SMALL_STREAM_PUBLISHED:"DISABLE_SMALL_STREAM_PUBLISHED",NOT_SUPPORTED_SMALL_STREAM:"NOT_SUPPORTED_SMALL_STREAM",INVALID_SMALL_STREAM_PROFILE:"INVALID_SMALL_STREAM_PROFILE",INVALID_PARAMETER_REMOTE_STREAM:"INVALID_PARAMETER_REMOTE_STREAM",INVALID_OPERATION_CHANGE_SMALL:"INVALID_OPERATION_CHANGE_SMALL",REMOTE_NOT_PUBLISH_SMALL_STREAM:"REMOTE_NOT_PUBLISH_SMALL_STREAM",INVALID_SWITCH_DEVICE:"INVALID_SWITCH_DEVICE",INVALID_SWITCH_DEVICE_PUBLISHING:"INVALID_SWITCH_DEVICE_PUBLISHING",INVALID_REPLACE_TRACK:"INVALID_REPLACE_TRACK",INVALID_INITIALIZE_LOCAL_STREAM:"INVALID_INITIALIZE_LOCAL_STREAM",INVALID_ADD_TRACK_REPETITIVE:"INVALID_ADD_TRACK_REPETITIVE",INVALID_ADD_TRACK_REMOVING:"INVALID_ADD_TRACK_REMOVING",INVALID_ADD_TRACK_PUBLISHING:"INVALID_ADD_TRACK_PUBLISHING",INVALID_STREAM_INITIALIZED:"INVALID_STREAM_INITIALIZED",INVALID_ADD_TRACK_NUMBER:"INVALID_ADD_TRACK_NUMBER",INVALID_REMOVE_AUDIO_TRACK:"INVALID_REMOVE_AUDIO_TRACK",INVALID_REMOVE_AUDIO_ADDING:"INVALID_REMOVE_AUDIO_ADDING",INVALID_REMOVE_AUDIO_ON:"INVALID_REMOVE_AUDIO_ON",INVALID_REMOVE_TRACK_PUBLISHING:"INVALID_REMOVE_TRACK_PUBLISHING",INVALID_REMOVE_TRACK_NOT_TRACK:"INVALID_REMOVE_TRACK_NOT_TRACK",INVALID_REMOVE_TRACK_NUMBER:"INVALID_REMOVE_TRACK_NUMBER",INVALID_REPLACE_TRACK_NO_TRACK:"INVALID_REPLACE_TRACK_NO_TRACK",REPEAT_JOIN:"REPEAT_JOIN",CLIENT_DESTROYED:"CLIENT_DESTROYED",NOT_BUG_PACKAGE:"NOT_BUG_PACKAGE",START_MIX_TRANSCODE_FAILED:"START_MIX_TRANSCODE_FAILED",STOP_MIX_TRANSCODE_FAILED:"STOP_MIX_TRANSCODE_FAILED",MIX_TRANSCODE_NOT_STARTED:"MIX_TRANSCODE_NOT_STARTED",CANNOT_LESS_THAN_ZERO:"CANNOT_LESS_THAN_ZERO",MIX_PARAMS_VIDEO_FRAMERATE:"MIX_PARAMS_VIDEO_FRAMERATE",MIX_PARAMS_VIDEO_GOP:"MIX_PARAMS_VIDEO_GOP",MIX_PARAMS_AUDIO_BITRATE:"MIX_PARAMS_AUDIO_BITRATE",MIX_PARAMS_USER_Z_ORDER:"MIX_PARAMS_USER_Z_ORDER",MIX_PARAMS_NOT_SELF:"MIX_PARAMS_NOT_SELF",MIX_PARAMS_USER_STREAM:"MIX_PARAMS_USER_STREAM",INVALID_PLAY:"INVALID_PLAY",INVALID_ELEMENT_ID:"INVALID_ELEMENT_ID",INVALID_ELEMENT_ID_TYPE:"INVALID_ELEMENT_ID_TYPE",PLAY_FAILED:"PLAY_FAILED",INVALID_USERID:"INVALID_USERID",INVALID_CREATE_STREAM_SOURCE:"INVALID_CREATE_STREAM_SOURCE",INVALID_CREATE_STREAM_SCREEN:"INVALID_CREATE_STREAM_SCREEN",INVALID_CREATE_STREAM_AUDIO:"INVALID_CREATE_STREAM_AUDIO",INVALID_CREATE_STREAM_SCREEN_AUDIO:"INVALID_CREATE_STREAM_SCREEN_AUDIO",NOT_SUPPORTED_HTTP:"NOT_SUPPORTED_HTTP",NOT_SUPPORTED_WEBRTC:"NOT_SUPPORTED_WEBRTC",NOT_SUPPORTED_PROFILE:"NOT_SUPPORTED_PROFILE",NOT_SUPPORTED_MEDIA:"NOT_SUPPORTED_MEDIA",NOT_SUPPORTED_H264ENCODE:"NOT_SUPPORTED_H264ENCODE",NOT_SUPPORTED_H264DECODE:"NOT_SUPPORTED_H264DECODE",NOT_SUPPORTED_TRACK:"NOT_SUPPORTED_TRACK",NOT_SUPPORTED_SWITCH_DEVICE:"NOT_SUPPORTED_SWITCH_DEVICE",NOT_SUPPORTED_CAPTURE:"NOT_SUPPORTED_CAPTURE",NOT_SUPPORTED_AUX:"NOT_SUPPORTED_AUX",MICROPHONE_NOT_FOUND:"MICROPHONE_NOT_FOUND",CAMERA_NOT_FOUND:"CAMERA_NOT_FOUND",SIGNAL_RESPONSE_FAILED:"SIGNAL_RESPONSE_FAILED",CATCH_HANDLER_ERROR:"CATCH_HANDLER_ERROR",API_NOT_EXIST:"API_NOT_EXIST",CONNECTION_CLOSED:"CONNECTION_CLOSED",SUBSCRIBE_ALL_FALSE:"SUBSCRIBE_ALL_FALSE",SEI_NOT_SUPPORT:"SEI_NOT_SUPPORT",SEI_DISABLED:"SEI_DISABLED",SEI_BEFORE_PUBLISH:"SEI_BEFORE_PUBLISH",SEI_NOT_VIDEO:"SEI_NOT_VIDEO",CALL_FREQUENCY_LIMIT:"CALL_FREQUENCY_LIMIT",CONNECTION_ABORTED:"CONNECTION_ABORTED",API_CALL_ABORTED:"API_CALL_ABORTED",DUPLICATE_AUX:"DUPLICATE_AUX"},Xt={AVOID_REPEATED_CALL(i){return`previous ${i.name}() is ongoing, please avoid repeated calls.`},INVALID_PARAMETER_REQUIRED({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' is a required param when calling ${e}(), received: ${r}.`},INVALID_PARAMETER_TYPE({key:i,rule:t,fnName:e,value:r}){let o=`${i||t.name}`,s="";return Array.isArray(t.type)?s=t.type.join("|"):s=t.type,`'${o}' must be type of ${s} when calling ${e}(), received type: ${ct(r)}.`},INVALID_PARAMETER_EMPTY({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' cannot be '${r}' when calling ${e}().`},INVALID_PARAMETER_INSTANCE({key:i,rule:t,fnName:e,value:r}){let o=`${i||t.name}`,s=`${t.instanceOf.name||t.instanceOf}`;return`'${o}' must be instanceof ${s} when calling ${e}(), received type: ${ct(r)}.`},INVALID_PARAMETER_RANGE({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' must be one of ${t.values.join("|")} when calling ${e}(), received: ${r}.`},INVALID_PARAMETER_MIN({key:i,rule:t,fnName:e,value:r}){return`the min value of ${i||t.name} is ${t.min}, received: ${r}.`},INVALID_PARAMETER_MAX({key:i,rule:t,fnName:e,value:r}){return`the max value of ${i||t.name} is ${t.max}, received: ${r}.`},API_CALL_TIMEOUT(i){return`${i.commandDesc||i.command} timeout observed.`},SIGNAL_CHANNEL_RECONNECTION_FAILED:"signal channel reconnection failed, please check your network.",SIGNAL_CHANNEL_SETUP_FAILED(i){return`SignalChannel setup failure: (errorCode: ${i.errorCode}, errorMsg: ${i.errorMsg} }).`},ERROR_MESSAGE(i){let t=`${i.type} failed`;return i.message&&(t=`${t}: ${i.message}.`),t},EXCHANGE_SDP_TIMEOUT:"exchange sdp timeout.",DOWNLINK_RECONNECTION_FAILED:"downlink reconnection failed, please check your network and re-join room.",EXCHANGE_SDP_FAILED(i){return`exchange sdp failed ${i.errMsg}.`},UPDATE_OFFER_TIMEOUT:"update offer timeout observed.",UPLINK_RECONNECTION_FAILED:"uplink reconnection failed, please check your network and publish again.",INVALID_RECORDID:"recordId must be an integer number.",INVALID_PURE_AUDIO:"pureAudioPushMode must be 1 or 2.",INVALID_STREAMID:"streamId must be a sting literal within 64 bytes, and not be empty.",INVALID_USER_DEFINE_RECORDID:"userDefineRecordId must be a sting literal contains (a-zA-Z),(0-9), underline and hyphen, within 64 bytes, and not be empty.",INVALID_USER_DEFINE_PUSH_ARGS:"userDefinePushArgs must be a sting literal within 256 bytes, and not be empty.",INVALID_PROXY:'proxy server url must start with "wss://".',INVALID_JOIN:"duplicate join() called.",INVALID_ROOMID_STRING(i){return`'${i}' must be validate string when useStringRoomId is true.`},INVALID_ROOMID_INTEGER(i){return`'${i}' must be an integer between [1, 4294967294] when useStringRoomId is false.`},INVALID_SIGNAL_CHANNEL:"SignalChannel is not ready yet.",JOIN_ROOM_TIMEOUT:"join room timeout.",JOIN_ROOM_FAILED({error:i,code:t}){return`Failed to join room - ${i} code: ${t}`},REJOIN_ROOM_FAILED(i){return`reJoin room: ${i.roomId} failed, please check your network.`},INVALID_DESTROY:"please call leave() before destroy().",INVALID_PUBLISH:"please call join() before publish().",INVALID_UNPUBLISH:"stream has not been published yet.",INVALID_AUDIENCE:'no permission to publish() under live/audience, please call switchRole("anchor") firstly before publish().',INVALID_INITIALIZE:"cannot publish stream because stream is not initialized, is switching device, or has been closed.",INVALID_DUPLICATE_PUBLISHING(i){return`duplicate ${i} stream publishing, please unpublish your prev ${i} stream and then re-publish.`},INVALID_SUBSCRIBE_UNDEFINED:"stream is undefined or null.",INVALID_SUBSCRIBE_LOCAL:"stream cannot be LocalStream.",INVALID_REMOTE_STREAM:"remoteStream does not exist because it has been unpublished by remote peer.",SUBSCRIBE_FAILED({message:i,userId:t,streamType:e}){return`failed to subscribe ${t} ${e} stream, reason: ${i}.`},INVALID_ROLE:"switchRole can only be called in live mode.",INVALID_PARAMETER_SWITCH_ROLE:"role could only be set to a value as anchor or audience.",INVALID_OPERATION_SWITCH_ROLE:"please call join() before switchRole().",SWITCH_ROLE_TIMEOUT:"switchRole timeout.",SWITCH_ROLE_FAILED(i){return`switchRole failed, errCode: ${i.code} errMsg: ${i.message}.`},CLIENT_BANNED(i){return`client was banned because of ${i.message}.`},INVALID_OPERATION_START_PUBLISH_CDN:"please call startPublishCDNStream() after join room and publish the local stream.",INVALID_OPERATION_STOP_PUBLISH_CDN:"please call startPublishCDNStream() before stopPublishCDNStream().",START_PUBLISH_CDN_FAILED(i){return`startPublishCDNStream failed, errMsg: ${i.message}.`},STOP_PUBLISH_CDN_FAILED(i){return`stopPublishCDNStream failed, errMsg: ${i.message}.`},INVALID_STREAM_ID(i){return`'${i}' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.`},START_MIX_TRANSCODE:"please call startMixTranscode() after join().",STOP_MIX_TRANSCODE:"please call stopMixTranscode() after startMixTranscode().",INVALID_AUDIO_VOLUME:"interval must be a number.",ENABLE_SMALL_STREAM_PUBLISHED:"Cannot enable small stream after localStream published.",DISABLE_SMALL_STREAM_PUBLISHED:"Cannot disable small stream after localStream published.",NOT_SUPPORTED_SMALL_STREAM:"your browser does not support opening small stream.",INVALID_SMALL_STREAM_PROFILE:"small stream profile is invalid.",INVALID_PARAMETER_REMOTE_STREAM:"remoteStream is invalid.",INVALID_OPERATION_CHANGE_SMALL:"cannot switch to the small stream without subscribing to the video of remoteStream.",REMOTE_NOT_PUBLISH_SMALL_STREAM:"remote peer does not publish small stream.",INVALID_SWITCH_DEVICE:"cannot switch device on current stream.",INVALID_SWITCH_DEVICE_PUBLISHING:"cannot switch device when publishing localStream.",INVALID_REPLACE_TRACK:"cannot replace track when publishing localStream.",INVALID_INITIALIZE_LOCAL_STREAM:"local stream has not initialized yet.",INVALID_ADD_TRACK_REPETITIVE:"previous addTrack is ongoing, please avoid repetitive execution.",INVALID_ADD_TRACK_REMOVING:"cannot add track when a track is removing.",INVALID_ADD_TRACK_PUBLISHING:"cannot add track when publishing localStream.",INVALID_STREAM_INITIALIZED:"your local stream haven't been initialized yet.",INVALID_ADD_TRACK_NUMBER:"a Stream has at most one audio track and one video track.",INVALID_REMOVE_AUDIO_TRACK:"remove audio track is not supported on your browser.",INVALID_REMOVE_AUDIO_ADDING:"cannot remove track when a track is adding.",INVALID_REMOVE_AUDIO_ON:"previous removeTrack is ongoing, please avoid repetitive execution.",INVALID_REMOVE_TRACK_PUBLISHING:"cannot remove track when publishing localStream.",INVALID_REMOVE_TRACK_NOT_TRACK:"localStream has not this track.",INVALID_REMOVE_TRACK_NUMBER:"remove the only video track is not supported, please use replaceTrack or muteVideo.",INVALID_REPLACE_TRACK_NO_TRACK(i){return`cannot replace ${i.kind} track because stream has not ${i.kind} track`},NOT_BUG_PACKAGE:"You need to buy packages, refer to tencent console.",START_MIX_TRANSCODE_FAILED(i){return`startMixTranscode failed, errMsg: ${i.message}.`},STOP_MIX_TRANSCODE_FAILED(i){return`stopMixTranscode failed, errMsg: ${i.message}.`},MIX_TRANSCODE_NOT_STARTED:"mixTranscode has not been started.",CANNOT_LESS_THAN_ZERO({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' cannot be less than 0 when calling ${e}().`},MIX_PARAMS_VIDEO_FRAMERATE:"'config.videoFramerate' should be an integer between 0 and 30, excluding 0.",MIX_PARAMS_VIDEO_GOP:"'config.videoGOP' should be an integer between 1 and 8.",MIX_PARAMS_AUDIO_BITRATE:"'config.audioBitrate' should be an integer between 32 and 192.",MIX_PARAMS_USER_Z_ORDER(i){return`'${i}' is required and must be between 1 and 15.`},MIX_PARAMS_NOT_SELF:"'config.mixUsers' must contain self.",MIX_PARAMS_USER_STREAM:"'config.videoWidth' and 'config.videoHeight' of output stream should be contain all mix stream.",INVALID_PLAY:"duplicate play() call observed, please stop() firstly.",INVALID_ELEMENT_ID:({key:i,fnName:t})=>`'${i}' is not found in the document object when calling ${t}().`,INVALID_ELEMENT_ID_TYPE:({key:i,fnName:t,type:e})=>`the element corresponding to '${i}' must be instanceof HTMLElement when calling ${t}(), received: ${e}.`,PLAY_FAILED:i=>`${i.media} play failed, browser exception: ${i.error.toString()}`,INVALID_USERID:"userId cannot be all spaces.",INVALID_CREATE_STREAM_SOURCE:"LocalStream must be created by createStream() with either audio/video or audioSource/videoSource, but can not be mixed with audio/video and audioSource/videoSource.",INVALID_CREATE_STREAM_SCREEN:"screen/video cannot be both true.",INVALID_CREATE_STREAM_AUDIO:"audio/screenAudio cannot be both true.",INVALID_CREATE_STREAM_SCREEN_AUDIO:"when screen is true, screenAudio can be configured.",NOT_SUPPORTED_HTTP:"http protocol does not support the ability to capture microphone, camera and screen. please use https to deploy your page.",NOT_SUPPORTED_WEBRTC:"your browser or environment does not support full WebRTC capabilities.",NOT_SUPPORTED_PROFILE:"your browser does not support setVideoProfile.",NOT_SUPPORTED_MEDIA:"your browser or environment does not support navigator.mediaDevices.",NOT_SUPPORTED_H264ENCODE:"your device does not support H.264 encoding.",NOT_SUPPORTED_H264DECODE:"your device does not support H.264 decoding.",NOT_SUPPORTED_TRACK(i){return`${i}Track is not supported on your browser.`},NOT_SUPPORTED_SWITCH_DEVICE:"switchDevice is not supported on your browser.",NOT_SUPPORTED_CAPTURE:"Your browser or environment does not support screen sharing, please check whether the browser version.",MICROPHONE_NOT_FOUND:"no microphone detected, please check your microphone.",CAMERA_NOT_FOUND:"no camera detected, please check your camera.",SIGNAL_RESPONSE_FAILED(i){return`${i.signalResponse} failed, response code is ${i.code} , errMsg: ${i.message}.`},CATCH_HANDLER_ERROR({name:i,event:t}){return`an error was caught in ${i}.on('${t}', handler), please check your code in 'handler'.`},API_NOT_EXIST({name:i}){return`experimental api ${i} does not exist.`},REPEAT_JOIN:i=>"please avoid repeated join.",CONNECTION_CLOSED:"remoteStream has been unsubscribed or unpublished by remote user.",SUBSCRIBE_ALL_FALSE:"cannot subscribe when both audio & video are false, use client.unsubscribe() instead",CLIENT_DESTROYED({funName:i}){return`failed to call ${i}() because client was destroyed.`},SEI_NOT_SUPPORT:i=>`not support to sendSEIMessage${i===!1?" without using h264 codec":""}`,SEI_DISABLED:"SEI is disabled",SEI_BEFORE_PUBLISH:"please call sendSEIMessage() after publish() success",SEI_NOT_VIDEO:"cannot send sei when localStream has not video.",CALL_FREQUENCY_LIMIT:({isSize:i,name:t,timesInSecond:e,maxSizeInSecond:r})=>`api ${t} call ${i?"size":"times"} is over ${i?`${r} bytes`:e} in a second.`,CONNECTION_ABORTED(i){return`connection aborted due to: ${i}`},API_CALL_ABORTED(i){let t;return i.message.includes("REMOTE_STREAM_NOT_EXIST")?t=`Subscribe ${i.userId} ${i.streamType} stream aborted, reason: remote user ${i.userId} unpublished stream.`:t=`API aborted, reason: ${i.message}`,t},DUPLICATE_AUX:"only one auxiliary stream can be published in a room.",NOT_SUPPORTED_AUX:"publish auxiliary stream is not supported on your browser.",INVALID_PARAMETER_STREAMTYPE:i=>`'streamType' is required when 'userId' is not '*', calling ${i}()`};var Dh=(i,t)=>t?`${Pr}/${i}/${t}`:`${Pr}/${i}/index.html`;var h_=()=>{if(window.TRTC_ERROR_INFO&&window.TRTC_ERROR_LINK)return{TRTC_ERROR_INFO:window.TRTC_ERROR_INFO,TRTC_ERROR_LINK:window.TRTC_ERROR_LINK};let i=localStorage==null?void 0:localStorage.getItem(Xu);if(i){i=JSON.parse(i);let t=document.createElement("script");t.type="text/javascript",t.text=i.message,document.body.appendChild(t);let e=window.TRTC_ERROR_INFO,r=window.TRTC_ERROR_LINK;return document.body.removeChild(t),{TRTC_ERROR_INFO:e,TRTC_ERROR_LINK:r}}return{}};function Be(i){let{key:t,data:e,link:r,addDocLink:o=!0}=i,s="",n="",c="";We(Xt[t])?s=Xt[t](e):we(Xt[t])&&(s=Xt[t]);let{TRTC_ERROR_INFO:l,TRTC_ERROR_LINK:m}=h_();r?c=`${r.className}.html#${r.fnName}`:m&&m[t]&&(We(m[t])?c=m[t](e):we(m[t])&&(c=m[t]));let E=s;return Sr()&&(l&&l[t]&&(We(l[t])?n=l[t](e):we(l[t])&&(n=l[t])),n&&(o?E=`${n}
|
|
5
|
+
\u8BF7\u67E5\u770B\u6587\u6863: ${Dh("zh-cn",c)}
|
|
8
6
|
|
|
9
|
-
`:
|
|
7
|
+
`:E=`${n}
|
|
10
8
|
|
|
11
|
-
`,
|
|
12
|
-
Refer to: ${
|
|
13
|
-
`),h}var Gd=$e(Hh(),1);var O_=1,M_=0,da=class{constructor(i=!0){d(this,"countMap",new Map);d(this,"distributionMap",new Map);d(this,"version");d(this,"log",C.createLogger({id:"kv"}));i&&(E.on("102",({track:e,cost:t})=>{this.addSuccessEvent({key:e.kind===p.AUDIO?501700:511700,cost:t})}),E.on("103",({track:e,error:t})=>{this.addFailedEvent({key:e.kind===p.AUDIO?501700:511700,error:t})}))}getReportData(){let i={msg_sdk_basic_info:{uint32_sdk_version:Pn(this.version||xe),uint32_terminal_type:15,bytes_device_name:"",bytes_os_version:"",uint32_framework:30,uint32_network_type:0},stats_count:[...this.countMap.entries()].map(([e,t])=>({uint32_key:e,uint32_count:t})),stats_distribution:[...this.distributionMap.entries()].map(([e,t])=>({uint32_key:e,distribution_items:[...t.entries()].map(([r,s])=>({uint32_item_key:r,uint32_item_value:s}))}))};return this.countMap.clear(),this.distributionMap.clear(),i}clear(){this.countMap.clear(),this.distributionMap.clear()}isEnumKey(i){let e=+String(i).slice(-3);return e>=700&&e<799}isErrorCodeKey(i){let e=+String(i).slice(-3);return e>=600&&e<699}isCountKey(i){let e=+String(i).slice(-3);return e>=0&&e<599}isNumberKey(i){let e=+String(i).slice(-3);return e>=800&&e<899}addCount({key:i,useUV:e=!1}){if(!this.isCountKey(i)){this.log.debug(`${i} is not count key, last 3 number should be 0~599`);return}e&&this.countMap.has(i)||this.countMap.set(i,(this.countMap.get(i)||0)+1)}addEnum({key:i,value:e,useUV:t=!0}){var s;if(!this.isEnumKey(i))return this.log.debug(`${i} is not enum key, last 3 number should be 700~799`);if(t&&this.countMap.has(i))return;this.countMap.set(i,(this.countMap.get(i)||0)+1);let r=((s=this.distributionMap)==null?void 0:s.get(i))||new Map;r.set(e,(r.get(e)||0)+1),this.distributionMap.set(i,r)}addNumber({key:i,value:e,split:t=100,useUV:r=!1,max:s=5e3}){var c;if(!this.isNumberKey(i))return this.log.debug(`${i} is not number key, last 3 number should be 800~899`);if(r&&this.countMap.has(i))return;e>s&&(e=s),this.countMap.set(i,(this.countMap.get(i)||0)+1);let n=((c=this.distributionMap)==null?void 0:c.get(i))||new Map,a=0;if(j(t))a=Math.floor(e/t);else for(let l=t.length-1;l>0;l--)if(e>t[l]){a=l;break}n.set(a,(n.get(a)||0)+1),this.distributionMap.set(i,n)}addSuccessEvent({key:i,cost:e,timeKey:t,split:r}){if(i&&(this.addEnum({key:i,value:O_,useUV:!1}),e)){let s=+String(i).slice(-3);s<800&&s>=700?this.addNumber({key:t||i+100,value:e,split:r}):t||this.log.debug(`time stat ignored, ${i}`)}}addFailedEvent({key:i,error:e}){if(!i)return;let t=I.UNKNOWN;e&&(j(e)?t=e:(!T(e.extraCode)||!T(e.code))&&(t=e.extraCode||e.code)),this.addEnum({key:i,value:M_,useUV:!1}),this.addEnum({key:i,value:Math.abs(t),useUV:!1})}},la=(J=>(J[J.enterRoom=500700]="enterRoom",J[J.exitRoom=500701]="exitRoom",J[J.switchRole=500702]="switchRole",J[J.destroy=500703]="destroy",J[J.startLocalAudio=500704]="startLocalAudio",J[J.updateLocalAudio=500705]="updateLocalAudio",J[J.stopLocalAudio=500706]="stopLocalAudio",J[J.startLocalVideo=500707]="startLocalVideo",J[J.updateLocalVideo=500708]="updateLocalVideo",J[J.stopLocalVideo=500709]="stopLocalVideo",J[J.startScreenShare=500710]="startScreenShare",J[J.updateScreenShare=500711]="updateScreenShare",J[J.stopScreenShare=500712]="stopScreenShare",J[J.startRemoteVideo=500713]="startRemoteVideo",J[J.updateRemoteVideo=500714]="updateRemoteVideo",J[J.stopRemoteVideo=500715]="stopRemoteVideo",J[J.muteRemoteAudio=500716]="muteRemoteAudio",J[J.setRemoteAudioVolume=500717]="setRemoteAudioVolume",J[J.use=500718]="use",J[J.switchRoom=500719]="switchRoom",J[J.sendSEIMessage=5e5]="sendSEIMessage",J[J.sendCustomMessage=500001]="sendCustomMessage",J))(la||{}),Fd=(m=>(m[m.AudioMixer=550700]="AudioMixer",m[m.AIDenoiser=551700]="AIDenoiser",m[m.VirtualBackground=570700]="VirtualBackground",m[m.Beauty=571700]="Beauty",m[m.Watermark=572700]="Watermark",m[m.BasicBeauty=574700]="BasicBeauty",m[m.CDNStreaming=590700]="CDNStreaming",m[m.DeviceDetector=591700]="DeviceDetector",m[m.Debug=592700]="Debug",m[m.SmallStreamAutoSwitcher=593700]="SmallStreamAutoSwitcher",m[m.VideoMixer=594700]="VideoMixer",m[m.AudioProcessor=595700]="AudioProcessor",m))(Fd||{}),$d=(m=>(m[m.AudioMixer=550701]="AudioMixer",m[m.AIDenoiser=551701]="AIDenoiser",m[m.VirtualBackground=570701]="VirtualBackground",m[m.Beauty=571701]="Beauty",m[m.Watermark=572701]="Watermark",m[m.BasicBeauty=574701]="BasicBeauty",m[m.CDNStreaming=590701]="CDNStreaming",m[m.DeviceDetector=591701]="DeviceDetector",m[m.Debug=592701]="Debug",m[m.SmallStreamAutoSwitcher=593701]="SmallStreamAutoSwitcher",m[m.VideoMixer=594701]="VideoMixer",m[m.AudioProcessor=595701]="AudioProcessor",m))($d||{}),Hd=(m=>(m[m.AudioMixer=550702]="AudioMixer",m[m.AIDenoiser=551702]="AIDenoiser",m[m.VirtualBackground=570702]="VirtualBackground",m[m.Beauty=571702]="Beauty",m[m.Watermark=572702]="Watermark",m[m.BasicBeauty=574702]="BasicBeauty",m[m.CDNStreaming=590702]="CDNStreaming",m[m.DeviceDetector=591702]="DeviceDetector",m[m.Debug=592702]="Debug",m[m.SmallStreamAutoSwitcher=593702]="SmallStreamAutoSwitcher",m[m.VideoMixer=594702]="VideoMixer",m[m.AudioProcessor=595702]="AudioProcessor",m))(Hd||{});var k_=new da(!0),Lr=new da(!1);var b=k_;var oe={result:!1,detail:{isBrowserSupported:!1,isWebRTCSupported:!1,isWebCodecsSupported:!1,isMediaDevicesSupported:!1,isScreenShareSupported:!1,isSmallStreamSupported:!1,isH264EncodeSupported:!1,isVp8EncodeSupported:!1,isH264DecodeSupported:!1,isVp8DecodeSupported:!1}},x_=new Map([[ae,["Firefox",Bn]],[go,["Edg",$n]],[Ro,["Chrome",ta]],[Pe,["Safari",Mi]],[wt,["TBS",Wn]],[To,["XWEB",Jn]],[Eo&&sr,["WeChat",jn]],[_s,["QQ(Win)",qn]],[Io,["QQ(Mobile)",po]],[So,["QQ(Mobile X5)",po]],[gs,["QQ(Mac)",Xn]],[Ts,["QQ(iPad)",zn]],[Ss,["MI",Qn]],[Is,["HW",Yn]],[As,["Samsung",Zn]],[Rs,["OPPO",Kn]],[Cs,["VIVO",ea]],[vr,["EDGE",Fn]],[ps,["SogouMobile",Hn]],[fs,["Sogou",Gn]]]);function P_(){let o=x_.get(!0),i=o?o[0]:"unknown",e=o?o[1]:"unknown";return{browserName:i,browserVersion:e}}var Jd=function(){return!(md||vr||go&&ud<80||ae&&_o<56)},Wh=function(){return["VideoDecoder","VideoEncoder","AudioEncoder","AudioDecoder"].every(i=>i in window)},ha=function(){if(!navigator.mediaDevices)return wi()||C.error(Ue.NOT_SUPPORTED_MEDIA),!1;let o=["getUserMedia","enumerateDevices"];return o.filter(i=>i in navigator.mediaDevices).length===o.length},Gh=!1;function wi(){return location.protocol==="http:"&&!Ut?(Gh||C.error(P({key:x.NOT_SUPPORTED_HTTP})),Gh=!0,!0):!1}var ks=function(){return(window==null?void 0:window.OffscreenCanvas)&&(window==null?void 0:window.MediaStreamTrackProcessor)&&(window==null?void 0:window.MediaStreamTrackGenerator)},Wd=function(){return f(this,null,function*(){if(oe.detail.isH264EncodeSupported&&oe.detail.isVp8EncodeSupported)return{isH264EncodeSupported:oe.detail.isH264EncodeSupported,isVp8EncodeSupported:oe.detail.isVp8EncodeSupported};let o,i=!1,e=!1;try{let t=new RTCPeerConnection,r=document.createElement(p.CANVAS);r.getContext("2d");let s=r.captureStream(0);return t.addTrack(s.getVideoTracks()[0],s),o=yield t.createOffer(),o.sdp.toLowerCase().indexOf("h264")!==-1&&(i=!0),o.sdp.toLowerCase().indexOf("vp8")!==-1&&(e=!0),t.close(),oe.detail.isH264EncodeSupported=i,oe.detail.isVp8EncodeSupported=e,{isH264EncodeSupported:oe.detail.isH264EncodeSupported,isVp8EncodeSupported:oe.detail.isVp8EncodeSupported}}catch(t){return{isH264EncodeSupported:!1,isVp8EncodeSupported:!1}}})},ma=function(){return f(this,null,function*(){if(oe.detail.isH264DecodeSupported&&oe.detail.isVp8DecodeSupported)return{isH264DecodeSupported:oe.detail.isH264DecodeSupported,isVp8DecodeSupported:oe.detail.isVp8DecodeSupported};let o,i=!1,e=!1;try{let t=new RTCPeerConnection;return ct()?(t.addTransceiver(p.VIDEO,{direction:"recvonly"}),o=yield t.createOffer()):o=yield t.createOffer({offerToReceiveVideo:!0}),o.sdp.toLowerCase().indexOf("h264")!==-1&&(i=!0),o.sdp.toLowerCase().indexOf("vp8")!==-1&&(e=!0),t.close(),{isH264DecodeSupported:i,isVp8DecodeSupported:e}}catch(t){return{isH264DecodeSupported:!1,isVp8DecodeSupported:!1}}})},pa=Ln(()=>f(void 0,null,function*(){if(oe.result&&oe.detail.isH264EncodeSupported&&oe.detail.isVp8EncodeSupported&&oe.detail.isH264DecodeSupported&&oe.detail.isVp8DecodeSupported)return oe;let o=Date.now(),i=Jd(),e=zd(),t=Wh(),r=ha(),[{isH264EncodeSupported:s,isVp8EncodeSupported:n},{isH264DecodeSupported:a,isVp8DecodeSupported:c}]=yield Promise.all([Wd(),ma()]);if(!s||!n){let l=yield Wd();C.warn(`detect encode again h264:${s} vp8:${n} result: ${JSON.stringify(l)}`),s=l.isH264EncodeSupported,n=l.isVp8EncodeSupported}if(s&&a&&pe&&Ze&&!To&&!wt){let{encode:l,decode:h}=yield w_();s=l,a=h}return oe.result=i&&e&&r&&(s||n)&&(a||c),oe.detail.isBrowserSupported=i,oe.detail.isWebRTCSupported=e,oe.detail.isWebCodecsSupported=t,oe.detail.isMediaDevicesSupported=r,oe.detail.isScreenShareSupported=xs(),oe.detail.isSmallStreamSupported=_a(),oe.detail.isH264EncodeSupported=s,oe.detail.isVp8EncodeSupported=n,oe.detail.isH264DecodeSupported=a,oe.detail.isVp8DecodeSupported=c,oe.result||C.error(`${navigator.userAgent} ${xn(oe.detail,!1)}`),H_(),b.addNumber({key:523800,value:Date.now()-o}),oe})),L_=function(){return oe.result},xs=function(){return!!(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia)},ua=null;function w_(){return f(this,null,function*(){return ua||(ua=new Promise(o=>f(this,null,function*(){let i={encode:!1,decode:!1},e=()=>{};try{let t=document.createElement("canvas"),r=t.getContext("2d");t.width=320,t.height=240;let s=setInterval(()=>{r.fillText("test",Math.floor(Math.random()*320),Math.floor(Math.random()*240))},66),n=-1,a=-1;e=()=>{clearInterval(n),clearInterval(s),clearTimeout(a),l.close(),h.close(),c.getTracks().forEach(_=>_.stop())},a=setTimeout(()=>{e(),o(i)},2*1e3);let c=t.captureStream(),l=new RTCPeerConnection({}),h=new RTCPeerConnection({offerToReceiveAudio:!0,offerToReceiveVideo:!0});l.addEventListener("icecandidate",_=>h.addIceCandidate(_.candidate)),h.addEventListener("icecandidate",_=>l.addIceCandidate(_.candidate)),l.addTrack(c.getVideoTracks()[0],c);let u=yield l.createOffer();yield l.setLocalDescription(u),yield h.setRemoteDescription(u);let m=yield h.createAnswer(),g=Gd.default.parse(m.sdp),D=g.media[0].rtp.findIndex(_=>_.codec==="H264");g.media[0].rtp=[g.media[0].rtp[D]],g.media[0].fmtp=g.media[0].fmtp.filter(_=>_.payload===g.media[0].rtp[0].payload),g.media[0].rtcpFb&&(g.media[0].rtcpFb=g.media[0].rtcpFb.filter(_=>_.payload===g.media[0].rtp[0].payload)),m.sdp=Gd.default.write(g),yield h.setLocalDescription(m),yield l.setRemoteDescription(m),n=setInterval(()=>f(this,null,function*(){i.encode&&i.decode&&(e(),o(i));let[_,S]=yield Promise.all([l.getSenders()[0].getStats(),h.getReceivers()[0].getStats()]);i.encode||_.forEach(O=>{O.type==="outbound-rtp"&&O.mediaType===p.VIDEO&&O.bytesSent>0&&(i.encode=!0)}),i.decode||S.forEach(O=>{O.type==="inbound-rtp"&&O.mediaType===p.VIDEO&&O.bytesReceived>0&&(i.decode=!0)})}),100)}catch(t){e(),C.warn("detectH264Supported failed",t),o({encode:!0,decode:!0})}})).then(o=>(o.encode||(o.decode=!0),(!o.encode||!o.decode)&&C.warn(`detectH264Supported encode: ${o.encode} decode: ${o.decode} ${Pt}`),o)),ua)})}var V_=(o,i,e)=>{location.protocol==="http:"&&!Ut&&(o[i]=()=>{throw new y({code:I.INVALID_OPERATION,message:Ue.NOT_SUPPORTED_HTTP})})},cr=function(o){return o.type==="candidate-pair"&&o.nominated&&(o.state==="in-progress"||o.state==="succeeded")?!(me(o.selected)&&!o.selected):!1};function Jh(){let o="";if(screen.width){let i=screen.width?screen.width*window.devicePixelRatio:"",e=screen.height?screen.height*window.devicePixelRatio:"";o+=`${i} * ${e}`}return o}function jh(){return navigator.getUserMedia||navigator.mediaDevices&&navigator.mediaDevices.getUserMedia}function qh(){let o={isSupported:!1},i=["AudioContext","webkitAudioContext","mozAudioContext","msAudioContext"];for(let e=0;e<i.length;e++)if(i[e]in window){o.isSupported=!0;break}return o.isSupported}function Xh(){return"captureStream"in HTMLCanvasElement.prototype}function fa(){return Eo||Ie||st&&st<63?!1:!!(Jd()&&Xh())}function zh(){return!(st<74||vr||nt<11||_o<46)}function _a(){return fa()||zh()}var U_=function(){if(T(window.RTCRtpTransceiver)||!ct()||!("currentDirection"in RTCRtpTransceiver.prototype))return!1;let o=null,i=!1;try{o=new RTCPeerConnection({sdpSemantics:rr}),o.addTransceiver(p.AUDIO),i=!0}catch(e){}return o==null||o.close(),i};function wr(){return"RTCPeerConnection"in window&&"getReceivers"in window.RTCPeerConnection.prototype}function dr(){return"RTCPeerConnection"in window&&"getSenders"in window.RTCPeerConnection.prototype}function oi(){return"RTCPeerConnection"in window&&"getTransceivers"in window.RTCPeerConnection.prototype}function ct(){return nt===11&&!Id?!1:"RTCPeerConnection"in window&&"addTransceiver"in window.RTCPeerConnection.prototype}var vo=!(!ct()||Ze&&st<86);function B_(){return"RTCRtpTransceiver"in window&&"stop"in window.RTCRtpTransceiver.prototype}var Ps="RTCRtpSender"in window;function jd(){return Ps&&"replaceTrack"in window.RTCRtpSender.prototype}function Ls(){return Ps&&"setParameters"in window.RTCRtpSender.prototype&&dr()}var qd="RTCRtpReceiver"in window&&"getSynchronizationSources"in window.RTCRtpReceiver.prototype,si=window.MediaStreamTrack&&"getSettings"in MediaStreamTrack.prototype,Xd=window.MediaStreamTrack&&"getCapabilities"in MediaStreamTrack.prototype,Vi=Ps&&"createEncodedStreams"in window.RTCRtpSender.prototype&&Ao()>=86,Do="RTCRtpScriptTransform"in window,ws=Ps&&(Vi||Do),zd=function(){return["RTCPeerConnection","webkitRTCPeerConnection","RTCIceGatherer"].filter(i=>i in window).length>0};function Qh(){let o={AudioDecoder:!1,AudioEncoder:!1,VideoDecoder:!1,VideoEncoder:!1,ImageDecoder:!1};return T(window.AudioDecoder)||(o.AudioDecoder=!0),T(window.AudioEncoder)||(o.AudioEncoder=!0),T(window.VideoDecoder)||(o.VideoDecoder=!0),T(window.VideoEncoder)||(o.VideoEncoder=!0),T(window.ImageDecoder)||(o.ImageDecoder=!0),o}function Yh(){return"mediaSession"in navigator&&!T(navigator.mediaSession.setActionHandler)}function Zh(){return!T(window.WebTransport)}function F_(){return typeof WebAssembly=="undefined"?!1:WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]))}function $_(){let o={browser:`${Zt.name}/${Zt.version}`,os:ia(),displayResolution:Jh(),isScreenShareSupported:xs(),isWebRTCSupported:zd(),isGetUserMediaSupported:jh(),isWebAudioSupported:qh(),isWebSocketsSupported:"WebSocket"in window&&window.WebSocket.CLOSING===2,isWebCodecSupported:Qh(),isMediaSessionSupported:Yh(),isWebTransportSupported:Zh()};return navigator.userAgent.includes("miniProgram")&&(o.browser=`mini/${o.browser}`),o}var Kh="checkResult";function H_(){yo.setItem(Kh,{ua:navigator.userAgent,checkResult:oe})}function Qd(){wi();let o=yo.getItem(Kh);o&&o.ua===navigator.userAgent&&o.checkResult&&G_(o.checkResult.detail,oe.detail)&&(oe=o.checkResult),pa()}function G_(o,i){return ht(o)?Object.keys(i).every(e=>e in o):!1}function Vr(){return"requestVideoFrameCallback"in HTMLVideoElement.prototype}var ga="RTCRtpReceiver"in window&&"jitterBufferTarget"in window.RTCRtpReceiver.prototype;var tm=$e(Ye(),1);var em=Symbol("instance"),oI=Symbol("abortCtrl"),Ta=Symbol("cacheResult"),Vs=class{constructor(i,e,t){this.oldState=i,this.newState=e,this.action=t,this.aborted=!1}abort(i){this.aborted=!0,Fs.call(i,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},Us=class extends Error{constructor(i,e,t){super(e),this.state=i,this.message=e,this.cause=t}};function W_(o){return typeof o=="object"&&o&&"then"in o}var Bs=new Map;function Te(o,i,e={}){return(t,r,s)=>{let n=e.action||r;if(!e.context){let c=Bs.get(t)||[];Bs.has(t)||Bs.set(t,c),c.push({from:o,to:i,action:n})}let a=s.value;s.value=function(...c){let l=this;if(e.context&&(l=H.get(typeof e.context=="function"?e.context.call(this,...c):e.context)),l.state===i)return e.sync?l[Ta]:Promise.resolve(l[Ta]);l.state instanceof Vs&&l.state.action==e.abortAction&&l.state.abort(l);let h=null;Array.isArray(o)?o.length==0?l.state instanceof Vs&&l.state.abort(l):(typeof l.state!="string"||!o.includes(l.state))&&(h=new Us(l._state,`${l.name} ${n} to ${i} failed: current state ${l._state} not from ${o.join("|")}`)):o!==l.state&&(h=new Us(l._state,`${l.name} ${n} to ${i} failed: current state ${l._state} not from ${o}`));let u=S=>{if(e.fail&&e.fail.call(this,S),e.sync){if(e.ignoreError)return S;throw S}else return e.ignoreError?Promise.resolve(S):Promise.reject(S)};if(h)return u(h);let m=l.state,g=new Vs(m,i,n);Fs.call(l,g);let D=S=>{var O;return l[Ta]=S,g.aborted||(Fs.call(l,i),(O=e.success)===null||O===void 0||O.call(this,l[Ta])),S},_=S=>(Fs.call(l,m,S),u(S));try{let S=a.apply(this,c);return W_(S)?S.then(D).catch(_):e.sync?D(S):Promise.resolve(D(S))}catch(S){return _(new Us(l._state,`${l.name} ${n} from ${o} to ${i} failed: ${S}`,S instanceof Error?S:new Error(String(S))))}}}}var J_=typeof window!="undefined"&&window.__AFSM__?(e,t)=>{window.dispatchEvent(new CustomEvent(e,{detail:t}))}:typeof importScripts!="undefined"?(e,t)=>{postMessage({type:e,payload:t})}:()=>{};function Fs(o,i){let e=this._state;this._state=o;let t=o.toString();o&&this.emit(t,e),this.emit(H.STATECHANGED,o,e,i),this.updateDevTools({value:o,old:e,err:i instanceof Error?i.message:String(i)})}var H=class o extends tm.default{constructor(i,e,t){super(),this.name=i,this.groupName=e,this._state=o.INIT,i||(i=Date.now().toString(36)),t?Object.setPrototypeOf(this,t):t=Object.getPrototypeOf(this),e||(this.groupName=this.constructor.name);let r=t[em];r?this.name=r.name+"-"+r.count++:t[em]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){let i=Object.getPrototypeOf(this),e=Bs.get(i)||[],t=new Set,r=[],s=[],n=new Set,a=Object.getPrototypeOf(i);Bs.has(a)&&(a.stateDiagram.forEach(l=>t.add(l)),a.allStates.forEach(l=>n.add(l))),e.forEach(({from:l,to:h,action:u})=>{typeof l=="string"?r.push({from:l,to:h,action:u}):l.length?l.forEach(m=>{r.push({from:m,to:h,action:u})}):s.push({to:h,action:u})}),r.forEach(({from:l,to:h,action:u})=>{n.add(l),n.add(h),n.add(u+"ing"),t.add(`${l} --> ${u}ing : ${u}`),t.add(`${u}ing --> ${h} : ${u} \u{1F7E2}`),t.add(`${u}ing --> ${l} : ${u} \u{1F534}`)}),s.forEach(({to:l,action:h})=>{t.add(`${h}ing --> ${l} : ${h} \u{1F7E2}`),n.forEach(u=>{u!==l&&t.add(`${u} --> ${h}ing : ${h}`)})});let c=[...t];return Object.defineProperties(i,{stateDiagram:{value:c},allStates:{value:n}}),c}static get(i){let e;return typeof i=="string"?(e=o.instances.get(i),e||o.instances.set(i,e=new o(i,void 0,Object.create(o.prototype)))):(e=o.instances2.get(i),e||o.instances2.set(i,e=new o(i.constructor.name,void 0,Object.create(o.prototype)))),e}static getState(i){var e;return(e=o.get(i))===null||e===void 0?void 0:e.state}updateDevTools(i={}){J_(o.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},i))}get state(){return this._state}set state(i){Fs.call(this,i)}};H.STATECHANGED="stateChanged";H.UPDATEAFSM="updateAFSM";H.INIT="[*]";H.ON="on";H.OFF="off";H.instances=new Map;H.instances2=new WeakMap;var Zd=typeof window!="undefined",im=Zd&&window.requestIdleCallback||function(o){let i=Date.now();return setTimeout(()=>{o({didTimeout:!1,timeRemaining(){return Math.max(0,50-(Date.now()-i))}})},1e3)},j_=Zd&&window.cancelIdleCallback||function(o){clearTimeout(o)},rm=Zd&&(window.cancelAnimationFrame||window.mozCancelAnimationFrame),Me=class Me{static generateTaskID(){return this.currentTaskID++}static run(i,e,t){t!=null&&t.fps&&(t.delay=t.delay||Number((1e3/t.fps).toFixed(2))),i==="interval"?t=N({delay:2e3,count:0,backgroundTask:!0},t):i==="ric"?t=N({delay:1e4,count:0},t):i==="raf"?t=N({fps:60,delay:16.6,count:0,backgroundTask:!0},t):t=N({delay:2e3,count:0,backgroundTask:!0},t);let r=L(N({taskID:this.generateTaskID(),loopCount:0,intervalID:null,timeoutID:null,rafID:null,ricID:null,taskName:i,callback:e},t),{delay:t.delay});return this.taskMap.set(r.taskID,r),this[i](r),r.taskID}static interval(i){let e=()=>{i.callback(),i.loopCount+=1,Me.isBreakLoop(i)};return i.intervalID=setInterval(e,i.delay)}static intervalInWorker(i){Me.sharedWorker||(Me.sharedWorker=new Worker(URL.createObjectURL(new Blob([`
|
|
9
|
+
`,E+=s)),o&&(E+=`
|
|
10
|
+
Refer to: ${Dh("en",c)}
|
|
11
|
+
`),E}var Wl=Wi(Uh(),1);var b_=1,R_=0,td=class{constructor(t=!0){u(this,"countMap",new Map);u(this,"distributionMap",new Map);u(this,"version");u(this,"log",$.createLogger({id:"kv"}));t&&(V.on("102",({track:e,cost:r})=>{this.addSuccessEvent({key:e.kind===N.AUDIO?501700:511700,cost:r})}),V.on("103",({track:e,error:r})=>{this.addFailedEvent({key:e.kind===N.AUDIO?501700:511700,error:r})}))}getReportData(){let t={msg_sdk_basic_info:{uint32_sdk_version:yc(this.version||at),uint32_terminal_type:15,bytes_device_name:"",bytes_os_version:"",uint32_framework:30,uint32_network_type:0},stats_count:[...this.countMap.entries()].map(([e,r])=>({uint32_key:e,uint32_count:r})),stats_distribution:[...this.distributionMap.entries()].map(([e,r])=>({uint32_key:e,distribution_items:[...r.entries()].map(([o,s])=>({uint32_item_key:o,uint32_item_value:s}))}))};return this.countMap.clear(),this.distributionMap.clear(),t}clear(){this.countMap.clear(),this.distributionMap.clear()}isEnumKey(t){let e=+String(t).slice(-3);return e>=700&&e<799}isErrorCodeKey(t){let e=+String(t).slice(-3);return e>=600&&e<699}isCountKey(t){let e=+String(t).slice(-3);return e>=0&&e<599}isNumberKey(t){let e=+String(t).slice(-3);return e>=800&&e<899}addCount({key:t,useUV:e=!1}){if(!this.isCountKey(t)){this.log.debug(`${t} is not count key, last 3 number should be 0~599`);return}e&&this.countMap.has(t)||this.countMap.set(t,(this.countMap.get(t)||0)+1)}addEnum({key:t,value:e,useUV:r=!0}){var s;if(!this.isEnumKey(t))return this.log.debug(`${t} is not enum key, last 3 number should be 700~799`);if(r&&this.countMap.has(t))return;this.countMap.set(t,(this.countMap.get(t)||0)+1);let o=((s=this.distributionMap)==null?void 0:s.get(t))||new Map;o.set(e,(o.get(e)||0)+1),this.distributionMap.set(t,o)}addNumber({key:t,value:e,split:r=100,useUV:o=!1,max:s=5e3}){var l;if(!this.isNumberKey(t))return this.log.debug(`${t} is not number key, last 3 number should be 800~899`);if(o&&this.countMap.has(t))return;e>s&&(e=s),this.countMap.set(t,(this.countMap.get(t)||0)+1);let n=((l=this.distributionMap)==null?void 0:l.get(t))||new Map,c=0;if(Pe(r))c=Math.floor(e/r);else for(let m=r.length-1;m>0;m--)if(e>r[m]){c=m;break}n.set(c,(n.get(c)||0)+1),this.distributionMap.set(t,n)}addSuccessEvent({key:t,cost:e,timeKey:r,split:o}){if(t&&(this.addEnum({key:t,value:b_,useUV:!1}),e)){let s=+String(t).slice(-3);s<800&&s>=700?this.addNumber({key:r||t+100,value:e,split:o}):r||this.log.debug(`time stat ignored, ${t}`)}}addFailedEvent({key:t,error:e}){if(!t)return;let r=J.UNKNOWN;e&&(Pe(e)?r=e:(!P(e.extraCode)||!P(e.code))&&(r=e.extraCode||e.code)),this.addEnum({key:t,value:R_,useUV:!1}),this.addEnum({key:t,value:Math.abs(r),useUV:!1})}},rd=(X=>(X[X.enterRoom=500700]="enterRoom",X[X.exitRoom=500701]="exitRoom",X[X.switchRole=500702]="switchRole",X[X.destroy=500703]="destroy",X[X.startLocalAudio=500704]="startLocalAudio",X[X.updateLocalAudio=500705]="updateLocalAudio",X[X.stopLocalAudio=500706]="stopLocalAudio",X[X.startLocalVideo=500707]="startLocalVideo",X[X.updateLocalVideo=500708]="updateLocalVideo",X[X.stopLocalVideo=500709]="stopLocalVideo",X[X.startScreenShare=500710]="startScreenShare",X[X.updateScreenShare=500711]="updateScreenShare",X[X.stopScreenShare=500712]="stopScreenShare",X[X.startRemoteVideo=500713]="startRemoteVideo",X[X.updateRemoteVideo=500714]="updateRemoteVideo",X[X.stopRemoteVideo=500715]="stopRemoteVideo",X[X.muteRemoteAudio=500716]="muteRemoteAudio",X[X.setRemoteAudioVolume=500717]="setRemoteAudioVolume",X[X.use=500718]="use",X[X.switchRoom=500719]="switchRoom",X[X.sendSEIMessage=5e5]="sendSEIMessage",X[X.sendCustomMessage=500001]="sendCustomMessage",X))(rd||{}),$l=(_=>(_[_.AudioMixer=550700]="AudioMixer",_[_.AIDenoiser=551700]="AIDenoiser",_[_.VirtualBackground=570700]="VirtualBackground",_[_.Beauty=571700]="Beauty",_[_.Watermark=572700]="Watermark",_[_.BasicBeauty=574700]="BasicBeauty",_[_.CDNStreaming=590700]="CDNStreaming",_[_.DeviceDetector=591700]="DeviceDetector",_[_.Debug=592700]="Debug",_[_.SmallStreamAutoSwitcher=593700]="SmallStreamAutoSwitcher",_[_.VideoMixer=594700]="VideoMixer",_[_.AudioProcessor=595700]="AudioProcessor",_))($l||{}),Bl=(_=>(_[_.AudioMixer=550701]="AudioMixer",_[_.AIDenoiser=551701]="AIDenoiser",_[_.VirtualBackground=570701]="VirtualBackground",_[_.Beauty=571701]="Beauty",_[_.Watermark=572701]="Watermark",_[_.BasicBeauty=574701]="BasicBeauty",_[_.CDNStreaming=590701]="CDNStreaming",_[_.DeviceDetector=591701]="DeviceDetector",_[_.Debug=592701]="Debug",_[_.SmallStreamAutoSwitcher=593701]="SmallStreamAutoSwitcher",_[_.VideoMixer=594701]="VideoMixer",_[_.AudioProcessor=595701]="AudioProcessor",_))(Bl||{}),Hl=(_=>(_[_.AudioMixer=550702]="AudioMixer",_[_.AIDenoiser=551702]="AIDenoiser",_[_.VirtualBackground=570702]="VirtualBackground",_[_.Beauty=571702]="Beauty",_[_.Watermark=572702]="Watermark",_[_.BasicBeauty=574702]="BasicBeauty",_[_.CDNStreaming=590702]="CDNStreaming",_[_.DeviceDetector=591702]="DeviceDetector",_[_.Debug=592702]="Debug",_[_.SmallStreamAutoSwitcher=593702]="SmallStreamAutoSwitcher",_[_.VideoMixer=594702]="VideoMixer",_[_.AudioProcessor=595702]="AudioProcessor",_))(Hl||{});var v_=new td(!0),jo=new td(!1);var Q=v_;var ke={result:!1,detail:{isBrowserSupported:!1,isWebRTCSupported:!1,isWebCodecsSupported:!1,isMediaDevicesSupported:!1,isScreenShareSupported:!1,isSmallStreamSupported:!1,isH264EncodeSupported:!1,isVp8EncodeSupported:!1,isH264DecodeSupported:!1,isVp8DecodeSupported:!1}},C_=new Map([[Ht,["Firefox",Cc]],[Ps,["Edg",Mc]],[Fs,["Chrome",jc]],[It,["Safari",ai]],[yr,["TBS",xc]],[ks,["XWEB",Pc]],[Ls&&zi,["WeChat",kc]],[Bn,["QQ(Win)",Lc]],[Vs,["QQ(Mobile)",Os]],[Us,["QQ(Mobile X5)",Os]],[Hn,["QQ(Mac)",Uc]],[Wn,["QQ(iPad)",Vc]],[jn,["MI",Fc]],[qn,["HW",$c]],[Jn,["Samsung",Bc]],[zn,["OPPO",Hc]],[Xn,["VIVO",Wc]],[Uo,["EDGE",Dc]],[Fn,["SogouMobile",wc]],[$n,["Sogou",Oc]]]);function od(){let i=C_.get(!0),t=i?i[0]:"unknown",e=i?i[1]:"unknown";return{browserName:t,browserVersion:e}}var jl=function(){return!(ml||Uo||Ps&&ul<80||Ht&&Nc<56)},Fh=function(){return["VideoDecoder","VideoEncoder","AudioEncoder","AudioDecoder"].every(t=>t in window)},sd=function(){if(!navigator.mediaDevices)return hi()||$.error(Xt.NOT_SUPPORTED_MEDIA),!1;let i=["getUserMedia","enumerateDevices"];return i.filter(t=>t in navigator.mediaDevices).length===i.length},Vh=!1;function hi(){return location.protocol==="http:"&&!Rr?(Vh||$.error(Be({key:$e.NOT_SUPPORTED_HTTP})),Vh=!0,!0):!1}var ql=function(){return(window==null?void 0:window.OffscreenCanvas)&&(window==null?void 0:window.MediaStreamTrackProcessor)&&(window==null?void 0:window.MediaStreamTrackGenerator)},Gl=function(){return A(this,null,function*(){if(ke.detail.isH264EncodeSupported&&ke.detail.isVp8EncodeSupported)return{isH264EncodeSupported:ke.detail.isH264EncodeSupported,isVp8EncodeSupported:ke.detail.isVp8EncodeSupported};let i,t=!1,e=!1;try{let r=new RTCPeerConnection,o=document.createElement(N.CANVAS);o.getContext("2d");let s=o.captureStream(0);return r.addTrack(s.getVideoTracks()[0],s),i=yield r.createOffer(),i.sdp.toLowerCase().indexOf("h264")!==-1&&(t=!0),i.sdp.toLowerCase().indexOf("vp8")!==-1&&(e=!0),r.close(),ke.detail.isH264EncodeSupported=t,ke.detail.isVp8EncodeSupported=e,{isH264EncodeSupported:ke.detail.isH264EncodeSupported,isVp8EncodeSupported:ke.detail.isVp8EncodeSupported}}catch(r){return{isH264EncodeSupported:!1,isVp8EncodeSupported:!1}}})},$h=function(){return A(this,null,function*(){if(ke.detail.isH264DecodeSupported&&ke.detail.isVp8DecodeSupported)return{isH264DecodeSupported:ke.detail.isH264DecodeSupported,isVp8DecodeSupported:ke.detail.isVp8DecodeSupported};let i,t=!1,e=!1;try{let r=new RTCPeerConnection;return cd()?(r.addTransceiver(N.VIDEO,{direction:"recvonly"}),i=yield r.createOffer()):i=yield r.createOffer({offerToReceiveVideo:!0}),i.sdp.toLowerCase().indexOf("h264")!==-1&&(t=!0),i.sdp.toLowerCase().indexOf("vp8")!==-1&&(e=!0),r.close(),{isH264DecodeSupported:t,isVp8DecodeSupported:e}}catch(r){return{isH264DecodeSupported:!1,isVp8DecodeSupported:!1}}})},nd=bc(()=>A(void 0,null,function*(){if(ke.result&&ke.detail.isH264EncodeSupported&&ke.detail.isVp8EncodeSupported&&ke.detail.isH264DecodeSupported&&ke.detail.isVp8DecodeSupported)return ke;let i=Date.now(),t=jl(),e=zl(),r=Fh(),o=sd(),[{isH264EncodeSupported:s,isVp8EncodeSupported:n},{isH264DecodeSupported:c,isVp8DecodeSupported:l}]=yield Promise.all([Gl(),$h()]);if(!s||!n){let m=yield Gl();$.warn(`detect encode again h264:${s} vp8:${n} result: ${JSON.stringify(m)}`),s=m.isH264EncodeSupported,n=m.isVp8EncodeSupported}if(s&&c&&mt&&ni&&!ks&&!yr){let{encode:m,decode:E}=yield D_();s=m,c=E}return ke.result=t&&e&&o&&(s||n)&&(c||l),ke.detail.isBrowserSupported=t,ke.detail.isWebRTCSupported=e,ke.detail.isWebCodecsSupported=r,ke.detail.isMediaDevicesSupported=o,ke.detail.isScreenShareSupported=na(),ke.detail.isSmallStreamSupported=ad(),ke.detail.isH264EncodeSupported=s,ke.detail.isVp8EncodeSupported=n,ke.detail.isH264DecodeSupported=c,ke.detail.isVp8DecodeSupported=l,ke.result||$.error(`${navigator.userAgent} ${Ac(ke.detail,!1)}`),H_(),Q.addNumber({key:523800,value:Date.now()-i}),ke})),N_=function(){return ke.result},na=function(){return!!(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia)},id=null;function D_(){return A(this,null,function*(){return id||(id=new Promise(i=>A(this,null,function*(){let t={encode:!1,decode:!1},e=()=>{};try{let r=document.createElement("canvas"),o=r.getContext("2d");r.width=320,r.height=240;let s=setInterval(()=>{o.fillText("test",Math.floor(Math.random()*320),Math.floor(Math.random()*240))},66),n=-1,c=-1;e=()=>{clearInterval(n),clearInterval(s),clearTimeout(c),m.close(),E.close(),l.getTracks().forEach(x=>x.stop())},c=setTimeout(()=>{e(),i(t)},2*1e3);let l=r.captureStream(),m=new RTCPeerConnection({}),E=new RTCPeerConnection({offerToReceiveAudio:!0,offerToReceiveVideo:!0});m.addEventListener("icecandidate",x=>E.addIceCandidate(x.candidate)),E.addEventListener("icecandidate",x=>m.addIceCandidate(x.candidate)),m.addTrack(l.getVideoTracks()[0],l);let g=yield m.createOffer();yield m.setLocalDescription(g),yield E.setRemoteDescription(g);let _=yield E.createAnswer(),v=Wl.default.parse(_.sdp),L=v.media[0].rtp.findIndex(x=>x.codec==="H264");v.media[0].rtp=[v.media[0].rtp[L]],v.media[0].fmtp=v.media[0].fmtp.filter(x=>x.payload===v.media[0].rtp[0].payload),v.media[0].rtcpFb&&(v.media[0].rtcpFb=v.media[0].rtcpFb.filter(x=>x.payload===v.media[0].rtp[0].payload)),_.sdp=Wl.default.write(v),yield E.setLocalDescription(_),yield m.setRemoteDescription(_),n=setInterval(()=>A(this,null,function*(){t.encode&&t.decode&&(e(),i(t));let[x,M]=yield Promise.all([m.getSenders()[0].getStats(),E.getReceivers()[0].getStats()]);t.encode||x.forEach(B=>{B.type==="outbound-rtp"&&B.mediaType===N.VIDEO&&B.bytesSent>0&&(t.encode=!0)}),t.decode||M.forEach(B=>{B.type==="inbound-rtp"&&B.mediaType===N.VIDEO&&B.bytesReceived>0&&(t.decode=!0)})}),100)}catch(r){e(),$.warn("detectH264Supported failed",r),i({encode:!0,decode:!0})}})).then(i=>(i.encode||(i.decode=!0),(!i.encode||!i.decode)&&$.warn(`detectH264Supported encode: ${i.encode} decode: ${i.decode} ${Ar}`),i)),id)})}var M_=(i,t,e)=>{location.protocol==="http:"&&!Rr&&(i[t]=()=>{throw new ue({code:J.INVALID_OPERATION,message:Xt.NOT_SUPPORTED_HTTP})})},w_=function(i){return i.type==="candidate-pair"&&i.nominated&&(i.state==="in-progress"||i.state==="succeeded")?!(st(i.selected)&&!i.selected):!1};function Bh(){let i="";if(screen.width){let t=screen.width?screen.width*window.devicePixelRatio:"",e=screen.height?screen.height*window.devicePixelRatio:"";i+=`${t} * ${e}`}return i}function Hh(){return navigator.getUserMedia||navigator.mediaDevices&&navigator.mediaDevices.getUserMedia}function Wh(){let i={isSupported:!1},t=["AudioContext","webkitAudioContext","mozAudioContext","msAudioContext"];for(let e=0;e<t.length;e++)if(t[e]in window){i.isSupported=!0;break}return i.isSupported}function Gh(){return"captureStream"in HTMLCanvasElement.prototype}function jh(){return Ls||lt||Vr&&Vr<63?!1:!!(jl()&&Gh())}function qh(){return!(Vr<74||Uo||Jt<11||Nc<46)}function ad(){return jh()||qh()}var O_=function(){if(P(window.RTCRtpTransceiver)||!cd()||!("currentDirection"in RTCRtpTransceiver.prototype))return!1;let i=null,t=!1;try{i=new RTCPeerConnection({sdpSemantics:Ku}),i.addTransceiver(N.AUDIO),t=!0}catch(e){}return i==null||i.close(),t};function x_(){return"RTCPeerConnection"in window&&"getReceivers"in window.RTCPeerConnection.prototype}function Jh(){return"RTCPeerConnection"in window&&"getSenders"in window.RTCPeerConnection.prototype}function P_(){return"RTCPeerConnection"in window&&"getTransceivers"in window.RTCPeerConnection.prototype}function cd(){return Jt===11&&!Tl?!1:"RTCPeerConnection"in window&&"addTransceiver"in window.RTCPeerConnection.prototype}var k_=!(!cd()||ni&&Vr<86);function L_(){return"RTCRtpTransceiver"in window&&"stop"in window.RTCRtpTransceiver.prototype}var aa="RTCRtpSender"in window;function U_(){return aa&&"replaceTrack"in window.RTCRtpSender.prototype}function V_(){return aa&&"setParameters"in window.RTCRtpSender.prototype&&Jh()}var F_="RTCRtpReceiver"in window&&"getSynchronizationSources"in window.RTCRtpReceiver.prototype,js=window.MediaStreamTrack&&"getSettings"in MediaStreamTrack.prototype,Jl=window.MediaStreamTrack&&"getCapabilities"in MediaStreamTrack.prototype,ca=aa&&"createEncodedStreams"in window.RTCRtpSender.prototype&&Gc()>=86,zh="RTCRtpScriptTransform"in window,da=aa&&(ca||zh),zl=function(){return["RTCPeerConnection","webkitRTCPeerConnection","RTCIceGatherer"].filter(t=>t in window).length>0};function Xh(){let i={AudioDecoder:!1,AudioEncoder:!1,VideoDecoder:!1,VideoEncoder:!1,ImageDecoder:!1};return P(window.AudioDecoder)||(i.AudioDecoder=!0),P(window.AudioEncoder)||(i.AudioEncoder=!0),P(window.VideoDecoder)||(i.VideoDecoder=!0),P(window.VideoEncoder)||(i.VideoEncoder=!0),P(window.ImageDecoder)||(i.ImageDecoder=!0),i}function Qh(){return"mediaSession"in navigator&&!P(navigator.mediaSession.setActionHandler)}function Yh(){return!P(window.WebTransport)}function $_(){return typeof WebAssembly=="undefined"?!1:WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]))}function B_(){let i={browser:`${Ur.name}/${Ur.version}`,os:$s(),displayResolution:Bh(),isScreenShareSupported:na(),isWebRTCSupported:zl(),isGetUserMediaSupported:Hh(),isWebAudioSupported:Wh(),isWebSocketsSupported:"WebSocket"in window&&window.WebSocket.CLOSING===2,isWebCodecSupported:Xh(),isMediaSessionSupported:Qh(),isWebTransportSupported:Yh()};return navigator.userAgent.includes("miniProgram")&&(i.browser=`mini/${i.browser}`),i}var Zh="checkResult";function H_(){Hs.setItem(Zh,{ua:navigator.userAgent,checkResult:ke})}function Xl(){hi();let i=Hs.getItem(Zh);i&&i.ua===navigator.userAgent&&i.checkResult&&W_(i.checkResult.detail,ke.detail)&&(ke=i.checkResult),nd()}function W_(i,t){return er(i)?Object.keys(t).every(e=>e in i):!1}function fi(){return"requestVideoFrameCallback"in HTMLVideoElement.prototype}var G_="RTCRtpReceiver"in window&&"jitterBufferTarget"in window.RTCRtpReceiver.prototype;var ef=Wi(Yi(),1);var Kh=Symbol("instance"),Sy=Symbol("abortCtrl"),dd=Symbol("cacheResult"),ua=class{constructor(t,e,r){this.oldState=t,this.newState=e,this.action=r,this.aborted=!1}abort(t){this.aborted=!0,pa.call(t,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},la=class extends Error{constructor(t,e,r){super(e),this.state=t,this.message=e,this.cause=r}};function j_(i){return typeof i=="object"&&i&&"then"in i}var ma=new Map;function Qe(i,t,e={}){return(r,o,s)=>{let n=e.action||o;if(!e.context){let l=ma.get(r)||[];ma.has(r)||ma.set(r,l),l.push({from:i,to:t,action:n})}let c=s.value;s.value=function(...l){let m=this;if(e.context&&(m=de.get(typeof e.context=="function"?e.context.call(this,...l):e.context)),m.state===t)return e.sync?m[dd]:Promise.resolve(m[dd]);m.state instanceof ua&&m.state.action==e.abortAction&&m.state.abort(m);let E=null;Array.isArray(i)?i.length==0?m.state instanceof ua&&m.state.abort(m):(typeof m.state!="string"||!i.includes(m.state))&&(E=new la(m._state,`${m.name} ${n} to ${t} failed: current state ${m._state} not from ${i.join("|")}`)):i!==m.state&&(E=new la(m._state,`${m.name} ${n} to ${t} failed: current state ${m._state} not from ${i}`));let g=M=>{if(e.fail&&e.fail.call(this,M),e.sync){if(e.ignoreError)return M;throw M}else return e.ignoreError?Promise.resolve(M):Promise.reject(M)};if(E)return g(E);let _=m.state,v=new ua(_,t,n);pa.call(m,v);let L=M=>{var B;return m[dd]=M,v.aborted||(pa.call(m,t),(B=e.success)===null||B===void 0||B.call(this,m[dd])),M},x=M=>(pa.call(m,_,M),g(M));try{let M=c.apply(this,l);return j_(M)?M.then(L).catch(x):e.sync?L(M):Promise.resolve(L(M))}catch(M){return x(new la(m._state,`${m.name} ${n} from ${i} to ${t} failed: ${M}`,M instanceof Error?M:new Error(String(M))))}}}}var q_=typeof window!="undefined"&&window.__AFSM__?(e,r)=>{window.dispatchEvent(new CustomEvent(e,{detail:r}))}:typeof importScripts!="undefined"?(e,r)=>{postMessage({type:e,payload:r})}:()=>{};function pa(i,t){let e=this._state;this._state=i;let r=i.toString();i&&this.emit(r,e),this.emit(de.STATECHANGED,i,e,t),this.updateDevTools({value:i,old:e,err:t instanceof Error?t.message:String(t)})}var de=class i extends ef.default{constructor(t,e,r){super(),this.name=t,this.groupName=e,this._state=i.INIT,t||(t=Date.now().toString(36)),r?Object.setPrototypeOf(this,r):r=Object.getPrototypeOf(this),e||(this.groupName=this.constructor.name);let o=r[Kh];o?this.name=o.name+"-"+o.count++:r[Kh]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){let t=Object.getPrototypeOf(this),e=ma.get(t)||[],r=new Set,o=[],s=[],n=new Set,c=Object.getPrototypeOf(t);ma.has(c)&&(c.stateDiagram.forEach(m=>r.add(m)),c.allStates.forEach(m=>n.add(m))),e.forEach(({from:m,to:E,action:g})=>{typeof m=="string"?o.push({from:m,to:E,action:g}):m.length?m.forEach(_=>{o.push({from:_,to:E,action:g})}):s.push({to:E,action:g})}),o.forEach(({from:m,to:E,action:g})=>{n.add(m),n.add(E),n.add(g+"ing"),r.add(`${m} --> ${g}ing : ${g}`),r.add(`${g}ing --> ${E} : ${g} \u{1F7E2}`),r.add(`${g}ing --> ${m} : ${g} \u{1F534}`)}),s.forEach(({to:m,action:E})=>{r.add(`${E}ing --> ${m} : ${E} \u{1F7E2}`),n.forEach(g=>{g!==m&&r.add(`${g} --> ${E}ing : ${E}`)})});let l=[...r];return Object.defineProperties(t,{stateDiagram:{value:l},allStates:{value:n}}),l}static get(t){let e;return typeof t=="string"?(e=i.instances.get(t),e||i.instances.set(t,e=new i(t,void 0,Object.create(i.prototype)))):(e=i.instances2.get(t),e||i.instances2.set(t,e=new i(t.constructor.name,void 0,Object.create(i.prototype)))),e}static getState(t){var e;return(e=i.get(t))===null||e===void 0?void 0:e.state}updateDevTools(t={}){q_(i.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},t))}get state(){return this._state}set state(t){pa.call(this,t)}};de.STATECHANGED="stateChanged";de.UPDATEAFSM="updateAFSM";de.INIT="[*]";de.ON="on";de.OFF="off";de.instances=new Map;de.instances2=new WeakMap;var Yl=typeof window!="undefined",tf=Yl&&window.requestIdleCallback||function(i){let t=Date.now();return setTimeout(()=>{i({didTimeout:!1,timeRemaining(){return Math.max(0,50-(Date.now()-t))}})},1e3)},J_=Yl&&window.cancelIdleCallback||function(i){clearTimeout(i)},rf=Yl&&(window.cancelAnimationFrame||window.mozCancelAnimationFrame),_t=class _t{static generateTaskID(){return this.currentTaskID++}static run(t,e,r){r!=null&&r.fps&&(r.delay=r.delay||Number((1e3/r.fps).toFixed(2))),t==="interval"?r=q({delay:2e3,count:0,backgroundTask:!0},r):t==="ric"?r=q({delay:1e4,count:0},r):t==="raf"?r=q({fps:60,delay:16.6,count:0,backgroundTask:!0},r):r=q({delay:2e3,count:0,backgroundTask:!0},r);let o=Ee(q({taskID:this.generateTaskID(),loopCount:0,intervalID:null,timeoutID:null,rafID:null,ricID:null,taskName:t,callback:e},r),{delay:r.delay});return this.taskMap.set(o.taskID,o),this[t](o),o.taskID}static interval(t){let e=()=>{t.callback(),t.loopCount+=1,_t.isBreakLoop(t)};return t.intervalID=setInterval(e,t.delay)}static intervalInWorker(t){_t.sharedWorker||(_t.sharedWorker=new Worker(URL.createObjectURL(new Blob([`
|
|
14
12
|
const timers = new Map();
|
|
15
13
|
self.onmessage = function(e) {
|
|
16
14
|
const { taskId, delay, type } = e.data;
|
|
@@ -23,14 +21,14 @@ Refer to: ${Ph("en",a)}
|
|
|
23
21
|
timers.delete(taskId);
|
|
24
22
|
}
|
|
25
23
|
};
|
|
26
|
-
`],{type:"application/javascript"}))),
|
|
27
|
-
${t.stack}`)),this.sendRequest(yi(this._configs.sdkAppId,Ki.LOG),r)}sendRequest(i,e){setTimeout(()=>Di({url:i,body:JSON.stringify(e),priority:"low"}).catch(()=>{}),2e3)}},re=new Kd;var ci=new WeakMap;function ft({settings:o={retries:5,timeout:2e3},onError:i,onRetrying:e,onRetryFailed:t}){return function(r,s,n){let a=Yt({retryFunction:n.value,settings:o,onError({error:c,retry:l,reject:h,retryFuncArgs:u}){var m;i?i.call(this,c,()=>{var g;(g=ci.get(r))!=null&&g.has(s)?l():h(c)},h,u):(m=ci.get(r))!=null&&m.has(s)?l():h(c)},onRetrying(c,l){var h;Qt(e)&&e.call(this,c,l),(h=ci.get(r))!=null&&h.has(s)&&(ci.get(r).get(s).stopRetry=l)},onRetryFailed:t});return n.value=function(...c){let l=ci.get(r);return l?l.set(s,{args:c}):ci.set(r,new Map([[s,{args:c}]])),a.apply(this,c).finally(()=>{var h;return(h=ci.get(r))==null?void 0:h.delete(s)})},n}}function Hs({fnName:o,callback:i,validateArgs:e=!0}){return function(t,r,s){let n=s.value;return s.value=function(...a){var c,l;if((c=ci.get(t))!=null&&c.has(o)){let{stopRetry:h,args:u}=ci.get(t).get(o),m=!0;if(e){for(let g of u)if(!a.find(D=>D===g)){m=!1;break}}m&&(i&&i.apply(this,a),h&&h(),(l=ci.get(t))==null||l.delete(o))}return n.apply(this,a)},s}}var di=class extends H{constructor(e,t){super(e.id,`${t}-player`);this.kind=t;d(this,"id");d(this,"element",null);d(this,"track");d(this,"url");d(this,"attr");d(this,"mode");d(this,"muted");d(this,"_log");d(this,"_pausedRetryCount");d(this,"_isElementPlayingFired",!1);d(this,"_interval");d(this,"_delayDestroyTimeoutId",0);d(this,"_playSuccessResolve");d(this,"_isReplayByRecreateMediaStreamCalled",!1);d(this,"isInAutoPlayFailedState",!1);this.id=e.id,this._log=e.log,this.track=e.track,this.muted=e.muted,this._pausedRetryCount=Ir,this._state="STOPPED",this.bindTrackEvents(),this._log.info(`create ${t}-player ${this.id}`)}get isPlaying(){var e;return this._state==="PLAYING"&&((e=this.element)==null?void 0:e.paused)===!1}get isPaused(){var e;return this._state==="PAUSED"||((e=this.element)==null?void 0:e.paused)===!0}get isStopped(){return this._state==="STOPPED"}setAttr(e){this.attr=e}setUrl(e){this.track&&(this.unbindTrackEvents(),this.element&&(this.element.srcObject=null),this.track=null),e!==this.url&&(this.url=e,e!==null&&this.element&&(this.element.crossOrigin="anonymous",this.element.src=e))}play(){return f(this,null,function*(){if(!this.isPlaying)try{this._delayDestroyTimeoutId&&(clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0,this.bindTrackEvents(),this.bindElementEvents()),this.bindAutoPlayEvent(),yield new Promise((e,t)=>{this._playSuccessResolve=e,this.element.play().then(e,t)})}catch(e){let t=P({key:x.PLAY_FAILED,data:{media:this.kind,error:e}});if(this._log.warn(e),t.includes("NotAllowedError"))throw this.isInAutoPlayFailedState=!0,new y({code:I.PLAY_NOT_ALLOWED,message:t})}})}stop(e=0){this._isElementPlayingFired=!1,this.unbindEvents(),e>0&&!nr?this._delayDestroyTimeoutId||(this._log.info(`destroy element after 3 * ${e}`),this._delayDestroyTimeoutId=setTimeout(()=>this.destroyElement(),3*e)):this.destroyElement(),this.handleStopped(p.ENDED),this._interval>0&&se.clearTask(this._interval)}destroyElement(){this.element&&(this._log.debug("destroy element"),this.element.remove(),this.element.srcObject=null,this.element=null),clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0}pause(){var e;this.isPlaying&&((e=this.element)==null||e.pause())}resume(){return this._log.info("resume"),this.isPlaying?Promise.resolve():Ed?this.replay():this.play().catch(()=>{})}setMuted(e){this.element&&(this.element.muted=e),this.muted=e}replay(){return this.stop(),this.play().catch(()=>{})}bindElementEvents(){if(this.element){let e=this.handleElementEvent.bind(this);return je(this.element,this.element).add(p.PLAYING,e).add(p.ENDED,e).add(p.PAUSE,e).add(p.ERROR,e).add(p.LOADEDDATA,e).add(p.LOADEDMETADATA,e)}}bindTrackEvents(e=this.track){if(e){let t=this.handleTrackEvent.bind(this);ai==null||ai.create(e,e).add(p.ENDED,t).add(p.MUTE,t).add(p.UNMUTE,t),e.readyState===p.ENDED&&this.handleTrackEvent({type:p.ENDED}),e.muted&&this.handleTrackEvent({type:p.MUTE})}}bindAutoPlayEvent(){E.on(A.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}unbindTrackEvents(e=this.track){e&&ve(e)}unbindEvents(){this.element&&ve(this.element),this.unbindTrackEvents(),E.off(A.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}handleElementEvent(e){switch(e.type){case p.PLAYING:this.isInAutoPlayFailedState=!1,this._isElementPlayingFired=!0,this._log.info(`${this.kind} player is playing`),this.handlePlaying(p.PLAYING),this._interval&&(se.clearTask(this._interval),this._interval=-1);break;case p.ENDED:this._log.info(`${this.kind} player is ended`),this.handleStopped(p.ENDED);break;case p.PAUSE:this._log.info(`${this.kind} player is paused`),this.handlePaused(p.PAUSE),Ie&&(this._interval=se.run("timeout",()=>{this.element&&this._state==="PAUSED"&&this.resume()},{delay:3e3}));break;case p.ERROR:if(this.element&&this.element.error){this.handlePaused(p.ERROR);let{code:r,message:s}=this.element.error;this._log.error(`${this.kind} ${this._log.isLocal?"local":"remote"} MediaError code: ${r} message: ${s} userAgent: ${navigator.userAgent}`),re.uploadEvent({log:`stat-${this.kind}-${ot.PLAYER_ERROR}-${r}-${navigator.userAgent}`,error:this.element.error}),fd||pd?this.emit(ue.ERROR,this.element.error):this.replayByRecreateMediaStream(this.element.error)}break;case p.LOADEDDATA:this.kind===p.VIDEO&&this.emit(ue.LOADED_DATA);break;case p.LOADEDMETADATA:this.kind===p.VIDEO&&this.emit(ue.LOADED_META_DATA);break}}replayByRecreateMediaStream(e){if(!this._isReplayByRecreateMediaStreamCalled)return this._isReplayByRecreateMediaStreamCalled=!0,this.doReplayByRecreateMediaStream(1e3).then(()=>{this._log.warn("replayByRecreateMediaStream success"),re.uploadEvent({log:"stat-replayByRecreateMediaStream-success"}),b.addSuccessEvent({key:this.kind===p.AUDIO?506700:516700})}).catch(()=>{var t;this._log.error("replayByRecreateMediaStream failed"),re.uploadEvent({log:"stat-replayByRecreateMediaStream-failed"}),b.addFailedEvent({key:this.kind===p.AUDIO?506700:516700,error:(t=this.element)==null?void 0:t.error}),this.emit(ue.ERROR,e)})}doReplayByRecreateMediaStream(e){return this._log.warn(`delay ${e}ms to recreate mediaStream`),new Promise((t,r)=>{Ni(e).then(()=>{this.element&&(this.element.srcObject=null,this.element.srcObject=new MediaStream([this.track]),this._log.warn("recreated mediaStream"),this.element.onerror=()=>{var s,n,a;this._log.warn(`element onerror ${(n=(s=this.element)==null?void 0:s.error)==null?void 0:n.code} fired after recreated mediaStream`),r((a=this.element)==null?void 0:a.error)}),Ni(5e3).then(()=>{var s,n;(!this.isPlaying||(s=this.element)!=null&&s.error)&&r((n=this.element)==null?void 0:n.error),t()})})}).finally(()=>{this.element&&(this.element.onerror=null)})}handleTrackEvent(e){return f(this,null,function*(){switch(e.type){case p.ENDED:this.handleStopped(p.ENDED);break;case p.MUTE:this.handlePaused(p.MUTE);break;case p.UNMUTE:this.mode>0?this.handlePlaying(this.mode.toString()):this.element&&(this.element.paused&&(this._log.warn("track unmuted and element is paused, resume"),yield this.resume()),!this.element.paused&&this._isElementPlayingFired&&this.handlePlaying(p.UNMUTE));break}})}handlePlaying(e){var t;this._log.debug("handlePlaying",e),(t=this._playSuccessResolve)==null||t.call(this,e),this.emit(ue.PLAYER_STATE_CHANGED,{type:this.kind,state:"PLAYING",reason:e})}handlePaused(e){this._log.debug("handlePaused",e),this.emit(ue.PLAYER_STATE_CHANGED,{type:this.kind,state:"PAUSED",reason:e})}handleStopped(e){this._log.debug("handleStopped",e),this.emit(ue.PLAYER_STATE_CHANGED,{type:this.kind,state:"STOPPED",reason:e})}getElement(){return this.element}};v([ft({settings:{retries:2,timeout:0},onError(e,t,r,s){s[0]=(s[0]||1e3)+1e3,t()}})],di.prototype,"doReplayByRecreateMediaStream",1),v([Te([],"PLAYING",{sync:!0})],di.prototype,"handlePlaying",1),v([Te("PLAYING","PAUSED",{ignoreError:!0,sync:!0})],di.prototype,"handlePaused",1),v([Te([],"STOPPED",{sync:!0})],di.prototype,"handleStopped",1);var Ui="trtc_autoplay",el=`${Ui}_mask`,Oo=`${Ui}_wrapper`,om=`${Ui}_header`,tl=`${Ui}_content`,Ea=`${Ui}_action_wrapper`,il=`${Ui}_question`,rl=`${Ui}_collapse`,Sa=`${Ui}_action_confirm`,sm=`${Ui}_detail`,nm="#2473E8",sl="dialog",X_=`${sl}-show`,z_=`${sl}-1`,Q_=`${sl}-2`,am=!1,nl=()=>!!document.querySelector(`.${Oo}`),dm=`${Xt}/${kt()?"zh-cn":"en"}/tutorial-21-advanced-auto-play-policy.html`,cm=`<br><a href='${dm}' target='_blank'>${kt()?"\u5176\u4ED6\u65B9\u6848\uFF1F":"Any other solution?"}</a>`,Y_=`${kt()?`\u6D4F\u89C8\u5668\u81EA\u52A8\u64AD\u653E\u7B56\u7565\uFF1A\u5728\u7528\u6237\u4E0E\u9875\u9762\u4EA7\u751F\u4EA4\u4E92\uFF08\u70B9\u51FB\u3001\u89E6\u6478\uFF09\u4E4B\u524D\uFF0C\u6D4F\u89C8\u5668\u7981\u6B62\u64AD\u653E\u6709\u58F0\u5A92\u4F53\u3002\u8BE5\u5F39\u7A97\u7528\u4E8E\u5E2E\u52A9\u7528\u6237\u6062\u590D\u97F3\u89C6\u9891\u64AD\u653E\u3002${cm}`:`Autoplay Policy: Before user interacts with the web page (clicking, touching), page will not be allowed to play media with sound. This Dialog is used to help users resume playback. ${cm}`}`,ol=class{constructor(){d(this,"content","\u97F3\u89C6\u9891\u64AD\u653E\u88AB\u6D4F\u89C8\u5668\u62E6\u622A\uFF0C\u8BF7\u70B9\u51FB\u201C\u6062\u590D\u64AD\u653E\u201D\u3002");d(this,"_dialogNode",null);d(this,"_bodyPosition","");d(this,"_showDetail",!1);d(this,"_isCollapseClicked",!1);d(this,"_isQuestionClicked",!1);if(kt()||(this.content='Media playback failed. Click the "Resume" to resume playback.'),!am){let i=document.createElement("style");i.innerHTML=`.${el}{position:fixed;top:0;left:0;right:0;bottom:0;width:100vw;height:100vh;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.5);z-index:1500;}.${el} div:not(.${Ea}){display:block !important;}.${Oo}{padding:14px;background:#fff;border-radius:3px;box-shadow:0px 3px 15px #434343;border:1px solid #d1cfcf;max-width:500px;}.${Oo} a{color:${nm};}.${om}{overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:600;}.${tl}{margin:8px 0;}.${Ea}{width:100%;display:flex !important;align-items:center;justify-content:right;float:right;}.${rl}{margin-right:auto;cursor:pointer}.${il}{height:100%;line-height:16px;cursor:pointer;}.${Sa}{margin-left:8px;color:#fff;background:${nm};padding:4px 12px;outline:none;border:1px solid;border-radius:3px;font-weight:bold;}.${Sa}:hover{opacity:0.9;}.${rl},.${Sa},.${tl},.${il}{font-size:14px;}@media screen and (max-width:750px){.${Oo}{width:80vw;}}`,document.head.appendChild(i),am=!0}this.addDiaLog()}createDiaLog(){let i=document.createElement("template");i.innerHTML=`<div class="${el}"><div class='${Oo}'><div class='${om}'>${location.host}</div><div class='${tl}'>${this.content}</div><div class='${sm}' style="visibility:hidden;width:100%;height:0;font-size:12px;color:gray;">${Y_}</div><div class='${Ea}'></div></div></div>`.trim();let e=document.createElement("button");e.className=Sa,e.innerText=kt()?"\u6062\u590D\u64AD\u653E":"Resume",e.onclick=this.onConfirm.bind(this);let t=document.createElement("div");t.className=il,t.innerHTML=`<?xml version="1.0" encoding="UTF-8"?>
|
|
24
|
+
`],{type:"application/javascript"}))),_t.sharedWorker.onmessage=e=>{var r;if(e.data.type==="tick"){let o=_t.workerTasks.get(e.data.taskId);o&&(_t.isBreakLoop(o)?((r=_t.sharedWorker)==null||r.postMessage({type:"stop",taskId:o.taskID}),_t.workerTasks.delete(o.taskID)):(o.callback(),o.loopCount+=1))}}),_t.workerTasks.set(t.taskID,t),_t.sharedWorker.postMessage({taskId:t.taskID,delay:t.delay,type:"start"})}static timeout(t){let e=()=>{if(t.callback(),t.loopCount+=1,!_t.isBreakLoop(t))return t.timeoutID=setTimeout(e,t.delay)};return t.timeoutID=setTimeout(e,t.delay)}static ric(t){let e=Ie(),r,o=()=>{if(r=Ie()-e,r>=t.delay&&(e=Ie()-Math.floor(r%t.delay),t.callback(),t.loopCount+=1),!_t.isBreakLoop(t))return t.ricID=tf(o,{timeout:t.delay})};return t.ricID=tf(o,{timeout:t.delay})}static raf(t){let e=Ie(),r,o=()=>{if(document.hidden&&t.backgroundTask)return r=Ie()-e,e=Ie(),t.callback(),t.loopCount+=1,_t.isBreakLoop(t)?void 0:t.timeoutID=setTimeout(o,t.delay-Math.floor(r%t.delay));if(r=Ie()-e,r>=t.delay&&(e=Ie()-Math.floor(r%t.delay),t.callback(),t.loopCount+=1),!_t.isBreakLoop(t))return t.rafID=requestAnimationFrame(o)};if(t.rafID=requestAnimationFrame(o),t.backgroundTask){let s=()=>{if(document.hidden){let n=Ie()-e;n>=t.delay?o():t.timeoutID=setTimeout(o,t.delay-n)}};document.addEventListener("visibilitychange",s),t.onVisibilitychange=s,document.hidden&&s()}return t.taskID}static hasTask(t){return this.taskMap.has(t)}static clearTask(t){if(!this.taskMap.has(t))return!0;let{intervalID:e,timeoutID:r,rafID:o,ricID:s,onVisibilitychange:n}=this.taskMap.get(t);return e&&clearInterval(e),r&&clearTimeout(r),o&&rf&&rf(o),s&&J_(s),n&&document.removeEventListener("visibilitychange",n),this.taskMap.delete(t),!0}static isBreakLoop(t){return this.hasTask(t.taskID)?t.count!==0&&t.loopCount>=t.count?(this.clearTask(t.taskID),!0):!1:!0}};u(_t,"taskMap",new Map),u(_t,"currentTaskID",1),u(_t,"sharedWorker",null),u(_t,"workerTasks",new Map);var Ql=_t,vt=Ql;var wy={STREAM_ADDED:"stream-added",STREAM_REMOVED:"stream-removed",STREAM_UPDATED:"stream-updated",STREAM_SUBSCRIBED:"stream-subscribed",CONNECTION_STATE_CHANGED:"connection-state-changed",PEER_JOIN:"peer-join",PEER_LEAVE:"peer-leave",MUTE_AUDIO:"mute-audio",MUTE_VIDEO:"mute-video",UNMUTE_AUDIO:"unmute-audio",UNMUTE_VIDEO:"unmute-video",CLIENT_BANNED:"client-banned",NETWORK_QUALITY:"network-quality",AUDIO_VOLUME:"audio-volume",SEI_MESSAGE:N.SEI_MESSAGE,ERROR:"error"};var et={LOADED_DATA:N.LOADEDDATA,LOADED_META_DATA:N.LOADEDMETADATA,MEDIA_TRACK_CHANGED:"media-track-changed",PLAYER_STATE_CHANGED:"player-state-changed",ERROR:"error"};var Hr={};Zr(Hr,{create:()=>Vt,remove:()=>ht});var ha=new WeakMap;function Vt(i,t){ha.has(i)||ha.set(i,[]);let e=ha.get(i),o={add:(s,n)=>("addEventListener"in t?(e.push(t.removeEventListener.bind(t,s,n)),t.addEventListener(s,n)):(e.push(t.off.bind(t,s,n)),t.on(s,n)),o)};return o}function ht(i){let t=ha.get(i);t&&(t.forEach(e=>e()),ha.delete(i))}var Zl=class{constructor(){u(this,"_roomIdMap",new Map);u(this,"_configs");typeof registerProcessor=="undefined"&&(this._configs={sdkAppId:"",userId:"",version:at,env:Kr.QCLOUD,browserVersion:Ur.name+Ur.version,ua:navigator.userAgent})}setConfig({sdkAppId:t,env:e,userId:r,roomId:o}){t!==this._configs.sdkAppId&&(this._configs.sdkAppId=String(t)),this._configs.env=e,this._configs.userId=r,this._roomIdMap.set(r,String(o))}logSuccessEvent(t){Rr||!$.isAbleToUpload||this._configs.env===Kr.QCLOUD&&this.uploadEventToKibana(Ee(q({},t),{result:"success"}))}logFailedEvent(t){if(Rr||!$.isAbleToUpload)return;let{eventType:e,code:r,error:o,userId:s}=t,n={roomId:this._roomIdMap.get(s||this._configs.userId),userId:s,eventType:e,result:"failed",code:r||(o==null?void 0:o.extraCode)||(o==null?void 0:o.code)||J.UNKNOWN};this._configs.env===Kr.QCLOUD&&this.uploadEventToKibana(Ee(q({},n),{error:o}))}uploadEventToKibana(t){let e=`stat-${t.eventType}-${t.result}`;(t.eventType==="delta-join"||t.eventType==="delta-leave"||t.eventType==="delta-publish")&&(e=`${t.eventType}:${t.delta}`),this.uploadEvent({log:e,userId:t.userId}),t.result==="failed"&&(e=`stat-${t.eventType}-${t.result}-${t.code}`,this.uploadEvent({log:e,userId:t.userId,error:t.error}))}uploadEvent({log:t,userId:e,error:r}){let o={timestamp:lc(),sdkAppId:this._configs.sdkAppId,userId:e||this._configs.userId,version:at,log:t};r&&(o.errorInfo=r.message,r.stack&&(o.errorInfo+=`
|
|
25
|
+
${r.stack}`)),this.sendRequest(ii(this._configs.sdkAppId,Gi.LOG),o)}sendRequest(t,e){setTimeout(()=>si({url:t,body:JSON.stringify(e),priority:"low"}).catch(()=>{}),2e3)}},je=new Zl;var qo=new WeakMap;function Jo({settings:i={retries:5,timeout:2e3},onError:t,onRetrying:e,onRetryFailed:r}){return function(o,s,n){let c=Ji({retryFunction:n.value,settings:i,onError({error:l,retry:m,reject:E,retryFuncArgs:g}){var _;t?t.call(this,l,()=>{var v;(v=qo.get(o))!=null&&v.has(s)?m():E(l)},E,g):(_=qo.get(o))!=null&&_.has(s)?m():E(l)},onRetrying(l,m){var E;qi(e)&&e.call(this,l,m),(E=qo.get(o))!=null&&E.has(s)&&(qo.get(o).get(s).stopRetry=m)},onRetryFailed:r});return n.value=function(...l){let m=qo.get(o);return m?m.set(s,{args:l}):qo.set(o,new Map([[s,{args:l}]])),c.apply(this,l).finally(()=>{var E;return(E=qo.get(o))==null?void 0:E.delete(s)})},n}}var Wr=class extends de{constructor(e,r){super(e.id,`${r}-player`);this.kind=r;u(this,"id");u(this,"element",null);u(this,"track");u(this,"url");u(this,"attr");u(this,"mode");u(this,"muted");u(this,"_log");u(this,"_pausedRetryCount");u(this,"_isElementPlayingFired",!1);u(this,"_interval");u(this,"_delayDestroyTimeoutId",0);u(this,"_playSuccessResolve");u(this,"_isReplayByRecreateMediaStreamCalled",!1);u(this,"isInAutoPlayFailedState",!1);this.id=e.id,this._log=e.log,this.track=e.track,this.muted=e.muted,this._pausedRetryCount=wo,this._state="STOPPED",this.bindTrackEvents(),this._log.info(`create ${r}-player ${this.id}`)}get isPlaying(){var e;return this._state==="PLAYING"&&((e=this.element)==null?void 0:e.paused)===!1}get isPaused(){var e;return this._state==="PAUSED"||((e=this.element)==null?void 0:e.paused)===!0}get isStopped(){return this._state==="STOPPED"}setAttr(e){this.attr=e}setUrl(e){this.track&&(this.unbindTrackEvents(),this.element&&(this.element.srcObject=null),this.track=null),e!==this.url&&(this.url=e,e!==null&&this.element&&(this.element.crossOrigin="anonymous",this.element.src=e))}play(){return A(this,null,function*(){if(!this.isPlaying)try{this._delayDestroyTimeoutId&&(clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0,this.bindTrackEvents(),this.bindElementEvents()),this.bindAutoPlayEvent(),yield new Promise((e,r)=>{this._playSuccessResolve=e,this.element.play().then(e,r)})}catch(e){let r=Be({key:$e.PLAY_FAILED,data:{media:this.kind,error:e}});if(this._log.warn(e),r.includes("NotAllowedError"))throw this.isInAutoPlayFailedState=!0,new ue({code:J.PLAY_NOT_ALLOWED,message:r})}})}stop(e=0){this._isElementPlayingFired=!1,this.unbindEvents(),e>0&&!Xi?this._delayDestroyTimeoutId||(this._log.info(`destroy element after 3 * ${e}`),this._delayDestroyTimeoutId=setTimeout(()=>this.destroyElement(),3*e)):this.destroyElement(),this.handleStopped(N.ENDED),this._interval>0&&vt.clearTask(this._interval)}destroyElement(){this.element&&(this._log.debug("destroy element"),this.element.remove(),this.element.srcObject=null,this.element=null),clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0}pause(){var e;this.isPlaying&&((e=this.element)==null||e.pause())}resume(){return this._log.info("resume"),this.isPlaying?Promise.resolve():El?this.replay():this.play().catch(()=>{})}setMuted(e){this.element&&(this.element.muted=e),this.muted=e}replay(){return this.stop(),this.play().catch(()=>{})}bindElementEvents(){if(this.element){let e=this.handleElementEvent.bind(this);return Vt(this.element,this.element).add(N.PLAYING,e).add(N.ENDED,e).add(N.PAUSE,e).add(N.ERROR,e).add(N.LOADEDDATA,e).add(N.LOADEDMETADATA,e)}}bindTrackEvents(e=this.track){if(e){let r=this.handleTrackEvent.bind(this);Hr==null||Hr.create(e,e).add(N.ENDED,r).add(N.MUTE,r).add(N.UNMUTE,r),e.readyState===N.ENDED&&this.handleTrackEvent({type:N.ENDED}),e.muted&&this.handleTrackEvent({type:N.MUTE})}}bindAutoPlayEvent(){V.on(U.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}unbindTrackEvents(e=this.track){e&&ht(e)}unbindEvents(){this.element&&ht(this.element),this.unbindTrackEvents(),V.off(U.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}handleElementEvent(e){switch(e.type){case N.PLAYING:this.isInAutoPlayFailedState=!1,this._isElementPlayingFired=!0,this._log.info(`${this.kind} player is playing`),this.handlePlaying(N.PLAYING),this._interval&&(vt.clearTask(this._interval),this._interval=-1);break;case N.ENDED:this._log.info(`${this.kind} player is ended`),this.handleStopped(N.ENDED);break;case N.PAUSE:this._log.info(`${this.kind} player is paused`),this.handlePaused(N.PAUSE),lt&&(this._interval=vt.run("timeout",()=>{this.element&&this._state==="PAUSED"&&this.resume()},{delay:3e3}));break;case N.ERROR:if(this.element&&this.element.error){this.handlePaused(N.ERROR);let{code:o,message:s}=this.element.error;this._log.error(`${this.kind} ${this._log.isLocal?"local":"remote"} MediaError code: ${o} message: ${s} userAgent: ${navigator.userAgent}`),je.uploadEvent({log:`stat-${this.kind}-${ei.PLAYER_ERROR}-${o}-${navigator.userAgent}`,error:this.element.error}),hl||pl?this.emit(et.ERROR,this.element.error):this.replayByRecreateMediaStream(this.element.error)}break;case N.LOADEDDATA:this.kind===N.VIDEO&&this.emit(et.LOADED_DATA);break;case N.LOADEDMETADATA:this.kind===N.VIDEO&&this.emit(et.LOADED_META_DATA);break}}replayByRecreateMediaStream(e){if(!this._isReplayByRecreateMediaStreamCalled)return this._isReplayByRecreateMediaStreamCalled=!0,this.doReplayByRecreateMediaStream(1e3).then(()=>{this._log.warn("replayByRecreateMediaStream success"),je.uploadEvent({log:"stat-replayByRecreateMediaStream-success"}),Q.addSuccessEvent({key:this.kind===N.AUDIO?506700:516700})}).catch(()=>{var r;this._log.error("replayByRecreateMediaStream failed"),je.uploadEvent({log:"stat-replayByRecreateMediaStream-failed"}),Q.addFailedEvent({key:this.kind===N.AUDIO?506700:516700,error:(r=this.element)==null?void 0:r.error}),this.emit(et.ERROR,e)})}doReplayByRecreateMediaStream(e){return this._log.warn(`delay ${e}ms to recreate mediaStream`),new Promise((r,o)=>{Vn(e).then(()=>{this.element&&(this.element.srcObject=null,this.element.srcObject=new MediaStream([this.track]),this._log.warn("recreated mediaStream"),this.element.onerror=()=>{var s,n,c;this._log.warn(`element onerror ${(n=(s=this.element)==null?void 0:s.error)==null?void 0:n.code} fired after recreated mediaStream`),o((c=this.element)==null?void 0:c.error)}),Vn(5e3).then(()=>{var s,n;(!this.isPlaying||(s=this.element)!=null&&s.error)&&o((n=this.element)==null?void 0:n.error),r()})})}).finally(()=>{this.element&&(this.element.onerror=null)})}handleTrackEvent(e){return A(this,null,function*(){switch(e.type){case N.ENDED:this.handleStopped(N.ENDED);break;case N.MUTE:this.handlePaused(N.MUTE);break;case N.UNMUTE:this.mode>0?this.handlePlaying(this.mode.toString()):this.element&&(this.element.paused&&(this._log.warn("track unmuted and element is paused, resume"),yield this.resume()),!this.element.paused&&this._isElementPlayingFired&&this.handlePlaying(N.UNMUTE));break}})}handlePlaying(e){var r;this._log.debug("handlePlaying",e),(r=this._playSuccessResolve)==null||r.call(this,e),this.emit(et.PLAYER_STATE_CHANGED,{type:this.kind,state:"PLAYING",reason:e})}handlePaused(e){this._log.debug("handlePaused",e),this.emit(et.PLAYER_STATE_CHANGED,{type:this.kind,state:"PAUSED",reason:e})}handleStopped(e){this._log.debug("handleStopped",e),this.emit(et.PLAYER_STATE_CHANGED,{type:this.kind,state:"STOPPED",reason:e})}getElement(){return this.element}};Z([Jo({settings:{retries:2,timeout:0},onError(e,r,o,s){s[0]=(s[0]||1e3)+1e3,r()}})],Wr.prototype,"doReplayByRecreateMediaStream",1),Z([Qe([],"PLAYING",{sync:!0})],Wr.prototype,"handlePlaying",1),Z([Qe("PLAYING","PAUSED",{ignoreError:!0,sync:!0})],Wr.prototype,"handlePaused",1),Z([Qe([],"STOPPED",{sync:!0})],Wr.prototype,"handleStopped",1);var gi="trtc_autoplay",Kl=`${gi}_mask`,qs=`${gi}_wrapper`,of=`${gi}_header`,em=`${gi}_content`,ud=`${gi}_action_wrapper`,tm=`${gi}_question`,rm=`${gi}_collapse`,ld=`${gi}_action_confirm`,sf=`${gi}_detail`,nf="#2473E8",om="dialog",X_=`${om}-show`,Q_=`${om}-1`,Y_=`${om}-2`,af=!1,sm=()=>!!document.querySelector(`.${qs}`),df=`${Pr}/${Sr()?"zh-cn":"en"}/tutorial-21-advanced-auto-play-policy.html`,cf=`<br><a href='${df}' target='_blank'>${Sr()?"\u5176\u4ED6\u65B9\u6848\uFF1F":"Any other solution?"}</a>`,Z_=`${Sr()?`\u6D4F\u89C8\u5668\u81EA\u52A8\u64AD\u653E\u7B56\u7565\uFF1A\u5728\u7528\u6237\u4E0E\u9875\u9762\u4EA7\u751F\u4EA4\u4E92\uFF08\u70B9\u51FB\u3001\u89E6\u6478\uFF09\u4E4B\u524D\uFF0C\u6D4F\u89C8\u5668\u7981\u6B62\u64AD\u653E\u6709\u58F0\u5A92\u4F53\u3002\u8BE5\u5F39\u7A97\u7528\u4E8E\u5E2E\u52A9\u7528\u6237\u6062\u590D\u97F3\u89C6\u9891\u64AD\u653E\u3002${cf}`:`Autoplay Policy: Before user interacts with the web page (clicking, touching), page will not be allowed to play media with sound. This Dialog is used to help users resume playback. ${cf}`}`,im=class{constructor(){u(this,"content","\u97F3\u89C6\u9891\u64AD\u653E\u88AB\u6D4F\u89C8\u5668\u62E6\u622A\uFF0C\u8BF7\u70B9\u51FB\u201C\u6062\u590D\u64AD\u653E\u201D\u3002");u(this,"_dialogNode",null);u(this,"_bodyPosition","");u(this,"_showDetail",!1);u(this,"_isCollapseClicked",!1);u(this,"_isQuestionClicked",!1);if(Sr()||(this.content='Media playback failed. Click the "Resume" to resume playback.'),!af){let t=document.createElement("style");t.innerHTML=`.${Kl}{position:fixed;top:0;left:0;right:0;bottom:0;width:100vw;height:100vh;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.5);z-index:1500;}.${Kl} div:not(.${ud}){display:block !important;}.${qs}{padding:14px;background:#fff;border-radius:3px;box-shadow:0px 3px 15px #434343;border:1px solid #d1cfcf;max-width:500px;}.${qs} a{color:${nf};}.${of}{overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:600;}.${em}{margin:8px 0;}.${ud}{width:100%;display:flex !important;align-items:center;justify-content:right;float:right;}.${rm}{margin-right:auto;cursor:pointer}.${tm}{height:100%;line-height:16px;cursor:pointer;}.${ld}{margin-left:8px;color:#fff;background:${nf};padding:4px 12px;outline:none;border:1px solid;border-radius:3px;font-weight:bold;}.${ld}:hover{opacity:0.9;}.${rm},.${ld},.${em},.${tm}{font-size:14px;}@media screen and (max-width:750px){.${qs}{width:80vw;}}`,document.head.appendChild(t),af=!0}this.addDiaLog()}createDiaLog(){let t=document.createElement("template");t.innerHTML=`<div class="${Kl}"><div class='${qs}'><div class='${of}'>${location.host}</div><div class='${em}'>${this.content}</div><div class='${sf}' style="visibility:hidden;width:100%;height:0;font-size:12px;color:gray;">${Z_}</div><div class='${ud}'></div></div></div>`.trim();let e=document.createElement("button");e.className=ld,e.innerText=Sr()?"\u6062\u590D\u64AD\u653E":"Resume",e.onclick=this.onConfirm.bind(this);let r=document.createElement("div");r.className=tm,r.innerHTML=`<?xml version="1.0" encoding="UTF-8"?>
|
|
28
26
|
<svg class="icon" width="18" height="18" p-id="2030" t="1639646523624" version="1.1" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
|
|
29
27
|
<path d="m464 784.35c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z" p-id="2031"/>
|
|
30
28
|
<path d="m512 960c-247.04 0-448-200.96-448-448s200.96-448 448-448 448 200.96 448 448-200.96 448-448 448zm0-831.71c-211.58 0-383.71 172.13-383.71 383.71 0 211.55 172.13 383.71 383.71 383.71 211.55 0 383.71-172.16 383.71-383.71 0-211.58-172.16-383.71-383.71-383.71z" p-id="2032"/>
|
|
31
29
|
<path d="m512 673.7c-17.665 0-32.001-14.336-32.001-31.999v-54.112c0-52.353 40-92.352 75.328-127.65 25.887-25.92 52.672-52.672 52.672-74.017 0-53.343-43.072-96.735-95.999-96.735-53.823 0-95.999 41.536-95.999 94.559 0 17.665-14.336 31.999-32.001 31.999s-32.001-14.336-32.001-31.999c0-87.424 71.775-158.56 160-158.56s160 72.095 160 160.74c0 47.904-36.32 84.192-71.424 119.3-27.84 27.776-56.576 56.512-56.576 82.336v54.112c0 17.665-14.336 32.032-32.001 32.032z" p-id="2033"/>
|
|
32
30
|
</svg>
|
|
33
|
-
`,t.onclick=this.onQuestionClick.bind(this);let r=document.createElement("div");r.className=rl,r.innerText=`${kt()?"\u8BE6\u60C5 >":"Detail >"}`,r.onclick=this.onCollapseClick.bind(this);let s=i.content.firstChild,n=s.querySelector(`.${Ea}`);return n.appendChild(r),n.appendChild(t),n.appendChild(e),s}addDiaLog(){nl()||(this._dialogNode=this.createDiaLog(),document.body.appendChild(this._dialogNode),this._dialogNode.onclick=this.onConfirm.bind(this),this._dialogNode.querySelector(`.${Oo}`).onclick=i=>i.stopPropagation(),this._bodyPosition=document.body.style.position,document.body.style.position="fixed",C.info("show autoplay dialog"),re.uploadEvent({log:X_}))}deleteDiaLog(){this._dialogNode&&(document.body.removeChild(this._dialogNode),document.body.style.position=this._bodyPosition,this._dialogNode=null)}onConfirm(){C.warn("confirm clicked, try resume stream"),E.emit(A.AUTOPLAY_DIALOG_CLICK_CONFIRM),this.deleteDiaLog()}onCollapseClick(){let i=this._dialogNode.querySelector(`.${sm}`);i.style.visibility=`${this._showDetail?"hidden":"visible"}`,i.style.height=`${this._showDetail?0:"fit-content"}`,this._showDetail=!this._showDetail,this._isCollapseClicked||re.uploadEvent({log:z_}),this._isCollapseClicked=!0}onQuestionClick(){window.open(dm,"_blank"),this._isQuestionClicked||re.uploadEvent({log:Q_}),this._isQuestionClicked=!0}},lm=ol;var _t=class extends di{constructor(e){super(e,p.VIDEO);d(this,"stat",{});d(this,"_calculateTimeout",-1);d(this,"viewMirror",!1);d(this,"objectFit");d(this,"container");d(this,"canvas");this.mode=e.canvas?1:0,this.container=e.container,this.canvas=e.canvas,T(e.viewMirror)||(this.viewMirror=e.viewMirror),T(e.objectFit)||(this.objectFit=e.objectFit),this.initializeElement()}get isPlaying(){var e;return this._state!=="PLAYING"||this.element&&this.element.paused?!1:((e=this.track)==null?void 0:e.readyState)==="live"&&!this.track.muted}initializeElement(){var t;let e=document.createElement(p.VIDEO);this.track&&this.mode!==2&&(e.srcObject=new MediaStream([this.track])),e.muted=!0,e.setAttribute("id",`video_${this.id}`),e.setAttribute("style",this.styleAttribute),this.canvas&&this.canvas.setAttribute("style",this.styleAttribute),e.setAttribute("autoplay","autoplay"),e.setAttribute("playsinline","playsinline"),this.element=e,(t=this.container)==null||t.appendChild(this.elementToRender),this.bindElementEvents(),this.calculateStat()}get styleAttribute(){let e=`width: 100%; height: 100%; object-fit: ${this.objectFit};background-color: black;`;return this.viewMirror&&(e+="transform: scaleX(-1);"),e}setContainer(e){var t;this.container=e,this.track&&this.elementToRender&&((t=this.container)==null||t.appendChild(this.elementToRender))}bindElementEvents(){let e=super.bindElementEvents();this.handleElementEvent=this.handleElementEvent.bind(this),e&&e.add(p.ENTER_PICTURE_IN_PICTURE,this.handleElementEvent).add(p.LEAVE_PICTURE_IN_PICTURE,this.handleElementEvent)}handleTrackEvent(e){var t;super.handleTrackEvent(e),e.type===p.MUTE&&((t=this.stat)!=null&&t.fps)&&(this.stat.fps=0)}handleElementEvent(e){var r,s;if(this.mode===2)return;super.handleElementEvent(e);let t=e.type;if(t===p.PAUSE&&(this.container&&document.getElementById(this.container.id)||this._log.warn(`${this.kind} player has been remove, element ID: ${(r=this.container)==null?void 0:r.id}`),this.container&&this.container!==document.getElementById(this.container.id)&&(this._pausedRetryCount=Ir,this._log.info(`view container ${(s=this.container)==null?void 0:s.id} is recreated`)),this._pausedRetryCount>0&&!nl()&&(this._log.info(`[${Ir-this._pausedRetryCount+1}/${Ir}] ${this.kind} player auto resume when paused`),this.resume(),this._pausedRetryCount--),this.stat.fps&&(this.stat.fps=0)),this.viewMirror&&this.element){let n=this.element.style.transform;t===p.ENTER_PICTURE_IN_PICTURE?this.element.style.transform=n.replace("scaleX(-1)",""):t===p.LEAVE_PICTURE_IN_PICTURE&&!n.includes("scaleX")&&(this.element.style.transform=`${n} scaleX(-1)`)}}setCanvas(e,t=1){var r,s,n,a;this.canvas!==e&&((r=this.canvas)==null||r.remove(),e==null||e.setAttribute("style",this.styleAttribute),this.canvas=e,this.mode=e?t:0,this.mode===2&&this.setTrack(e.captureStream().getVideoTracks()[0]),e?((s=this.element)==null||s.remove(),(n=this.container)==null||n.appendChild(e)):this.element&&((a=this.container)==null||a.appendChild(this.element)))}setAttr(e){let t=Object.assign({autoplay:"autoplay",playsinline:"playsinline",muted:!0},e);t.style=Object.assign({width:"100%",height:"100%"},t.style),super.setAttr(t)}get mirror(){return this.viewMirror}setRect(e,t){this.elementToRender&&(this.elementToRender.style.width=`${e}px`,this.elementToRender.style.height=`${t}px`)}setViewMirror(e){this.elementToRender&&(this.elementToRender.style.transform=e?"scaleX(-1)":""),this.viewMirror=e}setObjectFit(e){this.elementToRender&&(this.elementToRender.style.objectFit=`${e}`),this.objectFit=e}setPoster(e){this.element&&(this.element.poster=e)}stop(e=0){var t;super.stop(e),(t=this.canvas)==null||t.remove()}play(){return this.element?this.elementToRender&&this.elementToRender.parentElement!==this.container&&this.container&&this.container.append(this.elementToRender):this.initializeElement(),this.mode===2?Promise.resolve():super.play()}get elementToRender(){return this.canvas||this.element}setTrack(e){e!==this.track&&(this.unbindTrackEvents(),this.track=e,this.emit(ue.MEDIA_TRACK_CHANGED,e),e!==null&&(this.bindTrackEvents(),this.element&&this.mode!==2&&(this.element.srcObject=new MediaStream([e]),this.element.remove()),this.elementToRender&&this.elementToRender.parentElement!==this.container&&this.container&&this.container.append(this.elementToRender)))}getVideoFrame(){if(this.canvas)return this.canvas.toDataURL("image/png");if(!this.element)return"";let e=document.createElement("canvas");return e.width=this.element.videoWidth,e.height=this.element.videoHeight,e.getContext("2d").drawImage(this.element,0,0),e.toDataURL("image/png")}getElement(){return this.element}calculateStat(){try{if(Vr()&&this.element&&this._calculateTimeout<0){let e=0,t=null,r=(s,n)=>{this.stat.width=n.width,this.stat.height=n.height,t&&(this.stat.fps=Math.round((n.presentedFrames-t.presentedFrames)/(s-e)*1e3)),e=s,t=n,this._calculateTimeout=-1,this.element&&(this._calculateTimeout=setTimeout(()=>{var a;return(a=this.element)==null?void 0:a.requestVideoFrameCallback(r)},2e3))};this.element.requestVideoFrameCallback(r)}}catch(e){this._log.warn("init stat failed",e)}}};function Bi(o,i){return f(this,null,function*(){if(!o.audioWorklet)return Promise.reject("audioWorklet is not supported");try{yield o.audioWorklet.addModule(i),C.info("worklet addModule success")}catch(e){throw C.info(`worklet addModule catch error. ${e.message}`),e}})}var Gs;typeof AudioContext!="undefined"?Gs=AudioContext:typeof webkitAudioContext!="undefined"?Gs=webkitAudioContext:typeof mozAudioContext!="undefined"&&(Gs=mozAudioContext);var Ht,um=-1;hm();function hm(){try{if(Ht)return;Ht=new Gs({sampleRate:48e3}),Ht.onstatechange=()=>{C.info(`context state: ${Ht.state}${Ht.state!=="running"?` visibilityState: ${document.visibilityState}`:""}`),Mo()},clearTimeout(um)}catch(o){C.error(`initAudioContext failed: ${o} typeof AudioContextClass: ${typeof Gs}`),um=setTimeout(hm,1e3)}}var Mo=()=>{Ht.state==="suspended"?(ko(),document.addEventListener("click",Mo)):Ht.state==="interrupted"?ko():(document.removeEventListener("visibilitychange",Mo),document.removeEventListener("click",Mo))},al=0,cl=-1;function ko(){return new Promise((o,i)=>{if(Ht.state==="running")return o();Date.now()-al<1e3?(clearTimeout(cl),cl=setTimeout(()=>{al=Date.now(),Ht.resume().then(o,i)},1e3)):(clearTimeout(cl),al=Date.now(),Ht.resume().then(o,i))}).catch(o=>{C.warn(`context resume failed: ${o}`),document.addEventListener("visibilitychange",Mo)})}document.addEventListener("click",Mo);var Ee=o=>Ht;var De=class{constructor(i){this.name=i;d(this,"node");d(this,"node2");d(this,"pre",new Set);d(this,"next",new Set);d(this,"context");d(this,"connectedNodes",new Set);d(this,"nextInputChannelMap",new Map);d(this,"_channelCount",1)}get channelCount(){return this._channelCount}set channelCount(i){this._channelCount=i,this.setChannelCount(this.node,i),this.setChannelCount(this.node2,i),this.next.forEach(e=>e.channelCount=i)}setChannelCount(i,e){!i||i instanceof ScriptProcessorNode||(i.channelCountMode="explicit",i.channelCount=e||this.channelCount||1)}setContext(i){this.context=i,this.node&&i.addMixWeight()}removeContext(){var i;this.node&&((i=this.context)==null||i.reduceMixWeight()),delete this.context}replaceNode(i){var e;if(i!==this.node)try{this.node?this._disconnect():(e=this.context)==null||e.addMixWeight(),this.node=i,this.setChannelCount(this.node),this.preNodeReconnect(),this.reconnect()}catch(t){C.error(t)}}setNode(i,e){var t;if(!this.node)try{(t=this.context)==null||t.addMixWeight(),this.node=i,this.setChannelCount(this.node),e&&(this.node2=e,this.setChannelCount(this.node2)),this.preNodeReconnect(),this.reconnect(),b.addSuccessEvent({key:502701})}catch(r){C.error(r),b.addFailedEvent({key:502701,error:r})}}deleteNode(){var i;if(this.node)try{this._disconnect(),delete this.node,delete this.node2,(i=this.context)==null||i.reduceMixWeight(),this.preNodeReconnect(),b.addSuccessEvent({key:502702})}catch(e){C.error(e),b.addFailedEvent({key:502702,error:e})}}preNodeReconnect(){this.pre.forEach(i=>{i.node?i.reconnect():i.preNodeReconnect()})}connectNext(i){this.next.forEach(e=>{let t=this.nextInputChannelMap.get(e);i._connect(e.node,t)||e.connectNext(i)})}_connect(i,e=0){return!this.node||!i?!1:((this.node2||this.node).connect(i,0,e),this.connectedNodes.add(i),!0)}_disconnect(){this.connectedNodes.forEach(i=>{var e;return(e=this.node2||this.node)==null?void 0:e.disconnect(i)}),this.connectedNodes.clear()}reconnect(){this._disconnect(),this.connectNext(this)}pipeTo(i,e=0){return this.next.add(i),i.pre.add(this),this.nextInputChannelMap.set(i,e),i}},Ia=class extends De{constructor(e=256){super();this.fftSize=e;d(this,"dataArray",new Uint8Array(0))}setNode(e){e.fftSize=this.fftSize,this.dataArray=new Uint8Array(e.frequencyBinCount),super.setNode(e)}getByteTimeDomainData(){var e;return(e=this.node)==null||e.getByteTimeDomainData(this.dataArray),this.dataArray}get level(){var e;return(e=this.node)==null||e.getByteTimeDomainData(this.dataArray),Math.max(...this.dataArray)/128-1}get timeDomainPathData(){let e=this.getByteTimeDomainData(),t=1,r=0,s=0,n=`M${r},${s}`;for(let a=0;a<e.length;a++)s=e[a]/128*100/2,n+=`L${r},${s}`,r+=t;return n}},Ws=class{constructor(){d(this,"source",new De);d(this,"gain",new De);d(this,"destination",new De)}get volume(){var i;return((i=this.gain.node)==null?void 0:i.gain.value)||1}setVolume(i){if(i===1){this.gain.node&&this.gain.deleteNode();return}this.gain.node||this.gain.setNode(Ee().createGain()),this.gain.node.gain.value=i}replaceSource(i){this.source.replaceNode(Js(i))}get track(){var i;return(i=this.stream)==null?void 0:i.getAudioTracks()[0]}get stream(){var i;return(i=this.destination.node)==null?void 0:i.stream}},xo=class extends Ws{constructor(e){super();this.context=e;d(this,"aec",new De("aec"));d(this,"mixNode",new De("mixNode"));d(this,"silentNode",new De("silentNode"));d(this,"denoiser",new De("denoiser"));d(this,"voiceChanger",new De("voiceChanger"));this.source.pipeTo(this.aec).pipeTo(this.denoiser).pipeTo(this.voiceChanger).pipeTo(this.gain).pipeTo(this.destination),this.silentNode.pipeTo(this.mixNode).pipeTo(this.aec,1)}connect(){this.context.inputs.has(this)||(this.destination.setNode(this.context.destination),this.source.setContext(this.context),this.aec.setContext(this.context),this.silentNode.setContext(this.context),this.mixNode.setContext(this.context),this.denoiser.setContext(this.context),this.voiceChanger.setContext(this.context),this.gain.setContext(this.context),this.context.inputs.add(this))}disconnect(){this.context.inputs.has(this)&&(this.destination.deleteNode(),this.source.removeContext(),this.aec.removeContext(),this.silentNode.removeContext(),this.mixNode.removeContext(),this.denoiser.removeContext(),this.voiceChanger.removeContext(),this.gain.removeContext(),this.context.inputs.delete(this))}remove(){this.gain.deleteNode(),this.aec.deleteNode(),this.silentNode.deleteNode(),this.mixNode.deleteNode(),this.denoiser.deleteNode(),this.voiceChanger.deleteNode(),this.source.deleteNode(),this.disconnect()}setVolume(e){if(e===1){this.gain.node&&this.gain.deleteNode();return}this.gain.node||this.gain.setNode(this.context.audioContext.createGain()),this.gain.node.gain.value=e}},Aa=class{constructor(){d(this,"audioContext",Ee("audio-mixer"));d(this,"destination",this.audioContext.createMediaStreamDestination());d(this,"inputs",new Set);d(this,"mixWeight",0);this.destination.channelCount=1}addMixWeight(i=1){this.mixWeight+=i,this.mixWeight-1===i+1>>1&&this.mixOnChange()}reduceMixWeight(i=1){this.addMixWeight(-i)}close(){this.inputs.forEach(i=>i.remove())}get mixTrack(){return this.destination.stream.getAudioTracks()[0]}},mm=new WeakMap;function Js(o){let i=mm.get(o);if(i)return i;let e=Ee();if(o instanceof HTMLAudioElement)i=e.createMediaElementSource(o);else if(o instanceof MediaStreamTrack)i=e.createMediaStreamSource(new MediaStream([o]));else return o;return mm.set(o,i),i}var gt=class gt{constructor(i){d(this,"_volume",0);d(this,"_volumeDb",0);d(this,"_log");d(this,"_scriptProcessorNode",null);d(this,"_audioWorkletNode",null);d(this,"_interval",200);d(this,"ready",this.preload());let{log:e}=i;this._log=e,E.on(A.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}static get isRunning(){return Date.now()-gt.lastMessageTime<2e3}get node(){return this._audioWorkletNode||this._scriptProcessorNode}preload(){if(!gt.workletReady){let i='class VolumeMeterWorklet extends AudioWorkletProcessor{constructor(){super(),this.volume=0,this.intervalTime=200,this.tick=200,this.isStop=!1,this.cache=[],this.sentFirstInfo1=!1,this.unmute=!1,this.port.onmessage=t=>{var e=t.data;switch(e.name){case"chunk":this.cache.push(...e.data),this.sentFirstInfo1||(this.port.postMessage({cl:e.data.length}),this.sentFirstInfo1=!0);break;case"setIntervalTime":this.intervalTime=e.intervalTime;break;case"unmute":this.unmute=!0;break;case"stop":this.isStop=!0}}}process(t,s){t=t[0],s=s[0];if(t||s){if(this.isStop)return!1;var i=s&&s[0]?s[0].length:0,h=this.cache.length,a=(i<h?(s[0].set(this.cache.slice(0,i)),this.cache=this.cache.slice(i)):this.unmute&&s[0].set(t[0]),(i<h?s:t)[0]);if(a){let e=0;for(let t=0;t<a.length;++t)e=Math.max(Math.abs(a[t]),e);s=a.reduce((t,e)=>t+e*e,0)/a.length;this.volume=e,this.tick-=a.length,this.tick<0&&(this.tick+=this.intervalTime/1e3*sampleRate,this.port.postMessage({volume:this.volume,volumeDb:Math.max(10*Math.log10(s)+100,0)/100,cacheLen:h,outputLen:i}))}}return!0}}registerProcessor("volume-meter",VolumeMeterWorklet);';gt.workletReady=Bi(gt.audioContext,URL.createObjectURL(new Blob([i],{type:"application/javascript"})))}return gt.workletReady.then(()=>this.initAudioWorklet()).catch(i=>(this._log.error(`volumeMeter preload error: ${i}`),this.initScriptProcessor()))}initAudioWorklet(){if(!this._audioWorkletNode)try{this._audioWorkletNode=new AudioWorkletNode(gt.audioContext,"volume-meter");let i=!1;this._audioWorkletNode.port.onmessage=e=>{gt.lastMessageTime=Date.now(),this._volume=e.data.volume||0,this._volumeDb=e.data.volumeDb||0,!i&&e.data.cacheLen&&e.data.outputLen&&(this._log.warn("worklet play success"),i=!0)},this.handleAudioLevelInterval({interval:this._interval})}catch(i){this._log.error(`volumeMeter init audio worklet error: ${i}`),re.logFailedEvent({userId:this._log.userId,eventType:ot.LOAD_WORKLET,error:i}),this.initScriptProcessor()}}initScriptProcessor(){if(!this._scriptProcessorNode)try{this._scriptProcessorNode=Ee("volume-meter").createScriptProcessor(2048,1,1),this._scriptProcessorNode.onaudioprocess=i=>{gt.lastMessageTime=Date.now();let e=i.inputBuffer.getChannelData(0),t=0;for(let r=0;r<e.length;++r)t+=e[r]*e[r];this._volume=Math.sqrt(t/e.length)||0}}catch(i){this._log.error(`volumeMeter init script processor error: ${i}`)}}destroy(){this._scriptProcessorNode&&(this._scriptProcessorNode.onaudioprocess=null),this._audioWorkletNode&&(this._audioWorkletNode.port.postMessage({name:"stop"}),this._audioWorkletNode.port.onmessage=null),this._audioWorkletNode=null,this._scriptProcessorNode=null,E.off(A.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}getInternalAudioLevel(){return this._volume}getCalculatedVolume(){return parseFloat(this._volume.toFixed(2))}getVolumeDb(){return Math.floor(this._volumeDb*100)}handleAudioLevelInterval(i){var t;let{interval:e}=i;this._interval=e,(t=this._audioWorkletNode)==null||t.port.postMessage({name:"setIntervalTime",intervalTime:e})}};d(gt,"lastMessageTime",0),d(gt,"audioContext",Ee("volume-meter")),d(gt,"workletReady");var Ra=gt,Ca=class extends De{constructor(e){super();d(this,"_volumeMeter");this._volumeMeter=new Ra(e)}deleteNode(){super.deleteNode(),this._volumeMeter.destroy()}init(){return f(this,null,function*(){yield this._volumeMeter.preload(),this.setNode(this._volumeMeter.node)})}getCalculatedVolume(){return this._volumeMeter.getCalculatedVolume()}getInternalAudioLevel(){return this._volumeMeter.getInternalAudioLevel()}getVolumeDb(){return this._volumeMeter.getVolumeDb()}write(e){if(this.node){let t=e.allocationSize({planeIndex:0}),r=new Float32Array(t>>2);e.copyTo(r,{planeIndex:0}),this.node.port.postMessage({name:"chunk",data:r},[r.buffer]),e.close()}}},Ur=Ra;var gm=$e(Ye(),1);var fm=o=>i=>i.deviceId===o;var js=class{constructor(i,e="Input"){d(this,"kind");d(this,"type");d(this,"devices",[]);this.kind=i,this.type=e}update(i,e){let t=i.filter(r=>r.kind===`${this.kind}${this.type.toLocaleLowerCase()}`);if(this.devices.length===1&&Po(this.devices[0])){this.devices=t;return}e&&(t.forEach(r=>{if(r.deviceId&&!this.devices.find(fm(r.deviceId))){let s=`${this.kind}${this.type}Added`;C.warn(`${s}: ${JSON.stringify(r)}`),e.emit(s,r)}}),this.devices.forEach(r=>{if(r.deviceId&&!t.find(fm(r.deviceId))){let s=`${this.kind}${this.type}Removed`;C.warn(`${s}: ${JSON.stringify(r)}`),e.emit(s,r)}})),this.devices=t}hasDevice(i){return!!this.devices.find(e=>e.deviceId===i)}},dl=class extends gm.EventEmitter{constructor(){super();d(this,"audioInputs",new js(p.AUDIO));d(this,"videoInputs",new js(p.VIDEO));d(this,"audioOutputs",new js(p.AUDIO,"Output"));this.init(),navigator.mediaDevices&&(navigator.mediaDevices.addEventListener&&navigator.mediaDevices.addEventListener("devicechange",()=>this.update()),"ondevicechange"in navigator.mediaDevices||se.run("interval",()=>{this.update()},{delay:1e4}))}init(){ya().then(e=>{this.audioInputs.update(e),this.videoInputs.update(e),this.audioOutputs.update(e)})}update(){return f(this,arguments,function*(e=0){let t=yield ya(e);return this.audioInputs.update(t,this),this.videoInputs.update(t,this),this.audioOutputs.update(t,this),this})}},Le=os||io?null:new dl;function Po(o){return o.deviceId===o.groupId&&o.groupId===""}function ya(){return f(this,arguments,function*(o=0){if(wi()||!ha())return[];let i=yield navigator.mediaDevices.enumerateDevices();if(o!==0){let e={audio:!1,video:!1};if(i.forEach(t=>{Po(t)&&(t.kind===p.AUDIO_INPUT?e.audio=!0:t.kind===p.VIDEO_INPUT&&(e.video=!0))}),o===2&&(e.audio=!1),o===1&&(e.video=!1),e.audio||e.video){let t;try{t=yield navigator.mediaDevices.getUserMedia(e),e.audio&&ko()}catch(r){C.debug("capture before getDevices failed: ",r)}i=yield navigator.mediaDevices.enumerateDevices(),t==null||t.getTracks().forEach(r=>r.stop())}}return i.map((e,t)=>{let r={kind:e.kind,deviceId:e.deviceId,groupId:e.groupId,label:e.label||`${e.kind}_${t}`};return e.deviceId.length>0&&ll.add(`${e.deviceId}_${e.kind}`),e.getCapabilities&&(r.getCapabilities=()=>e.getCapabilities()),r})})}function dt(o=!1){return Le.update(o?1:0).then(i=>i.audioInputs.devices)}function Tt(o=!1){return Le.update(o?2:0).then(i=>i.videoInputs.devices)}var _m=!1;function Tm(){return f(this,null,function*(){try{_m||(_m=!0,C.info(`speakers:${(yield lr()).map(o=>` ${o.deviceId.slice(0,8)}: ${o.label}`)}`))}catch(o){}})}function lr(o=!1){return f(this,null,function*(){return(Ie||Pe)&&(o=!1),Le.update(o?1:0).then(i=>i.audioOutputs.devices)})}var ll=new Set;function Em(o){if(o instanceof CanvasCaptureMediaStreamTrack||!(o instanceof MediaStreamTrack))return!1;let i=o.label.toLocaleLowerCase();if(i.includes("camera")||i.includes("webcam"))return!0;let t=`${((o==null?void 0:o.getSettings())||{}).deviceId}_${p.VIDEO_INPUT}`;return!!ll.has(t)}function Sm(o){if(o instanceof CanvasCaptureMediaStreamTrack||!(o instanceof MediaStreamTrack))return!1;let i=o.label.toLocaleLowerCase();if(i.includes("mic")||i.includes("\u9EA6\u514B\u98CE"))return!0;let t=`${((o==null?void 0:o.getSettings())||{}).deviceId}_${p.AUDIO_INPUT}`;return!!ll.has(t)}function ul(o,i){return f(this,null,function*(){let t=(yield dt()).find(r=>r.deviceId===Ar);return!i&&(t==null?void 0:t.groupId)===o||(t==null?void 0:t.groupId)===o&&t.label===i})}function Im(s){return f(this,arguments,function*({newDeviceId:o,oldDeviceId:i,oldGroupId:e,oldLabel:t,kind:r}){return o!==i?!1:r===p.AUDIO&&o===Ar?yield ul(e,t):!0})}var ba,hl=class extends Ws{constructor(e){super();this.log=e;d(this,"volumeMeter");d(this,"volumeDestination");d(this,"analyser",new Ia);this.volumeMeter=new Ca({log:this.log}),this.volumeDestination=new De,this.volumeMeter.pipeTo(this.volumeDestination)}destroy(){this.gain.deleteNode(),this.volumeMeter.deleteNode(),this.analyser.deleteNode(),this.source.deleteNode(),this.destination.deleteNode(),this.volumeDestination.deleteNode()}},Na=class o extends di{constructor(e){super(e,p.AUDIO);d(this,"_outputDeviceId");d(this,"_volume",1);d(this,"_destination",Ee("player").createMediaStreamDestination());d(this,"pipeline");d(this,"volumeMeterMode","worklet");this.mode=0,this.pipeline=new hl(this._log)}getMediaStream(){return this.pipeline.stream||(this.track?new MediaStream([this.track]):null)}initializeElement(e){if((Kt==="15.2"||Kt==="15.3"||Kt==="15.4")&&this.muted){this._log.info("audioElement is muted.");return}let r=ba||new Audio;r.setAttribute("autoplay","autoplay"),r.srcObject=this.getMediaStream(),r.muted=this.muted,this.element=r,j(e)&&(this.element.volume=Math.min(Math.max(e,0),1)),r===ba&&(ba=void 0),this.bindElementEvents()}play(e){return f(this,null,function*(){if(this.track)return this.pipeline.source.node||this.pipeline.replaceSource(this.track),this.element||this.initializeElement(e==null?void 0:e.volume),this._outputDeviceId&&(yield this.setSinkId(this._outputDeviceId)),this.volumeMeterMode==="worklet"?this.pipeline.volumeMeter.init():this.volumeMeterMode==="analyser"&&this.pipeline.analyser.setNode(Ee("player").createAnalyser()),Tm(),He(o.prototype,this,"play").call(this)})}stop(e=0){this.pipeline.destroy(),super.stop(e)}setSinkId(e){return f(this,null,function*(){var t,r;this._outputDeviceId!==e&&(this._outputDeviceId=e),this.element&&this.element.sinkId!==e&&(yield(r=(t=this.element).setSinkId)==null?void 0:r.call(t,e))})}get useDestination(){return!!this.pipeline.stream}setLoop(e){this.element&&(this.element.loop=e)}getAudioLevel(){return this.pipeline.volumeMeter.getCalculatedVolume()}getInternalAudioLevel(){return this.pipeline.volumeMeter.getInternalAudioLevel()}},va=class extends Na{setTrack(i){this.track!==i&&(this.unbindTrackEvents(),this.track=i,this.emit(ue.MEDIA_TRACK_CHANGED,i),i&&(this.bindTrackEvents(),this.element&&(this.element.srcObject=new MediaStream([i]))))}setVolume(i){this._volume=i,this.element&&(this.element.volume=i)}},Da=class extends Na{constructor(e){super(e);d(this,"_sourceElement");d(this,"_output",new De);this.pipeline.source.pipeTo(this.pipeline.gain),this.pipeline.gain.pipeTo(this.pipeline.volumeMeter).pipeTo(this._output),this.pipeline.gain.pipeTo(this.pipeline.destination)}setOutput(){this.mode=1,this._output.setNode(Ee("player").destination)}write(e){this.pipeline.volumeMeter.write(e)}setTrack(e){var t,r,s;((r=(t=this.element)==null?void 0:t.error)==null?void 0:r.code)!==MediaError.MEDIA_ERR_DECODE&&this.track!==e&&(this.unbindTrackEvents(),this.track=e,this.emit(ue.MEDIA_TRACK_CHANGED,e),e?(this.bindTrackEvents(),this._sourceElement?this._sourceElement.srcObject=new MediaStream([e]):!this.useDestination&&this.element&&(this.element.srcObject=new MediaStream([e])),this.pipeline.source.channelCount=((s=e.getSettings())==null?void 0:s.channelCount)||1,this.pipeline.replaceSource(e)):this.pipeline.source.deleteNode())}setVolume(e){this._volume=e,this.useDestination?(this.pipeline.setVolume(e),this._log.info(`set pipeline volume: ${e}`)):e<=1?this.element?(this._log.info(`set element volume: ${e}`),this.element.volume=e):this._log.info("set element volume: no element"):Ie||(this._log.info(`start set pipeline volume: ${e}`),this.pipeline.setVolume(e),this.element&&!this._sourceElement&&(this.pipeline.destination.setNode(this._destination),ve(this.element),this._sourceElement=this.element,this._sourceElement.muted=!0,this.element=null,this.play()))}stop(e=0){this.pipeline.destroy();let t=this._sourceElement||this.element;t&&nr&&(ba=t),this._sourceElement&&(this._sourceElement.srcObject=null,delete this._sourceElement),super.stop(e)}};var Br=class extends H{constructor({userId:e,sdkAppId:t,mediaType:r,room:s,PlayerClass:n=r===1?Da:_t}){var a;super();d(this,"id",bs());d(this,"userId","");d(this,"isRemote");d(this,"mediaType");d(this,"room");d(this,"user");d(this,"_log");d(this,"_inputTrack");d(this,"_outputTrack");d(this,"isPlayCalled");d(this,"container",null);d(this,"player");d(this,"subVideoPlayerMap");d(this,"muted",!1);d(this,"abortCtrl");d(this,"objectFit","cover");d(this,"mirror");d(this,"rotation");d(this,"isScreen",!1);d(this,"manager");d(this,"trackSettings");d(this,"isFirstVideoFrameEmitted",!1);this.userId=e||"",this.mediaType=r,this._log=C.createLogger({id:`${this.kind[0]}t`,userId:(a=s||this.room)==null?void 0:a.userId,remoteUserId:this instanceof Fi?void 0:this.userId,sdkAppId:t,type:this.mediaType===2?"auxiliary":"main",isLocal:this instanceof Fi}),this.player=new n({id:this.userId||this.id,track:null,muted:!1,container:null,log:this._log}),this.player.on(ue.PLAYER_STATE_CHANGED,c=>{E.emit(A.PLAYER_STATE_CHANGED,N({track:this},c)),this.emit("player-state-changed",c)}),this.kind===p.VIDEO&&(this.player.on(ue.LOADED_DATA,()=>{this.emitFirstVideoFrameEvent(ue.LOADED_DATA),E.emit(A.VIDEO_LOADED_DATA,{track:this})}),this.player.on(ue.LOADED_META_DATA,()=>{this.emitFirstVideoFrameEvent(ue.LOADED_META_DATA)}),this.player.on(ue.MEDIA_TRACK_CHANGED,c=>{var l;(l=this.subVideoPlayerMap)==null||l.forEach(h=>h.setTrack(c))})),this.onTrackMuted=this.onTrackMuted.bind(this),this.onTrackUnmuted=this.onTrackUnmuted.bind(this),this.onTrackEnded=this.onTrackEnded.bind(this),this.onPlayerError&&this.player.on(ue.ERROR,this.onPlayerError.bind(this))}get log(){return this._log||C}get kind(){return this.mediaType===1?p.AUDIO:p.VIDEO}get strMediaType(){return this.mediaType===4?p.VIDEO:this.mediaType===2?p.SCREEN:p.AUDIO}get streamType(){return(this.mediaType&2)===0?"main":"auxiliary"}get isMediaTrackActive(){return this.mediaTrack?!this.mediaTrack.muted&&this.mediaTrack.readyState==="live"&&this.mediaTrack.enabled:!1}play(e,t){return f(this,null,function*(){let r=Se(e)?e[0]:e;if(this.isPlayCalled){this.log.info(`play update options: ${JSON.stringify(t)}`),t&&!T(t.muted)&&this.setPlayerMute(t.muted),t&&!T(t.objectFit)&&(this.objectFit=t.objectFit),this.player instanceof _t&&(this.player.setObjectFit(this.objectFit),this.container!==r&&r&&(this.container=r,this.player.setContainer(r)),Se(e)&&e.length>=1&&(yield this.playSubContainer(e.slice(1),t)));return}if(t&&!T(t.muted)?this.setPlayerMute(t.muted):(!this.isRemote||this.kind===p.VIDEO)&&this.setPlayerMute(!0),t&&!T(t.objectFit)&&(this.objectFit=t.objectFit),this.player instanceof _t&&(this.player.setObjectFit(this.objectFit),t&&!T(t.poster)&&this.player.setPoster(t.poster)),this.isPlayCalled=!0,r&&(this.container=r,this.player instanceof _t&&this.player.setContainer(r)),E.emit(A.PLAY_TRACK_START,{track:this}),!this._outputTrack){this.log.info("play has not mediaTrack, abort");return}this._log.info(`play with options: ${JSON.stringify(t)}`);try{this.player.setTrack(this.playerMediaTrack),yield this.player.play(t),Se(e)&&e.length>1&&(yield this.playSubContainer(e.slice(1),t))}catch(s){throw this.handleAutoPlayFailed(s),s}})}setMirror(e,t){if(this.isScreen||this.kind!==p.VIDEO||T(e)||e===this.mirror)return;this.mirror=e;let r=this.player;t&&(r=t);let s=this.manager;if(me(this.mirror)){r.setViewMirror(this.mirror),!this.isRemote&&s&&(s.mirror=!1);return}switch(this.mirror){case"view":{s&&(s.mirror=!1),r.setViewMirror(!0);break}case"publish":{s&&(s.mirror=!0),r.setViewMirror(!0);break}case"both":s&&(s.mirror=!0),r.setViewMirror(!1)}}playSubContainer(e,t){return f(this,null,function*(){if(!this._outputTrack||this.kind===p.AUDIO)return;this.subVideoPlayerMap||(this.subVideoPlayerMap=new Map),this.subVideoPlayerMap.forEach((s,n)=>{var a;e.find(c=>n===c)||(s.stop(),(a=this.subVideoPlayerMap)==null||a.delete(n))});for(let[s,n]of e.entries()){let a=this.subVideoPlayerMap.get(n);a?t&&(T(t.objectFit)||a.setObjectFit(t.objectFit)):this.subVideoPlayerMap.set(n,new _t({id:this.userId||this.id,track:this.playerMediaTrack,container:n,muted:this.player.muted,objectFit:this.objectFit,log:this.log.createChild({id:`vp-sub${s+1}`})}))}let r=[...this.subVideoPlayerMap.values()];for(let s of r)s.setViewMirror(this.player.mirror),yield s.play()})}setAudioOutput(e){return this.player.setSinkId(e)}setAudioVolume(e){this.player.setVolume(e)}getAudioLevel(){return this.player.getAudioLevel()||0}getInternalAudioLevel(){var e;return((e=this.player)==null?void 0:e.getInternalAudioLevel())||0}stop(e=!1){this.isPlayCalled&&(this.isPlayCalled=!1,this.player&&(this.log.info(`stop ${this.kind} player`),this.player.stop(nd(this)&&!e?this.jitterBufferDelay:0)),this.subVideoPlayerMap&&this.subVideoPlayerMap.size>0&&this.subVideoPlayerMap.forEach(t=>{t.stop()}),this.container=null)}resume(){return f(this,null,function*(){var e;this.isPlayCalled&&(yield(e=this.player)==null?void 0:e.resume())})}close(){this.log.info("close"),this.isPlayCalled&&this.stop(!0)}setMute(e){this.muted=e,this._inputTrack&&(this._inputTrack.enabled=!e),this._outputTrack&&(this._outputTrack.enabled=!e),this.emit(e?"mute":"unmute",this),E.emit(e?A.TRACK_MUTED:A.TRACK_UNMUTED,{track:this})}setPlayerMute(e){this.player.setMuted(e)}get mediaTrack(){return this._inputTrack||null}get outMediaTrack(){return this._outputTrack||null}get playerMediaTrack(){return this.outMediaTrack}installTrackEvent(e){je(e,e).add(p.MUTE,this.onTrackMuted).add(p.UNMUTE,this.onTrackUnmuted).add(p.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===p.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){ve(e)}setInputMediaStreamTrack(e){var r;let t=this._inputTrack;if(e!==t)return this._inputTrack=e,this.trackSettings=(r=e.getSettings)==null?void 0:r.call(e),e.enabled=!this.muted,t&&this.uninstallTrackEvent(t),this.installTrackEvent(e),this.emit("input-media-track-changed",e||null,t||null),this.manager?this.manager.changeInput(this):this.setOutputMediaStreamTrack(e)}setOutputMediaStreamTrack(e){var r;let t=this._outputTrack;e!==t&&(this.isRemote?this.log.debug("setOutputMediaStreamTrack",e.label):this.log.info("setOutputMediaStreamTrack",(r=e.getSettings)==null?void 0:r.call(e).deviceId,e.label),this._outputTrack=e,this._inputTrack&&(this._outputTrack.contentHint=this._inputTrack.contentHint,this._outputTrack.enabled=this._inputTrack.enabled),this.updatePlayingState(!!e),this.emit("output-media-track-changed",e))}setMediaType(e){this.mediaType=e}updatePlayingState(e){if(this.isPlayCalled){if(e){if(this.player.setTrack(this.playerMediaTrack),this.player.isStopped){this.player.play().catch(t=>this.handleAutoPlayFailed(t)),this.log.info(`playing state updated, play ${this.kind}`);return}}else if(!this.player.isStopped){this.player.stop(nd(this)?this.jitterBufferDelay:0),this.log.info(`playing state updated, stop ${this.kind}`);return}}this.log.debug(`updatePlayingState abort ${this.isPlayCalled} ${e} ${this.player.isStopped}`)}handleAutoPlayFailed(e){if(this.room&&this.room.enableAutoPlayDialog)new lm;else{let t=()=>{this.resume().then(()=>{document.removeEventListener("click",t,!0)})};document.addEventListener("click",t,!0)}this.emit("error",e)}getVideoFrame(){return this.player instanceof _t?this.player.getVideoFrame():""}emitFirstVideoFrameEvent(e){var n,a,c;if(this.isFirstVideoFrameEmitted)return;let t=(n=this.mediaTrack)==null?void 0:n.getSettings(),r=(t==null?void 0:t.width)||((a=this.player.element)==null?void 0:a.videoWidth)||0,s=(t==null?void 0:t.height)||((c=this.player.element)==null?void 0:c.videoHeight)||0;e===ue.LOADED_META_DATA&&!r&&!s||(e===ue.LOADED_DATA&&!r&&!s&&this._log.warn("the dimension of video is 0x0 in first-video-frame event"),this.isFirstVideoFrameEmitted=!0,vi(this.rotation)&&([r,s]=[s,r]),this.emit("first-video-frame",{width:r,height:s,streamType:this.streamType,userId:this.isRemote?this.userId:""}))}onTrackMuted(){this._log.warn(`${this.kind} track is unable to provide media output`)}onTrackUnmuted(){this._log.info(`${this.kind} track is able to provide media output`)}onTrackEnded(){this._log.warn(`${this.kind} track ended`)}};v([Te([],H.INIT,{sync:!0})],Br.prototype,"close",1);var Z_=Object.prototype.hasOwnProperty,{toString:PR}=Object.prototype;function K_(o){if(o==null)return!0;if(typeof o=="boolean")return!1;if(typeof o=="number")return o===0;if(typeof o=="string"||typeof o=="function"||Array.isArray(o))return o.length===0;if(o instanceof Error)return o.message==="";if(Je(o))switch(Object.prototype.toString.call(o)){case"[object File]":case"[object Map]":case"[object Set]":return o.size===0;case"[object Object]":{for(let i in o)if(Z_.call(o,i))return!1;return!0}}return!1}var li=K_;var eg=function(o){return f(this,null,function*(){let i=ig(o);C.info(`getUserMedia with constraints: ${JSON.stringify(i)}`);let e=[],t=[],r=["label","deviceId","groupId"];i.audio&&(e=yield dt(),C.info(`microphones: ${It(e.map(s=>L(N({},s),{groupId:s.groupId.substring(0,8)})),{keysToInclude:r})}`)),i.video&&(t=yield Tt(),C.info(`cameras: ${It(t,{keysToInclude:r})}`));try{let s=yield navigator.mediaDevices.getUserMedia(i);return Xd&&s.getTracks().forEach(n=>{C.info(`${n.kind} capabilities: ${It(n.getCapabilities(),{keysToInclude:Mn})}`)}),i.audio&&ko(),s}catch(s){let{message:n}=s;throw s.name==="NotFoundError"&&(o.video&&t&&t.length===0&&(n=P({key:x.CAMERA_NOT_FOUND})),o.audio&&e&&e.length===0&&(n=P({key:x.MICROPHONE_NOT_FOUND}))),new y({code:I.INITIALIZE_FAILED,name:s.name,message:n,constraint:s.constraint})}})},tg=Yt({retryFunction:eg,settings:{retries:3,timeout:500},onError:({error:o,retry:i,reject:e,retryFuncArgs:t,retriedCount:r})=>{let s=r+1;o.name==="NotReadableError"||o.name==="OverconstrainedError"?(s===1?(t[0].video&&(t[0].maxResolution=!1,(!Pe||t[0].width*t[0].height<=1920*1080)&&t[0].frameRate&&(t[0].frameRate=t[0].frameRate>10?10:5)),t[0].retryWhenExactFailed&&t[0].useExactDeviceId&&(t[0].useExactDeviceId=!1)):s===2?t[0].useDeviceIdOnly=!0:s===3&&!t[0].useExactDeviceId&&(t[0].useTrueAsConstraint=!0),i()):e(o),t[0].microphoneId&&Am(t[0].microphoneId,!1),t[0].cameraId&&Am(t[0].cameraId,!0)},onRetrying:o=>{C.warn(`getUserMedia NotReadableError observed, retrying [${o}/3]`)},onRetryFailed:o=>{re.logFailedEvent({eventType:ot.GET_USER_MEDIA_RETRY,error:o})},onRetrySuccess:o=>{re.logSuccessEvent({eventType:ot.GET_USER_MEDIA_RETRY}),re.uploadEvent({log:`stat-${ot.GET_USER_MEDIA_RETRY}-success-${o}`})}});function Am(o,i){return f(this,null,function*(){let t=(i?yield Tt():yield dt()).find(r=>r.deviceId===o);t&&ne(t.getCapabilities)&&C.warn(It(t.getCapabilities(),{keysToInclude:Mn}))})}function ig(o){return{audio:rg(o),video:og(o)}}function rg(o){if(!o.audio)return!1;if(o.useTrueAsConstraint)return!0;let i={echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,sampleRate:o.sampleRate};return!li(o.microphoneId)&&(i.deviceId=o.useExactDeviceId?{exact:o.microphoneId}:o.microphoneId,o.useDeviceIdOnly)?i:(j(o.channelCount)&&(i.channelCount=o.channelCount),me(o.echoCancellation)&&!o.echoCancellation&&(i.echoCancellation=!1),me(o.noiseSuppression)&&!o.noiseSuppression&&(i.noiseSuppression=!1),me(o.autoGainControl)&&!o.autoGainControl&&(i.autoGainControl=!1),li(i)?!0:i)}function og(o){if(!o.video)return!1;if(o.useTrueAsConstraint)return!0;let{maxResolution:i=!0}=o,e={};return o.cameraId?e.deviceId=o.useExactDeviceId?{exact:o.cameraId}:o.cameraId:o.facingMode&&(e.facingMode=o.facingMode),o.useDeviceIdOnly&&!li(e)?e:(o.width&&(e.width={ideal:o.width},i&&!ae&&(e.width.max=o.width)),o.height&&(e.height={ideal:o.height},i&&!ae&&(e.height.max=o.height)),ae&&Vt&&o.width&&o.height&&o.width*o.height<352*288&&(e.width=o.width,e.height=o.height),o.frameRate&&(e.frameRate=o.frameRate),li(e)?!0:e)}var Rm=tg;function Oa(o){return Q((i,e)=>function(...t){return f(this,null,function*(){return yield o.apply(this,t),i.apply(this,t)})})}function et(o){return Q((i,e)=>function(...t){return f(this,null,function*(){let r=yield i.apply(this,t);return yield o.call(this,...t),r})})}function Ma(o){return Q((i,e)=>function(...t){return f(this,null,function*(){try{return yield i.apply(this,t)}catch(r){o.call(this,r)}})})}function Q(o){return function(i,e,t){return t.value=o(t.value,e),t}}var Cm=(()=>{let o=!1,i=document.visibilityState;return()=>{document.visibilityState!==i&&C.info(`visibility change: ${document.visibilityState}`),!o&&(document.addEventListener("visibilitychange",()=>{C.info(`visibility change: ${document.visibilityState}`),i=document.visibilityState}),o=!0)}})();var sg=0,ka=class{constructor(){d(this,"log",C.createLogger({id:`fq${++sg}`}));d(this,"isRunning",!1);d(this,"queue",[])}get length(){return this.queue.length}get lastQueueItem(){return this.length===0?null:this.queue[this.length-1]}push(i,e=!1){var s,n;let t=N({},i),r=new Promise((a,c)=>{t.resolve=a,t.reject=c});return t.promise=r,e?this.length<=1?this.queue.push(t):(n=(s=this.lastQueueItem)==null?void 0:s.promise)==null||n.then(t.resolve,t.reject):this.queue.push(t),this.log.debug(`push ${this.length}`),this.isRunning||this.callNext(),r}shift(){let i=this.queue.shift();return this.log.debug(`shift ${this.length}`),i}callNext(){if(this.isRunning||this.length===0)return;this.log.debug("callNext ",this.length);let{fn:i,args:e,context:t,resolve:r,reject:s}=this.queue[0];this.isRunning=!0,i.apply(t,e).then(r,s).finally(()=>{this.isRunning=!1,this.shift(),this.callNext()})}},qs=new WeakMap,xa=new WeakMap;function Ct(o=!1){return function(i,e,t){let r=t.value;return t.value=function(...s){let n=qs.get(this)||new ka;return qs.set(this,n),n.push({fn:r,args:s,context:this},o)},t}}function ym(o){return function(i,e,t){let r=t.value;return t.value=function(...s){let n=qs.get(this);if(n){let a=n.queue.filter((c,l)=>{if(l===0)return!0;let h=!0;return c.args.forEach(u=>{s.find(m=>m===u)||(h=!1)}),h?(c.reject(new y({code:I.API_CALL_ABORTED,message:o})),!1):!0});n.queue=a}return r.apply(this,s)},t}}function Pa(o){return function(i,e,t){let r=t.value;return t.value=function(...s){var a,c,l;let n=[];return(c=(a=qs.get(this))==null?void 0:a.queue)==null||c.forEach(h=>n.push(h)),(l=xa.get(this))==null||l.forEach(h=>h==null?void 0:h.queue.forEach(u=>n.push(u))),n.forEach(h=>{h.reject(new y({code:I.API_CALL_ABORTED,message:o}))}),qs.delete(this),xa.delete(this),r.apply(this,s)},t}}function $i(o){return function(i,e,t){let r=t.value,s=n=>o(...n);return t.value=function(...n){let a=xa.get(this)||new Map,c=a.get(s(n))||new ka;return a.set(s(n),c),xa.set(this,a),c.push({fn:r,args:n,context:this})},t}}function lt(o,i){return Q((e,t)=>function(...r){let s=o;try{let n=e.apply(this,r),a=V();return or(n)?n.then(c=>(i?b.addSuccessEvent({key:s,cost:V()-a}):b.addSuccessEvent({key:s}),c)).catch(c=>{throw b.addFailedEvent({key:s,error:c}),c}):(b.addSuccessEvent({key:s}),n)}catch(n){throw b.addFailedEvent({key:s,error:n}),n}})}var Fr=class Fr extends Br{constructor(e,t){super({mediaType:e,PlayerClass:t});d(this,"isRemote",!1);d(this,"deviceId");d(this,"groupId","");d(this,"label","");d(this,"sourceTrack");d(this,"_isRecapturing",!1);d(this,"_lastRecaptureTime",0);d(this,"_onMuteTimeoutId",-1);d(this,"_encodeCheckTimeoutId",-1);d(this,"profile")}get enableEncodeFrame(){return!1}get isPublishing(){return this.state.toString()==="publishing"}get isPublished(){return this.state==="publish"}encodeFrame(e,t){throw new Error("Method not implemented.")}installTrackEvent(e){je(e,e).add(p.MUTE,this.onTrackMuted).add(p.UNMUTE,this.onTrackUnmuted).add(p.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===p.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){ve(e)}setStateToReady(){}capture(e){return f(this,null,function*(){var t;try{let r=V();E.emit(A.LOCAL_TRACK_CAPTURE_START,{track:this});let s;e.customSource?(s=new MediaStream,s.addTrack(e.customSource)):((t=this.mediaTrack)==null||t.stop(),s=yield Rm(e));let n=s.getTracks()[0];return this.sourceTrack=n,yield this.setInputMediaStreamTrack(n),e.customSource||(this.updateDeviceIdInUse(),this.listenDeviceChange()),E.emit(A.LOCAL_TRACK_CAPTURE_SUCCESS,{track:this,cost:V()-r}),s}catch(r){throw E.emit(A.LOCAL_TRACK_CAPTURE_FAILED,{track:this,error:r}),this.log.error(`getUserMedia error observed ${r}`),r}})}setOutputMediaStreamTrack(e){var t;if(super.setOutputMediaStreamTrack(e),this.setStateToReady(),this.isPublishing||this.isPublished)return(t=this.room)==null?void 0:t.replaceTrack(this)}publish(e,t){return this.room=e,this.emit("4",{mediaType:this.strMediaType,state:"starting",prevState:"stopped"}),this.userId=e.userId,this._log.setUserId(e.userId),this._log.setSdkAppId(e.sdkAppId),t}unpublish(){this.room&&this.room.localTracks.delete(this),E.emit(A.LOCAL_TRACK_UNPUBLISHED,{track:this})}updateDeviceIdInUse(){return f(this,null,function*(){if(this.mediaTrack&&si){let{deviceId:e,groupId:t}=this.mediaTrack.getSettings(),{label:r}=this.mediaTrack;(yield Im({newDeviceId:e,oldDeviceId:this.deviceId,oldGroupId:this.groupId,oldLabel:this.label,kind:this.kind}))||(this.deviceId=e,this.label=r,t&&(this.groupId=t),ya().then(n=>{let a=n.find(c=>c.deviceId===e);a&&this.emit("2",a)}))}})}setProfile(e){this.log.info("setProfile",e),Object.assign(this.profile,e)}isNeedToRecapture(e=!1){return!(!this.deviceId||!this.mediaTrack||this.kind===p.AUDIO&&!Sm(this.mediaTrack)||this.kind===p.VIDEO&&!Em(this.mediaTrack)||this._isRecapturing||e&&Vt&&Pe)}onTrackMuted(){if(super.onTrackMuted(),Cm(),!!this.isNeedToRecapture(!0)){if(Date.now()-this._lastRecaptureTime<so){setTimeout(()=>this.onTrackMuted(),so);return}this._onMuteTimeoutId=setTimeout(()=>f(this,null,function*(){var e;if((e=this.mediaTrack)!=null&&e.muted){if((Ie||pe)&&document.visibilityState!=="visible")return;this.recapture(yield this.getRecoverCaptureDeviceId())}}),5e3)}}onTrackUnmuted(){super.onTrackUnmuted(),this._onMuteTimeoutId>0&&clearTimeout(this._onMuteTimeoutId)}onTrackEnded(){return f(this,null,function*(){if(He(Fr.prototype,this,"onTrackEnded").call(this),!!this.isNeedToRecapture()){if(Date.now()-this._lastRecaptureTime<so){setTimeout(()=>this.onTrackEnded(),so);return}this.recapture(yield this.getRecoverCaptureDeviceId())}})}recapture(e){return f(this,null,function*(){var r;if(this._isRecapturing||!this._inputTrack)return;this.log.warn("recapture trying"),(r=this._inputTrack)==null||r.stop(),this._isRecapturing=!0,this._lastRecaptureTime=Date.now();let t={useExactDeviceId:!0};if(e==="user"||e==="environment")t.facingMode=e;else{let s;(this.kind==="audio"?yield dt():yield Tt()).find(a=>a.deviceId===e)&&(s=e),t.deviceId=s}return this.capture(t).then(()=>{this._isRecapturing=!1,this.log.warn("recapture success"),this.emit("1",{deviceId:this.deviceId}),E.emit(A.LOCAL_TRACK_RECAPTURE,{track:this})}).catch(s=>{this._isRecapturing=!1,this.log.warn(`recapture failed ${s.message}`),this.emit("5",s),E.emit(A.LOCAL_TRACK_RECAPTURE,{track:this,error:s})})})}getRecoverCaptureDeviceId(){return f(this,null,function*(){let e=this instanceof qe;if(e&&this.facingMode)return this.facingMode;let{deviceId:t}=this;if(t){let r=(Xs.get(t)||0)+1;if(Xs.set(t,r),r>=3){let s=e?(yield Tt()).find(n=>!Xs.has(n.deviceId)):(yield dt()).find(n=>!Xs.has(n.deviceId));s&&(this.log.warn(`${t} capture fail ${r} times, change new ${s.deviceId}`),t=s.deviceId)}}return t})}stopCapture(){var e;this._inputTrack&&(this._inputTrack.stop(),this.uninstallTrackEvent(this._inputTrack)),(e=this.manager)==null||e.removeInput(this)}close(){super.close(),this.stopCapture()}};v([Te(H.INIT,"ready",{ignoreError:!0,sync:!0})],Fr.prototype,"setStateToReady",1),v([Ct()],Fr.prototype,"capture",1),v([Te("ready","publish",{ignoreError:!0,success(){var t,r;this.room.localTracks.add(this),E.emit(A.LOCAL_TRACK_PUBLISHED,{track:this}),this.emit("4",{mediaType:this.strMediaType,state:"started",prevState:"starting"}),!((((r=(t=this.room)==null?void 0:t.networkQuality)==null?void 0:r.uplinkNetworkQuality)||0)>3)&&(this._encodeCheckTimeoutId=setTimeout(()=>{var n,a;if(!((((a=(n=this.room)==null?void 0:n.networkQuality)==null?void 0:a.uplinkNetworkQuality)||0)>3)&&this.isPublished&&this.isMediaTrackActive){let c=this.kind===p.AUDIO,l=this.stat.bytesSent>0;b[l?"addSuccessEvent":"addFailedEvent"]({key:c?503700:513702}),l||(b.addEnum({key:c?503701:513703,value:ys()}),re.uploadEvent({log:`stat-encode-failed-${this.kind}-${Mr()||xi()}`,userId:this.userId}),this.log.warn("encode failed"),this.emit("6",this))}},5e3))},fail(e){let t="error";if(e.cause instanceof RTCError){let r=e.cause;r.message.includes("timeout")?t="timeout":r.code===I.API_CALL_ABORTED&&(t="api-call")}this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:"starting",reason:t,error:e.cause||e})}}),lt(521714,!1)],Fr.prototype,"publish",1),v([Q(e=>function(){return f(this,null,function*(){let t=this.state==="publish"?"started":"starting";e.call(this),this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:t,reason:"api-call"}),clearTimeout(this._encodeCheckTimeoutId)})}),Te([],"ready",{sync:!0})],Fr.prototype,"unpublish",1);var Fi=Fr,Xs=new Map;E.on(A.SWITCH_DEVICE_SUCCESS,o=>{o.track.deviceId&&Xs.delete(o.track.deviceId)});var Et=class o extends Fi{constructor(e){super(1,va);d(this,"mediaType",1);d(this,"volume",0);d(this,"profile",{echoCancellation:!0,autoGainControl:!0,noiseSuppression:!0,sampleRate:48e3,channelCount:1,bitrate:40});d(this,"playerMuted",!0);d(this,"pipeline");d(this,"earMonitorGainNode",new De);d(this,"_output",new De);d(this,"stat",{bytesSent:0,packetsSent:0,audioLevel:0,totalAudioEnergy:0});d(this,"mixedAudioReferenceMap",new Map);this.manager=e,this.pipeline=new xo(e),this.pipeline.gain.pipeTo(this.earMonitorGainNode).pipeTo(this._output),this.pipeline.gain.pipeTo(this.player.pipeline.volumeMeter),this.handleMicrophoneAdded=this.handleMicrophoneAdded.bind(this),this.handleMicrophoneRemoved=this.handleMicrophoneRemoved.bind(this)}get dbVolume(){return Ur.isRunning?this.player.pipeline.volumeMeter.getVolumeDb():Math.floor(Math.max(10*Math.log10(this.volume)+100,0))}getAudioLevel(){let e=(this.volume||super.getAudioLevel())*this.captureVolume;return e>1?1:e}setInputMediaStreamTrack(e){return f(this,null,function*(){let t=this.trackSettings||{};b.addEnum({key:501701,value:t.channelCount||0,useUV:!1}),b.addEnum({key:501702,value:t.sampleRate||0,useUV:!1}),b.addEnum({key:502700,value:0});let{sampleRate:r,channelCount:s}=t;this._log.info(`local audio track input ${JSON.stringify({sampleRate:r,channelCount:s})}`),this.pipeline.source.channelCount=s||1,this.pipeline.replaceSource(e),yield He(o.prototype,this,"setInputMediaStreamTrack").call(this,e),this.updatePlayingState(!!e)})}capture({deviceId:e,customSource:t,useExactDeviceId:r=!0,retryWhenExactFailed:s=!0}){return super.capture({video:!1,audio:!0,microphoneId:e,echoCancellation:this.profile.echoCancellation,autoGainControl:this.profile.autoGainControl,noiseSuppression:this.profile.noiseSuppression,sampleRate:this.profile.sampleRate,channelCount:this.profile.channelCount,useExactDeviceId:r,retryWhenExactFailed:s,customSource:t})}switchDevice(e){return f(this,null,function*(){if(this.mediaTrack){if(this.deviceId===e)if(e===Ar){if(yield ul(this.groupId,this.label))return}else return;try{this.log.info(`switchDevice audio to: ${e}`),this.mediaTrack&&this.mediaTrack.stop(),yield this.capture({deviceId:e,useExactDeviceId:!0,retryWhenExactFailed:!1}),E.emit(A.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch microphone success")}catch(t){throw this.log.error(`switch microphone failed ${t}`),this.deviceId&&this.recapture(this.deviceId),t}}})}listenDeviceChange(){Le&&!Le.listeners("audioInputRemoved").includes(this.handleMicrophoneRemoved)&&Le.on("audioInputRemoved",this.handleMicrophoneRemoved,this)}handleMicrophoneRemoved(e){return f(this,null,function*(){if(e.deviceId===this.deviceId){this.log.warn(`current microphone is lost: ${JSON.stringify(e)}`),Ae(this.userId,{eventId:2003,param1:6,streamType:1});let t=yield dt();t[0]?this.recapture(t[0].deviceId):Le.on("audioInputAdded",this.handleMicrophoneAdded,this)}})}handleMicrophoneAdded(e){this.log.warn(`microphone added: ${JSON.stringify(e)}`),this.recapture(e.deviceId)}update3A(s){return f(this,arguments,function*({echoCancellation:e,noiseSuppression:t,autoGainControl:r}){let n=this.sourceTrack||this.mediaTrack;if(!n)return;let a=n.getConstraints(),c=!1;!T(e)&&e!==this.profile.echoCancellation&&(this.profile.echoCancellation=e,a.echoCancellation=e,c=!0),!T(t)&&t!==this.profile.noiseSuppression&&(this.profile.noiseSuppression=t,a.noiseSuppression=t,c=!0),!T(r)&&r!==this.profile.autoGainControl&&(this.profile.autoGainControl=r,a.autoGainControl=r,c=!0),c&&(ae||Pe?yield n.applyConstraints(a).catch(l=>this._log.warn("update3A failed: ",l)):this.deviceId&&(yield this.recapture(this.deviceId)))})}get captureVolume(){return this.pipeline.volume}setCaptureVolume(e){this.pipeline.setVolume(e/100),this.pipeline.gain.node&&b.addEnum({key:502700,value:2})}setAudioVolume(e){super.setAudioVolume(0),Ie&&this.player.setMuted(!0),this.earMonitorGainNode.node||(this.earMonitorGainNode.setNode(Ee().createGain()),this._output.setNode(Ee().destination)),this.earMonitorGainNode.node.gain.value=e}enableTrackANS(e){return this.update3A({noiseSuppression:e})}enableTrackAEC(e){if(this.sourceTrack&&!(Pe||Ie))return this.update3A({echoCancellation:e})}addDenoiser(e){var t;if(st<=92&&((t=this.trackSettings)==null?void 0:t.sampleRate)!==48e3){this._log.warn("denoiser only support sampleRate 48000 before chrome 93");return}b.addEnum({key:502700,value:1}),this.pipeline.denoiser.setNode(e),this.enableTrackANS(!1)}mixAudioReference(e,t){if(this.mixedAudioReferenceMap.has(t))return;this.log.info(`mixAudioReference() => ${t}`);let r=Js(e),s=new De,n=Ee().createGain();n.gain.value=1;let a=new De;s.pipeTo(a).pipeTo(this.pipeline.mixNode),s.setNode(r),a.setNode(n),this.mixedAudioReferenceMap.set(t,[s,a])}unMixAudioReference(e){let[t,r]=this.mixedAudioReferenceMap.get(e)||[];t&&(this.log.info(`unMixAudioReference() => ${e}`),t.deleteNode(),r==null||r.deleteNode(),this.mixedAudioReferenceMap.delete(e))}setAudioReferenceVolume(e,t){let[r,s]=this.mixedAudioReferenceMap.get(e)||[];s!=null&&s.node&&(s.node.gain.value=t/100,this.log.info(`setAudioReferenceVolume() => ${e} ${s.node.gain.value}`))}addAudioProcessor(e,t,r,s){this.pipeline.silentNode.setNode(r),this.pipeline.mixNode.setNode(t),this.pipeline.aec.setNode(e),this.enableTrackAEC(!1)}removeDenoiser(e){this.pipeline.denoiser.node===e&&(this.pipeline.denoiser.deleteNode(),this.enableTrackANS(!0))}removeAudioProcessor(e,t,r,s){this.pipeline.aec.node===e&&(this.pipeline.aec.deleteNode(),this.pipeline.silentNode.deleteNode(),this.pipeline.mixNode.deleteNode(),this.enableTrackAEC(!0))}close(){this.mixedAudioReferenceMap.forEach(([e,t])=>{e.deleteNode(),t.deleteNode()}),this.mixedAudioReferenceMap.clear(),this.pipeline.remove(),this.earMonitorGainNode.deleteNode(),this._output.deleteNode(),Le.off("audioInputAdded",this.handleMicrophoneAdded,this),Le.off("audioInputRemoved",this.handleMicrophoneRemoved,this),super.close()}recapture(e){return f(this,null,function*(){try{yield He(o.prototype,this,"recapture").call(this,e)}catch(t){let r=(yield dt()).find(s=>s.deviceId!==e);if(r)yield He(o.prototype,this,"recapture").call(this,r.deviceId);else throw t}})}encodeFrame(e){return this.manager?this.manager.encodePipeline.reduceRight((t,r)=>r?r({frame:t}):t,e):e}get enableEncodeFrame(){return this.manager?this.manager.encodePipeline.some(e=>e):!1}};var Hi=class{constructor(i,e=!1){this.dataView=i;this.isSEI&&(e?this.addPreventionByte():this.removePreventionByte())}addPreventionByte(){let i=this.seiPayloadStartIndex,e=this.dataView.byteLength-2,t=[],r=0;for(let n=i;n<=e;n++){let a=this.dataView.getInt8(n);switch(a){case 0:case 1:case 2:case 3:r===2&&(t.push(3),r=0),a==0?r++:r=0,t.push(a);break;default:r=0,t.push(a);break}}t.push(this.dataView.getInt8(this.dataView.byteLength-1));let s=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,i),...t]).buffer);this.dataView=s}removePreventionByte(){let i=this.seiPayloadStartIndex,e=this.dataView.byteLength-1,t=[],r=0;for(let n=i;n<=e;n++)switch(this.dataView.getInt8(n)){case 0:r++,t.push(this.dataView.getInt8(n));break;case 3:r!==2&&t.push(this.dataView.getInt8(n)),r=0;break;default:t.push(this.dataView.getInt8(n)),r=0;break}let s=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,i),...t]).buffer);this.dataView=s}get isSEI(){return this.dataView.getUint8(4)===6}get seiPayloadStartIndex(){let i=6;for(let e=6;e<this.dataView.buffer.byteLength&&(i++,this.dataView.getUint8(e)===255);e++);return i}get seiPayloadType(){return this.isSEI?this.dataView.getUint8(5):null}get seiPayload(){if(!this.isSEI)return null;let i=0,e=6;for(let s=6;s<this.dataView.buffer.byteLength;s++){let n=this.dataView.getUint8(s);if(e++,n===255)i+=255;else{i+=n;break}}let t=new ArrayBuffer(i),r=new DataView(t);for(let s=0;s<t.byteLength;s++,e++)r.setInt8(s,this.dataView.getInt8(e));return r}};var La=class{constructor(){d(this,"_seiMessageList",[]);d(this,"_smallSeiMessageList",[]);d(this,"_seiPayloadType",243)}encodeSEINalu(i){let e=i.byteLength,t=parseInt(String(e/255),10),r=e%255,s=[];s.push(0,0,0,1,6,this._seiPayloadType);for(let a=0;a<t;a++)s.push(255);s.push(r);let n=new DataView(i);return s.push(...new Uint8Array(n.buffer)),s.push(128),new Hi(new DataView(new Uint8Array(s).buffer),!0)}sendSEI(i,e){e!=null&&e.seiPayloadType&&(this._seiPayloadType=e.seiPayloadType),this._seiMessageList.push(i),e!=null&&e.small&&this._smallSeiMessageList.push(i)}isEmpty(){return!this._seiMessageList.length}getNaluCount(i){let e=0,t=0,r=new DataView(i);for(let s=0;s<i.byteLength;s++)switch(r.getUint8(s)){case 0:e++;break;case 1:(e===2||e===3)&&t++,e=0;break;default:e=0;break}return t}encode(i,e){let t=e?this._smallSeiMessageList:this._seiMessageList;if(t.length>0&&i.data.byteLength>0){let s=9-this.getNaluCount(i.data);if(s<=0)return 0;let n=t.splice(0,s).reverse().map(this.encodeSEINalu.bind(this)),a=n.reduce((m,g)=>m+g.dataView.byteLength,0),c=new ArrayBuffer(a+i.data.byteLength),l=new DataView(c),h=new DataView(i.data),u=0;for(let m=0;m<n.length;m++)for(let g=0;g<n[m].dataView.byteLength;g++)l.setInt8(u++,n[m].dataView.getInt8(g));for(let m=0;m<i.data.byteLength;m++)l.setInt8(u++,h.getInt8(m));return i.data=c,n.length}return 0}};var $r=class $r extends Fi{constructor(e,t=4){super(t,_t);d(this,"profile",N({},er));d(this,"avoidCropping",!1);d(this,"_scaleResolutionDownBy");d(this,"stat",{bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0,fpsCapture:0});d(this,"small");d(this,"isNeedToSetBandwidth");d(this,"muteImage");d(this,"manager");d(this,"_seiCodec",new La);this.manager=e;let r=()=>{this.isAllowed2k4k(this.profile)?this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1}):(this.log.warn("Resolution is reset to 1080p, need to upgrade ability here https://cloud.tencent.com/document/product/647/85386"),this.setProfile(L(N({},this.profile),{width:1920,height:1080})),this.applyProfile())};this.on("input-media-track-changed",r),this.on("publish",r),this.handleCameraAdded=this.handleCameraAdded.bind(this),this.handleCameraRemoved=this.handleCameraRemoved.bind(this)}get facingMode(){if(!(!si||!this.mediaTrack))return this.mediaTrack.getSettings().facingMode}get contentHint(){var e;return((e=this._inputTrack)==null?void 0:e.contentHint)||""}get isQosClearFirst(){var e;return((e=this._inputTrack)==null?void 0:e.contentHint)==="detail"}setMute(e){return f(this,null,function*(){var t,r,s;if(ee(e)){if(this.muteImage===e)return;yield(t=this.manager)==null?void 0:t.deleteWatermark("mute"),yield(r=this.manager)==null?void 0:r.setWatermark({x:0,y:0,width:this.settings.width,height:this.settings.height,type:"mute",zIndex:999,imageUrl:e}),this.muteImage=e,He($r.prototype,this,"setMute").call(this,!1)}else this.muteImage&&(yield(s=this.manager)==null?void 0:s.deleteWatermark("mute"),this.muteImage=void 0),He($r.prototype,this,"setMute").call(this,e)})}capture({deviceId:e,facingMode:t,useExactDeviceId:r=!0,customSource:s,retryWhenExactFailed:n=!0}){return super.capture({audio:!1,video:!0,facingMode:t||this.facingMode,cameraId:e,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,useExactDeviceId:r,retryWhenExactFailed:n,customSource:s})}setProfile(e){let t=this.fallbackProfile(e);t.bitrate&&(this.isNeedToSetBandwidth=t.bitrate!==this.profile.bitrate),this.isAllowed2k4k(this.profile)?super.setProfile(t):(this.log.warn("Resolution is reset to 1080p, need to upgrade ability here https://cloud.tencent.com/document/product/647/85386"),super.setProfile(L(N({},this.profile),{width:1920,height:1080})))}applyProfile(){return f(this,null,function*(){var a;if(!this.mediaTrack)return;let{width:e=0,height:t=0}=(this.sourceTrack||this.mediaTrack).getSettings(),r=e*t,s=this.settings,n=s.height!==this.profile.height||s.width!==this.profile.width||s.frameRate!==this.profile.frameRate;if(n&&(nt===16&&this.deviceId?yield this.recapture(this.deviceId):(yield(a=this.sourceTrack||this.mediaTrack)==null?void 0:a.applyConstraints({width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate}),this.manager&&this.manager.changeInput(this)),this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1})),this.isNeedToSetBandwidth&&this.room&&this.room.setBandWidth){this.isNeedToSetBandwidth=!1;let{width:c=0,height:l=0}=(this.sourceTrack||this.mediaTrack).getSettings(),h=c*l;if(n&&h&&r&&h===r){this.log.warn("set bandwidth failed: resolution is not changed");return}return this.room.setBandWidth({bandwidth:this.profile.bitrate,type:p.VIDEO,videoType:p.BIG})}})}get settings(){let e={width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate},t=this.sourceTrack||this.mediaTrack;return si&&t&&Object.assign(e,t.getSettings()),e}get scaleResolutionDownBy(){return this._scaleResolutionDownBy?this._scaleResolutionDownBy:ho(this.settings,this.profile)}isAllowed2k4k(e){var t;return!this.room||!this.room.scheduleResult||this.isScreen||e.height*e.width<2560*1440?!0:((t=this.room.scheduleResult.trtcAutoConf)==null?void 0:t["2k4k"])===1}isNeedToSwitchDevice(e){return!(!this.mediaTrack||this.deviceId===e||this.facingMode===e)}switchDevice(e){return f(this,null,function*(){try{if(!this.isNeedToSwitchDevice(e))return;let t={useExactDeviceId:!0,retryWhenExactFailed:!1};e==="user"||e==="environment"?t.facingMode=e:t.deviceId=e,this.mediaTrack.stop(),yield this.capture(t),E.emit(A.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch camera success")}catch(t){throw this.log.error(`switch camera failed ${t}`),this.deviceId&&this.recapture(this.deviceId),t}})}updateSmallConfig(e){var r,s;this._log.info(`update small stream config: ${JSON.stringify(e)}`);let t=!this.small;this.small=this.fallbackProfile(e,!0),(r=this.manager)==null||r.update(),t&&((s=this.room)==null||s.enableSmall(!0)),this.log.info("update small stream config success")}fallbackProfile(e,t=!1){let r=e.width>e.height,s=N({},e);return e.width*e.height<=160*120&&pe&&Ze&&(this.log.warn(`${t?"small ":""}resolution is ${e.width}*${e.height}, fallback to 240*180 for android chrome`),s.width=r?240:180,s.height=r?180:240,s.bitrate=Math.max(e.bitrate,150)),e.width*e.height>1280*720&&Sd&&(s.width=r?1280:720,s.height=r?720:1280,this.log.warn("reset to 1280 * 720 on iOS 13~14")),!t&&this.avoidCropping&&(Ze||ae)&&!Ad()&&e.width*e.height<=640*360&&e.width/e.height===16/9&&(this._scaleResolutionDownBy=1280/e.width,e.width=1280,e.height=720,this.log.warn(`capture 720p, scale: ${this._scaleResolutionDownBy}`)),s}stopSmall(){var e,t;this.small&&(delete this.small,(e=this.manager)==null||e.update(),(t=this.room)==null||t.enableSmall(!1))}listenDeviceChange(){Le&&!Le.listeners("videoInputRemoved").includes(this.handleCameraRemoved)&&Le.on("videoInputRemoved",this.handleCameraRemoved,this)}handleCameraRemoved(e){return f(this,null,function*(){if(e.deviceId===this.deviceId){this.log.warn(`current camera is lost: ${JSON.stringify(e)}`),Ae(this.userId,{eventId:2003,param1:7,streamType:2});let t=yield Tt();t[0]?this.recapture(t[0].deviceId):Le.on("videoInputAdded",this.handleCameraAdded,this)}})}handleCameraAdded(e){return f(this,null,function*(){this.log.warn(`camera added: ${JSON.stringify(e)}`),this.recapture(e.deviceId)})}encodeFrame(e,t){if(!this.manager)return e;let r=t?8:this.mediaType;return this.manager.encodePipeline.reduceRight((s,n)=>n?n({frame:s,mediaType:r}):s,e)}get enableEncodeFrame(){return this.manager?this.manager.encodePipeline.some(e=>e):!1}play(e,t){return T(this.mirror)&&!this.isScreen&&this.setMirror("view"),super.play(e,t)}close(){Le.off("videoInputAdded",this.handleCameraAdded,this),Le.off("videoInputRemoved",this.handleCameraRemoved,this),super.close()}recapture(e){return f(this,null,function*(){try{yield He($r.prototype,this,"recapture").call(this,e)}catch(t){let r=(yield Tt()).find(s=>s.deviceId!==e);if(r)yield He($r.prototype,this,"recapture").call(this,r.deviceId);else throw t}})}setContentHint(e){this.mediaTrack&&"contentHint"in this.mediaTrack&&(this.mediaTrack.contentHint!==e&&(this.log.info(`setContentHint ${e}`),this.mediaTrack.contentHint=e),this.outMediaTrack&&this.outMediaTrack.contentHint!==e&&(this.outMediaTrack.contentHint=e))}setRotation(e){this.manager&&(this.isScreen||T(e)||e!==this.rotation&&(this.rotation=e,this.manager.rotation=e))}};v([et(function(e){this.setContentHint(e.contentHint||"motion")})],$r.prototype,"capture",1);var qe=$r;var wa=bs();if(typeof navigator!="undefined"&&navigator.mediaDevices&&"setCaptureHandleConfig"in navigator.mediaDevices)try{navigator.mediaDevices.setCaptureHandleConfig({handle:wa,exposeOrigin:!0,permittedOrigins:["*"]})}catch(o){}var dg=function(o){return f(this,null,function*(){let i=null,e=hg(o);C.info(`getDisplayMedia with constraints: ${JSON.stringify(e)}`);let t=yield navigator.mediaDevices.getDisplayMedia(e);o.systemAudio&&t.getAudioTracks().length===0&&(Ro&&st<74||Pe||ae)&&C.warn("Your browser not support capture system audio");let r=t.getVideoTracks()[0];if(r){if(o.frameRate)try{yield r.applyConstraints({frameRate:{min:o.frameRate,ideal:o.frameRate},width:o.width,height:o.height})}catch(s){C.warn(`screen applyConstraints failed: ${s}`)}o.captureElement&&(yield lg(r,o.captureElement))}if(o.audio){let s=ug(o);C.info(`getUserMedia with constraints: ${JSON.stringify(s)}`),i=yield navigator.mediaDevices.getUserMedia(s),t.addTrack(i.getAudioTracks()[0])}return t})};function lg(o,i){return f(this,null,function*(){var e;if("CropTarget"in window&&"fromElement"in CropTarget&&ne(o.cropTo))try{if(!(((e=o.getCaptureHandle())==null?void 0:e.handle)===wa))return;let r=yield CropTarget.fromElement(i);yield o.cropTo(r)}catch(t){C.warn(`cropTo target failed ${t}`)}})}function ug(o){let i={echoCancellation:o.echoCancellation,autoGainControl:o.autoGainControl,noiseSuppression:o.noiseSuppression,sampleRate:o.sampleRate,channelCount:o.channelCount};return T(o.microphoneId)||(i.deviceId=o.microphoneId),{audio:i,video:!1}}function hg(o){let i={preferCurrentTab:o.preferDisplaySurface==="current-tab"||!!o.captureElement,systemAudio:"include",selfBrowserSurface:"include",surfaceSwitching:"include"},e={width:Pe?{max:o.width}:{ideal:o.width,max:o.width},height:Pe?{max:o.height}:{ideal:o.height,max:o.height},frameRate:o.frameRate,displaySurface:o.preferDisplaySurface||"monitor"};if(i.video=e,o.systemAudio){let{echoCancellation:t=!0,noiseSuppression:r=!1,autoGainControl:s=!1}=o;i.audio={echoCancellation:t,noiseSuppression:r,autoGainControl:s,sampleRate:48e3}}return i}var Nm=dg;var ut=class extends qe{constructor(e){super(e,2);d(this,"profile",{width:1920,height:1080,frameRate:5,bitrate:1600});d(this,"objectFit","contain");d(this,"isScreen",!0);this._log.id=`s-${this._log.id}`}get isShareCurrentTab(){var e,t;try{return wa===((t=(e=this.mediaTrack)==null?void 0:e.getCaptureHandle())==null?void 0:t.handle)}catch(r){return}}capture(h){return f(this,arguments,function*({systemAudio:e=!1,autoGainControl:t,echoCancellation:r,noiseSuppression:s,audioTrack:n,videoTrack:a,captureElement:c,preferDisplaySurface:l}){try{let u;return a||n?(u=new MediaStream,a&&u.addTrack(a),n&&u.addTrack(n)):u=yield Nm({audio:!1,systemAudio:e,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,autoGainControl:t,echoCancellation:r,noiseSuppression:s,captureElement:c,preferDisplaySurface:l}),yield this.setInputMediaStreamTrack(u.getVideoTracks()[0]),u}catch(u){throw this.log.error(`getDisplayMedia error observed ${u}`),u instanceof y?u:new y({code:I.INITIALIZE_FAILED,name:u.name,message:u.message})}})}switchDevice(e){return f(this,null,function*(){throw new Error("Method not implemented.")})}};v([et(function(e){this.setContentHint(e.contentHint||"detail")})],ut.prototype,"capture",1);var hi=class extends Et{constructor(i){super(i),this._log.id=`s-${this._log.id}`}addAudioProcessor(i,e,t,r){this.pipeline.silentNode.setNode(t),this.pipeline.mixNode.setNode(e),this.pipeline.aec.setNode(r),this.enableTrackAEC(!1)}removeAudioProcessor(i,e,t,r){this.pipeline.aec.node===r&&(this.pipeline.aec.deleteNode(),this.pipeline.silentNode.deleteNode(),this.pipeline.mixNode.deleteNode(),this.enableTrackAEC(!0))}};var mg='registerProcessor("dumper",class extends AudioWorkletProcessor{constructor(e){super(),this.sourceSampleRate=e.processorOptions.sourceSampleRate||48e3,this.targetSampleRate=e.processorOptions.targetSampleRate||48e3,this.port.onmessage=e=>{this.port2=e.data.port}}process(e){return(this.port2||this.port).postMessage(this.resampleAll(e,this.sourceSampleRate,this.targetSampleRate)),!0}resampleAll(r,s,a){if(s===a)return r;var o=[];for(let t=0;t<r.length;t++){o[t]=[];for(let e=0;e<r[t].length;e++)o[t][e]=this.resample(r[t][e],s,a)}return o}resample(t,e,r){if(e===r)return t;var s=Math.round(t.length*(this.targetSampleRate/this.sourceSampleRate)),a=new Float32Array(s),o=(t.length-1)/(s-1);a[0]=t[0];for(let e=1;e<s-1;e++){var l=e*o,p=Math.floor(l),h=Math.ceil(l);a[e]=t[p]+(t[h]-t[p])*(l-p)}return a[s-1]=t[t.length-1],a}});',ml;function zs(o,i=48e3,e=1,t){return f(this,null,function*(){let r=Ee("dump");ml||(ml=Bi(r,URL.createObjectURL(new Blob([mg],{type:"application/javascript"})))),yield ml;let s=r.sampleRate,n=new AudioWorkletNode(r,"dumper",{numberOfInputs:o.length,numberOfOutputs:0,processorOptions:{sourceSampleRate:s,targetSampleRate:i}});return n.channelCountMode="explicit",n.channelCount=e,t&&n.port.postMessage({port:t},[t]),o.forEach((a,c)=>a.connect(n,0,c)),new ReadableStream({start(a){n.port.onmessage=c=>{a.enqueue(c.data)}},cancel(){o.forEach(a=>a.disconnect(n)),n.port.close()}})})}var Va=class extends Aa{constructor(e){super();this.room=e;d(this,"_localAudioTrack");d(this,"_localScreenAudioTrack");d(this,"log",C.createLogger({id:"am"}));d(this,"denoiser");d(this,"voiceChanger");d(this,"mixChangedDebounce");d(this,"audioProcessor");d(this,"encodePipeline",[]);d(this,"decodePipeline",[]);d(this,"getPCMAbortCtrlMap",new Map);d(this,"audioFrameEventConfigMap",new Map);d(this,"audioReferenceMap",new Map);d(this,"isLocalAudioNeedAudioProcess",!1);d(this,"isScreenAudioNeedAudioProcess",!1);e&&(this.log.setUserId(e.userId),this.log.setSdkAppId(e.sdkAppId)),this.installEvent()}get _localAudioPipline(){var e;return(e=this._localAudioTrack)==null?void 0:e.pipeline}get _localScreenAudioPipeline(){var e;return(e=this._localScreenAudioTrack)==null?void 0:e.pipeline}dump(e){var h,u;if(!this._localAudioTrack)return;let t=[],r=[];(h=this._localAudioPipline)!=null&&h.source.node&&(t.push(this._localAudioPipline.source.node),r.push("mic")),(u=this._localAudioPipline)!=null&&u.denoiser.node&&(t.push(this._localAudioPipline.denoiser.node),r.push("mic-processed")),this.mixWeight>1&&(t.push(this.audioContext.createMediaStreamSource(this._localAudioPipline.stream)),r.push("mix")),this.log.info(`dump audio track ${r}, duration: ${e}`);let s=new AbortController,n=[],a=setTimeout(()=>{this.log.info('dump audio track complete please input "download()" to download.'),s.abort("timeout")},e*1e3),c=()=>{for(let m=0;m<r.length;m++){let g=URL.createObjectURL(new Blob(n[m])),D=document.createElement("a");D.href=g,D.download=`${r[m]}.pcm`,D.style.display="none",document.body.appendChild(D),D.click(),URL.revokeObjectURL(g),D.remove()}clearTimeout(a),s.abort("download")},l=zs(t).then(m=>m.pipeTo(new WritableStream({write(g){g.forEach((D,_)=>n[_]=n[_]?n[_].concat(D[0]):[D[0]])}}),s).catch(g=>c));return{then:l.then.bind(l),download:c}}getPCM(e,t){var O,K,G;if(T(WritableStream)){this.log.warn("getPCM failed: browser not support WritableStream");return}let{enable:r,sampleRate:s=48e3,channelCount:n=1,port:a}=(t===""?this.audioFrameEventConfigMap.get(""):this.audioFrameEventConfigMap.get(t)||this.audioFrameEventConfigMap.get("*"))||{};if(!r)return;this.log.info(`getPCM ${t||"local"}`);let c=Math.floor(s*.04),l=new Float32Array(c),h=new Float32Array(c),u,m,g=0,D=new AbortController,_=t===""?(O=this._localAudioTrack)==null?void 0:O.mediaTrack:(G=(K=this.room)==null?void 0:K.remotePublishedUserMap.get(t))==null?void 0:G.remoteAudioTrack.mediaTrack;if(!_){this.log.info(`getPCM failed: ${t||"local"} has no audio track`);return}let S=Ee().createMediaStreamSource(new MediaStream([_]));return zs([S],s,n,a).then(Z=>Z.pipeTo(new WritableStream({write(_e){_e[0][0]&&(g+_e[0][0].length>c?(l.set(_e[0][0].subarray(0,c-g),g),u=_e[0][0].subarray(c-g),_e[0][1]&&(h.set(_e[0][1].subarray(0,c-g),g),m=_e[0][1].subarray(c-g)),g+=c-g):(u&&(l.set(u,g),g+=u.length,u=void 0),m&&(h.set(m,g),m=void 0),l.set(_e[0][0],g),_e[0][1]&&h.set(_e[0][1],g),g+=_e[0][0].length),g>=c&&(g=0,e({userId:t,sampleRate:s,channelCount:n,data:n===1?l:[l,h]}),l=new Float32Array(c),h=new Float32Array(c)))}}),D).catch(_e=>this.log.warn(`stop getPCM reason:${_e}`))),D}get hasScreenAudioTrack(){return!T(this._localScreenAudioTrack)}get hasAudioTrack(){return!T(this._localAudioTrack)}changeInput(e){if(e instanceof hi)return this._localScreenAudioTrack=e,this.isScreenAudioNeedAudioProcess&&this.audioProcessor&&(e.addAudioProcessor(...this.audioProcessor),this.audioReferenceMap.forEach((t,r)=>{e.mixAudioReference(t,r)})),e.pipeline.connect(),this.mixOnChange();if(e instanceof Et)return this._localAudioTrack=e,this.denoiser&&e.addDenoiser(this.denoiser),this.isLocalAudioNeedAudioProcess&&this.audioProcessor&&(e.addAudioProcessor(...this.audioProcessor),this.audioReferenceMap.forEach((t,r)=>{e.mixAudioReference(t,r)})),e.pipeline.connect(),this.mixOnChange();if(e instanceof Gt)return e.setOutputMediaStreamTrack(e.mediaTrack)}mixAudioReference(e,t){var r;(r=this._localAudioTrack)==null||r.mixAudioReference(e,t)}unMixAudioReference(e){var t;(t=this._localAudioTrack)==null||t.unMixAudioReference(e)}setAudioReferenceVolume(e,t){var r;(r=this._localAudioTrack)==null||r.setAudioReferenceVolume(e,t)}mixOnChange(){return this.mixChangedDebounce||(this.mixChangedDebounce=Promise.resolve().then(()=>{var e,t;return delete this.mixChangedDebounce,Promise.all([(e=this._localAudioTrack)==null?void 0:e.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localAudioTrack.mediaTrack),(t=this._localScreenAudioTrack)==null?void 0:t.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localScreenAudioTrack.mediaTrack)])})),this.mixChangedDebounce}removeInput(e){e instanceof hi?delete this._localScreenAudioTrack:e instanceof Et?delete this._localAudioTrack:e instanceof Gt}addDenoiser(e){var t;this.denoiser=e,(t=this._localAudioTrack)==null||t.addDenoiser(e)}addAudioProcessor(e,t,r,s){var n;this.audioProcessor=[e,t,r,s],this.isLocalAudioNeedAudioProcess&&this._localAudioTrack&&(this._localAudioTrack.addAudioProcessor(...this.audioProcessor),this.audioReferenceMap.forEach((a,c)=>{var l;(l=this._localAudioTrack)==null||l.mixAudioReference(a,c)})),this.isScreenAudioNeedAudioProcess&&this._localScreenAudioTrack&&((n=this._localScreenAudioTrack)==null||n.addAudioProcessor(...this.audioProcessor),this.audioReferenceMap.forEach((a,c)=>{var l;(l=this._localScreenAudioTrack)==null||l.mixAudioReference(a,c)}))}removeDenoiser(e){var t;delete this.denoiser,(t=this._localAudioTrack)==null||t.removeDenoiser(e)}addVoiceChanger(e,t){var r;this.voiceChanger=[e,t],(r=this._localAudioTrack)==null||r.pipeline.voiceChanger.setNode(e,t)}removeVoiceChanger(){var e;delete this.voiceChanger,(e=this._localAudioTrack)==null||e.pipeline.voiceChanger.deleteNode()}removeAudioProcessor(e,t,r,s){var n;delete this.audioProcessor,(n=this._localAudioTrack)==null||n.removeAudioProcessor(e,t,r,s)}destroy(){this.close(),this.audioReferenceMap.clear(),this.getPCMAbortCtrlMap.forEach(e=>e==null?void 0:e.abort("destroy")),this.getPCMAbortCtrlMap.clear(),this.audioFrameEventConfigMap.clear(),this.uninstallEvent()}addEncodeProcessor({processor:e,type:t}){var r;this.encodePipeline.includes(e)||(this.encodePipeline[t]=e,(r=this.room)==null||r.enableInsertableStreams())}addDecodeProcessor({processor:e,type:t}){var r;this.decodePipeline.includes(e)||(this.decodePipeline[t]=e,(r=this.room)==null||r.enableInsertableStreams())}removeEncodeProcessor({type:e}){this.encodePipeline[e]=void 0}removeDecodeProcessor({type:e}){this.decodePipeline[e]=void 0}handleLocalTrackStarted({room:e,userId:t}){var s;if(e!==this.room||this.getPCMAbortCtrlMap.get(t))return;let r=this.getPCM(n=>{var a;(a=this.room)==null||a.emit("audio-frame",n)},"");this.getPCMAbortCtrlMap.set(t,r),this.getPCMAbortCtrlMap.get(t)&&((s=this._localAudioTrack)==null||s.on("input-media-track-changed",()=>{let n=this.getPCMAbortCtrlMap.get(t);n&&(n.abort("inputMediaTrackChanged"),n=this.getPCM(a=>{var c;(c=this.room)==null||c.emit("audio-frame",a)},""),this.getPCMAbortCtrlMap.set(t,n))}))}handleLocalTrackStopped({room:e,userId:t}){if(e!==this.room)return;let r=this.getPCMAbortCtrlMap.get(t);r&&(r.abort("stopLocalAudio"),this.getPCMAbortCtrlMap.delete(t))}handleRemoteTrackStarted({room:e,userId:t}){if(e===this.room&&!this.getPCMAbortCtrlMap.get(t)){let r=this.room.audioManager.getPCM(s=>{var n;(n=this.room)==null||n.emit("audio-frame",s)},t);this.getPCMAbortCtrlMap.set(t,r)}}handleRemoteTrackStopped({room:e,userId:t}){if(e!==this.room)return;let r=this.getPCMAbortCtrlMap.get(t);r&&(r.abort("stopRemoteAudio"),this.getPCMAbortCtrlMap.delete(t))}installEvent(){E.on("113",this.handleLocalTrackStarted,this),E.on("114",this.handleLocalTrackStopped,this),E.on("115",this.handleRemoteTrackStarted,this),E.on("116",this.handleRemoteTrackStopped,this)}uninstallEvent(){E.off("113",this.handleLocalTrackStarted),E.off("114",this.handleLocalTrackStopped),E.off("115",this.handleRemoteTrackStarted),E.off("116",this.handleRemoteTrackStopped)}updateAudioReference({type:e,audioReference:t,refId:r,volume:s}){if(e==="add"){if(this.audioReferenceMap.get(r)||!t||(this.audioReferenceMap.set(r,t),!this.audioProcessor))return;this.mixAudioReference(t,r)}else if(e==="remove")this.audioReferenceMap.get(r)&&(this.audioReferenceMap.delete(r),this.unMixAudioReference(r));else if(e==="updateVolume"){if(!this.audioProcessor||T(s))return;this.setAudioReferenceVolume(r,s)}}};function Ua(o=30,i=2){return Q((e,t)=>function(...r){return new Promise((s,n)=>{let a=setTimeout(()=>{let c=new y({code:I.API_CALL_TIMEOUT,message:`checkPendingPromise ${t}() timeout ${o}s`});C.warn(c),i===2?n(c):i===1&&s()},o*1e3);e.apply(this,r).then(s,n).finally(()=>{clearTimeout(a)})})})}var Zl={};Si(Zl,{Events:()=>Ce,Inspect:()=>yt,LastSink:()=>Hr,Sink:()=>W,Subscribe:()=>Gr,TimeoutError:()=>Qs,audit:()=>Xg,bindCallback:()=>xg,bindNodeCallback:()=>Pg,buffer:()=>Ag,bufferCount:()=>Ig,bufferTime:()=>mT,call:()=>vm,catchError:()=>Xl,combineLatest:()=>Om,concat:()=>_g,concatMap:()=>sT,concatMapTo:()=>nT,count:()=>Vg,create:()=>ie,debounce:()=>zg,debounceTime:()=>Qg,defer:()=>Mm,delay:()=>pT,deliver:()=>q,dispose:()=>Ba,elementAt:()=>Yg,empty:()=>Ks,every:()=>iT,exhaustMap:()=>dT,exhaustMapTo:()=>lT,filter:()=>mi,find:()=>Zg,findIndex:()=>Kg,first:()=>eT,fromAnimationFrame:()=>Mg,fromArray:()=>yg,fromEvent:()=>he,fromEventPattern:()=>bg,fromFetch:()=>Ng,fromIterable:()=>vg,fromPromise:()=>Pm,fromReadableStream:()=>Og,fromReader:()=>Dg,groupBy:()=>uT,identity:()=>pg,ignoreElements:()=>$g,iif:()=>Tg,inspect:()=>Dm,interval:()=>Sl,last:()=>tT,map:()=>en,mapTo:()=>oT,max:()=>Ug,merge:()=>Tl,mergeMap:()=>aT,mergeMapTo:()=>cT,min:()=>Bg,never:()=>Lg,nothing:()=>de,of:()=>Cg,pairwise:()=>rT,pipe:()=>le,race:()=>El,range:()=>kg,reduce:()=>Il,retry:()=>TT,scan:()=>ql,share:()=>Gi,shareReplay:()=>gg,skip:()=>Gg,skipUntil:()=>Wg,skipWhile:()=>Wa,startWith:()=>Ys,subject:()=>tt,subscribe:()=>be,sum:()=>Fg,switchMap:()=>Vo,switchMapTo:()=>Jr,take:()=>Wi,takeLast:()=>Hg,takeUntil:()=>Be,takeWhile:()=>Lm,tap:()=>Yl,throttle:()=>jg,throwError:()=>wg,timeInterval:()=>hT,timeout:()=>gT,timer:()=>Zs,toPromise:()=>fT,toReadableStream:()=>_T,withLatestFrom:()=>Sg,zip:()=>Eg});function de(...o){}var vm=o=>o(),pg=o=>o;function Ba(){this.dispose()}var Dm=()=>typeof __FASTRX_DEVTOOLS__!="undefined",fg=1,yt=class extends Function{toString(){return`${this.name}(${this.args.length?[...this.args].join(", "):""})`}subscribe(i){let e=new pl(i,this,this.streamId++);return Ce.subscribe({id:this.id,end:!1},{nodeId:e.sourceId,streamId:e.id}),this(e),e}},Hr=class{constructor(){this.defers=new Set,this.disposed=!1}next(i){}complete(){this.dispose()}error(i){this.dispose()}get bindDispose(){return()=>this.dispose()}dispose(){this.disposed=!0,this.complete=de,this.error=de,this.next=de,this.dispose=de,this.subscribe=de,this.doDefer()}subscribe(i){return i instanceof yt?i.subscribe(this):i(this),this}get bindSubscribe(){return i=>this.subscribe(i)}doDefer(){this.defers.forEach(vm),this.defers.clear()}defer(i){this.defers.add(i)}removeDefer(i){this.defers.delete(i)}reset(){this.disposed=!1,delete this.complete,delete this.next,delete this.dispose,delete this.next,delete this.subscribe}resetNext(){delete this.next}resetComplete(){delete this.complete}resetError(){delete this.error}},W=class extends Hr{constructor(i){super(),this.sink=i,i.defer(this.bindDispose)}next(i){this.sink.next(i)}complete(){this.sink.complete()}error(i){this.sink.error(i)}},Gr=class extends Hr{constructor(i,e=de,t=de,r=de){if(super(),this._next=e,this._error=t,this._complete=r,this.then=de,i instanceof yt){let s={toString:()=>"subscribe",id:0,source:i};this.defer(()=>{Ce.defer(s,0)}),Ce.create(s),Ce.pipe(s),this.sourceId=s.id,this.subscribe(i),Ce.subscribe({id:s.id,end:!0}),e==de?this._next=n=>Ce.next(s,0,n):this.next=n=>{Ce.next(s,0,n),e(n)},r==de?this._complete=()=>Ce.complete(s,0):this.complete=()=>{this.dispose(),Ce.complete(s,0),r()},t==de?this._error=n=>Ce.complete(s,0,n):this.error=n=>{this.dispose(),Ce.complete(s,0,n),t()}}else this.subscribe(i)}next(i){this._next(i)}complete(){this.dispose(),this._complete()}error(i){this.dispose(),this._error(i)}};function le(o,...i){return i.reduce((e,t)=>t(e),o)}function ie(o,i,e){if(Dm()){let t=Object.defineProperties(Object.setPrototypeOf(o,yt.prototype),{streamId:{value:0,writable:!0,configurable:!0},name:{value:i,writable:!0,configurable:!0},args:{value:e,writable:!0,configurable:!0},id:{value:0,writable:!0,configurable:!0}});Ce.create(t);for(let r=0;r<e.length;r++){let s=e[r];typeof s=="function"&&s instanceof yt&&Ce.addSource(t,s)}return t}return o}function q(o,i){return function(...e){return t=>{if(t instanceof yt){let r=ie(s=>{let n=new o(s,...e);n.sourceId=r.id,n.subscribe(t)},i,arguments);return r.source=t,Ce.pipe(r),r}else return r=>t(new o(r,...e))}}}function ur(o,i){window.postMessage({source:"fastrx-devtools-backend",payload:{event:o,payload:i}})}var pl=class extends W{constructor(i,e,t){super(i),this.source=e,this.id=t,this.sourceId=i.sourceId,this.defer(()=>{Ce.defer(this.source,this.id)})}next(i){Ce.next(this.source,this.id,i),this.sink.next(i)}complete(){Ce.complete(this.source,this.id),this.sink.complete()}error(i){Ce.complete(this.source,this.id,i),this.sink.error(i)}},Ce={addSource(o,i){ur("addSource",{id:o.id,name:o.toString(),source:{id:i.id,name:i.toString()}})},next(o,i,e){ur("next",{id:o.id,streamId:i,data:e&&e.toString()})},subscribe({id:o,end:i},e){ur("subscribe",{id:o,end:i,sink:{nodeId:e&&e.nodeId,streamId:e&&e.streamId}})},complete(o,i,e){ur("complete",{id:o.id,streamId:i,err:e?e.toString():null})},defer(o,i){ur("defer",{id:o.id,streamId:i})},pipe(o){ur("pipe",{name:o.toString(),id:o.id,source:{id:o.source.id,name:o.source.toString()}})},update(o){ur("update",{id:o.id,name:o.toString()})},create(o){o.id||(o.id=fg++),ur("create",{name:o.toString(),id:o.id})}},Qs=class extends Error{constructor(i){super(`timeout after ${i}ms`),this.timeout=i}};var Fa=class extends Hr{constructor(i){super(),this.source=i,this.sinks=new Set}add(i){i.defer(()=>this.remove(i)),this.sinks.add(i).size===1&&(this.reset(),this.subscribe(this.source))}remove(i){this.sinks.delete(i),this.sinks.size===0&&this.dispose()}next(i){this.sinks.forEach(e=>e.next(i))}complete(){this.sinks.forEach(i=>i.complete()),this.sinks.clear()}error(i){this.sinks.forEach(e=>e.error(i)),this.sinks.clear()}};function Gi(){return o=>{let i=new Fa(o);if(o instanceof yt){let e=ie(t=>{i.add(t)},"share",arguments);return i.sourceId=e.id,e.source=o,Ce.pipe(e),e}return ie(i.add.bind(i),"share",arguments)}}function Tl(...o){return ie(i=>{let e=new W(i),t=o.length;e.complete=()=>{--t===0&&i.complete()},o.forEach(e.bindSubscribe)},"merge",arguments)}function El(...o){return ie(i=>{let e=new Map;o.forEach(t=>{let r=new W(i);e.set(t,r),r.complete=()=>{e.delete(t),e.size===0?i.complete():r.dispose()},r.next=s=>{e.delete(t),e.forEach(n=>n.dispose()),r.resetNext(),r.resetComplete(),r.next(s)}}),o.forEach(t=>e.get(t).subscribe(t))},"race",arguments)}function _g(...o){return ie(i=>{let e=0,t=o.length,r=new W(i);r.complete=()=>{e<t&&!r.disposed?(r.doDefer(),r.subscribe(o[e++])):i.complete()},r.complete()},"concat",arguments)}function gg(o){return i=>{let e=new Fa(i),t=[];return e.next=function(r){t.push(r),t.length>o&&t.shift(),this.sinks.forEach(s=>s.next(r))},ie(r=>{r.defer(()=>e.remove(r)),t.forEach(s=>r.next(s)),e.add(r)},"shareReplay",arguments)}}function Tg(o,i,e){return ie(t=>o()?i(t):e(t),"iif",arguments)}function Om(...o){return ie(i=>{let e=o.length,t=e,r=e,s=new Array(e),n=()=>{--r===0&&i.complete()},a=(c,l)=>{let h=new W(i);h.next=u=>{--t===0?(h.next=m=>{s[l]=m,i.next(s)},h.next(u)):s[l]=u},h.complete=n,h.subscribe(c)};o.forEach(a)},"combineLatest",arguments)}function Eg(...o){return ie(i=>{let e=o.length,t=e,r=new Array(e),s=()=>{--t===0&&i.complete()},n=(a,c)=>{let l=new W(i),h=[];r[c]=h,l.next=u=>{h.push(u),r.every(m=>m.length)&&i.next(r.map(m=>m.shift()))},l.complete=s,l.subscribe(a)};o.forEach(n)},"zip",arguments)}function Ys(...o){return i=>ie((e,t=0,r=o.length)=>{for(;t<r&&!e.disposed;)e.next(o[t++]);e.disposed||e.subscribe(i)},"startWith",arguments)}var fl=class extends W{constructor(i,...e){super(i);let t=new W(this.sink);t.next=r=>this.buffer=r,t.complete=de,t.subscribe(Om(...e))}next(i){this.buffer&&this.sink.next([i,...this.buffer])}},Sg=q(fl,"withLatestFrom"),_l=class extends W{constructor(i,e,t){super(i),this.bufferSize=e,this.startBufferEvery=t,this.buffer=[],this.count=0,this.startBufferEvery&&(this.buffers=[[]])}next(i){this.startBufferEvery?(this.count++===this.startBufferEvery&&(this.buffers.push([]),this.count=1),this.buffers.forEach(e=>{e.push(i)}),this.buffers[0].length===this.bufferSize&&this.sink.next(this.buffers.shift())):(this.buffer.push(i),this.buffer.length===this.bufferSize&&(this.sink.next(this.buffer),this.buffer=[]))}complete(){this.buffer.length?this.sink.next(this.buffer):this.buffers.length&&this.buffers.forEach(i=>this.sink.next(i)),super.complete()}},Ig=q(_l,"bufferCount"),gl=class extends W{constructor(i,e){super(i),this.buffer=[];let t=new W(i);t.next=r=>{i.next(this.buffer),this.buffer=[]},t.complete=de,t.subscribe(e)}next(i){this.buffer.push(i)}complete(){this.buffer.length&&this.sink.next(this.buffer),super.complete()}},Ag=q(gl,"buffer");var Rg=function(o,i,e,t){function r(s){return s instanceof e?s:new e(function(n){n(s)})}return new(e||(e=Promise))(function(s,n){function a(h){try{l(t.next(h))}catch(u){n(u)}}function c(h){try{l(t.throw(h))}catch(u){n(u)}}function l(h){h.done?s(h.value):r(h.value).then(a,c)}l((t=t.apply(o,i||[])).next())})};function tt(o){let i=arguments,e=Gi()(ie(t=>{e.next=r=>t.next(r),e.complete=()=>t.complete(),e.error=r=>t.error(r),o&&t.subscribe(o)},"subject",i));return e.next=de,e.complete=de,e.error=de,e}function Mm(o){return ie(i=>i.subscribe(o()),"defer",arguments)}var km=o=>i=>{setTimeout(()=>o(i))},xm=o=>km(i=>{for(let e=0;!i.disposed&&e<o.length;e++)i.next(o[e]);i.complete()});function Cg(...o){return ie(xm(o),"of",arguments)}function yg(o){return ie(xm(o),"fromArray",arguments)}function Sl(o){return ie(i=>{let e=0,t=setInterval(()=>i.next(e++),o);return i.defer(()=>{clearInterval(t)}),"interval"},"interval",arguments)}function Zs(o,i){return ie(e=>{let t=0,r=setTimeout(()=>{if(e.removeDefer(s),e.next(t++),i){let n=setInterval(()=>e.next(t++),i);e.defer(()=>{clearInterval(n)})}else e.complete()},o),s=()=>{clearTimeout(r)};e.defer(s)},"timer",arguments)}function $a(o,i){return e=>{let t=r=>e.next(r);e.defer(()=>i(t)),o(t)}}function bg(o,i){return ie($a(o,i),"fromEventPattern",arguments)}function he(o,i){if("on"in o&&"off"in o)return ie($a(e=>o.on(i,e),e=>o.off(i,e)),"fromEvent",arguments);if("addListener"in o&&"removeListener"in o)return ie($a(e=>o.addListener(i,e),e=>o.removeListener(i,e)),"fromEvent",arguments);if("addEventListener"in o)return ie($a(e=>o.addEventListener(i,e),e=>o.removeEventListener(i,e)),"fromEvent",arguments);throw"target is not a EventDispachter"}function Pm(o){return ie(i=>{o.then(i.next.bind(i),i.error.bind(i))},"fromPromise",arguments)}function Ng(o,i){return ie(Mm(()=>Pm(fetch(o,i))),"fromFetch",arguments)}function vg(o){return ie(km(i=>{try{for(let e of o){if(i.disposed)return;i.next(e)}i.complete()}catch(e){i.error(e)}}),"fromIterable",arguments)}function Dg(o){let i=e=>Rg(this,void 0,void 0,function*(){if(e.disposed)return;let{done:t,value:r}=yield o.read();if(t){e.complete();return}else e.next(r),i(e)});return ie(e=>{i(e)},"fromReader",arguments)}function Og(o){return ie(i=>{let e=new AbortController,t=e.signal;i.defer(()=>e.abort("cancelled")),o.pipeTo(new WritableStream({write(r){i.next(r)},close(){i.complete()},abort(r){i.error(r)}}),{signal:t}).then(()=>i.complete(),r=>i.error(r))},"fromReadableStream",arguments)}function Mg(){return ie(o=>{let i=requestAnimationFrame(function e(t){o.disposed||(o.next(t),i=requestAnimationFrame(e))});o.defer(()=>cancelAnimationFrame(i))},"fromAnimationFrame",arguments)}function kg(o,i){return ie((e,t=o,r=i+o)=>{for(;t<r&&!e.disposed;)e.next(t++);return e.complete(),"range"},"range",arguments)}function xg(o,i,...e){return ie(t=>{let r=e.concat(s=>(t.next(s),t.complete()));o.apply(i,r)},"bindCallback",arguments)}function Pg(o,i,...e){return ie(t=>{let r=e.concat((s,n)=>s?t.error(s):(t.next(n),t.complete()));o.apply(i,r)},"bindNodeCallback",arguments)}function Lg(){return ie(()=>{},"never",arguments)}function wg(o){return ie(i=>i.error(o),"throwError",arguments)}function Ks(){return ie(o=>o.complete(),"empty",arguments)}var Wr=class extends W{constructor(i,e,t){super(i),this.f=e;let r=()=>{this.sink.next(this.acc),this.sink.complete()};typeof t=="undefined"?this.next=s=>{this.acc=s,this.complete=r,this.resetNext()}:(this.acc=t,this.complete=r)}next(i){this.acc=this.f(this.acc,i)}},Il=q(Wr,"reduce"),Vg=o=>q(Wr,"count")((i,e)=>o(e)?i+1:i,0),Ug=()=>q(Wr,"max")(Math.max),Bg=()=>q(Wr,"min")(Math.min),Fg=()=>q(Wr,"sum")((o,i)=>o+i,0);var Al=class extends W{constructor(i,e,t){super(i),this.filter=e,this.thisArg=t}next(i){this.filter.call(this.thisArg,i)&&this.sink.next(i)}},mi=q(Al,"filter"),Rl=class extends W{next(i){}},$g=q(Rl,"ignoreElements"),Cl=class extends W{constructor(i,e){super(i),this.count=e}next(i){this.sink.next(i),--this.count===0&&this.complete()}},Wi=q(Cl,"take"),yl=class extends W{constructor(i,e){super(i);let t=new W(i);t.next=()=>i.complete(),t.complete=Ba,t.subscribe(e)}},Be=q(yl,"takeUntil"),bl=class extends W{constructor(i,e){super(i),this.f=e}next(i){this.f(i)?this.sink.next(i):this.complete()}},Lm=q(bl,"takeWhile"),Hg=o=>Il((i,e)=>(i.push(e),i.length>o&&i.shift(),i),[]),Nl=class extends W{constructor(i,e){super(i),this.count=e}next(i){--this.count===0&&(this.next=super.next)}},Gg=q(Nl,"skip"),vl=class extends W{constructor(i,e){super(i),i.next=de;let t=new W(i);t.next=()=>{t.dispose(),i.resetNext()},t.complete=Ba,t.subscribe(e)}},Wg=q(vl,"skipUntil"),Dl=class extends W{constructor(i,e){super(i),this.f=e}next(i){this.f(i)||(this.next=super.next,this.next(i))}},Wa=q(Dl,"skipWhile"),Jg={leading:!0,trailing:!1},Ol=class extends W{constructor(i,e,t){super(i),this.durationSelector=e,this.trailing=t}cacheValue(i){this.last=i,this.disposed&&this.throttle(i)}send(i){this.sink.next(i),this.throttle(i)}throttle(i){this.reset(),this.subscribe(this.durationSelector(i))}next(){this.complete()}complete(){this.dispose(),this.trailing&&this.send(this.last)}},Ha=class extends W{constructor(i,e,t=Jg){super(i),this.durationSelector=e,this.config=t,this._throttle=new Ol(this.sink,this.durationSelector,this.config.trailing),this._throttle.dispose()}next(i){this._throttle.disposed&&this.config.leading?this._throttle.send(i):this._throttle.cacheValue(i)}complete(){this._throttle.throttle=de,this._throttle.complete(),super.complete()}},jg=q(Ha,"throttle"),qg={leading:!1,trailing:!0},Xg=o=>q(Ha,"audit")(o,qg),Ml=class extends W{next(){this.complete()}complete(){this.dispose(),this.sink.next(this.last)}},Ga=class extends W{constructor(i,e){super(i),this.durationSelector=e,this._debounce=new Ml(this.sink),this._debounce.dispose()}next(i){this._debounce.dispose(),this._debounce.reset(),this._debounce.last=i,this._debounce.subscribe(this.durationSelector(i))}complete(){this._debounce.complete(),super.complete()}},zg=q(Ga,"debounce"),Qg=o=>q(Ga,"debounceTime")(i=>Zs(o)),kl=class extends W{constructor(i,e,t){super(i),this.count=e,this.defaultValue=t}next(i){this.count--===0&&(this.defaultValue=i,this.complete())}complete(){if(this.defaultValue===void 0){this.error(new Error("not enough elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},Yg=q(kl,"elementAt"),Zg=o=>i=>Wi(1)(Wa(e=>!o(e))(i)),xl=class extends W{constructor(i,e){super(i),this.f=e,this.i=0}next(i){this.f(i)?(this.sink.next(this.i++),this.complete()):++this.i}},Kg=q(xl,"findIndex"),Pl=class extends W{constructor(i,e,t){super(i),this.f=e,this.defaultValue=t,this.index=0}next(i){(!this.f||this.f(i,this.index++))&&(this.defaultValue=i,this.complete())}complete(){if(this.defaultValue===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},eT=q(Pl,"first"),Ll=class extends W{constructor(i,e,t){super(i),this.f=e,this.defaultValue=t,this.index=0}next(i){(!this.f||this.f(i,this.index++))&&(this.defaultValue=i)}complete(){if(this.defaultValue===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},tT=q(Ll,"last"),wl=class extends W{constructor(i,e){super(i),this.predicate=e,this.index=0}next(i){this.predicate(i,this.index++)?this.result=!0:(this.result=!1,this.complete())}complete(){if(this.result===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.result);super.complete()}},iT=q(wl,"every");var Vl=class extends W{constructor(i,e,t){super(i),this.f=e,typeof t=="undefined"?this.next=r=>{this.acc=r,this.resetNext(),this.sink.next(this.acc)}:this.acc=t}next(i){this.sink.next(this.acc=this.f(this.acc,i))}},ql=q(Vl,"scan"),Ul=class extends W{constructor(){super(...arguments),this.hasLast=!1}next(i){this.hasLast?this.sink.next([this.last,i]):this.hasLast=!0,this.last=i}},rT=q(Ul,"pairwise"),Ja=class extends W{constructor(i,e,t){super(i),this.mapper=e,this.thisArg=t}next(i){super.next(this.mapper.call(this.thisArg,i))}},en=q(Ja,"map"),oT=o=>q(Ja,"mapTo")(i=>o),Lo=class extends W{constructor(i,e,t){super(i),this.data=e,this.context=t}next(i){let e=this.context.combineResults;e?this.sink.next(e(this.data,i)):this.sink.next(i)}tryComplete(){this.context.resetComplete(),this.dispose()}},wo=class extends W{constructor(i,e,t){super(i),this.makeSource=e,this.combineResults=t,this.index=0}subInner(i,e){let t=this.currentSink=new e(this.sink,i,this);this.complete=this.tryComplete,t.complete=t.tryComplete,t.subscribe(this.makeSource(i,this.index++))}tryComplete(){this.currentSink.resetComplete(),this.dispose()}},ja=class extends Lo{},qa=class extends wo{next(i){this.subInner(i,ja),this.next=e=>{this.currentSink.dispose(),this.subInner(e,ja)}}},Vo=q(qa,"switchMap");function Ya(o){return(i,e)=>o(()=>i,e)}var Jr=Ya(q(qa,"switchMapTo")),Bl=class extends Lo{tryComplete(){this.dispose(),this.context.sources.length?this.context.subNext():(this.context.resetNext(),this.context.resetComplete())}},Xa=class extends wo{constructor(){super(...arguments),this.sources=[],this.next2=this.sources.push.bind(this.sources)}next(i){this.next2(i),this.subNext()}subNext(){this.next=this.next2,this.subInner(this.sources.shift(),Bl),this.disposed&&this.sources.length===0&&this.currentSink.resetComplete()}tryComplete(){this.sources.length===0&&this.currentSink.resetComplete(),this.dispose()}},sT=q(Xa,"concatMap"),nT=Ya(q(Xa,"concatMapTo")),Fl=class extends Lo{tryComplete(){this.context.inners.delete(this),super.dispose(),this.context.inners.size===0&&this.context.resetComplete()}},za=class extends wo{constructor(){super(...arguments),this.inners=new Set}next(i){this.subInner(i,Fl),this.inners.add(this.currentSink)}tryComplete(){this.inners.size===1?this.inners.forEach(i=>i.resetComplete()):this.dispose()}},aT=q(za,"mergeMap"),cT=Ya(q(za,"mergeMapTo")),$l=class extends Lo{dispose(){this.context.resetNext(),super.dispose()}},Qa=class extends wo{next(i){this.next=de,this.subInner(i,$l)}},dT=q(Qa,"exhaustMap"),lT=Ya(q(Qa,"exhaustMapTo")),Hl=class extends W{constructor(i,e){super(i),this.f=e,this.groups=new Map}next(i){let e=this.f(i),t=this.groups.get(e);typeof t=="undefined"&&(t=tt(),t.key=e,this.groups.set(e,t),super.next(t)),t.next(i)}complete(){this.groups.forEach(i=>i.complete()),super.complete()}error(i){this.groups.forEach(e=>e.error(i)),super.error(i)}},uT=q(Hl,"groupBy"),Gl=class extends W{constructor(){super(...arguments),this.start=new Date}next(i){this.sink.next({value:i,interval:Number(new Date)-Number(this.start)}),this.start=new Date}},hT=q(Gl,"timeInterval"),Wl=class extends W{constructor(i,e){super(i),this.miniseconds=e,this.buffer=[],this.id=setInterval(()=>{this.sink.next(this.buffer.concat()),this.buffer.length=0},this.miniseconds)}next(i){this.buffer.push(i)}complete(){this.sink.next(this.buffer),super.complete()}dispose(){clearInterval(this.id),super.dispose()}},mT=q(Wl,"bufferTime"),Jl=class extends W{constructor(i,e){super(i),this.buffer=[],this.delayTime=e}dispose(){clearTimeout(this.timeoutId),super.dispose()}delay(i){this.timeoutId=setTimeout(()=>{let e=this.buffer.shift();if(e){let{time:t,data:r}=e;super.next(r),this.buffer.length&&this.delay(Number(this.buffer[0].time)-Number(t))}},i)}next(i){this.buffer.length||this.delay(this.delayTime),this.buffer.push({time:new Date,data:i})}complete(){this.timeoutId=setTimeout(()=>super.complete(),this.delayTime)}},pT=q(Jl,"delay"),jl=class extends W{constructor(i,e){super(i),this.selector=e}error(i){this.dispose(),this.selector(i)(this.sink)}},Xl=q(jl,"catchError");var fT=()=>o=>new Promise((i,e)=>{let t;new Gr(o,r=>t=r,e,()=>i(t))}),_T=()=>o=>{let i;return new ReadableStream({start(e){i=new Gr(o,e.enqueue.bind(e),e.error.bind(e),e.close.bind(e))},cancel(){i.dispose()}})},be=(o=de,i=de,e=de)=>t=>new Gr(t,o,i,e),zl=class extends W{constructor(i,e){super(i),e instanceof Function?this.next=t=>{e(t),i.next(t)}:(e.next&&(this.next=t=>{e.next(t),i.next(t)}),e.complete&&(this.complete=()=>{e.complete(),i.complete()}),e.error&&(this.error=t=>{e.error(t),i.error(t)}))}},Yl=q(zl,"tap"),Ql=class extends W{constructor(i,e){super(i),this.timeout=e,this.id=setTimeout(()=>this.error(new Qs(this.timeout)),this.timeout)}next(i){super.next(i),clearTimeout(this.id),this.next=super.next}dispose(){clearTimeout(this.id),super.dispose()}},gT=q(Ql,"timeout"),TT=(o=1/0)=>i=>{if(i instanceof yt){let e=ie(t=>{let r=o,s=new W(t);s.error=n=>{r-- >0?s.subscribe(i):t.error(n)},s.sourceId=e.id,s.subscribe(i)},"retry",[o]);return e.source=i,Ce.pipe(e),e}else return e=>{let t=o,r=new W(e);r.error=s=>{t-- >0?i(r):e.error(s)},i(r)}};var pi=class pi extends Br{constructor(e,t,r){super({userId:t.userId,sdkAppId:e.sdkAppId,mediaType:r,room:e});this.room=e;this.user=t;d(this,"tinyId");d(this,"isRemote",!0);d(this,"jitterBufferDelay",0);d(this,"availableState");d(this,"remotePublishState");d(this,"_triggerCheckDecodeSubject",tt(he(this,pi.STATE_SUBSCRIBE)));this.tinyId=t.tinyId,this.availableState=new H(`${t.userId}-${this.mediaType}-available`,"remote-track-available"),this.remotePublishState=new H(`${t.userId}-${this.mediaType}-remote-publish`,"remote-track-publish"),le(Tl(he(this,H.STATECHANGED),he(this.remotePublishState,H.STATECHANGED)),en(()=>this.isRemotePublished&&(this.isSubscribed||this.isSubscribing)),be(c=>{this.availableState.state!==(c?H.ON:H.OFF)&&(this.availableState.state=c?H.ON:H.OFF),this.updatePlayingState(c)}));let s=le(he(this.player,ue.ERROR),mi(c=>c.code===MediaError.MEDIA_ERR_DECODE)),n=le(Zs(5e3),mi(()=>this.ignoreDecodeError||!this.isSubscribed||!this.isPlayCalled||!this.stat.bytesReceived?!1:this.player.isPlaying||(this.kind===p.AUDIO?this.getAudioLevel()>0:this.stat.framesDecoded>0)?(this.reportDecodeResult(!0),!1):!0)),a=le(El(s,n),Be(he(this,H.INIT)));le(this._triggerCheckDecodeSubject,mi(()=>!this.ignoreDecodeError),Jr(a),be(c=>{this.reportDecodeResult(!1,c)}))}setMute(e){this.isRemotePublished&&super.setMute(e)}setInputMediaStreamTrack(e){super.setInputMediaStreamTrack(e),this.isRemotePublished&&this.isSubscribed&&this.player.setTrack(this.outMediaTrack)}checkDecodeResult(){this._triggerCheckDecodeSubject.next(!0)}waitHasMediaTrack(){return new Promise(e=>{this.mediaTrack?e():this.once("input-media-track-changed",e)})}get ignoreDecodeError(){var t,r;return(((r=(t=this.room)==null?void 0:t.networkQuality)==null?void 0:r.downlinkNetworkQuality)||0)>3||this.player.isInAutoPlayFailedState}get isSubscribing(){return this.state.toString()==="subscribeing"}get isSubscribed(){return this.state===pi.STATE_SUBSCRIBE}get isAvailable(){return this.availableState.state===H.ON}get isNeedPlay(){return this.isAvailable&&this.isPlayCalled}subscribe(e){return e}unsubscribe(){this.player.setTrack(null),this.streamType==="main"&&this.kind==="video"&&this.room.changeType(!1,this.user)}reportDecodeResult(e,t){let r=this.kind===p.AUDIO;b[e?"addSuccessEvent":"addFailedEvent"]({key:r?504700:514702}),e||(b.addEnum({key:r?504701:514703,value:ys()}),re.uploadEvent({log:`stat-decode-failed-${this.kind}-${Mr()||xi()}`,userId:this.room.userId}),this._log.warn(`decode failed: isPlaying: ${this.player.isPlaying} ${this.kind===p.AUDIO?`audioLevel: ${this.getAudioLevel()}`:`framesDecoded: ${this.stat.framesDecoded>0}`}`),this.emit("decode-failed",{error:t}))}updatePlayingState(e){if(this.isPlayCalled&&this.player.isStopped===e){if(e&&(!this.isSubscribed||!this.isRemotePublished||!this.outMediaTrack)){this.log.info(`abort play, isSubscribed: ${this.isSubscribed} isAvailable: ${this.isRemotePublished} hasTrack: ${!!this.outMediaTrack} `);return}super.updatePlayingState(e)}}close(){super.close(),this.outMediaTrack&&this.uninstallTrackEvent(this.outMediaTrack)}onFlagChanged(){this.remotePublishState.state=this.isRemotePublished?H.ON:H.OFF}onTrackMuted(){this.isNeedPlay&&super.onTrackMuted()}onTrackUnmuted(){this.isNeedPlay&&super.onTrackUnmuted()}onTrackEnded(){this.isNeedPlay&&super.onTrackEnded()}};d(pi,"STATE_SUBSCRIBE","subscribe"),v([Ua(5,1)],pi.prototype,"waitHasMediaTrack",1),v([Te(H.INIT,pi.STATE_SUBSCRIBE,{success(){this.log.info("subscribed"),E.emit(A.REMOTE_TRACK_SUBSCRIBED,{track:this})},ignoreError:!0}),lt(521716,!1)],pi.prototype,"subscribe",1),v([Te(pi.STATE_SUBSCRIBE,H.INIT,{sync:!0,success(){this.log.info("unsubscribed"),E.emit(A.REMOTE_TRACK_UNSUBSCRIBED,{track:this})}})],pi.prototype,"unsubscribe",1);var Uo=pi;var Gt=class extends Uo{constructor(e,t){super(e,t,1);d(this,"volume",0);d(this,"mediaType",1);d(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,end2EndDelay:0,jitterBufferDelay:0});this.manager=e.audioManager}get dbVolume(){return Ur.isRunning?this.player.pipeline.volumeMeter.getVolumeDb():Math.floor(Math.max(10*Math.log10(this.volume)+100,0))}decodeFrame(e){if(!this.manager)return e;let t=e;for(let r of this.manager.decodePipeline)if(r&&(t=r({frame:t,track:this}),!t))return;return t}getAudioLevel(){let e=this.volume||super.getAudioLevel();return e>1?1:e}get isRemotePublished(){return this.user.muteState.audioAvailable}};var ST=[-1,-1,1,-1,-1,1,1,1],IT=[0,0,1,0,0,1,1,1];var it=class extends H{constructor(e,t){super();this.context=e;d(this,"name");d(this,"input");d(this,"output");d(this,"texture");d(this,"ctx2d",null);d(this,"fbo");d(this,"width",0);d(this,"height",0);d(this,"x",0);d(this,"y",0);d(this,"program");d(this,"vertexShader");d(this,"fragmentShader");d(this,"totalFrames",0);d(this,"dropFrames",0);d(this,"matchInputSize",!0);d(this,"texCoordBuffer");d(this,"positionBuffer");d(this,"lastInfo",{name:"",timestamp:0,totalFrames:0,x:0,y:0,width:0,height:0,fps:0});d(this,"cost",0);d(this,"_canvas",null);d(this,"_image");d(this,"log");if(this.context.on("disconnect",this.close,this),this.name=t.name,this.log=t.logger,this.matchInputSize=t.matchInputSize!==!1,this.width=t.width||e.width,this.height=t.height||e.height,this._image=t.image,e instanceof Xe){e.ctx&&t.create2d&&(typeof OffscreenCanvas=="function"&&nt!==16?this._canvas=new OffscreenCanvas(this.width,this.height):(this._canvas=document.createElement("canvas"),this._canvas.width=this.width,this._canvas.height=this.height),this.ctx2d=this._canvas.getContext("2d"),this._image=this._canvas);return}try{let r=e.ctx;this.texCoordBuffer=this.createBuffer(IT),this.positionBuffer=this.createBuffer(ST),t.createTexture!==!1&&(this.texture=r.createTexture(),this.useTexture(),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.pixelStorei(r.PACK_ALIGNMENT,1),r.pixelStorei(r.UNPACK_ALIGNMENT,1)),t.useFbo&&(this.fbo=r.createFramebuffer(),this.useBufferFrame(),this.useTexture(),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,this.width,this.height,0,r.RGBA,r.UNSIGNED_BYTE,null),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,this.texture,0)),t.useDefaultProgram?this.program=e.defaultProgam:(t.vertexShaderSource||t.fragmentShaderSource)&&(this.vertexShader=t.vertexShaderSource?e.createShader(r.VERTEX_SHADER,t.vertexShaderSource):e.defaultVShader,this.fragmentShader=t.fragmentShaderSource?e.createShader(r.FRAGMENT_SHADER,t.fragmentShaderSource):e.defaultFShader,this.program=e.createProgram(this.vertexShader,this.fragmentShader))}catch(r){this.context.destroy(new y({code:I.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${r.message||r}`}))}}get image(){return this._image}set image(e){this._image=e}createFramebuffer(e){let t=this.context.ctx,r=t.createFramebuffer();return t.bindFramebuffer(t.FRAMEBUFFER,r),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,e,0),r}connect(e,...t){return e.addInput(this,...t),this.output=e,e}addInput(e,...t){this.input=e,this.matchInputSize&&e.width&&e.height&&this.resize(e.width,e.height)}requestFrame(e){let t=Date.now();if(this.context instanceof ke&&this.render(e)||this.context instanceof Xe&&this.render2d(e))this.totalFrames++;else return!1;return this.cost=Date.now()-t,!0}render2d(e){var t;return(t=this.input)!=null&&t.requestFrame(e)?this.draw2d(this.input.image,0,0,this.width,this.height):!1}update(e=0){var t;(t=this.output)==null||t.update(e)}disconnect(...e){var t;(t=this.output)==null||t.removeInput(this,...e),delete this.output}removeInput(e,...t){delete this.input}close(){var e,t;if(this.context.off("disconnect",this.close,this),(e=this.output)==null||e.removeInput(this),delete this.output,(t=this.input)==null||t.disconnect(),this.context instanceof ke){let r=this.context.ctx;r.deleteBuffer(this.texCoordBuffer),r.deleteBuffer(this.positionBuffer),this.fbo&&r.deleteFramebuffer(this.fbo),this.texture&&r.deleteTexture(this.texture),this.vertexShader&&this.vertexShader!==this.context.defaultVShader&&r.deleteShader(this.vertexShader),this.fragmentShader&&this.fragmentShader!==this.context.defaultFShader&&r.deleteShader(this.fragmentShader),this.program&&this.program!==this.context.defaultProgam&&r.deleteProgram(this.program)}this._canvas&&(this._canvas.width=0,this._canvas.height=0,this.ctx2d=null),this.removeAllListeners()}useTexture(){this.useTextures(this.texture)}useInputTexture(){var e;this.useTextures((e=this.input)==null?void 0:e.texture)}useTextures(...e){let t=this.context.ctx;e.forEach((r,s)=>{r&&(t.activeTexture(t.TEXTURE0+s),t.bindTexture(t.TEXTURE_2D,r))})}useProgram(){this.context.ctx.useProgram(this.program)}useBufferFrame(){let e=this.context.ctx;e.bindFramebuffer(e.FRAMEBUFFER,this.fbo||null)}createBuffer(e){let t=this.context.ctx,r=t.createBuffer();return t.bindBuffer(t.ARRAY_BUFFER,r),t.bufferData(t.ARRAY_BUFFER,new Float32Array(e),t.STATIC_DRAW),r}setTexBuffer(e){let t=this.context.ctx;t.bindBuffer(t.ARRAY_BUFFER,this.texCoordBuffer),t.bufferData(t.ARRAY_BUFFER,new Float32Array(e),t.STATIC_DRAW)}setPosBuffer(e){let t=this.context.ctx;t.bindBuffer(t.ARRAY_BUFFER,this.positionBuffer),t.bufferData(t.ARRAY_BUFFER,new Float32Array(e),t.STATIC_DRAW)}changeBufferData(e,t){let r=this.context.ctx;r.bindBuffer(r.ARRAY_BUFFER,e),r.bufferData(r.ARRAY_BUFFER,new Float32Array(t),r.STATIC_DRAW)}setAttributes(...e){let t=this.context.ctx;e.forEach((r,s)=>{t.enableVertexAttribArray(s),t.bindBuffer(t.ARRAY_BUFFER,r),t.vertexAttribPointer(s,2,t.FLOAT,!1,0,0)})}getVertexPoint(e,t){return[e/this.width*2-1,t/this.height*2-1]}layout2texCoords(e){return[...this.getVertexPoint(e.x,e.y),...this.getVertexPoint(e.x+e.width,e.y),...this.getVertexPoint(e.x,e.y+e.height),...this.getVertexPoint(e.x+e.width,e.y+e.height)]}resize(e,t){if(!(this.width===e&&this.height===t)){if(this.width=e,this.height=t,this._canvas&&(this._canvas.width=e,this._canvas.height=t),this.texture&&this.fbo){this.useTexture();let r=this.context.ctx;r.texImage2D(r.TEXTURE_2D,0,r.RGBA,e,t,0,r.RGBA,r.UNSIGNED_BYTE,null)}this.output&&this.output.matchInputSize&&this.output.resize(e,t)}}draw(e,t){this.setAttributes(e||this.positionBuffer,t||this.texCoordBuffer);let r=this.context.ctx;r.drawArrays(r.TRIANGLE_STRIP,0,4)}draw2d(e,t,r,s,n){return this.ctx2d&&e?(e instanceof ImageData?this.ctx2d.putImageData(e,t,r):(this.ctx2d.drawImage(e,t,r,s,n),typeof VideoFrame!="undefined"&&e instanceof VideoFrame&&e.close()),!0):!1}getInfo(){var u;let{totalFrames:e,x:t,y:r,width:s,height:n,name:a,cost:c}=this,l=Date.now(),h=(e-this.lastInfo.totalFrames)/((l-this.lastInfo.timestamp)/1e3)>>0;return this.lastInfo={totalFrames:e,x:t,y:r,width:s,height:n,timestamp:l,fps:h,name:a,cost:c},N({parent:(u=this.input)==null?void 0:u.getInfo()},this.lastInfo)}createTexture(e){let t=this.context.ctx,r=t.createTexture();return this.useTextures(r),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.pixelStorei(t.PACK_ALIGNMENT,1),t.pixelStorei(t.UNPACK_ALIGNMENT,1),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,e),r}};v([Te(H.INIT,"connected",{sync:!0})],it.prototype,"connect",1),v([Te("connected",H.INIT,{ignoreError:!0,sync:!0})],it.prototype,"disconnect",1),v([Te([],"closed",{sync:!0})],it.prototype,"close",1);var AT=le(Sl(250),en(()=>performance.now()),Gi());var Vm=o=>i=>{let e=performance.now();le(AT,Wa(t=>t-e<o),Wi(1))(i)};var CT=[0,1,1,1,0,0,1,0],jr=class extends it{constructor(e,t){super(e,Object.assign({useDefaultProgram:!0,createTexture:!1,name:"destination"},t));d(this,"_intervalId",0);d(this,"_sequence",0);d(this,"checkGLError",!1);d(this,"checkVisibilityChange");e instanceof Xe?this.ctx2d=e.ctx||null:e.available&&(t!=null&&t.mirrorUpAndDown)&&this.setTexBuffer(CT)}start(e){this.log.info(`${this.name} start render ${e} fps`),se.clearTask(this._intervalId),this._intervalId=se.run("intervalInWorker",()=>{if(e!==this.context.frameRate&&(se.clearTask(this._intervalId),this.start(this.context.frameRate)),this.requestFrame(this._sequence++),this.checkGLError&&this.context instanceof ke){let r=this.context.ctx.getError();r&&this.context.destroy(new y({code:I.VIDEO_MANAGER_ERROR,extraCode:5,message:`${this.name} req ${this._sequence} render ${this.totalFrames} faild ${r}`}))}},{fps:this.context.frameRate})}render(e){var t;return(t=this.input)!=null&&t.requestFrame(e)?(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0):!1}addInput(e,...t){super.addInput(e,...t),this.start(this.context.frameRate)}update(e=0){if(this._intervalId&&(se.clearTask(this._intervalId),this._intervalId=0,e===1)){this.log.info(`${this.name} use requestVideoFrameCallback`);let t=()=>{document.hidden&&(this.start(this.context.frameRate),this.log.info(`${this.name} use timer`),document.removeEventListener("visibilitychange",t))};document.addEventListener("visibilitychange",t)}this.requestFrame(this._sequence++)}removeInput(e){super.removeInput(e),se.clearTask(this._intervalId)}resize(e,t){super.resize(e,t),this.context.setSize(e,t)}close(){super.close(),se.clearTask(this._intervalId),document.removeEventListener("visibilitychange",this.checkVisibilityChange)}},Bo=class extends jr{constructor(e,t){super(e,t);d(this,"_videoTrack");d(this,"_muteOb");d(this,"_closedOb",he(this,"closed"));d(this,"_subscription");d(this,"_canvasContainer");Number(Mi)<17&&(this._canvasContainer=document.createElement("div"),this._canvasContainer.style.display="none"),[this._videoTrack]=e._canvas.captureStream().getVideoTracks(),this._muteOb=he(this._videoTrack,"mute"),le(he(this._videoTrack,"ended"),Be(this._closedOb),be(()=>{this.context.destroy(new y({code:I.VIDEO_MANAGER_ERROR,extraCode:8,message:"video track ended"}))}))}enableCheckMute(){this._subscription=le(this._muteOb,Be(this._closedOb),Jr(Vm(5e3)),mi(()=>{var e;return!!((e=this._videoTrack)!=null&&e.muted)&&!document.hidden}),be(()=>{this.context.destroy(new y({code:I.VIDEO_MANAGER_ERROR,extraCode:7,message:"video track muted"}))}))}disableCheckMute(){var e;(e=this._subscription)==null||e.dispose()}get videoTrack(){return this._videoTrack}putCanvasIntoDom(){!this.context._canvas||!this._canvasContainer||document.getElementById(this.context._canvas.id)||(this.log.info(`${this.name} put canvas to body`),document.body.appendChild(this._canvasContainer),this._canvasContainer.appendChild(this.context._canvas))}render(e){return this.putCanvasIntoDom(),super.render(e)}render2d(e){return this.putCanvasIntoDom(),super.render2d(e)}close(){var e,t;super.close(),(e=this._videoTrack)==null||e.stop(),delete this._videoTrack,(t=this._canvasContainer)==null||t.remove()}},Za=class extends Bo{render(i){var e;return!!((e=this.input)!=null&&e.requestFrame(i))}};var Ka=class extends Bo{constructor(e,t,r){super(e,{name:"smallDestination",logger:r});this.resolution=t}resize(e,t){let r,s=e*t,n=this.resolution.width*this.resolution.height;this.log.info(`big res: ${e}*${t} small res: ${this.resolution.width}*${this.resolution.height} `),s>n?r=s/n:(this.log.warn(`Small stream resolution is not smaller than big stream, which is invalid. big: ${e} * ${t} small: ${this.resolution.width} * ${this.resolution.height}`),r=s/(160*120)),super.resize(e/Math.sqrt(r),t/Math.sqrt(r))}};var tn=class extends it{constructor(e,t){super(e,N({name:"imageSource"},t));d(this,"_lastImage");d(this,"_totalFrames",0);d(this,"_autoResize",!1);d(this,"_canvasRendered");d(this,"_videoCallbackId",0);d(this,"waitingFirstFrame",!0);d(this,"shouldUpdate",!0);this._autoResize=(t==null?void 0:t.autoResize)!==!1,nt===16&&(this._canvasRendered=tt(),le(this._canvasRendered,Ys(this._image),Vo(r=>r instanceof HTMLCanvasElement?he(r,"rendered"):Ks()),Be(he(this,"closed")),be(()=>{this.update()})))}onFirstFrame(){this.waitingFirstFrame=!1}tryVideoFrameCallback(){if(!this.shouldUpdate)return;let e=this.image;this._videoCallbackId&&e.cancelVideoFrameCallback(this._videoCallbackId),Vr()&&!document.hidden&&(this._videoCallbackId=e.requestVideoFrameCallback((t,r)=>{this.waitingFirstFrame&&this.onFirstFrame(),document.hidden||(this._totalFrames=r.presentedFrames,this.update(1))}))}_render(e,t){var a;let{width:r,height:s}=this,{image:n}=this;if(n instanceof HTMLVideoElement){if(this.tryVideoFrameCallback(),{videoWidth:r,videoHeight:s}=n,!r||!s)return!1;n.width=r,n.height=s}else if(n instanceof HTMLImageElement||n instanceof ImageData||n instanceof ImageBitmap){if({width:r,height:s}=n,n!==this._lastImage)this._lastImage=n;else if(r===this.width&&s===this.height)return!1}else n instanceof HTMLCanvasElement||n instanceof OffscreenCanvas?({width:r,height:s}=n,this._lastImage=n):typeof VideoFrame!="undefined"&&n instanceof VideoFrame&&({displayWidth:r,displayHeight:s}=n,(a=this._lastImage)==null||a.close(),this._lastImage=n);if(!this._autoResize)return!0;if(this.width===r&&this.height===s&&this.totalFrames){if(t){this.useTexture();let c=this.context.ctx;c.texSubImage2D(c.TEXTURE_2D,0,0,0,c.RGBA,c.UNSIGNED_BYTE,n)}}else{if(t){this.useTexture();let c=this.context.ctx;c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,n)}this.resize(r,s)}return!0}get image(){return this._image}set image(e){var t;(t=this._canvasRendered)==null||t.next(e),this._image=e}render(e){return this._render(e,!0)}render2d(e){return this._render(e,!1)}},rn=class extends tn{constructor(e,t,r){super(e,r);this._player=t;this.name="videoPlayerSource",le(he(this._player,ue.PLAYER_STATE_CHANGED),Be(he(this,"closed")),mi(({state:s})=>s==="PLAYING"),be(()=>{this.tryVideoFrameCallback()}))}get image(){return this._player.element}},Ji=class extends rn{get available(){return this._player.isPlaying&&!this.waitingFirstFrame}constructor(i,e,t){super(i,new _t({id:t.name,track:e,muted:!0,container:null,objectFit:"contain",log:t.logger}),t),this.name="videoTrackSource",this._player.play()}replaceTrack(i){this.waitingFirstFrame=!0,this._player.setTrack(i),this._player.play()}close(){super.close(),this._player.stop()}};var bT=`
|
|
31
|
+
`,r.onclick=this.onQuestionClick.bind(this);let o=document.createElement("div");o.className=rm,o.innerText=`${Sr()?"\u8BE6\u60C5 >":"Detail >"}`,o.onclick=this.onCollapseClick.bind(this);let s=t.content.firstChild,n=s.querySelector(`.${ud}`);return n.appendChild(o),n.appendChild(r),n.appendChild(e),s}addDiaLog(){sm()||(this._dialogNode=this.createDiaLog(),document.body.appendChild(this._dialogNode),this._dialogNode.onclick=this.onConfirm.bind(this),this._dialogNode.querySelector(`.${qs}`).onclick=t=>t.stopPropagation(),this._bodyPosition=document.body.style.position,document.body.style.position="fixed",$.info("show autoplay dialog"),je.uploadEvent({log:X_}))}deleteDiaLog(){this._dialogNode&&(document.body.removeChild(this._dialogNode),document.body.style.position=this._bodyPosition,this._dialogNode=null)}onConfirm(){$.warn("confirm clicked, try resume stream"),V.emit(U.AUTOPLAY_DIALOG_CLICK_CONFIRM),this.deleteDiaLog()}onCollapseClick(){let t=this._dialogNode.querySelector(`.${sf}`);t.style.visibility=`${this._showDetail?"hidden":"visible"}`,t.style.height=`${this._showDetail?0:"fit-content"}`,this._showDetail=!this._showDetail,this._isCollapseClicked||je.uploadEvent({log:Q_}),this._isCollapseClicked=!0}onQuestionClick(){window.open(df,"_blank"),this._isQuestionClicked||je.uploadEvent({log:Y_}),this._isQuestionClicked=!0}},uf=im;var rr=class extends Wr{constructor(e){super(e,N.VIDEO);u(this,"stat",{});u(this,"_calculateTimeout",-1);u(this,"viewMirror",!1);u(this,"objectFit");u(this,"container");u(this,"canvas");this.mode=e.canvas?1:0,this.container=e.container,this.canvas=e.canvas,P(e.viewMirror)||(this.viewMirror=e.viewMirror),P(e.objectFit)||(this.objectFit=e.objectFit),this.initializeElement()}get isPlaying(){var e;return this._state!=="PLAYING"||this.element&&this.element.paused?!1:((e=this.track)==null?void 0:e.readyState)==="live"&&!this.track.muted}initializeElement(){var r;let e=document.createElement(N.VIDEO);this.track&&this.mode!==2&&(e.srcObject=new MediaStream([this.track])),e.muted=!0,e.setAttribute("id",`video_${this.id}`),e.setAttribute("style",this.styleAttribute),this.canvas&&this.canvas.setAttribute("style",this.styleAttribute),e.setAttribute("autoplay","autoplay"),e.setAttribute("playsinline","playsinline"),this.element=e,(r=this.container)==null||r.appendChild(this.elementToRender),this.bindElementEvents(),this.calculateStat()}get styleAttribute(){let e=`width: 100%; height: 100%; object-fit: ${this.objectFit};background-color: black;`;return this.viewMirror&&(e+="transform: scaleX(-1);"),e}setContainer(e){var r;this.container=e,this.track&&this.elementToRender&&((r=this.container)==null||r.appendChild(this.elementToRender))}bindElementEvents(){let e=super.bindElementEvents();this.handleElementEvent=this.handleElementEvent.bind(this),e&&e.add(N.ENTER_PICTURE_IN_PICTURE,this.handleElementEvent).add(N.LEAVE_PICTURE_IN_PICTURE,this.handleElementEvent)}handleTrackEvent(e){var r;super.handleTrackEvent(e),e.type===N.MUTE&&((r=this.stat)!=null&&r.fps)&&(this.stat.fps=0)}handleElementEvent(e){var o,s;if(this.mode===2)return;super.handleElementEvent(e);let r=e.type;if(r===N.PAUSE&&(this.container&&document.getElementById(this.container.id)||this._log.warn(`${this.kind} player has been remove, element ID: ${(o=this.container)==null?void 0:o.id}`),this.container&&this.container!==document.getElementById(this.container.id)&&(this._pausedRetryCount=wo,this._log.info(`view container ${(s=this.container)==null?void 0:s.id} is recreated`)),this._pausedRetryCount>0&&!sm()&&(this._log.info(`[${wo-this._pausedRetryCount+1}/${wo}] ${this.kind} player auto resume when paused`),this.resume(),this._pausedRetryCount--),this.stat.fps&&(this.stat.fps=0)),this.viewMirror&&this.element){let n=this.element.style.transform;r===N.ENTER_PICTURE_IN_PICTURE?this.element.style.transform=n.replace("scaleX(-1)",""):r===N.LEAVE_PICTURE_IN_PICTURE&&!n.includes("scaleX")&&(this.element.style.transform=`${n} scaleX(-1)`)}}setCanvas(e,r=1){var o,s,n,c;this.canvas!==e&&((o=this.canvas)==null||o.remove(),e==null||e.setAttribute("style",this.styleAttribute),this.canvas=e,this.mode=e?r:0,this.mode===2&&this.setTrack(e.captureStream().getVideoTracks()[0]),e?((s=this.element)==null||s.remove(),(n=this.container)==null||n.appendChild(e)):this.element&&((c=this.container)==null||c.appendChild(this.element)))}setAttr(e){let r=Object.assign({autoplay:"autoplay",playsinline:"playsinline",muted:!0},e);r.style=Object.assign({width:"100%",height:"100%"},r.style),super.setAttr(r)}get mirror(){return this.viewMirror}setRect(e,r){this.elementToRender&&(this.elementToRender.style.width=`${e}px`,this.elementToRender.style.height=`${r}px`)}setViewMirror(e){this.elementToRender&&(this.elementToRender.style.transform=e?"scaleX(-1)":""),this.viewMirror=e}setObjectFit(e){this.elementToRender&&(this.elementToRender.style.objectFit=`${e}`),this.objectFit=e}setPoster(e){this.element&&(this.element.poster=e)}stop(e=0){var r;super.stop(e),(r=this.canvas)==null||r.remove()}play(){return this.element?this.elementToRender&&this.elementToRender.parentElement!==this.container&&this.container&&this.container.append(this.elementToRender):this.initializeElement(),this.mode===2?Promise.resolve():super.play()}get elementToRender(){return this.canvas||this.element}setTrack(e){e!==this.track&&(this.unbindTrackEvents(),this.track=e,this.emit(et.MEDIA_TRACK_CHANGED,e),e!==null&&(this.bindTrackEvents(),this.element&&this.mode!==2&&(this.element.srcObject=new MediaStream([e]),this.element.remove()),this.elementToRender&&this.elementToRender.parentElement!==this.container&&this.container&&this.container.append(this.elementToRender)))}getVideoFrame(){if(this.canvas)return this.canvas.toDataURL("image/png");if(!this.element)return"";let e=document.createElement("canvas");return e.width=this.element.videoWidth,e.height=this.element.videoHeight,e.getContext("2d").drawImage(this.element,0,0),e.toDataURL("image/png")}getElement(){return this.element}calculateStat(){try{if(fi()&&this.element&&this._calculateTimeout<0){let e=0,r=null,o=(s,n)=>{this.stat.width=n.width,this.stat.height=n.height,r&&(this.stat.fps=Math.round((n.presentedFrames-r.presentedFrames)/(s-e)*1e3)),e=s,r=n,this._calculateTimeout=-1,this.element&&(this._calculateTimeout=setTimeout(()=>{var c;return(c=this.element)==null?void 0:c.requestVideoFrameCallback(o)},2e3))};this.element.requestVideoFrameCallback(o)}}catch(e){this._log.warn("init stat failed",e)}}};function Ei(i,t){return A(this,null,function*(){if(!i.audioWorklet)return Promise.reject("audioWorklet is not supported");try{yield i.audioWorklet.addModule(t),$.info("worklet addModule success")}catch(e){throw $.info(`worklet addModule catch error. ${e.message}`),e}})}var fa;typeof AudioContext!="undefined"?fa=AudioContext:typeof webkitAudioContext!="undefined"?fa=webkitAudioContext:typeof mozAudioContext!="undefined"&&(fa=mozAudioContext);var vr,lf=-1;mf();function mf(){try{if(vr)return;vr=new fa({sampleRate:48e3}),vr.onstatechange=()=>{$.info(`context state: ${vr.state}${vr.state!=="running"?` visibilityState: ${document.visibilityState}`:""}`),Js()},clearTimeout(lf)}catch(i){$.error(`initAudioContext failed: ${i} typeof AudioContextClass: ${typeof fa}`),lf=setTimeout(mf,1e3)}}var Js=()=>{vr.state==="suspended"?(zs(),document.addEventListener("click",Js)):vr.state==="interrupted"?zs():(document.removeEventListener("visibilitychange",Js),document.removeEventListener("click",Js))},nm=0,am=-1;function zs(){return new Promise((i,t)=>{if(vr.state==="running")return i();Date.now()-nm<1e3?(clearTimeout(am),am=setTimeout(()=>{nm=Date.now(),vr.resume().then(i,t)},1e3)):(clearTimeout(am),nm=Date.now(),vr.resume().then(i,t))}).catch(i=>{$.warn(`context resume failed: ${i}`),document.addEventListener("visibilitychange",Js)})}document.addEventListener("click",Js);var ze=i=>vr;var ft=class{constructor(t){this.name=t;u(this,"node");u(this,"node2");u(this,"pre",new Set);u(this,"next",new Set);u(this,"context");u(this,"connectedNodes",new Set);u(this,"nextInputChannelMap",new Map);u(this,"_channelCount",1)}get channelCount(){return this._channelCount}set channelCount(t){this._channelCount=t,this.setChannelCount(this.node,t),this.setChannelCount(this.node2,t),this.next.forEach(e=>e.channelCount=t)}setChannelCount(t,e){!t||t instanceof ScriptProcessorNode||(t.channelCountMode="explicit",t.channelCount=e||this.channelCount||1)}setContext(t){this.context=t,this.node&&t.addMixWeight()}removeContext(){var t;this.node&&((t=this.context)==null||t.reduceMixWeight()),delete this.context}replaceNode(t){var e;if(t!==this.node)try{this.node?this._disconnect():(e=this.context)==null||e.addMixWeight(),this.node=t,this.setChannelCount(this.node),this.preNodeReconnect(),this.reconnect()}catch(r){$.error(r)}}setNode(t,e){var r;if(!this.node)try{(r=this.context)==null||r.addMixWeight(),this.node=t,this.setChannelCount(this.node),e&&(this.node2=e,this.setChannelCount(this.node2)),this.preNodeReconnect(),this.reconnect(),Q.addSuccessEvent({key:502701})}catch(o){$.error(o),Q.addFailedEvent({key:502701,error:o})}}deleteNode(){var t;if(this.node)try{this._disconnect(),delete this.node,delete this.node2,(t=this.context)==null||t.reduceMixWeight(),this.preNodeReconnect(),Q.addSuccessEvent({key:502702})}catch(e){$.error(e),Q.addFailedEvent({key:502702,error:e})}}preNodeReconnect(){this.pre.forEach(t=>{t.node?t.reconnect():t.preNodeReconnect()})}connectNext(t){this.next.forEach(e=>{let r=this.nextInputChannelMap.get(e);t._connect(e.node,r)||e.connectNext(t)})}_connect(t,e=0){return!this.node||!t?!1:((this.node2||this.node).connect(t,0,e),this.connectedNodes.add(t),!0)}_disconnect(){this.connectedNodes.forEach(t=>{var e;return(e=this.node2||this.node)==null?void 0:e.disconnect(t)}),this.connectedNodes.clear()}reconnect(){this._disconnect(),this.connectNext(this)}pipeTo(t,e=0){return this.next.add(t),t.pre.add(this),this.nextInputChannelMap.set(t,e),t}},md=class extends ft{constructor(e=256){super();this.fftSize=e;u(this,"dataArray",new Uint8Array(0))}setNode(e){e.fftSize=this.fftSize,this.dataArray=new Uint8Array(e.frequencyBinCount),super.setNode(e)}getByteTimeDomainData(){var e;return(e=this.node)==null||e.getByteTimeDomainData(this.dataArray),this.dataArray}get level(){var e;return(e=this.node)==null||e.getByteTimeDomainData(this.dataArray),Math.max(...this.dataArray)/128-1}get timeDomainPathData(){let e=this.getByteTimeDomainData(),r=1,o=0,s=0,n=`M${o},${s}`;for(let c=0;c<e.length;c++)s=e[c]/128*100/2,n+=`L${o},${s}`,o+=r;return n}},ga=class{constructor(){u(this,"source",new ft);u(this,"gain",new ft);u(this,"destination",new ft)}get volume(){var t;return((t=this.gain.node)==null?void 0:t.gain.value)||1}setVolume(t){if(t===1){this.gain.node&&this.gain.deleteNode();return}this.gain.node||this.gain.setNode(ze().createGain()),this.gain.node.gain.value=t}replaceSource(t){this.source.replaceNode(Ea(t))}get track(){var t;return(t=this.stream)==null?void 0:t.getAudioTracks()[0]}get stream(){var t;return(t=this.destination.node)==null?void 0:t.stream}},Xs=class extends ga{constructor(e){super();this.context=e;u(this,"aec",new ft("aec"));u(this,"mixNode",new ft("mixNode"));u(this,"silentNode",new ft("silentNode"));u(this,"denoiser",new ft("denoiser"));u(this,"voiceChanger",new ft("voiceChanger"));this.source.pipeTo(this.aec).pipeTo(this.denoiser).pipeTo(this.voiceChanger).pipeTo(this.gain).pipeTo(this.destination),this.silentNode.pipeTo(this.mixNode).pipeTo(this.aec,1)}connect(){this.context.inputs.has(this)||(this.destination.setNode(this.context.destination),this.source.setContext(this.context),this.aec.setContext(this.context),this.silentNode.setContext(this.context),this.mixNode.setContext(this.context),this.denoiser.setContext(this.context),this.voiceChanger.setContext(this.context),this.gain.setContext(this.context),this.context.inputs.add(this))}disconnect(){this.context.inputs.has(this)&&(this.destination.deleteNode(),this.source.removeContext(),this.aec.removeContext(),this.silentNode.removeContext(),this.mixNode.removeContext(),this.denoiser.removeContext(),this.voiceChanger.removeContext(),this.gain.removeContext(),this.context.inputs.delete(this))}remove(){this.gain.deleteNode(),this.aec.deleteNode(),this.silentNode.deleteNode(),this.mixNode.deleteNode(),this.denoiser.deleteNode(),this.voiceChanger.deleteNode(),this.source.deleteNode(),this.disconnect()}setVolume(e){if(e===1){this.gain.node&&this.gain.deleteNode();return}this.gain.node||this.gain.setNode(this.context.audioContext.createGain()),this.gain.node.gain.value=e}},pd=class{constructor(){u(this,"audioContext",ze("audio-mixer"));u(this,"destination",this.audioContext.createMediaStreamDestination());u(this,"inputs",new Set);u(this,"mixWeight",0);this.destination.channelCount=1}addMixWeight(t=1){this.mixWeight+=t,this.mixWeight-1===t+1>>1&&this.mixOnChange()}reduceMixWeight(t=1){this.addMixWeight(-t)}close(){this.inputs.forEach(t=>t.remove())}get mixTrack(){return this.destination.stream.getAudioTracks()[0]}},pf=new WeakMap;function Ea(i){let t=pf.get(i);if(t)return t;let e=ze();if(i instanceof HTMLAudioElement)t=e.createMediaElementSource(i);else if(i instanceof MediaStreamTrack)t=e.createMediaStreamSource(new MediaStream([i]));else return i;return pf.set(i,t),t}var ir=class ir{constructor(t){u(this,"_volume",0);u(this,"_volumeDb",0);u(this,"_log");u(this,"_scriptProcessorNode",null);u(this,"_audioWorkletNode",null);u(this,"_interval",200);u(this,"ready",this.preload());let{log:e}=t;this._log=e,V.on(U.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}static get isRunning(){return Date.now()-ir.lastMessageTime<2e3}get node(){return this._audioWorkletNode||this._scriptProcessorNode}preload(){if(!ir.workletReady){let t='class VolumeMeterWorklet extends AudioWorkletProcessor{constructor(){super(),this.volume=0,this.intervalTime=200,this.tick=200,this.isStop=!1,this.cache=[],this.sentFirstInfo1=!1,this.unmute=!1,this.port.onmessage=t=>{var e=t.data;switch(e.name){case"chunk":this.cache.push(...e.data),this.sentFirstInfo1||(this.port.postMessage({cl:e.data.length}),this.sentFirstInfo1=!0);break;case"setIntervalTime":this.intervalTime=e.intervalTime;break;case"unmute":this.unmute=!0;break;case"stop":this.isStop=!0}}}process(t,s){t=t[0],s=s[0];if(t||s){if(this.isStop)return!1;var i=s&&s[0]?s[0].length:0,h=this.cache.length,a=(i<h?(s[0].set(this.cache.slice(0,i)),this.cache=this.cache.slice(i)):this.unmute&&s[0].set(t[0]),(i<h?s:t)[0]);if(a){let e=0;for(let t=0;t<a.length;++t)e=Math.max(Math.abs(a[t]),e);s=a.reduce((t,e)=>t+e*e,0)/a.length;this.volume=e,this.tick-=a.length,this.tick<0&&(this.tick+=this.intervalTime/1e3*sampleRate,this.port.postMessage({volume:this.volume,volumeDb:Math.max(10*Math.log10(s)+100,0)/100,cacheLen:h,outputLen:i}))}}return!0}}registerProcessor("volume-meter",VolumeMeterWorklet);';ir.workletReady=Ei(ir.audioContext,URL.createObjectURL(new Blob([t],{type:"application/javascript"})))}return ir.workletReady.then(()=>this.initAudioWorklet()).catch(t=>(this._log.error(`volumeMeter preload error: ${t}`),this.initScriptProcessor()))}initAudioWorklet(){if(!this._audioWorkletNode)try{this._audioWorkletNode=new AudioWorkletNode(ir.audioContext,"volume-meter");let t=!1;this._audioWorkletNode.port.onmessage=e=>{ir.lastMessageTime=Date.now(),this._volume=e.data.volume||0,this._volumeDb=e.data.volumeDb||0,!t&&e.data.cacheLen&&e.data.outputLen&&(this._log.warn("worklet play success"),t=!0)},this.handleAudioLevelInterval({interval:this._interval})}catch(t){this._log.error(`volumeMeter init audio worklet error: ${t}`),je.logFailedEvent({userId:this._log.userId,eventType:ei.LOAD_WORKLET,error:t}),this.initScriptProcessor()}}initScriptProcessor(){if(!this._scriptProcessorNode)try{this._scriptProcessorNode=ze("volume-meter").createScriptProcessor(2048,1,1),this._scriptProcessorNode.onaudioprocess=t=>{ir.lastMessageTime=Date.now();let e=t.inputBuffer.getChannelData(0),r=0;for(let o=0;o<e.length;++o)r+=e[o]*e[o];this._volume=Math.sqrt(r/e.length)||0}}catch(t){this._log.error(`volumeMeter init script processor error: ${t}`)}}destroy(){this._scriptProcessorNode&&(this._scriptProcessorNode.onaudioprocess=null),this._audioWorkletNode&&(this._audioWorkletNode.port.postMessage({name:"stop"}),this._audioWorkletNode.port.onmessage=null),this._audioWorkletNode=null,this._scriptProcessorNode=null,V.off(U.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}getInternalAudioLevel(){return this._volume}getCalculatedVolume(){return parseFloat(this._volume.toFixed(2))}getVolumeDb(){return Math.floor(this._volumeDb*100)}handleAudioLevelInterval(t){var r;let{interval:e}=t;this._interval=e,(r=this._audioWorkletNode)==null||r.port.postMessage({name:"setIntervalTime",intervalTime:e})}};u(ir,"lastMessageTime",0),u(ir,"audioContext",ze("volume-meter")),u(ir,"workletReady");var hd=ir,fd=class extends ft{constructor(e){super();u(this,"_volumeMeter");this._volumeMeter=new hd(e)}deleteNode(){super.deleteNode(),this._volumeMeter.destroy()}init(){return A(this,null,function*(){yield this._volumeMeter.preload(),this.setNode(this._volumeMeter.node)})}getCalculatedVolume(){return this._volumeMeter.getCalculatedVolume()}getInternalAudioLevel(){return this._volumeMeter.getInternalAudioLevel()}getVolumeDb(){return this._volumeMeter.getVolumeDb()}write(e){if(this.node){let r=e.allocationSize({planeIndex:0}),o=new Float32Array(r>>2);e.copyTo(o,{planeIndex:0}),this.node.port.postMessage({name:"chunk",data:o},[o.buffer]),e.close()}}},gd=hd;var Ef=Wi(Yi(),1);var ff=i=>t=>t.deviceId===i;var _a=class{constructor(t,e="Input"){u(this,"kind");u(this,"type");u(this,"devices",[]);this.kind=t,this.type=e}update(t,e){let r=t.filter(o=>o.kind===`${this.kind}${this.type.toLocaleLowerCase()}`);if(this.devices.length===1&&Qs(this.devices[0])){this.devices=r;return}e&&(r.forEach(o=>{if(o.deviceId&&!this.devices.find(ff(o.deviceId))){let s=`${this.kind}${this.type}Added`;$.warn(`${s}: ${JSON.stringify(o)}`),e.emit(s,o)}}),this.devices.forEach(o=>{if(o.deviceId&&!r.find(ff(o.deviceId))){let s=`${this.kind}${this.type}Removed`;$.warn(`${s}: ${JSON.stringify(o)}`),e.emit(s,o)}})),this.devices=r}hasDevice(t){return!!this.devices.find(e=>e.deviceId===t)}},cm=class extends Ef.EventEmitter{constructor(){super();u(this,"audioInputs",new _a(N.AUDIO));u(this,"videoInputs",new _a(N.VIDEO));u(this,"audioOutputs",new _a(N.AUDIO,"Output"));this.init(),navigator.mediaDevices&&(navigator.mediaDevices.addEventListener&&navigator.mediaDevices.addEventListener("devicechange",()=>this.update()),"ondevicechange"in navigator.mediaDevices||vt.run("interval",()=>{this.update()},{delay:1e4}))}init(){Ed().then(e=>{this.audioInputs.update(e),this.videoInputs.update(e),this.audioOutputs.update(e)})}update(){return A(this,arguments,function*(e=0){let r=yield Ed(e);return this.audioInputs.update(r,this),this.videoInputs.update(r,this),this.audioOutputs.update(r,this),this})}},St=vn||As?null:new cm;function Qs(i){return i.deviceId===i.groupId&&i.groupId===""}function Ed(){return A(this,arguments,function*(i=0){if(hi()||!sd())return[];let t=yield navigator.mediaDevices.enumerateDevices();if(i!==0){let e={audio:!1,video:!1};if(t.forEach(r=>{Qs(r)&&(r.kind===N.AUDIO_INPUT?e.audio=!0:r.kind===N.VIDEO_INPUT&&(e.video=!0))}),i===2&&(e.audio=!1),i===1&&(e.video=!1),e.audio||e.video){let r;try{r=yield navigator.mediaDevices.getUserMedia(e),e.audio&&zs()}catch(o){$.debug("capture before getDevices failed: ",o)}t=yield navigator.mediaDevices.enumerateDevices(),r==null||r.getTracks().forEach(o=>o.stop())}}return t.map((e,r)=>{let o={kind:e.kind,deviceId:e.deviceId,groupId:e.groupId,label:e.label||`${e.kind}_${r}`};return e.deviceId.length>0&&dm.add(`${e.deviceId}_${e.kind}`),e.getCapabilities&&(o.getCapabilities=()=>e.getCapabilities()),o})})}function Qt(i=!1){return St.update(i?1:0).then(t=>t.audioInputs.devices)}function or(i=!1){return St.update(i?2:0).then(t=>t.videoInputs.devices)}var gf=!1;function _f(){return A(this,null,function*(){try{gf||(gf=!0,$.info(`speakers:${(yield eo()).map(i=>` ${i.deviceId.slice(0,8)}: ${i.label}`)}`))}catch(i){}})}function eo(i=!1){return A(this,null,function*(){return(lt||It)&&(i=!1),St.update(i?1:0).then(t=>t.audioOutputs.devices)})}var dm=new Set;function Tf(i){if(i instanceof CanvasCaptureMediaStreamTrack||!(i instanceof MediaStreamTrack))return!1;let t=i.label.toLocaleLowerCase();if(t.includes("camera")||t.includes("webcam"))return!0;let r=`${((i==null?void 0:i.getSettings())||{}).deviceId}_${N.VIDEO_INPUT}`;return!!dm.has(r)}function If(i){if(i instanceof CanvasCaptureMediaStreamTrack||!(i instanceof MediaStreamTrack))return!1;let t=i.label.toLocaleLowerCase();if(t.includes("mic")||t.includes("\u9EA6\u514B\u98CE"))return!0;let r=`${((i==null?void 0:i.getSettings())||{}).deviceId}_${N.AUDIO_INPUT}`;return!!dm.has(r)}function um(i,t){return A(this,null,function*(){let r=(yield Qt()).find(o=>o.deviceId===Oo);return!t&&(r==null?void 0:r.groupId)===i||(r==null?void 0:r.groupId)===i&&r.label===t})}function Sf(s){return A(this,arguments,function*({newDeviceId:i,oldDeviceId:t,oldGroupId:e,oldLabel:r,kind:o}){return i!==t?!1:o===N.AUDIO&&i===Oo?yield um(e,r):!0})}var _d,lm=class extends ga{constructor(e){super();this.log=e;u(this,"volumeMeter");u(this,"volumeDestination");u(this,"analyser",new md);this.volumeMeter=new fd({log:this.log}),this.volumeDestination=new ft,this.volumeMeter.pipeTo(this.volumeDestination)}destroy(){this.gain.deleteNode(),this.volumeMeter.deleteNode(),this.analyser.deleteNode(),this.source.deleteNode(),this.destination.deleteNode(),this.volumeDestination.deleteNode()}},Td=class i extends Wr{constructor(e){super(e,N.AUDIO);u(this,"_outputDeviceId");u(this,"_volume",1);u(this,"_destination",ze("player").createMediaStreamDestination());u(this,"pipeline");u(this,"volumeMeterMode","worklet");this.mode=0,this.pipeline=new lm(this._log)}getMediaStream(){return this.pipeline.stream||(this.track?new MediaStream([this.track]):null)}initializeElement(e){if((Qi==="15.2"||Qi==="15.3"||Qi==="15.4")&&this.muted){this._log.info("audioElement is muted.");return}let o=_d||new Audio;o.setAttribute("autoplay","autoplay"),o.srcObject=this.getMediaStream(),o.muted=this.muted,this.element=o,Pe(e)&&(this.element.volume=Math.min(Math.max(e,0),1)),o===_d&&(_d=void 0),this.bindElementEvents()}play(e){return A(this,null,function*(){if(this.track)return this.pipeline.source.node||this.pipeline.replaceSource(this.track),this.element||this.initializeElement(e==null?void 0:e.volume),this._outputDeviceId&&(yield this.setSinkId(this._outputDeviceId)),this.volumeMeterMode==="worklet"?this.pipeline.volumeMeter.init():this.volumeMeterMode==="analyser"&&this.pipeline.analyser.setNode(ze("player").createAnalyser()),_f(),Bt(i.prototype,this,"play").call(this)})}stop(e=0){this.pipeline.destroy(),super.stop(e)}setSinkId(e){return A(this,null,function*(){var r,o;this._outputDeviceId!==e&&(this._outputDeviceId=e),this.element&&this.element.sinkId!==e&&(yield(o=(r=this.element).setSinkId)==null?void 0:o.call(r,e))})}get useDestination(){return!!this.pipeline.stream}setLoop(e){this.element&&(this.element.loop=e)}getAudioLevel(){return this.pipeline.volumeMeter.getCalculatedVolume()}getInternalAudioLevel(){return this.pipeline.volumeMeter.getInternalAudioLevel()}},Id=class extends Td{setTrack(t){this.track!==t&&(this.unbindTrackEvents(),this.track=t,this.emit(et.MEDIA_TRACK_CHANGED,t),t&&(this.bindTrackEvents(),this.element&&(this.element.srcObject=new MediaStream([t]))))}setVolume(t){this._volume=t,this.element&&(this.element.volume=t)}},Sd=class extends Td{constructor(e){super(e);u(this,"_sourceElement");u(this,"_output",new ft);this.pipeline.source.pipeTo(this.pipeline.gain),this.pipeline.gain.pipeTo(this.pipeline.volumeMeter).pipeTo(this._output),this.pipeline.gain.pipeTo(this.pipeline.destination)}setOutput(){this.mode=1,this._output.setNode(ze("player").destination)}write(e){this.pipeline.volumeMeter.write(e)}setTrack(e){var r,o,s;((o=(r=this.element)==null?void 0:r.error)==null?void 0:o.code)!==MediaError.MEDIA_ERR_DECODE&&this.track!==e&&(this.unbindTrackEvents(),this.track=e,this.emit(et.MEDIA_TRACK_CHANGED,e),e?(this.bindTrackEvents(),this._sourceElement?this._sourceElement.srcObject=new MediaStream([e]):!this.useDestination&&this.element&&(this.element.srcObject=new MediaStream([e])),this.pipeline.source.channelCount=((s=e.getSettings())==null?void 0:s.channelCount)||1,this.pipeline.replaceSource(e)):this.pipeline.source.deleteNode())}setVolume(e){this._volume=e,this.useDestination?(this.pipeline.setVolume(e),this._log.info(`set pipeline volume: ${e}`)):e<=1?this.element?(this._log.info(`set element volume: ${e}`),this.element.volume=e):this._log.info("set element volume: no element"):lt||(this._log.info(`start set pipeline volume: ${e}`),this.pipeline.setVolume(e),this.element&&!this._sourceElement&&(this.pipeline.destination.setNode(this._destination),ht(this.element),this._sourceElement=this.element,this._sourceElement.muted=!0,this.element=null,this.play()))}stop(e=0){this.pipeline.destroy();let r=this._sourceElement||this.element;r&&Xi&&(_d=r),this._sourceElement&&(this._sourceElement.srcObject=null,delete this._sourceElement),super.stop(e)}};var zo=class extends de{constructor({userId:e,sdkAppId:r,mediaType:o,room:s,PlayerClass:n=o===1?Sd:rr}){var c;super();u(this,"id",Kn());u(this,"userId","");u(this,"isRemote");u(this,"mediaType");u(this,"room");u(this,"user");u(this,"_log");u(this,"_inputTrack");u(this,"_outputTrack");u(this,"isPlayCalled");u(this,"container",null);u(this,"player");u(this,"subVideoPlayerMap");u(this,"muted",!1);u(this,"abortCtrl");u(this,"objectFit","cover");u(this,"mirror");u(this,"rotation");u(this,"isScreen",!1);u(this,"manager");u(this,"trackSettings");u(this,"isFirstVideoFrameEmitted",!1);this.userId=e||"",this.mediaType=o,this._log=$.createLogger({id:`${this.kind[0]}t`,userId:(c=s||this.room)==null?void 0:c.userId,remoteUserId:this instanceof _i?void 0:this.userId,sdkAppId:r,type:this.mediaType===2?"auxiliary":"main",isLocal:this instanceof _i}),this.player=new n({id:this.userId||this.id,track:null,muted:!1,container:null,log:this._log}),this.player.on(et.PLAYER_STATE_CHANGED,l=>{V.emit(U.PLAYER_STATE_CHANGED,q({track:this},l)),this.emit("player-state-changed",l)}),this.kind===N.VIDEO&&(this.player.on(et.LOADED_DATA,()=>{this.emitFirstVideoFrameEvent(et.LOADED_DATA),V.emit(U.VIDEO_LOADED_DATA,{track:this})}),this.player.on(et.LOADED_META_DATA,()=>{this.emitFirstVideoFrameEvent(et.LOADED_META_DATA)}),this.player.on(et.MEDIA_TRACK_CHANGED,l=>{var m;(m=this.subVideoPlayerMap)==null||m.forEach(E=>E.setTrack(l))})),this.onTrackMuted=this.onTrackMuted.bind(this),this.onTrackUnmuted=this.onTrackUnmuted.bind(this),this.onTrackEnded=this.onTrackEnded.bind(this),this.onPlayerError&&this.player.on(et.ERROR,this.onPlayerError.bind(this))}get log(){return this._log||$}get kind(){return this.mediaType===1?N.AUDIO:N.VIDEO}get strMediaType(){return this.mediaType===4?N.VIDEO:this.mediaType===2?N.SCREEN:N.AUDIO}get streamType(){return(this.mediaType&2)===0?"main":"auxiliary"}get isMediaTrackActive(){return this.mediaTrack?!this.mediaTrack.muted&&this.mediaTrack.readyState==="live"&&this.mediaTrack.enabled:!1}play(e,r){return A(this,null,function*(){let o=ot(e)?e[0]:e;if(this.isPlayCalled){this.log.info(`play update options: ${JSON.stringify(r)}`),r&&!P(r.muted)&&this.setPlayerMute(r.muted),r&&!P(r.objectFit)&&(this.objectFit=r.objectFit),this.player instanceof rr&&(this.player.setObjectFit(this.objectFit),this.container!==o&&o&&(this.container=o,this.player.setContainer(o)),ot(e)&&e.length>=1&&(yield this.playSubContainer(e.slice(1),r)));return}if(r&&!P(r.muted)?this.setPlayerMute(r.muted):(!this.isRemote||this.kind===N.VIDEO)&&this.setPlayerMute(!0),r&&!P(r.objectFit)&&(this.objectFit=r.objectFit),this.player instanceof rr&&(this.player.setObjectFit(this.objectFit),r&&!P(r.poster)&&this.player.setPoster(r.poster)),this.isPlayCalled=!0,o&&(this.container=o,this.player instanceof rr&&this.player.setContainer(o)),V.emit(U.PLAY_TRACK_START,{track:this}),!this._outputTrack){this.log.info("play has not mediaTrack, abort");return}this._log.info(`play with options: ${JSON.stringify(r)}`);try{this.player.setTrack(this.playerMediaTrack),yield this.player.play(r),ot(e)&&e.length>1&&(yield this.playSubContainer(e.slice(1),r))}catch(s){throw this.handleAutoPlayFailed(s),s}})}setMirror(e,r){if(this.isScreen||this.kind!==N.VIDEO||P(e)||e===this.mirror)return;this.mirror=e;let o=this.player;r&&(o=r);let s=this.manager;if(st(this.mirror)){o.setViewMirror(this.mirror),!this.isRemote&&s&&(s.mirror=!1);return}switch(this.mirror){case"view":{s&&(s.mirror=!1),o.setViewMirror(!0);break}case"publish":{s&&(s.mirror=!0),o.setViewMirror(!0);break}case"both":s&&(s.mirror=!0),o.setViewMirror(!1)}}playSubContainer(e,r){return A(this,null,function*(){if(!this._outputTrack||this.kind===N.AUDIO)return;this.subVideoPlayerMap||(this.subVideoPlayerMap=new Map),this.subVideoPlayerMap.forEach((s,n)=>{var c;e.find(l=>n===l)||(s.stop(),(c=this.subVideoPlayerMap)==null||c.delete(n))});for(let[s,n]of e.entries()){let c=this.subVideoPlayerMap.get(n);c?r&&(P(r.objectFit)||c.setObjectFit(r.objectFit)):this.subVideoPlayerMap.set(n,new rr({id:this.userId||this.id,track:this.playerMediaTrack,container:n,muted:this.player.muted,objectFit:this.objectFit,log:this.log.createChild({id:`vp-sub${s+1}`})}))}let o=[...this.subVideoPlayerMap.values()];for(let s of o)s.setViewMirror(this.player.mirror),yield s.play()})}setAudioOutput(e){return this.player.setSinkId(e)}setAudioVolume(e){this.player.setVolume(e)}getAudioLevel(){return this.player.getAudioLevel()||0}getInternalAudioLevel(){var e;return((e=this.player)==null?void 0:e.getInternalAudioLevel())||0}stop(e=!1){this.isPlayCalled&&(this.isPlayCalled=!1,this.player&&(this.log.info(`stop ${this.kind} player`),this.player.stop(sl(this)&&!e?this.jitterBufferDelay:0)),this.subVideoPlayerMap&&this.subVideoPlayerMap.size>0&&this.subVideoPlayerMap.forEach(r=>{r.stop()}),this.container=null)}resume(){return A(this,null,function*(){var e;this.isPlayCalled&&(yield(e=this.player)==null?void 0:e.resume())})}close(){this.log.info("close"),this.isPlayCalled&&this.stop(!0)}setMute(e){this.muted=e,this._inputTrack&&(this._inputTrack.enabled=!e),this._outputTrack&&(this._outputTrack.enabled=!e),this.emit(e?"mute":"unmute",this),V.emit(e?U.TRACK_MUTED:U.TRACK_UNMUTED,{track:this})}setPlayerMute(e){this.player.setMuted(e)}get mediaTrack(){return this._inputTrack||null}get outMediaTrack(){return this._outputTrack||null}get playerMediaTrack(){return this.outMediaTrack}installTrackEvent(e){Vt(e,e).add(N.MUTE,this.onTrackMuted).add(N.UNMUTE,this.onTrackUnmuted).add(N.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===N.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){ht(e)}setInputMediaStreamTrack(e){var o;let r=this._inputTrack;if(e!==r)return this._inputTrack=e,this.trackSettings=(o=e.getSettings)==null?void 0:o.call(e),e.enabled=!this.muted,r&&this.uninstallTrackEvent(r),this.installTrackEvent(e),this.emit("input-media-track-changed",e||null,r||null),this.manager?this.manager.changeInput(this):this.setOutputMediaStreamTrack(e)}setOutputMediaStreamTrack(e){var o;let r=this._outputTrack;e!==r&&(this.isRemote?this.log.debug("setOutputMediaStreamTrack",e.label):this.log.info("setOutputMediaStreamTrack",(o=e.getSettings)==null?void 0:o.call(e).deviceId,e.label),this._outputTrack=e,this._inputTrack&&(this._outputTrack.contentHint=this._inputTrack.contentHint,this._outputTrack.enabled=this._inputTrack.enabled),this.updatePlayingState(!!e),this.emit("output-media-track-changed",e))}setMediaType(e){this.mediaType=e}updatePlayingState(e){if(this.isPlayCalled){if(e){if(this.player.setTrack(this.playerMediaTrack),this.player.isStopped){this.player.play().catch(r=>this.handleAutoPlayFailed(r)),this.log.info(`playing state updated, play ${this.kind}`);return}}else if(!this.player.isStopped){this.player.stop(sl(this)?this.jitterBufferDelay:0),this.log.info(`playing state updated, stop ${this.kind}`);return}}this.log.debug(`updatePlayingState abort ${this.isPlayCalled} ${e} ${this.player.isStopped}`)}handleAutoPlayFailed(e){if(this.room&&this.room.enableAutoPlayDialog)new uf;else{let r=()=>{this.resume().then(()=>{document.removeEventListener("click",r,!0)})};document.addEventListener("click",r,!0)}this.emit("error",e)}getVideoFrame(){return this.player instanceof rr?this.player.getVideoFrame():""}emitFirstVideoFrameEvent(e){var n,c,l;if(this.isFirstVideoFrameEmitted)return;let r=(n=this.mediaTrack)==null?void 0:n.getSettings(),o=(r==null?void 0:r.width)||((c=this.player.element)==null?void 0:c.videoWidth)||0,s=(r==null?void 0:r.height)||((l=this.player.element)==null?void 0:l.videoHeight)||0;e===et.LOADED_META_DATA&&!o&&!s||(e===et.LOADED_DATA&&!o&&!s&&this._log.warn("the dimension of video is 0x0 in first-video-frame event"),this.isFirstVideoFrameEmitted=!0,oi(this.rotation)&&([o,s]=[s,o]),this.emit("first-video-frame",{width:o,height:s,streamType:this.streamType,userId:this.isRemote?this.userId:""}))}onTrackMuted(){this._log.warn(`${this.kind} track is unable to provide media output`)}onTrackUnmuted(){this._log.info(`${this.kind} track is able to provide media output`)}onTrackEnded(){this._log.warn(`${this.kind} track ended`)}};Z([Qe([],de.INIT,{sync:!0})],zo.prototype,"close",1);var K_=Object.prototype.hasOwnProperty,{toString:YR}=Object.prototype;function eT(i){if(i==null)return!0;if(typeof i=="boolean")return!1;if(typeof i=="number")return i===0;if(typeof i=="string"||typeof i=="function"||Array.isArray(i))return i.length===0;if(i instanceof Error)return i.message==="";if(Lt(i))switch(Object.prototype.toString.call(i)){case"[object File]":case"[object Map]":case"[object Set]":return i.size===0;case"[object Object]":{for(let t in i)if(K_.call(i,t))return!1;return!0}}return!1}var Ta=eT;var tT=function(i){return A(this,null,function*(){let t=iT(i);$.info(`getUserMedia with constraints: ${JSON.stringify(t)}`);let e=[],r=[],o=["label","deviceId","groupId"];t.audio&&(e=yield Qt(),$.info(`microphones: ${dr(e.map(s=>Ee(q({},s),{groupId:s.groupId.substring(0,8)})),{keysToInclude:o})}`)),t.video&&(r=yield or(),$.info(`cameras: ${dr(r,{keysToInclude:o})}`));try{let s=yield navigator.mediaDevices.getUserMedia(t);return Jl&&s.getTracks().forEach(n=>{$.info(`${n.kind} capabilities: ${dr(n.getCapabilities(),{keysToInclude:Tc})}`)}),t.audio&&zs(),s}catch(s){let{message:n}=s;throw s.name==="NotFoundError"&&(i.video&&r&&r.length===0&&(n=Be({key:$e.CAMERA_NOT_FOUND})),i.audio&&e&&e.length===0&&(n=Be({key:$e.MICROPHONE_NOT_FOUND}))),new ue({code:J.INITIALIZE_FAILED,name:s.name,message:n,constraint:s.constraint})}})},rT=Ji({retryFunction:tT,settings:{retries:3,timeout:500},onError:({error:i,retry:t,reject:e,retryFuncArgs:r,retriedCount:o})=>{let s=o+1;i.name==="NotReadableError"||i.name==="OverconstrainedError"?(s===1?(r[0].video&&(r[0].maxResolution=!1,(!It||r[0].width*r[0].height<=1920*1080)&&r[0].frameRate&&(r[0].frameRate=r[0].frameRate>10?10:5)),r[0].retryWhenExactFailed&&r[0].useExactDeviceId&&(r[0].useExactDeviceId=!1)):s===2?r[0].useDeviceIdOnly=!0:s===3&&!r[0].useExactDeviceId&&(r[0].useTrueAsConstraint=!0),t()):e(i),r[0].microphoneId&&Af(r[0].microphoneId,!1),r[0].cameraId&&Af(r[0].cameraId,!0)},onRetrying:i=>{$.warn(`getUserMedia NotReadableError observed, retrying [${i}/3]`)},onRetryFailed:i=>{je.logFailedEvent({eventType:ei.GET_USER_MEDIA_RETRY,error:i})},onRetrySuccess:i=>{je.logSuccessEvent({eventType:ei.GET_USER_MEDIA_RETRY}),je.uploadEvent({log:`stat-${ei.GET_USER_MEDIA_RETRY}-success-${i}`})}});function Af(i,t){return A(this,null,function*(){let r=(t?yield or():yield Qt()).find(o=>o.deviceId===i);r&&We(r.getCapabilities)&&$.warn(dr(r.getCapabilities(),{keysToInclude:Tc}))})}function iT(i){return{audio:oT(i),video:sT(i)}}function oT(i){if(!i.audio)return!1;if(i.useTrueAsConstraint)return!0;let t={echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,sampleRate:i.sampleRate};return!Ta(i.microphoneId)&&(t.deviceId=i.useExactDeviceId?{exact:i.microphoneId}:i.microphoneId,i.useDeviceIdOnly)?t:(Pe(i.channelCount)&&(t.channelCount=i.channelCount),st(i.echoCancellation)&&!i.echoCancellation&&(t.echoCancellation=!1),st(i.noiseSuppression)&&!i.noiseSuppression&&(t.noiseSuppression=!1),st(i.autoGainControl)&&!i.autoGainControl&&(t.autoGainControl=!1),Ta(t)?!0:t)}function sT(i){if(!i.video)return!1;if(i.useTrueAsConstraint)return!0;let{maxResolution:t=!0}=i,e={};return i.cameraId?e.deviceId=i.useExactDeviceId?{exact:i.cameraId}:i.cameraId:i.facingMode&&(e.facingMode=i.facingMode),i.useDeviceIdOnly&&!Ta(e)?e:(i.width&&(e.width={ideal:i.width},t&&!Ht&&(e.width.max=i.width)),i.height&&(e.height={ideal:i.height},t&&!Ht&&(e.height.max=i.height)),Ht&&br&&i.width&&i.height&&i.width*i.height<352*288&&(e.width=i.width,e.height=i.height),i.frameRate&&(e.frameRate=i.frameRate),Ta(e)?!0:e)}var yf=rT;function to(i){return Oe((t,e)=>function(...r){return A(this,null,function*(){let o=yield t.apply(this,r);return yield i.call(this,...r),o})})}function bf(i){return Oe((t,e)=>function(...r){return A(this,null,function*(){try{return yield t.apply(this,r)}catch(o){i.call(this,o)}})})}function Oe(i){return function(t,e,r){return r.value=i(r.value,e),r}}var Rf=(()=>{let i=!1,t=document.visibilityState;return()=>{document.visibilityState!==t&&$.info(`visibility change: ${document.visibilityState}`),!i&&(document.addEventListener("visibilitychange",()=>{$.info(`visibility change: ${document.visibilityState}`),t=document.visibilityState}),i=!0)}})();var nT=0,Ad=class{constructor(){u(this,"log",$.createLogger({id:`fq${++nT}`}));u(this,"isRunning",!1);u(this,"queue",[])}get length(){return this.queue.length}get lastQueueItem(){return this.length===0?null:this.queue[this.length-1]}push(t,e=!1){var s,n;let r=q({},t),o=new Promise((c,l)=>{r.resolve=c,r.reject=l});return r.promise=o,e?this.length<=1?this.queue.push(r):(n=(s=this.lastQueueItem)==null?void 0:s.promise)==null||n.then(r.resolve,r.reject):this.queue.push(r),this.log.debug(`push ${this.length}`),this.isRunning||this.callNext(),o}shift(){let t=this.queue.shift();return this.log.debug(`shift ${this.length}`),t}callNext(){if(this.isRunning||this.length===0)return;this.log.debug("callNext ",this.length);let{fn:t,args:e,context:r,resolve:o,reject:s}=this.queue[0];this.isRunning=!0,t.apply(r,e).then(o,s).finally(()=>{this.isRunning=!1,this.shift(),this.callNext()})}},vf=new WeakMap,Cf=new WeakMap;function yd(i=!1){return function(t,e,r){let o=r.value;return r.value=function(...s){let n=vf.get(this)||new Ad;return vf.set(this,n),n.push({fn:o,args:s,context:this},i)},r}}function bd(i){return function(t,e,r){let o=r.value,s=n=>i(...n);return r.value=function(...n){let c=Cf.get(this)||new Map,l=c.get(s(n))||new Ad;return c.set(s(n),l),Cf.set(this,c),l.push({fn:o,args:n,context:this})},r}}function Rd(i,t){return Oe((e,r)=>function(...o){let s=i;try{let n=e.apply(this,o),c=Ie();return ji(n)?n.then(l=>(t?Q.addSuccessEvent({key:s,cost:Ie()-c}):Q.addSuccessEvent({key:s}),l)).catch(l=>{throw Q.addFailedEvent({key:s,error:l}),l}):(Q.addSuccessEvent({key:s}),n)}catch(n){throw Q.addFailedEvent({key:s,error:n}),n}})}var Xo=class Xo extends zo{constructor(e,r){super({mediaType:e,PlayerClass:r});u(this,"isRemote",!1);u(this,"deviceId");u(this,"groupId","");u(this,"label","");u(this,"sourceTrack");u(this,"_isRecapturing",!1);u(this,"_lastRecaptureTime",0);u(this,"_onMuteTimeoutId",-1);u(this,"_encodeCheckTimeoutId",-1);u(this,"profile")}get enableEncodeFrame(){return!1}get isPublishing(){return this.state.toString()==="publishing"}get isPublished(){return this.state==="publish"}encodeFrame(e,r){throw new Error("Method not implemented.")}installTrackEvent(e){Vt(e,e).add(N.MUTE,this.onTrackMuted).add(N.UNMUTE,this.onTrackUnmuted).add(N.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===N.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){ht(e)}setStateToReady(){}capture(e){return A(this,null,function*(){var r;try{let o=Ie();V.emit(U.LOCAL_TRACK_CAPTURE_START,{track:this});let s;e.customSource?(s=new MediaStream,s.addTrack(e.customSource)):((r=this.mediaTrack)==null||r.stop(),s=yield yf(e));let n=s.getTracks()[0];return this.sourceTrack=n,yield this.setInputMediaStreamTrack(n),e.customSource||(this.updateDeviceIdInUse(),this.listenDeviceChange()),V.emit(U.LOCAL_TRACK_CAPTURE_SUCCESS,{track:this,cost:Ie()-o}),s}catch(o){throw V.emit(U.LOCAL_TRACK_CAPTURE_FAILED,{track:this,error:o}),this.log.error(`getUserMedia error observed ${o}`),o}})}setOutputMediaStreamTrack(e){var r;if(super.setOutputMediaStreamTrack(e),this.setStateToReady(),this.isPublishing||this.isPublished)return(r=this.room)==null?void 0:r.replaceTrack(this)}publish(e,r){return this.room=e,this.emit("4",{mediaType:this.strMediaType,state:"starting",prevState:"stopped"}),this.userId=e.userId,this._log.setUserId(e.userId),this._log.setSdkAppId(e.sdkAppId),r}unpublish(){this.room&&this.room.localTracks.delete(this),V.emit(U.LOCAL_TRACK_UNPUBLISHED,{track:this})}updateDeviceIdInUse(){return A(this,null,function*(){if(this.mediaTrack&&js){let{deviceId:e,groupId:r}=this.mediaTrack.getSettings(),{label:o}=this.mediaTrack;(yield Sf({newDeviceId:e,oldDeviceId:this.deviceId,oldGroupId:this.groupId,oldLabel:this.label,kind:this.kind}))||(this.deviceId=e,this.label=o,r&&(this.groupId=r),Ed().then(n=>{let c=n.find(l=>l.deviceId===e);c&&this.emit("2",c)}))}})}setProfile(e){this.log.info("setProfile",e),Object.assign(this.profile,e)}isNeedToRecapture(e=!1){return!(!this.deviceId||!this.mediaTrack||this.kind===N.AUDIO&&!If(this.mediaTrack)||this.kind===N.VIDEO&&!Tf(this.mediaTrack)||this._isRecapturing||e&&br&&It)}onTrackMuted(){if(super.onTrackMuted(),Rf(),!!this.isNeedToRecapture(!0)){if(Date.now()-this._lastRecaptureTime<Rs){setTimeout(()=>this.onTrackMuted(),Rs);return}this._onMuteTimeoutId=setTimeout(()=>A(this,null,function*(){var e;if((e=this.mediaTrack)!=null&&e.muted){if((lt||mt)&&document.visibilityState!=="visible")return;this.recapture(yield this.getRecoverCaptureDeviceId())}}),5e3)}}onTrackUnmuted(){super.onTrackUnmuted(),this._onMuteTimeoutId>0&&clearTimeout(this._onMuteTimeoutId)}onTrackEnded(){return A(this,null,function*(){if(Bt(Xo.prototype,this,"onTrackEnded").call(this),!!this.isNeedToRecapture()){if(Date.now()-this._lastRecaptureTime<Rs){setTimeout(()=>this.onTrackEnded(),Rs);return}this.recapture(yield this.getRecoverCaptureDeviceId())}})}recapture(e){return A(this,null,function*(){var o;if(this._isRecapturing||!this._inputTrack)return;this.log.warn("recapture trying"),(o=this._inputTrack)==null||o.stop(),this._isRecapturing=!0,this._lastRecaptureTime=Date.now();let r={useExactDeviceId:!0};if(e==="user"||e==="environment")r.facingMode=e;else{let s;(this.kind==="audio"?yield Qt():yield or()).find(c=>c.deviceId===e)&&(s=e),r.deviceId=s}return this.capture(r).then(()=>{this._isRecapturing=!1,this.log.warn("recapture success"),this.emit("1",{deviceId:this.deviceId}),V.emit(U.LOCAL_TRACK_RECAPTURE,{track:this})}).catch(s=>{this._isRecapturing=!1,this.log.warn(`recapture failed ${s.message}`),this.emit("5",s),V.emit(U.LOCAL_TRACK_RECAPTURE,{track:this,error:s})})})}getRecoverCaptureDeviceId(){return A(this,null,function*(){let e=this instanceof Cr;if(e&&this.facingMode)return this.facingMode;let{deviceId:r}=this;if(r){let o=(Ia.get(r)||0)+1;if(Ia.set(r,o),o>=3){let s=e?(yield or()).find(n=>!Ia.has(n.deviceId)):(yield Qt()).find(n=>!Ia.has(n.deviceId));s&&(this.log.warn(`${r} capture fail ${o} times, change new ${s.deviceId}`),r=s.deviceId)}}return r})}stopCapture(){var e;this._inputTrack&&(this._inputTrack.stop(),this.uninstallTrackEvent(this._inputTrack)),(e=this.manager)==null||e.removeInput(this)}close(){super.close(),this.stopCapture()}};Z([Qe(de.INIT,"ready",{ignoreError:!0,sync:!0})],Xo.prototype,"setStateToReady",1),Z([yd()],Xo.prototype,"capture",1),Z([Qe("ready","publish",{ignoreError:!0,success(){var r,o;this.room.localTracks.add(this),V.emit(U.LOCAL_TRACK_PUBLISHED,{track:this}),this.emit("4",{mediaType:this.strMediaType,state:"started",prevState:"starting"}),!((((o=(r=this.room)==null?void 0:r.networkQuality)==null?void 0:o.uplinkNetworkQuality)||0)>3)&&(this._encodeCheckTimeoutId=setTimeout(()=>{var n,c;if(!((((c=(n=this.room)==null?void 0:n.networkQuality)==null?void 0:c.uplinkNetworkQuality)||0)>3)&&this.isPublished&&this.isMediaTrackActive){let l=this.kind===N.AUDIO,m=this.stat.bytesSent>0;Q[m?"addSuccessEvent":"addFailedEvent"]({key:l?503700:513702}),m||(Q.addEnum({key:l?503701:513703,value:Yn()}),je.uploadEvent({log:`stat-encode-failed-${this.kind}-${Qn()||$o()}`,userId:this.userId}),this.log.warn("encode failed"),this.emit("6",this))}},5e3))},fail(e){let r="error";if(e.cause instanceof RTCError){let o=e.cause;o.message.includes("timeout")?r="timeout":o.code===J.API_CALL_ABORTED&&(r="api-call")}this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:"starting",reason:r,error:e.cause||e})}}),Rd(521714,!1)],Xo.prototype,"publish",1),Z([Oe(e=>function(){return A(this,null,function*(){let r=this.state==="publish"?"started":"starting";e.call(this),this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:r,reason:"api-call"}),clearTimeout(this._encodeCheckTimeoutId)})}),Qe([],"ready",{sync:!0})],Xo.prototype,"unpublish",1);var _i=Xo,Ia=new Map;V.on(U.SWITCH_DEVICE_SUCCESS,i=>{i.track.deviceId&&Ia.delete(i.track.deviceId)});var Gr=class i extends _i{constructor(e){super(1,Id);u(this,"mediaType",1);u(this,"volume",0);u(this,"profile",{echoCancellation:!0,autoGainControl:!0,noiseSuppression:!0,sampleRate:48e3,channelCount:1,bitrate:40});u(this,"playerMuted",!0);u(this,"pipeline");u(this,"earMonitorGainNode",new ft);u(this,"_output",new ft);u(this,"stat",{bytesSent:0,packetsSent:0,audioLevel:0,totalAudioEnergy:0});u(this,"mixedAudioReferenceMap",new Map);this.manager=e,this.pipeline=new Xs(e),this.pipeline.gain.pipeTo(this.earMonitorGainNode).pipeTo(this._output),this.pipeline.gain.pipeTo(this.player.pipeline.volumeMeter),this.handleMicrophoneAdded=this.handleMicrophoneAdded.bind(this),this.handleMicrophoneRemoved=this.handleMicrophoneRemoved.bind(this)}get dbVolume(){return gd.isRunning?this.player.pipeline.volumeMeter.getVolumeDb():Math.floor(Math.max(10*Math.log10(this.volume)+100,0))}getAudioLevel(){let e=(this.volume||super.getAudioLevel())*this.captureVolume;return e>1?1:e}setInputMediaStreamTrack(e){return A(this,null,function*(){let r=this.trackSettings||{};Q.addEnum({key:501701,value:r.channelCount||0,useUV:!1}),Q.addEnum({key:501702,value:r.sampleRate||0,useUV:!1}),Q.addEnum({key:502700,value:0});let{sampleRate:o,channelCount:s}=r;this._log.info(`local audio track input ${JSON.stringify({sampleRate:o,channelCount:s})}`),this.pipeline.source.channelCount=s||1,this.pipeline.replaceSource(e),yield Bt(i.prototype,this,"setInputMediaStreamTrack").call(this,e),this.updatePlayingState(!!e)})}capture({deviceId:e,customSource:r,useExactDeviceId:o=!0,retryWhenExactFailed:s=!0}){return super.capture({video:!1,audio:!0,microphoneId:e,echoCancellation:this.profile.echoCancellation,autoGainControl:this.profile.autoGainControl,noiseSuppression:this.profile.noiseSuppression,sampleRate:this.profile.sampleRate,channelCount:this.profile.channelCount,useExactDeviceId:o,retryWhenExactFailed:s,customSource:r})}switchDevice(e){return A(this,null,function*(){if(this.mediaTrack){if(this.deviceId===e)if(e===Oo){if(yield um(this.groupId,this.label))return}else return;try{this.log.info(`switchDevice audio to: ${e}`),this.mediaTrack&&this.mediaTrack.stop(),yield this.capture({deviceId:e,useExactDeviceId:!0,retryWhenExactFailed:!1}),V.emit(U.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch microphone success")}catch(r){throw this.log.error(`switch microphone failed ${r}`),this.deviceId&&this.recapture(this.deviceId),r}}})}listenDeviceChange(){St&&!St.listeners("audioInputRemoved").includes(this.handleMicrophoneRemoved)&&St.on("audioInputRemoved",this.handleMicrophoneRemoved,this)}handleMicrophoneRemoved(e){return A(this,null,function*(){if(e.deviceId===this.deviceId){this.log.warn(`current microphone is lost: ${JSON.stringify(e)}`),nt(this.userId,{eventId:2003,param1:6,streamType:1});let r=yield Qt();r[0]?this.recapture(r[0].deviceId):St.on("audioInputAdded",this.handleMicrophoneAdded,this)}})}handleMicrophoneAdded(e){this.log.warn(`microphone added: ${JSON.stringify(e)}`),this.recapture(e.deviceId)}update3A(s){return A(this,arguments,function*({echoCancellation:e,noiseSuppression:r,autoGainControl:o}){let n=this.sourceTrack||this.mediaTrack;if(!n)return;let c=n.getConstraints(),l=!1;!P(e)&&e!==this.profile.echoCancellation&&(this.profile.echoCancellation=e,c.echoCancellation=e,l=!0),!P(r)&&r!==this.profile.noiseSuppression&&(this.profile.noiseSuppression=r,c.noiseSuppression=r,l=!0),!P(o)&&o!==this.profile.autoGainControl&&(this.profile.autoGainControl=o,c.autoGainControl=o,l=!0),l&&(Ht||It?yield n.applyConstraints(c).catch(m=>this._log.warn("update3A failed: ",m)):this.deviceId&&(yield this.recapture(this.deviceId)))})}get captureVolume(){return this.pipeline.volume}setCaptureVolume(e){this.pipeline.setVolume(e/100),this.pipeline.gain.node&&Q.addEnum({key:502700,value:2})}setAudioVolume(e){super.setAudioVolume(0),lt&&this.player.setMuted(!0),this.earMonitorGainNode.node||(this.earMonitorGainNode.setNode(ze().createGain()),this._output.setNode(ze().destination)),this.earMonitorGainNode.node.gain.value=e}enableTrackANS(e){return this.update3A({noiseSuppression:e})}enableTrackAEC(e){if(this.sourceTrack&&!(It||lt))return this.update3A({echoCancellation:e})}addDenoiser(e){var r;if(Vr<=92&&((r=this.trackSettings)==null?void 0:r.sampleRate)!==48e3){this._log.warn("denoiser only support sampleRate 48000 before chrome 93");return}Q.addEnum({key:502700,value:1}),this.pipeline.denoiser.setNode(e),this.enableTrackANS(!1)}mixAudioReference(e,r){if(this.mixedAudioReferenceMap.has(r))return;this.log.info(`mixAudioReference() => ${r}`);let o=Ea(e),s=new ft,n=ze().createGain();n.gain.value=1;let c=new ft;s.pipeTo(c).pipeTo(this.pipeline.mixNode),s.setNode(o),c.setNode(n),this.mixedAudioReferenceMap.set(r,[s,c])}unMixAudioReference(e){let[r,o]=this.mixedAudioReferenceMap.get(e)||[];r&&(this.log.info(`unMixAudioReference() => ${e}`),r.deleteNode(),o==null||o.deleteNode(),this.mixedAudioReferenceMap.delete(e))}setAudioReferenceVolume(e,r){let[o,s]=this.mixedAudioReferenceMap.get(e)||[];s!=null&&s.node&&(s.node.gain.value=r/100,this.log.info(`setAudioReferenceVolume() => ${e} ${s.node.gain.value}`))}addAudioProcessor(e,r,o,s){this.pipeline.silentNode.setNode(o),this.pipeline.mixNode.setNode(r),this.pipeline.aec.setNode(e),this.enableTrackAEC(!1)}removeDenoiser(e){this.pipeline.denoiser.node===e&&(this.pipeline.denoiser.deleteNode(),this.enableTrackANS(!0))}removeAudioProcessor(e,r,o,s){this.pipeline.aec.node===e&&(this.pipeline.aec.deleteNode(),this.pipeline.silentNode.deleteNode(),this.pipeline.mixNode.deleteNode(),this.enableTrackAEC(!0))}close(){this.mixedAudioReferenceMap.forEach(([e,r])=>{e.deleteNode(),r.deleteNode()}),this.mixedAudioReferenceMap.clear(),this.pipeline.remove(),this.earMonitorGainNode.deleteNode(),this._output.deleteNode(),St.off("audioInputAdded",this.handleMicrophoneAdded,this),St.off("audioInputRemoved",this.handleMicrophoneRemoved,this),super.close()}recapture(e){return A(this,null,function*(){try{yield Bt(i.prototype,this,"recapture").call(this,e)}catch(r){let o=(yield Qt()).find(s=>s.deviceId!==e);if(o)yield Bt(i.prototype,this,"recapture").call(this,o.deviceId);else throw r}})}encodeFrame(e){return this.manager?this.manager.encodePipeline.reduceRight((r,o)=>o?o({frame:r}):r,e):e}get enableEncodeFrame(){return this.manager?this.manager.encodePipeline.some(e=>e):!1}};var Qo=class{constructor(t,e=!1){this.dataView=t;this.isSEI&&(e?this.addPreventionByte():this.removePreventionByte())}addPreventionByte(){let t=this.seiPayloadStartIndex,e=this.dataView.byteLength-2,r=[],o=0;for(let n=t;n<=e;n++){let c=this.dataView.getInt8(n);switch(c){case 0:case 1:case 2:case 3:o===2&&(r.push(3),o=0),c==0?o++:o=0,r.push(c);break;default:o=0,r.push(c);break}}r.push(this.dataView.getInt8(this.dataView.byteLength-1));let s=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,t),...r]).buffer);this.dataView=s}removePreventionByte(){let t=this.seiPayloadStartIndex,e=this.dataView.byteLength-1,r=[],o=0;for(let n=t;n<=e;n++)switch(this.dataView.getInt8(n)){case 0:o++,r.push(this.dataView.getInt8(n));break;case 3:o!==2&&r.push(this.dataView.getInt8(n)),o=0;break;default:r.push(this.dataView.getInt8(n)),o=0;break}let s=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,t),...r]).buffer);this.dataView=s}get isSEI(){return this.dataView.getUint8(4)===6}get seiPayloadStartIndex(){let t=6;for(let e=6;e<this.dataView.buffer.byteLength&&(t++,this.dataView.getUint8(e)===255);e++);return t}get seiPayloadType(){return this.isSEI?this.dataView.getUint8(5):null}get seiPayload(){if(!this.isSEI)return null;let t=0,e=6;for(let s=6;s<this.dataView.buffer.byteLength;s++){let n=this.dataView.getUint8(s);if(e++,n===255)t+=255;else{t+=n;break}}let r=new ArrayBuffer(t),o=new DataView(r);for(let s=0;s<r.byteLength;s++,e++)o.setInt8(s,this.dataView.getInt8(e));return o}};var vd=class{constructor(){u(this,"_seiMessageList",[]);u(this,"_smallSeiMessageList",[]);u(this,"_seiPayloadType",243)}encodeSEINalu(t){let e=t.byteLength,r=parseInt(String(e/255),10),o=e%255,s=[];s.push(0,0,0,1,6,this._seiPayloadType);for(let c=0;c<r;c++)s.push(255);s.push(o);let n=new DataView(t);return s.push(...new Uint8Array(n.buffer)),s.push(128),new Qo(new DataView(new Uint8Array(s).buffer),!0)}sendSEI(t,e){e!=null&&e.seiPayloadType&&(this._seiPayloadType=e.seiPayloadType),this._seiMessageList.push(t),e!=null&&e.small&&this._smallSeiMessageList.push(t)}isEmpty(){return!this._seiMessageList.length}getNaluCount(t){let e=0,r=0,o=new DataView(t);for(let s=0;s<t.byteLength;s++)switch(o.getUint8(s)){case 0:e++;break;case 1:(e===2||e===3)&&r++,e=0;break;default:e=0;break}return r}encode(t,e){let r=e?this._smallSeiMessageList:this._seiMessageList;if(r.length>0&&t.data.byteLength>0){let s=9-this.getNaluCount(t.data);if(s<=0)return 0;let n=r.splice(0,s).reverse().map(this.encodeSEINalu.bind(this)),c=n.reduce((_,v)=>_+v.dataView.byteLength,0),l=new ArrayBuffer(c+t.data.byteLength),m=new DataView(l),E=new DataView(t.data),g=0;for(let _=0;_<n.length;_++)for(let v=0;v<n[_].dataView.byteLength;v++)m.setInt8(g++,n[_].dataView.getInt8(v));for(let _=0;_<t.data.byteLength;_++)m.setInt8(g++,E.getInt8(_));return t.data=l,n.length}return 0}};var Yo=class Yo extends _i{constructor(e,r=4){super(r,rr);u(this,"profile",q({},Nn));u(this,"avoidCropping",!1);u(this,"_scaleResolutionDownBy");u(this,"stat",{bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0,fpsCapture:0});u(this,"small");u(this,"isNeedToSetBandwidth");u(this,"muteImage");u(this,"manager");u(this,"_seiCodec",new vd);this.manager=e;let o=()=>{this.isAllowed2k4k(this.profile)?this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1}):(this.log.warn("Resolution is reset to 1080p, need to upgrade ability here https://cloud.tencent.com/document/product/647/85386"),this.setProfile(Ee(q({},this.profile),{width:1920,height:1080})),this.applyProfile())};this.on("input-media-track-changed",o),this.on("publish",o),this.handleCameraAdded=this.handleCameraAdded.bind(this),this.handleCameraRemoved=this.handleCameraRemoved.bind(this)}get facingMode(){if(!(!js||!this.mediaTrack))return this.mediaTrack.getSettings().facingMode}get contentHint(){var e;return((e=this._inputTrack)==null?void 0:e.contentHint)||""}get isQosClearFirst(){var e;return((e=this._inputTrack)==null?void 0:e.contentHint)==="detail"}setMute(e){return A(this,null,function*(){var r,o,s;if(we(e)){if(this.muteImage===e)return;yield(r=this.manager)==null?void 0:r.deleteWatermark("mute"),yield(o=this.manager)==null?void 0:o.setWatermark({x:0,y:0,width:this.settings.width,height:this.settings.height,type:"mute",zIndex:999,imageUrl:e}),this.muteImage=e,Bt(Yo.prototype,this,"setMute").call(this,!1)}else this.muteImage&&(yield(s=this.manager)==null?void 0:s.deleteWatermark("mute"),this.muteImage=void 0),Bt(Yo.prototype,this,"setMute").call(this,e)})}capture({deviceId:e,facingMode:r,useExactDeviceId:o=!0,customSource:s,retryWhenExactFailed:n=!0}){return super.capture({audio:!1,video:!0,facingMode:r||this.facingMode,cameraId:e,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,useExactDeviceId:o,retryWhenExactFailed:n,customSource:s})}setProfile(e){let r=this.fallbackProfile(e);r.bitrate&&(this.isNeedToSetBandwidth=r.bitrate!==this.profile.bitrate),this.isAllowed2k4k(this.profile)?super.setProfile(r):(this.log.warn("Resolution is reset to 1080p, need to upgrade ability here https://cloud.tencent.com/document/product/647/85386"),super.setProfile(Ee(q({},this.profile),{width:1920,height:1080})))}applyProfile(){return A(this,null,function*(){var c;if(!this.mediaTrack)return;let{width:e=0,height:r=0}=(this.sourceTrack||this.mediaTrack).getSettings(),o=e*r,s=this.settings,n=s.height!==this.profile.height||s.width!==this.profile.width||s.frameRate!==this.profile.frameRate;if(n&&(Jt===16&&this.deviceId?yield this.recapture(this.deviceId):(yield(c=this.sourceTrack||this.mediaTrack)==null?void 0:c.applyConstraints({width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate}),this.manager&&this.manager.changeInput(this)),this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1})),this.isNeedToSetBandwidth&&this.room&&this.room.setBandWidth){this.isNeedToSetBandwidth=!1;let{width:l=0,height:m=0}=(this.sourceTrack||this.mediaTrack).getSettings(),E=l*m;if(n&&E&&o&&E===o){this.log.warn("set bandwidth failed: resolution is not changed");return}return this.room.setBandWidth({bandwidth:this.profile.bitrate,type:N.VIDEO,videoType:N.BIG})}})}get settings(){let e={width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate},r=this.sourceTrack||this.mediaTrack;return js&&r&&Object.assign(e,r.getSettings()),e}get scaleResolutionDownBy(){return this._scaleResolutionDownBy?this._scaleResolutionDownBy:vc(this.settings,this.profile)}isAllowed2k4k(e){var r;return!this.room||!this.room.scheduleResult||this.isScreen||e.height*e.width<2560*1440?!0:((r=this.room.scheduleResult.trtcAutoConf)==null?void 0:r["2k4k"])===1}isNeedToSwitchDevice(e){return!(!this.mediaTrack||this.deviceId===e||this.facingMode===e)}switchDevice(e){return A(this,null,function*(){try{if(!this.isNeedToSwitchDevice(e))return;let r={useExactDeviceId:!0,retryWhenExactFailed:!1};e==="user"||e==="environment"?r.facingMode=e:r.deviceId=e,this.mediaTrack.stop(),yield this.capture(r),V.emit(U.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch camera success")}catch(r){throw this.log.error(`switch camera failed ${r}`),this.deviceId&&this.recapture(this.deviceId),r}})}updateSmallConfig(e){var o,s;this._log.info(`update small stream config: ${JSON.stringify(e)}`);let r=!this.small;this.small=this.fallbackProfile(e,!0),(o=this.manager)==null||o.update(),r&&((s=this.room)==null||s.enableSmall(!0)),this.log.info("update small stream config success")}fallbackProfile(e,r=!1){let o=e.width>e.height,s=q({},e);return e.width*e.height<=160*120&&mt&&ni&&(this.log.warn(`${r?"small ":""}resolution is ${e.width}*${e.height}, fallback to 240*180 for android chrome`),s.width=o?240:180,s.height=o?180:240,s.bitrate=Math.max(e.bitrate,150)),e.width*e.height>1280*720&&_l&&(s.width=o?1280:720,s.height=o?720:1280,this.log.warn("reset to 1280 * 720 on iOS 13~14")),!r&&this.avoidCropping&&(ni||Ht)&&!Il()&&e.width*e.height<=640*360&&e.width/e.height===16/9&&(this._scaleResolutionDownBy=1280/e.width,e.width=1280,e.height=720,this.log.warn(`capture 720p, scale: ${this._scaleResolutionDownBy}`)),s}stopSmall(){var e,r;this.small&&(delete this.small,(e=this.manager)==null||e.update(),(r=this.room)==null||r.enableSmall(!1))}listenDeviceChange(){St&&!St.listeners("videoInputRemoved").includes(this.handleCameraRemoved)&&St.on("videoInputRemoved",this.handleCameraRemoved,this)}handleCameraRemoved(e){return A(this,null,function*(){if(e.deviceId===this.deviceId){this.log.warn(`current camera is lost: ${JSON.stringify(e)}`),nt(this.userId,{eventId:2003,param1:7,streamType:2});let r=yield or();r[0]?this.recapture(r[0].deviceId):St.on("videoInputAdded",this.handleCameraAdded,this)}})}handleCameraAdded(e){return A(this,null,function*(){this.log.warn(`camera added: ${JSON.stringify(e)}`),this.recapture(e.deviceId)})}encodeFrame(e,r){if(!this.manager)return e;let o=r?8:this.mediaType;return this.manager.encodePipeline.reduceRight((s,n)=>n?n({frame:s,mediaType:o}):s,e)}get enableEncodeFrame(){return this.manager?this.manager.encodePipeline.some(e=>e):!1}play(e,r){return P(this.mirror)&&!this.isScreen&&this.setMirror("view"),super.play(e,r)}close(){St.off("videoInputAdded",this.handleCameraAdded,this),St.off("videoInputRemoved",this.handleCameraRemoved,this),super.close()}recapture(e){return A(this,null,function*(){try{yield Bt(Yo.prototype,this,"recapture").call(this,e)}catch(r){let o=(yield or()).find(s=>s.deviceId!==e);if(o)yield Bt(Yo.prototype,this,"recapture").call(this,o.deviceId);else throw r}})}setContentHint(e){this.mediaTrack&&"contentHint"in this.mediaTrack&&(this.mediaTrack.contentHint!==e&&(this.log.info(`setContentHint ${e}`),this.mediaTrack.contentHint=e),this.outMediaTrack&&this.outMediaTrack.contentHint!==e&&(this.outMediaTrack.contentHint=e))}setRotation(e){this.manager&&(this.isScreen||P(e)||e!==this.rotation&&(this.rotation=e,this.manager.rotation=e))}};Z([to(function(e){this.setContentHint(e.contentHint||"motion")})],Yo.prototype,"capture",1);var Cr=Yo;var Cd=Kn();if(typeof navigator!="undefined"&&navigator.mediaDevices&&"setCaptureHandleConfig"in navigator.mediaDevices)try{navigator.mediaDevices.setCaptureHandleConfig({handle:Cd,exposeOrigin:!0,permittedOrigins:["*"]})}catch(i){}var dT=function(i){return A(this,null,function*(){let t=null,e=mT(i);$.info(`getDisplayMedia with constraints: ${JSON.stringify(e)}`);let r=yield navigator.mediaDevices.getDisplayMedia(e);i.systemAudio&&r.getAudioTracks().length===0&&(Fs&&Vr<74||It||Ht)&&$.warn("Your browser not support capture system audio");let o=r.getVideoTracks()[0];if(o){if(i.frameRate)try{yield o.applyConstraints({frameRate:{min:i.frameRate,ideal:i.frameRate},width:i.width,height:i.height})}catch(s){$.warn(`screen applyConstraints failed: ${s}`)}i.captureElement&&(yield uT(o,i.captureElement))}if(i.audio){let s=lT(i);$.info(`getUserMedia with constraints: ${JSON.stringify(s)}`),t=yield navigator.mediaDevices.getUserMedia(s),r.addTrack(t.getAudioTracks()[0])}return r})};function uT(i,t){return A(this,null,function*(){var e;if("CropTarget"in window&&"fromElement"in CropTarget&&We(i.cropTo))try{if(!(((e=i.getCaptureHandle())==null?void 0:e.handle)===Cd))return;let o=yield CropTarget.fromElement(t);yield i.cropTo(o)}catch(r){$.warn(`cropTo target failed ${r}`)}})}function lT(i){let t={echoCancellation:i.echoCancellation,autoGainControl:i.autoGainControl,noiseSuppression:i.noiseSuppression,sampleRate:i.sampleRate,channelCount:i.channelCount};return P(i.microphoneId)||(t.deviceId=i.microphoneId),{audio:t,video:!1}}function mT(i){let t={preferCurrentTab:i.preferDisplaySurface==="current-tab"||!!i.captureElement,systemAudio:"include",selfBrowserSurface:"include",surfaceSwitching:"include"},e={width:It?{max:i.width}:{ideal:i.width,max:i.width},height:It?{max:i.height}:{ideal:i.height,max:i.height},frameRate:i.frameRate,displaySurface:i.preferDisplaySurface||"monitor"};if(t.video=e,i.systemAudio){let{echoCancellation:r=!0,noiseSuppression:o=!1,autoGainControl:s=!1}=i;t.audio={echoCancellation:r,noiseSuppression:o,autoGainControl:s,sampleRate:48e3}}return t}var Mf=dT;var ro=class extends Cr{constructor(e){super(e,2);u(this,"profile",{width:1920,height:1080,frameRate:5,bitrate:1600});u(this,"objectFit","contain");u(this,"isScreen",!0);this._log.id=`s-${this._log.id}`}get isShareCurrentTab(){var e,r;try{return Cd===((r=(e=this.mediaTrack)==null?void 0:e.getCaptureHandle())==null?void 0:r.handle)}catch(o){return}}capture(E){return A(this,arguments,function*({systemAudio:e=!1,autoGainControl:r,echoCancellation:o,noiseSuppression:s,audioTrack:n,videoTrack:c,captureElement:l,preferDisplaySurface:m}){try{let g;return c||n?(g=new MediaStream,c&&g.addTrack(c),n&&g.addTrack(n)):g=yield Mf({audio:!1,systemAudio:e,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,autoGainControl:r,echoCancellation:o,noiseSuppression:s,captureElement:l,preferDisplaySurface:m}),yield this.setInputMediaStreamTrack(g.getVideoTracks()[0]),g}catch(g){throw this.log.error(`getDisplayMedia error observed ${g}`),g instanceof ue?g:new ue({code:J.INITIALIZE_FAILED,name:g.name,message:g.message})}})}switchDevice(e){return A(this,null,function*(){throw new Error("Method not implemented.")})}};Z([to(function(e){this.setContentHint(e.contentHint||"detail")})],ro.prototype,"capture",1);var Zo=class extends Gr{constructor(t){super(t),this._log.id=`s-${this._log.id}`}addAudioProcessor(t,e,r,o){this.pipeline.silentNode.setNode(r),this.pipeline.mixNode.setNode(e),this.pipeline.aec.setNode(o),this.enableTrackAEC(!1)}removeAudioProcessor(t,e,r,o){this.pipeline.aec.node===o&&(this.pipeline.aec.deleteNode(),this.pipeline.silentNode.deleteNode(),this.pipeline.mixNode.deleteNode(),this.enableTrackAEC(!0))}};var pT='registerProcessor("dumper",class extends AudioWorkletProcessor{constructor(e){super(),this.sourceSampleRate=e.processorOptions.sourceSampleRate||48e3,this.targetSampleRate=e.processorOptions.targetSampleRate||48e3,this.port.onmessage=e=>{this.port2=e.data.port}}process(e){return(this.port2||this.port).postMessage(this.resampleAll(e,this.sourceSampleRate,this.targetSampleRate)),!0}resampleAll(r,s,a){if(s===a)return r;var o=[];for(let t=0;t<r.length;t++){o[t]=[];for(let e=0;e<r[t].length;e++)o[t][e]=this.resample(r[t][e],s,a)}return o}resample(t,e,r){if(e===r)return t;var s=Math.round(t.length*(this.targetSampleRate/this.sourceSampleRate)),a=new Float32Array(s),o=(t.length-1)/(s-1);a[0]=t[0];for(let e=1;e<s-1;e++){var l=e*o,p=Math.floor(l),h=Math.ceil(l);a[e]=t[p]+(t[h]-t[p])*(l-p)}return a[s-1]=t[t.length-1],a}});',pm;function Sa(i,t=48e3,e=1,r){return A(this,null,function*(){let o=ze("dump");pm||(pm=Ei(o,URL.createObjectURL(new Blob([pT],{type:"application/javascript"})))),yield pm;let s=o.sampleRate,n=new AudioWorkletNode(o,"dumper",{numberOfInputs:i.length,numberOfOutputs:0,processorOptions:{sourceSampleRate:s,targetSampleRate:t}});return n.channelCountMode="explicit",n.channelCount=e,r&&n.port.postMessage({port:r},[r]),i.forEach((c,l)=>c.connect(n,0,l)),new ReadableStream({start(c){n.port.onmessage=l=>{c.enqueue(l.data)}},cancel(){i.forEach(c=>c.disconnect(n)),n.port.close()}})})}var Nd=class extends pd{constructor(e){super();this.room=e;u(this,"_localAudioTrack");u(this,"_localScreenAudioTrack");u(this,"log",$.createLogger({id:"am"}));u(this,"denoiser");u(this,"voiceChanger");u(this,"mixChangedDebounce");u(this,"audioProcessor");u(this,"encodePipeline",[]);u(this,"decodePipeline",[]);u(this,"getPCMAbortCtrlMap",new Map);u(this,"audioFrameEventConfigMap",new Map);u(this,"audioReferenceMap",new Map);u(this,"isLocalAudioNeedAudioProcess",!1);u(this,"isScreenAudioNeedAudioProcess",!1);e&&(this.log.setUserId(e.userId),this.log.setSdkAppId(e.sdkAppId)),this.installEvent()}get _localAudioPipline(){var e;return(e=this._localAudioTrack)==null?void 0:e.pipeline}get _localScreenAudioPipeline(){var e;return(e=this._localScreenAudioTrack)==null?void 0:e.pipeline}dump(e){var E,g;if(!this._localAudioTrack)return;let r=[],o=[];(E=this._localAudioPipline)!=null&&E.source.node&&(r.push(this._localAudioPipline.source.node),o.push("mic")),(g=this._localAudioPipline)!=null&&g.denoiser.node&&(r.push(this._localAudioPipline.denoiser.node),o.push("mic-processed")),this.mixWeight>1&&(r.push(this.audioContext.createMediaStreamSource(this._localAudioPipline.stream)),o.push("mix")),this.log.info(`dump audio track ${o}, duration: ${e}`);let s=new AbortController,n=[],c=setTimeout(()=>{this.log.info('dump audio track complete please input "download()" to download.'),s.abort("timeout")},e*1e3),l=()=>{for(let _=0;_<o.length;_++){let v=URL.createObjectURL(new Blob(n[_])),L=document.createElement("a");L.href=v,L.download=`${o[_]}.pcm`,L.style.display="none",document.body.appendChild(L),L.click(),URL.revokeObjectURL(v),L.remove()}clearTimeout(c),s.abort("download")},m=Sa(r).then(_=>_.pipeTo(new WritableStream({write(v){v.forEach((L,x)=>n[x]=n[x]?n[x].concat(L[0]):[L[0]])}}),s).catch(v=>l));return{then:m.then.bind(m),download:l}}getPCM(e,r){var B,ee,pe;if(P(WritableStream)){this.log.warn("getPCM failed: browser not support WritableStream");return}let{enable:o,sampleRate:s=48e3,channelCount:n=1,port:c}=(r===""?this.audioFrameEventConfigMap.get(""):this.audioFrameEventConfigMap.get(r)||this.audioFrameEventConfigMap.get("*"))||{};if(!o)return;this.log.info(`getPCM ${r||"local"}`);let l=Math.floor(s*.04),m=new Float32Array(l),E=new Float32Array(l),g,_,v=0,L=new AbortController,x=r===""?(B=this._localAudioTrack)==null?void 0:B.mediaTrack:(pe=(ee=this.room)==null?void 0:ee.remotePublishedUserMap.get(r))==null?void 0:pe.remoteAudioTrack.mediaTrack;if(!x){this.log.info(`getPCM failed: ${r||"local"} has no audio track`);return}let M=ze().createMediaStreamSource(new MediaStream([x]));return Sa([M],s,n,c).then(ae=>ae.pipeTo(new WritableStream({write(Xe){Xe[0][0]&&(v+Xe[0][0].length>l?(m.set(Xe[0][0].subarray(0,l-v),v),g=Xe[0][0].subarray(l-v),Xe[0][1]&&(E.set(Xe[0][1].subarray(0,l-v),v),_=Xe[0][1].subarray(l-v)),v+=l-v):(g&&(m.set(g,v),v+=g.length,g=void 0),_&&(E.set(_,v),_=void 0),m.set(Xe[0][0],v),Xe[0][1]&&E.set(Xe[0][1],v),v+=Xe[0][0].length),v>=l&&(v=0,e({userId:r,sampleRate:s,channelCount:n,data:n===1?m:[m,E]}),m=new Float32Array(l),E=new Float32Array(l)))}}),L).catch(Xe=>this.log.warn(`stop getPCM reason:${Xe}`))),L}get hasScreenAudioTrack(){return!P(this._localScreenAudioTrack)}get hasAudioTrack(){return!P(this._localAudioTrack)}changeInput(e){if(e instanceof Zo)return this._localScreenAudioTrack=e,this.isScreenAudioNeedAudioProcess&&this.audioProcessor&&(e.addAudioProcessor(...this.audioProcessor),this.audioReferenceMap.forEach((r,o)=>{e.mixAudioReference(r,o)})),e.pipeline.connect(),this.mixOnChange();if(e instanceof Gr)return this._localAudioTrack=e,this.denoiser&&e.addDenoiser(this.denoiser),this.isLocalAudioNeedAudioProcess&&this.audioProcessor&&(e.addAudioProcessor(...this.audioProcessor),this.audioReferenceMap.forEach((r,o)=>{e.mixAudioReference(r,o)})),e.pipeline.connect(),this.mixOnChange();if(e instanceof Ti)return e.setOutputMediaStreamTrack(e.mediaTrack)}mixAudioReference(e,r){var o;(o=this._localAudioTrack)==null||o.mixAudioReference(e,r)}unMixAudioReference(e){var r;(r=this._localAudioTrack)==null||r.unMixAudioReference(e)}setAudioReferenceVolume(e,r){var o;(o=this._localAudioTrack)==null||o.setAudioReferenceVolume(e,r)}mixOnChange(){return this.mixChangedDebounce||(this.mixChangedDebounce=Promise.resolve().then(()=>{var e,r;return delete this.mixChangedDebounce,Promise.all([(e=this._localAudioTrack)==null?void 0:e.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localAudioTrack.mediaTrack),(r=this._localScreenAudioTrack)==null?void 0:r.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localScreenAudioTrack.mediaTrack)])})),this.mixChangedDebounce}removeInput(e){e instanceof Zo?delete this._localScreenAudioTrack:e instanceof Gr?delete this._localAudioTrack:e instanceof Ti}addDenoiser(e){var r;this.denoiser=e,(r=this._localAudioTrack)==null||r.addDenoiser(e)}addAudioProcessor(e,r,o,s){var n;this.audioProcessor=[e,r,o,s],this.isLocalAudioNeedAudioProcess&&this._localAudioTrack&&(this._localAudioTrack.addAudioProcessor(...this.audioProcessor),this.audioReferenceMap.forEach((c,l)=>{var m;(m=this._localAudioTrack)==null||m.mixAudioReference(c,l)})),this.isScreenAudioNeedAudioProcess&&this._localScreenAudioTrack&&((n=this._localScreenAudioTrack)==null||n.addAudioProcessor(...this.audioProcessor),this.audioReferenceMap.forEach((c,l)=>{var m;(m=this._localScreenAudioTrack)==null||m.mixAudioReference(c,l)}))}removeDenoiser(e){var r;delete this.denoiser,(r=this._localAudioTrack)==null||r.removeDenoiser(e)}addVoiceChanger(e,r){var o;this.voiceChanger=[e,r],(o=this._localAudioTrack)==null||o.pipeline.voiceChanger.setNode(e,r)}removeVoiceChanger(){var e;delete this.voiceChanger,(e=this._localAudioTrack)==null||e.pipeline.voiceChanger.deleteNode()}removeAudioProcessor(e,r,o,s){var n;delete this.audioProcessor,(n=this._localAudioTrack)==null||n.removeAudioProcessor(e,r,o,s)}destroy(){this.close(),this.audioReferenceMap.clear(),this.getPCMAbortCtrlMap.forEach(e=>e==null?void 0:e.abort("destroy")),this.getPCMAbortCtrlMap.clear(),this.audioFrameEventConfigMap.clear(),this.uninstallEvent()}addEncodeProcessor({processor:e,type:r}){var o;this.encodePipeline.includes(e)||(this.encodePipeline[r]=e,(o=this.room)==null||o.enableInsertableStreams())}addDecodeProcessor({processor:e,type:r}){var o;this.decodePipeline.includes(e)||(this.decodePipeline[r]=e,(o=this.room)==null||o.enableInsertableStreams())}removeEncodeProcessor({type:e}){this.encodePipeline[e]=void 0}removeDecodeProcessor({type:e}){this.decodePipeline[e]=void 0}handleLocalTrackStarted({room:e,userId:r}){var s;if(e!==this.room||this.getPCMAbortCtrlMap.get(r))return;let o=this.getPCM(n=>{var c;(c=this.room)==null||c.emit("audio-frame",n)},"");this.getPCMAbortCtrlMap.set(r,o),this.getPCMAbortCtrlMap.get(r)&&((s=this._localAudioTrack)==null||s.on("input-media-track-changed",()=>{let n=this.getPCMAbortCtrlMap.get(r);n&&(n.abort("inputMediaTrackChanged"),n=this.getPCM(c=>{var l;(l=this.room)==null||l.emit("audio-frame",c)},""),this.getPCMAbortCtrlMap.set(r,n))}))}handleLocalTrackStopped({room:e,userId:r}){if(e!==this.room)return;let o=this.getPCMAbortCtrlMap.get(r);o&&(o.abort("stopLocalAudio"),this.getPCMAbortCtrlMap.delete(r))}handleRemoteTrackStarted({room:e,userId:r}){if(e===this.room&&!this.getPCMAbortCtrlMap.get(r)){let o=this.room.audioManager.getPCM(s=>{var n;(n=this.room)==null||n.emit("audio-frame",s)},r);this.getPCMAbortCtrlMap.set(r,o)}}handleRemoteTrackStopped({room:e,userId:r}){if(e!==this.room)return;let o=this.getPCMAbortCtrlMap.get(r);o&&(o.abort("stopRemoteAudio"),this.getPCMAbortCtrlMap.delete(r))}installEvent(){V.on("113",this.handleLocalTrackStarted,this),V.on("114",this.handleLocalTrackStopped,this),V.on("115",this.handleRemoteTrackStarted,this),V.on("116",this.handleRemoteTrackStopped,this)}uninstallEvent(){V.off("113",this.handleLocalTrackStarted),V.off("114",this.handleLocalTrackStopped),V.off("115",this.handleRemoteTrackStarted),V.off("116",this.handleRemoteTrackStopped)}updateAudioReference({type:e,audioReference:r,refId:o,volume:s}){if(e==="add"){if(this.audioReferenceMap.get(o)||!r||(this.audioReferenceMap.set(o,r),!this.audioProcessor))return;this.mixAudioReference(r,o)}else if(e==="remove")this.audioReferenceMap.get(o)&&(this.audioReferenceMap.delete(o),this.unMixAudioReference(o));else if(e==="updateVolume"){if(!this.audioProcessor||P(s))return;this.setAudioReferenceVolume(o,s)}}};function wf(i=30,t=2){return Oe((e,r)=>function(...o){return new Promise((s,n)=>{let c=setTimeout(()=>{let l=new ue({code:J.API_CALL_TIMEOUT,message:`checkPendingPromise ${r}() timeout ${i}s`});$.warn(l),t===2?n(l):t===1&&s()},i*1e3);e.apply(this,o).then(s,n).finally(()=>{clearTimeout(c)})})})}var Zm={};Zr(Zm,{Events:()=>dt,Inspect:()=>lr,LastSink:()=>Ko,Sink:()=>fe,Subscribe:()=>es,TimeoutError:()=>Aa,audit:()=>zT,bindCallback:()=>xT,bindNodeCallback:()=>PT,buffer:()=>AT,bufferCount:()=>ST,bufferTime:()=>pI,call:()=>Of,catchError:()=>zm,combineLatest:()=>Pf,concat:()=>gT,concatMap:()=>sI,concatMapTo:()=>nI,count:()=>UT,create:()=>xe,debounce:()=>XT,debounceTime:()=>QT,defer:()=>kf,delay:()=>hI,deliver:()=>Te,dispose:()=>Dd,elementAt:()=>YT,empty:()=>Ra,every:()=>rI,exhaustMap:()=>dI,exhaustMapTo:()=>uI,filter:()=>sr,find:()=>ZT,findIndex:()=>KT,first:()=>eI,fromAnimationFrame:()=>wT,fromArray:()=>RT,fromEvent:()=>Ce,fromEventPattern:()=>vT,fromFetch:()=>CT,fromIterable:()=>NT,fromPromise:()=>Vf,fromReadableStream:()=>MT,fromReader:()=>DT,groupBy:()=>lI,identity:()=>hT,ignoreElements:()=>BT,iif:()=>_T,inspect:()=>xf,interval:()=>Im,last:()=>tI,map:()=>oo,mapTo:()=>oI,max:()=>VT,merge:()=>_m,mergeMap:()=>aI,mergeMapTo:()=>cI,min:()=>FT,never:()=>kT,nothing:()=>He,of:()=>bT,pairwise:()=>iI,pipe:()=>be,race:()=>Tm,range:()=>OT,reduce:()=>Sm,retry:()=>EI,scan:()=>Jm,share:()=>Ii,shareReplay:()=>ET,skip:()=>WT,skipUntil:()=>GT,skipWhile:()=>Pd,startWith:()=>ya,subject:()=>At,subscribe:()=>Le,sum:()=>$T,switchMap:()=>so,switchMapTo:()=>Si,take:()=>Nr,takeLast:()=>HT,takeUntil:()=>Ye,takeWhile:()=>Ff,tap:()=>va,throttle:()=>qT,throwError:()=>LT,timeInterval:()=>mI,timeout:()=>Ym,timer:()=>ba,toPromise:()=>fI,toReadableStream:()=>gI,withLatestFrom:()=>IT,zip:()=>TT});function He(...i){}var Of=i=>i(),hT=i=>i;function Dd(){this.dispose()}var xf=()=>typeof __FASTRX_DEVTOOLS__!="undefined",fT=1,lr=class extends Function{toString(){return`${this.name}(${this.args.length?[...this.args].join(", "):""})`}subscribe(t){let e=new hm(t,this,this.streamId++);return dt.subscribe({id:this.id,end:!1},{nodeId:e.sourceId,streamId:e.id}),this(e),e}},Ko=class{constructor(){this.defers=new Set,this.disposed=!1}next(t){}complete(){this.dispose()}error(t){this.dispose()}get bindDispose(){return()=>this.dispose()}dispose(){this.disposed=!0,this.complete=He,this.error=He,this.next=He,this.dispose=He,this.subscribe=He,this.doDefer()}subscribe(t){return t instanceof lr?t.subscribe(this):t(this),this}get bindSubscribe(){return t=>this.subscribe(t)}doDefer(){this.defers.forEach(Of),this.defers.clear()}defer(t){this.defers.add(t)}removeDefer(t){this.defers.delete(t)}reset(){this.disposed=!1,delete this.complete,delete this.next,delete this.dispose,delete this.next,delete this.subscribe}resetNext(){delete this.next}resetComplete(){delete this.complete}resetError(){delete this.error}},fe=class extends Ko{constructor(t){super(),this.sink=t,t.defer(this.bindDispose)}next(t){this.sink.next(t)}complete(){this.sink.complete()}error(t){this.sink.error(t)}},es=class extends Ko{constructor(t,e=He,r=He,o=He){if(super(),this._next=e,this._error=r,this._complete=o,this.then=He,t instanceof lr){let s={toString:()=>"subscribe",id:0,source:t};this.defer(()=>{dt.defer(s,0)}),dt.create(s),dt.pipe(s),this.sourceId=s.id,this.subscribe(t),dt.subscribe({id:s.id,end:!0}),e==He?this._next=n=>dt.next(s,0,n):this.next=n=>{dt.next(s,0,n),e(n)},o==He?this._complete=()=>dt.complete(s,0):this.complete=()=>{this.dispose(),dt.complete(s,0),o()},r==He?this._error=n=>dt.complete(s,0,n):this.error=n=>{this.dispose(),dt.complete(s,0,n),r()}}else this.subscribe(t)}next(t){this._next(t)}complete(){this.dispose(),this._complete()}error(t){this.dispose(),this._error(t)}};function be(i,...t){return t.reduce((e,r)=>r(e),i)}function xe(i,t,e){if(xf()){let r=Object.defineProperties(Object.setPrototypeOf(i,lr.prototype),{streamId:{value:0,writable:!0,configurable:!0},name:{value:t,writable:!0,configurable:!0},args:{value:e,writable:!0,configurable:!0},id:{value:0,writable:!0,configurable:!0}});dt.create(r);for(let o=0;o<e.length;o++){let s=e[o];typeof s=="function"&&s instanceof lr&&dt.addSource(r,s)}return r}return i}function Te(i,t){return function(...e){return r=>{if(r instanceof lr){let o=xe(s=>{let n=new i(s,...e);n.sourceId=o.id,n.subscribe(r)},t,arguments);return o.source=r,dt.pipe(o),o}else return o=>r(new i(o,...e))}}}function io(i,t){window.postMessage({source:"fastrx-devtools-backend",payload:{event:i,payload:t}})}var hm=class extends fe{constructor(t,e,r){super(t),this.source=e,this.id=r,this.sourceId=t.sourceId,this.defer(()=>{dt.defer(this.source,this.id)})}next(t){dt.next(this.source,this.id,t),this.sink.next(t)}complete(){dt.complete(this.source,this.id),this.sink.complete()}error(t){dt.complete(this.source,this.id,t),this.sink.error(t)}},dt={addSource(i,t){io("addSource",{id:i.id,name:i.toString(),source:{id:t.id,name:t.toString()}})},next(i,t,e){io("next",{id:i.id,streamId:t,data:e&&e.toString()})},subscribe({id:i,end:t},e){io("subscribe",{id:i,end:t,sink:{nodeId:e&&e.nodeId,streamId:e&&e.streamId}})},complete(i,t,e){io("complete",{id:i.id,streamId:t,err:e?e.toString():null})},defer(i,t){io("defer",{id:i.id,streamId:t})},pipe(i){io("pipe",{name:i.toString(),id:i.id,source:{id:i.source.id,name:i.source.toString()}})},update(i){io("update",{id:i.id,name:i.toString()})},create(i){i.id||(i.id=fT++),io("create",{name:i.toString(),id:i.id})}},Aa=class extends Error{constructor(t){super(`timeout after ${t}ms`),this.timeout=t}};var Md=class extends Ko{constructor(t){super(),this.source=t,this.sinks=new Set}add(t){t.defer(()=>this.remove(t)),this.sinks.add(t).size===1&&(this.reset(),this.subscribe(this.source))}remove(t){this.sinks.delete(t),this.sinks.size===0&&this.dispose()}next(t){this.sinks.forEach(e=>e.next(t))}complete(){this.sinks.forEach(t=>t.complete()),this.sinks.clear()}error(t){this.sinks.forEach(e=>e.error(t)),this.sinks.clear()}};function Ii(){return i=>{let t=new Md(i);if(i instanceof lr){let e=xe(r=>{t.add(r)},"share",arguments);return t.sourceId=e.id,e.source=i,dt.pipe(e),e}return xe(t.add.bind(t),"share",arguments)}}function _m(...i){return xe(t=>{let e=new fe(t),r=i.length;e.complete=()=>{--r===0&&t.complete()},i.forEach(e.bindSubscribe)},"merge",arguments)}function Tm(...i){return xe(t=>{let e=new Map;i.forEach(r=>{let o=new fe(t);e.set(r,o),o.complete=()=>{e.delete(r),e.size===0?t.complete():o.dispose()},o.next=s=>{e.delete(r),e.forEach(n=>n.dispose()),o.resetNext(),o.resetComplete(),o.next(s)}}),i.forEach(r=>e.get(r).subscribe(r))},"race",arguments)}function gT(...i){return xe(t=>{let e=0,r=i.length,o=new fe(t);o.complete=()=>{e<r&&!o.disposed?(o.doDefer(),o.subscribe(i[e++])):t.complete()},o.complete()},"concat",arguments)}function ET(i){return t=>{let e=new Md(t),r=[];return e.next=function(o){r.push(o),r.length>i&&r.shift(),this.sinks.forEach(s=>s.next(o))},xe(o=>{o.defer(()=>e.remove(o)),r.forEach(s=>o.next(s)),e.add(o)},"shareReplay",arguments)}}function _T(i,t,e){return xe(r=>i()?t(r):e(r),"iif",arguments)}function Pf(...i){return xe(t=>{let e=i.length,r=e,o=e,s=new Array(e),n=()=>{--o===0&&t.complete()},c=(l,m)=>{let E=new fe(t);E.next=g=>{--r===0?(E.next=_=>{s[m]=_,t.next(s)},E.next(g)):s[m]=g},E.complete=n,E.subscribe(l)};i.forEach(c)},"combineLatest",arguments)}function TT(...i){return xe(t=>{let e=i.length,r=e,o=new Array(e),s=()=>{--r===0&&t.complete()},n=(c,l)=>{let m=new fe(t),E=[];o[l]=E,m.next=g=>{E.push(g),o.every(_=>_.length)&&t.next(o.map(_=>_.shift()))},m.complete=s,m.subscribe(c)};i.forEach(n)},"zip",arguments)}function ya(...i){return t=>xe((e,r=0,o=i.length)=>{for(;r<o&&!e.disposed;)e.next(i[r++]);e.disposed||e.subscribe(t)},"startWith",arguments)}var fm=class extends fe{constructor(t,...e){super(t);let r=new fe(this.sink);r.next=o=>this.buffer=o,r.complete=He,r.subscribe(Pf(...e))}next(t){this.buffer&&this.sink.next([t,...this.buffer])}},IT=Te(fm,"withLatestFrom"),gm=class extends fe{constructor(t,e,r){super(t),this.bufferSize=e,this.startBufferEvery=r,this.buffer=[],this.count=0,this.startBufferEvery&&(this.buffers=[[]])}next(t){this.startBufferEvery?(this.count++===this.startBufferEvery&&(this.buffers.push([]),this.count=1),this.buffers.forEach(e=>{e.push(t)}),this.buffers[0].length===this.bufferSize&&this.sink.next(this.buffers.shift())):(this.buffer.push(t),this.buffer.length===this.bufferSize&&(this.sink.next(this.buffer),this.buffer=[]))}complete(){this.buffer.length?this.sink.next(this.buffer):this.buffers.length&&this.buffers.forEach(t=>this.sink.next(t)),super.complete()}},ST=Te(gm,"bufferCount"),Em=class extends fe{constructor(t,e){super(t),this.buffer=[];let r=new fe(t);r.next=o=>{t.next(this.buffer),this.buffer=[]},r.complete=He,r.subscribe(e)}next(t){this.buffer.push(t)}complete(){this.buffer.length&&this.sink.next(this.buffer),super.complete()}},AT=Te(Em,"buffer");var yT=function(i,t,e,r){function o(s){return s instanceof e?s:new e(function(n){n(s)})}return new(e||(e=Promise))(function(s,n){function c(E){try{m(r.next(E))}catch(g){n(g)}}function l(E){try{m(r.throw(E))}catch(g){n(g)}}function m(E){E.done?s(E.value):o(E.value).then(c,l)}m((r=r.apply(i,t||[])).next())})};function At(i){let t=arguments,e=Ii()(xe(r=>{e.next=o=>r.next(o),e.complete=()=>r.complete(),e.error=o=>r.error(o),i&&r.subscribe(i)},"subject",t));return e.next=He,e.complete=He,e.error=He,e}function kf(i){return xe(t=>t.subscribe(i()),"defer",arguments)}var Lf=i=>t=>{setTimeout(()=>i(t))},Uf=i=>Lf(t=>{for(let e=0;!t.disposed&&e<i.length;e++)t.next(i[e]);t.complete()});function bT(...i){return xe(Uf(i),"of",arguments)}function RT(i){return xe(Uf(i),"fromArray",arguments)}function Im(i){return xe(t=>{let e=0,r=setInterval(()=>t.next(e++),i);return t.defer(()=>{clearInterval(r)}),"interval"},"interval",arguments)}function ba(i,t){return xe(e=>{let r=0,o=setTimeout(()=>{if(e.removeDefer(s),e.next(r++),t){let n=setInterval(()=>e.next(r++),t);e.defer(()=>{clearInterval(n)})}else e.complete()},i),s=()=>{clearTimeout(o)};e.defer(s)},"timer",arguments)}function wd(i,t){return e=>{let r=o=>e.next(o);e.defer(()=>t(r)),i(r)}}function vT(i,t){return xe(wd(i,t),"fromEventPattern",arguments)}function Ce(i,t){if("on"in i&&"off"in i)return xe(wd(e=>i.on(t,e),e=>i.off(t,e)),"fromEvent",arguments);if("addListener"in i&&"removeListener"in i)return xe(wd(e=>i.addListener(t,e),e=>i.removeListener(t,e)),"fromEvent",arguments);if("addEventListener"in i)return xe(wd(e=>i.addEventListener(t,e),e=>i.removeEventListener(t,e)),"fromEvent",arguments);throw"target is not a EventDispachter"}function Vf(i){return xe(t=>{i.then(t.next.bind(t),t.error.bind(t))},"fromPromise",arguments)}function CT(i,t){return xe(kf(()=>Vf(fetch(i,t))),"fromFetch",arguments)}function NT(i){return xe(Lf(t=>{try{for(let e of i){if(t.disposed)return;t.next(e)}t.complete()}catch(e){t.error(e)}}),"fromIterable",arguments)}function DT(i){let t=e=>yT(this,void 0,void 0,function*(){if(e.disposed)return;let{done:r,value:o}=yield i.read();if(r){e.complete();return}else e.next(o),t(e)});return xe(e=>{t(e)},"fromReader",arguments)}function MT(i){return xe(t=>{let e=new AbortController,r=e.signal;t.defer(()=>e.abort("cancelled")),i.pipeTo(new WritableStream({write(o){t.next(o)},close(){t.complete()},abort(o){t.error(o)}}),{signal:r}).then(()=>t.complete(),o=>t.error(o))},"fromReadableStream",arguments)}function wT(){return xe(i=>{let t=requestAnimationFrame(function e(r){i.disposed||(i.next(r),t=requestAnimationFrame(e))});i.defer(()=>cancelAnimationFrame(t))},"fromAnimationFrame",arguments)}function OT(i,t){return xe((e,r=i,o=t+i)=>{for(;r<o&&!e.disposed;)e.next(r++);return e.complete(),"range"},"range",arguments)}function xT(i,t,...e){return xe(r=>{let o=e.concat(s=>(r.next(s),r.complete()));i.apply(t,o)},"bindCallback",arguments)}function PT(i,t,...e){return xe(r=>{let o=e.concat((s,n)=>s?r.error(s):(r.next(n),r.complete()));i.apply(t,o)},"bindNodeCallback",arguments)}function kT(){return xe(()=>{},"never",arguments)}function LT(i){return xe(t=>t.error(i),"throwError",arguments)}function Ra(){return xe(i=>i.complete(),"empty",arguments)}var ts=class extends fe{constructor(t,e,r){super(t),this.f=e;let o=()=>{this.sink.next(this.acc),this.sink.complete()};typeof r=="undefined"?this.next=s=>{this.acc=s,this.complete=o,this.resetNext()}:(this.acc=r,this.complete=o)}next(t){this.acc=this.f(this.acc,t)}},Sm=Te(ts,"reduce"),UT=i=>Te(ts,"count")((t,e)=>i(e)?t+1:t,0),VT=()=>Te(ts,"max")(Math.max),FT=()=>Te(ts,"min")(Math.min),$T=()=>Te(ts,"sum")((i,t)=>i+t,0);var Am=class extends fe{constructor(t,e,r){super(t),this.filter=e,this.thisArg=r}next(t){this.filter.call(this.thisArg,t)&&this.sink.next(t)}},sr=Te(Am,"filter"),ym=class extends fe{next(t){}},BT=Te(ym,"ignoreElements"),bm=class extends fe{constructor(t,e){super(t),this.count=e}next(t){this.sink.next(t),--this.count===0&&this.complete()}},Nr=Te(bm,"take"),Rm=class extends fe{constructor(t,e){super(t);let r=new fe(t);r.next=()=>t.complete(),r.complete=Dd,r.subscribe(e)}},Ye=Te(Rm,"takeUntil"),vm=class extends fe{constructor(t,e){super(t),this.f=e}next(t){this.f(t)?this.sink.next(t):this.complete()}},Ff=Te(vm,"takeWhile"),HT=i=>Sm((t,e)=>(t.push(e),t.length>i&&t.shift(),t),[]),Cm=class extends fe{constructor(t,e){super(t),this.count=e}next(t){--this.count===0&&(this.next=super.next)}},WT=Te(Cm,"skip"),Nm=class extends fe{constructor(t,e){super(t),t.next=He;let r=new fe(t);r.next=()=>{r.dispose(),t.resetNext()},r.complete=Dd,r.subscribe(e)}},GT=Te(Nm,"skipUntil"),Dm=class extends fe{constructor(t,e){super(t),this.f=e}next(t){this.f(t)||(this.next=super.next,this.next(t))}},Pd=Te(Dm,"skipWhile"),jT={leading:!0,trailing:!1},Mm=class extends fe{constructor(t,e,r){super(t),this.durationSelector=e,this.trailing=r}cacheValue(t){this.last=t,this.disposed&&this.throttle(t)}send(t){this.sink.next(t),this.throttle(t)}throttle(t){this.reset(),this.subscribe(this.durationSelector(t))}next(){this.complete()}complete(){this.dispose(),this.trailing&&this.send(this.last)}},Od=class extends fe{constructor(t,e,r=jT){super(t),this.durationSelector=e,this.config=r,this._throttle=new Mm(this.sink,this.durationSelector,this.config.trailing),this._throttle.dispose()}next(t){this._throttle.disposed&&this.config.leading?this._throttle.send(t):this._throttle.cacheValue(t)}complete(){this._throttle.throttle=He,this._throttle.complete(),super.complete()}},qT=Te(Od,"throttle"),JT={leading:!1,trailing:!0},zT=i=>Te(Od,"audit")(i,JT),wm=class extends fe{next(){this.complete()}complete(){this.dispose(),this.sink.next(this.last)}},xd=class extends fe{constructor(t,e){super(t),this.durationSelector=e,this._debounce=new wm(this.sink),this._debounce.dispose()}next(t){this._debounce.dispose(),this._debounce.reset(),this._debounce.last=t,this._debounce.subscribe(this.durationSelector(t))}complete(){this._debounce.complete(),super.complete()}},XT=Te(xd,"debounce"),QT=i=>Te(xd,"debounceTime")(t=>ba(i)),Om=class extends fe{constructor(t,e,r){super(t),this.count=e,this.defaultValue=r}next(t){this.count--===0&&(this.defaultValue=t,this.complete())}complete(){if(this.defaultValue===void 0){this.error(new Error("not enough elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},YT=Te(Om,"elementAt"),ZT=i=>t=>Nr(1)(Pd(e=>!i(e))(t)),xm=class extends fe{constructor(t,e){super(t),this.f=e,this.i=0}next(t){this.f(t)?(this.sink.next(this.i++),this.complete()):++this.i}},KT=Te(xm,"findIndex"),Pm=class extends fe{constructor(t,e,r){super(t),this.f=e,this.defaultValue=r,this.index=0}next(t){(!this.f||this.f(t,this.index++))&&(this.defaultValue=t,this.complete())}complete(){if(this.defaultValue===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},eI=Te(Pm,"first"),km=class extends fe{constructor(t,e,r){super(t),this.f=e,this.defaultValue=r,this.index=0}next(t){(!this.f||this.f(t,this.index++))&&(this.defaultValue=t)}complete(){if(this.defaultValue===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},tI=Te(km,"last"),Lm=class extends fe{constructor(t,e){super(t),this.predicate=e,this.index=0}next(t){this.predicate(t,this.index++)?this.result=!0:(this.result=!1,this.complete())}complete(){if(this.result===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.result);super.complete()}},rI=Te(Lm,"every");var Um=class extends fe{constructor(t,e,r){super(t),this.f=e,typeof r=="undefined"?this.next=o=>{this.acc=o,this.resetNext(),this.sink.next(this.acc)}:this.acc=r}next(t){this.sink.next(this.acc=this.f(this.acc,t))}},Jm=Te(Um,"scan"),Vm=class extends fe{constructor(){super(...arguments),this.hasLast=!1}next(t){this.hasLast?this.sink.next([this.last,t]):this.hasLast=!0,this.last=t}},iI=Te(Vm,"pairwise"),kd=class extends fe{constructor(t,e,r){super(t),this.mapper=e,this.thisArg=r}next(t){super.next(this.mapper.call(this.thisArg,t))}},oo=Te(kd,"map"),oI=i=>Te(kd,"mapTo")(t=>i),Ys=class extends fe{constructor(t,e,r){super(t),this.data=e,this.context=r}next(t){let e=this.context.combineResults;e?this.sink.next(e(this.data,t)):this.sink.next(t)}tryComplete(){this.context.resetComplete(),this.dispose()}},Zs=class extends fe{constructor(t,e,r){super(t),this.makeSource=e,this.combineResults=r,this.index=0}subInner(t,e){let r=this.currentSink=new e(this.sink,t,this);this.complete=this.tryComplete,r.complete=r.tryComplete,r.subscribe(this.makeSource(t,this.index++))}tryComplete(){this.currentSink.resetComplete(),this.dispose()}},Ld=class extends Ys{},Ud=class extends Zs{next(t){this.subInner(t,Ld),this.next=e=>{this.currentSink.dispose(),this.subInner(e,Ld)}}},so=Te(Ud,"switchMap");function Bd(i){return(t,e)=>i(()=>t,e)}var Si=Bd(Te(Ud,"switchMapTo")),Fm=class extends Ys{tryComplete(){this.dispose(),this.context.sources.length?this.context.subNext():(this.context.resetNext(),this.context.resetComplete())}},Vd=class extends Zs{constructor(){super(...arguments),this.sources=[],this.next2=this.sources.push.bind(this.sources)}next(t){this.next2(t),this.subNext()}subNext(){this.next=this.next2,this.subInner(this.sources.shift(),Fm),this.disposed&&this.sources.length===0&&this.currentSink.resetComplete()}tryComplete(){this.sources.length===0&&this.currentSink.resetComplete(),this.dispose()}},sI=Te(Vd,"concatMap"),nI=Bd(Te(Vd,"concatMapTo")),$m=class extends Ys{tryComplete(){this.context.inners.delete(this),super.dispose(),this.context.inners.size===0&&this.context.resetComplete()}},Fd=class extends Zs{constructor(){super(...arguments),this.inners=new Set}next(t){this.subInner(t,$m),this.inners.add(this.currentSink)}tryComplete(){this.inners.size===1?this.inners.forEach(t=>t.resetComplete()):this.dispose()}},aI=Te(Fd,"mergeMap"),cI=Bd(Te(Fd,"mergeMapTo")),Bm=class extends Ys{dispose(){this.context.resetNext(),super.dispose()}},$d=class extends Zs{next(t){this.next=He,this.subInner(t,Bm)}},dI=Te($d,"exhaustMap"),uI=Bd(Te($d,"exhaustMapTo")),Hm=class extends fe{constructor(t,e){super(t),this.f=e,this.groups=new Map}next(t){let e=this.f(t),r=this.groups.get(e);typeof r=="undefined"&&(r=At(),r.key=e,this.groups.set(e,r),super.next(r)),r.next(t)}complete(){this.groups.forEach(t=>t.complete()),super.complete()}error(t){this.groups.forEach(e=>e.error(t)),super.error(t)}},lI=Te(Hm,"groupBy"),Wm=class extends fe{constructor(){super(...arguments),this.start=new Date}next(t){this.sink.next({value:t,interval:Number(new Date)-Number(this.start)}),this.start=new Date}},mI=Te(Wm,"timeInterval"),Gm=class extends fe{constructor(t,e){super(t),this.miniseconds=e,this.buffer=[],this.id=setInterval(()=>{this.sink.next(this.buffer.concat()),this.buffer.length=0},this.miniseconds)}next(t){this.buffer.push(t)}complete(){this.sink.next(this.buffer),super.complete()}dispose(){clearInterval(this.id),super.dispose()}},pI=Te(Gm,"bufferTime"),jm=class extends fe{constructor(t,e){super(t),this.buffer=[],this.delayTime=e}dispose(){clearTimeout(this.timeoutId),super.dispose()}delay(t){this.timeoutId=setTimeout(()=>{let e=this.buffer.shift();if(e){let{time:r,data:o}=e;super.next(o),this.buffer.length&&this.delay(Number(this.buffer[0].time)-Number(r))}},t)}next(t){this.buffer.length||this.delay(this.delayTime),this.buffer.push({time:new Date,data:t})}complete(){this.timeoutId=setTimeout(()=>super.complete(),this.delayTime)}},hI=Te(jm,"delay"),qm=class extends fe{constructor(t,e){super(t),this.selector=e}error(t){this.dispose(),this.selector(t)(this.sink)}},zm=Te(qm,"catchError");var fI=()=>i=>new Promise((t,e)=>{let r;new es(i,o=>r=o,e,()=>t(r))}),gI=()=>i=>{let t;return new ReadableStream({start(e){t=new es(i,e.enqueue.bind(e),e.error.bind(e),e.close.bind(e))},cancel(){t.dispose()}})},Le=(i=He,t=He,e=He)=>r=>new es(r,i,t,e),Xm=class extends fe{constructor(t,e){super(t),e instanceof Function?this.next=r=>{e(r),t.next(r)}:(e.next&&(this.next=r=>{e.next(r),t.next(r)}),e.complete&&(this.complete=()=>{e.complete(),t.complete()}),e.error&&(this.error=r=>{e.error(r),t.error(r)}))}},va=Te(Xm,"tap"),Qm=class extends fe{constructor(t,e){super(t),this.timeout=e,this.id=setTimeout(()=>this.error(new Aa(this.timeout)),this.timeout)}next(t){super.next(t),clearTimeout(this.id),this.next=super.next}dispose(){clearTimeout(this.id),super.dispose()}},Ym=Te(Qm,"timeout"),EI=(i=1/0)=>t=>{if(t instanceof lr){let e=xe(r=>{let o=i,s=new fe(r);s.error=n=>{o-- >0?s.subscribe(t):r.error(n)},s.sourceId=e.id,s.subscribe(t)},"retry",[i]);return e.source=t,dt.pipe(e),e}else return e=>{let r=i,o=new fe(e);o.error=s=>{r-- >0?t(o):e.error(s)},t(o)}};var jr=class jr extends zo{constructor(e,r,o){super({userId:r.userId,sdkAppId:e.sdkAppId,mediaType:o,room:e});this.room=e;this.user=r;u(this,"tinyId");u(this,"isRemote",!0);u(this,"jitterBufferDelay",0);u(this,"availableState");u(this,"remotePublishState");u(this,"_triggerCheckDecodeSubject",At(Ce(this,jr.STATE_SUBSCRIBE)));this.tinyId=r.tinyId,this.availableState=new de(`${r.userId}-${this.mediaType}-available`,"remote-track-available"),this.remotePublishState=new de(`${r.userId}-${this.mediaType}-remote-publish`,"remote-track-publish"),be(_m(Ce(this,de.STATECHANGED),Ce(this.remotePublishState,de.STATECHANGED)),oo(()=>this.isRemotePublished&&(this.isSubscribed||this.isSubscribing)),Le(l=>{this.availableState.state!==(l?de.ON:de.OFF)&&(this.availableState.state=l?de.ON:de.OFF),this.updatePlayingState(l)}));let s=be(Ce(this.player,et.ERROR),sr(l=>l.code===MediaError.MEDIA_ERR_DECODE)),n=be(ba(5e3),sr(()=>this.ignoreDecodeError||!this.isSubscribed||!this.isPlayCalled||!this.stat.bytesReceived?!1:this.player.isPlaying||(this.kind===N.AUDIO?this.getAudioLevel()>0:this.stat.framesDecoded>0)?(this.reportDecodeResult(!0),!1):!0)),c=be(Tm(s,n),Ye(Ce(this,de.INIT)));be(this._triggerCheckDecodeSubject,sr(()=>!this.ignoreDecodeError),Si(c),Le(l=>{this.reportDecodeResult(!1,l)}))}setMute(e){this.isRemotePublished&&super.setMute(e)}setInputMediaStreamTrack(e){super.setInputMediaStreamTrack(e),this.isRemotePublished&&this.isSubscribed&&this.player.setTrack(this.outMediaTrack)}checkDecodeResult(){this._triggerCheckDecodeSubject.next(!0)}waitHasMediaTrack(){return new Promise(e=>{this.mediaTrack?e():this.once("input-media-track-changed",e)})}get ignoreDecodeError(){var r,o;return(((o=(r=this.room)==null?void 0:r.networkQuality)==null?void 0:o.downlinkNetworkQuality)||0)>3||this.player.isInAutoPlayFailedState}get isSubscribing(){return this.state.toString()==="subscribeing"}get isSubscribed(){return this.state===jr.STATE_SUBSCRIBE}get isAvailable(){return this.availableState.state===de.ON}get isNeedPlay(){return this.isAvailable&&this.isPlayCalled}subscribe(e){return e}unsubscribe(){this.player.setTrack(null),this.streamType==="main"&&this.kind==="video"&&this.room.changeType(!1,this.user)}reportDecodeResult(e,r){let o=this.kind===N.AUDIO;Q[e?"addSuccessEvent":"addFailedEvent"]({key:o?504700:514702}),e||(Q.addEnum({key:o?504701:514703,value:Yn()}),je.uploadEvent({log:`stat-decode-failed-${this.kind}-${Qn()||$o()}`,userId:this.room.userId}),this._log.warn(`decode failed: isPlaying: ${this.player.isPlaying} ${this.kind===N.AUDIO?`audioLevel: ${this.getAudioLevel()}`:`framesDecoded: ${this.stat.framesDecoded>0}`}`),this.emit("decode-failed",{error:r}))}updatePlayingState(e){if(this.isPlayCalled&&this.player.isStopped===e){if(e&&(!this.isSubscribed||!this.isRemotePublished||!this.outMediaTrack)){this.log.info(`abort play, isSubscribed: ${this.isSubscribed} isAvailable: ${this.isRemotePublished} hasTrack: ${!!this.outMediaTrack} `);return}super.updatePlayingState(e)}}close(){super.close(),this.outMediaTrack&&this.uninstallTrackEvent(this.outMediaTrack)}onFlagChanged(){this.remotePublishState.state=this.isRemotePublished?de.ON:de.OFF}onTrackMuted(){this.isNeedPlay&&super.onTrackMuted()}onTrackUnmuted(){this.isNeedPlay&&super.onTrackUnmuted()}onTrackEnded(){this.isNeedPlay&&super.onTrackEnded()}};u(jr,"STATE_SUBSCRIBE","subscribe"),Z([wf(5,1)],jr.prototype,"waitHasMediaTrack",1),Z([Qe(de.INIT,jr.STATE_SUBSCRIBE,{success(){this.log.info("subscribed"),V.emit(U.REMOTE_TRACK_SUBSCRIBED,{track:this})},ignoreError:!0}),Rd(521716,!1)],jr.prototype,"subscribe",1),Z([Qe(jr.STATE_SUBSCRIBE,de.INIT,{sync:!0,success(){this.log.info("unsubscribed"),V.emit(U.REMOTE_TRACK_UNSUBSCRIBED,{track:this})}})],jr.prototype,"unsubscribe",1);var Ks=jr;var Ti=class extends Ks{constructor(e,r){super(e,r,1);u(this,"volume",0);u(this,"mediaType",1);u(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,end2EndDelay:0,jitterBufferDelay:0});this.manager=e.audioManager}get dbVolume(){return gd.isRunning?this.player.pipeline.volumeMeter.getVolumeDb():Math.floor(Math.max(10*Math.log10(this.volume)+100,0))}decodeFrame(e){if(!this.manager)return e;let r=e;for(let o of this.manager.decodePipeline)if(o&&(r=o({frame:r,track:this}),!r))return;return r}getAudioLevel(){let e=this.volume||super.getAudioLevel();return e>1?1:e}get isRemotePublished(){return this.user.muteState.audioAvailable}};var TI=[-1,-1,1,-1,-1,1,1,1],II=[0,0,1,0,0,1,1,1];var Gt=class extends de{constructor(e,r){super();this.context=e;u(this,"name");u(this,"input");u(this,"output");u(this,"texture");u(this,"ctx2d",null);u(this,"fbo");u(this,"width",0);u(this,"height",0);u(this,"x",0);u(this,"y",0);u(this,"program");u(this,"vertexShader");u(this,"fragmentShader");u(this,"totalFrames",0);u(this,"dropFrames",0);u(this,"matchInputSize",!0);u(this,"texCoordBuffer");u(this,"positionBuffer");u(this,"lastInfo",{name:"",timestamp:0,totalFrames:0,x:0,y:0,width:0,height:0,fps:0});u(this,"cost",0);u(this,"_canvas",null);u(this,"_image");u(this,"log");if(this.context.on("disconnect",this.close,this),this.name=r.name,this.log=r.logger,this.matchInputSize=r.matchInputSize!==!1,this.width=r.width||e.width,this.height=r.height||e.height,this._image=r.image,e instanceof Ft){e.ctx&&r.create2d&&(typeof OffscreenCanvas=="function"&&Jt!==16?this._canvas=new OffscreenCanvas(this.width,this.height):(this._canvas=document.createElement("canvas"),this._canvas.width=this.width,this._canvas.height=this.height),this.ctx2d=this._canvas.getContext("2d"),this._image=this._canvas);return}try{let o=e.ctx;this.texCoordBuffer=this.createBuffer(II),this.positionBuffer=this.createBuffer(TI),r.createTexture!==!1&&(this.texture=o.createTexture(),this.useTexture(),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MAG_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE),o.pixelStorei(o.PACK_ALIGNMENT,1),o.pixelStorei(o.UNPACK_ALIGNMENT,1)),r.useFbo&&(this.fbo=o.createFramebuffer(),this.useBufferFrame(),this.useTexture(),o.texImage2D(o.TEXTURE_2D,0,o.RGBA,this.width,this.height,0,o.RGBA,o.UNSIGNED_BYTE,null),o.framebufferTexture2D(o.FRAMEBUFFER,o.COLOR_ATTACHMENT0,o.TEXTURE_2D,this.texture,0)),r.useDefaultProgram?this.program=e.defaultProgam:(r.vertexShaderSource||r.fragmentShaderSource)&&(this.vertexShader=r.vertexShaderSource?e.createShader(o.VERTEX_SHADER,r.vertexShaderSource):e.defaultVShader,this.fragmentShader=r.fragmentShaderSource?e.createShader(o.FRAGMENT_SHADER,r.fragmentShaderSource):e.defaultFShader,this.program=e.createProgram(this.vertexShader,this.fragmentShader))}catch(o){this.context.destroy(new ue({code:J.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${o.message||o}`}))}}get image(){return this._image}set image(e){this._image=e}createFramebuffer(e){let r=this.context.ctx,o=r.createFramebuffer();return r.bindFramebuffer(r.FRAMEBUFFER,o),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,e,0),o}connect(e,...r){return e.addInput(this,...r),this.output=e,e}addInput(e,...r){this.input=e,this.matchInputSize&&e.width&&e.height&&this.resize(e.width,e.height)}requestFrame(e){let r=Date.now();if(this.context instanceof Tt&&this.render(e)||this.context instanceof Ft&&this.render2d(e))this.totalFrames++;else return!1;return this.cost=Date.now()-r,!0}render2d(e){var r;return(r=this.input)!=null&&r.requestFrame(e)?this.draw2d(this.input.image,0,0,this.width,this.height):!1}update(e=0){var r;(r=this.output)==null||r.update(e)}disconnect(...e){var r;(r=this.output)==null||r.removeInput(this,...e),delete this.output}removeInput(e,...r){delete this.input}close(){var e,r;if(this.context.off("disconnect",this.close,this),(e=this.output)==null||e.removeInput(this),delete this.output,(r=this.input)==null||r.disconnect(),this.context instanceof Tt){let o=this.context.ctx;o.deleteBuffer(this.texCoordBuffer),o.deleteBuffer(this.positionBuffer),this.fbo&&o.deleteFramebuffer(this.fbo),this.texture&&o.deleteTexture(this.texture),this.vertexShader&&this.vertexShader!==this.context.defaultVShader&&o.deleteShader(this.vertexShader),this.fragmentShader&&this.fragmentShader!==this.context.defaultFShader&&o.deleteShader(this.fragmentShader),this.program&&this.program!==this.context.defaultProgam&&o.deleteProgram(this.program)}this._canvas&&(this._canvas.width=0,this._canvas.height=0,this.ctx2d=null),this.removeAllListeners()}useTexture(){this.useTextures(this.texture)}useInputTexture(){var e;this.useTextures((e=this.input)==null?void 0:e.texture)}useTextures(...e){let r=this.context.ctx;e.forEach((o,s)=>{o&&(r.activeTexture(r.TEXTURE0+s),r.bindTexture(r.TEXTURE_2D,o))})}useProgram(){this.context.ctx.useProgram(this.program)}useBufferFrame(){let e=this.context.ctx;e.bindFramebuffer(e.FRAMEBUFFER,this.fbo||null)}createBuffer(e){let r=this.context.ctx,o=r.createBuffer();return r.bindBuffer(r.ARRAY_BUFFER,o),r.bufferData(r.ARRAY_BUFFER,new Float32Array(e),r.STATIC_DRAW),o}setTexBuffer(e){let r=this.context.ctx;r.bindBuffer(r.ARRAY_BUFFER,this.texCoordBuffer),r.bufferData(r.ARRAY_BUFFER,new Float32Array(e),r.STATIC_DRAW)}setPosBuffer(e){let r=this.context.ctx;r.bindBuffer(r.ARRAY_BUFFER,this.positionBuffer),r.bufferData(r.ARRAY_BUFFER,new Float32Array(e),r.STATIC_DRAW)}changeBufferData(e,r){let o=this.context.ctx;o.bindBuffer(o.ARRAY_BUFFER,e),o.bufferData(o.ARRAY_BUFFER,new Float32Array(r),o.STATIC_DRAW)}setAttributes(...e){let r=this.context.ctx;e.forEach((o,s)=>{r.enableVertexAttribArray(s),r.bindBuffer(r.ARRAY_BUFFER,o),r.vertexAttribPointer(s,2,r.FLOAT,!1,0,0)})}getVertexPoint(e,r){return[e/this.width*2-1,r/this.height*2-1]}layout2texCoords(e){return[...this.getVertexPoint(e.x,e.y),...this.getVertexPoint(e.x+e.width,e.y),...this.getVertexPoint(e.x,e.y+e.height),...this.getVertexPoint(e.x+e.width,e.y+e.height)]}resize(e,r){if(!(this.width===e&&this.height===r)){if(this.width=e,this.height=r,this._canvas&&(this._canvas.width=e,this._canvas.height=r),this.texture&&this.fbo){this.useTexture();let o=this.context.ctx;o.texImage2D(o.TEXTURE_2D,0,o.RGBA,e,r,0,o.RGBA,o.UNSIGNED_BYTE,null)}this.output&&this.output.matchInputSize&&this.output.resize(e,r)}}draw(e,r){this.setAttributes(e||this.positionBuffer,r||this.texCoordBuffer);let o=this.context.ctx;o.drawArrays(o.TRIANGLE_STRIP,0,4)}draw2d(e,r,o,s,n){return this.ctx2d&&e?(e instanceof ImageData?this.ctx2d.putImageData(e,r,o):(this.ctx2d.drawImage(e,r,o,s,n),typeof VideoFrame!="undefined"&&e instanceof VideoFrame&&e.close()),!0):!1}getInfo(){var g;let{totalFrames:e,x:r,y:o,width:s,height:n,name:c,cost:l}=this,m=Date.now(),E=(e-this.lastInfo.totalFrames)/((m-this.lastInfo.timestamp)/1e3)>>0;return this.lastInfo={totalFrames:e,x:r,y:o,width:s,height:n,timestamp:m,fps:E,name:c,cost:l},q({parent:(g=this.input)==null?void 0:g.getInfo()},this.lastInfo)}createTexture(e){let r=this.context.ctx,o=r.createTexture();return this.useTextures(o),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.pixelStorei(r.PACK_ALIGNMENT,1),r.pixelStorei(r.UNPACK_ALIGNMENT,1),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,e),o}};Z([Qe(de.INIT,"connected",{sync:!0})],Gt.prototype,"connect",1),Z([Qe("connected",de.INIT,{ignoreError:!0,sync:!0})],Gt.prototype,"disconnect",1),Z([Qe([],"closed",{sync:!0})],Gt.prototype,"close",1);var Bf=be(Im(250),oo(()=>performance.now()),Ii()),Hf=i=>t=>{let e=0,r=performance.now();be(Bf,oo(o=>(o-r)/i>>0),sr(o=>o!=e?(e=o,!0):!1))(t)},Hd=i=>t=>{let e=performance.now();be(Bf,Pd(r=>r-e<i),Nr(1))(t)};var AI=[0,1,1,1,0,0,1,0],rs=class extends Gt{constructor(e,r){super(e,Object.assign({useDefaultProgram:!0,createTexture:!1,name:"destination"},r));u(this,"_intervalId",0);u(this,"_sequence",0);u(this,"checkGLError",!1);u(this,"checkVisibilityChange");e instanceof Ft?this.ctx2d=e.ctx||null:e.available&&(r!=null&&r.mirrorUpAndDown)&&this.setTexBuffer(AI)}start(e){this.log.info(`${this.name} start render ${e} fps`),vt.clearTask(this._intervalId),this._intervalId=vt.run("intervalInWorker",()=>{if(e!==this.context.frameRate&&(vt.clearTask(this._intervalId),this.start(this.context.frameRate)),this.requestFrame(this._sequence++),this.checkGLError&&this.context instanceof Tt){let o=this.context.ctx.getError();o&&this.context.destroy(new ue({code:J.VIDEO_MANAGER_ERROR,extraCode:5,message:`${this.name} req ${this._sequence} render ${this.totalFrames} faild ${o}`}))}},{fps:this.context.frameRate})}render(e){var r;return(r=this.input)!=null&&r.requestFrame(e)?(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0):!1}addInput(e,...r){super.addInput(e,...r),this.start(this.context.frameRate)}update(e=0){if(this._intervalId&&(vt.clearTask(this._intervalId),this._intervalId=0,e===1)){this.log.info(`${this.name} use requestVideoFrameCallback`);let r=()=>{document.hidden&&(this.start(this.context.frameRate),this.log.info(`${this.name} use timer`),document.removeEventListener("visibilitychange",r))};document.addEventListener("visibilitychange",r)}this.requestFrame(this._sequence++)}removeInput(e){super.removeInput(e),vt.clearTask(this._intervalId)}resize(e,r){super.resize(e,r),this.context.setSize(e,r)}close(){super.close(),vt.clearTask(this._intervalId),document.removeEventListener("visibilitychange",this.checkVisibilityChange)}},en=class extends rs{constructor(e,r){super(e,r);u(this,"_videoTrack");u(this,"_muteOb");u(this,"_closedOb",Ce(this,"closed"));u(this,"_subscription");u(this,"_canvasContainer");Number(ai)<17&&(this._canvasContainer=document.createElement("div"),this._canvasContainer.style.display="none"),[this._videoTrack]=e._canvas.captureStream().getVideoTracks(),this._muteOb=Ce(this._videoTrack,"mute"),be(Ce(this._videoTrack,"ended"),Ye(this._closedOb),Le(()=>{this.context.destroy(new ue({code:J.VIDEO_MANAGER_ERROR,extraCode:8,message:"video track ended"}))}))}enableCheckMute(){this._subscription=be(this._muteOb,Ye(this._closedOb),Si(Hd(5e3)),sr(()=>{var e;return!!((e=this._videoTrack)!=null&&e.muted)&&!document.hidden}),Le(()=>{this.context.destroy(new ue({code:J.VIDEO_MANAGER_ERROR,extraCode:7,message:"video track muted"}))}))}disableCheckMute(){var e;(e=this._subscription)==null||e.dispose()}get videoTrack(){return this._videoTrack}putCanvasIntoDom(){!this.context._canvas||!this._canvasContainer||document.getElementById(this.context._canvas.id)||(this.log.info(`${this.name} put canvas to body`),document.body.appendChild(this._canvasContainer),this._canvasContainer.appendChild(this.context._canvas))}render(e){return this.putCanvasIntoDom(),super.render(e)}render2d(e){return this.putCanvasIntoDom(),super.render2d(e)}close(){var e,r;super.close(),(e=this._videoTrack)==null||e.stop(),delete this._videoTrack,(r=this._canvasContainer)==null||r.remove()}},Wd=class extends en{render(t){var e;return!!((e=this.input)!=null&&e.requestFrame(t))}};var Gd=class extends en{constructor(e,r,o){super(e,{name:"smallDestination",logger:o});this.resolution=r}resize(e,r){let o,s=e*r,n=this.resolution.width*this.resolution.height;this.log.info(`big res: ${e}*${r} small res: ${this.resolution.width}*${this.resolution.height} `),s>n?o=s/n:(this.log.warn(`Small stream resolution is not smaller than big stream, which is invalid. big: ${e} * ${r} small: ${this.resolution.width} * ${this.resolution.height}`),o=s/(160*120)),super.resize(e/Math.sqrt(o),r/Math.sqrt(o))}};var Ca=class extends Gt{constructor(e,r){super(e,q({name:"imageSource"},r));u(this,"_lastImage");u(this,"_totalFrames",0);u(this,"_autoResize",!1);u(this,"_canvasRendered");u(this,"_videoCallbackId",0);u(this,"waitingFirstFrame",!0);u(this,"shouldUpdate",!0);this._autoResize=(r==null?void 0:r.autoResize)!==!1,Jt===16&&(this._canvasRendered=At(),be(this._canvasRendered,ya(this._image),so(o=>o instanceof HTMLCanvasElement?Ce(o,"rendered"):Ra()),Ye(Ce(this,"closed")),Le(()=>{this.update()})))}onFirstFrame(){this.waitingFirstFrame=!1}tryVideoFrameCallback(){if(!this.shouldUpdate)return;let e=this.image;this._videoCallbackId&&e.cancelVideoFrameCallback(this._videoCallbackId),fi()&&!document.hidden&&(this._videoCallbackId=e.requestVideoFrameCallback((r,o)=>{this.waitingFirstFrame&&this.onFirstFrame(),document.hidden||(this._totalFrames=o.presentedFrames,this.update(1))}))}_render(e,r){var c;let{width:o,height:s}=this,{image:n}=this;if(n instanceof HTMLVideoElement){if(this.tryVideoFrameCallback(),{videoWidth:o,videoHeight:s}=n,!o||!s)return!1;n.width=o,n.height=s}else if(n instanceof HTMLImageElement||n instanceof ImageData||n instanceof ImageBitmap){if({width:o,height:s}=n,n!==this._lastImage)this._lastImage=n;else if(o===this.width&&s===this.height)return!1}else n instanceof HTMLCanvasElement||n instanceof OffscreenCanvas?({width:o,height:s}=n,this._lastImage=n):typeof VideoFrame!="undefined"&&n instanceof VideoFrame&&({displayWidth:o,displayHeight:s}=n,(c=this._lastImage)==null||c.close(),this._lastImage=n);if(!this._autoResize)return!0;if(this.width===o&&this.height===s&&this.totalFrames){if(r){this.useTexture();let l=this.context.ctx;l.texSubImage2D(l.TEXTURE_2D,0,0,0,l.RGBA,l.UNSIGNED_BYTE,n)}}else{if(r){this.useTexture();let l=this.context.ctx;l.texImage2D(l.TEXTURE_2D,0,l.RGBA,l.RGBA,l.UNSIGNED_BYTE,n)}this.resize(o,s)}return!0}get image(){return this._image}set image(e){var r;(r=this._canvasRendered)==null||r.next(e),this._image=e}render(e){return this._render(e,!0)}render2d(e){return this._render(e,!1)}},Na=class extends Ca{constructor(e,r,o){super(e,o);this._player=r;this.name="videoPlayerSource",be(Ce(this._player,et.PLAYER_STATE_CHANGED),Ye(Ce(this,"closed")),sr(({state:s})=>s==="PLAYING"),Le(()=>{this.tryVideoFrameCallback()}))}get image(){return this._player.element}},Ai=class extends Na{get available(){return this._player.isPlaying&&!this.waitingFirstFrame}constructor(t,e,r){super(t,new rr({id:r.name,track:e,muted:!0,container:null,objectFit:"contain",log:r.logger}),r),this.name="videoTrackSource",this._player.play()}replaceTrack(t){this.waitingFirstFrame=!0,this._player.setTrack(t),this._player.play()}close(){super.close(),this._player.stop()}};var bI=`
|
|
34
32
|
// \u9876\u70B9\u7740\u8272\u5668
|
|
35
33
|
attribute vec4 a_position;
|
|
36
34
|
attribute vec2 a_texCoord;
|
|
@@ -40,7 +38,7 @@ void main() {
|
|
|
40
38
|
gl_Position = a_position;
|
|
41
39
|
v_texCoord = a_texCoord;
|
|
42
40
|
}
|
|
43
|
-
`,
|
|
41
|
+
`,RI=`
|
|
44
42
|
// \u7247\u5143\u7740\u8272\u5668
|
|
45
43
|
precision mediump float;
|
|
46
44
|
varying vec2 v_texCoord;
|
|
@@ -48,32 +46,66 @@ uniform sampler2D u_texture;
|
|
|
48
46
|
|
|
49
47
|
void main() {
|
|
50
48
|
gl_FragColor = texture2D(u_texture, v_texCoord);
|
|
51
|
-
} `;var qr=class extends H{constructor(e){super();d(this,"frameRate");d(this,"_canvas");d(this,"log");d(this,"hasAlpha",!1);d(this,"name");d(this,"error");this.name=e.name,this.log=e.logger.createChild({id:`vc-${this.name}`}),this.frameRate=e.frameRate}set width(e){this._canvas&&(this._canvas.width=e)}get width(){var e;return((e=this._canvas)==null?void 0:e.width)||0}set height(e){this._canvas&&(this._canvas.height=e)}get height(){var e;return((e=this._canvas)==null?void 0:e.height)||0}setSize(e,t){this._canvas&&(this._canvas.width=e,this._canvas.height=t)}createVideoTrackSource(e,t){return new Ji(this,e,{logger:this.log,name:t})}createVideoTrackDestination(e){return new Bo(this,e)}createVideoImageSource(e,t){return new tn(this,t?Object.assign(t,{logger:this.log,image:e}):{logger:this.log,image:e})}createVideoPlayerSource(e,t){return new rn(this,e,t?Object.assign(t,{logger:this.log}):{logger:this.log})}get available(){return this.state==="created"}disconnect(){this.emit("disconnect")}};d(qr,"_ids",0);var vT={alpha:!0,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0,powerPreference:"low-power"},Fo=class Fo extends qr{constructor(){super(...arguments);d(this,"defaultProgam");d(this,"defaultVShader");d(this,"defaultFShader");d(this,"ctx")}create(){if(this._canvas||(this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${qr._ids++}`),this.ctx=this._canvas.getContext("webgl2",vT),!this.ctx)throw new y({code:I.VIDEO_MANAGER_ERROR,extraCode:2,message:"webgl2 not supported"});this.defaultVShader=this.createShader(this.ctx.VERTEX_SHADER,bT),this.defaultFShader=this.createShader(this.ctx.FRAGMENT_SHADER,NT),this.defaultProgam=this.createProgram(this.defaultVShader,this.defaultFShader),this._canvas.addEventListener("webglcontextlost",()=>{this.destroy(new y({code:I.VIDEO_MANAGER_ERROR,extraCode:4,message:"webgl context lost"}))})}destroy(e){let t="";return e&&(t=e.message,this.error=e,b.addFailedEvent({key:512702,error:e})),this.disconnect(),this.log.info(`video context destroy${t}`?`: ${t}`:""),this.ctx&&(this.ctx.deleteShader(this.defaultVShader),this.ctx.deleteShader(this.defaultFShader),this.ctx.deleteProgram(this.defaultProgam),delete this.ctx),e}set width(e){var t;(t=this.ctx)==null||t.viewport(0,0,e,this.height),super.width=e}set height(e){var t;(t=this.ctx)==null||t.viewport(0,0,this.width,e),super.height=e}setSize(e,t){var r;(r=this.ctx)==null||r.viewport(0,0,e,t),super.setSize(e,t)}createShader(e,t){let r=this.ctx,s=r.createShader(e);return r.shaderSource(s,t),r.compileShader(s),s}createProgram(e,t){let r=this.ctx,s=r.createProgram();return r.attachShader(s,e),r.attachShader(s,t),r.linkProgram(s),r.getProgramParameter(s,r.LINK_STATUS)||this.log.error(r.getProgramInfoLog(s)),s}};d(Fo,"UNAVAILABLE","unavailable"),v([Te(H.INIT,"created",{sync:!0,fail(e){this.log.error("video gl context create failed",e.cause),b.addFailedEvent({key:512700,error:e.cause||e})},success(){this.log.info("video context created use webgl"),b.addSuccessEvent({key:512700})}})],Fo.prototype,"create",1),v([Te("created",H.INIT,{ignoreError:!0,sync:!0,success(e){e&&this.emit(Fo.UNAVAILABLE,e),this.removeAllListeners()}})],Fo.prototype,"destroy",1);var ke=Fo,Xe=class extends qr{constructor(){super(...arguments);d(this,"ctx")}create(e){if(this.hasAlpha=e.alpha,this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${qr._ids++}`,this.ctx=this._canvas.getContext("2d",{alpha:e.alpha}),!this.ctx)throw new y({code:I.VIDEO_MANAGER_ERROR,extraCode:2,message:"2d context not supported"});this._canvas.addEventListener("contextlost",()=>{this.log.error("2d context lost")}),this._canvas.addEventListener("contextrestored",()=>{this.log.warn("2d context restored")})}destroy(e){let t="";e&&(t=e.message,this.error=e,b.addFailedEvent({key:512703,error:e})),this.disconnect(),this.log.info(`video context destroy ${t?`: ${t}`:""}`),delete this.ctx,this._canvas&&(this._canvas.remove(),this._canvas.width=0,this._canvas.height=0,delete this._canvas),this.removeAllListeners(),b.addSuccessEvent({key:512703})}};v([Te(H.INIT,"created",{sync:!0,fail(e){this.log.error("video 2d context create failed",e.cause),b.addFailedEvent({key:512701,error:e.cause||e})},success(){this.log.info("video context created use 2d"),b.addSuccessEvent({key:512701})}})],Xe.prototype,"create",1),v([Te("created",H.INIT,{ignoreError:!0,sync:!0})],Xe.prototype,"destroy",1);function DT(o){return[15,30,45,60].reduce((e,t)=>Math.abs(t-o)<Math.abs(e-o)?t:e)}var fi=class extends Uo{constructor(e,t,r=4){super(e,t,r);d(this,"mediaType",4);d(this,"source");d(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,end2EndDelay:0,jitterBufferDelay:0});this.manager=e.videoManager,this.once("first-video-frame",s=>{this.room.emit("first-video-frame",s)})}play(e,t){return(me(t==null?void 0:t.canvasRender)?t.canvasRender:nt===17)&&!this.source&&this.useCanvasPlayer(),super.play(e,t).then(()=>{this.player.calculateStat()})}useCanvasPlayer(){if(this.log.info(`useCanvasPlayer(), has element:${!!this.player.element}`),!this.player.element)return;let e=new Xe({frameRate:15,logger:this.log,name:this.userId});e.create({alpha:!1});let t=new jr(e,{name:"remotePlayer",logger:this.log});this.source=e.createVideoPlayerSource(this.player),this.source.connect(t),this.player.setCanvas(e._canvas),Vr()||(this.updateCanvasPlayerFPS=this.updateCanvasPlayerFPS.bind(this,e),this.room.on("heartbeat-report",this.updateCanvasPlayerFPS,this))}updateCanvasPlayerFPS(e){let t=this.decodeFPS,r=DT(t);if(!j(t)||t<=0){this.log.debug(`updateCanvasPlayerFPS() ignore decoder: ${t} `);return}if(r===e.frameRate){this.log.debug(`updateCanvasPlayerFPS() ignore ClosestFPS ${r} == ${e.frameRate}`);return}this.log.info(`updateCanvasPlayerFPS() decoder: ${t}, closest: ${r}, current: ${e.frameRate}`),e.frameRate=r}get decodeFPS(){var n;let{msg_video_status:e}=((n=this.room.heartbeatReport)==null?void 0:n.msg_down_stream_info.find(a=>a.msg_user_info.str_identifier===this.userId))||{},t=this.mediaType===2?7:this.isSmall?3:2;if(!e||e.length===0)return 0;let r=e.find(a=>a.uint32_video_stream_type===t);return(r==null?void 0:r.uint32_video_dec_fps)||0}stop(){return this.room.off("heartbeat-report",this.updateCanvasPlayerFPS,this),super.stop()}decodeFrame(e){if(!this.manager)return e;for(let t of this.manager.decodePipeline)if(t&&(e=t({frame:e,track:this}),!e))return;return e}get isBig(){return this.mediaType===4}get isSmall(){return this.mediaType===8}changeType(e){this.room.changeType(e,this.user)}get isRemotePublished(){return this.user.muteState.videoAvailable}setMirror(e){e==="publish"||e==="both"||super.setMirror(e)}onDecodeDowngradeStateChanged(e){this.emit("decode-downgrade-state-changed",e)}},$o=class extends fi{constructor(e,t){super(e,t,2);d(this,"mediaType",2);d(this,"objectFit","contain")}get isRemotePublished(){return this.user.muteState.hasAuxiliary}};var Ho=new Map;E.on(A.JOIN_SUCCESS,({room:o})=>{Ae(o.userId,{eventId:32788})});E.on(A.LEAVE_START,({room:o})=>{Ae(o.userId,{eventId:32789})});E.on(A.LOCAL_TRACK_PUBLISHED,({track:o})=>{if(o.room){let i=32769;o.mediaType===4?i=32768:o.mediaType===2&&(i=32805),Ae(o.room.userId,{eventId:i})}});E.on(A.LOCAL_TRACK_UNPUBLISHED,({track:o})=>{if(o.room){let i=32771;o.mediaType===4?i=32770:o.mediaType===2&&(i=32806),Ae(o.room.userId,{eventId:i})}});E.on(A.TRACK_MUTED,({track:o})=>{o.room&&(o.kind===p.AUDIO?Ae(o.room.userId,{eventId:o.isRemote?32785:32772,remoteUserId:o.isRemote?o.userId:void 0}):Ae(o.room.userId,{eventId:o.isRemote?32784:32773,remoteUserId:o.isRemote?o.userId:void 0}))});E.on(A.TRACK_UNMUTED,({track:o})=>{o.room&&(o.kind===p.AUDIO?Ae(o.room.userId,{eventId:o.isRemote?32787:32774,remoteUserId:o.isRemote?o.userId:void 0}):Ae(o.room.userId,{eventId:o.isRemote?32786:32775,remoteUserId:o.isRemote?o.userId:void 0}))});E.on(A.REMOTE_TRACK_SUBSCRIBED,({track:o})=>{o.room&&(o.mediaType===1&&Ae(o.room.userId,{eventId:32777,remoteUserId:o.userId}),o.mediaType===4&&Ae(o.room.userId,{eventId:32776,remoteUserId:o.userId}),o.mediaType===8&&Ae(o.room.userId,{eventId:32803,remoteUserId:o.userId}))});E.on(A.REMOTE_TRACK_UNSUBSCRIBED,({track:o})=>{o.room&&(o.mediaType===1&&Ae(o.room.userId,{eventId:32779,remoteUserId:o.userId}),o.mediaType===4&&Ae(o.room.userId,{eventId:32778,remoteUserId:o.userId}),o.mediaType===8&&Ae(o.room.userId,{eventId:32804,remoteUserId:o.userId}))});E.on(A.SWITCH_DEVICE_SUCCESS,({track:o})=>{o.room&&Ae(o.room.userId,{eventId:o.kind===p.VIDEO?32780:32781})});E.on(A.LOCAL_TRACK_REPLACED,({track:o})=>{o.room&&Ae(o.room.userId,{eventId:o.kind===p.VIDEO?32782:32783})});E.on(A.SIGNAL_CONNECTION_STATE_CHANGED,({room:o,prevState:i,state:e})=>{let t;switch(e){case"CONNECTED":i==="RECONNECTING"?t=32795:t=32791;break;case"DISCONNECTED":i==="RECONNECTING"?t=32796:t=32790;break;case"RECONNECTING":t=32794;break}t&&Ae(o.userId,{eventId:t})});E.on(A.PEER_CONNECTION_STATE_CHANGED,({room:o,prevState:i,state:e,remoteUserId:t})=>{let r=!!t,s;switch(e){case"CONNECTED":i==="RECONNECTING"?s=r?32801:32798:s=r?32793:32792;break;case"DISCONNECTED":i==="RECONNECTING"&&(s=r?32802:32799);break;case"RECONNECTING":s=r?32800:32797;break}s&&Ae(o.userId,{eventId:s,remoteUserId:t})});E.on(A.VIDEO_CODEC_IMPLEMENTATION_CHANGED,({implementation:o,userId:i,remoteUserId:e,codec:t,isHWCodec:r,prevImplementation:s,streamType:n})=>{let a=r?1:0;s||(a=r?3:2);let c=t==="h264"?0:2,l={eventId:4004,param1:a,param2:c,streamType:n||2};e&&(l.remoteUserId=e,l.eventId=4005),Ae(i,l),b.addEnum({key:e?514701:513701,value:a}),b.addEnum({key:e?514700:513700,value:c})});E.on(A.LOCAL_TRACK_RECAPTURE,({track:o,error:i})=>{if(o.userId){let e={eventId:2003,param1:0};o.kind===p.AUDIO?(e.streamType=1,i&&(e.param1=2)):(e.streamType=o.streamType==="auxiliary"?7:2,i&&(e.param1=8)),Ae(o.userId,e)}});function Ae(o,i){let e=L(N({},i),{timestamp:is()});Ho.has(o)?Ho.get(o).push(e):Ho.set(o,[e])}function Um(o){if(Ho.has(o)){let i=Ho.get(o).map(e=>({uint32_event_id:e.eventId,uint64_date:e.timestamp,str_userid:e.remoteUserId,uint32_param1:e.param1,uint32_param2:e.param2,uint32_video_stream_type:e.streamType}));return Ho.delete(o),i}return[]}function Bm(...o){return Q((i,e)=>function(...t){return OT.call(this,o,t,e,this._name),i.apply(this,t)})}function OT(o,i,e,t){try{if(Se(o))for(let r=0;r<o.length;r++)ec.call(this,{rule:o[r],value:i[r],key:o[r].name,fnName:e,className:t});else ec.call(this,{rule:o,value:i[0],key:o.name,fnName:e,className:t})}catch(r){throw C.error(r),r}}function ec({rule:o,value:i,key:e,fnName:t,className:r}){if(T(i)){if(o.required)throw new y({code:I.INVALID_PARAMETER,message:P({key:x.INVALID_PARAMETER_REQUIRED,data:{key:e,rule:o,fnName:t,value:i},link:{className:r,fnName:t}})});if(T(o.defaultValue))return;i=o.defaultValue}if(Array.isArray(o.type)){let a=!1;for(let c=0;c<o.type.length;c++)o.type[c]===null&&i===null&&(a=!0),ne(o.type[c])&&i instanceof o.type[c]&&(a=!0),ee(o.type[c])&&Re(i)===o.type[c].toLowerCase()&&(a=!0);if(!a)throw new y({code:I.INVALID_PARAMETER,message:P({key:x.INVALID_PARAMETER_TYPE,data:{key:e,rule:{type:o.type.map(c=>br(c)?no(c):ee(c)?c:Re(c))},fnName:t,value:i},link:{className:r,fnName:t}})})}else if(!T(o.type)&&Re(i)!==o.type)throw new y({code:I.INVALID_PARAMETER,message:P({key:x.INVALID_PARAMETER_TYPE,data:{key:e,rule:o,fnName:t,value:i},link:{className:r,fnName:t}})});if(o.allowEmpty===!1){let a=j(i)&&(i===0||Number.isNaN(i)),c=ee(i)&&i.trim()==="";if(a||c)throw new y({code:I.INVALID_PARAMETER,message:P({key:x.INVALID_PARAMETER_EMPTY,data:{key:e,rule:o,fnName:t,value:i},link:{className:r,fnName:t}})})}if(o.notLessThanZero&&j(i)&&i<0)throw new y({code:I.INVALID_PARAMETER,message:P({key:x.CANNOT_LESS_THAN_ZERO,data:{key:e,rule:o,fnName:t,value:i},link:{className:r,fnName:t}})});if(!T(o.min)&&j(i)&&i<o.min)throw new y({code:I.INVALID_PARAMETER,message:P({key:x.INVALID_PARAMETER_MIN,data:{key:e,rule:o,fnName:t,value:i},link:{className:r,fnName:t}})});if(!T(o.max)&&j(i)&&i>o.max)throw new y({code:I.INVALID_PARAMETER,message:P({key:x.INVALID_PARAMETER_MAX,data:{key:e,rule:o,fnName:t,value:i},link:{className:r,fnName:t}})});if(ee(o.instanceOf)){if(!i||i._name!==o.instanceOf)throw new y({code:I.INVALID_PARAMETER,message:P({key:x.INVALID_PARAMETER_INSTANCE,data:{key:e,rule:o,fnName:t,value:i},link:{className:r,fnName:t}})})}else if(ne(o.instanceOf)&&!(i instanceof o.instanceOf))throw new y({code:I.INVALID_PARAMETER,message:P({key:x.INVALID_PARAMETER_INSTANCE,data:{key:e,rule:o,fnName:t,value:i},link:{className:r,fnName:t}})});if(o.values&&!o.values.includes(i))throw new y({code:I.INVALID_PARAMETER,message:P({key:x.INVALID_PARAMETER_RANGE,data:{key:e,rule:o,fnName:t,value:i},link:{className:r,fnName:t}})});let{properties:s}=o;Je(s)&&ht(i)&&Object.keys(s).forEach(a=>{ec.call(this,{rule:s[a],value:i&&i[a],key:`${e}.${a}`,fnName:t,className:r})});let{arrayItem:n}=o;Je(n)&&Se(i)&&i.forEach((a,c)=>{ec.call(this,{rule:n,value:a,key:`${e}[${c}]`,fnName:t,className:r})}),ne(o.validate)&&o.validate.call(this,i,e,t,r,this)}var Fm=$e(Ye(),1);var tc=class extends Fm.EventEmitter{constructor(e,t,r="userId"){super();this.mySelfId=e;this._log=t;this.key=r;d(this,"userMap",new Map);d(this,"remotePublishedUserMap",new Map)}get hasRobotUser(){return!![...this.remotePublishedUserMap.values()].find(e=>e.isRobot)}getPublishedUser(e){return this.remotePublishedUserMap.get(e)}addUser(e){let t=e[this.key],{userId:r,tinyId:s,role:n}=e;if(this.userMap.has(t))return;let a={userId:r,tinyId:s,role:n===20?"anchor":"audience"};this.userMap.set(t,a),this.emit("1",a)}deleteUser(e,t){let r=this.userMap.get(e);if(!r)return;let s=`peer leave [${e}]`;T(t)||(s+=`:${Zc[t]}`),this._log.info(s);let n=this.remotePublishedUserMap.get(e);if(n){let a=n.muteState;n.flag=0,this.emit("5",n.userId),this.deleteRemotePublishedUser(e),this.emit("6",{prevMuteState:a,muteState:n.muteState,flag:0})}this.userMap.delete(e),this.emit("2",r.userId)}setUserList(e){this.userMap.forEach(t=>{e.findIndex(r=>r[this.key]===t[this.key])<0&&this.deleteUser(t[this.key],0)}),e.forEach(t=>{!this.userMap.has(t[this.key])&&t[this.key]!==this.mySelfId&&this.addUser(t)})}addRemotePublishedUser(e){this.remotePublishedUserMap.has(e[this.key])||this.remotePublishedUserMap.set(e[this.key],e)}deleteRemotePublishedUser(e){this.remotePublishedUserMap.has(e)&&this.remotePublishedUserMap.delete(e)}setRemotePublishedUserList(e){this.remotePublishedUserMap.forEach(t=>{let r=t[this.key];if(e.findIndex(s=>s[this.key]===t[this.key])<0){this._log.info(`remote [${r}] unpublish`);let s=t.muteState;t.flag=0,this.emit("5",t.userId),this.deleteRemotePublishedUser(r),this.emit("6",{prevMuteState:s,muteState:t.muteState,flag:0})}}),e.forEach(t=>{var h;let r=t[this.key];if(r===this.mySelfId)return;let{flag:s,userId:n,tinyId:a}=t,c=bi(s,n),l=(h=this.remotePublishedUserMap.get(r))==null?void 0:h.muteState;if(l){let u=this.remotePublishedUserMap.get(r);u&&u.flag!==s&&(u.flag=s,this._log.info(`remote publish updated: ${JSON.stringify(u.muteState)}`),this.emit("6",{prevMuteState:l,muteState:c,flag:s}))}else this._log.info(`remote publish. state: ${JSON.stringify(c)}`),this.addUser({userId:n,tinyId:a,role:20}),this.emit("3",t),this.emit("6",{prevMuteState:bi(0,n),muteState:c,flag:s})})}clear(){this.userMap.clear(),this.remotePublishedUserMap.clear()}};function eu({timesInSecond:o,maxSizeInSecond:i,getSize:e}){return Q((t,r)=>{let s=new WeakMap;return E.on(A.ROOM_DESTROY,({room:n})=>s.delete(n)),function(...n){let a=s.get(this);if(a||(a={callCountInSecond:0,timestamp:0,totalSizeInSecond:0},s.set(this,a)),a.timestamp===0?a.timestamp=Date.now():Date.now()-a.timestamp>1e3&&(a.timestamp=Date.now(),a.callCountInSecond=0,a.totalSizeInSecond=0),e&&(a.totalSizeInSecond+=e(...n)),a.timestamp!==0&&Date.now()-a.timestamp<1e3&&(a.callCountInSecond>=o||a.totalSizeInSecond>i))throw new y({code:I.INVALID_OPERATION,message:P({key:x.CALL_FREQUENCY_LIMIT,data:{isTimes:a.callCountInSecond>=o,isSize:a.totalSizeInSecond>i,name:r,timesInSecond:o,maxSizeInSecond:i}})});a.callCountInSecond++,t.call(this,...n)}})}var MT="2025-07-08 21:40:14",$m=!0,Hm=function(){var o;if($m){$m=!1,C.getLogLevel()!==5&&(console.info("******************************************************************************"),console.info("* TRTC Web SDK"),console.info(`* API Document: ${Xt}/en/index.html`),console.info(`* Changelog: ${Xt}/en/tutorial-01-info-changelog.html`),console.info("* Report issues: https://github.com/LiteAVSDK/TRTC_Web/issues"),console.info("******************************************************************************")),C.info("TRTC Web SDK Version:",xe),Ut||C.debug("Build Time:",MT);let i=`UA: ${navigator.userAgent}
|
|
52
|
-
CPU core: ${navigator.hardwareConcurrency}, GPU: ${Rd()}`,e=navigator.deviceMemory;e&&(i+=`, minRAM: ${e}GB`),C.info(i),C.info(`URL: ${location.href}${((o=self.frameElement)==null?void 0:o.tagName)==="IFRAME"?" in iframe":""}`),Or().then(t=>{t&&C.info(Pt)})}};var bt={SCENE_LIVE:"live",SCENE_RTC:"rtc",ROLE_ANCHOR:"anchor",ROLE_AUDIENCE:"audience",STREAM_TYPE_MAIN:"main",STREAM_TYPE_SUB:"sub",AUDIO_PROFILE_STANDARD:"standard",AUDIO_PROFILE_STANDARD_STEREO:"standard-stereo",AUDIO_PROFILE_HIGH:"high",AUDIO_PROFILE_HIGH_STEREO:"high-stereo",QOS_PREFERENCE_SMOOTH:"smooth",QOS_PREFERENCE_CLEAR:"clear",SPEAKER:"Speakerphone",HEADSET:"Headset earpiece"};var B={INVALID_PARAMETER:5e3,INVALID_OPERATION:5100,ENV_NOT_SUPPORTED:5200,DEVICE_ERROR:5300,SERVER_ERROR:5400,OPERATION_FAILED:5500,OPERATION_ABORT:5998,UNKNOWN_ERROR:5999},Nt=(R=>(R[R.INVALID_PARAMETER=5e3]="INVALID_PARAMETER",R[R.INVALID_PARAMETER_REQUIRED=5001]="INVALID_PARAMETER_REQUIRED",R[R.INVALID_PARAMETER_TYPE=5002]="INVALID_PARAMETER_TYPE",R[R.INVALID_PARAMETER_EMPTY=5003]="INVALID_PARAMETER_EMPTY",R[R.INVALID_PARAMETER_INSTANCE=5004]="INVALID_PARAMETER_INSTANCE",R[R.INVALID_PARAMETER_RANGE=5005]="INVALID_PARAMETER_RANGE",R[R.INVALID_PARAMETER_LESS_THAN_ZERO=5006]="INVALID_PARAMETER_LESS_THAN_ZERO",R[R.INVALID_PARAMETER_MIN=5007]="INVALID_PARAMETER_MIN",R[R.INVALID_PARAMETER_MAX=5008]="INVALID_PARAMETER_MAX",R[R.INVALID_ELEMENT_ID=5009]="INVALID_ELEMENT_ID",R[R.INVALID_ELEMENT_ID_TYPE=5010]="INVALID_ELEMENT_ID_TYPE",R[R.INVALID_STREAM_ID=5011]="INVALID_STREAM_ID",R[R.INVALID_ROOM_ID_STRING=5012]="INVALID_ROOM_ID_STRING",R[R.INVALID_ROOM_ID_INTEGER=5013]="INVALID_ROOM_ID_INTEGER",R[R.INVALID_STREAM_TYPE=5014]="INVALID_STREAM_TYPE",R[R.INVALID_ROOM_ID_REQUIRED=5015]="INVALID_ROOM_ID_REQUIRED",R[R.INVALID_ROOM_ID_INTEGER_STRING=5016]="INVALID_ROOM_ID_INTEGER_STRING",R[R.INVALID_BUFFER_EMPTY=5017]="INVALID_BUFFER_EMPTY",R[R.INVALID_BUFFER_OVERSIZE=5018]="INVALID_BUFFER_OVERSIZE",R[R.INVALID_ROOM_ID_TYPE_MISMATCH=5019]="INVALID_ROOM_ID_TYPE_MISMATCH",R[R.INVALID_ROOM_ID_DUPLICATE=5020]="INVALID_ROOM_ID_DUPLICATE",R[R.INVALID_OPERATION=5100]="INVALID_OPERATION",R[R.INVALID_OPERATION_NOT_JOINED=5101]="INVALID_OPERATION_NOT_JOINED",R[R.INVALID_OPERATION_REMOTE_USER_NOT_EXIST=5102]="INVALID_OPERATION_REMOTE_USER_NOT_EXIST",R[R.INVALID_OPERATION_STREAM_TYPE_NOT_EXIST=5103]="INVALID_OPERATION_STREAM_TYPE_NOT_EXIST",R[R.INVALID_OPERATION_REPEAT_CALL=5104]="INVALID_OPERATION_REPEAT_CALL",R[R.INVALID_OPERATION_NEED_VIDEO=5105]="INVALID_OPERATION_NEED_VIDEO",R[R.INVALID_OPERATION_NEED_AUDIO=5106]="INVALID_OPERATION_NEED_AUDIO",R[R.INVALID_ROLE_AUDIENCE=5107]="INVALID_ROLE_AUDIENCE",R[R.INVALID_NOT_ENABLE_SEI=5108]="INVALID_NOT_ENABLE_SEI",R[R.INVALID_NEED_CALL_PUBLISHED=5109]="INVALID_NEED_CALL_PUBLISHED",R[R.ENV_NOT_SUPPORTED=5200]="ENV_NOT_SUPPORTED",R[R.NOT_SUPPORTED_HTTP=5201]="NOT_SUPPORTED_HTTP",R[R.NOT_SUPPORTED_WEBRTC=5202]="NOT_SUPPORTED_WEBRTC",R[R.NOT_SUPPORTED_H264_ENCODE=5203]="NOT_SUPPORTED_H264_ENCODE",R[R.NOT_SUPPORTED_H264_DECODE=5204]="NOT_SUPPORTED_H264_DECODE",R[R.NOT_SUPPORTED_SCREEN_SHARE=5205]="NOT_SUPPORTED_SCREEN_SHARE",R[R.NOT_SUPPORTED_SMALL_VIDEO=5206]="NOT_SUPPORTED_SMALL_VIDEO",R[R.NOT_SUPPORTED_SEI=5207]="NOT_SUPPORTED_SEI",R[R.NOT_SUPPORTED_WEBGL=5208]="NOT_SUPPORTED_WEBGL",R[R.NOT_SUPPORTED_CHROME_VERSION=5209]="NOT_SUPPORTED_CHROME_VERSION",R[R.NOT_SUPPORTED_PLUGIN=5210]="NOT_SUPPORTED_PLUGIN",R[R.DEVICE_ERROR=5300]="DEVICE_ERROR",R[R.DEVICE_NOT_FOUND_ERROR=5301]="DEVICE_NOT_FOUND_ERROR",R[R.DEVICE_NOT_ALLOWED_ERROR=5302]="DEVICE_NOT_ALLOWED_ERROR",R[R.DEVICE_NOT_READABLE_ERROR=5303]="DEVICE_NOT_READABLE_ERROR",R[R.DEVICE_OVERCONSTRAINED_ERROR=5304]="DEVICE_OVERCONSTRAINED_ERROR",R[R.DEVICE_INVALID_STATE_ERROR=5305]="DEVICE_INVALID_STATE_ERROR",R[R.DEVICE_SECURITY_ERROR=5306]="DEVICE_SECURITY_ERROR",R[R.DEVICE_ABORT_ERROR=5307]="DEVICE_ABORT_ERROR",R[R.CAMERA_RECOVER_FAILED=5308]="CAMERA_RECOVER_FAILED",R[R.MICROPHONE_RECOVER_FAILED=5309]="MICROPHONE_RECOVER_FAILED",R[R.SERVER_ERROR=5400]="SERVER_ERROR",R[R.NEED_TO_BUY=5401]="NEED_TO_BUY",R[R.ACCOUNT_NO_MONEY=-100013]="ACCOUNT_NO_MONEY",R[R.OPERATION_FAILED=5500]="OPERATION_FAILED",R[R.FIREWALL_RESTRICTION=5501]="FIREWALL_RESTRICTION",R[R.REJOIN_FAILED=5502]="REJOIN_FAILED",R[R.EVENT_HANDLER_ERROR=5503]="EVENT_HANDLER_ERROR",R[R.VIDEO_CONTEXT_ERROR=5504]="VIDEO_CONTEXT_ERROR",R[R.VIDEO_DECODE_ERROR=5505]="VIDEO_DECODE_ERROR",R[R.OPERATION_ABORT=5998]="OPERATION_ABORT",R[R.UNKNOWN_ERROR=5999]="UNKNOWN_ERROR",R))(Nt||{});function Wm({code:o,params:i,enableDocLink:e=!1}){let t="",r,s=Nt[o];try{r=Gm[s]}catch(n){r=Gm.UNKNOWN_ERROR}return ne(r)?t=r(i):ee(r)&&(t=r),i.fnName&&!t.includes(i.fnName)&&(t[t.length-1]!=="."&&(t+="."),t+=` thrown from ${i.fnName}()`),e&&(t+=" doc:"),t}var Gm=L(N({},Ue),{INVALID_PARAMETER({fnName:o}){return`the parameters of the '${o}' you called does not meet the requirements, please check the API documentation.`},INVALID_PARAMETER_REQUIRED({key:o,rule:i,fnName:e,value:t}){return`'${o||i.name}' is a required param when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_TYPE({key:o,rule:i,fnName:e,value:t}){let r=`${o||i.name}`,s="";return Array.isArray(i.type)?s=i.type.join("|"):s=i.type,`'${r}' must be type of ${s} when calling ${e}(), received type: ${Re(t)}.`},INVALID_PARAMETER_EMPTY({key:o,rule:i,fnName:e,value:t}){return`'${o||i.name}' cannot be '${t}' when calling ${e}().`},INVALID_PARAMETER_INSTANCE({key:o,rule:i,fnName:e,value:t}){let r=`${o||i.name}`,s=`${i.instanceOf.name||i.instanceOf}`;return`'${r}' must be instanceof ${s} when calling ${e}(), received type: ${Re(t)}.`},INVALID_PARAMETER_RANGE({key:o,rule:i,fnName:e,value:t}){return`'${o||i.name}' must be one of ${i.values.join("|")} when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_LESS_THAN_ZERO({key:o,rule:i,fnName:e}){return`'${o||i.name}' cannot be less than 0 when calling ${e}().`},INVALID_PARAMETER_MIN({key:o,rule:i,value:e}){return`the min value of ${o||i.name} is ${i.min}, received: ${e}.`},INVALID_PARAMETER_MAX({key:o,rule:i,value:e}){return`the max value of ${o||i.name} is ${i.max}, received: ${e}.`},INVALID_ELEMENT_ID({key:o,fnName:i}){return`'${o}' is not found in the document object when calling ${i}().`},INVALID_ELEMENT_ID_TYPE({key:o,fnName:i,type:e}){return`the element corresponding to '${o}' must be instanceof HTMLElement when calling ${i}(), received: ${e}.`},INVALID_STREAM_ID({key:o}){return`'${o}' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.`},INVALID_ROOM_ID_STRING({key:o}){return`'${o}' must be a valid string.`},INVALID_ROOM_ID_INTEGER({key:o}){return`'${o}' must be an integer between [1, 4294967294].`},INVALID_ROOM_ID_INTEGER_STRING({key:o}){return`'${o}' must be an integer but go a string, use 'parseInt' to convert it or use 'strRoomId' instead.`},INVALID_ROOM_ID_REQUIRED(){return"at least one of 'roomId'(between [1, 4294967294]) and 'strRoomId'(not empty) is required."},INVALID_ROOM_ID_TYPE_MISMATCH({key:o}){return`The type of target roomId must match the current roomId. Current room is using '${o}', but received '${o==="strRoomId"?"roomId":"strRoomId"}'.`},INVALID_ROOM_ID_DUPLICATE({key:o}){return`the target '${o}' must not be the same as the current '${o}'.`},INVALID_STREAM_TYPE:({fnName:o})=>`'streamType' is required when 'userId' is not '*', calling ${o}()`,INVALID_IMAGE_URL:"The 'src' param must be filled in when the background type is image.",INVALID_OPERATION({fnName:o}){return`the API '${o}' you called does not meet the requirements, please check the API documentation.`},INVALID_OPERATION_NOT_JOINED({fnName:o}){return`cannot ${o} because you are not enter room yet.`},INVALID_OPERATION_REMOTE_USER_NOT_EXIST({fnName:o,value:i}){return`cannot ${o} because remote user(userId: ${i.userId}) does not publishing stream.`},INVALID_OPERATION_STREAM_TYPE_NOT_EXIST({fnName:o,value:i}){return`cannot ${o} because remote user(userId: ${i.userId}) does not publishing ${i.streamType} video.`},INVALID_OPERATION_REPEAT_CALL({fnName:o}){return`you are already ${o}(), cannot repeated call '${o}'.`},INVALID_OPERATION_NEED_VIDEO({fnName:o}){return`cannot call '${o}' because the camera is not turned on.`},INVALID_OPERATION_NEED_AUDIO({fnName:o}){return`cannot call '${o}' because the microphone or screen share is not turned on.`},INVALID_BUFFER_EMPTY:({key:o})=>`the buffer size of paramerter '${o}' cannot be empty`,INVALID_BUFFER_OVERSIZE:()=>"buffer size is over 1000 Bytes",INVALID_ROLE_AUDIENCE:()=>"role: 'audience' cannot call this api.",INVALID_NOT_ENABLE_SEI:()=>"you need to enable SEI in TRTC.create({ enableSEI: true })",INVALID_NEED_CALL_PUBLISHED:({fnName:o})=>`you need to call ${o}() after publish stream.`,ENV_NOT_SUPPORTED({fnName:o}){return`the current browser does not support the capability of the function '${o}' you are calling, please check the API documentation.`},NOT_SUPPORTED_WEBRTC:"the current browser does not support WebRTC capability, please check the SDK documentation.",NOT_SUPPORTED_H264_ENCODE:"this browser does not support H264 encode.",NOT_SUPPORTED_H264_DECODE:"this browser does not support H264 decode.",NOT_SUPPORTED_SCREEN_SHARE:"this browser does not support screen share, please check the browser version.",NOT_SUPPORTED_SMALL_VIDEO:"this browser does not support small video, please check the browser version.",NOT_SUPPORTED_SEI:"this browser does not support SEI, please check the browser version.",NOT_SUPPORTED_WEBGL:"this browser does not support WebGL, please check the browser version.",NOT_SUPPORTED_CHROME_VERSION({fnName:o}){return`cannot call ${o} because the browser version is too low, please upgrade to the latest version`},DEVICE_ERROR({fnName:o,error:i}){return`'${o}' got device exception${i?`, error: ${i.toString()}.`:"."}`},DEVICE_NOT_FOUND_ERROR({fnName:o,deviceType:i=Xr(o),error:e}){return`NotFoundError, no ${i} detected, please check your device and the configuration on '${o}'${e?`, error: ${e.toString()}.`:"."}`},DEVICE_NOT_ALLOWED_ERROR({fnName:o,deviceType:i=Xr(o),error:e}){return`NotAllowedError, you have disabled ${i} access, please allow the current application to use the ${i}${e?`, error: ${e.toString()}.`:"."}`},DEVICE_NOT_READABLE_ERROR({fnName:o,deviceType:i=Xr(o),error:e}){return`NotReadableError, the ${i} maybe in use by another APP, please check if the device is pre-occupied by another APP.`},DEVICE_OVERCONSTRAINED_ERROR({fnName:o,deviceType:i=Xr(o),error:e}){return`OverconstrainedError, the device ID is incorrect, please check whether the device ID passed in is correct${e?`, error: ${e.toString()}.`:"."}`},DEVICE_INVALID_STATE_ERROR({fnName:o,deviceType:i=Xr(o),error:e}){return`InvalidStateError, after the user clicks and interacts with the page, turn on the ${i}${e?`, error: ${e.toString()}.`:"."}`},DEVICE_SECURITY_ERROR({fnName:o,deviceType:i=Xr(o),error:e}){return`SecurityError, check whether the system security policy restricts the use of the ${i}, and it is recommended to turn on the ${i} after the user interacts with the page${e?`, error: ${e.toString()}.`:"."}`},DEVICE_ABORT_ERROR({fnName:o,deviceType:i=Xr(o),error:e}){return`AbortError, an unknown exception in the system makes the device unusable, recommended to change the device or browser and re-check whether the device is normal${e?` error: ${e.toString()}.`:"."}`},CAMERA_RECOVER_FAILED({error:o}){return`camera recover capture failed ${(o==null?void 0:o.name)||""}: ${(o==null?void 0:o.originMessage)||(o==null?void 0:o.message)}`},MICROPHONE_RECOVER_FAILED({error:o}){return`microphone recover capture failed ${(o==null?void 0:o.name)||""}: ${(o==null?void 0:o.originMessage)||(o==null?void 0:o.message)}`},OPERATION_FAILED({fnName:o,error:i}){return`'${o}' failed, reason: ${i==null?void 0:i.toString()}`},FIREWALL_RESTRICTION(){return"media connection failure due to firewall restrictions, please try to change your network."},EVENT_HANDLER_ERROR({eventName:o}){return`an error was caught on trtc.on('${o}', handler), please check your code on 'handler'.`},VIDEO_CONTEXT_ERROR({reason:o,error:i}){return`video context error ${o} ${(i==null?void 0:i.name)||""} ${(i==null?void 0:i.message)||""}`},SERVER_ERROR({fnName:o,error:i}){return`'${o}' got server error: ${i==null?void 0:i.toString()}, please check the SDK documentation.`},NEED_TO_BUY({value:o,url:i}){return`You need to buy packages for ${o}. Refer to: ${i}`},ACCOUNT_NO_MONEY:({fnParams:o})=>`your TRTC account run out of credit, please recharge.${o.sdkAppId?` SDKAppId: ${o.sdkAppId}`:""}`,OPERATION_ABORT({fnName:o}){return`'${o}' abort`},UNKNOWN_ERROR({fnName:o,error:i}){return`'${o}' throw unknown exception${i?`, error: ${i.toString()}.`:"."}`}});function Xr(o){if(!o)return"camera";let i=o.toLowerCase();return i.includes("screen")?"screen share":i.includes("audio")?"microphone":"camera"}var tu=class o extends Error{constructor({code:e,extraCode:t,message:r="",messageParams:s,fnName:n="",originError:a}){var l;let c;r?c=r:c=Wm({code:e===B.SERVER_ERROR?e:t||e,params:N({fnName:n,error:a},s)});super(c);d(this,"name","RtcError");d(this,"code");d(this,"extraCode");d(this,"functionName");d(this,"message");d(this,"handler");d(this,"originError");this.name=Nt[e],this.code=e,this.extraCode=t,this.functionName=n,this.originError=a,this.message=c,this.extraCode===5302&&((l=this.originError)!=null&&l.message.includes("system"))&&(this.handler=()=>{let h={startLocalVideo:"Camera",startLocalAudio:"Microphone",startScreenShare:"ScreenCapture"},u={startLocalVideo:"webcam",startLocalAudio:"microphone"},m=document.createElement("a");Dr?m.href=`ms-settings:privacy-${u[this.functionName]}`:Vt&&(m.href=`x-apple.systempreferences:com.apple.preference.security?Privacy_${h[this.functionName]}`),m.href.length>0&&m.click()})}static convertFrom(e,t,r){let s=e;if(e instanceof y){let{stack:n}=e,a={code:B.UNKNOWN_ERROR,fnName:t,originError:e};switch(e.getCode()){case I.INVALID_PARAMETER:a.code=B.INVALID_PARAMETER,a.message=e.message;break;case I.INVALID_OPERATION:a.code=B.INVALID_OPERATION;break;case I.NOT_SUPPORTED:case I.NOT_SUPPORTED_H264:a.code=B.ENV_NOT_SUPPORTED,e.getCode()===I.NOT_SUPPORTED_H264&&(a.extraCode=e.message.includes(Ue.NOT_SUPPORTED_H264ENCODE)?5203:5204);break;case I.JOIN_ROOM_FAILED:a.messageParams={fnParams:r};case I.SERVER_TIMEOUT:case I.SWITCH_ROLE_FAILED:case I.SWITCH_ROOM_FAILED:a.code=B.SERVER_ERROR,a.extraCode=e.getExtraCode();break;case I.API_CALL_ABORTED:a.code=B.OPERATION_ABORT;break;case I.DEVICE_NOT_FOUND:case I.DEVICE_AUTO_RECOVER_FAILED:case I.INITIALIZE_FAILED:a.code=5300,e.name&&(a.extraCode=kT(e.name));break;case I.UNKNOWN:break;default:a.code=B.OPERATION_FAILED}s=new o(a),n&&(s.stack+=n.substr(n.indexOf(`
|
|
53
|
-
`)))}else{if(e instanceof o)return e;s=new o({code:B.UNKNOWN_ERROR,fnName:t,originError:e})}return s}};function kT(o){let i;switch(o){case"NotFoundError":i=5301;break;case"NotAllowedError":i=5302;break;case"NotReadableError":i=5303;break;case"OverconstrainedError":i=5304;break;case"InvalidStateError":i=5305;break;case"SecurityError":i=5306;break;case"AbortError":i=5307;break;default:i=5300}return i}var w=tu;function hr(o){return o==="sub"?"auxiliary":o==="auxiliary"?"sub":"main"}function on(o){return o===bt.QOS_PREFERENCE_CLEAR?"detail":o===bt.QOS_PREFERENCE_SMOOTH?"motion":""}function Go(o,i){let e=i?Wc:er;return ad(o)?N(N({},e),o):Ot[o]?Ot[o]:e}var Jm={type:"object",properties:{cameraId:{type:"string"},useFrontCamera:{type:"boolean"},fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:["string","boolean"],values:[!0,!1,"view","publish","both"]},small:{type:["string","object","boolean"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},videoTrack:{instanceOf:MediaStreamTrack}}},jm={type:"object",properties:{systemAudio:{type:"boolean"},fillMode:{type:"string",values:["contain","cover","fill"]},profile:{type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},videoTrack:{instanceOf:MediaStreamTrack},audioTrack:{instanceOf:MediaStreamTrack}}},Wo={type:["string",HTMLElement,null,"array"],arrayItem:{instanceOf:HTMLElement},validate(o,i,e){if(ee(o)&&!document.getElementById(o))throw new w({code:B.INVALID_PARAMETER,extraCode:5009,fnName:e,messageParams:{key:i}})}},qm={name:"userId",required:!0,type:"string"},Xm={type:"object",properties:{microphoneId:{type:"string"},audioTrack:{instanceOf:MediaStreamTrack},captureVolume:{type:"number",min:0},earMonitorVolume:{type:"number",min:0,max:100},profile:{values:[bt.AUDIO_PROFILE_STANDARD,bt.AUDIO_PROFILE_STANDARD_STEREO,bt.AUDIO_PROFILE_HIGH,bt.AUDIO_PROFILE_HIGH_STEREO]},echoCancellation:{type:"boolean"},autoGainControl:{type:"boolean"},noiseSuppression:{type:"boolean"}}};function Jo(o,i){if(!o)throw new w({code:B.INVALID_OPERATION,extraCode:5101,fnName:i})}function zm(o,i,e){if(!o)throw new w({code:B.INVALID_OPERATION,extraCode:5102,fnName:i,messageParams:{value:e}})}function Qm(o,i,e){if(!(/^[1-9]\d*$/.test(String(o))&&o<4294967295))throw new w({code:B.INVALID_PARAMETER,extraCode:5013,fnName:i,messageParams:{key:e}})}function Ym(o,i,e){if(!/^[A-Za-z\d\s!#$%&()+\-:;<=.>?@[\]^_{}|~,]{1,64}$/.test(o))throw new w({code:B.INVALID_PARAMETER,extraCode:5012,fnName:i,messageParams:{key:e}})}var WO={type:"number",notLessThanZero:!0},xT=(o,i)=>o.width*o.height>=i.width*i.height&&o.frameRate>=i.frameRate&&o.bitrate>=i.bitrate;function Zm(o){var t;if(!((t=o==null?void 0:o.option)!=null&&t.small))return;if(!_a()){C.warn("small stream is not supported"),delete o.option.small;return}let i=Go(o.option.profile),e=Go(o.option.small,!0);if(!xT(i,e)){C.warn(`small stream profile must be less than big stream profile. Big: ${JSON.stringify(i)}, Small: ${JSON.stringify(e)}`),delete o.option.small;return}}var PT={create:[{name:"RoomConfig",instanceOf:Function},{name:"CreateConfig",type:"object",properties:{plugins:{type:"array",arrayItem:{instanceOf:Function}}}}],enterRoom:{name:"EnterRoomConfig",type:"object",required:!0,validate(o,i,e){if(this._room.isJoined)throw new w({code:B.INVALID_OPERATION,extraCode:5104,fnName:e});if(o.roomId){if(ee(o.roomId))throw new w({code:B.INVALID_PARAMETER,extraCode:5016,fnName:e,messageParams:{key:i}});Qm(o.roomId,e,i)}else if(o.strRoomId)Ym(o.strRoomId,e,i);else throw new w({code:B.INVALID_PARAMETER,extraCode:5015,fnName:e})},properties:{sdkAppId:{required:!0,type:"number",allowEmpty:!1},userId:{required:!0,type:"string",allowEmpty:!1},userSig:{required:!0,type:"string",allowEmpty:!1},scene:{type:"string",values:["live","rtc"]},role:{type:"string",values:["audience","anchor"]},roomId:{type:["string","number"]},strRoomId:{type:"string"},proxy:{type:["object","string"],properties:{websocketProxy:{type:"string"},turnServer:{type:["object","array"],properties:{url:{required:!0,type:"string"},username:{type:"string"},credential:{type:"string"},credentialType:{type:"string",values:["password"]}}},loggerProxy:{type:"string"},webtransportProxy:{type:"string"}}},enableAutoPlayDialog:{type:"boolean"},userDefineRecordId:{type:"string"},latencyLevel:{type:"number"},playoutDelay:{type:"object",properties:{min:{type:"number",min:0,max:1e3},max:{type:"number",min:0,max:1e4}}}}},startLocalVideo:{name:"LocalVideoConfig",type:"object",properties:{view:Wo,mute:{type:["boolean","string"]},publish:{type:"boolean"},capture:{required:!1,type:"boolean"},option:Jm},validate(o){var i,e;if(!((i=o==null?void 0:o.option)!=null&&i.videoTrack)&&wi())throw new w({code:B.ENV_NOT_SUPPORTED,extraCode:5201});(e=o==null?void 0:o.option)!=null&&e.small&&Zm(o)}},updateLocalVideo:{name:"updateLocalVideoConfig",type:"object",required:!0,properties:{view:L(N({},Wo),{required:!1}),publish:{type:"boolean"},capture:{required:!1,type:"boolean"},mute:{type:["boolean","string"]},option:Jm},validate(o){var i;(i=o==null?void 0:o.option)!=null&&i.small&&Zm(o)}},startLocalAudio:{name:"LocalAudioConfig",type:"object",properties:{publish:{type:"boolean"},option:Xm},validate(o){var i;if(!((i=o==null?void 0:o.option)!=null&&i.audioTrack)&&wi())throw new w({code:B.ENV_NOT_SUPPORTED,extraCode:5201})}},updateLocalAudio:{name:"updateLocalAudioConfig",type:"object",required:!0,properties:{publish:{type:"boolean"},mute:{type:"boolean"},option:Xm}},startScreenShare:{name:"ScreenShareConfig",type:"object",properties:{view:Wo,publish:{type:"boolean"},option:jm},validate(o,i,e,t,r){var s;if(!((s=o==null?void 0:o.option)!=null&&s.videoTrack)){if(wi())throw new w({code:B.ENV_NOT_SUPPORTED,extraCode:5201});if(!xs())throw new w({code:B.ENV_NOT_SUPPORTED,fnName:e,extraCode:5205})}}},updateScreenShare:{name:"updateScreenShareConfig",type:"object",required:!0,properties:{view:Wo,publish:{type:"boolean"},option:jm}},muteRemoteAudio:[qm,{name:"mute",required:!0,type:"boolean"}],setRemoteAudioVolume:[qm,{name:"volume",required:!0,type:"number",min:0}],startRemoteVideo:{name:"startRemoteVideoConfig",type:"object",required:!0,properties:{view:Wo,userId:{type:"string",required:!0},streamType:{values:["main","sub"],required:!0},option:{type:"object",properties:{fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:"boolean"}}}},validate(o,i,e){Jo(this._room.isJoined,e);let t=this._room.remotePublishedUserMap.get(o.userId);if(zm(!!t,e,o),t&&(o.streamType==="main"&&!t.muteState.videoAvailable||o.streamType==="sub"&&!t.muteState.hasAuxiliary))throw new w({code:B.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:o}})}},updateRemoteVideo:{name:"updateRemoteVideoConfig",type:"object",required:!0,properties:{view:L(N({},Wo),{required:!1}),userId:{type:"string",required:!0},streamType:{values:["main","sub"],required:!0},option:{type:"object",properties:{fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:"boolean"}}}},validate(o,i,e){Jo(this._room.isJoined,e);let t=this._room.remotePublishedUserMap.get(o.userId);if(zm(!!t,e,o),t&&(o.streamType==="main"&&!t.muteState.videoAvailable||o.streamType==="sub"&&!t.muteState.hasAuxiliary))throw new w({code:B.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:o}})}},stopRemoteVideo:{name:"stopRemoteVideoConfig",type:"object",required:!0,properties:{userId:{type:"string",required:!0},streamType:{values:["main","sub"]}},validate(o,i,e){if(o.userId!=="*"&&T(o.streamType))throw new w({code:B.INVALID_PARAMETER,extraCode:5014,fnName:e})}},switchRole:{name:"role",required:!0,values:["anchor","audience"],validate(o,i,e){Jo(this._room.isJoining||this._room.isJoined,e)}},enableAudioVolumeEvaluation:[{name:"interval",type:"number"},{name:"enableInBackground",type:"boolean"}],sendSEIMessage:[{name:"buffer",required:!0,instanceOf:ArrayBuffer,validate(o,i,e,t){if(!ws)throw new w({code:B.ENV_NOT_SUPPORTED,fnName:e,extraCode:5207});if(!this._room.enableSEI)throw new w({code:B.INVALID_OPERATION,fnName:e,extraCode:5108});if(o.byteLength>1e3)throw new w({code:B.INVALID_PARAMETER,extraCode:5018,fnName:e});if(o.byteLength===0)throw new w({code:B.INVALID_PARAMETER,extraCode:5017,messageParams:{key:i},fnName:e});Jo(this._room.isJoined,e)}},{name:"options",type:"object",properties:{seiPayloadType:{type:"number",values:[5,243]},toSubStream:{type:"boolean",validate(o,i,e){if(!o&&!this._room.isMainStreamPublished||o&&!this._room.isAuxStreamPublished)throw new w({code:B.INVALID_OPERATION,extraCode:5109,messageParams:{key:i},fnName:e})}}}}],sendCustomMessage:{name:"message",required:!0,type:"object",properties:{cmdId:{type:"number",required:!0,min:1,max:10},data:{instanceOf:ArrayBuffer,required:!0,validate(o,i,e,t){if(o.byteLength>1e3)throw new w({code:B.INVALID_PARAMETER,extraCode:5018,fnName:e});if(o.byteLength===0)throw new w({code:B.INVALID_PARAMETER,extraCode:5017,fnName:e,messageParams:{key:i}})}}},validate(o,i,e){if(Jo(this._room.isJoined,e),this._room.scene==="live"&&this._room.role==="audience")throw new w({code:B.INVALID_OPERATION,extraCode:5107,fnName:e,messageParams:{key:i}})}},switchRoom:{name:"switchRoomConfig",type:"object",required:!0,validate(o,i,e){if(Jo(this._room.isJoined,e),this._room.useStringRoomId&&o.strRoomId===this._room.roomId||!this._room.useStringRoomId&&o.roomId===Number(this._room.roomId))throw new w({code:B.INVALID_PARAMETER,extraCode:5020,fnName:e,messageParams:{key:this._room.useStringRoomId?"strRoomId":"roomId"}});if(o.roomId&&this._room.useStringRoomId||!o.roomId&&o.strRoomId&&!this._room.useStringRoomId)throw new w({code:B.INVALID_PARAMETER,extraCode:5019,fnName:e,messageParams:{key:this._room.useStringRoomId?"strRoomId":"roomId"}});if(o.roomId)Qm(o.roomId,e,i);else if(o.strRoomId)Ym(o.strRoomId,e,i);else throw new w({code:B.INVALID_PARAMETER,extraCode:5015,fnName:e})},properties:{roomId:{type:"number"},strRoomId:{type:"string"},privateMapKey:{type:"string"},userSig:{type:"string",required:!0},autoSubscribeCount:{type:"number",min:0,max:50}}}},we={TRTC:PT};var ze=class extends Error{};function LT(o,i){let e=Rr(o);for(let t=0;t<i.length;t++)At(e[t],i[t]);return e}function wT(o){this._resolve=Promise.resolve(o)}function VT(o){this._reject=Promise.reject(o)}var mr=class mr{constructor(i,e){this.instance=i;this.group=e;d(this,"started",!1);d(this,"ops",[]);d(this,"startSame",()=>!0);d(this,"mergeUpdate",LT);let t=mr.instances.get(i);t?t.set(e,this):mr.instances.set(i,new Map([[e,this]]))}static get(i,e){if(!e)return;let t=mr.instances.get(i);return t&&t.get(e)||new mr(i,e)}static gets(i,e){let t=mr.instances.get(i),r=[];return t&&t.forEach((s,n)=>{e.test(n)&&r.push(s)}),r}action(i,e,t){let r=a=>{var c;return i===0?this.started=!0:i===3&&(this.started=!1),this.ops.shift(),(c=this.currentOp)==null||c.action(),a},s=a=>{var c,l;throw this.ops.shift(),i===0&&((c=this.currentOp)==null?void 0:c.type)===2&&this.ops.shift().reject(new ze("start failed")),(l=this.currentOp)==null||l.action(),a},n={type:i,action:()=>e(...n.args).then(r,s),args:t,resolve:wT,reject:VT};try{switch(this.state){case 1:if(i===0)throw new ze("already started");break;case 4:if(i===2)throw new ze("not started");break;default:return this.cacheOp(n)}}catch(a){return Promise.reject(a)}return this.ops.push(n),n.promise=e(...n.args).then(r,s)}cacheOp(i){if(this.ops.length===1)switch(this.state){case 0:case 2:if(i.type===0)throw new ze("already start");break;case 3:switch(i.type){case 2:throw new ze("update not allowed when stopping");case 3:return this.currentOp.promise}break;default:throw new ze("unknown state")}else switch(i.type){case 3:switch(this.lastOpType){case 3:return this.lastOp.promise;default:let t=new ze("keep stop");if(this.ops.slice(1).forEach(r=>r.reject(t)),this.ops=this.ops.slice(0,1),this.state===3)return this.currentOp.promise}break;case 2:switch(this.lastOpType){case 2:return this.lastOp.args=this.mergeUpdate(this.lastOp.args,i.args),this.lastOp.promise;case 3:throw new ze("update not allowed after stop")}break;case 0:switch(this.lastOpType){case 2:throw new ze("start not allowed after update");case 0:throw new ze("duplicate start");case 3:if(this.startSame(this.currentOp.args,i.args))throw this.ops.pop().reject(new ze("keep start")),new ze("already start")}}i.promise=new Promise((t,r)=>{i._resolve?i._resolve.then(t):i.resolve=t,i._reject?i._reject.catch(r):i.reject=r});let{action:e}=i;return i.action=()=>e().then(i.resolve,i.reject),this.ops.push(i),i.promise}get lastOp(){return this.ops[this.ops.length-1]}get lastOpType(){return this.lastOp.type}get currentOp(){return this.ops[0]}get state(){return this.currentOp?this.currentOp.type:this.started?1:4}};d(mr,"instances",new WeakMap);var ji=mr;var ic=new WeakMap,rc=(o,i)=>{if(i instanceof ze){let{stack:e}=i;i=new w({code:B.OPERATION_ABORT,message:`${o} abort: ${i.message}`,fnName:o}),e&&(i.stack+=e.substr(e.indexOf(`
|
|
54
|
-
|
|
55
|
-
|
|
49
|
+
} `;var is=class extends de{constructor(e){super();u(this,"frameRate");u(this,"_canvas");u(this,"log");u(this,"hasAlpha",!1);u(this,"name");u(this,"error");this.name=e.name,this.log=e.logger.createChild({id:`vc-${this.name}`}),this.frameRate=e.frameRate}set width(e){this._canvas&&(this._canvas.width=e)}get width(){var e;return((e=this._canvas)==null?void 0:e.width)||0}set height(e){this._canvas&&(this._canvas.height=e)}get height(){var e;return((e=this._canvas)==null?void 0:e.height)||0}setSize(e,r){this._canvas&&(this._canvas.width=e,this._canvas.height=r)}createVideoTrackSource(e,r){return new Ai(this,e,{logger:this.log,name:r})}createVideoTrackDestination(e){return new en(this,e)}createVideoImageSource(e,r){return new Ca(this,r?Object.assign(r,{logger:this.log,image:e}):{logger:this.log,image:e})}createVideoPlayerSource(e,r){return new Na(this,e,r?Object.assign(r,{logger:this.log}):{logger:this.log})}get available(){return this.state==="created"}disconnect(){this.emit("disconnect")}};u(is,"_ids",0);var vI={alpha:!0,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0,powerPreference:"low-power"},tn=class tn extends is{constructor(){super(...arguments);u(this,"defaultProgam");u(this,"defaultVShader");u(this,"defaultFShader");u(this,"ctx")}create(){if(this._canvas||(this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${is._ids++}`),this.ctx=this._canvas.getContext("webgl2",vI),!this.ctx)throw new ue({code:J.VIDEO_MANAGER_ERROR,extraCode:2,message:"webgl2 not supported"});this.defaultVShader=this.createShader(this.ctx.VERTEX_SHADER,bI),this.defaultFShader=this.createShader(this.ctx.FRAGMENT_SHADER,RI),this.defaultProgam=this.createProgram(this.defaultVShader,this.defaultFShader),this._canvas.addEventListener("webglcontextlost",()=>{this.destroy(new ue({code:J.VIDEO_MANAGER_ERROR,extraCode:4,message:"webgl context lost"}))})}destroy(e){let r="";return e&&(r=e.message,this.error=e,Q.addFailedEvent({key:512702,error:e})),this.disconnect(),this.log.info(`video context destroy${r}`?`: ${r}`:""),this.ctx&&(this.ctx.deleteShader(this.defaultVShader),this.ctx.deleteShader(this.defaultFShader),this.ctx.deleteProgram(this.defaultProgam),delete this.ctx),e}set width(e){var r;(r=this.ctx)==null||r.viewport(0,0,e,this.height),super.width=e}set height(e){var r;(r=this.ctx)==null||r.viewport(0,0,this.width,e),super.height=e}setSize(e,r){var o;(o=this.ctx)==null||o.viewport(0,0,e,r),super.setSize(e,r)}createShader(e,r){let o=this.ctx,s=o.createShader(e);return o.shaderSource(s,r),o.compileShader(s),s}createProgram(e,r){let o=this.ctx,s=o.createProgram();return o.attachShader(s,e),o.attachShader(s,r),o.linkProgram(s),o.getProgramParameter(s,o.LINK_STATUS)||this.log.error(o.getProgramInfoLog(s)),s}};u(tn,"UNAVAILABLE","unavailable"),Z([Qe(de.INIT,"created",{sync:!0,fail(e){this.log.error("video gl context create failed",e.cause),Q.addFailedEvent({key:512700,error:e.cause||e})},success(){this.log.info("video context created use webgl"),Q.addSuccessEvent({key:512700})}})],tn.prototype,"create",1),Z([Qe("created",de.INIT,{ignoreError:!0,sync:!0,success(e){e&&this.emit(tn.UNAVAILABLE,e),this.removeAllListeners()}})],tn.prototype,"destroy",1);var Tt=tn,Ft=class extends is{constructor(){super(...arguments);u(this,"ctx")}create(e){if(this.hasAlpha=e.alpha,this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${is._ids++}`,this.ctx=this._canvas.getContext("2d",{alpha:e.alpha}),!this.ctx)throw new ue({code:J.VIDEO_MANAGER_ERROR,extraCode:2,message:"2d context not supported"});this._canvas.addEventListener("contextlost",()=>{this.log.error("2d context lost")}),this._canvas.addEventListener("contextrestored",()=>{this.log.warn("2d context restored")})}destroy(e){let r="";e&&(r=e.message,this.error=e,Q.addFailedEvent({key:512703,error:e})),this.disconnect(),this.log.info(`video context destroy ${r?`: ${r}`:""}`),delete this.ctx,this._canvas&&(this._canvas.remove(),this._canvas.width=0,this._canvas.height=0,delete this._canvas),this.removeAllListeners(),Q.addSuccessEvent({key:512703})}};Z([Qe(de.INIT,"created",{sync:!0,fail(e){this.log.error("video 2d context create failed",e.cause),Q.addFailedEvent({key:512701,error:e.cause||e})},success(){this.log.info("video context created use 2d"),Q.addSuccessEvent({key:512701})}})],Ft.prototype,"create",1),Z([Qe("created",de.INIT,{ignoreError:!0,sync:!0})],Ft.prototype,"destroy",1);function CI(i){return[15,30,45,60].reduce((e,r)=>Math.abs(r-i)<Math.abs(e-i)?r:e)}var no=class extends Ks{constructor(e,r,o=4){super(e,r,o);u(this,"mediaType",4);u(this,"source");u(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,end2EndDelay:0,jitterBufferDelay:0});this.manager=e.videoManager,this.once("first-video-frame",s=>{this.room.emit("first-video-frame",s)})}play(e,r){return(st(r==null?void 0:r.canvasRender)?r.canvasRender:Jt===17)&&!this.source&&this.useCanvasPlayer(),super.play(e,r).then(()=>{this.player.calculateStat()})}useCanvasPlayer(){if(this.log.info(`useCanvasPlayer(), has element:${!!this.player.element}`),!this.player.element)return;let e=new Ft({frameRate:15,logger:this.log,name:this.userId});e.create({alpha:!1});let r=new rs(e,{name:"remotePlayer",logger:this.log});this.source=e.createVideoPlayerSource(this.player),this.source.connect(r),this.player.setCanvas(e._canvas),fi()||(this.updateCanvasPlayerFPS=this.updateCanvasPlayerFPS.bind(this,e),this.room.on("heartbeat-report",this.updateCanvasPlayerFPS,this))}updateCanvasPlayerFPS(e){let r=this.decodeFPS,o=CI(r);if(!Pe(r)||r<=0){this.log.debug(`updateCanvasPlayerFPS() ignore decoder: ${r} `);return}if(o===e.frameRate){this.log.debug(`updateCanvasPlayerFPS() ignore ClosestFPS ${o} == ${e.frameRate}`);return}this.log.info(`updateCanvasPlayerFPS() decoder: ${r}, closest: ${o}, current: ${e.frameRate}`),e.frameRate=o}get decodeFPS(){var n;let{msg_video_status:e}=((n=this.room.heartbeatReport)==null?void 0:n.msg_down_stream_info.find(c=>c.msg_user_info.str_identifier===this.userId))||{},r=this.mediaType===2?7:this.isSmall?3:2;if(!e||e.length===0)return 0;let o=e.find(c=>c.uint32_video_stream_type===r);return(o==null?void 0:o.uint32_video_dec_fps)||0}stop(){return this.room.off("heartbeat-report",this.updateCanvasPlayerFPS,this),super.stop()}decodeFrame(e){if(!this.manager)return e;for(let r of this.manager.decodePipeline)if(r&&(e=r({frame:e,track:this}),!e))return;return e}get isBig(){return this.mediaType===4}get isSmall(){return this.mediaType===8}changeType(e){this.room.changeType(e,this.user)}get isRemotePublished(){return this.user.muteState.videoAvailable}setMirror(e){e==="publish"||e==="both"||super.setMirror(e)}onDecodeDowngradeStateChanged(e){this.emit("decode-downgrade-state-changed",e)}},jd=class extends no{constructor(e,r){super(e,r,2);u(this,"mediaType",2);u(this,"objectFit","contain")}get isRemotePublished(){return this.user.muteState.hasAuxiliary}};var rn=new Map;V.on(U.JOIN_SUCCESS,({room:i})=>{nt(i.userId,{eventId:32788})});V.on(U.LEAVE_START,({room:i})=>{nt(i.userId,{eventId:32789})});V.on(U.LOCAL_TRACK_PUBLISHED,({track:i})=>{if(i.room){let t=32769;i.mediaType===4?t=32768:i.mediaType===2&&(t=32805),nt(i.room.userId,{eventId:t})}});V.on(U.LOCAL_TRACK_UNPUBLISHED,({track:i})=>{if(i.room){let t=32771;i.mediaType===4?t=32770:i.mediaType===2&&(t=32806),nt(i.room.userId,{eventId:t})}});V.on(U.TRACK_MUTED,({track:i})=>{i.room&&(i.kind===N.AUDIO?nt(i.room.userId,{eventId:i.isRemote?32785:32772,remoteUserId:i.isRemote?i.userId:void 0}):nt(i.room.userId,{eventId:i.isRemote?32784:32773,remoteUserId:i.isRemote?i.userId:void 0}))});V.on(U.TRACK_UNMUTED,({track:i})=>{i.room&&(i.kind===N.AUDIO?nt(i.room.userId,{eventId:i.isRemote?32787:32774,remoteUserId:i.isRemote?i.userId:void 0}):nt(i.room.userId,{eventId:i.isRemote?32786:32775,remoteUserId:i.isRemote?i.userId:void 0}))});V.on(U.REMOTE_TRACK_SUBSCRIBED,({track:i})=>{i.room&&(i.mediaType===1&&nt(i.room.userId,{eventId:32777,remoteUserId:i.userId}),i.mediaType===4&&nt(i.room.userId,{eventId:32776,remoteUserId:i.userId}),i.mediaType===8&&nt(i.room.userId,{eventId:32803,remoteUserId:i.userId}))});V.on(U.REMOTE_TRACK_UNSUBSCRIBED,({track:i})=>{i.room&&(i.mediaType===1&&nt(i.room.userId,{eventId:32779,remoteUserId:i.userId}),i.mediaType===4&&nt(i.room.userId,{eventId:32778,remoteUserId:i.userId}),i.mediaType===8&&nt(i.room.userId,{eventId:32804,remoteUserId:i.userId}))});V.on(U.SWITCH_DEVICE_SUCCESS,({track:i})=>{i.room&&nt(i.room.userId,{eventId:i.kind===N.VIDEO?32780:32781})});V.on(U.LOCAL_TRACK_REPLACED,({track:i})=>{i.room&&nt(i.room.userId,{eventId:i.kind===N.VIDEO?32782:32783})});V.on(U.SIGNAL_CONNECTION_STATE_CHANGED,({room:i,prevState:t,state:e})=>{let r;switch(e){case"CONNECTED":t==="RECONNECTING"?r=32795:r=32791;break;case"DISCONNECTED":t==="RECONNECTING"?r=32796:r=32790;break;case"RECONNECTING":r=32794;break}r&&nt(i.userId,{eventId:r})});V.on(U.PEER_CONNECTION_STATE_CHANGED,({room:i,prevState:t,state:e,remoteUserId:r})=>{let o=!!r,s;switch(e){case"CONNECTED":t==="RECONNECTING"?s=o?32801:32798:s=o?32793:32792;break;case"DISCONNECTED":t==="RECONNECTING"&&(s=o?32802:32799);break;case"RECONNECTING":s=o?32800:32797;break}s&&nt(i.userId,{eventId:s,remoteUserId:r})});V.on(U.VIDEO_CODEC_IMPLEMENTATION_CHANGED,({implementation:i,userId:t,remoteUserId:e,codec:r,isHWCodec:o,prevImplementation:s,streamType:n})=>{let c=o?1:0;s||(c=o?3:2);let l=r==="h264"?0:2,m={eventId:4004,param1:c,param2:l,streamType:n||2};e&&(m.remoteUserId=e,m.eventId=4005),nt(t,m),Q.addEnum({key:e?514701:513701,value:c}),Q.addEnum({key:e?514700:513700,value:l})});V.on(U.LOCAL_TRACK_RECAPTURE,({track:i,error:t})=>{if(i.userId){let e={eventId:2003,param1:0};i.kind===N.AUDIO?(e.streamType=1,t&&(e.param1=2)):(e.streamType=i.streamType==="auxiliary"?7:2,t&&(e.param1=8)),nt(i.userId,e)}});function nt(i,t){let e=Ee(q({},t),{timestamp:Rn()});rn.has(i)?rn.get(i).push(e):rn.set(i,[e])}function Wf(i){if(rn.has(i)){let t=rn.get(i).map(e=>({uint32_event_id:e.eventId,uint64_date:e.timestamp,str_userid:e.remoteUserId,uint32_param1:e.param1,uint32_param2:e.param2,uint32_video_stream_type:e.streamType}));return rn.delete(i),t}return[]}function Gf(...i){return Oe((t,e)=>function(...r){return NI.call(this,i,r,e,this._name),t.apply(this,r)})}function NI(i,t,e,r){try{if(ot(i))for(let o=0;o<i.length;o++)qd.call(this,{rule:i[o],value:t[o],key:i[o].name,fnName:e,className:r});else qd.call(this,{rule:i,value:t[0],key:i.name,fnName:e,className:r})}catch(o){throw $.error(o),o}}function qd({rule:i,value:t,key:e,fnName:r,className:o}){if(P(t)){if(i.required)throw new ue({code:J.INVALID_PARAMETER,message:Be({key:$e.INVALID_PARAMETER_REQUIRED,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})});if(P(i.defaultValue))return;t=i.defaultValue}if(Array.isArray(i.type)){let c=!1;for(let l=0;l<i.type.length;l++)i.type[l]===null&&t===null&&(c=!0),We(i.type[l])&&t instanceof i.type[l]&&(c=!0),we(i.type[l])&&ct(t)===i.type[l].toLowerCase()&&(c=!0);if(!c)throw new ue({code:J.INVALID_PARAMETER,message:Be({key:$e.INVALID_PARAMETER_TYPE,data:{key:e,rule:{type:i.type.map(l=>ko(l)?vs(l):we(l)?l:ct(l))},fnName:r,value:t},link:{className:o,fnName:r}})})}else if(!P(i.type)&&ct(t)!==i.type)throw new ue({code:J.INVALID_PARAMETER,message:Be({key:$e.INVALID_PARAMETER_TYPE,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})});if(i.allowEmpty===!1){let c=Pe(t)&&(t===0||Number.isNaN(t)),l=we(t)&&t.trim()==="";if(c||l)throw new ue({code:J.INVALID_PARAMETER,message:Be({key:$e.INVALID_PARAMETER_EMPTY,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})})}if(i.notLessThanZero&&Pe(t)&&t<0)throw new ue({code:J.INVALID_PARAMETER,message:Be({key:$e.CANNOT_LESS_THAN_ZERO,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})});if(!P(i.min)&&Pe(t)&&t<i.min)throw new ue({code:J.INVALID_PARAMETER,message:Be({key:$e.INVALID_PARAMETER_MIN,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})});if(!P(i.max)&&Pe(t)&&t>i.max)throw new ue({code:J.INVALID_PARAMETER,message:Be({key:$e.INVALID_PARAMETER_MAX,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})});if(we(i.instanceOf)){if(!t||t._name!==i.instanceOf)throw new ue({code:J.INVALID_PARAMETER,message:Be({key:$e.INVALID_PARAMETER_INSTANCE,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})})}else if(We(i.instanceOf)&&!(t instanceof i.instanceOf))throw new ue({code:J.INVALID_PARAMETER,message:Be({key:$e.INVALID_PARAMETER_INSTANCE,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})});if(i.values&&!i.values.includes(t))throw new ue({code:J.INVALID_PARAMETER,message:Be({key:$e.INVALID_PARAMETER_RANGE,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})});let{properties:s}=i;Lt(s)&&er(t)&&Object.keys(s).forEach(c=>{qd.call(this,{rule:s[c],value:t&&t[c],key:`${e}.${c}`,fnName:r,className:o})});let{arrayItem:n}=i;Lt(n)&&ot(t)&&t.forEach((c,l)=>{qd.call(this,{rule:n,value:c,key:`${e}[${l}]`,fnName:r,className:o})}),We(i.validate)&&i.validate.call(this,t,e,r,o,this)}var DI=Wi(Yi(),1);var MI=Object.create,tp=Object.defineProperty,Jf=Object.getOwnPropertyDescriptor,zf=Object.getOwnPropertyNames,wI=Object.getPrototypeOf,OI=Object.prototype.hasOwnProperty,xI=(i,t)=>function(){return t||(0,i[zf(i)[0]])((t={exports:{}}).exports,t),t.exports},PI=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of zf(t))OI.call(i,o)||o===e||tp(i,o,{get:()=>t[o],enumerable:!(r=Jf(t,o))||r.enumerable});return i},kI=(i,t,e)=>(e=i!=null?MI(wI(i)):{},PI(!t&&i&&i.__esModule?e:tp(e,"default",{value:i,enumerable:!0}),i)),yi=(i,t,e,r)=>{for(var o,s=r>1?void 0:r?Jf(t,e):t,n=i.length-1;n>=0;n--)(o=i[n])&&(s=(r?o(t,e,s):o(s))||s);return r&&s&&tp(t,e,s),s},LI=xI({"../node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.js"(i,t){"use strict";var e=Object.prototype.hasOwnProperty,r="~";function o(){}function s(m,E,g){this.fn=m,this.context=E,this.once=g||!1}function n(m,E,g,_,v){if(typeof g!="function")throw new TypeError("The listener must be a function");var L=new s(g,_||m,v),x=r?r+E:E;return m._events[x]?m._events[x].fn?m._events[x]=[m._events[x],L]:m._events[x].push(L):(m._events[x]=L,m._eventsCount++),m}function c(m,E){--m._eventsCount==0?m._events=new o:delete m._events[E]}function l(){this._events=new o,this._eventsCount=0}Object.create&&(o.prototype=Object.create(null),new o().__proto__||(r=!1)),l.prototype.eventNames=function(){var m,E,g=[];if(this._eventsCount===0)return g;for(E in m=this._events)e.call(m,E)&&g.push(r?E.slice(1):E);return Object.getOwnPropertySymbols?g.concat(Object.getOwnPropertySymbols(m)):g},l.prototype.listeners=function(m){var E=r?r+m:m,g=this._events[E];if(!g)return[];if(g.fn)return[g.fn];for(var _=0,v=g.length,L=new Array(v);_<v;_++)L[_]=g[_].fn;return L},l.prototype.listenerCount=function(m){var E=r?r+m:m,g=this._events[E];return g?g.fn?1:g.length:0},l.prototype.emit=function(m,E,g,_,v,L){var x=r?r+m:m;if(!this._events[x])return!1;var M,B,ee=this._events[x],pe=arguments.length;if(ee.fn){switch(ee.once&&this.removeListener(m,ee.fn,void 0,!0),pe){case 1:return ee.fn.call(ee.context),!0;case 2:return ee.fn.call(ee.context,E),!0;case 3:return ee.fn.call(ee.context,E,g),!0;case 4:return ee.fn.call(ee.context,E,g,_),!0;case 5:return ee.fn.call(ee.context,E,g,_,v),!0;case 6:return ee.fn.call(ee.context,E,g,_,v,L),!0}for(B=1,M=new Array(pe-1);B<pe;B++)M[B-1]=arguments[B];ee.fn.apply(ee.context,M)}else{var ae,Xe=ee.length;for(B=0;B<Xe;B++)switch(ee[B].once&&this.removeListener(m,ee[B].fn,void 0,!0),pe){case 1:ee[B].fn.call(ee[B].context);break;case 2:ee[B].fn.call(ee[B].context,E);break;case 3:ee[B].fn.call(ee[B].context,E,g);break;case 4:ee[B].fn.call(ee[B].context,E,g,_);break;default:if(!M)for(ae=1,M=new Array(pe-1);ae<pe;ae++)M[ae-1]=arguments[ae];ee[B].fn.apply(ee[B].context,M)}}return!0},l.prototype.on=function(m,E,g){return n(this,m,E,g,!1)},l.prototype.once=function(m,E,g){return n(this,m,E,g,!0)},l.prototype.removeListener=function(m,E,g,_){var v=r?r+m:m;if(!this._events[v])return this;if(!E)return c(this,v),this;var L=this._events[v];if(L.fn)L.fn!==E||_&&!L.once||g&&L.context!==g||c(this,v);else{for(var x=0,M=[],B=L.length;x<B;x++)(L[x].fn!==E||_&&!L[x].once||g&&L[x].context!==g)&&M.push(L[x]);M.length?this._events[v]=M.length===1?M[0]:M:c(this,v)}return this},l.prototype.removeAllListeners=function(m){var E;return m?(E=r?r+m:m,this._events[E]&&c(this,E)):(this._events=new o,this._eventsCount=0),this},l.prototype.off=l.prototype.removeListener,l.prototype.addListener=l.prototype.on,l.prefixed=r,l.EventEmitter=l,t!==void 0&&(t.exports=l)}}),UI=kI(LI(),1),jf=Symbol("instance"),Zw=Symbol("abortCtrl"),Jd=Symbol("cacheResult"),ep=class{constructor(i,t,e){this.oldState=i,this.newState=t,this.action=e,this.aborted=!1}abort(i){this.aborted=!0,wa.call(i,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},zd=class extends Error{constructor(i,t,e){super(t),this.state=i,this.message=t,this.cause=e}};function VI(i){return typeof i=="object"&&i&&"then"in i}var Ma=new Map;function ao(i,t,e={}){return(r,o,s)=>{let n=e.action||o;if(!e.context){let l=Ma.get(r)||[];Ma.has(r)||Ma.set(r,l),l.push({from:i,to:t,action:n})}let c=s.value;s.value=function(...l){let m=this;if(e.context&&(m=jt.get(typeof e.context=="function"?e.context.call(this,...l):e.context)),m.state===t)return e.sync?m[Jd]:Promise.resolve(m[Jd]);m.state instanceof ep&&m.state.action==e.abortAction&&m.state.abort(m);let E=null;Array.isArray(i)?i.length==0?m.state instanceof ep&&m.state.abort(m):typeof m.state=="string"&&i.includes(m.state)||(E=new zd(m._state,`${m.name} ${n} to ${t} failed: current state ${m._state} not from ${i.join("|")}`)):i!==m.state&&(E=new zd(m._state,`${m.name} ${n} to ${t} failed: current state ${m._state} not from ${i}`));let g=M=>{if(e.fail&&e.fail.call(this,M),e.sync){if(e.ignoreError)return M;throw M}return e.ignoreError?Promise.resolve(M):Promise.reject(M)};if(E)return g(E);let _=m.state,v=new ep(_,t,n);wa.call(m,v);let L=M=>{var B;return m[Jd]=M,v.aborted||(wa.call(m,t),(B=e.success)===null||B===void 0||B.call(this,m[Jd])),M},x=M=>(wa.call(m,_,M),g(M));try{let M=c.apply(this,l);return VI(M)?M.then(L).catch(x):e.sync?L(M):Promise.resolve(L(M))}catch(M){return x(new zd(m._state,`${m.name} ${n} from ${i} to ${t} failed: ${M}`,M instanceof Error?M:new Error(String(M))))}}}}function FI(...i){return(t,e,r)=>{let o=r.value,s=e;r.value=function(...n){if(!i.includes(this.state.toString()))throw new zd(this.state,`${this.name} ${s} failed: current state ${this.state} not in ${i}`);return o.apply(this,n)}}}var $I=typeof window!="undefined"&&window.__AFSM__?(e,r)=>{window.dispatchEvent(new CustomEvent(e,{detail:r}))}:typeof importScripts!="undefined"?(e,r)=>{postMessage({type:e,payload:r})}:()=>{};function wa(i,t){let e=this._state;this._state=i;let r=i.toString();i&&this.emit(r,e),this.emit(jt.STATECHANGED,i,e,t),this.updateDevTools({value:i,old:e,err:t instanceof Error?t.message:String(t)})}var jt=class mr extends UI.default{constructor(t,e,r){super(),this.name=t,this.groupName=e,this._state=mr.INIT,t||(t=Date.now().toString(36)),r?Object.setPrototypeOf(this,r):r=Object.getPrototypeOf(this),e||(this.groupName=this.constructor.name);let o=r[jf];o?this.name=o.name+"-"+o.count++:r[jf]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){let t=Object.getPrototypeOf(this),e=Ma.get(t)||[],r=new Set,o=[],s=[],n=new Set,c=Object.getPrototypeOf(t);Ma.has(c)&&(c.stateDiagram.forEach(m=>r.add(m)),c.allStates.forEach(m=>n.add(m))),e.forEach(({from:m,to:E,action:g})=>{typeof m=="string"?o.push({from:m,to:E,action:g}):m.length?m.forEach(_=>{o.push({from:_,to:E,action:g})}):s.push({to:E,action:g})}),o.forEach(({from:m,to:E,action:g})=>{n.add(m),n.add(E),n.add(g+"ing"),r.add(`${m} --> ${g}ing : ${g}`),r.add(`${g}ing --> ${E} : ${g} \u{1F7E2}`),r.add(`${g}ing --> ${m} : ${g} \u{1F534}`)}),s.forEach(({to:m,action:E})=>{r.add(`${E}ing --> ${m} : ${E} \u{1F7E2}`),n.forEach(g=>{g!==m&&r.add(`${g} --> ${E}ing : ${E}`)})});let l=[...r];return Object.defineProperties(t,{stateDiagram:{value:l},allStates:{value:n}}),l}static get(t){let e;return typeof t=="string"?(e=mr.instances.get(t),e||mr.instances.set(t,e=new mr(t,void 0,Object.create(mr.prototype)))):(e=mr.instances2.get(t),e||mr.instances2.set(t,e=new mr(t.constructor.name,void 0,Object.create(mr.prototype)))),e}static getState(t){var e;return(e=mr.get(t))===null||e===void 0?void 0:e.state}updateDevTools(t={}){$I(mr.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},t))}get state(){return this._state}set state(t){wa.call(this,t)}};jt.STATECHANGED="stateChanged",jt.UPDATEAFSM="updateAFSM",jt.INIT="[*]",jt.ON="on",jt.OFF="off",jt.instances=new Map,jt.instances2=new WeakMap;var on=class extends jt{constructor(){super(...arguments);u(this,"decoder");u(this,"config")}initialize(){return A(this,null,function*(){this.decoder=new VideoDecoder({output:t=>{this.emit("videoFrame",t)},error:t=>{this.close(),this.emit("error",t)}})})}configure(t){this.config=t,this.decoder.configure(Ee(q({},t),{codec:this.getCodec(t)}))}getCodec(t){switch(t.codec){case"hevc":return"hvc1.1.6.L0.12.34.56.78.9A.BC";case"av1":return"av01.0.05M.08";case"avc":return"avc1.420028";default:return t.codec}}decode(t){this.decoder.state==="configured"&&this.decoder.decode(new EncodedVideoChunk(t))}flush(){this.decoder.flush()}reset(){this.decoder.reset()}close(){this.decoder.state!=="closed"&&this.decoder.close()}};function BI(){var i;self.onmessage=t=>{if(t.data.type==="init"){let{canvas:e,wasmScript:r,wasmBinary:o}=t.data,s=e==null?void 0:e.getContext("2d"),n=0,c=0,l={wasmBinary:o,postRun:()=>{i=new l.VideoDecoder({videoInfo(m,E){n=m,c=E,console.log("video info",m,E)},yuvData(m,E){let g=n*c,_=g>>2,v=l.HEAPU32[m>>2],L=l.HEAPU32[1+(m>>2)],x=l.HEAPU32[2+(m>>2)],M=l.HEAPU8.subarray(v,v+g),B=l.HEAPU8.subarray(L,L+_),ee=l.HEAPU8.subarray(x,x+_),pe=new Uint8Array(g+_+_);pe.set(M),pe.set(B,g),pe.set(ee,g+_);let ae=new VideoFrame(pe,{codedWidth:n,codedHeight:c,format:"I420",timestamp:E});e?(s==null||s.drawImage(ae,0,0,e.width,e.height),s==null||s.commit()):self.postMessage({type:"yuvData",videoFrame:ae},[ae])}}),self.postMessage({type:"ready"})}};Function("var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;return "+r)()(l)}else if(t.data.type==="decode"){let{packet:e}=t.data;i==null||i.decode(e.data,e.type=="key",e.timestamp)}else if(t.data.type==="setCodec"){let{codec:e,format:r,description:o}=t.data;i==null||i.setCodec(e,r,o!=null?o:"")}}}yi([ao([jt.INIT,"closed"],"initialized")],on.prototype,"initialize",1),yi([ao("initialized","configured",{sync:!0})],on.prototype,"configure",1),yi([FI("configured")],on.prototype,"decode",1),yi([ao([],jt.INIT,{sync:!0})],on.prototype,"reset",1),yi([ao([],"closed",{ignoreError:!0,sync:!0})],on.prototype,"close",1);var Da=class extends jt{constructor(t,e,r=!1,o,s=!1){super();u(this,"worker");u(this,"decoder");u(this,"config");u(this,"module",{});u(this,"width",0);u(this,"height",0);this.createModule=t,this.wasmBinary=e,this.workerMode=r,this.canvas=o,this.yuvMode=s}initialize(t){return A(this,null,function*(){var r;if(this.workerMode){let o=new RegExp("\\{(.+)\\}","s").exec(BI.toString())[1];this.worker=new Worker(URL.createObjectURL(new Blob([o],{type:"text/javascript"})));let s=(r=this.canvas)==null?void 0:r.transferControlToOffscreen(),n=yield this.wasmBinary;return console.warn("worker mode",n),this.worker.postMessage({type:"init",canvas:s,wasmScript:this.createModule.toString(),wasmBinary:n},s?[s,n]:[n]),new Promise(c=>{this.worker.onmessage=l=>{if(l.data.type==="ready")delete this.wasmBinary,c(),console.warn("worker mode initialize success");else if(l.data.type==="yuvData"){let{videoFrame:m}=l.data;this.emit("videoFrame",m)}}})}let e=this.module;return this.wasmBinary&&(e.wasmBinary=yield this.wasmBinary),e.print=o=>console.log(o),e.printErr=o=>console.log(`[JS] ERROR: ${o}`),e.onAbort=()=>console.log("[JS] FATAL: WASM ABORTED"),new Promise(o=>{e.postRun=s=>{this.decoder=new this.module.VideoDecoder(this),console.log("video soft decoder initialize success"),o()},t&&Object.assign(e,t),this.createModule(e)})})}configure(t){var o,s,n;this.config=t;let e=this.config.codec.startsWith("avc")?"avc":"hevc",r=this.config.description?e=="avc"?"avcc":"hvcc":"annexb";(s=this.decoder)==null||s.setCodec(e,r,(o=this.config.description)!=null?o:""),(n=this.worker)==null||n.postMessage({type:"setCodec",codec:e,format:r,description:this.config.description})}decode(t){var e,r;(e=this.decoder)==null||e.decode(t.data,t.type=="key",t.timestamp),this.state==="configured"&&((r=this.worker)==null||r.postMessage({type:"decode",packet:t}))}flush(){}reset(){this.config=void 0,this.decoder&&this.decoder.clear()}close(){this.removeAllListeners(),this.decoder&&(this.decoder.clear(),this.decoder.delete())}videoInfo(t,e){this.width=t,this.height=e;let r={width:t,height:e};this.emit("videoCodecInfo",r)}yuvData(t,e){if(!this.module)return;let r=this.width*this.height,o=r>>2,s=this.module.HEAPU32[t>>2],n=this.module.HEAPU32[1+(t>>2)],c=this.module.HEAPU32[2+(t>>2)],l=this.module.HEAPU8.subarray(s,s+r),m=this.module.HEAPU8.subarray(n,n+o),E=this.module.HEAPU8.subarray(c,c+o);if(this.yuvMode)return void this.emit("videoFrame",{y:l,u:m,v:E,timestamp:e});let g=new Uint8Array(r+o+o);g.set(l),g.set(m,r),g.set(E,r+o),this.emit("videoFrame",new VideoFrame(g,{codedWidth:this.width,codedHeight:this.height,format:"I420",timestamp:e}))}errorInfo(t){let e={errMsg:t};this.emit("error",e)}};yi([ao([jt.INIT,"closed"],"initialized")],Da.prototype,"initialize",1),yi([ao("initialized","configured",{sync:!0})],Da.prototype,"configure",1),yi([ao([],jt.INIT,{sync:!0})],Da.prototype,"reset",1),yi([ao([],"closed",{sync:!0})],Da.prototype,"close",1);var HI=(()=>{var i=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return function(t={}){var e,r,o=t;o.ready=new Promise((a,d)=>{e=a,r=d});var s,n,c,l=Object.assign({},o),m="./this.program",E=typeof window=="object",g=typeof importScripts=="function",_=(typeof process=="object"&&typeof process.versions=="object"&&process.versions.node,"");(E||g)&&(g?_=self.location.href:typeof document!="undefined"&&document.currentScript&&(_=document.currentScript.src),i&&(_=i),_=_.indexOf("blob:")!==0?_.substr(0,_.replace(/[?#].*/,"").lastIndexOf("/")+1):"",s=a=>{var d=new XMLHttpRequest;return d.open("GET",a,!1),d.send(null),d.responseText},g&&(c=a=>{var d=new XMLHttpRequest;return d.open("GET",a,!1),d.responseType="arraybuffer",d.send(null),new Uint8Array(d.response)}),n=(a,d,p)=>{var h=new XMLHttpRequest;h.open("GET",a,!0),h.responseType="arraybuffer",h.onload=()=>{h.status==200||h.status==0&&h.response?d(h.response):p()},h.onerror=p,h.send(null)});var v,L=o.print||console.log.bind(console),x=o.printErr||console.error.bind(console);Object.assign(o,l),l=null,o.arguments&&o.arguments,o.thisProgram&&(m=o.thisProgram),o.quit&&o.quit,o.wasmBinary&&(v=o.wasmBinary);var M,B;o.noExitRuntime,typeof WebAssembly!="object"&&Mr("no native wasm support detected");var ee,pe,ae,Xe,X,Ue,Eo,ln,mn,pn=!1,Dr=[],us=[],Ni=[],nr=0,te=null,zr=null;function ls(a){nr++,o.monitorRunDependencies&&o.monitorRunDependencies(nr)}function _o(a){if(nr--,o.monitorRunDependencies&&o.monitorRunDependencies(nr),nr==0&&(te!==null&&(clearInterval(te),te=null),zr)){var d=zr;zr=null,d()}}function Mr(a){o.onAbort&&o.onAbort(a),x(a="Aborted("+a+")"),pn=!0,a+=". Build with -sASSERTIONS for more info.";var d=new WebAssembly.RuntimeError(a);throw r(d),d}var Xr,hn,_e,Ze;function Ot(a){return a.startsWith("data:application/octet-stream;base64,")}function j(a){if(a==Xr&&v)return new Uint8Array(v);if(c)return c(a);throw"both async and sync fetching of the wasm failed"}function wr(a,d,p){return function(h){return v||!E&&!g||typeof fetch!="function"?Promise.resolve().then(()=>j(h)):fetch(h,{credentials:"same-origin"}).then(I=>{if(!I.ok)throw"failed to load wasm binary file at '"+h+"'";return I.arrayBuffer()}).catch(()=>j(h))}(a).then(h=>WebAssembly.instantiate(h,d)).then(h=>h).then(p,h=>{x("failed to asynchronously prepare wasm: "+h),Mr(h)})}Ot(Xr="videodec.wasm")||(hn=Xr,Xr=o.locateFile?o.locateFile(hn,_):_+hn);var Di=a=>{for(;a.length>0;)a.shift()(o)};function Mi(a){this.excPtr=a,this.ptr=a-24,this.set_type=function(d){Ue[this.ptr+4>>2]=d},this.get_type=function(){return Ue[this.ptr+4>>2]},this.set_destructor=function(d){Ue[this.ptr+8>>2]=d},this.get_destructor=function(){return Ue[this.ptr+8>>2]},this.set_caught=function(d){d=d?1:0,ee[this.ptr+12|0]=d},this.get_caught=function(){return ee[this.ptr+12|0]!=0},this.set_rethrown=function(d){d=d?1:0,ee[this.ptr+13|0]=d},this.get_rethrown=function(){return ee[this.ptr+13|0]!=0},this.init=function(d,p){this.set_adjusted_ptr(0),this.set_type(d),this.set_destructor(p)},this.set_adjusted_ptr=function(d){Ue[this.ptr+16>>2]=d},this.get_adjusted_ptr=function(){return Ue[this.ptr+16>>2]},this.get_exception_ptr=function(){if(An(this.get_type()))return Ue[this.excPtr>>2];var d=this.get_adjusted_ptr();return d!==0?d:this.excPtr}}var me={isAbs:a=>a.charAt(0)==="/",splitPath:a=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(a).slice(1),normalizeArray:(a,d)=>{for(var p=0,h=a.length-1;h>=0;h--){var I=a[h];I==="."?a.splice(h,1):I===".."?(a.splice(h,1),p++):p&&(a.splice(h,1),p--)}if(d)for(;p;p--)a.unshift("..");return a},normalize:a=>{var d=me.isAbs(a),p=a.substr(-1)==="/";return(a=me.normalizeArray(a.split("/").filter(h=>!!h),!d).join("/"))||d||(a="."),a&&p&&(a+="/"),(d?"/":"")+a},dirname:a=>{var d=me.splitPath(a),p=d[0],h=d[1];return p||h?(h&&(h=h.substr(0,h.length-1)),p+h):"."},basename:a=>{if(a==="/")return"/";var d=(a=(a=me.normalize(a)).replace(/\/$/,"")).lastIndexOf("/");return d===-1?a:a.substr(d+1)},join:function(){var a=Array.prototype.slice.call(arguments);return me.normalize(a.join("/"))},join2:(a,d)=>me.normalize(a+"/"+d)},fn=a=>(fn=(()=>{if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function")return d=>crypto.getRandomValues(d);Mr("initRandomDevice")})())(a),qt={resolve:function(){for(var a="",d=!1,p=arguments.length-1;p>=-1&&!d;p--){var h=p>=0?arguments[p]:f.cwd();if(typeof h!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!h)return"";a=h+"/"+a,d=me.isAbs(h)}return(d?"/":"")+(a=me.normalizeArray(a.split("/").filter(I=>!!I),!d).join("/"))||"."},relative:(a,d)=>{function p(O){for(var Y=0;Y<O.length&&O[Y]==="";Y++);for(var oe=O.length-1;oe>=0&&O[oe]==="";oe--);return Y>oe?[]:O.slice(Y,oe-Y+1)}a=qt.resolve(a).substr(1),d=qt.resolve(d).substr(1);for(var h=p(a.split("/")),I=p(d.split("/")),y=Math.min(h.length,I.length),b=y,R=0;R<y;R++)if(h[R]!==I[R]){b=R;break}var k=[];for(R=b;R<h.length;R++)k.push("..");return(k=k.concat(I.slice(b))).join("/")}},wi=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):void 0,xt=(a,d,p)=>{for(var h=d+p,I=d;a[I]&&!(I>=h);)++I;if(I-d>16&&a.buffer&&wi)return wi.decode(a.subarray(d,I));for(var y="";d<I;){var b=a[d++];if(128&b){var R=63&a[d++];if((224&b)!=192){var k=63&a[d++];if((b=(240&b)==224?(15&b)<<12|R<<6|k:(7&b)<<18|R<<12|k<<6|63&a[d++])<65536)y+=String.fromCharCode(b);else{var O=b-65536;y+=String.fromCharCode(55296|O>>10,56320|1023&O)}}else y+=String.fromCharCode((31&b)<<6|R)}else y+=String.fromCharCode(b)}return y},gn=[],To=a=>{for(var d=0,p=0;p<a.length;++p){var h=a.charCodeAt(p);h<=127?d++:h<=2047?d+=2:h>=55296&&h<=57343?(d+=4,++p):d+=3}return d},Io=(a,d,p,h)=>{if(!(h>0))return 0;for(var I=p,y=p+h-1,b=0;b<a.length;++b){var R=a.charCodeAt(b);if(R>=55296&&R<=57343&&(R=65536+((1023&R)<<10)|1023&a.charCodeAt(++b)),R<=127){if(p>=y)break;d[p++]=R}else if(R<=2047){if(p+1>=y)break;d[p++]=192|R>>6,d[p++]=128|63&R}else if(R<=65535){if(p+2>=y)break;d[p++]=224|R>>12,d[p++]=128|R>>6&63,d[p++]=128|63&R}else{if(p+3>=y)break;d[p++]=240|R>>18,d[p++]=128|R>>12&63,d[p++]=128|R>>6&63,d[p++]=128|63&R}}return d[p]=0,p-I};function ms(a,d,p){var h=p>0?p:To(a)+1,I=new Array(h),y=Io(a,I,0,I.length);return d&&(I.length=y),I}var ce={ttys:[],init:function(){},shutdown:function(){},register:function(a,d){ce.ttys[a]={input:[],output:[],ops:d},f.registerDevice(a,ce.stream_ops)},stream_ops:{open:function(a){var d=ce.ttys[a.node.rdev];if(!d)throw new f.ErrnoError(43);a.tty=d,a.seekable=!1},close:function(a){a.tty.ops.fsync(a.tty)},fsync:function(a){a.tty.ops.fsync(a.tty)},read:function(a,d,p,h,I){if(!a.tty||!a.tty.ops.get_char)throw new f.ErrnoError(60);for(var y=0,b=0;b<h;b++){var R;try{R=a.tty.ops.get_char(a.tty)}catch(k){throw new f.ErrnoError(29)}if(R===void 0&&y===0)throw new f.ErrnoError(6);if(R==null)break;y++,d[p+b]=R}return y&&(a.node.timestamp=Date.now()),y},write:function(a,d,p,h,I){if(!a.tty||!a.tty.ops.put_char)throw new f.ErrnoError(60);try{for(var y=0;y<h;y++)a.tty.ops.put_char(a.tty,d[p+y])}catch(b){throw new f.ErrnoError(29)}return h&&(a.node.timestamp=Date.now()),y}},default_tty_ops:{get_char:function(a){return(()=>{if(!gn.length){var d=null;if(typeof window!="undefined"&&typeof window.prompt=="function"?(d=window.prompt("Input: "))!==null&&(d+=`
|
|
50
|
+
`):typeof readline=="function"&&(d=readline())!==null&&(d+=`
|
|
51
|
+
`),!d)return null;gn=ms(d,!0)}return gn.shift()})()},put_char:function(a,d){d===null||d===10?(L(xt(a.output,0)),a.output=[]):d!=0&&a.output.push(d)},fsync:function(a){a.output&&a.output.length>0&&(L(xt(a.output,0)),a.output=[])},ioctl_tcgets:function(a){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets:function(a,d,p){return 0},ioctl_tiocgwinsz:function(a){return[24,80]}},default_tty1_ops:{put_char:function(a,d){d===null||d===10?(x(xt(a.output,0)),a.output=[]):d!=0&&a.output.push(d)},fsync:function(a){a.output&&a.output.length>0&&(x(xt(a.output,0)),a.output=[])}}},En=a=>{Mr()},ye={ops_table:null,mount:a=>ye.createNode(null,"/",16895,0),createNode(a,d,p,h){if(f.isBlkdev(p)||f.isFIFO(p))throw new f.ErrnoError(63);ye.ops_table||(ye.ops_table={dir:{node:{getattr:ye.node_ops.getattr,setattr:ye.node_ops.setattr,lookup:ye.node_ops.lookup,mknod:ye.node_ops.mknod,rename:ye.node_ops.rename,unlink:ye.node_ops.unlink,rmdir:ye.node_ops.rmdir,readdir:ye.node_ops.readdir,symlink:ye.node_ops.symlink},stream:{llseek:ye.stream_ops.llseek}},file:{node:{getattr:ye.node_ops.getattr,setattr:ye.node_ops.setattr},stream:{llseek:ye.stream_ops.llseek,read:ye.stream_ops.read,write:ye.stream_ops.write,allocate:ye.stream_ops.allocate,mmap:ye.stream_ops.mmap,msync:ye.stream_ops.msync}},link:{node:{getattr:ye.node_ops.getattr,setattr:ye.node_ops.setattr,readlink:ye.node_ops.readlink},stream:{}},chrdev:{node:{getattr:ye.node_ops.getattr,setattr:ye.node_ops.setattr},stream:f.chrdev_stream_ops}});var I=f.createNode(a,d,p,h);return f.isDir(I.mode)?(I.node_ops=ye.ops_table.dir.node,I.stream_ops=ye.ops_table.dir.stream,I.contents={}):f.isFile(I.mode)?(I.node_ops=ye.ops_table.file.node,I.stream_ops=ye.ops_table.file.stream,I.usedBytes=0,I.contents=null):f.isLink(I.mode)?(I.node_ops=ye.ops_table.link.node,I.stream_ops=ye.ops_table.link.stream):f.isChrdev(I.mode)&&(I.node_ops=ye.ops_table.chrdev.node,I.stream_ops=ye.ops_table.chrdev.stream),I.timestamp=Date.now(),a&&(a.contents[d]=I,a.timestamp=I.timestamp),I},getFileDataAsTypedArray:a=>a.contents?a.contents.subarray?a.contents.subarray(0,a.usedBytes):new Uint8Array(a.contents):new Uint8Array(0),expandFileStorage(a,d){var p=a.contents?a.contents.length:0;if(!(p>=d)){d=Math.max(d,p*(p<1048576?2:1.125)>>>0),p!=0&&(d=Math.max(d,256));var h=a.contents;a.contents=new Uint8Array(d),a.usedBytes>0&&a.contents.set(h.subarray(0,a.usedBytes),0)}},resizeFileStorage(a,d){if(a.usedBytes!=d)if(d==0)a.contents=null,a.usedBytes=0;else{var p=a.contents;a.contents=new Uint8Array(d),p&&a.contents.set(p.subarray(0,Math.min(d,a.usedBytes))),a.usedBytes=d}},node_ops:{getattr(a){var d={};return d.dev=f.isChrdev(a.mode)?a.id:1,d.ino=a.id,d.mode=a.mode,d.nlink=1,d.uid=0,d.gid=0,d.rdev=a.rdev,f.isDir(a.mode)?d.size=4096:f.isFile(a.mode)?d.size=a.usedBytes:f.isLink(a.mode)?d.size=a.link.length:d.size=0,d.atime=new Date(a.timestamp),d.mtime=new Date(a.timestamp),d.ctime=new Date(a.timestamp),d.blksize=4096,d.blocks=Math.ceil(d.size/d.blksize),d},setattr(a,d){d.mode!==void 0&&(a.mode=d.mode),d.timestamp!==void 0&&(a.timestamp=d.timestamp),d.size!==void 0&&ye.resizeFileStorage(a,d.size)},lookup(a,d){throw f.genericErrors[44]},mknod:(a,d,p,h)=>ye.createNode(a,d,p,h),rename(a,d,p){if(f.isDir(a.mode)){var h;try{h=f.lookupNode(d,p)}catch(y){}if(h)for(var I in h.contents)throw new f.ErrnoError(55)}delete a.parent.contents[a.name],a.parent.timestamp=Date.now(),a.name=p,d.contents[p]=a,d.timestamp=a.parent.timestamp,a.parent=d},unlink(a,d){delete a.contents[d],a.timestamp=Date.now()},rmdir(a,d){var p=f.lookupNode(a,d);for(var h in p.contents)throw new f.ErrnoError(55);delete a.contents[d],a.timestamp=Date.now()},readdir(a){var d=[".",".."];for(var p in a.contents)a.contents.hasOwnProperty(p)&&d.push(p);return d},symlink(a,d,p){var h=ye.createNode(a,d,41471,0);return h.link=p,h},readlink(a){if(!f.isLink(a.mode))throw new f.ErrnoError(28);return a.link}},stream_ops:{read(a,d,p,h,I){var y=a.node.contents;if(I>=a.node.usedBytes)return 0;var b=Math.min(a.node.usedBytes-I,h);if(b>8&&y.subarray)d.set(y.subarray(I,I+b),p);else for(var R=0;R<b;R++)d[p+R]=y[I+R];return b},write(a,d,p,h,I,y){if(!h)return 0;var b=a.node;if(b.timestamp=Date.now(),d.subarray&&(!b.contents||b.contents.subarray)){if(y)return b.contents=d.subarray(p,p+h),b.usedBytes=h,h;if(b.usedBytes===0&&I===0)return b.contents=d.slice(p,p+h),b.usedBytes=h,h;if(I+h<=b.usedBytes)return b.contents.set(d.subarray(p,p+h),I),h}if(ye.expandFileStorage(b,I+h),b.contents.subarray&&d.subarray)b.contents.set(d.subarray(p,p+h),I);else for(var R=0;R<h;R++)b.contents[I+R]=d[p+R];return b.usedBytes=Math.max(b.usedBytes,I+h),h},llseek(a,d,p){var h=d;if(p===1?h+=a.position:p===2&&f.isFile(a.node.mode)&&(h+=a.node.usedBytes),h<0)throw new f.ErrnoError(28);return h},allocate(a,d,p){ye.expandFileStorage(a.node,d+p),a.node.usedBytes=Math.max(a.node.usedBytes,d+p)},mmap(a,d,p,h,I){if(!f.isFile(a.node.mode))throw new f.ErrnoError(43);var y,b,R=a.node.contents;if(2&I||R.buffer!==ee.buffer){if((p>0||p+d<R.length)&&(R=R.subarray?R.subarray(p,p+d):Array.prototype.slice.call(R,p,p+d)),b=!0,!(y=En()))throw new f.ErrnoError(48);ee.set(R,y)}else b=!1,y=R.byteOffset;return{ptr:y,allocated:b}},msync:(a,d,p,h,I)=>(ye.stream_ops.write(a,d,0,h,p,!1),0)}},Ou=(a,d,p,h)=>{var I=h?"":`al ${a}`;n(a,y=>{var b;b=`Loading data file "${a}" failed (no arrayBuffer).`,y||Mr(b),d(new Uint8Array(y)),I&&_o()},y=>{if(!p)throw`Loading data file "${a}" failed.`;p()}),I&&ls()},xu=o.preloadPlugins||[];function Qr(a,d){var p=0;return a&&(p|=365),d&&(p|=146),p}var f={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(a,d={})=>{if(!(a=qt.resolve(a)))return{path:"",node:null};if((d=Object.assign({follow_mount:!0,recurse_count:0},d)).recurse_count>8)throw new f.ErrnoError(32);for(var p=a.split("/").filter(O=>!!O),h=f.root,I="/",y=0;y<p.length;y++){var b=y===p.length-1;if(b&&d.parent)break;if(h=f.lookupNode(h,p[y]),I=me.join2(I,p[y]),f.isMountpoint(h)&&(!b||b&&d.follow_mount)&&(h=h.mounted.root),!b||d.follow)for(var R=0;f.isLink(h.mode);){var k=f.readlink(I);if(I=qt.resolve(me.dirname(I),k),h=f.lookupPath(I,{recurse_count:d.recurse_count+1}).node,R++>40)throw new f.ErrnoError(32)}}return{path:I,node:h}},getPath:a=>{for(var d;;){if(f.isRoot(a)){var p=a.mount.mountpoint;return d?p[p.length-1]!=="/"?`${p}/${d}`:p+d:p}d=d?`${a.name}/${d}`:a.name,a=a.parent}},hashName:(a,d)=>{for(var p=0,h=0;h<d.length;h++)p=(p<<5)-p+d.charCodeAt(h)|0;return(a+p>>>0)%f.nameTable.length},hashAddNode:a=>{var d=f.hashName(a.parent.id,a.name);a.name_next=f.nameTable[d],f.nameTable[d]=a},hashRemoveNode:a=>{var d=f.hashName(a.parent.id,a.name);if(f.nameTable[d]===a)f.nameTable[d]=a.name_next;else for(var p=f.nameTable[d];p;){if(p.name_next===a){p.name_next=a.name_next;break}p=p.name_next}},lookupNode:(a,d)=>{var p=f.mayLookup(a);if(p)throw new f.ErrnoError(p,a);for(var h=f.hashName(a.id,d),I=f.nameTable[h];I;I=I.name_next){var y=I.name;if(I.parent.id===a.id&&y===d)return I}return f.lookup(a,d)},createNode:(a,d,p,h)=>{var I=new f.FSNode(a,d,p,h);return f.hashAddNode(I),I},destroyNode:a=>{f.hashRemoveNode(a)},isRoot:a=>a===a.parent,isMountpoint:a=>!!a.mounted,isFile:a=>(61440&a)==32768,isDir:a=>(61440&a)==16384,isLink:a=>(61440&a)==40960,isChrdev:a=>(61440&a)==8192,isBlkdev:a=>(61440&a)==24576,isFIFO:a=>(61440&a)==4096,isSocket:a=>!(49152&~a),flagsToPermissionString:a=>{var d=["r","w","rw"][3&a];return 512&a&&(d+="w"),d},nodePermissions:(a,d)=>f.ignorePermissions||(!d.includes("r")||292&a.mode)&&(!d.includes("w")||146&a.mode)&&(!d.includes("x")||73&a.mode)?0:2,mayLookup:a=>{var d=f.nodePermissions(a,"x");return d||(a.node_ops.lookup?0:2)},mayCreate:(a,d)=>{try{return f.lookupNode(a,d),20}catch(p){}return f.nodePermissions(a,"wx")},mayDelete:(a,d,p)=>{var h;try{h=f.lookupNode(a,d)}catch(y){return y.errno}var I=f.nodePermissions(a,"wx");if(I)return I;if(p){if(!f.isDir(h.mode))return 54;if(f.isRoot(h)||f.getPath(h)===f.cwd())return 10}else if(f.isDir(h.mode))return 31;return 0},mayOpen:(a,d)=>a?f.isLink(a.mode)?32:f.isDir(a.mode)&&(f.flagsToPermissionString(d)!=="r"||512&d)?31:f.nodePermissions(a,f.flagsToPermissionString(d)):44,MAX_OPEN_FDS:4096,nextfd:()=>{for(var a=0;a<=f.MAX_OPEN_FDS;a++)if(!f.streams[a])return a;throw new f.ErrnoError(33)},getStreamChecked:a=>{var d=f.getStream(a);if(!d)throw new f.ErrnoError(8);return d},getStream:a=>f.streams[a],createStream:(a,d=-1)=>(f.FSStream||(f.FSStream=function(){this.shared={}},f.FSStream.prototype={},Object.defineProperties(f.FSStream.prototype,{object:{get(){return this.node},set(p){this.node=p}},isRead:{get(){return(2097155&this.flags)!=1}},isWrite:{get(){return!!(2097155&this.flags)}},isAppend:{get(){return 1024&this.flags}},flags:{get(){return this.shared.flags},set(p){this.shared.flags=p}},position:{get(){return this.shared.position},set(p){this.shared.position=p}}})),a=Object.assign(new f.FSStream,a),d==-1&&(d=f.nextfd()),a.fd=d,f.streams[d]=a,a),closeStream:a=>{f.streams[a]=null},chrdev_stream_ops:{open:a=>{var d=f.getDevice(a.node.rdev);a.stream_ops=d.stream_ops,a.stream_ops.open&&a.stream_ops.open(a)},llseek:()=>{throw new f.ErrnoError(70)}},major:a=>a>>8,minor:a=>255&a,makedev:(a,d)=>a<<8|d,registerDevice:(a,d)=>{f.devices[a]={stream_ops:d}},getDevice:a=>f.devices[a],getMounts:a=>{for(var d=[],p=[a];p.length;){var h=p.pop();d.push(h),p.push.apply(p,h.mounts)}return d},syncfs:(a,d)=>{typeof a=="function"&&(d=a,a=!1),f.syncFSRequests++,f.syncFSRequests>1&&x(`warning: ${f.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var p=f.getMounts(f.root.mount),h=0;function I(b){return f.syncFSRequests--,d(b)}function y(b){if(b)return y.errored?void 0:(y.errored=!0,I(b));++h>=p.length&&I(null)}p.forEach(b=>{if(!b.type.syncfs)return y(null);b.type.syncfs(b,a,y)})},mount:(a,d,p)=>{var h,I=p==="/",y=!p;if(I&&f.root)throw new f.ErrnoError(10);if(!I&&!y){var b=f.lookupPath(p,{follow_mount:!1});if(p=b.path,h=b.node,f.isMountpoint(h))throw new f.ErrnoError(10);if(!f.isDir(h.mode))throw new f.ErrnoError(54)}var R={type:a,opts:d,mountpoint:p,mounts:[]},k=a.mount(R);return k.mount=R,R.root=k,I?f.root=k:h&&(h.mounted=R,h.mount&&h.mount.mounts.push(R)),k},unmount:a=>{var d=f.lookupPath(a,{follow_mount:!1});if(!f.isMountpoint(d.node))throw new f.ErrnoError(28);var p=d.node,h=p.mounted,I=f.getMounts(h);Object.keys(f.nameTable).forEach(b=>{for(var R=f.nameTable[b];R;){var k=R.name_next;I.includes(R.mount)&&f.destroyNode(R),R=k}}),p.mounted=null;var y=p.mount.mounts.indexOf(h);p.mount.mounts.splice(y,1)},lookup:(a,d)=>a.node_ops.lookup(a,d),mknod:(a,d,p)=>{var h=f.lookupPath(a,{parent:!0}).node,I=me.basename(a);if(!I||I==="."||I==="..")throw new f.ErrnoError(28);var y=f.mayCreate(h,I);if(y)throw new f.ErrnoError(y);if(!h.node_ops.mknod)throw new f.ErrnoError(63);return h.node_ops.mknod(h,I,d,p)},create:(a,d)=>(d=d!==void 0?d:438,d&=4095,d|=32768,f.mknod(a,d,0)),mkdir:(a,d)=>(d=d!==void 0?d:511,d&=1023,d|=16384,f.mknod(a,d,0)),mkdirTree:(a,d)=>{for(var p=a.split("/"),h="",I=0;I<p.length;++I)if(p[I]){h+="/"+p[I];try{f.mkdir(h,d)}catch(y){if(y.errno!=20)throw y}}},mkdev:(a,d,p)=>(p===void 0&&(p=d,d=438),d|=8192,f.mknod(a,d,p)),symlink:(a,d)=>{if(!qt.resolve(a))throw new f.ErrnoError(44);var p=f.lookupPath(d,{parent:!0}).node;if(!p)throw new f.ErrnoError(44);var h=me.basename(d),I=f.mayCreate(p,h);if(I)throw new f.ErrnoError(I);if(!p.node_ops.symlink)throw new f.ErrnoError(63);return p.node_ops.symlink(p,h,a)},rename:(a,d)=>{var p,h,I=me.dirname(a),y=me.dirname(d),b=me.basename(a),R=me.basename(d);if(p=f.lookupPath(a,{parent:!0}).node,h=f.lookupPath(d,{parent:!0}).node,!p||!h)throw new f.ErrnoError(44);if(p.mount!==h.mount)throw new f.ErrnoError(75);var k,O=f.lookupNode(p,b),Y=qt.relative(a,y);if(Y.charAt(0)!==".")throw new f.ErrnoError(28);if((Y=qt.relative(d,I)).charAt(0)!==".")throw new f.ErrnoError(55);try{k=f.lookupNode(h,R)}catch(ie){}if(O!==k){var oe=f.isDir(O.mode),se=f.mayDelete(p,b,oe);if(se)throw new f.ErrnoError(se);if(se=k?f.mayDelete(h,R,oe):f.mayCreate(h,R))throw new f.ErrnoError(se);if(!p.node_ops.rename)throw new f.ErrnoError(63);if(f.isMountpoint(O)||k&&f.isMountpoint(k))throw new f.ErrnoError(10);if(h!==p&&(se=f.nodePermissions(p,"w")))throw new f.ErrnoError(se);f.hashRemoveNode(O);try{p.node_ops.rename(O,h,R)}catch(ie){throw ie}finally{f.hashAddNode(O)}}},rmdir:a=>{var d=f.lookupPath(a,{parent:!0}).node,p=me.basename(a),h=f.lookupNode(d,p),I=f.mayDelete(d,p,!0);if(I)throw new f.ErrnoError(I);if(!d.node_ops.rmdir)throw new f.ErrnoError(63);if(f.isMountpoint(h))throw new f.ErrnoError(10);d.node_ops.rmdir(d,p),f.destroyNode(h)},readdir:a=>{var d=f.lookupPath(a,{follow:!0}).node;if(!d.node_ops.readdir)throw new f.ErrnoError(54);return d.node_ops.readdir(d)},unlink:a=>{var d=f.lookupPath(a,{parent:!0}).node;if(!d)throw new f.ErrnoError(44);var p=me.basename(a),h=f.lookupNode(d,p),I=f.mayDelete(d,p,!1);if(I)throw new f.ErrnoError(I);if(!d.node_ops.unlink)throw new f.ErrnoError(63);if(f.isMountpoint(h))throw new f.ErrnoError(10);d.node_ops.unlink(d,p),f.destroyNode(h)},readlink:a=>{var d=f.lookupPath(a).node;if(!d)throw new f.ErrnoError(44);if(!d.node_ops.readlink)throw new f.ErrnoError(28);return qt.resolve(f.getPath(d.parent),d.node_ops.readlink(d))},stat:(a,d)=>{var p=f.lookupPath(a,{follow:!d}).node;if(!p)throw new f.ErrnoError(44);if(!p.node_ops.getattr)throw new f.ErrnoError(63);return p.node_ops.getattr(p)},lstat:a=>f.stat(a,!0),chmod:(a,d,p)=>{var h;if(typeof a=="string"?h=f.lookupPath(a,{follow:!p}).node:h=a,!h.node_ops.setattr)throw new f.ErrnoError(63);h.node_ops.setattr(h,{mode:4095&d|-4096&h.mode,timestamp:Date.now()})},lchmod:(a,d)=>{f.chmod(a,d,!0)},fchmod:(a,d)=>{var p=f.getStreamChecked(a);f.chmod(p.node,d)},chown:(a,d,p,h)=>{var I;if(typeof a=="string"?I=f.lookupPath(a,{follow:!h}).node:I=a,!I.node_ops.setattr)throw new f.ErrnoError(63);I.node_ops.setattr(I,{timestamp:Date.now()})},lchown:(a,d,p)=>{f.chown(a,d,p,!0)},fchown:(a,d,p)=>{var h=f.getStreamChecked(a);f.chown(h.node,d,p)},truncate:(a,d)=>{if(d<0)throw new f.ErrnoError(28);var p;if(typeof a=="string"?p=f.lookupPath(a,{follow:!0}).node:p=a,!p.node_ops.setattr)throw new f.ErrnoError(63);if(f.isDir(p.mode))throw new f.ErrnoError(31);if(!f.isFile(p.mode))throw new f.ErrnoError(28);var h=f.nodePermissions(p,"w");if(h)throw new f.ErrnoError(h);p.node_ops.setattr(p,{size:d,timestamp:Date.now()})},ftruncate:(a,d)=>{var p=f.getStreamChecked(a);if(!(2097155&p.flags))throw new f.ErrnoError(28);f.truncate(p.node,d)},utime:(a,d,p)=>{var h=f.lookupPath(a,{follow:!0}).node;h.node_ops.setattr(h,{timestamp:Math.max(d,p)})},open:(a,d,p)=>{if(a==="")throw new f.ErrnoError(44);var h;if(p=p===void 0?438:p,p=64&(d=typeof d=="string"?function(R){var k={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[R];if(k===void 0)throw new Error(`Unknown file open mode: ${R}`);return k}(d):d)?4095&p|32768:0,typeof a=="object")h=a;else{a=me.normalize(a);try{h=f.lookupPath(a,{follow:!(131072&d)}).node}catch(R){}}var I=!1;if(64&d)if(h){if(128&d)throw new f.ErrnoError(20)}else h=f.mknod(a,p,0),I=!0;if(!h)throw new f.ErrnoError(44);if(f.isChrdev(h.mode)&&(d&=-513),65536&d&&!f.isDir(h.mode))throw new f.ErrnoError(54);if(!I){var y=f.mayOpen(h,d);if(y)throw new f.ErrnoError(y)}512&d&&!I&&f.truncate(h,0),d&=-131713;var b=f.createStream({node:h,path:f.getPath(h),flags:d,seekable:!0,position:0,stream_ops:h.stream_ops,ungotten:[],error:!1});return b.stream_ops.open&&b.stream_ops.open(b),!o.logReadFiles||1&d||(f.readFiles||(f.readFiles={}),a in f.readFiles||(f.readFiles[a]=1)),b},close:a=>{if(f.isClosed(a))throw new f.ErrnoError(8);a.getdents&&(a.getdents=null);try{a.stream_ops.close&&a.stream_ops.close(a)}catch(d){throw d}finally{f.closeStream(a.fd)}a.fd=null},isClosed:a=>a.fd===null,llseek:(a,d,p)=>{if(f.isClosed(a))throw new f.ErrnoError(8);if(!a.seekable||!a.stream_ops.llseek)throw new f.ErrnoError(70);if(p!=0&&p!=1&&p!=2)throw new f.ErrnoError(28);return a.position=a.stream_ops.llseek(a,d,p),a.ungotten=[],a.position},read:(a,d,p,h,I)=>{if(h<0||I<0)throw new f.ErrnoError(28);if(f.isClosed(a))throw new f.ErrnoError(8);if((2097155&a.flags)==1)throw new f.ErrnoError(8);if(f.isDir(a.node.mode))throw new f.ErrnoError(31);if(!a.stream_ops.read)throw new f.ErrnoError(28);var y=I!==void 0;if(y){if(!a.seekable)throw new f.ErrnoError(70)}else I=a.position;var b=a.stream_ops.read(a,d,p,h,I);return y||(a.position+=b),b},write:(a,d,p,h,I,y)=>{if(h<0||I<0)throw new f.ErrnoError(28);if(f.isClosed(a))throw new f.ErrnoError(8);if(!(2097155&a.flags))throw new f.ErrnoError(8);if(f.isDir(a.node.mode))throw new f.ErrnoError(31);if(!a.stream_ops.write)throw new f.ErrnoError(28);a.seekable&&1024&a.flags&&f.llseek(a,0,2);var b=I!==void 0;if(b){if(!a.seekable)throw new f.ErrnoError(70)}else I=a.position;var R=a.stream_ops.write(a,d,p,h,I,y);return b||(a.position+=R),R},allocate:(a,d,p)=>{if(f.isClosed(a))throw new f.ErrnoError(8);if(d<0||p<=0)throw new f.ErrnoError(28);if(!(2097155&a.flags))throw new f.ErrnoError(8);if(!f.isFile(a.node.mode)&&!f.isDir(a.node.mode))throw new f.ErrnoError(43);if(!a.stream_ops.allocate)throw new f.ErrnoError(138);a.stream_ops.allocate(a,d,p)},mmap:(a,d,p,h,I)=>{if(2&h&&!(2&I)&&(2097155&a.flags)!=2)throw new f.ErrnoError(2);if((2097155&a.flags)==1)throw new f.ErrnoError(2);if(!a.stream_ops.mmap)throw new f.ErrnoError(43);return a.stream_ops.mmap(a,d,p,h,I)},msync:(a,d,p,h,I)=>a.stream_ops.msync?a.stream_ops.msync(a,d,p,h,I):0,munmap:a=>0,ioctl:(a,d,p)=>{if(!a.stream_ops.ioctl)throw new f.ErrnoError(59);return a.stream_ops.ioctl(a,d,p)},readFile:(a,d={})=>{if(d.flags=d.flags||0,d.encoding=d.encoding||"binary",d.encoding!=="utf8"&&d.encoding!=="binary")throw new Error(`Invalid encoding type "${d.encoding}"`);var p,h=f.open(a,d.flags),I=f.stat(a).size,y=new Uint8Array(I);return f.read(h,y,0,I,0),d.encoding==="utf8"?p=xt(y,0):d.encoding==="binary"&&(p=y),f.close(h),p},writeFile:(a,d,p={})=>{p.flags=p.flags||577;var h=f.open(a,p.flags,p.mode);if(typeof d=="string"){var I=new Uint8Array(To(d)+1),y=Io(d,I,0,I.length);f.write(h,I,0,y,void 0,p.canOwn)}else{if(!ArrayBuffer.isView(d))throw new Error("Unsupported data type");f.write(h,d,0,d.byteLength,void 0,p.canOwn)}f.close(h)},cwd:()=>f.currentPath,chdir:a=>{var d=f.lookupPath(a,{follow:!0});if(d.node===null)throw new f.ErrnoError(44);if(!f.isDir(d.node.mode))throw new f.ErrnoError(54);var p=f.nodePermissions(d.node,"x");if(p)throw new f.ErrnoError(p);f.currentPath=d.path},createDefaultDirectories:()=>{f.mkdir("/tmp"),f.mkdir("/home"),f.mkdir("/home/web_user")},createDefaultDevices:()=>{f.mkdir("/dev"),f.registerDevice(f.makedev(1,3),{read:()=>0,write:(h,I,y,b,R)=>b}),f.mkdev("/dev/null",f.makedev(1,3)),ce.register(f.makedev(5,0),ce.default_tty_ops),ce.register(f.makedev(6,0),ce.default_tty1_ops),f.mkdev("/dev/tty",f.makedev(5,0)),f.mkdev("/dev/tty1",f.makedev(6,0));var a=new Uint8Array(1024),d=0,p=()=>(d===0&&(d=fn(a).byteLength),a[--d]);f.createDevice("/dev","random",p),f.createDevice("/dev","urandom",p),f.mkdir("/dev/shm"),f.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{f.mkdir("/proc");var a=f.mkdir("/proc/self");f.mkdir("/proc/self/fd"),f.mount({mount:()=>{var d=f.createNode(a,"fd",16895,73);return d.node_ops={lookup:(p,h)=>{var I=+h,y=f.getStreamChecked(I),b={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>y.path}};return b.parent=b,b}},d}},{},"/proc/self/fd")},createStandardStreams:()=>{o.stdin?f.createDevice("/dev","stdin",o.stdin):f.symlink("/dev/tty","/dev/stdin"),o.stdout?f.createDevice("/dev","stdout",null,o.stdout):f.symlink("/dev/tty","/dev/stdout"),o.stderr?f.createDevice("/dev","stderr",null,o.stderr):f.symlink("/dev/tty1","/dev/stderr"),f.open("/dev/stdin",0),f.open("/dev/stdout",1),f.open("/dev/stderr",1)},ensureErrnoError:()=>{f.ErrnoError||(f.ErrnoError=function(a,d){this.name="ErrnoError",this.node=d,this.setErrno=function(p){this.errno=p},this.setErrno(a),this.message="FS error"},f.ErrnoError.prototype=new Error,f.ErrnoError.prototype.constructor=f.ErrnoError,[44].forEach(a=>{f.genericErrors[a]=new f.ErrnoError(a),f.genericErrors[a].stack="<generic error, no stack>"}))},staticInit:()=>{f.ensureErrnoError(),f.nameTable=new Array(4096),f.mount(ye,{},"/"),f.createDefaultDirectories(),f.createDefaultDevices(),f.createSpecialDirectories(),f.filesystems={MEMFS:ye}},init:(a,d,p)=>{f.init.initialized=!0,f.ensureErrnoError(),o.stdin=a||o.stdin,o.stdout=d||o.stdout,o.stderr=p||o.stderr,f.createStandardStreams()},quit:()=>{f.init.initialized=!1;for(var a=0;a<f.streams.length;a++){var d=f.streams[a];d&&f.close(d)}},findObject:(a,d)=>{var p=f.analyzePath(a,d);return p.exists?p.object:null},analyzePath:(a,d)=>{try{a=(h=f.lookupPath(a,{follow:!d})).path}catch(I){}var p={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var h=f.lookupPath(a,{parent:!0});p.parentExists=!0,p.parentPath=h.path,p.parentObject=h.node,p.name=me.basename(a),h=f.lookupPath(a,{follow:!d}),p.exists=!0,p.path=h.path,p.object=h.node,p.name=h.node.name,p.isRoot=h.path==="/"}catch(I){p.error=I.errno}return p},createPath:(a,d,p,h)=>{a=typeof a=="string"?a:f.getPath(a);for(var I=d.split("/").reverse();I.length;){var y=I.pop();if(y){var b=me.join2(a,y);try{f.mkdir(b)}catch(R){}a=b}}return b},createFile:(a,d,p,h,I)=>{var y=me.join2(typeof a=="string"?a:f.getPath(a),d),b=Qr(h,I);return f.create(y,b)},createDataFile:(a,d,p,h,I,y)=>{var b=d;a&&(a=typeof a=="string"?a:f.getPath(a),b=d?me.join2(a,d):a);var R=Qr(h,I),k=f.create(b,R);if(p){if(typeof p=="string"){for(var O=new Array(p.length),Y=0,oe=p.length;Y<oe;++Y)O[Y]=p.charCodeAt(Y);p=O}f.chmod(k,146|R);var se=f.open(k,577);f.write(se,p,0,p.length,0,y),f.close(se),f.chmod(k,R)}return k},createDevice:(a,d,p,h)=>{var I=me.join2(typeof a=="string"?a:f.getPath(a),d),y=Qr(!!p,!!h);f.createDevice.major||(f.createDevice.major=64);var b=f.makedev(f.createDevice.major++,0);return f.registerDevice(b,{open:R=>{R.seekable=!1},close:R=>{h&&h.buffer&&h.buffer.length&&h(10)},read:(R,k,O,Y,oe)=>{for(var se=0,ie=0;ie<Y;ie++){var ve;try{ve=p()}catch(Fe){throw new f.ErrnoError(29)}if(ve===void 0&&se===0)throw new f.ErrnoError(6);if(ve==null)break;se++,k[O+ie]=ve}return se&&(R.node.timestamp=Date.now()),se},write:(R,k,O,Y,oe)=>{for(var se=0;se<Y;se++)try{h(k[O+se])}catch(ie){throw new f.ErrnoError(29)}return Y&&(R.node.timestamp=Date.now()),se}}),f.mkdev(I,y,b)},forceLoadFile:a=>{if(a.isDevice||a.isFolder||a.link||a.contents)return!0;if(typeof XMLHttpRequest!="undefined")throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!s)throw new Error("Cannot load without read() or XMLHttpRequest.");try{a.contents=ms(s(a.url),!0),a.usedBytes=a.contents.length}catch(d){throw new f.ErrnoError(29)}},createLazyFile:(a,d,p,h,I)=>{function y(){this.lengthKnown=!1,this.chunks=[]}if(y.prototype.get=function(oe){if(!(oe>this.length-1||oe<0)){var se=oe%this.chunkSize,ie=oe/this.chunkSize|0;return this.getter(ie)[se]}},y.prototype.setDataGetter=function(oe){this.getter=oe},y.prototype.cacheLength=function(){var oe=new XMLHttpRequest;if(oe.open("HEAD",p,!1),oe.send(null),!(oe.status>=200&&oe.status<300||oe.status===304))throw new Error("Couldn't load "+p+". Status: "+oe.status);var se,ie=Number(oe.getResponseHeader("Content-length")),ve=(se=oe.getResponseHeader("Accept-Ranges"))&&se==="bytes",Fe=(se=oe.getResponseHeader("Content-Encoding"))&&se==="gzip",Me=1048576;ve||(Me=ie);var it=this;it.setDataGetter(Ke=>{var gt=Ke*Me,Bi=(Ke+1)*Me-1;if(Bi=Math.min(Bi,ie-1),it.chunks[Ke]===void 0&&(it.chunks[Ke]=((cr,No)=>{if(cr>No)throw new Error("invalid range ("+cr+", "+No+") or no bytes requested!");if(No>ie-1)throw new Error("only "+ie+" bytes available! programmer error!");var ut=new XMLHttpRequest;if(ut.open("GET",p,!1),ie!==Me&&ut.setRequestHeader("Range","bytes="+cr+"-"+No),ut.responseType="arraybuffer",ut.overrideMimeType&&ut.overrideMimeType("text/plain; charset=x-user-defined"),ut.send(null),!(ut.status>=200&&ut.status<300||ut.status===304))throw new Error("Couldn't load "+p+". Status: "+ut.status);return ut.response!==void 0?new Uint8Array(ut.response||[]):ms(ut.responseText||"",!0)})(gt,Bi)),it.chunks[Ke]===void 0)throw new Error("doXHR failed!");return it.chunks[Ke]}),!Fe&&ie||(Me=ie=1,ie=this.getter(0).length,Me=ie,L("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=ie,this._chunkSize=Me,this.lengthKnown=!0},typeof XMLHttpRequest!="undefined"){if(!g)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var b=new y;Object.defineProperties(b,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var R={isDevice:!1,contents:b}}else R={isDevice:!1,url:p};var k=f.createFile(a,d,R,h,I);R.contents?k.contents=R.contents:R.url&&(k.contents=null,k.url=R.url),Object.defineProperties(k,{usedBytes:{get:function(){return this.contents.length}}});var O={};function Y(oe,se,ie,ve,Fe){var Me=oe.node.contents;if(Fe>=Me.length)return 0;var it=Math.min(Me.length-Fe,ve);if(Me.slice)for(var Ke=0;Ke<it;Ke++)se[ie+Ke]=Me[Fe+Ke];else for(Ke=0;Ke<it;Ke++)se[ie+Ke]=Me.get(Fe+Ke);return it}return Object.keys(k.stream_ops).forEach(oe=>{var se=k.stream_ops[oe];O[oe]=function(){return f.forceLoadFile(k),se.apply(null,arguments)}}),O.read=(oe,se,ie,ve,Fe)=>(f.forceLoadFile(k),Y(oe,se,ie,ve,Fe)),O.mmap=(oe,se,ie,ve,Fe)=>{f.forceLoadFile(k);var Me=En();if(!Me)throw new f.ErrnoError(48);return Y(oe,ee,Me,se,ie),{ptr:Me,allocated:!0}},k.stream_ops=O,k}},Oi=(a,d)=>a?xt(pe,a,d):"",w={DEFAULT_POLLMASK:5,calculateAt:function(a,d,p){if(me.isAbs(d))return d;var h;if(a===-100?h=f.cwd():h=w.getStreamFromFD(a).path,d.length==0){if(!p)throw new f.ErrnoError(44);return h}return me.join2(h,d)},doStat:function(a,d,p){try{var h=a(d)}catch(R){if(R&&R.node&&me.normalize(d)!==me.normalize(f.getPath(R.node)))return-54;throw R}X[p>>2]=h.dev,X[p+4>>2]=h.mode,Ue[p+8>>2]=h.nlink,X[p+12>>2]=h.uid,X[p+16>>2]=h.gid,X[p+20>>2]=h.rdev,Ze=[h.size>>>0,(_e=h.size,+Math.abs(_e)>=1?_e>0?+Math.floor(_e/4294967296)>>>0:~~+Math.ceil((_e-+(~~_e>>>0))/4294967296)>>>0:0)],X[p+24>>2]=Ze[0],X[p+28>>2]=Ze[1],X[p+32>>2]=4096,X[p+36>>2]=h.blocks;var I=h.atime.getTime(),y=h.mtime.getTime(),b=h.ctime.getTime();return Ze=[Math.floor(I/1e3)>>>0,(_e=Math.floor(I/1e3),+Math.abs(_e)>=1?_e>0?+Math.floor(_e/4294967296)>>>0:~~+Math.ceil((_e-+(~~_e>>>0))/4294967296)>>>0:0)],X[p+40>>2]=Ze[0],X[p+44>>2]=Ze[1],Ue[p+48>>2]=I%1e3*1e3,Ze=[Math.floor(y/1e3)>>>0,(_e=Math.floor(y/1e3),+Math.abs(_e)>=1?_e>0?+Math.floor(_e/4294967296)>>>0:~~+Math.ceil((_e-+(~~_e>>>0))/4294967296)>>>0:0)],X[p+56>>2]=Ze[0],X[p+60>>2]=Ze[1],Ue[p+64>>2]=y%1e3*1e3,Ze=[Math.floor(b/1e3)>>>0,(_e=Math.floor(b/1e3),+Math.abs(_e)>=1?_e>0?+Math.floor(_e/4294967296)>>>0:~~+Math.ceil((_e-+(~~_e>>>0))/4294967296)>>>0:0)],X[p+72>>2]=Ze[0],X[p+76>>2]=Ze[1],Ue[p+80>>2]=b%1e3*1e3,Ze=[h.ino>>>0,(_e=h.ino,+Math.abs(_e)>=1?_e>0?+Math.floor(_e/4294967296)>>>0:~~+Math.ceil((_e-+(~~_e>>>0))/4294967296)>>>0:0)],X[p+88>>2]=Ze[0],X[p+92>>2]=Ze[1],0},doMsync:function(a,d,p,h,I){if(!f.isFile(d.node.mode))throw new f.ErrnoError(43);if(2&h)return 0;var y=pe.slice(a,a+p);f.msync(d,y,I,p,h)},varargs:void 0,get:()=>(w.varargs+=4,X[w.varargs-4>>2]),getStr:a=>Oi(a),getStreamFromFD:function(a){return f.getStreamChecked(a)}};function Yr(a){switch(a){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(`Unknown type size: ${a}`)}}var Ga=void 0;function bt(a){for(var d="",p=a;pe[p];)d+=Ga[pe[p++]];return d}var xi={},ar={},ps={},Pi=void 0;function Ve(a){throw new Pi(a)}var ja=void 0;function Yt(a){throw new ja(a)}function Or(a,d,p){function h(R){var k=p(R);k.length!==a.length&&Yt("Mismatched type converter count");for(var O=0;O<a.length;++O)Zt(a[O],k[O])}a.forEach(function(R){ps[R]=d});var I=new Array(d.length),y=[],b=0;d.forEach((R,k)=>{ar.hasOwnProperty(R)?I[k]=ar[R]:(y.push(R),xi.hasOwnProperty(R)||(xi[R]=[]),xi[R].push(()=>{I[k]=ar[R],++b===y.length&&h(I)}))}),y.length===0&&h(I)}function Zt(a,d,p={}){if(!("argPackAdvance"in d))throw new TypeError("registerType registeredInstance requires argPackAdvance");return function(h,I,y={}){var b=I.name;if(h||Ve(`type "${b}" must have a positive integer typeid pointer`),ar.hasOwnProperty(h)){if(y.ignoreDuplicateRegistrations)return;Ve(`Cannot register type '${b}' twice`)}if(ar[h]=I,delete ps[h],xi.hasOwnProperty(h)){var R=xi[h];delete xi[h],R.forEach(k=>k())}}(a,d,p)}function qa(a){if(!(this instanceof fr)||!(a instanceof fr))return!1;for(var d=this.$$.ptrType.registeredClass,p=this.$$.ptr,h=a.$$.ptrType.registeredClass,I=a.$$.ptr;d.baseClass;)p=d.upcast(p),d=d.baseClass;for(;h.baseClass;)I=h.upcast(I),h=h.baseClass;return d===h&&p===I}function _n(a){Ve(a.$$.ptrType.registeredClass.name+" instance already deleted")}var So=!1;function Ja(a){}function za(a){a.count.value-=1,a.count.value===0&&function(d){d.smartPtr?d.smartPtrType.rawDestructor(d.smartPtr):d.ptrType.registeredClass.rawDestructor(d.ptr)}(a)}function Xa(a,d,p){if(d===p)return a;if(p.baseClass===void 0)return null;var h=Xa(a,d,p.baseClass);return h===null?null:p.downcast(h)}var Ao={};function Pu(){return Object.keys(bo).length}function ku(){var a=[];for(var d in bo)bo.hasOwnProperty(d)&&a.push(bo[d]);return a}var yo=[];function Kt(){for(;yo.length;){var a=yo.pop();a.$$.deleteScheduled=!1,a.delete()}}var xr=void 0;function Qa(a){xr=a,yo.length&&xr&&xr(Kt)}var bo={};function ki(a,d){return d=function(p,h){for(h===void 0&&Ve("ptr should not be undefined");p.baseClass;)h=p.upcast(h),p=p.baseClass;return h}(a,d),bo[d]}function Ro(a,d){return d.ptrType&&d.ptr||Yt("makeClassHandle requires ptr and ptrType"),!!d.smartPtrType!=!!d.smartPtr&&Yt("Both smartPtrType and smartPtr must be specified"),d.count={value:1},Li(Object.create(a,{$$:{value:d}}))}function Ya(a){var d=this.getPointee(a);if(!d)return this.destructor(a),null;var p=ki(this.registeredClass,d);if(p!==void 0){if(p.$$.count.value===0)return p.$$.ptr=d,p.$$.smartPtr=a,p.clone();var h=p.clone();return this.destructor(a),h}function I(){return this.isSmartPointer?Ro(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:d,smartPtrType:this,smartPtr:a}):Ro(this.registeredClass.instancePrototype,{ptrType:this,ptr:a})}var y,b=this.registeredClass.getActualType(d),R=Ao[b];if(!R)return I.call(this);y=this.isConst?R.constPointerType:R.pointerType;var k=Xa(d,this.registeredClass,y.registeredClass);return k===null?I.call(this):this.isSmartPointer?Ro(y.registeredClass.instancePrototype,{ptrType:y,ptr:k,smartPtrType:this,smartPtr:a}):Ro(y.registeredClass.instancePrototype,{ptrType:y,ptr:k})}var Li=function(a){return typeof FinalizationRegistry=="undefined"?(Li=d=>d,a):(So=new FinalizationRegistry(d=>{za(d.$$)}),Ja=d=>So.unregister(d),(Li=d=>{var p=d.$$;if(p.smartPtr){var h={$$:p};So.register(d,h,d)}return d})(a))};function Za(){if(this.$$.ptr||_n(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var a,d=Li(Object.create(Object.getPrototypeOf(this),{$$:{value:(a=this.$$,{count:a.count,deleteScheduled:a.deleteScheduled,preservePointerOnDelete:a.preservePointerOnDelete,ptr:a.ptr,ptrType:a.ptrType,smartPtr:a.smartPtr,smartPtrType:a.smartPtrType})}}));return d.$$.count.value+=1,d.$$.deleteScheduled=!1,d}function Lu(){this.$$.ptr||_n(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ve("Object already scheduled for deletion"),Ja(this),za(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Ka(){return!this.$$.ptr}function ec(){return this.$$.ptr||_n(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ve("Object already scheduled for deletion"),yo.push(this),yo.length===1&&xr&&xr(Kt),this.$$.deleteScheduled=!0,this}function fr(){}function Pt(a){if(a===void 0)return"_unknown";var d=(a=a.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return d>=48&&d<=57?`_${a}`:a}function hs(a,d){return a=Pt(a),{[a]:function(){return d.apply(this,arguments)}}[a]}function tc(a,d,p){if(a[d].overloadTable===void 0){var h=a[d];a[d]=function(){return a[d].overloadTable.hasOwnProperty(arguments.length)||Ve(`Function '${p}' called with an invalid number of arguments (${arguments.length}) - expects one of (${a[d].overloadTable})!`),a[d].overloadTable[arguments.length].apply(this,arguments)},a[d].overloadTable=[],a[d].overloadTable[h.argCount]=h}}function fs(a,d,p,h,I,y,b,R){this.name=a,this.constructor=d,this.instancePrototype=p,this.rawDestructor=h,this.baseClass=I,this.getActualType=y,this.upcast=b,this.downcast=R,this.pureVirtualFunctions=[]}function vo(a,d,p){for(;d!==p;)d.upcast||Ve(`Expected null or instance of ${p.name}, got an instance of ${d.name}`),a=d.upcast(a),d=d.baseClass;return a}function Uu(a,d){if(d===null)return this.isReference&&Ve(`null is not a valid ${this.name}`),0;d.$$||Ve(`Cannot pass "${Ts(d)}" as a ${this.name}`),d.$$.ptr||Ve(`Cannot pass deleted object as a pointer of type ${this.name}`);var p=d.$$.ptrType.registeredClass;return vo(d.$$.ptr,p,this.registeredClass)}function Vu(a,d){var p;if(d===null)return this.isReference&&Ve(`null is not a valid ${this.name}`),this.isSmartPointer?(p=this.rawConstructor(),a!==null&&a.push(this.rawDestructor,p),p):0;d.$$||Ve(`Cannot pass "${Ts(d)}" as a ${this.name}`),d.$$.ptr||Ve(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&d.$$.ptrType.isConst&&Ve(`Cannot convert argument of type ${d.$$.smartPtrType?d.$$.smartPtrType.name:d.$$.ptrType.name} to parameter type ${this.name}`);var h=d.$$.ptrType.registeredClass;if(p=vo(d.$$.ptr,h,this.registeredClass),this.isSmartPointer)switch(d.$$.smartPtr===void 0&&Ve("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:d.$$.smartPtrType===this?p=d.$$.smartPtr:Ve(`Cannot convert argument of type ${d.$$.smartPtrType?d.$$.smartPtrType.name:d.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:p=d.$$.smartPtr;break;case 2:if(d.$$.smartPtrType===this)p=d.$$.smartPtr;else{var I=d.clone();p=this.rawShare(p,Fi.toHandle(function(){I.delete()})),a!==null&&a.push(this.rawDestructor,p)}break;default:Ve("Unsupporting sharing policy")}return p}function rc(a,d){if(d===null)return this.isReference&&Ve(`null is not a valid ${this.name}`),0;d.$$||Ve(`Cannot pass "${Ts(d)}" as a ${this.name}`),d.$$.ptr||Ve(`Cannot pass deleted object as a pointer of type ${this.name}`),d.$$.ptrType.isConst&&Ve(`Cannot convert argument of type ${d.$$.ptrType.name} to parameter type ${this.name}`);var p=d.$$.ptrType.registeredClass;return vo(d.$$.ptr,p,this.registeredClass)}function Co(a){return this.fromWireType(X[a>>2])}function Fu(a){return this.rawGetPointee&&(a=this.rawGetPointee(a)),a}function ic(a){this.rawDestructor&&this.rawDestructor(a)}function $u(a){a!==null&&a.delete()}function gr(a,d,p,h,I,y,b,R,k,O,Y){this.name=a,this.registeredClass=d,this.isReference=p,this.isConst=h,this.isSmartPointer=I,this.pointeeType=y,this.sharingPolicy=b,this.rawGetPointee=R,this.rawConstructor=k,this.rawShare=O,this.rawDestructor=Y,I||d.baseClass!==void 0?this.toWireType=Vu:h?(this.toWireType=Uu,this.destructorFunction=null):(this.toWireType=rc,this.destructorFunction=null)}var gs=[],oc=a=>{var d=gs[a];return d||(a>=gs.length&&(gs.length=a+1),gs[a]=d=mn.get(a)),d},Bu=(a,d,p)=>a.includes("j")?((h,I,y)=>{var b=o["dynCall_"+h];return y&&y.length?b.apply(null,[I].concat(y)):b.call(null,I)})(a,d,p):oc(d).apply(null,p);function Ui(a,d){var p,h,I,y=(a=bt(a)).includes("j")?(p=a,h=d,I=[],function(){return I.length=0,Object.assign(I,arguments),Bu(p,h,I)}):oc(d);return typeof y!="function"&&Ve(`unknown function pointer with signature ${a}: ${d}`),y}var sc=void 0;function Es(a){var d=_r(a),p=bt(d);return Rt(d),p}function _s(a,d){var p=[],h={};throw d.forEach(function I(y){h[y]||ar[y]||(ps[y]?ps[y].forEach(I):(p.push(y),h[y]=!0))}),new sc(`${a}: `+p.map(Es).join([", "]))}function Tn(a,d){for(var p=[],h=0;h<a;h++)p.push(Ue[d+4*h>>2]);return p}function nc(a){for(;a.length;){var d=a.pop();a.pop()(d)}}function In(a,d){if(!(a instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof a} which is not a function`);var p=hs(a.name||"unknownFunctionName",function(){});p.prototype=a.prototype;var h=new p,I=a.apply(h,d);return I instanceof Object?I:h}function Vi(a,d,p,h,I,y){var b=d.length;b<2&&Ve("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var R=d[1]!==null&&p!==null,k=!1,O=1;O<d.length;++O)if(d[O]!==null&&d[O].destructorFunction===void 0){k=!0;break}var Y=d[0].name!=="void",oe="",se="";for(O=0;O<b-2;++O)oe+=(O!==0?", ":"")+"arg"+O,se+=(O!==0?", ":"")+"arg"+O+"Wired";var ie=`
|
|
52
|
+
return function ${Pt(a)}(${oe}) {
|
|
53
|
+
if (arguments.length !== ${b-2}) {
|
|
54
|
+
throwBindingError('function ${a} called with ${arguments.length} arguments, expected ${b-2} args!');
|
|
55
|
+
}`;k&&(ie+=`var destructors = [];
|
|
56
|
+
`);var ve=k?"destructors":"null",Fe=["throwBindingError","invoker","fn","runDestructors","retType","classParam"],Me=[Ve,h,I,nc,d[0],d[1]];for(R&&(ie+="var thisWired = classParam.toWireType("+ve+`, this);
|
|
57
|
+
`),O=0;O<b-2;++O)ie+="var arg"+O+"Wired = argType"+O+".toWireType("+ve+", arg"+O+"); // "+d[O+2].name+`
|
|
58
|
+
`,Fe.push("argType"+O),Me.push(d[O+2]);if(R&&(se="thisWired"+(se.length>0?", ":"")+se),ie+=(Y||y?"var rv = ":"")+"invoker(fn"+(se.length>0?", ":"")+se+`);
|
|
59
|
+
`,k)ie+=`runDestructors(destructors);
|
|
60
|
+
`;else for(O=R?1:2;O<d.length;++O){var it=O===1?"thisWired":"arg"+(O-2)+"Wired";d[O].destructorFunction!==null&&(ie+=it+"_dtor("+it+"); // "+d[O].name+`
|
|
61
|
+
`,Fe.push(it+"_dtor"),Me.push(d[O].destructorFunction))}return Y&&(ie+=`var ret = retType.fromWireType(rv);
|
|
62
|
+
return ret;
|
|
63
|
+
`),ie+=`}
|
|
64
|
+
`,Fe.push(ie),In(Function,Fe).apply(null,Me)}function ac(){this.allocated=[void 0],this.freelist=[]}var kt=new ac;function cc(a){a>=kt.reserved&&--kt.get(a).refcount==0&&kt.free(a)}function Er(){for(var a=0,d=kt.reserved;d<kt.allocated.length;++d)kt.allocated[d]!==void 0&&++a;return a}var Fi={toValue:a=>(a||Ve("Cannot use deleted val. handle = "+a),kt.get(a).value),toHandle:a=>{switch(a){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return kt.allocate({refcount:1,value:a})}}};function Ts(a){if(a===null)return"null";var d=typeof a;return d==="object"||d==="array"||d==="function"?a.toString():""+a}function dc(a,d){switch(d){case 2:return function(p){return this.fromWireType(Eo[p>>2])};case 3:return function(p){return this.fromWireType(ln[p>>3])};default:throw new TypeError("Unknown float type: "+a)}}function uc(a,d,p){switch(d){case 0:return p?function(h){return ee[h]}:function(h){return pe[h]};case 1:return p?function(h){return ae[h>>1]}:function(h){return Xe[h>>1]};case 2:return p?function(h){return X[h>>2]}:function(h){return Ue[h>>2]};default:throw new TypeError("Unknown integer type: "+a)}}var S=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):void 0,T=(a,d)=>{for(var p=a,h=p>>1,I=h+d/2;!(h>=I)&&Xe[h];)++h;if((p=h<<1)-a>32&&S)return S.decode(pe.subarray(a,p));for(var y="",b=0;!(b>=d/2);++b){var R=ae[a+2*b>>1];if(R==0)break;y+=String.fromCharCode(R)}return y},C=(a,d,p)=>{if(p===void 0&&(p=2147483647),p<2)return 0;for(var h=d,I=(p-=2)<2*a.length?p/2:a.length,y=0;y<I;++y){var b=a.charCodeAt(y);ae[d>>1]=b,d+=2}return ae[d>>1]=0,d-h},D=a=>2*a.length,F=(a,d)=>{for(var p=0,h="";!(p>=d/4);){var I=X[a+4*p>>2];if(I==0)break;if(++p,I>=65536){var y=I-65536;h+=String.fromCharCode(55296|y>>10,56320|1023&y)}else h+=String.fromCharCode(I)}return h},H=(a,d,p)=>{if(p===void 0&&(p=2147483647),p<4)return 0;for(var h=d,I=h+p-4,y=0;y<a.length;++y){var b=a.charCodeAt(y);if(b>=55296&&b<=57343&&(b=65536+((1023&b)<<10)|1023&a.charCodeAt(++y)),X[d>>2]=b,(d+=4)+4>I)break}return X[d>>2]=0,d-h},G=a=>{for(var d=0,p=0;p<a.length;++p){var h=a.charCodeAt(p);h>=55296&&h<=57343&&++p,d+=4}return d},z={},K=[],W=[],he={},Ne=()=>{if(!Ne.strings){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:m||"./this.program"};for(var d in he)he[d]===void 0?delete a[d]:a[d]=he[d];var p=[];for(var d in a)p.push(`${d}=${a[d]}`);Ne.strings=p}return Ne.strings},Re,ge,De,rt=function(a,d,p,h){a||(a=this),this.parent=a,this.mount=a.mount,this.mounted=null,this.id=f.nextInode++,this.name=d,this.mode=p,this.node_ops={},this.stream_ops={},this.rdev=h},qe=365,pt=146;Object.defineProperties(rt.prototype,{read:{get:function(){return(this.mode&qe)===qe},set:function(a){a?this.mode|=qe:this.mode&=-366}},write:{get:function(){return(this.mode&pt)===pt},set:function(a){a?this.mode|=pt:this.mode&=-147}},isFolder:{get:function(){return f.isDir(this.mode)}},isDevice:{get:function(){return f.isChrdev(this.mode)}}}),f.FSNode=rt,f.createPreloadedFile=function(a,d,p,h,I,y,b,R,k,O){var Y=d?qt.resolve(me.join2(a,d)):a;function oe(se){function ie(ve){O&&O(),R||f.createDataFile(a,d,ve,h,I,k),y&&y(),_o()}(function(ve,Fe,Me,it){typeof Browser!="undefined"&&Browser.init();var Ke=!1;return xu.forEach(function(gt){Ke||gt.canHandle(Fe)&&(gt.handle(ve,Fe,Me,it),Ke=!0)}),Ke})(se,Y,ie,()=>{b&&b(),_o()})||ie(se)}ls(),typeof p=="string"?Ou(p,se=>oe(se),b):oe(p)},f.staticInit(),function(){for(var a=new Array(256),d=0;d<256;++d)a[d]=String.fromCharCode(d);Ga=a}(),Pi=o.BindingError=class extends Error{constructor(a){super(a),this.name="BindingError"}},ja=o.InternalError=class extends Error{constructor(a){super(a),this.name="InternalError"}},fr.prototype.isAliasOf=qa,fr.prototype.clone=Za,fr.prototype.delete=Lu,fr.prototype.isDeleted=Ka,fr.prototype.deleteLater=ec,o.getInheritedInstanceCount=Pu,o.getLiveInheritedInstances=ku,o.flushPendingDeletes=Kt,o.setDelayFunction=Qa,gr.prototype.getPointee=Fu,gr.prototype.destructor=ic,gr.prototype.argPackAdvance=8,gr.prototype.readValueFromPointer=Co,gr.prototype.deleteObject=$u,gr.prototype.fromWireType=Ya,sc=o.UnboundTypeError=(Re=Error,(De=hs(ge="UnboundTypeError",function(a){this.name=ge,this.message=a;var d=new Error(a).stack;d!==void 0&&(this.stack=this.toString()+`
|
|
65
|
+
`+d.replace(/^Error(:[^\n]*)?\n/,""))})).prototype=Object.create(Re.prototype),De.prototype.constructor=De,De.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},De),Object.assign(ac.prototype,{get(a){return this.allocated[a]},has(a){return this.allocated[a]!==void 0},allocate(a){var d=this.freelist.pop()||this.allocated.length;return this.allocated[d]=a,d},free(a){this.allocated[a]=void 0,this.freelist.push(a)}}),kt.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),kt.reserved=kt.allocated.length,o.count_emval_handles=Er;var Je,Nt={p:function(a,d,p){throw new Mi(a).init(d,p),a},C:function(a,d,p){w.varargs=p;try{var h=w.getStreamFromFD(a);switch(d){case 0:return(I=w.get())<0?-28:f.createStream(h,I).fd;case 1:case 2:case 6:case 7:return 0;case 3:return h.flags;case 4:var I=w.get();return h.flags|=I,0;case 5:return I=w.get(),ae[I+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return y=28,X[Sn()>>2]=y,-1}}catch(b){if(f===void 0||b.name!=="ErrnoError")throw b;return-b.errno}var y},w:function(a,d,p,h){w.varargs=h;try{d=w.getStr(d),d=w.calculateAt(a,d);var I=h?w.get():0;return f.open(d,p,I).fd}catch(y){if(f===void 0||y.name!=="ErrnoError")throw y;return-y.errno}},t:function(a,d,p,h,I){},n:function(a,d,p,h,I){var y=Yr(p);Zt(a,{name:d=bt(d),fromWireType:function(b){return!!b},toWireType:function(b,R){return R?h:I},argPackAdvance:8,readValueFromPointer:function(b){var R;if(p===1)R=ee;else if(p===2)R=ae;else{if(p!==4)throw new TypeError("Unknown boolean type size: "+d);R=X}return this.fromWireType(R[b>>y])},destructorFunction:null})},r:function(a,d,p,h,I,y,b,R,k,O,Y,oe,se){Y=bt(Y),y=Ui(I,y),R&&(R=Ui(b,R)),O&&(O=Ui(k,O)),se=Ui(oe,se);var ie=Pt(Y);(function(ve,Fe,Me){o.hasOwnProperty(ve)?((Me===void 0||o[ve].overloadTable!==void 0&&o[ve].overloadTable[Me]!==void 0)&&Ve(`Cannot register public name '${ve}' twice`),tc(o,ve,ve),o.hasOwnProperty(Me)&&Ve(`Cannot register multiple overloads of a function with the same number of arguments (${Me})!`),o[ve].overloadTable[Me]=Fe):(o[ve]=Fe,Me!==void 0&&(o[ve].numArguments=Me))})(ie,function(){_s(`Cannot construct ${Y} due to unbound types`,[h])}),Or([a,d,p],h?[h]:[],function(ve){var Fe,Me;ve=ve[0],Me=h?(Fe=ve.registeredClass).instancePrototype:fr.prototype;var it=hs(ie,function(){if(Object.getPrototypeOf(this)!==Ke)throw new Pi("Use 'new' to construct "+Y);if(gt.constructor_body===void 0)throw new Pi(Y+" has no accessible constructor");var ut=gt.constructor_body[arguments.length];if(ut===void 0)throw new Pi(`Tried to invoke ctor of ${Y} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(gt.constructor_body).toString()}) parameters instead!`);return ut.apply(this,arguments)}),Ke=Object.create(Me,{constructor:{value:it}});it.prototype=Ke;var gt=new fs(Y,it,Ke,se,Fe,y,R,O);gt.baseClass&&(gt.baseClass.__derivedClasses===void 0&&(gt.baseClass.__derivedClasses=[]),gt.baseClass.__derivedClasses.push(gt));var Bi=new gr(Y,gt,!0,!1,!1),cr=new gr(Y+"*",gt,!1,!1,!1),No=new gr(Y+" const*",gt,!1,!0,!1);return Ao[a]={pointerType:cr,constPointerType:No},function(ut,Up,Hu){o.hasOwnProperty(ut)||Yt("Replacing nonexistant public symbol"),o[ut].overloadTable!==void 0&&Hu!==void 0?o[ut].overloadTable[Hu]=Up:(o[ut]=Up,o[ut].argCount=Hu)}(ie,it),[Bi,cr,No]})},q:function(a,d,p,h,I,y){var b=Tn(d,p);I=Ui(h,I),Or([],[a],function(R){var k=`constructor ${(R=R[0]).name}`;if(R.registeredClass.constructor_body===void 0&&(R.registeredClass.constructor_body=[]),R.registeredClass.constructor_body[d-1]!==void 0)throw new Pi(`Cannot register multiple constructors with identical number of parameters (${d-1}) for class '${R.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return R.registeredClass.constructor_body[d-1]=()=>{_s(`Cannot construct ${R.name} due to unbound types`,b)},Or([],b,function(O){return O.splice(1,0,null),R.registeredClass.constructor_body[d-1]=Vi(k,O,null,I,y),[]}),[]})},d:function(a,d,p,h,I,y,b,R,k){var O=Tn(p,h);d=bt(d),y=Ui(I,y),Or([],[a],function(Y){var oe=`${(Y=Y[0]).name}.${d}`;function se(){_s(`Cannot call ${oe} due to unbound types`,O)}d.startsWith("@@")&&(d=Symbol[d.substring(2)]),R&&Y.registeredClass.pureVirtualFunctions.push(d);var ie=Y.registeredClass.instancePrototype,ve=ie[d];return ve===void 0||ve.overloadTable===void 0&&ve.className!==Y.name&&ve.argCount===p-2?(se.argCount=p-2,se.className=Y.name,ie[d]=se):(tc(ie,d,oe),ie[d].overloadTable[p-2]=se),Or([],O,function(Fe){var Me=Vi(oe,Fe,Y,y,b,k);return ie[d].overloadTable===void 0?(Me.argCount=p-2,ie[d]=Me):ie[d].overloadTable[p-2]=Me,[]}),[]})},D:function(a,d){Zt(a,{name:d=bt(d),fromWireType:function(p){var h=Fi.toValue(p);return cc(p),h},toWireType:function(p,h){return Fi.toHandle(h)},argPackAdvance:8,readValueFromPointer:Co,destructorFunction:null})},k:function(a,d,p){var h=Yr(p);Zt(a,{name:d=bt(d),fromWireType:function(I){return I},toWireType:function(I,y){return y},argPackAdvance:8,readValueFromPointer:dc(d,h),destructorFunction:null})},c:function(a,d,p,h,I){d=bt(d),I===-1&&(I=4294967295);var y=Yr(p),b=O=>O;if(h===0){var R=32-8*p;b=O=>O<<R>>>R}var k=d.includes("unsigned");Zt(a,{name:d,fromWireType:b,toWireType:k?function(O,Y){return this.name,Y>>>0}:function(O,Y){return this.name,Y},argPackAdvance:8,readValueFromPointer:uc(d,y,h!==0),destructorFunction:null})},b:function(a,d,p){var h=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][d];function I(y){var b=Ue,R=b[y>>=2],k=b[y+1];return new h(b.buffer,k,R)}Zt(a,{name:p=bt(p),fromWireType:I,argPackAdvance:8,readValueFromPointer:I},{ignoreDuplicateRegistrations:!0})},j:function(a,d){var p=(d=bt(d))==="std::string";Zt(a,{name:d,fromWireType:function(h){var I,y=Ue[h>>2],b=h+4;if(p)for(var R=b,k=0;k<=y;++k){var O=b+k;if(k==y||pe[O]==0){var Y=Oi(R,O-R);I===void 0?I=Y:(I+="\0",I+=Y),R=O+1}}else{var oe=new Array(y);for(k=0;k<y;++k)oe[k]=String.fromCharCode(pe[b+k]);I=oe.join("")}return Rt(h),I},toWireType:function(h,I){var y;I instanceof ArrayBuffer&&(I=new Uint8Array(I));var b=typeof I=="string";b||I instanceof Uint8Array||I instanceof Uint8ClampedArray||I instanceof Int8Array||Ve("Cannot pass non-string to std::string"),y=p&&b?To(I):I.length;var R=$i(4+y+1),k=R+4;if(Ue[R>>2]=y,p&&b)Io(I,pe,k,y+1);else if(b)for(var O=0;O<y;++O){var Y=I.charCodeAt(O);Y>255&&(Rt(k),Ve("String has UTF-16 code units that do not fit in 8 bits")),pe[k+O]=Y}else for(O=0;O<y;++O)pe[k+O]=I[O];return h!==null&&h.push(Rt,R),R},argPackAdvance:8,readValueFromPointer:Co,destructorFunction:function(h){Rt(h)}})},f:function(a,d,p){var h,I,y,b,R;p=bt(p),d===2?(h=T,I=C,b=D,y=()=>Xe,R=1):d===4&&(h=F,I=H,b=G,y=()=>Ue,R=2),Zt(a,{name:p,fromWireType:function(k){for(var O,Y=Ue[k>>2],oe=y(),se=k+4,ie=0;ie<=Y;++ie){var ve=k+4+ie*d;if(ie==Y||oe[ve>>R]==0){var Fe=h(se,ve-se);O===void 0?O=Fe:(O+="\0",O+=Fe),se=ve+d}}return Rt(k),O},toWireType:function(k,O){typeof O!="string"&&Ve(`Cannot pass non-string to C++ string type ${p}`);var Y=b(O),oe=$i(4+Y+d);return Ue[oe>>2]=Y>>R,I(O,oe+4,Y+d),k!==null&&k.push(Rt,oe),oe},argPackAdvance:8,readValueFromPointer:Co,destructorFunction:function(k){Rt(k)}})},o:function(a,d){Zt(a,{isVoid:!0,name:d=bt(d),argPackAdvance:0,fromWireType:function(){},toWireType:function(p,h){}})},g:function(a,d,p,h){var I,y;(a=K[a])(d=Fi.toValue(d),p=(y=z[I=p])===void 0?bt(I):y,null,h)},m:cc,l:function(a,d){var p=function(Fe,Me){for(var it,Ke,gt,Bi=new Array(Fe),cr=0;cr<Fe;++cr)Bi[cr]=(it=Ue[Me+4*cr>>2],Ke="parameter "+cr,gt=void 0,(gt=ar[it])===void 0&&Ve(Ke+" has unknown type "+Es(it)),gt);return Bi}(a,d),h=p[0],I=h.name+"_$"+p.slice(1).map(function(Fe){return Fe.name}).join("_")+"$",y=W[I];if(y!==void 0)return y;for(var b=["retType"],R=[h],k="",O=0;O<a-1;++O)k+=(O!==0?", ":"")+"arg"+O,b.push("argType"+O),R.push(p[1+O]);var Y="return function "+Pt("methodCaller_"+I)+`(handle, name, destructors, args) {
|
|
66
|
+
`,oe=0;for(O=0;O<a-1;++O)Y+=" var arg"+O+" = argType"+O+".readValueFromPointer(args"+(oe?"+"+oe:"")+`);
|
|
67
|
+
`,oe+=p[O+1].argPackAdvance;for(Y+=" var rv = handle[name]("+k+`);
|
|
68
|
+
`,O=0;O<a-1;++O)p[O+1].deleteObject&&(Y+=" argType"+O+".deleteObject(arg"+O+`);
|
|
69
|
+
`);h.isVoid||(Y+=` return retType.toWireType(destructors, rv);
|
|
70
|
+
`),Y+=`};
|
|
71
|
+
`,b.push(Y);var se,ie,ve=In(Function,b).apply(null,R);return se=ve,ie=K.length,K.push(se),y=ie,W[I]=y,y},a:()=>{Mr("")},e:function(){return Date.now()},v:()=>pe.length,A:(a,d,p)=>pe.copyWithin(a,d,d+p),u:a=>{pe.length,Mr("OOM")},y:(a,d)=>{var p=0;return Ne().forEach(function(h,I){var y=d+p;Ue[a+4*I>>2]=y,((b,R)=>{for(var k=0;k<b.length;++k)ee[0|R++]=b.charCodeAt(k);ee[0|R]=0})(h,y),p+=h.length+1}),0},z:(a,d)=>{var p=Ne();Ue[a>>2]=p.length;var h=0;return p.forEach(function(I){h+=I.length+1}),Ue[d>>2]=h,0},i:function(a){try{var d=w.getStreamFromFD(a);return f.close(d),0}catch(p){if(f===void 0||p.name!=="ErrnoError")throw p;return p.errno}},x:function(a,d){try{var p=w.getStreamFromFD(a),h=p.tty?2:f.isDir(p.mode)?3:f.isLink(p.mode)?7:4;return ee[d|0]=h,ae[d+2>>1]=0,Ze=[0,(_e=0,+Math.abs(_e)>=1?_e>0?+Math.floor(_e/4294967296)>>>0:~~+Math.ceil((_e-+(~~_e>>>0))/4294967296)>>>0:0)],X[d+8>>2]=Ze[0],X[d+12>>2]=Ze[1],Ze=[0,(_e=0,+Math.abs(_e)>=1?_e>0?+Math.floor(_e/4294967296)>>>0:~~+Math.ceil((_e-+(~~_e>>>0))/4294967296)>>>0:0)],X[d+16>>2]=Ze[0],X[d+20>>2]=Ze[1],0}catch(I){if(f===void 0||I.name!=="ErrnoError")throw I;return I.errno}},B:function(a,d,p,h){try{var I=((y,b,R,k)=>{for(var O=0,Y=0;Y<R;Y++){var oe=Ue[b>>2],se=Ue[b+4>>2];b+=8;var ie=f.read(y,ee,oe,se,k);if(ie<0)return-1;if(O+=ie,ie<se)break;k!==void 0&&(k+=ie)}return O})(w.getStreamFromFD(a),d,p);return Ue[h>>2]=I,0}catch(y){if(f===void 0||y.name!=="ErrnoError")throw y;return y.errno}},s:function(a,d,p,h,I){var y,b,R=(b=p)+2097152>>>0<4194305-!!(y=d)?(y>>>0)+4294967296*b:NaN;try{if(isNaN(R))return 61;var k=w.getStreamFromFD(a);return f.llseek(k,R,h),Ze=[k.position>>>0,(_e=k.position,+Math.abs(_e)>=1?_e>0?+Math.floor(_e/4294967296)>>>0:~~+Math.ceil((_e-+(~~_e>>>0))/4294967296)>>>0:0)],X[I>>2]=Ze[0],X[I+4>>2]=Ze[1],k.getdents&&R===0&&h===0&&(k.getdents=null),0}catch(O){if(f===void 0||O.name!=="ErrnoError")throw O;return O.errno}},h:function(a,d,p,h){try{var I=((y,b,R,k)=>{for(var O=0,Y=0;Y<R;Y++){var oe=Ue[b>>2],se=Ue[b+4>>2];b+=8;var ie=f.write(y,ee,oe,se,k);if(ie<0)return-1;O+=ie,k!==void 0&&(k+=ie)}return O})(w.getStreamFromFD(a),d,p);return Ue[h>>2]=I,0}catch(y){if(f===void 0||y.name!=="ErrnoError")throw y;return y.errno}}},$i=(function(){var a,d,p,h,I={a:Nt};function y(b,R){var k,O,Y=b.exports;return M=(B=Y).E,k=M.buffer,o.HEAP8=ee=new Int8Array(k),o.HEAP16=ae=new Int16Array(k),o.HEAP32=X=new Int32Array(k),o.HEAPU8=pe=new Uint8Array(k),o.HEAPU16=Xe=new Uint16Array(k),o.HEAPU32=Ue=new Uint32Array(k),o.HEAPF32=Eo=new Float32Array(k),o.HEAPF64=ln=new Float64Array(k),mn=B.H,O=B.F,us.unshift(O),_o(),Y}if(ls(),o.instantiateWasm)try{return o.instantiateWasm(I,y)}catch(b){x("Module.instantiateWasm callback failed with error: "+b),r(b)}(a=v,d=Xr,p=I,h=function(b){y(b.instance)},a||typeof WebAssembly.instantiateStreaming!="function"||Ot(d)||typeof fetch!="function"?wr(d,p,h):fetch(d,{credentials:"same-origin"}).then(b=>WebAssembly.instantiateStreaming(b,p).then(h,function(R){return x("wasm streaming compile failed: "+R),x("falling back to ArrayBuffer instantiation"),wr(d,p,h)}))).catch(r)}(),a=>($i=B.G)(a)),Rt=a=>(Rt=B.I)(a),Sn=()=>(Sn=B.J)(),_r=a=>(_r=B.K)(a),An=(o.__embind_initialize_bindings=()=>(o.__embind_initialize_bindings=B.L)(),a=>(An=B.M)(a));o.dynCall_jiji=(a,d,p,h,I)=>(o.dynCall_jiji=B.N)(a,d,p,h,I),o._ff_h264_cabac_tables=67061;function Is(){function a(){Je||(Je=!0,o.calledRun=!0,pn||(o.noFSInit||f.init.initialized||f.init(),f.ignorePermissions=!1,ce.init(),Di(us),e(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),function(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)d=o.postRun.shift(),Ni.unshift(d);var d;Di(Ni)}()))}nr>0||(function(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)d=o.preRun.shift(),Dr.unshift(d);var d;Di(Dr)}(),nr>0||(o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),a()},1)):a()))}if(zr=function a(){Je||Is(),Je||(zr=a)},o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return Is(),t.ready}})(),WI=HI,GI=class extends Da{constructor(i){super(WI,i!=null&&i.wasmPath?fetch(i==null?void 0:i.wasmPath).then(t=>t.arrayBuffer()):void 0,i==null?void 0:i.workerMode,i==null?void 0:i.canvas,i==null?void 0:i.yuvMode)}},Kw=(()=>{var i=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return function(t={}){var e,r,o=t;o.ready=new Promise((S,T)=>{e=S,r=T});var s,n=Object.assign({},o),c=typeof window=="object",l=typeof importScripts=="function",m=(typeof process=="object"&&typeof process.versions=="object"&&process.versions.node,"");(c||l)&&(l?m=self.location.href:typeof document!="undefined"&&document.currentScript&&(m=document.currentScript.src),i&&(m=i),m=m.indexOf("blob:")!==0?m.substr(0,m.replace(/[?#].*/,"").lastIndexOf("/")+1):"",l&&(s=S=>{var T=new XMLHttpRequest;return T.open("GET",S,!1),T.responseType="arraybuffer",T.send(null),new Uint8Array(T.response)}));var E,g=o.print||console.log.bind(console),_=o.printErr||console.error.bind(console);Object.assign(o,n),n=null,o.arguments&&o.arguments,o.thisProgram&&o.thisProgram,o.quit&&o.quit,o.wasmBinary&&(E=o.wasmBinary);var v,L;o.noExitRuntime,typeof WebAssembly!="object"&&nr("no native wasm support detected");var x,M,B,ee,pe,ae,Xe,X,Ue,Eo=!1,ln=[],mn=[],pn=[],Dr=0,us=null,Ni=null;function nr(S){o.onAbort&&o.onAbort(S),_(S="Aborted("+S+")"),Eo=!0,S+=". Build with -sASSERTIONS for more info.";var T=new WebAssembly.RuntimeError(S);throw r(T),T}var te,zr;function ls(S){return S.startsWith("data:application/octet-stream;base64,")}function _o(S){if(S==te&&E)return new Uint8Array(E);if(s)return s(S);throw"both async and sync fetching of the wasm failed"}function Mr(S,T,C){return function(D){return E||!c&&!l||typeof fetch!="function"?Promise.resolve().then(()=>_o(D)):fetch(D,{credentials:"same-origin"}).then(F=>{if(!F.ok)throw"failed to load wasm binary file at '"+D+"'";return F.arrayBuffer()}).catch(()=>_o(D))}(S).then(D=>WebAssembly.instantiate(D,T)).then(D=>D).then(C,D=>{_("failed to asynchronously prepare wasm: "+D),nr(D)})}ls(te="videodec_simd.wasm")||(zr=te,te=o.locateFile?o.locateFile(zr,m):m+zr);var Xr=S=>{for(;S.length>0;)S.shift()(o)};function hn(S){this.excPtr=S,this.ptr=S-24,this.set_type=function(T){ae[this.ptr+4>>2]=T},this.get_type=function(){return ae[this.ptr+4>>2]},this.set_destructor=function(T){ae[this.ptr+8>>2]=T},this.get_destructor=function(){return ae[this.ptr+8>>2]},this.set_caught=function(T){T=T?1:0,x[this.ptr+12|0]=T},this.get_caught=function(){return x[this.ptr+12|0]!=0},this.set_rethrown=function(T){T=T?1:0,x[this.ptr+13|0]=T},this.get_rethrown=function(){return x[this.ptr+13|0]!=0},this.init=function(T,C){this.set_adjusted_ptr(0),this.set_type(T),this.set_destructor(C)},this.set_adjusted_ptr=function(T){ae[this.ptr+16>>2]=T},this.get_adjusted_ptr=function(){return ae[this.ptr+16>>2]},this.get_exception_ptr=function(){if(dc(this.get_type()))return ae[this.excPtr>>2];var T=this.get_adjusted_ptr();return T!==0?T:this.excPtr}}function _e(S){switch(S){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(`Unknown type size: ${S}`)}}var Ze=void 0;function Ot(S){for(var T="",C=S;M[C];)T+=Ze[M[C++]];return T}var j={},wr={},Di={},Mi=void 0;function me(S){throw new Mi(S)}var fn=void 0;function qt(S){throw new fn(S)}function wi(S,T,C){function D(z){var K=C(z);K.length!==S.length&&qt("Mismatched type converter count");for(var W=0;W<S.length;++W)xt(S[W],K[W])}S.forEach(function(z){Di[z]=T});var F=new Array(T.length),H=[],G=0;T.forEach((z,K)=>{wr.hasOwnProperty(z)?F[K]=wr[z]:(H.push(z),j.hasOwnProperty(z)||(j[z]=[]),j[z].push(()=>{F[K]=wr[z],++G===H.length&&D(F)}))}),H.length===0&&D(F)}function xt(S,T,C={}){if(!("argPackAdvance"in T))throw new TypeError("registerType registeredInstance requires argPackAdvance");return function(D,F,H={}){var G=F.name;if(D||me(`type "${G}" must have a positive integer typeid pointer`),wr.hasOwnProperty(D)){if(H.ignoreDuplicateRegistrations)return;me(`Cannot register type '${G}' twice`)}if(wr[D]=F,delete Di[D],j.hasOwnProperty(D)){var z=j[D];delete j[D],z.forEach(K=>K())}}(S,T,C)}function gn(S){if(!(this instanceof Yt)||!(S instanceof Yt))return!1;for(var T=this.$$.ptrType.registeredClass,C=this.$$.ptr,D=S.$$.ptrType.registeredClass,F=S.$$.ptr;T.baseClass;)C=T.upcast(C),T=T.baseClass;for(;D.baseClass;)F=D.upcast(F),D=D.baseClass;return T===D&&C===F}function To(S){me(S.$$.ptrType.registeredClass.name+" instance already deleted")}var Io=!1;function ms(S){}function ce(S){S.count.value-=1,S.count.value===0&&function(T){T.smartPtr?T.smartPtrType.rawDestructor(T.smartPtr):T.ptrType.registeredClass.rawDestructor(T.ptr)}(S)}function En(S,T,C){if(T===C)return S;if(C.baseClass===void 0)return null;var D=En(S,T,C.baseClass);return D===null?null:C.downcast(D)}var ye={};function Ou(){return Object.keys(Yr).length}function xu(){var S=[];for(var T in Yr)Yr.hasOwnProperty(T)&&S.push(Yr[T]);return S}var Qr=[];function f(){for(;Qr.length;){var S=Qr.pop();S.$$.deleteScheduled=!1,S.delete()}}var Oi=void 0;function w(S){Oi=S,Qr.length&&Oi&&Oi(f)}var Yr={};function Ga(S,T){return T=function(C,D){for(D===void 0&&me("ptr should not be undefined");C.baseClass;)D=C.upcast(D),C=C.baseClass;return D}(S,T),Yr[T]}function bt(S,T){return T.ptrType&&T.ptr||qt("makeClassHandle requires ptr and ptrType"),!!T.smartPtrType!=!!T.smartPtr&&qt("Both smartPtrType and smartPtr must be specified"),T.count={value:1},ar(Object.create(S,{$$:{value:T}}))}function xi(S){var T=this.getPointee(S);if(!T)return this.destructor(S),null;var C=Ga(this.registeredClass,T);if(C!==void 0){if(C.$$.count.value===0)return C.$$.ptr=T,C.$$.smartPtr=S,C.clone();var D=C.clone();return this.destructor(S),D}function F(){return this.isSmartPointer?bt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:T,smartPtrType:this,smartPtr:S}):bt(this.registeredClass.instancePrototype,{ptrType:this,ptr:S})}var H,G=this.registeredClass.getActualType(T),z=ye[G];if(!z)return F.call(this);H=this.isConst?z.constPointerType:z.pointerType;var K=En(T,this.registeredClass,H.registeredClass);return K===null?F.call(this):this.isSmartPointer?bt(H.registeredClass.instancePrototype,{ptrType:H,ptr:K,smartPtrType:this,smartPtr:S}):bt(H.registeredClass.instancePrototype,{ptrType:H,ptr:K})}var ar=function(S){return typeof FinalizationRegistry=="undefined"?(ar=T=>T,S):(Io=new FinalizationRegistry(T=>{ce(T.$$)}),ms=T=>Io.unregister(T),(ar=T=>{var C=T.$$;if(C.smartPtr){var D={$$:C};Io.register(T,D,T)}return T})(S))};function ps(){if(this.$$.ptr||To(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var S,T=ar(Object.create(Object.getPrototypeOf(this),{$$:{value:(S=this.$$,{count:S.count,deleteScheduled:S.deleteScheduled,preservePointerOnDelete:S.preservePointerOnDelete,ptr:S.ptr,ptrType:S.ptrType,smartPtr:S.smartPtr,smartPtrType:S.smartPtrType})}}));return T.$$.count.value+=1,T.$$.deleteScheduled=!1,T}function Pi(){this.$$.ptr||To(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&me("Object already scheduled for deletion"),ms(this),ce(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Ve(){return!this.$$.ptr}function ja(){return this.$$.ptr||To(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&me("Object already scheduled for deletion"),Qr.push(this),Qr.length===1&&Oi&&Oi(f),this.$$.deleteScheduled=!0,this}function Yt(){}function Or(S){if(S===void 0)return"_unknown";var T=(S=S.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return T>=48&&T<=57?`_${S}`:S}function Zt(S,T){return S=Or(S),{[S]:function(){return T.apply(this,arguments)}}[S]}function qa(S,T,C){if(S[T].overloadTable===void 0){var D=S[T];S[T]=function(){return S[T].overloadTable.hasOwnProperty(arguments.length)||me(`Function '${C}' called with an invalid number of arguments (${arguments.length}) - expects one of (${S[T].overloadTable})!`),S[T].overloadTable[arguments.length].apply(this,arguments)},S[T].overloadTable=[],S[T].overloadTable[D.argCount]=D}}function _n(S,T,C,D,F,H,G,z){this.name=S,this.constructor=T,this.instancePrototype=C,this.rawDestructor=D,this.baseClass=F,this.getActualType=H,this.upcast=G,this.downcast=z,this.pureVirtualFunctions=[]}function So(S,T,C){for(;T!==C;)T.upcast||me(`Expected null or instance of ${C.name}, got an instance of ${T.name}`),S=T.upcast(S),T=T.baseClass;return S}function Ja(S,T){if(T===null)return this.isReference&&me(`null is not a valid ${this.name}`),0;T.$$||me(`Cannot pass "${vo(T)}" as a ${this.name}`),T.$$.ptr||me(`Cannot pass deleted object as a pointer of type ${this.name}`);var C=T.$$.ptrType.registeredClass;return So(T.$$.ptr,C,this.registeredClass)}function za(S,T){var C;if(T===null)return this.isReference&&me(`null is not a valid ${this.name}`),this.isSmartPointer?(C=this.rawConstructor(),S!==null&&S.push(this.rawDestructor,C),C):0;T.$$||me(`Cannot pass "${vo(T)}" as a ${this.name}`),T.$$.ptr||me(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&T.$$.ptrType.isConst&&me(`Cannot convert argument of type ${T.$$.smartPtrType?T.$$.smartPtrType.name:T.$$.ptrType.name} to parameter type ${this.name}`);var D=T.$$.ptrType.registeredClass;if(C=So(T.$$.ptr,D,this.registeredClass),this.isSmartPointer)switch(T.$$.smartPtr===void 0&&me("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:T.$$.smartPtrType===this?C=T.$$.smartPtr:me(`Cannot convert argument of type ${T.$$.smartPtrType?T.$$.smartPtrType.name:T.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:C=T.$$.smartPtr;break;case 2:if(T.$$.smartPtrType===this)C=T.$$.smartPtr;else{var F=T.clone();C=this.rawShare(C,fs.toHandle(function(){F.delete()})),S!==null&&S.push(this.rawDestructor,C)}break;default:me("Unsupporting sharing policy")}return C}function Xa(S,T){if(T===null)return this.isReference&&me(`null is not a valid ${this.name}`),0;T.$$||me(`Cannot pass "${vo(T)}" as a ${this.name}`),T.$$.ptr||me(`Cannot pass deleted object as a pointer of type ${this.name}`),T.$$.ptrType.isConst&&me(`Cannot convert argument of type ${T.$$.ptrType.name} to parameter type ${this.name}`);var C=T.$$.ptrType.registeredClass;return So(T.$$.ptr,C,this.registeredClass)}function Ao(S){return this.fromWireType(pe[S>>2])}function Pu(S){return this.rawGetPointee&&(S=this.rawGetPointee(S)),S}function ku(S){this.rawDestructor&&this.rawDestructor(S)}function yo(S){S!==null&&S.delete()}function Kt(S,T,C,D,F,H,G,z,K,W,he){this.name=S,this.registeredClass=T,this.isReference=C,this.isConst=D,this.isSmartPointer=F,this.pointeeType=H,this.sharingPolicy=G,this.rawGetPointee=z,this.rawConstructor=K,this.rawShare=W,this.rawDestructor=he,F||T.baseClass!==void 0?this.toWireType=za:D?(this.toWireType=Ja,this.destructorFunction=null):(this.toWireType=Xa,this.destructorFunction=null)}var xr=[],Qa=S=>{var T=xr[S];return T||(S>=xr.length&&(xr.length=S+1),xr[S]=T=Ue.get(S)),T},bo=(S,T,C)=>S.includes("j")?((D,F,H)=>{var G=o["dynCall_"+D];return H&&H.length?G.apply(null,[F].concat(H)):G.call(null,F)})(S,T,C):Qa(T).apply(null,C);function ki(S,T){var C,D,F,H=(S=Ot(S)).includes("j")?(C=S,D=T,F=[],function(){return F.length=0,Object.assign(F,arguments),bo(C,D,F)}):Qa(T);return typeof H!="function"&&me(`unknown function pointer with signature ${S}: ${T}`),H}var Ro=void 0;function Ya(S){var T=Ts(S),C=Ot(T);return Er(T),C}function Li(S,T){var C=[],D={};throw T.forEach(function F(H){D[H]||wr[H]||(Di[H]?Di[H].forEach(F):(C.push(H),D[H]=!0))}),new Ro(`${S}: `+C.map(Ya).join([", "]))}function Za(S,T){for(var C=[],D=0;D<S;D++)C.push(ae[T+4*D>>2]);return C}function Lu(S){for(;S.length;){var T=S.pop();S.pop()(T)}}function Ka(S,T){if(!(S instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof S} which is not a function`);var C=Zt(S.name||"unknownFunctionName",function(){});C.prototype=S.prototype;var D=new C,F=S.apply(D,T);return F instanceof Object?F:D}function ec(S,T,C,D,F,H){var G=T.length;G<2&&me("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var z=T[1]!==null&&C!==null,K=!1,W=1;W<T.length;++W)if(T[W]!==null&&T[W].destructorFunction===void 0){K=!0;break}var he=T[0].name!=="void",Ne="",Re="";for(W=0;W<G-2;++W)Ne+=(W!==0?", ":"")+"arg"+W,Re+=(W!==0?", ":"")+"arg"+W+"Wired";var ge=`
|
|
72
|
+
return function ${Or(S)}(${Ne}) {
|
|
73
|
+
if (arguments.length !== ${G-2}) {
|
|
74
|
+
throwBindingError('function ${S} called with ${arguments.length} arguments, expected ${G-2} args!');
|
|
75
|
+
}`;K&&(ge+=`var destructors = [];
|
|
76
|
+
`);var De=K?"destructors":"null",rt=["throwBindingError","invoker","fn","runDestructors","retType","classParam"],qe=[me,D,F,Lu,T[0],T[1]];for(z&&(ge+="var thisWired = classParam.toWireType("+De+`, this);
|
|
77
|
+
`),W=0;W<G-2;++W)ge+="var arg"+W+"Wired = argType"+W+".toWireType("+De+", arg"+W+"); // "+T[W+2].name+`
|
|
78
|
+
`,rt.push("argType"+W),qe.push(T[W+2]);if(z&&(Re="thisWired"+(Re.length>0?", ":"")+Re),ge+=(he||H?"var rv = ":"")+"invoker(fn"+(Re.length>0?", ":"")+Re+`);
|
|
79
|
+
`,K)ge+=`runDestructors(destructors);
|
|
80
|
+
`;else for(W=z?1:2;W<T.length;++W){var pt=W===1?"thisWired":"arg"+(W-2)+"Wired";T[W].destructorFunction!==null&&(ge+=pt+"_dtor("+pt+"); // "+T[W].name+`
|
|
81
|
+
`,rt.push(pt+"_dtor"),qe.push(T[W].destructorFunction))}return he&&(ge+=`var ret = retType.fromWireType(rv);
|
|
82
|
+
return ret;
|
|
83
|
+
`),ge+=`}
|
|
84
|
+
`,rt.push(ge),Ka(Function,rt).apply(null,qe)}function fr(){this.allocated=[void 0],this.freelist=[]}var Pt=new fr;function hs(S){S>=Pt.reserved&&--Pt.get(S).refcount==0&&Pt.free(S)}function tc(){for(var S=0,T=Pt.reserved;T<Pt.allocated.length;++T)Pt.allocated[T]!==void 0&&++S;return S}var fs={toValue:S=>(S||me("Cannot use deleted val. handle = "+S),Pt.get(S).value),toHandle:S=>{switch(S){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return Pt.allocate({refcount:1,value:S})}}};function vo(S){if(S===null)return"null";var T=typeof S;return T==="object"||T==="array"||T==="function"?S.toString():""+S}function Uu(S,T){switch(T){case 2:return function(C){return this.fromWireType(Xe[C>>2])};case 3:return function(C){return this.fromWireType(X[C>>3])};default:throw new TypeError("Unknown float type: "+S)}}function Vu(S,T,C){switch(T){case 0:return C?function(D){return x[D]}:function(D){return M[D]};case 1:return C?function(D){return B[D>>1]}:function(D){return ee[D>>1]};case 2:return C?function(D){return pe[D>>2]}:function(D){return ae[D>>2]};default:throw new TypeError("Unknown integer type: "+S)}}var rc=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):void 0,Co=(S,T,C)=>{for(var D=T+C,F=T;S[F]&&!(F>=D);)++F;if(F-T>16&&S.buffer&&rc)return rc.decode(S.subarray(T,F));for(var H="";T<F;){var G=S[T++];if(128&G){var z=63&S[T++];if((224&G)!=192){var K=63&S[T++];if((G=(240&G)==224?(15&G)<<12|z<<6|K:(7&G)<<18|z<<12|K<<6|63&S[T++])<65536)H+=String.fromCharCode(G);else{var W=G-65536;H+=String.fromCharCode(55296|W>>10,56320|1023&W)}}else H+=String.fromCharCode((31&G)<<6|z)}else H+=String.fromCharCode(G)}return H},Fu=(S,T)=>S?Co(M,S,T):"",ic=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):void 0,$u=(S,T)=>{for(var C=S,D=C>>1,F=D+T/2;!(D>=F)&&ee[D];)++D;if((C=D<<1)-S>32&&ic)return ic.decode(M.subarray(S,C));for(var H="",G=0;!(G>=T/2);++G){var z=B[S+2*G>>1];if(z==0)break;H+=String.fromCharCode(z)}return H},gr=(S,T,C)=>{if(C===void 0&&(C=2147483647),C<2)return 0;for(var D=T,F=(C-=2)<2*S.length?C/2:S.length,H=0;H<F;++H){var G=S.charCodeAt(H);B[T>>1]=G,T+=2}return B[T>>1]=0,T-D},gs=S=>2*S.length,oc=(S,T)=>{for(var C=0,D="";!(C>=T/4);){var F=pe[S+4*C>>2];if(F==0)break;if(++C,F>=65536){var H=F-65536;D+=String.fromCharCode(55296|H>>10,56320|1023&H)}else D+=String.fromCharCode(F)}return D},Bu=(S,T,C)=>{if(C===void 0&&(C=2147483647),C<4)return 0;for(var D=T,F=D+C-4,H=0;H<S.length;++H){var G=S.charCodeAt(H);if(G>=55296&&G<=57343&&(G=65536+((1023&G)<<10)|1023&S.charCodeAt(++H)),pe[T>>2]=G,(T+=4)+4>F)break}return pe[T>>2]=0,T-D},Ui=S=>{for(var T=0,C=0;C<S.length;++C){var D=S.charCodeAt(C);D>=55296&&D<=57343&&++C,T+=4}return T},sc={},Es=[],_s=[],Tn;Tn=()=>performance.now();var nc,In,Vi,ac=[null,[],[]];(function(){for(var S=new Array(256),T=0;T<256;++T)S[T]=String.fromCharCode(T);Ze=S})(),Mi=o.BindingError=class extends Error{constructor(S){super(S),this.name="BindingError"}},fn=o.InternalError=class extends Error{constructor(S){super(S),this.name="InternalError"}},Yt.prototype.isAliasOf=gn,Yt.prototype.clone=ps,Yt.prototype.delete=Pi,Yt.prototype.isDeleted=Ve,Yt.prototype.deleteLater=ja,o.getInheritedInstanceCount=Ou,o.getLiveInheritedInstances=xu,o.flushPendingDeletes=f,o.setDelayFunction=w,Kt.prototype.getPointee=Pu,Kt.prototype.destructor=ku,Kt.prototype.argPackAdvance=8,Kt.prototype.readValueFromPointer=Ao,Kt.prototype.deleteObject=yo,Kt.prototype.fromWireType=xi,Ro=o.UnboundTypeError=(nc=Error,(Vi=Zt(In="UnboundTypeError",function(S){this.name=In,this.message=S;var T=new Error(S).stack;T!==void 0&&(this.stack=this.toString()+`
|
|
85
|
+
`+T.replace(/^Error(:[^\n]*)?\n/,""))})).prototype=Object.create(nc.prototype),Vi.prototype.constructor=Vi,Vi.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},Vi),Object.assign(fr.prototype,{get(S){return this.allocated[S]},has(S){return this.allocated[S]!==void 0},allocate(S){var T=this.freelist.pop()||this.allocated.length;return this.allocated[T]=S,T},free(S){this.allocated[S]=void 0,this.freelist.push(S)}}),Pt.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),Pt.reserved=Pt.allocated.length,o.count_emval_handles=tc;var kt,cc={o:function(S,T,C){throw new hn(S).init(T,C),S},r:function(S,T,C,D,F){},m:function(S,T,C,D,F){var H=_e(C);xt(S,{name:T=Ot(T),fromWireType:function(G){return!!G},toWireType:function(G,z){return z?D:F},argPackAdvance:8,readValueFromPointer:function(G){var z;if(C===1)z=x;else if(C===2)z=B;else{if(C!==4)throw new TypeError("Unknown boolean type size: "+T);z=pe}return this.fromWireType(z[G>>H])},destructorFunction:null})},q:function(S,T,C,D,F,H,G,z,K,W,he,Ne,Re){he=Ot(he),H=ki(F,H),z&&(z=ki(G,z)),W&&(W=ki(K,W)),Re=ki(Ne,Re);var ge=Or(he);(function(De,rt,qe){o.hasOwnProperty(De)?((qe===void 0||o[De].overloadTable!==void 0&&o[De].overloadTable[qe]!==void 0)&&me(`Cannot register public name '${De}' twice`),qa(o,De,De),o.hasOwnProperty(qe)&&me(`Cannot register multiple overloads of a function with the same number of arguments (${qe})!`),o[De].overloadTable[qe]=rt):(o[De]=rt,qe!==void 0&&(o[De].numArguments=qe))})(ge,function(){Li(`Cannot construct ${he} due to unbound types`,[D])}),wi([S,T,C],D?[D]:[],function(De){var rt,qe;De=De[0],qe=D?(rt=De.registeredClass).instancePrototype:Yt.prototype;var pt=Zt(ge,function(){if(Object.getPrototypeOf(this)!==Je)throw new Mi("Use 'new' to construct "+he);if(Nt.constructor_body===void 0)throw new Mi(he+" has no accessible constructor");var _r=Nt.constructor_body[arguments.length];if(_r===void 0)throw new Mi(`Tried to invoke ctor of ${he} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(Nt.constructor_body).toString()}) parameters instead!`);return _r.apply(this,arguments)}),Je=Object.create(qe,{constructor:{value:pt}});pt.prototype=Je;var Nt=new _n(he,pt,Je,Re,rt,H,z,W);Nt.baseClass&&(Nt.baseClass.__derivedClasses===void 0&&(Nt.baseClass.__derivedClasses=[]),Nt.baseClass.__derivedClasses.push(Nt));var $i=new Kt(he,Nt,!0,!1,!1),Rt=new Kt(he+"*",Nt,!1,!1,!1),Sn=new Kt(he+" const*",Nt,!1,!0,!1);return ye[S]={pointerType:Rt,constPointerType:Sn},function(_r,An,Is){o.hasOwnProperty(_r)||qt("Replacing nonexistant public symbol"),o[_r].overloadTable!==void 0&&Is!==void 0?o[_r].overloadTable[Is]=An:(o[_r]=An,o[_r].argCount=Is)}(ge,pt),[$i,Rt,Sn]})},p:function(S,T,C,D,F,H){var G=Za(T,C);F=ki(D,F),wi([],[S],function(z){var K=`constructor ${(z=z[0]).name}`;if(z.registeredClass.constructor_body===void 0&&(z.registeredClass.constructor_body=[]),z.registeredClass.constructor_body[T-1]!==void 0)throw new Mi(`Cannot register multiple constructors with identical number of parameters (${T-1}) for class '${z.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return z.registeredClass.constructor_body[T-1]=()=>{Li(`Cannot construct ${z.name} due to unbound types`,G)},wi([],G,function(W){return W.splice(1,0,null),z.registeredClass.constructor_body[T-1]=ec(K,W,null,F,H),[]}),[]})},d:function(S,T,C,D,F,H,G,z,K){var W=Za(C,D);T=Ot(T),H=ki(F,H),wi([],[S],function(he){var Ne=`${(he=he[0]).name}.${T}`;function Re(){Li(`Cannot call ${Ne} due to unbound types`,W)}T.startsWith("@@")&&(T=Symbol[T.substring(2)]),z&&he.registeredClass.pureVirtualFunctions.push(T);var ge=he.registeredClass.instancePrototype,De=ge[T];return De===void 0||De.overloadTable===void 0&&De.className!==he.name&&De.argCount===C-2?(Re.argCount=C-2,Re.className=he.name,ge[T]=Re):(qa(ge,T,Ne),ge[T].overloadTable[C-2]=Re),wi([],W,function(rt){var qe=ec(Ne,rt,he,H,G,K);return ge[T].overloadTable===void 0?(qe.argCount=C-2,ge[T]=qe):ge[T].overloadTable[C-2]=qe,[]}),[]})},u:function(S,T){xt(S,{name:T=Ot(T),fromWireType:function(C){var D=fs.toValue(C);return hs(C),D},toWireType:function(C,D){return fs.toHandle(D)},argPackAdvance:8,readValueFromPointer:Ao,destructorFunction:null})},k:function(S,T,C){var D=_e(C);xt(S,{name:T=Ot(T),fromWireType:function(F){return F},toWireType:function(F,H){return H},argPackAdvance:8,readValueFromPointer:Uu(T,D),destructorFunction:null})},b:function(S,T,C,D,F){T=Ot(T),F===-1&&(F=4294967295);var H=_e(C),G=W=>W;if(D===0){var z=32-8*C;G=W=>W<<z>>>z}var K=T.includes("unsigned");xt(S,{name:T,fromWireType:G,toWireType:K?function(W,he){return this.name,he>>>0}:function(W,he){return this.name,he},argPackAdvance:8,readValueFromPointer:Vu(T,H,D!==0),destructorFunction:null})},a:function(S,T,C){var D=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][T];function F(H){var G=ae,z=G[H>>=2],K=G[H+1];return new D(G.buffer,K,z)}xt(S,{name:C=Ot(C),fromWireType:F,argPackAdvance:8,readValueFromPointer:F},{ignoreDuplicateRegistrations:!0})},j:function(S,T){var C=(T=Ot(T))==="std::string";xt(S,{name:T,fromWireType:function(D){var F,H=ae[D>>2],G=D+4;if(C)for(var z=G,K=0;K<=H;++K){var W=G+K;if(K==H||M[W]==0){var he=Fu(z,W-z);F===void 0?F=he:(F+="\0",F+=he),z=W+1}}else{var Ne=new Array(H);for(K=0;K<H;++K)Ne[K]=String.fromCharCode(M[G+K]);F=Ne.join("")}return Er(D),F},toWireType:function(D,F){var H;F instanceof ArrayBuffer&&(F=new Uint8Array(F));var G=typeof F=="string";G||F instanceof Uint8Array||F instanceof Uint8ClampedArray||F instanceof Int8Array||me("Cannot pass non-string to std::string"),H=C&&G?(Ne=>{for(var Re=0,ge=0;ge<Ne.length;++ge){var De=Ne.charCodeAt(ge);De<=127?Re++:De<=2047?Re+=2:De>=55296&&De<=57343?(Re+=4,++ge):Re+=3}return Re})(F):F.length;var z=Fi(4+H+1),K=z+4;if(ae[z>>2]=H,C&&G)((Ne,Re,ge,De)=>{if(!(De>0))return 0;for(var rt=ge,qe=ge+De-1,pt=0;pt<Ne.length;++pt){var Je=Ne.charCodeAt(pt);if(Je>=55296&&Je<=57343&&(Je=65536+((1023&Je)<<10)|1023&Ne.charCodeAt(++pt)),Je<=127){if(ge>=qe)break;Re[ge++]=Je}else if(Je<=2047){if(ge+1>=qe)break;Re[ge++]=192|Je>>6,Re[ge++]=128|63&Je}else if(Je<=65535){if(ge+2>=qe)break;Re[ge++]=224|Je>>12,Re[ge++]=128|Je>>6&63,Re[ge++]=128|63&Je}else{if(ge+3>=qe)break;Re[ge++]=240|Je>>18,Re[ge++]=128|Je>>12&63,Re[ge++]=128|Je>>6&63,Re[ge++]=128|63&Je}}Re[ge]=0})(F,M,K,H+1);else if(G)for(var W=0;W<H;++W){var he=F.charCodeAt(W);he>255&&(Er(K),me("String has UTF-16 code units that do not fit in 8 bits")),M[K+W]=he}else for(W=0;W<H;++W)M[K+W]=F[W];return D!==null&&D.push(Er,z),z},argPackAdvance:8,readValueFromPointer:Ao,destructorFunction:function(D){Er(D)}})},g:function(S,T,C){var D,F,H,G,z;C=Ot(C),T===2?(D=$u,F=gr,G=gs,H=()=>ee,z=1):T===4&&(D=oc,F=Bu,G=Ui,H=()=>ae,z=2),xt(S,{name:C,fromWireType:function(K){for(var W,he=ae[K>>2],Ne=H(),Re=K+4,ge=0;ge<=he;++ge){var De=K+4+ge*T;if(ge==he||Ne[De>>z]==0){var rt=D(Re,De-Re);W===void 0?W=rt:(W+="\0",W+=rt),Re=De+T}}return Er(K),W},toWireType:function(K,W){typeof W!="string"&&me(`Cannot pass non-string to C++ string type ${C}`);var he=G(W),Ne=Fi(4+he+T);return ae[Ne>>2]=he>>z,F(W,Ne+4,he+T),K!==null&&K.push(Er,Ne),Ne},argPackAdvance:8,readValueFromPointer:Ao,destructorFunction:function(K){Er(K)}})},n:function(S,T){xt(S,{isVoid:!0,name:T=Ot(T),argPackAdvance:0,fromWireType:function(){},toWireType:function(C,D){}})},e:function(S,T,C,D){var F,H;(S=Es[S])(T=fs.toValue(T),C=(H=sc[F=C])===void 0?Ot(F):H,null,D)},l:hs,h:function(S,T){var C=function(rt,qe){for(var pt,Je,Nt,$i=new Array(rt),Rt=0;Rt<rt;++Rt)$i[Rt]=(pt=ae[qe+4*Rt>>2],Je="parameter "+Rt,Nt=void 0,(Nt=wr[pt])===void 0&&me(Je+" has unknown type "+Ya(pt)),Nt);return $i}(S,T),D=C[0],F=D.name+"_$"+C.slice(1).map(function(rt){return rt.name}).join("_")+"$",H=_s[F];if(H!==void 0)return H;for(var G=["retType"],z=[D],K="",W=0;W<S-1;++W)K+=(W!==0?", ":"")+"arg"+W,G.push("argType"+W),z.push(C[1+W]);var he="return function "+Or("methodCaller_"+F)+`(handle, name, destructors, args) {
|
|
86
|
+
`,Ne=0;for(W=0;W<S-1;++W)he+=" var arg"+W+" = argType"+W+".readValueFromPointer(args"+(Ne?"+"+Ne:"")+`);
|
|
87
|
+
`,Ne+=C[W+1].argPackAdvance;for(he+=" var rv = handle[name]("+K+`);
|
|
88
|
+
`,W=0;W<S-1;++W)C[W+1].deleteObject&&(he+=" argType"+W+".deleteObject(arg"+W+`);
|
|
89
|
+
`);D.isVoid||(he+=` return retType.toWireType(destructors, rv);
|
|
90
|
+
`),he+=`};
|
|
91
|
+
`,G.push(he);var Re,ge,De=Ka(Function,G).apply(null,z);return Re=De,ge=Es.length,Es.push(Re),H=ge,_s[F]=H,H},f:()=>{nr("")},c:Tn,t:(S,T,C)=>M.copyWithin(S,T,T+C),s:S=>{M.length,nr("OOM")},i:(S,T,C,D)=>{for(var F,H,G,z=0,K=0;K<C;K++){var W=ae[T>>2],he=ae[T+4>>2];T+=8;for(var Ne=0;Ne<he;Ne++)F=S,H=M[W+Ne],G=void 0,G=ac[F],H===0||H===10?((F===1?g:_)(Co(G,0)),G.length=0):G.push(H);z+=he}return ae[D>>2]=z,0}},Er=(function(){var S,T,C,D,F={a:cc};function H(G,z){var K,W,he=G.exports;return v=(L=he).v,K=v.buffer,o.HEAP8=x=new Int8Array(K),o.HEAP16=B=new Int16Array(K),o.HEAP32=pe=new Int32Array(K),o.HEAPU8=M=new Uint8Array(K),o.HEAPU16=ee=new Uint16Array(K),o.HEAPU32=ae=new Uint32Array(K),o.HEAPF32=Xe=new Float32Array(K),o.HEAPF64=X=new Float64Array(K),Ue=L.z,W=L.w,mn.unshift(W),function(){if(Dr--,o.monitorRunDependencies&&o.monitorRunDependencies(Dr),Dr==0&&(us!==null&&(clearInterval(us),us=null),Ni)){var Ne=Ni;Ni=null,Ne()}}(),he}if(Dr++,o.monitorRunDependencies&&o.monitorRunDependencies(Dr),o.instantiateWasm)try{return o.instantiateWasm(F,H)}catch(G){_("Module.instantiateWasm callback failed with error: "+G),r(G)}(S=E,T=te,C=F,D=function(G){H(G.instance)},S||typeof WebAssembly.instantiateStreaming!="function"||ls(T)||typeof fetch!="function"?Mr(T,C,D):fetch(T,{credentials:"same-origin"}).then(G=>WebAssembly.instantiateStreaming(G,C).then(D,function(z){return _("wasm streaming compile failed: "+z),_("falling back to ArrayBuffer instantiation"),Mr(T,C,D)}))).catch(r)}(),S=>(Er=L.x)(S)),Fi=S=>(Fi=L.y)(S),Ts=S=>(Ts=L.A)(S),dc=(o.__embind_initialize_bindings=()=>(o.__embind_initialize_bindings=L.B)(),S=>(dc=L.C)(S));o.dynCall_jiji=(S,T,C,D,F)=>(o.dynCall_jiji=L.D)(S,T,C,D,F);function uc(){function S(){kt||(kt=!0,o.calledRun=!0,Eo||(Xr(mn),e(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),function(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)T=o.postRun.shift(),pn.unshift(T);var T;Xr(pn)}()))}Dr>0||(function(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)T=o.preRun.shift(),ln.unshift(T);var T;Xr(ln)}(),Dr>0||(o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),S()},1)):S()))}if(Ni=function S(){kt||uc(),kt||(Ni=S)},o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return uc(),t.ready}})();var jI="web.sdk.qcloud.com",qI=`https://${jI}/trtc/webrtc/v5/doc`,eO=`${qI}/zh-cn/`,Xf=(i=>(i[i.TRACE=0]="TRACE",i[i.DEBUG=1]="DEBUG",i[i.INFO=2]="INFO",i[i.WARN=3]="WARN",i[i.ERROR=4]="ERROR",i[i.NONE=5]="NONE",i))(Xf||{});var Qf={"120p":{width:160,height:120,frameRate:15,bitrate:200},"120p_2":{width:160,height:120,frameRate:15,bitrate:100},"180p":{width:320,height:180,frameRate:15,bitrate:350},"180p_2":{width:320,height:180,frameRate:15,bitrate:150},"240p":{width:320,height:240,frameRate:15,bitrate:400},"240p_2":{width:320,height:240,frameRate:15,bitrate:200},"360p":{width:640,height:360,frameRate:15,bitrate:800},"360p_2":{width:640,height:360,frameRate:15,bitrate:400},"480p":{width:640,height:480,frameRate:15,bitrate:900},"480p_2":{width:640,height:480,frameRate:15,bitrate:500},"720p":{width:1280,height:720,frameRate:15,bitrate:1500},"1080p":{width:1920,height:1080,frameRate:15,bitrate:2e3},"1440p":{width:2560,height:1440,frameRate:30,bitrate:4860},"4K":{width:3840,height:2160,frameRate:30,bitrate:9e3}},tO=Qf["480p_2"],rO=Qf["120p_2"],Xd={CANVAS:"canvas",AUDIO:"audio",VIDEO:"video",SCREEN:"screen",SMALL:"small",BIG:"big",AUXILIARY:"auxiliary",SMALL_VIDEO:"smallVideo",FACING_MODE_USER:"user",FACING_MODE_ENVIRONMENT:"environment",MUTE:"mute",UNMUTE:"unmute",ENDED:"ended",PLAYING:"playing",PAUSE:"pause",ERROR:"error",LOADEDDATA:"loadeddata",LOADEDMETADATA:"loadedmetadata",AUDIO_INPUT:"audioinput",VIDEO_INPUT:"videoinput",DETAIL:"detail",TEXT:"text",MAIN:"main",BACKUP:"backup",BANNED:"banned",KICK:"kick",USER_TIME_OUT:"user_time_out",ROOM_DISBAND:"room_disband",SEI_MESSAGE:"sei-message",ADD:"add",REMOVE:"remove",REPLACE:"replace",TRACK:"track",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",TRANSCEIVER_DIRECTION_SENDONLY:"sendonly",TRANSCEIVER_DIRECTION_RECVONLY:"recvonly",ENTER_PICTURE_IN_PICTURE:"enterpictureinpicture",LEAVE_PICTURE_IN_PICTURE:"leavepictureinpicture"},iO=Xd.MAIN,oO=Xd.AUXILIARY,sO=Xd.BIG,nO=Xd.SMALL;var aO=Object.keys(Xf);var cO=typeof window!="undefined"&&typeof window.glog=="function"?window.glog:()=>{};function qf(){return performance&&performance.now?Math.floor(performance.now()):Date.now()}var{toString:dO}=Object.prototype,os,rp=(os=class{constructor(t){u(this,"contextMap",new Map);u(this,"decodeProcessorMap",new WeakMap);this.core=t,this.addKVReportBeforeExitRoom=this.addKVReportBeforeExitRoom.bind(this),this.createDecoder=this.createDecoder.bind(this),this.core.innerEmitter.on("51",this.addKVReportBeforeExitRoom)}getAlias(){return"videoDecoder"}getGroup(t){return t!=null&&t.track?`${t.track.userId}${t.track.streamType}`:"*"}getName(){return os.Name}getValidateRule(t){return{type:this.core.enums.BASIC_TYPE.Object}}createDecoder(t,e){switch(t){case"wasm":return new GI(Ee(q({},e),{wasmPath:`${this.core.assetsPath||"."}/videodec.wasm`}));case"webCodecs":return new on;case"mse":throw new Error("mse decoder not supported yet");default:throw new Error("Unsupported decoder type")}}start(t){this.decodeProcessorMap.set(t.track,this.decode(t)),this.core.room.videoManager.addDecodeProcessor({processor:({frame:e,track:r})=>{var o;return((o=this.decodeProcessorMap.get(r))==null?void 0:o({frame:e,track:r}))||e},type:3})}decode(t){let{pipe:e,take:r,subscribe:o}=this.core.rx;return({frame:s,track:n})=>{if(n!==t.track||s.type==="empty")return s;if(this.contextMap.has(n))return this.contextMap.get(n).decode(s);let c=this.core.room.videoManager.createDecodeContext(Ee(q({},t),{createDecoder:this.createDecoder}));return e(c.trackDoneOB,r(1),o(()=>{this.core.clearStarted(this,this.getGroup(t)),this.stop({track:n})})),this.contextMap.set(n,c),c.decode(s)}}stop(t){if(t!=null&&t.track){let e=this.contextMap.get(t.track);e&&(e.close("stop"),this.report(e,t.track),this.contextMap.delete(t.track))}else this.contextMap.forEach((e,r)=>{e.close("stop"),this.contextMap.delete(r)});this.contextMap.size===0&&this.core.room.videoManager.removeDecodeProcessor({type:3})}report(t,e){if(t.isReported)return;t.isReported=!0;let r=qf()-t.startPerformanceTime,{renderFreezeTotal:o,dataFreezeTotal:s}=this.getRemoteTrackFreezeDuration(e,t);r&&this.core.kvStatManager.addNumber({key:514850,value:Math.floor(o/r*100),split:1,max:100}),r&&this.core.kvStatManager.addNumber({key:514851,value:Math.floor(s/r*100),split:1,max:100}),t.inputFrameCount&&this.core.kvStatManager.addNumber({key:514852,value:Math.floor(t.decodedFrameCount/t.inputFrameCount*100),split:1,max:100})}addKVReportBeforeExitRoom({room:t}){t===this.core.room&&this.contextMap.forEach((e,r)=>{this.report(e,r)})}update(t){let e=this.contextMap.get(t.track);e&&(t.type!=="mock"?(e.close("update"),this.contextMap.set(t.track,this.core.room.videoManager.createDecodeContext(Ee(q({},t),{createDecoder:this.createDecoder})))):e.mock(this.core.enums.DECODE_FAILED_ERROR_CODE.TEST))}getRemoteTrackFreezeDuration(t,e){let r=this.core.room.badCaseDetector.getRenderFreezeMap().get(`${t.userId}_${t.streamType}`),o=this.core.room.badCaseDetector.getDataFreezeMap().get(`${t.userId}_${t.streamType}`),s=0;r&&r.freezeTimeline.forEach(({startTime:c,endTime:l})=>{c>e.startPerformanceTime&&(s+=l===0?qf()-c:l-c)});let n=0;return o&&o.durationItemList.forEach(c=>{c.startTime>e.startPerformanceTime&&(n+=c.getDuration())}),{renderFreezeTotal:s,dataFreezeTotal:n}}destroy(){this.core.innerEmitter.off("51",this.addKVReportBeforeExitRoom)}},u(os,"Name","TRTCVideoDecoder"),os);var vg=Wi(Yi());function ip({timesInSecond:i,maxSizeInSecond:t,getSize:e}){return Oe((r,o)=>{let s=new WeakMap;return V.on(U.ROOM_DESTROY,({room:n})=>s.delete(n)),function(...n){let c=s.get(this);if(c||(c={callCountInSecond:0,timestamp:0,totalSizeInSecond:0},s.set(this,c)),c.timestamp===0?c.timestamp=Date.now():Date.now()-c.timestamp>1e3&&(c.timestamp=Date.now(),c.callCountInSecond=0,c.totalSizeInSecond=0),e&&(c.totalSizeInSecond+=e(...n)),c.timestamp!==0&&Date.now()-c.timestamp<1e3&&(c.callCountInSecond>=i||c.totalSizeInSecond>t))throw new ue({code:J.INVALID_OPERATION,message:Be({key:$e.CALL_FREQUENCY_LIMIT,data:{isTimes:c.callCountInSecond>=i,isSize:c.totalSizeInSecond>t,name:o,timesInSecond:i,maxSizeInSecond:t}})});c.callCountInSecond++,r.call(this,...n)}})}var JI="2025-07-09 15:05:11",Yf=!0,Zf=function(){var i;if(Yf){Yf=!1,$.getLogLevel()!==5&&(console.info("******************************************************************************"),console.info("* TRTC Web SDK"),console.info(`* API Document: ${Pr}/en/index.html`),console.info(`* Changelog: ${Pr}/en/tutorial-01-info-changelog.html`),console.info("* Report issues: https://github.com/LiteAVSDK/TRTC_Web/issues"),console.info("******************************************************************************")),$.info("TRTC Web SDK Version:",at),Rr||$.debug("Build Time:",JI);let t=`UA: ${navigator.userAgent}
|
|
92
|
+
CPU core: ${navigator.hardwareConcurrency}, GPU: ${Sl()}`,e=navigator.deviceMemory;e&&(t+=`, minRAM: ${e}GB`),$.info(t),$.info(`URL: ${location.href}${((i=self.frameElement)==null?void 0:i.tagName)==="IFRAME"?" in iframe":""}`),Fo().then(r=>{r&&$.info(Ar)})}};var pr={SCENE_LIVE:"live",SCENE_RTC:"rtc",ROLE_ANCHOR:"anchor",ROLE_AUDIENCE:"audience",STREAM_TYPE_MAIN:"main",STREAM_TYPE_SUB:"sub",AUDIO_PROFILE_STANDARD:"standard",AUDIO_PROFILE_STANDARD_STEREO:"standard-stereo",AUDIO_PROFILE_HIGH:"high",AUDIO_PROFILE_HIGH_STEREO:"high-stereo",QOS_PREFERENCE_SMOOTH:"smooth",QOS_PREFERENCE_CLEAR:"clear",SPEAKER:"Speakerphone",HEADSET:"Headset earpiece"};var le={INVALID_PARAMETER:5e3,INVALID_OPERATION:5100,ENV_NOT_SUPPORTED:5200,DEVICE_ERROR:5300,SERVER_ERROR:5400,OPERATION_FAILED:5500,OPERATION_ABORT:5998,UNKNOWN_ERROR:5999},hr=(w=>(w[w.INVALID_PARAMETER=5e3]="INVALID_PARAMETER",w[w.INVALID_PARAMETER_REQUIRED=5001]="INVALID_PARAMETER_REQUIRED",w[w.INVALID_PARAMETER_TYPE=5002]="INVALID_PARAMETER_TYPE",w[w.INVALID_PARAMETER_EMPTY=5003]="INVALID_PARAMETER_EMPTY",w[w.INVALID_PARAMETER_INSTANCE=5004]="INVALID_PARAMETER_INSTANCE",w[w.INVALID_PARAMETER_RANGE=5005]="INVALID_PARAMETER_RANGE",w[w.INVALID_PARAMETER_LESS_THAN_ZERO=5006]="INVALID_PARAMETER_LESS_THAN_ZERO",w[w.INVALID_PARAMETER_MIN=5007]="INVALID_PARAMETER_MIN",w[w.INVALID_PARAMETER_MAX=5008]="INVALID_PARAMETER_MAX",w[w.INVALID_ELEMENT_ID=5009]="INVALID_ELEMENT_ID",w[w.INVALID_ELEMENT_ID_TYPE=5010]="INVALID_ELEMENT_ID_TYPE",w[w.INVALID_STREAM_ID=5011]="INVALID_STREAM_ID",w[w.INVALID_ROOM_ID_STRING=5012]="INVALID_ROOM_ID_STRING",w[w.INVALID_ROOM_ID_INTEGER=5013]="INVALID_ROOM_ID_INTEGER",w[w.INVALID_STREAM_TYPE=5014]="INVALID_STREAM_TYPE",w[w.INVALID_ROOM_ID_REQUIRED=5015]="INVALID_ROOM_ID_REQUIRED",w[w.INVALID_ROOM_ID_INTEGER_STRING=5016]="INVALID_ROOM_ID_INTEGER_STRING",w[w.INVALID_BUFFER_EMPTY=5017]="INVALID_BUFFER_EMPTY",w[w.INVALID_BUFFER_OVERSIZE=5018]="INVALID_BUFFER_OVERSIZE",w[w.INVALID_ROOM_ID_TYPE_MISMATCH=5019]="INVALID_ROOM_ID_TYPE_MISMATCH",w[w.INVALID_ROOM_ID_DUPLICATE=5020]="INVALID_ROOM_ID_DUPLICATE",w[w.INVALID_OPERATION=5100]="INVALID_OPERATION",w[w.INVALID_OPERATION_NOT_JOINED=5101]="INVALID_OPERATION_NOT_JOINED",w[w.INVALID_OPERATION_REMOTE_USER_NOT_EXIST=5102]="INVALID_OPERATION_REMOTE_USER_NOT_EXIST",w[w.INVALID_OPERATION_STREAM_TYPE_NOT_EXIST=5103]="INVALID_OPERATION_STREAM_TYPE_NOT_EXIST",w[w.INVALID_OPERATION_REPEAT_CALL=5104]="INVALID_OPERATION_REPEAT_CALL",w[w.INVALID_OPERATION_NEED_VIDEO=5105]="INVALID_OPERATION_NEED_VIDEO",w[w.INVALID_OPERATION_NEED_AUDIO=5106]="INVALID_OPERATION_NEED_AUDIO",w[w.INVALID_ROLE_AUDIENCE=5107]="INVALID_ROLE_AUDIENCE",w[w.INVALID_NOT_ENABLE_SEI=5108]="INVALID_NOT_ENABLE_SEI",w[w.INVALID_NEED_CALL_PUBLISHED=5109]="INVALID_NEED_CALL_PUBLISHED",w[w.ENV_NOT_SUPPORTED=5200]="ENV_NOT_SUPPORTED",w[w.NOT_SUPPORTED_HTTP=5201]="NOT_SUPPORTED_HTTP",w[w.NOT_SUPPORTED_WEBRTC=5202]="NOT_SUPPORTED_WEBRTC",w[w.NOT_SUPPORTED_H264_ENCODE=5203]="NOT_SUPPORTED_H264_ENCODE",w[w.NOT_SUPPORTED_H264_DECODE=5204]="NOT_SUPPORTED_H264_DECODE",w[w.NOT_SUPPORTED_SCREEN_SHARE=5205]="NOT_SUPPORTED_SCREEN_SHARE",w[w.NOT_SUPPORTED_SMALL_VIDEO=5206]="NOT_SUPPORTED_SMALL_VIDEO",w[w.NOT_SUPPORTED_SEI=5207]="NOT_SUPPORTED_SEI",w[w.NOT_SUPPORTED_WEBGL=5208]="NOT_SUPPORTED_WEBGL",w[w.NOT_SUPPORTED_CHROME_VERSION=5209]="NOT_SUPPORTED_CHROME_VERSION",w[w.NOT_SUPPORTED_PLUGIN=5210]="NOT_SUPPORTED_PLUGIN",w[w.DEVICE_ERROR=5300]="DEVICE_ERROR",w[w.DEVICE_NOT_FOUND_ERROR=5301]="DEVICE_NOT_FOUND_ERROR",w[w.DEVICE_NOT_ALLOWED_ERROR=5302]="DEVICE_NOT_ALLOWED_ERROR",w[w.DEVICE_NOT_READABLE_ERROR=5303]="DEVICE_NOT_READABLE_ERROR",w[w.DEVICE_OVERCONSTRAINED_ERROR=5304]="DEVICE_OVERCONSTRAINED_ERROR",w[w.DEVICE_INVALID_STATE_ERROR=5305]="DEVICE_INVALID_STATE_ERROR",w[w.DEVICE_SECURITY_ERROR=5306]="DEVICE_SECURITY_ERROR",w[w.DEVICE_ABORT_ERROR=5307]="DEVICE_ABORT_ERROR",w[w.CAMERA_RECOVER_FAILED=5308]="CAMERA_RECOVER_FAILED",w[w.MICROPHONE_RECOVER_FAILED=5309]="MICROPHONE_RECOVER_FAILED",w[w.SERVER_ERROR=5400]="SERVER_ERROR",w[w.NEED_TO_BUY=5401]="NEED_TO_BUY",w[w.ACCOUNT_NO_MONEY=-100013]="ACCOUNT_NO_MONEY",w[w.OPERATION_FAILED=5500]="OPERATION_FAILED",w[w.FIREWALL_RESTRICTION=5501]="FIREWALL_RESTRICTION",w[w.REJOIN_FAILED=5502]="REJOIN_FAILED",w[w.EVENT_HANDLER_ERROR=5503]="EVENT_HANDLER_ERROR",w[w.VIDEO_CONTEXT_ERROR=5504]="VIDEO_CONTEXT_ERROR",w[w.VIDEO_DECODE_ERROR=5505]="VIDEO_DECODE_ERROR",w[w.OPERATION_ABORT=5998]="OPERATION_ABORT",w[w.UNKNOWN_ERROR=5999]="UNKNOWN_ERROR",w))(hr||{});function eg({code:i,params:t,enableDocLink:e=!1}){let r="",o,s=hr[i];try{o=Kf[s]}catch(n){o=Kf.UNKNOWN_ERROR}return We(o)?r=o(t):we(o)&&(r=o),t.fnName&&!r.includes(t.fnName)&&(r[r.length-1]!=="."&&(r+="."),r+=` thrown from ${t.fnName}()`),e&&(r+=" doc:"),r}var Kf=Ee(q({},Xt),{INVALID_PARAMETER({fnName:i}){return`the parameters of the '${i}' you called does not meet the requirements, please check the API documentation.`},INVALID_PARAMETER_REQUIRED({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' is a required param when calling ${e}(), received: ${r}.`},INVALID_PARAMETER_TYPE({key:i,rule:t,fnName:e,value:r}){let o=`${i||t.name}`,s="";return Array.isArray(t.type)?s=t.type.join("|"):s=t.type,`'${o}' must be type of ${s} when calling ${e}(), received type: ${ct(r)}.`},INVALID_PARAMETER_EMPTY({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' cannot be '${r}' when calling ${e}().`},INVALID_PARAMETER_INSTANCE({key:i,rule:t,fnName:e,value:r}){let o=`${i||t.name}`,s=`${t.instanceOf.name||t.instanceOf}`;return`'${o}' must be instanceof ${s} when calling ${e}(), received type: ${ct(r)}.`},INVALID_PARAMETER_RANGE({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' must be one of ${t.values.join("|")} when calling ${e}(), received: ${r}.`},INVALID_PARAMETER_LESS_THAN_ZERO({key:i,rule:t,fnName:e}){return`'${i||t.name}' cannot be less than 0 when calling ${e}().`},INVALID_PARAMETER_MIN({key:i,rule:t,value:e}){return`the min value of ${i||t.name} is ${t.min}, received: ${e}.`},INVALID_PARAMETER_MAX({key:i,rule:t,value:e}){return`the max value of ${i||t.name} is ${t.max}, received: ${e}.`},INVALID_ELEMENT_ID({key:i,fnName:t}){return`'${i}' is not found in the document object when calling ${t}().`},INVALID_ELEMENT_ID_TYPE({key:i,fnName:t,type:e}){return`the element corresponding to '${i}' must be instanceof HTMLElement when calling ${t}(), received: ${e}.`},INVALID_STREAM_ID({key:i}){return`'${i}' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.`},INVALID_ROOM_ID_STRING({key:i}){return`'${i}' must be a valid string.`},INVALID_ROOM_ID_INTEGER({key:i}){return`'${i}' must be an integer between [1, 4294967294].`},INVALID_ROOM_ID_INTEGER_STRING({key:i}){return`'${i}' must be an integer but go a string, use 'parseInt' to convert it or use 'strRoomId' instead.`},INVALID_ROOM_ID_REQUIRED(){return"at least one of 'roomId'(between [1, 4294967294]) and 'strRoomId'(not empty) is required."},INVALID_ROOM_ID_TYPE_MISMATCH({key:i}){return`The type of target roomId must match the current roomId. Current room is using '${i}', but received '${i==="strRoomId"?"roomId":"strRoomId"}'.`},INVALID_ROOM_ID_DUPLICATE({key:i}){return`the target '${i}' must not be the same as the current '${i}'.`},INVALID_STREAM_TYPE:({fnName:i})=>`'streamType' is required when 'userId' is not '*', calling ${i}()`,INVALID_IMAGE_URL:"The 'src' param must be filled in when the background type is image.",INVALID_OPERATION({fnName:i}){return`the API '${i}' you called does not meet the requirements, please check the API documentation.`},INVALID_OPERATION_NOT_JOINED({fnName:i}){return`cannot ${i} because you are not enter room yet.`},INVALID_OPERATION_REMOTE_USER_NOT_EXIST({fnName:i,value:t}){return`cannot ${i} because remote user(userId: ${t.userId}) does not publishing stream.`},INVALID_OPERATION_STREAM_TYPE_NOT_EXIST({fnName:i,value:t}){return`cannot ${i} because remote user(userId: ${t.userId}) does not publishing ${t.streamType} video.`},INVALID_OPERATION_REPEAT_CALL({fnName:i}){return`you are already ${i}(), cannot repeated call '${i}'.`},INVALID_OPERATION_NEED_VIDEO({fnName:i}){return`cannot call '${i}' because the camera is not turned on.`},INVALID_OPERATION_NEED_AUDIO({fnName:i}){return`cannot call '${i}' because the microphone or screen share is not turned on.`},INVALID_BUFFER_EMPTY:({key:i})=>`the buffer size of paramerter '${i}' cannot be empty`,INVALID_BUFFER_OVERSIZE:()=>"buffer size is over 1000 Bytes",INVALID_ROLE_AUDIENCE:()=>"role: 'audience' cannot call this api.",INVALID_NOT_ENABLE_SEI:()=>"you need to enable SEI in TRTC.create({ enableSEI: true })",INVALID_NEED_CALL_PUBLISHED:({fnName:i})=>`you need to call ${i}() after publish stream.`,ENV_NOT_SUPPORTED({fnName:i}){return`the current browser does not support the capability of the function '${i}' you are calling, please check the API documentation.`},NOT_SUPPORTED_WEBRTC:"the current browser does not support WebRTC capability, please check the SDK documentation.",NOT_SUPPORTED_H264_ENCODE:"this browser does not support H264 encode.",NOT_SUPPORTED_H264_DECODE:"this browser does not support H264 decode.",NOT_SUPPORTED_SCREEN_SHARE:"this browser does not support screen share, please check the browser version.",NOT_SUPPORTED_SMALL_VIDEO:"this browser does not support small video, please check the browser version.",NOT_SUPPORTED_SEI:"this browser does not support SEI, please check the browser version.",NOT_SUPPORTED_WEBGL:"this browser does not support WebGL, please check the browser version.",NOT_SUPPORTED_CHROME_VERSION({fnName:i}){return`cannot call ${i} because the browser version is too low, please upgrade to the latest version`},DEVICE_ERROR({fnName:i,error:t}){return`'${i}' got device exception${t?`, error: ${t.toString()}.`:"."}`},DEVICE_NOT_FOUND_ERROR({fnName:i,deviceType:t=ss(i),error:e}){return`NotFoundError, no ${t} detected, please check your device and the configuration on '${i}'${e?`, error: ${e.toString()}.`:"."}`},DEVICE_NOT_ALLOWED_ERROR({fnName:i,deviceType:t=ss(i),error:e}){return`NotAllowedError, you have disabled ${t} access, please allow the current application to use the ${t}${e?`, error: ${e.toString()}.`:"."}`},DEVICE_NOT_READABLE_ERROR({fnName:i,deviceType:t=ss(i),error:e}){return`NotReadableError, the ${t} maybe in use by another APP, please check if the device is pre-occupied by another APP.`},DEVICE_OVERCONSTRAINED_ERROR({fnName:i,deviceType:t=ss(i),error:e}){return`OverconstrainedError, the device ID is incorrect, please check whether the device ID passed in is correct${e?`, error: ${e.toString()}.`:"."}`},DEVICE_INVALID_STATE_ERROR({fnName:i,deviceType:t=ss(i),error:e}){return`InvalidStateError, after the user clicks and interacts with the page, turn on the ${t}${e?`, error: ${e.toString()}.`:"."}`},DEVICE_SECURITY_ERROR({fnName:i,deviceType:t=ss(i),error:e}){return`SecurityError, check whether the system security policy restricts the use of the ${t}, and it is recommended to turn on the ${t} after the user interacts with the page${e?`, error: ${e.toString()}.`:"."}`},DEVICE_ABORT_ERROR({fnName:i,deviceType:t=ss(i),error:e}){return`AbortError, an unknown exception in the system makes the device unusable, recommended to change the device or browser and re-check whether the device is normal${e?` error: ${e.toString()}.`:"."}`},CAMERA_RECOVER_FAILED({error:i}){return`camera recover capture failed ${(i==null?void 0:i.name)||""}: ${(i==null?void 0:i.originMessage)||(i==null?void 0:i.message)}`},MICROPHONE_RECOVER_FAILED({error:i}){return`microphone recover capture failed ${(i==null?void 0:i.name)||""}: ${(i==null?void 0:i.originMessage)||(i==null?void 0:i.message)}`},OPERATION_FAILED({fnName:i,error:t}){return`'${i}' failed, reason: ${t==null?void 0:t.toString()}`},FIREWALL_RESTRICTION(){return"media connection failure due to firewall restrictions, please try to change your network."},EVENT_HANDLER_ERROR({eventName:i}){return`an error was caught on trtc.on('${i}', handler), please check your code on 'handler'.`},VIDEO_CONTEXT_ERROR({reason:i,error:t}){return`video context error ${i} ${(t==null?void 0:t.name)||""} ${(t==null?void 0:t.message)||""}`},SERVER_ERROR({fnName:i,error:t}){return`'${i}' got server error: ${t==null?void 0:t.toString()}, please check the SDK documentation.`},NEED_TO_BUY({value:i,url:t}){return`You need to buy packages for ${i}. Refer to: ${t}`},ACCOUNT_NO_MONEY:({fnParams:i})=>`your TRTC account run out of credit, please recharge.${i.sdkAppId?` SDKAppId: ${i.sdkAppId}`:""}`,OPERATION_ABORT({fnName:i}){return`'${i}' abort`},UNKNOWN_ERROR({fnName:i,error:t}){return`'${i}' throw unknown exception${t?`, error: ${t.toString()}.`:"."}`}});function ss(i){if(!i)return"camera";let t=i.toLowerCase();return t.includes("screen")?"screen share":t.includes("audio")?"microphone":"camera"}var op=class i extends Error{constructor({code:e,extraCode:r,message:o="",messageParams:s,fnName:n="",originError:c}){var m;let l;o?l=o:l=eg({code:e===le.SERVER_ERROR?e:r||e,params:q({fnName:n,error:c},s)});super(l);u(this,"name","RtcError");u(this,"code");u(this,"extraCode");u(this,"functionName");u(this,"message");u(this,"handler");u(this,"originError");this.name=hr[e],this.code=e,this.extraCode=r,this.functionName=n,this.originError=c,this.message=l,this.extraCode===5302&&((m=this.originError)!=null&&m.message.includes("system"))&&(this.handler=()=>{let E={startLocalVideo:"Camera",startLocalAudio:"Microphone",startScreenShare:"ScreenCapture"},g={startLocalVideo:"webcam",startLocalAudio:"microphone"},_=document.createElement("a");Vo?_.href=`ms-settings:privacy-${g[this.functionName]}`:br&&(_.href=`x-apple.systempreferences:com.apple.preference.security?Privacy_${E[this.functionName]}`),_.href.length>0&&_.click()})}static convertFrom(e,r,o){let s=e;if(e instanceof ue){let{stack:n}=e,c={code:le.UNKNOWN_ERROR,fnName:r,originError:e};switch(e.getCode()){case J.INVALID_PARAMETER:c.code=le.INVALID_PARAMETER,c.message=e.message;break;case J.INVALID_OPERATION:c.code=le.INVALID_OPERATION;break;case J.NOT_SUPPORTED:case J.NOT_SUPPORTED_H264:c.code=le.ENV_NOT_SUPPORTED,e.getCode()===J.NOT_SUPPORTED_H264&&(c.extraCode=e.message.includes(Xt.NOT_SUPPORTED_H264ENCODE)?5203:5204);break;case J.JOIN_ROOM_FAILED:c.messageParams={fnParams:o};case J.SERVER_TIMEOUT:case J.SWITCH_ROLE_FAILED:case J.SWITCH_ROOM_FAILED:c.code=le.SERVER_ERROR,c.extraCode=e.getExtraCode();break;case J.API_CALL_ABORTED:c.code=le.OPERATION_ABORT;break;case J.DEVICE_NOT_FOUND:case J.DEVICE_AUTO_RECOVER_FAILED:case J.INITIALIZE_FAILED:c.code=5300,e.name&&(c.extraCode=zI(e.name));break;case J.UNKNOWN:break;default:c.code=le.OPERATION_FAILED}s=new i(c),n&&(s.stack+=n.substr(n.indexOf(`
|
|
93
|
+
`)))}else{if(e instanceof i)return e;s=new i({code:le.UNKNOWN_ERROR,fnName:r,originError:e})}return s}};function zI(i){let t;switch(i){case"NotFoundError":t=5301;break;case"NotAllowedError":t=5302;break;case"NotReadableError":t=5303;break;case"OverconstrainedError":t=5304;break;case"InvalidStateError":t=5305;break;case"SecurityError":t=5306;break;case"AbortError":t=5307;break;default:t=5300}return t}var ne=op;function co(i){return i==="sub"?"auxiliary":i==="auxiliary"?"sub":"main"}function Oa(i){return i===pr.QOS_PREFERENCE_CLEAR?"detail":i===pr.QOS_PREFERENCE_SMOOTH?"motion":""}function sn(i,t){let e=t?Qu:Nn;return nl(i)?q(q({},e),i):Ir[i]?Ir[i]:e}var tg={type:"object",properties:{cameraId:{type:"string"},useFrontCamera:{type:"boolean"},fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:["string","boolean"],values:[!0,!1,"view","publish","both"]},small:{type:["string","object","boolean"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},videoTrack:{instanceOf:MediaStreamTrack}}},rg={type:"object",properties:{systemAudio:{type:"boolean"},fillMode:{type:"string",values:["contain","cover","fill"]},profile:{type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},videoTrack:{instanceOf:MediaStreamTrack},audioTrack:{instanceOf:MediaStreamTrack}}},nn={type:["string",HTMLElement,null,"array"],arrayItem:{instanceOf:HTMLElement},validate(i,t,e){if(we(i)&&!document.getElementById(i))throw new ne({code:le.INVALID_PARAMETER,extraCode:5009,fnName:e,messageParams:{key:t}})}},ig={name:"userId",required:!0,type:"string"},og={type:"object",properties:{microphoneId:{type:"string"},audioTrack:{instanceOf:MediaStreamTrack},captureVolume:{type:"number",min:0},earMonitorVolume:{type:"number",min:0,max:100},profile:{values:[pr.AUDIO_PROFILE_STANDARD,pr.AUDIO_PROFILE_STANDARD_STEREO,pr.AUDIO_PROFILE_HIGH,pr.AUDIO_PROFILE_HIGH_STEREO]},echoCancellation:{type:"boolean"},autoGainControl:{type:"boolean"},noiseSuppression:{type:"boolean"}}};function an(i,t){if(!i)throw new ne({code:le.INVALID_OPERATION,extraCode:5101,fnName:t})}function sg(i,t,e){if(!i)throw new ne({code:le.INVALID_OPERATION,extraCode:5102,fnName:t,messageParams:{value:e}})}function ng(i,t,e){if(!(/^[1-9]\d*$/.test(String(i))&&i<4294967295))throw new ne({code:le.INVALID_PARAMETER,extraCode:5013,fnName:t,messageParams:{key:e}})}function ag(i,t,e){if(!/^[A-Za-z\d\s!#$%&()+\-:;<=.>?@[\]^_{}|~,]{1,64}$/.test(i))throw new ne({code:le.INVALID_PARAMETER,extraCode:5012,fnName:t,messageParams:{key:e}})}var M0={type:"number",notLessThanZero:!0},XI=(i,t)=>i.width*i.height>=t.width*t.height&&i.frameRate>=t.frameRate&&i.bitrate>=t.bitrate;function cg(i){var r;if(!((r=i==null?void 0:i.option)!=null&&r.small))return;if(!ad()){$.warn("small stream is not supported"),delete i.option.small;return}let t=sn(i.option.profile),e=sn(i.option.small,!0);if(!XI(t,e)){$.warn(`small stream profile must be less than big stream profile. Big: ${JSON.stringify(t)}, Small: ${JSON.stringify(e)}`),delete i.option.small;return}}var QI={create:[{name:"RoomConfig",instanceOf:Function},{name:"CreateConfig",type:"object",properties:{plugins:{type:"array",arrayItem:{instanceOf:Function}}}}],enterRoom:{name:"EnterRoomConfig",type:"object",required:!0,validate(i,t,e){if(this._room.isJoined)throw new ne({code:le.INVALID_OPERATION,extraCode:5104,fnName:e});if(i.roomId){if(we(i.roomId))throw new ne({code:le.INVALID_PARAMETER,extraCode:5016,fnName:e,messageParams:{key:t}});ng(i.roomId,e,t)}else if(i.strRoomId)ag(i.strRoomId,e,t);else throw new ne({code:le.INVALID_PARAMETER,extraCode:5015,fnName:e})},properties:{sdkAppId:{required:!0,type:"number",allowEmpty:!1},userId:{required:!0,type:"string",allowEmpty:!1},userSig:{required:!0,type:"string",allowEmpty:!1},scene:{type:"string",values:["live","rtc"]},role:{type:"string",values:["audience","anchor"]},roomId:{type:["string","number"]},strRoomId:{type:"string"},proxy:{type:["object","string"],properties:{websocketProxy:{type:"string"},turnServer:{type:["object","array"],properties:{url:{required:!0,type:"string"},username:{type:"string"},credential:{type:"string"},credentialType:{type:"string",values:["password"]}}},loggerProxy:{type:"string"},webtransportProxy:{type:"string"}}},enableAutoPlayDialog:{type:"boolean"},userDefineRecordId:{type:"string"},latencyLevel:{type:"number"},playoutDelay:{type:"object",properties:{min:{type:"number",min:0,max:1e3},max:{type:"number",min:0,max:1e4}}}}},startLocalVideo:{name:"LocalVideoConfig",type:"object",properties:{view:nn,mute:{type:["boolean","string"]},publish:{type:"boolean"},capture:{required:!1,type:"boolean"},option:tg},validate(i){var t,e;if(!((t=i==null?void 0:i.option)!=null&&t.videoTrack)&&hi())throw new ne({code:le.ENV_NOT_SUPPORTED,extraCode:5201});(e=i==null?void 0:i.option)!=null&&e.small&&cg(i)}},updateLocalVideo:{name:"updateLocalVideoConfig",type:"object",required:!0,properties:{view:Ee(q({},nn),{required:!1}),publish:{type:"boolean"},capture:{required:!1,type:"boolean"},mute:{type:["boolean","string"]},option:tg},validate(i){var t;(t=i==null?void 0:i.option)!=null&&t.small&&cg(i)}},startLocalAudio:{name:"LocalAudioConfig",type:"object",properties:{publish:{type:"boolean"},option:og},validate(i){var t;if(!((t=i==null?void 0:i.option)!=null&&t.audioTrack)&&hi())throw new ne({code:le.ENV_NOT_SUPPORTED,extraCode:5201})}},updateLocalAudio:{name:"updateLocalAudioConfig",type:"object",required:!0,properties:{publish:{type:"boolean"},mute:{type:"boolean"},option:og}},startScreenShare:{name:"ScreenShareConfig",type:"object",properties:{view:nn,publish:{type:"boolean"},option:rg},validate(i,t,e,r,o){var s;if(!((s=i==null?void 0:i.option)!=null&&s.videoTrack)){if(hi())throw new ne({code:le.ENV_NOT_SUPPORTED,extraCode:5201});if(!na())throw new ne({code:le.ENV_NOT_SUPPORTED,fnName:e,extraCode:5205})}}},updateScreenShare:{name:"updateScreenShareConfig",type:"object",required:!0,properties:{view:nn,publish:{type:"boolean"},option:rg}},muteRemoteAudio:[ig,{name:"mute",required:!0,type:"boolean"}],setRemoteAudioVolume:[ig,{name:"volume",required:!0,type:"number",min:0}],startRemoteVideo:{name:"startRemoteVideoConfig",type:"object",required:!0,properties:{view:nn,userId:{type:"string",required:!0},streamType:{values:["main","sub"],required:!0},option:{type:"object",properties:{fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:"boolean"}}}},validate(i,t,e){an(this._room.isJoined,e);let r=this._room.remotePublishedUserMap.get(i.userId);if(sg(!!r,e,i),r&&(i.streamType==="main"&&!r.muteState.videoAvailable||i.streamType==="sub"&&!r.muteState.hasAuxiliary))throw new ne({code:le.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:i}})}},updateRemoteVideo:{name:"updateRemoteVideoConfig",type:"object",required:!0,properties:{view:Ee(q({},nn),{required:!1}),userId:{type:"string",required:!0},streamType:{values:["main","sub"],required:!0},option:{type:"object",properties:{fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:"boolean"}}}},validate(i,t,e){an(this._room.isJoined,e);let r=this._room.remotePublishedUserMap.get(i.userId);if(sg(!!r,e,i),r&&(i.streamType==="main"&&!r.muteState.videoAvailable||i.streamType==="sub"&&!r.muteState.hasAuxiliary))throw new ne({code:le.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:i}})}},stopRemoteVideo:{name:"stopRemoteVideoConfig",type:"object",required:!0,properties:{userId:{type:"string",required:!0},streamType:{values:["main","sub"]}},validate(i,t,e){if(i.userId!=="*"&&P(i.streamType))throw new ne({code:le.INVALID_PARAMETER,extraCode:5014,fnName:e})}},switchRole:{name:"role",required:!0,values:["anchor","audience"],validate(i,t,e){an(this._room.isJoining||this._room.isJoined,e)}},enableAudioVolumeEvaluation:[{name:"interval",type:"number"},{name:"enableInBackground",type:"boolean"}],sendSEIMessage:[{name:"buffer",required:!0,instanceOf:ArrayBuffer,validate(i,t,e,r){if(!da)throw new ne({code:le.ENV_NOT_SUPPORTED,fnName:e,extraCode:5207});if(!this._room.enableSEI)throw new ne({code:le.INVALID_OPERATION,fnName:e,extraCode:5108});if(i.byteLength>1e3)throw new ne({code:le.INVALID_PARAMETER,extraCode:5018,fnName:e});if(i.byteLength===0)throw new ne({code:le.INVALID_PARAMETER,extraCode:5017,messageParams:{key:t},fnName:e});an(this._room.isJoined,e)}},{name:"options",type:"object",properties:{seiPayloadType:{type:"number",values:[5,243]},toSubStream:{type:"boolean",validate(i,t,e){if(!i&&!this._room.isMainStreamPublished||i&&!this._room.isAuxStreamPublished)throw new ne({code:le.INVALID_OPERATION,extraCode:5109,messageParams:{key:t},fnName:e})}}}}],sendCustomMessage:{name:"message",required:!0,type:"object",properties:{cmdId:{type:"number",required:!0,min:1,max:10},data:{instanceOf:ArrayBuffer,required:!0,validate(i,t,e,r){if(i.byteLength>1e3)throw new ne({code:le.INVALID_PARAMETER,extraCode:5018,fnName:e});if(i.byteLength===0)throw new ne({code:le.INVALID_PARAMETER,extraCode:5017,fnName:e,messageParams:{key:t}})}}},validate(i,t,e){if(an(this._room.isJoined,e),this._room.scene==="live"&&this._room.role==="audience")throw new ne({code:le.INVALID_OPERATION,extraCode:5107,fnName:e,messageParams:{key:t}})}},switchRoom:{name:"switchRoomConfig",type:"object",required:!0,validate(i,t,e){if(an(this._room.isJoined,e),this._room.useStringRoomId&&i.strRoomId===this._room.roomId||!this._room.useStringRoomId&&i.roomId===Number(this._room.roomId))throw new ne({code:le.INVALID_PARAMETER,extraCode:5020,fnName:e,messageParams:{key:this._room.useStringRoomId?"strRoomId":"roomId"}});if(i.roomId&&this._room.useStringRoomId||!i.roomId&&i.strRoomId&&!this._room.useStringRoomId)throw new ne({code:le.INVALID_PARAMETER,extraCode:5019,fnName:e,messageParams:{key:this._room.useStringRoomId?"strRoomId":"roomId"}});if(i.roomId)ng(i.roomId,e,t);else if(i.strRoomId)ag(i.strRoomId,e,t);else throw new ne({code:le.INVALID_PARAMETER,extraCode:5015,fnName:e})},properties:{roomId:{type:"number"},strRoomId:{type:"string"},privateMapKey:{type:"string"},userSig:{type:"string",required:!0},autoSubscribeCount:{type:"number",min:0,max:50}}}},yt={TRTC:QI};var $t=class extends Error{};function YI(i,t){let e=xo(i);for(let r=0;r<t.length;r++)ur(e[r],t[r]);return e}function ZI(i){this._resolve=Promise.resolve(i)}function KI(i){this._reject=Promise.reject(i)}var uo=class uo{constructor(t,e){this.instance=t;this.group=e;u(this,"started",!1);u(this,"ops",[]);u(this,"startSame",()=>!0);u(this,"mergeUpdate",YI);let r=uo.instances.get(t);r?r.set(e,this):uo.instances.set(t,new Map([[e,this]]))}static get(t,e){if(!e)return;let r=uo.instances.get(t);return r&&r.get(e)||new uo(t,e)}static gets(t,e){let r=uo.instances.get(t),o=[];return r&&r.forEach((s,n)=>{e.test(n)&&o.push(s)}),o}action(t,e,r){let o=c=>{var l;return t===0?this.started=!0:t===3&&(this.started=!1),this.ops.shift(),(l=this.currentOp)==null||l.action(),c},s=c=>{var l,m;throw this.ops.shift(),t===0&&((l=this.currentOp)==null?void 0:l.type)===2&&this.ops.shift().reject(new $t("start failed")),(m=this.currentOp)==null||m.action(),c},n={type:t,action:()=>e(...n.args).then(o,s),args:r,resolve:ZI,reject:KI};try{switch(this.state){case 1:if(t===0)throw new $t("already started");break;case 4:if(t===2)throw new $t("not started");break;default:return this.cacheOp(n)}}catch(c){return Promise.reject(c)}return this.ops.push(n),n.promise=e(...n.args).then(o,s)}cacheOp(t){if(this.ops.length===1)switch(this.state){case 0:case 2:if(t.type===0)throw new $t("already start");break;case 3:switch(t.type){case 2:throw new $t("update not allowed when stopping");case 3:return this.currentOp.promise}break;default:throw new $t("unknown state")}else switch(t.type){case 3:switch(this.lastOpType){case 3:return this.lastOp.promise;default:let r=new $t("keep stop");if(this.ops.slice(1).forEach(o=>o.reject(r)),this.ops=this.ops.slice(0,1),this.state===3)return this.currentOp.promise}break;case 2:switch(this.lastOpType){case 2:return this.lastOp.args=this.mergeUpdate(this.lastOp.args,t.args),this.lastOp.promise;case 3:throw new $t("update not allowed after stop")}break;case 0:switch(this.lastOpType){case 2:throw new $t("start not allowed after update");case 0:throw new $t("duplicate start");case 3:if(this.startSame(this.currentOp.args,t.args))throw this.ops.pop().reject(new $t("keep start")),new $t("already start")}}t.promise=new Promise((r,o)=>{t._resolve?t._resolve.then(r):t.resolve=r,t._reject?t._reject.catch(o):t.reject=o});let{action:e}=t;return t.action=()=>e().then(t.resolve,t.reject),this.ops.push(t),t.promise}get lastOp(){return this.ops[this.ops.length-1]}get lastOpType(){return this.lastOp.type}get currentOp(){return this.ops[0]}get state(){return this.currentOp?this.currentOp.type:this.started?1:4}};u(uo,"instances",new WeakMap);var bi=uo;var Qd=new WeakMap,Yd=(i,t)=>{if(t instanceof $t){let{stack:e}=t;t=new ne({code:le.OPERATION_ABORT,message:`${i} abort: ${t.message}`,fnName:i}),e&&(t.stack+=e.substr(e.indexOf(`
|
|
94
|
+
`)))}throw t};function lo(i,t){return Oe((e,r)=>function(...o){let s=bi.get(this,typeof i=="string"?i:i.call(this,...o));return s?(t&&(s.startSame=t.bind(this)),s.action(0,e.bind(this),o).catch(Yd.bind(null,r))):e.apply(this,o)})}function ns(i,t){let{merge:e,debounce:r}=t||{};return Oe((o,s)=>function(...n){let c=bi.get(this,typeof i=="string"?i:i.call(this,...n));if(!c)return o.apply(this,n);if(e&&(c.mergeUpdate=e.bind(this)),r&&r.isNeedToDebounce.apply(this,n)){let{delay:l,getKey:m}=r;return new Promise((E,g)=>{var L,x;let _=(L=Qd.get(this))==null?void 0:L.get(m(...n));if(_){let{timeoutId:M,resolve:B}=_;clearTimeout(M),B()}let v=setTimeout(()=>{if(c.state===3||c.state===4)return E();c.action(2,o.bind(this),n).catch(Yd.bind(null,s)).then(E,g)},l);Qd.has(this)?(x=Qd.get(this))==null||x.set(m(...n),{timeoutId:v,resolve:E}):Qd.set(this,new Map([[m(...n),{timeoutId:v,resolve:E}]]))})}return c.action(2,o.bind(this),n).catch(Yd.bind(null,s))})}function mo(i){return Oe((t,e)=>function(...r){let o=typeof i=="function"?i.call(this,...r):i;if(o instanceof RegExp)return Promise.all(bi.gets(this,o).map(n=>n.action(3,()=>Promise.resolve(),r))).then(()=>t.call(this,...r));let s=bi.get(this,o);return s?s.action(3,t.bind(this),r).catch(Yd.bind(null,e)):t.apply(this,r)})}var re={ERROR:"error",AUTOPLAY_FAILED:"autoplay-failed",KICKED_OUT:"kicked-out",REMOTE_USER_ENTER:"remote-user-enter",REMOTE_USER_EXIT:"remote-user-exit",REMOTE_AUDIO_AVAILABLE:"remote-audio-available",REMOTE_AUDIO_UNAVAILABLE:"remote-audio-unavailable",REMOTE_VIDEO_AVAILABLE:"remote-video-available",REMOTE_VIDEO_UNAVAILABLE:"remote-video-unavailable",AUDIO_VOLUME:"audio-volume",AUDIO_FRAME:"audio-frame",NETWORK_QUALITY:"network-quality",CONNECTION_STATE_CHANGED:"connection-state-changed",AUDIO_PLAY_STATE_CHANGED:"audio-play-state-changed",VIDEO_PLAY_STATE_CHANGED:"video-play-state-changed",SCREEN_SHARE_STOPPED:"screen-share-stopped",DEVICE_CHANGED:"device-changed",PUBLISH_STATE_CHANGED:"publish-state-changed",TRACK:"track",STATISTICS:"statistics",SEI_MESSAGE:"sei-message",CUSTOM_MESSAGE:"custom-message",VIDEO_DECODE_DOWNGRADE_STATE_CHANGED:"video-decode-downgrade-state-changed",LAYER_DATA:"layerData",FIRST_VIDEO_FRAME:"first-video-frame"},dg=new Set([re.ERROR,re.AUTOPLAY_FAILED,re.KICKED_OUT,re.REMOTE_USER_ENTER,re.REMOTE_USER_EXIT,re.REMOTE_AUDIO_AVAILABLE,re.REMOTE_AUDIO_UNAVAILABLE,re.REMOTE_VIDEO_AVAILABLE,re.REMOTE_VIDEO_UNAVAILABLE,re.CONNECTION_STATE_CHANGED,re.PUBLISH_STATE_CHANGED,re.SCREEN_SHARE_STOPPED,re.DEVICE_CHANGED,re.FIRST_VIDEO_FRAME]);var np={};Zr(np,{bytes2ms:()=>Zp,calculateScaleResolutionDownNumber:()=>vc,convertObjectNumberToInt:()=>Un,copyProperties:()=>Yp,deepClone:()=>xo,deepMerge:()=>ur,delay:()=>Vn,fibonacci:()=>Po,formatedTime:()=>Sc,getConstructorName:()=>vs,getContainerFromElement:()=>nh,getEnv:()=>zp,getInternalVersion:()=>oh,getLoggerUrl:()=>ii,getMediaStreamTrackInfo:()=>Rc,getMuteStateFromFlag:()=>Ln,getNetworkType:()=>xn,getNumNetworkType:()=>Ic,getReconnectionTimeout:()=>eh,getStringByteLength:()=>ah,getTurnServer:()=>sh,getUint32Version:()=>yc,getValueType:()=>ct,getViewListFromView:()=>Ds,glog:()=>Pn,ipv4ToUint32:()=>Ns,isArray:()=>ot,isAudioWorkletSupported:()=>ih,isBoolean:()=>st,isConstructor:()=>ko,isEmpty:()=>Cs,isFunction:()=>We,isLangChinese:()=>Sr,isMediaStreamTrack:()=>th,isNumber:()=>Pe,isObject:()=>er,isOverseaSdkAppId:()=>ri,isPlainObject:()=>Lt,isPortrait:()=>il,isPromise:()=>ji,isRemoteTrack:()=>rh,isRotate90Or270:()=>oi,isString:()=>we,isUndefined:()=>P,loadImage:()=>Ms,ms2bytes:()=>Kp,ms2samples:()=>rl,normalizeUrl:()=>Lo,performanceNow:()=>Ie,promiseAny:()=>kn,samples2ms:()=>tl,setNetworkType:()=>Qp,stringify:()=>dr,stringifyIncludeValue:()=>Ac,throttlePromise:()=>bc});var dp={};Zr(dp,{ScheduleRequestType:()=>lg,getAbilityConfig:()=>tS,getScheduleDomain:()=>eu,isNeedToSchedule:()=>Zd,scheduleProxy:()=>qr,sendScheduleRequest:()=>cp,setIsNeedToSchedule:()=>as,setScheduleProxy:()=>Kd});var ap=null,Zd=!0;typeof document!="undefined"&&document.head.insertAdjacentHTML("beforeend",Object.values(ti).map(i=>`<link rel="dns-prefetch" href="https://${i}">`).join(`\r
|
|
95
|
+
`));function as(i){st(i)&&i!==Zd&&(Zd=i,$.info(`setIsNeedToSchedule ${i}`))}V.on("28",()=>as(!0));V.on("63",()=>as(!0));V.on("84",()=>as(!0));V.on("201",i=>{i.state==="RECONNECTING"&&as(!0)});V.on("202",i=>{i.state==="RECONNECTING"&&as(!0)});function eS(i,t,e){let r={totalCost:0,local:0,dns:0,tcp:0,tls:0,request:0,response:0};try{let o=performance.getEntriesByType("resource"),s=po(i,"config",N.MAIN),n=po(i,"config",N.BACKUP);for(let c of o)if(c.startTime>=e&&(c.name===s||c.name===n)&&c.transferSize>0){let l=c.name===s?N.MAIN:N.BACKUP,m=Math.round(c.duration),E=Math.round(c.domainLookupStart-c.startTime),g=c.redirectStart>0?Math.round(c.redirectEnd-c.redirectStart):0,_=c.fetchStart>0?Math.round(c.domainLookupStart-c.fetchStart):0,v=Math.round(c.domainLookupEnd-c.domainLookupStart),L=Math.round(c.requestStart-c.secureConnectionStart),x=Math.round(c.secureConnectionStart-c.connectStart),M=Math.round(c.responseStart-c.requestStart),B=Math.round(c.responseEnd-c.responseStart),ee=[v,L,x,M,B];je.uploadEvent({log:`stat-schedule-net:${m}(${E}(${g}->${_})->${ee.join("->")}) ${l}`,userId:t}),r=Ee(q({},r),{totalCost:m,local:E,dns:v,tcp:x,tls:L,request:M,response:B});break}}catch(o){$.error("getScheduleDetailCost error",o)}return r}function cp(m){return A(this,arguments,function*({userId:i,sdkAppId:t,useStringRoomId:e,roomId:r,userSig:o,version:s,frameWorkType:n,role:c,latencyLevel:l}){if(!Zd&&ap)return{isCached:!0,result:ap};let E={delta:0,count:[1,1],msg:[],detail:[]};try{let g=new FormData;g.append("userId",String(i)),g.append("sdkAppId",String(t)),g.append("isStrGroupId",String(e)),g.append("groupId",String(r)),g.append("sdkVersion",s),g.append("userSig",String(o));let _=yield Fo();_!=null&&_.model&&g.append("model",String(_==null?void 0:_.model)),c&&g.append("role",String(c)),l&&g.append("latencyLevel",String(l)),n&&g.append("frameWorkType",String(n));let v=Ie(),L=yield iS(g,E,t);L.config&&(L.config.loggerDomain&&Do(L.config.loggerDomain),st(L.config.scheduleCache)&&as(!L.config.scheduleCache)),E.delta=Ie()-v;let x=eS(Number(t),i,v);return ap=L,{isCached:!1,result:L,detailCost:x}}catch(g){let _=ot(g)?g[0]:g,v=Pe(_.code)?_.code:0,L=`schedule failed${_.message?`: ${_.message}`:""}`,x=new ue({code:J.SCHEDULE_FAILED,extraCode:v,message:Be({key:$e.JOIN_ROOM_FAILED,data:{error:L,code:v}})});throw $.error(L,v),x}})}var qr={main:"",backup:""};function Kd(i){ot(i)?(qr.main=i[0],qr.backup=i[1]):qr.main=i}var lg=(r=>(r.CONFIG="config",r.TRTC_AUTO_CONF="trtcAutoConf",r.AUDIO_AI_AUTH="audioAiAuth",r))(lg||{});function po(i,t,e=N.MAIN,r=!1){return`https://${qr[e]||eu(i,e,r)}/api/v1/${t}`}function tS(i,t,e){let r=po(i,t),o=po(i,t,N.BACKUP),s=new URLSearchParams(e).toString(),n=fetch(`${r}?${s}`).then(l=>l.json()),c=fetch(`${o}?${s}`).then(l=>l.json());return kn([n,c])}function eu(i,t=N.MAIN,e=!1){let r;return ri(i)?e?r=t===N.MAIN?ti.MAIN_OVERSEA_BACKUP:ti.BACKUP_OVERSEA:r=t===N.MAIN?ti.MAIN_OVERSEA:ti.BACKUP_OVERSEA:r=t===N.MAIN?ti.MAIN:ti.BACKUP,r}function rS(i,t,e){return new Promise((r,o)=>{si({url:i,body:t,timeout:e.timeout,priority:"high"}).then(s=>{s.data.code===0?r(s.data.data):o({code:s.data.code,message:s.data.msg})}).catch(o)})}var ug=(i,t)=>Ji({retryFunction:rS,settings:{retries:3,timeout:0},onError:t,onRetrying:i});function iS(i,t,e){return new Promise((r,o)=>{let s=null;kn([ug(n=>t.count[0]=n+1,({error:n,retry:c,retriedCount:l,retryFuncArgs:m})=>{t.msg[0]=n.message,s||(l>=1&&(m[0]=po(e,"config",N.MAIN,!0)),c())})(po(e,"config",N.MAIN),i,{get timeout(){return Po(2+t.count[0])*1e3}}),ug(n=>t.count[1]=n+1,({error:n,retry:c,retriedCount:l,retryFuncArgs:m})=>{t.msg[1]=n.message,s||(l>=2&&(m[0]=po(e,"config",N.BACKUP,!0)),c())})(po(e,"config",N.BACKUP),i,{get timeout(){return Po(2+t.count[1])*1e3}})]).then(n=>{s=n,r(s)}).catch(o)})}var oS=i=>i.startsWith("data:application/octet-stream;base64,"),sS=i=>i.startsWith("file://"),xa=class{constructor(){u(this,"_log");this._log=$.createLogger({id:"fd"})}download(t,e){return A(this,null,function*(){let{type:r="blob"}=e||{};t=Lo(t);try{let o=Ie(),s;if(We(fetch)?s=yield this.downloadWithFetch(t,r):s=yield this.downloadWithXHR(t,r),!s||!s.data)throw new Error("data is empty");let n=Ie()-o;return this._log.info(`downloaded: ${t}, return type: ${r}, cost: ${n}ms`),Q.addSuccessEvent({key:522700,cost:Ie()-o}),s.data}catch(o){throw this._log.error(`failed to download: ${t}, error: ${o}`),Q.addFailedEvent({key:522700,error:o}),o}})}downloadWithFetch(t,e){return A(this,null,function*(){this._log.info(`download with fetch: ${t}, return type: ${e}`);try{let r=yield fetch(t);if(!r.ok){let s=new Error(`network response was not ok: ${r.status}`);throw s.status=r.status,s}let o;return e==="arraybuffer"?o=yield r.arrayBuffer():o=yield r.blob(),{data:o}}catch(r){throw r}})}downloadWithXHR(t,e){return this._log.info(`download with xhr: ${t}, return type: ${e}`),new Promise((r,o)=>{let s=new XMLHttpRequest;s.open("GET",t,!0),s.responseType=e,s.onload=()=>{if(s.status===200||s.status===0&&s.response)r({data:s.response});else{let n=new Error(`XHR failed, status: ${s.status}`);n.status=s.status,o(n)}},s.onerror=o,s.send(null)})}loadWasm(t,e){return A(this,null,function*(){this._log.info(`loadWasm ${t}, importObject: ${JSON.stringify(e)}`);let r=Ie(),o=null,s=null;if(We(WebAssembly.instantiateStreaming)&&!oS(t)&&!sS(t)&&We(fetch))try{let n=fetch(t);o=(yield WebAssembly.instantiateStreaming(n,e)).instance}catch(n){s=n}if(!o)try{let n=yield this.download(t,{type:"arraybuffer"});o=(yield WebAssembly.instantiate(n,e)).instance}catch(n){s=n}if(o){let n=Ie()-r;return this._log.info(`loadedWasm ${t}, cost: ${n}ms`),Q.addSuccessEvent({key:522701,cost:n}),o}throw this._log.error(`failed to loadWasm ${t}, error: ${s}`),Q.addFailedEvent({key:522701,error:s}),s})}loadScript(t){this._log.info(`loadScript ${t}`);let e=Ie();return new Promise((r,o)=>{let s=document.createElement("script");s.type="text/javascript",s.onload=()=>{this._log.info(`loadedScript ${t}, cost: ${Ie()-e}ms`),Q.addSuccessEvent({key:522702,cost:Ie()-e,split:1e3}),r(s)},s.onerror=n=>{this._log.error(`failed to loadScript ${t}, error: ${n}`),Q.addFailedEvent({key:522702}),o(n)},s.crossOrigin="anonymous",s.src=t,document.head.append?document.head.append(s):document.getElementsByTagName("head")[0].appendChild(s)})}};Z([Jo({settings:{timeout:0,retries:3},onError(t,e,r){var o;(t==null?void 0:t.status)===404||(o=t==null?void 0:t.message)!=null&&o.includes("404")?(this._log.warn("download 404, stop retry"),r(t)):e()},onRetrying(t){this._log.warn(`download retrying: ${t}`)}})],xa.prototype,"download",1),Z([Jo({settings:{timeout:3e3,retries:3},onRetrying(t){this._log.warn(`loadScript retrying: ${t}`)}})],xa.prototype,"loadScript",1);var mg=new xa;function pg({TRTC:i,room:t,errorModule:e,assetsPath:r}){return{TRTC:i,room:t,assetsPath:r,fileDownloader:mg,innerEmitter:V,constants:el,environment:Bs,utils:np,eventLogger:je,log:this.room.getLogger(),loggerManager:$,errorModule:e,kvStatManager:Q,rtcDectection:Ki,trtc:this,rx:Zm,enums:Vl,schedule:dp,clearStarted:(o,s)=>{let n=o.getAlias(),c=bi.instances.get(this);if(c)if(s){let l=c.get(n+s);if(!l)return;l.started=!1}else c.forEach((l,m)=>{m.startsWith(n)&&(l.started=!1)})},startGetPCM:Sa,createAudioNode:Ea}}var hg=(i,t)=>{let{emit:e}=i;return i.emit=(...r)=>{try{return e.apply(i,r)}catch(o){let s=Be({key:$e.CATCH_HANDLER_ERROR,data:{name:t,event:r[0]},addDocLink:!1});return $.warn(`${s}
|
|
56
96
|
|
|
57
|
-
${r.stack}`),!1}},o};var jo=new WeakMap;function sp(o){let i=jo.get(o);i&&(i.forEach(e=>clearTimeout(e)),jo.delete(o))}function np(o,i){return Q((e,t)=>function(...r){let s=jo.get(this);s||(s=new Map,jo.set(this,s));let n=i(...r),a=s.get(n);if(!a||a<=0){e.apply(this,r);let c=setTimeout(()=>{var l;(l=jo.get(this))==null||l.delete(n)},o);s.set(n,c)}else{clearTimeout(a);let c=window.setTimeout(()=>{var l;e.apply(this,r),(l=jo.get(this))==null||l.delete(n)},o);s.set(n,c)}})}var cp="trtc-sdk-v5",dp="5.11.2-beta.6";function Ge(...o){return Q((i,e)=>function(...t){try{cc.call(this,o,t,e,this._name)}catch(r){return Promise.reject(r)}return i.apply(this,t)})}function au(...o){return Q((i,e)=>function(...t){try{cc.call(this,o,t,e,this._name)}catch(r){throw r}return i.apply(this,t)})}function cc(o,i,e,t){if(Se(o))for(let r=0;r<o.length;r++)ac.call(this,{rule:o[r],value:i[r],key:o[r].name,fnName:e,className:t});else ac.call(this,{rule:o,value:i[0],key:o.name,fnName:e,className:t})}function ac({rule:o,value:i,key:e,fnName:t,className:r}){function s(c){return{code:B.INVALID_PARAMETER,extraCode:c,fnName:t,messageParams:{key:e,rule:o,value:i}}}if(T(i)){if(o.required)throw new w(s(5001));if(T(o.defaultValue)){ne(o.validate)&&o.validate.call(this,i,e,t,r,this);return}i=o.defaultValue}if(Array.isArray(o.type)){let c=!1;for(let l=0;l<o.type.length;l++)o.type[l]===null&&i===null&&(c=!0),ne(o.type[l])&&i instanceof o.type[l]&&(c=!0),ee(o.type[l])&&Re(i)===o.type[l].toLowerCase()&&(c=!0);if(!c)throw new w({code:B.INVALID_PARAMETER,extraCode:5002,fnName:t,messageParams:{key:e,rule:{type:o.type.map(l=>br(l)?no(l):ee(l)?l:Re(l))},value:i}})}else if(!T(o.type)&&Re(i)!==o.type)throw new w(s(5002));if(o.allowEmpty===!1){let c=j(i)&&(i===0||Number.isNaN(i)),l=ee(i)&&i.trim()==="";if(c||l)throw new w(s(5003))}if(o.notLessThanZero&&j(i)&&i<0)throw new w(s(5006));if(!T(o.min)&&j(i)&&i<o.min)throw new w(s(5007));if(!T(o.max)&&j(i)&&i>o.max)throw new w(s(5008));if(ee(o.instanceOf)){if(!i||i._name!==o.instanceOf)throw new w(s(5004))}else if(ne(o.instanceOf)&&!(i instanceof o.instanceOf))throw new w(s(5004));if(Array.isArray(o.values)&&!o.values.includes(i))throw new w(s(5005));let{properties:n}=o;Je(n)&&ht(i)&&Object.keys(n).forEach(c=>{ac.call(this,{rule:n[c],value:i&&i[c],key:`${c}`,fnName:t,className:r})});let{arrayItem:a}=o;Je(a)&&Se(i)&&i.forEach((c,l)=>{ac.call(this,{rule:a,value:c,key:`${e}[${l}]`,fnName:t,className:r})}),ne(o.validate)&&o.validate.call(this,i,e,t,r,this)}function fe(o={}){let{getRemoteId:i=()=>"",replaceArg:e,getKVReportKey:t,ignoreLog:r,ignoreErrorLog:s}=o;return Q((n,a)=>function(...c){var g,D,_;function l(S,O,K){if(K&&K.includes(S))return"hided";if(e){let G=e(...c);if(c[G.argIndex]===O)return G.value}if(O===c||S in c)return O;try{return O instanceof HTMLElement?`id: ${O.id} type:${Re(O)}`:O instanceof MediaStreamTrack?Vn(O):(JSON.stringify(O),O)}catch(G){return`type:${Re(O)}`}}let h=this._log||C;if(r!=null&&r(...c))return n.apply(this,c);c.length>0?h.info(`${a}() ${JSON.stringify(c,(S,O)=>l(S,O,["userSig","privateMapKey"]))}`):h.info(`${a}()`);let u=t?t(...c):la[a],m=(s==null?void 0:s(...c))||!1;try{let S=n.apply(this,c),O=V();if(or(S)){let K=`${a.includes("Plugin")?`${((D=(g=c[0]).getName)==null?void 0:D.call(g))||""} `:" "}`;return S.then(G=>(h.info(`${a}() success ${K}${i.call(this,...c)}`),b.addSuccessEvent({key:u,cost:V()-O}),G)).catch(G=>{var J;G=w.convertFrom.call(this,G,a,c.length===1?c[0]:c);let Z=G.extraCode||G.code,_e=(J=G.message)!=null&&J.includes(Z)?"":` code:${Z}`;throw m||h.error(`${a}() failed ${K}${i.call(this,...c)} ${G}${_e} params: ${JSON.stringify(c,l)}`),b.addFailedEvent({key:u,error:G}),G})}return b.addSuccessEvent({key:u}),S}catch(S){S=w.convertFrom.call(this,S,a);let O=S.extraCode||S.code,K=(_=S.message)!=null&&_.includes(O)?"":` code:${O}`;throw m||h.error(`${a}() failed ${S}${K} params: ${JSON.stringify(c,l)}`),b.addFailedEvent({key:u,error:S}),S}})}var dc=o=>Q((i,e)=>function(t,r){return f(this,null,function*(){let s=this._plugins.get(t);if(!s)throw this._log.error(`plugin ${String(t)} is not found`),new w({code:B.OPERATION_ABORT,message:`plugin ${String(t)} is not found`,fnName:e});if(ne(s.constructor.isSupported)&&!s.constructor.isSupported())throw this._log.error(`plugin ${String(t)} is not supported`),new w({code:B.ENV_NOT_SUPPORTED,message:`plugin ${String(t)} is not supported`,extraCode:5210,fnName:e});return cc.call(this,s.getValidateRule(o),[r],e,"TRTC"),i.call(this,s,r)})});var lc=0,cu,qi=class qi{constructor(i){this.core=i;d(this,"log");d(this,"customAudioReferenceMap",new Map);d(this,"audioRefId",0);d(this,"audioContext",Ee());d(this,"localAudioWorkletNode");d(this,"screenAudioWorkletNode");d(this,"mixNode");d(this,"silentNode");lc=lc+1,this.log=i.log.createChild({id:`${this.getAlias()}${lc}`}),this.log.info(`created id=${this.getAlias()}${lc}`)}static getStartValidateRule(i){return{name:"options",required:!0,type:"object",properties:{sdkAppId:{type:"number",required:!0},userId:{type:"string",required:!0},userSig:{type:"string",required:!0}},validate(e,t,r,s){if(!i.room.audioManager.hasAudioTrack&&!i.room.audioManager.hasScreenAudioTrack)throw new w({code:B.INVALID_OPERATION,extraCode:5106,fnName:r})}}}preload(i){return cu||(cu=this.doPreload(i)),cu}doPreload(i){return f(this,null,function*(){let e=yield this.core.fileDownloader.download(i,{type:"blob"}),t=URL.createObjectURL(e);try{yield Bi(this.audioContext,t)}catch(r){this.log.error(`preload audioProcessor failed. ${r}`)}finally{URL.revokeObjectURL(t)}})}getName(){return qi.Name}getAlias(){return"ap"}getGroup(){return"ap"}getValidateRule(i){switch(i){case"start":return qi.getStartValidateRule(this.core);case"update":return qi.updateValidateRule;case"stop":return qi.stopValidateRule}}start(i){return f(this,null,function*(){let{room:e}=this.core,{sdkAppId:t,userId:r,assetsPath:s=this.core.assetsPath,audioReference:n,processLevel:a,enableDump:c,isLocalAudioNeedAudioProcess:l=!0,isScreenAudioNeedAudioProcess:h=!0}=i;if(this.core.room.audioManager.isLocalAudioNeedAudioProcess=l,this.core.room.audioManager.isScreenAudioNeedAudioProcess=h,!s)throw new w({code:B.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});if(yield this.preload(`${s}/audioProcessor-wasm.js`),!this.localAudioWorkletNode||!this.screenAudioWorkletNode){let u=String(Date.now()).slice(0,-3),{auth:m,sign:g,status:D,message:_}=yield JT(L(N({},i),{timestamp:u}));if(!m)throw this.log.info(`audioProcessor: ${r} auth result: ${m}. Message: ${_}`),new w({code:B.INVALID_PARAMETER,message:_});this.localAudioWorkletNode=new AudioWorkletNode(this.audioContext,"trtc-audio-processor",{numberOfInputs:2,numberOfOutputs:1}),this.initWorkletNode(this.localAudioWorkletNode,"localAudio",t,r,u,g,D,e),this.screenAudioWorkletNode=new AudioWorkletNode(this.audioContext,"trtc-audio-processor",{numberOfInputs:2,numberOfOutputs:1}),this.initWorkletNode(this.screenAudioWorkletNode,"screenAudio",t,r,u,g,D,e)}this.mixNode||(this.mixNode=this.audioContext.createGain(),this.mixNode.gain.value=1),this.silentNode||(this.silentNode=this.audioContext.createConstantSource(),this.silentNode.offset.setValueAtTime(0,this.audioContext.currentTime),this.silentNode.start()),this.localAudioWorkletNode.port.postMessage({type:"enable"}),this.screenAudioWorkletNode.port.postMessage({type:"enable"}),e.audioManager.addAudioProcessor(this.localAudioWorkletNode,this.mixNode,this.silentNode,this.screenAudioWorkletNode),T(n)||n.forEach(u=>{this.customAudioReferenceMap.set(u,`o-${this.audioRefId++}`),this.core.room.audioManager.updateAudioReference({type:"add",audioReference:u,refId:`o-${this.audioRefId++}`})}),T(a)||this.localAudioWorkletNode.port.postMessage({type:"setConfig",data:{aecEnable:1,aecNlpLevel:a}}),T(c)||this.localAudioWorkletNode.port.postMessage({type:"dump",data:{enable:c}})})}update(i){return f(this,null,function*(){if(!this.localAudioWorkletNode||!this.screenAudioWorkletNode)return;let{audioReference:e,enableDump:t,processLevel:r}=i;T(e)||(this.customAudioReferenceMap.forEach((s,n)=>{this.customAudioReferenceMap.delete(n),this.core.room.audioManager.updateAudioReference({type:"remove",refId:s})}),e.forEach(s=>{this.customAudioReferenceMap.set(s,`o-${this.audioRefId++}`),this.core.room.audioManager.updateAudioReference({type:"add",audioReference:s,refId:`o-${this.audioRefId++}`})})),T(r)||this.localAudioWorkletNode.port.postMessage({type:"setConfig",data:{aecEnable:1,aecNlpLevel:r}}),T(t)||(this.localAudioWorkletNode.port.postMessage({type:"dump",data:{enable:t}}),this.screenAudioWorkletNode.port.postMessage({type:"dump",data:{enable:t}}))})}stop(){return f(this,null,function*(){if(!this.localAudioWorkletNode||!this.mixNode||!this.silentNode||!this.screenAudioWorkletNode)return;let{room:i}=this.core;this.localAudioWorkletNode.port.postMessage({type:"disable"}),this.screenAudioWorkletNode.port.postMessage({type:"disable"}),yield i.audioManager.removeAudioProcessor(this.localAudioWorkletNode,this.mixNode,this.silentNode,this.screenAudioWorkletNode)})}destroy(){this.localAudioWorkletNode&&(this.localAudioWorkletNode.port.onmessage=null),this.screenAudioWorkletNode&&(this.screenAudioWorkletNode.port.onmessage=null)}initWorkletNode(i,e,t,r,s,n,a,c){i.port.postMessage({type:"init",data:{sdkAppId:String(t),userId:r,timestamp:s,sign:n,status:a}}),i.port.onmessage=l=>{var u;let{data:h}=l;switch(h.type){case"cost":let m=(h==null?void 0:h.value)>10?"info":"debug";this.log[m](`[${e}] avg cost: ${h.value} max: ${h==null?void 0:h.max}(${to(new Date(h==null?void 0:h.maxCostTimestamp))}) hist: ${(u=h==null?void 0:h.hist)==null?void 0:u.join(" ")}`);return;case"log":this.log[h.logLevel](`[${e}] ${h.value}`);return;case"dump":E.emit("265",{room:c,data:h.value,type:e==="localAudio"?"dump":"dump-screen-audio"});return}}}};d(qi,"updateValidateRule",{type:"object"}),d(qi,"stopValidateRule",{type:"object"}),d(qi,"Name","AudioProcessor");var uc=qi;function WT(o,i=p.MAIN){return`https://${_i[i]||nc(o,i)}/api/v1/audioAiAuth`}function JT(r){return f(this,arguments,function*({sdkAppId:o,userId:i,userSig:e,timestamp:t}){let n=`${WT(o)}?sdkAppId=${o}&userId=${i}&userSig=${e}×tamp=${t}`,a=yield fetch(n),{data:{errCode:c,errMsg:l,sign:h,status:u}}=yield a.json();if(u==="1")return{auth:!0,sign:h,status:u,message:l};let m=Ci(o)?"https://trtc.io/document/42734?platform=web&product=rtcengine&menulabel=coresdk":"https://cloud.tencent.com/document/product/647/44247",g="Init RTCAudioProcessor failed.",D="";switch(c){case 1:D="Please check your params.";break;case 2:D=`You need to buy packages. Refer to: ${m}`;break;case 3:D="Server is invalid. Please contact our engineer. ";break;case 4:D=`Your packages is not active. Refer to: ${m}`;break;case 5:D=`Your packages is expired. Refer to: ${m}`;break;case 6:D="Your version is not supported.";break}return{auth:!1,status:u,message:l?`${g} Reason: ${l}. ${D}`:`${g}, ${D}`}})}var hc=0,du=class{constructor(i,e){d(this,"player");d(this,"publisher");d(this,"mixInput");this.mixInput=new xo(e),i.url?(this.player=new Audio(i.url),this.player.crossOrigin="anonymous",this.publisher=new Audio(i.url),this.publisher.crossOrigin="anonymous",this.mixInput.replaceSource(this.publisher)):this.mixInput.replaceSource(i.track),this.mixInput.connect()}updateSettings(i){this.player&&(T(i.volume)||(this.volume=i.volume),T(i.loop)||(this.loop=i.loop),T(i.playbackRate)||(this.playbackRate=i.playbackRate))}updateListener(i){if(this.player){if(i.onDurationChange){let{onDurationChange:e}=i;this.player.ondurationchange=t=>{e(t.target.duration)}}if(i.onTimeUpdate){let e=i.onTimeUpdate,{player:t}=this;t.ontimeupdate=()=>{e(t.currentTime,t.duration)}}i.onEnded&&(this.player.onended=i.onEnded)}}reset(){this.seek(0),this.mixInput.connect()}seek(i){this.player&&(i<0&&i>this.player.duration||(this.player.currentTime=i,this.publisher.currentTime=i))}play(){var i,e;return(i=this.publisher)==null||i.play(),(e=this.player)==null?void 0:e.play()}pause(){var i,e;(i=this.player)==null||i.pause(),(e=this.publisher)==null||e.pause()}stop(){var i;(i=this.player)==null||i.pause(),this.mixInput.disconnect()}setOperation(i){i==="pause"&&this.pause(),i==="resume"&&(this.pause(),this.play()),i==="stop"&&(this.pause(),this.seek(0))}set volume(i){!this.player||!this.publisher||(this.player.volume=i,this.publisher.volume=i)}set loop(i){!this.player||!this.publisher||(this.player.loop=i,this.publisher.loop=i)}set playbackRate(i){!this.player||!this.publisher||(this.player.playbackRate=i,this.publisher.playbackRate=i)}};function qo(o,i){if(i&&typeof i!="function")throw new w({code:B.INVALID_PARAMETER,message:`start audioMixer plugin: param ${o} should be a function.`})}var gi=class gi{constructor(i){this.core=i;d(this,"log");d(this,"mixedMusicMap",new Map);d(this,"cacheMusicMap",new Map);hc=hc+1,this.log=i.log.createChild({id:`${this.getAlias()}${hc}`}),this.log.info(`created id=${this.getAlias()}${hc}`)}getName(){return gi.Name}getAlias(){return"ax"}getGroup(i){return i==null?void 0:i.id}getValidateRule(i){switch(i){case"start":return gi.startValidateRule;case"update":return gi.updateValidateRule;case"stop":return gi.stopValidateRule}}start(i){return f(this,null,function*(){let{room:e}=this.core;this.log.info(`add music source, id: ${i.id} url: ${i.url}, track: ${i.track}`);let{id:t,url:r}=i;if(this.mixedMusicMap.has(t))return;let s=this.cacheMusicMap.get(t);s?i.url?s.reset():(s.mixInput.replaceSource(i.track),s.mixInput.connect()):(s=new du(i,e.audioManager),this.cacheMusicMap.set(t,s)),s.updateListener(i),s.updateSettings(i),yield s.play(),this.mixedMusicMap.set(t,s),s.mixInput.source.node&&this.core.room.audioManager.updateAudioReference({type:"add",audioReference:s.mixInput.source.node,refId:`ax-${t}`}),this.log.info(`start mix audio track ${t} success.`),b.addEnum({key:502700,value:3}),this.kvUpload(i)})}update(i){return f(this,null,function*(){let{id:e,operation:t,seekFrom:r,playbackRate:s}=i;this.log.info(`update music source, ${JSON.stringify(i)}`);let n=this.mixedMusicMap.get(e);if(!n){this.log.warn(`update music source failed, music id: ${e} not found.`);return}n.updateSettings(i),n.updateListener(i),T(t)||n.setOperation(t),T(r)||n.seek(r),this.kvUpload(i)})}stop(e){return f(this,arguments,function*({id:i}){if(this.mixedMusicMap.has(i)){this.log.info(`remove music source, music id: ${i}`);let t=this.mixedMusicMap.get(i);t!=null&&t.mixInput.source.node&&this.core.room.audioManager.updateAudioReference({type:"remove",audioReference:t.mixInput.source.node,refId:`ax-${i}`}),t==null||t.stop(),this.mixedMusicMap.delete(i)}i==="*"&&this.destroyAllMusic()})}kvUpload(i){let{track:e,loop:t,volume:r,playbackRate:s,operation:n,seekFrom:a,onTimeUpdate:c,onDurationChange:l,onEnded:h}=i;e&&b.addCount({key:502711}),t&&b.addCount({key:502703}),r&&b.addCount({key:502704}),s&&b.addCount({key:502705}),n&&b.addCount({key:502706}),a&&b.addCount({key:502707}),typeof c!="function"&&b.addCount({key:502709}),typeof h!="function"&&b.addCount({key:502710}),typeof l!="function"&&b.addCount({key:502708})}destroyAllMusic(){this.log.info("destroy all music source."),this.mixedMusicMap.forEach((i,e)=>{i!=null&&i.mixInput.track&&this.core.room.audioManager.updateAudioReference({type:"remove",audioReference:i.mixInput.track,refId:e}),this.stop({id:e})})}destroyAllCache(){this.log.info("destroy all music cache."),this.cacheMusicMap.clear()}destroy(){this.log.info("destroy audio mixer plugin."),this.destroyAllMusic(),this.destroyAllCache()}};d(gi,"startValidateRule",{name:"options",required:!0,type:"object",properties:{id:{type:"string",required:!0},url:{type:"string",required:!1},track:{required:!1},loop:{type:"boolean"},volume:{type:"number"}},validate(i,e,t){if(i.url&&i.url!=="*"){let r=i.url.split("?")[0],s=["mp3","ogg","wav","flac"],n=r.split(".").pop(),a=s.indexOf(n)>=0,c=r.startsWith("blob"),l=r.startsWith("data");if(!(a||c||l))throw new w({code:B.INVALID_PARAMETER,message:"start audioMixer plugin: music url is invalid, please check your file format.",fnName:t})}if(!i.url&&!i.track)throw new w({code:B.INVALID_PARAMETER,message:"start audioMixer plugin: param url or track is required.",fnName:t});qo("onTimeUpdate",i.onTimeUpdate),qo("onEnded",i.onEnded),qo("onDurationChange",i.onDurationChange)}}),d(gi,"updateValidateRule",{name:"options",required:!0,type:"object",properties:{id:{type:"string",required:!0},loop:{type:"boolean"},volume:{type:"number"},seekFrom:{type:"number"},operation:{type:"string",values:["pause","resume","stop"]}},validate(i,e,t){qo("onTimeUpdate",i.onTimeUpdate),qo("onEnded",i.onEnded),qo("onDurationChange",i.onDurationChange)}}),d(gi,"stopValidateRule",{name:"options",type:"object",required:!0,properties:{id:{type:"string",required:!0}}}),d(gi,"Name","AudioMixer");var mc=gi;var pc=0,lu,Xi=class Xi{constructor(i){this.core=i;d(this,"log");d(this,"audioContext",Ee("denoiser"));d(this,"workletNode");pc=pc+1,this.log=i.log.createChild({id:`${this.getAlias()}${pc}`}),this.log.info(`created id=${this.getAlias()}${pc}`)}static startValidateRule(i){return{name:"options",required:!0,type:"object",properties:{sdkAppId:{type:"number",required:!0},userId:{type:"string",required:!0},userSig:{type:"string",required:!0}},validate(e,t,r,s){if(!i.room.audioManager.hasAudioTrack)throw new w({code:B.INVALID_OPERATION,extraCode:5106,fnName:r})}}}preload(i){return lu||(lu=this.doPreload(i)),lu}doPreload(i){return f(this,null,function*(){let e=yield this.core.fileDownloader.download(i,{type:"blob"}),t=URL.createObjectURL(e);try{yield Bi(this.audioContext,t)}catch(r){throw this.log.error("load worklet failed",r),r}finally{URL.revokeObjectURL(t)}})}getName(){return Xi.Name}getAlias(){return"ad"}getGroup(){return`AIDenoiser_${Date.now()}`}getValidateRule(i){switch(i){case"start":return Xi.startValidateRule(this.core);case"update":return Xi.updateValidateRule;case"stop":return Xi.stopValidateRule}}start(i){return f(this,null,function*(){let{room:e,schedule:t}=this.core,{assetsPath:r=this.core.assetsPath}=i;if(!r)throw new w({code:B.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});if(yield this.preload(`${r}/denoiser-wasm.js`),!this.workletNode){let s=String(Date.now()).slice(0,-3),{auth:n,sign:a,status:c,message:l}=yield qT(t,L(N({},i),{timestamp:s}));if(!n)throw this.log.info(`RTCAIDenoiser: ${i.userId} auth result: ${n}. Message: ${l}`),new w({code:B.INVALID_PARAMETER,message:l});this.workletNode=new AudioWorkletNode(this.audioContext,"trtc-denoiser-processor",{numberOfInputs:1,numberOfOutputs:1}),this.workletNode.port.postMessage({type:"init",data:{sdkAppId:String(i.sdkAppId),userId:i.userId,timestamp:s,sign:a,status:c}}),this.workletNode.port.onmessage=h=>{var m;let{data:u}=h;if(u.type==="cost"){let g=(u==null?void 0:u.max)>20?"warn":(u==null?void 0:u.max)>10?"info":"debug";this.log[g](`avg cost: ${u.value} max: ${u==null?void 0:u.max}(${to(new Date(u==null?void 0:u.maxCostTimestamp))}) hist: ${(m=u==null?void 0:u.hist)==null?void 0:m.join(" ")}`)}else u.type==="log"&&this.log[u.logLevel](`${u.value}`)}}this.workletNode.port.postMessage({type:"enable"}),e.audioManager.addDenoiser(this.workletNode),e.sendAbilityStatus({ai_denoise:1})})}update(){return f(this,null,function*(){})}stop(){return f(this,null,function*(){if(!this.workletNode)return;let{room:i}=this.core;this.workletNode.port.postMessage({type:"disable"}),yield i.audioManager.removeDenoiser(this.workletNode)})}destroy(){this.workletNode&&(this.workletNode.port.onmessage=null)}};d(Xi,"updateValidateRule",{type:"object"}),d(Xi,"stopValidateRule",{type:"object"}),d(Xi,"Name","AIDenoiser");var fc=Xi;function qT(s,n){return f(this,arguments,function*(o,{sdkAppId:i,userId:e,userSig:t,timestamp:r}){try{let{data:{errCode:a,errMsg:c,sign:l,status:h}}=yield o.getAbilityConfig(i,o.ScheduleRequestType.AUDIO_AI_AUTH,{sdkAppId:i,userId:e,userSig:t,timestamp:r});if(h==="1")return{auth:!0,sign:l,status:h,message:c};let u=Ci(i)?"https://trtc.io/document/42734?platform=web&product=rtcengine&menulabel=coresdk":"https://cloud.tencent.com/document/product/647/44247",m="Init RTCAIDenoiser failed.",g="";switch(a){case 1:g="Please check your params.";break;case 2:g=`You need to buy packages. Refer to: ${u}`;break;case 3:g="Server is invalid. Please contact our engineer. ";break;case 4:g=`Your packages is not active. Refer to: ${u}`;break;case 5:g=`Your packages is expired. Refer to: ${u}`;break;case 6:g="Your version is not supported.";break}return{auth:!1,status:h,message:c?`${m} Reason: ${c}. ${g}`:`${m}, ${g}`}}catch(a){return{auth:!1,status:"0",message:`Init RTCAIDenoiser failed. All requests failed. ${a}`}}})}var up=$e(Ye(),1);var uu=class extends up.EventEmitter{constructor(){super();d(this,"observer");d(this,"state","nominal");this.onPressureChange=this.onPressureChange.bind(this)}get stateNum(){switch(this.state){case"nominal":return 1;case"fair":return 2;case"serious":return 3;case"critical":return 4}}start(){return f(this,null,function*(){if(!this.observer)try{"PressureObserver"in window&&!pe&&(this.observer=new PressureObserver(this.onPressureChange),yield this.observer.observe("cpu",{sampleInterval:2e3}))}catch(e){re.uploadEvent({log:"stat-pressure-detector-start-failed",error:e})}})}onPressureChange(e){let t=this.stateNum,r=e[e.length-1];this.state=r.state,(this.stateNum>3||t>3)&&C.info(`${r.source}: ${r.state}`),this.emit("state-changed",{type:r.source,state:this.state})}destroy(){var e;try{(e=this.observer)==null||e.disconnect(),this.observer=null}catch(t){re.uploadEvent({log:"stat-pressure-detector-destroy-failed",error:t})}}},XT=new uu,hu=XT;function mu([o,i]){let e=i.byteLength,t=parseInt(String(e/255),10),r=e%255,s=[];s.push(0,0,0,1,6,o);for(let a=0;a<t;a++)s.push(255);s.push(r);let n=new DataView(i);return s.push(...new Uint8Array(n.buffer)),s.push(128),new Hi(new DataView(new Uint8Array(s).buffer),!0)}function pu(o){return o.type==="empty"||o.data.byteLength===0}function fu(o){return o.getInt32(0)===1&&o.getInt8(4)===6}function _u(o){let i=0,e=0,t=new DataView(o);for(let r=0;r<o.byteLength;r++)switch(t.getUint8(r)){case 0:i++;break;case 1:(i===2||i===3)&&e++,i=0;break;default:i=0;break}return e}function gu({frame:o,seiMessageList:i}){if(!i||i.length===0||o.data.byteLength===0)return o;let t=9-_u(o.data);if(t<=0)return o;let r=i.splice(0,t).reverse().map(mu),s=r.reduce((h,u)=>h+u.dataView.byteLength,0),n=new ArrayBuffer(s+o.data.byteLength),a=new DataView(n),c=new DataView(o.data),l=0;for(let h=0;h<r.length;h++)for(let u=0;u<r[h].dataView.byteLength;u++)a.setInt8(l++,r[h].dataView.getInt8(u));for(let h=0;h<o.data.byteLength;h++)a.setInt8(l++,c.getInt8(h));return o.data=n,o}function Tu({frame:o,onSEI:i}){try{let e=new DataView(o.data);if(pu(o)||!fu(e))return o;let t=[],r=0,s=-1,n=-1;for(let a=0;a<o.data.byteLength;a++){let c=e.getUint8(a);if(c===0)r++;else if(c===1){if(r===2||r===3){let l=a-r;if(s===-1?s=l:n===-1&&(n=l,t.push(new Hi(new DataView(e.buffer.slice(s,n)))),s=l,n=-1),!(e.getUint8(a+1)===6)){o.data=e.buffer.slice(l);break}}r=0}else r=0}i==null||i(t.reverse())}catch(e){}return o}var Eu=0,nn=class nn{constructor(i){this.core=i;d(this,"log");d(this,"_seiMessageList",[]);d(this,"_smallSeiMessageList",[]);d(this,"_subStreamSeiMessageList",[]);Eu++,this.log=i.log.createChild({id:`${this.getAlias()}${Eu}`}),this.log.info(`[sei] created id=${this.getAlias()}${Eu}`),this.encode=this.encode.bind(this),this.decode=this.decode.bind(this)}encode({frame:i,mediaType:e}){try{let t=e===8?this._smallSeiMessageList:e===2?this._subStreamSeiMessageList:this._seiMessageList;return gu({frame:i,seiMessageList:t})}catch(t){this.log.warn(t)}return i}decode({frame:i,track:e}){return Tu({frame:i,onSEI:t=>{t.forEach(r=>{this.core.trtc.emit(k.SEI_MESSAGE,{seiPayloadType:r.seiPayloadType,data:r.seiPayload.buffer,userId:e.userId,streamType:e.mediaType===2?"sub":"main"})})}})}destroy(){this.log.debug("destory"),this.stop(),delete this.core}getValidateRule(i){switch(i){case"start":return{type:"object"};case"update":return{type:"object"};case"stop":return{type:"object"}}}start(){this.core.room.videoManager.addEncodeProcessor({processor:Vi?this.encode:gu,type:2}),this.core.room.videoManager.addDecodeProcessor({processor:Vi?this.decode:Tu,type:2})}stop(){this.core.room.videoManager.removeEncodeProcessor({type:2}),this.core.room.videoManager.removeDecodeProcessor({type:2})}update({buffer:i,options:e}){var s;let t=[e.seiPayloadType,i],r=!!e.small;e.toSubStream?this._subStreamSeiMessageList.push(t):(this._seiMessageList.push(t),r&&this._smallSeiMessageList.push(t)),(s=this.core.room.scriptTransformWorker)==null||s.postMessage({type:"sei",data:t,isMain:!e.toSubStream,small:r})}getName(){return nn.Name}getAlias(){return"sei"}getGroup(){return"sei"}};d(nn,"autoStart",!0),d(nn,"Name","SEI");var _c=nn;function Su({frame:o,onDump:i}){return i==null||i(),o}function Iu({frame:o,onDump:i}){return i==null||i(),o}var hp={"play() error: NotAllowedError:":{tips:o=>o.includes("main <video>")||o.includes("main <audio>")?"Remote stream auto play is restricted and playback fails":"Local stream playback failure, generally only occurs in Android WeChat devices, no need to handle",color:"red",class:"red"},"updateStream() try to recover local stream":{tips:"Device acquisition exception, automatic recovery is in progress"},"updateStream() recover local stream successfully":{tips:"Device acquisition exception, automatic recovery is successful"},"updateStream() failed to recover local stream":{tips:"Device acquisition exception, automatic recovery failed"},"main stream - video track is muted":{tips:"Indicates that the received video data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - audio track is muted":{tips:"Indicates that the received audio data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"auxiliary stream - video track is muted":{tips:"Indicates that the received screen sharing data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - video track is unable to provide media output":{tips:"Indicates that the received video data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - audio track is unable to provide media output":{tips:"Indicates that the received audio data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"auxiliary stream - video track is unable to provide media output":{tips:"Indicates that the received screen sharing data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - video track is unmuted":{tips:"Received enough playback video data"},"main stream - audio track is unmuted":{tips:"Received enough playback audio data"},"auxiliary stream - video track is unmuted":{tips:"Received enough playback screen sharing data"},"main stream - audio player track is ended":{tips:"Remote audio track stopped"},"main stream - video player track is ended":{tips:"Remote video track stopped"},"auxiliary stream - video player track is ended":{tips:"Received enough playback screen sharing data"},"stream - video track is muted":{tips:"Camera capture is paused, usually due to the device being occupied by other applications or the browser media permission being revoked. The client needs to re-capture.",color:"orange"},"stream - video track is unable to provide media output":{tips:"The camera acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked, and the customer needs to re-acquire. SDK v4.11.4+ will automatically resume acquisition without customer intervention",color:"orange"},"video track is unable to provide media output":{tips:o=>o.includes("\u2193")?"The remote track is temporarily unable to decode data, which may be caused by network fluctuations":"The camera acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - video player track is ended":{tips:"The camera acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"video player track is ended":{tips:"The camera acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"stream - audio track is muted":{tips:"Microphone capture is paused, usually due to the device being occupied by other applications or the browser media permission being revoked. The client needs to re-capture.",color:"orange"},"audio track is unable to provide media output":{tips:o=>o.includes("\u2193")?"The remote track is temporarily unable to decode data, which may be caused by network fluctuations":"Microphone acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - audio track is unable to provide media output":{tips:"The microphone acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - audio player track is ended":{tips:"The microphone acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"audio player track is ended":{tips:"The microphone acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"is adding audio track to current published local stream":{tips:"add audio track",color:"orange"},"is removing audio track from current published local stream":{tips:"remove audio track",color:"orange"},"is removing video track from current published local stream":{tips:"remove video track",color:"orange"},"is adding video track to current published local stream":{tips:"add video track",color:"orange"},"is replacing audio track to current published local main stream":{tips:"replace audio track",color:"orange"},"is replacing video track to current published local main stream":{tips:"replace video track",color:"orange"},"downlink network quality change":{tips:"Downstream network quality change: 1: excellent, 2: good, 3: average, 4: poor, 5: extremely poor"},"uplink network quality change":{tips:"Upstream network quality change: 1: excellent, 2: good, 3: average, 4: poor, 5: extremely poor"},"localStream mute video":{tips:"mute upstream video stream",color:"orange"},"localStream unmute video":{tips:"unmute upstream video stream",color:"orange"},"localStream mute audio":{tips:"mute upstream audio stream",color:"orange"},"localStream unmute audio":{tips:"unmute upstream audio stream",color:"orange"},"black detected":{tips:"Detect black screen, which means fps = 0. It is usually caused by network, and the network will be recovered after a while. If the network is normal but has not been restored, it is an abnormal situation."},'main stream start to play with options: {"muted":true}':{tips:"Play the remote stream in silent mode. Generally, the remote stream does not need to be played in silent mode. You need to confirm whether the parameters passed in the client stream.play API call are correct.",color:"orange"},"main stream - audio player is starting playing":{tips:"Remote stream audio playback success",color:"#0dd90d",class:"success"},"main stream - video player is starting playing":{tips:"Remote stream video playback success",color:"#0dd90d",class:"success"},"video player is playing":{tips:"Local video playback success",color:"#0dd90d",class:"success"},"audio player is playing":{tips:"Local audio playback success",color:"#0dd90d",class:"success"},"stream - video player is starting playing":{tips:"Local video playback success",color:"#0dd90d",class:"success"},"stream - audio player is starting playing":{tips:"Local audio playback success",color:"#0dd90d",class:"success"},"switch camera success":{tips:"Switch camera success",color:"#0dd90d",class:"success"},"switch microphone success":{tips:"Switch microphone success",color:"#0dd90d",class:"success"},gotStream:{tips:"Local stream capture success"},"local stream is published successfully":{tips:"Publish success",color:"#0dd90d",class:"success"},"encoderImplementation change to OpenH264":{tips:"Use software encoding"},"encoderImplementation change to ExternalEncoder":{tips:"Use hardware encoding"},"getUserMedia with constraints":{tips:"Start media (camera/microphone) capture"},"getDisplayMedia with constraints":{tips:"Start screen sharing capture"},"client-banned":{tips:"Kicked out of the room",color:"red",class:"red",textColor:"#fff"},user_timeout:{tips:"The backend is too long without receiving SDK heartbeat, which is usually caused by the JS thread being blocked for a long time. If the reproduction probability is high, the application browser Performance tool analyzes where the JS thread is blocked.",color:"red",class:"red",textColor:"#fff"},"schedule failed":{tips:"Signaling request failed, does not affect the normal room entry process, SDK will connect to the default signaling domain."},"updateStream() video flag is true, but no camera detected, set video to false":{tips:"When trying to resume camera acquisition, the camera acquisition is not resumed because it is detected that there is no camera.",color:"orange",class:"orange",textColor:"#fff"},"qualityLimitationReason change to bandwidth":{tips:"bandwidth estimation is not enough to limit the quality of the encoding, which may cause the code rate, frame rate, and resolution to be lowered.",color:"orange",class:"orange",textColor:"#fff"},"qualityLimitationReason change to cpu":{tips:"cpu load is too high to limit the quality of the encoding, which may cause the code rate, frame rate, and resolution to be lowered.",color:"orange",class:"orange",textColor:"#fff"},"visibility change: hidden":{tips:"User page switched to backend, in mobile devices, this will cause the device to pause the capture, and it will be restored when the user switches backend to the frontend.",color:"orange",class:"orange",textColor:"#fff"},"visibility change: visible":{tips:"User page switched to frontend",color:"orange",class:"orange",textColor:"#fff"},"main stream - audio player is paused":{tips:`The remote stream audio playback is paused, which usually has two possibilities:
|
|
97
|
+
${o.stack}`),!1}},i};var cn=new WeakMap;function fg(i){let t=cn.get(i);t&&(t.forEach(e=>clearTimeout(e)),cn.delete(i))}function gg(i,t){return Oe((e,r)=>function(...o){let s=cn.get(this);s||(s=new Map,cn.set(this,s));let n=t(...o),c=s.get(n);if(!c||c<=0){e.apply(this,o);let l=setTimeout(()=>{var m;(m=cn.get(this))==null||m.delete(n)},i);s.set(n,l)}else{clearTimeout(c);let l=window.setTimeout(()=>{var m;e.apply(this,o),(m=cn.get(this))==null||m.delete(n)},i);s.set(n,l)}})}var _g="trtc-sdk-v5",Tg="5.11.2-wasm.2";function Mt(...i){return Oe((t,e)=>function(...r){try{ru.call(this,i,r,e,this._name)}catch(o){return Promise.reject(o)}return t.apply(this,r)})}function up(...i){return Oe((t,e)=>function(...r){try{ru.call(this,i,r,e,this._name)}catch(o){throw o}return t.apply(this,r)})}function ru(i,t,e,r){if(ot(i))for(let o=0;o<i.length;o++)tu.call(this,{rule:i[o],value:t[o],key:i[o].name,fnName:e,className:r});else tu.call(this,{rule:i,value:t[0],key:i.name,fnName:e,className:r})}function tu({rule:i,value:t,key:e,fnName:r,className:o}){function s(l){return{code:le.INVALID_PARAMETER,extraCode:l,fnName:r,messageParams:{key:e,rule:i,value:t}}}if(P(t)){if(i.required)throw new ne(s(5001));if(P(i.defaultValue)){We(i.validate)&&i.validate.call(this,t,e,r,o,this);return}t=i.defaultValue}if(Array.isArray(i.type)){let l=!1;for(let m=0;m<i.type.length;m++)i.type[m]===null&&t===null&&(l=!0),We(i.type[m])&&t instanceof i.type[m]&&(l=!0),we(i.type[m])&&ct(t)===i.type[m].toLowerCase()&&(l=!0);if(!l)throw new ne({code:le.INVALID_PARAMETER,extraCode:5002,fnName:r,messageParams:{key:e,rule:{type:i.type.map(m=>ko(m)?vs(m):we(m)?m:ct(m))},value:t}})}else if(!P(i.type)&&ct(t)!==i.type)throw new ne(s(5002));if(i.allowEmpty===!1){let l=Pe(t)&&(t===0||Number.isNaN(t)),m=we(t)&&t.trim()==="";if(l||m)throw new ne(s(5003))}if(i.notLessThanZero&&Pe(t)&&t<0)throw new ne(s(5006));if(!P(i.min)&&Pe(t)&&t<i.min)throw new ne(s(5007));if(!P(i.max)&&Pe(t)&&t>i.max)throw new ne(s(5008));if(we(i.instanceOf)){if(!t||t._name!==i.instanceOf)throw new ne(s(5004))}else if(We(i.instanceOf)&&!(t instanceof i.instanceOf))throw new ne(s(5004));if(Array.isArray(i.values)&&!i.values.includes(t))throw new ne(s(5005));let{properties:n}=i;Lt(n)&&er(t)&&Object.keys(n).forEach(l=>{tu.call(this,{rule:n[l],value:t&&t[l],key:`${l}`,fnName:r,className:o})});let{arrayItem:c}=i;Lt(c)&&ot(t)&&t.forEach((l,m)=>{tu.call(this,{rule:c,value:l,key:`${e}[${m}]`,fnName:r,className:o})}),We(i.validate)&&i.validate.call(this,t,e,r,o,this)}function tt(i={}){let{getRemoteId:t=()=>"",replaceArg:e,getKVReportKey:r,ignoreLog:o,ignoreErrorLog:s}=i;return Oe((n,c)=>function(...l){var v,L,x;function m(M,B,ee){if(ee&&ee.includes(M))return"hided";if(e){let pe=e(...l);if(l[pe.argIndex]===B)return pe.value}if(B===l||M in l)return B;try{return B instanceof HTMLElement?`id: ${B.id} type:${ct(B)}`:B instanceof MediaStreamTrack?Rc(B):(JSON.stringify(B),B)}catch(pe){return`type:${ct(B)}`}}let E=this._log||$;if(o!=null&&o(...l))return n.apply(this,l);l.length>0?E.info(`${c}() ${JSON.stringify(l,(M,B)=>m(M,B,["userSig","privateMapKey"]))}`):E.info(`${c}()`);let g=r?r(...l):rd[c],_=(s==null?void 0:s(...l))||!1;try{let M=n.apply(this,l),B=Ie();if(ji(M)){let ee=`${c.includes("Plugin")?`${((L=(v=l[0]).getName)==null?void 0:L.call(v))||""} `:" "}`;return M.then(pe=>(E.info(`${c}() success ${ee}${t.call(this,...l)}`),Q.addSuccessEvent({key:g,cost:Ie()-B}),pe)).catch(pe=>{var X;pe=ne.convertFrom.call(this,pe,c,l.length===1?l[0]:l);let ae=pe.extraCode||pe.code,Xe=(X=pe.message)!=null&&X.includes(ae)?"":` code:${ae}`;throw _||E.error(`${c}() failed ${ee}${t.call(this,...l)} ${pe}${Xe} params: ${JSON.stringify(l,m)}`),Q.addFailedEvent({key:g,error:pe}),pe})}return Q.addSuccessEvent({key:g}),M}catch(M){M=ne.convertFrom.call(this,M,c);let B=M.extraCode||M.code,ee=(x=M.message)!=null&&x.includes(B)?"":` code:${B}`;throw _||E.error(`${c}() failed ${M}${ee} params: ${JSON.stringify(l,m)}`),Q.addFailedEvent({key:g,error:M}),M}})}var iu=i=>Oe((t,e)=>function(r,o){return A(this,null,function*(){let s=this._plugins.get(r);if(!s)throw this._log.error(`plugin ${String(r)} is not found`),new ne({code:le.OPERATION_ABORT,message:`plugin ${String(r)} is not found`,fnName:e});if(We(s.constructor.isSupported)&&!s.constructor.isSupported())throw this._log.error(`plugin ${String(r)} is not supported`),new ne({code:le.ENV_NOT_SUPPORTED,message:`plugin ${String(r)} is not supported`,extraCode:5210,fnName:e});return ru.call(this,s.getValidateRule(i),[o],e,"TRTC"),t.call(this,s,o)})});var ou=0,lp,Ri=class Ri{constructor(t){this.core=t;u(this,"log");u(this,"customAudioReferenceMap",new Map);u(this,"audioRefId",0);u(this,"audioContext",ze());u(this,"localAudioWorkletNode");u(this,"screenAudioWorkletNode");u(this,"mixNode");u(this,"silentNode");ou=ou+1,this.log=t.log.createChild({id:`${this.getAlias()}${ou}`}),this.log.info(`created id=${this.getAlias()}${ou}`)}static getStartValidateRule(t){return{name:"options",required:!0,type:"object",properties:{sdkAppId:{type:"number",required:!0},userId:{type:"string",required:!0},userSig:{type:"string",required:!0}},validate(e,r,o,s){if(!t.room.audioManager.hasAudioTrack&&!t.room.audioManager.hasScreenAudioTrack)throw new ne({code:le.INVALID_OPERATION,extraCode:5106,fnName:o})}}}preload(t){return lp||(lp=this.doPreload(t)),lp}doPreload(t){return A(this,null,function*(){let e=yield this.core.fileDownloader.download(t,{type:"blob"}),r=URL.createObjectURL(e);try{yield Ei(this.audioContext,r)}catch(o){this.log.error(`preload audioProcessor failed. ${o}`)}finally{URL.revokeObjectURL(r)}})}getName(){return Ri.Name}getAlias(){return"ap"}getGroup(){return"ap"}getValidateRule(t){switch(t){case"start":return Ri.getStartValidateRule(this.core);case"update":return Ri.updateValidateRule;case"stop":return Ri.stopValidateRule}}start(t){return A(this,null,function*(){let{room:e}=this.core,{sdkAppId:r,userId:o,assetsPath:s=this.core.assetsPath,audioReference:n,processLevel:c,enableDump:l,isLocalAudioNeedAudioProcess:m=!0,isScreenAudioNeedAudioProcess:E=!0}=t;if(this.core.room.audioManager.isLocalAudioNeedAudioProcess=m,this.core.room.audioManager.isScreenAudioNeedAudioProcess=E,!s)throw new ne({code:le.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});if(yield this.preload(`${s}/audioProcessor-wasm.js`),!this.localAudioWorkletNode||!this.screenAudioWorkletNode){let g=String(Date.now()).slice(0,-3),{auth:_,sign:v,status:L,message:x}=yield aS(Ee(q({},t),{timestamp:g}));if(!_)throw this.log.info(`audioProcessor: ${o} auth result: ${_}. Message: ${x}`),new ne({code:le.INVALID_PARAMETER,message:x});this.localAudioWorkletNode=new AudioWorkletNode(this.audioContext,"trtc-audio-processor",{numberOfInputs:2,numberOfOutputs:1}),this.initWorkletNode(this.localAudioWorkletNode,"localAudio",r,o,g,v,L,e),this.screenAudioWorkletNode=new AudioWorkletNode(this.audioContext,"trtc-audio-processor",{numberOfInputs:2,numberOfOutputs:1}),this.initWorkletNode(this.screenAudioWorkletNode,"screenAudio",r,o,g,v,L,e)}this.mixNode||(this.mixNode=this.audioContext.createGain(),this.mixNode.gain.value=1),this.silentNode||(this.silentNode=this.audioContext.createConstantSource(),this.silentNode.offset.setValueAtTime(0,this.audioContext.currentTime),this.silentNode.start()),this.localAudioWorkletNode.port.postMessage({type:"enable"}),this.screenAudioWorkletNode.port.postMessage({type:"enable"}),e.audioManager.addAudioProcessor(this.localAudioWorkletNode,this.mixNode,this.silentNode,this.screenAudioWorkletNode),P(n)||n.forEach(g=>{this.customAudioReferenceMap.set(g,`o-${this.audioRefId++}`),this.core.room.audioManager.updateAudioReference({type:"add",audioReference:g,refId:`o-${this.audioRefId++}`})}),P(c)||this.localAudioWorkletNode.port.postMessage({type:"setConfig",data:{aecEnable:1,aecNlpLevel:c}}),P(l)||this.localAudioWorkletNode.port.postMessage({type:"dump",data:{enable:l}})})}update(t){return A(this,null,function*(){if(!this.localAudioWorkletNode||!this.screenAudioWorkletNode)return;let{audioReference:e,enableDump:r,processLevel:o}=t;P(e)||(this.customAudioReferenceMap.forEach((s,n)=>{this.customAudioReferenceMap.delete(n),this.core.room.audioManager.updateAudioReference({type:"remove",refId:s})}),e.forEach(s=>{this.customAudioReferenceMap.set(s,`o-${this.audioRefId++}`),this.core.room.audioManager.updateAudioReference({type:"add",audioReference:s,refId:`o-${this.audioRefId++}`})})),P(o)||this.localAudioWorkletNode.port.postMessage({type:"setConfig",data:{aecEnable:1,aecNlpLevel:o}}),P(r)||(this.localAudioWorkletNode.port.postMessage({type:"dump",data:{enable:r}}),this.screenAudioWorkletNode.port.postMessage({type:"dump",data:{enable:r}}))})}stop(){return A(this,null,function*(){if(!this.localAudioWorkletNode||!this.mixNode||!this.silentNode||!this.screenAudioWorkletNode)return;let{room:t}=this.core;this.localAudioWorkletNode.port.postMessage({type:"disable"}),this.screenAudioWorkletNode.port.postMessage({type:"disable"}),yield t.audioManager.removeAudioProcessor(this.localAudioWorkletNode,this.mixNode,this.silentNode,this.screenAudioWorkletNode)})}destroy(){this.localAudioWorkletNode&&(this.localAudioWorkletNode.port.onmessage=null),this.screenAudioWorkletNode&&(this.screenAudioWorkletNode.port.onmessage=null)}initWorkletNode(t,e,r,o,s,n,c,l){t.port.postMessage({type:"init",data:{sdkAppId:String(r),userId:o,timestamp:s,sign:n,status:c}}),t.port.onmessage=m=>{var g;let{data:E}=m;switch(E.type){case"cost":let _=(E==null?void 0:E.value)>10?"info":"debug";this.log[_](`[${e}] avg cost: ${E.value} max: ${E==null?void 0:E.max}(${Ss(new Date(E==null?void 0:E.maxCostTimestamp))}) hist: ${(g=E==null?void 0:E.hist)==null?void 0:g.join(" ")}`);return;case"log":this.log[E.logLevel](`[${e}] ${E.value}`);return;case"dump":V.emit("265",{room:l,data:E.value,type:e==="localAudio"?"dump":"dump-screen-audio"});return}}}};u(Ri,"updateValidateRule",{type:"object"}),u(Ri,"stopValidateRule",{type:"object"}),u(Ri,"Name","AudioProcessor");var su=Ri;function nS(i,t=N.MAIN){return`https://${qr[t]||eu(i,t)}/api/v1/audioAiAuth`}function aS(o){return A(this,arguments,function*({sdkAppId:i,userId:t,userSig:e,timestamp:r}){let n=`${nS(i)}?sdkAppId=${i}&userId=${t}&userSig=${e}×tamp=${r}`,c=yield fetch(n),{data:{errCode:l,errMsg:m,sign:E,status:g}}=yield c.json();if(g==="1")return{auth:!0,sign:E,status:g,message:m};let _=ri(i)?"https://trtc.io/document/42734?platform=web&product=rtcengine&menulabel=coresdk":"https://cloud.tencent.com/document/product/647/44247",v="Init RTCAudioProcessor failed.",L="";switch(l){case 1:L="Please check your params.";break;case 2:L=`You need to buy packages. Refer to: ${_}`;break;case 3:L="Server is invalid. Please contact our engineer. ";break;case 4:L=`Your packages is not active. Refer to: ${_}`;break;case 5:L=`Your packages is expired. Refer to: ${_}`;break;case 6:L="Your version is not supported.";break}return{auth:!1,status:g,message:m?`${v} Reason: ${m}. ${L}`:`${v}, ${L}`}})}var nu=0,mp=class{constructor(t,e){u(this,"player");u(this,"publisher");u(this,"mixInput");this.mixInput=new Xs(e),t.url?(this.player=new Audio(t.url),this.player.crossOrigin="anonymous",this.publisher=new Audio(t.url),this.publisher.crossOrigin="anonymous",this.mixInput.replaceSource(this.publisher)):this.mixInput.replaceSource(t.track),this.mixInput.connect()}updateSettings(t){this.player&&(P(t.volume)||(this.volume=t.volume),P(t.loop)||(this.loop=t.loop),P(t.playbackRate)||(this.playbackRate=t.playbackRate))}updateListener(t){if(this.player){if(t.onDurationChange){let{onDurationChange:e}=t;this.player.ondurationchange=r=>{e(r.target.duration)}}if(t.onTimeUpdate){let e=t.onTimeUpdate,{player:r}=this;r.ontimeupdate=()=>{e(r.currentTime,r.duration)}}t.onEnded&&(this.player.onended=t.onEnded)}}reset(){this.seek(0),this.mixInput.connect()}seek(t){this.player&&(t<0&&t>this.player.duration||(this.player.currentTime=t,this.publisher.currentTime=t))}play(){var t,e;return(t=this.publisher)==null||t.play(),(e=this.player)==null?void 0:e.play()}pause(){var t,e;(t=this.player)==null||t.pause(),(e=this.publisher)==null||e.pause()}stop(){var t;(t=this.player)==null||t.pause(),this.mixInput.disconnect()}setOperation(t){t==="pause"&&this.pause(),t==="resume"&&(this.pause(),this.play()),t==="stop"&&(this.pause(),this.seek(0))}set volume(t){!this.player||!this.publisher||(this.player.volume=t,this.publisher.volume=t)}set loop(t){!this.player||!this.publisher||(this.player.loop=t,this.publisher.loop=t)}set playbackRate(t){!this.player||!this.publisher||(this.player.playbackRate=t,this.publisher.playbackRate=t)}};function dn(i,t){if(t&&typeof t!="function")throw new ne({code:le.INVALID_PARAMETER,message:`start audioMixer plugin: param ${i} should be a function.`})}var Jr=class Jr{constructor(t){this.core=t;u(this,"log");u(this,"mixedMusicMap",new Map);u(this,"cacheMusicMap",new Map);nu=nu+1,this.log=t.log.createChild({id:`${this.getAlias()}${nu}`}),this.log.info(`created id=${this.getAlias()}${nu}`)}getName(){return Jr.Name}getAlias(){return"ax"}getGroup(t){return t==null?void 0:t.id}getValidateRule(t){switch(t){case"start":return Jr.startValidateRule;case"update":return Jr.updateValidateRule;case"stop":return Jr.stopValidateRule}}start(t){return A(this,null,function*(){let{room:e}=this.core;this.log.info(`add music source, id: ${t.id} url: ${t.url}, track: ${t.track}`);let{id:r,url:o}=t;if(this.mixedMusicMap.has(r))return;let s=this.cacheMusicMap.get(r);s?t.url?s.reset():(s.mixInput.replaceSource(t.track),s.mixInput.connect()):(s=new mp(t,e.audioManager),this.cacheMusicMap.set(r,s)),s.updateListener(t),s.updateSettings(t),yield s.play(),this.mixedMusicMap.set(r,s),s.mixInput.source.node&&this.core.room.audioManager.updateAudioReference({type:"add",audioReference:s.mixInput.source.node,refId:`ax-${r}`}),this.log.info(`start mix audio track ${r} success.`),Q.addEnum({key:502700,value:3}),this.kvUpload(t)})}update(t){return A(this,null,function*(){let{id:e,operation:r,seekFrom:o,playbackRate:s}=t;this.log.info(`update music source, ${JSON.stringify(t)}`);let n=this.mixedMusicMap.get(e);if(!n){this.log.warn(`update music source failed, music id: ${e} not found.`);return}n.updateSettings(t),n.updateListener(t),P(r)||n.setOperation(r),P(o)||n.seek(o),this.kvUpload(t)})}stop(e){return A(this,arguments,function*({id:t}){if(this.mixedMusicMap.has(t)){this.log.info(`remove music source, music id: ${t}`);let r=this.mixedMusicMap.get(t);r!=null&&r.mixInput.source.node&&this.core.room.audioManager.updateAudioReference({type:"remove",audioReference:r.mixInput.source.node,refId:`ax-${t}`}),r==null||r.stop(),this.mixedMusicMap.delete(t)}t==="*"&&this.destroyAllMusic()})}kvUpload(t){let{track:e,loop:r,volume:o,playbackRate:s,operation:n,seekFrom:c,onTimeUpdate:l,onDurationChange:m,onEnded:E}=t;e&&Q.addCount({key:502711}),r&&Q.addCount({key:502703}),o&&Q.addCount({key:502704}),s&&Q.addCount({key:502705}),n&&Q.addCount({key:502706}),c&&Q.addCount({key:502707}),typeof l!="function"&&Q.addCount({key:502709}),typeof E!="function"&&Q.addCount({key:502710}),typeof m!="function"&&Q.addCount({key:502708})}destroyAllMusic(){this.log.info("destroy all music source."),this.mixedMusicMap.forEach((t,e)=>{t!=null&&t.mixInput.track&&this.core.room.audioManager.updateAudioReference({type:"remove",audioReference:t.mixInput.track,refId:e}),this.stop({id:e})})}destroyAllCache(){this.log.info("destroy all music cache."),this.cacheMusicMap.clear()}destroy(){this.log.info("destroy audio mixer plugin."),this.destroyAllMusic(),this.destroyAllCache()}};u(Jr,"startValidateRule",{name:"options",required:!0,type:"object",properties:{id:{type:"string",required:!0},url:{type:"string",required:!1},track:{required:!1},loop:{type:"boolean"},volume:{type:"number"}},validate(t,e,r){if(t.url&&t.url!=="*"){let o=t.url.split("?")[0],s=["mp3","ogg","wav","flac"],n=o.split(".").pop(),c=s.indexOf(n)>=0,l=o.startsWith("blob"),m=o.startsWith("data");if(!(c||l||m))throw new ne({code:le.INVALID_PARAMETER,message:"start audioMixer plugin: music url is invalid, please check your file format.",fnName:r})}if(!t.url&&!t.track)throw new ne({code:le.INVALID_PARAMETER,message:"start audioMixer plugin: param url or track is required.",fnName:r});dn("onTimeUpdate",t.onTimeUpdate),dn("onEnded",t.onEnded),dn("onDurationChange",t.onDurationChange)}}),u(Jr,"updateValidateRule",{name:"options",required:!0,type:"object",properties:{id:{type:"string",required:!0},loop:{type:"boolean"},volume:{type:"number"},seekFrom:{type:"number"},operation:{type:"string",values:["pause","resume","stop"]}},validate(t,e,r){dn("onTimeUpdate",t.onTimeUpdate),dn("onEnded",t.onEnded),dn("onDurationChange",t.onDurationChange)}}),u(Jr,"stopValidateRule",{name:"options",type:"object",required:!0,properties:{id:{type:"string",required:!0}}}),u(Jr,"Name","AudioMixer");var au=Jr;var cu=0,pp,vi=class vi{constructor(t){this.core=t;u(this,"log");u(this,"audioContext",ze("denoiser"));u(this,"workletNode");cu=cu+1,this.log=t.log.createChild({id:`${this.getAlias()}${cu}`}),this.log.info(`created id=${this.getAlias()}${cu}`)}static startValidateRule(t){return{name:"options",required:!0,type:"object",properties:{sdkAppId:{type:"number",required:!0},userId:{type:"string",required:!0},userSig:{type:"string",required:!0}},validate(e,r,o,s){if(!t.room.audioManager.hasAudioTrack)throw new ne({code:le.INVALID_OPERATION,extraCode:5106,fnName:o})}}}preload(t){return pp||(pp=this.doPreload(t)),pp}doPreload(t){return A(this,null,function*(){let e=yield this.core.fileDownloader.download(t,{type:"blob"}),r=URL.createObjectURL(e);try{yield Ei(this.audioContext,r)}catch(o){throw this.log.error("load worklet failed",o),o}finally{URL.revokeObjectURL(r)}})}getName(){return vi.Name}getAlias(){return"ad"}getGroup(){return`AIDenoiser_${Date.now()}`}getValidateRule(t){switch(t){case"start":return vi.startValidateRule(this.core);case"update":return vi.updateValidateRule;case"stop":return vi.stopValidateRule}}start(t){return A(this,null,function*(){let{room:e,schedule:r}=this.core,{assetsPath:o=this.core.assetsPath}=t;if(!o)throw new ne({code:le.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});if(yield this.preload(`${o}/denoiser-wasm.js`),!this.workletNode){let s=String(Date.now()).slice(0,-3),{auth:n,sign:c,status:l,message:m}=yield dS(r,Ee(q({},t),{timestamp:s}));if(!n)throw this.log.info(`RTCAIDenoiser: ${t.userId} auth result: ${n}. Message: ${m}`),new ne({code:le.INVALID_PARAMETER,message:m});this.workletNode=new AudioWorkletNode(this.audioContext,"trtc-denoiser-processor",{numberOfInputs:1,numberOfOutputs:1}),this.workletNode.port.postMessage({type:"init",data:{sdkAppId:String(t.sdkAppId),userId:t.userId,timestamp:s,sign:c,status:l}}),this.workletNode.port.onmessage=E=>{var _;let{data:g}=E;if(g.type==="cost"){let v=(g==null?void 0:g.max)>20?"warn":(g==null?void 0:g.max)>10?"info":"debug";this.log[v](`avg cost: ${g.value} max: ${g==null?void 0:g.max}(${Ss(new Date(g==null?void 0:g.maxCostTimestamp))}) hist: ${(_=g==null?void 0:g.hist)==null?void 0:_.join(" ")}`)}else g.type==="log"&&this.log[g.logLevel](`${g.value}`)}}this.workletNode.port.postMessage({type:"enable"}),e.audioManager.addDenoiser(this.workletNode),e.sendAbilityStatus({ai_denoise:1})})}update(){return A(this,null,function*(){})}stop(){return A(this,null,function*(){if(!this.workletNode)return;let{room:t}=this.core;this.workletNode.port.postMessage({type:"disable"}),yield t.audioManager.removeDenoiser(this.workletNode)})}destroy(){this.workletNode&&(this.workletNode.port.onmessage=null)}};u(vi,"updateValidateRule",{type:"object"}),u(vi,"stopValidateRule",{type:"object"}),u(vi,"Name","AIDenoiser");var du=vi;function dS(s,n){return A(this,arguments,function*(i,{sdkAppId:t,userId:e,userSig:r,timestamp:o}){try{let{data:{errCode:c,errMsg:l,sign:m,status:E}}=yield i.getAbilityConfig(t,i.ScheduleRequestType.AUDIO_AI_AUTH,{sdkAppId:t,userId:e,userSig:r,timestamp:o});if(E==="1")return{auth:!0,sign:m,status:E,message:l};let g=ri(t)?"https://trtc.io/document/42734?platform=web&product=rtcengine&menulabel=coresdk":"https://cloud.tencent.com/document/product/647/44247",_="Init RTCAIDenoiser failed.",v="";switch(c){case 1:v="Please check your params.";break;case 2:v=`You need to buy packages. Refer to: ${g}`;break;case 3:v="Server is invalid. Please contact our engineer. ";break;case 4:v=`Your packages is not active. Refer to: ${g}`;break;case 5:v=`Your packages is expired. Refer to: ${g}`;break;case 6:v="Your version is not supported.";break}return{auth:!1,status:E,message:l?`${_} Reason: ${l}. ${v}`:`${_}, ${v}`}}catch(c){return{auth:!1,status:"0",message:`Init RTCAIDenoiser failed. All requests failed. ${c}`}}})}var Sg=Wi(Yi(),1);var hp=class extends Sg.EventEmitter{constructor(){super();u(this,"observer");u(this,"state","nominal");this.onPressureChange=this.onPressureChange.bind(this)}get stateNum(){switch(this.state){case"nominal":return 1;case"fair":return 2;case"serious":return 3;case"critical":return 4}}start(){return A(this,null,function*(){if(!this.observer)try{"PressureObserver"in window&&!mt&&(this.observer=new PressureObserver(this.onPressureChange),yield this.observer.observe("cpu",{sampleInterval:2e3}))}catch(e){je.uploadEvent({log:"stat-pressure-detector-start-failed",error:e})}})}onPressureChange(e){let r=this.stateNum,o=e[e.length-1];this.state=o.state,(this.stateNum>3||r>3)&&$.info(`${o.source}: ${o.state}`),this.emit("state-changed",{type:o.source,state:this.state})}destroy(){var e;try{(e=this.observer)==null||e.disconnect(),this.observer=null}catch(r){je.uploadEvent({log:"stat-pressure-detector-destroy-failed",error:r})}}},uS=new hp,fp=uS;function lS([i,t]){let e=t.byteLength,r=parseInt(String(e/255),10),o=e%255,s=[];s.push(0,0,0,1,6,i);for(let c=0;c<r;c++)s.push(255);s.push(o);let n=new DataView(t);return s.push(...new Uint8Array(n.buffer)),s.push(128),new Qo(new DataView(new Uint8Array(s).buffer),!0)}function mS(i){return i.type==="empty"||i.data.byteLength===0}function pS(i){return i.getInt32(0)===1&&i.getInt8(4)===6}function hS(i){let t=0,e=0,r=new DataView(i);for(let o=0;o<i.byteLength;o++)switch(r.getUint8(o)){case 0:t++;break;case 1:(t===2||t===3)&&e++,t=0;break;default:t=0;break}return e}function gp({frame:i,seiMessageList:t}){if(!t||t.length===0||i.data.byteLength===0)return i;let r=9-hS(i.data);if(r<=0)return i;let o=t.splice(0,r).reverse().map(lS),s=o.reduce((E,g)=>E+g.dataView.byteLength,0),n=new ArrayBuffer(s+i.data.byteLength),c=new DataView(n),l=new DataView(i.data),m=0;for(let E=0;E<o.length;E++)for(let g=0;g<o[E].dataView.byteLength;g++)c.setInt8(m++,o[E].dataView.getInt8(g));for(let E=0;E<i.data.byteLength;E++)c.setInt8(m++,l.getInt8(E));return i.data=n,i}function Ep({frame:i,onSEI:t}){try{let e=new DataView(i.data);if(mS(i)||!pS(e))return i;let r=[],o=0,s=-1,n=-1;for(let c=0;c<i.data.byteLength;c++){let l=e.getUint8(c);if(l===0)o++;else if(l===1){if(o===2||o===3){let m=c-o;if(s===-1?s=m:n===-1&&(n=m,r.push(new Qo(new DataView(e.buffer.slice(s,n)))),s=m,n=-1),!(e.getUint8(c+1)===6)){i.data=e.buffer.slice(m);break}}o=0}else o=0}t==null||t(r.reverse())}catch(e){}return i}var _p=0,Pa=class Pa{constructor(t){this.core=t;u(this,"log");u(this,"_seiMessageList",[]);u(this,"_smallSeiMessageList",[]);u(this,"_subStreamSeiMessageList",[]);_p++,this.log=t.log.createChild({id:`${this.getAlias()}${_p}`}),this.log.info(`[sei] created id=${this.getAlias()}${_p}`),this.encode=this.encode.bind(this),this.decode=this.decode.bind(this)}encode({frame:t,mediaType:e}){try{let r=e===8?this._smallSeiMessageList:e===2?this._subStreamSeiMessageList:this._seiMessageList;return gp({frame:t,seiMessageList:r})}catch(r){this.log.warn(r)}return t}decode({frame:t,track:e}){return Ep({frame:t,onSEI:r=>{r.forEach(o=>{this.core.trtc.emit(re.SEI_MESSAGE,{seiPayloadType:o.seiPayloadType,data:o.seiPayload.buffer,userId:e.userId,streamType:e.mediaType===2?"sub":"main"})})}})}destroy(){this.log.debug("destory"),this.stop(),delete this.core}getValidateRule(t){switch(t){case"start":return{type:"object"};case"update":return{type:"object"};case"stop":return{type:"object"}}}start(){this.core.room.videoManager.addEncodeProcessor({processor:ca?this.encode:gp,type:2}),this.core.room.videoManager.addDecodeProcessor({processor:ca?this.decode:Ep,type:2})}stop(){this.core.room.videoManager.removeEncodeProcessor({type:2}),this.core.room.videoManager.removeDecodeProcessor({type:2})}update({buffer:t,options:e}){var s;let r=[e.seiPayloadType,t],o=!!e.small;e.toSubStream?this._subStreamSeiMessageList.push(r):(this._seiMessageList.push(r),o&&this._smallSeiMessageList.push(r)),(s=this.core.room.scriptTransformWorker)==null||s.postMessage({type:"sei",data:r,isMain:!e.toSubStream,small:o})}getName(){return Pa.Name}getAlias(){return"sei"}getGroup(){return"sei"}};u(Pa,"autoStart",!0),u(Pa,"Name","SEI");var uu=Pa;function Tp({frame:i,onDump:t}){return t==null||t(),i}function Ip({frame:i,onDump:t}){return t==null||t(),i}var Ag={"play() error: NotAllowedError:":{tips:i=>i.includes("main <video>")||i.includes("main <audio>")?"Remote stream auto play is restricted and playback fails":"Local stream playback failure, generally only occurs in Android WeChat devices, no need to handle",color:"red",class:"red"},"updateStream() try to recover local stream":{tips:"Device acquisition exception, automatic recovery is in progress"},"updateStream() recover local stream successfully":{tips:"Device acquisition exception, automatic recovery is successful"},"updateStream() failed to recover local stream":{tips:"Device acquisition exception, automatic recovery failed"},"main stream - video track is muted":{tips:"Indicates that the received video data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - audio track is muted":{tips:"Indicates that the received audio data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"auxiliary stream - video track is muted":{tips:"Indicates that the received screen sharing data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - video track is unable to provide media output":{tips:"Indicates that the received video data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - audio track is unable to provide media output":{tips:"Indicates that the received audio data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"auxiliary stream - video track is unable to provide media output":{tips:"Indicates that the received screen sharing data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - video track is unmuted":{tips:"Received enough playback video data"},"main stream - audio track is unmuted":{tips:"Received enough playback audio data"},"auxiliary stream - video track is unmuted":{tips:"Received enough playback screen sharing data"},"main stream - audio player track is ended":{tips:"Remote audio track stopped"},"main stream - video player track is ended":{tips:"Remote video track stopped"},"auxiliary stream - video player track is ended":{tips:"Received enough playback screen sharing data"},"stream - video track is muted":{tips:"Camera capture is paused, usually due to the device being occupied by other applications or the browser media permission being revoked. The client needs to re-capture.",color:"orange"},"stream - video track is unable to provide media output":{tips:"The camera acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked, and the customer needs to re-acquire. SDK v4.11.4+ will automatically resume acquisition without customer intervention",color:"orange"},"video track is unable to provide media output":{tips:i=>i.includes("\u2193")?"The remote track is temporarily unable to decode data, which may be caused by network fluctuations":"The camera acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - video player track is ended":{tips:"The camera acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"video player track is ended":{tips:"The camera acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"stream - audio track is muted":{tips:"Microphone capture is paused, usually due to the device being occupied by other applications or the browser media permission being revoked. The client needs to re-capture.",color:"orange"},"audio track is unable to provide media output":{tips:i=>i.includes("\u2193")?"The remote track is temporarily unable to decode data, which may be caused by network fluctuations":"Microphone acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - audio track is unable to provide media output":{tips:"The microphone acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - audio player track is ended":{tips:"The microphone acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"audio player track is ended":{tips:"The microphone acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"is adding audio track to current published local stream":{tips:"add audio track",color:"orange"},"is removing audio track from current published local stream":{tips:"remove audio track",color:"orange"},"is removing video track from current published local stream":{tips:"remove video track",color:"orange"},"is adding video track to current published local stream":{tips:"add video track",color:"orange"},"is replacing audio track to current published local main stream":{tips:"replace audio track",color:"orange"},"is replacing video track to current published local main stream":{tips:"replace video track",color:"orange"},"downlink network quality change":{tips:"Downstream network quality change: 1: excellent, 2: good, 3: average, 4: poor, 5: extremely poor"},"uplink network quality change":{tips:"Upstream network quality change: 1: excellent, 2: good, 3: average, 4: poor, 5: extremely poor"},"localStream mute video":{tips:"mute upstream video stream",color:"orange"},"localStream unmute video":{tips:"unmute upstream video stream",color:"orange"},"localStream mute audio":{tips:"mute upstream audio stream",color:"orange"},"localStream unmute audio":{tips:"unmute upstream audio stream",color:"orange"},"black detected":{tips:"Detect black screen, which means fps = 0. It is usually caused by network, and the network will be recovered after a while. If the network is normal but has not been restored, it is an abnormal situation."},'main stream start to play with options: {"muted":true}':{tips:"Play the remote stream in silent mode. Generally, the remote stream does not need to be played in silent mode. You need to confirm whether the parameters passed in the client stream.play API call are correct.",color:"orange"},"main stream - audio player is starting playing":{tips:"Remote stream audio playback success",color:"#0dd90d",class:"success"},"main stream - video player is starting playing":{tips:"Remote stream video playback success",color:"#0dd90d",class:"success"},"video player is playing":{tips:"Local video playback success",color:"#0dd90d",class:"success"},"audio player is playing":{tips:"Local audio playback success",color:"#0dd90d",class:"success"},"stream - video player is starting playing":{tips:"Local video playback success",color:"#0dd90d",class:"success"},"stream - audio player is starting playing":{tips:"Local audio playback success",color:"#0dd90d",class:"success"},"switch camera success":{tips:"Switch camera success",color:"#0dd90d",class:"success"},"switch microphone success":{tips:"Switch microphone success",color:"#0dd90d",class:"success"},gotStream:{tips:"Local stream capture success"},"local stream is published successfully":{tips:"Publish success",color:"#0dd90d",class:"success"},"encoderImplementation change to OpenH264":{tips:"Use software encoding"},"encoderImplementation change to ExternalEncoder":{tips:"Use hardware encoding"},"getUserMedia with constraints":{tips:"Start media (camera/microphone) capture"},"getDisplayMedia with constraints":{tips:"Start screen sharing capture"},"client-banned":{tips:"Kicked out of the room",color:"red",class:"red",textColor:"#fff"},user_timeout:{tips:"The backend is too long without receiving SDK heartbeat, which is usually caused by the JS thread being blocked for a long time. If the reproduction probability is high, the application browser Performance tool analyzes where the JS thread is blocked.",color:"red",class:"red",textColor:"#fff"},"schedule failed":{tips:"Signaling request failed, does not affect the normal room entry process, SDK will connect to the default signaling domain."},"updateStream() video flag is true, but no camera detected, set video to false":{tips:"When trying to resume camera acquisition, the camera acquisition is not resumed because it is detected that there is no camera.",color:"orange",class:"orange",textColor:"#fff"},"qualityLimitationReason change to bandwidth":{tips:"bandwidth estimation is not enough to limit the quality of the encoding, which may cause the code rate, frame rate, and resolution to be lowered.",color:"orange",class:"orange",textColor:"#fff"},"qualityLimitationReason change to cpu":{tips:"cpu load is too high to limit the quality of the encoding, which may cause the code rate, frame rate, and resolution to be lowered.",color:"orange",class:"orange",textColor:"#fff"},"visibility change: hidden":{tips:"User page switched to backend, in mobile devices, this will cause the device to pause the capture, and it will be restored when the user switches backend to the frontend.",color:"orange",class:"orange",textColor:"#fff"},"visibility change: visible":{tips:"User page switched to frontend",color:"orange",class:"orange",textColor:"#fff"},"main stream - audio player is paused":{tips:`The remote stream audio playback is paused, which usually has two possibilities:
|
|
58
98
|
1. The business side passes in the div tag container for playing audio and video to be removed by the business side from the DOM.
|
|
59
99
|
2. If the user is in Chrome 70 and below, when the div container is moved, the playback will be paused.`,color:"orange",class:"orange",textColor:"#fff"},"main stream - video player is paused":{tips:`The remote stream video playback is paused, which usually has two possibilities:
|
|
60
100
|
1. The business side passes in the div tag container for playing audio and video to be removed by the business side from the DOM.
|
|
61
|
-
2. If the user is in Chrome 70 and below, when the div container is moved, the playback will be paused.`,color:"orange",class:"orange",textColor:"#fff"},'"displaySurface":"window"':{tips:"Screen sharing captures the application window",color:"blue",class:"blue",textColor:"#fff"},'"displaySurface":"monitor"':{tips:"Screen sharing captures the entire screen",color:"blue",class:"blue",textColor:"#fff"},'"displaySurface":"browser"':{tips:"Screen sharing captures a certain tab page",color:"blue",class:"blue",textColor:"#fff"},updateMediaSettings:{tips:"The resolution and frame rate below are the actual resolution and frame rate captured",color:"blue",class:"blue",textColor:"#fff"},"main stream start to play with":{tips:"Call remoteStream.play interface",color:"blue",class:"blue",textColor:"#fff"},"stream start to play with":{tips:"Call localStream.play interface",color:"blue",class:"blue",textColor:"#fff"},"main setAudioVolume to 0":{tips:"Business side calls remoteStream.setAudioVolume(0) interface to set the playback volume to 0, which will cause the playback to be silent",color:"orange",class:"orange",textColor:"#fff"},"screen sharing was stopped because the video track is ended":{tips:"Screen sharing capture stopped, possible reasons: user clicks the stop button, the window/page shared by the user is closed, etc.",color:"orange",class:"orange",textColor:"#fff"},"Join() => joining room":{tips:"Call client.join interface",color:"blue",class:"blue",textColor:"#fff"},"publish() => publishing local stream":{tips:"Call client.publish interface",color:"blue",class:"blue",textColor:"#fff"},"subscribe() => subscribe to":{tips:"Call client.subscribe interface",color:"blue",class:"blue",textColor:"#fff"},"switchRole() => switch role":{tips:"Call client.switchRole interface",color:"blue",class:"blue",textColor:"#fff"}};["enterRoom","exitRoom","switchRole","destroy","startLocalAudio","updateLocalAudio","stopLocalAudio","startLocalVideo","updateLocalVideo","stopLocalVideo","startScreenShare","updateScreenShare","stopScreenShare","startRemoteVideo","updateRemoteVideo","stopRemoteVideo","muteRemoteAudio","setRemoteAudioVolume"].forEach(o=>{hp[`${o}()`]={tips:`Call trtc.${o}`,color:"blue",class:"blue",textColor:"#fff"}});var Ix=Object.keys(hp);var zT=0,gc,an=class an{constructor(i){this.core=i;d(this,"_core");d(this,"log");d(this,"dumpLocalVideoMap",{});d(this,"dumpRemoteVideoMap",{});d(this,"dialog");this._core=i,this.log=i.log.createChild({id:`${this.getAlias()}${++zT}`}),this.log.info("created")}getName(){return an.Name}getAlias(){return"dm"}getGroup(){return"dm"}getValidateRule(i){switch(i){case"start":return{name:"StartDebugOptions",required:!1};case"update":return{name:"UpdateDebugOptions",required:!1};case"stop":return{name:"StopDebugOptions",required:!1}}}start(){return f(this,null,function*(){var e;!new URLSearchParams(location.search).has("trtcDebug")&&((e=window.sessionStorage)==null?void 0:e.getItem("TRTC_ENABLE_DEBUG_PLUGIN"))!=="true"||(yield this.openDebugDiaLog(),this.addVideoProcessor())})}update(e){return f(this,arguments,function*({forceOpen:i}){T(i)&&(i?(yield this.openDebugDiaLog(),this.addVideoProcessor()):(this.closeDebugDiaLog(),this.removeVideoProcessor()))})}stop(){this.closeDebugDiaLog(),this.removeVideoProcessor()}destroy(){this.stop()}openDebugDiaLog(){return f(this,null,function*(){var i;if(!this.dialog)try{if(gc)yield gc;else{let e=new URLSearchParams(location.search).get("trtcDebugDialogPath")||((i=window.sessionStorage)==null?void 0:i.getItem("TRTC_DEBUG_DIALOG_PATH"))||`https://unpkg.com/${cp}@${xe}/assets/debug-dialog.js`;gc=this._core.fileDownloader.loadScript(e),yield gc}this.dialog=new TRTCDebugDialog(this._core,this.log,this.dumpLocalVideoMap,this.dumpRemoteVideoMap),this._core.kvStatManager.addSuccessEvent({key:592705})}catch(e){this._core.kvStatManager.addFailedEvent({key:592705}),this.log.error("load debug dialog script failed: ",JSON.stringify(e))}})}closeDebugDiaLog(){this.dialog&&(this.dialog.closeDialog(),this.dialog=null)}addVideoProcessor(){this._core.room.videoManager.addEncodeProcessor({processor:this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED?this.encodeVideo.bind(this):Su,type:1}),this._core.room.videoManager.addDecodeProcessor({processor:this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED?this.decodeVideo.bind(this):Iu,type:1})}removeVideoProcessor(){this._core.room.videoManager.removeEncodeProcessor({type:1}),this._core.room.videoManager.removeDecodeProcessor({type:1})}encodeVideo({frame:i,mediaType:e}){return Su({frame:i,onDump:()=>{if(!e)return;let t=e===2?"sub":"main",r=this.dumpLocalVideoMap[t];r&&(r.data.push(i.data.slice(0)),r.duration>0&&Date.now()-r.startTimestamp>r.duration*1e3&&r.onDumpEnd())}})}decodeVideo({frame:i,track:e}){return Iu({frame:i,onDump:()=>{if(!e)return;let t=this.dumpRemoteVideoMap[`${e.userId}-${e.streamType}`];t&&(t.data.push(i.data.slice(0)),t.duration>0&&Date.now()-t.startTimestamp>t.duration*1e3&&t.onDumpEnd())}})}};d(an,"Name","Debug"),d(an,"autoStart",!0);var Tc=an;var mp=o=>{switch(o){case"webCodecs":return 504703;case"wasm":return 504704}throw new Error("decoder type not supported")},Ec=class{constructor(i,e,t){d(this,"trackDoneOB");d(this,"startOB");d(this,"stopOB");d(this,"inputFrameCount",0);d(this,"decodedFrameCount",0);d(this,"type","auto");d(this,"config");d(this,"decoder");d(this,"_decodeSink");let{kvStatManager:r,trtc:s}=i;this.config=t.config,this.trackDoneOB=he(e,H.INIT),this.stopOB=tt(),this.startOB=tt(),t.type==="auto"?this.type="webCodecs":this.type=t.type;let n=tt(),a=c=>{let l=this.pipe(e);return n.next("STARTING"),e.log.info(`decoder type: ${this.type}`),le(l,Be(this.stopOB),be(()=>{},h=>{e.log.error(h),r.addFailedEvent({key:mp(this.type),error:h}),c>4?this.startOB.error(h):this.startOB.next(c+1)})),le(l,Wi(1),Xl(Ks))};le(this.startOB,Ys(0),Vo(a),Be(this.stopOB),be(()=>{e.player.setOutput(),n.next("STARTED")},c=>{n.next("FAILED")},()=>{r.addSuccessEvent({key:mp(this.type)}),r.addSuccessEvent({key:504702})}))}mock(i){this._decodeSink?this._decodeSink.error(i):this.startOB.next(0)}close(i){this.stopOB.next(i)}pipe(i){return Gi()(e=>f(this,null,function*(){this._decodeSink=e,e.defer(()=>{var r;(r=this.decoder)==null||r.close()});let{type:t}=this;try{switch(t){case"webCodecs":this.decoder=new AudioDecoder({error:r=>{i.log.error(r),e.error(4)},output:r=>{this.decodedFrameCount++,e.next(r),i.player.write(r)}});break;case"wasm":break}this.decoder.configure(this.config)}catch(r){i.log.error(r),e.error(t==="webCodecs"?2:6)}}))}decodeFrame(i){var e;this.inputFrameCount++,((e=this.decoder)==null?void 0:e.state)==="configured"&&this.decoder.decode(new EncodedAudioChunk({data:i.data,timestamp:i.timestamp,type:"key"}))}},QT={type:"object"},cn=class cn{constructor(i){this.core=i;d(this,"log");d(this,"contextMap",new Map);d(this,"decodeProcessorMap",new WeakMap);this.log=i.log.createChild({id:`${this.getAlias()}`})}getAlias(){return cn.Name}getGroup(i){return i.track.userId+i.track.streamType}getName(){return cn.Name}getValidateRule(i){return QT}start(i){let{track:e}=i;this.decodeProcessorMap.set(e,this.decode(i)),this.core.room.audioManager.addDecodeProcessor({processor:({frame:t,track:r})=>this.decodeProcessorMap.has(r)?this.decodeProcessorMap.get(r)({frame:t,track:r}):t,type:3})}decode(i){return({frame:e,track:t})=>{if(t!==i.track)return e;if(this.contextMap.has(t))return this.contextMap.get(t).decodeFrame(e);let r=new Ec(this.core,t,i);return le(r.trackDoneOB,Wi(1),be(()=>{this.core.clearStarted(this,this.getGroup(i)),this.stop({track:t})})),this.contextMap.set(t,r),r.decodeFrame(e)}}stop({track:i}){let e=this.contextMap.get(i);e&&(e.close("stop"),this.contextMap.delete(i),this.contextMap.size===0&&this.core.room.audioManager.removeDecodeProcessor({type:3}))}update(i){let e=this.contextMap.get(i.track);if(e){if(i.type==="mock"){e.mock(10);return}e.close("update"),this.contextMap.set(i.track,new Ec(this.core,i.track,i))}}};d(cn,"Name","TRTCAudioDecoder");var dn=cn;var Sc=class{constructor(){d(this,"log");this.log=C.createLogger({id:"exp"})}call(i,e){return f(this,null,function*(){return ne(this[i])?this[i](e):Promise.reject(new y({code:I.INVALID_PARAMETER,message:P({key:x.API_NOT_EXIST,data:{name:i}})}))})}enableAudioFrameEvent(i){return f(this,null,function*(){let{trtcInstance:e,enable:t,userId:r,sampleRate:s=48e3,channelCount:n=1,port:a}=i,{audioManager:c}=e.room,{getPCMAbortCtrlMap:l,audioFrameEventConfigMap:h}=c;if(h.set(r,{enable:t,sampleRate:s,channelCount:n,port:a}),t)if(r==="*")e.room.remotePublishedUserMap.forEach(u=>{if(u.remoteAudioTrack.isAvailable){if(l.get(u.userId))return;let m=c.getPCM(g=>{e.emit(k.AUDIO_FRAME,g)},u.userId);l.set(u.userId,m)}});else{if(l.get(r))return;let u=c.getPCM(m=>{e.emit(k.AUDIO_FRAME,m)},r);l.set(r,u)}else if(r==="*")e.room.remotePublishedUserMap.forEach(u=>{if(u.remoteAudioTrack.isSubscribed){let{userId:m}=u,g=l.get(m);g==null||g.abort("disable"),l.delete(m)}});else{let u=l.get(r);u==null||u.abort("disable"),l.delete(r)}})}};v([Bm({name:"options",type:"object",required:!0,properties:{enable:{required:!0,type:"boolean"},userId:{required:!0,type:"string"},sampleRate:{type:"number",values:[8e3,16e3,32e3,44100,48e3]},channelCount:{type:"number",values:[1,2]},port:{type:"messageport"}}})],Sc.prototype,"enableAudioFrameEvent",1);var pp=new Sc;var fp=0,ln=new Set,Fe=null;Fc(dp);yo.checkStorage();Qd();var YT={RtcError:w,ErrorCode:B,ErrorCodeDictionary:Nt},X=class X extends _p.EventEmitter{constructor(e,t){super();d(this,"_room");d(this,"_eventListened",new Set);d(this,"_localVideoTrack",null);d(this,"_localAudioTrack",null);d(this,"_localScreenTrack",null);d(this,"_localScreenAudioTrack",null);d(this,"_localVideoConfig",null);d(this,"_localScreenConfig",null);d(this,"_localAudioConfig",null);d(this,"_remoteVideoConfigMap",new Map);d(this,"_remoteAudioConfigMap",new Map);d(this,"_remoteAudioVolumeMap",new Map);d(this,"_remoteAudioMuteMap",new Map);d(this,"_mediaTrackMap",new WeakMap);d(this,"_log",C.createLogger({id:`t${++fp}`}));d(this,"_plugins",new Map);d(this,"_networkQuality",null);d(this,"_speakerId");d(this,"enterRoomParams");this._room=new e(N({logger:this._log,frameWorkType:X.frameWorkType},t)),this._room.videoDecodeFallbackType=t.videoDecodeFallback,this._log.info(`create() ${JSON.stringify(t,(r,s)=>r==="plugins"?s.map(n=>n.Name):s)}`),Object.defineProperties(this,{dumpAudio:{enumerable:!1,value(r){return this._room.audioManager.dump(r)}}}),t.plugins&&t.plugins.forEach(r=>{this._use(r,t.assetsPath)}),this._use(mc,t.assetsPath),this._use(uc,t.assetsPath),this._use(fc,t.assetsPath),this._use(dn,t.assetsPath),this._use(Tc),t.enableSEI&&ws&&this._use(_c),this._room.on("audio-volume",r=>{!r.find(s=>s.userId==="")&&this._localAudioTrack&&r.push({userId:"",volume:Math.floor(this._localAudioTrack.getAudioLevel()*100),floatVolume:this._localAudioTrack.getInternalAudioLevel()}),t.volumeType===1&&r.forEach(s=>{var a;let n=s.userId===""?this._localAudioTrack:(a=this.room.remotePublishedUserMap.get(s.userId))==null?void 0:a.remoteAudioTrack;n&&(s.volume=n.dbVolume)}),this.emit(k.AUDIO_VOLUME,{result:r.sort((s,n)=>n.volume-s.volume)})}),this._room.videoManager.on("error",r=>{this._log.error(new w({code:B.OPERATION_FAILED,extraCode:5504,message:r.message,originError:r}))}),this._listenEvents(),this._initActiveSpeaker(),op(this,"trtc")}static create(e){}static _create(e,t){Hm();let r=new X(e,t||{});return ln.add(r),r}get room(){return this._room}_listenEvents(){je(this,this._room).add("peer-join",e=>{let{userId:t}=e;this.emit(k.REMOTE_USER_ENTER,{userId:t})}).add("peer-leave",e=>{this.emit(k.REMOTE_USER_EXIT,{userId:e}),this._remoteAudioVolumeMap.delete(e)}).add("banned",e=>{this._exitRoom().finally(()=>{this.emit(k.KICKED_OUT,{reason:e.reason})})}).add("error",e=>{this._exitRoom().finally(()=>{this.emit(k.ERROR,w.convertFrom(e))})}).add("signal-connection-state-changed",e=>{this.emit(k.CONNECTION_STATE_CHANGED,e)}).add("network-quality",e=>{this._networkQuality=e;let t=L(N({},e),{uplinkRTT:Math.min(e.uplinkRTT,ls),downlinkRTT:Math.min(e.downlinkRTT,ls)});this.emit(k.NETWORK_QUALITY,t)}).add("remote-published",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(r=>{je(r,r).add("player-state-changed",s=>{let n=L(N({},s),{userId:e.userId});r.kind===p.VIDEO&&(n.streamType=hr(r.streamType)),this.emit(r.kind===p.AUDIO?k.AUDIO_PLAY_STATE_CHANGED:k.VIDEO_PLAY_STATE_CHANGED,n)}).add("error",s=>{s.getCode()===I.PLAY_NOT_ALLOWED&&this.emit(k.AUTOPLAY_FAILED,{userId:r.userId,mediaType:r.strMediaType,resume:()=>r.player.resume()})})})}).add("remote-unpublished",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(r=>{ve(r)})}).add("remote-publish-state-changed",({prevMuteState:e,muteState:t})=>{let{userId:r}=t,s=e.audioAvailable,n=e.videoAvailable,{audioAvailable:a,videoAvailable:c}=t;a||this._remoteAudioConfigMap.delete(r),c||this._removeRemoteVideoConfig(r,"main"),t.hasAuxiliary||this._removeRemoteVideoConfig(r,"sub"),n!==c&&(c?this._onVideoAvailable({userId:r,streamType:"main"}):this._onVideoUnavailable({userId:r,streamType:"main"}),this.emit(c?k.REMOTE_VIDEO_AVAILABLE:k.REMOTE_VIDEO_UNAVAILABLE,{userId:r,streamType:"main"})),s!==a&&(a?this._onAudioAvailable({userId:r}):this._onAudioUnavailable({userId:r,muteState:t}),this.emit(a?k.REMOTE_AUDIO_AVAILABLE:k.REMOTE_AUDIO_UNAVAILABLE,{userId:r})),e.hasAuxiliary!==t.hasAuxiliary&&(t.hasAuxiliary?this._onVideoAvailable({userId:r,streamType:"sub"}):this._onVideoUnavailable({userId:r,streamType:"sub"}),this.emit(t.hasAuxiliary?k.REMOTE_VIDEO_AVAILABLE:k.REMOTE_VIDEO_UNAVAILABLE,{userId:r,streamType:"sub"}))}).add("sei-message",e=>{this.emit(k.SEI_MESSAGE,L(N({},e),{streamType:hr(e.streamType)}))}).add("firewall-restriction",()=>{this.emit(k.ERROR,new w({code:B.OPERATION_FAILED,extraCode:5501}))}).add("heartbeat-report",e=>{var s,n,a,c,l,h,u;let t={2:"big",3:"small",7:"sub"},r={rtt:Math.min(e.msg_up_stream_info.msg_network_status.uint32_rtt||((s=e.msg_down_stream_info[0])==null?void 0:s.msg_network_status.uint32_rtt)||((n=this._networkQuality)==null?void 0:n.uplinkRTT)||((a=this._networkQuality)==null?void 0:a.downlinkRTT)||0,ls),upLoss:((c=this._networkQuality)==null?void 0:c.uplinkLoss)||0,downLoss:((l=this._networkQuality)==null?void 0:l.downlinkLoss)||0,bytesSent:e.bytes_sent||0,bytesReceived:e.bytes_received||0,localStatistics:{audio:{bitrate:(((h=e.msg_up_stream_info.msg_audio_status)==null?void 0:h.uint32_audio_codec_bitrate)||0)/1e3,audioLevel:(((u=e.msg_up_stream_info.msg_audio_status)==null?void 0:u.uint32_audio_level)||0)/Rt},video:e.msg_up_stream_info.msg_video_status.filter(m=>t[m.uint32_video_stream_type]).map(m=>({bitrate:(m.uint32_video_codec_bitrate||0)/1e3,width:m.uint32_video_width,height:m.uint32_video_height,frameRate:m.uint32_video_enc_fps,videoType:t[m.uint32_video_stream_type]}))},remoteStatistics:e.msg_down_stream_info.map(m=>({userId:m.msg_user_info.str_identifier,audio:{bitrate:(m.msg_audio_status.uint32_audio_codec_bitrate||0)/1e3,audioLevel:(m.msg_audio_status.uint32_audio_level||0)/Rt,point2pointDelay:(m.msg_audio_status.uint32_audio_p2p_delay||0)+(m.msg_audio_status.uint32_audio_cache_ms||0),jitterBufferDelay:m.msg_audio_status.uint32_audio_cache_ms||0},video:m.msg_video_status.map(g=>({bitrate:(g.uint32_video_codec_bitrate||0)/1e3,width:g.uint32_video_width,height:g.uint32_video_height,frameRate:g.uint32_video_dec_fps,videoType:t[g.uint32_video_stream_type],point2pointDelay:(g.uint32_video_p2p_delay||0)+(g.uint32_video_cache_ms||0),jitterBufferDelay:g.uint32_video_cache_ms||0}))}))};this.emit(k.STATISTICS,r)}).add("custom-message",e=>{this.emit(k.CUSTOM_MESSAGE,e)}).add("layerData",e=>this.emit(k.LAYER_DATA,e)).add("first-video-frame",e=>{this.emit(k.FIRST_VIDEO_FRAME,L(N({},e),{streamType:hr(e.streamType)}))}).add("audio-frame",e=>{this.emit(k.AUDIO_FRAME,e)}),je(this,Le).add("audioInputAdded",e=>{this.emit(k.DEVICE_CHANGED,{type:"microphone",action:"add",device:e})}).add("audioInputRemoved",e=>{this.emit(k.DEVICE_CHANGED,{type:"microphone",action:"remove",device:e})}).add("videoInputAdded",e=>{this.emit(k.DEVICE_CHANGED,{type:"camera",action:"add",device:e})}).add("videoInputRemoved",e=>{this.emit(k.DEVICE_CHANGED,{type:"camera",action:"remove",device:e})}).add("audioOutputAdded",e=>f(this,null,function*(){if(this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"add",device:e}),Fe&&Fe.deviceId===ds){let t=(yield lr()).find(r=>r.deviceId===ds);t&&Fe.groupId!==t.groupId&&(Fe=t,this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"active",device:t}))}})).add("audioOutputRemoved",e=>f(this,null,function*(){this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"remove",device:e});let t=(yield lr())[0];if(!t||!Fe||Fe.groupId===t.groupId)return;let r=Fe.deviceId===e.deviceId,s=Fe.deviceId===ds&&Fe.deviceId===t.deviceId;(r||s)&&(Fe=t,this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"active",device:t}))}))}use(e){let t,r;"plugin"in e?(t=e.plugin,r=e.assetsPath):t=e,this._use(t,r)}_use(e,t){if(this._plugins.get(e.Name)){this._log.warn("duplicate install plugin",e.Name);return}let s=new e(rp.call(this,{TRTC:X,room:this._room,errorModule:YT,assetsPath:t}));this._plugins.set(e.Name,s),e.autoStart&&this.startPlugin(e.Name)}enterRoom(e){return f(this,null,function*(){var c,l;this.enterRoomParams=e;let{scene:t="rtc",enableAutoPlayDialog:r=!0,autoReceiveAudio:s=!0,autoReceiveVideo:n=!1}=e;e.proxy&&(this._room.setProxyServer(e.proxy),!ee(e.proxy)&&e.proxy.turnServer&&((l=(c=this._room).setTurnServer)==null||l.call(c,e.proxy.turnServer,e.proxy.iceTransportPolicy))),this._room.enableAutoPlayDialog=r,this._room.autoReceiveAudio=s,this._room.autoReceiveVideo=n,me(e.preferHW)&&(this._room.preferHW=e.preferHW),e.playoutDelay&&(this._room.playoutDelay=e.playoutDelay),e.jitterBufferDelay&&(this._room.jitterBufferDelay=e.jitterBufferDelay);let a={sdkAppId:e.sdkAppId,userId:e.userId,userSig:e.userSig,privateMapKey:e.privateMapKey||null,latencyLevel:e.latencyLevel,role:e.role==="audience"?21:20,roomId:e.roomId||0,strRoomId:e.strRoomId||"",businessInfo:e.businessInfo||null,streamId:null,userDefineRecordId:e.userDefineRecordId||null,frameWorkType:e.frameWorkType,component:e.component,language:e.language,priority:e.priority,useVp8:e.useVp8,keepAlive:e.keepAlive};e.strRoomId&&!e.roomId?this._room.useStringRoomId=!0:this._room.useStringRoomId=!1,yield this._room.join(a,t,X.frameWorkType),this._checkTrackToPublish(),hu.start()})}exitRoom(){return f(this,null,function*(){return yield this._exitRoom()})}switchRoom(e){return f(this,null,function*(){if(this.room.isSwitchRoomSupported())yield this._room.switchRoom(e);else{yield this.exitRoom();let t=N(N({},this.enterRoomParams),e);yield this.enterRoom(t)}})}switchRole(e,t){return f(this,null,function*(){t!=null&&t.privateMapKey&&(this._room.privateMapKey=t.privateMapKey),t!=null&&t.latencyLevel&&(this._room.latencyLevel=t.latencyLevel),yield this._room.switchRole(e),e==="anchor"&&this._checkTrackToPublish()})}destroy(){ve(this),this.removeAllListeners(),this._room.destroy(),ln.delete(this),ln.size===0&&hu.destroy(),this._localAudioTrack&&this.stopLocalAudio(),this._localVideoTrack&&this.stopLocalVideo(),this._localScreenTrack&&this.stopScreenShare(),this._plugins.forEach(e=>{var t;return(t=e.destroy)==null?void 0:t.call(e)}),this._plugins.clear(),E.off("102",this._onLocalTrackCaptured,this)}startLocalAudio(){return f(this,arguments,function*(e={publish:!0}){if(this._localAudioTrack){this._log.warn("local audio is already started");return}let{publish:t=!0,mute:r,option:s}=e,n=new Et(this._room.audioManager),a={},c={muted:!0};s&&(T(s.microphoneId)?T(s.audioTrack)||(a.customSource=s.audioTrack):a.deviceId=s.microphoneId,s&&j(s.captureVolume)&&n.setCaptureVolume(s.captureVolume),T(s.profile)||(ee(s.profile)?yn[s.profile]&&n.setProfile(yn[s.profile]):n.setProfile(s.profile)),j(s.earMonitorVolume)&&(c.muted=!(s.earMonitorVolume>0),c.volume=s.earMonitorVolume),T(s.echoCancellation)||(n.profile.echoCancellation=s.echoCancellation),T(s.noiseSuppression)||(n.profile.noiseSuppression=s.noiseSuppression),T(s.autoGainControl)||(n.profile.autoGainControl=s.autoGainControl)),n.on("5",l=>{this.emit(k.ERROR,new w({code:B.DEVICE_ERROR,extraCode:5309,messageParams:{error:l}}))}),n.on("2",l=>{this.emit(k.DEVICE_CHANGED,{type:"microphone",action:"active",device:l})}),n.on("4",l=>{let h;l.error&&(h=w.convertFrom(l.error)),this.emit(k.PUBLISH_STATE_CHANGED,L(N({},l),{error:h}))}),this._listenOutputTrackChanged(n),this._speakerId&&n.setAudioOutput(this._speakerId),yield n.capture(a),T(r)||n.setMute(r),je(n,n).add("player-state-changed",l=>{this.emit(k.AUDIO_PLAY_STATE_CHANGED,L(N({},l),{userId:""}))}),t&&this._room.isJoined&&this._room.publish(n).catch(()=>{}),this._localAudioTrack=n,this._localAudioConfig=L(N({},e),{publish:t}),yield this._updateAudioPlayOption({playOption:c,track:n}),E.emit("113",{userId:"",room:this.room})})}updateLocalAudio(e){return f(this,null,function*(){if(!this._localAudioTrack||!this._localAudioConfig)return;let{publish:t,mute:r,option:s}=e,n={};s&&(s.microphoneId?yield this._localAudioTrack.switchDevice(s.microphoneId):T(s.audioTrack)||(yield this._localAudioTrack.setInputMediaStreamTrack(s.audioTrack)),T(s.captureVolume)||this._localAudioTrack.setCaptureVolume(s.captureVolume),T(s.earMonitorVolume)||(n.muted=!(s.earMonitorVolume>0),n.volume=s.earMonitorVolume),yield this._localAudioTrack.update3A(s)),this._room.isJoined&&!T(t)&&(t&&!this._localAudioConfig.publish&&this._room.publish(this._localAudioTrack).catch(()=>{}),this._localAudioConfig.publish&&!t&&this._room.unpublish(this._localAudioTrack).catch(()=>{})),T(r)||this._localAudioTrack.setMute(r),yield this._updateAudioPlayOption({playOption:n,track:this._localAudioTrack,prevConfig:this._localAudioConfig}),At(this._localAudioConfig,e)})}stopLocalAudio(){return f(this,null,function*(){this._localAudioTrack&&(this._room.isJoined&&(yield this._room.unpublish(this._localAudioTrack).catch(()=>{})),E.emit("114",{userId:"",room:this.room}),this._localAudioTrack.stop(),this._localAudioTrack.close(),this._room.audioManager.removeInput(this._localAudioTrack),ve(this._localAudioTrack),this._localAudioTrack=null,this._localAudioConfig=null)})}startLocalVideo(){return f(this,arguments,function*(e={publish:!0,view:null,capture:!0}){var u;if(this._localVideoTrack){this._log.warn("local video is already started");return}let{view:t,publish:r=!0,capture:s=!0,mute:n,option:a}=e,c=new qe(this._room.videoManager),l={},h={};me(a==null?void 0:a.avoidCropping)&&(c.avoidCropping=a.avoidCropping),a&&(a.cameraId?l.deviceId=a.cameraId:T(a.useFrontCamera)?T(a.videoTrack)||(l.customSource=a.videoTrack):l.facingMode=a.useFrontCamera?p.FACING_MODE_USER:p.FACING_MODE_ENVIRONMENT,T(a.retryWhenExactFailed)||(l.retryWhenExactFailed=a.retryWhenExactFailed),a.qosPreference&&(l.contentHint=on(a.qosPreference)),T(a.profile)||(ee(a.profile)?Ot[a.profile]&&c.setProfile(Ot[a.profile]):c.setProfile(a.profile)),T(a.fillMode)||(h.objectFit=a.fillMode),T(a.mirror)||(h.mirror=a.mirror),T(a.small)||(T(a.smallMode)||(this._room.smallMode=a.smallMode),me(a.small)&&a.small===!1?c.stopSmall():c.updateSmallConfig(Go(a.small,!0))),T(a.rotation)||c.setRotation(a.rotation)),c.once("first-video-frame",m=>{this.emit(k.FIRST_VIDEO_FRAME,L(N({},m),{streamType:hr(m.streamType)}))}),c.on("5",m=>{this.emit(k.ERROR,new w({code:B.DEVICE_ERROR,extraCode:5308,messageParams:{error:m}}))}),c.on("2",m=>{this.emit(k.DEVICE_CHANGED,{type:"camera",action:"active",device:m})}),c.on("4",m=>{let g;m.error&&(g=w.convertFrom(m.error)),this.emit(k.PUBLISH_STATE_CHANGED,L(N({},m),{error:g}))}),this._listenOutputTrackChanged(c),s?yield c.capture(l):(u=c.manager)==null||u.changeInput(c),T(n)||(yield c.setMute(n)),je(c,c).add("player-state-changed",m=>{this.emit(k.VIDEO_PLAY_STATE_CHANGED,L(N({},m),{userId:"",streamType:"main"}))}),r&&this._room.isJoined&&this._room.publish(c).catch(()=>{}),this._localVideoTrack=c,this._localVideoConfig=L(N({},e),{view:t,publish:r,capture:s}),yield this._updateVideoPlayOption({view:t,playOption:h,track:c})})}updateLocalVideo(e){return f(this,null,function*(){var l,h,u;if(!this._localVideoTrack||!this._localVideoConfig)return;let{view:t,publish:r,mute:s,capture:n,option:a}=e,c={};if(this._localVideoConfig.capture)n!==!1?a!=null&&a.cameraId?yield this._localVideoTrack.switchDevice(a==null?void 0:a.cameraId):T(a==null?void 0:a.useFrontCamera)?T(a==null?void 0:a.videoTrack)||(yield this._localVideoTrack.setInputMediaStreamTrack(a==null?void 0:a.videoTrack)):yield this._localVideoTrack.switchDevice(a!=null&&a.useFrontCamera?p.FACING_MODE_USER:p.FACING_MODE_ENVIRONMENT):this._localVideoTrack.stopCapture();else if(n){let m={};m.deviceId=(a==null?void 0:a.cameraId)||((l=this._localVideoConfig.option)==null?void 0:l.cameraId),m.facingMode=a!=null&&a.useFrontCamera||(h=this._localVideoConfig.option)!=null&&h.useFrontCamera?p.FACING_MODE_USER:p.FACING_MODE_ENVIRONMENT,m.customSource=(a==null?void 0:a.videoTrack)||((u=this._localVideoConfig.option)==null?void 0:u.videoTrack),yield this._localVideoTrack.capture(m)}a&&(T(a.profile)||(ee(a.profile)?Ot[a.profile]&&this._localVideoTrack.setProfile(Ot[a.profile]):this._localVideoTrack.setProfile(a.profile),(!a.cameraId||!this._localVideoTrack.isNeedToSwitchDevice(a.cameraId))&&T(a.useFrontCamera)&&(yield this._localVideoTrack.applyProfile())),T(a.fillMode)||(c.objectFit=a.fillMode),T(a.mirror)||(c.mirror=a.mirror),T(a.rotation)||this._localVideoTrack.setRotation(a.rotation),a.qosPreference&&this._localVideoTrack.mediaTrack&&this._localVideoTrack.setContentHint(on(a.qosPreference)),T(a.small)||(me(a.small)&&!a.small?this._localVideoTrack.stopSmall():this._localVideoTrack.updateSmallConfig(Go(a.small,!0)))),this._room.isJoined&&T(r)&&this._localVideoConfig.publish&&n&&!this._localVideoConfig.capture&&this._room.publish(this._localVideoTrack).catch(()=>{}),this._room.isJoined&&((r!=null?r:this._localVideoConfig.publish)?this._room.publish(this._localVideoTrack).catch(()=>{}):this._room.unpublish(this._localVideoTrack).catch(()=>{})),T(s)||(yield this._localVideoTrack.setMute(s)),yield this._updateVideoPlayOption({view:t,playOption:c,track:this._localVideoTrack,prevConfig:this._localVideoConfig}),At(this._localVideoConfig,e)})}stopLocalVideo(){return f(this,null,function*(){this._localVideoTrack&&(this._room.isJoined&&(yield this._room.unpublish(this._localVideoTrack).catch(()=>{})),this._localVideoTrack.stop(),this._localVideoTrack.close(),ve(this._localVideoTrack),this._localVideoTrack=null,this._localVideoConfig=null)})}startScreenShare(){return f(this,arguments,function*(e={publish:!0,view:null}){if(this._localScreenTrack){this._log.warn("screen share is already started");return}let{view:t=null,publish:r=!0,option:s}=e,n=new ut(this._room.videoManager);n.on("4",u=>{let m;u.error&&(m=w.convertFrom(u.error)),this.emit(k.PUBLISH_STATE_CHANGED,L(N({},u),{error:m}))}),n.once("first-video-frame",u=>{this.emit(k.FIRST_VIDEO_FRAME,L(N({},u),{streamType:hr(u.streamType)}))}),this._listenOutputTrackChanged(n),e.streamType==="main"&&(n.mediaType=4);let a=null,c={},l={};s&&(T(s.profile)||(ee(s.profile)?bn[s.profile]&&n.setProfile(bn[s.profile]):n.setProfile(s.profile)),s.systemAudio&&(c.systemAudio=!0,c.echoCancellation=s.echoCancellation,c.noiseSuppression=s.noiseSuppression,c.autoGainControl=s.autoGainControl),T(s.fillMode)||(l.objectFit=s.fillMode),s.videoTrack&&(c.videoTrack=s.videoTrack),s.audioTrack&&(c.audioTrack=s.audioTrack),s.captureElement&&(c.captureElement=s.captureElement),s.preferDisplaySurface&&(c.preferDisplaySurface=s.preferDisplaySurface),s.qosPreference&&(c.contentHint=on(s.qosPreference)));let h=yield n.capture(c);if(n.mediaTrack.addEventListener(p.ENDED,()=>{this._stopScreenShare(),this.emit(k.SCREEN_SHARE_STOPPED)}),h.getAudioTracks()[0]&&(a=new hi(this._room.audioManager),yield a.setInputMediaStreamTrack(h.getAudioTracks()[0]),this._speakerId&&a.setAudioOutput(this._speakerId)),je(n,n).add("player-state-changed",u=>{this.emit(k.VIDEO_PLAY_STATE_CHANGED,L(N({},u),{userId:"",streamType:"sub"}))}),r&&this._room.isJoined){let u=[n];a&&(u.push(a),this._checkScreenAudioEchoCancellation(n,a)),this._room.publish(...u).catch(()=>{})}this._localScreenTrack=n,this._localScreenAudioTrack=a,this._localScreenConfig=L(N({},e),{view:t,publish:r}),yield this._updateVideoPlayOption({view:t,playOption:l,track:n})})}updateScreenShare(e){return f(this,null,function*(){if(!this._localScreenTrack||!this._localScreenConfig)return;let{view:t,publish:r,option:s}=e,n={};if(s&&(T(s.fillMode)||(n.objectFit=s.fillMode),s.qosPreference)){let a=on(s.qosPreference);this._localScreenTrack.setContentHint(a)}this._room.isJoined&&!T(r)&&(r&&!this._localScreenConfig.publish&&(this._room.publish(this._localScreenTrack).catch(()=>{}),this._localScreenAudioTrack&&this._room.publish(this._localScreenAudioTrack).catch(()=>{})),this._localScreenConfig.publish&&!r&&(this._room.unpublish(this._localScreenTrack).catch(()=>{}),this._localScreenAudioTrack&&this._room.unpublish(this._localScreenAudioTrack).catch(()=>{}))),yield this._updateVideoPlayOption({view:t,playOption:n,track:this._localScreenTrack,prevConfig:this._localScreenConfig}),At(this._localScreenConfig,e)})}stopScreenShare(){return f(this,null,function*(){return yield this._stopScreenShare()})}startRemoteVideo(e){return f(this,null,function*(){let{view:t,userId:r,streamType:s,option:n}=e,a=`${r}_${s}`;if(this._remoteVideoConfigMap.has(a)){this._log.warn(`remote video has already started. userId:${r}, streamType:${s}`);return}let c=this._room.remotePublishedUserMap.get(r);if(!c)return;let l={},h=s==="main"?c.remoteVideoTrack:c.remoteAuxiliaryTrack;this._listenOutputTrackChanged(h),n&&(T(n.fillMode)||(l.objectFit=n.fillMode),T(n.mirror)||(l.mirror=n.mirror),T(n.poster)||(l.poster=n.poster),l.canvasRender=n.canvasRender,s==="main"&&!T(n.small)&&(!c.remoteVideoTrack.isSubscribing&&!c.remoteVideoTrack.isSubscribed&&c.remoteVideoTrack.setMediaType(n.small?8:4),this._room.changeType(n.small,h.user))),yield this._room.subscribe(h),yield this._enableVideoDecodeFallback(h,s),yield this._updateVideoPlayOption({view:t,playOption:l,track:h}),this._emitTrackEvent(h),this._remoteVideoConfigMap.set(a,{config:e}),n&&!T(n.receiveWhenViewVisible)&&this._observeView({remoteTrack:h,view:t,receiveWhenViewVisible:n.receiveWhenViewVisible,viewRoot:n==null?void 0:n.viewRoot})})}updateRemoteVideo(e){return f(this,null,function*(){var S,O;let{view:t,userId:r,streamType:s,option:n}=e,a=`${r}_${s}`,c=this._remoteVideoConfigMap.get(a);if(!c||!this._room.remotePublishedUserMap.has(r))return;let l={};n&&(T(n.fillMode)||(l.objectFit=n.fillMode),T(n.mirror)||(l.mirror=n.mirror));let h=null,u=this._room.remotePublishedUserMap.get(r);if(s==="main"&&(u!=null&&u.muteState.hasVideo)&&(h=u.remoteVideoTrack),s==="sub"&&(u!=null&&u.muteState.hasAuxiliary)&&(h=u.remoteAuxiliaryTrack),!h)return;let{config:m}=c;s==="main"&&n&&!T(n.small)&&this._room.changeType(n.small,h.user),yield this._updateVideoPlayOption({view:t,playOption:l,track:h,prevConfig:m}),At(m,e);let g=T(n==null?void 0:n.receiveWhenViewVisible)?(S=m.option)==null?void 0:S.receiveWhenViewVisible:n.receiveWhenViewVisible,D=T(t)?m.view:t,_=T(n==null?void 0:n.viewRoot)?(O=m.option)==null?void 0:O.viewRoot:n.viewRoot;this._observeView({remoteTrack:h,view:D,receiveWhenViewVisible:g,viewRoot:_})})}stopRemoteVideo(e){return f(this,null,function*(){return this._stopRemoteVideo(e)})}_stopRemoteVideo(e,t=!0){return f(this,null,function*(){let r=[],s=this._room.remotePublishedUserMap.get(e.userId);if(s){let{muteState:n,remoteVideoTrack:a,remoteAuxiliaryTrack:c}=s;e.streamType==="main"&&(a.stop(),n.hasVideo&&r.push(a)),e.streamType==="sub"&&(c.stop(),n.hasAuxiliary&&r.push(c))}for(let n of r)t&&(yield this._room.unsubscribe(n),this._mediaTrackMap.delete(n.outMediaTrack));this._removeRemoteVideoConfig(e.userId,e.streamType)})}_removeRemoteVideoConfig(e,t){let r=`${e}_${t}`,s=this._remoteVideoConfigMap.get(r);s&&s.observer&&s.observer.disconnect(),this._remoteVideoConfigMap.delete(r)}muteRemoteAudio(e,t){return f(this,null,function*(){this._remoteAudioMuteMap.set(e,t);try{if(e==="*")if(t)yield this._stopRemoteAudio({userId:e});else{let r=[...this._room.remotePublishedUserMap.values()];for(let s of r)s.muteState.hasAudio&&!this._remoteAudioConfigMap.has(s.userId)&&(yield this._startRemoteAudio({userId:s.userId}))}else t?yield this._stopRemoteAudio({userId:e}):this._remoteAudioConfigMap.has(e)||(yield this._startRemoteAudio({userId:e}))}catch(r){throw this._remoteAudioMuteMap.delete(e),r}})}setRemoteAudioVolume(e,t){if(e==="*"){let r=[...this._room.remotePublishedUserMap.values()];for(let s of r)this._remoteAudioVolumeMap.set(s.userId,t),s.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:t},track:s.remoteAudioTrack})}else if(e){let r=this._room.remotePublishedUserMap.get(e);this._remoteAudioVolumeMap.set(e,t),r&&r.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:t},track:r.remoteAudioTrack})}}startPlugin(e,t){return f(this,null,function*(){return e.start(t)})}updatePlugin(e,t){return f(this,null,function*(){return e.update(t)})}stopPlugin(e,t){return f(this,null,function*(){return e.stop(t)})}enableAudioVolumeEvaluation(e=2e3,t=!1){this._room.enableAudioVolumeEvaluation(e,t)}on(e,t,r){if(this.listeners(e).includes(t))return this;if(this._log.debug("on",e),super.on(e,t,r),this._eventListened.add(e),this.listeners(k.AUDIO_FRAME).length>0){let{audioFrameEventConfigMap:s}=this.room.audioManager;s.get("")||s.set("",{enable:!0}),this._localAudioTrack&&this.room.audioManager.handleLocalTrackStarted({userId:"",room:this.room})}return this}emit(e,...t){try{Km.has(e)&&this._log.debug(`emit ${e} ${JSON.stringify(t)}`)}catch(r){}return super.emit(e,...t)}off(e,t,r){if(this._log.debug("off",e),e==="*"?(this._eventListened.clear(),this.removeAllListeners()):super.off(e,t,r),(e===X.EVENT.AUDIO_FRAME||e==="*")&&this.listeners(X.EVENT.AUDIO_FRAME).length===0){let{getPCMAbortCtrlMap:s}=this.room.audioManager;s.forEach(n=>{n==null||n.abort("off")}),s.clear()}return this}getAudioTrack(e={userId:"",streamType:"main"}){let t,r=null,s="main",n=!1;if(ee(e)?t=e:(t=e.userId,n=e.processed===!0,e.streamType&&(s=e.streamType)),t){let a=this._room.remotePublishedUserMap.get(t);a&&(r=a.remoteAudioTrack)}else r=s==="sub"?this._localScreenAudioTrack:this._localAudioTrack;return r?n&&r.outMediaTrack&&r.outMediaTrack!==r.mediaTrack?r.outMediaTrack.clone():r.mediaTrack:null}getVideoTrack(e={userId:"",streamType:"main"}){let{userId:t="",streamType:r="main",processed:s=!1}=e,n=null;if(t==="")r==="main"&&this._localVideoTrack&&(n=this._localVideoTrack),r==="sub"&&this._localScreenTrack&&(n=this._localScreenTrack);else{let a=this._room.remotePublishedUserMap.get(t);a&&(n=r==="main"?a.remoteVideoTrack:a.remoteAuxiliaryTrack)}return n?s&&n.outMediaTrack&&n.outMediaTrack!==n.mediaTrack?n.outMediaTrack.clone():n.mediaTrack:null}getVideoSnapshot(e={}){let{userId:t,streamType:r="main"}=e;if(t){let s=this._room.remotePublishedUserMap.get(t);if(r==="main"&&(s!=null&&s.muteState.hasVideo))return s.remoteVideoTrack.getVideoFrame();if(r==="sub"&&(s!=null&&s.muteState.hasAuxiliary))return s.remoteAuxiliaryTrack.getVideoFrame()}else{if(r==="main"&&this._localVideoTrack)return this._localVideoTrack.getVideoFrame();if(r==="sub"&&this._localScreenTrack)return this._localScreenTrack.getVideoFrame()}return""}_setCurrentSpeaker(e){var t,r;this._speakerId=e,(t=this._localAudioTrack)==null||t.setAudioOutput(e),(r=this._localScreenAudioTrack)==null||r.setAudioOutput(e),this._room.remotePublishedUserMap.forEach(s=>s.remoteAudioTrack.setAudioOutput(e))}setCurrentSpeaker(e){return f(this,null,function*(){(yield lr()).forEach(r=>{r.deviceId===e&&(this._setCurrentSpeaker(e),this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"active",device:r}),Fe=r)}),this._log.warn('the "setCurrentSpeaker" method of the instance will be deprecated in the future, please use "TRTC.setCurrentSpeaker" instead. For more information, please visit: https://web.sdk.qcloud.com/trtc/webrtc/v5/doc/en/TRTC.html#.setCurrentSpeaker')})}_startRemoteAudio(e){return this._doStartRemoteAudio(e)}_doStartRemoteAudio(e){return f(this,null,function*(){let{userId:t}=e;if(this._remoteAudioConfigMap.has(t)){this._log.warn(`remote audio has already started. userId:${t}`);return}let r=this._room.remotePublishedUserMap.get(t);if(!r)return;let s={},n=r.remoteAudioTrack;this._listenOutputTrackChanged(n),this._speakerId&&n.setAudioOutput(this._speakerId);try{let a=this._remoteAudioVolumeMap.get(t),c=j(a)?a:100;s.volume=c,this._remoteAudioConfigMap.set(t,e),yield this._room.subscribe(n),le(he(n,"decode-failed"),Be(he(n,H.INIT)),be(()=>{this.startPlugin(dn.Name,{track:n,type:"auto",config:{codec:"opus",sampleRate:48e3,numberOfChannels:1}})})),yield this._updateAudioPlayOption({playOption:s,track:n}),E.emit("115",{userId:t,room:this.room}),n.outMediaTrack&&this.room.audioManager.updateAudioReference({type:"add",audioReference:n.outMediaTrack,refId:`ra-${t}`})}catch(a){throw this._remoteAudioConfigMap.delete(t),a}this._emitTrackEvent(n)})}_stopRemoteAudio(e,t=!0){return f(this,null,function*(){let r=this._room.remotePublishedUserMap.get(e.userId);r&&(r.remoteAudioTrack.stop(),r.muteState.hasAudio&&t&&(yield this._room.unsubscribe(r.remoteAudioTrack)),this._mediaTrackMap.delete(r.remoteAudioTrack.outMediaTrack)),this._remoteAudioConfigMap.delete(`${e.userId}`),E.emit("116",{userId:e.userId,room:this.room}),this.room.audioManager.updateAudioReference({type:"remove",refId:`ra-${e.userId}`})})}_enableVideoDecodeFallback(e,t){let r=this._room.videoDecodeFallbackType;if(!r||!this._plugins.has("TRTCVideoDecoder"))return;e.log.debug("remote video will fall back when decode failed",e.id);let s;le(he(e,"decode-failed"),Be(he(e,H.INIT)),Yl(()=>{this.startPlugin("TRTCVideoDecoder",{type:"auto",renderer:"videoFrame",track:e,config:{codec:"avc1.420028"},fallback:r})}),Jr(he(e,"decode-downgrade-state-changed")),be(n=>{s=n.state,this.emit(k.VIDEO_DECODE_DOWNGRADE_STATE_CHANGED,L(N({},n),{streamType:t,userId:e.userId}))},n=>{e.log.error("fallback",n)},()=>{s==="STARTED"&&e.log.info("fallback complete")}))}_updateVideoPlayOption(n){return f(this,arguments,function*({view:e,playOption:t,track:r,prevConfig:s}){if(r.setMirror(t.mirror),T(e)&&s&&s.view&&!ao(t)){let a=lo(s.view);a.length>0&&(yield r.play(a,t))}if(!T(e)){let a=lo(e);a.length>0?yield r.play(a,t):r.stop()}})}_updateAudioPlayOption(s){return f(this,arguments,function*({playOption:e={},track:t,prevConfig:r}){if(!t.isPlayCalled)try{yield t.play(null,e)}catch(n){}if(T(e.muted)||t.setPlayerMute(e.muted),T(e.volume)||t.setAudioVolume(e.volume/100),t instanceof Et&&t.mediaTrack){let n=e.muted===!1&&!T(e.volume)&&e.volume>0?"add":"remove";this.room.audioManager.updateAudioReference({type:n,audioReference:t.mediaTrack,refId:"em"})}else if(t instanceof Gt){let n=e.muted?0:e.volume;if(T(n))return;this.room.audioManager.updateAudioReference({type:"updateVolume",refId:`ra-${t.userId}`,volume:e.volume})}})}_listenOutputTrackChanged(e){e.listeners("output-media-track-changed").length===0&&e.on("output-media-track-changed",()=>this._emitTrackEvent(e,!1))}_emitTrackEvent(e,t=!0){let r=e.isRemote?e.userId:"";e.outMediaTrack&&(t&&this._mediaTrackMap.get(e.outMediaTrack)===r||(this._mediaTrackMap.set(e.outMediaTrack,r),this.emit(k.TRACK,{userId:r,streamType:hr(e.streamType),track:e.outMediaTrack,sourceTrack:e.mediaTrack})))}_checkTrackToPublish(){var t,r,s;let e=[];if((t=this._localAudioConfig)!=null&&t.publish&&this._localAudioTrack&&e.push(this._localAudioTrack),(r=this._localVideoConfig)!=null&&r.publish&&this._localVideoTrack&&e.push(this._localVideoTrack),(s=this._localScreenConfig)!=null&&s.publish&&(this._localScreenTrack&&e.push(this._localScreenTrack),this._localScreenAudioTrack&&e.push(this._localScreenAudioTrack),this._checkScreenAudioEchoCancellation(this._localScreenTrack,this._localScreenAudioTrack)),e.length!==0)return this._room.publish(...e).catch(()=>{})}_observeView({remoteTrack:e,view:t,receiveWhenViewVisible:r=!1,viewRoot:s}){if(T(t))return;let n=this._remoteVideoConfigMap.get(`${e.userId}_${hr(e.streamType)}`);if(!n)return;let a=n.observer||void 0;if(t===null||Se(t)&&t.length===0||!r){a==null||a.disconnect(),e.isSubscribed||this._room.subscribe(e).catch(()=>{});return}let l=n.visibleViewMap||new Map,h=-1;(!a||a.root!==s)&&(a==null||a.disconnect(),l.clear(),a=new IntersectionObserver(m=>{m.forEach(g=>{l.set(g.target,g.isIntersecting),e.log.info(`view ${g.target.id} is${g.isIntersecting?"":" not"} visible`)}),clearTimeout(h),h=window.setTimeout(()=>{[...l.values()].find(D=>D)?e.isSubscribed||this._room.subscribe(e).catch(()=>{}):e.isSubscribed&&this._room.unsubscribe(e).catch(()=>{})},200)},{root:s}));let u=new Set(lo(t));l.forEach((m,g)=>{u.has(g)||(a.unobserve(g),l.delete(g))}),u.forEach(m=>{l.set(m,!0),a.observe(m)}),a.takeRecords().forEach(m=>{l.set(m.target,m.isIntersecting)}),n.visibleViewMap=l,n.observer=a}_exitRoom(){return f(this,null,function*(){this._room.isJoined&&(yield this._room.leave()),new Set([...this._remoteAudioConfigMap.keys(),...this._remoteAudioMuteMap.keys()]).forEach(e=>{this._stopRemoteAudio({userId:e}).catch()}),[...this._remoteVideoConfigMap.keys()].forEach(e=>{let t=e.includes("main")?"main":"sub",r=e.split(`_${t}`)[0];r&&this._stopRemoteVideo({userId:r,streamType:t}).catch()}),this._remoteVideoConfigMap.clear(),this._remoteAudioConfigMap.clear(),this._remoteAudioMuteMap.clear(),this._remoteAudioVolumeMap.clear(),sp(this),this._room.remotePublishedUserMap.forEach(e=>{ve(e.remoteAudioTrack),ve(e.remoteVideoTrack),ve(e.remoteAuxiliaryTrack)})})}_stopScreenShare(){return f(this,null,function*(){var e,t;if(this._localScreenTrack){if(this._room.isJoined){let r=[this._localScreenTrack];this._localScreenAudioTrack&&r.push(this._localScreenAudioTrack),yield(e=this._room)==null?void 0:e.unpublish(...r).catch(()=>{})}this._localScreenTrack.stop(),this._localScreenTrack.close(),this._localScreenAudioTrack&&(((t=this._localScreenAudioTrack.trackSettings)==null?void 0:t.echoCancellation)===!1&&this.stopPlugin("AudioProcessor"),this._localScreenAudioTrack.stop(),this._localScreenAudioTrack.close(),this._room.audioManager.removeInput(this._localScreenAudioTrack),this._localScreenAudioTrack=null),ve(this._localScreenTrack),this._localScreenTrack=null,this._localScreenConfig=null}})}_checkScreenAudioEchoCancellation(e,t){return f(this,null,function*(){var s,n;if(!e||!t)return;let r=(s=e.trackSettings)==null?void 0:s.displaySurface;if(((n=t.trackSettings)==null?void 0:n.echoCancellation)===!1&&(r==="monitor"||r==="browser"&&e.isShareCurrentTab)){this._log.warn("echoCancellation of screen audio track is disable. Try starting audioProcessor plugin");try{yield this.startPlugin("AudioProcessor",{sdkAppId:Number(this.room.sdkAppId),userId:this._room.userId,userSig:this.room.userSig,isScreenAudioNeedAudioProcess:!0,isLocalAudioNeedAudioProcess:!1})}catch(a){this._log.warn("start audioProcessor plugin failed: ",a)}}})}_onLocalTrackCaptured({track:e}){e.kind==="audio"&&(!Fe||Po(Fe))&&(this._initActiveSpeaker(),E.off("102",this._onLocalTrackCaptured,this))}_initActiveSpeaker(){return f(this,null,function*(){if(Fe&&!Po(Fe))this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"active",device:Fe});else{let e=yield lr();e[0]&&!Po(e[0])?(Fe=e[0],this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"active",device:e[0]})):E.on("102",this._onLocalTrackCaptured,this)}})}_onAudioAvailable({userId:e}){let t=this._remoteAudioMuteMap.has(e)?this._remoteAudioMuteMap.get(e):this._remoteAudioMuteMap.get("*");(t===!1||this._room.autoReceiveAudio&&!t)&&this._doStartRemoteAudio({userId:e}).catch(()=>{})}_onVideoAvailable({userId:e,streamType:t}){if(!this._room.autoReceiveVideo)return;let r=this._room.remotePublishedUserMap.get(e);if(r){let s=t==="main"?r.remoteVideoTrack:r.remoteAuxiliaryTrack,n=[s];this._room.autoReceiveAudio&&r.remoteAudioTrack.isAvailable&&n.push(r.remoteAudioTrack),this._room.subscribe(...n).then(()=>{this._emitTrackEvent(s)}).catch(()=>{})}}_onAudioUnavailable({userId:e,muteState:t}){t.hasAudio&&t.audioMuted||this._stopRemoteAudio({userId:e},!1).catch(()=>{})}_onVideoUnavailable({userId:e,streamType:t}){this._stopRemoteVideo({userId:e,streamType:t},!1).catch(()=>{})}sendSEIMessage(e,t){var s;let r=this._plugins.get("SEI");r&&(r.update({buffer:e,options:L(N({seiPayloadType:243},t),{small:!!((s=this._localVideoTrack)!=null&&s.small)})}),b.addCount({key:5e5,useUV:!0}))}sendCustomMessage(e){var t,r;(r=(t=this._room).sendCustomMessage)==null||r.call(t,e),b.addCount({key:500001,useUV:!0})}callExperimentalAPI(e,t){return f(this,null,function*(){return this._log.info(`callExperimentalAPI(${e}, ${JSON.stringify(t)})`),pp.call(e,N({trtcInstance:this},t))})}static setLogLevel(e,t){C.setLogLevel(e),T(t)||(t?C.enableUploadLog():C.disableUploadLog())}static isSupported(){return pa()}static getCameraList(e=!0){return Tt(e)}static getMicrophoneList(e=!0){return dt(e)}static getSpeakerList(e=!0){return lr(e)}static setCurrentSpeaker(e){return f(this,null,function*(){if(pe&&(e===bt.SPEAKER||e===bt.HEADSET)){let r=yield X.getMicrophoneList(),s="";if(r.forEach(n=>{n.label===e&&(s=n.deviceId)}),!s)return;ln.forEach(n=>f(this,null,function*(){n._localAudioTrack&&(yield n.updateLocalAudio({option:{microphoneId:s}}))}));return}(yield lr()).forEach(r=>{r.deviceId===e&&(ln.forEach(s=>{s._setCurrentSpeaker(e),s.emit(k.DEVICE_CHANGED,{type:"speaker",action:"active",device:r})}),Fe=r)})})}static _addKVStat({type:e,key:t,value:r,base:s,useUV:n,version:a,max:c}){switch(a&&(Lr.version=a),e){case"count":Lr.addCount({key:t,useUV:n});break;case"enum":Lr.addEnum({key:t,value:r,useUV:n});break;case"number":Lr.addNumber({key:t,value:r,split:s,max:c});break}}};d(X,"_loggerManager",C),d(X,"EVENT",k),d(X,"ERROR_CODE",B),d(X,"TYPE",bt),d(X,"frameWorkType",30),v([fe({replaceArg:e=>({argIndex:0,value:{name:"plugin"in e?e.plugin.Name:e.Name,assetsPath:"assetsPath"in e?e==null?void 0:e.assetsPath:"default"}})})],X.prototype,"use",1),v([Ge(we.TRTC.enterRoom),pr("room",([e],[t])=>(e.roomId||e.strRoomId)===(t.roomId||t.strRoomId)&&e.userId===t.userId&&e.sdkAppId===t.sdkAppId),Q(e=>function(t){return this._log.setUserId(t.userId),this._log.setSdkAppId(t.sdkAppId),e.call(this,t)}),fe()],X.prototype,"enterRoom",1),v([fe()],X.prototype,"exitRoom",1),v([Ge(we.TRTC.switchRoom),fe(),Ct()],X.prototype,"switchRoom",1),v([Ge(we.TRTC.switchRole),zr("room",{merge:(e,t)=>t}),fe()],X.prototype,"switchRole",1),v([fe()],X.prototype,"destroy",1),v([Ge(we.TRTC.startLocalAudio),pr("audio",([e],[t])=>{var r,s;return((r=e==null?void 0:e.option)==null?void 0:r.microphoneId)===((s=t==null?void 0:t.option)==null?void 0:s.microphoneId)}),fe()],X.prototype,"startLocalAudio",1),v([Ge(we.TRTC.updateLocalAudio),zr("audio",{debounce:{delay:200,getKey:()=>`${fp}-localAudio`,isNeedToDebounce:e=>{var t;return!T((t=e.option)==null?void 0:t.captureVolume)}}}),fe()],X.prototype,"updateLocalAudio",1),v([fr("audio"),fe()],X.prototype,"stopLocalAudio",1),v([Ge(we.TRTC.startLocalVideo),pr("video",([e],[t])=>{var r,s;return((r=e==null?void 0:e.option)==null?void 0:r.cameraId)===((s=t==null?void 0:t.option)==null?void 0:s.cameraId)}),fe()],X.prototype,"startLocalVideo",1),v([Ge(we.TRTC.updateLocalVideo),zr("video"),fe()],X.prototype,"updateLocalVideo",1),v([fr("video"),fe()],X.prototype,"stopLocalVideo",1),v([Ge(we.TRTC.startScreenShare),pr("screen",()=>!0),fe()],X.prototype,"startScreenShare",1),v([Ge(we.TRTC.updateScreenShare),zr("screen"),fe()],X.prototype,"updateScreenShare",1),v([fe()],X.prototype,"stopScreenShare",1),v([Ge(we.TRTC.startRemoteVideo),pr(e=>`v${e.userId}${e.streamType}`,()=>!0),fe({getRemoteId:e=>`${e.userId}_${e.streamType}`})],X.prototype,"startRemoteVideo",1),v([Ge(we.TRTC.updateRemoteVideo),zr(e=>`v${e.userId}${e.streamType}`),fe({getRemoteId:e=>`${e.userId}_${e.streamType}`})],X.prototype,"updateRemoteVideo",1),v([Ge(we.TRTC.stopRemoteVideo),Q(e=>function(t){return f(this,null,function*(){if(t.userId==="*"){let r=[];return this._room.remotePublishedUserMap.forEach(s=>{this._remoteVideoConfigMap.has(`${s.userId}_main`)&&r.push(this.stopRemoteVideo({streamType:"main",userId:s.userId}).catch(()=>{})),this._remoteVideoConfigMap.has(`${s.userId}_sub`)&&r.push(this.stopRemoteVideo({streamType:"sub",userId:s.userId}).catch(()=>{}))}),Promise.all(r)}return e.call(this,t)})}),fe({getRemoteId:e=>`${e.userId}_${e.streamType}`})],X.prototype,"stopRemoteVideo",1),v([fr(e=>`v${e.userId}${e.streamType}`)],X.prototype,"_stopRemoteVideo",1),v([Ge(...we.TRTC.muteRemoteAudio),fe({getRemoteId:e=>e})],X.prototype,"muteRemoteAudio",1),v([au(...we.TRTC.setRemoteAudioVolume),np(200,e=>e),fe({getRemoteId:e=>e})],X.prototype,"setRemoteAudioVolume",1),v([dc("start"),et(e=>{var t;return(t=e.afterStart)==null?void 0:t.call(e)}),pr((e,t)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(t)),fe({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>Fd[e.getName()],ignoreLog:e=>e.getName()==="Debug",ignoreErrorLog:e=>e.getName()==="AudioProcessor"})],X.prototype,"startPlugin",1),v([dc("update"),zr((e,t)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(t)),fe({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>$d[e.getName()]})],X.prototype,"updatePlugin",1),v([dc("stop"),fr((e,t)=>{if(e.disableRandomCall)return null;let r=e.getGroup(t),s=e.getAlias();return r==="*"?new RegExp(`${s}.*`):s+r}),fe({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>Hd[e.getName()]})],X.prototype,"stopPlugin",1),v([au(...we.TRTC.enableAudioVolumeEvaluation)],X.prototype,"enableAudioVolumeEvaluation",1),v([fe()],X.prototype,"getVideoSnapshot",1),v([fe()],X.prototype,"_setCurrentSpeaker",1),v([pr(e=>`a${e.userId}`,()=>!0)],X.prototype,"_startRemoteAudio",1),v([Q(e=>function(t){return f(this,null,function*(){return t.userId==="*"?Promise.all([...this._room.remotePublishedUserMap.values()].map(r=>this._stopRemoteAudio(L(N({},t),{userId:r.userId})).catch(()=>{}))):e.call(this,t)})}),fr(e=>`a${e.userId}`)],X.prototype,"_stopRemoteAudio",1),v([fr("room")],X.prototype,"_exitRoom",1),v([fr("screen")],X.prototype,"_stopScreenShare",1),v([Ge(...we.TRTC.sendSEIMessage),eu({timesInSecond:30,maxSizeInSecond:8e3,getSize:(...e)=>e[0].byteLength})],X.prototype,"sendSEIMessage",1),v([Ge(we.TRTC.sendCustomMessage),eu({timesInSecond:30,maxSizeInSecond:8e3,getSize:e=>e.data.byteLength})],X.prototype,"sendCustomMessage",1),v([Ge(we.TRTC.create)],X,"_create",1);var Au=X,un=Au;var Ru=class{constructor(){d(this,"_set",new Set);E.on(A.LEAVE_SUCCESS,this.delete,this),E.on(A.SWITCH_ROOM_SUCCESS,this.handleSwitchRoomSuccess,this)}add({room:i,roomId:e}){if(i.scene==="rtc")return;let t=this.getKey(i.userId,e||i.roomId,i.sdkAppId,i.useStringRoomId);this._set.add(t)}delete({room:i,roomId:e}){if(i.scene==="rtc")return;let t=this.getKey(i.userId,i.roomId||e,i.sdkAppId,i.useStringRoomId);this._set.delete(t)}getKey(i,e,t,r){return`${t}_${e}_${i}_${r}`}isJoined({userId:i,roomId:e,sdkAppId:t,room:r}){return r.scene==="rtc"?!1:this._set.has(this.getKey(i,e,t,r.useStringRoomId))}handleSwitchRoomSuccess({room:i,currentRoomId:e,targetRoomId:t}){i.scene!=="rtc"&&(this._set.delete(this.getKey(i.userId,e,i.sdkAppId,i.useStringRoomId)),this._set.add(this.getKey(i.userId,t,i.sdkAppId,i.useStringRoomId)))}};function ZT(){return f(this,null,function*(){let o,i;try{let u=yield dt();o=u&&u.length}catch(u){}try{let u=yield Tt();i=u&&u.length}catch(u){}let e={microphone:o,camera:i},{isH264EncodeSupported:t,isVp8EncodeSupported:r,isH264DecodeSupported:s,isVp8DecodeSupported:n}=this.checkSystemResult.detail,a=ni.basis(),c={webRTC:a.isWebRTCSupported,getUserMedia:a.isGetUserMediaSupported,webSocket:a.isWebSocketsSupported,screenShare:a.isScreenShareSupported,webAudio:a.isWebAudioSupported,h264Encode:t,h264Decode:s,vp8Encode:r,vp8Decode:n},l={browser:a.browser,os:a.os,trtc:c,devices:e},h={isWebCodecSupported:a.isWebCodecSupported,isMediaSessionSupported:a.isMediaSessionSupported,isWebTransportSupported:a.isWebTransportSupported};re.uploadEvent({log:`trtcstats-${JSON.stringify(l)}`,userId:this.userId}),this._log.info(`TrtcStats-${JSON.stringify(l)}`),re.uploadEvent({log:`trtcadvancedstats-${JSON.stringify(h)}`,userId:this.userId})})}function gp(){return Q(o=>{let i=new Ru;return function(e,t,r){return f(this,null,function*(){let s=String(e.roomId||e.strRoomId);if(this.userId=e.userId,this.sdkAppId=e.sdkAppId,this.userSig=e.userSig,this._log.setSdkAppId(this.sdkAppId),this._log.setUserId(this.userId),this.scene=t,e.privateMapKey=e.privateMapKey||"",this.isJoined)throw new y({code:I.INVALID_OPERATION,message:P({key:x.INVALID_JOIN})});if(this.checkDestroy(),i.isJoined({userId:this.userId,roomId:s,sdkAppId:this.sdkAppId,room:this}))throw new y({code:I.INVALID_OPERATION,message:P({key:x.REPEAT_JOIN,data:this.userId})});i.add({room:this,roomId:s}),this.role=e.role===21?"audience":"anchor",this._log.info(`Join() => joining room: ${s} useStringRoomId: ${this.useStringRoomId} scene: ${this.scene} role: ${this.role}`),E.emit(A.JOIN_START,{room:this,roomId:s,params:e});let n=mt.getEnv();n||(n=Ii.QCLOUD,this.proxy_ws&&(this.proxy_ws.startsWith(Nn.OLD_CLOUD_LADDER)?n=Ii.OLD_CLOUD_LADDER:this.proxy_ws.startsWith(Nn.WEBRTC)&&(n=Ii.WEBRTC))),re.setConfig({env:n,sdkAppId:String(this.sdkAppId),userId:this.userId,roomId:s}),ni.checkSystemRequirementsInternal().then(a=>{this.checkSystemResult=a,ZT.call(this)});try{!this.proxy_ws&&!this.proxy_wt&&!this.scheduleResult.domains&&!mt.getEnv()&&(yield this.schedule(e,r));let a=yield o.call(this,e,t,r);return this.roomId=s,this._joinedTimestamp=mt.performanceNow(),E.emit(A.JOIN_SUCCESS,{room:this}),r===30&&!e.component&&re.uploadEvent({log:`stat-conv-${Number(Ut)}-${location.hostname}`,userId:this.userId}),a}catch(a){throw i.delete({room:this,roomId:s}),E.emit(A.JOIN_FAILED,{room:this,error:a}),a}})}})}var Tp=()=>Q(o=>function(...i){return f(this,null,function*(){E.emit(A.LEAVE_START,{room:this}),yield o.call(this,...i),E.emit(A.LEAVE_SUCCESS,{room:this,roomId:this.roomId})})});function Ep(){return Q(o=>function(...i){let e=o.apply(this,i);return i.forEach(t=>!t.isSubscribed&&t.subscribe(e)),e})}var Ip=$e(Ye());var Ne={SETUP_SUCCESS:"1",CONNECTION_STATE_CHANGED:"2",CONNECTED:"3",RECONNECT_FAILED:"4",SETUP_FAILED:"5",DISCONNECTED:"6"};var Jt={CLIENT_BANNED:9,CHANNEL_SETUP_RESULT:19,CHANNEL_RECONNECT_RESULT:514,JOIN_ROOM_RESULT:20,PEER_JOIN:4134,PEER_LEAVE:4135,STREAM_ADDED:16,STREAM_REMOVED:18,UPLINK_NETWORK_STATS:22,UPDATE_REMOTE_MUTE_STAT:23,PUBLISH_RESULT:4098,PUBLISH_STATE_CHANGE_RESULT:4112,UNPUBLISH_RESULT:4100,SUBSCRIBE_RESULT:4102,UNSUBSCRIBE_RESULT:4104,SUBSCRIBE_CHANGE_RESULT:4106,MUTE_RESULT:4108,UPDATE_OFFER_RESULT:4128,START_PUBLISH_TENCENT_CDN_RES:1286,STOP_PUBLISH_TENCENT_CDN_RES:1288,START_PUBLISH_GIVEN_CDN_RES:777,STOP_PUBLISH_GIVEN_CDN_RES:779,START_MIX_TRANSCODE_RES:781,STOP_MIX_TRANSCODE_RES:783,START_PUBLISH_CDN_STREAM_RES:8196,UPDATE_PUBLISH_CDN_STREAM_RES:8198,STOP_PUBLISH_CDN_STREAM_RES:8200,USER_LIST_RES:4137,SWITCH_ROLE_RES:4110,UPDATE_CONSTRAINT_CONFIG_RES:772,REBUILD_PEER_CONNECTION_RES:4150,SPC_PUBLISH_RESULT:4146,SPC_SUBSCRIBE_RESULT:4156,ABILITY_STATUS_REPORT_RESULT:4158,SERVER_FIRST_PACKAGE_RECEIVED:5e3,RECEIVE_CUSTOM_MSG:4140,SEND_SWITCH_ROOM_RES:4160,SEND_SWITCH_ROOM_SUBED_REQ:4161},Sp=[Jt.UPDATE_REMOTE_MUTE_STAT,Jt.UPLINK_NETWORK_STATS,Jt.USER_LIST_RES,Jt.MUTE_RESULT,Jt.SERVER_FIRST_PACKAGE_RECEIVED,Jt.RECEIVE_CUSTOM_MSG],F={CLIENT_BANNED:"client-banned",CHANNEL_SETUP_RESULT:"channel-setup-result",CHANNEL_RECONNECT_RESULT:"channel-reconnect-result",JOIN_ROOM_RESULT:"join-room-result",PEER_JOIN:"peer-join",PEER_LEAVE:"peer-leave",STREAM_ADDED:"stream-added",STREAM_REMOVED:"stream-removed",UPLINK_NETWORK_STATS:"uplink-network-stats",UPDATE_REMOTE_MUTE_STAT:"update-remote-mute-stat",PUBLISH_RESULT:"publish-result",PUBLISH_STATE_CHANGE_RESULT:"publish-state-change-result",UNPUBLISH_RESULT:"unpublish-result",SUBSCRIBE_RESULT:"subscribe-result",SUBSCRIBE_CHANGE_RESULT:"subscribe-change-result",UNSUBSCRIBE_RESULT:"unsubscribe-result",UPDATE_OFFER_RESULT:"update-offer-result",START_PUBLISH_TENCENT_CDN_RES:"start-publish-tencent-cdn-res",STOP_PUBLISH_TENCENT_CDN_RES:"stop-publish-tencent-cdn-res",START_PUBLISH_GIVEN_CDN_RES:"start-publish-given-cdn-res",STOP_PUBLISH_GIVEN_CDN_RES:"stop-publish-given-cdn-res",START_MIX_TRANSCODE_RES:"start-mix-transcode-res",STOP_MIX_TRANSCODE_RES:"stop-mix-transcode-res",START_PUBLISH_CDN_STREAM_RES:"start-publish-cdn-stream-res",UPDATE_PUBLISH_CDN_STREAM_RES:"update-publish-cdn-stream-res",STOP_PUBLISH_CDN_STREAM_RES:"stop-publish-cdn-stream-res",USER_LIST_RES:"user-list-res",SWITCH_ROLE_RES:"switch_role_res",MUTE_RESULT:"mute-result",UPDATE_CONSTRAINT_CONFIG_RES:"update-contraint-config-res",REBUILD_PEER_CONNECTION_RES:"rebuild-pc-res",SPC_PUBLISH_RESULT:"spc-publish-result",SPC_SUBSCRIBE_RESULT:"spc-subscribe-result",ABILITY_STATUS_REPORT_RESULT:"ability-status-report",SERVER_FIRST_PACKAGE_RECEIVED:"first-pkg-received",RECEIVE_CUSTOM_MSG:"receive-custom-msg",SEND_SWITCH_ROOM_RES:"send-switch-room-res",SEND_SWITCH_ROOM_SUBED_REQ:"send-switch-room-subed-res"},Y={PUBLISH_CHANGE:"publish_change",JOIN_ROOM:"join",LEAVE_ROOM:"leave",ON_QUALITY_REPORT:"quality_report",UPDATE_MUTE_STAT:"mute_uplink",PUBLISH:"publish",PUBLISH_STATE_CHANGE:"publish_state_change",UNPUBLISH:"unpublish",SUBSCRIBE:"subscribe",RECEIVE_DATA_USER_LIST:"receive_data_userlist",UNSUBSCRIBE:"unsubscribe",SUBSCRIBE_CHANGE:"subscribe_change",START_PUBLISH_TENCENT_CDN:"start_publishing",STOP_PUBLISH_TENCENT_CDN:"stop_publishing",START_PUBLISH_GIVEN_CDN:"start_push_user_cdn",STOP_PUBLISH_GIVEN_CDN:"stop_push_user_cdn",START_MIX_TRANSCODE:"start_mcu_mix",STOP_MIX_TRANSCODE:"stop_mcu_mix",START_PUBLISH_CDN_STREAM:"start_publish_cdn_stream",UPDATE_PUBLISH_CDN_STREAM:"update_publish_cdn_stream",STOP_PUBLISH_CDN_STREAM:"stop_publish_cdn_stream",GET_USER_LIST:"get_user_list",SWITCH_ROLE:"change_role",UPDATE_CONSTRAINT_CONFIG:"update_constraint_config",REBUILD_PEER_CONNECTION:"rebuild_pc",READY_TO_RECEIVE_DATA:"ready_to_receive",SPC_JOIN_ROOM:"join/v2",SPC_PUBLISH:"publish/v2",SPC_SUBSCRIBE:"subscribe/v3",ABILITY_STATUS_REPORT:"ability_status_report",RECONNECT_WS:"reconnect",SEND_CUSTOM_MSG:"channel_msg",SWITCH_ROOM:"switch_room"};var Ic=new Set;function Ap(o){let i=[...Ic.values()].find(e=>e.room.userId===o&&!e.room.isJoined);return i||null}var Xo=class extends Ip.default{constructor(e){var r,s,n;super();d(this,"room");d(this,"sdkAppId");d(this,"userId");d(this,"userSig");d(this,"url");d(this,"backupUrl");d(this,"destroyed",!1);d(this,"_socketInUse");d(this,"_socket");d(this,"_backupSocket");d(this,"_signalInfo",{tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0,bakRelayIps:[]});d(this,"_currentState","DISCONNECTED");d(this,"_isReconnecting",!1);d(this,"_seq",0);d(this,"_log");d(this,"_lastMessageTime",-1);d(this,"_connectStartTime",-1);d(this,"_stopConnectRetry");d(this,"bytesSent",0);d(this,"bytesReceived",0);d(this,"keepAlive",!1);d(this,"signalDomainWhenUnifiedProxy");d(this,"stopKeepAliveTimeout");d(this,"rtt",0);this.room=e.room,this.sdkAppId=e.sdkAppId,this.userId=e.userId,this.userSig=e.userSig,this.signalDomainWhenUnifiedProxy=e.signalDomainWhenUnifiedProxy;let t=((s=(r=this.room.scheduleResult)==null?void 0:r.config)==null?void 0:s.keepAliveClient)||0;(n=this.room.joinParams)!=null&&n.keepAlive&&!t&&(t=1),t-Ic.size>0&&this.room.enableSPC&&(this.keepAlive=!0,Ic.add(this)),this.url=e.url,this.backupUrl=e.backupUrl,this._seq=0,this._log=C.createLogger({id:"ws",userId:this.userId,sdkAppId:this.sdkAppId}),this.onmessage=this.onmessage.bind(this),this.onerror=this.onerror.bind(this),this.onclose=this.onclose.bind(this)}get race(){return this.room.enableSPC&&!this.room.proxy_ws}get urlParam(){let e=`?sdkAppId=${encodeURIComponent(this.sdkAppId)}&userId=${encodeURIComponent(this.userId)}&userSig=${encodeURIComponent(this.userSig)}&keepAlive=${encodeURIComponent(Number(this.keepAlive))}`;this.signalDomainWhenUnifiedProxy&&(e+=`&signalDomain=${encodeURIComponent(this.signalDomainWhenUnifiedProxy)}`);let t=new URLSearchParams(location.search).get("clientIp");return t&&(e+=`&clientIp=${t}`),this.race?`${e}&race=1`:e}get _urlWithParam(){return`${this.url}${this.race?"/v2/ws":""}${this.urlParam}`}get _backupUrlWithParam(){return`${this.backupUrl}${this.race?"/v2/ws":""}${this.urlParam}`}get isConnected(){return this._currentState==="CONNECTED"}get isConnecting(){return this._currentState==="CONNECTING"}get isOnline(){return this._currentState==="CONNECTED"&&Date.now()-this._lastMessageTime<12*1e3}connect(){return f(this,arguments,function*(e=10*1e3){if(this.isConnected)return Promise.resolve();this._log.info(`connect to [${this.url}, ${this.backupUrl}] ${this.race?"race":""}${e?` timeout: ${e}`:""} keepAlive: ${Number(this.keepAlive)}`),this.emitConnectionStateChanged("CONNECTING"),this._connectStartTime=V();let t=[this.connectWS({url:this._urlWithParam,isMain:!0,timeout:e})];this.race&&this._backupUrlWithParam!==this._urlWithParam&&t.push(this.connectWS({url:this._backupUrlWithParam,isMain:!1,timeout:e})),this._socketInUse=yield Nr(t),this.unbindAndCloseSocket(this._socketInUse===this._socket?p.BACKUP:p.MAIN),this.emitConnectionStateChanged("CONNECTED")})}connectWS({url:e,timeout:t,isMain:r}){let s=new WebSocket(e);this.bindSocket(s),r?this._socket=s:this._backupSocket=s;let n=-1;return new Promise((a,c)=>{s.onclose=c,s.onerror=c,s.onopen=()=>a(s),t&&(n=setTimeout(()=>{this.unbindAndCloseSocket(r?p.MAIN:p.BACKUP),c(new y({code:I.SIGNAL_CHANNEL_SETUP_FAILED,message:"ws connect timeout"}))},t))}).finally(()=>{s.onclose=null,s.onerror=null,s.onopen=null,clearTimeout(n)})}bindSocket(e){e.addEventListener("close",this.onclose),e.addEventListener("error",this.onerror),e.addEventListener("message",this.onmessage)}unbindSocket(e){e.removeEventListener("close",this.onclose),e.removeEventListener("error",this.onerror),e.removeEventListener("message",this.onmessage)}unbindAndCloseSocket(e){if(e===p.MAIN){if(this._socket){this.unbindSocket(this._socket);try{this._socket.close(1e3)}catch(t){}this._socket=null}}else if(this._backupSocket){this.unbindSocket(this._backupSocket);try{this._backupSocket.close(1e3)}catch(t){}this._backupSocket=null}}onclose(e){e.target===this._socketInUse&&(this._log.warn(`${e.target===this._socket?"main":"backup"} is closed code:${e.code} ${e.reason}`),this.emitConnectionStateChanged("DISCONNECTED"),(!e.wasClean||e.code!==1e3)&&this.startReconnection(),this.room.isJoining&&this.emit(Ne.SETUP_FAILED,new y({code:I.SIGNAL_CHANNEL_SETUP_FAILED,message:"websocket onclose"})))}onerror(e){this._log.error(`${e.target===this._socket?"main":"backup"} error observed`),this.emitConnectionStateChanged("DISCONNECTED"),e.target===this._socketInUse&&(this.unbindAndCloseSocket(p.MAIN),this.unbindAndCloseSocket(p.BACKUP),this._socketInUse=null,this.reconnect()),this.room.isJoining&&this.emit(Ne.SETUP_FAILED,new y({code:I.SIGNAL_CHANNEL_SETUP_FAILED,message:"websocket onerror"}))}onmessage(e){if(!this.isConnected)return;this._lastMessageTime=Date.now(),this.bytesReceived+=hs(e.data);let t=JSON.parse(e.data),{cmd:r,data:s}=t,n=Object.values(Jt),c=Object.keys(Jt)[n.indexOf(r)],l=F[c]||r;switch(Sp.includes(r)||(this._log.debug(`received ${r} msg: ${e.data}`),l&&this._log.info(`Received event: [ ${l} ]`)),r){case Jt.CHANNEL_SETUP_RESULT:{if(t.code===0)this._signalInfo.clientIp=s.clientIp,this._signalInfo.signalIp=s.signalInnerIp,s.svrTime&&Zu(s.svrTime),this._log.info(`ChannelSetup Success ${V()-this._connectStartTime}`),b.addSuccessEvent({key:521701,cost:V()-this._connectStartTime}),this._connectStartTime=-1,this.emit(Ne.SETUP_SUCCESS,{signalInfo:this._signalInfo});else{let h=new y({code:I.SIGNAL_CHANNEL_SETUP_FAILED,extraCode:t.code,message:P({key:x.SIGNAL_CHANNEL_SETUP_FAILED,data:{errorCode:t.code,errorMsg:t.message}})});this._log.error(`${t.code}, ${t.message}`),this.close(),b.addFailedEvent({key:521701,error:h}),this.emit(Ne.SETUP_FAILED,h)}break}case Jt.JOIN_ROOM_RESULT:{t.code===0&&(this._signalInfo.relayIp=s.relayOuterIp,this._signalInfo.relayInnerIp=s.relayInnerIp,this._signalInfo.bakRelayIps=s.bakRelayIps,this._signalInfo.relayPort=s.relayPort,this._signalInfo.tinyId=t.tinyId,this._signalInfo.endReportExtend=s.endReportExtend,this._log.info(`signalIp:${this._signalInfo.signalIp} clientIp:${this._signalInfo.clientIp} relayIp: ${this._signalInfo.relayIp}`)),this.emit(l,{data:t});break}default:this.emit(String(l),{data:t});break}}reGetSignalChannelUrl(){return f(this,null,function*(){try{if(!this.room.joinParams)return;Wt(!0),yield this.room.schedule(this.room.joinParams);let{mainUrl:e,backupUrl:t}=this.room.getSignalChannelUrl();this.url=e,this.backupUrl=t}catch(e){}})}startReconnection(){if(!this._socketInUse)return;this._socketInUse.onclose=null,this._socketInUse.close(4011);let e=this._socketInUse===this._socket;this.unbindAndCloseSocket(e?p.MAIN:p.BACKUP),this._socketInUse=null,this.emitConnectionStateChanged("DISCONNECTED"),this.reconnect()}reconnect(){return f(this,null,function*(){if(!this._isReconnecting){if(!this.room.isJoined&&this.keepAlive){this.close();return}this._isReconnecting=!0;try{this._log.warn("reconnect"),yield this.connect();let{roomId:e,useStringRoomId:t}=this.room,{relayIp:r,relayInnerIp:s,relayPort:n}=this._signalInfo,{data:a}=yield this.sendWaitForResponse({command:Y.RECONNECT_WS,data:{roomId:e,useStringRoomId:t,relayInnerIp:s,relayOuterIp:r,relayPort:n},responseCommand:F.CHANNEL_RECONNECT_RESULT});a.code===0?(this._log.warn("reconnect success"),this.stopReconnection(),b.addSuccessEvent({key:521702,cost:V()-this._connectStartTime}),this._connectStartTime=-1,this.room.syncUserList(),this.room.checkConnectionsToReconnect()):(b.addFailedEvent({key:521702,error:a.code}),this._log.warn(`reconnect failed, ${a.code} ${a.message}`),this.room.reJoin())}catch(e){this._log.error(e),this.room.reJoin()}}})}send(e,t={}){if(this.isConnected&&!this.room.isLeft){let r={cmd:e,data:t,userId:this.userId,tinyId:this._signalInfo.tinyId,seq:++this._seq},s=JSON.stringify(r);return this._socketInUse.send(s),this.bytesSent+=hs(s),r.seq}}sendWaitForResponse({command:e,data:t,timeout:r=5e3,responseCommand:s,commandDesc:n,enableLog:a=!0,addReceiveTime:c=!1}){return new Promise((l,h)=>{let u=setTimeout(()=>{this.off(s,g);let _=new y({code:I.API_CALL_TIMEOUT,message:P({key:x.API_CALL_TIMEOUT,data:{commandDesc:n,command:e}})});a&&this._log.warn(_),h(_)},r),m=Date.now(),g=_=>{_.data.seq===D&&(clearTimeout(u),this.off(s,g),c&&(_.data.receiveTime=Date.now()),l(_))};this.on(s,g);let D=this.send(e,t)})}sendWaitForResponseWithRetry(e){let{commandDesc:t,command:r,retries:s=0,retryTimeout:n=0}=e;return Yt({retryFunction:this.sendWaitForResponse,onError:({retry:a})=>{this.isOnline?a():(this._log.warn(`retry ${r} when connected`),this.once(Ne.CONNECTED,a))},onRetrying:a=>{this._log.warn(`${t||r} timeout observed, retrying [${a}/${s}]`)},settings:{retries:s,timeout:n},context:this})(e)}getCurrentState(){return this._currentState}getSignalInfo(){return this._signalInfo}stopReconnection(){this._isReconnecting=!1,this._stopConnectRetry&&this._stopConnectRetry()}close(){this._log.info("closed"),clearTimeout(this.stopKeepAliveTimeout),Ic.delete(this),this.stopReconnection(),this._signalInfo={tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,bakRelayIps:[],endReportExtend:void 0},this._socketInUse=null,this.bytesSent=0,this.bytesReceived=0,this._stopConnectRetry&&this._stopConnectRetry(),this.unbindAndCloseSocket(p.MAIN),this.unbindAndCloseSocket(p.BACKUP),this.emitConnectionStateChanged("DISCONNECTED")}destroy(){this.close(),this.destroyed=!0}getBackupRelayIpPair(){var t;let e=(t=this._signalInfo.bakRelayIps)==null?void 0:t.shift();return e&&(e.relayPort=e.relayPort||this._signalInfo.relayPort),e}clearBakRelayIps(){this._signalInfo.bakRelayIps=[]}stopKeepAliveIn(e=3600){if(this.keepAlive){this._log.info(`stopKeepAlive in ${e}s`),this.stopKeepAliveTimeout=setTimeout(()=>{this.keepAlive=!1,this._log.info(`close due to not used ${e}s`),this.close(),this.off(F.JOIN_ROOM_RESULT,t)},e*1e3);let t=r=>{r.data.code===0&&(this._log.info("stopKeepAlive clear timeout"),clearTimeout(this.stopKeepAliveTimeout),this.off(F.JOIN_ROOM_RESULT,t))};this.on(F.JOIN_ROOM_RESULT,t)}}emitConnectionStateChanged(e){e!==this._currentState&&(this._log.info(`${this._currentState} -> ${e}`),this.emit(Ne.CONNECTION_STATE_CHANGED,{prevState:this._currentState,state:e}),this._currentState=e,e==="CONNECTED"?this.emit(Ne.CONNECTED):e==="DISCONNECTED"&&this.emit(Ne.DISCONNECTED))}};v([ft({settings:{retries:1/0,timeout:2e3},onError(e,t){!this.room.isDestroyed&&!this.destroyed&&t()},onRetrying(e,t){this._log.warn(`retrying to connect ${e}`),e>=3&&e%3===0&&this.reGetSignalChannelUrl(),t&&(this._stopConnectRetry=t,(this.room.isDestroyed||this.destroyed)&&t())}})],Xo.prototype,"connect",1);var Rp=$e(Ye());var Cu=0,yu=!1,Ac=new Set,eE=o=>Cu>2&&!yu&&Ac.size===0&&o,bu=!1,rt=class{constructor(i){d(this,"userId");d(this,"tinyId");d(this,"_sdpSemantics");d(this,"_isUplink");d(this,"_room");d(this,"_log");d(this,"_signalChannel");d(this,"_isErrorObserved",!1);d(this,"_waitForPeerConnectionConnectedPromise");d(this,"_waitForPeerConnectionConnectedPromiseReject",null);d(this,"_peerConnection",null);d(this,"_emitter",new Rp.default);d(this,"_currentState","DISCONNECTED");d(this,"_isReconnecting",!1);d(this,"_reconnectionCount",0);d(this,"_reconnectionTimer",-1);d(this,"_isFirstConnection",!0);d(this,"_prevTime",-1);d(this,"_localAddress");d(this,"_remoteAddress");this.userId=i.userId,this.tinyId=i.tinyId,this._room=i.room,this._sdpSemantics=i.room.sdpSemantics,this._isUplink=i.isUplink,this._log=C.createLogger({id:"n-mpc",userId:this._room.userId,remoteUserId:this.userId,sdkAppId:this._room.sdkAppId,isLocal:this._isUplink}),this._signalChannel=i.signalChannel}beforeConnect(){this._prevTime<0&&(this._prevTime=V())}afterConnect(){try{this._isFirstConnection?(this._isFirstConnection=!1,b.addSuccessEvent({key:521705,cost:Math.min(V()-this._prevTime,30*1e3)})):this._isReconnecting&&b.addSuccessEvent({key:521706,cost:V()-this._prevTime}),this._prevTime=-1}catch(i){throw this._isFirstConnection?(this._isFirstConnection=!1,b.addFailedEvent({key:521705,error:i})):this._isReconnecting&&this._reconnectionCount>=3&&b.addFailedEvent({key:521706,error:i}),i}}initialize(){let i={iceServers:this._room.getIceServers(),iceTransportPolicy:this._room.getIceTransportPolicy(),sdpSemantics:this._sdpSemantics,bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",tcpCandidatePolicy:"disable",IceTransportsType:"nohost"};this._peerConnection=new RTCPeerConnection(i),this._peerConnection.onconnectionstatechange=this.onConnectionStateChange.bind(this)}close(i){this._log.info("close connection"),this._emitter.emit("closed",i),this._isReconnecting&&this.stopReconnection(),this.closePeerConnection(),Ac.delete(this)}closePeerConnection(i=!1){this._peerConnection&&(this._log.info("close pc"),this._peerConnection.onconnectionstatechange=null,this._peerConnection.close(),this._peerConnection=null,i&&this.emitConnectionStateChangedEvent("DISCONNECTED")),this._waitForPeerConnectionConnectedPromiseReject&&this._waitForPeerConnectionConnectedPromiseReject(new y({code:I.API_CALL_ABORTED,message:"connection closed"}))}getDTLSTransportState(){if(!this._peerConnection)return Mt;let i=null;if(this._isUplink){if(!dr()||this._peerConnection.getSenders().length===0)return Mt;i=this._peerConnection.getSenders()[0].transport}else{if(!wr()||this._peerConnection.getReceivers().length===0)return Mt;i=this._peerConnection.getReceivers()[0].transport}return i?i.state:Mt}onConnectionStateChange(i){let e=this._peerConnection.iceConnectionState,t=this.getDTLSTransportState();if(this._log.info(`connectionState: ${i.target.connectionState}, ICE: ${e}, DTLS: ${t}`),i.target.connectionState===ge.CONNECTING&&this.emitConnectionStateChangedEvent("CONNECTING"),i.target.connectionState===ge.FAILED||i.target.connectionState===ge.CLOSED){let r=`connection ${i.target.connectionState}. ICE Transport state: ${e}, DTLS Transport state: ${t}`,s=new y({message:r,code:I.ICE_TRANSPORT_ERROR});this.emitConnectionStateChangedEvent("DISCONNECTED"),this.startReconnection(),this._isErrorObserved||this._emitter.emit("error",s)}(i.target.connectionState===ge.CONNECTED||i.target.connectionState===ge.COMPLETED)&&(this.logSelectedCandidate(),re.logSuccessEvent({userId:this._room.userId,eventType:ot.ICE_CONNECTION_STATE}),this.emitConnectionStateChangedEvent("CONNECTED"))}emitConnectionStateChangedEvent(i){return i===this._currentState?!1:(i==="CONNECTED"?(Cu=0,yu=!1,bu=!0,Ac.add(this)):Ac.delete(this),E.emit(A.PEER_CONNECTION_STATE_CHANGED,{room:this._room,prevState:this._currentState,state:i,remoteUserId:this._isUplink?void 0:this.userId}),this._emitter.emit("connection-state-changed",{prevState:this._currentState,state:i}),this._currentState=i,!0)}getPeerConnection(){return this._peerConnection}getRoom(){return this._room}getUserId(){return this.userId}getTinyId(){return this.tinyId}logSelectedCandidate(){return f(this,null,function*(){if(!this._peerConnection)return;let i=yield this._peerConnection.getStats();for(let[,e]of i)if(cr(e)){let t=i.get(e.localCandidateId),r=i.get(e.remoteCandidateId);t&&(this._log.info(`local candidate: ${t.candidateType} ${t.protocol}:${t.ip||t.address}:${t.port} ${t.networkType||""} ${t.candidateType==="relay"?`relayProtocol:${t.relayProtocol}`:""}`),this._localAddress=`${t.ip||t.address}:${t.port}`),r&&(this._log.info(`remote candidate: ${r.candidateType} ${r.protocol}:${r.ip||r.address}:${r.port}`),this._remoteAddress=`${r.protocol}:${r.ip||r.address}`);break}})}getCurrentState(){return this._currentState}waitForPeerConnectionConnected(){return this._waitForPeerConnectionConnectedPromise?this._waitForPeerConnectionConnectedPromise:(this._waitForPeerConnectionConnectedPromise=new Promise((i,e)=>{if(this._currentState==="CONNECTED")return i();this._waitForPeerConnectionConnectedPromiseReject=e;let t=a=>{a.state==="CONNECTED"&&(clearTimeout(n),s(),i())},r=({room:a})=>{a===this._room&&(clearTimeout(n),s(),e(new y({code:I.API_CALL_ABORTED,message:P({key:x.CONNECTION_ABORTED,data:"leave room"})})))},s=()=>{E.off(A.LEAVE_SUCCESS,r,this),this._emitter.off("connection-state-changed",t,this)},n=setTimeout(()=>{s();let a=new y({code:I.API_CALL_TIMEOUT,message:"connection timeout"});Cu+=1,eE(this._signalChannel.isConnected)&&(this._log.warn("firewall restriction"),yu=!0,this._emitter.emit("firewall-restriction")),e(a)},cs);E.on(A.LEAVE_SUCCESS,r,this),this._emitter.on("connection-state-changed",t,this)}),this._waitForPeerConnectionConnectedPromise=this._waitForPeerConnectionConnectedPromise.finally(()=>{this._waitForPeerConnectionConnectedPromise=null,this._waitForPeerConnectionConnectedPromiseReject=null}),this._waitForPeerConnectionConnectedPromise)}getReconnectionCount(){return this._reconnectionCount}startReconnection(){this._isReconnecting=!0,this.reconnect()}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}stopReconnection(){this._log.info("stop reconnection"),this._isReconnecting=!1,this._reconnectionCount=0,this.clearReconnectionTimer(),this._signalChannel.off(Ne.CONNECTED,this.reconnect,this)}beforeReconnect(){if(this._reconnectionTimer!==-1)return this._log.warn("reconnect() is reconnecting, ignore"),-1;if(this._reconnectionCount>=Ai()){this._log.warn(`SDK has tried reconnect for ${this._reconnectionCount} times, but all failed, please check your network`),this.stopReconnection();let i=new y({code:this._isUplink?I.UPLINK_RECONNECTION_FAILED:I.DOWNLINK_RECONNECTION_FAILED,message:P({key:this._isUplink?x.UPLINK_RECONNECTION_FAILED:x.DOWNLINK_RECONNECTION_FAILED})});return this.emitConnectionStateChangedEvent("DISCONNECTED"),this._emitter.emit("error",i),-1}return this._signalChannel.isConnected?(this._reconnectionCount+=1,this._log.warn(`reconnect() trying [${this._reconnectionCount}]`),1):(this._log.warn("reconnect() signal channel is not connected, suspend reconnection until signal is connected"),this._signalChannel.once(Ne.CONNECTED,this.reconnect,this),-1)}on(i,e,t){this._emitter.on(i,e,t)}off(i,e,t){this._emitter.off(i,e,t)}getIsReconnecting(){return this._isReconnecting}get isH264(){var i,e;return!!((e=(i=this._peerConnection)==null?void 0:i.remoteDescription)!=null&&e.sdp.includes("H264"))}setOffer(i){var e;return(e=this._peerConnection)==null?void 0:e.setLocalDescription(i)}setAnswer(i){var e;return(e=this._peerConnection)==null?void 0:e.setRemoteDescription(i)}};v([lt(521712,!1)],rt.prototype,"setOffer",1),v([lt(521713,!1)],rt.prototype,"setAnswer",1);var Ou=$e(Du());var ye=function(o){return Ou.default.parse(o)},vt=function(o){return Ou.default.write(o)},Mp=function(o){let i=ye(o);return i.media.forEach(e=>{e.type===p.AUDIO&&e.fmtp.forEach(t=>{t.config+=";sprop-stereo=1;stereo=1"})}),vt(i)};function kp(o){let i=ye(o);return i.media.forEach(e=>{var t,r;if(e.type===p.VIDEO){let s=new Set;e.rtp.forEach(({payload:a,codec:c})=>c==="H264"&&s.add(a)),e.fmtp.forEach(({payload:a,config:c})=>{let l=c.match(/apt=(\d+)/);l&&l[1]&&s.has(Number(l[1]))&&s.add(a)});let n=({payload:a})=>!s.has(a);e.rtp=e.rtp.filter(n),e.rtcpFb=(t=e.rtcpFb)==null?void 0:t.filter(n),e.fmtp=e.fmtp.filter(n),e.payloads=(r=e.payloads)==null?void 0:r.split(" ").filter(a=>!s.has(Number(a))).join(" ")}}),vt(i)}function Rc(o){return Object.keys(o).filter(i=>o[i])}var Qo=class Qo extends rt{constructor(e){super(L(N({},e),{isUplink:!1}));d(this,"_flag",0);d(this,"isRobot",!1);d(this,"role","anchor");d(this,"remoteAudioTrack");d(this,"remoteVideoTrack");d(this,"remoteAuxiliaryTrack");d(this,"ssrc",{audio:0,video:0,auxiliary:0});d(this,"_isSDPExchanging",!1);this.flag=e.flag,this.isRobot=e.isRobot||!1,this.remoteAudioTrack=e.remoteAudioTrack||new Gt(this._room,this),this.remoteVideoTrack=e.remoteVideoTrack||new fi(this._room,this),this.remoteAuxiliaryTrack=e.remoteAuxiliaryTrack||new $o(this._room,this)}get videoCodec(){var t,r;let e=(r=(t=this._peerConnection)==null?void 0:t.remoteDescription)==null?void 0:r.sdp;return e?e.includes("H264")?"h264":"vp8":"h264"}get subscribeState(){let e={audio:!1,video:!1,auxiliary:!1,smallVideo:!1};return this.remoteVideoTrack.isSubscribed&&(this.remoteVideoTrack.mediaType&8?e.smallVideo=!0:e.video=!0),this.remoteAudioTrack.isSubscribed&&(e.audio=!0),this.remoteAuxiliaryTrack.isSubscribed&&(e.auxiliary=!0),e}get muteState(){return bi(this.flag,this.userId)}get flag(){return this._flag}set flag(e){var t,r,s;e!==this._flag&&(this._flag=e,(t=this.remoteAudioTrack)==null||t.onFlagChanged(),(r=this.remoteVideoTrack)==null||r.onFlagChanged(),(s=this.remoteAuxiliaryTrack)==null||s.onFlagChanged())}get hasMainStream(){return this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall}get hasAuxStream(){return this.muteState.hasAuxiliary}get isMainStreamSubscribed(){return(this.subscribeState.audio||this.subscribeState.video||this.subscribeState.smallVideo)&&(this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall)}get isAuxStreamSubscribed(){return this.subscribeState.auxiliary&&this.muteState.hasAuxiliary}get isSmallStreamSubscribed(){return this.subscribeState.smallVideo&&this.muteState.hasSmall}get isBigStreamSubscribed(){return this.subscribeState.video&&this.muteState.hasVideo}isStreamUnpublished(e){return e===p.MAIN?!this.muteState.hasAudio&&!this.muteState.hasVideo:!this.muteState.hasAuxiliary}initialize(){super.initialize(),this.installEvents(),this._peerConnection.ontrack=this.onTrack.bind(this)}close(e){super.close(e),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.remoteAudioTrack.close(),this.remoteVideoTrack.close(),this.remoteAuxiliaryTrack.close(),this.uninstallEvents()}installEvents(){}uninstallEvents(){this._emitter.removeAllListeners()}emitConnectionStateChangedEvent(e){var s,n;let t=this._currentState,r=super.emitConnectionStateChangedEvent(e);return r&&t!==e&&((s=this.remoteVideoTrack)==null||s.emit("connection-state-changed",{prevState:t,state:e}),(n=this.remoteAuxiliaryTrack)==null||n.emit("connection-state-changed",{prevState:t,state:e})),r}onTrack(e){let t=e.streams[0],{track:r}=e,s=t.id===as?p.MAIN:p.AUXILIARY;this._log.debug(`ontrack ${s} ${r.kind}`);let n=p.AUDIO;r.kind===p.VIDEO&&(n=s===p.MAIN?p.VIDEO:p.AUXILIARY);let a=this.remoteAudioTrack;n===p.VIDEO?a=this.remoteVideoTrack:n===p.AUXILIARY&&(a=this.remoteAuxiliaryTrack),a.setInputMediaStreamTrack(r)}addRRTRLine(e){let t=e.split(`\r
|
|
62
|
-
`),r=new Map;t.forEach((n,a)=>{/^a=rtcp-fb:/.test(n)&&t[a+1]&&!/^a=rtcp-fb:/.test(t[a+1])&&r.set(a+1,`${n.match(/^a=rtcp-fb:\d+/)[0]} rrtr`)});let s=[...r];for(let n=0;n<s.length;n++){let[a,c]=s[n];t.splice(a+n,0,c)}return t.join(`\r
|
|
63
|
-
`)}addSPSDescription(e){let t=ye(e);return t.media.forEach(r=>{r.type===p.VIDEO&&r.fmtp.forEach(s=>{s.config+=";sps-pps-idr-in-keyframe=1"})}),vt(t)}removeSDESDescription(e){let t=["urn:ietf:params:rtp-hdrext:sdes:mid","urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id","urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id"],r=ye(e);return r.media.forEach(s=>{s.ext&&(s.ext=s.ext.filter(n=>!t.includes(n.uri)))}),vt(r)}isSubscriptionStateNotChanged(e){return JSON.stringify(e)===JSON.stringify(this.subscribeState)}subscribe(e,t){return f(this,null,function*(){var r,s;try{if((((r=this._peerConnection)==null?void 0:r.connectionState)===ge.NEW||((s=this._peerConnection)==null?void 0:s.connectionState)===ge.CONNECTING)&&(yield this.waitForPeerConnectionConnected()),this.isSubscriptionStateNotChanged(e)){this._peerConnection||(this.initialize(),yield this.connect(e));return}if(this._log.info(`subscribe ${t} ${JSON.stringify(e)}`),this._peerConnection||this._isSDPExchanging){let n="subscribe_change";Object.values(e).find(a=>a===!0)||(n="unsubscribe"),yield this.sendSubscription(n,e)}else this.initialize(),yield this.connect(e)}catch(n){throw this._room.isJoined&&this.isStreamUnpublished(t)?(this._log.warn(`${n.message} ${JSON.stringify(this.muteState)}`),new y({code:I.REMOTE_STREAM_NOT_EXIST,message:`remote user ${this.userId} unpublished stream`})):n}})}unsubscribe(r){return f(this,arguments,function*({remoteTracks:e,streamType:t}){if(this._currentState==="CONNECTED"&&(t==="main"&&!this.isMainStreamSubscribed||t==="auxiliary"&&!this.isAuxStreamSubscribed)){this._log.info(`${t} stream already unsubscribed`);return}let s=N({},this.subscribeState);e.forEach(a=>{switch(a.mediaType){case 1:s.audio=!1;break;case 4:s.video=!1;break;case 8:s.smallVideo=!1;break;case 2:s.auxiliary=!1;break;default:break}});let n="subscribe_change";Object.values(s).find(a=>a===!0)||(n="unsubscribe"),this._log.info(`${n==="unsubscribe"?n:"subscribe"} ${t} [${Rc(s)}]`),yield this.sendSubscription(n,s),n==="unsubscribe"&&(this.closePeerConnection(),this.emitConnectionStateChangedEvent("DISCONNECTED"))})}sendSubscription(e,t=this.subscribeState){let r={srcTinyId:this.tinyId,srcUserId:this.userId},s=Y.UNSUBSCRIBE,n=F.UNSUBSCRIBE_RESULT;return e==="subscribe_change"&&(r={audio:t.audio,bigVideo:t.video,auxVideo:t.auxiliary,smallVideo:t.smallVideo,srcTinyId:this.tinyId},s=Y.SUBSCRIBE_CHANGE,n=F.SUBSCRIBE_CHANGE_RESULT),this._signalChannel.sendWaitForResponse({command:s,data:r,responseCommand:n,timeout:1e4}).then(({data:a})=>{if(a.code!==0){let c=new y({code:a.code,message:P({key:x.ERROR_MESSAGE,data:{type:e,message:a.message}})});throw this._log.error(c),c}})}connect(){return f(this,arguments,function*(e=this.subscribeState){try{yield this.exchangeSDP(e),yield this.waitForPeerConnectionConnected()}catch(t){throw this.closePeerConnection(!0),t}})}exchangeSDP(e){return f(this,null,function*(){try{this._isSDPExchanging=!0,yield this.createOffer(),this._log.info("createOffer success, sending offer");let{type:t,sdp:r}=this._peerConnection.localDescription,s={type:t,sdp:r,srcUserId:this.userId,srcTinyId:this.tinyId,audio:e.audio,bigVideo:e.video,auxVideo:e.auxiliary,smallVideo:e.smallVideo},n=yield this._signalChannel.sendWaitForResponse({command:Y.SUBSCRIBE,commandDesc:"exchange sdp",data:s,responseCommand:F.SUBSCRIBE_RESULT,timeout:Yc});if(!this._peerConnection){let a=new y({code:I.INVALID_OPERATION,message:P({key:x.CONNECTION_CLOSED})});throw this._log.warn(a),a}yield this.onSubscribeResult(n),this._isSDPExchanging=!1}catch(t){throw this._isSDPExchanging=!1,t}})}createOffer(){return f(this,null,function*(){let e={voiceActivityDetection:!1};ct()&&this._sdpSemantics===rr?(this._peerConnection.addTransceiver(p.AUDIO,{direction:te.RECVONLY}),this._peerConnection.addTransceiver(p.VIDEO,{direction:te.RECVONLY}),this._peerConnection.addTransceiver(p.VIDEO,{direction:te.RECVONLY})):(e.offerToReceiveAudio=!0,e.offerToReceiveVideo=!0);let t=yield this._peerConnection.createOffer(e);if(t.sdp){let{isH264DecodeSupported:r}=yield ma();r||(this._log.warn("remove h264 desc from sdp"),t.sdp=kp(t.sdp)),t.sdp=this.addRRTRLine(t.sdp),t.sdp=this.addSPSDescription(t.sdp),t.sdp=Mp(t.sdp),this._sdpSemantics===rr&&(t.sdp=this.removeSDESDescription(t.sdp))}yield this.setOffer(t)})}onSubscribeResult(e){return f(this,null,function*(){let{code:t,message:r=""}=e&&e.data||{},{type:s,sdp:n}=e&&e.data&&e.data.data||{};if(t===Sr)throw new y({code:I.NOT_SUPPORTED_H264,message:P({key:x.NOT_SUPPORTED_H264DECODE})});try{if(t!==0)throw new y({code:t,message:P({key:x.EXCHANGE_SDP_FAILED,data:{errMsg:r}})});this._log.debug(`accept remote answer: ${n}`),yield this.setAnswer({type:s,sdp:n}),this.updateSSRC(n)}catch(a){throw this._log.error(a),a}})}updateSSRC(e){try{ye(e).media.forEach(r=>{if(r.ssrcs)if(r.type===p.AUDIO){let s=r.ssrcs.find(n=>{var a;return(a=n.value)==null?void 0:a.includes(as)});s&&(this.ssrc.audio=Number(s.id))}else{let s=r.ssrcs.find(a=>{var c;return(c=a.value)==null?void 0:c.includes(as)}),n=r.ssrcs.find(a=>{var c;return(c=a.value)==null?void 0:c.includes(jc)});s&&(this.ssrc.video=Number(s.id)),n&&(this.ssrc.auxiliary=Number(n.id))}})}catch(t){}}getMainStreamVideoTrackId(){return this.remoteVideoTrack&&this.remoteVideoTrack.mediaTrack?this.remoteVideoTrack.mediaTrack.id:""}getAuxStreamVideoTrackId(){return this.remoteAuxiliaryTrack&&this.remoteAuxiliaryTrack.mediaTrack?this.remoteAuxiliaryTrack.mediaTrack.id:""}reconnect(){return f(this,null,function*(){if(!(He(Qo.prototype,this,"beforeReconnect").call(this)<0))try{this.closePeerConnection(),this.initialize(),yield this.connect(),this.stopReconnection(),this._log.warn("reconnect() success")}catch(t){let r=xt(this._reconnectionCount);this._log.warn(`reconnect() timeout, try again after ${r/1e3}s`),this._reconnectionTimer=setTimeout(()=>{this.clearReconnectionTimer(),this.reconnect()},r)}})}getIsReconnecting(){return this._isReconnecting}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}getCurrentState(){return this._currentState}setDelay({audioDelay:e,videoDelay:t}){this.remoteAudioTrack.stat.end2EndDelay=e,this.remoteVideoTrack.stat.end2EndDelay=t}get audioReceiver(){var e;return((e=this._peerConnection)==null?void 0:e.getReceivers()[0])||null}};v([Q(e=>function(...t){return new Promise((r,s)=>{let n=a=>{this._emitter.off("closed",n),s(new y({code:I.API_CALL_ABORTED,message:P({key:x.CONNECTION_ABORTED,data:a})}))};this._emitter.on("closed",n),e.apply(this,t).then(r,s).finally(()=>{this._emitter.off("closed",n)})})})],Qo.prototype,"subscribe",1),v([lt(521717,!1)],Qo.prototype,"unsubscribe",1),v([et(rt.prototype.afterConnect),Oa(rt.prototype.beforeConnect)],Qo.prototype,"connect",1);var Mu=Qo,ku=Mu;var Pp={voiceActivityDetection:!1},Yo=class Yo extends rt{constructor(e){super(L(N({},e),{isUplink:!0}));d(this,"localMainAudioTrack",null);d(this,"localMainVideoTrack",null);d(this,"localAuxAudioTrack",null);d(this,"localAuxVideoTrack",null);d(this,"ssrc",{audio:0,video:0,small:0,auxiliary:0});d(this,"_isPublishingAux",!1);d(this,"_publishingLocalAudioTrack");d(this,"_publishingLocalVideoTrack");d(this,"_mediaSettings",{videoCodec:"",videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioCodec:"opus",audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0,auxVideoWidth:0,auxVideoHeight:0,auxVideoFps:0,auxVideoBps:0});d(this,"flag",0)}get videoCodec(){return this._mediaSettings.videoCodec.toLowerCase()||"h264"}get isMainStreamPublished(){return!!(this.localMainAudioTrack||this.localMainVideoTrack)}get isAuxStreamPublished(){return!!(this.localAuxVideoTrack||this.localAuxAudioTrack)}get publishState(){var t,r,s,n;let e={audio:!1,bigVideo:!1,smallVideo:!1,auxVideo:!1};if(this._peerConnection){let a=this._peerConnection.getSenders();a&&(oi()?(e.audio=!!((t=a[0])!=null&&t.track),e.bigVideo=!!((r=a[1])!=null&&r.track),e.smallVideo=!!((s=a[2])!=null&&s.track),e.auxVideo=!!((n=a[3])!=null&&n.track)):a.forEach(c=>{c.track&&(c.track.kind===p.AUDIO?e.audio=!0:(e.bigVideo=!0,this._room.videoManager.hasSmall&&(e.smallVideo=!0)))}))}return e}initialize(){super.initialize(),this.installEvents()}reset(){this._isReconnecting&&this.stopReconnection(),this.closePeerConnection(),this.uninstallEvents()}close(e){super.close(e),this.reset(),this.emitConnectionStateChangedEvent("DISCONNECTED")}installEvents(){this._emitter.listeners("connection-state-changed").includes(this.handleConnectionStateChange)||this._emitter.on("connection-state-changed",this.handleConnectionStateChange,this)}uninstallEvents(){this._emitter.off("connection-state-changed",this.handleConnectionStateChange,this)}emitConnectionStateChangedEvent(e,t){var n,a,c;let r=this._currentState,s=super.emitConnectionStateChangedEvent(e);return s&&r!==e&&(t?t.emit("connection-state-changed",{prevState:r,state:e}):((n=this.localMainVideoTrack)==null||n.emit("connection-state-changed",{prevState:r,state:e}),(a=this.localAuxVideoTrack)==null||a.emit("connection-state-changed",{prevState:r,state:e}),(c=this._publishingLocalVideoTrack)==null||c.emit("connection-state-changed",{prevState:r,state:e}))),s}publish(s){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,isAuxiliary:r}){this._peerConnection||this.initialize(),e&&(this._publishingLocalAudioTrack=e),t&&(this._publishingLocalVideoTrack=t),this._isPublishingAux=r;let n;t&&!r&&t.small&&(n=this._room.videoManager.smallTrack),this.sendMediaSettings(),ct()?yield this.publishByTransceiver({localAudioTrack:e,localVideoTrack:t,smallTrack:n,isAuxiliary:r}):yield this.publishByAddTrack({localAudioTrack:e,localVideoTrack:t,smallTrack:n}),this._publishingLocalAudioTrack=null,this._publishingLocalVideoTrack=null,this._isPublishingAux=!1,r?(t&&(this.localAuxVideoTrack=t),e&&(this.localAuxAudioTrack=e)):(t&&(this.localMainVideoTrack=t),e&&(this.localMainAudioTrack=e)),this.installTrackMuteEvents(e,t),this.sendMutedFlag()})}publishByTransceiver(n){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,smallTrack:r,isAuxiliary:s}){this._log.info("publish by transceiver");let a=new MediaStream,c=t==null?void 0:t.outMediaTrack,l=e==null?void 0:e.outMediaTrack;l&&a.addTrack(l),c&&a.addTrack(c);let h=this._peerConnection.getTransceivers();if(h.length===0)this._peerConnection.addTransceiver(l||p.AUDIO,{direction:te.SENDONLY,streams:[a]}),this._peerConnection.addTransceiver(s?p.VIDEO:c||p.VIDEO,{direction:te.SENDONLY,streams:[a]}),this._peerConnection.addTransceiver(r||p.VIDEO,{direction:te.SENDONLY,streams:[a]}),this._peerConnection.addTransceiver(s?c||p.VIDEO:p.VIDEO,{direction:te.SENDONLY,streams:[a]}),yield this.connect();else{let u=[];if(l&&(h[0].sender.track||u.push(0),yield h[0].sender.replaceTrack(l),yield this.setBandwidth({bandwidth:(e==null?void 0:e.profile.bitrate)||40,type:p.AUDIO})),c){let m=s?3:1;yield h[m].sender.replaceTrack(c),yield this.setBandwidth({bandwidth:t.profile.bitrate,type:p.VIDEO,videoType:s?p.AUXILIARY:p.BIG}),u.push(m),r&&(yield h[2].sender.replaceTrack(r),yield this.setBandwidth({bandwidth:t.small.bitrate,type:p.VIDEO,videoType:p.SMALL}),u.push(2))}yield this.setTransceiverDirection(te.SENDONLY,u),yield this.doPublishChange(),t==null||t.emit("connection-state-changed",{prevState:"DISCONNECTED",state:"CONNECTING"}),t==null||t.emit("connection-state-changed",{prevState:"CONNECTING",state:"CONNECTED"})}})}publishByAddTrack(s){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,smallTrack:r}){this._log.info("publish by addtrack");let n=t==null?void 0:t.outMediaTrack,a=e==null?void 0:e.outMediaTrack;if(this._peerConnection&&this._peerConnection.connectionState!=="new"){e&&a&&(yield this.addTrack(e)),n&&(yield this.addTrack(t));return}let c=new MediaStream;if(a&&c.addTrack(a),n&&c.addTrack(n),a&&this._peerConnection.addTrack(a,c),n&&(this._peerConnection.addTrack(n,c),r)){let l=new MediaStream;l.addTrack(r),this._peerConnection.addTrack(r,l)}yield this.connect()})}enableSmall(e){return f(this,null,function*(){let t=this._peerConnection.getTransceivers();e?this._room.videoManager.smallTrack&&(yield t[2].sender.replaceTrack(this._room.videoManager.smallTrack),yield this.setTransceiverDirection(te.SENDONLY,[2])):(yield t[2].sender.replaceTrack(null),yield this.setTransceiverDirection(te.INACTIVE,[2])),this.updateMediaSettings(),yield this.doPublishChange()})}installTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.on("mute",this.sendMutedFlag,this),t==null||t.on("unmute",this.sendMutedFlag,this))})}uninstallTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.off("mute",this.sendMutedFlag,this),t==null||t.off("unmute",this.sendMutedFlag,this))})}unpublish(r){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t}){if(!oi()){if(e&&e.outMediaTrack&&!t&&this.localMainVideoTrack){yield this.removeTrack(e),this.localMainAudioTrack=null;return}if(t&&t.outMediaTrack&&!e&&this.localMainAudioTrack){yield this.removeTrack(t),this.localMainVideoTrack=null;return}yield this.doUnpublish(),this.uninstallTrackMuteEvents(e,t),this.emitConnectionStateChangedEvent("DISCONNECTED",t);return}let s=t&&t===this.localAuxVideoTrack,n=t==null?void 0:t.outMediaTrack,a=this._peerConnection.getSenders(),c=[];e&&(s?this.localAuxAudioTrack=null:this.localMainAudioTrack=null,!this.localAuxAudioTrack&&!this.localMainAudioTrack&&(yield a[0].replaceTrack(null),c.push(0))),n&&(s?(yield a[3].replaceTrack(null),this.localAuxVideoTrack=null,this._mediaSettings=L(N({},this._mediaSettings),{auxVideoBps:0,auxVideoFps:0,auxVideoWidth:0,auxVideoHeight:0}),c.push(3)):(yield a[1].replaceTrack(null),yield a[2].replaceTrack(null),this.localMainVideoTrack=null,this._mediaSettings=L(N({},this._mediaSettings),{videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0}),c.push(1,2))),this.isMainStreamPublished||this.isAuxStreamPublished?(yield this.setTransceiverDirection(te.INACTIVE,c),yield this.doPublishChange(!1)):yield this.doUnpublish(),this.uninstallTrackMuteEvents(e,t),t==null||t.emit("connection-state-changed",{prevState:this._currentState,state:"DISCONNECTED"})})}doPublishChange(e=!0){return f(this,null,function*(){let t={state:this.publishState,constraintConfig:this._mediaSettings},r=yield this._signalChannel.sendWaitForResponse({command:Y.PUBLISH_STATE_CHANGE,data:t,responseCommand:F.PUBLISH_STATE_CHANGE_RESULT,enableLog:e});this.checkPublishResultCode(r.data.code,r.data.message)})}doUnpublish(e=!1){return this._signalChannel.sendWaitForResponse({command:Y.UNPUBLISH,commandDesc:"unpublish",responseCommand:F.UNPUBLISH_RESULT,enableLog:e}).catch(t=>{if(t.getCode()===I.API_CALL_TIMEOUT)return Promise.resolve();throw t})}updateMediaSettings(){let{detail:{isH264EncodeSupported:e,isVp8EncodeSupported:t}}=this._room.checkSystemResult;e?this._mediaSettings.videoCodec="H264":t&&(this._mediaSettings.videoCodec="VP8");let r=this._publishingLocalAudioTrack||this.localMainAudioTrack||this.localAuxAudioTrack,{localMainVideoTrack:s,localAuxVideoTrack:n}=this;if(this._publishingLocalVideoTrack&&(this._isPublishingAux?n=this._publishingLocalVideoTrack:s=this._publishingLocalVideoTrack),si){if(r&&r.outMediaTrack){let a=r.outMediaTrack.getSettings();this._mediaSettings.audioChannel=a.channelCount||1,this._mediaSettings.audioBps=r.profile.bitrate*1e3,this._mediaSettings.audioFs=a.sampleRate||0}if(s&&s.outMediaTrack){let a=s.outMediaTrack.getSettings();this._mediaSettings.videoWidth=a.width||0,this._mediaSettings.videoHeight=a.height||0,this._mediaSettings.videoFps=a.frameRate||0,this._mediaSettings.videoBps=s.profile.bitrate*1e3,s.small&&(this._mediaSettings.smallVideoWidth=s.small.width,this._mediaSettings.smallVideoHeight=s.small.height,this._mediaSettings.smallVideoFps=s.small.frameRate,this._mediaSettings.smallVideoBps=s.small.bitrate*1e3)}if(n&&n.outMediaTrack){let a=n.outMediaTrack.getSettings();this._mediaSettings.auxVideoWidth=a.width||0,this._mediaSettings.auxVideoHeight=a.height||0,this._mediaSettings.auxVideoFps=a.frameRate||0,this._mediaSettings.auxVideoBps=n.profile.bitrate*1e3}}else r&&r.outMediaTrack&&(this._mediaSettings.audioChannel=r.profile.channelCount,this._mediaSettings.audioBps=r.profile.bitrate*1e3,this._mediaSettings.audioFs=r.profile.sampleRate),s&&s.outMediaTrack&&(this._mediaSettings.videoWidth=s.profile.width,this._mediaSettings.videoHeight=s.profile.height,this._mediaSettings.videoFps=s.profile.frameRate,this._mediaSettings.videoBps=s.profile.bitrate*1e3);this._log.info(`updateMediaSettings: ${JSON.stringify(this._mediaSettings)}`)}sendMediaSettings(){this.updateMediaSettings(),this._signalChannel.sendWaitForResponse({command:Y.UPDATE_CONSTRAINT_CONFIG,data:this._mediaSettings,responseCommand:F.UPDATE_CONSTRAINT_CONFIG_RES}).then(e=>{e.data.code!==0&&this._log.warn(e.data.message)}).catch(()=>{})}addTrack(e){return f(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is adding ${e.kind} track to current published local ${t?p.AUXILIARY:p.MAIN} stream`),ct()?yield this.addTrackByTransceiver(e,t):yield this.addTrackBySender(e)})}addTrackByTransceiver(e,t){return f(this,null,function*(){var s;if(!e.mediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===p.AUDIO)yield r[0].sender.replaceTrack(e.outMediaTrack);else{let n=t?3:1;yield r[n].sender.replaceTrack(e.outMediaTrack),n===1&&((s=this.localMainVideoTrack)!=null&&s.small)&&(yield r[2].sender.replaceTrack(this._room.videoManager.smallTrack)),r[n].direction===te.INACTIVE&&(yield this.setTransceiverDirection(te.SENDONLY,[n]))}this.updateMediaSettings(),yield this.doPublishChange()})}addTrackBySender(e){return f(this,null,function*(){if(!e.outMediaTrack)return;let t=e.outMediaTrack;oi()&&this._peerConnection.getTransceivers().findIndex(s=>s.direction==="stopped")>=0&&(this._log.warn("transceiver is stopping, negotiate sdp first"),yield this.updateOffer("remove",t));let r=this._peerConnection.getSenders().find(s=>s.track&&s.track.kind===t.kind);if(r&&r.track){this._log.warn("sender already exists, remove sender first");let s=r.track;this.removeSender(r),yield this.updateOffer("remove",s)}if(t&&this._peerConnection.addTrack(t,new MediaStream([t])),t.kind===p.VIDEO&&e instanceof qe&&e.small){let s=new MediaStream,{smallTrack:n}=this._room.videoManager;s.addTrack(n),this._peerConnection.addTrack(n,s)}yield this.updateOffer("add",t)})}isNeedToResetOfferOrder(){if(this._sdpSemantics===ro||!this._peerConnection||!this._peerConnection.localDescription)return!1;let{sdp:e}=this._peerConnection.localDescription,t=ye(e);for(let r=0;r<t.media.length;r++)if(Number(t.media[r].mid)===0&&t.media[r].type===p.VIDEO)return!0;return!1}removeSender(e){let t=null;oi()&&(t=this._peerConnection.getTransceivers().find(r=>r.sender&&r.sender.track===e.track)),this._peerConnection.removeTrack(e),t&&ne(t.stop)&&(this._log.info("stop transceiver"),t.stop())}removeTrack(e){return f(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is removing ${e.kind} track from current published local ${t?p.AUXILIARY:p.MAIN} stream`),ct()?yield this.removeTrackByTransceiver(e,t):yield this.removeTrackBySender(e)})}removeTrackByTransceiver(e,t){return f(this,null,function*(){if(!e.outMediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===p.AUDIO)yield r[0].sender.replaceTrack(null);else{let s=t?3:1;yield r[s].sender.replaceTrack(null),s===1&&e.small&&(yield r[2].sender.replaceTrack(null)),yield this.setTransceiverDirection(te.INACTIVE,[s])}this.updateMediaSettings(),yield this.doPublishChange()})}setTransceiverDirection(e,t){return f(this,null,function*(){if(!ae)return;let r=!1,s=!1;this._log.info(`setting transceiver ${t.join(",")} direction to ${e}`);let n=this._peerConnection.getTransceivers();if(t.forEach(l=>{n[l].direction!==e&&(n[l].direction=e,r=!0)}),r){this._log.info("updating offer");let l=yield this._peerConnection.createOffer();yield this.setOffer(l)}let a=-1,c=this._peerConnection.remoteDescription.sdp.split(`\r
|
|
64
|
-
`).map(l=>{if(l.match(new RegExp(`a=(${te.INACTIVE}|${te.RECVONLY}|${te.SENDONLY})`))&&a++,t.includes(a)){if(e===te.INACTIVE&&l.includes(`a=${te.RECVONLY}`))return s=!0,`a=${e}`;if(e===te.SENDONLY&&l.includes(`a=${te.INACTIVE}`))return s=!0,`a=${te.RECVONLY}`}return l}).join(`\r
|
|
65
|
-
`);s&&(this._log.info("updating answer"),yield this.setAnswer({type:"answer",sdp:c}))})}removeTrackBySender(e){return f(this,null,function*(){if(!e.outMediaTrack)return;if(e.kind===p.VIDEO&&this.isNeedToResetOfferOrder()&&this.localMainAudioTrack){this.reset(),this.initialize(),yield this.publish({localAudioTrack:this.localMainAudioTrack,isAuxiliary:!1});return}let t=this._peerConnection.getSenders().find(r=>r.track===e.outMediaTrack);t&&(this.removeSender(t),e.kind===p.VIDEO&&e.small&&this._peerConnection.getSenders().forEach(r=>{r.track&&r.track.kind===p.VIDEO&&this.removeSender(r)})),yield this.updateOffer("remove",e.outMediaTrack)})}replaceTrack(e){return f(this,null,function*(){var n;let t=(n=this._peerConnection)==null?void 0:n.getSenders();if(!t||t.length===0||!e.mediaTrack)return!1;let r;if(ct()?r=e.kind===p.AUDIO?t[0]:t[1]:r=t.find(a=>a.track&&a.track.kind===e.kind),!r)return!1;let s=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;return this._log.info(`is replacing ${e.kind} track on ${s?p.AUXILIARY:p.MAIN} stream`),e.kind===p.AUDIO?yield r.replaceTrack(e.outMediaTrack):e.kind===p.VIDEO&&(s?t[3]&&(yield t[3].replaceTrack(e.outMediaTrack)):yield r.replaceTrack(e.outMediaTrack)),!0})}updateOffer(e,t){return f(this,null,function*(){try{let r=yield this._peerConnection.createOffer(Pp);ae&&r.sdp&&(r.sdp=this.setSDPDirection(r.sdp,"sendrecv")),yield this.setOffer(r);let s=this.updateMediaSettings(),n={action:e,trackId:t.id,kind:t.kind===p.VIDEO?"bigVideo":t.kind,type:"offer",sdp:this._peerConnection.localDescription.sdp,constraintConfig:s,state:this.publishState};this._log.info("createOffer success, sending updated offer to remote server"),this._log.debug(`updatedOffer: ${n.sdp}`);let a=yield this._signalChannel.sendWaitForResponse({command:Y.PUBLISH_CHANGE,data:n,responseCommand:F.UPDATE_OFFER_RESULT,timeout:Qc,commandDesc:"update offer"}),{code:c,message:l}=a.data;c!==0&&this.checkPublishResultCode(c,l),yield this.acceptAnswer(a.data.data),r.sdp&&this.updateSSRC(r.sdp)}catch(r){throw this._log.error(r),r}})}setBandwidth(n){return f(this,arguments,function*({bandwidth:e,type:t,videoType:r,sdp:s}){if(!Ls())return s?t===p.VIDEO?this.updateVideoBandwidthRestriction(s,e,r):this.updateAudioBandwidthRestriction(s,e):void 0;let a,c=this._peerConnection.getSenders();if(ct()){let l=0;t===p.VIDEO&&(r===p.SMALL?l=2:r===p.AUXILIARY?l=3:l=1),a=c[l]}else a=c.find(l=>l.track&&l.track.kind===t);if(a){let l=a.getParameters();(!l.encodings||l.encodings.length===0)&&(l.encodings=[{}]),l.encodings[0].maxBitrate=e*1e3;try{return yield a.setParameters(l),this._log.info(`${r||""}${t} bandwidth ${e} kbps`),s}catch(h){if(this._log.info(`failed to set bandwidth by setting maxBitrate: ${h}`),s)return t===p.VIDEO?this.updateVideoBandwidthRestriction(s,e,r):this.updateAudioBandwidthRestriction(s,e)}}return s})}updateVideoBandwidthRestriction(e,t,r){let s="AS";ae&&(s="TIAS",t=t*1e3);let n=0,a=-1;return r===p.SMALL?n=1:r===p.AUXILIARY&&(n=2),e=e.replace(/m=video (.*)\r\nc=IN (.*)\r\n/g,c=>(a+=1,a===n?`${c}b=${s}:${t}\r
|
|
66
|
-
`:c)),e}updateAudioBandwidthRestriction(e,t){let r="AS";return ae&&(r="TIAS",t=t*1e3),e=e.replace(/m=audio (.*)\r\nc=IN (.*)\r\n/,`m=audio $1\r
|
|
67
|
-
c=IN $2\r
|
|
68
|
-
b=${r}:${t}\r
|
|
69
|
-
`),e}removeBandwidthRestriction(e){return e.replace(/b=AS:.*\r\n/,"").replace(/b=TIAS:.*\r\n/,"")}removeVideoOrientation(e){return e.replace(/urn:3gpp:video-orientation/,"")}connect(){return f(this,null,function*(){try{yield this.exchangeSDP(),yield this.waitForPeerConnectionConnected()}catch(e){throw this.closePeerConnection(!0),this.uninstallEvents(),e}})}exchangeSDP(){return f(this,null,function*(){try{yield this.createOffer(),this._log.info("createOffer success, sending offer to remote server"),yield this.doExchangeSDP()}catch(e){throw e}})}createOffer(){return f(this,null,function*(){try{let e=yield this._peerConnection.createOffer(Pp);yield this.setOffer(e),e.sdp&&this.updateSSRC(e.sdp)}catch(e){throw e}})}doExchangeSDP(){let e={command:Y.PUBLISH,responseCommand:F.PUBLISH_RESULT,data:{type:this._peerConnection.localDescription.type,sdp:this.removeVideoOrientation(this._peerConnection.localDescription.sdp),screen:this.localMainVideoTrack instanceof ut||this.localAuxVideoTrack instanceof ut,state:this.publishState,constraintConfig:this._mediaSettings},enableLog:!1};return this._log.debug(`sending sdp offer: ${e.data.sdp}`),this._signalChannel.sendWaitForResponse(e).then(t=>{let{code:r,message:s,data:n}=t.data;return r===0?this.acceptAnswer(n):this.checkPublishResultCode(r,s)})}setSDPDirection(e,t,r="all"){let s=ye(e);return s.media.forEach(n=>{(r==="all"||n.type===r)&&(n.direction=t)}),vt(s)}acceptAnswer(e){return f(this,null,function*(){var t,r,s,n,a;try{let c;if(this._publishingLocalAudioTrack||this._publishingLocalVideoTrack||this.isMainStreamPublished){let u=((t=this._publishingLocalVideoTrack)==null?void 0:t.profile.bitrate)||((r=this.localMainVideoTrack)==null?void 0:r.profile.bitrate),m=((s=this._publishingLocalAudioTrack)==null?void 0:s.profile.bitrate)||((n=this.localMainAudioTrack)==null?void 0:n.profile.bitrate);if(u){let g=this._isPublishingAux?p.AUXILIARY:p.BIG;c=yield this.setBandwidth({bandwidth:u,type:p.VIDEO,sdp:c,videoType:g})}m&&(c=yield this.setBandwidth({bandwidth:m,type:p.AUDIO,sdp:c}))}if(c=this.removeVideoOrientation(e.sdp),(a=this._publishingLocalVideoTrack)!=null&&a.small){let{smallStreamConfig:u}=this._room;c=yield this.setBandwidth({bandwidth:this._publishingLocalVideoTrack.small.bitrate||u.bitrate,type:p.VIDEO,videoType:p.SMALL,sdp:c})}let h={type:e.type,sdp:c};yield this.setAnswer(h),this._log.debug(`accepted answer: ${c}`)}catch(c){throw this._log.error(`failed to accept remote answer ${c}`),c}})}sendMutedFlag(e){var s,n,a;if(e===this.localAuxAudioTrack||e===this.localAuxVideoTrack)return;let r={audio:!!((s=this.localMainAudioTrack)!=null&&s.muted),bigVideo:!!((n=this.localMainVideoTrack)!=null&&n.muted),auxVideo:!!((a=this.localAuxVideoTrack)!=null&&a.muted)};this._log.info(`send muted state: ${JSON.stringify(r)}`),this._signalChannel.send(Y.UPDATE_MUTE_STAT,r)}getIsReconnecting(){return this._isReconnecting}reconnect(){return f(this,null,function*(){if(!(He(Yo.prototype,this,"beforeReconnect").call(this)<0))try{yield this._signalChannel.sendWaitForResponse({command:Y.UNPUBLISH,responseCommand:F.UNPUBLISH_RESULT,enableLog:!1}),this.closePeerConnection(),this.initialize(),this.isMainStreamPublished&&(yield this.publish({localAudioTrack:this.localMainAudioTrack,localVideoTrack:this.localMainVideoTrack,isAuxiliary:!1})),this.isAuxStreamPublished&&(yield this.publish({localAudioTrack:this.localAuxAudioTrack,localVideoTrack:this.localAuxVideoTrack,isAuxiliary:!0})),this._log.warn("reconnect() uplink reconnect successfully"),this.stopReconnection()}catch(t){let r=xt(this._reconnectionCount);this._log.warn(`reconnect() timeout, try again after ${r/1e3}s`),this._reconnectionTimer=setTimeout(()=>{this.clearReconnectionTimer(),this.reconnect()},r)}})}handleConnectionStateChange(e){e.state==="CONNECTED"&&(this.localMainVideoTrack||this._publishingLocalVideoTrack&&!this._isPublishingAux)&&E.emit(A.SEND_FIRST_VIDEO_FRAME,{room:this._room})}updateSSRC(e){try{ye(e).media.forEach((r,s)=>{if(r.type===p.AUDIO){let n=r.ssrcs&&r.ssrcs[0];n&&(this.ssrc.audio=Number(n.id))}else{if(this._sdpSemantics===ro&&r.ssrcGroups){r.ssrcGroups.forEach((a,c)=>{let l=Number(a.ssrcs.split(" ")[0]);c===0?this.ssrc.video=l:c===1&&(this.ssrc.small=l)});return}let n=r.ssrcs&&r.ssrcs[0];if(!n)return;switch(s){case 1:this.ssrc.video=Number(n.id);break;case 2:this.ssrc.small=Number(n.id);break;case 3:this.ssrc.auxiliary=Number(n.id);break;default:break}}})}catch(t){}}getVideoTrackId(e=p.VIDEO){if(this._peerConnection){let t=this._peerConnection.getSenders();if(e===p.AUXILIARY&&t[3]&&t[3].track)return t[3].track.id;if(e===p.VIDEO&&t[1]&&t[1].track)return t[1].track.id}if(this.localMainVideoTrack&&e===p.VIDEO){let t=this.localMainVideoTrack.mediaTrack;if(t)return t.id}if(this.localAuxVideoTrack&&e===p.AUXILIARY){let t=this.localAuxVideoTrack.mediaTrack;if(t)return t.id}return""}getSSRC(){return this.ssrc}checkPublishResultCode(e,t){if(e!==0)throw e===Sr?(this._log.error(Ue.NOT_SUPPORTED_H264ENCODE),new y({code:I.NOT_SUPPORTED_H264,message:P({key:x.NOT_SUPPORTED_H264ENCODE})})):new y({code:I.UNKNOWN,message:P({key:x.SIGNAL_RESPONSE_FAILED,data:{signalResponse:F.PUBLISH_RESULT,code:e,message:t}})})}};v([Q(e=>function(...t){return new Promise((r,s)=>{let n=a=>{this._emitter.off("closed",n),s(new y({code:I.API_CALL_ABORTED,message:P({key:x.CONNECTION_ABORTED,data:a})}))};this._emitter.on("closed",n),e.apply(this,t).then(r,s).finally(()=>{this._emitter.off("closed",n)})})})],Yo.prototype,"publish",1),v([lt(521715,!1)],Yo.prototype,"unpublish",1),v([et(rt.prototype.afterConnect),Oa(rt.prototype.beforeConnect)],Yo.prototype,"connect",1);var xu=Yo,mn=xu;var pn=class{constructor(i,e){this.room=i;d(this,"_log");d(this,"_prevReportTime",0);d(this,"_prevReport",{});d(this,"_prevStats",null);d(this,"_prevEncoderImplementation","");d(this,"_prevAuxEncoderImpl","");d(this,"_prevQualityLimitationReason","");d(this,"_prevAuxQualityLimitationReason","");d(this,"_prevDecoderImplementationMap",new Map);d(this,"totalBytesSent",0);d(this,"totalBytesReceived",0);d(this,"_spcStats",null);this._log=e}get statInterval(){return this._prevReportTime===0?2:(Date.now()-this._prevReportTime)/1e3}getSenderStats(i){return f(this,null,function*(){var s;let e={audio:{bytesSent:0,packetsSent:0,audioLevel:0,totalAudioEnergy:0},video:{bytesSent:0,packetsSent:0,framesEncoded:0,frameWidth:0,frameHeight:0,framesSent:0,fpsCapture:0},small:{bytesSent:0,packetsSent:0,framesEncoded:0,frameWidth:0,frameHeight:0,framesSent:0,fpsCapture:0},auxiliary:{bytesSent:0,packetsSent:0,framesEncoded:0,frameWidth:0,frameHeight:0,framesSent:0,fpsCapture:0},rtt:0},t=i.getPeerConnection(),r=i.getSSRC();if(t)try{if((this._spcStats||(yield t.getStats())).forEach(a=>{var h,u,m;let c,l;if(a.type==="outbound-rtp")if((a.mediaType||a.kind)===p.VIDEO){if(a.ssrc===r.video?(c=p.VIDEO,l=i.localMainVideoTrack):a.ssrc===r.small?c=p.SMALL:a.ssrc===r.auxiliary&&(l=i.localAuxVideoTrack,c=p.AUXILIARY),!c)return;if(e[c].bytesSent=a.bytesSent,e[c].packetsSent=a.packetsSent,e[c].framesEncoded=a.framesEncoded,T(a.keyFramesEncoded)||(e[c].keyFramesEncoded=a.keyFramesEncoded),T(a.nackCount)||(e[c].nackCount=a.nackCount),T(a.pliCount)||(e[c].pliCount=a.pliCount),T(a.retransmittedPacketsSent)||(e[c].retransmittedPacketsSent=a.retransmittedPacketsSent),T(a.totalEncodeTime)||(e[c].totalEncodeTime=a.totalEncodeTime),T(a.totalPacketSendDelay)||(e[c].totalPacketSendDelay=a.totalPacketSendDelay),!T(a.encoderImplementation)&&(c===p.VIDEO&&this._prevEncoderImplementation!==a.encoderImplementation||c===p.AUXILIARY&&this._prevAuxEncoderImpl!==a.encoderImplementation)){let D=2,_=this._prevEncoderImplementation;c===p.AUXILIARY&&(D=7,_=this._prevAuxEncoderImpl),E.emit("262",{userId:i.userId,streamType:D,prevImplementation:_,implementation:a.encoderImplementation,codec:i.videoCodec,isHWCodec:a.powerEfficientEncoder}),this[c===p.VIDEO?"_prevEncoderImplementation":"_prevAuxEncoderImpl"]=a.encoderImplementation,this._log.info(`${c===p.AUXILIARY?"aux ":""}encoderImplementation change to ${a.encoderImplementation}(${i.videoCodec}) HWEncoder: ${a.powerEfficientEncoder}`)}a.ssrc===r.video?!T(a.qualityLimitationReason)&&a.bytesSent!==0&&this._prevQualityLimitationReason!==a.qualityLimitationReason&&(this._log.info(`qualityLimitationReason change to ${a.qualityLimitationReason}`),E.emit("263",{userId:i.userId,reason:a.qualityLimitationReason,prevReason:this._prevQualityLimitationReason,streamType:2,isQosClearFirst:(h=i.localMainVideoTrack)==null?void 0:h.isQosClearFirst}),this._prevQualityLimitationReason=a.qualityLimitationReason):a.ssrc===r.auxiliary&&!T(a.qualityLimitationReason)&&a.bytesSent!==0&&this._prevAuxQualityLimitationReason!==a.qualityLimitationReason&&(this._log.info(`aux qualityLimitationReason change to ${a.qualityLimitationReason}`),E.emit("263",{userId:i.userId,reason:a.qualityLimitationReason,prevReason:this._prevAuxQualityLimitationReason,streamType:7,isQosClearFirst:(u=i.localAuxVideoTrack)==null?void 0:u.isQosClearFirst}),this._prevAuxQualityLimitationReason=a.qualityLimitationReason)}else e.audio.bytesSent=a.bytesSent,e.audio.packetsSent=a.packetsSent;else a.type==="candidate-pair"?cr(a)&&(this.totalBytesSent=a.bytesSent,j(a.currentRoundTripTime)&&(e.rtt=Math.floor(a.currentRoundTripTime*1e3))):a.type==="media-source"&&(a.kind===p.AUDIO?(e.audio.audioLevel=a.audioLevel||0,e.audio.totalAudioEnergy=a.totalAudioEnergy||0,a.echoReturnLoss,a.totalSamplesDuration&&(e.audio.totalSamplesDuration=a.totalSamplesDuration)):a.kind===p.VIDEO&&(a.trackIdentifier===i.getVideoTrackId(p.VIDEO)?e.video.fpsCapture=a.framesPerSecond:a.trackIdentifier===i.getVideoTrackId(p.AUXILIARY)?e.auxiliary.fpsCapture=a.framesPerSecond:e.small.fpsCapture=a.framesPerSecond));if(!T(a.audioLevel)&&((m=i.localMainAudioTrack)!=null&&m.mediaTrack)&&a.trackIdentifier===i.localMainAudioTrack.mediaTrack.id&&(e.audio.audioLevel=a.audioLevel||0),!T(a.frameWidth)){let g=p.SMALL;a.trackIdentifier===i.getVideoTrackId(p.VIDEO)||a.ssrc===r.video?g=p.VIDEO:(a.trackIdentifier===i.getVideoTrackId(p.AUXILIARY)||a.ssrc===r.auxiliary)&&(g=p.AUXILIARY),e[g].frameWidth=a.frameWidth,e[g].frameHeight=a.frameHeight,e[g].framesSent=a.framesSent}}),i.localMainAudioTrack){let a=i.localMainAudioTrack.getInternalAudioLevel();e.audio.micAudioLevel=a,e.audio.audioLevel===0&&(e.audio.audioLevel=a)}this.totalBytesSent||(this.totalBytesSent+=e.audio.bytesSent+e.video.bytesSent+e.auxiliary.bytesSent),Object.keys(e).forEach(a=>{a===p.AUDIO?(i.localMainAudioTrack&&(i.localMainAudioTrack.stat=e[a]),i.localAuxAudioTrack&&(i.localAuxAudioTrack.stat=e[a])):a===p.VIDEO?i.localMainVideoTrack&&(i.localMainVideoTrack.stat=e[a]):a===p.AUXILIARY&&i.localAuxVideoTrack&&(i.localAuxVideoTrack.stat=e[a])})}catch(n){this._log.warn(`failed to getStats on sender connection ${n}`)}return e.rtt===0&&(e.rtt=((s=this.room.networkQuality)==null?void 0:s.uplinkRTT)||0),e})}getReceiverStats(i){return f(this,null,function*(){var r,s,n;let e={tinyId:i.tinyId,userId:i.userId,rtt:0,hasAudio:!1,hasVideo:!1,hasAuxiliary:!1,isSmallSubscribed:!1,audio:{bytesReceived:0,packetsReceived:0,packetsLost:0,p2pDelay:0,totalJitter:0,totalJitterCount:0,audioLevel:0,totalAudioEnergy:0,insertedSamplesForDeceleration:0,removedSamplesForAcceleration:0},video:{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,fpsDecoded:0,freezeCount:0,totalFreezesDuration:0,totalJitter:0,totalJitterCount:0,p2pDelay:0},auxiliary:{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,fpsDecoded:0,totalJitter:0,totalJitterCount:0,p2pDelay:0}},t=i.getPeerConnection();if(t)try{let{ssrc:a}=i,{muteState:c,subscribeState:l}=i;(this._spcStats||(yield t.getStats())).forEach(u=>{if(u.type==="inbound-rtp"){let m=(u.mediaType||u.kind)===p.AUDIO;if(m){if(u.ssrc!==a.audio||!c.hasAudio)return;e.audio.packetsReceived=u.packetsReceived,e.audio.bytesReceived=u.bytesReceived,e.audio.packetsLost=u.packetsLost,u.insertedSamplesForDeceleration&&(e.audio.insertedSamplesForDeceleration=u.insertedSamplesForDeceleration),u.removedSamplesForAcceleration&&(e.audio.removedSamplesForAcceleration=u.removedSamplesForAcceleration),u.totalSamplesDuration&&(e.audio.totalSamplesDuration=u.totalSamplesDuration),u.totalSamplesReceived&&(e.audio.totalSamplesReceived=u.totalSamplesReceived),u.concealedSamples&&(e.audio.concealedSamples=u.concealedSamples),u.silentConcealedSamples&&(e.audio.silentConcealedSamples=u.silentConcealedSamples);let{remoteAudioTrack:g}=i;g.stat.packetsReceived=u.packetsReceived,g.stat.bytesReceived=u.bytesReceived,g.stat.packetsLost=u.packetsLost,e.audio.p2pDelay=g.stat.end2EndDelay,e.hasAudio=!0}else{if(ae&&u.bytesReceived===0)return;let g;u.ssrc===a.video&&c.hasVideo&&(e.video.packetsReceived=u.packetsReceived,e.video.bytesReceived=u.bytesReceived,e.video.packetsLost=u.packetsLost,e.video.framesReceived=u.framesReceived,e.video.framesDecoded=u.framesDecoded,e.video.fpsDecoded=u.framesPerSecond,e.hasVideo=!0,g=i.remoteVideoTrack,c.hasSmall&&l.smallVideo&&(e.isSmallSubscribed=!0),u.decoderImplementation&&(!this._prevDecoderImplementationMap.has(e.userId)||this._prevDecoderImplementationMap.get(e.userId)!==u.decoderImplementation)&&(this._log.info(`${e.userId} decoderImplementation change to ${u.decoderImplementation} HWDecoder: ${u.powerEfficientDecoder}`),E.emit("262",{userId:this.room.userId,remoteUserId:e.userId,prevImplementation:this._prevDecoderImplementationMap.get(e.userId),implementation:u.decoderImplementation,codec:i.videoCodec,isHWCodec:u.powerEfficientDecoder}),this._prevDecoderImplementationMap.set(e.userId,u.decoderImplementation))),u.ssrc===a.auxiliary&&c.hasAuxiliary&&(e.auxiliary.packetsReceived=u.packetsReceived,e.auxiliary.bytesReceived=u.bytesReceived,e.auxiliary.packetsLost=u.packetsLost,e.auxiliary.framesReceived=u.framesReceived,e.auxiliary.framesDecoded=u.framesDecoded,e.auxiliary.fpsDecoded=u.framesPerSecond,g=i.remoteAuxiliaryTrack,e.auxiliary.p2pDelay=g.stat.end2EndDelay,e.hasAuxiliary=!0),g&&(g.stat.packetsReceived=u.packetsReceived,g.stat.bytesReceived=u.bytesReceived,g.stat.packetsLost=u.packetsLost,g.stat.framesReceived=u.framesReceived,g.stat.framesDecoded=u.framesDecoded,u.jitterBufferDelay&&(g.stat.jitterBufferDelay=Math.floor(u.jitterBufferDelay/u.jitterBufferEmittedCount*1e3)),e.video.p2pDelay=g.stat.end2EndDelay)}u.jitterBufferDelay&&(m?(e.audio.totalJitter=u.jitterBufferDelay,e.audio.totalJitterCount=u.jitterBufferEmittedCount):u.ssrc===a.video&&c.hasVideo?(e.video.totalJitter=u.jitterBufferDelay,e.video.totalJitterCount=u.jitterBufferEmittedCount):u.ssrc===a.auxiliary&&c.hasAuxiliary&&(e.auxiliary.totalJitter=u.jitterBufferDelay,e.auxiliary.totalJitterCount=u.jitterBufferEmittedCount))}else u.type==="candidate-pair"&&cr(u)&&(this.totalBytesReceived=u.bytesReceived,j(u.currentRoundTripTime)&&(e.rtt=Math.floor(u.currentRoundTripTime*1e3)));T(u.frameWidth)||((u.trackIdentifier===i.getMainStreamVideoTrackId()||u.ssrc===a.video)&&(e.video.frameWidth=u.frameWidth,e.video.frameHeight=u.frameHeight,i.remoteVideoTrack.stat.frameWidth=u.frameWidth,i.remoteVideoTrack.stat.frameHeight=u.frameHeight),(u.trackIdentifier===i.getAuxStreamVideoTrackId()||u.ssrc===a.auxiliary)&&(e.auxiliary.frameWidth=u.frameWidth,e.auxiliary.frameHeight=u.frameHeight,i.remoteAuxiliaryTrack.stat.frameWidth=u.frameWidth,i.remoteAuxiliaryTrack.stat.frameHeight=u.frameHeight)),!T(u.audioLevel)&&i.muteState.audioAvailable&&i.remoteAudioTrack.mediaTrack&&u.trackIdentifier===i.remoteAudioTrack.mediaTrack.id&&(e.audio.audioLevel=u.audioLevel||0,e.audio.totalAudioEnergy=u.totalAudioEnergy||0)}),e.audio.audioLevel===0&&i.muteState.audioAvailable&&(e.audio.audioLevel=i.remoteAudioTrack.getInternalAudioLevel()||0),this.totalBytesReceived||(this.totalBytesReceived+=e.audio.bytesReceived+e.video.bytesReceived+e.auxiliary.bytesReceived),T((r=i.remoteVideoTrack.player.stat)==null?void 0:r.fps)||(e.video.fpsRender=i.remoteVideoTrack.player.stat.fps),T((s=i.remoteAuxiliaryTrack.player.stat)==null?void 0:s.fps)||(e.auxiliary.fpsRender=i.remoteAuxiliaryTrack.player.stat.fps)}catch(a){this._log.warn(`failed to getStats on receiver connection ${a}`)}return e.rtt===0&&(e.rtt=((n=this.room.networkQuality)==null?void 0:n.uplinkRTT)||0),e})}getStats(i,e){return f(this,null,function*(){let t={},r=[];if(this.room.singlePC){let s=this.room.singlePC.getPeerConnection();if(!s)return{senderStats:t,receiverStats:r};let n=V(),a=yield s.getStats(),c=V();c-n>2e3&&this._log.warn(`getStats cost ${c-n}ms`);let l=[],h=new Set(["inbound-rtp","outbound-rtp","track","candidate-pair","media-source"]);a.forEach(u=>h.has(u.type)&&l.push(u)),this._spcStats=l}i&&(t=yield this.getSenderStats(i));for(let[s,n]of e){let a=yield this.getReceiverStats(n);r.push(a)}return{senderStats:t,receiverStats:r}})}getDifferenceValue(i,e){if(li(i))return e;let t=e-i;return t<0?0:t}prepareReport({stats:i,report:e,freezeMap:t}){var m,g,D;if(!li(i.senderStats)){let _={uint32_audio_level:i.senderStats.audio.audioLevel*Rt,uint32_audio_energy:(i.senderStats.audio.totalAudioEnergy||0)*1e6,uint32_audio_codec_bitrate:i.senderStats.audio.bytesSent};i.senderStats.audio.micAudioLevel&&(_.uint32_mic_audio_level=i.senderStats.audio.micAudioLevel*Rt),i.senderStats.audio.totalSamplesDuration&&(e.msg_device_info.uint32_audio_capture_cost=i.senderStats.audio.totalSamplesDuration);let S=[];if(i.senderStats.video.bytesSent){let K={uint32_video_stream_type:2,uint32_video_codec_fps:i.senderStats.video.framesSent,uint32_video_capture_fps:i.senderStats.video.fpsCapture,uint32_video_width:i.senderStats.video.frameWidth,uint32_video_height:i.senderStats.video.frameHeight,uint32_video_codec_bitrate:i.senderStats.video.bytesSent,uint32_video_enc_fps:i.senderStats.video.framesEncoded,uint32_key_frame_count:i.senderStats.video.keyFramesEncoded,uint32_nack_count:i.senderStats.video.nackCount,uint32_pli_count:i.senderStats.video.pliCount,uint32_encode_cost:(i.senderStats.video.totalEncodeTime||0)*1e3,uint32_send_packet_cost:(i.senderStats.video.totalPacketSendDelay||0)*1e3,uint32_video_arq_packets:i.senderStats.video.retransmittedPacketsSent};S.push(K)}if(i.senderStats.small.bytesSent){let K={uint32_video_stream_type:3,uint32_video_codec_fps:i.senderStats.small.framesSent||0,uint32_video_capture_fps:i.senderStats.small.fpsCapture||0,uint32_video_width:i.senderStats.small.frameWidth||0,uint32_video_height:i.senderStats.small.frameHeight||0,uint32_video_codec_bitrate:i.senderStats.small.bytesSent,uint32_video_enc_fps:i.senderStats.small.framesEncoded||0,uint32_key_frame_count:i.senderStats.small.keyFramesEncoded,uint32_nack_count:i.senderStats.small.nackCount,uint32_pli_count:i.senderStats.small.pliCount,uint32_encode_cost:(i.senderStats.small.totalEncodeTime||0)*1e3,uint32_send_packet_cost:(i.senderStats.small.totalPacketSendDelay||0)*1e3,uint32_video_arq_packets:i.senderStats.small.retransmittedPacketsSent};S.push(K)}if(i.senderStats.auxiliary.bytesSent){let K={uint32_video_stream_type:7,uint32_video_codec_fps:i.senderStats.auxiliary.framesSent||0,uint32_video_capture_fps:i.senderStats.auxiliary.fpsCapture||0,uint32_video_width:i.senderStats.auxiliary.frameWidth||0,uint32_video_height:i.senderStats.auxiliary.frameHeight||0,uint32_video_codec_bitrate:i.senderStats.auxiliary.bytesSent,uint32_video_enc_fps:i.senderStats.auxiliary.framesEncoded||0,uint32_key_frame_count:i.senderStats.auxiliary.keyFramesEncoded,uint32_nack_count:i.senderStats.auxiliary.nackCount,uint32_pli_count:i.senderStats.auxiliary.pliCount,uint32_encode_cost:(i.senderStats.auxiliary.totalEncodeTime||0)*1e3,uint32_send_packet_cost:(i.senderStats.auxiliary.totalPacketSendDelay||0)*1e3,uint32_video_arq_packets:i.senderStats.auxiliary.retransmittedPacketsSent};S.push(K)}let O={uint32_bitrate:0,uint32_lost:0,uint32_rtt:i.senderStats.rtt};e.msg_up_stream_info={msg_audio_status:_,msg_video_status:S,msg_network_status:O}}let r=(m=Ee())==null?void 0:m.playoutStats;r&&(e.msg_device_info.uint32_audio_play_cost=r.totalFramesDuration);let{statInterval:s}=this;e.msg_down_stream_info=[],i.receiverStats.forEach(_=>{let S={msg_user_info:{str_identifier:_.userId,uint64_tinyid:_.tinyId},msg_network_status:{uint32_rtt:_.rtt,uint32_bitrate:0,uint32_lost:0},msg_audio_status:{},msg_video_status:[]};if(_.hasAudio){let O={uint32_audio_p2p_delay:_.audio.p2pDelay,uint32_audio_cache_ms:_.audio.totalJitter,uint32_audio_cache_ms_count:_.audio.totalJitterCount,uint32_audio_codec_bitrate:_.audio.bytesReceived,uint32_audio_total_bitrate:_.audio.bytesReceived,uint32_audio_level:_.audio.audioLevel*1e8,uint32_audio_energy:_.audio.totalAudioEnergy*1e6,uint32_audio_receive:_.audio.packetsReceived,uint32_audio_origin_lost:_.audio.packetsLost};S.msg_audio_status=O}if(_.hasVideo){let O=t.get(`${_.userId}_${qc}`),K=O?O.duration:0,G={uint32_video_stream_type:_.isSmallSubscribed?3:2,uint32_video_receive_fps:_.video.framesReceived,uint32_video_width:_.video.frameWidth,uint32_video_height:_.video.frameHeight,uint32_video_codec_bitrate:_.video.bytesReceived,uint32_video_receive:_.video.packetsReceived,uint32_video_origin_lost:_.video.packetsLost,uint32_video_block_time:K,uint32_video_dec_fps:_.video.framesDecoded,uint32_video_codec_fps:_.video.fpsRender,uint32_video_cache_ms:_.video.totalJitter,uint32_video_cache_ms_count:_.video.totalJitterCount,uint32_video_p2p_delay:_.video.p2pDelay};S.msg_video_status.push(G)}if(_.hasAuxiliary){let O=t.get(`${_.userId}_${Xc}`),K=O?O.duration:0,G={uint32_video_stream_type:7,uint32_video_receive_fps:_.auxiliary.framesReceived,uint32_video_width:_.auxiliary.frameWidth,uint32_video_height:_.auxiliary.frameHeight,uint32_video_codec_bitrate:_.auxiliary.bytesReceived,uint32_video_receive:_.auxiliary.packetsReceived+_.auxiliary.packetsLost,uint32_video_origin_lost:_.auxiliary.packetsLost,uint32_video_block_time:K,uint32_video_dec_fps:_.auxiliary.framesDecoded,uint32_video_codec_fps:_.video.fpsRender,uint32_video_cache_ms:_.auxiliary.totalJitter,uint32_video_cache_ms_count:_.auxiliary.totalJitterCount,uint32_video_p2p_delay:_.auxiliary.p2pDelay};S.msg_video_status.push(G)}e.msg_down_stream_info.push(S)});let n=this._prevReport,a=this._prevStats;if(this._prevReport=JSON.parse(JSON.stringify(e)),this._prevStats=JSON.parse(JSON.stringify(i)),e.msg_up_stream_info.msg_audio_status&&n.msg_up_stream_info.msg_audio_status){let _=n.msg_up_stream_info.msg_audio_status,S=e.msg_up_stream_info.msg_audio_status;if(_.uint32_audio_codec_bitrate===0)S.uint32_audio_codec_bitrate=0;else{let O=this.getDifferenceValue(_.uint32_audio_codec_bitrate,S.uint32_audio_codec_bitrate);S.uint32_audio_codec_bitrate=Math.round(O*8/s),e.msg_up_stream_info.msg_network_status.uint32_bitrate+=S.uint32_audio_codec_bitrate}(g=n.msg_device_info)!=null&&g.uint32_audio_capture_cost?e.msg_device_info.uint32_audio_capture_cost=2*Math.floor(this.getDifferenceValue(n.msg_device_info.uint32_audio_capture_cost,e.msg_device_info.uint32_audio_capture_cost)*1e3/s):delete e.msg_device_info.uint32_audio_capture_cost}let c=n.msg_up_stream_info.msg_video_status;e.msg_up_stream_info.msg_video_status.forEach(_=>{let S=c.find(_e=>_e.uint32_video_stream_type===_.uint32_video_stream_type);if(!S||S.uint32_video_codec_bitrate===0){_.uint32_video_codec_bitrate=0,_.uint32_video_enc_fps=0,_.uint32_video_codec_fps=0;return}let O=0,K=0,G=0;S&&_.uint32_video_codec_bitrate>=S.uint32_video_codec_bitrate&&(O=S.uint32_video_codec_bitrate,K=S.uint32_video_enc_fps,G=S.uint32_video_codec_fps);let Z=this.getDifferenceValue(O,_.uint32_video_codec_bitrate);_.uint32_video_codec_bitrate=Math.round(Z*8/s),e.msg_up_stream_info.msg_network_status.uint32_bitrate+=_.uint32_video_codec_bitrate,_.uint32_video_enc_fps=Math.round(this.getDifferenceValue(K,_.uint32_video_enc_fps)/s),_.uint32_video_codec_fps=Math.round(this.getDifferenceValue(G,_.uint32_video_codec_fps)/s),S.uint32_video_width===0&&S.uint32_video_height===0&&S.uint32_video_codec_fps===0&&(_.uint32_video_codec_fps=_.uint32_video_enc_fps),T(S.uint32_key_frame_count)||(_.uint32_key_frame_count=Math.round(this.getDifferenceValue(S.uint32_key_frame_count,_.uint32_key_frame_count))),T(S.uint32_nack_count)||(_.uint32_nack_count=Math.round(this.getDifferenceValue(S.uint32_nack_count,_.uint32_nack_count))),T(S.uint32_pli_count)||(_.uint32_pli_count=Math.round(this.getDifferenceValue(S.uint32_pli_count,_.uint32_pli_count))),T(S.uint32_video_arq_packets)||(_.uint32_video_arq_packets=Math.round(this.getDifferenceValue(S.uint32_video_arq_packets,_.uint32_video_arq_packets))),T(S.uint32_encode_cost)||(_.uint32_encode_cost=Math.round(this.getDifferenceValue(S.uint32_encode_cost,_.uint32_encode_cost)/s)),T(S.uint32_send_packet_cost)||(_.uint32_send_packet_cost=Math.round(this.getDifferenceValue(S.uint32_send_packet_cost,_.uint32_send_packet_cost)/s))});let h=n.msg_down_stream_info;e.msg_down_stream_info=e.msg_down_stream_info.filter(_=>h.find(S=>S.msg_user_info.uint64_tinyid===_.msg_user_info.uint64_tinyid));let u=e.msg_down_stream_info;return u.forEach(_=>{let S=h.find(O=>O.msg_user_info.uint64_tinyid===_.msg_user_info.uint64_tinyid);if(!li(_.msg_audio_status)&&!li(S.msg_audio_status)){let O=_.msg_audio_status,K=S.msg_audio_status,G=this.getDifferenceValue(K.uint32_audio_cache_ms_count,O.uint32_audio_cache_ms_count);delete O.uint32_audio_cache_ms_count,O.uint32_audio_cache_ms=Math.floor(1e3*this.getDifferenceValue(K.uint32_audio_cache_ms,O.uint32_audio_cache_ms)/G)||0;let Z=this.room.remotePublishedUserMap.get(_.msg_user_info.str_identifier);Z&&(Z.remoteAudioTrack.stat.jitterBufferDelay=O.uint32_audio_cache_ms),O.uint32_audio_origin_lost=this.getDifferenceValue(K.uint32_audio_origin_lost,O.uint32_audio_origin_lost),O.uint32_audio_receive=this.getDifferenceValue(K.uint32_audio_receive,O.uint32_audio_receive),O.uint32_audio_receive+=O.uint32_audio_origin_lost;let _e=this.getDifferenceValue(K.uint32_audio_codec_bitrate,O.uint32_audio_codec_bitrate);O.uint32_audio_codec_bitrate=Math.round(_e*8/s),O.uint32_audio_total_bitrate=Math.round(_e*8/s)}else _.msg_audio_status={};if(_.msg_video_status&&S.msg_video_status){let O=S.msg_video_status;_.msg_video_status=_.msg_video_status.filter(G=>O.find(Z=>Z.uint32_video_stream_type===G.uint32_video_stream_type)),_.msg_video_status.forEach(G=>{let Z=O.find(gf=>gf.uint32_video_stream_type===G.uint32_video_stream_type),_e=Z.uint32_video_receive,J=Z.uint32_video_origin_lost,uf=Z.uint32_video_codec_bitrate,hf=Z.uint32_video_receive_fps,mf=Z.uint32_video_dec_fps;G.uint32_video_origin_lost=this.getDifferenceValue(J,G.uint32_video_origin_lost),G.uint32_video_receive=this.getDifferenceValue(_e,G.uint32_video_receive)+G.uint32_video_origin_lost;let pf=this.getDifferenceValue(uf,G.uint32_video_codec_bitrate);G.uint32_video_codec_bitrate=Math.round(pf*8/s);let ff=this.getDifferenceValue(hf,G.uint32_video_receive_fps);G.uint32_video_receive_fps=Math.round(ff/s),G.uint32_video_dec_fps=Math.round(this.getDifferenceValue(mf,G.uint32_video_dec_fps)/s);let _f=this.getDifferenceValue(Z.uint32_video_cache_ms_count,G.uint32_video_cache_ms_count);delete G.uint32_video_cache_ms_count,G.uint32_video_cache_ms=Math.floor(1e3*this.getDifferenceValue(Z.uint32_video_cache_ms,G.uint32_video_cache_ms)/_f)||0})}}),(D=n.msg_device_info)!=null&&D.uint32_audio_play_cost?e.msg_device_info.uint32_audio_play_cost=2*Math.floor(this.getDifferenceValue(n.msg_device_info.uint32_audio_play_cost,e.msg_device_info.uint32_audio_play_cost)/s):delete e.msg_device_info.uint32_audio_play_cost,a&&i.receiverStats.forEach(_=>{if(_.audio.concealedSamples&&_.audio.totalSamplesReceived){let S=a.receiverStats.find(O=>O.userId===_.userId);if(S&&S.audio.concealedSamples&&S.audio.totalSamplesReceived){let O=(_.audio.silentConcealedSamples||0)-(S.audio.silentConcealedSamples||0),K=_.audio.concealedSamples-S.audio.concealedSamples,G=_.audio.totalSamplesReceived-S.audio.totalSamplesReceived,Z=Math.floor((K-O)/G*1e3*s);if(Z>s*1e3/5){let _e=u.find(J=>J.msg_user_info.str_identifier===_.userId);_e&&(_e.msg_audio_status.uint32_audio_block_time=Z)}}}}),e}getStatsReport(r){return f(this,arguments,function*({uplinkConnection:i,downlinkConnections:e,freezeMap:t}){let s={msg_device_info:{},msg_up_stream_info:{msg_audio_status:{uint32_audio_format:11,uint32_audio_sample_rate:0,uint32_audio_codec_bitrate:0,uint32_audio_receive:0,uint32_audio_origin_lost:0,uint32_audio_level:0,uint32_audio_energy:0},msg_video_status:[],msg_network_status:{uint32_bitrate:0,uint32_rtt:0,uint32_lost:0}},msg_down_stream_info:[{msg_user_info:{str_identifier:"",uint64_tinyid:0},msg_audio_status:{uint32_audio_cache_ms:0,uint32_audio_format:11,uint32_audio_sample_rate:0,uint32_audio_codec_bitrate:0,uint32_audio_total_bitrate:0,uint32_audio_level:0,uint32_audio_energy:0,uint32_audio_receive:0,uint32_audio_origin_lost:0,uint32_audio_final_lost:0},msg_video_status:[{uint32_video_cache_ms:0,uint32_video_stream_type:0,uint32_video_receive_fps:0,uint32_video_width:0,uint32_video_height:0,uint32_video_codec_bitrate:0,uint32_video_receive:0,uint32_video_origin_lost:0,uint32_video_block_time:0,uint32_video_dec_fps:0}],msg_network_status:{uint32_bitrate:0,uint32_rtt:0,uint32_lost:0}}]},n=yield this.getStats(i,e);return JSON.stringify(this._prevReport)==="{}"&&(this._prevReport=JSON.parse(JSON.stringify(s))),this.prepareReport({stats:n,report:s,freezeMap:t}),this._prevReportTime=Date.now(),s})}reset(){this._prevReportTime=0,this._prevReport={},this._prevEncoderImplementation="",this._prevQualityLimitationReason="",this._prevDecoderImplementationMap=new Map}};var Vp=$e(Ye());function Lp(o){let i={totalCost:0,local:0,redirect:0,httpCache:0,dns:0,tcp:0,tls:0,request:0,response:0};try{let e=performance.getEntriesByType("resource").reverse();for(let t of e)if(t.name===o){let r=Math.round(t.duration),s=Math.max(Math.round(t.domainLookupStart-t.startTime),0),n=t.redirectStart>0?Math.max(Math.round(t.redirectEnd-t.redirectStart),0):0,a=t.fetchStart>0?Math.max(Math.round(t.domainLookupStart-t.fetchStart),0):0,c=Math.round(t.domainLookupEnd-t.domainLookupStart),l=Math.round(t.requestStart-t.secureConnectionStart),h=Math.round(t.secureConnectionStart-t.connectStart),u=Math.round(t.responseStart-t.requestStart),m=Math.round(t.responseEnd-(t.responseStart||t.startTime));i=L(N({},i),{totalCost:r,local:s,redirect:n,httpCache:a,dns:c,tcp:h,tls:l,request:u,response:m});break}}catch(e){}return i}function wp(o){return new Promise(i=>f(this,null,function*(){let e=setTimeout(()=>{i({totalCost:1e4,local:0,dns:0,tcp:0,tls:0,request:0,response:0})},1e4),t=Date.now(),r=`https://${o}/?t=${t}`;try{yield fetch(r)}catch(n){}clearTimeout(e);let s=Lp(r);s.totalCost===0&&(s.totalCost=Date.now()-t),i(s)}))}var lE=700,Yr=class Yr extends Vp.default{constructor({signalChannel:e,room:t}){super();d(this,"_room");d(this,"_signalChannel");d(this,"_log");d(this,"uplinkRTT",0);d(this,"uplinkLoss",0);d(this,"downlinkRTT",0);d(this,"downlinkLoss",0);d(this,"pingResults",{});d(this,"_downlinkPrevStatMap",new Map);d(this,"_downlinkLossAndRTTMap",new Map);d(this,"_interval",-1);d(this,"_uplinkNetworkQuality",0);d(this,"_downlinkNetworkQuality",0);this._room=t,this._signalChannel=e,this._log=C.createLogger({id:"q",userId:this._room.userId,sdkAppId:this._room.sdkAppId}),this.initialize()}get uplinkNetworkQuality(){return this._uplinkNetworkQuality}set uplinkNetworkQuality(e){e!==this._uplinkNetworkQuality&&this._log.info(`uplink ${this.uplinkNetworkQuality} -> ${e}, rtt: ${this.uplinkRTT}, loss: ${this.uplinkLoss} ws-rtt: ${this._signalChannel.rtt}`),this._uplinkNetworkQuality=e}get downlinkNetworkQuality(){return this._downlinkNetworkQuality}set downlinkNetworkQuality(e){if(e!==this._downlinkNetworkQuality){let{rtt:t,loss:r}=this.getAverageLossAndRTT([...this._downlinkLossAndRTTMap.values()]);this._log.info(`downlink ${this.downlinkNetworkQuality} -> ${e}, rtt: ${t}, loss: ${r} ws-rtt: ${this._signalChannel.rtt}`)}this._downlinkNetworkQuality=e}initialize(){this._signalChannel.on(F.UPLINK_NETWORK_STATS,e=>{this.handleUplinkNetworkQuality(e)}),this._signalChannel.on(Ne.CONNECTION_STATE_CHANGED,this.handleSignalConnectionStateChange.bind(this)),this.start()}handleUplinkNetworkQuality(e){var c,l;if(e.data.code!==0)return;let t=e.data.data;if(t.delay&&this.updateDelay(t.delay),this._room.signalChannel&&t.wsRtt&&(this._room.signalChannel.rtt=t.wsRtt),!this._room.uplinkConnection){this.uplinkNetworkQuality=0,this.uplinkLoss=0,this.uplinkRTT=0;return}let r=(l=(c=this._room)==null?void 0:c.uplinkConnection)==null?void 0:l.getPeerConnection();if(r&&this.isPeerConnectionDisconnected(r)){this.uplinkNetworkQuality=6,this.uplinkLoss=0,this.uplinkRTT=0;return}let s=t.expectAudPkg+t.expectVidPkg,n=t.recvAudPkg+t.recvVidPkg,a=s-n;s===0&&n===0||(a<=0?this.uplinkLoss=0:this.uplinkLoss=Math.round(a/s*100),this.uplinkRTT=t.rtt,this.uplinkNetworkQuality=this.getNetworkQuality(this.uplinkLoss,this.uplinkRTT))}handleDownlinkNetworkQuality(){return f(this,null,function*(){if(this._room.remotePublishedUserMap.size===0){this.downlinkNetworkQuality=0;return}let e=[...this._room.remotePublishedUserMap.values()],t=e.filter(a=>{var c;return((c=a.getPeerConnection())==null?void 0:c.connectionState)===ge.CONNECTED});if(e.filter(a=>this.isPeerConnectionDisconnected(a.getPeerConnection())).length===e.length){this.downlinkNetworkQuality=6;return}for(let a=0;a<t.length;a++){let c=t[a].getPeerConnection();if(!c)return;let{rtt:l,totalPacketsLost:h,totalPacketsReceived:u}=yield this.getStat(c);if(!this._downlinkPrevStatMap.has(c)){this._downlinkPrevStatMap.set(c,{totalPacketsLost:h,totalPacketsReceived:u});continue}let m=0,g=this._downlinkPrevStatMap.get(c),D=h-g.totalPacketsLost,_=u-g.totalPacketsReceived;D<=0||_<0?m=0:m=Math.round(D/(D+_)*100),this._downlinkPrevStatMap.set(c,{totalPacketsLost:h,totalPacketsReceived:u}),this._downlinkLossAndRTTMap.set(c,{rtt:l,loss:m,userId:t[a].getUserId(),audioDelay:t[a].remoteAudioTrack.stat.end2EndDelay,videoDelay:t[a].remoteVideoTrack.stat.end2EndDelay})}if([...this._downlinkPrevStatMap.keys()].forEach(a=>{this.isPeerConnectionDisconnected(a)&&(this._downlinkPrevStatMap.delete(a),this._downlinkLossAndRTTMap.delete(a))}),this._downlinkLossAndRTTMap.size===0){this.downlinkRTT=0,this.downlinkLoss=0,this.downlinkNetworkQuality=0;return}let{rtt:s,loss:n}=this.getAverageLossAndRTT([...this._downlinkLossAndRTTMap.values()]);this.downlinkRTT=s,this.downlinkLoss=n,this.downlinkNetworkQuality=this.getNetworkQuality(n,s)})}getStat(e){return f(this,null,function*(){let t={rtt:0,totalPacketsLost:0,totalPacketsReceived:0};if(!e||!wr())return t;let r=e.getReceivers();try{for(let s=0;s<r.length;s++)(yield r[s].getStats()).forEach(c=>{c.type==="candidate-pair"&&j(c.currentRoundTripTime)&&(t.rtt=Math.round(c.currentRoundTripTime*1e3)),c.type==="inbound-rtp"&&(c.mediaType===p.AUDIO||c.mediaType===p.VIDEO)&&(t.totalPacketsLost+=c.packetsLost,t.totalPacketsReceived+=c.packetsReceived)});return t.rtt===0&&(t.rtt=this.uplinkRTT),t}catch(s){return t}})}getAverageLossAndRTT(e){let t={rtt:0,loss:0};return Array.isArray(e)&&e.length>0&&(e.forEach(r=>{t.rtt+=r.rtt,t.loss+=r.loss}),Object.keys(t).forEach(r=>{t[r]=Math.round(t[r]/e.length)})),t}getNetworkQuality(e,t){return e>50||t>500?5:e>30||t>350?4:e>20||t>200?3:e>10||t>100?2:e>=0||t>=0?1:0}handleSignalConnectionStateChange(e){e.state==="DISCONNECTED"?(this.uplinkRTT=0,this.uplinkLoss=0,this.uplinkNetworkQuality=6):e.state==="CONNECTED"&&this.uplinkNetworkQuality===6&&(this.uplinkNetworkQuality=5)}handleUplinkConnectionStateChange({state:e}){e==="DISCONNECTED"?(this.uplinkLoss=0,this.uplinkRTT=0,this.uplinkNetworkQuality=6):e==="CONNECTED"&&this.uplinkNetworkQuality===6&&(this.uplinkNetworkQuality=5)}isPeerConnectionDisconnected(e){return!!(e&&(e.connectionState===ge.DISCONNECTED||e.connectionState===ge.FAILED||e.connectionState===ge.CLOSED))}setUplinkConnection(e){this._room.uplinkConnection=e,this._room.uplinkConnection?this._room.uplinkConnection.on("connection-state-changed",this.handleUplinkConnectionStateChange.bind(this)):(this.uplinkNetworkQuality=0,this.uplinkRTT=0,this.uplinkLoss=0)}start(){if(this._interval!==-1){this._log.info("network quality calculating is already started");return}this._log.debug("start network quality calculating"),this._interval=se.run("ric",()=>{var n;this.handleDownlinkNetworkQuality();let e=[...this._downlinkLossAndRTTMap.values()];E.emit(A.NETWORK_QUALITY,{room:this._room,uplink:{rtt:this.uplinkRTT,loss:this.uplinkLoss},downlinks:e});let t=(n=this._room.scheduleResult.config)==null?void 0:n.pingDomainInfo,r={uplinkNetworkQuality:this.uplinkNetworkQuality,downlinkNetworkQuality:this.downlinkNetworkQuality,uplinkRTT:this.uplinkRTT,uplinkLoss:this.uplinkLoss,downlinkRTT:this.downlinkRTT,downlinkLoss:this.downlinkLoss};t&&(r=L(N({},r),{pingResults:this.uplinkRTT>t.rttThreshold||this.downlinkRTT>t.rttThreshold?this.pingResults:{}})),this.emit(Yr.EVENT_NETWORK_QUALITY,r);let s=Date.now();if(t&&(this.uplinkRTT>t.rttThreshold||this.downlinkRTT>t.rttThreshold)&&s-Yr.lastPingTime>t.interval*1e3){Yr.lastPingTime=Date.now();let a=t.domain.map(c=>wp(c).then(l=>({domain:c,cost:l.totalCost})));Promise.all(a).then(c=>{this.pingResults.isPoorNetwork=c.some(l=>l.cost>lE),this.pingResults.timestamp=s,this.pingResults.data=c,c.forEach(l=>{b.addSuccessEvent({key:521718,cost:l.cost})}),this._log.warn(`All ping results: ${JSON.stringify(c)}`)}).catch(c=>{this._log.warn(`Error during pinging domains: ${c}`)})}},{delay:2e3})}stop(){this._log.debug("stopped"),this._interval!==-1&&(se.clearTask(this._interval),this._interval=-1),this._downlinkLossAndRTTMap.clear(),this._downlinkPrevStatMap.clear()}updateDelay(e){let{tinyIdToUserIdMap:t}=this._room;e.forEach(({srcTinyId:r,videoDelay:s,audioDelay:n})=>{let a=t.get(r);if(a){let c=this._room.remotePublishedUserMap.get(a);c==null||c.setDelay({videoDelay:s,audioDelay:n})}})}};d(Yr,"EVENT_NETWORK_QUALITY","0"),d(Yr,"lastPingTime",0);var Zo=Yr;function uE({fn:o,context:i}){return function(...e){try{let t=o.apply(i,e);return or(t)?t.catch(r=>C.error(`${o.name}() error observed ${r}`)):t}catch(t){C.error(`${o.name}() error observed ${t}`)}}}var Cc=class{constructor(i){d(this,"_frameWorkType");d(this,"_component");d(this,"_language");d(this,"connectionType");d(this,"_room");d(this,"_signalInfo",{tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0});d(this,"_keyPrefix");d(this,"_log");d(this,"_intervalId");d(this,"_firstPublishedUserList");d(this,"_networkQuality");d(this,"_basicInfo");d(this,"_pathJoinRoom");d(this,"_pathLeaveRoom");d(this,"_pathMainVideoMap");d(this,"_pathMainAudioMap");d(this,"_pathAuxiliaryMap");d(this,"_remoteStreamStatMap");d(this,"_localStreamStat");d(this,"_eventMap",new Map);d(this,"_captureCostSum",0);d(this,"_captureCostCount",0);d(this,"isDestroyed",!1);this._frameWorkType=i.frameWorkType||30,this._component=i.component||0,this.connectionType=i.connectionType||1,this._language=i.language||0,this._room=i.room,this._keyPrefix="key_point",this._log=C.createLogger({id:"kpm",userId:this._room.userId,sdkAppId:this._room.sdkAppId}),Object.getOwnPropertyNames(this.__proto__).forEach(e=>{e.startsWith("handle")&&ne(this[e])&&(this[e]=uE({fn:this[e],context:this}))}),this.initData(),this.installEvents()}initData(){this._firstPublishedUserList=[],this._networkQuality={totalUplinkRTT:0,totalUplinkLoss:0,count:0,totalDownlinkRTTAndLossMap:new Map},this._basicInfo={string_sdk_version:xe,uint32_os_type:15,string_device_name:"",string_http_user_agent:navigator.userAgent,string_os_version:"",uint32_avg_rtt:0,uint32_avg_up_loss:0,uint32_scene:this._room.scene==="live"?1:0,uint32_joining_duration:0,uint32_networkType:0,uint32_framework:this._frameWorkType,uint32_component:this._component,uint32_connection_type:this.connectionType,uint32_caller_coding_language:this._language,string_domain:location.hostname},this._pathJoinRoom={uint64_start_time:0,uint64_send_request_acc_ip_cmd_start_time:0,uint64_send_request_acc_ip_cmd_end_time:0,uint64_send_request_enter_room_cmd_start_time:0,uint64_send_request_enter_room_cmd_end_time:0,uint64_send_first_video_frame_time:0,uint64_recv_userlist_time:0,uint64_end_time:0,int32_send_request_acc_ip_cmd_ret:0,int32_send_request_enter_room_cmd_ret:0,int32_end_ret:0},this._pathLeaveRoom={uint64_start_time:0,uint64_send_request_exit_room_cmd_start_time:0,uint64_send_request_exit_room_cmd_end_time:0,uint64_end_time:0,int32_send_request_exit_room_cmd_ret:0,int32_end_ret:0},this._localStreamStat={totalVideoBitrate:0,totalVideoFPS:0,totalVideoHeight:0,totalVideoWidth:0,totalAudioLevel:0,videoCount:0,audioLevelCount:0,publishStartTime:0,statsToReport:{uint32_audio_capture_db:0,uint32_video_big_capture_fps:0,uint32_video_big_bitrate:0,uint32_video_big_resolution:0}},this._pathMainVideoMap=new Map,this._pathMainAudioMap=new Map,this._pathAuxiliaryMap=new Map,this._remoteStreamStatMap=new Map,Or().then(i=>{this._basicInfo.string_os_version=xi(),i?this._basicInfo.string_device_name=i.mobile?i.model:this._basicInfo.string_os_version:this._basicInfo.string_device_name=this._basicInfo.string_os_version})}addEvent(i,e){return this._eventMap.set(i,e),E.on(i,e),this}installEvents(){this.handleUnload=this.handleUnload.bind(this),window.addEventListener("pagehide",this.handleUnload),this._room.once("banned",()=>this.handleLeaveSuccess({room:this._room,roomId:this._room.roomId})),this.addEvent(A.JOIN_START,this.handleJoinStart).addEvent(A.JOIN_SCHEDULE_SUCCESS,this.handleJoinScheduleSuccess).addEvent(A.JOIN_SIGNAL_CONNECTION_START,this.handleSignalConnectionStart).addEvent(A.JOIN_SIGNAL_CONNECTION_END,this.handleSignalConnectionEnd).addEvent(A.JOIN_SEND_CMD,this.handleJoinSendCMD).addEvent(A.JOIN_RECEIVED_CMD_RES,this.handleJoinReceivedCMDResponce).addEvent(A.JOIN_SUCCESS,this.handleJoinSuccess).addEvent(A.JOIN_FAILED,this.handleJoinFailed).addEvent(A.LEAVE_START,this.handleLeaveStart).addEvent(A.LEAVE_SUCCESS,this.handleLeaveSuccess).addEvent(A.LEAVE_SEND_CMD,this.handleLeaveSendCMD).addEvent(A.LOCAL_TRACK_CAPTURE_START,this.handleTrackCaptureStart).addEvent(A.LOCAL_TRACK_CAPTURE_SUCCESS,this.handleTrackCaptureSuccess).addEvent(A.LOCAL_TRACK_CAPTURE_FAILED,this.handleTrackCaptureFailed).addEvent(A.PUBLISH_START,this.handlePublishStart).addEvent(A.SEND_FIRST_VIDEO_FRAME,this.handleSendFirstVideoFrame).addEvent(A.SUBSCRIBE_START,this.handleSubscribeStart).addEvent(A.SUBSCRIBE_SUCCESS,this.handleSubscribed).addEvent(A.PLAY_TRACK_START,this.handlePlayStart).addEvent(A.VIDEO_LOADED_DATA,this.handleVideoLoadedData).addEvent(A.PLAYER_STATE_CHANGED,({track:i,state:e,type:t})=>{!i.isRemote||!this.hitTest(i.room)||e==="PLAYING"&&(t===p.AUDIO?this.handleAudioPlaying(i):this.handleVideoPlaying(i))}).addEvent(A.SWITCH_ROOM_START,this.handleSwitchRoomStart).addEvent(A.SWITCH_ROOM_SUCCESS,this.handleSwitchRoomSuccess).addEvent(A.SWITCH_ROOM_FAILED,this.handleSwitchRoomFailed).addEvent(A.NETWORK_QUALITY,this.handleNetworkQuality).addEvent(A.HEARTBEAT_REPORT,this.handleHeartbeatStats).addEvent(A.RECEIVED_PUBLISHED_USER_LIST,this.handleReceivedPublishUserList).addEvent(A.REMOTE_PUBLISH_STATE_CHANGED,({room:i,prevMuteState:e,muteState:t})=>{if(!this.hitTest(i))return;let r=e.hasAudio||e.hasVideo||e.hasSmall,s=e.hasAuxiliary,n=t.hasAudio||t.hasVideo||t.hasSmall,a=t.hasAuxiliary;!r&&n&&this.handleRemoteStreamAdded(t.userId,"main"),!s&&a&&this.handleRemoteStreamAdded(t.userId,"auxiliary")}).addEvent(A.SINGLE_CONNECTION_STAT,({room:i,stat:e})=>{this.hitTest(i)&&(this._pathJoinRoom.int32_ice_cost=e.ice,this._pathJoinRoom.int32_dtls_cost=e.dtls,this._pathJoinRoom.int32_peer_connection_cost=e.peerConnection)})}uninstallEvents(){window.removeEventListener("pagehide",this.handleUnload),this._eventMap.forEach((i,e)=>E.off(e,i)),this._eventMap.clear()}destroy(){this.uninstallEvents(),se.clearTask(this._intervalId),this._pathJoinRoom.uint64_start_time===0&&(this._room=null),this.isDestroyed=!0}handleUnload(){this._room.isJoined&&this.handleLeaveSuccess({room:this._room,roomId:this._room.roomId})}handleJoinStart(i){this.hitTest(i.room)&&(this._pathJoinRoom.uint64_start_time===0&&(this._pathJoinRoom.uint64_start_time=Date.now()),i.params&&(T(i.params.frameWorkType)||(this._frameWorkType=i.params.frameWorkType,this._basicInfo.uint32_framework=this._frameWorkType),T(i.params.component)||(this._component=i.params.component,this._basicInfo.uint32_component=this._component),T(i.params.language)||(this._language=i.params.language,this._basicInfo.uint32_caller_coding_language=this._language)))}handleJoinScheduleSuccess({room:i,detailCost:e}){if(this.hitTest(i)&&e){let{totalCost:t,local:r,dns:s,tcp:n,tls:a,request:c,response:l}=e;this._pathJoinRoom.int32_schedule_cost=t,this._pathJoinRoom.int32_schedule_local=r,this._pathJoinRoom.int32_schedule_dns=s,this._pathJoinRoom.int32_schedule_tcp=n,this._pathJoinRoom.int32_schedule_tls=a,this._pathJoinRoom.int32_schedule_request=c,this._pathJoinRoom.int32_schedule_response=l}}handleSignalConnectionStart({room:i}){this.hitTest(i)&&this._pathJoinRoom.uint64_send_request_acc_ip_cmd_start_time===0&&(this._pathJoinRoom.uint64_send_request_acc_ip_cmd_start_time=Date.now())}handleSignalConnectionEnd({room:i,error:e}){this.hitTest(i)&&this._pathJoinRoom.uint64_send_request_acc_ip_cmd_end_time===0&&(this._pathJoinRoom.uint64_send_request_acc_ip_cmd_end_time=Date.now(),e&&(this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret=e instanceof y?Number(e.getExtraCode()||e.getCode()):I.UNKNOWN,this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret))}handleJoinSendCMD(i){this.hitTest(i.room)&&this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time===0&&(this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time=Date.now())}handleJoinReceivedCMDResponce(i){this.hitTest(i.room)&&this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time===0&&(this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time=Date.now(),this._pathJoinRoom.int32_send_request_enter_room_cmd_ret=i.code,i.code!==0&&(this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_enter_room_cmd_ret))}handleJoinSuccess(i){this.hitTest(i.room)&&this._pathJoinRoom.uint64_end_time===0&&(this._pathJoinRoom.uint64_end_time=Date.now(),this._pathJoinRoom.int32_end_ret=0,this._signalInfo=i.room.getSignalInfo())}handleJoinFailed({room:i,error:e}){this.hitTest(i)&&(this._pathJoinRoom.uint64_end_time=Date.now(),this._pathJoinRoom.int32_end_ret===0&&(this._pathJoinRoom.int32_end_ret=e.code||this._pathJoinRoom.int32_send_request_enter_room_cmd_ret||this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret),setTimeout(()=>{this.report()}))}handleReceivedPublishUserList(i){this.hitTest(i.room)&&this._pathJoinRoom.uint64_recv_userlist_time===0&&(this._pathJoinRoom.uint64_recv_userlist_time=Date.now(),this._firstPublishedUserList=i.publishedUserList||[])}handleSendFirstVideoFrame({room:i}){this.hitTest(i)&&this._pathJoinRoom.uint64_send_first_video_frame_time===0&&this._pathJoinRoom.uint64_start_time!==0&&(this._pathJoinRoom.uint64_send_first_video_frame_time=Date.now())}handleLeaveStart(i){this.hitTest(i.room)&&(this._pathLeaveRoom.uint64_start_time=Date.now())}handleLeaveSuccess(i){this.hitTest(i.room)&&this._pathLeaveRoom.uint64_end_time===0&&(this._pathLeaveRoom.uint64_end_time=Date.now(),this._pathJoinRoom.uint64_end_time!==0?this._basicInfo.uint32_joining_duration=this._pathLeaveRoom.uint64_end_time-this._pathJoinRoom.uint64_end_time:this._log.warn("pathJoinRoom endTime is 0"),this.report())}handleLeaveSendCMD(i){this.hitTest(i.room)&&(this._pathLeaveRoom.uint64_send_request_exit_room_cmd_start_time=Date.now(),this._pathLeaveRoom.uint64_send_request_exit_room_cmd_end_time=Date.now())}handleSwitchRoomStart(i){if(this.hitTest(i.room)){let e=Date.now();this.report().then(()=>{this._pathJoinRoom.uint64_start_time=e,this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time=e})}}handleSwitchRoomSuccess({room:i}){if(this.hitTest(i)&&this._pathJoinRoom.uint64_end_time===0){let e=Date.now();this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time=e,this._pathJoinRoom.uint64_end_time=e,this._pathJoinRoom.int32_end_ret}}handleSwitchRoomFailed({room:i,error:e}){if(this.hitTest(i)){let t=Date.now();this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time=t,this._pathJoinRoom.uint64_end_time=t,e&&(this._pathJoinRoom.int32_end_ret=e instanceof y?Number(e.getExtraCode()||e.getCode()):I.UNKNOWN)}}handleRemoteStreamAdded(i,e){var r;let t=`${i}_${e}`;if(!this._remoteStreamStatMap.has(t)){let s={userId:i,totalVideoFPS:0,totalVideoBitrate:0,totalAudioLevel:0,totalAudioBitrate:0,totalLoss:0,audioCount:0,audioLevelCount:0,videoCount:0,networkQualityCount:0,streamAddedTime:Date.now(),subscribeStartTime:0,subscribedTime:0,playStreamTime:0,statsToReport:L(N({},hE),{msg_user_info:new fn({userId:i,tinyId:(r=this._room.remotePublishedUserMap.get(i))==null?void 0:r.tinyId,role:20})})};s.statsToReport.uint32_stream_type=e==="main"?2:7,this._remoteStreamStatMap.set(t,s)}}handleSubscribeStart({room:i,remotePublishedUser:e,streamType:t,subscribeState:r}){if(!this.hitTest(i))return;let{userId:s,tinyId:n,role:a}=e,c=new fn({userId:s,tinyId:n,role:a==="anchor"?20:21}),l=Date.now(),h=`${s}_${t}`,u=this._remoteStreamStatMap.get(h);u&&u.subscribeStartTime===0&&(u.subscribeStartTime=l),t==="main"?(e.muteState.hasVideo&&(r.video||r.smallVideo)&&!this._pathMainVideoMap.has(h)&&this._pathMainVideoMap.set(h,{statsToReport:{msg_user_info:c,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_render_first_frame_time:0,uint64_combine_first_frame_time:0},userId:s,sendSubscribeCMDTime:l}),e.muteState.hasAudio&&r.audio&&!this._pathMainAudioMap.has(h)&&this._pathMainAudioMap.set(h,{statsToReport:{msg_user_info:c,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_play_first_frame_time:0},userId:s,sendSubscribeCMDTime:l})):e.muteState.hasAuxiliary&&r.auxiliary&&!this._pathAuxiliaryMap.has(h)&&this._pathAuxiliaryMap.set(h,{sendSubscribeCMDTime:l})}handleSubscribed({room:i,remotePublishedUser:e,streamType:t}){if(this.hitTest(i)){let r=`${e.userId}_${t}`,s=this._remoteStreamStatMap.get(r);s&&s.subscribedTime===0&&(s.subscribedTime=Date.now())}}handlePlayStart({track:i}){if(!i.isRemote||!this.hitTest(i.room))return;let e=`${i.userId}_${i.streamType}`,t=this._remoteStreamStatMap.get(e);(t==null?void 0:t.playStreamTime)===0&&(t.playStreamTime=Date.now())}handleVideoLoadedData({track:i}){if(!i.isRemote||!this.hitTest(i.room))return;let e=`${i.userId}_${i.streamType}`,t=this._pathMainVideoMap.get(e);t&&t.statsToReport.uint64_combine_first_frame_time===0&&(t.statsToReport.uint64_combine_first_frame_time=Date.now())}handleVideoPlaying(i){let e=`${i.userId}_${i.streamType}`,t=Date.now(),r=this._pathMainVideoMap.get(e),s=this._remoteStreamStatMap.get(e);if(s){let{statsToReport:n}=s;if(!n.uint32_video_render_first&&i.streamType==="main"?this.hasVideoFlag(i.userId):this.hasAuxFlag(i.userId)){let a=t-this._pathJoinRoom.uint64_start_time;n.uint32_video_render_first=a,b.addNumber({key:516820,value:a})}}(r==null?void 0:r.statsToReport.uint64_render_first_frame_time)===0&&(r.statsToReport.uint64_render_first_frame_time=t)}handleAudioPlaying(i){let e=`${i.userId}_${i.streamType}`,t=this._pathMainAudioMap.get(e);t&&t.statsToReport.uint64_play_first_frame_time===0&&(t.statsToReport.uint64_play_first_frame_time=Date.now())}handleNetworkQuality(i){this.hitTest(i.room)&&(this._networkQuality.totalUplinkLoss+=i.uplink.loss,this._networkQuality.totalUplinkRTT+=i.uplink.rtt,this._networkQuality.count++,i.downlinks.forEach(({rtt:e,loss:t,userId:r,videoDelay:s,audioDelay:n})=>{let a=this._networkQuality.totalDownlinkRTTAndLossMap.get(r);if(a)a.totalRTT+=e,a.totalLoss+=t,s&&(a.totalVideoDelay=(a.totalVideoDelay||0)+s,a.videoDelayCount=(a.videoDelayCount||0)+1),n&&(a.totalAudioDelay=(a.totalAudioDelay||0)+n,a.audioDelayCount=(a.audioDelayCount||0)+1),a.count++;else{let c,l,h,u;s&&(l=s,h=1),n&&(c=n,u=1),this._networkQuality.totalDownlinkRTTAndLossMap.set(r,{totalRTT:e,totalLoss:t,count:1,totalAudioDelay:c,totalVideoDelay:l,audioDelayCount:u,videoDelayCount:h})}}))}handleHeartbeatStats(i){if(this.hitTest(i.room)){let{msg_device_info:e,msg_up_stream_info:t,msg_down_stream_info:r}=i.report;if(t.msg_video_status[0]){let{uint32_video_codec_bitrate:s,uint32_video_enc_fps:n,uint32_video_width:a,uint32_video_height:c}=t.msg_video_status[0];this._localStreamStat.totalVideoBitrate+=s,this._localStreamStat.totalVideoFPS+=n,this._localStreamStat.totalVideoWidth+=a,this._localStreamStat.totalVideoHeight+=c,this._localStreamStat.videoCount++}if(t.msg_audio_status){let{uint32_audio_level:s}=t.msg_audio_status;Math.floor(s/Rt*100)>0&&(this._localStreamStat.totalAudioLevel+=s/Rt,this._localStreamStat.audioLevelCount++)}r.forEach(s=>{let{msg_user_info:n,msg_audio_status:a,msg_video_status:c}=s,l=n.str_identifier,h=this._room.remotePublishedUserMap.get(l);if(c.forEach(u=>{let m=u.uint32_video_stream_type===2,g=u.uint32_video_stream_type===7,D=`${l}_${m?"main":"auxiliary"}`,_=this._remoteStreamStatMap.get(D);if(_&&(m&&(h!=null&&h.remoteVideoTrack.isSubscribed)||g&&(h!=null&&h.remoteAuxiliaryTrack))){_.totalVideoFPS+=u.uint32_video_receive_fps,_.totalVideoBitrate+=u.uint32_video_codec_bitrate,_.videoCount++,_.statsToReport.uint32_video_width===0&&(_.statsToReport.uint32_video_width=u.uint32_video_width),_.statsToReport.uint32_video_height===0&&(_.statsToReport.uint32_video_height=u.uint32_video_height);let S=m?h.remoteVideoTrack:h.remoteAuxiliaryTrack;S.stat.jitterBufferDelay&&(_.videoJitterBufferDelay=S.stat.jitterBufferDelay),S.stat.framesReceived&&(_.statsToReport.uint32_video_consume_render_rate=Math.floor(S.stat.framesDecoded/S.stat.framesReceived*Zi(10,6)))}}),!ao(a)){let u=`${l}_main`,m=this._remoteStreamStatMap.get(u);this._remoteStreamStatMap.has(u)&&m&&h!=null&&h.remoteAudioTrack.isSubscribed&&(m.totalAudioBitrate+=a.uint32_audio_codec_bitrate,m.audioCount++,h.remoteAudioTrack.stat.jitterBufferDelay&&(m.audioJitterBufferDelay=h.remoteAudioTrack.stat.jitterBufferDelay),Math.floor(a.uint32_audio_level/Rt*100)>0&&(m.totalAudioLevel+=a.uint32_audio_level/Rt,m.audioLevelCount++))}}),e.uint32_audio_capture_cost&&(this._captureCostSum+=e.uint32_audio_capture_cost,this._captureCostCount+=1,this._captureCostCount>=100&&(this._basicInfo.uint32_audio_capture_cost=Math.floor(this._captureCostSum/this._captureCostCount),this._captureCostSum=0,this._captureCostCount=0))}}handlePublishStart({room:i}){this.hitTest(i)&&this._localStreamStat.publishStartTime===0&&(this._localStreamStat.publishStartTime=Date.now())}handleTrackCaptureStart({track:i}){i.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_start_time&&(this._pathJoinRoom.uint64_init_audio_start_time=Date.now()),i.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_start_time&&(this._pathJoinRoom.uint64_init_camera_start_time=Date.now())}handleTrackCaptureSuccess({track:i}){i.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_end_time&&(this._pathJoinRoom.int32_init_audio_ret=0,this._pathJoinRoom.uint64_init_audio_end_time=Date.now()),i.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_end_time&&(this._pathJoinRoom.int32_init_camera_ret=0,this._pathJoinRoom.uint64_init_camera_end_time=Date.now())}handleTrackCaptureFailed({track:i,error:e}){let r={NotFoundError:1,NotAllowedError:2,NotReadableError:3,OverConstrainedError:4,AbortError:5,InvalidStateError:6,SecurityError:7,TypeError:8}[e.name]||(e instanceof y?e.getExtraCode()||e.getCode():I.UNKNOWN);i.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_end_time&&(this._pathJoinRoom.int32_init_audio_ret=r,this._pathJoinRoom.uint64_init_audio_end_time=Date.now()),i.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_end_time&&(this._pathJoinRoom.int32_init_camera_ret=r,this._pathJoinRoom.uint64_init_camera_end_time=Date.now())}hasVideoFlag(i){return this._firstPublishedUserList.findIndex(e=>e.userId===i&&e.flag&tr)>=0}hasAudioFlag(i){return this._firstPublishedUserList.findIndex(e=>e.userId===i&&e.flag&ir)>=0}hasAuxFlag(i){return this._firstPublishedUserList.findIndex(e=>e.userId===i&&e.flag&Er)>=0}hitTest(i){return i===this._room}prepareReport(){if(this._captureCostCount>0&&!this._basicInfo.uint32_audio_capture_cost&&(this._basicInfo.uint32_audio_capture_cost=Math.floor(this._captureCostSum/this._captureCostCount),this._captureCostSum=0,this._captureCostCount=0),this._networkQuality.count>0&&(this._basicInfo.uint32_avg_rtt=Math.floor(this._networkQuality.totalUplinkRTT/this._networkQuality.count),this._basicInfo.uint32_avg_up_loss=Math.floor(this._networkQuality.totalUplinkLoss/this._networkQuality.count)),this._localStreamStat.videoCount>0){this._localStreamStat.statsToReport.uint32_video_big_capture_fps=Math.floor(this._localStreamStat.totalVideoFPS/this._localStreamStat.videoCount),this._localStreamStat.statsToReport.uint32_video_big_bitrate=Math.floor(this._localStreamStat.totalVideoBitrate/this._localStreamStat.videoCount);let i=Math.floor(this._localStreamStat.totalVideoWidth/this._localStreamStat.videoCount),e=Math.floor(this._localStreamStat.totalVideoHeight/this._localStreamStat.videoCount);this._localStreamStat.statsToReport.uint32_video_big_resolution=i<<16|e}this._localStreamStat.audioLevelCount>0&&(this._localStreamStat.statsToReport.uint32_audio_capture_db=Math.floor(this._localStreamStat.totalAudioLevel/this._localStreamStat.audioLevelCount*100)),this._remoteStreamStatMap.forEach((i,e)=>{let{userId:t}=i,r=this._networkQuality.totalDownlinkRTTAndLossMap.get(t);if(r){let{totalLoss:h,count:u,audioDelayCount:m,videoDelayCount:g,totalAudioDelay:D,totalVideoDelay:_}=r;i.statsToReport.uint32_avg_down_loss=Math.floor(h/u),m&&D&&(i.statsToReport.uint32_audio_network_p2p_delay=Math.floor(D/m),i.audioJitterBufferDelay&&(i.statsToReport.uint32_p2p_delay=Math.floor(i.statsToReport.uint32_audio_network_p2p_delay+i.audioJitterBufferDelay))),g&&_&&(i.statsToReport.uint32_video_network_p2p_delay=Math.floor(_/g))}i.videoCount>0&&(i.statsToReport.uint32_video_avg_fps=Math.floor(i.totalVideoFPS/i.videoCount),i.statsToReport.uint32_video_avg_bitrate=Math.floor(i.totalVideoBitrate/i.videoCount)),i.audioCount>0&&(i.statsToReport.uint32_audio_recv_bitrate=i.statsToReport.uint32_audio_bitrate=Math.floor(i.totalAudioBitrate/i.audioCount)),i.audioLevelCount>0&&(i.statsToReport.uint32_audio_play_db=Math.floor(i.totalAudioLevel/i.audioLevelCount*100));let{callDurationCalculator:s}=this._room;s&&(i.statsToReport.uint32_audio_play_time=s.getDuration(e,p.AUDIO),i.statsToReport.uint32_video_play_time=s.getDuration(e,p.VIDEO)),i.statsToReport.uint32_video_render_first&&(i.statsToReport.uint32_video_render_first=Math.min(i.statsToReport.uint32_video_render_first,Zr));let{badCaseDetector:n}=this._room,{dataFreeze:a,count:c}=n.getDataFreezeDuration(e),{renderFreeze:l}=n.getRenderFreezeDuration(e);i.statsToReport.uint32_video_block_count=c,i.statsToReport.uint32_video_block_time=Math.min(a,i.statsToReport.uint32_video_play_time),i.statsToReport.uint32_video_external_block_time=Math.min(l,i.statsToReport.uint32_video_play_time),n.isBlackStream(e)&&i.statsToReport.uint32_video_avg_fps===0?i.statsToReport.uint32_video_black_screen_subjective=1:i.statsToReport.uint32_video_black_screen_subjective=0}),this._pathMainAudioMap.forEach((i,e)=>{if(!this.hasAudioFlag(i.userId)){this._pathMainAudioMap.delete(e);return}i.statsToReport.uint64_play_first_frame_time-i.statsToReport.uint64_start_enter_time>Zr&&(i.statsToReport.uint64_play_first_frame_time=i.statsToReport.uint64_start_enter_time+Zr)}),this._pathMainVideoMap.forEach((i,e)=>{if(!this.hasVideoFlag(i.userId)){this._pathMainVideoMap.delete(e);return}i.statsToReport.uint64_render_first_frame_time-i.statsToReport.uint64_start_enter_time>Zr&&(i.statsToReport.uint64_render_first_frame_time=i.statsToReport.uint64_start_enter_time+Zr)}),this._pathJoinRoom.uint64_end_time-this._pathJoinRoom.uint64_start_time>Zr&&(this._pathJoinRoom.uint64_end_time=this._pathJoinRoom.uint64_start_time+Zr)}getReportData(){this._basicInfo.uint32_networkType=Cr();let i={uint32_sdk_app_id:Number(this._room.sdkAppId),msg_user_info:new fn({userId:this._room.userId,tinyId:this._room.tinyId,role:this._room.role==="anchor"?20:21}),msg_basic_info:this._basicInfo,uint32_acc_ip:co(this._signalInfo.relayIp),uint32_client_ip:co(this._signalInfo.clientIp,!1),uint32_acc_port:this._signalInfo.relayPort||0,uint64_timestamp:Date.now(),uint32_seq:Math.floor(Math.random()*Zi(2,31)),msg_path_enter_room:this._pathJoinRoom,msg_path_exit_room:this._pathLeaveRoom,msg_path_recv_video:[...this._pathMainVideoMap.values()].map(e=>e.statsToReport),msg_quality_statistics:[...this._remoteStreamStatMap.values()].map(e=>e.statsToReport),str_room_name:String(this._room.roomId||0),msg_path_recv_audio:[...this._pathMainAudioMap.values()].map(e=>e.statsToReport),uint32_info_client_ip:co(this._signalInfo.clientIp,!1),error_code:[],msg_local_statistics:this._localStreamStat.statsToReport,bytes_report_buf_from_0x1:this._signalInfo.endReportExtend};return ms(i),i}report(){return f(this,null,function*(){try{this.prepareReport();let i=this.getReportData();yield this.upload(i),this.initData()}catch(i){this._log.warn(i)}finally{this.isDestroyed&&(this._room=null)}})}upload(i){return f(this,null,function*(){if(i.msg_path_enter_room.uint64_start_time===0)return;let e=Number(this._room.sdkAppId),t=yield sd(i),r=t instanceof ArrayBuffer,s=`${yi(e,Ki.KEY_POINT)}&gzip=${+r}`,n=!1;navigator.sendBeacon&&(n=navigator.sendBeacon(s,t));let a=[this.uploadKVStat(b),this.uploadKVStat(Lr)];n||a.push(Di({url:s,body:t,priority:"low"})),yield Promise.all(a)})}setConnectionType(i){this.connectionType=i,this._basicInfo.uint32_connection_type=i}uploadKVStat(i){return f(this,null,function*(){let e=i.getReportData();if(e.stats_count.length===0&&e.stats_distribution.length===0)return;e.msg_sdk_basic_info=L(N({},e.msg_sdk_basic_info),{bytes_device_name:this._basicInfo.string_device_name||"",bytes_os_version:this._basicInfo.string_os_version||"",uint32_framework:this._frameWorkType,uint32_network_type:this._basicInfo.uint32_networkType||0}),this._log.debug(e);let t=yield sd(e),r=`${yi(+this._room.sdkAppId,Ki.KV_STAT)}&gzip=${+(t instanceof ArrayBuffer)}`,s=!1;navigator.sendBeacon&&(s=navigator.sendBeacon(r,t)),s||Di({url:r,body:t})})}};v([ft({settings:{timeout:500,retries:3}})],Cc.prototype,"upload",1);var Zr=5e3,hE={msg_user_info:null,uint32_video_avg_fps:0,uint32_video_width:0,uint32_video_height:0,uint32_video_avg_bitrate:0,uint32_video_block_time:0,uint32_video_play_time:0,uint32_audio_block_time:0,uint32_audio_play_time:0,uint32_audio_play_db:0,uint32_avg_down_loss:0,uint32_stream_type:0,uint32_video_block_count:0,uint32_audio_block_count:0,uint32_audio_bitrate:0,uint32_video_black_screen_subjective:0,uint32_audio_recv_bitrate:0,uint32_video_external_block_time:0,uint32_video_consume_render_rate:0},fn=class{constructor(i){d(this,"str_identifier");d(this,"str_tinyid");d(this,"uint32_role");this.str_identifier=String(i.userId),this.str_tinyid=String(i.tinyId||0),this.uint32_role=i.role}},Up=Cc;var Pu=class{constructor(){d(this,"_startTime");d(this,"_endTime");this._startTime=0,this._endTime=0,this.start()}start(){this._startTime===0&&(this._startTime=V())}stop(){this._endTime===0&&(this._endTime=V())}getDuration(){return this._endTime===0?V()-this._startTime:this._endTime-this._startTime}get startTime(){return this._startTime}get endTime(){return this._endTime}},yc=Pu;var Lu=class{constructor(i){d(this,"_room",null);d(this,"_durationMap");d(this,"_eventMap",new Map);this._room=i.room,this._durationMap=new Map,this.installEvents()}installEvents(){this._eventMap.set(A.REMOTE_TRACK_SUBSCRIBED,this.handleSubscribed).set(A.REMOTE_TRACK_UNSUBSCRIBED,this.handleUnsubscribed).set(A.REMOTE_PUBLISH_STATE_CHANGED,({room:i,prevMuteState:e,muteState:t})=>{var n;let{userId:r}=t;if(!this.hitTest(i))return;e.hasAudio&&!t.hasAudio&&this.stopDurationItem(`${r}_main`,p.AUDIO),e.hasVideo&&!t.hasVideo&&this.stopDurationItem(`${r}_main`,p.VIDEO),e.hasAuxiliary&&!t.hasAuxiliary&&this.stopDurationItem(`${r}_auxiliary`,p.VIDEO);let s=(n=this._room)==null?void 0:n.remotePublishedUserMap.get(r);s&&(!e.hasAudio&&t.hasAudio&&s.remoteAudioTrack.isSubscribed&&this.addDuractionItem(r,p.AUDIO,"main"),!e.hasVideo&&t.hasVideo&&s.remoteVideoTrack.isSubscribed&&this.addDuractionItem(r,p.VIDEO,"main"),!e.hasAuxiliary&&t.hasAuxiliary&&s.remoteAuxiliaryTrack.isSubscribed&&this.addDuractionItem(r,p.VIDEO,"auxiliary"))}),this._eventMap.forEach((i,e)=>E.on(e,i,this))}uninstallEvents(){this._eventMap.forEach((i,e)=>E.off(e,i,this)),this._eventMap.clear()}handleSubscribed({track:i}){if(!this.hitTest(i.room))return;let{userId:e,streamType:t,kind:r}=i;i.isSubscribed?this.addDuractionItem(e,r,t):this.stopDurationItem(`${e}_${t}`,r)}handleUnsubscribed({track:i}){this.hitTest(i.room)&&this.stopDurationItem(`${i.userId}_${i.streamType}`,i.kind)}isRecording(i){return i.findIndex(e=>e.endTime===0)>=0}addDuractionItem(i,e,t){let r=`${i}_${t}`,s=new yc,n=this._durationMap.get(r);n?this.isRecording(n[e])||n[e].push(s):this._durationMap.set(r,{userId:i,type:t,audio:e===p.AUDIO?[s]:[],video:e===p.AUDIO?[]:[s]})}stopDurationItem(i,e){if(this._durationMap.has(i)){let r=this._durationMap.get(i)[e].find(s=>s.endTime===0);r&&r.stop()}}hitTest(i){return this._room===i}getDuration(i,e){return this._durationMap.has(i)?this._durationMap.get(i)[e].reduce((r,s)=>r+s.getDuration(),0):0}getDurationMap(){return this._durationMap}reset(){this._durationMap.clear()}destroy(){this._room=null,this.uninstallEvents()}},Bp=Lu;var wu=class{constructor(i){d(this,"_room");d(this,"_renderFreezeMap",new Map);d(this,"_isVideoPlayingEventFiredMap",new Map);d(this,"_dataFreezeMap",new Map);d(this,"_monitorFreezeData",new Map);d(this,"_eventMap",new Map);this._room=i.room,this.installEvents()}getRenderFreezeMap(){return this._renderFreezeMap}getDataFreezeMap(){return this._dataFreezeMap}installEvents(){this._eventMap.set(A.LEAVE_SUCCESS,({room:i})=>{this.hitTest(i)&&this.stop()}).set(A.PLAY_TRACK_START,this.onPlayTrackStart).set(A.UNSUBSCRIBE_SUCCESS,({room:i,streamType:e,remotePublishedUser:t})=>{if(!this.hitTest(i))return;let{userId:r}=t,s=`${r}_${e}`;this.stopDataFreeze({key:s,userId:r,type:e})}).set(A.REMOTE_PUBLISH_STATE_CHANGED,({room:i,prevMuteState:e,muteState:t})=>{if(!this.hitTest(i))return;let{userId:r}=t;if(e.hasVideo&&!t.hasVideo){let s="main",n=`${t.userId}_${s}`;this.stopDataFreeze({key:n,userId:r,type:s})}if(e.hasAuxiliary&&!t.hasAuxiliary){let s="auxiliary",n=`${t.userId}_${s}`;this.stopDataFreeze({key:n,userId:r,type:s})}}).set(A.PLAYER_STATE_CHANGED,({track:i,state:e,reason:t,type:r})=>{if(!(!i.isRemote||!i.room||!this.hitTest(i.room)||r!==p.VIDEO)){if(e==="PLAYING"){let s=`${i.userId}_${i.streamType}`;this._isVideoPlayingEventFiredMap.set(s,!0)}t===p.MUTE?this.onVideoTrackMuted(i):t===p.UNMUTE&&this.onVideoTrackUnmuted(i)}}).set(A.HEARTBEAT_REPORT,this.onHearBeatReport),this._eventMap.forEach((i,e)=>E.on(e,i,this))}uninstallEvents(){this._eventMap.forEach((i,e)=>E.off(e,i,this)),this._eventMap.clear()}stop(){this._renderFreezeMap.clear(),this._dataFreezeMap.clear(),this._isVideoPlayingEventFiredMap.clear()}onVideoTrackMuted(i){if(!i.isSubscribed)return;let{userId:e,streamType:t}=i,r=`${e}_${t}`,s=this._dataFreezeMap.get(r),n=new yc;s?s.durationItemList.push(n):this._dataFreezeMap.set(r,{userId:e,type:t,durationItemList:[n],isFreezing(){let a=this.durationItemList[this.durationItemList.length-1];return a&&a.endTime===0}})}onVideoTrackUnmuted(i){if(!i.isSubscribed)return;let{userId:e,streamType:t}=i,r=`${e}_${t}`;this.stopDataFreeze({key:r,userId:e,type:t})}onHearBeatReport({room:i,report:e}){this.hitTest(i)&&e.msg_down_stream_info.forEach(t=>{let r=this._room.remotePublishedUserMap.get(t.msg_user_info.str_identifier);if(!r)return;let{userId:s,muteState:n}=r;t.msg_video_status.forEach(a=>{a.uint32_video_stream_type===2&&n.hasVideo&&!n.videoMuted&&r.remoteVideoTrack.isSubscribed&&this.handleRenderFreeze({userId:s,fps:a.uint32_video_dec_fps,type:"main"}),a.uint32_video_stream_type===7&&n.hasAuxiliary&&r.remoteAuxiliaryTrack.isSubscribed&&this.handleRenderFreeze({userId:s,fps:a.uint32_video_dec_fps,type:"auxiliary"})})})}stopDataFreeze({key:i,userId:e,type:t}){let r=this._dataFreezeMap.get(i);if(!r||!r.isFreezing())return;let s=r.durationItemList[r.durationItemList.length-1];s.stop();let n=s.getDuration();n>On?this._monitorFreezeData.set(i,{userId:e,type:t,duration:n}):r.durationItemList.pop()}getTotalDuration(i){return i.reduce((e,t)=>{let r=t.getDuration();return e+Math.min(r,5e3)},0)}handleRenderFreeze(r){return f(this,arguments,function*({userId:i,fps:e,type:t}){let s=`${i}_${t}`,n=this._renderFreezeMap.get(s);if(e<=2){let a=V();n&&!n.isFreeze&&(n.freezeTimeline.push({startTime:a,endTime:0}),n.isFreeze=!0),n||this._renderFreezeMap.set(s,{userId:i,type:t,isFreeze:!0,freezeTimeline:[{startTime:a,endTime:0}],renderFreezeTotal:0})}else if(n&&n.isFreeze){n.isFreeze=!1;let a=n.freezeTimeline.pop();if(a){a.endTime=V();let c=a.endTime-a.startTime;n.freezeTimeline.push(a),n.renderFreezeTotal+=Math.min(5e3,c)}}})}onPlayTrackStart({track:i}){if(!i.isRemote||!this.hitTest(i.room)||i.kind!==p.VIDEO||!i.isRemotePublished)return;let e=`${i.userId}_${i.streamType}`;this._isVideoPlayingEventFiredMap.has(e)||this._isVideoPlayingEventFiredMap.set(e,!1)}getDataFreezeDuration(i){let e={dataFreeze:0,count:0},t=this._dataFreezeMap.get(i);if(t){if(t.isFreezing()){let r=t.durationItemList[t.durationItemList.length-1];r.stop(),r.getDuration()<On&&t.durationItemList.pop()}e.dataFreeze=this.getTotalDuration(t.durationItemList),e.count=t.durationItemList.length}return e}getRenderFreezeDuration(i){let e=this._renderFreezeMap.get(i),t=0,r=0;if(e)if(!e.isFreeze)t=e.renderFreezeTotal;else{let s=V(),n=e.freezeTimeline[e.freezeTimeline.length-1],a=s-n.startTime;t=e.renderFreezeTotal+Math.min(a,5e3),r=e.freezeTimeline.length}return{renderFreeze:t,count:r}}getMonitorFreeze(){return this._monitorFreezeData}isBlackStream(i){return this._isVideoPlayingEventFiredMap.has(i)?!this._isVideoPlayingEventFiredMap.get(i):!1}resetMonitor(){this._monitorFreezeData.clear()}hitTest(i){return i===this._room}destroy(){this.uninstallEvents()}},Fp=wu;var Hp=$e(Ye(),1);var mE=[1,0,0,0,1,1,0,1],bc=class extends it{constructor(e,t,r,s){super(e,{useDefaultProgram:!0,useFbo:!0,create2d:!0,name:"transform",logger:t});d(this,"mirror",!1);d(this,"rotation",0);if(r&&(this.mirror=r),s&&(this.rotation=s),e instanceof ke)try{this.setTexBuffer(mE)}catch(n){e.destroy(new y({code:I.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${n.message||n}`}))}}draw2d(e,t,r,s,n){if(this.ctx2d){this.ctx2d.save(),this.mirror&&(this.ctx2d.scale(-1,1),this.ctx2d.translate(-this.width,0)),this.rotation===90?(this.ctx2d.translate(s,0),this.ctx2d.rotate(Math.PI/2),this.ctx2d.scale(n/s,s/n)):this.rotation===180?(this.ctx2d.translate(this.width,this.height),this.ctx2d.rotate(Math.PI)):this.rotation===270&&(this.ctx2d.translate(0,n),this.ctx2d.rotate(3*Math.PI/2),this.ctx2d.scale(n/s,s/n));let a=super.draw2d(e,t,r,s,n);return this.ctx2d.restore(),a}return!1}render(e){var t;return(t=this.input)!=null&&t.requestFrame(e)?(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0):!1}};var Vu=class{constructor(i,e){this.node=i;this.layout=e;d(this,"positionBuffer")}get x(){return this.layout.x||this.node.x}get y(){return this.layout.y||this.node.y}get width(){return this.layout.width||this.node.width}get height(){return this.layout.height||this.node.height}get right(){return this.x+this.width}get bottom(){return this.y+this.height}},_n=class extends it{constructor(e,t){super(e,{useDefaultProgram:!0,useFbo:!0,name:"mix",create2d:!0,matchInputSize:!1,logger:t});d(this,"inputs",[])}addInput(e,t){if(this.inputs[t.zIndex])throw new Error("input already exists");let r=new Vu(e,t);this.inputs[t.zIndex]=r}changeInputLayout(e,t){let r=this.inputs.findIndex(s=>s?s.node===e:!1);r<0||Object.entries(t).forEach(([s,n])=>{T(n)||(this.inputs[r].layout[s]=n)})}resize(e,t){if(!this.matchInputSize){super.resize(e,t);return}let r=this.inputs.reduce((s,n)=>n?Object.assign(s,{width:Math.max(s.width,n.right),height:Math.max(s.height,n.bottom)}):s,{width:0,height:0});super.resize(r.width,r.height),this.context instanceof ke&&this.inputs.forEach(s=>{if(s){let n=this.layout2texCoords(s);s.positionBuffer?this.changeBufferData(s.positionBuffer,n):s.positionBuffer=this.createBuffer(n)}})}connect(e,...t){return super.connect(e,...t),this.matchInputSize&&this.resize(0,0),e}removeInput(e){this.inputs[this.inputs.findIndex(t=>(t==null?void 0:t.node)===e)]=void 0}render(e){let t=this.context.ctx;if(t.clearColor(0,0,0,0),this.inputs.reduce((s,n)=>(n==null?void 0:n.node.requestFrame(e))||s,!1)&&t){this.useProgram(),t.enable(t.BLEND),t.blendFunc(t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA),this.useBufferFrame();for(let s=0;s<this.inputs.length;s++){let n=this.inputs[s];n&&(n.node.useTexture(),this.draw(n.positionBuffer))}return!0}return!1}render2d(e){if(this.inputs.reduce((r,s)=>(s==null?void 0:s.node.requestFrame(e))||r,!1)&&this.ctx2d){this.ctx2d.fillStyle="black",this.ctx2d.fillRect(0,0,this.width,this.height);for(let r=0;r<this.inputs.length;r++){let s=this.inputs[r];s&&this.draw2d(s.node.image,s.x,s.y,s.width,s.height)}return!0}return!1}getInfo(){let{totalFrames:e,x:t,y:r,width:s,height:n,name:a}=this,c=Date.now(),l=(e-this.lastInfo.totalFrames)/((c-this.lastInfo.timestamp)/1e3)>>0;return this.lastInfo={totalFrames:e,x:t,y:r,width:s,height:n,timestamp:c,fps:l,name:a},N({parent:this.inputs.filter(h=>h).map(h=>h.node.getInfo())},this.lastInfo)}close(){super.close(),this.inputs.forEach(e=>{var t,r;if(e&&((t=e.node)==null||t.disconnect(),e.positionBuffer&&this.context instanceof ke))try{(r=this.context.ctx)==null||r.deleteBuffer(e.positionBuffer)}catch(s){}})}};var Nc=class{constructor(i,e,t,r=4/3){this.vbMode=i;this.faceDetector=e;this.logger=t;d(this,"animationState");d(this,"originalAspect");d(this,"totalOffsetX",0);d(this,"totalOffsetY",0);d(this,"defaultScaleRatio",.1);d(this,"isRecovering",!1);d(this,"boundaryY",280);d(this,"lastActionTime",0);d(this,"restTime",400);this.animationState={current:null,target:null,animating:!1,debounceTimer:null,startTime:0,duration:3e3,debounceTime:150,movementThreshold:30,debounceThreshold:15},this.addEvent(this.vbMode,!!this.faceDetector),this.originalAspect=r||4/3}addEvent(i,e,t){let s=[{key:570704,error:t!=null?t:e?void 0:11},{key:570705,error:t!=null?t:e?void 0:22}][i-1];s&&(e?b.addSuccessEvent({key:s.key}):b.addFailedEvent({key:s.key,error:s.error}))}actionCentering(i){let e=Date.now();if(this.animation(),!this.faceDetector||e-this.lastActionTime<this.restTime||this.animationState.animating)return;let{videoWidth:t,videoHeight:r}=i;this.animationState.debounceThreshold=t/30,this.animationState.movementThreshold=t/20;try{let s=this.faceDetector.detectForVideo(i,Date.now());if(s.detections.length<=0){this.vbMode===1&&this.recoverOriginal(t,r);return}let n=s.detections[0].boundingBox,a=n.originX,c=n.originY,l=n.width,h=n.height;this.vbMode===1?this.dualStageCropping(t,r,a,c,l,h):this.vbMode===2&&this.movingPortrait(t,r,a,c,l,h)}catch(s){this.logger.error(s)}this.lastActionTime=e}calculateBoundary(i,e,t,r){let s,n;return i>e/2?(s=e-t-r,n=t-s):(s=t,n=0),{min:s,offset:n}}calculateTargetPosition(i,e,t,r,s,n,a=.4){let c=i+t/2,l=e+r/2,h,u,{min:m,offset:g}=this.calculateBoundary(c,s,i,t),{min:D,offset:_}=this.calculateBoundary(l,n,e,r);return h=2*m+t,u=2*D+r,h/u>this.originalAspect?(h=u*this.originalAspect,g=c-h/2):(u=h/this.originalAspect,_=l-u/2),t/s>a&&(g=0,_=0,h=s,u=n),g=Math.max(0,Math.min(g,s-h)),_=Math.max(0,Math.min(_,n-u)),{sx:g,sy:_,cropWidth:h,cropHeight:u,timestamp:Date.now()}}processFacePositionCrop(i,e,t){if(!this.animationState.current||!this.animationState.target){let a={sx:0,sy:0,cropWidth:e,cropHeight:t,timestamp:Date.now()};this.animationState.current=a,this.animationState.target=a;return}let r=this.positionDistance(this.animationState.target,i),s=this.positionDistance(this.animationState.current,i),n=this.animationState.current.cropWidth/e;r>this.animationState.debounceThreshold*n&&(clearTimeout(this.animationState.debounceTimer),this.animationState.animating=!1),!this.animationState.animating&&s>this.animationState.movementThreshold*n&&(this.animationState.target=i,this.animationState.debounceTimer=setTimeout(()=>{this.animationState.startTime=Date.now(),this.animationState.animating=!0},this.animationState.debounceTime))}processFacePositionPortrait(i){if(!this.animationState.current||!this.animationState.target){this.animationState.current=N({},i),this.animationState.target=N({},i);return}let e=this.positionDistance(this.animationState.current,i),t=this.positionDistance(this.animationState.target,i);e>this.animationState.debounceThreshold&&(clearTimeout(this.animationState.debounceTimer),this.animationState.animating=!1),!this.animationState.animating&&t>this.animationState.movementThreshold&&(this.animationState.current=i,this.animationState.debounceTimer=setTimeout(()=>{this.animationState.startTime=Date.now(),this.animationState.animating=!0},this.animationState.debounceTime))}animation(){if(!this.animationState.animating)return;let i=Date.now()-this.animationState.startTime,e=Math.min(i/this.animationState.duration,1),t=r=>r<.5?2*r*r:-1+(4-2*r)*r;if(this.animationState.current&&this.animationState.target){let r=(this.animationState.target.sx-this.animationState.current.sx)*t(e);this.animationState.current.sx+=r,this.totalOffsetX+=r;let s=(this.animationState.target.sy-this.animationState.current.sy)*t(e);if(this.animationState.current.sy+=s,this.totalOffsetY+=s,this.animationState.current.cropWidth+=(this.animationState.target.cropWidth-this.animationState.current.cropWidth)*t(e),this.animationState.current.cropHeight+=(this.animationState.target.cropHeight-this.animationState.current.cropHeight)*t(e),this.animationState.current.scaleRatio&&this.animationState.target.scaleRatio&&(this.animationState.current.scaleRatio+=(this.animationState.target.scaleRatio-this.animationState.current.scaleRatio)*t(e)),j(this.animationState.current.scaleOffsetX)&&j(this.animationState.target.scaleOffsetX)&&j(this.animationState.current.scaleOffsetY)&&j(this.animationState.target.scaleOffsetY)){let n=(this.animationState.target.scaleOffsetX-this.animationState.current.scaleOffsetX)*t(e);this.animationState.current.scaleOffsetX+=n;let a=(this.animationState.target.scaleOffsetY-this.animationState.current.scaleOffsetY)*t(e);this.animationState.current.scaleOffsetY+=a}}e>=1&&(this.animationState.animating=!1,this.animationState.current=this.animationState.target,this.isRecovering=!1)}positionDistance(i,e){return Math.sqrt(Zi(i.sx-e.sx,2)+Zi(i.sy-e.sy,2))}recoverOriginal(i,e){this.animationState.target={sx:0,sy:0,cropWidth:i,cropHeight:e,timestamp:Date.now()},this.animationState.animating=!0,this.animationState.startTime=Date.now(),this.isRecovering=!0}dualStageCropping(i,e,t,r,s,n,a=.3){if(this.isRecovering)return;let c=this.calculateTargetPosition(t,r,s,n,i,e);this.processFacePositionCrop(c,i,e),s*n/c.cropWidth/c.cropHeight>a&&this.recoverOriginal(i,e)}movingPortrait(i,e,t,r,s,n){var c,l,h,u,m,g,D,_,S,O,K,G;let a={sx:t+s/2+this.totalOffsetX,sy:r+n/2+this.totalOffsetY,cropWidth:i,cropHeight:e,scaleRatio:(l=(c=this.animationState.current)==null?void 0:c.scaleRatio)!=null?l:1,scaleOffsetX:(u=(h=this.animationState.current)==null?void 0:h.scaleOffsetX)!=null?u:0,scaleOffsetY:(g=(m=this.animationState.current)==null?void 0:m.scaleOffsetY)!=null?g:0,timestamp:Date.now()};this.animationState.target={sx:i/2,sy:r+n/2,cropWidth:i,cropHeight:e,scaleRatio:(_=(D=this.animationState.target)==null?void 0:D.scaleRatio)!=null?_:1,scaleOffsetX:(O=(S=this.animationState.target)==null?void 0:S.scaleOffsetX)!=null?O:0,scaleOffsetY:(G=(K=this.animationState.target)==null?void 0:K.scaleOffsetY)!=null?G:0,timestamp:Date.now()},this.animationState.animating||(this.animationState.target.scaleRatio=Math.sqrt(s*n/i/e/this.defaultScaleRatio),this.animationState.target.scaleOffsetX=-this.animationState.target.scaleRatio/2+.5,this.animationState.target.scaleOffsetY=-this.animationState.target.scaleRatio+1,(this.animationState.target.sy-this.animationState.target.scaleOffsetY*this.animationState.target.cropHeight)/this.animationState.target.scaleRatio<this.boundaryY&&(this.animationState.target.scaleOffsetY=(this.animationState.target.sy-this.boundaryY*this.animationState.target.scaleRatio)/this.animationState.target.cropHeight)),this.processFacePositionPortrait(a)}set aspectRatio(i){this.originalAspect=i}get current(){return this.animationState.current}get offset(){return{offsetX:this.totalOffsetX,offsetY:this.totalOffsetY}}get targetCrop(){return this.animationState.target}};var pE=`#version 300 es
|
|
101
|
+
2. If the user is in Chrome 70 and below, when the div container is moved, the playback will be paused.`,color:"orange",class:"orange",textColor:"#fff"},'"displaySurface":"window"':{tips:"Screen sharing captures the application window",color:"blue",class:"blue",textColor:"#fff"},'"displaySurface":"monitor"':{tips:"Screen sharing captures the entire screen",color:"blue",class:"blue",textColor:"#fff"},'"displaySurface":"browser"':{tips:"Screen sharing captures a certain tab page",color:"blue",class:"blue",textColor:"#fff"},updateMediaSettings:{tips:"The resolution and frame rate below are the actual resolution and frame rate captured",color:"blue",class:"blue",textColor:"#fff"},"main stream start to play with":{tips:"Call remoteStream.play interface",color:"blue",class:"blue",textColor:"#fff"},"stream start to play with":{tips:"Call localStream.play interface",color:"blue",class:"blue",textColor:"#fff"},"main setAudioVolume to 0":{tips:"Business side calls remoteStream.setAudioVolume(0) interface to set the playback volume to 0, which will cause the playback to be silent",color:"orange",class:"orange",textColor:"#fff"},"screen sharing was stopped because the video track is ended":{tips:"Screen sharing capture stopped, possible reasons: user clicks the stop button, the window/page shared by the user is closed, etc.",color:"orange",class:"orange",textColor:"#fff"},"Join() => joining room":{tips:"Call client.join interface",color:"blue",class:"blue",textColor:"#fff"},"publish() => publishing local stream":{tips:"Call client.publish interface",color:"blue",class:"blue",textColor:"#fff"},"subscribe() => subscribe to":{tips:"Call client.subscribe interface",color:"blue",class:"blue",textColor:"#fff"},"switchRole() => switch role":{tips:"Call client.switchRole interface",color:"blue",class:"blue",textColor:"#fff"}};["enterRoom","exitRoom","switchRole","destroy","startLocalAudio","updateLocalAudio","stopLocalAudio","startLocalVideo","updateLocalVideo","stopLocalVideo","startScreenShare","updateScreenShare","stopScreenShare","startRemoteVideo","updateRemoteVideo","stopRemoteVideo","muteRemoteAudio","setRemoteAudioVolume"].forEach(i=>{Ag[`${i}()`]={tips:`Call trtc.${i}`,color:"blue",class:"blue",textColor:"#fff"}});var ak=Object.keys(Ag);var fS=0,lu,ka=class ka{constructor(t){this.core=t;u(this,"_core");u(this,"log");u(this,"dumpLocalVideoMap",{});u(this,"dumpRemoteVideoMap",{});u(this,"dialog");this._core=t,this.log=t.log.createChild({id:`${this.getAlias()}${++fS}`}),this.log.info("created")}getName(){return ka.Name}getAlias(){return"dm"}getGroup(){return"dm"}getValidateRule(t){switch(t){case"start":return{name:"StartDebugOptions",required:!1};case"update":return{name:"UpdateDebugOptions",required:!1};case"stop":return{name:"StopDebugOptions",required:!1}}}start(){return A(this,null,function*(){var e;!new URLSearchParams(location.search).has("trtcDebug")&&((e=window.sessionStorage)==null?void 0:e.getItem("TRTC_ENABLE_DEBUG_PLUGIN"))!=="true"||(yield this.openDebugDiaLog(),this.addVideoProcessor())})}update(e){return A(this,arguments,function*({forceOpen:t}){P(t)&&(t?(yield this.openDebugDiaLog(),this.addVideoProcessor()):(this.closeDebugDiaLog(),this.removeVideoProcessor()))})}stop(){this.closeDebugDiaLog(),this.removeVideoProcessor()}destroy(){this.stop()}openDebugDiaLog(){return A(this,null,function*(){var t;if(!this.dialog)try{if(lu)yield lu;else{let e=new URLSearchParams(location.search).get("trtcDebugDialogPath")||((t=window.sessionStorage)==null?void 0:t.getItem("TRTC_DEBUG_DIALOG_PATH"))||`https://unpkg.com/${_g}@${at}/assets/debug-dialog.js`;lu=this._core.fileDownloader.loadScript(e),yield lu}this.dialog=new TRTCDebugDialog(this._core,this.log,this.dumpLocalVideoMap,this.dumpRemoteVideoMap),this._core.kvStatManager.addSuccessEvent({key:592705})}catch(e){this._core.kvStatManager.addFailedEvent({key:592705}),this.log.error("load debug dialog script failed: ",JSON.stringify(e))}})}closeDebugDiaLog(){this.dialog&&(this.dialog.closeDialog(),this.dialog=null)}addVideoProcessor(){this._core.room.videoManager.addEncodeProcessor({processor:this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED?this.encodeVideo.bind(this):Tp,type:1}),this._core.room.videoManager.addDecodeProcessor({processor:this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED?this.decodeVideo.bind(this):Ip,type:1})}removeVideoProcessor(){this._core.room.videoManager.removeEncodeProcessor({type:1}),this._core.room.videoManager.removeDecodeProcessor({type:1})}encodeVideo({frame:t,mediaType:e}){return Tp({frame:t,onDump:()=>{if(!e)return;let r=e===2?"sub":"main",o=this.dumpLocalVideoMap[r];o&&(o.data.push(t.data.slice(0)),o.duration>0&&Date.now()-o.startTimestamp>o.duration*1e3&&o.onDumpEnd())}})}decodeVideo({frame:t,track:e}){return Ip({frame:t,onDump:()=>{if(!e)return;let r=this.dumpRemoteVideoMap[`${e.userId}-${e.streamType}`];r&&(r.data.push(t.data.slice(0)),r.duration>0&&Date.now()-r.startTimestamp>r.duration*1e3&&r.onDumpEnd())}})}};u(ka,"Name","Debug"),u(ka,"autoStart",!0);var mu=ka;var yg=i=>{switch(i){case"webCodecs":return 504703;case"wasm":return 504704}throw new Error("decoder type not supported")},pu=class{constructor(t,e,r){u(this,"trackDoneOB");u(this,"startOB");u(this,"stopOB");u(this,"inputFrameCount",0);u(this,"decodedFrameCount",0);u(this,"type","auto");u(this,"config");u(this,"decoder");u(this,"_decodeSink");let{kvStatManager:o,trtc:s}=t;this.config=r.config,this.trackDoneOB=Ce(e,de.INIT),this.stopOB=At(),this.startOB=At(),r.type==="auto"?this.type="webCodecs":this.type=r.type;let n=At(),c=l=>{let m=this.pipe(e);return n.next("STARTING"),e.log.info(`decoder type: ${this.type}`),be(m,Ye(this.stopOB),Le(()=>{},E=>{e.log.error(E),o.addFailedEvent({key:yg(this.type),error:E}),l>4?this.startOB.error(E):this.startOB.next(l+1)})),be(m,Nr(1),zm(Ra))};be(this.startOB,ya(0),so(c),Ye(this.stopOB),Le(()=>{e.player.setOutput(),n.next("STARTED")},l=>{n.next("FAILED")},()=>{o.addSuccessEvent({key:yg(this.type)}),o.addSuccessEvent({key:504702})}))}mock(t){this._decodeSink?this._decodeSink.error(t):this.startOB.next(0)}close(t){this.stopOB.next(t)}pipe(t){return Ii()(e=>A(this,null,function*(){this._decodeSink=e,e.defer(()=>{var o;(o=this.decoder)==null||o.close()});let{type:r}=this;try{switch(r){case"webCodecs":this.decoder=new AudioDecoder({error:o=>{t.log.error(o),e.error(4)},output:o=>{this.decodedFrameCount++,e.next(o),t.player.write(o)}});break;case"wasm":break}this.decoder.configure(this.config)}catch(o){t.log.error(o),e.error(r==="webCodecs"?2:6)}}))}decodeFrame(t){var e;this.inputFrameCount++,((e=this.decoder)==null?void 0:e.state)==="configured"&&this.decoder.decode(new EncodedAudioChunk({data:t.data,timestamp:t.timestamp,type:"key"}))}},gS={type:"object"},La=class La{constructor(t){this.core=t;u(this,"log");u(this,"contextMap",new Map);u(this,"decodeProcessorMap",new WeakMap);this.log=t.log.createChild({id:`${this.getAlias()}`})}getAlias(){return La.Name}getGroup(t){return t.track.userId+t.track.streamType}getName(){return La.Name}getValidateRule(t){return gS}start(t){let{track:e}=t;this.decodeProcessorMap.set(e,this.decode(t)),this.core.room.audioManager.addDecodeProcessor({processor:({frame:r,track:o})=>this.decodeProcessorMap.has(o)?this.decodeProcessorMap.get(o)({frame:r,track:o}):r,type:3})}decode(t){return({frame:e,track:r})=>{if(r!==t.track)return e;if(this.contextMap.has(r))return this.contextMap.get(r).decodeFrame(e);let o=new pu(this.core,r,t);return be(o.trackDoneOB,Nr(1),Le(()=>{this.core.clearStarted(this,this.getGroup(t)),this.stop({track:r})})),this.contextMap.set(r,o),o.decodeFrame(e)}}stop({track:t}){let e=this.contextMap.get(t);e&&(e.close("stop"),this.contextMap.delete(t),this.contextMap.size===0&&this.core.room.audioManager.removeDecodeProcessor({type:3}))}update(t){let e=this.contextMap.get(t.track);if(e){if(t.type==="mock"){e.mock(10);return}e.close("update"),this.contextMap.set(t.track,new pu(this.core,t.track,t))}}};u(La,"Name","TRTCAudioDecoder");var Ua=La;var hu=class{constructor(){u(this,"log");this.log=$.createLogger({id:"exp"})}call(t,e){return A(this,null,function*(){return We(this[t])?this[t](e):Promise.reject(new ue({code:J.INVALID_PARAMETER,message:Be({key:$e.API_NOT_EXIST,data:{name:t}})}))})}enableAudioFrameEvent(t){return A(this,null,function*(){let{trtcInstance:e,enable:r,userId:o,sampleRate:s=48e3,channelCount:n=1,port:c}=t,{audioManager:l}=e.room,{getPCMAbortCtrlMap:m,audioFrameEventConfigMap:E}=l;if(E.set(o,{enable:r,sampleRate:s,channelCount:n,port:c}),r)if(o==="*")e.room.remotePublishedUserMap.forEach(g=>{if(g.remoteAudioTrack.isAvailable){if(m.get(g.userId))return;let _=l.getPCM(v=>{e.emit(re.AUDIO_FRAME,v)},g.userId);m.set(g.userId,_)}});else{if(m.get(o))return;let g=l.getPCM(_=>{e.emit(re.AUDIO_FRAME,_)},o);m.set(o,g)}else if(o==="*")e.room.remotePublishedUserMap.forEach(g=>{if(g.remoteAudioTrack.isSubscribed){let{userId:_}=g,v=m.get(_);v==null||v.abort("disable"),m.delete(_)}});else{let g=m.get(o);g==null||g.abort("disable"),m.delete(o)}})}};Z([Gf({name:"options",type:"object",required:!0,properties:{enable:{required:!0,type:"boolean"},userId:{required:!0,type:"string"},sampleRate:{type:"number",values:[8e3,16e3,32e3,44100,48e3]},channelCount:{type:"number",values:[1,2]},port:{type:"messageport"}}})],hu.prototype,"enableAudioFrameEvent",1);var bg=new hu;var Rg=0,Va=new Set,Ct=null;qu(Tg);Hs.checkStorage();Xl();var ES={RtcError:ne,ErrorCode:le,ErrorCodeDictionary:hr},Se=class Se extends vg.EventEmitter{constructor(e,r){super();u(this,"_room");u(this,"_eventListened",new Set);u(this,"_localVideoTrack",null);u(this,"_localAudioTrack",null);u(this,"_localScreenTrack",null);u(this,"_localScreenAudioTrack",null);u(this,"_localVideoConfig",null);u(this,"_localScreenConfig",null);u(this,"_localAudioConfig",null);u(this,"_remoteVideoConfigMap",new Map);u(this,"_remoteAudioConfigMap",new Map);u(this,"_remoteAudioVolumeMap",new Map);u(this,"_remoteAudioMuteMap",new Map);u(this,"_mediaTrackMap",new WeakMap);u(this,"_log",$.createLogger({id:`t${++Rg}`}));u(this,"_plugins",new Map);u(this,"_networkQuality",null);u(this,"_speakerId");u(this,"enterRoomParams");this._room=new e(q({logger:this._log,frameWorkType:Se.frameWorkType},r)),this._room.videoDecodeFallbackType=r.videoDecodeFallback,this._log.info(`create() ${JSON.stringify(r,(o,s)=>o==="plugins"?s.map(n=>n.Name):s)}`),Object.defineProperties(this,{dumpAudio:{enumerable:!1,value(o){return this._room.audioManager.dump(o)}}}),r.plugins&&r.plugins.forEach(o=>{this._use(o,r.assetsPath)}),this._use(au,r.assetsPath),this._use(su,r.assetsPath),this._use(du,r.assetsPath),this._use(Ua,r.assetsPath),this._use(mu),r.enableSEI&&da&&this._use(uu),this._room.on("audio-volume",o=>{!o.find(s=>s.userId==="")&&this._localAudioTrack&&o.push({userId:"",volume:Math.floor(this._localAudioTrack.getAudioLevel()*100),floatVolume:this._localAudioTrack.getInternalAudioLevel()}),r.volumeType===1&&o.forEach(s=>{var c;let n=s.userId===""?this._localAudioTrack:(c=this.room.remotePublishedUserMap.get(s.userId))==null?void 0:c.remoteAudioTrack;n&&(s.volume=n.dbVolume)}),this.emit(re.AUDIO_VOLUME,{result:o.sort((s,n)=>n.volume-s.volume)})}),this._room.videoManager.on("error",o=>{this._log.error(new ne({code:le.OPERATION_FAILED,extraCode:5504,message:o.message,originError:o}))}),this._listenEvents(),this._initActiveSpeaker(),hg(this,"trtc")}static create(e){}static _create(e,r){Zf();let o=new Se(e,r||{});return Va.add(o),o}get room(){return this._room}_listenEvents(){Vt(this,this._room).add("peer-join",e=>{let{userId:r}=e;this.emit(re.REMOTE_USER_ENTER,{userId:r})}).add("peer-leave",e=>{this.emit(re.REMOTE_USER_EXIT,{userId:e}),this._remoteAudioVolumeMap.delete(e)}).add("banned",e=>{this._exitRoom().finally(()=>{this.emit(re.KICKED_OUT,{reason:e.reason})})}).add("error",e=>{this._exitRoom().finally(()=>{this.emit(re.ERROR,ne.convertFrom(e))})}).add("signal-connection-state-changed",e=>{this.emit(re.CONNECTION_STATE_CHANGED,e)}).add("network-quality",e=>{this._networkQuality=e;let r=Ee(q({},e),{uplinkRTT:Math.min(e.uplinkRTT,wn),downlinkRTT:Math.min(e.downlinkRTT,wn)});this.emit(re.NETWORK_QUALITY,r)}).add("remote-published",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(o=>{Vt(o,o).add("player-state-changed",s=>{let n=Ee(q({},s),{userId:e.userId});o.kind===N.VIDEO&&(n.streamType=co(o.streamType)),this.emit(o.kind===N.AUDIO?re.AUDIO_PLAY_STATE_CHANGED:re.VIDEO_PLAY_STATE_CHANGED,n)}).add("error",s=>{s.getCode()===J.PLAY_NOT_ALLOWED&&this.emit(re.AUTOPLAY_FAILED,{userId:o.userId,mediaType:o.strMediaType,resume:()=>o.player.resume()})})})}).add("remote-unpublished",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(o=>{ht(o)})}).add("remote-publish-state-changed",({prevMuteState:e,muteState:r})=>{let{userId:o}=r,s=e.audioAvailable,n=e.videoAvailable,{audioAvailable:c,videoAvailable:l}=r;c||this._remoteAudioConfigMap.delete(o),l||this._removeRemoteVideoConfig(o,"main"),r.hasAuxiliary||this._removeRemoteVideoConfig(o,"sub"),n!==l&&(l?this._onVideoAvailable({userId:o,streamType:"main"}):this._onVideoUnavailable({userId:o,streamType:"main"}),this.emit(l?re.REMOTE_VIDEO_AVAILABLE:re.REMOTE_VIDEO_UNAVAILABLE,{userId:o,streamType:"main"})),s!==c&&(c?this._onAudioAvailable({userId:o}):this._onAudioUnavailable({userId:o,muteState:r}),this.emit(c?re.REMOTE_AUDIO_AVAILABLE:re.REMOTE_AUDIO_UNAVAILABLE,{userId:o})),e.hasAuxiliary!==r.hasAuxiliary&&(r.hasAuxiliary?this._onVideoAvailable({userId:o,streamType:"sub"}):this._onVideoUnavailable({userId:o,streamType:"sub"}),this.emit(r.hasAuxiliary?re.REMOTE_VIDEO_AVAILABLE:re.REMOTE_VIDEO_UNAVAILABLE,{userId:o,streamType:"sub"}))}).add("sei-message",e=>{this.emit(re.SEI_MESSAGE,Ee(q({},e),{streamType:co(e.streamType)}))}).add("firewall-restriction",()=>{this.emit(re.ERROR,new ne({code:le.OPERATION_FAILED,extraCode:5501}))}).add("heartbeat-report",e=>{var s,n,c,l,m,E,g;let r={2:"big",3:"small",7:"sub"},o={rtt:Math.min(e.msg_up_stream_info.msg_network_status.uint32_rtt||((s=e.msg_down_stream_info[0])==null?void 0:s.msg_network_status.uint32_rtt)||((n=this._networkQuality)==null?void 0:n.uplinkRTT)||((c=this._networkQuality)==null?void 0:c.downlinkRTT)||0,wn),upLoss:((l=this._networkQuality)==null?void 0:l.uplinkLoss)||0,downLoss:((m=this._networkQuality)==null?void 0:m.downlinkLoss)||0,bytesSent:e.bytes_sent||0,bytesReceived:e.bytes_received||0,localStatistics:{audio:{bitrate:(((E=e.msg_up_stream_info.msg_audio_status)==null?void 0:E.uint32_audio_codec_bitrate)||0)/1e3,audioLevel:(((g=e.msg_up_stream_info.msg_audio_status)==null?void 0:g.uint32_audio_level)||0)/li},video:e.msg_up_stream_info.msg_video_status.filter(_=>r[_.uint32_video_stream_type]).map(_=>({bitrate:(_.uint32_video_codec_bitrate||0)/1e3,width:_.uint32_video_width,height:_.uint32_video_height,frameRate:_.uint32_video_enc_fps,videoType:r[_.uint32_video_stream_type]}))},remoteStatistics:e.msg_down_stream_info.map(_=>({userId:_.msg_user_info.str_identifier,audio:{bitrate:(_.msg_audio_status.uint32_audio_codec_bitrate||0)/1e3,audioLevel:(_.msg_audio_status.uint32_audio_level||0)/li,point2pointDelay:(_.msg_audio_status.uint32_audio_p2p_delay||0)+(_.msg_audio_status.uint32_audio_cache_ms||0),jitterBufferDelay:_.msg_audio_status.uint32_audio_cache_ms||0},video:_.msg_video_status.map(v=>({bitrate:(v.uint32_video_codec_bitrate||0)/1e3,width:v.uint32_video_width,height:v.uint32_video_height,frameRate:v.uint32_video_dec_fps,videoType:r[v.uint32_video_stream_type],point2pointDelay:(v.uint32_video_p2p_delay||0)+(v.uint32_video_cache_ms||0),jitterBufferDelay:v.uint32_video_cache_ms||0}))}))};this.emit(re.STATISTICS,o)}).add("custom-message",e=>{this.emit(re.CUSTOM_MESSAGE,e)}).add("layerData",e=>this.emit(re.LAYER_DATA,e)).add("first-video-frame",e=>{this.emit(re.FIRST_VIDEO_FRAME,Ee(q({},e),{streamType:co(e.streamType)}))}).add("audio-frame",e=>{this.emit(re.AUDIO_FRAME,e)}),Vt(this,St).add("audioInputAdded",e=>{this.emit(re.DEVICE_CHANGED,{type:"microphone",action:"add",device:e})}).add("audioInputRemoved",e=>{this.emit(re.DEVICE_CHANGED,{type:"microphone",action:"remove",device:e})}).add("videoInputAdded",e=>{this.emit(re.DEVICE_CHANGED,{type:"camera",action:"add",device:e})}).add("videoInputRemoved",e=>{this.emit(re.DEVICE_CHANGED,{type:"camera",action:"remove",device:e})}).add("audioOutputAdded",e=>A(this,null,function*(){if(this.emit(re.DEVICE_CHANGED,{type:"speaker",action:"add",device:e}),Ct&&Ct.deviceId===Mn){let r=(yield eo()).find(o=>o.deviceId===Mn);r&&Ct.groupId!==r.groupId&&(Ct=r,this.emit(re.DEVICE_CHANGED,{type:"speaker",action:"active",device:r}))}})).add("audioOutputRemoved",e=>A(this,null,function*(){this.emit(re.DEVICE_CHANGED,{type:"speaker",action:"remove",device:e});let r=(yield eo())[0];if(!r||!Ct||Ct.groupId===r.groupId)return;let o=Ct.deviceId===e.deviceId,s=Ct.deviceId===Mn&&Ct.deviceId===r.deviceId;(o||s)&&(Ct=r,this.emit(re.DEVICE_CHANGED,{type:"speaker",action:"active",device:r}))}))}use(e){let r,o;"plugin"in e?(r=e.plugin,o=e.assetsPath):r=e,this._use(r,o)}_use(e,r){if(this._plugins.get(e.Name)){this._log.warn("duplicate install plugin",e.Name);return}let s=new e(pg.call(this,{TRTC:Se,room:this._room,errorModule:ES,assetsPath:r}));this._plugins.set(e.Name,s),e.autoStart&&this.startPlugin(e.Name)}enterRoom(e){return A(this,null,function*(){var l,m;this.enterRoomParams=e;let{scene:r="rtc",enableAutoPlayDialog:o=!0,autoReceiveAudio:s=!0,autoReceiveVideo:n=!1}=e;e.proxy&&(this._room.setProxyServer(e.proxy),!we(e.proxy)&&e.proxy.turnServer&&((m=(l=this._room).setTurnServer)==null||m.call(l,e.proxy.turnServer,e.proxy.iceTransportPolicy))),this._room.enableAutoPlayDialog=o,this._room.autoReceiveAudio=s,this._room.autoReceiveVideo=n,st(e.preferHW)&&(this._room.preferHW=e.preferHW),e.playoutDelay&&(this._room.playoutDelay=e.playoutDelay),e.jitterBufferDelay&&(this._room.jitterBufferDelay=e.jitterBufferDelay);let c={sdkAppId:e.sdkAppId,userId:e.userId,userSig:e.userSig,privateMapKey:e.privateMapKey||null,latencyLevel:e.latencyLevel,role:e.role==="audience"?21:20,roomId:e.roomId||0,strRoomId:e.strRoomId||"",businessInfo:e.businessInfo||null,streamId:null,userDefineRecordId:e.userDefineRecordId||null,frameWorkType:e.frameWorkType,component:e.component,language:e.language,priority:e.priority,useVp8:e.useVp8,keepAlive:e.keepAlive};e.strRoomId&&!e.roomId?this._room.useStringRoomId=!0:this._room.useStringRoomId=!1,yield this._room.join(c,r,Se.frameWorkType),this._checkTrackToPublish(),fp.start()})}exitRoom(){return A(this,null,function*(){return yield this._exitRoom()})}switchRoom(e){return A(this,null,function*(){if(this.room.isSwitchRoomSupported())yield this._room.switchRoom(e);else{yield this.exitRoom();let r=q(q({},this.enterRoomParams),e);yield this.enterRoom(r)}})}switchRole(e,r){return A(this,null,function*(){r!=null&&r.privateMapKey&&(this._room.privateMapKey=r.privateMapKey),r!=null&&r.latencyLevel&&(this._room.latencyLevel=r.latencyLevel),yield this._room.switchRole(e),e==="anchor"&&this._checkTrackToPublish()})}destroy(){ht(this),this.removeAllListeners(),this._room.destroy(),Va.delete(this),Va.size===0&&fp.destroy(),this._localAudioTrack&&this.stopLocalAudio(),this._localVideoTrack&&this.stopLocalVideo(),this._localScreenTrack&&this.stopScreenShare(),this._plugins.forEach(e=>{var r;return(r=e.destroy)==null?void 0:r.call(e)}),this._plugins.clear(),V.off("102",this._onLocalTrackCaptured,this)}startLocalAudio(){return A(this,arguments,function*(e={publish:!0}){if(this._localAudioTrack){this._log.warn("local audio is already started");return}let{publish:r=!0,mute:o,option:s}=e,n=new Gr(this._room.audioManager),c={},l={muted:!0};s&&(P(s.microphoneId)?P(s.audioTrack)||(c.customSource=s.audioTrack):c.deviceId=s.microphoneId,s&&Pe(s.captureVolume)&&n.setCaptureVolume(s.captureVolume),P(s.profile)||(we(s.profile)?pc[s.profile]&&n.setProfile(pc[s.profile]):n.setProfile(s.profile)),Pe(s.earMonitorVolume)&&(l.muted=!(s.earMonitorVolume>0),l.volume=s.earMonitorVolume),P(s.echoCancellation)||(n.profile.echoCancellation=s.echoCancellation),P(s.noiseSuppression)||(n.profile.noiseSuppression=s.noiseSuppression),P(s.autoGainControl)||(n.profile.autoGainControl=s.autoGainControl)),n.on("5",m=>{this.emit(re.ERROR,new ne({code:le.DEVICE_ERROR,extraCode:5309,messageParams:{error:m}}))}),n.on("2",m=>{this.emit(re.DEVICE_CHANGED,{type:"microphone",action:"active",device:m})}),n.on("4",m=>{let E;m.error&&(E=ne.convertFrom(m.error)),this.emit(re.PUBLISH_STATE_CHANGED,Ee(q({},m),{error:E}))}),this._listenOutputTrackChanged(n),this._speakerId&&n.setAudioOutput(this._speakerId),yield n.capture(c),P(o)||n.setMute(o),Vt(n,n).add("player-state-changed",m=>{this.emit(re.AUDIO_PLAY_STATE_CHANGED,Ee(q({},m),{userId:""}))}),r&&this._room.isJoined&&this._room.publish(n).catch(()=>{}),this._localAudioTrack=n,this._localAudioConfig=Ee(q({},e),{publish:r}),yield this._updateAudioPlayOption({playOption:l,track:n}),V.emit("113",{userId:"",room:this.room})})}updateLocalAudio(e){return A(this,null,function*(){if(!this._localAudioTrack||!this._localAudioConfig)return;let{publish:r,mute:o,option:s}=e,n={};s&&(s.microphoneId?yield this._localAudioTrack.switchDevice(s.microphoneId):P(s.audioTrack)||(yield this._localAudioTrack.setInputMediaStreamTrack(s.audioTrack)),P(s.captureVolume)||this._localAudioTrack.setCaptureVolume(s.captureVolume),P(s.earMonitorVolume)||(n.muted=!(s.earMonitorVolume>0),n.volume=s.earMonitorVolume),yield this._localAudioTrack.update3A(s)),this._room.isJoined&&!P(r)&&(r&&!this._localAudioConfig.publish&&this._room.publish(this._localAudioTrack).catch(()=>{}),this._localAudioConfig.publish&&!r&&this._room.unpublish(this._localAudioTrack).catch(()=>{})),P(o)||this._localAudioTrack.setMute(o),yield this._updateAudioPlayOption({playOption:n,track:this._localAudioTrack,prevConfig:this._localAudioConfig}),ur(this._localAudioConfig,e)})}stopLocalAudio(){return A(this,null,function*(){this._localAudioTrack&&(this._room.isJoined&&(yield this._room.unpublish(this._localAudioTrack).catch(()=>{})),V.emit("114",{userId:"",room:this.room}),this._localAudioTrack.stop(),this._localAudioTrack.close(),this._room.audioManager.removeInput(this._localAudioTrack),ht(this._localAudioTrack),this._localAudioTrack=null,this._localAudioConfig=null)})}startLocalVideo(){return A(this,arguments,function*(e={publish:!0,view:null,capture:!0}){var g;if(this._localVideoTrack){this._log.warn("local video is already started");return}let{view:r,publish:o=!0,capture:s=!0,mute:n,option:c}=e,l=new Cr(this._room.videoManager),m={},E={};st(c==null?void 0:c.avoidCropping)&&(l.avoidCropping=c.avoidCropping),c&&(c.cameraId?m.deviceId=c.cameraId:P(c.useFrontCamera)?P(c.videoTrack)||(m.customSource=c.videoTrack):m.facingMode=c.useFrontCamera?N.FACING_MODE_USER:N.FACING_MODE_ENVIRONMENT,P(c.retryWhenExactFailed)||(m.retryWhenExactFailed=c.retryWhenExactFailed),c.qosPreference&&(m.contentHint=Oa(c.qosPreference)),P(c.profile)||(we(c.profile)?Ir[c.profile]&&l.setProfile(Ir[c.profile]):l.setProfile(c.profile)),P(c.fillMode)||(E.objectFit=c.fillMode),P(c.mirror)||(E.mirror=c.mirror),P(c.small)||(P(c.smallMode)||(this._room.smallMode=c.smallMode),st(c.small)&&c.small===!1?l.stopSmall():l.updateSmallConfig(sn(c.small,!0))),P(c.rotation)||l.setRotation(c.rotation)),l.once("first-video-frame",_=>{this.emit(re.FIRST_VIDEO_FRAME,Ee(q({},_),{streamType:co(_.streamType)}))}),l.on("5",_=>{this.emit(re.ERROR,new ne({code:le.DEVICE_ERROR,extraCode:5308,messageParams:{error:_}}))}),l.on("2",_=>{this.emit(re.DEVICE_CHANGED,{type:"camera",action:"active",device:_})}),l.on("4",_=>{let v;_.error&&(v=ne.convertFrom(_.error)),this.emit(re.PUBLISH_STATE_CHANGED,Ee(q({},_),{error:v}))}),this._listenOutputTrackChanged(l),s?yield l.capture(m):(g=l.manager)==null||g.changeInput(l),P(n)||(yield l.setMute(n)),Vt(l,l).add("player-state-changed",_=>{this.emit(re.VIDEO_PLAY_STATE_CHANGED,Ee(q({},_),{userId:"",streamType:"main"}))}),o&&this._room.isJoined&&this._room.publish(l).catch(()=>{}),this._localVideoTrack=l,this._localVideoConfig=Ee(q({},e),{view:r,publish:o,capture:s}),yield this._updateVideoPlayOption({view:r,playOption:E,track:l})})}updateLocalVideo(e){return A(this,null,function*(){var m,E,g;if(!this._localVideoTrack||!this._localVideoConfig)return;let{view:r,publish:o,mute:s,capture:n,option:c}=e,l={};if(this._localVideoConfig.capture)n!==!1?c!=null&&c.cameraId?yield this._localVideoTrack.switchDevice(c==null?void 0:c.cameraId):P(c==null?void 0:c.useFrontCamera)?P(c==null?void 0:c.videoTrack)||(yield this._localVideoTrack.setInputMediaStreamTrack(c==null?void 0:c.videoTrack)):yield this._localVideoTrack.switchDevice(c!=null&&c.useFrontCamera?N.FACING_MODE_USER:N.FACING_MODE_ENVIRONMENT):this._localVideoTrack.stopCapture();else if(n){let _={};_.deviceId=(c==null?void 0:c.cameraId)||((m=this._localVideoConfig.option)==null?void 0:m.cameraId),_.facingMode=c!=null&&c.useFrontCamera||(E=this._localVideoConfig.option)!=null&&E.useFrontCamera?N.FACING_MODE_USER:N.FACING_MODE_ENVIRONMENT,_.customSource=(c==null?void 0:c.videoTrack)||((g=this._localVideoConfig.option)==null?void 0:g.videoTrack),yield this._localVideoTrack.capture(_)}c&&(P(c.profile)||(we(c.profile)?Ir[c.profile]&&this._localVideoTrack.setProfile(Ir[c.profile]):this._localVideoTrack.setProfile(c.profile),(!c.cameraId||!this._localVideoTrack.isNeedToSwitchDevice(c.cameraId))&&P(c.useFrontCamera)&&(yield this._localVideoTrack.applyProfile())),P(c.fillMode)||(l.objectFit=c.fillMode),P(c.mirror)||(l.mirror=c.mirror),P(c.rotation)||this._localVideoTrack.setRotation(c.rotation),c.qosPreference&&this._localVideoTrack.mediaTrack&&this._localVideoTrack.setContentHint(Oa(c.qosPreference)),P(c.small)||(st(c.small)&&!c.small?this._localVideoTrack.stopSmall():this._localVideoTrack.updateSmallConfig(sn(c.small,!0)))),this._room.isJoined&&P(o)&&this._localVideoConfig.publish&&n&&!this._localVideoConfig.capture&&this._room.publish(this._localVideoTrack).catch(()=>{}),this._room.isJoined&&((o!=null?o:this._localVideoConfig.publish)?this._room.publish(this._localVideoTrack).catch(()=>{}):this._room.unpublish(this._localVideoTrack).catch(()=>{})),P(s)||(yield this._localVideoTrack.setMute(s)),yield this._updateVideoPlayOption({view:r,playOption:l,track:this._localVideoTrack,prevConfig:this._localVideoConfig}),ur(this._localVideoConfig,e)})}stopLocalVideo(){return A(this,null,function*(){this._localVideoTrack&&(this._room.isJoined&&(yield this._room.unpublish(this._localVideoTrack).catch(()=>{})),this._localVideoTrack.stop(),this._localVideoTrack.close(),ht(this._localVideoTrack),this._localVideoTrack=null,this._localVideoConfig=null)})}startScreenShare(){return A(this,arguments,function*(e={publish:!0,view:null}){if(this._localScreenTrack){this._log.warn("screen share is already started");return}let{view:r=null,publish:o=!0,option:s}=e,n=new ro(this._room.videoManager);n.on("4",g=>{let _;g.error&&(_=ne.convertFrom(g.error)),this.emit(re.PUBLISH_STATE_CHANGED,Ee(q({},g),{error:_}))}),n.once("first-video-frame",g=>{this.emit(re.FIRST_VIDEO_FRAME,Ee(q({},g),{streamType:co(g.streamType)}))}),this._listenOutputTrackChanged(n),e.streamType==="main"&&(n.mediaType=4);let c=null,l={},m={};s&&(P(s.profile)||(we(s.profile)?hc[s.profile]&&n.setProfile(hc[s.profile]):n.setProfile(s.profile)),s.systemAudio&&(l.systemAudio=!0,l.echoCancellation=s.echoCancellation,l.noiseSuppression=s.noiseSuppression,l.autoGainControl=s.autoGainControl),P(s.fillMode)||(m.objectFit=s.fillMode),s.videoTrack&&(l.videoTrack=s.videoTrack),s.audioTrack&&(l.audioTrack=s.audioTrack),s.captureElement&&(l.captureElement=s.captureElement),s.preferDisplaySurface&&(l.preferDisplaySurface=s.preferDisplaySurface),s.qosPreference&&(l.contentHint=Oa(s.qosPreference)));let E=yield n.capture(l);if(n.mediaTrack.addEventListener(N.ENDED,()=>{this._stopScreenShare(),this.emit(re.SCREEN_SHARE_STOPPED)}),E.getAudioTracks()[0]&&(c=new Zo(this._room.audioManager),yield c.setInputMediaStreamTrack(E.getAudioTracks()[0]),this._speakerId&&c.setAudioOutput(this._speakerId)),Vt(n,n).add("player-state-changed",g=>{this.emit(re.VIDEO_PLAY_STATE_CHANGED,Ee(q({},g),{userId:"",streamType:"sub"}))}),o&&this._room.isJoined){let g=[n];c&&(g.push(c),this._checkScreenAudioEchoCancellation(n,c)),this._room.publish(...g).catch(()=>{})}this._localScreenTrack=n,this._localScreenAudioTrack=c,this._localScreenConfig=Ee(q({},e),{view:r,publish:o}),yield this._updateVideoPlayOption({view:r,playOption:m,track:n})})}updateScreenShare(e){return A(this,null,function*(){if(!this._localScreenTrack||!this._localScreenConfig)return;let{view:r,publish:o,option:s}=e,n={};if(s&&(P(s.fillMode)||(n.objectFit=s.fillMode),s.qosPreference)){let c=Oa(s.qosPreference);this._localScreenTrack.setContentHint(c)}this._room.isJoined&&!P(o)&&(o&&!this._localScreenConfig.publish&&(this._room.publish(this._localScreenTrack).catch(()=>{}),this._localScreenAudioTrack&&this._room.publish(this._localScreenAudioTrack).catch(()=>{})),this._localScreenConfig.publish&&!o&&(this._room.unpublish(this._localScreenTrack).catch(()=>{}),this._localScreenAudioTrack&&this._room.unpublish(this._localScreenAudioTrack).catch(()=>{}))),yield this._updateVideoPlayOption({view:r,playOption:n,track:this._localScreenTrack,prevConfig:this._localScreenConfig}),ur(this._localScreenConfig,e)})}stopScreenShare(){return A(this,null,function*(){return yield this._stopScreenShare()})}startRemoteVideo(e){return A(this,null,function*(){let{view:r,userId:o,streamType:s,option:n}=e,c=`${o}_${s}`;if(this._remoteVideoConfigMap.has(c)){this._log.warn(`remote video has already started. userId:${o}, streamType:${s}`);return}let l=this._room.remotePublishedUserMap.get(o);if(!l)return;let m={},E=s==="main"?l.remoteVideoTrack:l.remoteAuxiliaryTrack;this._listenOutputTrackChanged(E),n&&(P(n.fillMode)||(m.objectFit=n.fillMode),P(n.mirror)||(m.mirror=n.mirror),P(n.poster)||(m.poster=n.poster),m.canvasRender=n.canvasRender,s==="main"&&!P(n.small)&&(!l.remoteVideoTrack.isSubscribing&&!l.remoteVideoTrack.isSubscribed&&l.remoteVideoTrack.setMediaType(n.small?8:4),this._room.changeType(n.small,E.user))),yield this._room.subscribe(E),yield this._enableVideoDecodeFallback(E,s),yield this._updateVideoPlayOption({view:r,playOption:m,track:E}),this._emitTrackEvent(E),this._remoteVideoConfigMap.set(c,{config:e}),n&&!P(n.receiveWhenViewVisible)&&this._observeView({remoteTrack:E,view:r,receiveWhenViewVisible:n.receiveWhenViewVisible,viewRoot:n==null?void 0:n.viewRoot})})}updateRemoteVideo(e){return A(this,null,function*(){var M,B;let{view:r,userId:o,streamType:s,option:n}=e,c=`${o}_${s}`,l=this._remoteVideoConfigMap.get(c);if(!l||!this._room.remotePublishedUserMap.has(o))return;let m={};n&&(P(n.fillMode)||(m.objectFit=n.fillMode),P(n.mirror)||(m.mirror=n.mirror));let E=null,g=this._room.remotePublishedUserMap.get(o);if(s==="main"&&(g!=null&&g.muteState.hasVideo)&&(E=g.remoteVideoTrack),s==="sub"&&(g!=null&&g.muteState.hasAuxiliary)&&(E=g.remoteAuxiliaryTrack),!E)return;let{config:_}=l;s==="main"&&n&&!P(n.small)&&this._room.changeType(n.small,E.user),yield this._updateVideoPlayOption({view:r,playOption:m,track:E,prevConfig:_}),ur(_,e);let v=P(n==null?void 0:n.receiveWhenViewVisible)?(M=_.option)==null?void 0:M.receiveWhenViewVisible:n.receiveWhenViewVisible,L=P(r)?_.view:r,x=P(n==null?void 0:n.viewRoot)?(B=_.option)==null?void 0:B.viewRoot:n.viewRoot;this._observeView({remoteTrack:E,view:L,receiveWhenViewVisible:v,viewRoot:x})})}stopRemoteVideo(e){return A(this,null,function*(){return this._stopRemoteVideo(e)})}_stopRemoteVideo(e,r=!0){return A(this,null,function*(){let o=[],s=this._room.remotePublishedUserMap.get(e.userId);if(s){let{muteState:n,remoteVideoTrack:c,remoteAuxiliaryTrack:l}=s;e.streamType==="main"&&(c.stop(),n.hasVideo&&o.push(c)),e.streamType==="sub"&&(l.stop(),n.hasAuxiliary&&o.push(l))}for(let n of o)r&&(yield this._room.unsubscribe(n),this._mediaTrackMap.delete(n.outMediaTrack));this._removeRemoteVideoConfig(e.userId,e.streamType)})}_removeRemoteVideoConfig(e,r){let o=`${e}_${r}`,s=this._remoteVideoConfigMap.get(o);s&&s.observer&&s.observer.disconnect(),this._remoteVideoConfigMap.delete(o)}muteRemoteAudio(e,r){return A(this,null,function*(){this._remoteAudioMuteMap.set(e,r);try{if(e==="*")if(r)yield this._stopRemoteAudio({userId:e});else{let o=[...this._room.remotePublishedUserMap.values()];for(let s of o)s.muteState.hasAudio&&!this._remoteAudioConfigMap.has(s.userId)&&(yield this._startRemoteAudio({userId:s.userId}))}else r?yield this._stopRemoteAudio({userId:e}):this._remoteAudioConfigMap.has(e)||(yield this._startRemoteAudio({userId:e}))}catch(o){throw this._remoteAudioMuteMap.delete(e),o}})}setRemoteAudioVolume(e,r){if(e==="*"){let o=[...this._room.remotePublishedUserMap.values()];for(let s of o)this._remoteAudioVolumeMap.set(s.userId,r),s.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:r},track:s.remoteAudioTrack})}else if(e){let o=this._room.remotePublishedUserMap.get(e);this._remoteAudioVolumeMap.set(e,r),o&&o.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:r},track:o.remoteAudioTrack})}}startPlugin(e,r){return A(this,null,function*(){return e.start(r)})}updatePlugin(e,r){return A(this,null,function*(){return e.update(r)})}stopPlugin(e,r){return A(this,null,function*(){return e.stop(r)})}enableAudioVolumeEvaluation(e=2e3,r=!1){this._room.enableAudioVolumeEvaluation(e,r)}on(e,r,o){if(this.listeners(e).includes(r))return this;if(this._log.debug("on",e),super.on(e,r,o),this._eventListened.add(e),this.listeners(re.AUDIO_FRAME).length>0){let{audioFrameEventConfigMap:s}=this.room.audioManager;s.get("")||s.set("",{enable:!0}),this._localAudioTrack&&this.room.audioManager.handleLocalTrackStarted({userId:"",room:this.room})}return this}emit(e,...r){try{dg.has(e)&&this._log.debug(`emit ${e} ${JSON.stringify(r)}`)}catch(o){}return super.emit(e,...r)}off(e,r,o){if(this._log.debug("off",e),e==="*"?(this._eventListened.clear(),this.removeAllListeners()):super.off(e,r,o),(e===Se.EVENT.AUDIO_FRAME||e==="*")&&this.listeners(Se.EVENT.AUDIO_FRAME).length===0){let{getPCMAbortCtrlMap:s}=this.room.audioManager;s.forEach(n=>{n==null||n.abort("off")}),s.clear()}return this}getAudioTrack(e={userId:"",streamType:"main"}){let r,o=null,s="main",n=!1;if(we(e)?r=e:(r=e.userId,n=e.processed===!0,e.streamType&&(s=e.streamType)),r){let c=this._room.remotePublishedUserMap.get(r);c&&(o=c.remoteAudioTrack)}else o=s==="sub"?this._localScreenAudioTrack:this._localAudioTrack;return o?n&&o.outMediaTrack&&o.outMediaTrack!==o.mediaTrack?o.outMediaTrack.clone():o.mediaTrack:null}getVideoTrack(e={userId:"",streamType:"main"}){let{userId:r="",streamType:o="main",processed:s=!1}=e,n=null;if(r==="")o==="main"&&this._localVideoTrack&&(n=this._localVideoTrack),o==="sub"&&this._localScreenTrack&&(n=this._localScreenTrack);else{let c=this._room.remotePublishedUserMap.get(r);c&&(n=o==="main"?c.remoteVideoTrack:c.remoteAuxiliaryTrack)}return n?s&&n.outMediaTrack&&n.outMediaTrack!==n.mediaTrack?n.outMediaTrack.clone():n.mediaTrack:null}getVideoSnapshot(e={}){let{userId:r,streamType:o="main"}=e;if(r){let s=this._room.remotePublishedUserMap.get(r);if(o==="main"&&(s!=null&&s.muteState.hasVideo))return s.remoteVideoTrack.getVideoFrame();if(o==="sub"&&(s!=null&&s.muteState.hasAuxiliary))return s.remoteAuxiliaryTrack.getVideoFrame()}else{if(o==="main"&&this._localVideoTrack)return this._localVideoTrack.getVideoFrame();if(o==="sub"&&this._localScreenTrack)return this._localScreenTrack.getVideoFrame()}return""}_setCurrentSpeaker(e){var r,o;this._speakerId=e,(r=this._localAudioTrack)==null||r.setAudioOutput(e),(o=this._localScreenAudioTrack)==null||o.setAudioOutput(e),this._room.remotePublishedUserMap.forEach(s=>s.remoteAudioTrack.setAudioOutput(e))}setCurrentSpeaker(e){return A(this,null,function*(){(yield eo()).forEach(o=>{o.deviceId===e&&(this._setCurrentSpeaker(e),this.emit(re.DEVICE_CHANGED,{type:"speaker",action:"active",device:o}),Ct=o)}),this._log.warn('the "setCurrentSpeaker" method of the instance will be deprecated in the future, please use "TRTC.setCurrentSpeaker" instead. For more information, please visit: https://web.sdk.qcloud.com/trtc/webrtc/v5/doc/en/TRTC.html#.setCurrentSpeaker')})}_startRemoteAudio(e){return this._doStartRemoteAudio(e)}_doStartRemoteAudio(e){return A(this,null,function*(){let{userId:r}=e;if(this._remoteAudioConfigMap.has(r)){this._log.warn(`remote audio has already started. userId:${r}`);return}let o=this._room.remotePublishedUserMap.get(r);if(!o)return;let s={},n=o.remoteAudioTrack;this._listenOutputTrackChanged(n),this._speakerId&&n.setAudioOutput(this._speakerId);try{let c=this._remoteAudioVolumeMap.get(r),l=Pe(c)?c:100;s.volume=l,this._remoteAudioConfigMap.set(r,e),yield this._room.subscribe(n),be(Ce(n,"decode-failed"),Ye(Ce(n,de.INIT)),Le(()=>{this.startPlugin(Ua.Name,{track:n,type:"auto",config:{codec:"opus",sampleRate:48e3,numberOfChannels:1}})})),yield this._updateAudioPlayOption({playOption:s,track:n}),V.emit("115",{userId:r,room:this.room}),n.outMediaTrack&&this.room.audioManager.updateAudioReference({type:"add",audioReference:n.outMediaTrack,refId:`ra-${r}`})}catch(c){throw this._remoteAudioConfigMap.delete(r),c}this._emitTrackEvent(n)})}_stopRemoteAudio(e,r=!0){return A(this,null,function*(){let o=this._room.remotePublishedUserMap.get(e.userId);o&&(o.remoteAudioTrack.stop(),o.muteState.hasAudio&&r&&(yield this._room.unsubscribe(o.remoteAudioTrack)),this._mediaTrackMap.delete(o.remoteAudioTrack.outMediaTrack)),this._remoteAudioConfigMap.delete(`${e.userId}`),V.emit("116",{userId:e.userId,room:this.room}),this.room.audioManager.updateAudioReference({type:"remove",refId:`ra-${e.userId}`})})}_enableVideoDecodeFallback(e,r){let o=this._room.videoDecodeFallbackType;if(!o||!this._plugins.has("TRTCVideoDecoder"))return;e.log.debug("remote video will fall back when decode failed",e.id);let s;be(Ce(e,"decode-failed"),Ye(Ce(e,de.INIT)),va(()=>{this.startPlugin("TRTCVideoDecoder",{type:"auto",renderer:"videoFrame",track:e,config:{codec:"avc1.420028"},fallback:o})}),Si(Ce(e,"decode-downgrade-state-changed")),Le(n=>{s=n.state,this.emit(re.VIDEO_DECODE_DOWNGRADE_STATE_CHANGED,Ee(q({},n),{streamType:r,userId:e.userId}))},n=>{e.log.error("fallback",n)},()=>{s==="STARTED"&&e.log.info("fallback complete")}))}_updateVideoPlayOption(n){return A(this,arguments,function*({view:e,playOption:r,track:o,prevConfig:s}){if(o.setMirror(r.mirror),P(e)&&s&&s.view&&!Cs(r)){let c=Ds(s.view);c.length>0&&(yield o.play(c,r))}if(!P(e)){let c=Ds(e);c.length>0?yield o.play(c,r):o.stop()}})}_updateAudioPlayOption(s){return A(this,arguments,function*({playOption:e={},track:r,prevConfig:o}){if(!r.isPlayCalled)try{yield r.play(null,e)}catch(n){}if(P(e.muted)||r.setPlayerMute(e.muted),P(e.volume)||r.setAudioVolume(e.volume/100),r instanceof Gr&&r.mediaTrack){let n=e.muted===!1&&!P(e.volume)&&e.volume>0?"add":"remove";this.room.audioManager.updateAudioReference({type:n,audioReference:r.mediaTrack,refId:"em"})}else if(r instanceof Ti){let n=e.muted?0:e.volume;if(P(n))return;this.room.audioManager.updateAudioReference({type:"updateVolume",refId:`ra-${r.userId}`,volume:e.volume})}})}_listenOutputTrackChanged(e){e.listeners("output-media-track-changed").length===0&&e.on("output-media-track-changed",()=>this._emitTrackEvent(e,!1))}_emitTrackEvent(e,r=!0){let o=e.isRemote?e.userId:"";e.outMediaTrack&&(r&&this._mediaTrackMap.get(e.outMediaTrack)===o||(this._mediaTrackMap.set(e.outMediaTrack,o),this.emit(re.TRACK,{userId:o,streamType:co(e.streamType),track:e.outMediaTrack,sourceTrack:e.mediaTrack})))}_checkTrackToPublish(){var r,o,s;let e=[];if((r=this._localAudioConfig)!=null&&r.publish&&this._localAudioTrack&&e.push(this._localAudioTrack),(o=this._localVideoConfig)!=null&&o.publish&&this._localVideoTrack&&e.push(this._localVideoTrack),(s=this._localScreenConfig)!=null&&s.publish&&(this._localScreenTrack&&e.push(this._localScreenTrack),this._localScreenAudioTrack&&e.push(this._localScreenAudioTrack),this._checkScreenAudioEchoCancellation(this._localScreenTrack,this._localScreenAudioTrack)),e.length!==0)return this._room.publish(...e).catch(()=>{})}_observeView({remoteTrack:e,view:r,receiveWhenViewVisible:o=!1,viewRoot:s}){if(P(r))return;let n=this._remoteVideoConfigMap.get(`${e.userId}_${co(e.streamType)}`);if(!n)return;let c=n.observer||void 0;if(r===null||ot(r)&&r.length===0||!o){c==null||c.disconnect(),e.isSubscribed||this._room.subscribe(e).catch(()=>{});return}let m=n.visibleViewMap||new Map,E=-1;(!c||c.root!==s)&&(c==null||c.disconnect(),m.clear(),c=new IntersectionObserver(_=>{_.forEach(v=>{m.set(v.target,v.isIntersecting),e.log.info(`view ${v.target.id} is${v.isIntersecting?"":" not"} visible`)}),clearTimeout(E),E=window.setTimeout(()=>{[...m.values()].find(L=>L)?e.isSubscribed||this._room.subscribe(e).catch(()=>{}):e.isSubscribed&&this._room.unsubscribe(e).catch(()=>{})},200)},{root:s}));let g=new Set(Ds(r));m.forEach((_,v)=>{g.has(v)||(c.unobserve(v),m.delete(v))}),g.forEach(_=>{m.set(_,!0),c.observe(_)}),c.takeRecords().forEach(_=>{m.set(_.target,_.isIntersecting)}),n.visibleViewMap=m,n.observer=c}_exitRoom(){return A(this,null,function*(){this._room.isJoined&&(yield this._room.leave()),new Set([...this._remoteAudioConfigMap.keys(),...this._remoteAudioMuteMap.keys()]).forEach(e=>{this._stopRemoteAudio({userId:e}).catch()}),[...this._remoteVideoConfigMap.keys()].forEach(e=>{let r=e.includes("main")?"main":"sub",o=e.split(`_${r}`)[0];o&&this._stopRemoteVideo({userId:o,streamType:r}).catch()}),this._remoteVideoConfigMap.clear(),this._remoteAudioConfigMap.clear(),this._remoteAudioMuteMap.clear(),this._remoteAudioVolumeMap.clear(),fg(this),this._room.remotePublishedUserMap.forEach(e=>{ht(e.remoteAudioTrack),ht(e.remoteVideoTrack),ht(e.remoteAuxiliaryTrack)})})}_stopScreenShare(){return A(this,null,function*(){var e,r;if(this._localScreenTrack){if(this._room.isJoined){let o=[this._localScreenTrack];this._localScreenAudioTrack&&o.push(this._localScreenAudioTrack),yield(e=this._room)==null?void 0:e.unpublish(...o).catch(()=>{})}this._localScreenTrack.stop(),this._localScreenTrack.close(),this._localScreenAudioTrack&&(((r=this._localScreenAudioTrack.trackSettings)==null?void 0:r.echoCancellation)===!1&&this.stopPlugin("AudioProcessor"),this._localScreenAudioTrack.stop(),this._localScreenAudioTrack.close(),this._room.audioManager.removeInput(this._localScreenAudioTrack),this._localScreenAudioTrack=null),ht(this._localScreenTrack),this._localScreenTrack=null,this._localScreenConfig=null}})}_checkScreenAudioEchoCancellation(e,r){return A(this,null,function*(){var s,n;if(!e||!r)return;let o=(s=e.trackSettings)==null?void 0:s.displaySurface;if(((n=r.trackSettings)==null?void 0:n.echoCancellation)===!1&&(o==="monitor"||o==="browser"&&e.isShareCurrentTab)){this._log.warn("echoCancellation of screen audio track is disable. Try starting audioProcessor plugin");try{yield this.startPlugin("AudioProcessor",{sdkAppId:Number(this.room.sdkAppId),userId:this._room.userId,userSig:this.room.userSig,isScreenAudioNeedAudioProcess:!0,isLocalAudioNeedAudioProcess:!1})}catch(c){this._log.warn("start audioProcessor plugin failed: ",c)}}})}_onLocalTrackCaptured({track:e}){e.kind==="audio"&&(!Ct||Qs(Ct))&&(this._initActiveSpeaker(),V.off("102",this._onLocalTrackCaptured,this))}_initActiveSpeaker(){return A(this,null,function*(){if(Ct&&!Qs(Ct))this.emit(re.DEVICE_CHANGED,{type:"speaker",action:"active",device:Ct});else{let e=yield eo();e[0]&&!Qs(e[0])?(Ct=e[0],this.emit(re.DEVICE_CHANGED,{type:"speaker",action:"active",device:e[0]})):V.on("102",this._onLocalTrackCaptured,this)}})}_onAudioAvailable({userId:e}){let r=this._remoteAudioMuteMap.has(e)?this._remoteAudioMuteMap.get(e):this._remoteAudioMuteMap.get("*");(r===!1||this._room.autoReceiveAudio&&!r)&&this._doStartRemoteAudio({userId:e}).catch(()=>{})}_onVideoAvailable({userId:e,streamType:r}){if(!this._room.autoReceiveVideo)return;let o=this._room.remotePublishedUserMap.get(e);if(o){let s=r==="main"?o.remoteVideoTrack:o.remoteAuxiliaryTrack,n=[s];this._room.autoReceiveAudio&&o.remoteAudioTrack.isAvailable&&n.push(o.remoteAudioTrack),this._room.subscribe(...n).then(()=>{this._emitTrackEvent(s)}).catch(()=>{})}}_onAudioUnavailable({userId:e,muteState:r}){r.hasAudio&&r.audioMuted||this._stopRemoteAudio({userId:e},!1).catch(()=>{})}_onVideoUnavailable({userId:e,streamType:r}){this._stopRemoteVideo({userId:e,streamType:r},!1).catch(()=>{})}sendSEIMessage(e,r){var s;let o=this._plugins.get("SEI");o&&(o.update({buffer:e,options:Ee(q({seiPayloadType:243},r),{small:!!((s=this._localVideoTrack)!=null&&s.small)})}),Q.addCount({key:5e5,useUV:!0}))}sendCustomMessage(e){var r,o;(o=(r=this._room).sendCustomMessage)==null||o.call(r,e),Q.addCount({key:500001,useUV:!0})}callExperimentalAPI(e,r){return A(this,null,function*(){return this._log.info(`callExperimentalAPI(${e}, ${JSON.stringify(r)})`),bg.call(e,q({trtcInstance:this},r))})}static setLogLevel(e,r){$.setLogLevel(e),P(r)||(r?$.enableUploadLog():$.disableUploadLog())}static isSupported(){return nd()}static getCameraList(e=!0){return or(e)}static getMicrophoneList(e=!0){return Qt(e)}static getSpeakerList(e=!0){return eo(e)}static setCurrentSpeaker(e){return A(this,null,function*(){if(mt&&(e===pr.SPEAKER||e===pr.HEADSET)){let o=yield Se.getMicrophoneList(),s="";if(o.forEach(n=>{n.label===e&&(s=n.deviceId)}),!s)return;Va.forEach(n=>A(this,null,function*(){n._localAudioTrack&&(yield n.updateLocalAudio({option:{microphoneId:s}}))}));return}(yield eo()).forEach(o=>{o.deviceId===e&&(Va.forEach(s=>{s._setCurrentSpeaker(e),s.emit(re.DEVICE_CHANGED,{type:"speaker",action:"active",device:o})}),Ct=o)})})}static _addKVStat({type:e,key:r,value:o,base:s,useUV:n,version:c,max:l}){switch(c&&(jo.version=c),e){case"count":jo.addCount({key:r,useUV:n});break;case"enum":jo.addEnum({key:r,value:o,useUV:n});break;case"number":jo.addNumber({key:r,value:o,split:s,max:l});break}}};u(Se,"_loggerManager",$),u(Se,"EVENT",re),u(Se,"ERROR_CODE",le),u(Se,"TYPE",pr),u(Se,"frameWorkType",30),Z([tt({replaceArg:e=>({argIndex:0,value:{name:"plugin"in e?e.plugin.Name:e.Name,assetsPath:"assetsPath"in e?e==null?void 0:e.assetsPath:"default"}})})],Se.prototype,"use",1),Z([Mt(yt.TRTC.enterRoom),lo("room",([e],[r])=>(e.roomId||e.strRoomId)===(r.roomId||r.strRoomId)&&e.userId===r.userId&&e.sdkAppId===r.sdkAppId),Oe(e=>function(r){return this._log.setUserId(r.userId),this._log.setSdkAppId(r.sdkAppId),e.call(this,r)}),tt()],Se.prototype,"enterRoom",1),Z([tt()],Se.prototype,"exitRoom",1),Z([Mt(yt.TRTC.switchRoom),tt(),yd()],Se.prototype,"switchRoom",1),Z([Mt(yt.TRTC.switchRole),ns("room",{merge:(e,r)=>r}),tt()],Se.prototype,"switchRole",1),Z([tt()],Se.prototype,"destroy",1),Z([Mt(yt.TRTC.startLocalAudio),lo("audio",([e],[r])=>{var o,s;return((o=e==null?void 0:e.option)==null?void 0:o.microphoneId)===((s=r==null?void 0:r.option)==null?void 0:s.microphoneId)}),tt()],Se.prototype,"startLocalAudio",1),Z([Mt(yt.TRTC.updateLocalAudio),ns("audio",{debounce:{delay:200,getKey:()=>`${Rg}-localAudio`,isNeedToDebounce:e=>{var r;return!P((r=e.option)==null?void 0:r.captureVolume)}}}),tt()],Se.prototype,"updateLocalAudio",1),Z([mo("audio"),tt()],Se.prototype,"stopLocalAudio",1),Z([Mt(yt.TRTC.startLocalVideo),lo("video",([e],[r])=>{var o,s;return((o=e==null?void 0:e.option)==null?void 0:o.cameraId)===((s=r==null?void 0:r.option)==null?void 0:s.cameraId)}),tt()],Se.prototype,"startLocalVideo",1),Z([Mt(yt.TRTC.updateLocalVideo),ns("video"),tt()],Se.prototype,"updateLocalVideo",1),Z([mo("video"),tt()],Se.prototype,"stopLocalVideo",1),Z([Mt(yt.TRTC.startScreenShare),lo("screen",()=>!0),tt()],Se.prototype,"startScreenShare",1),Z([Mt(yt.TRTC.updateScreenShare),ns("screen"),tt()],Se.prototype,"updateScreenShare",1),Z([tt()],Se.prototype,"stopScreenShare",1),Z([Mt(yt.TRTC.startRemoteVideo),lo(e=>`v${e.userId}${e.streamType}`,()=>!0),tt({getRemoteId:e=>`${e.userId}_${e.streamType}`})],Se.prototype,"startRemoteVideo",1),Z([Mt(yt.TRTC.updateRemoteVideo),ns(e=>`v${e.userId}${e.streamType}`),tt({getRemoteId:e=>`${e.userId}_${e.streamType}`})],Se.prototype,"updateRemoteVideo",1),Z([Mt(yt.TRTC.stopRemoteVideo),Oe(e=>function(r){return A(this,null,function*(){if(r.userId==="*"){let o=[];return this._room.remotePublishedUserMap.forEach(s=>{this._remoteVideoConfigMap.has(`${s.userId}_main`)&&o.push(this.stopRemoteVideo({streamType:"main",userId:s.userId}).catch(()=>{})),this._remoteVideoConfigMap.has(`${s.userId}_sub`)&&o.push(this.stopRemoteVideo({streamType:"sub",userId:s.userId}).catch(()=>{}))}),Promise.all(o)}return e.call(this,r)})}),tt({getRemoteId:e=>`${e.userId}_${e.streamType}`})],Se.prototype,"stopRemoteVideo",1),Z([mo(e=>`v${e.userId}${e.streamType}`)],Se.prototype,"_stopRemoteVideo",1),Z([Mt(...yt.TRTC.muteRemoteAudio),tt({getRemoteId:e=>e})],Se.prototype,"muteRemoteAudio",1),Z([up(...yt.TRTC.setRemoteAudioVolume),gg(200,e=>e),tt({getRemoteId:e=>e})],Se.prototype,"setRemoteAudioVolume",1),Z([iu("start"),to(e=>{var r;return(r=e.afterStart)==null?void 0:r.call(e)}),lo((e,r)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(r)),tt({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>$l[e.getName()],ignoreLog:e=>e.getName()==="Debug",ignoreErrorLog:e=>e.getName()==="AudioProcessor"})],Se.prototype,"startPlugin",1),Z([iu("update"),ns((e,r)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(r)),tt({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>Bl[e.getName()]})],Se.prototype,"updatePlugin",1),Z([iu("stop"),mo((e,r)=>{if(e.disableRandomCall)return null;let o=e.getGroup(r),s=e.getAlias();return o==="*"?new RegExp(`${s}.*`):s+o}),tt({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>Hl[e.getName()]})],Se.prototype,"stopPlugin",1),Z([up(...yt.TRTC.enableAudioVolumeEvaluation)],Se.prototype,"enableAudioVolumeEvaluation",1),Z([tt()],Se.prototype,"getVideoSnapshot",1),Z([tt()],Se.prototype,"_setCurrentSpeaker",1),Z([lo(e=>`a${e.userId}`,()=>!0)],Se.prototype,"_startRemoteAudio",1),Z([Oe(e=>function(r){return A(this,null,function*(){return r.userId==="*"?Promise.all([...this._room.remotePublishedUserMap.values()].map(o=>this._stopRemoteAudio(Ee(q({},r),{userId:o.userId})).catch(()=>{}))):e.call(this,r)})}),mo(e=>`a${e.userId}`)],Se.prototype,"_stopRemoteAudio",1),Z([mo("room")],Se.prototype,"_exitRoom",1),Z([mo("screen")],Se.prototype,"_stopScreenShare",1),Z([Mt(...yt.TRTC.sendSEIMessage),ip({timesInSecond:30,maxSizeInSecond:8e3,getSize:(...e)=>e[0].byteLength})],Se.prototype,"sendSEIMessage",1),Z([Mt(yt.TRTC.sendCustomMessage),ip({timesInSecond:30,maxSizeInSecond:8e3,getSize:e=>e.data.byteLength})],Se.prototype,"sendCustomMessage",1),Z([Mt(yt.TRTC.create)],Se,"_create",1);var Sp=Se,un=Sp;var fu=class{constructor(t,e){u(this,"_flag");u(this,"terminalType");u(this,"userId");u(this,"tinyId");u(this,"role");u(this,"remoteAudioTrack");u(this,"remoteVideoTrack");u(this,"remoteAuxiliaryTrack");this.userId=e.userId||"",this.tinyId=e.tinyId||"",this.role=e.role||"audience",this.terminalType=e.terminalType,this.remoteAudioTrack=new Ti(t,this),this.remoteVideoTrack=new no(t,this),this.remoteAuxiliaryTrack=new jd(t,this),this.flag=e.flag||0}get subscribeState(){let t={audio:!1,video:!1,auxiliary:!1,smallVideo:!1};return this.remoteVideoTrack.isSubscribed&&(this.remoteVideoTrack.mediaType&8?t.smallVideo=!0:t.video=!0),this.remoteAudioTrack.isSubscribed&&(t.audio=!0),this.remoteAuxiliaryTrack.isSubscribed&&(t.auxiliary=!0),t}get muteState(){return Ln(this.flag,this.userId)}get flag(){return this._flag}set flag(t){if(t===this._flag)return;let e,r=this.muteState;this._flag=t;let o=this.muteState;for(e in o)r[e]!=o[e]&&console.log(this.userId,e,r[e],"->",o[e]);this.remoteAudioTrack.onFlagChanged(),this.remoteVideoTrack.onFlagChanged(),this.remoteAuxiliaryTrack.onFlagChanged()}};var Ap=class{constructor(){u(this,"_set",new Set);V.on(U.LEAVE_SUCCESS,this.delete,this),V.on(U.SWITCH_ROOM_SUCCESS,this.handleSwitchRoomSuccess,this)}add({room:t,roomId:e}){if(t.scene==="rtc")return;let r=this.getKey(t.userId,e||t.roomId,t.sdkAppId,t.useStringRoomId);this._set.add(r)}delete({room:t,roomId:e}){if(t.scene==="rtc")return;let r=this.getKey(t.userId,t.roomId||e,t.sdkAppId,t.useStringRoomId);this._set.delete(r)}getKey(t,e,r,o){return`${r}_${e}_${t}_${o}`}isJoined({userId:t,roomId:e,sdkAppId:r,room:o}){return o.scene==="rtc"?!1:this._set.has(this.getKey(t,e,r,o.useStringRoomId))}handleSwitchRoomSuccess({room:t,currentRoomId:e,targetRoomId:r}){t.scene!=="rtc"&&(this._set.delete(this.getKey(t.userId,e,t.sdkAppId,t.useStringRoomId)),this._set.add(this.getKey(t.userId,r,t.sdkAppId,t.useStringRoomId)))}};function _S(){return A(this,null,function*(){let i,t;try{let g=yield Qt();i=g&&g.length}catch(g){}try{let g=yield or();t=g&&g.length}catch(g){}let e={microphone:i,camera:t},{isH264EncodeSupported:r,isVp8EncodeSupported:o,isH264DecodeSupported:s,isVp8DecodeSupported:n}=this.checkSystemResult.detail,c=Ki.basis(),l={webRTC:c.isWebRTCSupported,getUserMedia:c.isGetUserMediaSupported,webSocket:c.isWebSocketsSupported,screenShare:c.isScreenShareSupported,webAudio:c.isWebAudioSupported,h264Encode:r,h264Decode:s,vp8Encode:o,vp8Decode:n},m={browser:c.browser,os:c.os,trtc:l,devices:e},E={isWebCodecSupported:c.isWebCodecSupported,isMediaSessionSupported:c.isMediaSessionSupported,isWebTransportSupported:c.isWebTransportSupported};je.uploadEvent({log:`trtcstats-${JSON.stringify(m)}`,userId:this.userId}),this._log.info(`TrtcStats-${JSON.stringify(m)}`),je.uploadEvent({log:`trtcadvancedstats-${JSON.stringify(E)}`,userId:this.userId})})}function Cg(){return Oe(i=>{let t=new Ap;return function(e,r,o){return A(this,null,function*(){let s=String(e.roomId||e.strRoomId);if(this.userId=e.userId,this.sdkAppId=e.sdkAppId,this.userSig=e.userSig,this._log.setSdkAppId(this.sdkAppId),this._log.setUserId(this.userId),this.scene=r,e.privateMapKey=e.privateMapKey||"",this.isJoined)throw new ue({code:J.INVALID_OPERATION,message:Be({key:$e.INVALID_JOIN})});if(this.checkDestroy(),t.isJoined({userId:this.userId,roomId:s,sdkAppId:this.sdkAppId,room:this}))throw new ue({code:J.INVALID_OPERATION,message:Be({key:$e.REPEAT_JOIN,data:this.userId})});t.add({room:this,roomId:s}),this.role=e.role===21?"audience":"anchor",this._log.info(`Join() => joining room: ${s} useStringRoomId: ${this.useStringRoomId} scene: ${this.scene} role: ${this.role}`),V.emit(U.JOIN_START,{room:this,roomId:s,params:e});let n=Lr.getEnv();n||(n=Kr.QCLOUD,this.proxy_ws&&(this.proxy_ws.startsWith(fc.OLD_CLOUD_LADDER)?n=Kr.OLD_CLOUD_LADDER:this.proxy_ws.startsWith(fc.WEBRTC)&&(n=Kr.WEBRTC))),je.setConfig({env:n,sdkAppId:String(this.sdkAppId),userId:this.userId,roomId:s}),Ki.checkSystemRequirementsInternal().then(c=>{this.checkSystemResult=c,_S.call(this)});try{!this.proxy_ws&&!this.proxy_wt&&!this.scheduleResult.domains&&!Lr.getEnv()&&(yield this.schedule(e,o));let c=yield i.call(this,e,r,o);return this.roomId=s,this._joinedTimestamp=Lr.performanceNow(),V.emit(U.JOIN_SUCCESS,{room:this}),o===30&&!e.component&&je.uploadEvent({log:`stat-conv-${Number(Rr)}-${location.hostname}`,userId:this.userId}),c}catch(c){throw t.delete({room:this,roomId:s}),V.emit(U.JOIN_FAILED,{room:this,error:c}),c}})}})}var Ng=()=>Oe(i=>function(...t){return A(this,null,function*(){V.emit(U.LEAVE_START,{room:this}),yield i.call(this,...t),V.emit(U.LEAVE_SUCCESS,{room:this,roomId:this.roomId})})});function Dg(){return Oe(i=>function(...t){return A(this,null,function*(){if(this.scene==="live"&&this.role!=="anchor"||(t=t.filter(r=>r.outMediaTrack&&r.state==="ready"),!t.length))return;V.emit("61",{room:this});let e=i.apply(this,t);return t.forEach(r=>r.publish(this,e)),e})})}function Mg(){return Oe(i=>function(...t){let e=i.apply(this,t);return t.forEach(r=>r.unpublish()),e})}function wg(){return Oe(i=>function(...t){let e=i.apply(this,t);return t.forEach(r=>!r.isSubscribed&&r.subscribe(e)),e})}function TS({fn:i,context:t}){return function(...e){try{let r=i.apply(t,e);return ji(r)?r.catch(o=>$.error(`${i.name}() error observed ${o}`)):r}catch(r){$.error(`${i.name}() error observed ${r}`)}}}var gu=class{constructor(t){u(this,"_frameWorkType");u(this,"_component");u(this,"_language");u(this,"connectionType");u(this,"_room");u(this,"_signalInfo",{tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0});u(this,"_keyPrefix");u(this,"_log");u(this,"_intervalId");u(this,"_firstPublishedUserList");u(this,"_networkQuality");u(this,"_basicInfo");u(this,"_pathJoinRoom");u(this,"_pathLeaveRoom");u(this,"_pathMainVideoMap");u(this,"_pathMainAudioMap");u(this,"_pathAuxiliaryMap");u(this,"_remoteStreamStatMap");u(this,"_localStreamStat");u(this,"_eventMap",new Map);u(this,"_captureCostSum",0);u(this,"_captureCostCount",0);u(this,"isDestroyed",!1);this._frameWorkType=t.frameWorkType||30,this._component=t.component||0,this.connectionType=t.connectionType||1,this._language=t.language||0,this._room=t.room,this._keyPrefix="key_point",this._log=$.createLogger({id:"kpm",userId:this._room.userId,sdkAppId:this._room.sdkAppId}),Object.getOwnPropertyNames(this.__proto__).forEach(e=>{e.startsWith("handle")&&We(this[e])&&(this[e]=TS({fn:this[e],context:this}))}),this.initData(),this.installEvents()}initData(){this._firstPublishedUserList=[],this._networkQuality={totalUplinkRTT:0,totalUplinkLoss:0,count:0,totalDownlinkRTTAndLossMap:new Map},this._basicInfo={string_sdk_version:at,uint32_os_type:15,string_device_name:"",string_http_user_agent:navigator.userAgent,string_os_version:"",uint32_avg_rtt:0,uint32_avg_up_loss:0,uint32_scene:this._room.scene==="live"?1:0,uint32_joining_duration:0,uint32_networkType:0,uint32_framework:this._frameWorkType,uint32_component:this._component,uint32_connection_type:this.connectionType,uint32_caller_coding_language:this._language,string_domain:location.hostname},this._pathJoinRoom={uint64_start_time:0,uint64_send_request_acc_ip_cmd_start_time:0,uint64_send_request_acc_ip_cmd_end_time:0,uint64_send_request_enter_room_cmd_start_time:0,uint64_send_request_enter_room_cmd_end_time:0,uint64_send_first_video_frame_time:0,uint64_recv_userlist_time:0,uint64_end_time:0,int32_send_request_acc_ip_cmd_ret:0,int32_send_request_enter_room_cmd_ret:0,int32_end_ret:0},this._pathLeaveRoom={uint64_start_time:0,uint64_send_request_exit_room_cmd_start_time:0,uint64_send_request_exit_room_cmd_end_time:0,uint64_end_time:0,int32_send_request_exit_room_cmd_ret:0,int32_end_ret:0},this._localStreamStat={totalVideoBitrate:0,totalVideoFPS:0,totalVideoHeight:0,totalVideoWidth:0,totalAudioLevel:0,videoCount:0,audioLevelCount:0,publishStartTime:0,statsToReport:{uint32_audio_capture_db:0,uint32_video_big_capture_fps:0,uint32_video_big_bitrate:0,uint32_video_big_resolution:0}},this._pathMainVideoMap=new Map,this._pathMainAudioMap=new Map,this._pathAuxiliaryMap=new Map,this._remoteStreamStatMap=new Map,Fo().then(t=>{this._basicInfo.string_os_version=$o(),t?this._basicInfo.string_device_name=t.mobile?t.model:this._basicInfo.string_os_version:this._basicInfo.string_device_name=this._basicInfo.string_os_version})}addEvent(t,e){return this._eventMap.set(t,e),V.on(t,e),this}installEvents(){this.handleUnload=this.handleUnload.bind(this),window.addEventListener("pagehide",this.handleUnload),this._room.once("banned",()=>this.handleLeaveSuccess({room:this._room,roomId:this._room.roomId})),this.addEvent(U.JOIN_START,this.handleJoinStart).addEvent(U.JOIN_SCHEDULE_SUCCESS,this.handleJoinScheduleSuccess).addEvent(U.JOIN_SIGNAL_CONNECTION_START,this.handleSignalConnectionStart).addEvent(U.JOIN_SIGNAL_CONNECTION_END,this.handleSignalConnectionEnd).addEvent(U.JOIN_SEND_CMD,this.handleJoinSendCMD).addEvent(U.JOIN_RECEIVED_CMD_RES,this.handleJoinReceivedCMDResponce).addEvent(U.JOIN_SUCCESS,this.handleJoinSuccess).addEvent(U.JOIN_FAILED,this.handleJoinFailed).addEvent(U.LEAVE_START,this.handleLeaveStart).addEvent(U.LEAVE_SUCCESS,this.handleLeaveSuccess).addEvent(U.LEAVE_SEND_CMD,this.handleLeaveSendCMD).addEvent(U.LOCAL_TRACK_CAPTURE_START,this.handleTrackCaptureStart).addEvent(U.LOCAL_TRACK_CAPTURE_SUCCESS,this.handleTrackCaptureSuccess).addEvent(U.LOCAL_TRACK_CAPTURE_FAILED,this.handleTrackCaptureFailed).addEvent(U.PUBLISH_START,this.handlePublishStart).addEvent(U.SEND_FIRST_VIDEO_FRAME,this.handleSendFirstVideoFrame).addEvent(U.SUBSCRIBE_START,this.handleSubscribeStart).addEvent(U.SUBSCRIBE_SUCCESS,this.handleSubscribed).addEvent(U.PLAY_TRACK_START,this.handlePlayStart).addEvent(U.VIDEO_LOADED_DATA,this.handleVideoLoadedData).addEvent(U.PLAYER_STATE_CHANGED,({track:t,state:e,type:r})=>{!t.isRemote||!this.hitTest(t.room)||e==="PLAYING"&&(r===N.AUDIO?this.handleAudioPlaying(t):this.handleVideoPlaying(t))}).addEvent(U.SWITCH_ROOM_START,this.handleSwitchRoomStart).addEvent(U.SWITCH_ROOM_SUCCESS,this.handleSwitchRoomSuccess).addEvent(U.SWITCH_ROOM_FAILED,this.handleSwitchRoomFailed).addEvent(U.NETWORK_QUALITY,this.handleNetworkQuality).addEvent(U.HEARTBEAT_REPORT,this.handleHeartbeatStats).addEvent(U.RECEIVED_PUBLISHED_USER_LIST,this.handleReceivedPublishUserList).addEvent(U.REMOTE_PUBLISH_STATE_CHANGED,({room:t,prevMuteState:e,muteState:r})=>{if(!this.hitTest(t))return;let o=e.hasAudio||e.hasVideo||e.hasSmall,s=e.hasAuxiliary,n=r.hasAudio||r.hasVideo||r.hasSmall,c=r.hasAuxiliary;!o&&n&&this.handleRemoteStreamAdded(r.userId,"main"),!s&&c&&this.handleRemoteStreamAdded(r.userId,"auxiliary")}).addEvent(U.SINGLE_CONNECTION_STAT,({room:t,stat:e})=>{this.hitTest(t)&&(this._pathJoinRoom.int32_ice_cost=e.ice,this._pathJoinRoom.int32_dtls_cost=e.dtls,this._pathJoinRoom.int32_peer_connection_cost=e.peerConnection)})}uninstallEvents(){window.removeEventListener("pagehide",this.handleUnload),this._eventMap.forEach((t,e)=>V.off(e,t)),this._eventMap.clear()}destroy(){this.uninstallEvents(),vt.clearTask(this._intervalId),this._pathJoinRoom.uint64_start_time===0&&(this._room=null),this.isDestroyed=!0}handleUnload(){this._room.isJoined&&this.handleLeaveSuccess({room:this._room,roomId:this._room.roomId})}handleJoinStart(t){this.hitTest(t.room)&&(this._pathJoinRoom.uint64_start_time===0&&(this._pathJoinRoom.uint64_start_time=Date.now()),t.params&&(P(t.params.frameWorkType)||(this._frameWorkType=t.params.frameWorkType,this._basicInfo.uint32_framework=this._frameWorkType),P(t.params.component)||(this._component=t.params.component,this._basicInfo.uint32_component=this._component),P(t.params.language)||(this._language=t.params.language,this._basicInfo.uint32_caller_coding_language=this._language)))}handleJoinScheduleSuccess({room:t,detailCost:e}){if(this.hitTest(t)&&e){let{totalCost:r,local:o,dns:s,tcp:n,tls:c,request:l,response:m}=e;this._pathJoinRoom.int32_schedule_cost=r,this._pathJoinRoom.int32_schedule_local=o,this._pathJoinRoom.int32_schedule_dns=s,this._pathJoinRoom.int32_schedule_tcp=n,this._pathJoinRoom.int32_schedule_tls=c,this._pathJoinRoom.int32_schedule_request=l,this._pathJoinRoom.int32_schedule_response=m}}handleSignalConnectionStart({room:t}){this.hitTest(t)&&this._pathJoinRoom.uint64_send_request_acc_ip_cmd_start_time===0&&(this._pathJoinRoom.uint64_send_request_acc_ip_cmd_start_time=Date.now())}handleSignalConnectionEnd({room:t,error:e}){this.hitTest(t)&&this._pathJoinRoom.uint64_send_request_acc_ip_cmd_end_time===0&&(this._pathJoinRoom.uint64_send_request_acc_ip_cmd_end_time=Date.now(),e&&(this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret=e instanceof ue?Number(e.getExtraCode()||e.getCode()):J.UNKNOWN,this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret))}handleJoinSendCMD(t){this.hitTest(t.room)&&this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time===0&&(this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time=Date.now())}handleJoinReceivedCMDResponce(t){this.hitTest(t.room)&&this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time===0&&(this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time=Date.now(),this._pathJoinRoom.int32_send_request_enter_room_cmd_ret=t.code,t.code!==0&&(this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_enter_room_cmd_ret))}handleJoinSuccess(t){this.hitTest(t.room)&&this._pathJoinRoom.uint64_end_time===0&&(this._pathJoinRoom.uint64_end_time=Date.now(),this._pathJoinRoom.int32_end_ret=0,this._signalInfo=t.room.getSignalInfo())}handleJoinFailed({room:t,error:e}){this.hitTest(t)&&(this._pathJoinRoom.uint64_end_time=Date.now(),this._pathJoinRoom.int32_end_ret===0&&(this._pathJoinRoom.int32_end_ret=e.code||this._pathJoinRoom.int32_send_request_enter_room_cmd_ret||this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret),setTimeout(()=>{this.report()}))}handleReceivedPublishUserList(t){this.hitTest(t.room)&&this._pathJoinRoom.uint64_recv_userlist_time===0&&(this._pathJoinRoom.uint64_recv_userlist_time=Date.now(),this._firstPublishedUserList=t.publishedUserList||[])}handleSendFirstVideoFrame({room:t}){this.hitTest(t)&&this._pathJoinRoom.uint64_send_first_video_frame_time===0&&this._pathJoinRoom.uint64_start_time!==0&&(this._pathJoinRoom.uint64_send_first_video_frame_time=Date.now())}handleLeaveStart(t){this.hitTest(t.room)&&(this._pathLeaveRoom.uint64_start_time=Date.now())}handleLeaveSuccess(t){this.hitTest(t.room)&&this._pathLeaveRoom.uint64_end_time===0&&(this._pathLeaveRoom.uint64_end_time=Date.now(),this._pathJoinRoom.uint64_end_time!==0?this._basicInfo.uint32_joining_duration=this._pathLeaveRoom.uint64_end_time-this._pathJoinRoom.uint64_end_time:this._log.warn("pathJoinRoom endTime is 0"),this.report())}handleLeaveSendCMD(t){this.hitTest(t.room)&&(this._pathLeaveRoom.uint64_send_request_exit_room_cmd_start_time=Date.now(),this._pathLeaveRoom.uint64_send_request_exit_room_cmd_end_time=Date.now())}handleSwitchRoomStart(t){if(this.hitTest(t.room)){let e=Date.now();this.report().then(()=>{this._pathJoinRoom.uint64_start_time=e,this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time=e})}}handleSwitchRoomSuccess({room:t}){if(this.hitTest(t)&&this._pathJoinRoom.uint64_end_time===0){let e=Date.now();this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time=e,this._pathJoinRoom.uint64_end_time=e,this._pathJoinRoom.int32_end_ret}}handleSwitchRoomFailed({room:t,error:e}){if(this.hitTest(t)){let r=Date.now();this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time=r,this._pathJoinRoom.uint64_end_time=r,e&&(this._pathJoinRoom.int32_end_ret=e instanceof ue?Number(e.getExtraCode()||e.getCode()):J.UNKNOWN)}}handleRemoteStreamAdded(t,e){var o;let r=`${t}_${e}`;if(!this._remoteStreamStatMap.has(r)){let s={userId:t,totalVideoFPS:0,totalVideoBitrate:0,totalAudioLevel:0,totalAudioBitrate:0,totalLoss:0,audioCount:0,audioLevelCount:0,videoCount:0,networkQualityCount:0,streamAddedTime:Date.now(),subscribeStartTime:0,subscribedTime:0,playStreamTime:0,statsToReport:Ee(q({},IS),{msg_user_info:new Fa({userId:t,tinyId:(o=this._room.remotePublishedUserMap.get(t))==null?void 0:o.tinyId,role:20})})};s.statsToReport.uint32_stream_type=e==="main"?2:7,this._remoteStreamStatMap.set(r,s)}}handleSubscribeStart({room:t,remotePublishedUser:e,streamType:r,subscribeState:o}){if(!this.hitTest(t))return;let{userId:s,tinyId:n,role:c}=e,l=new Fa({userId:s,tinyId:n,role:c==="anchor"?20:21}),m=Date.now(),E=`${s}_${r}`,g=this._remoteStreamStatMap.get(E);g&&g.subscribeStartTime===0&&(g.subscribeStartTime=m),r==="main"?(e.muteState.hasVideo&&(o.video||o.smallVideo)&&!this._pathMainVideoMap.has(E)&&this._pathMainVideoMap.set(E,{statsToReport:{msg_user_info:l,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_render_first_frame_time:0,uint64_combine_first_frame_time:0},userId:s,sendSubscribeCMDTime:m}),e.muteState.hasAudio&&o.audio&&!this._pathMainAudioMap.has(E)&&this._pathMainAudioMap.set(E,{statsToReport:{msg_user_info:l,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_play_first_frame_time:0},userId:s,sendSubscribeCMDTime:m})):e.muteState.hasAuxiliary&&o.auxiliary&&!this._pathAuxiliaryMap.has(E)&&this._pathAuxiliaryMap.set(E,{sendSubscribeCMDTime:m})}handleSubscribed({room:t,remotePublishedUser:e,streamType:r}){if(this.hitTest(t)){let o=`${e.userId}_${r}`,s=this._remoteStreamStatMap.get(o);s&&s.subscribedTime===0&&(s.subscribedTime=Date.now())}}handlePlayStart({track:t}){if(!t.isRemote||!this.hitTest(t.room))return;let e=`${t.userId}_${t.streamType}`,r=this._remoteStreamStatMap.get(e);(r==null?void 0:r.playStreamTime)===0&&(r.playStreamTime=Date.now())}handleVideoLoadedData({track:t}){if(!t.isRemote||!this.hitTest(t.room))return;let e=`${t.userId}_${t.streamType}`,r=this._pathMainVideoMap.get(e);r&&r.statsToReport.uint64_combine_first_frame_time===0&&(r.statsToReport.uint64_combine_first_frame_time=Date.now())}handleVideoPlaying(t){let e=`${t.userId}_${t.streamType}`,r=Date.now(),o=this._pathMainVideoMap.get(e),s=this._remoteStreamStatMap.get(e);if(s){let{statsToReport:n}=s;if(!n.uint32_video_render_first&&t.streamType==="main"?this.hasVideoFlag(t.userId):this.hasAuxFlag(t.userId)){let c=r-this._pathJoinRoom.uint64_start_time;n.uint32_video_render_first=c,Q.addNumber({key:516820,value:c})}}(o==null?void 0:o.statsToReport.uint64_render_first_frame_time)===0&&(o.statsToReport.uint64_render_first_frame_time=r)}handleAudioPlaying(t){let e=`${t.userId}_${t.streamType}`,r=this._pathMainAudioMap.get(e);r&&r.statsToReport.uint64_play_first_frame_time===0&&(r.statsToReport.uint64_play_first_frame_time=Date.now())}handleNetworkQuality(t){this.hitTest(t.room)&&(this._networkQuality.totalUplinkLoss+=t.uplink.loss,this._networkQuality.totalUplinkRTT+=t.uplink.rtt,this._networkQuality.count++,t.downlinks.forEach(({rtt:e,loss:r,userId:o,videoDelay:s,audioDelay:n})=>{let c=this._networkQuality.totalDownlinkRTTAndLossMap.get(o);if(c)c.totalRTT+=e,c.totalLoss+=r,s&&(c.totalVideoDelay=(c.totalVideoDelay||0)+s,c.videoDelayCount=(c.videoDelayCount||0)+1),n&&(c.totalAudioDelay=(c.totalAudioDelay||0)+n,c.audioDelayCount=(c.audioDelayCount||0)+1),c.count++;else{let l,m,E,g;s&&(m=s,E=1),n&&(l=n,g=1),this._networkQuality.totalDownlinkRTTAndLossMap.set(o,{totalRTT:e,totalLoss:r,count:1,totalAudioDelay:l,totalVideoDelay:m,audioDelayCount:g,videoDelayCount:E})}}))}handleHeartbeatStats(t){if(this.hitTest(t.room)){let{msg_device_info:e,msg_up_stream_info:r,msg_down_stream_info:o}=t.report;if(r.msg_video_status[0]){let{uint32_video_codec_bitrate:s,uint32_video_enc_fps:n,uint32_video_width:c,uint32_video_height:l}=r.msg_video_status[0];this._localStreamStat.totalVideoBitrate+=s,this._localStreamStat.totalVideoFPS+=n,this._localStreamStat.totalVideoWidth+=c,this._localStreamStat.totalVideoHeight+=l,this._localStreamStat.videoCount++}if(r.msg_audio_status){let{uint32_audio_level:s}=r.msg_audio_status;Math.floor(s/li*100)>0&&(this._localStreamStat.totalAudioLevel+=s/li,this._localStreamStat.audioLevelCount++)}o.forEach(s=>{let{msg_user_info:n,msg_audio_status:c,msg_video_status:l}=s,m=n.str_identifier,E=this._room.remotePublishedUserMap.get(m);if(l.forEach(g=>{let _=g.uint32_video_stream_type===2,v=g.uint32_video_stream_type===7,L=`${m}_${_?"main":"auxiliary"}`,x=this._remoteStreamStatMap.get(L);if(x&&(_&&(E!=null&&E.remoteVideoTrack.isSubscribed)||v&&(E!=null&&E.remoteAuxiliaryTrack))){x.totalVideoFPS+=g.uint32_video_receive_fps,x.totalVideoBitrate+=g.uint32_video_codec_bitrate,x.videoCount++,x.statsToReport.uint32_video_width===0&&(x.statsToReport.uint32_video_width=g.uint32_video_width),x.statsToReport.uint32_video_height===0&&(x.statsToReport.uint32_video_height=g.uint32_video_height);let M=_?E.remoteVideoTrack:E.remoteAuxiliaryTrack;M.stat.jitterBufferDelay&&(x.videoJitterBufferDelay=M.stat.jitterBufferDelay),M.stat.framesReceived&&(x.statsToReport.uint32_video_consume_render_rate=Math.floor(M.stat.framesDecoded/M.stat.framesReceived*Hi(10,6)))}}),!Cs(c)){let g=`${m}_main`,_=this._remoteStreamStatMap.get(g);this._remoteStreamStatMap.has(g)&&_&&E!=null&&E.remoteAudioTrack.isSubscribed&&(_.totalAudioBitrate+=c.uint32_audio_codec_bitrate,_.audioCount++,E.remoteAudioTrack.stat.jitterBufferDelay&&(_.audioJitterBufferDelay=E.remoteAudioTrack.stat.jitterBufferDelay),Math.floor(c.uint32_audio_level/li*100)>0&&(_.totalAudioLevel+=c.uint32_audio_level/li,_.audioLevelCount++))}}),e.uint32_audio_capture_cost&&(this._captureCostSum+=e.uint32_audio_capture_cost,this._captureCostCount+=1,this._captureCostCount>=100&&(this._basicInfo.uint32_audio_capture_cost=Math.floor(this._captureCostSum/this._captureCostCount),this._captureCostSum=0,this._captureCostCount=0))}}handlePublishStart({room:t}){this.hitTest(t)&&this._localStreamStat.publishStartTime===0&&(this._localStreamStat.publishStartTime=Date.now())}handleTrackCaptureStart({track:t}){t.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_start_time&&(this._pathJoinRoom.uint64_init_audio_start_time=Date.now()),t.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_start_time&&(this._pathJoinRoom.uint64_init_camera_start_time=Date.now())}handleTrackCaptureSuccess({track:t}){t.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_end_time&&(this._pathJoinRoom.int32_init_audio_ret=0,this._pathJoinRoom.uint64_init_audio_end_time=Date.now()),t.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_end_time&&(this._pathJoinRoom.int32_init_camera_ret=0,this._pathJoinRoom.uint64_init_camera_end_time=Date.now())}handleTrackCaptureFailed({track:t,error:e}){let o={NotFoundError:1,NotAllowedError:2,NotReadableError:3,OverConstrainedError:4,AbortError:5,InvalidStateError:6,SecurityError:7,TypeError:8}[e.name]||(e instanceof ue?e.getExtraCode()||e.getCode():J.UNKNOWN);t.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_end_time&&(this._pathJoinRoom.int32_init_audio_ret=o,this._pathJoinRoom.uint64_init_audio_end_time=Date.now()),t.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_end_time&&(this._pathJoinRoom.int32_init_camera_ret=o,this._pathJoinRoom.uint64_init_camera_end_time=Date.now())}hasVideoFlag(t){return this._firstPublishedUserList.findIndex(e=>e.userId===t&&e.flag&ys)>=0}hasAudioFlag(t){return this._firstPublishedUserList.findIndex(e=>e.userId===t&&e.flag&bs)>=0}hasAuxFlag(t){return this._firstPublishedUserList.findIndex(e=>e.userId===t&&e.flag&Dn)>=0}hitTest(t){return t===this._room}prepareReport(){if(this._captureCostCount>0&&!this._basicInfo.uint32_audio_capture_cost&&(this._basicInfo.uint32_audio_capture_cost=Math.floor(this._captureCostSum/this._captureCostCount),this._captureCostSum=0,this._captureCostCount=0),this._networkQuality.count>0&&(this._basicInfo.uint32_avg_rtt=Math.floor(this._networkQuality.totalUplinkRTT/this._networkQuality.count),this._basicInfo.uint32_avg_up_loss=Math.floor(this._networkQuality.totalUplinkLoss/this._networkQuality.count)),this._localStreamStat.videoCount>0){this._localStreamStat.statsToReport.uint32_video_big_capture_fps=Math.floor(this._localStreamStat.totalVideoFPS/this._localStreamStat.videoCount),this._localStreamStat.statsToReport.uint32_video_big_bitrate=Math.floor(this._localStreamStat.totalVideoBitrate/this._localStreamStat.videoCount);let t=Math.floor(this._localStreamStat.totalVideoWidth/this._localStreamStat.videoCount),e=Math.floor(this._localStreamStat.totalVideoHeight/this._localStreamStat.videoCount);this._localStreamStat.statsToReport.uint32_video_big_resolution=t<<16|e}this._localStreamStat.audioLevelCount>0&&(this._localStreamStat.statsToReport.uint32_audio_capture_db=Math.floor(this._localStreamStat.totalAudioLevel/this._localStreamStat.audioLevelCount*100)),this._remoteStreamStatMap.forEach((t,e)=>{let{userId:r}=t,o=this._networkQuality.totalDownlinkRTTAndLossMap.get(r);if(o){let{totalLoss:E,count:g,audioDelayCount:_,videoDelayCount:v,totalAudioDelay:L,totalVideoDelay:x}=o;t.statsToReport.uint32_avg_down_loss=Math.floor(E/g),_&&L&&(t.statsToReport.uint32_audio_network_p2p_delay=Math.floor(L/_),t.audioJitterBufferDelay&&(t.statsToReport.uint32_p2p_delay=Math.floor(t.statsToReport.uint32_audio_network_p2p_delay+t.audioJitterBufferDelay))),v&&x&&(t.statsToReport.uint32_video_network_p2p_delay=Math.floor(x/v))}t.videoCount>0&&(t.statsToReport.uint32_video_avg_fps=Math.floor(t.totalVideoFPS/t.videoCount),t.statsToReport.uint32_video_avg_bitrate=Math.floor(t.totalVideoBitrate/t.videoCount)),t.audioCount>0&&(t.statsToReport.uint32_audio_recv_bitrate=t.statsToReport.uint32_audio_bitrate=Math.floor(t.totalAudioBitrate/t.audioCount)),t.audioLevelCount>0&&(t.statsToReport.uint32_audio_play_db=Math.floor(t.totalAudioLevel/t.audioLevelCount*100));let{callDurationCalculator:s}=this._room;s&&(t.statsToReport.uint32_audio_play_time=s.getDuration(e,N.AUDIO),t.statsToReport.uint32_video_play_time=s.getDuration(e,N.VIDEO)),t.statsToReport.uint32_video_render_first&&(t.statsToReport.uint32_video_render_first=Math.min(t.statsToReport.uint32_video_render_first,cs));let{badCaseDetector:n}=this._room,{dataFreeze:c,count:l}=n.getDataFreezeDuration(e),{renderFreeze:m}=n.getRenderFreezeDuration(e);t.statsToReport.uint32_video_block_count=l,t.statsToReport.uint32_video_block_time=Math.min(c,t.statsToReport.uint32_video_play_time),t.statsToReport.uint32_video_external_block_time=Math.min(m,t.statsToReport.uint32_video_play_time),n.isBlackStream(e)&&t.statsToReport.uint32_video_avg_fps===0?t.statsToReport.uint32_video_black_screen_subjective=1:t.statsToReport.uint32_video_black_screen_subjective=0}),this._pathMainAudioMap.forEach((t,e)=>{if(!this.hasAudioFlag(t.userId)){this._pathMainAudioMap.delete(e);return}t.statsToReport.uint64_play_first_frame_time-t.statsToReport.uint64_start_enter_time>cs&&(t.statsToReport.uint64_play_first_frame_time=t.statsToReport.uint64_start_enter_time+cs)}),this._pathMainVideoMap.forEach((t,e)=>{if(!this.hasVideoFlag(t.userId)){this._pathMainVideoMap.delete(e);return}t.statsToReport.uint64_render_first_frame_time-t.statsToReport.uint64_start_enter_time>cs&&(t.statsToReport.uint64_render_first_frame_time=t.statsToReport.uint64_start_enter_time+cs)}),this._pathJoinRoom.uint64_end_time-this._pathJoinRoom.uint64_start_time>cs&&(this._pathJoinRoom.uint64_end_time=this._pathJoinRoom.uint64_start_time+cs)}getReportData(){this._basicInfo.uint32_networkType=Ic();let t={uint32_sdk_app_id:Number(this._room.sdkAppId),msg_user_info:new Fa({userId:this._room.userId,tinyId:this._room.tinyId,role:this._room.role==="anchor"?20:21}),msg_basic_info:this._basicInfo,uint32_acc_ip:Ns(this._signalInfo.relayIp),uint32_client_ip:Ns(this._signalInfo.clientIp,!1),uint32_acc_port:this._signalInfo.relayPort||0,uint64_timestamp:Date.now(),uint32_seq:Math.floor(Math.random()*Hi(2,31)),msg_path_enter_room:this._pathJoinRoom,msg_path_exit_room:this._pathLeaveRoom,msg_path_recv_video:[...this._pathMainVideoMap.values()].map(e=>e.statsToReport),msg_quality_statistics:[...this._remoteStreamStatMap.values()].map(e=>e.statsToReport),str_room_name:String(this._room.roomId||0),msg_path_recv_audio:[...this._pathMainAudioMap.values()].map(e=>e.statsToReport),uint32_info_client_ip:Ns(this._signalInfo.clientIp,!1),error_code:[],msg_local_statistics:this._localStreamStat.statsToReport,bytes_report_buf_from_0x1:this._signalInfo.endReportExtend};return Un(t),t}report(){return A(this,null,function*(){try{this.prepareReport();let t=this.getReportData();yield this.upload(t),this.initData()}catch(t){this._log.warn(t)}finally{this.isDestroyed&&(this._room=null)}})}upload(t){return A(this,null,function*(){if(t.msg_path_enter_room.uint64_start_time===0)return;let e=Number(this._room.sdkAppId),r=yield ol(t),o=r instanceof ArrayBuffer,s=`${ii(e,Gi.KEY_POINT)}&gzip=${+o}`,n=!1;navigator.sendBeacon&&(n=navigator.sendBeacon(s,r));let c=[this.uploadKVStat(Q),this.uploadKVStat(jo)];n||c.push(si({url:s,body:r,priority:"low"})),yield Promise.all(c)})}setConnectionType(t){this.connectionType=t,this._basicInfo.uint32_connection_type=t}uploadKVStat(t){return A(this,null,function*(){let e=t.getReportData();if(e.stats_count.length===0&&e.stats_distribution.length===0)return;e.msg_sdk_basic_info=Ee(q({},e.msg_sdk_basic_info),{bytes_device_name:this._basicInfo.string_device_name||"",bytes_os_version:this._basicInfo.string_os_version||"",uint32_framework:this._frameWorkType,uint32_network_type:this._basicInfo.uint32_networkType||0}),this._log.debug(e);let r=yield ol(e),o=`${ii(+this._room.sdkAppId,Gi.KV_STAT)}&gzip=${+(r instanceof ArrayBuffer)}`,s=!1;navigator.sendBeacon&&(s=navigator.sendBeacon(o,r)),s||si({url:o,body:r})})}};Z([Jo({settings:{timeout:500,retries:3}})],gu.prototype,"upload",1);var cs=5e3,IS={msg_user_info:null,uint32_video_avg_fps:0,uint32_video_width:0,uint32_video_height:0,uint32_video_avg_bitrate:0,uint32_video_block_time:0,uint32_video_play_time:0,uint32_audio_block_time:0,uint32_audio_play_time:0,uint32_audio_play_db:0,uint32_avg_down_loss:0,uint32_stream_type:0,uint32_video_block_count:0,uint32_audio_block_count:0,uint32_audio_bitrate:0,uint32_video_black_screen_subjective:0,uint32_audio_recv_bitrate:0,uint32_video_external_block_time:0,uint32_video_consume_render_rate:0},Fa=class{constructor(t){u(this,"str_identifier");u(this,"str_tinyid");u(this,"uint32_role");this.str_identifier=String(t.userId),this.str_tinyid=String(t.tinyId||0),this.uint32_role=t.role}},Og=gu;var yp=class{constructor(){u(this,"_startTime");u(this,"_endTime");this._startTime=0,this._endTime=0,this.start()}start(){this._startTime===0&&(this._startTime=Ie())}stop(){this._endTime===0&&(this._endTime=Ie())}getDuration(){return this._endTime===0?Ie()-this._startTime:this._endTime-this._startTime}get startTime(){return this._startTime}get endTime(){return this._endTime}},Eu=yp;var bp=class{constructor(t){u(this,"_room",null);u(this,"_durationMap");u(this,"_eventMap",new Map);this._room=t.room,this._durationMap=new Map,this.installEvents()}installEvents(){this._eventMap.set(U.REMOTE_TRACK_SUBSCRIBED,this.handleSubscribed).set(U.REMOTE_TRACK_UNSUBSCRIBED,this.handleUnsubscribed).set(U.REMOTE_PUBLISH_STATE_CHANGED,({room:t,prevMuteState:e,muteState:r})=>{var n;let{userId:o}=r;if(!this.hitTest(t))return;e.hasAudio&&!r.hasAudio&&this.stopDurationItem(`${o}_main`,N.AUDIO),e.hasVideo&&!r.hasVideo&&this.stopDurationItem(`${o}_main`,N.VIDEO),e.hasAuxiliary&&!r.hasAuxiliary&&this.stopDurationItem(`${o}_auxiliary`,N.VIDEO);let s=(n=this._room)==null?void 0:n.remotePublishedUserMap.get(o);s&&(!e.hasAudio&&r.hasAudio&&s.remoteAudioTrack.isSubscribed&&this.addDuractionItem(o,N.AUDIO,"main"),!e.hasVideo&&r.hasVideo&&s.remoteVideoTrack.isSubscribed&&this.addDuractionItem(o,N.VIDEO,"main"),!e.hasAuxiliary&&r.hasAuxiliary&&s.remoteAuxiliaryTrack.isSubscribed&&this.addDuractionItem(o,N.VIDEO,"auxiliary"))}),this._eventMap.forEach((t,e)=>V.on(e,t,this))}uninstallEvents(){this._eventMap.forEach((t,e)=>V.off(e,t,this)),this._eventMap.clear()}handleSubscribed({track:t}){if(!this.hitTest(t.room))return;let{userId:e,streamType:r,kind:o}=t;t.isSubscribed?this.addDuractionItem(e,o,r):this.stopDurationItem(`${e}_${r}`,o)}handleUnsubscribed({track:t}){this.hitTest(t.room)&&this.stopDurationItem(`${t.userId}_${t.streamType}`,t.kind)}isRecording(t){return t.findIndex(e=>e.endTime===0)>=0}addDuractionItem(t,e,r){let o=`${t}_${r}`,s=new Eu,n=this._durationMap.get(o);n?this.isRecording(n[e])||n[e].push(s):this._durationMap.set(o,{userId:t,type:r,audio:e===N.AUDIO?[s]:[],video:e===N.AUDIO?[]:[s]})}stopDurationItem(t,e){if(this._durationMap.has(t)){let o=this._durationMap.get(t)[e].find(s=>s.endTime===0);o&&o.stop()}}hitTest(t){return this._room===t}getDuration(t,e){return this._durationMap.has(t)?this._durationMap.get(t)[e].reduce((o,s)=>o+s.getDuration(),0):0}getDurationMap(){return this._durationMap}reset(){this._durationMap.clear()}destroy(){this._room=null,this.uninstallEvents()}},xg=bp;var Rp=class{constructor(t){u(this,"_room");u(this,"_renderFreezeMap",new Map);u(this,"_isVideoPlayingEventFiredMap",new Map);u(this,"_dataFreezeMap",new Map);u(this,"_monitorFreezeData",new Map);u(this,"_eventMap",new Map);this._room=t.room,this.installEvents()}getRenderFreezeMap(){return this._renderFreezeMap}getDataFreezeMap(){return this._dataFreezeMap}installEvents(){this._eventMap.set(U.LEAVE_SUCCESS,({room:t})=>{this.hitTest(t)&&this.stop()}).set(U.PLAY_TRACK_START,this.onPlayTrackStart).set(U.UNSUBSCRIBE_SUCCESS,({room:t,streamType:e,remotePublishedUser:r})=>{if(!this.hitTest(t))return;let{userId:o}=r,s=`${o}_${e}`;this.stopDataFreeze({key:s,userId:o,type:e})}).set(U.REMOTE_PUBLISH_STATE_CHANGED,({room:t,prevMuteState:e,muteState:r})=>{if(!this.hitTest(t))return;let{userId:o}=r;if(e.hasVideo&&!r.hasVideo){let s="main",n=`${r.userId}_${s}`;this.stopDataFreeze({key:n,userId:o,type:s})}if(e.hasAuxiliary&&!r.hasAuxiliary){let s="auxiliary",n=`${r.userId}_${s}`;this.stopDataFreeze({key:n,userId:o,type:s})}}).set(U.PLAYER_STATE_CHANGED,({track:t,state:e,reason:r,type:o})=>{if(!(!t.isRemote||!t.room||!this.hitTest(t.room)||o!==N.VIDEO)){if(e==="PLAYING"){let s=`${t.userId}_${t.streamType}`;this._isVideoPlayingEventFiredMap.set(s,!0)}r===N.MUTE?this.onVideoTrackMuted(t):r===N.UNMUTE&&this.onVideoTrackUnmuted(t)}}).set(U.HEARTBEAT_REPORT,this.onHearBeatReport),this._eventMap.forEach((t,e)=>V.on(e,t,this))}uninstallEvents(){this._eventMap.forEach((t,e)=>V.off(e,t,this)),this._eventMap.clear()}stop(){this._renderFreezeMap.clear(),this._dataFreezeMap.clear(),this._isVideoPlayingEventFiredMap.clear()}onVideoTrackMuted(t){if(!t.isSubscribed)return;let{userId:e,streamType:r}=t,o=`${e}_${r}`,s=this._dataFreezeMap.get(o),n=new Eu;s?s.durationItemList.push(n):this._dataFreezeMap.set(o,{userId:e,type:r,durationItemList:[n],isFreezing(){let c=this.durationItemList[this.durationItemList.length-1];return c&&c.endTime===0}})}onVideoTrackUnmuted(t){if(!t.isSubscribed)return;let{userId:e,streamType:r}=t,o=`${e}_${r}`;this.stopDataFreeze({key:o,userId:e,type:r})}onHearBeatReport({room:t,report:e}){this.hitTest(t)&&e.msg_down_stream_info.forEach(r=>{let o=this._room.remotePublishedUserMap.get(r.msg_user_info.str_identifier);if(!o)return;let{userId:s,muteState:n}=o;r.msg_video_status.forEach(c=>{c.uint32_video_stream_type===2&&n.hasVideo&&!n.videoMuted&&o.remoteVideoTrack.isSubscribed&&this.handleRenderFreeze({userId:s,fps:c.uint32_video_dec_fps,type:"main"}),c.uint32_video_stream_type===7&&n.hasAuxiliary&&o.remoteAuxiliaryTrack.isSubscribed&&this.handleRenderFreeze({userId:s,fps:c.uint32_video_dec_fps,type:"auxiliary"})})})}stopDataFreeze({key:t,userId:e,type:r}){let o=this._dataFreezeMap.get(t);if(!o||!o.isFreezing())return;let s=o.durationItemList[o.durationItemList.length-1];s.stop();let n=s.getDuration();n>_c?this._monitorFreezeData.set(t,{userId:e,type:r,duration:n}):o.durationItemList.pop()}getTotalDuration(t){return t.reduce((e,r)=>{let o=r.getDuration();return e+Math.min(o,5e3)},0)}handleRenderFreeze(o){return A(this,arguments,function*({userId:t,fps:e,type:r}){let s=`${t}_${r}`,n=this._renderFreezeMap.get(s);if(e<=2){let c=Ie();n&&!n.isFreeze&&(n.freezeTimeline.push({startTime:c,endTime:0}),n.isFreeze=!0),n||this._renderFreezeMap.set(s,{userId:t,type:r,isFreeze:!0,freezeTimeline:[{startTime:c,endTime:0}],renderFreezeTotal:0})}else if(n&&n.isFreeze){n.isFreeze=!1;let c=n.freezeTimeline.pop();if(c){c.endTime=Ie();let l=c.endTime-c.startTime;n.freezeTimeline.push(c),n.renderFreezeTotal+=Math.min(5e3,l)}}})}onPlayTrackStart({track:t}){if(!t.isRemote||!this.hitTest(t.room)||t.kind!==N.VIDEO||!t.isRemotePublished)return;let e=`${t.userId}_${t.streamType}`;this._isVideoPlayingEventFiredMap.has(e)||this._isVideoPlayingEventFiredMap.set(e,!1)}getDataFreezeDuration(t){let e={dataFreeze:0,count:0},r=this._dataFreezeMap.get(t);if(r){if(r.isFreezing()){let o=r.durationItemList[r.durationItemList.length-1];o.stop(),o.getDuration()<_c&&r.durationItemList.pop()}e.dataFreeze=this.getTotalDuration(r.durationItemList),e.count=r.durationItemList.length}return e}getRenderFreezeDuration(t){let e=this._renderFreezeMap.get(t),r=0,o=0;if(e)if(!e.isFreeze)r=e.renderFreezeTotal;else{let s=Ie(),n=e.freezeTimeline[e.freezeTimeline.length-1],c=s-n.startTime;r=e.renderFreezeTotal+Math.min(c,5e3),o=e.freezeTimeline.length}return{renderFreeze:r,count:o}}getMonitorFreeze(){return this._monitorFreezeData}isBlackStream(t){return this._isVideoPlayingEventFiredMap.has(t)?!this._isVideoPlayingEventFiredMap.get(t):!1}resetMonitor(){this._monitorFreezeData.clear()}hitTest(t){return t===this._room}destroy(){this.uninstallEvents()}},Pg=Rp;var Lg=Wi(Yi(),1);var SS=[1,0,0,0,1,1,0,1],_u=class extends Gt{constructor(e,r,o,s){super(e,{useDefaultProgram:!0,useFbo:!0,create2d:!0,name:"transform",logger:r});u(this,"mirror",!1);u(this,"rotation",0);if(o&&(this.mirror=o),s&&(this.rotation=s),e instanceof Tt)try{this.setTexBuffer(SS)}catch(n){e.destroy(new ue({code:J.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${n.message||n}`}))}}draw2d(e,r,o,s,n){if(this.ctx2d){this.ctx2d.save(),this.mirror&&(this.ctx2d.scale(-1,1),this.ctx2d.translate(-this.width,0)),this.rotation===90?(this.ctx2d.translate(s,0),this.ctx2d.rotate(Math.PI/2),this.ctx2d.scale(n/s,s/n)):this.rotation===180?(this.ctx2d.translate(this.width,this.height),this.ctx2d.rotate(Math.PI)):this.rotation===270&&(this.ctx2d.translate(0,n),this.ctx2d.rotate(3*Math.PI/2),this.ctx2d.scale(n/s,s/n));let c=super.draw2d(e,r,o,s,n);return this.ctx2d.restore(),c}return!1}render(e){var r;return(r=this.input)!=null&&r.requestFrame(e)?(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0):!1}};var vp=class{constructor(t,e){this.node=t;this.layout=e;u(this,"positionBuffer")}get x(){return this.layout.x||this.node.x}get y(){return this.layout.y||this.node.y}get width(){return this.layout.width||this.node.width}get height(){return this.layout.height||this.node.height}get right(){return this.x+this.width}get bottom(){return this.y+this.height}},$a=class extends Gt{constructor(e,r){super(e,{useDefaultProgram:!0,useFbo:!0,name:"mix",create2d:!0,matchInputSize:!1,logger:r});u(this,"inputs",[])}addInput(e,r){if(this.inputs[r.zIndex])throw new Error("input already exists");let o=new vp(e,r);this.inputs[r.zIndex]=o}changeInputLayout(e,r){let o=this.inputs.findIndex(s=>s?s.node===e:!1);o<0||Object.entries(r).forEach(([s,n])=>{P(n)||(this.inputs[o].layout[s]=n)})}resize(e,r){if(!this.matchInputSize){super.resize(e,r);return}let o=this.inputs.reduce((s,n)=>n?Object.assign(s,{width:Math.max(s.width,n.right),height:Math.max(s.height,n.bottom)}):s,{width:0,height:0});super.resize(o.width,o.height),this.context instanceof Tt&&this.inputs.forEach(s=>{if(s){let n=this.layout2texCoords(s);s.positionBuffer?this.changeBufferData(s.positionBuffer,n):s.positionBuffer=this.createBuffer(n)}})}connect(e,...r){return super.connect(e,...r),this.matchInputSize&&this.resize(0,0),e}removeInput(e){this.inputs[this.inputs.findIndex(r=>(r==null?void 0:r.node)===e)]=void 0}render(e){let r=this.context.ctx;if(r.clearColor(0,0,0,0),this.inputs.reduce((s,n)=>(n==null?void 0:n.node.requestFrame(e))||s,!1)&&r){this.useProgram(),r.enable(r.BLEND),r.blendFunc(r.SRC_ALPHA,r.ONE_MINUS_SRC_ALPHA),this.useBufferFrame();for(let s=0;s<this.inputs.length;s++){let n=this.inputs[s];n&&(n.node.useTexture(),this.draw(n.positionBuffer))}return!0}return!1}render2d(e){if(this.inputs.reduce((o,s)=>(s==null?void 0:s.node.requestFrame(e))||o,!1)&&this.ctx2d){this.ctx2d.fillStyle="black",this.ctx2d.fillRect(0,0,this.width,this.height);for(let o=0;o<this.inputs.length;o++){let s=this.inputs[o];s&&this.draw2d(s.node.image,s.x,s.y,s.width,s.height)}return!0}return!1}getInfo(){let{totalFrames:e,x:r,y:o,width:s,height:n,name:c}=this,l=Date.now(),m=(e-this.lastInfo.totalFrames)/((l-this.lastInfo.timestamp)/1e3)>>0;return this.lastInfo={totalFrames:e,x:r,y:o,width:s,height:n,timestamp:l,fps:m,name:c},q({parent:this.inputs.filter(E=>E).map(E=>E.node.getInfo())},this.lastInfo)}close(){super.close(),this.inputs.forEach(e=>{var r,o;if(e&&((r=e.node)==null||r.disconnect(),e.positionBuffer&&this.context instanceof Tt))try{(o=this.context.ctx)==null||o.deleteBuffer(e.positionBuffer)}catch(s){}})}};var Tu=class{constructor(t,e,r,o=4/3){this.vbMode=t;this.faceDetector=e;this.logger=r;u(this,"animationState");u(this,"originalAspect");u(this,"totalOffsetX",0);u(this,"totalOffsetY",0);u(this,"defaultScaleRatio",.1);u(this,"isRecovering",!1);u(this,"boundaryY",280);u(this,"lastActionTime",0);u(this,"restTime",400);this.animationState={current:null,target:null,animating:!1,debounceTimer:null,startTime:0,duration:3e3,debounceTime:150,movementThreshold:30,debounceThreshold:15},this.addEvent(this.vbMode,!!this.faceDetector),this.originalAspect=o||4/3}addEvent(t,e,r){let s=[{key:570704,error:r!=null?r:e?void 0:11},{key:570705,error:r!=null?r:e?void 0:22}][t-1];s&&(e?Q.addSuccessEvent({key:s.key}):Q.addFailedEvent({key:s.key,error:s.error}))}actionCentering(t){let e=Date.now();if(this.animation(),!this.faceDetector||e-this.lastActionTime<this.restTime||this.animationState.animating)return;let{videoWidth:r,videoHeight:o}=t;this.animationState.debounceThreshold=r/30,this.animationState.movementThreshold=r/20;try{let s=this.faceDetector.detectForVideo(t,Date.now());if(s.detections.length<=0){this.vbMode===1&&this.recoverOriginal(r,o);return}let n=s.detections[0].boundingBox,c=n.originX,l=n.originY,m=n.width,E=n.height;this.vbMode===1?this.dualStageCropping(r,o,c,l,m,E):this.vbMode===2&&this.movingPortrait(r,o,c,l,m,E)}catch(s){this.logger.error(s)}this.lastActionTime=e}calculateBoundary(t,e,r,o){let s,n;return t>e/2?(s=e-r-o,n=r-s):(s=r,n=0),{min:s,offset:n}}calculateTargetPosition(t,e,r,o,s,n,c=.4){let l=t+r/2,m=e+o/2,E,g,{min:_,offset:v}=this.calculateBoundary(l,s,t,r),{min:L,offset:x}=this.calculateBoundary(m,n,e,o);return E=2*_+r,g=2*L+o,E/g>this.originalAspect?(E=g*this.originalAspect,v=l-E/2):(g=E/this.originalAspect,x=m-g/2),r/s>c&&(v=0,x=0,E=s,g=n),v=Math.max(0,Math.min(v,s-E)),x=Math.max(0,Math.min(x,n-g)),{sx:v,sy:x,cropWidth:E,cropHeight:g,timestamp:Date.now()}}processFacePositionCrop(t,e,r){if(!this.animationState.current||!this.animationState.target){let c={sx:0,sy:0,cropWidth:e,cropHeight:r,timestamp:Date.now()};this.animationState.current=c,this.animationState.target=c;return}let o=this.positionDistance(this.animationState.target,t),s=this.positionDistance(this.animationState.current,t),n=this.animationState.current.cropWidth/e;o>this.animationState.debounceThreshold*n&&(clearTimeout(this.animationState.debounceTimer),this.animationState.animating=!1),!this.animationState.animating&&s>this.animationState.movementThreshold*n&&(this.animationState.target=t,this.animationState.debounceTimer=setTimeout(()=>{this.animationState.startTime=Date.now(),this.animationState.animating=!0},this.animationState.debounceTime))}processFacePositionPortrait(t){if(!this.animationState.current||!this.animationState.target){this.animationState.current=q({},t),this.animationState.target=q({},t);return}let e=this.positionDistance(this.animationState.current,t),r=this.positionDistance(this.animationState.target,t);e>this.animationState.debounceThreshold&&(clearTimeout(this.animationState.debounceTimer),this.animationState.animating=!1),!this.animationState.animating&&r>this.animationState.movementThreshold&&(this.animationState.current=t,this.animationState.debounceTimer=setTimeout(()=>{this.animationState.startTime=Date.now(),this.animationState.animating=!0},this.animationState.debounceTime))}animation(){if(!this.animationState.animating)return;let t=Date.now()-this.animationState.startTime,e=Math.min(t/this.animationState.duration,1),r=o=>o<.5?2*o*o:-1+(4-2*o)*o;if(this.animationState.current&&this.animationState.target){let o=(this.animationState.target.sx-this.animationState.current.sx)*r(e);this.animationState.current.sx+=o,this.totalOffsetX+=o;let s=(this.animationState.target.sy-this.animationState.current.sy)*r(e);if(this.animationState.current.sy+=s,this.totalOffsetY+=s,this.animationState.current.cropWidth+=(this.animationState.target.cropWidth-this.animationState.current.cropWidth)*r(e),this.animationState.current.cropHeight+=(this.animationState.target.cropHeight-this.animationState.current.cropHeight)*r(e),this.animationState.current.scaleRatio&&this.animationState.target.scaleRatio&&(this.animationState.current.scaleRatio+=(this.animationState.target.scaleRatio-this.animationState.current.scaleRatio)*r(e)),Pe(this.animationState.current.scaleOffsetX)&&Pe(this.animationState.target.scaleOffsetX)&&Pe(this.animationState.current.scaleOffsetY)&&Pe(this.animationState.target.scaleOffsetY)){let n=(this.animationState.target.scaleOffsetX-this.animationState.current.scaleOffsetX)*r(e);this.animationState.current.scaleOffsetX+=n;let c=(this.animationState.target.scaleOffsetY-this.animationState.current.scaleOffsetY)*r(e);this.animationState.current.scaleOffsetY+=c}}e>=1&&(this.animationState.animating=!1,this.animationState.current=this.animationState.target,this.isRecovering=!1)}positionDistance(t,e){return Math.sqrt(Hi(t.sx-e.sx,2)+Hi(t.sy-e.sy,2))}recoverOriginal(t,e){this.animationState.target={sx:0,sy:0,cropWidth:t,cropHeight:e,timestamp:Date.now()},this.animationState.animating=!0,this.animationState.startTime=Date.now(),this.isRecovering=!0}dualStageCropping(t,e,r,o,s,n,c=.3){if(this.isRecovering)return;let l=this.calculateTargetPosition(r,o,s,n,t,e);this.processFacePositionCrop(l,t,e),s*n/l.cropWidth/l.cropHeight>c&&this.recoverOriginal(t,e)}movingPortrait(t,e,r,o,s,n){var l,m,E,g,_,v,L,x,M,B,ee,pe;let c={sx:r+s/2+this.totalOffsetX,sy:o+n/2+this.totalOffsetY,cropWidth:t,cropHeight:e,scaleRatio:(m=(l=this.animationState.current)==null?void 0:l.scaleRatio)!=null?m:1,scaleOffsetX:(g=(E=this.animationState.current)==null?void 0:E.scaleOffsetX)!=null?g:0,scaleOffsetY:(v=(_=this.animationState.current)==null?void 0:_.scaleOffsetY)!=null?v:0,timestamp:Date.now()};this.animationState.target={sx:t/2,sy:o+n/2,cropWidth:t,cropHeight:e,scaleRatio:(x=(L=this.animationState.target)==null?void 0:L.scaleRatio)!=null?x:1,scaleOffsetX:(B=(M=this.animationState.target)==null?void 0:M.scaleOffsetX)!=null?B:0,scaleOffsetY:(pe=(ee=this.animationState.target)==null?void 0:ee.scaleOffsetY)!=null?pe:0,timestamp:Date.now()},this.animationState.animating||(this.animationState.target.scaleRatio=Math.sqrt(s*n/t/e/this.defaultScaleRatio),this.animationState.target.scaleOffsetX=-this.animationState.target.scaleRatio/2+.5,this.animationState.target.scaleOffsetY=-this.animationState.target.scaleRatio+1,(this.animationState.target.sy-this.animationState.target.scaleOffsetY*this.animationState.target.cropHeight)/this.animationState.target.scaleRatio<this.boundaryY&&(this.animationState.target.scaleOffsetY=(this.animationState.target.sy-this.boundaryY*this.animationState.target.scaleRatio)/this.animationState.target.cropHeight)),this.processFacePositionPortrait(c)}set aspectRatio(t){this.originalAspect=t}get current(){return this.animationState.current}get offset(){return{offsetX:this.totalOffsetX,offsetY:this.totalOffsetY}}get targetCrop(){return this.animationState.target}};var AS=`#version 300 es
|
|
70
102
|
in vec2 a_position;
|
|
71
103
|
in vec2 a_texCoord;
|
|
72
104
|
out vec2 v_texCoord;
|
|
73
105
|
void main() {
|
|
74
106
|
gl_Position = vec4(a_position.x, a_position.y, 0, 1);
|
|
75
107
|
v_texCoord = a_texCoord;
|
|
76
|
-
}`,
|
|
108
|
+
}`,yS=`#version 300 es
|
|
77
109
|
precision highp float;
|
|
78
110
|
uniform sampler2D u_texture;
|
|
79
111
|
uniform sampler2D mask;
|
|
@@ -82,7 +114,7 @@ in vec2 v_texCoord;
|
|
|
82
114
|
out vec4 outColor;
|
|
83
115
|
void main() {
|
|
84
116
|
outColor = vec4(texture(u_texture, v_texCoord).rgb, texture(mask, v_texCoord).a);
|
|
85
|
-
}`,
|
|
117
|
+
}`,Iu=class extends Ai{constructor(e,r){super(e,r.input,{name:"vb",create2d:!1,useDefaultProgram:!1,useFbo:!1,createTexture:!0,width:r.width,height:r.height,logger:e.log});u(this,"_bgTexture");u(this,"_waterMarkTexture");u(this,"_lastMaskTexture");u(this,"_lastMaskFbo");u(this,"_textureValid",!1);u(this,"_selfieTextureValid",!1);u(this,"_selfieSegmentation");u(this,"wasm");u(this,"_prePrograme");u(this,"_segmentationMask");u(this,"_weixin",!1);u(this,"_centerFace");u(this,"_textureMatrixLocation");u(this,"_offsetMatrixLocation");u(this,"_enableFaceCentering",!1);u(this,"_mat4");r.selfieSegmentation&&(this._selfieSegmentation=r.selfieSegmentation,this._selfieSegmentation.onResults=this.onPredict.bind(this));try{this.init(r)}catch(o){e.log.error(o),e.destroy(new ue({code:J.VIDEO_MANAGER_ERROR,extraCode:6,message:`init vb node error ${o.message||o}`}))}}init(e){var n;let r=e.Wasm,o=this.context.ctx;if(e.mat4&&(this._mat4=e.mat4),this.wasm=new r.AllIn1(o),this.wasm.blurRadius=e.blurRadius||3,this.wasm.mirror=!!e.mirror,this.wasm.rotation=e.rotation||0,this.wasm.vbMode=e.bg==="blur"?1:e.bg instanceof HTMLImageElement?2:e.bg==="green"?3:0,this._enableFaceCentering=(n=e.enableFaceCentering)!=null?n:!1,e.waterMark){let{x:c,y:l,width:m,height:E}=e.waterMark;this.wasm.setWaterMark(c,l,m,E)}if(e.beautyParams){let{beauty:c,brightness:l,ruddy:m}=e.beautyParams;this.wasm.setBeauty(c,l,m,e==null?void 0:e.width,e==null?void 0:e.height)}this.program=this.wasm.init(),this.useProgram(),this.setAttributes(this.positionBuffer,this.texCoordBuffer),o.uniform1i(o.getUniformLocation(this.program,"mask"),1),e.bg instanceof HTMLImageElement&&(o.uniform1i(o.getUniformLocation(this.program,"bg"),2),this._bgTexture=this.createTexture(e.bg)),e.waterMark&&(o.uniform1i(o.getUniformLocation(this.program,"waterMark"),3),this._waterMarkTexture=this.createTexture(e.waterMark.image));let s=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);if(this._textureMatrixLocation=o.getUniformLocation(this.program,"u_textureMatrix"),o.uniformMatrix4fv(this._textureMatrixLocation,!1,s),this._offsetMatrixLocation=o.getUniformLocation(this.program,"u_offsetMatrix"),o.uniformMatrix4fv(this._offsetMatrixLocation,!1,s),o.uniform1i(o.getUniformLocation(this.program,"lastMask"),4),this._weixin){let c=this.context.createShader(o.FRAGMENT_SHADER,yS),l=this.context.createShader(o.VERTEX_SHADER,AS);this._prePrograme=this.context.createProgram(l,c),o.useProgram(this._prePrograme),this.setAttributes(this.positionBuffer,this.texCoordBuffer),o.uniform1i(o.getUniformLocation(this._prePrograme,"mask"),1)}this._enableFaceCentering&&A(this,null,function*(){return this._centerFace=new Tu(this.wasm.vbMode,yield e.faceDetector(),this.context.log)})}onPredict(e){var o;let r=this.context.ctx;this._weixin&&(this._lastMaskTexture||(this._lastMaskTexture=this.createTexture(this.image),this._lastMaskFbo=this.createFramebuffer(this._lastMaskTexture))),this.useProgram(),this._weixin?this.useTexture():this==null||this._selfieSegmentation.bindTexture(),r.activeTexture(r.TEXTURE1),(o=this._selfieSegmentation)==null||o.bindTexture2d(e),r.activeTexture(r.TEXTURE2),r.bindTexture(r.TEXTURE_2D,this._bgTexture||null),r.activeTexture(r.TEXTURE3),r.bindTexture(r.TEXTURE_2D,this._waterMarkTexture||null),this.useBufferFrame(),this._segmentationMask=e,this.totalFrames++,this.centerFace(),r.drawArrays(r.TRIANGLE_STRIP,0,4)}onFirstFrame(){this.waitingFirstFrame=!1;let e=this.context.ctx;this.useTexture(),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,this.image)}render(e){var l,m,E,g;let r=this.context.ctx,{image:o}=this;this.tryVideoFrameCallback();let{videoWidth:s,videoHeight:n}=o;if(oi(this.wasm.rotation)&&([s,n]=[n,s]),s===0||n===0||!this.available)return!1;o.width=s,o.height=n;let c=!1;if(this.totalFrames)this._weixin?this.useTexture():(l=this._selfieSegmentation)==null||l.bindTexture(),c=this._selfieTextureValid,this._selfieTextureValid=!0;else{if(this.program)this.useTexture();else return!1;c=this._textureValid,this._textureValid=!0}return this.width!==s||this.height!==n||!c?(this.resize(s,n),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,o)):r.texSubImage2D(r.TEXTURE_2D,0,0,0,r.RGBA,r.UNSIGNED_BYTE,o),this._weixin&&(r.useProgram(this._prePrograme),this.useTexture(),this._segmentationMask&&(r.activeTexture(r.TEXTURE1),(m=this._selfieSegmentation)==null||m.bindTexture2d(this._segmentationMask),r.bindFramebuffer(r.FRAMEBUFFER,this._lastMaskFbo||null)),r.drawArrays(r.TRIANGLE_STRIP,0,4),(E=this._selfieSegmentation)==null||E.bindTexture(),this._segmentationMask?r.copyTexSubImage2D(r.TEXTURE_2D,0,0,0,0,0,s,n):r.copyTexImage2D(r.TEXTURE_2D,0,r.RGBA,0,0,s,n,0)),this.wasm.vbMode&&((g=this._selfieSegmentation)==null||g.send(s,n)),this.totalFrames||(r.activeTexture(r.TEXTURE2),r.bindTexture(r.TEXTURE_2D,this._bgTexture||null),r.activeTexture(r.TEXTURE3),r.bindTexture(r.TEXTURE_2D,this._waterMarkTexture||null),r.drawArrays(r.TRIANGLE_STRIP,0,4)),!1}centerFace(){if(!this._centerFace||!this._enableFaceCentering)return;let e=this.context.ctx;this._centerFace.aspectRatio=e.canvas.width/e.canvas.height,this._centerFace.actionCentering(this.image);let{current:r,offset:o}=this._centerFace;if(r&&(this.wasm.vbMode===1&&this.drawImage(e.canvas.width,e.canvas.height,r.sx,r.sy,r.cropWidth,r.cropHeight),o&&this.wasm.vbMode===2)){let s=this._mat4.create(),{scaleRatio:n=1,scaleOffsetX:c=0,scaleOffsetY:l=0}=r;this._mat4.fromTranslation(s,[-o.offsetX/e.canvas.width+c,l,0]),this._mat4.scale(s,s,[n,n,1]),e.uniformMatrix4fv(this._offsetMatrixLocation,!1,s)}}drawImage(e,r,o,s,n,c){let l=this.context.ctx,m=this._mat4.create();this._mat4.fromTranslation(m,[o/e,1-(s+c)/r,0]),this._mat4.scale(m,m,[n/e,c/r,1]),l.uniformMatrix4fv(this._textureMatrixLocation,!1,m)}close(){var r;super.close();let e=this.context.ctx;this._bgTexture&&e.deleteTexture(this._bgTexture),this._waterMarkTexture&&e.deleteTexture(this._waterMarkTexture),this._lastMaskTexture&&e.deleteTexture(this._lastMaskTexture),this._lastMaskFbo&&e.deleteFramebuffer(this._lastMaskFbo),this._prePrograme&&e.deleteProgram(this._prePrograme),(r=this.wasm)==null||r.close()}};var Su=class extends Gt{constructor(e){super(e,{name:"yuv-source",useDefaultProgram:!1,create2d:!1,useFbo:!1,createTexture:!1,logger:e.log,fragmentShaderSource:`
|
|
86
118
|
precision highp float;
|
|
87
119
|
uniform sampler2D ySampler;
|
|
88
120
|
uniform sampler2D uSampler;
|
|
@@ -107,15 +139,4 @@ void main() {
|
|
|
107
139
|
void main() {
|
|
108
140
|
gl_Position = vertexPos;
|
|
109
141
|
textureCoord = texturePos;
|
|
110
|
-
}`});d(this,"yTextureRef");d(this,"uTextureRef");d(this,"vTextureRef");d(this,"Y");d(this,"U");d(this,"V");this.useProgram();let t=this.context.ctx;t.pixelStorei(t.PACK_ALIGNMENT,1),t.pixelStorei(t.UNPACK_ALIGNMENT,1),this.setTexBuffer([0,1,1,1,0,0,1,0]),this.yTextureRef=this._initTexture("ySampler",0),this.uTextureRef=this._initTexture("uSampler",1),this.vTextureRef=this._initTexture("vSampler",2),this._canvas=e._canvas}_initTexture(e,t){let r=this.context.ctx,s=r.createTexture();return r.bindTexture(r.TEXTURE_2D,s),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.bindTexture(r.TEXTURE_2D,null),r.uniform1i(r.getUniformLocation(this.program,e),t),s}render(e){let t=this.context.ctx,r=this.width,s=this.height;return this.useProgram(),t.viewport(0,0,r,s),t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,this.yTextureRef),t.texSubImage2D(t.TEXTURE_2D,0,0,0,r,s,t.LUMINANCE,t.UNSIGNED_BYTE,this.Y),t.activeTexture(t.TEXTURE1),t.bindTexture(t.TEXTURE_2D,this.uTextureRef),t.texSubImage2D(t.TEXTURE_2D,0,0,0,r/2,s/2,t.LUMINANCE,t.UNSIGNED_BYTE,this.U),t.activeTexture(t.TEXTURE2),t.bindTexture(t.TEXTURE_2D,this.vTextureRef),t.texSubImage2D(t.TEXTURE_2D,0,0,0,r/2,s/2,t.LUMINANCE,t.UNSIGNED_BYTE,this.V),this.draw(),!0}resize(e,t){super.resize(e,t);let r=this.context.ctx;r.activeTexture(r.TEXTURE0),r.bindTexture(r.TEXTURE_2D,this.yTextureRef),r.texImage2D(r.TEXTURE_2D,0,r.LUMINANCE,e,t,0,r.LUMINANCE,r.UNSIGNED_BYTE,null),r.activeTexture(r.TEXTURE1),r.bindTexture(r.TEXTURE_2D,this.uTextureRef),r.texImage2D(r.TEXTURE_2D,0,r.LUMINANCE,e/2,t/2,0,r.LUMINANCE,r.UNSIGNED_BYTE,null),r.activeTexture(r.TEXTURE2),r.bindTexture(r.TEXTURE_2D,this.vTextureRef),r.texImage2D(r.TEXTURE_2D,0,r.LUMINANCE,e/2,t/2,0,r.LUMINANCE,r.UNSIGNED_BYTE,null)}};var Uu=[o=>{o.codec="avc1.42e01f"},o=>{delete o.hardwareAcceleration}],$p=(o,i)=>{switch(o){case"webCodecs":return i==="videoFrame"?514705:514706;case"wasm":return i==="webgl"?514707:i==="videoFrame"?514708:514709}throw new Error("decoder type not supported")};function _E(o){return o[0]===0&&o[1]===0&&o[2]===0&&o[3]===1}var gE=0,Oc=class{constructor(i){d(this,"id",gE++);d(this,"trackDoneOB");d(this,"startOB");d(this,"stopOB");d(this,"decoder");d(this,"videoContext");d(this,"gop",0);d(this,"gop_helper",0);d(this,"waitFirstKeyFrame",!0);d(this,"startTimestamp",0);d(this,"startTime",0);d(this,"startPerformanceTime",0);d(this,"inputFrameCount",0);d(this,"decodedFrameCount",0);d(this,"decodeFrameCount",0);d(this,"downgradeLevel",0);d(this,"lastDowngradeTime",0);d(this,"lastFrameDiff",0);d(this,"lastDecodeFrameTimestamp",0);d(this,"config");d(this,"gop_before_configure",[]);d(this,"videoElement");d(this,"type","wasm");d(this,"goodType");d(this,"renderer","2d");d(this,"wasmOption");d(this,"createDecoder");d(this,"_decodeSink");d(this,"isReported",!1);d(this,"track");d(this,"stateChangeOB");d(this,"failedReason");let{track:e,createDecoder:t}=i;if(this.stateChangeOB=tt(),this.track=e,this.createDecoder=t,this.wasmOption={yuvMode:i.renderer==="webgl",wasmPath:i.wasmPath,workerMode:i.workerMode,canvas:i.canvas},this.config=i.config,this.videoElement=i.videoElement,this.renderer=i.renderer,this.trackDoneOB=he(e.availableState,H.OFF),this.stopOB=tt(),i.type==="auto"){switch(i.fallback){case"wasm":this.type="wasm",this.renderer="webgl";break;case"wasm_2d":this.type="wasm",this.renderer="2d";break;case"wasm_video":this.type="wasm",this.renderer="videoFrame";break;default:this.type="webCodecs"}this.wasmOption.yuvMode=this.renderer==="webgl"}else this.type=i.type;this.changeRenderer(this.renderer),le(this.stateChangeOB,ql((r,s)=>(r!==s&&e.onDecodeDowngradeStateChanged({type:this.type,renderer:this.renderer,reason:this.failedReason,prevState:r,state:s}),s),"INITIALIZED"),Be(this.stopOB),be()),this.start()}start(i=0){this.waitFirstKeyFrame=!0,this.stateChangeOB.next("STARTING");let e=le(this.pipe(this.track),Be(this.stopOB),Gi());le(e,be(()=>{this.track.stat.framesDecoded++},t=>{if(this.track.log.error(`${this.id} play failed: ${t} retryCount: ${i}`),b.addFailedEvent({key:$p(this.type,this.renderer),error:t}),i>4)this.failedReason=t,this.stateChangeOB.next("FAILED");else{if(this.goodType){this.start(i);return}switch(this.type){case"webCodecs":this.type="wasm",this.changeRenderer("webgl");break;case"wasm":switch(this.renderer){case"webgl":this.changeRenderer("videoFrame");break}}this.start(i+1)}},()=>{this.track.log.warn(`${this.id} decoderOB completed`),b.addSuccessEvent({key:$p(this.type,this.renderer)}),b.addSuccessEvent({key:514704})})),le(e,Wi(1),be(()=>{this.track.player.handlePlaying("canvas"),this.goodType=this.type,this.stateChangeOB.next("STARTED")}))}mock(i){this._decodeSink?this._decodeSink.error(i):this.start()}close(i){this.stopOB.next(i)}changeRenderer(i){this.renderer=i,this.renderer==="videoFrame"&&!ks()&&(this.renderer="2d"),this.wasmOption.yuvMode=this.renderer==="webgl"}decode(i,e=!1){var a,c;if(this.failedReason)return;this.inputFrameCount++;let t=new Uint8Array(i.data);if(!_E(t)||t.length<5)return this.stateChangeOB.next("FAILED"),this.close(`not h26x frame ${t.subarray(0,5)}`),i;let r=t[4]&31,s=!1;switch(r){case 5:case 7:s=!0;break}if(((a=this.decoder)==null?void 0:a.state)!=="configured")return this.track.log.debug(`not configured ${this.inputFrameCount}`),s&&(this.gop_before_configure=[]),this.gop_before_configure.push({data:i.data,timestamp:i.timestamp,type:i.type}),i;this.gop_before_configure.length>0&&!e&&(this.gop_before_configure.forEach(l=>this.decode(l,!0)),this.gop_before_configure=[]);let{timestamp:n}=i;if(s?(this.gop=this.gop_helper,this.gop_helper=0):this.gop_helper++,this.decoder){if(this.waitFirstKeyFrame)if(s)this.waitFirstKeyFrame=!1,this.startTimestamp=n,this.startTime=Date.now(),this.startPerformanceTime=V();else{this.track.log.debug(`wait first key frame ${this.inputFrameCount} ${t.subarray(0,5).join(" ")}`);return}switch(this.downgradeLevel){case 0:break;case 1:break;case 2:if(this.gop_helper>this.gop>>1)return;break;case 3:if(this.gop_helper>0)return;break;default:return}(this.decodeFrameCount<10||this.decodeFrameCount%500===0)&&this.track.log.debug(`decode ${this.decodeFrameCount} gop: ${this.gop} ${n} ${(c=i.getMetadata)==null?void 0:c.call(i).rtpTimestamp}`),this.decodeFrameCount++,this.lastDecodeFrameTimestamp=n,this.decoder.decode({data:i.data,type:i.type,timestamp:this.lastDecodeFrameTimestamp});return}return i}checkDowngradeByFrameDiff(){let i=this.downgradeLevel,e=this.decodeFrameCount-this.decodedFrameCount;e>this.lastFrameDiff?(this.downgradeLevel++,this.downgradeLevel>4&&(this.downgradeLevel=4)):e<=this.lastFrameDiff&&this.downgradeLevel>0&&this.downgradeLevel--,this.downgradeLevel!==i&&this.track.log.debug(`downgrade level ${i} to ${this.downgradeLevel} ${this.decodeFrameCount} frameDiff: ${e}, lastFrameDiff: ${this.lastFrameDiff}`),this.lastFrameDiff=e,this.lastDowngradeTime=Date.now()}checkDowngradeByTimestampDiff(i){let e=this.downgradeLevel;this.lastDecodeFrameTimestamp-i>9e4?(this.downgradeLevel++,this.downgradeLevel>4&&(this.downgradeLevel=4)):this.downgradeLevel>0&&this.downgradeLevel--,this.downgradeLevel!==e&&this.track.log.debug(`downgrade level ${e} to ${this.downgradeLevel}`)}pipe(i){return e=>f(this,null,function*(){this._decodeSink=e;let t,r=i.mediaTrack;e.defer(()=>{var a;r&&(i.player.setCanvas(),i.setInputMediaStreamTrack(r)),t==null||t.close(),(a=this.videoContext)==null||a.destroy(),delete this._decodeSink});let{renderer:s,type:n}=this;i.log.info(`decoder type: ${this.type} renderer: ${this.renderer}`);try{switch(n){case"wasm":t=this.createDecoder(n,this.wasmOption);break;case"webCodecs":for(let c=0;c<=Uu.length;c++){let{supported:l}=yield VideoDecoder.isConfigSupported(this.config);if(l)break;if(c===Uu.length){e.error(3);return}Uu[c](this.config)}t=this.createDecoder(n);break;default:throw new Error("not supported yet")}let a=0;if(t.on("videoFrame",c=>{this.decodedFrameCount++,a++,(a<=10||a%500===0)&&i.log.debug(`frame ${a} ${this.decodedFrameCount}/${this.decodeFrameCount} decoded ${c.timestamp}`),Date.now()-this.lastDowngradeTime>5e3&&(this.type==="webCodecs"?this.checkDowngradeByFrameDiff():this.type==="wasm"&&this.checkDowngradeByTimestampDiff(c.timestamp)),e.next(c)}),t.on("error",c=>{i.log.error(c),e.error(n==="webCodecs"?4:8)}),yield t.initialize(this.videoElement),!this._decodeSink)return;if(t.configure(this.config),n==="wasm"&&s==="webgl"){this.videoContext=new ke({frameRate:15,logger:i.log,name:i.userId}),this.videoContext.create(),this.videoContext.on(ke.UNAVAILABLE,l=>{i.log.error(l),e.error(7)});let c=new Dc(this.videoContext);t.on("videoCodecInfo",l=>c.resize(l.width,l.height)),t.on("videoFrame",l=>{({y:c.Y,u:c.U,v:c.V}=l),this.downgradeLevel===1?this.decodedFrameCount%2===0&&c.render(this.decodedFrameCount):c.render(this.decodedFrameCount)}),i.source=c,i.player.setCanvas(this.videoContext._canvas,2)}else if(s==="videoFrame"){i.player.setCanvas();let c=new MediaStreamTrackGenerator({kind:"video"}),l=c.writable.getWriter();i.setInputMediaStreamTrack(c),t.on("videoFrame",h=>l.write(h))}else{this.videoContext=new Xe({frameRate:15,logger:i.log,name:i.userId}),this.videoContext.create({alpha:!1});let c=this.videoContext.createVideoImageSource();t.on("videoFrame",h=>{try{c.image=h,c.update()}catch(u){delete this.goodType,i.log.error(u),e.error(11)}});let l=new jr(this.videoContext,{name:"remotePlayer",logger:i.log});c.connect(l),i.source=c,i.player.setCanvas(this.videoContext._canvas,2)}this.decoder=t}catch(a){i.log.error(a),e.error(n==="webCodecs"?2:6)}})}};var gn=class extends Hp.EventEmitter{constructor(e){super();this.room=e;d(this,"videoContext");d(this,"_glVideoContext");d(this,"_2dVideoContext");d(this,"destination");d(this,"smallVideoContext");d(this,"smallDestination");d(this,"smallTrackSource");d(this,"smallImageSource");d(this,"_isMirror",!1);d(this,"_rotation",0);d(this,"cameraTrack");d(this,"cameraNode");d(this,"transformNode");d(this,"mixNode");d(this,"screenTrack");d(this,"screenNode");d(this,"selfModel",!1);d(this,"blurRadius",3);d(this,"arTrack");d(this,"_enableFaceCentering",!1);d(this,"Wasm");d(this,"waterMarkNode");d(this,"_waterMarkOption");d(this,"watermarkImageList",[]);d(this,"_beautyParams");d(this,"isUsingArTrack",!1);d(this,"_isMixScreen",!1);d(this,"_mixScreenOption",{});d(this,"_virtualBackground");d(this,"_virtualBackgroundAbortCallback");d(this,"virtualBackgroundInstance");d(this,"_bgAssetPath");d(this,"log",C.createLogger({id:"vm"}));d(this,"_faceDetector");d(this,"_mat4");d(this,"_checkId",0);d(this,"_use2d",!1);d(this,"_autoSwitchRenderMode",!0);d(this,"_selfieSegmentation");d(this,"encodePipeline",[]);d(this,"decodePipeline",[]);e&&(this.log.setUserId(e.userId),this.log.setSdkAppId(e.sdkAppId)),this.smallVideoContext=new Xe({frameRate:15,logger:this.log,name:"s"}),this.enablePrintDetail()}get smallMode(){var e;return((e=this.room)==null?void 0:e.smallMode)||"canvas"}get _hasVirtualBg(){return!!this._virtualBackground}get _hasWaterMark(){return this.watermarkImageList.length>0}get _isRotate(){return this._rotation!==0}get _isTransform(){return this._isMirror||this._isRotate}get renderMode(){return this._autoSwitchRenderMode?"auto":this._use2d?"2d":"webgl"}set renderMode(e){if(this._autoSwitchRenderMode=e==="auto",this._autoSwitchRenderMode)return;let t=e==="2d";this._use2d!==t&&(this._use2d=t,this.clear(),this.videoContext=this._use2d?this.get2dVideoContext():this.getGlVideoContext(),this.update())}get cameraResolution(){var r;let{width:e,height:t}=((r=this.cameraTrack)==null?void 0:r.settings)||{};return vi(this._rotation)?{width:t,height:e}:{width:e,height:t}}get2dVideoContext(){return this._2dVideoContext?this._2dVideoContext.destroy():this._2dVideoContext=new Xe({frameRate:15,logger:this.log,name:"m"}),this._2dVideoContext.create({alpha:this._hasWaterMark||this._hasVirtualBg}),this._2dVideoContext}getGlVideoContext(){if(!this._glVideoContext)this._glVideoContext=new ke({frameRate:15,logger:this.log,name:"m"});else if(this._glVideoContext.available)return this._glVideoContext;return this.initializeGlVideoContext(),this._glVideoContext}initializeGlVideoContext(){try{this._glVideoContext.create(),this._glVideoContext.on(ke.UNAVAILABLE,e=>{var t;this.emit("error",e),this.log.warn("video context unavailable",e),(t=this._virtualBackgroundAbortCallback)==null||t.call(this,e),this.update().catch(r=>{this.log.error(r)})})}catch(e){this.emit("error",e)}}enablePrintDetail(e=2e3){this._checkId=se.run("interval",()=>{this.destination&&this.log.debug(this.destination.getInfo())},{delay:e})}destroy(){var e,t;(e=this._2dVideoContext)==null||e.destroy(),(t=this._glVideoContext)==null||t.destroy(),this.smallVideoContext.destroy(),se.clearTask(this._checkId)}get needAlpha(){return this._hasWaterMark||this._hasVirtualBg}get active(){return(nr||this._isMixScreen||this._isTransform||this._hasWaterMark||this._hasVirtualBg||this._beautyParams)&&this.checkOrCreateVideoContext()}sendCreateResult(e="videoCtxGl",t){let r=e==="videoCtxGl"?512700:512701;t?b.addFailedEvent({key:r,error:t}):b.addSuccessEvent({key:r})}checkOrCreateVideoContext(){let e=this._use2d;if(this._autoSwitchRenderMode&&(this._use2d=!this._hasVirtualBg),this.videoContext)if(this.videoContext.available){let t=!this.videoContext.hasAlpha&&this.needAlpha;if(this._autoSwitchRenderMode&&e===this._hasVirtualBg)this.clear();else if(t)if(this._use2d)this.clear();else return!0;else return!0}else{if(this._glVideoContext=new ke({frameRate:15,logger:this.log,name:"m"}),this.initializeGlVideoContext(),this._glVideoContext.available)return this.videoContext=this._glVideoContext,this.videoContext.available;this.log.warn("webgl is still not available"),this.clear(),this._use2d=!0}return this.videoContext=this._use2d?this.get2dVideoContext():this.getGlVideoContext(),this.videoContext.available}get smallTrack(){var e;return(e=this.smallDestination)==null?void 0:e.videoTrack}get hasSmall(){return!!this.smallTrack}get initialTrack(){var e;return(e=this.cameraTrack)==null?void 0:e.mediaTrack}initVirtualBackground(e,t,r){return this._selfieSegmentation=e,this._faceDetector=t,this._mat4=r,this._selfieSegmentation.changeModel()}setSmallVideo(e,t){if(this.smallMode!=="api")if(e){if(!this.smallVideoContext.available){if(this.smallVideoContext.create({alpha:!1}),!this.smallVideoContext.available)return;this.smallDestination=new Ka(this.smallVideoContext,e,this.log),this.smallVideoContext.on(ke.UNAVAILABLE,r=>{this.log.warn("small video context lost",r)})}if(this.smallVideoContext.frameRate=e.frameRate,this.smallDestination.resolution=e,t)this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource),this.smallImageSource?this.smallImageSource.image=t:(this.smallImageSource=this.smallVideoContext.createVideoImageSource(t),this.smallImageSource.resize(t.width,t.height),this.smallImageSource.connect(this.smallDestination));else if(this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource)this.smallTrackSource.replaceTrack(this.initialTrack);else{this.smallTrackSource=this.smallVideoContext.createVideoTrackSource(this.initialTrack,"smallTrackSource");let{width:r,height:s}=this.cameraTrack.settings;this.smallTrackSource.resize(r,s),this.smallTrackSource.connect(this.smallDestination)}}else this.smallVideoContext.available&&(this.smallVideoContext.destroy(),delete this.smallDestination,delete this.smallTrackSource,delete this.smallImageSource)}_setMainOutput(e){var t;try{let r=this.cameraTrack,{small:s,player:n}=r;nr&&n.setCanvas(e);let a=e&&((t=this.destination)==null?void 0:t.videoTrack)||this.initialTrack;return this.isUsingArTrack&&this.arTrack&&(this.emit("output-track-changed"),a=this.arTrack),this._selfieSegmentation&&e&&!this._use2d&&(this._selfieSegmentation._glName||this._selfieSegmentation.setCanvas(e)),this.log.info(`set main output ${a?a.label:"no output track"}`),this.setSmallVideo(s,e),r.setOutputMediaStreamTrack(a)}catch(r){this.log.error("set main output failed",r)}}update(e=!1){return f(this,null,function*(){var s;if(!this.cameraTrack)return;if(!this.initialTrack)return this.updateWithoutCamera();if(!this.active)return this.cameraNode&&this.clear(),this._setMainOutput();let{settings:t,profile:r}=this.cameraTrack;if(this._use2d||!this._virtualBackground&&!this._beautyParams)this.destination||(this.destination=this.videoContext.createVideoTrackDestination({name:"mainDestination2d",logger:this.log})),nt===16?this.initialTrack instanceof CanvasCaptureMediaStreamTrack?(this.cameraNode&&(this.cameraNode instanceof Ji?(this.cameraNode.close(),delete this.cameraNode):this.cameraNode.image=this.initialTrack.canvas),this.cameraNode||(this.cameraNode=this.videoContext.createVideoImageSource(this.initialTrack.canvas,{name:"cameraCanvasSource",logger:this.log}))):(this.cameraNode&&(this.cameraNode instanceof Ji?this.cameraNode.replaceTrack(this.initialTrack):(this.cameraNode.close(),delete this.cameraNode)),this.cameraNode||(this.cameraNode=this.videoContext.createVideoTrackSource(this.initialTrack,"cameraTrackSource"))):this.cameraNode?this.cameraNode.replaceTrack(this.initialTrack):this.cameraNode=this.videoContext.createVideoTrackSource(this.initialTrack,"cameraNodeSource"),this.cameraNode.resize(t.width,t.height);else if(e&&this.cameraNode&&this.destination)this.cameraNode.replaceTrack(this.initialTrack);else{this.cameraNode&&this.cameraNode.close(),this.destination?this.destination.disableCheckMute():this.destination=new Za(this.videoContext,{name:"mainDestination",logger:this.log});let{width:n,height:a}=this.cameraResolution,c=yield this.getWatermarkImage(n,a);this._waterMarkOption={x:0,y:0,width:c.width,height:c.height,image:c},this.cameraNode=new vc(this.videoContext,{input:this.initialTrack,width:n,height:a,mirror:this._isMirror,rotation:this._rotation,bg:this._virtualBackground,selfModel:this.selfModel,waterMark:this._waterMarkOption,beautyParams:this._beautyParams,useTflite:!0,blurRadius:this.blurRadius,assetPath:this._bgAssetPath,selfieSegmentation:this._selfieSegmentation,Wasm:this.Wasm,enableFaceCentering:this._enableFaceCentering,faceDetector:this._faceDetector,mat4:this._mat4}),this.cameraNode.connect(this.destination),this.destination.enableCheckMute()}if(this.videoContext.frameRate=r.frameRate,this._use2d){let n=this.cameraNode;if(n.disconnect(),this._isTransform&&(this.transformNode?(this.transformNode.mirror=this._isMirror,this.transformNode.rotation=this._rotation):this.transformNode=new bc(this.videoContext,this.log,this._isMirror,this._rotation),n=n.connect(this.transformNode),n.disconnect(),vi(this._rotation)&&this.transformNode.resize(t.height,t.width),this.log.info(`start ${this._isMirror?"mirror":""}${this._isRotate?`, rotate ${this.rotation}`:""}`)),this.mixNode&&this.mixNode.close(),delete this.mixNode,this._isMixScreen||this._hasWaterMark){if(this.mixNode=new _n(this.videoContext,this.log),this.mixNode.resize(t.width,t.height),n.connect(this.mixNode,{zIndex:1}),this._hasWaterMark&&!this.waterMarkNode&&this._waterMarkOption)this.waterMarkNode=this.videoContext.createVideoImageSource(this._waterMarkOption.image,{autoResize:!1,logger:this.log}),this.waterMarkNode.resize(this._waterMarkOption.width,this._waterMarkOption.height),this.waterMarkNode.x=this._waterMarkOption.x,this.waterMarkNode.y=this._waterMarkOption.y;else if(this.waterMarkNode){let{width:c,height:l}=this.cameraResolution;this.waterMarkNode.image=yield this.getWatermarkImage(c,l),c&&l&&this.waterMarkNode.resize(c,l)}(s=this.waterMarkNode)==null||s.connect(this.mixNode,{zIndex:2}),this._isMixScreen&&this.screenTrack&&(this.screenNode||(this.screenNode=this.videoContext.createVideoTrackSource(this.screenTrack.mediaTrack,"screenNodeSource"),this.screenNode.resize(this.screenTrack.settings.width,this.screenTrack.settings.height)),this.screenNode.shouldUpdate=!1,this.screenNode.connect(this.mixNode,{zIndex:0})),this.changeMixLayout(this._mixScreenOption),n=this.mixNode,this.log.info("start mix",`${this.mixNode.width}x${this.mixNode.height}`)}n.connect(this.destination)}return this.log.info(`update ${this._use2d?"2d":"webgl"}`),this._setMainOutput(this.videoContext._canvas)})}clearLastFrame(){var e;this.destination&&((e=this.destination.ctx2d)==null||e.clearRect(0,0,this.destination.width,this.destination.height))}updateWithoutCamera(){return f(this,null,function*(){var r;if(!this._isMixScreen)return;if(!this.screenTrack||!this.screenTrack.mediaTrack){this.clearLastFrame();return}if(this.checkOrCreateVideoContext(),!this._use2d)return;this.destination||(this.destination=this.videoContext.createVideoTrackDestination({name:"mainDestination2d",logger:this.log}));let{settings:e,profile:t}=this.screenTrack;return this.videoContext.frameRate=((r=this.cameraTrack)==null?void 0:r.profile.frameRate)||t.frameRate,this.mixNode&&this.mixNode.close(),this.mixNode=new _n(this.videoContext,this.log),this.screenNode=this.videoContext.createVideoTrackSource(this.screenTrack.mediaTrack,"screenNodeSource"),this.screenNode.shouldUpdate=!0,this.screenNode.resize(e.width,e.height),this.screenNode.connect(this.mixNode,{zIndex:0}),this.changeMixLayout(this._mixScreenOption),this.mixNode.connect(this.destination),this.log.info("mix without camera"),this._setMainOutput(this.videoContext._canvas)})}changeInput(e){var t,r,s,n;if(e instanceof ut)return this.log.info("change screen input",(t=e.mediaTrack)==null?void 0:t.label),this.setScreenTrack(e);if(e instanceof qe)return this.log.info("change video input",(r=e.mediaTrack)==null?void 0:r.label),this.setCameraTrack(e);if(e instanceof fi){this.log.info("change remote input",(s=e.mediaTrack)==null?void 0:s.label);let a=e.mediaTrack;return e.setOutputMediaStreamTrack(a)}this.log.warn("change unknown input",(n=e.mediaTrack)==null?void 0:n.label)}removeInput(e){var t;e instanceof ut?((t=this.screenNode)==null||t.close(),delete this.screenNode,delete this.screenTrack,this.update()):e instanceof qe?this._isMixScreen?(delete this.cameraNode,this.cameraTrack._inputTrack=null,this.update()):(this.clear(),delete this.cameraTrack,this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource)):e instanceof fi&&e.source&&e.source.context.destroy()}setCameraTrack(e){return this.cameraTrack=e,this.update(!0)}setScreenTrack(e){return f(this,null,function*(){return this.screenTrack=e,this._isMixScreen&&(this.screenNode?this.screenNode.replaceTrack(e.mediaTrack):yield this.update()),e.setOutputMediaStreamTrack(e.mediaTrack)})}getWatermarkImage(e,t){return f(this,null,function*(){let r=document.createElement("canvas");t&&e&&(r.height=t,r.width=e);let s=r.getContext("2d");if(!s)throw new y({code:I.NOT_SUPPORTED,message:"Make image failed because of canvas context is null"});return this.watermarkImageList.sort((n,a)=>n.zIndex-a.zIndex),this.watermarkImageList.forEach(({image:n,x:a,y:c,width:l,height:h})=>{s.drawImage(n,a,c,l,h)}),uo(r.toDataURL())})}pushWaterMarkImageList(e){let{type:t}=e;this.watermarkImageList.some(s=>s.imageUrl===e.imageUrl&&s.height===e.height&&s.width===e.width&&s.x===e.x&&s.y===e.y&&s.type===e.type&&s.zIndex===e.zIndex)||((t==="mute"||t==="watermark")&&(this.watermarkImageList=this.watermarkImageList.filter(s=>s.type!==t)),this.watermarkImageList.push(e))}setBeautyParams(e){return f(this,null,function*(){this._beautyParams=e,this.update()})}stopBeauty(){return f(this,null,function*(){this._beautyParams=void 0,this.update()})}setVideoMixer(e){this._isMixScreen=!0,this._mixScreenOption=e,this.update()}updateVideoMixer(e){this.changeMixLayout(e),At(this._mixScreenOption,e)}changeMixLayout(e){if(!this._isMixScreen||!this.mixNode)return;let{camera:t,screen:r,container:s}=e;if(this.cameraNode&&t){let{width:n,height:a}=this.cameraNode,{x:c,y:l,width:h,height:u}=t;h&&!u?u=h*a/n:!h&&u&&(h=u*n/a),this.mixNode.changeInputLayout(this.cameraNode,{x:c,y:l,width:h,height:u})}if(this.screenNode&&r){let{width:n,height:a}=this.screenNode,{x:c,y:l,width:h,height:u}=r;h&&!u?u=h*a/n:!h&&u&&(h=u*n/a),this.mixNode.changeInputLayout(this.screenNode,{x:c,y:l,width:h,height:u})}s&&this.mixNode.resize(s.width,s.height)}deleteVideoMixer(){var e;this._isMixScreen=!1,this._mixScreenOption={},(e=this.screenNode)==null||e.close(),delete this.screenNode,this.update(),this.log.info("delete screenMixer")}setWatermark(e){return f(this,null,function*(){let t;try{t=yield uo((e==null?void 0:e.imageElement)||e.imageUrl)}catch(u){throw new y({code:I.INVALID_PARAMETER,message:`load image failed, url: ${e.imageUrl}`})}let{x:r=0,y:s=0,width:n=t.width,height:a=t.height,type:c="watermark",zIndex:l=2}=e;this.watermarkImageList.some(u=>u.type===c)?(this.watermarkImageList=this.watermarkImageList.filter(u=>u.type!==c),this.pushWaterMarkImageList({x:r,y:s,width:n,height:a,image:t,zIndex:l,type:c,imageUrl:e.imageUrl}),t=yield this.getWatermarkImage(this.cameraResolution.width,this.cameraResolution.height),this._waterMarkOption={x:0,y:0,width:t.width,height:t.height,image:t},this.waterMarkNode?(this.waterMarkNode.x=0,this.waterMarkNode.y=0,this.waterMarkNode.resize(t.width,t.height),this.waterMarkNode.image=t):this.update()):(this.pushWaterMarkImageList({x:r,y:s,width:n,height:a,image:t,zIndex:l,type:c,imageUrl:e.imageUrl}),yield this.freshWatermark()),this.log.info("set watermark",JSON.stringify(this.watermarkImageList,(u,m)=>u==="imageUrl"?void 0:m))})}deleteWatermark(e="watermark"){return f(this,null,function*(){this.watermarkImageList=this.watermarkImageList.filter(t=>t.type!==e),this.log.info("delete watermark",e,JSON.stringify(this.watermarkImageList,(t,r)=>t==="imageUrl"?void 0:r)),yield this.freshWatermark()})}freshWatermark(){return f(this,null,function*(){var s;(s=this.waterMarkNode)==null||s.close(),delete this.waterMarkNode,delete this._waterMarkOption;let{width:e,height:t}=this.cameraResolution,r=yield this.getWatermarkImage(e,t);this._waterMarkOption={x:0,y:0,width:r.width,height:r.height,image:r},this.update()})}setVirtualBackground(e){return f(this,null,function*(){var t;if(!e)delete this._virtualBackground,delete this._virtualBackgroundAbortCallback;else{if(e.onAbort&&(this._virtualBackgroundAbortCallback=e.onAbort),this._use2d&&!this._autoSwitchRenderMode)return Promise.reject(new Error("not support virtual background in 2d mode"));this._bgAssetPath=e.assetPath,e.type==="image"?this._virtualBackground=yield uo(e.imageUrl):(this.blurRadius=e.blurLevel||this.blurRadius||3,this._virtualBackground=e.type),this._enableFaceCentering=(t=e.enableFaceCentering)!=null?t:this._enableFaceCentering}if(this.log.info(`${this._virtualBackground?"start":"stop"} virtual background, ${(e==null?void 0:e.type)||""}, ${this.blurRadius||""}`),yield this.update(),this._virtualBackground&&!this._glVideoContext.available)throw new y({code:I.INVALID_OPERATION,message:`webgl context create failed, ${this._glVideoContext.error}`})})}get mixScreen(){return this._isMixScreen}set mixScreen(e){var t;this._isMixScreen=e,this._isMixScreen||((t=this.screenNode)==null||t.close(),delete this.screenNode),this.update()}set mirror(e){var t;this._isMirror!==e&&(this._isMirror=e,this._isTransform||((t=this.transformNode)==null||t.close(),delete this.transformNode),this.update())}get mirror(){return this._isMirror}set rotation(e){var t;this._rotation!==e&&(this._rotation=e,this._isTransform||((t=this.transformNode)==null||t.close(),delete this.transformNode),this.update())}get rotation(){return this._rotation}enableAr(e){this.arTrack=e,this.isUsingArTrack=!0,this.update()}updateAr(){return f(this,null,function*(){var e;(e=this.cameraTrack)!=null&&e.mediaTrack&&(yield this.virtualBackgroundInstance.ar.updateInputTrack(this.cameraTrack.mediaTrack.clone()))})}disableAr(){var e;this.isUsingArTrack=!1,(e=this.arTrack)==null||e.stop(),this.arTrack=void 0,this.update()}createDecodeContext(e){return new Oc(e)}clear(){var e;(e=this.videoContext)==null||e.disconnect(),delete this.destination,delete this.cameraNode,delete this.transformNode,delete this.screenNode,delete this.waterMarkNode}addEncodeProcessor({processor:e,type:t}){var r;this.encodePipeline.includes(e)||(this.encodePipeline[t]=e,(r=this.room)==null||r.enableInsertableStreams())}addDecodeProcessor({processor:e,type:t}){var r;this.decodePipeline.includes(e)||(this.decodePipeline[t]=e,(r=this.room)==null||r.enableInsertableStreams())}removeEncodeProcessor({type:e}){this.encodePipeline[e]=void 0}removeDecodeProcessor({type:e}){this.decodePipeline[e]=void 0}};v([Ma(function(e){this.log.error("update failed",e)})],gn.prototype,"update",1);var TE=0;var Mc=class extends H{constructor(e){super("room");d(this,"seq",++TE);d(this,"sdkAppId");d(this,"userId");d(this,"userSig");d(this,"privateMapKey");d(this,"latencyLevel");d(this,"tinyId");d(this,"scene");d(this,"roomId");d(this,"useStringRoomId");d(this,"role","anchor");d(this,"joinParams",null);d(this,"localTracks",new Set);d(this,"enableAutoPlayDialog",!0);d(this,"autoReceiveAudio",!0);d(this,"autoReceiveVideo",!0);d(this,"proxy_ws");d(this,"proxy_wt");d(this,"proxy_unified");d(this,"checkSystemResult",{result:!0,detail:{isBrowserSupported:!0,isWebRTCSupported:!0,isWebCodecsSupported:!0,isMediaDevicesSupported:!0,isScreenShareSupported:!0,isSmallStreamSupported:!0,isH264EncodeSupported:!0,isVp8EncodeSupported:!0,isH264DecodeSupported:!0,isVp8DecodeSupported:!0}});d(this,"keyPointManager");d(this,"audioManager");d(this,"videoManager");d(this,"callDurationCalculator");d(this,"badCaseDetector");d(this,"scheduleResult",{domains:null,iceServers:null,iceTransportPolicy:null,trtcAutoConf:null});d(this,"videoDecodeFallbackType");d(this,"smallMode","canvas");d(this,"_isUsingCachedSchedule",!1);d(this,"_log",C.createLogger({id:`r${this.seq}`}));d(this,"_joinedTimestamp",0);d(this,"_sdkType");d(this,"heartbeatReport");d(this,"quality");d(this,"enableSEI");d(this,"isDestroyed",!1);this.useStringRoomId=!!e.useStringRoomId,me(e.autoReceiveAudio)&&(this.autoReceiveAudio=e.autoReceiveAudio),me(e.autoReceiveVideo)&&(this.autoReceiveVideo=e.autoReceiveVideo),me(e.enableAutoPlayDialog)&&(this.enableAutoPlayDialog=e.enableAutoPlayDialog),this._sdkType=e.sdkType,this.keyPointManager=new Up({room:this,frameWorkType:e.frameWorkType,component:e.component,language:e.language}),this.callDurationCalculator=new Bp({room:this}),this.badCaseDetector=new Fp({room:this}),this.audioManager=new Va(this),this.videoManager=new gn(this)}get scriptTransformWorker(){}get isMainStreamPublished(){for(let e of this.localTracks)if(e.mediaType&4)return!0;return!1}get isAuxStreamPublished(){for(let e of this.localTracks)if(e.mediaType&2)return!0;return!1}get hasAuxStream(){for(let e of this.remotePublishedUserMap.values())if(e.muteState.hasAuxiliary)return!0;return this.isAuxStreamPublished}get localMainVideoTrack(){for(let e of this.localTracks)if(e.mediaType&4)return e;return null}get localAuxVideoTrack(){for(let e of this.localTracks)if(e.mediaType&2)return e;return null}getLogger(){return this._log}get isJoining(){return this.state.toString()==="joining"}get isJoined(){return this.state==="joined"}get isLeft(){return this.state==="left"}addTrack(e){return f(this,null,function*(){return this.publish(e)})}removeTrack(e){return f(this,null,function*(){return this.unpublish(e)})}replaceTrack(e){return f(this,null,function*(){})}setEncodedDataProcessingListener(e){throw new Error("Method not implemented.")}enableAIVoice(e){throw new Error("Method not implemented.")}setProxyServer(e){if(ee(e))e.startsWith("wss://")?this.proxy_ws=e:e.startsWith("https://")&&(this.proxy_wt=e);else if(Je(e)){let{websocketProxy:t,webtransportProxy:r,loggerProxy:s,scheduleProxy:n,unifiedProxy:a}=e;this.proxy_ws=t,this.proxy_wt=r,this.proxy_unified=a,a?(sc([a,a]),Tr(`https://${a}`)):(s&&Tr(s),n&&sc(n))}E.once(A.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({sched_domain:_i.main,sched_back_domain:_i.backup,signal_domain:this.proxy_ws||this.proxy_wt||""}))}getRemoteAudioStats(){return f(this,null,function*(){let e={};return this.remotePublishedUserMap.forEach(t=>{e[t.userId]=t.remoteAudioTrack.stat}),e})}getTransportStats(){return f(this,null,function*(){var t;let e={rtt:((t=this.quality)==null?void 0:t.uplinkRTT)||0,downlinksRTT:{}};if(this.quality)for(let r of this.quality.downlinkInfo)e.downlinksRTT[r.userId]=r.rtt;return e})}getRemoteVideoStats(){return f(this,arguments,function*(e="main"){let t={};return this.remotePublishedUserMap.forEach(r=>{let s=e==="auxiliary"?r.remoteAuxiliaryTrack:r.remoteVideoTrack;t[r.userId]=s.stat}),t})}checkDestroy(){if(this.isDestroyed)throw new y({code:I.INVALID_OPERATION,message:P({key:x.CLIENT_DESTROYED,data:{funName:"join"}})})}destroy(){if(this.isJoined)throw this._log.warn(Ue.INVALID_DESTROY),new y({code:I.INVALID_OPERATION,message:P({key:x.INVALID_DESTROY})});this._log.info("destroy room"),this.audioManager.destroy(),this.videoManager.destroy(),this.keyPointManager.destroy(),this.callDurationCalculator.destroy(),this.badCaseDetector.destroy(),this.isDestroyed=!0,E.emit(A.ROOM_DESTROY,{room:this})}schedule(e,t){return f(this,null,function*(){var s,n,a,c;let r=V();try{let{isCached:l,result:h,detailCost:u}=yield su({userId:this.userId,sdkAppId:this.sdkAppId,roomId:this.useStringRoomId?e.strRoomId:e.roomId,useStringRoomId:this.useStringRoomId,version:xe,userSig:this.userSig,role:this.scene==="live"?e.role:void 0,frameWorkType:t,latencyLevel:e.latencyLevel});this._isUsingCachedSchedule=l,this._log.info(`schedule cache:${+l} ${It(h,{keysToExclude:["username","credential"]})}`),l&&E.once(A.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({scheduleCache:1})),this.scheduleResult=N(N({},this.scheduleResult),h),j((s=h.config)==null?void 0:s.retryCount)&&zc(h.config.retryCount),ee((n=h.config)==null?void 0:n.loggerDomain)&&Tr(h.config.loggerDomain),this.videoDecodeFallbackType=((a=h.config)==null?void 0:a.videoDecodeFallback)||this.videoDecodeFallbackType,this.smallMode=((c=h.config)==null?void 0:c.smallMode)||this.smallMode,E.emit(A.JOIN_SCHEDULE_SUCCESS,{room:this,schedule:this.scheduleResult,detailCost:u}),b.addSuccessEvent({key:521700,cost:V()-r})}catch(l){throw b.addFailedEvent({key:521700,error:l}),l}})}sendAbilityStatus(e){}enableInsertableStreams(){return Promise.resolve()}switchRoom(e){return Promise.reject()}isSwitchRoomSupported(){return!1}};var ef=$e(Ye());var Bu=$e(Du());var Gp=o=>{let i=ye(o),e={audioSsrc:0,audioRtxSsrc:0,bigVideoSsrc:0,bigVideoRtxSsrc:0,smallVideoSsrc:0,smallVideoRtxSsrc:0,auxVideoSsrc:0,auxVideoRtxSsrc:0};return i.media.forEach((t,r)=>{var s;if(t.ssrcs&&!T(t.ssrcs[0].id)){let n=Number(t.ssrcs[0].id),a=Number((s=t.ssrcs.filter(c=>c.attribute==="cname")[1])==null?void 0:s.id);switch(r){case 0:e.audioSsrc=n;break;case 1:e.bigVideoSsrc=n,e.bigVideoRtxSsrc=a;break;case 2:e.smallVideoSsrc=n,e.smallVideoRtxSsrc=a;break;case 3:e.auxVideoSsrc=n,e.auxVideoRtxSsrc=a;break}}}),e};function Wp(o){var e;let i=[];for(let t=0;t<o.rtp.length;t++){if(["rtx","red","ulpfec"].includes(o.rtp[t].codec))continue;let r=o.fmtp.filter(s=>s.payload===o.rtp[t].payload)[0];i.push({payload:o.rtp[t].payload,codec:o.rtp[t].codec,fmtp:r?r.config:"",rate:o.rtp[t].rate,rtx:((e=o.rtp[t+1])==null?void 0:e.codec)==="rtx"?o.rtp[t+1].payload:0,rtcpfb:((o==null?void 0:o.rtcpFb)||[]).filter(s=>s.payload===o.rtp[t].payload).map(({type:s,subtype:n})=>({id:s,params:n?[n]:[]}))})}return i}function EE(){return f(this,null,function*(){let o=new RTCPeerConnection;o.addTransceiver(p.VIDEO,{direction:p.TRANSCEIVER_DIRECTION_RECVONLY});let i=yield o.createOffer();if(!i.sdp)return[];let e=ye(i.sdp),t=Wp(e.media[0]);return o.close(),t})}var Jp=(o,i)=>f(void 0,null,function*(){var c;let e=ye(o),t={ice:{ufrag:"",password:""},dtls:{hash:"",fingerprint:"",setup:""},audio:{codecs:[],extensions:[]},video:{codecs:[],decoders:[],extensions:[]},useDataChannel:!1};t.ice.ufrag=String(e.media[0].iceUfrag),t.ice.password=e.media[0].icePwd||"",e.fingerprint&&(t.dtls.hash=e.fingerprint.type,t.dtls.fingerprint=e.fingerprint.hash,t.dtls.setup=e.setup||""),e.media[0].fingerprint&&(t.dtls.hash=e.media[0].fingerprint.type,t.dtls.fingerprint=e.media[0].fingerprint.hash),t.dtls.setup=e.media[0].setup||"";let r=e.media[0],s=e.media[1];r.ext&&(t.audio.extensions=r.ext.map(l=>({id:l.value,uri:l.uri}))),s.ext&&(t.video.extensions=s.ext.map(l=>({id:l.value,uri:l.uri})));let n={codec:r.rtp[0].codec,fmtp:r.fmtp[0].config,payload:r.fmtp[0].payload,rate:r.rtp[0].rate,channels:r.rtp[0].encoding,rtcpfb:[],rtx:0};(c=r.rtcpFb)==null||c.forEach(({payload:l,type:h,subtype:u})=>{if(l===n.payload){let m={id:h,params:[]};u&&m.params.push(u),n.rtcpfb.push(m)}}),t.audio.codecs.push(n);let a=["h264","vp8"];return i&&a.shift(),t.video.codecs=[...Wp(s)].filter(l=>a.includes(l.codec.toLocaleLowerCase())),t.video.decoders=(yield EE()).filter(l=>["h264","vp8"].includes(l.codec.toLocaleLowerCase())),t}),jp=({serverAbility:o,clientAbility:i,offerSDP:e,enableCustomMessage:t})=>{let r=ye(e),s={extmapAllowMixed:"extmap-allow-mixed",groups:r.groups,icelite:"ice-lite",media:[],msidSemantic:{semantic:"",token:"WMS"},name:"-",origin:{address:"127.0.0.1",username:"-",sessionId:String(Date.now()),sessionVersion:1,netType:"IN",ipVer:4},timing:{start:0,stop:0},version:0},n={candidates:o.candidates.map(a=>({component:1,foundation:"1",generation:0,ip:a.ip,port:a.port,priority:a.priority,transport:a.foundation,type:a.type})),connection:{version:4,ip:"0.0.0.0"},direction:p.TRANSCEIVER_DIRECTION_RECVONLY,ext:o.audio.extensions.map(a=>({value:a.id,uri:a.uri})),fingerprint:{type:o.dtls.hash,hash:o.dtls.fingerprint},fmtp:[{payload:o.audio.codecs[0].payload,config:o.audio.codecs[0].fmtp}],icePwd:o.ice.password,iceUfrag:o.ice.ufrag,mid:"0",payloads:String(o.audio.codecs[0].payload),port:r.media[0].port,protocol:r.media[0].protocol,type:p.AUDIO,setup:o.dtls.setup,rtcpFb:o.audio.codecs[0].rtcpfb.map(a=>({payload:o.audio.codecs[0].payload,type:a.id,subtype:a.params[0]})),rtcpMux:"rtcp-mux",rtcpRsize:"rtcp-rsize",rtp:[{payload:o.audio.codecs[0].payload,codec:o.audio.codecs[0].codec,rate:o.audio.codecs[0].rate,encoding:o.audio.codecs[0].channels}]};return s.media.push(n),[1,2,3].forEach(a=>{s.media.push(Fu({mid:a,serverAbility:o,clientAbility:i,parsedOffer:r}))}),t&&s.media.push(r.media.find(a=>a.mid==="dc")),vt(s)},Fu=({mid:o,serverAbility:i,clientAbility:e,parsedOffer:t,isDownlink:r=!1})=>{let s={candidates:i.candidates.map(n=>({component:1,foundation:"1",generation:0,ip:n.ip,port:n.port,priority:n.priority,transport:n.foundation,type:n.type})),connection:{version:4,ip:"0.0.0.0"},direction:p.TRANSCEIVER_DIRECTION_RECVONLY,ext:i.video.extensions.map(n=>({value:n.id,uri:n.uri})),fingerprint:{type:i.dtls.hash,hash:i.dtls.fingerprint},fmtp:[],icePwd:i.ice.password,iceUfrag:i.ice.ufrag,mid:String(o),payloads:"",port:t.media[0].port,protocol:t.media[0].protocol,type:p.VIDEO,setup:i.dtls.setup,rtcpFb:[],rtcpMux:"rtcp-mux",rtcpRsize:"rtcp-rsize",rtp:[]};if(r){let n=i.video.decoders;(!n||n.length===0)&&(n=i.video.codecs),(!n||n.length===0)&&(n=e.video.decoders),n.forEach(a=>{Kr(s,a)})}else{let n=i.video.codecs.findIndex(c=>c.codec.toLowerCase()===(i.useVp8?"vp8":"h264")),a=i.video.codecs[n]||e.video.codecs[0];Kr(s,a)}return s},Kr=(o,i)=>{o.payloads=`${o.payloads} ${i.payload}`.trim(),o.fmtp.push({payload:i.payload,config:i.fmtp}),o.rtcpFb=[...o.rtcpFb||[],...i.rtcpfb.map(e=>({payload:i.payload,type:e.id,subtype:e.params[0]}))],o.rtp.push({payload:i.payload,codec:i.codec.toUpperCase(),rate:i.rate}),i.rtx&&(o.payloads=`${o.payloads} ${i.rtx}`,o.fmtp.push({payload:i.rtx,config:`apt=${i.payload}`}),o.rtp.push({payload:i.rtx,codec:"rtx",rate:i.rate}))};function SE(o){let i=new Set(["urn:ietf:params:rtp-hdrext:sdes:mid","urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id","urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id"]);o.ext&&(o.ext=o.ext.filter(e=>!i.has(e.uri)))}function IE(o){if(!o.rtcpFb)return;let i=[];o.rtcpFb.forEach((e,t)=>{var r;i.push(e),o.rtcpFb&&((r=o.rtcpFb[t+1])==null?void 0:r.payload)!==e.payload&&e.type!=="rrtr"&&i.push({payload:e.payload,type:"rrtr"})}),o.rtcpFb=i}function AE(o){o.type===p.VIDEO&&o.fmtp&&o.fmtp.forEach(i=>{i.config.includes("apt")||(i.config+=";sps-pps-idr-in-keyframe=1")})}function RE(o){o.type===p.AUDIO&&o.fmtp&&o.fmtp.forEach(i=>{i.config+=";sprop-stereo=1;stereo=1"})}var qp=(o,i,e)=>{let t=Bu.default.parse(o);return t.media.forEach((r,s)=>{var n;if((r.type===p.AUDIO||r.type===p.VIDEO)&&(IE(r),AE(r),RE(r),SE(r),r.type===p.VIDEO)){if(s<4)r.payloads="",r.fmtp=[],r.rtp=[],r.rtcpFb=[],i.video.codecs.forEach(a=>Kr(r,a));else if(e){r.payloads="",r.fmtp=[],r.rtp=[],r.rtcpFb=[];let a=e.video.decoders;(!a||a.length===0)&&(a=e.video.codecs),(!a||a.length===0)&&(a=i.video.decoders),a.forEach(c=>Kr(r,c))}}(n=r.payloads)!=null&&n.includes("datachannel")&&t.groups&&r.mid&&(t.groups[0].mids=t.groups[0].mids.replace(r.mid,"dc"),r.mid="dc")}),Bu.default.write(t)};var Xp=$e(Ye());var kc=class extends Xp.EventEmitter{constructor(e){super();this.room=e;d(this,"mainFpsHealth",1);d(this,"mainBitrateHealth",1);d(this,"badMainBitrateHealthCount",0);d(this,"lastEmitBadHealthTime",0);d(this,"log");!pe&&Ze&&E.on("262",this.onVideoCodecChanged,this),this.log=e.getLogger().createChild({id:"h-d"})}onVideoCodecChanged({remoteUserId:e,streamType:t,isHWCodec:r,codec:s}){if(!(e||t===7||s!=="h264")){if(!r){this.room.off("heartbeat-report",this.onHeartbeatReport,this);return}this.room.listeners("heartbeat-report").includes(this.onHeartbeatReport)||this.room.on("heartbeat-report",this.onHeartbeatReport,this)}}onHeartbeatReport(e){Date.now()-this.lastEmitBadHealthTime<30*1e3||(e.msg_up_stream_info.msg_video_status.forEach(t=>{if(t.uint32_video_enc_fps&&t.uint32_video_capture_fps){let r=t.uint32_video_enc_fps/t.uint32_video_capture_fps;t.uint32_video_stream_type===2&&(this.mainFpsHealth=r)}if(t.uint32_video_codec_bitrate&&t.uint32_video_stream_type===2){let{localMainVideoTrack:r}=this.room;r&&(this.mainBitrateHealth=t.uint32_video_codec_bitrate/1e3/r.profile.bitrate)}}),this.log.debug(`mainBitrateHealth: ${this.mainBitrateHealth} mainFpsHealth: ${this.mainFpsHealth}`),this.mainBitrateHealth>.5&&(this.badMainBitrateHealthCount=0),this.mainFpsHealth>.9&&this.mainBitrateHealth<.5&&(this.badMainBitrateHealthCount++,this.badMainBitrateHealthCount>3&&(this.badMainBitrateHealthCount=0,this.lastEmitBadHealthTime=Date.now(),this.log.warn(`bad main bitrate health: ${this.mainBitrateHealth}`),this.emit("1",{isAux:!1}))))}destroy(){E.off("262",this.onVideoCodecChanged,this),this.room.off("heartbeat-report",this.onHeartbeatReport,this)}};d(kc,"EVENT_BAD_HEALTH","bad_health");var zp=kc;function Qp({seiMessageList:o,isAudio:i,isMain:e}){return new TransformStream({transform(t,r){let s=t;i?audioEncodePipeline.forEach(n=>{s=n({frame:s})}):videoEncodePipeline.forEach(n=>{s=n({frame:s,seiMessageList:o,onDump:()=>{self.postMessage({type:"dump",isAudio:i,data:s.data,userId:"",streamType:e?"main":"auxiliary"})}})}),r.enqueue(s)}})}function Yp(o,i,e){return new TransformStream({transform(t,r){let s=t;videoDecodePipeline.forEach(n=>{s=n({frame:s,onSEI:a=>{a.forEach(c=>{self.postMessage({type:"sei",seiPayloadType:c.seiPayloadType,data:c.seiPayload.buffer,userId:o,streamType:i})})},onDump:()=>{self.postMessage({type:"dump",isAudio:e,data:s.data,userId:o,streamType:i})}})}),r.enqueue(s)}})}function Zp(o){let i=[Hi],e=[_u,pu,fu,mu,Qp,Yp],t=()=>{let l=[],h=[],u=[];self.onmessage=m=>{m.data.type==="sei"&&(m.data.isMain?(l.push(m.data.data),m.data.small&&u.push(m.data.data)):h.push(m.data.data))},self.onrtctransform=m=>{let{options:g}=m.transformer,D=g.isReceiver?Yp(g.userId,g.streamType,g.isAudio):Qp({isAudio:g.isAudio,seiMessageList:g.isMain?g.small?u:l:h,isMain:g.isMain});m.transformer.readable.pipeThrough(D).pipeTo(m.transformer.writable)}},r=`const videoEncodePipeline=[${o.videoEncodePipeline.toString()}];
|
|
111
|
-
const videoDecodePipeline=[${o.videoDecodePipeline.toString()}];
|
|
112
|
-
const audioEncodePipeline = [${o.audioEncodePipeline.toString()}];
|
|
113
|
-
const audioDecodePipeline = [${o.audioDecodePipeline.toString()}];`,s=`(()=>{${i.map(l=>`const ${l.name}=(()=>${l.toString()})()`).join(`
|
|
114
|
-
`)}
|
|
115
|
-
${e.map(l=>l.toString()).join(`
|
|
116
|
-
`)};(${t})();${r}})()`,n=new Blob([s],{type:"text/javascript"}),a=URL.createObjectURL(n),c=new Worker(a);return URL.revokeObjectURL(a),c}var Ti=(l=>(l.TRACK="track",l.DATA_CHANNEL_MESSAGE="data_channel_msg",l[l.CONNECTION_STATE_CHANGED="connection-state-changed"]="CONNECTION_STATE_CHANGED",l[l.FIREWALL_RESTRICTION="firewall-restriction"]="FIREWALL_RESTRICTION",l.RECONNECTED="spc-reconnected",l.RECONNECT_FAILED="spc-reconnect-failed",l.ERROR="error",l.SEI_MESSAGE="sei-message",l.DUMP="dump",l))(Ti||{}),tf=0,rf=!1,CE=new Set,yE=o=>tf>2&&!rf&&CE.size===0&&o,bE=1,jt=class extends ef.default{constructor({signalChannel:e,room:t,enableCustomMessage:r}){super();d(this,"stat",{iceStartTime:0,iceEndTime:0,dtlsStartTime:0,dtlsEndTime:0,peerConnectionStartTime:0,peerConnectionEndTime:0});d(this,"currentState","DISCONNECTED");d(this,"_room");d(this,"_signalChannel");d(this,"_peerConnection",null);d(this,"_datachannel",null);d(this,"_enableCustomMessage");d(this,"_log");d(this,"_downlinkMIDMap",new Map);d(this,"_downlinkMIDUserIDMap",new Map);d(this,"_reconnectionTimer",-1);d(this,"reconnectionCount",0);d(this,"clientAbility");d(this,"_serverAbility",null);d(this,"addDownlinkQueue",new Set);d(this,"removeDownlinkQueue",new Set);d(this,"_parsedAnswer",null);d(this,"_updateSDPPromise",null);d(this,"_waitForPCConnectedPromise");d(this,"clearWaitForConnectedPromise");d(this,"clearConnectTimeout");d(this,"_isSDPLogged",!1);d(this,"enableInsertableStreams",!1);d(this,"insertableStreamsAbortMap",new Map);d(this,"receiverRemoteTrackMap",new WeakMap);d(this,"scriptTransformWorker");d(this,"_isRelayTried",!1);d(this,"_rttOverCount",0);d(this,"originOffer",null);d(this,"autoSubscribedSsrcGroups",new Map);d(this,"autoSubscribedUserMap",new Map);this._room=t,this._enableCustomMessage=r,this._signalChannel=e,this._log=C.createLogger({id:`spc${bE++}`,userId:this._room.userId,sdkAppId:this._room.sdkAppId}),this._room.enableCodecPipeline&&(Vi?this.enableInsertableStreams=!0:this.initScriptTransformWorker()),this._room.healthDetector.on("1",this.onBadHealth,this)}get isH264EncodeSupported(){let e=this._room.checkSystemResult.detail.isH264EncodeSupported;return this._serverAbility&&(e=e&&!!this._serverAbility.video.codecs.find(t=>t.codec.toLowerCase()==="h264")),e}addAbortController(e,t){var r;(r=this.insertableStreamsAbortMap.get(e))==null||r.abort("destory"),this.insertableStreamsAbortMap.set(e,t)}get isVP8EncodeSupported(){let e=this._room.checkSystemResult.detail.isVp8EncodeSupported;return this._serverAbility&&(e=e&&this._serverAbility.video.codecs.find(t=>t.codec.toLowerCase()==="vp8")),e}get videoCodec(){var t,r;let e=(t=this._parsedAnswer)==null?void 0:t.media[1].rtp.find(s=>["h264","vp8"].includes(s.codec.toLowerCase()));return e?e.codec.toLowerCase():(r=this._serverAbility)!=null&&r.useVp8?"vp8":"h264"}get downlinkVideoCodec(){var e;return(e=this._serverAbility)!=null&&e.video.decoders.find(t=>t.codec.toLowerCase()==="h264")?"h264":"vp8"}get isUsingH264(){return this.videoCodec==="h264"}get is42001fSupported(){return this.clientAbility?!!this.clientAbility.video.codecs.find(e=>e.fmtp.includes("42001f")):!1}get uplinkSSRC(){return this._peerConnection&&this._peerConnection.localDescription?Gp(this._peerConnection.localDescription.sdp):{audioSsrc:0,audioRtxSsrc:0,bigVideoSsrc:0,bigVideoRtxSsrc:0,smallVideoSsrc:0,smallVideoRtxSsrc:0,auxVideoSsrc:0,auxVideoRtxSsrc:0}}onBadHealth({isAux:e}){this.useHWEncoder(!1,e?7:2)}initScriptTransformWorker(){Do&&(this.scriptTransformWorker=Zp({videoEncodePipeline:this._room.videoManager.encodePipeline,videoDecodePipeline:this._room.videoManager.decodePipeline,audioEncodePipeline:this._room.audioManager.encodePipeline,audioDecodePipeline:this._room.audioManager.decodePipeline}),this.scriptTransformWorker.onmessage=e=>{e.data.type==="sei"&&this.emit("sei-message",e.data),e.data.type==="dump"&&this.emit("dump",e.data)},this.scriptTransformWorker.onerror=e=>{this._log.error("scriptTransformWorker error: ",e)})}get isReconnecting(){return this.currentState==="RECONNECTING"||this._reconnectionTimer>0||this.reconnectionCount>0}get dtlsTransport(){if(!this._peerConnection)return null;let e=this._peerConnection.getSenders();return e.length===0?null:e[0].transport}getPeerConnectionConfig(e){var s;let t={encodedInsertableStreams:this.enableInsertableStreams,offerExtmapAllowMixed:!0,iceServers:e,iceTransportPolicy:this._room.getIceTransportPolicy(),sdpSemantics:this._room.sdpSemantics,bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",tcpCandidatePolicy:"disable",IceTransportsType:"nohost"},r=(s=this._peerConnection)==null?void 0:s.getConfiguration().encodedInsertableStreams;return Un(r)&&(t.encodedInsertableStreams=r),this._log.debug("getPeerConnectionConfig",JSON.stringify(t)),t}initialize(e){return f(this,null,function*(){var r;let t;try{return this._peerConnection=new RTCPeerConnection(this.getPeerConnectionConfig(e)),this._peerConnection.oniceconnectionstatechange=()=>{if(!this._peerConnection)return;let s=this._peerConnection.iceConnectionState;this._log.debug(`ice state: ${s}`),s==="checking"&&this.stat.iceStartTime===0?this.stat.iceStartTime=Date.now():s==="connected"&&this.stat.iceEndTime===0?(this.stat.iceEndTime=Date.now(),this._signalChannel.clearBakRelayIps(),b.addSuccessEvent({key:521711,cost:this.stat.iceEndTime-this.stat.iceStartTime})):s==="failed"&&b.addFailedEvent({key:521711})},this._peerConnection.onsignalingstatechange=()=>{var n;let s=((n=this._peerConnection)==null?void 0:n.signalingState)||"";this._log[s==="closed"?"debug":"info"](`signaling state: ${s}`)},this._peerConnection.onconnectionstatechange=this.onConnectionStateChange.bind(this),this._peerConnection.ontrack=s=>this.emit("track",s),this._enableCustomMessage&&(this._datachannel=this._peerConnection.createDataChannel(`${this._room.userId}dc`),this._datachannel.binaryType="arraybuffer",this._datachannel.onopen=()=>{this._log.info("datachannel open")},this._datachannel.onclose=()=>{this._log.warn("datachannel close")},this._datachannel.onmessage=s=>{let n=new Hu(s.data);this.emit("data_channel_msg",{data:n})},this._datachannel.onerror=s=>{this._log.warn("datachannel error",s)}),this._peerConnection.addTransceiver(p.AUDIO,{direction:p.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(p.VIDEO,{direction:p.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(p.VIDEO,{direction:p.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(p.VIDEO,{direction:p.TRANSCEIVER_DIRECTION_SENDONLY}),t=yield this._peerConnection.createOffer(),this.clientAbility=yield Jp(t.sdp,((r=this._room.scheduleResult.config)==null?void 0:r.remove264FromSDP)||!1),this.originOffer=t,this.dtlsTransport&&(this.dtlsTransport.onstatechange=()=>{let{dtlsTransport:s}=this;s&&(this._log.debug(`dtls state: ${s.state}`),s.state==="connecting"&&this.stat.dtlsStartTime===0?this.stat.dtlsStartTime=Date.now():s.state==="connected"&&this.stat.dtlsEndTime===0&&(this.stat.dtlsEndTime=Date.now()))}),b.addSuccessEvent({key:521707}),this.clientAbility}catch(s){throw b.addFailedEvent({key:521707,error:s}),this._log.error(`initialize failed ${s}
|
|
117
|
-
offer: ${t==null?void 0:t.sdp}`),s}})}setIceServers(e){return f(this,null,function*(){var t;if(!(!this._peerConnection||e.length===0))try{if(this._log.info("setIceServers",JSON.stringify(e,(r,s)=>r==="username"||r==="credential"?"hided":s)),this._peerConnection.setConfiguration(this.getPeerConnectionConfig(e)),(t=this._peerConnection)!=null&&t.localDescription||!this.originOffer){this._log.warn("setIceServers already has localDescription or no origin Offer");return}yield this.setOffer(this.originOffer)}catch(r){this._log.warn("setIceServers error ",r)}})}setPriority(e="high"){if(this._peerConnection)try{this._peerConnection.getSenders().forEach(r=>{let s=r.getParameters();s.encodings[0]&&(s.encodings[0].priority=e,s.encodings[0].networkPriority=e,r.setParameters(s).catch(n=>{this._log.warn("setPriority error ",n)}))})}catch(t){this._log.warn("setPriority error ",t)}}connect(e,t=!1){return f(this,null,function*(){var r,s,n;try{if(this.currentState==="CONNECTED")return;!((r=this._peerConnection)!=null&&r.localDescription)&&this.originOffer&&(yield this.setOffer(this.originOffer));let a=V(),c={type:"answer",sdp:jp({serverAbility:e,clientAbility:this.clientAbility,offerSDP:this._peerConnection.localDescription.sdp,enableCustomMessage:this._enableCustomMessage})};this._serverAbility=e,yield this.setAnswer(c),yield this.waitForPeerConnectionConnected();let l=((s=this._room.scheduleResult.config)==null?void 0:s.priority)||((n=this._room.joinParams)==null?void 0:n.priority)||new URLSearchParams(location.search).get("priority");l&&this.setPriority(l),t||b.addSuccessEvent({key:521703,cost:V()-a})}catch(a){let c=a instanceof y&&a.code===I.API_CALL_ABORTED;throw c||this._log.error(`connect failed: ${a}`,e),this.reset(),!c&&!this.isReconnecting&&(b.addFailedEvent({key:521703,error:a}),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.startReconnection()),a}})}reconnect(){return f(this,null,function*(){if(this._reconnectionTimer!==-1){this._log.warn("reconnect() is reconnecting, ignore current reconnection");return}if(!this._signalChannel.isConnected){this._log.warn("reconnect() wait signal channel is connected"),this._signalChannel.once(Ne.CONNECTED,this.reconnect,this);return}try{this.reconnectionCount+=1,this._log.warn(`reconnect() trying [${this.reconnectionCount}]`),this.reset();let e=this._signalChannel.getBackupRelayIpPair(),t=yield this.initialize(this._room.getIceServers(e!=null&&e.iceServer?[e.iceServer]:[])),r=N({ability:t},e),s=yield this._signalChannel.sendWaitForResponse({command:Y.REBUILD_PEER_CONNECTION,responseCommand:F.REBUILD_PEER_CONNECTION_RES,data:r,enableLog:!1});if(s.data.code!==0)throw new y({code:s.data.code,message:s.data.message});yield this.connect(s.data.data.ability,!0),b.addSuccessEvent({key:521704}),this._log.warn("reconnect() success"),this.stopReconnection(),E.emit(A.SPC_RECONNECTED,{room:this._room}),this.emit("spc-reconnected")}catch(e){if(!this.isReconnecting)return;if(e!=null&&e.message.includes("timeout")){let t=xt(this.reconnectionCount);this._log.warn(`reconnect() timeout, try again after ${t/1e3}s`),yield Ni(t,r=>{this._reconnectionTimer=r}),this.clearReconnectionTimer(),yield this.reconnect()}else this._log.error(`reconnect() failed ${e==null?void 0:e.code} ${e}`),b.addFailedEvent({key:521704,error:e}),this.reconnectionCount>=Ai()&&this._log.warn(`SDK has tried reconnect for ${Ai()} times, but all failed, please check your network`),this.stopReconnection(),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.emit("error")}})}getPeerConnection(){return this._peerConnection}startReconnection(){return f(this,null,function*(){this.isReconnecting||(this._log.warn("start reconnect"),this._updateSDPPromise=null,this.emitConnectionStateChangedEvent("RECONNECTING"),yield this.reconnect())})}stopReconnection(){var e;this.isReconnecting&&(this._log.info("stop reconnect"),this.reconnectionCount=0,this.clearReconnectionTimer(),(e=this.clearConnectTimeout)==null||e.call(this),this._signalChannel.off(Ne.CONNECTED,this.reconnect,this),this.currentState==="RECONNECTING"&&this.emitConnectionStateChangedEvent("DISCONNECTED"))}checkPeerConnectionToReconnect(){var e;!this.isReconnecting&&((e=this._peerConnection)==null?void 0:e.connectionState)===ge.CLOSED&&this.startReconnection()}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}onConnectionStateChange(e){var s;let t=((s=this._peerConnection)==null?void 0:s.iceConnectionState)||"closed",r=this.getDTLSTransportState();this._log.info(`connectionState: ${e.target.connectionState} ICE: ${t} DTLS: ${r}`),e.target.connectionState===ge.CONNECTING&&(this.stat.peerConnectionStartTime===0&&(this.stat.peerConnectionStartTime=Date.now()),this.emitConnectionStateChangedEvent("CONNECTING")),(e.target.connectionState===ge.FAILED||e.target.connectionState===ge.CLOSED)&&(this.emitConnectionStateChangedEvent("DISCONNECTED"),this._room.forceRelay?this.switchRelay(!1):this.startReconnection()),(e.target.connectionState===ge.CONNECTED||e.target.connectionState===ge.COMPLETED)&&(this.stat.peerConnectionEndTime===0&&(this.stat.peerConnectionEndTime=Date.now()),E.emit(A.SINGLE_CONNECTION_STAT,{room:this._room,stat:{ice:this.stat.iceEndTime-this.stat.iceStartTime,dtls:this.stat.dtlsEndTime-this.stat.dtlsStartTime,peerConnection:this.stat.peerConnectionEndTime-this.stat.peerConnectionStartTime}}),this.logSelectedCandidate(),this.emitConnectionStateChangedEvent("CONNECTED"))}getDTLSTransportState(){if(!this._peerConnection)return Mt;let e=null;return!dr()||this._peerConnection.getSenders().length===0?Mt:(e=this._peerConnection.getSenders()[0].transport,!wr()||this._peerConnection.getReceivers().length===0?Mt:e?e.state:Mt)}emitConnectionStateChangedEvent(e){e!==this.currentState&&(this.currentState==="RECONNECTING"&&e==="CONNECTING"||(this.emit(Ti.CONNECTION_STATE_CHANGED,{prevState:this.currentState,state:e}),this.currentState=e))}logSelectedCandidate(){return f(this,null,function*(){if(!this._peerConnection)return;let e=yield this._peerConnection.getStats();for(let[t,r]of e)if(cr(r)){let s=e.get(r.localCandidateId),n=e.get(r.remoteCandidateId);s&&(this._log.info(`local candidate: ${s.candidateType} ${s.protocol}:${s.ip||s.address}:${s.port} ${s.networkType||""} ${s.candidateType==="relay"?`relayProtocol:${s.relayProtocol}`:""}`),s.networkType&&kn(s.networkType)),n&&this._log.info(`remote candidate: ${n.candidateType} ${n.protocol}:${n.ip||n.address}:${n.port}`);break}})}waitForPeerConnectionConnected(){return this._waitForPCConnectedPromise?this._waitForPCConnectedPromise:(this._waitForPCConnectedPromise=new Promise((e,t)=>{if(this.currentState==="CONNECTED")return e();let r=c=>{c.state==="CONNECTED"&&(clearTimeout(a),n(),e())},s=({room:c})=>{c===this._room&&(clearTimeout(a),n(),t(new y({code:I.API_CALL_ABORTED,message:P({key:x.CONNECTION_ABORTED,data:"leave room"})})))},n=()=>{E.off(A.LEAVE_SUCCESS,s,this),this.off(Ti.CONNECTION_STATE_CHANGED,r,this)},a=setTimeout(()=>{n();let c=new y({code:I.API_CALL_TIMEOUT,message:"connection timeout"});tf+=1,yE(this._signalChannel.isConnected)&&(this._log.warn("firewall restriction"),rf=!0,this.emit(Ti.FIREWALL_RESTRICTION)),t(c)},cs);this.clearConnectTimeout=()=>{n(),clearTimeout(a),delete this.clearConnectTimeout},this.clearWaitForConnectedPromise=()=>{this._waitForPCConnectedPromise=null,t(new y({code:I.API_CALL_TIMEOUT,message:"connection timeout"}))},E.on(A.LEAVE_SUCCESS,s,this),this.on(Ti.CONNECTION_STATE_CHANGED,r,this)}),this._waitForPCConnectedPromise=this._waitForPCConnectedPromise.finally(()=>{this._waitForPCConnectedPromise=null,delete this.clearConnectTimeout}),this._waitForPCConnectedPromise)}waitForReconnected(){return this.isReconnecting?new Promise((e,t)=>{this.once("spc-reconnected",e),this.once("error",t)}):Promise.resolve()}addDownlink(e){return f(this,null,function*(){if(this._log.info(`addDownlink(${e.userId}) trying`),this.isReconnecting&&(yield this.waitForReconnected()),this._updateSDPPromise&&(yield this._updateSDPPromise),this.updateLocalAndRemoteSDPConfig(e),this.addDownlinkQueue.size===0)try{yield this.updateSDP(),this._log.info(`addDownlink(${e.userId}) done`)}catch(t){this._log.error(`addDownlink(${e.userId}) failed ${t}`),yield this.startReconnection()}})}updateLocalAndRemoteSDPConfig({ssrc:e,userId:t,tinyId:r}){if(!this._peerConnection)return;this._log.info(`updateLocalAndRemoteSDPConfig ${t} ${JSON.stringify(e)}`);let s=this._peerConnection.getTransceivers().slice(4).filter(m=>m.direction==="inactive").slice(0,3).map(m=>(m.direction=p.TRANSCEIVER_DIRECTION_RECVONLY,Number(m.mid)));this._parsedAnswer||(this._parsedAnswer=ye(this._peerConnection.remoteDescription.sdp));let n=this._parsedAnswer.media.filter(m=>{var g;return(g=m.ssrcs)==null?void 0:g.find(D=>{var _;return(_=D.value)==null?void 0:_.includes(r)})}),a,c,l;if(n.length===3)a=n[0],c=n[1],l=n[2];else if(s.length===3)a=this._parsedAnswer.media.find(m=>Number(m.mid)===Number(s[0])),c=this._parsedAnswer.media.find(m=>Number(m.mid)===Number(s[1])),l=this._parsedAnswer.media.find(m=>Number(m.mid)===Number(s[2]));else if(s.length===0){this._peerConnection.addTransceiver(p.AUDIO,{direction:p.TRANSCEIVER_DIRECTION_RECVONLY}),this._peerConnection.addTransceiver(p.VIDEO,{direction:p.TRANSCEIVER_DIRECTION_RECVONLY}),this._peerConnection.addTransceiver(p.VIDEO,{direction:p.TRANSCEIVER_DIRECTION_RECVONLY}),a=JSON.parse(JSON.stringify(this._parsedAnswer.media[0]));let m=Fu({mid:1,serverAbility:this._serverAbility,clientAbility:this.clientAbility,parsedOffer:ye(this._peerConnection.localDescription.sdp),isDownlink:!0});c=JSON.parse(JSON.stringify(m)),l=JSON.parse(JSON.stringify(m)),a.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(a),c.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(c),l.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(l)}a.direction=p.TRANSCEIVER_DIRECTION_SENDONLY;let h=`${r}-${e.audio}`;a.ssrcs=[{id:e.audio,attribute:"cname",value:`${h}`},{id:e.audio,attribute:"msid",value:`${h}-${p.MAIN} ${h}-audio`}],c.direction=p.TRANSCEIVER_DIRECTION_SENDONLY,c.ssrcs=[{id:e.video,attribute:"cname",value:`${h}`},{id:e.video,attribute:"msid",value:`${h}-${p.MAIN} ${h}-bigvideo`},{id:e.videoRtx,attribute:"cname",value:`${h}`},{id:e.videoRtx,attribute:"msid",value:`${h}-${p.MAIN} ${h}-bigvideo`}],c.ssrcGroups=[{semantics:"FID",ssrcs:`${e.video} ${e.videoRtx}`}],l.direction=p.TRANSCEIVER_DIRECTION_SENDONLY;let u=`${h}-aux`;l.ssrcs=[{id:e.auxiliary,attribute:"cname",value:u},{id:e.auxiliary,attribute:"msid",value:`${u} ${h}-aux${p.VIDEO}`},{id:e.auxiliaryRtx,attribute:"cname",value:`${u} ${h}-aux${p.VIDEO}`},{id:e.auxiliaryRtx,attribute:"msid",value:`${u} ${h}-aux${p.VIDEO}`}],l.ssrcGroups=[{semantics:"FID",ssrcs:`${e.auxiliary} ${e.auxiliaryRtx}`}],this._parsedAnswer.groups&&(this._parsedAnswer.groups[0].mids=this._parsedAnswer.media.map(m=>m.mid).join(" ")),this._downlinkMIDMap.set(t,[a.mid,c.mid,l.mid]),this._downlinkMIDUserIDMap.set(a.mid,t),this._downlinkMIDUserIDMap.set(c.mid,t),this._downlinkMIDUserIDMap.set(l.mid,t)}removeDownlink(e){return f(this,null,function*(){if(!this._downlinkMIDMap.has(e)||!this._peerConnection)return;this._log.info(`removeDownlink(${e}) trying`),this.isReconnecting&&(yield this.waitForReconnected()),this._updateSDPPromise&&(yield this._updateSDPPromise);let t=this._downlinkMIDMap.get(e),r=!1;this._peerConnection.getTransceivers().forEach(s=>{t!=null&&t.includes(Number(s.mid))&&(r=!0,s.direction="inactive")}),this._parsedAnswer||(this._parsedAnswer=ye(this._peerConnection.remoteDescription.sdp)),this._parsedAnswer.media.forEach(s=>{t!=null&&t.includes(Number(s.mid))&&(r=!0,s.direction="inactive",s.ssrcs=[],s.ssrcGroups=[])}),this.removeDownlinkQueue.size===0&&r&&(yield this.updateSDP()),this._downlinkMIDMap.delete(e),t==null||t.forEach(s=>this._downlinkMIDUserIDMap.delete(s)),this._log.info(`removeDownlink(${e}) done`)})}setBandwidth(e){return f(this,null,function*(){if(!this._peerConnection)return;let{audio:t,bigVideo:r,smallVideo:s,auxVideo:n}=e;try{if(Ls()){let a=this._peerConnection.getSenders().slice(0,4);for(let l=0;l<a.length;l++){let h=a[l],u;l===0&&t?u=t:l===1&&r?u=r:l===2&&s?u=s:l===3&&n&&(u=n),u&&(yield this.setSenderMaxBitrate(h,u))}let c=!1;r&&a[1].track&&(c=this.setStartBitrate(1,r)),n&&a[3].track&&(c=this.setStartBitrate(3,n)||c),c&&(yield this.updateSDP())}else yield this.setBandwidthBySDP(e);this._log.info(`setBandwidth ${JSON.stringify(e)}`)}catch(a){this._log.error(`failed to set bandwidth: ${a}`)}})}setStartBitrate(e,t){var r,s;return(r=this._peerConnection)!=null&&r.remoteDescription&&(this._parsedAnswer||(this._parsedAnswer=ye(this._peerConnection.remoteDescription.sdp)),(s=this._parsedAnswer.media[e])!=null&&s.fmtp[0])?(this._parsedAnswer.media[e].fmtp[0].config+=`;x-google-start-bitrate=${t>5e3?5e3:t}`,!0):!1}setSenderMaxBitrate(e,t){let r=e.getParameters();return(!r.encodings||r.encodings.length===0)&&(r.encodings=[{}]),t==="unlimited"?delete r.encodings[0].maxBitrate:r.encodings[0].maxBitrate=t*1e3,e.setParameters(r)}setBandwidthBySDP({audio:e,bigVideo:t,smallVideo:r,auxVideo:s}){if(!this._peerConnection||!this._peerConnection.localDescription)return;let n=ye(this._peerConnection.localDescription.sdp);this._parsedAnswer||(this._parsedAnswer=ye(this._peerConnection.remoteDescription.sdp));let a=ae?"TIAS":"AS";e&&(n.media[0].bandwidth=[{type:a,limit:ae?e*1e3:e}],this._parsedAnswer.media[0].bandwidth=[{type:a,limit:ae?e*1e3:e}]),t&&(n.media[1].bandwidth=[{type:a,limit:ae?t*1e3:t}],this._parsedAnswer.media[1].bandwidth=[{type:a,limit:ae?t*1e3:t}]),r&&(n.media[2].bandwidth=[{type:a,limit:ae?r*1e3:r}],this._parsedAnswer.media[2].bandwidth=[{type:a,limit:ae?r*1e3:r}]),s&&(n.media[3].bandwidth=[{type:a,limit:ae?s*1e3:s}],this._parsedAnswer.media[3].bandwidth=[{type:a,limit:ae?s*1e3:s}]);let c={type:"offer",sdp:vt(n)};return this.updateSDP({localDescription:c})}setScaleResolutionDownBy(e,t,r){let s=e.getParameters();(!s.encodings||s.encodings.length===0)&&(s.encodings=[{}]);let n=s.encodings[0].scaleResolutionDownBy;if(T(n)?t===1:t===n)return;let a=`setScaleResolutionDownBy ${r} ${t}`;return n&&(a+=` prevScale: ${n}`),this._log.warn(a),s.encodings[0].scaleResolutionDownBy=t,e.setParameters(s)}setDegradationPreference(e,t,r){if(Ze&&st<83||Ie&&Td(Kt,"12.1")||ae&&_o<138)return;let s=e.getParameters(),n="balanced";if(t==="motion"?n="maintain-framerate":t==="detail"&&(n="maintain-resolution"),s.degradationPreference===n)return;let a=`setDegradationPreference ${r} ${n}`;return this._log.info(a),s.degradationPreference=n,e.setParameters(s).catch(c=>this._log.warn(`${a} failed: ${c}`))}updateSDP({localDescription:e}={}){if(!this._parsedAnswer)return Promise.resolve();let t=vt(this._parsedAnswer);return this._updateSDPPromise=new Promise((r,s)=>f(this,null,function*(){var n,a;try{!e&&this._peerConnection&&(this._log.info("creating offer"),e=yield this._peerConnection.createOffer()),e&&(yield this.setOffer(e)),yield this.setAnswer({type:"answer",sdp:t}),this._updateSDPPromise=null,r()}catch(c){this._log.error(c),!this._isSDPLogged&&this._peerConnection&&(this._log.warn(`current offer: ${this.filterSDPDirection((n=this._peerConnection.localDescription)==null?void 0:n.sdp)}
|
|
118
|
-
next offer: ${this.filterSDPDirection(e==null?void 0:e.sdp)}`),this._log.warn(`current answer: ${this.filterSDPDirection((a=this._peerConnection.remoteDescription)==null?void 0:a.sdp)}
|
|
119
|
-
next answer: ${this.filterSDPDirection(t)}`),this._log.warn(`offer: ${e==null?void 0:e.sdp}`),this._log.warn(`answer: ${t}`),this._log.warn(`transceivers: ${JSON.stringify(this._peerConnection.getTransceivers().map(({mid:l,currentDirection:h,direction:u,stopped:m})=>({mid:l,currentDirection:h,direction:u,stopped:m})))}`),this._log.warn(`parsedAnswer: ${JSON.stringify(this._parsedAnswer)}`),this._isSDPLogged=!0),this._updateSDPPromise=null,s(c)}})),this._updateSDPPromise}setTransceiverDirection(e,t){return f(this,null,function*(){if(!ae||!this._peerConnection||!this._parsedAnswer)return;this._log.info(`setting transceiver ${t.join(",")} direction to ${e}`);let r=this._peerConnection.getTransceivers();t.forEach(s=>{r[s].direction!==e&&(r[s].direction=e)});for(let s of t){let n=this._parsedAnswer.media[s].direction;e===te.INACTIVE&&n===te.RECVONLY&&(this._parsedAnswer.media[s].direction=e),e===te.SENDONLY&&n===te.INACTIVE&&(this._parsedAnswer.media[s].direction=te.RECVONLY)}yield this.updateSDP()})}filterSDPDirection(e=""){return ye(e).media.map(r=>r.direction)}setOffer(e){this._log.info("setting offer");let t=qp(e.sdp,this.clientAbility,this._serverAbility);return this._log.debug(t),this._peerConnection.setLocalDescription({type:"offer",sdp:t})}setAnswer(e){return this._log.info("setting answer"),this._log.debug(e.sdp),this._peerConnection.setRemoteDescription(e)}switchVideoEncoder(e){return f(this,null,function*(){if(!this._peerConnection||!this._parsedAnswer||!this._serverAbility)return;let t=!1;this._parsedAnswer.media.forEach(r=>{var s;if(r.type===p.VIDEO){let n=this._serverAbility.video.codecs.find(a=>a.codec.toLowerCase()===e);n&&!((s=r.payloads)!=null&&s.includes(String(n.payload)))&&(r.fmtp=[],r.payloads="",r.rtp=[],r.rtcpFb=[],Kr(r,n),t=!0)}}),t&&(this._log.warn(`switch video encoder to ${e}`),yield this.updateSDP())})}useHWEncoder(e=!0,t){return f(this,null,function*(){if(!this._peerConnection||!this._parsedAnswer||!this._serverAbility)return;let r=!1,s=[];T(t)?s=this._parsedAnswer.media.slice(1,4):t===2?s.push(this._parsedAnswer.media[1]):t===3?s.push(this._parsedAnswer.media[2]):t===7&&s.push(this._parsedAnswer.media[3]),s.forEach(n=>{var a;if(n.type===p.VIDEO){let c;e&&this.is42001fSupported?c=this.clientAbility.video.codecs.find(l=>l.fmtp.includes("42001f")):e||(c=this._serverAbility.video.codecs.find(l=>l.codec.toLowerCase()===(this._serverAbility.useVp8?"vp8":"h264"))),c&&!((a=n.payloads)!=null&&a.includes(String(c.payload)))&&(n.fmtp=[],n.payloads="",n.rtp=[],n.rtcpFb=[],Kr(n,c),r=!0)}}),r&&(this._log.warn(`use ${e?"hw":"sw"} encoder`),yield this.updateSDP())})}sendDataChannelMessage(e){var t;(t=this._datachannel)==null||t.send(e)}reset(){var e;this._peerConnection&&(this._peerConnection.close(),this._peerConnection.removeEventListener("track",this._peerConnection._onaddstreampoly,this),this._peerConnection._onaddstreampoly=null,this._peerConnection=null),(e=this.clearWaitForConnectedPromise)==null||e.call(this),this._parsedAnswer=null,this.originOffer=null}close(){this._log.info("close pc"),this.removeRTCListener(),this.insertableStreamsAbortMap.forEach(e=>Qt(e.abort)&&e.abort("destroy")),this.insertableStreamsAbortMap.clear(),this.reset(),this.emitConnectionStateChangedEvent("DISCONNECTED"),this._downlinkMIDMap.clear(),this.stopReconnection(),this.removeAllListeners(),this._room.healthDetector.off("1",this.onBadHealth,this)}getReceiversByUserId(e){if(!this._peerConnection)return[];let t=this._peerConnection.getReceivers();return(this._downlinkMIDMap.get(e)||[]).map(r=>t[r])}get isUsingRelay(){return this._room.getIceTransportPolicy()==="relay"}detectTCPAndUDP({uplinkRTT:e,downlinkRTT:t}){var h;if(this.currentState!=="CONNECTED"||this._isRelayTried&&!this._room.forceRelay||this._room.getIceServers().length===0)return;let r=this._signalChannel.rtt,s=Math.max(e,t),{rttRatioThreshold:n,rttThreshold:a}=((h=this._room.scheduleResult.config)==null?void 0:h.useTurnTcpInfo)||{};if(!n||!a||!r||!s)return;let c=Math.floor(s/r),l=(this._isRelayTried||c>n)&&s>a;if(!l){this._rttOverCount=0;return}++this._rttOverCount<5||(this._log.warn(`detectTCPAndUDP ws-rtt: ${r} upRTT: ${e} downRTT: ${t} ratio: ${c} over-count: ${this._rttOverCount} isOver: ${l} isRelayTried: ${this._isRelayTried} force-relay: ${this._room.forceRelay}`),!this.isUsingRelay&&!this._isRelayTried?(this._isRelayTried=!0,this._rttOverCount=0,this.switchRelay(!0)):this._room.forceRelay&&this.switchRelay(!1))}switchRelay(e,t=!1){return f(this,null,function*(){if(this.isUsingRelay===e)return;let r=e?"relay":"udp",s=e?521709:521710;try{this._room.forceRelay=e,this._log.warn(`switchRelay ${r}`);let n=Date.now();yield this.doSwitchRelay(r),this._log.warn(`switchRelay ${r} success`),b.addSuccessEvent({key:s,cost:Date.now()-n})}catch(n){this._log.warn(`switchRelay ${r} failed`,n),b.addFailedEvent({key:s,error:n}),t?this._room.reJoin():yield this.switchRelay(!e,!0)}})}doSwitchRelay(e){return new Promise((t,r)=>{let s=setTimeout(()=>{this.stopReconnection(),r(new Error(`switch ${e} timeout`))},1e4);this.startReconnection().then(t,r).finally(()=>clearTimeout(s))})}removeRTCListener(){this._peerConnection&&(this._peerConnection.oniceconnectionstatechange=null,this._peerConnection.onconnectionstatechange=null,this._peerConnection.onsignalingstatechange=null,this._peerConnection.ontrack=null),this.dtlsTransport&&(this.dtlsTransport.onstatechange=null)}};v([Pa("reconnect")],jt.prototype,"startReconnection",1),v([$i(e=>e.userId)],jt.prototype,"addDownlink",1),v([$i(e=>e)],jt.prototype,"removeDownlink",1),v([Ct(!0)],jt.prototype,"updateSDP",1),v([lt(521712,!1)],jt.prototype,"setOffer",1),v([lt(521713,!1)],jt.prototype,"setAnswer",1);var $u=class{constructor(i){d(this,"tag");d(this,"len");d(this,"data");let e=new DataView(i);this.tag=e.getUint16(),this.len=e.getUint16(2),this.data=new Uint8Array(i).slice(4,4+this.len).buffer}},Hu=class{constructor(i){d(this,"tinyId");d(this,"data");let e=new DataView(i),t=0,r=[];for(;t<e.byteLength;){let s=e.getUint16(t+2),n=new $u(new Uint8Array(i).slice(t,t+2+2+s).buffer);r.push(n),t+=4+s}r.forEach(s=>{s.tag===1?this.tinyId=new TextDecoder().decode(s.data):s.tag===2&&(this.data=s.data)})}},Kp=new Set;function St(){let o=Math.floor(Math.random()*4294967296);return Kp.has(o)?St():(Kp.add(o),o)}var of=$e(Ye());var eo=class extends of.default{constructor(e){super();d(this,"userId");d(this,"tinyId");d(this,"_sdpSemantics");d(this,"_isUplink");d(this,"_room");d(this,"_log");d(this,"_currentState","DISCONNECTED");d(this,"_prevTime",-1);d(this,"_blackSmallVideoDetectionId");this.userId=e.userId,this.tinyId=e.tinyId,this._room=e.room,this._sdpSemantics=e.room.sdpSemantics,this._isUplink=e.isUplink,this._log=C.createLogger({id:"n",userId:this._room.userId,remoteUserId:this._isUplink?void 0:this.userId,sdkAppId:this._room.sdkAppId,isLocal:this._isUplink})}get _peerConnection(){var e;return((e=this.singlePC)==null?void 0:e.getPeerConnection())||null}get singlePC(){return this._room.singlePC}get _signalChannel(){return this._room.signalChannel}close(e){this._log.info("close connection"),this.emit("closed",e)}emitConnectionStateChangedEvent(e){return e===this._currentState?!1:(E.emit(A.PEER_CONNECTION_STATE_CHANGED,{room:this._room,prevState:this._currentState,state:e,remoteUserId:this._isUplink?void 0:this.userId}),this.emit("connection-state-changed",{prevState:this._currentState,state:e}),this._currentState=e,!0)}getPeerConnection(){return this._peerConnection}getRoom(){return this._room}getUserId(){return this.userId}getTinyId(){return this.tinyId}getCurrentState(){return this._currentState}get isH264(){var e,t;return!!((t=(e=this._peerConnection)==null?void 0:e.remoteDescription)!=null&&t.sdp.includes("H264"))}};var Gu=class{constructor(){d(this,"worker");d(this,"callbacks",new Map);d(this,"_log");d(this,"sleep",{});d(this,"heartbeatListenerCleaner",new Map);d(this,"userIdMap",new Map);this._log=C.createLogger({id:"bvd"})}getWorker(){if(!this.worker){let i=`
|
|
120
|
-
const tracks=new Map;let canvas,ctx;const log=(...t)=>postMessage({type:"log",message:"[worker] "+t.join(" ")});function startDetection(e,t,a){if(!tracks.has(e)){const c={reader:a.getReader(),blackCount:0,timeoutId:null,intervalId:null};tracks.set(e,c),c.timeoutId=setTimeout(()=>stopDetection(e,"timeout"),t),c.intervalId=setInterval(async()=>{try{await isFrameBlack(e)?(c.blackCount++,postMessage({type:"blackCount",trackId:e,count:c.blackCount}),3<=c.blackCount&&(postMessage({type:"black",trackId:e}),stopDetection(e,"black"))):c.blackCount=0}catch(t){log("check black video error:",t.message),stopDetection(e,"error")}},1e3)}}function stopDetection(t,e){var a=tracks.get(t);a&&(a.timeoutId&&clearTimeout(a.timeoutId),a.intervalId&&clearInterval(a.intervalId),a.reader&&a.reader.cancel(),tracks.delete(t),postMessage({type:e,trackId:t}))}async function isFrameBlack(t){t=tracks.get(t);if(!t)return!1;var t=t.reader,{done:t,value:e}=await t.read();if(!e||t)return!1;canvas||(canvas=new OffscreenCanvas(e.codedWidth,e.codedHeight),ctx=canvas.getContext("2d",{willReadFrequently:!0})),canvas.width===e.codedWidth&&canvas.height===e.codedHeight||(canvas.width=e.codedWidth,canvas.height=e.codedHeight,ctx=canvas.getContext("2d",{willReadFrequently:!0})),ctx.drawImage(e,0,0,canvas.width,canvas.height);t=getFrameBlackRatio(ctx.getImageData(0,0,canvas.width,canvas.height));return e.close(),1===t}function getFrameBlackRatio(t){var e=t.data;let a=0;for(let t=0;t<100;t++){var c=4*Math.floor(Math.random()*(e.length/4)),[c,r,n,o]=[e[c],e[1+c],e[2+c],e[3+c]];0<o&&0===c&&0===r&&0===n&&a++}return a/100}self.onmessage=t=>{var{type:t,trackId:e,timeout:a,readable:c}=t.data;"addTrack"===t&&startDetection(e,a,c),"removeTrack"===t&&stopDetection(e)};
|
|
121
|
-
`,e=new Blob([i],{type:"application/javascript"}),t=URL.createObjectURL(e);this.worker=new Worker(t),URL.revokeObjectURL(t),this.worker.onerror=r=>this._log.warn("worker error:",r.message,r.filename||"unknown",r.lineno||"unknown"),this.worker.onmessage=r=>{var l;let{type:s,trackId:n,message:a,count:c}=r.data;if(s==="black")(l=this.callbacks.get(n))==null||l();else if(s==="log")this._log.warn(a);else if(s==="blackCount"){let h=this.userIdMap.get(n);this._log.warn(`${h||n} black count: ${c}`)}}}return this.worker}start({track:i,isUplink:e,room:t,userId:r,onBlack:s}){if(this._log.debug("start detect black video",i.id),!ks()||!s||!i||T(Worker)){this._log.warn("black video detector not supported");return}let n=a=>{var l,h,u,m;let c;if(e)c=(h=(l=a.msg_up_stream_info)==null?void 0:l.msg_video_status)==null?void 0:h.filter(g=>g.uint32_video_stream_type===3)[0];else{let g=(u=a.msg_down_stream_info)==null?void 0:u.filter(D=>{var _;return((_=D.msg_user_info)==null?void 0:_.str_identifier)===r})[0];c=(m=g==null?void 0:g.msg_video_status)==null?void 0:m.filter(D=>D.uint32_video_stream_type===3)[0]}if(c){let g=(c.uint32_video_codec_bitrate||0)/1e3;if(this.sleep[i.id]&&this.sleep[i.id]>0){this.sleep[i.id]-=1;return}g>0&&g<10&&(this.sleep[i.id]=30,this._log.debug("track bitrate",g,"start check"),this.checkOnce(i,30*1e3))}};return t.on("heartbeat-report",n),this.heartbeatListenerCleaner.set(i.id,()=>t.off("heartbeat-report",n)),this.callbacks.set(i.id,s),this.userIdMap.set(i.id,r),i.id}checkOnce(i,e){try{let t=this.getWorker();if(!t)throw new Error("Worker not available");let r=new MediaStreamTrackProcessor({track:i});t.postMessage({type:"addTrack",trackId:i.id,timeout:e,readable:r.readable},[r.readable])}catch(t){this._log.warn("check error:",t),this.stop(i.id)}}stop(i){if(i){this.worker&&this.worker.postMessage({type:"removeTrack",trackId:i}),this.callbacks.delete(i),delete this.sleep[i];let e=this.heartbeatListenerCleaner.get(i);e&&e(),this.heartbeatListenerCleaner.delete(i),this.userIdMap.delete(i)}}destroy(){this.callbacks.forEach((i,e)=>this.stop(e)),this.worker&&(this.worker.terminate(),this.worker=null)}},Yi=new Gu;var Tn=class extends eo{constructor(e){super(L(N({},e),{isUplink:!0}));d(this,"localMainAudioTrack",null);d(this,"localMainVideoTrack",null);d(this,"localAuxAudioTrack",null);d(this,"localAuxVideoTrack",null);d(this,"_isPublishingAux",!1);d(this,"_publishingLocalAudioTrack");d(this,"_publishingLocalVideoTrack");d(this,"_mediaSettings",{videoCodec:"",videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioCodec:"opus",audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0,auxVideoWidth:0,auxVideoHeight:0,auxVideoFps:0,auxVideoBps:0});d(this,"_flag",0);d(this,"_checkPublishStateTimeoutId",-1);this.initialize()}get videoCodec(){var e;return((e=this.singlePC)==null?void 0:e.videoCodec)||"h264"}get ssrc(){if(!this.singlePC)return{audio:0,video:0,videoRtx:0,small:0,smallRtx:0,auxiliary:0,auxiliaryRtx:0};let{audioSsrc:e,bigVideoSsrc:t,bigVideoRtxSsrc:r,smallVideoSsrc:s,smallVideoRtxSsrc:n,auxVideoSsrc:a,auxVideoRtxSsrc:c}=this.singlePC.uplinkSSRC;return{audio:e||0,video:t||0,videoRtx:r||0,small:s||0,smallRtx:n||0,auxiliary:a||0,auxiliaryRtx:c||0}}get flag(){return this._flag}set flag(e){this._flag!==e&&(this._flag=e,this.checkPublishState())}checkPublishState(e=!1){if(!e&&this._checkPublishStateTimeoutId>0)return;let{publishState:t,serverPublishState:r}=this,s=Object.keys(t).find(n=>t[n]!==r[n]);if(s)if(e)this._log.warn(`publish state not matched, ${s} local:${t[s]} server:${r[s]} ${xi()} ${Mr()}`),b.addCount({key:521e3});else{this._checkPublishStateTimeoutId=se.run("timeout",()=>this.checkPublishState(!0),{delay:10*1e3,count:1});return}se.clearTask(this._checkPublishStateTimeoutId),this._checkPublishStateTimeoutId=-1}get isMainStreamPublished(){return!!(this.localMainAudioTrack||this.localMainVideoTrack)}get isAuxStreamPublished(){return!!(this.localAuxVideoTrack||this.localAuxAudioTrack)}get publishState(){var t,r,s,n;let e={audio:!1,bigVideo:!1,smallVideo:!1,auxVideo:!1};if(this._peerConnection){let a=this._peerConnection.getSenders();a&&(oi()?(e.audio=!!((t=a[0])!=null&&t.track),e.bigVideo=!!((r=a[1])!=null&&r.track),e.smallVideo=!!((s=a[2])!=null&&s.track),e.auxVideo=!!((n=a[3])!=null&&n.track)):a.forEach(c=>{c.track&&(c.track.kind===p.AUDIO?e.audio=!0:(e.bigVideo=!0,this._room.videoManager.hasSmall&&(e.smallVideo=!0)))}))}return e}get publishingState(){let{publishState:e}=this,t=N({},e);return this._publishingLocalAudioTrack&&(t.audio=!0),this._publishingLocalVideoTrack&&(this._isPublishingAux?t.auxVideo=!0:(t.bigVideo=!0,this._publishingLocalVideoTrack.small&&(t.smallVideo=!0))),t}get serverPublishState(){return{audio:!!(this.flag&ir),bigVideo:!!(this.flag&tr),smallVideo:!!(this.flag&ns),auxVideo:!!(this.flag&Er)}}get muteState(){var e,t,r;return{audio:!!((e=this.localMainAudioTrack)!=null&&e.muted),bigVideo:!!((t=this.localMainVideoTrack)!=null&&t.muted),auxVideo:!!((r=this.localAuxVideoTrack)!=null&&r.muted)}}initialize(){this.installEvents()}close(e){var r;let t=((r=this._peerConnection)==null?void 0:r.getSenders())||[];for(let s of t)s.replaceTrack(null);super.close(e),this.uninstallEvents(),this.uninstallTrackMuteEvents(this.localMainAudioTrack,this.localMainVideoTrack,this.localAuxVideoTrack),this.emitConnectionStateChangedEvent("DISCONNECTED")}installEvents(){this.listeners("connection-state-changed").includes(this.handleConnectionStateChange)||this.on("connection-state-changed",this.handleConnectionStateChange,this),this.installSPCEvents()}installSPCEvents(){var e,t;(e=this.singlePC)!=null&&e.listeners("spc-reconnected").includes(this.onSinglePCReconnected)||(t=this.singlePC)==null||t.on("spc-reconnected",this.onSinglePCReconnected,this)}uninstallSPCEvents(){var e;(e=this.singlePC)==null||e.off("spc-reconnected",this.onSinglePCReconnected,this)}uninstallEvents(){this.off("connection-state-changed",this.handleConnectionStateChange,this),this.uninstallSPCEvents()}emitConnectionStateChangedEvent(e,t){var n,a,c;let r=this._currentState,s=super.emitConnectionStateChangedEvent(e);return s&&r!==e&&(t?t.emit("connection-state-changed",{prevState:r,state:e}):((n=this.localMainVideoTrack)==null||n.emit("connection-state-changed",{prevState:r,state:e}),(a=this.localAuxVideoTrack)==null||a.emit("connection-state-changed",{prevState:r,state:e}),(c=this._publishingLocalVideoTrack)==null||c.emit("connection-state-changed",{prevState:r,state:e}))),s}onVideoEncodeFailed(e){var t;e&&e.isMediaTrackActive&&this.videoCodec==="h264"&&(this._log.warn("h264 encoder not working"),(t=this.singlePC)!=null&&t.isVP8EncodeSupported&&(this._log.warn("switch to vp8"),this.singlePC.switchVideoEncoder("vp8")))}publish(s){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,isAuxiliary:r}){var l,h,u,m,g,D,_;if(!this.singlePC)return;this.installEvents(),yield this.singlePC.waitForPeerConnectionConnected();let{publishState:n,muteState:a}=this;if(e&&(this._publishingLocalAudioTrack=e,n.audio=!0,a.audio=e.muted),t){if(!this.singlePC.isH264EncodeSupported&&!this.singlePC.isVP8EncodeSupported)throw new y({code:I.NOT_SUPPORTED_H264,message:P({key:x.NOT_SUPPORTED_H264ENCODE})});this.singlePC.isUsingH264&&!this.singlePC.isH264EncodeSupported&&this.singlePC.isVP8EncodeSupported&&(this._log.warn("h264 encoder not supported"),yield this.singlePC.switchVideoEncoder("vp8")),pe&&Ao()===115&&t.profile.width*t.profile.height<=640*360&&(this._log.warn(`fallback video to defaultBigVideoProfile: ${JSON.stringify(er)}`),t.setProfile(er),yield t.applyProfile()),this._publishingLocalVideoTrack=t,r?(n.auxVideo=!0,a.auxVideo=t.muted):(n.bigVideo=!0,a.bigVideo=t.muted)}this._isPublishingAux=r;let c;if(t&&!r&&t.small&&(c=this._room.videoManager.smallTrack,n.smallVideo=!0),yield this._signalChannel.sendWaitForResponseWithRetry({command:Y.SPC_PUBLISH,responseCommand:F.SPC_PUBLISH_RESULT,data:L(N({},this.singlePC.uplinkSSRC),{state:n,muteState:a}),retries:3}),yield this.publishByTransceiver({localAudioTrack:e,localVideoTrack:t,smallTrack:c,isAuxiliary:r}),this._publishingLocalAudioTrack=null,this._publishingLocalVideoTrack=null,this._isPublishingAux=!1,t){this[r?"localAuxVideoTrack":"localMainVideoTrack"]=t,yield this.singlePC.setDegradationPreference(this._peerConnection.getSenders()[r?3:1],t.contentHint,t.streamType);let{scaleResolutionDownBy:S}=t;yield this.singlePC.setScaleResolutionDownBy(this._peerConnection.getSenders()[r?3:1],S,t.streamType)}e&&(this[r?"localAuxAudioTrack":"localMainAudioTrack"]=e),yield this.singlePC.setBandwidth({audio:((l=this.localMainAudioTrack)==null?void 0:l.profile.bitrate)||((h=this.localAuxAudioTrack)==null?void 0:h.profile.bitrate),bigVideo:(u=this.localMainVideoTrack)==null?void 0:u.profile.bitrate,smallVideo:(g=(m=this.localMainVideoTrack)==null?void 0:m.small)==null?void 0:g.bitrate,auxVideo:(D=this.localAuxVideoTrack)==null?void 0:D.profile.bitrate}),this.sendMediaSettings(),this.installTrackMuteEvents(e,t),(this._room.preferHW||(_=this._room.scheduleResult.config)!=null&&_.preferHW)&&t&&t.profile.width*t.profile.height>=1280*720&&this.singlePC.useHWEncoder(!0,r?7:2)})}publishByTransceiver({localAudioTrack:e,localVideoTrack:t,smallTrack:r,isAuxiliary:s}){if(!ct())return;this._log.info("publish by transceiver");let n=t==null?void 0:t.outMediaTrack,a=e==null?void 0:e.outMediaTrack,c=this._peerConnection.getTransceivers(),l=[],h=[],u=(g,D,_)=>{var O;let S=c[D].sender.replaceTrack(_);h.push(D),(O=this.singlePC)!=null&&O.enableInsertableStreams&&S.then(()=>this.createEncodedStreams(c[D].sender,g)),this.initSenderTransform(c[D].sender,g),l.push(S)};a&&u(e.mediaType,0,a),n&&u(t.mediaType,s?3:1,n),t!=null&&t.small&&l.push(this.publishSmall(this._room.videoManager.smallMode,t));let m=this.singlePC.setTransceiverDirection(te.SENDONLY,h);return l.push(m),Promise.all(l)}getTrackByMediaType(e){switch(e){case 1:return this.localMainAudioTrack||this._publishingLocalAudioTrack;case 4:case 8:return this.localMainVideoTrack||this._publishingLocalVideoTrack;case 2:return this.localAuxVideoTrack||this._publishingLocalVideoTrack;default:return null}}createEncodedStreams(e,t){var a,c;if(this.singlePC.insertableStreamsAbortMap.has(e))return;let r=e.createEncodedStreams(),s=new AbortController;(a=this.singlePC)==null||a.addAbortController(e,s),((c=this.getTrackByMediaType(t))!=null&&c.enableEncodeFrame?r.readable.pipeThrough(new TransformStream({transform:(l,h)=>{var m;let u=this.getTrackByMediaType(t);h.enqueue((m=this.singlePC)!=null&&m.isUsingH264&&u?u.encodeFrame(l,t===8):l)}}),s):r.readable).pipeTo(r.writable,s).catch(l=>{this._log.debug("encoded stream error",l),l!=="destory"&&this._log.warn(l)})}initSenderTransform(e,t){if(!this._peerConnection||!this.singlePC||!this.singlePC.scriptTransformWorker||!Do)return;let r=t!==2,s=t===8;e.transform||(e.transform=new RTCRtpScriptTransform(this.singlePC.scriptTransformWorker,{isReceiver:!1,isAudio:t===1,isMain:r,isSmall:s}))}enableSmall(e){return f(this,null,function*(){e?yield this.publishSmall(this._room.videoManager.smallMode):yield this.unpublishSmall()})}publishSmall(r){return f(this,arguments,function*(e,t=this.localMainVideoTrack){var l;if(!this.singlePC)return;if(e==="canvas"&&!fa()){this._log.warn("canvas mode small stream is not supported");return}let s=this._peerConnection.getTransceivers(),{sender:n}=s[2],a=yield this.doPublishSmall(e,t),c=e==="canvas"?524700:524701;if(b.addSuccessEvent({key:c}),!a){b.addFailedEvent({key:c,error:10001});return}(l=this.singlePC)!=null&&l.enableInsertableStreams&&this.createEncodedStreams(n,8),this.initSenderTransform(n,8),yield this.singlePC.setTransceiverDirection(te.SENDONLY,[2]),this.updateMediaSettings(),yield this.doPublishChange(),this._blackSmallVideoDetectionId=Yi.start({track:n.track,room:this._room,isUplink:!0,userId:this.userId,onBlack:()=>{this._log.warn("small video is black");let h=e==="canvas"?524700:524701;b.addFailedEvent({key:h,error:10002}),Yi.stop(this._blackSmallVideoDetectionId),this._blackSmallVideoDetectionId=void 0}})})}doPublishSmall(r){return f(this,arguments,function*(e,t=this.localMainVideoTrack){if(!this.singlePC)return null;this._log.info("publish small",e);let s=this._peerConnection.getTransceivers(),{sender:n}=s[2];if(e==="canvas"&&this._room.videoManager.smallTrack)return yield n.replaceTrack(this._room.videoManager.smallTrack),"canvas";if(e==="api"&&(t!=null&&t.outMediaTrack)&&(t!=null&&t.small)){yield n.replaceTrack(t==null?void 0:t.outMediaTrack);let a=n.getParameters(),c=ho(t==null?void 0:t.profile,t==null?void 0:t.small);return this._log.info("small scaleResolutionDownBy",c),a.encodings[0].scaleResolutionDownBy=c,n.setParameters(a),"api"}return this._log.warn(`small track can not be enabled, smallMode: ${this._room.videoManager.smallMode}, smallTrack: ${!!this._room.videoManager.smallTrack}, bigVideoTrack: ${!!(t!=null&&t.outMediaTrack)}`),null})}unpublishSmall(){return f(this,null,function*(){if(!this.singlePC)return;this._log.info("unpublish small"),yield this._peerConnection.getTransceivers()[2].sender.replaceTrack(null),yield this.singlePC.setTransceiverDirection(te.INACTIVE,[2]),this.updateMediaSettings(),yield this.doPublishChange(),Yi.stop(this._blackSmallVideoDetectionId),this._blackSmallVideoDetectionId=void 0})}installTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.on("mute",this.sendMutedFlag,this),t==null||t.on("unmute",this.sendMutedFlag,this))})}uninstallTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.off("mute",this.sendMutedFlag,this),t==null||t.off("unmute",this.sendMutedFlag,this))})}unpublish(r){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t}){var l;yield(l=this.singlePC)==null?void 0:l.waitForPeerConnectionConnected();let s=t&&t===this.localAuxVideoTrack,n=t==null?void 0:t.outMediaTrack,a=this._peerConnection.getSenders(),c=[];e&&(s?this.localAuxAudioTrack=null:this.localMainAudioTrack=null,!this.localMainAudioTrack&&!this.localAuxAudioTrack&&(yield a[0].replaceTrack(null),c.push(0))),n&&(s?(yield a[3].replaceTrack(null),this.localAuxVideoTrack=null,this._mediaSettings=L(N({},this._mediaSettings),{auxVideoBps:0,auxVideoFps:0,auxVideoWidth:0,auxVideoHeight:0}),c.push(3)):(yield a[1].replaceTrack(null),yield a[2].replaceTrack(null),this.localMainVideoTrack=null,this._mediaSettings=L(N({},this._mediaSettings),{videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0}),c.push(1,2))),this.isMainStreamPublished||this.isAuxStreamPublished?(yield this.singlePC.setTransceiverDirection(te.INACTIVE,c),yield this.doPublishChange(!1)):yield this.doUnpublish(),this.uninstallTrackMuteEvents(e,t),t==null||t.emit("connection-state-changed",{prevState:this._currentState,state:"DISCONNECTED"})})}doPublishChange(e=!0){return f(this,null,function*(){let t={state:this.publishingState,constraintConfig:this._mediaSettings},r=yield this._signalChannel.sendWaitForResponseWithRetry({command:Y.PUBLISH_STATE_CHANGE,data:t,responseCommand:F.PUBLISH_STATE_CHANGE_RESULT,enableLog:e,retries:3});this.checkPublishResultCode(r.data.code,r.data.message)})}doUnpublish(e=!1){return this._signalChannel.sendWaitForResponse({command:Y.UNPUBLISH,commandDesc:"unpublish",responseCommand:F.UNPUBLISH_RESULT,enableLog:e}).catch(t=>{if(t.getCode()===I.API_CALL_TIMEOUT)return Promise.resolve();throw t})}updateMediaSettings(){var s;this._mediaSettings.videoCodec=((s=this.singlePC)==null?void 0:s.videoCodec)||"h264";let e=this._publishingLocalAudioTrack||this.localMainAudioTrack||this.localAuxAudioTrack,{localMainVideoTrack:t,localAuxVideoTrack:r}=this;if(this._publishingLocalVideoTrack&&(this._isPublishingAux?r=this._publishingLocalVideoTrack:t=this._publishingLocalVideoTrack),si){if(e&&e.outMediaTrack){let n=e.outMediaTrack.getSettings();this._mediaSettings.audioChannel=n.channelCount||1,this._mediaSettings.audioBps=e.profile.bitrate*1e3,this._mediaSettings.audioFs=n.sampleRate||0}if(t&&t.outMediaTrack){let n=t.outMediaTrack.getSettings(),{scaleResolutionDownBy:a}=t;this._mediaSettings.videoWidth=n.width/a||0,this._mediaSettings.videoHeight=n.height/a||0,this._mediaSettings.videoFps=n.frameRate||0,this._mediaSettings.videoBps=t.profile.bitrate*1e3,t.small&&(this._mediaSettings.smallVideoWidth=t.small.width,this._mediaSettings.smallVideoHeight=t.small.height,this._mediaSettings.smallVideoFps=t.small.frameRate,this._mediaSettings.smallVideoBps=t.small.bitrate*1e3)}if(r&&r.outMediaTrack){let n=r.outMediaTrack.getSettings(),{scaleResolutionDownBy:a}=r;this._mediaSettings.auxVideoWidth=n.width/a||0,this._mediaSettings.auxVideoHeight=n.height/a||0,this._mediaSettings.auxVideoFps=n.frameRate||0,this._mediaSettings.auxVideoBps=r.profile.bitrate*1e3}}else e&&e.outMediaTrack&&(this._mediaSettings.audioChannel=e.profile.channelCount,this._mediaSettings.audioBps=e.profile.bitrate*1e3,this._mediaSettings.audioFs=e.profile.sampleRate),t&&t.outMediaTrack&&(this._mediaSettings.videoWidth=t.profile.width,this._mediaSettings.videoHeight=t.profile.height,this._mediaSettings.videoFps=t.profile.frameRate,this._mediaSettings.videoBps=t.profile.bitrate*1e3);this._log.info(`updateMediaSettings: ${JSON.stringify(this._mediaSettings)}`)}sendMediaSettings(){this.updateMediaSettings(),this._signalChannel.sendWaitForResponse({command:Y.UPDATE_CONSTRAINT_CONFIG,data:this._mediaSettings,responseCommand:F.UPDATE_CONSTRAINT_CONFIG_RES}).then(e=>{e.data.code!==0&&this._log.warn(e.data.message)}).catch(()=>{})}addTrack(e){return f(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is adding ${e.kind} track to current published local ${t?p.AUXILIARY:p.MAIN} stream`),oi()&&(yield this.addTrackByTransceiver(e,t))})}addTrackByTransceiver(e,t){return f(this,null,function*(){var s;if(!e.mediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===p.AUDIO)yield r[0].sender.replaceTrack(e.outMediaTrack);else{let n=t?3:1;yield r[n].sender.replaceTrack(e.outMediaTrack),n===1&&((s=this.localMainVideoTrack)!=null&&s.small)&&(yield r[2].sender.replaceTrack(this._room.videoManager.smallTrack)),r[n].direction===te.INACTIVE&&(yield this.singlePC.setTransceiverDirection(te.SENDONLY,[n]))}this.updateMediaSettings(),yield this.doPublishChange()})}removeTrack(e){return f(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is removing ${e.kind} track from current published local ${t?p.AUXILIARY:p.MAIN} stream`),oi()&&(yield this.removeTrackByTransceiver(e,t))})}removeTrackByTransceiver(e,t){return f(this,null,function*(){if(!e.mediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===p.AUDIO)yield r[0].sender.replaceTrack(null);else{let s=t?3:1;yield r[s].sender.replaceTrack(null),s===1&&this._room.videoManager.hasSmall&&(yield r[2].sender.replaceTrack(null)),yield this.singlePC.setTransceiverDirection(te.INACTIVE,[s])}this.updateMediaSettings(),yield this.doPublishChange()})}replaceTrack(e){return f(this,null,function*(){var n;let t=(n=this._peerConnection)==null?void 0:n.getSenders(),r=e.outMediaTrack||e.mediaTrack;if(!t||t.length===0||!r||t.find(a=>a.track===r))return!1;let s=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;return this._log.info(`is replacing ${r.kind} track ${r.id} ${r.label} on ${s?p.AUXILIARY:p.MAIN} stream`),r.kind===p.AUDIO&&t[0]&&(yield t[0].replaceTrack(r)),r.kind===p.VIDEO&&(!s&&t[1]&&(yield t[1].replaceTrack(r)),s&&t[3]&&(yield t[3].replaceTrack(r))),!0})}setBandwidth(s){return f(this,arguments,function*({bandwidth:e,type:t,videoType:r}){if(this.singlePC){let n={};t===p.AUDIO?n.audio=e:r==="big"?n.bigVideo=e:r==="small"?n.smallVideo=e:n.auxVideo=e,yield this.singlePC.setBandwidth(n)}})}sendMutedFlag(e){e===this.localAuxAudioTrack||e===this.localAuxVideoTrack||(this._log.info(`send muted state: ${JSON.stringify(this.muteState)}`),this._signalChannel.sendWaitForResponseWithRetry({command:Y.UPDATE_MUTE_STAT,responseCommand:F.MUTE_RESULT,data:this.muteState,retries:3}).catch(()=>{}))}handleConnectionStateChange(e){e.state==="CONNECTED"&&(this.localMainVideoTrack||this._publishingLocalVideoTrack&&!this._isPublishingAux)&&E.emit(A.SEND_FIRST_VIDEO_FRAME,{room:this._room})}getVideoTrackId(e=p.VIDEO){if(this._peerConnection){let t=this._peerConnection.getSenders();if(e===p.AUXILIARY&&t[3]&&t[3].track)return t[3].track.id;if(e===p.VIDEO&&t[1]&&t[1].track)return t[1].track.id}if(this.localMainVideoTrack&&e===p.VIDEO){let t=this.localMainVideoTrack.mediaTrack;if(t)return t.id}if(this.localAuxVideoTrack&&e===p.AUXILIARY){let t=this.localAuxVideoTrack.mediaTrack;if(t)return t.id}return""}getSSRC(){return this.ssrc}checkPublishResultCode(e,t){if(e!==0)throw e===Sr?(this._log.error(Ue.NOT_SUPPORTED_H264ENCODE),new y({code:I.NOT_SUPPORTED_H264,message:P({key:x.NOT_SUPPORTED_H264ENCODE})})):new y({code:I.UNKNOWN,message:P({key:x.SIGNAL_RESPONSE_FAILED,data:{signalResponse:F.PUBLISH_RESULT,code:e,message:t}})})}onSinglePCReconnected(){return f(this,null,function*(){this.isMainStreamPublished&&(this._log.warn("republish main stream"),yield this.publish({localAudioTrack:this.localMainAudioTrack,localVideoTrack:this.localMainVideoTrack,isAuxiliary:!1})),this.isAuxStreamPublished&&(this._log.warn("republish aux stream"),yield this.publish({localAudioTrack:this.localAuxAudioTrack,localVideoTrack:this.localAuxVideoTrack,isAuxiliary:!0}))})}};v([et(function({localVideoTrack:e}){e==null||e.once("6",this.onVideoEncodeFailed,this)})],Tn.prototype,"publish",1),v([et(function({localVideoTrack:e}){e==null||e.off("6",this.onVideoEncodeFailed,this)})],Tn.prototype,"unpublish",1);var Wu=Tn;function sf(o){return Object.keys(o).filter(i=>o[i])}var Ko=class extends eo{constructor(e){super(L(N({},e),{isUplink:!1}));d(this,"_flag",0);d(this,"isRobot",!1);d(this,"role","anchor");d(this,"remoteAudioTrack");d(this,"remoteVideoTrack");d(this,"remoteAuxiliaryTrack");d(this,"ssrc",{audio:0,video:0,videoRtx:0,auxiliary:0,auxiliaryRtx:0});d(this,"jitterBufferTimeoutId",-1);this.flag=e.flag,this.isRobot=e.isRobot||!1,this.remoteAudioTrack=new Gt(this._room,this),this.remoteVideoTrack=new fi(this._room,this),this.remoteAuxiliaryTrack=new $o(this._room,this),this.initialize()}get videoCodec(){var e;return((e=this.singlePC)==null?void 0:e.downlinkVideoCodec)||"h264"}get subscribeState(){return{audio:this.remoteAudioTrack.isSubscribed||this.remoteAudioTrack.isSubscribing,video:this.remoteVideoTrack.isBig&&(this.remoteVideoTrack.isSubscribed||this.remoteVideoTrack.isSubscribing),smallVideo:this.remoteVideoTrack.isSmall&&(this.remoteVideoTrack.isSubscribed||this.remoteVideoTrack.isSubscribing),auxiliary:this.remoteAuxiliaryTrack.isSubscribed||this.remoteAuxiliaryTrack.isSubscribing}}get muteState(){return bi(this.flag,this.userId)}get flag(){return this._flag}set flag(e){var t,r,s;e!==this._flag&&(this._flag=e,(t=this.remoteAudioTrack)==null||t.onFlagChanged(),(r=this.remoteVideoTrack)==null||r.onFlagChanged(),(s=this.remoteAuxiliaryTrack)==null||s.onFlagChanged())}get hasMainStream(){return this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall}get hasAuxStream(){return this.muteState.hasAuxiliary}get isMainStreamSubscribed(){return(this.subscribeState.audio||this.subscribeState.video||this.subscribeState.smallVideo)&&(this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall)}get isAuxStreamSubscribed(){return this.subscribeState.auxiliary&&this.muteState.hasAuxiliary}get isSmallStreamSubscribed(){return this.subscribeState.smallVideo&&this.muteState.hasSmall}get isBigStreamSubscribed(){return this.subscribeState.video&&this.muteState.hasVideo}isStreamUnpublished(e){return e===p.MAIN?!this.muteState.hasAudio&&!this.muteState.hasVideo:!this.muteState.hasAuxiliary}initialize(){this.installEvents()}close(e){clearTimeout(this.jitterBufferTimeoutId),super.close(e),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.remoteAudioTrack.close(),this.remoteVideoTrack.close(),this.remoteAuxiliaryTrack.close(),this.uninstallEvents(),this.removeDownlink()}installEvents(){this.singlePC&&(this.listeners("track").includes(this.onTrack)||this.singlePC.on("track",this.onTrack,this),this.listeners("spc-reconnected").includes(this.onSinglePCReconnected)||this.singlePC.on("spc-reconnected",this.onSinglePCReconnected,this))}uninstallEvents(){this.singlePC&&(this.singlePC.off("track",this.onTrack,this),this.singlePC.off("spc-reconnected",this.onSinglePCReconnected,this))}emitConnectionStateChangedEvent(e){var s,n;let t=this._currentState,r=super.emitConnectionStateChangedEvent(e);return r&&t!==e&&((s=this.remoteVideoTrack)==null||s.emit("connection-state-changed",{prevState:t,state:e}),(n=this.remoteAuxiliaryTrack)==null||n.emit("connection-state-changed",{prevState:t,state:e})),r}onTrack(e){var h,u;let t=e.streams[0],{track:r,receiver:s}=e;if(!t.id.includes(this.tinyId))return;let a=t.id.includes("aux")?"auxiliary":"main";this._log.debug(`ontrack ${a} ${r.kind}`);let c=p.AUDIO;r.kind===p.VIDEO&&(c=a===p.MAIN?p.VIDEO:p.AUXILIARY);let l=this.remoteAudioTrack;c===p.VIDEO?l=this.remoteVideoTrack:c===p.AUXILIARY&&(l=this.remoteAuxiliaryTrack),(h=this.singlePC)==null||h.receiverRemoteTrackMap.set(s,l),(u=this.singlePC)!=null&&u.scriptTransformWorker&&this.initReceiverTransform(s,a,r.kind===p.AUDIO),this.singlePC.enableInsertableStreams&&this.createEncodedStreams(s),l.setInputMediaStreamTrack(r)}createEncodedStreams(e){if(!this.singlePC.insertableStreamsAbortMap.has(e)){let t=e.createEncodedStreams(),r=new AbortController,s={abortController:r,enqueue:n=>{var c,l;let a=(c=this.singlePC)==null?void 0:c.receiverRemoteTrackMap.get(e);return!a||a.kind==="video"&&!((l=this.singlePC)!=null&&l.isUsingH264)?n:a.decodeFrame(n)}};t.readable.pipeThrough(new TransformStream({transform:(n,a)=>{let c=s.enqueue(n);c&&a.enqueue(c)}})).pipeTo(t.writable,r).catch(n=>{n!=="destory"&&this._log.warn(n)}),this.singlePC.addAbortController(e,r)}}initReceiverTransform(e,t,r){!this._peerConnection||!this.singlePC||!this.singlePC.scriptTransformWorker||e.transform||(e.transform=new RTCRtpScriptTransform(this.singlePC.scriptTransformWorker,{isReceiver:!0,isAudio:r,userId:this.userId,streamType:t}))}subscribe(e,t){return f(this,null,function*(){var r,s;try{let n=!0;if(this._log.info(`subscribe ${t} ${sf(e)}`),this.hasSSRC){let a="subscribe_change";Object.values(e).find(c=>c===!0)||(a="unsubscribe"),yield this.sendSubscription(a,e)}else{if((r=this.singlePC)!=null&&r.autoSubscribedUserMap.size){let a=this.singlePC.autoSubscribedUserMap.get(this.userId);if(a){this.singlePC.autoSubscribedUserMap.delete(this.userId);let c=(s=this.singlePC.autoSubscribedSsrcGroups.get(this._room.roomId))==null?void 0:s[a.groupIndex];c&&(this.ssrc={audio:c.audioSsrc,video:c.bigVideoSsrc,videoRtx:c.bigVideoRtxSsrc,auxiliary:c.auxVideoSsrc,auxiliaryRtx:c.auxVideoRtxSsrc},n=!1)}}yield this.doSubscribe(e,n),this.checkTrackEnded(e)}if(e.smallVideo){let{user:a,mediaTrack:c}=this.remoteVideoTrack;b.addSuccessEvent({key:524702}),this._blackSmallVideoDetectionId=Yi.start({track:c,isUplink:!1,room:this._room,userId:this.userId,onBlack:()=>{this._log.warn("small video is black, auto change to big"),this._room.changeType(!1,a),b.addFailedEvent({key:524702}),Yi.stop(this._blackSmallVideoDetectionId),this._blackSmallVideoDetectionId=void 0}})}else Yi.stop(this._blackSmallVideoDetectionId),this._blackSmallVideoDetectionId=void 0}catch(n){throw this._room.isJoined&&this.isStreamUnpublished(t)?(this._log.warn(`${n.message} ${JSON.stringify(this.muteState)}`),new y({code:I.REMOTE_STREAM_NOT_EXIST,message:`remote user ${this.userId} unpublished stream`})):n}})}checkTrackEnded(e){var t,r,s;if((e.audio&&((t=this.remoteAudioTrack.mediaTrack)==null?void 0:t.readyState)==="ended"||e.video&&((r=this.remoteVideoTrack.mediaTrack)==null?void 0:r.readyState)==="ended"||e.auxiliary&&((s=this.remoteAuxiliaryTrack.mediaTrack)==null?void 0:s.readState)==="ended")&&this.singlePC&&!this.singlePC.isReconnecting){if(this._log.warn("remote track ended start spc reconnect"),Ze&&st<92)return;this.singlePC.startReconnection()}}unsubscribe(r){return f(this,arguments,function*({remoteTracks:e,streamType:t}){var a;if(t==="main"&&!this.isMainStreamSubscribed||t==="auxiliary"&&!this.isAuxStreamSubscribed){this._log.info(`${t} stream already unsubscribed`);return}let s=N({},this.subscribeState);e.forEach(c=>{switch(c.mediaType){case 1:s.audio=!1;break;case 4:s.video=!1;break;case 8:s.smallVideo=!1;break;case 2:s.auxiliary=!1;break;default:break}});let n="subscribe_change";Object.values(s).find(c=>c===!0)||(n="unsubscribe"),this._log.info(`${n==="unsubscribe"?n:"subscribe"} ${t} [${sf(s)}]`),n==="unsubscribe"&&((a=this.singlePC)==null||a.removeDownlinkQueue.add(this.tinyId)),yield this.sendSubscription(n,s),t==="main"&&(Yi.stop(this._blackSmallVideoDetectionId),this._blackSmallVideoDetectionId=void 0),n==="unsubscribe"&&(yield this.removeDownlink())})}sendSubscription(e,t=this.subscribeState){let r={srcTinyId:this.tinyId,srcUserId:this.userId},s=Y.UNSUBSCRIBE,n=F.UNSUBSCRIBE_RESULT;return e==="subscribe_change"&&(r={audio:t.audio,bigVideo:t.video,auxVideo:t.auxiliary,smallVideo:t.smallVideo,srcTinyId:this.tinyId},s=Y.SUBSCRIBE_CHANGE,n=F.SUBSCRIBE_CHANGE_RESULT),this._signalChannel.sendWaitForResponseWithRetry({command:s,data:r,responseCommand:n,timeout:1e4,retries:3}).then(({data:a})=>{if(a.code!==0){let c=new y({code:a.code,message:P({key:x.ERROR_MESSAGE,data:{type:e,message:a.message}})});throw this._log.error(c),c}})}getMainStreamVideoTrackId(){return this.remoteVideoTrack&&this.remoteVideoTrack.mediaTrack?this.remoteVideoTrack.mediaTrack.id:""}getAuxStreamVideoTrackId(){return this.remoteAuxiliaryTrack&&this.remoteAuxiliaryTrack.mediaTrack?this.remoteAuxiliaryTrack.mediaTrack.id:""}setDelay({audioDelay:e,videoDelay:t}){this.remoteAudioTrack.stat.end2EndDelay=e,this.remoteVideoTrack.stat.end2EndDelay=t}onSinglePCReconnected(){return f(this,null,function*(){(this.ssrc.audio||this.ssrc.video||this.ssrc.auxiliary)&&(this._log.warn(`resubscribe ${JSON.stringify(this.subscribeState)}`),yield this.doSubscribe(this.subscribeState),this.remoteAudioTrack.checkDecodeResult(),this.remoteVideoTrack.checkDecodeResult(),this.remoteAuxiliaryTrack.checkDecodeResult())})}get hasSSRC(){return this.ssrc.audio&&this.ssrc.video&&this.ssrc.auxiliary}doSubscribe(){return f(this,arguments,function*(e=this.subscribeState,t=!0){if(this.singlePC){this.singlePC.addDownlinkQueue.add(this.tinyId),yield this.singlePC.waitForPeerConnectionConnected();try{if(t||!this.hasSSRC){let r={audioSsrc:St(),bigVideoSsrc:St(),bigVideoRtxSsrc:St(),auxVideoSsrc:St(),auxVideoRtxSsrc:St()},{audioSsrc:s,bigVideoSsrc:n,bigVideoRtxSsrc:a,auxVideoSsrc:c,auxVideoRtxSsrc:l}=r;this.ssrc={audio:s,video:n,videoRtx:a,auxiliary:c,auxiliaryRtx:l},this.singlePC.addDownlinkQueue.delete(this.tinyId),yield this.singlePC.addDownlink({userId:this.userId,tinyId:this.tinyId,ssrc:this.ssrc});try{let h=yield this._signalChannel.sendWaitForResponseWithRetry({command:Y.SPC_SUBSCRIBE,responseCommand:F.SPC_SUBSCRIBE_RESULT,data:{srcUserId:this.userId,srcTinyId:this.tinyId,audio:e.audio,bigVideo:e.video,auxVideo:e.auxiliary,smallVideo:e.smallVideo,customData:!1,ssrc:r},retries:3,retryTimeout:0});if(h.data.code!==0&&h.data.code!==-10036)throw new y({code:h.data.code,message:h.data.message})}catch(h){throw yield this.removeDownlink(),h}return}this.singlePC.addDownlinkQueue.delete(this.tinyId),yield this.singlePC.addDownlink({userId:this.userId,tinyId:this.tinyId,ssrc:this.ssrc})}finally{if(!ga)return;let{main:r,aux:s}=this._room.jitterBufferDelay||{},{jitterDelay:n=r,jitterDelayAux:a=s}=this._room.scheduleResult.config||{};(j(n)||j(a))&&this.setJitterBufferDelay({mainDelay:n,auxDelay:a})}}})}removeDownlink(){return f(this,null,function*(){if(!this.singlePC)return;this.ssrc={audio:0,video:0,videoRtx:0,auxiliary:0,auxiliaryRtx:0},this.singlePC.removeDownlinkQueue.delete(this.tinyId);let e=this._room.scheduleResult.config;(e!=null&&e.jitterDelay||e!=null&&e.jitterDelayAux)&&this.setJitterBufferDelay({mainDelay:0,auxDelay:0}),yield this.singlePC.removeDownlink(this.userId)})}setJitterBufferDelay({mainDelay:e,auxDelay:t}){if(!ga||!this.singlePC||!this._peerConnection||Oi(e)&&Oi(t))return Promise.resolve();this._log.info(`set jitterBuffer main: ${e} aux: ${t}`);let r=this.singlePC.getReceiversByUserId(this.userId);return j(e)&&(this.remoteAudioTrack.jitterBufferDelay=e,this.remoteVideoTrack.jitterBufferDelay=e),j(t)&&(this.remoteAuxiliaryTrack.jitterBufferDelay=t,Oi(e)&&(this.remoteAudioTrack.jitterBufferDelay=t)),new Promise(s=>{this.doSetJitterBufferDelay({mainDelay:e,auxDelay:t,receivers:r,resolve:s})})}doSetJitterBufferDelay({mainDelay:e,auxDelay:t,receivers:r,resolve:s}){try{if(e===0&&t===0)return r.forEach(a=>a.jitterBufferTarget=0),s();if(r.forEach(a=>{var u;let c=a.track===this.remoteAuxiliaryTrack.outMediaTrack||Oi(e)&&a.track===this.remoteAudioTrack.outMediaTrack;if(c&&Oi(t)||!c&&Oi(e))return;let l=c?t||0:e,h=(a.jitterBufferTarget||0)+100;h>l||(a.jitterBufferTarget=h,this._log.debug(`set ${c?"aux ":""}${(u=a==null?void 0:a.track)==null?void 0:u.kind} jitterBuffer delay ${h} -> ${l}`))}),!r.find(a=>{let c=a.track===this.remoteAuxiliaryTrack.outMediaTrack?t||0:e;return a.jitterBufferTarget<c}))return this._log.info(`set jitterBuffer main: ${e} aux: ${t} done`),s();this.jitterBufferTimeoutId=setTimeout(()=>{this.doSetJitterBufferDelay({mainDelay:e,auxDelay:t,receivers:r,resolve:s})},1e3)}catch(n){this._log.warn(`set jitterBuffer delay error: ${n}`),clearTimeout(this.jitterBufferTimeoutId),s()}}get audioReceiver(){var e;return((e=this.singlePC)==null?void 0:e.getReceiversByUserId(this.userId)[0])||null}};v([Ct(),Q(e=>function(...t){return new Promise((r,s)=>{let n=a=>{this.off("closed",n),s(new y({code:I.API_CALL_ABORTED,message:P({key:x.CONNECTION_ABORTED,data:a})}))};this.on("closed",n),e.apply(this,t).then(r,s).finally(()=>{this.off("closed",n)})})})],Ko.prototype,"subscribe",1),v([Ct()],Ko.prototype,"unsubscribe",1),v([$i(()=>"jitter")],Ko.prototype,"setJitterBufferDelay",1);var nf=Ko;function af(){return Q(o=>function(...i){return f(this,null,function*(){if(this.scene==="live"&&this.role!=="anchor"||(i=i.filter(t=>t.outMediaTrack&&t.state==="ready"),!i.length))return;E.emit("61",{room:this});let e=o.apply(this,i);return i.forEach(t=>t.publish(this,e)),e})})}function cf(){return Q(o=>function(...i){let e=o.apply(this,i);return i.forEach(t=>t.unpublish()),e})}var df=$e(Ye());function vE(){return Math.floor(Math.random()*16383)}var Pc=class Pc extends df.EventEmitter{constructor(e,t){super();this.room=e;this.signalChannel=t;d(this,"log");d(this,"cmdIdSeqMap",new Map);d(this,"messageMap",new Map);this.log=C.createLogger({id:"cmm",userId:e.userId}),this.onReceiveMsg=this.onReceiveMsg.bind(this),t.on(F.RECEIVE_CUSTOM_MSG,this.onReceiveMsg),this.room.on("peer-leave",r=>{[...this.messageMap.keys()].forEach(s=>{s.split("_").slice(0,-1).join("_")===r&&this.messageMap.delete(s)})})}send({cmdId:e,data:t}){let r=this.cmdIdSeqMap.get(e)||vE(),s={cmdId:e,msg:btoa(String.fromCharCode(...new Uint8Array(t))),ordered:!0,reliable:!0,streamSeq:r};this.cmdIdSeqMap.set(e,r+1),this.signalChannel.send(Y.SEND_CUSTOM_MSG,s),this.log.debug(`send custom msg: ${JSON.stringify(s)}`)}onReceiveMsg(e){let{data:t}=e.data,r=this.room.tinyIdToUserIdMap.get(t.srcTinyId);if(r){let s={userId:r,cmdId:t.cmdId,seq:t.streamSeq,data:Uint8Array.from(atob(t.msg),n=>n.charCodeAt(0)).buffer};if(t.ordered){let n=`${r}_${s.cmdId}`,a=this.messageMap.get(n);if(!a||a.lastSeq===0)a||(a={lastSeq:0,cachedMessageMap:new Map},this.messageMap.set(n,a),setTimeout(()=>this.emitMessage(s,!0),100)),a.cachedMessageMap.set(s.seq,{message:s});else if(Math.abs(a.lastSeq-s.seq)>Pc.SEQ_INTERVAL)this.messageMap.set(n,{lastSeq:s.seq,cachedMessageMap:new Map}),this.emitMessage(s);else if(s.seq>a.lastSeq){if(s.seq===a.lastSeq+1)this.emitMessage(s);else if(!a.cachedMessageMap.has(s.seq)){let c=setTimeout(()=>this.emitMessage(s,!0),5e3);a.cachedMessageMap.set(s.seq,{message:s,timeoutId:c})}}else this.log.debug(`drop message ${s.userId}-${s.cmdId}-${s.seq}`)}else this.emit("message",s)}else{this.log.warn(`receive msg from unknown user, wait peer-join tinyId: ${t.srcTinyId}`);let s=n=>{n.tinyId===t.srcTinyId&&(this.room.off("peer-join",s),this.onReceiveMsg(e))};this.room.on("peer-join",s),Ni(2e3).then(()=>this.room.off("peer-join",s))}}emitMessage(e,t=!1){var a;let r=this.messageMap.get(`${e.userId}_${e.cmdId}`),s=e;if(r){if(t){let c=[...r.cachedMessageMap.values()].sort((l,h)=>l.message.seq-h.message.seq);c[0]&&(s=c[0].message)}r.lastSeq!==0&&s.seq-r.lastSeq>1&&this.log.debug(`msg lost userId: ${s.userId} seq: ${r.lastSeq} -> ${s.seq}`),r.lastSeq=s.seq,clearTimeout((a=r.cachedMessageMap.get(s.seq))==null?void 0:a.timeoutId),r.cachedMessageMap.delete(s.seq)}this.log.debug(`receive custom msg: ${JSON.stringify(s)}`),this.emit("message",s);let n=r==null?void 0:r.cachedMessageMap.get(s.seq+1);n&&this.emitMessage(n.message)}};d(Pc,"SEQ_INTERVAL",300);var xc=Pc;var{isString:lf,isUndefined:gr,getNetworkType:DE,isEmpty:En}=mt,qt=class extends Mc{constructor(e){super(e);d(this,"_businessInfo");d(this,"userManager");d(this,"_version");d(this,"_heartbeat",-1);d(this,"_lastHeartBeatTime",-1);d(this,"_stats");d(this,"_joinTimeout",-1);d(this,"_firstPublishedList",null);d(this,"_joinReject",null);d(this,"_isRelayChanged",!1);d(this,"sdpSemantics");d(this,"signalChannel",null);d(this,"uplinkConnection",null);d(this,"singlePC",null);d(this,"enableSPC",vo);d(this,"_changeBigSmallRecords",new Map);d(this,"networkQuality");d(this,"_iceTransportPolicy");d(this,"forceRelay",!1);d(this,"_turnServers",[]);d(this,"_iceServersFromJoin");d(this,"_syncUserListInterval",-1);d(this,"_smallStreamConfig",{bitrate:100,frameRate:15,height:120,width:160});d(this,"enableSEI",!1);d(this,"_enableAudioVolumeEvaluation",!1);d(this,"_audioVolumeIntervalId",0);d(this,"_enableMultiAuxStream",!1);d(this,"_pureAudioPushMode",!1);d(this,"_customMessageManager");d(this,"preferHW",!1);d(this,"healthDetector");d(this,"playoutDelay");d(this,"jitterBufferDelay");d(this,"_updateAudioLevelTaskId",-1);this._stats=new pn(this,this._log),this.userManager=new tc(this.userId,this._log),this._version=xe,this.sdpSemantics=ro,gr(e.sdpSemantics)?ni.isUnifiedPlanDefault()&&(this.sdpSemantics=rr):this.sdpSemantics=e.sdpSemantics,this._log.info(`sdpSemantics: ${this.sdpSemantics}, netType: ${DE()}`),e.iceTransportPolicy&&(this._iceTransportPolicy=e.iceTransportPolicy),this._enableMultiAuxStream=gr(e.enableMultiAuxStream)?!1:e.enableMultiAuxStream,this.enableSEI=e.enableSEI&&vo,!gr(e.enableSPC)&&vo&&(this.enableSPC=e.enableSPC),this.preferHW=!!e.preferHW,this._initBusinessInfo(e),this.healthDetector=new zp(this)}get isMainStreamPublished(){var e;return!!((e=this.uplinkConnection)!=null&&e.isMainStreamPublished)}get isMainAudioPublished(){var e;return!!((e=this.uplinkConnection)!=null&&e.localMainAudioTrack)}get isAuxStreamPublished(){var e;return!!((e=this.uplinkConnection)!=null&&e.isAuxStreamPublished)}get hasAuxStream(){return[...this.remotePublishedUserMap.values()].findIndex(e=>e.muteState.hasAuxiliary)>=0}get userMap(){return this.userManager.userMap}get remotePublishedUserMap(){return this.userManager.remotePublishedUserMap}get tinyIdToUserIdMap(){return new Map([...this.userMap.values()].map(e=>[e.tinyId,e.userId]))}join(e,t,r){return f(this,null,function*(){return this.userManager.mySelfId=this.userId,this.userManager.on("1",s=>{this.emit("peer-join",s)}),this.userManager.on("2",s=>{this.closeDownLinkConnection(s,"remote user exitRoom"),this.emit("peer-leave",s)}),this.userManager.on("3",this.createDownlinkConnection,this),this.userManager.on("5",this.closeDownLinkConnection,this),this.userManager.on("6",n=>{var s=Xu(n,[]);E.emit(A.REMOTE_PUBLISH_STATE_CHANGED,N({room:this},s)),this.emit("remote-publish-state-changed",N({},s))}),this.joinParams=e,new Promise((s,n)=>f(this,null,function*(){var a,c;this._joinReject=n;try{this.checkDestroy();try{yield Promise.all([this.initialize(),this.initSinglePC()])}catch(h){if(h instanceof y&&h.code===I.SPC_INITIALIZED_FAILED)(a=this.signalChannel)==null||a.destroy(),yield this.initialize();else return n(h)}let l=V();yield this.doJoin(e,(c=this.singlePC)==null?void 0:c.clientAbility),b.addSuccessEvent({key:521708,cost:V()-l}),s(),this._firstPublishedList&&this.onPublishedUserList({data:{userList:this._firstPublishedList}})}catch(l){b.addFailedEvent({key:521708,error:l}),n(l)}this._joinReject=null}))})}initSinglePC(){return f(this,null,function*(){if(!(!this.enableSPC||this.singlePC)){this.singlePC=new jt({signalChannel:this.signalChannel,room:this,enableCustomMessage:!1}),this.singlePC.on("sei-message",e=>this.emit("sei-message",e)),this.singlePC.on("dump",e=>this.emit("dump",e)),this.singlePC.once("error",()=>this.fallbackToMPC());try{return yield this.singlePC.initialize()}catch(e){throw this.fallbackToMPC(),new y({code:I.SPC_INITIALIZED_FAILED,message:e==null?void 0:e.message})}}})}doJoin(e,t){return new Promise((r,s)=>f(this,null,function*(){var c,l,h;e.privateMapKey&&(this.privateMapKey=e.privateMapKey),e.latencyLevel&&(this.latencyLevel=e.latencyLevel),this.signalChannel.once(Ne.SETUP_FAILED,u=>{this.clearJoinTimeout(),E.emit(A.JOIN_SIGNAL_CONNECTION_END,{room:this,error:u}),s(u)}),me((l=(c=this.scheduleResult)==null?void 0:c.config)==null?void 0:l.singlePC)&&vo&&(this.enableSPC=this.scheduleResult.config.singlePC),this.keyPointManager.setConnectionType(this.singlePC?1:2),t&&this.playoutDelay&&(t.playoutDelay=this.playoutDelay);let n={roomId:String(e.roomId||e.strRoomId),useStringRoomId:this.useStringRoomId,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel,trtcRole:e.role,trtcScene:this.scene==="live"?2:1,sdpSemantics:this.sdpSemantics,version:this._version,ua:navigator&&navigator.userAgent||"",terminalType:Cd(),netType:Cr(),bussinessInfo:this._businessInfo,ability:t,sdkType:this._sdkType,userSig:this.userSig,receiveMix:!0};this._log.debug(`join room signal data: ${JSON.stringify(n)}`);let a=5e3;(h=this.scheduleResult.config)!=null&&h.enterRoomTimeout&&this.scheduleResult.config.enterRoomTimeout>=1&&(a=this.scheduleResult.config.enterRoomTimeout*1e3),this._joinTimeout=window.setTimeout(()=>{s(new y({code:I.JOIN_ROOM_FAILED,message:P({key:x.JOIN_ROOM_TIMEOUT})}))},a),E.emit(A.JOIN_SEND_CMD,{room:this}),this.signalChannel.send(this.singlePC?Y.SPC_JOIN_ROOM:Y.JOIN_ROOM,n),this.signalChannel.once(F.JOIN_ROOM_RESULT,u=>f(this,null,function*(){this.clearJoinTimeout();let{code:m,message:g,data:D,tinyId:_}=u.data;E.emit(A.JOIN_RECEIVED_CMD_RES,{room:this,code:m}),m===0?(this._log.info("Join room success, start heartbeat"),_&&(this.tinyId=_),this.startHeartbeat(),this.syncUserList(),this.startSyncUserListInterval(),this._firstPublishedList=D.publishers,this._iceServersFromJoin=D.iceServer?[D.iceServer]:[],this.singlePC&&this.singlePC.setIceServers(this.getIceServers()).then(()=>{var S;(S=this.singlePC)==null||S.connect(L(N({},D.ability),{useVp8:D.ability.useVp8||!!e.useVp8})).catch(()=>{})}),r()):(this._log.error(`Join room failed result: ${m} error: ${g}`),s(new y({code:I.JOIN_ROOM_FAILED,extraCode:m,message:P({key:x.JOIN_ROOM_FAILED,data:{error:g,code:m}})})))}))}))}reJoin(){return f(this,null,function*(){if(!this.isJoined){this._log.warn("reJoin abort");return}try{this._log.warn(`reJoin pending: ${this.joinParams.roomId}`);let e,t=[];if(this.singlePC&&(this.singlePC.close(),this.singlePC=null,t.push(this.initSinglePC().then(r=>(e=r,r)))),this.signalChannel&&(this.signalChannel.close(),t.push(this.signalChannel.connect())),yield Promise.all(t),yield this.doJoin(L(N({},this.joinParams),{role:this.role==="anchor"?20:21,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel}),e),this._log.warn("reJoin success"),re.logSuccessEvent({userId:this.userId,eventType:ot.REJOIN}),this.singlePC){let r=s=>{var n;s.state==="CONNECTED"&&((n=this.singlePC)==null||n.off(Ti.CONNECTION_STATE_CHANGED,r),this.uplinkConnection instanceof Wu&&(this.uplinkConnection.installEvents(),this.uplinkConnection.onSinglePCReconnected()),this.remotePublishedUserMap.forEach(a=>{a.installEvents(),a.onSinglePCReconnected()}))};this.singlePC.on(Ti.CONNECTION_STATE_CHANGED,r),this.checkConnectionsToReconnect(),this.uplinkConnection instanceof mn&&!this.uplinkConnection.getIsReconnecting()&&this.uplinkConnection.startReconnection()}}catch(e){this._log.warn(`reJoin fail ${e}`),this.reset(),re.logFailedEvent({userId:this.userId,eventType:ot.REJOIN,error:e}),this.emit("error",new y({code:I.JOIN_ROOM_FAILED,message:P({key:x.REJOIN_ROOM_FAILED,data:{roomId:this.joinParams.roomId}})}))}})}initialize(){return f(this,null,function*(){let{mainUrl:e,backupUrl:t}=this.getSignalChannelUrl(),r=this.signalChannel||Ap(this.userId),s=!!(r&&r.isConnected&&r.keepAlive&&r.userId===this.userId&&r.room===this),n;return Array.isArray(this.scheduleResult.domains)&&this.scheduleResult.domains.length>0&&(n=this.scheduleResult.domains[0]),this._log.info(`${s?"reuse":"setup"} signal channel`),s?(r.url=e,r.backupUrl=t,r.room=this,this.signalChannel=r):(r&&r.close(),this.signalChannel=new Xo({sdkAppId:this.sdkAppId,userId:this.userId,userSig:this.userSig,url:e,backupUrl:t,room:this,signalDomainWhenUnifiedProxy:this.proxy_unified?n:void 0}),this._customMessageManager=new xc(this,this.signalChannel),this._customMessageManager.on("message",a=>{this.emit("custom-message",a)})),this.networkQuality||(this.networkQuality=new Zo({signalChannel:this.signalChannel,room:this}),this.networkQuality.on(Zo.EVENT_NETWORK_QUALITY,a=>{var c;this.emit("network-quality",a),(c=this.singlePC)==null||c.detectTCPAndUDP(a)})),je(this,this.signalChannel).add(Ne.CONNECTION_STATE_CHANGED,a=>{E.emit(A.SIGNAL_CONNECTION_STATE_CHANGED,N({room:this},a)),this.emit("signal-connection-state-changed",a)}).add(Ne.RECONNECT_FAILED,a=>{this.reset(),this.emit("error",a)}).add(F.PEER_JOIN,a=>{let{srcTinyId:c,userId:l,role:h}=a.data.data;this.userManager.addUser({userId:l,tinyId:c,role:h})}).add(F.PEER_LEAVE,a=>{let{userId:c,reason:l=0}=a.data.data;this.userManager.deleteUser(c,l)}).add(F.UPDATE_REMOTE_MUTE_STAT,a=>{this._lastHeartBeatTime>0&&Date.now()-this._lastHeartBeatTime>=10*1e3&&this.doHeartbeat(),this.onPublishedUserList(a.data)}).add(F.CLIENT_BANNED,a=>{let c=a.data.data,{reason:l}=c;if(re.uploadEvent({log:`stat-banned:${l}`,userId:this.userId}),l==="user_time_out"){this._log.warn(`${l} last heart beat time: ${this._lastHeartBeatTime} interval: ${Date.now()-this._lastHeartBeatTime}, visibility: ${document.visibilityState}`),this.reJoin();return}this._log[l==="kick"?"error":"info"](`user was banned because of [${l}]`),this.reset(),this.emit("banned",{reason:l})}).add(F.SEND_SWITCH_ROOM_SUBED_REQ,a=>{if(!this.singlePC)return;let{subList:c}=a.data.data;c.forEach(l=>{this.singlePC.autoSubscribedUserMap.set(l.userId,l)})}),this.signalChannel.once(Ne.SETUP_SUCCESS,a=>{this.tinyId=a.signalInfo.tinyId,E.emit(A.JOIN_SIGNAL_CONNECTION_END,{room:this})}),E.emit(A.JOIN_SIGNAL_CONNECTION_START,{room:this}),yield this.signalChannel.connect(),s&&E.emit(A.JOIN_SIGNAL_CONNECTION_END,{room:this}),s})}setSignalChannel(e){this.signalChannel=e,e||ve(this)}leave(){return f(this,null,function*(){var e;try{yield this.doHeartbeat()}catch(t){}this._log.info("leave() => leaving room"),E.emit(A.LEAVE_SEND_CMD,{room:this}),(e=this.signalChannel)==null||e.send(Y.LEAVE_ROOM)})}clearNetworkQuality(){this.networkQuality&&(this.networkQuality.stop(),delete this.networkQuality)}closeConnections(){this.remotePublishedUserMap.forEach(e=>{this.closeDownLinkConnection(e.userId,"you exitRoom")})}clearJoinTimeout(){clearTimeout(this._joinTimeout),this._joinTimeout=-1}startHeartbeat(){this._heartbeat===-1&&(this._heartbeat=se.run("ric",this.doHeartbeat.bind(this),{delay:2e3}))}stopHeartbeat(){this._heartbeat!==-1&&(this._log.info("stopHeartbeat"),se.clearTask(this._heartbeat),this._heartbeat=-1,this._lastHeartBeatTime=-1)}doHeartbeat(){return f(this,null,function*(){var n;let e=this.badCaseDetector.getMonitorFreeze(),t=yield this._stats.getStatsReport({uplinkConnection:this.uplinkConnection,downlinkConnections:this.remotePublishedUserMap,freezeMap:e});this.badCaseDetector.resetMonitor();let r=(n=this.signalChannel)!=null&&n.isConnected?Um(this.userId):[],s=L(N({str_sdk_version:rs,uint64_datetime:new Date().getTime(),msg_user_info:{str_identifier:this.userId,uint64_tinyid:this.tinyId},msg_event_msg:r,str_acc_ip:this.getSignalInfo().relayIp,str_client_ip:this.getSignalInfo().clientIp},t),{msg_device_info:N({uint32_terminal_type:15,str_device_name:navigator.platform,str_os_version:"",uint32_net_type:Cr()},t.msg_device_info)});if(this.heartbeatReport=s,E.emit(A.HEARTBEAT_REPORT,{room:this,report:s}),this.signalChannel){if(this.signalChannel.isConnected){this.signalChannel.send(Y.ON_QUALITY_REPORT,s);let a=Date.now();this._lastHeartBeatTime>0&&a-this._lastHeartBeatTime>1e4&&this._log.warn(`heartbeat took ${a-this._lastHeartBeatTime}`),this._lastHeartBeatTime=a,this.signalChannel.isOnline||(this._log.warn("signal channel is not online"),this.signalChannel.startReconnection())}this.emit("heartbeat-report",L(N({},s),{bytes_sent:this._stats.totalBytesSent+this.signalChannel.bytesSent,bytes_received:this._stats.totalBytesReceived+this.signalChannel.bytesReceived}))}!this._isRelayChanged&&this.isRelayMaybeFailed()&&(this.reJoin(),this._isRelayChanged=!0)})}onPublishedUserList(e){if(!this.isJoined)return;let t=e.data.userList.filter(r=>r.flag!==Jc).map(({userId:r,srcTinyId:s,flag:n})=>{r===this.userId&&this.uplinkConnection&&(this.uplinkConnection.flag=n);let a=this.remotePublishedUserMap.get(r);return a&&this.checkSubscribeBigSmallVideo(a),{userId:r,tinyId:s,flag:n}});e.data.mixRobotList.forEach(({userId:r,srcTinyId:s,flag:n,mixUserList:a})=>{t.unshift({userId:r,tinyId:s,flag:n,isRobot:!0,mixUserList:a})}),E.emit(A.RECEIVED_PUBLISHED_USER_LIST,{room:this,publishedUserList:t}),this.userManager.setRemotePublishedUserList(t)}closeUplink(e="you unpublished"){this.uplinkConnection&&(this.localTracks.size>0&&this.uplinkConnection.doUnpublish(),this.uplinkConnection.close(e),this.uplinkConnection instanceof mn&&(this.uplinkConnection=null)),this.localTracks.forEach(t=>t.unpublish()),this.localTracks.clear()}createDownlinkConnection({userId:e,tinyId:t,flag:r,isRobot:s}){let n=new(this.singlePC?nf:ku)({userId:e,tinyId:t,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI,flag:r,isRobot:s});this.userManager.addRemotePublishedUser(n),this.installDownlinkEvents(n,e),this.emit("remote-published",n)}closeDownLinkConnection(e,t="remote user unpublished"){let r=this.remotePublishedUserMap.get(e);r&&(r.close(t),this.emit("remote-unpublished",r))}installDownlinkEvents(e,t){e.on("error",r=>{let s=r.getCode();s!==I.ICE_TRANSPORT_ERROR&&(s===I.DOWNLINK_RECONNECTION_FAILED&&this.closeDownLinkConnection(t),this.emit("error",r))}),e.on("connection-state-changed",r=>{this.emit("media-connection-state-changed",L(N({},r),{userId:e.userId}))}),e.on("firewall-restriction",()=>{this.emit("firewall-restriction")})}startSyncUserListInterval(){this._syncUserListInterval===-1&&(this._syncUserListInterval=se.run("ric",this.syncUserList.bind(this)))}stopSyncUserListInterval(){se.clearTask(this._syncUserListInterval),this._syncUserListInterval=-1}syncUserList(){return this.getUserList().then(e=>{this.userManager.setUserList(e)}).catch(e=>{this._log.debug(`sync user list failed: ${e}`)})}getUserList(){var e;return(e=this.signalChannel)!=null&&e.isConnected?this.signalChannel.sendWaitForResponse({command:Y.GET_USER_LIST,responseCommand:F.USER_LIST_RES,enableLog:!1,timeout:2e3}).then(({data:t})=>{let{code:r,message:s}=t;if(r===0)return(t.data&&t.data.userList||[]).map(({userId:a,srcTinyId:c,role:l})=>({userId:a,tinyId:c,role:l}));throw P({key:x.SIGNAL_RESPONSE_FAILED,data:{signalResponse:F.USER_LIST_RES,code:r,message:s}})}):Promise.reject("not connected")}getAllConnections(){let e=[...this.remotePublishedUserMap.values()];return this.uplinkConnection&&e.push(this.uplinkConnection),e}isRelayMaybeFailed(){if(this.signalChannel&&!this.signalChannel.isOnline||!bu)return!1;if(this.singlePC)return this.singlePC.reconnectionCount>6;let e=this.getAllConnections();if(e.length===0)return!1;for(let t=0;t<e.length;t++)if(e[t].getReconnectionCount()<6)return!1;return!0}checkConnectionsToReconnect(){var e;this.singlePC?((e=this.singlePC.getPeerConnection())==null?void 0:e.connectionState)===ge.CLOSED&&!this.singlePC.isReconnecting&&(this._log.warn("spc pc is closed but not reconnect"),this.singlePC.startReconnection()):this.getAllConnections().forEach(r=>{if(r instanceof rt&&!r.getIsReconnecting()){let s=r.getPeerConnection();s&&s.connectionState===ge.CLOSED&&(this._log.warn(`[${r.getUserId()}] pc is closed but not reconnect`),r.startReconnection())}})}fallbackToMPC(){return f(this,null,function*(){var e;if(this._log.warn("fallback to multi pc"),re.uploadEvent({log:"stat-fallback",userId:this.userId}),this.enableSPC=!1,(e=this.singlePC)==null||e.close(),this.singlePC=null,this.isJoined&&(yield this.reJoin()),this.uplinkConnection){let t=this.uplinkConnection;this.uplinkConnection=new mn({userId:this.userId,tinyId:this.tinyId,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI}),t.isMainStreamPublished&&(yield this.uplinkConnection.publish({localAudioTrack:t.localMainAudioTrack,localVideoTrack:t.localMainVideoTrack,isAuxiliary:!1})),t.isAuxStreamPublished&&(yield this.uplinkConnection.publish({localAudioTrack:t.localAuxAudioTrack,localVideoTrack:t.localAuxVideoTrack,isAuxiliary:!0})),t.close()}for(let t of[...this.remotePublishedUserMap.values()]){let r=new ku({userId:t.userId,tinyId:t.tinyId,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI,flag:t.flag,remoteAudioTrack:t.remoteAudioTrack,remoteVideoTrack:t.remoteVideoTrack,remoteAuxiliaryTrack:t.remoteAuxiliaryTrack});this.installDownlinkEvents(r,t.userId),this.remotePublishedUserMap.set(t.userId,r),t.isMainStreamSubscribed&&(yield r.subscribe(t.subscribeState,"main")),t.isAuxStreamSubscribed&&(yield r.subscribe(t.subscribeState,"auxiliary"))}})}destroy(){this.isDestroyed||(this.signalChannel&&(this._log.info("destroying SignalChannel"),this.signalChannel.close(),this.signalChannel=null),super.destroy(),this._joinReject&&(this._joinReject(new y({code:I.INVALID_OPERATION,message:P({key:x.CLIENT_DESTROYED,data:{funName:"join"}})})),this.clearJoinTimeout(),this.reset()),this.removeAllListeners(),this.healthDetector.destroy(),se.clearTask(this._audioVolumeIntervalId))}switchRole(e){return f(this,null,function*(){this.role!==e&&(e==="audience"&&this.uplinkConnection&&this.closeUplink("you switch role to audience"),yield this.doSwitchRole(e))})}doSwitchRole(e){let t={command:Y.SWITCH_ROLE,data:{role:e==="anchor"?20:21,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel},responseCommand:F.SWITCH_ROLE_RES,retries:1};return this._log.info(`switchRole signal data: ${JSON.stringify(t.data)}`),this.signalChannel.sendWaitForResponseWithRetry(t).then(r=>{let{code:s,message:n}=r.data;if(s!==0)throw new y({code:I.SWITCH_ROLE_FAILED,message:P({key:x.SWITCH_ROLE_FAILED,data:{message:n,code:s}})});this.role=e}).catch(r=>{throw r instanceof y&&r.getCode()===I.API_CALL_TIMEOUT&&(r=new y({code:I.SWITCH_ROLE_FAILED,message:P({key:x.SWITCH_ROLE_TIMEOUT})})),this._log.error(r),r})}publish(...e){return f(this,null,function*(){let t={},r={};e.forEach(c=>{c instanceof Et&&(c instanceof hi?r.audio=c:t.audio=c),c instanceof qe&&(c instanceof ut&&c.mediaType===2?r.video=c:t.video=c)});let s=En(t),n=En(r);(!s||!n)&&!this.uplinkConnection&&(this.singlePC?this.uplinkConnection=new Wu({userId:this.userId,tinyId:this.tinyId,room:this}):this.uplinkConnection=new mn({userId:this.userId,tinyId:this.tinyId,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI}),this.uplinkConnection.on("connection-state-changed",c=>{this.emit("media-connection-state-changed",L(N({},c),{userId:this.userId}))}),this.uplinkConnection.on("firewall-restriction",()=>{this.emit("firewall-restriction")}),this.uplinkConnection.on("error",c=>{let l=c.getCode();l!==I.ICE_TRANSPORT_ERROR&&(l===I.UPLINK_RECONNECTION_FAILED&&this.closeUplink(),this.emit("error",c))}));let a=e.map(c=>c.kind).join(",");s||(this._log.info(`publish() => main ${a}`),yield this.uplinkConnection.publish({localAudioTrack:t.audio,localVideoTrack:t.video,isAuxiliary:!1}),this._log.info("main is published")),n||(this._log.info(`publish() => aux ${a}`),yield this.uplinkConnection.publish({localAudioTrack:r.audio,localVideoTrack:r.video,isAuxiliary:!0}),this._log.info("aux is published"))})}unpublish(...e){return f(this,null,function*(){if(this.scene==="live"&&this.role!=="anchor"||!this.isMainStreamPublished&&!this.isAuxStreamPublished||!this.uplinkConnection)return;let t={},r={};e.forEach(s=>{!s.mediaTrack||!s.isPublished||(s instanceof Et&&(s instanceof hi?r.audio=s:t.audio=s),s instanceof qe&&(s instanceof ut&&s.mediaType===2?r.video=s:t.video=s))});try{let s=e.map(n=>n.kind).join(",");En(t)||(this._log.info(`unpublish() => main ${s}`),yield this.uplinkConnection.unpublish({localAudioTrack:t.audio,localVideoTrack:t.video})),En(r)||(this._log.info(`unpublish() => aux ${s}`),yield this.uplinkConnection.unpublish({localAudioTrack:r.audio,localVideoTrack:r.video}))}catch(s){}this.localTracks.size===0&&this.closeUplink("you unpublished")})}addTrack(e){if(!this.uplinkConnection||!e.mediaTrack)return Promise.resolve();let t=this.uplinkConnection.addTrack(e);return e.publish(this,t),t}removeTrack(e){return!this.uplinkConnection||!e.mediaTrack?Promise.resolve():this.uplinkConnection.removeTrack(e).then(t=>(e.unpublish(),t))}replaceTrack(e){return!this.uplinkConnection||!e.mediaTrack||!jd()?Promise.resolve():this.uplinkConnection.replaceTrack(e).then(t=>{t&&E.emit(A.LOCAL_TRACK_REPLACED,{track:e})})}setBandWidth(e){return f(this,null,function*(){this.uplinkConnection&&(yield this.uplinkConnection.setBandwidth(e),yield this.uplinkConnection.sendMediaSettings())})}enableSmall(e){return f(this,null,function*(){if(!this.uplinkConnection||!this.uplinkConnection.localMainVideoTrack)return Promise.resolve();e&&this.uplinkConnection.localMainVideoTrack.small&&(yield this.setBandWidth({type:p.VIDEO,videoType:p.SMALL,bandwidth:this.uplinkConnection.localMainVideoTrack.small.bitrate})),yield this.uplinkConnection.enableSmall(e)})}subscribe(...e){return f(this,null,function*(){if(e=e.filter(n=>!n.isSubscribed),e.length===0)return;let{userId:t}=e[0],r=this.remotePublishedUserMap.get(t);if(!r)return;let s=e.find(n=>n.mediaType===2)?"auxiliary":"main";try{let n=N({},r.subscribeState);e.forEach(c=>{switch(c.mediaType){case 1:n.audio=!0;break;case 4:n.video=!0;break;case 8:n.smallVideo=!0;break;case 2:n.auxiliary=!0;break}});let a=this._changeBigSmallRecords.get(t);a&&a.options.smallVideo&&r.muteState.hasSmall&&n.video&&(n.video=!1,n.smallVideo=!0),E.emit(A.SUBSCRIBE_START,{room:this,streamType:s,remotePublishedUser:r,subscribeState:n}),this._log.info(`subscribe() => ${t} ${s} [${Rc(n)}] prev: [${Rc(r.subscribeState)}]`),yield r.subscribe(n,s),this._log.info(`subscribe ${t} ${s} done`);for(let c of e)c.mediaTrack||(yield c.waitHasMediaTrack());E.emit(A.SUBSCRIBE_SUCCESS,{room:this,streamType:s,remotePublishedUser:r})}catch(n){let a=n instanceof y?n.getCode():I.UNKNOWN,c=n;throw n instanceof y?a===I.REMOTE_STREAM_NOT_EXIST&&(c=new y({code:I.API_CALL_ABORTED,message:P({key:x.API_CALL_ABORTED,data:{message:n.message,userId:t,streamType:s}})}),this._log.warn(c)):(c=new y({code:a,message:P({key:x.SUBSCRIBE_FAILED,data:{message:n.message,userId:t,streamType:s}})}),this._log.error(c)),c}})}unsubscribe(...e){return f(this,null,function*(){let{userId:t}=e[0],r=this.remotePublishedUserMap.get(t);if(!r)return;let s=e.find(n=>n.mediaType===2)?"auxiliary":"main";this._log.info(`unsubscribe() => ${t} ${s}`);try{yield r.unsubscribe({remoteTracks:e,streamType:s})}catch(n){this._log.warn(`unsubscribe() => failed ${n}`)}e.forEach(n=>{n.unsubscribe(),n.mediaType===8&&n.setMediaType(4)}),E.emit(A.UNSUBSCRIBE_SUCCESS,{room:this,streamType:s,remotePublishedUser:r})})}setEncodedDataProcessingListener(e){throw new Error("Method not implemented.")}enableAudioVolumeEvaluation(e=2e3,t){if(e<=0){this._enableAudioVolumeEvaluation=!1,se.clearTask(this._audioVolumeIntervalId);return}e=Math.floor(Math.max(e,100)),E.emit(A.AUDIO_LEVEL_INTERVAL,{interval:e}),this._audioVolumeIntervalId&&se.clearTask(this._audioVolumeIntervalId),this._enableAudioVolumeEvaluation=!0,this._audioVolumeIntervalId=se.run("intervalInWorker",()=>{var s;Ur.isRunning?this.stopUpdateAudioLevelFromSenderStat():this.updateAudioLevelFromSenderStat(e,t);let r=[];(s=this.remotePublishedUserMap)==null||s.forEach(n=>{if(n.muteState.hasAudio){!Ur.isRunning&&n.muteState.audioAvailable&&n.remoteAudioTrack.isSubscribed?this.updateDownlinkAudioLevelFromReceiver(n):n.remoteAudioTrack.volume=0;let a=Math.floor(n.remoteAudioTrack.getAudioLevel()*100);r.push({userId:n.userId,volume:a,floatVolume:n.remoteAudioTrack.getInternalAudioLevel()})}}),this.emit("audio-volume",r)},{delay:e,backgroundTask:t})}updateAudioLevelFromSenderStat(e,t){return f(this,null,function*(){var n;if(!this.uplinkConnection||!this.uplinkConnection.localMainAudioTrack||this._updateAudioLevelTaskId!==-1)return;let r=(n=this.uplinkConnection.getPeerConnection())==null?void 0:n.getSenders()[0];if(!r)return;let s=Math.max(e,500);this._log.warn(`updateAudioLevelFromSenderStat ${s}`),this._updateAudioLevelTaskId=se.run("intervalInWorker",()=>f(this,null,function*(){if(!this.uplinkConnection||!this.uplinkConnection.localMainAudioTrack){this.stopUpdateAudioLevelFromSenderStat();return}let a=yield r.getStats();if(this._updateAudioLevelTaskId<0)return;let{localMainAudioTrack:c}=this.uplinkConnection;a.forEach(l=>{l.type==="media-source"&&l.audioLevel&&(c.volume=l.audioLevel)})}),{delay:s,backgroundTask:t})})}stopUpdateAudioLevelFromSenderStat(){var e;this._updateAudioLevelTaskId!==-1&&(this._log.warn("stopUpdateAudioLevelFromSenderStat"),se.clearTask(this._updateAudioLevelTaskId),this._updateAudioLevelTaskId=-1,(e=this.uplinkConnection)!=null&&e.localMainAudioTrack&&(this.uplinkConnection.localMainAudioTrack.volume=0))}updateDownlinkAudioLevelFromReceiver(e){var s;let{audioReceiver:t}=e;if(!qd||!t)return;let r=(s=t.getSynchronizationSources()[0])==null?void 0:s.audioLevel;j(r)?e.remoteAudioTrack.volume=Math.min(r*2,1):t.getStats().then(n=>{n.forEach(a=>{a.type==="inbound-rtp"&&j(a.audioLevel)&&(e.remoteAudioTrack.volume=a.audioLevel)})})}getLocalAudioStats(){return f(this,null,function*(){var t;let e={};return e[this.userId]={bytesSent:0,packetsSent:0,audioLevel:0},(t=this.uplinkConnection)!=null&&t.localMainAudioTrack&&(e[this.userId]=this.uplinkConnection.localMainAudioTrack.stat),e})}getLocalVideoStats(){return f(this,null,function*(){var t,r;let e={};return e[this.userId]=((r=(t=this.uplinkConnection)==null?void 0:t.localMainVideoTrack)==null?void 0:r.stat)||{bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0,fpsCapture:0},e})}getTransportStats(){return f(this,null,function*(){let e={rtt:0,downlinksRTT:{}};if(this.uplinkConnection){let t=yield this._stats.getSenderStats(this.uplinkConnection);e.rtt=t.rtt}for(let[,t]of this.remotePublishedUserMap){let r=yield this._stats.getReceiverStats(t);e.downlinksRTT[r.userId]=r.rtt}return e})}getRemoteVideoStats(e){return f(this,null,function*(){let t={};for(let[r,s]of this.remotePublishedUserMap)e==="main"&&s.muteState.hasVideo&&(t[r]=s.remoteVideoTrack.stat),e==="auxiliary"&&s.muteState.hasAuxiliary&&(t[r]=s.remoteAuxiliaryTrack.stat);return t})}getRemoteAudioStats(){return f(this,null,function*(){let e={};for(let[t,r]of this.remotePublishedUserMap)r.muteState.hasAudio&&(e[t]=r.remoteAudioTrack.stat);return e})}setTurnServer(e,t){this._log.info(`set turn server: ${JSON.stringify(e)} ${t||""}`);let r=[];Array.isArray(e)?e.forEach(s=>r.push(mt.getTurnServer(s))):mt.isPlainObject(e)&&r.push(mt.getTurnServer(e)),this._turnServers=r,t&&(this._iceTransportPolicy=t)}sendStartMixTranscode(e){return this.signalChannel.sendWaitForResponse({command:Y.START_MIX_TRANSCODE,data:e,timeout:5e3,responseCommand:F.START_MIX_TRANSCODE_RES,commandDesc:"startMixTranscode"})}sendStopMixTranscode(e){return this.signalChannel.sendWaitForResponse({command:Y.STOP_MIX_TRANSCODE,data:e,timeout:5e3,responseCommand:F.STOP_MIX_TRANSCODE_RES,commandDesc:"stopMixTranscode"})}sendStartPublishCDN(e,t=!0){return this.signalChannel.sendWaitForResponse({command:t?Y.START_PUBLISH_TENCENT_CDN:Y.START_PUBLISH_GIVEN_CDN,data:e,timeout:5e3,responseCommand:t?F.START_PUBLISH_TENCENT_CDN_RES:F.START_PUBLISH_GIVEN_CDN_RES,commandDesc:"startPublishCDN"})}sendStopPublishCDN(e,t=!0){return this.signalChannel.sendWaitForResponse({command:t?Y.STOP_PUBLISH_TENCENT_CDN:Y.STOP_PUBLISH_GIVEN_CDN,data:e,timeout:5e3,responseCommand:t?F.STOP_PUBLISH_TENCENT_CDN_RES:F.STOP_PUBLISH_GIVEN_CDN_RES,commandDesc:"stopPublishCDN"})}sendStartPushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:Y.START_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:F.START_PUBLISH_CDN_STREAM_RES,commandDesc:"startPublishCDNStream"})}sendUpdatePushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:Y.UPDATE_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:F.UPDATE_PUBLISH_CDN_STREAM_RES,commandDesc:"updatePublishCDNStream"})}sendStopPushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:Y.STOP_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:F.STOP_PUBLISH_CDN_STREAM_RES,commandDesc:"stopPublishCDNStream"})}sendAbilityStatus(e){var t;(t=this.signalChannel)==null||t.sendWaitForResponse({command:Y.ABILITY_STATUS_REPORT,data:e,timeout:5e3,responseCommand:F.ABILITY_STATUS_REPORT_RESULT,commandDesc:"ability status report"}).catch(r=>{})}getIceServers(e){var t,r;return this._turnServers.length>0?this._turnServers:(t=this.scheduleResult.iceServers)!=null&&t.length?this.scheduleResult.iceServers:e!=null&&e.length?e:(r=this._iceServersFromJoin)!=null&&r.length?this._iceServersFromJoin:[]}getIceTransportPolicy(){return this.forceRelay?"relay":this._iceTransportPolicy||this.scheduleResult.iceTransportPolicy||"all"}getLogger(){return this._log}enableAIVoice(){throw new Error("Method not implemented.")}getSignalChannelUrl(){let e={mainUrl:"",backupUrl:""},t=mt.getEnv();return t?(e.mainUrl=`wss://${t}.rtc.qq.com`,e.backupUrl=e.mainUrl):this.proxy_ws?(e.mainUrl=this.proxy_ws,e.backupUrl=e.mainUrl):this.proxy_unified?(e.mainUrl=`wss://${this.proxy_unified}`,e.backupUrl=e.mainUrl):Array.isArray(this.scheduleResult.domains)&&this.scheduleResult.domains.length>0&&(e.mainUrl=`wss://${this.scheduleResult.domains[0]}`,e.backupUrl=e.mainUrl,this.scheduleResult.domains[1]&&(e.backupUrl=`wss://${this.scheduleResult.domains[1]}`)),e}getSignalInfo(){var e;return((e=this.signalChannel)==null?void 0:e.getSignalInfo())||{clientIp:"",relayIp:""}}reset(e=!1){this.stopSyncUserListInterval(),this.stopHeartbeat(),this.closeConnections(),this.clearNetworkQuality(),this.closeUplink("you exitRoom"),this.signalChannel&&(e&&this.signalChannel.keepAlive&&this.signalChannel.isConnected?this.signalChannel.stopKeepAliveIn(3600):(this.signalChannel.close(),this.setSignalChannel(null))),this._stats.reset(),this.userManager.clear(),this.userManager.removeAllListeners(),this.singlePC&&(this.singlePC.close(),this.singlePC=null),this.scheduleResult={domains:null,iceServers:null,iceTransportPolicy:null,trtcAutoConf:null}}checkSubscribeBigSmallVideo(e){return f(this,null,function*(){let{subscribeState:t,userId:r,muteState:{hasSmall:s,hasVideo:n}}=e;if(!s&&!n||!t.video&&!t.smallVideo)return;let a=this._changeBigSmallRecords.get(r);if(!a||a.isSubscribing||a.reSubscribeCount<=0)return;let{options:c,reSubscribeCount:l}=a;if(c.video&&t.video||c.smallVideo&&t.smallVideo&&s)return;let h={audio:e.remoteAudioTrack.isSubscribed||e.remoteAudioTrack.isSubscribing,auxiliary:e.remoteAuxiliaryTrack.isSubscribed||e.remoteAuxiliaryTrack.isSubscribing,video:c.video,smallVideo:c.smallVideo};try{if(!s&&h.smallVideo&&(h.video=!0,h.smallVideo=!1),h.smallVideo===t.smallVideo&&h.video===t.video)return;a.isSubscribing=!0,a.reSubscribeCount=l-1,yield e.subscribe(h,"main"),e.remoteVideoTrack.setMediaType(h.smallVideo?8:4),this._log.info(`change [${r}] to ${h.smallVideo?"small":"big"} video successfully. count ${oo-a.reSubscribeCount}.`),a.isSubscribing=!1,a.reSubscribeCount=oo}catch(u){this._log.info(`change [${r}] to ${h.smallVideo?"small":"big"} video failed. count ${oo-a.reSubscribeCount}. reason: ${u}`),a.isSubscribing=!1,a.reSubscribeCount===0&&this._changeBigSmallRecords.delete(r)}})}changeType(e,t){let s={options:{video:!e,smallVideo:e},isSubscribing:!1,reSubscribeCount:oo};this._changeBigSmallRecords.set(t.userId,s),this._log.info(`set [${t.userId}] video prefer type: ${e?"small":"big"}`),this.emit("subscribe-small-video-changed",{userId:t.userId,isSmall:e});let n=this.remotePublishedUserMap.get(t.userId);n&&this.checkSubscribeBigSmallVideo(n)}get smallStreamConfig(){return this._smallStreamConfig}_initBusinessInfo(e){this._businessInfo=e.businessInfo;let t={};if(lf(e.businessInfo)&&(t=JSON.parse(e.businessInfo)),!gr(e.pureAudioPushMode)){if(!Number.isInteger(Number(e.pureAudioPushMode)))throw new y({code:I.INVALID_PARAMETER,message:P({key:x.INVALID_PURE_AUDIO})});this._pureAudioPushMode=e.pureAudioPushMode,t.Str_uc_params||(t.Str_uc_params={}),t.Str_uc_params.pure_audio_push_mod=this._pureAudioPushMode}if(!gr(e.userDefineRecordId)){let r=/^[A-Za-z0-9_-]{1,64}$/gi;if(e.userDefineRecordId.match(r)===null)throw new y({code:I.INVALID_PARAMETER,message:P({key:x.INVALID_USER_DEFINE_RECORDID})});t.Str_uc_params||(t.Str_uc_params={}),t.Str_uc_params.userdefine_record_id=e.userDefineRecordId}if(!gr(e.userDefinePushArgs))if(lf(e.userDefinePushArgs)&&String(e.userDefinePushArgs)&&String(e.userDefinePushArgs).length<=256)t.Str_uc_params||(t.Str_uc_params={}),t.Str_uc_params.userdefine_push_args=e.userDefinePushArgs;else throw new y({code:I.INVALID_PARAMETER,message:P({key:x.INVALID_USER_DEFINE_PUSH_ARGS})});En(t)||(this._businessInfo=JSON.stringify(t))}sendCustomMessage(e){var t;(t=this._customMessageManager)==null||t.send(e)}enableInsertableStreams(){return f(this,null,function*(){if(this.singlePC&&!this.singlePC.enableInsertableStreams&&Vi)return this.singlePC.enableInsertableStreams=!0,yield this.singlePC.waitForPeerConnectionConnected(),yield this.singlePC.startReconnection()})}sendSignalMessage(e){var t;return this.signalChannel?(t=this.signalChannel)==null?void 0:t.sendWaitForResponseWithRetry(e):Promise.reject(new y({code:I.INVALID_OPERATION,message:"not join"}))}get enableCodecPipeline(){return this.videoManager.encodePipeline.length>0||this.videoManager.decodePipeline.length>0||this.audioManager.encodePipeline.length>0||this.audioManager.decodePipeline.length>0}get scriptTransformWorker(){var e;return(e=this.singlePC)==null?void 0:e.scriptTransformWorker}switchRoom(e){return f(this,null,function*(){var D,_;if(!this.signalChannel)return;let{roomId:t,strRoomId:r,userSig:s,privateMapKey:n}=e,a=((D=this.scheduleResult.config)==null?void 0:D.autoSubscribeCount)||(e==null?void 0:e.autoSubscribeCount)||1,c=String(this.useStringRoomId?r:t),l=[];for(let S=0;S<a;S++)l.push({audioSsrc:St(),bigVideoSsrc:St(),bigVideoRtxSsrc:St(),auxVideoSsrc:St(),auxVideoRtxSsrc:St()});let h={currRoomId:this.roomId,targetRoomId:c,useStringRoomId:this.useStringRoomId,ability:(_=this.singlePC)==null?void 0:_.clientAbility,userSig:s!=null?s:this.userSig,privateMapKey:n!=null?n:this.privateMapKey,subscribe:l};this.singlePC&&(this.singlePC.autoSubscribedUserMap.clear(),this.singlePC.autoSubscribedSsrcGroups.clear(),this.singlePC.autoSubscribedSsrcGroups.set(c,l)),E.emit(A.SWITCH_ROOM_START,{room:this});let u=yield this.signalChannel.sendWaitForResponse({command:Y.SWITCH_ROOM,responseCommand:F.SEND_SWITCH_ROOM_RES,data:h}),{code:m,message:g}=u.data;if(m===0){let S=this.roomId;this.roomId=this.useStringRoomId?r:String(t),gr(s)||(this.userSig=s),gr(n)||(this.privateMapKey=n),E.emit(A.SWITCH_ROOM_SUCCESS,{room:this,currentRoomId:S,targetRoomId:c})}else{this._log.error(`switch room failed. result: ${m} error: ${g}`),this.singlePC&&this.singlePC.autoSubscribedSsrcGroups.clear();let S=new y({code:I.SWITCH_ROOM_FAILED,extraCode:m,message:g});throw E.emit(A.SWITCH_ROOM_FAILED,{room:this,error:S}),S}})}isSwitchRoomSupported(){var t;let e="unable to use switchRoom API, fallback to exitRoom and enterRoom.";return((t=this.scheduleResult.config)==null?void 0:t.switchRoom)!==!0?(this._log.warn(`${e} Reason: this sdkAppId is not supported, please contact us [https://trtc.io/contact] to enable it.`),!1):this.scene!=="live"?(this._log.warn(`${e} Reason: the scene is not 'live'.`),!1):this.role!=="audience"?(this._log.warn(`${e} Reason: the role is not 'audience'.`),!1):this.singlePC?!0:(this._log.warn(`${e} Reason: is not using single peerConnection.`),!1)}};v([Te(["left",H.INIT],"joined"),ft({settings:{retries:1,timeout:0},onRetrying(e){this._log.warn(`join retry ${e}`)},onRetryFailed(e){this._log.error("join failed",e)},onError(e,t){this._isUsingCachedSchedule&&!this.isDestroyed?(this._log.warn("is using cached schedule, retry join"),Wt(!0),this.reset(),t()):this.signalChannel&&this.signalChannel.isConnected&&this.signalChannel.keepAlive?(this._log.warn("is using keepAlive ws, retry join"),this.signalChannel.close(),this.reset(),t()):(this.reset(),t())}}),gp()],qt.prototype,"join",1),v([Te("joined","left",{ignoreError:!0,success(){this.reset(!0)}}),Tp(),Pa("leave room"),Hs({fnName:"publish",validateArgs:!1}),Hs({fnName:"unsubscribe",validateArgs:!1})],qt.prototype,"leave",1),v([Ct(),af(),ft({settings:{retries:Ai,timeout:e=>xt(e)},onError(e,t,r){var s;(s=e.message)!=null&&s.includes("timeout")?(this._log.warn("publish timeout"),t()):(this._log.error(`publish failed: ${e}`),r(e),E.emit(A.PUBLISH_FAILED,{room:this}))}})],qt.prototype,"publish",1),v([Hs({fnName:"publish"}),ym("api-call"),Ct(),cf(),et(function(){var e,t;this.localTracks.size===0&&dr()&&((t=(e=this.singlePC)==null?void 0:e.getPeerConnection())==null||t.getSenders().forEach(r=>r.track&&r.replaceTrack(null)))})],qt.prototype,"unpublish",1),v([Ma(e=>{if(e.code!==I.API_CALL_ABORTED)throw e}),$i(e=>e.userId)],qt.prototype,"replaceTrack",1),v([$i((...e)=>e[0].userId),Ua(),Ep(),ft({settings:{retries:Ai,timeout:e=>xt(e)},onError(e,t,r,s){e.message.includes("timeout")?(this._log.warn("subscribe timeout"),t()):(this._log.error(`subscribe failed: ${e}`),r(e),E.emit(A.SUBSCRIBE_FAILED,{room:this,remoteTracks:s}))}})],qt.prototype,"subscribe",1),v([Hs({fnName:"subscribe",callback(...e){this.singlePC||e.forEach(t=>{let r=this.remotePublishedUserMap.get(t.userId);r&&!r.isMainStreamSubscribed&&!r.isAuxStreamSubscribed&&r.close("you unsubscribed")})}}),$i((...e)=>e[0].userId)],qt.prototype,"unsubscribe",1);un.create=un._create.bind(un,qt);var cH=un;export{cH as default};
|
|
142
|
+
}`});u(this,"yTextureRef");u(this,"uTextureRef");u(this,"vTextureRef");u(this,"Y");u(this,"U");u(this,"V");this.useProgram();let r=this.context.ctx;r.pixelStorei(r.PACK_ALIGNMENT,1),r.pixelStorei(r.UNPACK_ALIGNMENT,1),this.setTexBuffer([0,1,1,1,0,0,1,0]),this.yTextureRef=this._initTexture("ySampler",0),this.uTextureRef=this._initTexture("uSampler",1),this.vTextureRef=this._initTexture("vSampler",2),this._canvas=e._canvas}_initTexture(e,r){let o=this.context.ctx,s=o.createTexture();return o.bindTexture(o.TEXTURE_2D,s),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MAG_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE),o.bindTexture(o.TEXTURE_2D,null),o.uniform1i(o.getUniformLocation(this.program,e),r),s}render(e){let r=this.context.ctx,o=this.width,s=this.height;return this.useProgram(),r.viewport(0,0,o,s),r.activeTexture(r.TEXTURE0),r.bindTexture(r.TEXTURE_2D,this.yTextureRef),r.texSubImage2D(r.TEXTURE_2D,0,0,0,o,s,r.LUMINANCE,r.UNSIGNED_BYTE,this.Y),r.activeTexture(r.TEXTURE1),r.bindTexture(r.TEXTURE_2D,this.uTextureRef),r.texSubImage2D(r.TEXTURE_2D,0,0,0,o/2,s/2,r.LUMINANCE,r.UNSIGNED_BYTE,this.U),r.activeTexture(r.TEXTURE2),r.bindTexture(r.TEXTURE_2D,this.vTextureRef),r.texSubImage2D(r.TEXTURE_2D,0,0,0,o/2,s/2,r.LUMINANCE,r.UNSIGNED_BYTE,this.V),this.draw(),!0}resize(e,r){super.resize(e,r);let o=this.context.ctx;o.activeTexture(o.TEXTURE0),o.bindTexture(o.TEXTURE_2D,this.yTextureRef),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e,r,0,o.LUMINANCE,o.UNSIGNED_BYTE,null),o.activeTexture(o.TEXTURE1),o.bindTexture(o.TEXTURE_2D,this.uTextureRef),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e/2,r/2,0,o.LUMINANCE,o.UNSIGNED_BYTE,null),o.activeTexture(o.TEXTURE2),o.bindTexture(o.TEXTURE_2D,this.vTextureRef),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e/2,r/2,0,o.LUMINANCE,o.UNSIGNED_BYTE,null)}};var Ci=[i=>{i.codec="avc1.42e01f"},i=>{delete i.hardwareAcceleration}],kg=(i,t)=>{switch(i){case"webCodecs":return t==="videoFrame"?514705:514706;case"wasm":return t==="webgl"?514707:t==="videoFrame"?514708:514709}throw new Error("decoder type not supported")};function bS(i){return i[0]===0&&i[1]===0&&i[2]===0&&i[3]===1}var RS=0,Au=class{constructor(t){u(this,"id",RS++);u(this,"trackDoneOB");u(this,"startOB");u(this,"stopOB");u(this,"decoder");u(this,"videoContext");u(this,"gop",0);u(this,"gop_helper",0);u(this,"waitFirstKeyFrame",!0);u(this,"startTimestamp",0);u(this,"startTime",0);u(this,"startPerformanceTime",0);u(this,"inputFrameCount",0);u(this,"decodedFrameCount",0);u(this,"decodeFrameCount",0);u(this,"downgradeLevel",0);u(this,"lastDowngradeTime",0);u(this,"lastFrameDiff",0);u(this,"lastDecodeFrameTimestamp",0);u(this,"config");u(this,"gop_before_configure",[]);u(this,"videoElement");u(this,"type","wasm");u(this,"goodType");u(this,"renderer","2d");u(this,"wasmOption");u(this,"createDecoder");u(this,"_decodeSink");u(this,"isReported",!1);u(this,"track");u(this,"stateChangeOB");u(this,"failedReason");let{track:e,createDecoder:r}=t;if(this.stateChangeOB=At(),this.track=e,this.createDecoder=r,this.wasmOption={yuvMode:t.renderer==="webgl",wasmPath:t.wasmPath,workerMode:t.workerMode,canvas:t.canvas},this.config=t.config,this.videoElement=t.videoElement,this.renderer=t.renderer,this.trackDoneOB=Ce(e.availableState,de.OFF),this.stopOB=At(),t.type==="auto"){switch(t.fallback){case"wasm":this.type="wasm",this.renderer="webgl";break;case"wasm_2d":this.type="wasm",this.renderer="2d";break;case"wasm_video":this.type="wasm",this.renderer="videoFrame";break;default:this.type="webCodecs"}this.wasmOption.yuvMode=this.renderer==="webgl"}else this.type=t.type;this.changeRenderer(this.renderer),be(this.stateChangeOB,Jm((o,s)=>(o!==s&&e.onDecodeDowngradeStateChanged({type:this.type,renderer:this.renderer,reason:this.failedReason,prevState:o,state:s}),s),"INITIALIZED"),Ye(this.stopOB),Le()),this.start()}start(t=0){this.waitFirstKeyFrame=!0,this.stateChangeOB.next("STARTING");let e=be(this.pipe(this.track),Ye(this.stopOB),Ii());be(e,Le(()=>{this.track.stat.framesDecoded++},r=>{if(this.track.log.error(`${this.id} play failed: ${r} retryCount: ${t}`),Q.addFailedEvent({key:kg(this.type,this.renderer),error:r}),t>4)this.failedReason=r,this.stateChangeOB.next("FAILED");else{if(this.goodType){this.start(t);return}switch(this.type){case"webCodecs":this.type="wasm",this.changeRenderer("webgl");break;case"wasm":switch(this.renderer){case"webgl":this.changeRenderer("videoFrame");break}}this.start(t+1)}},()=>{this.track.log.warn(`${this.id} decoderOB completed`),Q.addSuccessEvent({key:kg(this.type,this.renderer)}),Q.addSuccessEvent({key:514704})})),be(e,Nr(1),Le(()=>{this.track.player.handlePlaying("canvas"),this.goodType=this.type,this.stateChangeOB.next("STARTED")}))}mock(t){this._decodeSink?this._decodeSink.error(t):this.start()}close(t){this.stopOB.next(t)}changeRenderer(t){this.renderer=t,this.renderer==="videoFrame"&&!ql()&&(this.renderer="2d"),this.wasmOption.yuvMode=this.renderer==="webgl"}decode(t,e=!1){var c,l;if(this.failedReason)return;this.inputFrameCount++;let r=new Uint8Array(t.data);if(!bS(r)||r.length<5)return this.stateChangeOB.next("FAILED"),this.close(`not h26x frame ${r.subarray(0,5)}`),t;let o=r[4]&31,s=!1;switch(o){case 5:case 7:s=!0;break}if(((c=this.decoder)==null?void 0:c.state)!=="configured")return this.track.log.debug(`not configured ${this.inputFrameCount}`),s&&(this.gop_before_configure=[]),this.gop_before_configure.push({data:t.data,timestamp:t.timestamp,type:t.type}),t;this.gop_before_configure.length>0&&!e&&(this.gop_before_configure.forEach(m=>this.decode(m,!0)),this.gop_before_configure=[]);let{timestamp:n}=t;if(s?(this.gop=this.gop_helper,this.gop_helper=0):this.gop_helper++,this.decoder){if(this.waitFirstKeyFrame)if(s)this.waitFirstKeyFrame=!1,this.startTimestamp=n,this.startTime=Date.now(),this.startPerformanceTime=Ie();else{this.track.log.debug(`wait first key frame ${this.inputFrameCount} ${r.subarray(0,5).join(" ")}`);return}switch(this.downgradeLevel){case 0:break;case 1:break;case 2:if(this.gop_helper>this.gop>>1)return;break;case 3:if(this.gop_helper>0)return;break;default:return}(this.decodeFrameCount<10||this.decodeFrameCount%500===0)&&this.track.log.debug(`decode ${this.decodeFrameCount} gop: ${this.gop} ${n} ${(l=t.getMetadata)==null?void 0:l.call(t).rtpTimestamp}`),this.decodeFrameCount++,this.lastDecodeFrameTimestamp=n,this.decoder.decode({data:t.data,type:t.type,timestamp:this.lastDecodeFrameTimestamp});return}return t}checkDowngradeByFrameDiff(){let t=this.downgradeLevel,e=this.decodeFrameCount-this.decodedFrameCount;e>this.lastFrameDiff?(this.downgradeLevel++,this.downgradeLevel>4&&(this.downgradeLevel=4)):e<=this.lastFrameDiff&&this.downgradeLevel>0&&this.downgradeLevel--,this.downgradeLevel!==t&&this.track.log.debug(`downgrade level ${t} to ${this.downgradeLevel} ${this.decodeFrameCount} frameDiff: ${e}, lastFrameDiff: ${this.lastFrameDiff}`),this.lastFrameDiff=e,this.lastDowngradeTime=Date.now()}checkDowngradeByTimestampDiff(t){let e=this.downgradeLevel;this.lastDecodeFrameTimestamp-t>9e4?(this.downgradeLevel++,this.downgradeLevel>4&&(this.downgradeLevel=4)):this.downgradeLevel>0&&this.downgradeLevel--,this.downgradeLevel!==e&&this.track.log.debug(`downgrade level ${e} to ${this.downgradeLevel}`)}pipe(t){return e=>A(this,null,function*(){this._decodeSink=e;let r,o=t.mediaTrack;e.defer(()=>{var c;o&&(t.player.setCanvas(),t.setInputMediaStreamTrack(o)),r==null||r.close(),(c=this.videoContext)==null||c.destroy(),delete this._decodeSink});let{renderer:s,type:n}=this;t.log.info(`decoder type: ${this.type} renderer: ${this.renderer}`);try{switch(n){case"wasm":r=this.createDecoder(n,this.wasmOption);break;case"webCodecs":for(let l=0;l<=Ci.length;l++){let{supported:m}=yield VideoDecoder.isConfigSupported(this.config);if(m)break;if(l===Ci.length){e.error(3);return}Ci[l](this.config)}r=this.createDecoder(n);break;default:throw new Error("not supported yet")}let c=0;if(r.on("videoFrame",l=>{this.decodedFrameCount++,c++,(c<=10||c%500===0)&&t.log.debug(`frame ${c} ${this.decodedFrameCount}/${this.decodeFrameCount} decoded ${l.timestamp}`),Date.now()-this.lastDowngradeTime>5e3&&(this.type==="webCodecs"?this.checkDowngradeByFrameDiff():this.type==="wasm"&&this.checkDowngradeByTimestampDiff(l.timestamp)),e.next(l)}),r.on("error",l=>{t.log.error(l),e.error(n==="webCodecs"?4:8)}),yield r.initialize(this.videoElement),!this._decodeSink)return;if(r.configure(this.config),n==="wasm"&&s==="webgl"){this.videoContext=new Tt({frameRate:15,logger:t.log,name:t.userId}),this.videoContext.create(),this.videoContext.on(Tt.UNAVAILABLE,m=>{t.log.error(m),e.error(7)});let l=new Su(this.videoContext);r.on("videoCodecInfo",m=>l.resize(m.width,m.height)),r.on("videoFrame",m=>{({y:l.Y,u:l.U,v:l.V}=m),this.downgradeLevel===1?this.decodedFrameCount%2===0&&l.render(this.decodedFrameCount):l.render(this.decodedFrameCount)}),t.source=l,t.player.setCanvas(this.videoContext._canvas,2)}else if(s==="videoFrame"){t.player.setCanvas();let l=new MediaStreamTrackGenerator({kind:"video"}),m=l.writable.getWriter();t.setInputMediaStreamTrack(l),r.on("videoFrame",E=>m.write(E))}else{this.videoContext=new Ft({frameRate:15,logger:t.log,name:t.userId}),this.videoContext.create({alpha:!1});let l=this.videoContext.createVideoImageSource();r.on("videoFrame",E=>{try{l.image=E,l.update()}catch(g){delete this.goodType,t.log.error(g),e.error(11)}});let m=new rs(this.videoContext,{name:"remotePlayer",logger:t.log});l.connect(m),t.source=l,t.player.setCanvas(this.videoContext._canvas,2)}this.decoder=r}catch(c){t.log.error(c),e.error(n==="webCodecs"?2:6)}})}};var Ba=class extends Lg.EventEmitter{constructor(e){super();this.room=e;u(this,"videoContext");u(this,"_glVideoContext");u(this,"_2dVideoContext");u(this,"destination");u(this,"smallVideoContext");u(this,"smallDestination");u(this,"smallTrackSource");u(this,"smallImageSource");u(this,"_isMirror",!1);u(this,"_rotation",0);u(this,"cameraTrack");u(this,"cameraNode");u(this,"transformNode");u(this,"mixNode");u(this,"screenTrack");u(this,"screenNode");u(this,"selfModel",!1);u(this,"blurRadius",3);u(this,"arTrack");u(this,"_enableFaceCentering",!1);u(this,"Wasm");u(this,"waterMarkNode");u(this,"_waterMarkOption");u(this,"watermarkImageList",[]);u(this,"_beautyParams");u(this,"isUsingArTrack",!1);u(this,"_isMixScreen",!1);u(this,"_mixScreenOption",{});u(this,"_virtualBackground");u(this,"_virtualBackgroundAbortCallback");u(this,"virtualBackgroundInstance");u(this,"_bgAssetPath");u(this,"log",$.createLogger({id:"vm"}));u(this,"_faceDetector");u(this,"_mat4");u(this,"_checkId",0);u(this,"_use2d",!1);u(this,"_autoSwitchRenderMode",!0);u(this,"_selfieSegmentation");u(this,"encodePipeline",[]);u(this,"decodePipeline",[]);e&&(this.log.setUserId(e.userId),this.log.setSdkAppId(e.sdkAppId)),this.smallVideoContext=new Ft({frameRate:15,logger:this.log,name:"s"}),this.enablePrintDetail()}get smallMode(){var e;return((e=this.room)==null?void 0:e.smallMode)||"canvas"}get _hasVirtualBg(){return!!this._virtualBackground}get _hasWaterMark(){return this.watermarkImageList.length>0}get _isRotate(){return this._rotation!==0}get _isTransform(){return this._isMirror||this._isRotate}get renderMode(){return this._autoSwitchRenderMode?"auto":this._use2d?"2d":"webgl"}set renderMode(e){if(this._autoSwitchRenderMode=e==="auto",this._autoSwitchRenderMode)return;let r=e==="2d";this._use2d!==r&&(this._use2d=r,this.clear(),this.videoContext=this._use2d?this.get2dVideoContext():this.getGlVideoContext(),this.update())}get cameraResolution(){var o;let{width:e,height:r}=((o=this.cameraTrack)==null?void 0:o.settings)||{};return oi(this._rotation)?{width:r,height:e}:{width:e,height:r}}get2dVideoContext(){return this._2dVideoContext?this._2dVideoContext.destroy():this._2dVideoContext=new Ft({frameRate:15,logger:this.log,name:"m"}),this._2dVideoContext.create({alpha:this._hasWaterMark||this._hasVirtualBg}),this._2dVideoContext}getGlVideoContext(){if(!this._glVideoContext)this._glVideoContext=new Tt({frameRate:15,logger:this.log,name:"m"});else if(this._glVideoContext.available)return this._glVideoContext;return this.initializeGlVideoContext(),this._glVideoContext}initializeGlVideoContext(){try{this._glVideoContext.create(),this._glVideoContext.on(Tt.UNAVAILABLE,e=>{var r;this.emit("error",e),this.log.warn("video context unavailable",e),(r=this._virtualBackgroundAbortCallback)==null||r.call(this,e),this.update().catch(o=>{this.log.error(o)})})}catch(e){this.emit("error",e)}}enablePrintDetail(e=2e3){this._checkId=vt.run("interval",()=>{this.destination&&this.log.debug(this.destination.getInfo())},{delay:e})}destroy(){var e,r;(e=this._2dVideoContext)==null||e.destroy(),(r=this._glVideoContext)==null||r.destroy(),this.smallVideoContext.destroy(),vt.clearTask(this._checkId)}get needAlpha(){return this._hasWaterMark||this._hasVirtualBg}get active(){return(Xi||this._isMixScreen||this._isTransform||this._hasWaterMark||this._hasVirtualBg||this._beautyParams)&&this.checkOrCreateVideoContext()}sendCreateResult(e="videoCtxGl",r){let o=e==="videoCtxGl"?512700:512701;r?Q.addFailedEvent({key:o,error:r}):Q.addSuccessEvent({key:o})}checkOrCreateVideoContext(){let e=this._use2d;if(this._autoSwitchRenderMode&&(this._use2d=!this._hasVirtualBg),this.videoContext)if(this.videoContext.available){let r=!this.videoContext.hasAlpha&&this.needAlpha;if(this._autoSwitchRenderMode&&e===this._hasVirtualBg)this.clear();else if(r)if(this._use2d)this.clear();else return!0;else return!0}else{if(this._glVideoContext=new Tt({frameRate:15,logger:this.log,name:"m"}),this.initializeGlVideoContext(),this._glVideoContext.available)return this.videoContext=this._glVideoContext,this.videoContext.available;this.log.warn("webgl is still not available"),this.clear(),this._use2d=!0}return this.videoContext=this._use2d?this.get2dVideoContext():this.getGlVideoContext(),this.videoContext.available}get smallTrack(){var e;return(e=this.smallDestination)==null?void 0:e.videoTrack}get hasSmall(){return!!this.smallTrack}get initialTrack(){var e;return(e=this.cameraTrack)==null?void 0:e.mediaTrack}initVirtualBackground(e,r,o){return this._selfieSegmentation=e,this._faceDetector=r,this._mat4=o,this._selfieSegmentation.changeModel()}setSmallVideo(e,r){if(this.smallMode!=="api")if(e){if(!this.smallVideoContext.available){if(this.smallVideoContext.create({alpha:!1}),!this.smallVideoContext.available)return;this.smallDestination=new Gd(this.smallVideoContext,e,this.log),this.smallVideoContext.on(Tt.UNAVAILABLE,o=>{this.log.warn("small video context lost",o)})}if(this.smallVideoContext.frameRate=e.frameRate,this.smallDestination.resolution=e,r)this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource),this.smallImageSource?this.smallImageSource.image=r:(this.smallImageSource=this.smallVideoContext.createVideoImageSource(r),this.smallImageSource.resize(r.width,r.height),this.smallImageSource.connect(this.smallDestination));else if(this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource)this.smallTrackSource.replaceTrack(this.initialTrack);else{this.smallTrackSource=this.smallVideoContext.createVideoTrackSource(this.initialTrack,"smallTrackSource");let{width:o,height:s}=this.cameraTrack.settings;this.smallTrackSource.resize(o,s),this.smallTrackSource.connect(this.smallDestination)}}else this.smallVideoContext.available&&(this.smallVideoContext.destroy(),delete this.smallDestination,delete this.smallTrackSource,delete this.smallImageSource)}_setMainOutput(e){var r;try{let o=this.cameraTrack,{small:s,player:n}=o;Xi&&n.setCanvas(e);let c=e&&((r=this.destination)==null?void 0:r.videoTrack)||this.initialTrack;return this.isUsingArTrack&&this.arTrack&&(this.emit("output-track-changed"),c=this.arTrack),this._selfieSegmentation&&e&&!this._use2d&&(this._selfieSegmentation._glName||this._selfieSegmentation.setCanvas(e)),this.log.info(`set main output ${c?c.label:"no output track"}`),this.setSmallVideo(s,e),o.setOutputMediaStreamTrack(c)}catch(o){this.log.error("set main output failed",o)}}update(e=!1){return A(this,null,function*(){var s;if(!this.cameraTrack)return;if(!this.initialTrack)return this.updateWithoutCamera();if(!this.active)return this.cameraNode&&this.clear(),this._setMainOutput();let{settings:r,profile:o}=this.cameraTrack;if(this._use2d||!this._virtualBackground&&!this._beautyParams)this.destination||(this.destination=this.videoContext.createVideoTrackDestination({name:"mainDestination2d",logger:this.log})),Jt===16?this.initialTrack instanceof CanvasCaptureMediaStreamTrack?(this.cameraNode&&(this.cameraNode instanceof Ai?(this.cameraNode.close(),delete this.cameraNode):this.cameraNode.image=this.initialTrack.canvas),this.cameraNode||(this.cameraNode=this.videoContext.createVideoImageSource(this.initialTrack.canvas,{name:"cameraCanvasSource",logger:this.log}))):(this.cameraNode&&(this.cameraNode instanceof Ai?this.cameraNode.replaceTrack(this.initialTrack):(this.cameraNode.close(),delete this.cameraNode)),this.cameraNode||(this.cameraNode=this.videoContext.createVideoTrackSource(this.initialTrack,"cameraTrackSource"))):this.cameraNode?this.cameraNode.replaceTrack(this.initialTrack):this.cameraNode=this.videoContext.createVideoTrackSource(this.initialTrack,"cameraNodeSource"),this.cameraNode.resize(r.width,r.height);else if(e&&this.cameraNode&&this.destination)this.cameraNode.replaceTrack(this.initialTrack);else{this.cameraNode&&this.cameraNode.close(),this.destination?this.destination.disableCheckMute():this.destination=new Wd(this.videoContext,{name:"mainDestination",logger:this.log});let{width:n,height:c}=this.cameraResolution,l=yield this.getWatermarkImage(n,c);this._waterMarkOption={x:0,y:0,width:l.width,height:l.height,image:l},this.cameraNode=new Iu(this.videoContext,{input:this.initialTrack,width:n,height:c,mirror:this._isMirror,rotation:this._rotation,bg:this._virtualBackground,selfModel:this.selfModel,waterMark:this._waterMarkOption,beautyParams:this._beautyParams,useTflite:!0,blurRadius:this.blurRadius,assetPath:this._bgAssetPath,selfieSegmentation:this._selfieSegmentation,Wasm:this.Wasm,enableFaceCentering:this._enableFaceCentering,faceDetector:this._faceDetector,mat4:this._mat4}),this.cameraNode.connect(this.destination),this.destination.enableCheckMute()}if(this.videoContext.frameRate=o.frameRate,this._use2d){let n=this.cameraNode;if(n.disconnect(),this._isTransform&&(this.transformNode?(this.transformNode.mirror=this._isMirror,this.transformNode.rotation=this._rotation):this.transformNode=new _u(this.videoContext,this.log,this._isMirror,this._rotation),n=n.connect(this.transformNode),n.disconnect(),oi(this._rotation)&&this.transformNode.resize(r.height,r.width),this.log.info(`start ${this._isMirror?"mirror":""}${this._isRotate?`, rotate ${this.rotation}`:""}`)),this.mixNode&&this.mixNode.close(),delete this.mixNode,this._isMixScreen||this._hasWaterMark){if(this.mixNode=new $a(this.videoContext,this.log),this.mixNode.resize(r.width,r.height),n.connect(this.mixNode,{zIndex:1}),this._hasWaterMark&&!this.waterMarkNode&&this._waterMarkOption)this.waterMarkNode=this.videoContext.createVideoImageSource(this._waterMarkOption.image,{autoResize:!1,logger:this.log}),this.waterMarkNode.resize(this._waterMarkOption.width,this._waterMarkOption.height),this.waterMarkNode.x=this._waterMarkOption.x,this.waterMarkNode.y=this._waterMarkOption.y;else if(this.waterMarkNode){let{width:l,height:m}=this.cameraResolution;this.waterMarkNode.image=yield this.getWatermarkImage(l,m),l&&m&&this.waterMarkNode.resize(l,m)}(s=this.waterMarkNode)==null||s.connect(this.mixNode,{zIndex:2}),this._isMixScreen&&this.screenTrack&&(this.screenNode||(this.screenNode=this.videoContext.createVideoTrackSource(this.screenTrack.mediaTrack,"screenNodeSource"),this.screenNode.resize(this.screenTrack.settings.width,this.screenTrack.settings.height)),this.screenNode.shouldUpdate=!1,this.screenNode.connect(this.mixNode,{zIndex:0})),this.changeMixLayout(this._mixScreenOption),n=this.mixNode,this.log.info("start mix",`${this.mixNode.width}x${this.mixNode.height}`)}n.connect(this.destination)}return this.log.info(`update ${this._use2d?"2d":"webgl"}`),this._setMainOutput(this.videoContext._canvas)})}clearLastFrame(){var e;this.destination&&((e=this.destination.ctx2d)==null||e.clearRect(0,0,this.destination.width,this.destination.height))}updateWithoutCamera(){return A(this,null,function*(){var o;if(!this._isMixScreen)return;if(!this.screenTrack||!this.screenTrack.mediaTrack){this.clearLastFrame();return}if(this.checkOrCreateVideoContext(),!this._use2d)return;this.destination||(this.destination=this.videoContext.createVideoTrackDestination({name:"mainDestination2d",logger:this.log}));let{settings:e,profile:r}=this.screenTrack;return this.videoContext.frameRate=((o=this.cameraTrack)==null?void 0:o.profile.frameRate)||r.frameRate,this.mixNode&&this.mixNode.close(),this.mixNode=new $a(this.videoContext,this.log),this.screenNode=this.videoContext.createVideoTrackSource(this.screenTrack.mediaTrack,"screenNodeSource"),this.screenNode.shouldUpdate=!0,this.screenNode.resize(e.width,e.height),this.screenNode.connect(this.mixNode,{zIndex:0}),this.changeMixLayout(this._mixScreenOption),this.mixNode.connect(this.destination),this.log.info("mix without camera"),this._setMainOutput(this.videoContext._canvas)})}changeInput(e){var r,o,s,n;if(e instanceof ro)return this.log.info("change screen input",(r=e.mediaTrack)==null?void 0:r.label),this.setScreenTrack(e);if(e instanceof Cr)return this.log.info("change video input",(o=e.mediaTrack)==null?void 0:o.label),this.setCameraTrack(e);if(e instanceof no){this.log.info("change remote input",(s=e.mediaTrack)==null?void 0:s.label);let c=e.mediaTrack;return e.setOutputMediaStreamTrack(c)}this.log.warn("change unknown input",(n=e.mediaTrack)==null?void 0:n.label)}removeInput(e){var r;e instanceof ro?((r=this.screenNode)==null||r.close(),delete this.screenNode,delete this.screenTrack,this.update()):e instanceof Cr?this._isMixScreen?(delete this.cameraNode,this.cameraTrack._inputTrack=null,this.update()):(this.clear(),delete this.cameraTrack,this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource)):e instanceof no&&e.source&&e.source.context.destroy()}setCameraTrack(e){return this.cameraTrack=e,this.update(!0)}setScreenTrack(e){return A(this,null,function*(){return this.screenTrack=e,this._isMixScreen&&(this.screenNode?this.screenNode.replaceTrack(e.mediaTrack):yield this.update()),e.setOutputMediaStreamTrack(e.mediaTrack)})}getWatermarkImage(e,r){return A(this,null,function*(){let o=document.createElement("canvas");r&&e&&(o.height=r,o.width=e);let s=o.getContext("2d");if(!s)throw new ue({code:J.NOT_SUPPORTED,message:"Make image failed because of canvas context is null"});return this.watermarkImageList.sort((n,c)=>n.zIndex-c.zIndex),this.watermarkImageList.forEach(({image:n,x:c,y:l,width:m,height:E})=>{s.drawImage(n,c,l,m,E)}),Ms(o.toDataURL())})}pushWaterMarkImageList(e){let{type:r}=e;this.watermarkImageList.some(s=>s.imageUrl===e.imageUrl&&s.height===e.height&&s.width===e.width&&s.x===e.x&&s.y===e.y&&s.type===e.type&&s.zIndex===e.zIndex)||((r==="mute"||r==="watermark")&&(this.watermarkImageList=this.watermarkImageList.filter(s=>s.type!==r)),this.watermarkImageList.push(e))}setBeautyParams(e){return A(this,null,function*(){this._beautyParams=e,this.update()})}stopBeauty(){return A(this,null,function*(){this._beautyParams=void 0,this.update()})}setVideoMixer(e){this._isMixScreen=!0,this._mixScreenOption=e,this.update()}updateVideoMixer(e){this.changeMixLayout(e),ur(this._mixScreenOption,e)}changeMixLayout(e){if(!this._isMixScreen||!this.mixNode)return;let{camera:r,screen:o,container:s}=e;if(this.cameraNode&&r){let{width:n,height:c}=this.cameraNode,{x:l,y:m,width:E,height:g}=r;E&&!g?g=E*c/n:!E&&g&&(E=g*n/c),this.mixNode.changeInputLayout(this.cameraNode,{x:l,y:m,width:E,height:g})}if(this.screenNode&&o){let{width:n,height:c}=this.screenNode,{x:l,y:m,width:E,height:g}=o;E&&!g?g=E*c/n:!E&&g&&(E=g*n/c),this.mixNode.changeInputLayout(this.screenNode,{x:l,y:m,width:E,height:g})}s&&this.mixNode.resize(s.width,s.height)}deleteVideoMixer(){var e;this._isMixScreen=!1,this._mixScreenOption={},(e=this.screenNode)==null||e.close(),delete this.screenNode,this.update(),this.log.info("delete screenMixer")}setWatermark(e){return A(this,null,function*(){let r;try{r=yield Ms((e==null?void 0:e.imageElement)||e.imageUrl)}catch(g){throw new ue({code:J.INVALID_PARAMETER,message:`load image failed, url: ${e.imageUrl}`})}let{x:o=0,y:s=0,width:n=r.width,height:c=r.height,type:l="watermark",zIndex:m=2}=e;this.watermarkImageList.some(g=>g.type===l)?(this.watermarkImageList=this.watermarkImageList.filter(g=>g.type!==l),this.pushWaterMarkImageList({x:o,y:s,width:n,height:c,image:r,zIndex:m,type:l,imageUrl:e.imageUrl}),r=yield this.getWatermarkImage(this.cameraResolution.width,this.cameraResolution.height),this._waterMarkOption={x:0,y:0,width:r.width,height:r.height,image:r},this.waterMarkNode?(this.waterMarkNode.x=0,this.waterMarkNode.y=0,this.waterMarkNode.resize(r.width,r.height),this.waterMarkNode.image=r):this.update()):(this.pushWaterMarkImageList({x:o,y:s,width:n,height:c,image:r,zIndex:m,type:l,imageUrl:e.imageUrl}),yield this.freshWatermark()),this.log.info("set watermark",JSON.stringify(this.watermarkImageList,(g,_)=>g==="imageUrl"?void 0:_))})}deleteWatermark(e="watermark"){return A(this,null,function*(){this.watermarkImageList=this.watermarkImageList.filter(r=>r.type!==e),this.log.info("delete watermark",e,JSON.stringify(this.watermarkImageList,(r,o)=>r==="imageUrl"?void 0:o)),yield this.freshWatermark()})}freshWatermark(){return A(this,null,function*(){var s;(s=this.waterMarkNode)==null||s.close(),delete this.waterMarkNode,delete this._waterMarkOption;let{width:e,height:r}=this.cameraResolution,o=yield this.getWatermarkImage(e,r);this._waterMarkOption={x:0,y:0,width:o.width,height:o.height,image:o},this.update()})}setVirtualBackground(e){return A(this,null,function*(){var r;if(!e)delete this._virtualBackground,delete this._virtualBackgroundAbortCallback;else{if(e.onAbort&&(this._virtualBackgroundAbortCallback=e.onAbort),this._use2d&&!this._autoSwitchRenderMode)return Promise.reject(new Error("not support virtual background in 2d mode"));this._bgAssetPath=e.assetPath,e.type==="image"?this._virtualBackground=yield Ms(e.imageUrl):(this.blurRadius=e.blurLevel||this.blurRadius||3,this._virtualBackground=e.type),this._enableFaceCentering=(r=e.enableFaceCentering)!=null?r:this._enableFaceCentering}if(this.log.info(`${this._virtualBackground?"start":"stop"} virtual background, ${(e==null?void 0:e.type)||""}, ${this.blurRadius||""}`),yield this.update(),this._virtualBackground&&!this._glVideoContext.available)throw new ue({code:J.INVALID_OPERATION,message:`webgl context create failed, ${this._glVideoContext.error}`})})}get mixScreen(){return this._isMixScreen}set mixScreen(e){var r;this._isMixScreen=e,this._isMixScreen||((r=this.screenNode)==null||r.close(),delete this.screenNode),this.update()}set mirror(e){var r;this._isMirror!==e&&(this._isMirror=e,this._isTransform||((r=this.transformNode)==null||r.close(),delete this.transformNode),this.update())}get mirror(){return this._isMirror}set rotation(e){var r;this._rotation!==e&&(this._rotation=e,this._isTransform||((r=this.transformNode)==null||r.close(),delete this.transformNode),this.update())}get rotation(){return this._rotation}enableAr(e){this.arTrack=e,this.isUsingArTrack=!0,this.update()}updateAr(){return A(this,null,function*(){var e;(e=this.cameraTrack)!=null&&e.mediaTrack&&(yield this.virtualBackgroundInstance.ar.updateInputTrack(this.cameraTrack.mediaTrack.clone()))})}disableAr(){var e;this.isUsingArTrack=!1,(e=this.arTrack)==null||e.stop(),this.arTrack=void 0,this.update()}createDecodeContext(e){return new Au(e)}clear(){var e;(e=this.videoContext)==null||e.disconnect(),delete this.destination,delete this.cameraNode,delete this.transformNode,delete this.screenNode,delete this.waterMarkNode}addEncodeProcessor({processor:e,type:r}){var o;this.encodePipeline.includes(e)||(this.encodePipeline[r]=e,(o=this.room)==null||o.enableInsertableStreams())}addDecodeProcessor({processor:e,type:r}){var o;this.decodePipeline.includes(e)||(this.decodePipeline[r]=e,(o=this.room)==null||o.enableInsertableStreams())}removeEncodeProcessor({type:e}){this.encodePipeline[e]=void 0}removeDecodeProcessor({type:e}){this.decodePipeline[e]=void 0}};Z([bf(function(e){this.log.error("update failed",e)})],Ba.prototype,"update",1);var vS=0;var yu=class extends de{constructor(e){super("room");u(this,"seq",++vS);u(this,"sdkAppId");u(this,"userId");u(this,"userSig");u(this,"privateMapKey");u(this,"latencyLevel");u(this,"tinyId");u(this,"scene");u(this,"roomId");u(this,"useStringRoomId");u(this,"role","anchor");u(this,"joinParams",null);u(this,"localTracks",new Set);u(this,"enableAutoPlayDialog",!0);u(this,"autoReceiveAudio",!0);u(this,"autoReceiveVideo",!0);u(this,"proxy_ws");u(this,"proxy_wt");u(this,"proxy_unified");u(this,"checkSystemResult",{result:!0,detail:{isBrowserSupported:!0,isWebRTCSupported:!0,isWebCodecsSupported:!0,isMediaDevicesSupported:!0,isScreenShareSupported:!0,isSmallStreamSupported:!0,isH264EncodeSupported:!0,isVp8EncodeSupported:!0,isH264DecodeSupported:!0,isVp8DecodeSupported:!0}});u(this,"keyPointManager");u(this,"audioManager");u(this,"videoManager");u(this,"callDurationCalculator");u(this,"badCaseDetector");u(this,"scheduleResult",{domains:null,iceServers:null,iceTransportPolicy:null,trtcAutoConf:null});u(this,"videoDecodeFallbackType");u(this,"smallMode","canvas");u(this,"_isUsingCachedSchedule",!1);u(this,"_log",$.createLogger({id:`r${this.seq}`}));u(this,"_joinedTimestamp",0);u(this,"_sdkType");u(this,"heartbeatReport");u(this,"quality");u(this,"enableSEI");u(this,"isDestroyed",!1);this.useStringRoomId=!!e.useStringRoomId,st(e.autoReceiveAudio)&&(this.autoReceiveAudio=e.autoReceiveAudio),st(e.autoReceiveVideo)&&(this.autoReceiveVideo=e.autoReceiveVideo),st(e.enableAutoPlayDialog)&&(this.enableAutoPlayDialog=e.enableAutoPlayDialog),this._sdkType=e.sdkType,this.keyPointManager=new Og({room:this,frameWorkType:e.frameWorkType,component:e.component,language:e.language}),this.callDurationCalculator=new xg({room:this}),this.badCaseDetector=new Pg({room:this}),this.audioManager=new Nd(this),this.videoManager=new Ba(this)}get scriptTransformWorker(){}get isMainStreamPublished(){for(let e of this.localTracks)if(e.mediaType&4)return!0;return!1}get isAuxStreamPublished(){for(let e of this.localTracks)if(e.mediaType&2)return!0;return!1}get hasAuxStream(){for(let e of this.remotePublishedUserMap.values())if(e.muteState.hasAuxiliary)return!0;return this.isAuxStreamPublished}get localMainVideoTrack(){for(let e of this.localTracks)if(e.mediaType&4)return e;return null}get localAuxVideoTrack(){for(let e of this.localTracks)if(e.mediaType&2)return e;return null}getLogger(){return this._log}get isJoining(){return this.state.toString()==="joining"}get isJoined(){return this.state==="joined"}get isLeft(){return this.state==="left"}addTrack(e){return A(this,null,function*(){return this.publish(e)})}removeTrack(e){return A(this,null,function*(){return this.unpublish(e)})}replaceTrack(e){return A(this,null,function*(){})}setEncodedDataProcessingListener(e){throw new Error("Method not implemented.")}enableAIVoice(e){throw new Error("Method not implemented.")}setProxyServer(e){if(we(e))e.startsWith("wss://")?this.proxy_ws=e:e.startsWith("https://")&&(this.proxy_wt=e);else if(Lt(e)){let{websocketProxy:r,webtransportProxy:o,loggerProxy:s,scheduleProxy:n,unifiedProxy:c}=e;this.proxy_ws=r,this.proxy_wt=o,this.proxy_unified=c,c?(Kd([c,c]),Do(`https://${c}`)):(s&&Do(s),n&&Kd(n))}V.once(U.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({sched_domain:qr.main,sched_back_domain:qr.backup,signal_domain:this.proxy_ws||this.proxy_wt||""}))}getRemoteAudioStats(){return A(this,null,function*(){let e={};return this.remotePublishedUserMap.forEach(r=>{e[r.userId]=r.remoteAudioTrack.stat}),e})}getTransportStats(){return A(this,null,function*(){var r;let e={rtt:((r=this.quality)==null?void 0:r.uplinkRTT)||0,downlinksRTT:{}};if(this.quality)for(let o of this.quality.downlinkInfo)e.downlinksRTT[o.userId]=o.rtt;return e})}getRemoteVideoStats(){return A(this,arguments,function*(e="main"){let r={};return this.remotePublishedUserMap.forEach(o=>{let s=e==="auxiliary"?o.remoteAuxiliaryTrack:o.remoteVideoTrack;r[o.userId]=s.stat}),r})}checkDestroy(){if(this.isDestroyed)throw new ue({code:J.INVALID_OPERATION,message:Be({key:$e.CLIENT_DESTROYED,data:{funName:"join"}})})}destroy(){if(this.isJoined)throw this._log.warn(Xt.INVALID_DESTROY),new ue({code:J.INVALID_OPERATION,message:Be({key:$e.INVALID_DESTROY})});this._log.info("destroy room"),this.audioManager.destroy(),this.videoManager.destroy(),this.keyPointManager.destroy(),this.callDurationCalculator.destroy(),this.badCaseDetector.destroy(),this.isDestroyed=!0,V.emit(U.ROOM_DESTROY,{room:this})}schedule(e,r){return A(this,null,function*(){var s,n,c,l;let o=Ie();try{let{isCached:m,result:E,detailCost:g}=yield cp({userId:this.userId,sdkAppId:this.sdkAppId,roomId:this.useStringRoomId?e.strRoomId:e.roomId,useStringRoomId:this.useStringRoomId,version:at,userSig:this.userSig,role:this.scene==="live"?e.role:void 0,frameWorkType:r,latencyLevel:e.latencyLevel});this._isUsingCachedSchedule=m,this._log.info(`schedule cache:${+m} ${dr(E,{keysToExclude:["username","credential"]})}`),m&&V.once(U.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({scheduleCache:1})),this.scheduleResult=q(q({},this.scheduleResult),E),Pe((s=E.config)==null?void 0:s.retryCount)&&Zu(E.config.retryCount),we((n=E.config)==null?void 0:n.loggerDomain)&&Do(E.config.loggerDomain),this.videoDecodeFallbackType=((c=E.config)==null?void 0:c.videoDecodeFallback)||this.videoDecodeFallbackType,this.smallMode=((l=E.config)==null?void 0:l.smallMode)||this.smallMode,V.emit(U.JOIN_SCHEDULE_SUCCESS,{room:this,schedule:this.scheduleResult,detailCost:g}),Q.addSuccessEvent({key:521700,cost:Ie()-o})}catch(m){throw Q.addFailedEvent({key:521700,error:m}),m}})}sendAbilityStatus(e){}enableInsertableStreams(){return Promise.resolve()}switchRoom(e){return Promise.reject()}isSwitchRoomSupported(){return!1}};function Ug(i,t=!1){let e=Object.defineProperties(At(),{postMessage:{value:i.postMessage.bind(i)},port:{get(){return i},set(o){i.onmessage=He,i.onmessageerror=He,i=o,r()}}});function r(){i.onmessage=o=>{o.data?o.ports.length||t?e.next(o):e.next(o.data):(e.complete(),i.close())},i.onmessageerror=o=>{e.error(o),i.close()}}return r(),e}var Cp=class extends fe{constructor(t,e){super(t);let r=new fe(t);r.next=He,e(r)}},vF=Te(Cp,"takeUntilComplete");var wt={useWt:!0,useAINS:!0,useHardDecoder:"prefer-software",useHardEncoder:"prefer-software",unreliable:!1,debug:!1,assetsPath:"",enableUpload:!0},Vg="__INLINE__WORKER__",Fg="__INLINE__WASM__",{debug:$g}=console;wt.debug||(console.debug=()=>{});var CS=!Vg.startsWith("__"),NS=!Fg.startsWith("__");function bu(){let i=Lo(`${wt.assetsPath?`${wt.assetsPath}/`:""}worker.js`);return CS?URL.createObjectURL(new Blob([atob(Vg)],{type:"application/javascript"})):i.startsWith("http")?fetch(i).then(t=>t.blob().then(e=>URL.createObjectURL(e))):i}var Ha;function Ru(){return A(this,null,function*(){let i=wt.assetsPath?`${wt.assetsPath}/`:"";return Ha||(NS?Ha=new TextEncoder().encode(atob(Fg)).buffer:Ha=yield fetch(Lo(`${i}av_processing.wasm`)).then(t=>t.arrayBuffer()),Ha)})}var Np=class{constructor(){u(this,"playPort");u(this,"playPortSent",!1);u(this,"worklet");u(this,"workletPromise")}init(){return this.workletPromise||(this.workletPromise=this._init()),this.workletPromise}_init(){return A(this,null,function*(){let t=ze("player"),e=bu();try{yield t.audioWorklet.addModule(typeof e=="string"?e:yield e),$.info("global audio player worklet addModule success",e)}catch(r){throw $.error("global audio player worklet addModule failed:",r),r}return this.worklet=new AudioWorkletNode(t,"global-audio-player",{processorOptions:{wasm:yield Ru(),flag:wt},numberOfInputs:2}),$.info("global audio player worklet created",t.state),this.worklet.connect(t.destination),this.playPort=this.worklet.port,this.playPort})}playAudio(t){return A(this,null,function*(){this.playPortSent||(this.playPortSent=!0,t(yield this.init()))})}},vu=new Np;var Dp=(()=>{if(typeof self=="undefined")return!1;if(!("top"in self&&self!==top)){if("showOpenFilePicker"in self)return"showOpenFilePicker"}return!1})(),PF=Dp?Promise.resolve().then(function(){return OS}):Promise.resolve().then(function(){return VS});var kF=Dp?Promise.resolve().then(function(){return PS}):Promise.resolve().then(function(){return $S});var DS=Dp?Promise.resolve().then(function(){return LS}):Promise.resolve().then(function(){return HS});function Mp(...i){return A(this,null,function*(){return(yield DS).default(...i)})}var MS=i=>A(void 0,null,function*(){let t=yield i.getFile();return t.handle=i,t}),wS=(...t)=>A(void 0,[...t],function*(i=[{}]){Array.isArray(i)||(i=[i]);let e=[];i.forEach((s,n)=>{e[n]={description:s.description||"Files",accept:{}},s.mimeTypes?s.mimeTypes.map(c=>{e[n].accept[c]=s.extensions||[]}):e[n].accept["*/*"]=s.extensions||[]});let r=yield window.showOpenFilePicker({id:i[0].id,startIn:i[0].startIn,types:e,multiple:i[0].multiple||!1,excludeAcceptAllOption:i[0].excludeAcceptAllOption||!1}),o=yield Promise.all(r.map(MS));return i[0].multiple?o:o[0]}),OS={__proto__:null,default:wS};function Cu(i){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var r=e.done;return Promise.resolve(e.value).then(function(o){return{value:o,done:r}})}return Cu=function(e){this.s=e,this.n=e.next},Cu.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var r=this.s.return;return r===void 0?Promise.resolve({value:e,done:!0}):t(r.apply(this.s,arguments))},throw:function(e){var r=this.s.return;return r===void 0?Promise.reject(e):t(r.apply(this.s,arguments))}},new Cu(i)}var Bg=(o,s,...n)=>A(void 0,[o,s,...n],function*(i,t,e=i.name,r){let c=[],l=[];var m,E=!1,g=!1;try{for(var _,v=function(L){var x,M,B,ee=2;for(typeof Symbol!="undefined"&&(M=Symbol.asyncIterator,B=Symbol.iterator);ee--;){if(M&&(x=L[M])!=null)return x.call(L);if(B&&(x=L[B])!=null)return new Cu(x.call(L));M="@@asyncIterator",B="@@iterator"}throw new TypeError("Object is not async iterable")}(i.values());E=!(_=yield v.next()).done;E=!1){let L=_.value,x=`${e}/${L.name}`;L.kind==="file"?l.push(L.getFile().then(M=>(M.directoryHandle=i,M.handle=L,Object.defineProperty(M,"webkitRelativePath",{configurable:!0,enumerable:!0,get:()=>x})))):L.kind!=="directory"||!t||r&&r(L)||c.push(Bg(L,t,x,r))}}catch(L){g=!0,m=L}finally{try{E&&v.return!=null&&(yield v.return())}finally{if(g)throw m}}return[...(yield Promise.all(c)).flat(),...yield Promise.all(l)]}),xS=(...t)=>A(void 0,[...t],function*(i={}){i.recursive=i.recursive||!1,i.mode=i.mode||"read";let e=yield window.showDirectoryPicker({id:i.id,startIn:i.startIn,mode:i.mode});return Bg(e,i.recursive,void 0,i.skipDirectory)}),PS={__proto__:null,default:xS},kS=(s,...n)=>A(void 0,[s,...n],function*(i,t=[{}],e=null,r=!1,o=null){Array.isArray(t)||(t=[t]),t[0].fileName=t[0].fileName||"Untitled";let c=[],l=null;if(i instanceof Blob&&i.type?l=i.type:i.headers&&i.headers.get("content-type")&&(l=i.headers.get("content-type")),t.forEach((g,_)=>{c[_]={description:g.description||"Files",accept:{}},g.mimeTypes?(_===0&&l&&g.mimeTypes.push(l),g.mimeTypes.map(v=>{c[_].accept[v]=g.extensions||[]})):l?c[_].accept[l]=g.extensions||[]:c[_].accept["*/*"]=g.extensions||[]}),e)try{yield e.getFile()}catch(g){if(e=null,r)throw g}let m=e||(yield window.showSaveFilePicker({suggestedName:t[0].fileName,id:t[0].id,startIn:t[0].startIn,types:c,excludeAcceptAllOption:t[0].excludeAcceptAllOption||!1}));!e&&o&&o(m);let E=yield m.createWritable();return"stream"in i?(yield i.stream().pipeTo(E),m):"body"in i?(yield i.body.pipeTo(E),m):(yield E.write(yield i),yield E.close(),m)}),LS={__proto__:null,default:kS},US=(...t)=>A(void 0,[...t],function*(i=[{}]){return Array.isArray(i)||(i=[i]),new Promise((e,r)=>{let o=document.createElement("input");o.type="file";let s=[...i.map(m=>m.mimeTypes||[]),...i.map(m=>m.extensions||[])].join();o.multiple=i[0].multiple||!1,o.accept=s||"",o.style.display="none",document.body.append(o);let n=m=>{typeof c=="function"&&c(),e(m)},c=i[0].legacySetup&&i[0].legacySetup(n,()=>c(r),o),l=()=>{window.removeEventListener("focus",l),o.remove()};o.addEventListener("click",()=>{window.addEventListener("focus",l)}),o.addEventListener("change",()=>{window.removeEventListener("focus",l),o.remove(),n(o.multiple?Array.from(o.files):o.files[0])}),"showPicker"in HTMLInputElement.prototype?o.showPicker():o.click()})}),VS={__proto__:null,default:US},FS=(...t)=>A(void 0,[...t],function*(i=[{}]){return Array.isArray(i)||(i=[i]),i[0].recursive=i[0].recursive||!1,new Promise((e,r)=>{let o=document.createElement("input");o.type="file",o.webkitdirectory=!0;let s=c=>{typeof n=="function"&&n(),e(c)},n=i[0].legacySetup&&i[0].legacySetup(s,()=>n(r),o);o.addEventListener("change",()=>{let c=Array.from(o.files);i[0].recursive?i[0].recursive&&i[0].skipDirectory&&(c=c.filter(l=>l.webkitRelativePath.split("/").every(m=>!i[0].skipDirectory({name:m,kind:"directory"})))):c=c.filter(l=>l.webkitRelativePath.split("/").length===2),s(c)}),"showPicker"in HTMLInputElement.prototype?o.showPicker():o.click()})}),$S={__proto__:null,default:FS},BS=(e,...r)=>A(void 0,[e,...r],function*(i,t={}){Array.isArray(t)&&(t=t[0]);let o=document.createElement("a"),s=i;"body"in i&&(s=yield function(l,m){return A(this,null,function*(){let E=l.getReader(),g=new ReadableStream({start:L=>function x(){return A(this,null,function*(){return E.read().then(({done:M,value:B})=>{if(!M)return L.enqueue(B),x();L.close()})})}()}),_=new Response(g),v=yield _.blob();return E.releaseLock(),new Blob([v],{type:m})})}(i.body,i.headers.get("content-type"))),o.download=t.fileName||"Untitled",o.href=URL.createObjectURL(yield s);let n=()=>{typeof c=="function"&&c()},c=t.legacySetup&&t.legacySetup(n,()=>c(),o);return o.addEventListener("click",()=>{setTimeout(()=>URL.revokeObjectURL(o.href),3e4),n()}),o.click(),null}),HS={__proto__:null,default:BS};var wp=class{constructor(t){this.name=t;u(this,"ready");u(this,"worker");u(this,"ports");u(this,"ids",1);u(this,"transactions",new Map);u(this,"log");u(this,"addTransaction",t=>(this.transactions.set(++this.ids,t),this.ids))}postMessage(t,e){var r;(r=this.worker)==null||r.postMessage(t,e)}create(t){return A(this,null,function*(){if(this.ready)return this.ready;t||(t=this.name),console.time(`createWorker_${t}`);let e=bu(),r=new Worker(typeof e=="string"?e:yield e,{name:t});return this.worker=r,this.ready=new Promise((o,s)=>A(this,null,function*(){r.onmessage=({data:{id:n,type:c,payload:l}})=>{var m;if(n)(m=this.transactions.get(n))==null||m(l),this.transactions.delete(n);else switch(c){case"error":console.timeEnd(`createWorker_${t}`),console.warn("worker error:",l),s(l);break;case"ready":console.timeEnd(`createWorker_${t}`),o(this);break;case"updateAFSM":if(l.value){let E=typeof l.old=="string"?l.old:`${l.old.action}ing`,g=typeof l.value=="string"?l.value:`${l.value.action}ing`;console.log(Sc(),l.group,l.name,E,"\u{1F449}",g)}break;case"log":console.log(l);break;case"glog":window.dispatchEvent(new CustomEvent(c,{detail:l}));break}},r.postMessage({wasm:yield Ru(),flag:wt},this.ports)}))})}destroy(){var t;console.log("destroy worker",this.name),delete this.ready,(t=this.worker)==null||t.terminate()}},Op=class{constructor(t,e,r){this.worker=t;u(this,"channel",new MessageChannel);u(this,"ready");this.ready=new Promise((o,s)=>{this.worker.postMessage({id:this.worker.addTransaction(o),payload:e},[this.channel.port2])}).then(o=>(o.err===0&&(this.worker.sessionCount++,this.channel.port1.onmessage=r),o))}postMessage(...t){this.channel.port1.postMessage(...t)}destroy(){--this.worker.sessionCount===0&&this.worker.destroy()}},xp=class i extends wp{constructor(){super("main");u(this,"switchValue",new Map);u(this,"extendChannel");u(this,"sessionCount",0)}setSwitchValue(e,r){var o;this.switchValue.set(e,r),(o=this.extendChannel)==null||o.port1.postMessage([e,r])}create(){return A(this,null,function*(){return this.ready?this.ready:(this.extendChannel=new MessageChannel,this.ports=[this.extendChannel.port2],yield Bt(i.prototype,this,"create").call(this),this.switchValue.forEach((e,r)=>{this.extendChannel.port1.postMessage([r,e])}),this)})}},ho=new xp,ds,WS=-1;function Hg(i){return console.log(i),ds.push(i.slice()),ds.length>1e3&&ds.shift(),i}function Wg(i){return A(this,null,function*(){switch(WS){case 0:this.edpl.willDecodeAudio=Hg;break;case 2:this.edpl.didEncodeAudio=Hg;break}yield ho.create(),V.emit(U.JOIN_SEND_CMD,{room:this});let t=new Op(ho,i,o=>{let s=o.data;if(typeof s=="string")this.onWorkerEvent(s);else if(s==null)this.onWorkerEvent("client-banned",0),t.destroy();else{let{cmd:n,payload:c}=s;this.onWorkerEvent(n,c)}}),{err:e,data:r}=yield t.ready;if(typeof e=="number"){if(V.emit(U.JOIN_RECEIVED_CMD_RES,{room:this,code:e}),e===0)return Object.assign(this,r,{session:t});throw new ue({code:J.JOIN_ROOM_FAILED,extraCode:Number(e),message:Be({key:$e.SIGNAL_CHANNEL_SETUP_FAILED,data:{errorCode:e,errorMsg:""}})})}else throw e})}Object.defineProperties(window,{useAINS:{set:Pp},useWt:{set:GS},enableDebug:{set(i){console.debug=i?$g:()=>{},ho.setSwitchValue("enableDebug",i)}},useV2:{set:kp},dump:{value(){if(ds||(console.warn("dump audio will be activated at next time join room"),ds=[]),!ds.length){console.warn("no audio data to dump,try it later");return}let i=[];return ds.forEach(t=>{i.push(new Uint16Array([t.length])),i.push(t)}),Mp(new Blob(i),{fileName:"audio dump hex",extensions:[".hex"]})}},dumpAudio:{value(i="audio",t=2e3){let e=[],r=new Promise(o=>{let s=new MessageChannel;ho.extendChannel.port1.postMessage(["dump",i],[s.port1]),s.port2.onmessage=({data:n})=>{console.log(n),e.push(n),e.length>t&&(s.port2.onmessage=null,ho.extendChannel.port1.postMessage(["dump",i]),s.port2.close(),o(new Blob(e)))}});return Mp(r,{fileName:i,extensions:[".pcm"]})}},hardDec:{set(i){switch(i){case!0:wt.useHardDecoder="prefer-hardware";break;case!1:wt.useHardDecoder="prefer-software";break;default:wt.useHardDecoder="no-preference"}}}});function Pp(i){return A(this,null,function*(){ho.setSwitchValue("useAINS",i)})}function kp(i){return A(this,null,function*(){ho.setSwitchValue("useV2",i)})}function GS(i){return A(this,null,function*(){ho.setSwitchValue("useWt",i)})}function Gg(i){let t=new MediaStreamTrackGenerator({kind:"audio"});i.setInputMediaStreamTrack(t),this.postMessage({cmd:"pullAudio",payload:{tinyId:i.tinyId,writable:t.writable}},[t.writable])}function jg(i){return A(this,null,function*(){var o;this._log.info("pull video",i);let t=Date.now(),e=0,r=new MessageChannel;this.postMessage({cmd:"pullVideo",payload:{mediaType:i.mediaType,tinyId:i.tinyId}},[r.port1]),(o=i.stat).framesReceived||(o.framesReceived=0),be(Ug(r.port2),Ye(Ce(i,de.INIT)),Le(s=>{let{data:n,packetsReceived:c}=s;i.stat.packetsReceived=c,i.stat.framesReceived++,e++;let l=n[4]&31;if(e<=10){let E=Array.from(n.slice(0,10)).map(g=>g.toString(16).padStart(2,"0")).join(" ");this._log.info(`Frame ${e} - Size: ${n.length} bytes, Type: ${l}, Timestamp: ${Date.now()-t}ms First 10 bytes: ${E}`)}let m;switch(l){case 5:case 7:m="key";break;default:m="delta";break}i.isAvailable?i.decodeFrame({data:n.buffer,type:m,timestamp:(Date.now()-t)*1e3}):console.warn("track is not available")},()=>{},()=>{r.port2.postMessage(null),r.port2.close()}))})}var Nu=[];function Jg(i){var l;let t=At();if(this.state!=="joined")throw new Error("Room is not joined");if(i.state==="publish")return;for(let m=0;m<=Nu.length;m++)if(!Nu[m]){Nu[m]=this,this.index=m;break}let e=i.profile;this._log.info("start push audio",this.index,e);let r=new MessageChannel,o=i.enableEncodeFrame?new MessageChannel:null;(l=this.session)==null||l.postMessage({cmd:"pushAudio",payload:q({index:this.index},e)},o?[r.port2,o.port2]:[r.port2]),r.port1.onmessage=m=>{m.data==null||(typeof m.data=="number"?t.next(m.data):o&&o.port1.postMessage(Ee(q({},m.data),{data:new Uint8Array(i.encodeFrame({data:m.data.data.buffer,timestamp:m.data.timestamp}).data)})))};let s=new MediaStream,n,c=m=>{let E=s.getAudioTracks()[0];E&&(n.disconnect(),s.removeTrack(E)),s.addTrack(m),this._log.info("push audio track:",m.readyState,m.getSettings().deviceId),n=ze("player").createMediaStreamSource(s),n.connect(vu.worklet,0,this.index)};be(Ce(i,"output-media-track-changed"),Ye(Ce(i,"ready")),Le(c,console.error,()=>{this._log.info("stop push audio",e),i.volume=0,n.disconnect(),Nu[this.index]=null,o&&o.port1.postMessage(null),r.port1.postMessage(null)})),be(t,va(m=>i.volume=m),Si(Hd(1e3)),Le(()=>{i.volume=0})),c(i.outMediaTrack)}var f$=new Intl.DateTimeFormat("zh-CN",{dateStyle:"short",timeStyle:"medium"});var Lp=class{constructor(t,e,r,o){this.localTrack=t;this.type=e;this.config=r;this.port=o;u(this,"track");u(this,"label");u(this,"insertKeyFrame",!0);u(this,"encoder");u(this,"tsMap",new Map);t._log.info("create Video Encoder",r)}trans(t,e,r){return A(this,null,function*(){yield this.recreate(r),e.signal.addEventListener("abort",()=>{this.encoder.close()});let o=0;return t.pipeThrough(new TransformStream({transform:(s,n)=>{this.encoder.state==="configured"&&(this.tsMap.set(o,Date.now()),this.encode(s),o++,n.enqueue(s))}}),e)})}encode(t){this.encoder.encode(t,{keyFrame:this.insertKeyFrame}),this.insertKeyFrame=!1}start(t,e,r){return A(this,null,function*(){yield this.recreate(r);let o=0;t.pipeTo(new WritableStream({write:s=>{this.encoder.state==="configured"&&(o<10&&this.localTrack.log.info(`capture ${this.label} track frame:`,o,Date.now(),s.timestamp,s.displayWidth,s.displayHeight),(s.displayWidth!==this.config.width||s.displayHeight!==this.config.height)&&(this.localTrack.log.info("resize video track frame:",s.displayWidth,s.displayHeight,this.config.width,this.config.height),this.configure({width:s.displayWidth,height:s.displayHeight})),this.tsMap.set(o,Date.now()),this.encode(s),o<10&&this.localTrack.log.info(`encode ${this.label} track frame:`,o),o++,s.close())}}),e).catch(s=>{var n;this.localTrack.log.warn(s),(n=this.encoder)==null||n.close()})})}recreate(t,e=0){return A(this,null,function*(){let r=0,o=new VideoEncoder({output:s=>{let n=this.tsMap.get(r);if(this.tsMap.delete(s.timestamp),r<10&&(r===0&&e===0&&V.emit(U.SEND_FIRST_VIDEO_FRAME,{room:t}),this.localTrack.log.info(`encoded ${this.label} track frame:`,r,Date.now(),s.timestamp)),r++,this.track.enabled===!1)return;let c=null;if(this.localTrack.enableEncodeFrame){c=new Uint8Array(s.byteLength),s.copyTo(c);let l=this.localTrack.encodeFrame({data:c.buffer},this.type===3);c=new Uint8Array(l.data)}c?(this.localTrack.stat.bytesSent+=c.length,this.port.postMessage({chunk:{type:s.type,timestamp:s.timestamp,data:c,duration:s.duration},timestamp:n},[c.buffer])):(this.localTrack.stat.bytesSent+=s.byteLength,this.port.postMessage({chunk:s,timestamp:n}))},error:s=>{this.localTrack.log.warn(s,this.config),setTimeout(()=>this.recreate(t,e+1),100)}});return this.encoder=o,yield this.configure({},r===0?e:0),o})}configure(t,e=0){return A(this,null,function*(){var r;if(Object.assign(this.config,t),e===0)for(let o=0;o<=Ci.length;o++){let{supported:s}=yield VideoDecoder.isConfigSupported(this.config);if(s)break;if(o===Ci.length)return;Ci[o](this.config)}else e<=Ci.length&&Ci[e-1](this.config);(r=this.encoder)==null||r.configure(this.config)})}close(){this.port.postMessage(null),this.port.close()}};function Du(i,t){return A(this,null,function*(){let e=i.mediaType===2,r=e?"screen":"video",o={codec:"avc1.640028",latencyMode:"realtime",avc:{format:"annexb"},hardwareAcceleration:wt.useHardEncoder,width:t.profile.width,height:t.profile.height,framerate:t.profile.frameRate,bitrate:t.profile.bitrate*1e3},s=new MessageChannel;this.postMessage({cmd:"pushVideo",payload:t},[s.port1]);let n=new Lp(i,t.type,o,s.port2);return s.port2.onmessage=c=>{if(c.data===260)n.insertKeyFrame=!0;else if(!e){let{bitrate:l}=c.data;Pn({configureBr:[c.data.bitrate,l]}),n.configure({bitrate:l})}},this._log.info("start push",r,t),n})}function zg(i){return A(this,null,function*(){var E;let t=i.mediaType===2,e=t?"screen":"video",r={type:t?7:2,profile:i.profile,trackType:t?"screen":"camera",crypto:!!((E=i.manager)!=null&&E.encodePipeline[0])};!t&&i.outMediaTrack instanceof CanvasCaptureMediaStreamTrack&&(r.trackType="canvas");let{trackType:o}=r,{width:s,height:n}=i.outMediaTrack.getSettings();r.profile.width=s,r.profile.height=n;let c=yield Du.call(this,i,r);this._log.info("VideoEncoder created",r);let l,m=g=>A(this,null,function*(){if(l==null||l.abort("track changed"),!g)return;l=new AbortController;let{width:_,height:v,displaySurface:L}=g.getSettings();_&&(c.config.width=_),v&&(c.config.height=v);let x=tr.match(/Chrome\/(\d+)/);(x==null?void 0:x[1])==="114"&&L==="browser"&&delete c.config.hardwareAcceleration,this._log.info("push",e,"track:",g.readyState,g.getSettings());let M;if(typeof MediaStreamTrackProcessor!="undefined")M=new MediaStreamTrackProcessor({track:g}).readable;else{let ee;M=new ReadableStream({pull(pe){return A(this,null,function*(){if(fi())return new Promise(ae=>{var Xe;(Xe=i.player.element)==null||Xe.requestVideoFrameCallback((X,Ue)=>{let Eo=new VideoFrame(i.player.element);pe.enqueue(Eo),ae()})})})}})}let B="small"in i&&i.small;return B?(this.smallEncoder||(this.smallEncoder=yield Du.call(this,i,{profile:B,type:3,trackType:o})),this.smallEncoder.track=g,this.smallEncoder.label="small",M=yield this.smallEncoder.trans(M,l,this)):this.smallEncoder&&(this.smallEncoder.close(),delete this.smallEncoder),c.track=g,c.label=e,c.start(M,l,this)});return be(Ce(i,"output-media-track-changed"),Ye(Ce(i,"ready")),Le(m,console.error,()=>{var g;this._log.info("stop push",e,r),l.abort("unpublish"),c.close(),(g=this.smallEncoder)==null||g.close()})),m(i.outMediaTrack)})}var fo=class fo extends de{constructor(e){var r,o;super((o=(r=e.roomid)==null?void 0:r.toString())!=null?o:e.name,"volumeEvaluation");this.room=e;u(this,"enableInBackground",!1);u(this,"interval",400);e.on("joined",()=>{this.emit(fo.INTERVALCHANGED,this.interval)}),be(Ce(this,fo.INTERVALCHANGED),so(s=>this.room.state==="joined"?this.room.fromWorker("getAudioEnergy",s):be(Hf(s),oo(()=>[]))),Le(s=>{s.forEach(n=>{this.room.remotePublishedUserMap.has(n.userId)&&(this.room.remotePublishedUserMap.get(n.userId).remoteAudioTrack.volume=n.volume)}),(!document.hidden||this.enableInBackground)&&this.state==de.ON&&this.room.emit("audio-volume",s)}))}start(e,r){this.interval=e,this.enableInBackground=r,this.emit(fo.INTERVALCHANGED,this.interval)}stop(){}};u(fo,"INTERVALCHANGED","intervalChanged"),Z([Qe([de.INIT,de.OFF],de.ON)],fo.prototype,"start",1),Z([Qe([],de.OFF)],fo.prototype,"stop",1);var Mu=fo;var go=class go extends yu{constructor(e){super(e);u(this,"index",0);u(this,"session");u(this,"tinyid");u(this,"roomid");u(this,"openid");u(this,"socketid");u(this,"relayip");u(this,"clientip");u(this,"remotePublishedUserMap",new Map);u(this,"bussinessInfo");u(this,"token");u(this,"audioVolumeEvalution",new Mu(this));u(this,"enableAIVoice",Pp);u(this,"AbilityOption",{AVLimit:{EncVideoCodec:"H265",EncVideoWidth:0,EncVideoHeight:0,EncVideoBr:"0",EncVideoFps:0,EncAudioCodec:"opus",EncAudioFS:0,EncAudioCh:0,EncAudioBr:"0"},GeneralLimit:{CPULimit:{uint32_CPU_num:navigator.hardwareConcurrency||0,str_CPU_name:navigator.platform,uint32_CPU_maxfreq:0,model:"",uint32_total_memory:0},uint32_terminal_type:Al(),uint32_device_type:0,str_os_verion:yl(),uint32_link_type:1,str_client_version:at,uint32_net_type:Mo[Lr.getNetworkType()],ua:navigator.userAgent,version:""}});u(this,"joinAbortController",new AbortController);u(this,"smallAbortCtrl");u(this,"smallEncoder");e.tinyId&&(this.tinyId=e.tinyId,kp(!0)),this._log||(this._log=e.logger),this.bussinessInfo=e.bussinessInfo,e.encodedDataProcessingListener&&this.setEncodedDataProcessingListener(e.encodedDataProcessingListener)}replaceTrack(e){return A(this,null,function*(){})}getLogger(){return this._log}postMessage(e,r){this.session&&(e?typeof e=="string"?this.session.postMessage({cmd:e,payload:r}):this.session.postMessage(e,r):this.session.postMessage(null))}sendMessage(e,r){return new Promise((o,s)=>{this.state!="joined"&&s("join room first");let n=new MessageChannel;this.postMessage({cmd:e,payload:r},[n.port1]),n.port2.onmessageerror=s,n.port2.onmessage=c=>{n.port2.close(),o(c.data)}})}fromWorker(e,r){if(this.state!="joined")throw"join room first";return o=>{var n;let s=new MessageChannel;s.port2.onmessage=c=>{c.data?o.next(c.data):o.complete()},s.port2.onmessageerror=c=>o.error(c),o.defer(()=>{s.port2.postMessage(null),s.port2.close()}),(n=this.session)==null||n.postMessage({cmd:e,payload:r},[s.port1])}}switchRole(e){return A(this,null,function*(){if(e!==this.role)return this._log.info(`switchRole() => switch role to: ${e}`),e=="audience"&&this.unpublish(...this.localTracks),this.sendMessage("switchRole",e=="audience"?21:20).then(r=>{this.role=e})})}join(e,r,o){return A(this,null,function*(){var l,m,E;let s=Lr.getEnv(),n=od(),c={isH264EncodeSupported:this.checkSystemResult.detail.isH264EncodeSupported,isVp8EncodeSupported:this.checkSystemResult.detail.isVp8EncodeSupported,frameWorkType:o,params:e,proxy_wt:(l=this.proxy_wt)==null?void 0:l.replace("https://",""),proxy_ws:(m=this.proxy_ws)==null?void 0:m.replace("wss://",""),proxy_cloud:(E=this.scheduleResult.iceServers)!=null&&E.length?this.scheduleResult.iceServers[0].urls:[],proxy_unified:this.proxy_unified,domains:this.scheduleResult.domains,env:s,osName:$s(),browserInfo:od(),tinyId:this.tinyId,joinReq:{useStrRoomid:!!this.useStringRoomId,roomid:String(e.roomId||e.strRoomId),sdkAppID:String(e.sdkAppId),userSig:e.userSig,privMapEncrypt:e.privateMapKey||"",privMap:"",pstnBizType:0,role:"user",jsSdkVersion:at,browserVersion:n.browserName+n.browserVersion,closeLocalMedia:!0,trtcscene:r==="live"?2:1,trtcrole:e.role,bussinessInfo:e.businessInfo||this.bussinessInfo||"",isAuxUser:0,autoSubscribe:this.autoReceiveAudio&&this.autoReceiveVideo,AbilityOption:this.AbilityOption}};yield Wg.call(this,c),console.log(this),vu.playAudio(g=>this.postMessage({cmd:"setAudioWorkletPort"},[g])),this.checkDestroy()})}leave(){return A(this,null,function*(){this.remotePublishedUserMap.forEach(e=>{e.remoteAudioTrack.close(),e.remoteAuxiliaryTrack.close(),e.remoteVideoTrack.close()}),this.postMessage(null),this.remotePublishedUserMap.clear(),this.localTracks.forEach((e,r)=>r.unpublish())})}getSignalInfo(){return{tinyId:this.tinyid,clientIp:this.clientip,signalIp:"",relayIp:this.relayip,relayInnerIp:"",relayPort:0}}enableAudioVolumeEvaluation(e=2e3,r=!1){e<=0?this.audioVolumeEvalution.stop():this.audioVolumeEvalution.start(e,r)}getLocalAudioStats(){return this.sendMessage("getLocalAudioStats")}getLocalVideoStats(){return this.sendMessage("getLocalVideoStats")}afterJoin(){return A(this,null,function*(){let e=Ye(Ce(this,"left"));be(r=>A(this,null,function*(){let o=new MessageChannel;o.port2.onmessage=s=>{s.data?r.next({data:s.data,port:o.port2}):r.complete()},o.port2.onmessageerror=s=>r.error(s),r.defer(()=>{o.port2.postMessage(null),o.port2.close()}),this.postMessage({cmd:"decodeAudio",payload:!!this.audioManager.decodePipeline[0]},[o.port1])}),e,Le(({data:r,port:o})=>{let s=this.audioManager.decodePipeline[0]({frame:{data:r.data.buffer}});o.postMessage(Ee(q({},r),{data:new Uint8Array(s.data)}),[s.data])}))})}onWorkerEvent(e,r){switch(e!=="network-quality"&&console.info(this.userId,"onWorkerEvent",e,JSON.stringify(r)),e){case U.RECEIVED_PUBLISHED_USER_LIST:V.emit(e,q({room:this},r));return;case"1":if(r.userId===this.userId)return;this.emit("peer-join",r);return;case"2":this.emit("peer-leave",r);return;case"3":let o=new fu(this,r);this.remotePublishedUserMap.set(r.userId,o),this.emit("remote-published",o);return;case"5":{let g=r,_=this.remotePublishedUserMap.get(g);_&&(_.remoteVideoTrack.close(),_.remoteAuxiliaryTrack.close(),_.remoteAudioTrack.close(),this.remotePublishedUserMap.delete(g),this.emit("remote-unpublished",_))}return;case"banned":switch(r){case 8:this.emit("banned",{reason:"kick",message:""});return;case 2:case 6:case 4:this.emit("banned",{reason:"banned",message:""});return;case 7:case 5:this.emit("banned",{reason:"room_disband",message:""});return}break;case"6":{let{prevMuteState:g,muteState:_,flag:v}=r,L=this.remotePublishedUserMap.get(_.userId);if(!L){this.emit("remote-publish-state-changed",r);return}L.flag=v}V.emit(U.REMOTE_PUBLISH_STATE_CHANGED,q({room:this},r)),this.emit("remote-publish-state-changed",r);return;case"network-quality":this.quality=q({},r);let{uplinkLoss:s,uplinkRTT:n,uplinkInfo:c,downlinkInfo:l,msg_down_stream_info:m}=r,E={str_sdk_version:at,uint64_datetime:Date.now(),msg_user_info:{str_identifier:this.userId,uint64_tinyid:this.tinyid},msg_device_info:{uint32_terminal_type:15,str_device_name:navigator.platform,str_os_version:"",uint32_net_type:Mo[xn()]},msg_event_msg:Wf(this.userId),str_acc_ip:this.relayip,str_client_ip:this.clientip,msg_up_stream_info:c,msg_down_stream_info:m};V.emit(U.HEARTBEAT_REPORT,{room:this,report:E}),this.emit("heartbeat-report",E),V.emit(U.NETWORK_QUALITY,{room:this,uplink:{rtt:n,loss:s},downlinks:l}),delete r.downlinkInfo;break;case"signal-connection-state-changed":V.emit(U.SIGNAL_CONNECTION_STATE_CHANGED,q({room:this},r));return}this.emit(e,r)}sendStartPublishCDN(e,r){return e.roomid=this.roomId,e.sdkAppID=String(this.sdkAppId),e.socketid=this.socketid,r&&(e.request_time=e.pushRequestTime),this.sendMessage("publishCdn",e)}sendStopPublishCDN(e,r){return e.roomid=this.roomId,e.sdkAppID=String(this.sdkAppId),e.socketid=this.socketid,r&&(e.request_time=e.pushRequestTime),this.sendMessage("stopPublishCdn",e)}sendStartMixTranscode(e){return this.sendMessage("startMcuMix",e)}sendStopMixTranscode(e){return this.sendMessage("stopMcuMix",e)}publish(...e){return A(this,null,function*(){let r=e.reduce((c,l)=>l.mediaType|c,0),o=this.sendMessage("publish",r).then(c=>c.err!==0?Promise.reject(c.err):c),s=0,n=c=>A(this,null,function*(){switch(yield o,c.muted&&(s|=c.mediaType),Vt(c,c).add("mute",()=>{this.postMessage("mute",{mediaType:c.mediaType,userId:this.userId,srctinyid:this.tinyid,remove:!0})}).add("unmute",()=>{this.postMessage("unmute",{mediaType:c.mediaType,userId:this.userId,srctinyid:this.tinyid,add:!0})}),c.mediaType){case 1:Jg.call(this,c);break;default:yield zg.call(this,c)}});yield Promise.all(e.map(n)),s&&this.postMessage("mute",{mediaType:s,srctinyid:this.tinyid,userId:this.openid,remove:!0})})}unpublish(...e){return A(this,null,function*(){e.forEach(ht)})}subscribe(...e){return A(this,null,function*(){let r=e.reduce((g,_)=>_.mediaType|g,0),{userId:o,tinyId:s,streamType:n}=e[0],c=this.remotePublishedUserMap.get(o),l=q({},c.subscribeState),m=Object.assign(new ea,l);m.mediaType|=r,V.emit(U.SUBSCRIBE_START,{room:this,streamType:n,remotePublishedUser:c,subscribeState:m});let E=yield this.sendMessage("subscribe",{mediaType:m.mediaType,userId:o,srctinyid:s,mediaDescription:{audioParam:{mediaType:1,payloadFmtps:[{payloadType:111,fmtp:"minptime=10;useinbandfec=1"}]},videoParam:[4,8,2].filter(g=>m.mediaType&g).map(g=>({mediaType:g,payloadFmtps:[{payloadType:100,fmtp:"packetization-mode=1;profile-level-id=42e01f"}]}))}});console.dir("subscribe",E),yield Promise.all(e.filter(g=>!g.isSubscribed).map(g=>{switch(g.mediaType){case 1:return Gg.call(this,g);default:return jg.call(this,g)}})),V.emit(U.SUBSCRIBE_SUCCESS,{room:this,streamType:n,remotePublishedUser:c})})}unsubscribe(...e){return A(this,null,function*(){let r=0;for(let o of e)r|=o.mediaType;if(e.length){let{userId:o,streamType:s,tinyId:n}=e[0];yield this.sendMessage("unSubscribe",{mediaType:r,srctinyid:n,userId:o});for(let c of e)c.unsubscribe();V.emit(U.UNSUBSCRIBE_SUCCESS,{room:this,streamType:s,remotePublishedUser:this.remotePublishedUserMap.get(o)})}})}enableSmall(e){return A(this,null,function*(){var r;if(e){if(this.videoManager.smallTrack){let o=this.videoManager.cameraTrack;this.smallEncoder=yield Du.call(this,o,{profile:o.small,type:3,trackType:"camera"});let s=new MediaStreamTrackProcessor({track:this.videoManager.smallTrack}).readable;this.smallEncoder.track=this.videoManager.smallTrack,this.smallEncoder.label="small",this.smallAbortCtrl=new AbortController,this.smallEncoder.start(s,this.smallAbortCtrl,this),this._log.info("push small")}}else(r=this.smallAbortCtrl)==null||r.abort("stop"),this.smallEncoder&&(this.smallEncoder.close(),delete this.smallEncoder)})}changeType(e,r){let o=this.remotePublishedUserMap.get(r.userId);if(!o)return;let s=e?8:4;if(o.remoteVideoTrack.mediaType===s)return;let n={srctinyid:o.tinyId,mediaType:s,userId:r.userId,mediaDescription:{audioParam:{mediaType:1,payloadFmtps:[{payloadType:111,fmtp:"minptime=10;useinbandfec=1"}]},videoParam:[4,8].filter(c=>s&c).map(c=>({mediaType:c,payloadFmtps:[{payloadType:100,fmtp:"packetization-mode=1;profile-level-id=42e01f"}]}))}};o.remoteVideoTrack.mediaType=n.mediaType,this.postMessage("changetype",n)}destroy(){this.isDestroyed||(super.destroy(),this.isDestroyed=!0,this.joinAbortController.abort("destroy"))}};Z([to(go.prototype.afterJoin),Qe(["left",de.INIT],"joined"),Cg()],go.prototype,"join",1),Z([Qe("joined","left",{ignoreError:!0}),Ng()],go.prototype,"leave",1),Z([bd((...e)=>0),Dg()],go.prototype,"publish",1),Z([bd((...e)=>0),Mg()],go.prototype,"unpublish",1),Z([bd((...e)=>e[0].userId),wg()],go.prototype,"subscribe",1);var wu=go;un.frameWorkType=37;un.create=function(i){let t=un._create.call(this,wu,i);return t._use(rp,i==null?void 0:i.assetsPath),i!=null&&i.assetsPath&&(wt.assetsPath=i==null?void 0:i.assetsPath),console.log("trtc wasm sdk:",at,"created",wt),t};Object.assign(un.prototype,{_setCurrentSpeaker(i){let t=ze("player");return t!=null&&t.setSinkId?t.setSinkId(i):Promise.reject("not support")},_enableVideoDecodeFallback(i,t){return A(this,null,function*(){return this.startPlugin(rp.Name,{type:"webCodecs",renderer:"videoFrame",track:i,config:{codec:"avc1.420028"},fallback:"wasm"}),new Promise((e,r)=>{be(Ce(i,"decode-downgrade-state-changed"),sr(o=>o.state==="STARTED"),Nr(1),Ym(1e4),Ye(Ce(i,de.INIT)),Le(e,r))})})}});var $B=un;export{$B as default};
|