trtc-sdk-v5 5.15.0-wasm.2 → 5.15.1-beta.1

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.
Files changed (38) hide show
  1. package/assets/debug-dialog.js +2 -2
  2. package/index.d.ts +1 -13
  3. package/package.json +6 -4
  4. package/plugins/cdn-streaming/cdn-streaming.esm.js +1 -1
  5. package/plugins/cdn-streaming/cdn-streaming.umd.js +1 -1
  6. package/plugins/cdn-streaming/package.json +1 -1
  7. package/plugins/chorus/chorus.esm.d.ts +0 -2
  8. package/plugins/chorus/package.json +1 -1
  9. package/plugins/cross-room/cross-room.esm.d.ts +0 -2
  10. package/plugins/cross-room/package.json +1 -1
  11. package/plugins/custom-encryption/package.json +1 -1
  12. package/plugins/device-detector/package.json +1 -1
  13. package/plugins/fast-webrtc/fast-webrtc.esm.d.ts +27 -0
  14. package/plugins/fast-webrtc/fast-webrtc.esm.js +1 -0
  15. package/plugins/fast-webrtc/fast-webrtc.umd.js +1 -0
  16. package/plugins/{video-effect/face-detection → fast-webrtc}/package.json +8 -8
  17. package/plugins/lebplayer/package.json +1 -1
  18. package/plugins/small-stream-auto-switcher/package.json +1 -1
  19. package/plugins/video-decoder/package.json +1 -1
  20. package/plugins/video-decoder/video-decoder.esm.d.ts +1 -2
  21. package/plugins/video-effect/basic-beauty/package.json +1 -1
  22. package/plugins/video-effect/beauty/package.json +1 -1
  23. package/plugins/video-effect/video-mixer/package.json +1 -1
  24. package/plugins/video-effect/video-mixer/video-mixer.esm.d.ts +4 -0
  25. package/plugins/video-effect/video-mixer/video-mixer.esm.js +1 -1
  26. package/plugins/video-effect/video-mixer/video-mixer.umd.js +1 -1
  27. package/plugins/video-effect/virtual-background/package.json +1 -1
  28. package/plugins/video-effect/virtual-background/virtual-background.esm.js +1 -1
  29. package/plugins/video-effect/virtual-background/virtual-background.umd.js +1 -1
  30. package/plugins/video-effect/watermark/package.json +1 -1
  31. package/plugins/voice-changer/package.json +1 -1
  32. package/trtc.esm.js +45 -69
  33. package/trtc.js +1 -1
  34. package/assets/av_processing.wasm +0 -0
  35. package/assets/worker.js +0 -17
  36. package/plugins/video-effect/face-detection/face-detection.esm.d.ts +0 -22
  37. package/plugins/video-effect/face-detection/face-detection.esm.js +0 -1
  38. package/plugins/video-effect/face-detection/face-detection.umd.js +0 -1
@@ -0,0 +1 @@
1
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).FastWebRTC=e()}(this,(function(){"use strict";function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function e(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function r(t){return function(){var r=this,n=arguments;return new Promise((function(o,i){var a=t.apply(r,n);function c(t){e(a,o,i,c,u,"next",t)}function u(t){e(a,o,i,c,u,"throw",t)}c(void 0)}))}}function n(t,e,r){return e&&function(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,a(n.key),n)}}(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}function o(){o=function(){return e};var t,e={},r=Object.prototype,n=r.hasOwnProperty,i=Object.defineProperty||function(t,e,r){t[e]=r.value},a="function"==typeof Symbol?Symbol:{},c=a.iterator||"@@iterator",u=a.asyncIterator||"@@asyncIterator",s=a.toStringTag||"@@toStringTag";function l(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{l({},"")}catch(t){l=function(t,e,r){return t[e]=r}}function f(t,e,r,n){var o=e&&e.prototype instanceof g?e:g,a=Object.create(o.prototype),c=new _(n||[]);return i(a,"_invoke",{value:O(t,r,c)}),a}function p(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=f;var h="suspendedStart",y="suspendedYield",d="executing",v="completed",m={};function g(){}function w(){}function b(){}var x={};l(x,c,(function(){return this}));var E=Object.getPrototypeOf,S=E&&E(E(C([])));S&&S!==r&&n.call(S,c)&&(x=S);var L=b.prototype=g.prototype=Object.create(x);function j(t){["next","throw","return"].forEach((function(e){l(t,e,(function(t){return this._invoke(e,t)}))}))}function k(t,e){function r(o,i,a,c){var u=p(t[o],t,i);if("throw"!==u.type){var s=u.arg,l=s.value;return l&&"object"==typeof l&&n.call(l,"__await")?e.resolve(l.__await).then((function(t){r("next",t,a,c)}),(function(t){r("throw",t,a,c)})):e.resolve(l).then((function(t){s.value=t,a(s)}),(function(t){return r("throw",t,a,c)}))}c(u.arg)}var o;i(this,"_invoke",{value:function(t,n){function i(){return new e((function(e,o){r(t,n,e,o)}))}return o=o?o.then(i,i):i()}})}function O(e,r,n){var o=h;return function(i,a){if(o===d)throw Error("Generator is already running");if(o===v){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var c=n.delegate;if(c){var u=T(c,n);if(u){if(u===m)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===h)throw o=v,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=d;var s=p(e,r,n);if("normal"===s.type){if(o=n.done?v:y,s.arg===m)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(o=v,n.method="throw",n.arg=s.arg)}}}function T(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,T(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),m;var i=p(o,e.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,m;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,m):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,m)}function P(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function A(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function _(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(P,this),this.reset(!0)}function C(e){if(e||""===e){var r=e[c];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,i=function r(){for(;++o<e.length;)if(n.call(e,o))return r.value=e[o],r.done=!1,r;return r.value=t,r.done=!0,r};return i.next=i}}throw new TypeError(typeof e+" is not iterable")}return w.prototype=b,i(L,"constructor",{value:b,configurable:!0}),i(b,"constructor",{value:w,configurable:!0}),w.displayName=l(b,s,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===w||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,b):(t.__proto__=b,l(t,s,"GeneratorFunction")),t.prototype=Object.create(L),t},e.awrap=function(t){return{__await:t}},j(k.prototype),l(k.prototype,u,(function(){return this})),e.AsyncIterator=k,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new k(f(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},j(L),l(L,s,"Generator"),l(L,c,(function(){return this})),l(L,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},e.values=C,_.prototype={constructor:_,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(A),!e)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var r=this;function o(n,o){return c.type="throw",c.arg=e,r.next=n,o&&(r.method="next",r.arg=t),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],c=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var u=n.call(a,"catchLoc"),s=n.call(a,"finallyLoc");if(u&&s){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(u){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!s)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,m):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),m},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),A(r),m}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;A(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:C(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),m}},e}function i(e){return function(e){if(Array.isArray(e))return t(e)}(e)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(e)||u(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t,"string");return"symbol"==typeof e?e:e+""}function c(t){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},c(t)}function u(e,r){if(e){if("string"==typeof e)return t(e,r);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?t(e,r):void 0}}var s=Object.defineProperty,l=Object.getOwnPropertySymbols,f=Object.prototype.hasOwnProperty,p=Object.prototype.propertyIsEnumerable,h=function(t,e,r){return e in t?s(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r},y=function(t,e){for(var r in e||(e={}))f.call(e,r)&&h(t,r,e[r]);if(l){var n,o=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=u(t))||e){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,c=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){c=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(c)throw i}}}}(l(e));try{for(o.s();!(n=o.n()).done;){r=n.value;p.call(e,r)&&h(t,r,e[r])}}catch(t){o.e(t)}finally{o.f()}}return t},d=function(t,e,r){return h(t,"symbol"!==c(e)?e+"":e,r)},v={name:"option",required:!0,properties:{view:{type:["string",HTMLElement],required:!0},url:{type:"string",required:!0},licenseConfig:{type:"object",required:!0,properties:{secretKey:{type:"string",required:!0},encrypted:{type:"string",required:!0},signature:{type:"string",required:!0}}}}},m=function(t){var e=t.split("\r\n"),r=[];e.forEach((function(t){var e=t.toLowerCase();e.includes("a=rtpmap")&&e.includes("h264")&&r.push(t)}));var n=r.map((function(t){var e=/a=rtpmap:(\d+)\s/.exec(t);return e&&e.length>1?e[1]:null})).filter((function(t){return null!==t})),o=[];return e.forEach((function(t){var e=t;if(t.includes("a=fmtp:111")&&(e="".concat(t,";stereo=1")),t.includes("a=fmtp")){var r=/a=fmtp:(\d+)\s/.exec(t);r&&r.length>1&&n.includes(r[1])&&(e="".concat(t,";sps-pps-idr-in-keyframe=1"))}o.push(e)})),function(t){if(!navigator.userAgent.includes("Firefox"))return t;var e=t.split("\r\n"),r=[],n=[];e.forEach((function(t){var e=t.toLowerCase();e.includes("a=rtpmap")&&e.includes("h264")&&r.push(t)})),r.length>1&&n.push.apply(n,i(r.slice(1)));var o=n.map((function(t){var e=/a=rtpmap:(\d+)\s/.exec(t);return e&&e.length>1?e[1]:null})).filter((function(t){return null!==t})),a=[];return e.forEach((function(t){var e=t;if(t.includes("a=setup")&&(e="a=setup:passive"),(t.includes("m=audio")||t.includes("m=video"))&&(e=t.split(" ").filter((function(t,e){return e<3||!o.includes(t)})).join(" ")),t.includes("a=fmtp")||t.includes("a=rtcp-fb")||t.includes("a=rtpmap")){var r=/a=(?:fmtp|rtcp-fb|rtpmap):(\d+)\s/.exec(t);if(r&&r.length>1&&o.includes(r[1]))return}a.push(e)})),a.join("\r\n")}(o.join("\r\n"))},g=function(){for(var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:21,e="",r=crypto.getRandomValues(new Uint8Array(t|=0));t--;)e+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&r[t]];return e},w=["overseas-webrtc.tlivewebrtc.com","oswebrtc-lint.tliveplay.com"],b=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.core=e,d(this,"disableRandomCall",!0),d(this,"connectedRoomIdSet",new Set),d(this,"updateSeq",0),d(this,"_log"),this._log=this.core.log.createChild({id:"".concat(this.getAlias())})}return n(t,[{key:"getName",value:function(){return t.Name}},{key:"getAlias",value:function(){return"fwrtc"}},{key:"getGroup",value:function(){return""}},{key:"getValidateRule",value:function(t){switch(t){case"start":return v;case"update":case"stop":return{}}}},{key:"start",value:(u=r(o().mark((function t(e){return o().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e.view,e.url,e.licenseConfig;case 1:case"end":return t.stop()}}),t)}))),function(t){return u.apply(this,arguments)})},{key:"connect",value:(c=r(o().mark((function t(e){var r,n,i,a,c,u,s=this;return o().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return(r=new RTCPeerConnection({iceServers:[],sdpSemantics:"unified-plan",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",tcpCandidatePolicy:"disable",IceTransportsType:"nohost"})).addTransceiver("audio",{direction:"recvonly"}),r.addTransceiver("video",{direction:"recvonly"}),t.next=5,r.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0,voiceActivityDetection:!1});case 5:return(n=t.sent).sdp=m(n.sdp),t.next=9,r.setLocalDescription(n);case 9:return i=g(),a={sessionId:i,streamurl:e,clientinfo:"macos chrome115",localsdp:r.localDescription},t.next=13,this.core.utils.promiseAny(w.map((function(t){return s.exchangeSDP(t,a,3)})));case 13:return c=t.sent,u=c.remoteSdp,c.svrSig,t.next=18,r.setRemoteDescription(u);case 18:case"end":return t.stop()}}),t,this)}))),function(t){return c.apply(this,arguments)})},{key:"exchangeSDP",value:(a=r(o().mark((function t(e,r,n){var i,a,c,u,s,l,f;return o().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i="".concat(e,"/webrtc/v1/pullstream"),t.next=3,E(i,r,{timeout:n});case 3:if(a=t.sent,c=a.errcode,u=a.errmsg,s=a.remotesdp,l=a.svrsig,0===c){t.next=9;break}throw(f=new Error("errCode:".concat(c,", errMsg:").concat(u))).name="RequestSignalError",f;case 9:return t.abrupt("return",{url:e,remoteSdp:s,svrSig:l});case 10:case"end":return t.stop()}}),t)}))),function(t,e,r){return a.apply(this,arguments)})},{key:"update",value:(i=r(o().mark((function t(e){return o().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:case"end":return t.stop()}}),t)}))),function(t){return i.apply(this,arguments)})},{key:"stop",value:(e=r(o().mark((function t(){return o().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:case"end":return t.stop()}}),t)}))),function(){return e.apply(this,arguments)})},{key:"destroy",value:function(){}}]);var e,i,a,c,u}();d(b,"Name","FastWebRTC");var x=b,E=function(){var t=r(o().mark((function t(e,r){var n,i,a,c,u,s,l=arguments;return o().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=(l.length>2&&void 0!==l[2]?l[2]:{}).timeout,i=void 0===n?10:n,c=0,u={},window.AbortController&&(a=new window.AbortController,u={signal:a.signal},c=window.setTimeout((function(){return a.abort()}),1e3*i)),t.next=7,fetch(e,y({body:JSON.stringify(r),cache:"no-cache",credentials:"same-origin",headers:{"content-type":"text/plain;charset=utf-8"},method:"POST",mode:"cors"},u));case 7:if(s=t.sent,c&&window.clearTimeout(c),200===s.status){t.next=11;break}throw new Error("Network Error, status code:".concat(s.status));case 11:return t.abrupt("return",s.json());case 12:case"end":return t.stop()}}),t)})));return function(e,r){return t.apply(this,arguments)}}();return x}));
@@ -1,14 +1,14 @@
1
1
  {
2
- "name": "@rtc-plugin/face-detection",
3
- "version": "5.15.0-wasm.2",
4
- "description": "TRTC Web SDK 5.x face detection plugin",
5
- "main": "./face-detection.esm.js",
6
- "module": "./face-detection.esm.js",
2
+ "name": "@rtc-plugin/lebplayer",
3
+ "version": "5.14.1",
4
+ "description": "TRTC Web SDK 5.x Cross Room plugin",
5
+ "main": "./lebplayer.esm.js",
6
+ "module": "./lebplayer.esm.js",
7
7
  "repository": {
8
8
  "type": "git",
9
9
  "url": "git@github.com:LiteAVSDK/TRTC_Web.git"
10
10
  },
11
- "homepage": "https://web.sdk.qcloud.com/trtc/webrtc/v5/doc/en/tutorial-40-advanced-face-detection.html",
11
+ "homepage": "https://web.sdk.qcloud.com/trtc/webrtc/v5/doc/en/tutorial-30-advanced-lebplayer-link.html",
12
12
  "keywords": [
13
13
  "webrtc",
14
14
  "TRTC",
@@ -23,7 +23,7 @@
23
23
  "microphone",
24
24
  "live streaming",
25
25
  "real-time communication",
26
- "face detection"
26
+ "lebplayer"
27
27
  ],
28
- "types": "./face-detection.esm.d.ts"
28
+ "types": "./lebplayer.esm.d.ts"
29
29
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/lebplayer",
3
- "version": "5.15.0-wasm.2",
3
+ "version": "5.15.1-beta.1",
4
4
  "description": "TRTC Web SDK 5.x LEBPlayer plugin",
5
5
  "main": "./lebplayer.esm.js",
6
6
  "module": "./lebplayer.esm.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/small-stream-auto-switcher",
3
- "version": "5.15.0-wasm.2",
3
+ "version": "5.15.1-beta.1",
4
4
  "description": "",
5
5
  "main": "./small-stream-auto-switcher.esm.js",
6
6
  "keywords": [],
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/video-decoder",
3
- "version": "5.15.0-wasm.2",
3
+ "version": "5.15.1-beta.1",
4
4
  "description": "Video decoder plugin for TRTC",
5
5
  "main": "./video-decoder.esm.js",
6
6
  "module": "./video-decoder.esm.js",
@@ -31,5 +31,4 @@ export declare class TRTCVideoDecoder implements IPlugin {
31
31
  stop(option: StopOption): void;
32
32
  update(option: UpdateOption): void;
33
33
  }
34
-
35
- export default TRTCVideoDecoder;
34
+ export { };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/basic-beauty",
3
- "version": "5.15.0-wasm.2",
3
+ "version": "5.15.1-beta.1",
4
4
  "description": "TRTC Web SDK 5.x basic-beauty plugin",
5
5
  "main": "./basic-beauty.esm.js",
6
6
  "module": "./basic-beauty.esm.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/beauty",
3
- "version": "5.15.0-wasm.2",
3
+ "version": "5.15.1-beta.1",
4
4
  "description": "TRTC Web SDK 5.x beauty plugin",
5
5
  "main": "./beauty.esm.js",
6
6
  "module": "./beauty.esm.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/video-mixer",
3
- "version": "5.15.0-wasm.2",
3
+ "version": "5.15.1-beta.1",
4
4
  "description": "TRTC Web SDK 5.x videoMixer plugin",
5
5
  "main": "./video-mixer.esm.js",
6
6
  "module": "./video-mixer.esm.js",
@@ -35,6 +35,7 @@ export interface CameraSource {
35
35
  videoTrack?: MediaStreamTrack;
36
36
  profile?: keyof typeof videoProfileMap | VideoProfile;
37
37
  layout: LayerOption;
38
+ useInternalTrack?: boolean;
38
39
  }
39
40
  export interface ScreenSource {
40
41
  // 参数与 startScreenShare 对齐
@@ -44,6 +45,9 @@ export interface ScreenSource {
44
45
  preferDisplaySurface?: 'current-tab' | 'tab' | 'window' | 'monitor';
45
46
  layout: LayerOption;
46
47
  systemAudio?: boolean;
48
+ videoTrack?: MediaStreamTrack;
49
+ audioTrack?: MediaStreamTrack;
50
+ useInternalTrack?: boolean;
47
51
  }
48
52
  export interface TextSource {
49
53
  id: string;
@@ -1 +1 @@
1
- var __defProp=Object.defineProperty,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,i,t)=>i in e?__defProp(e,i,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[i]=t,__spreadValues=(e,i)=>{for(var t in i||(i={}))__hasOwnProp.call(i,t)&&__defNormalProp(e,t,i[t]);if(__getOwnPropSymbols)for(var t of __getOwnPropSymbols(i))__propIsEnum.call(i,t)&&__defNormalProp(e,t,i[t]);return e},__publicField=(e,i,t)=>__defNormalProp(e,"symbol"!=typeof i?i+"":i,t),layoutProperty={x:{required:!0,type:"number"},y:{required:!0,type:"number"},width:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},height:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},zIndex:{required:!0,type:"number"},fillMode:{required:!1,type:"string"},mirror:{required:!1,type:"boolean"},rotation:{required:!1,type:"number"},hidden:{required:!1,type:"boolean"}},canvasValidateRule=(e,i=!1)=>({type:"object",required:i,properties:{canvasColor:{required:!1,type:["string",CanvasGradient,CanvasPattern]},width:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},height:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},frameRate:{required:!1,type:"number",notLessThanZero:!0,min:1,max:60}},validate(i,t,r){const{RtcError:a,ErrorCode:o,ErrorCodeDictionary:s}=e.errorModule;if(!i)return;const{width:n,height:d}=i;if(n&&d&&n*d>8294400)throw new a({code:o.INVALID_PARAMETER,message:"The mix resolution cannot be set higher than 3840 * 2160."})}}),viewValidateRule=e=>({required:!1,type:["string",HTMLElement,null],validate(i,t,r){const{RtcError:a,ErrorCode:o,ErrorCodeDictionary:s}=e.errorModule;if(e.utils.isString(i)){if(!document.getElementById(i))throw new a({code:o.INVALID_PARAMETER,extraCode:s.INVALID_ELEMENT_ID,fnName:r,messageParams:{key:t}})}}}),layoutValidateRule=(e,i=!0)=>({type:"object",required:i,properties:__spreadValues({},layoutProperty),validate(i,t,r){const{RtcError:a,ErrorCode:o,ErrorCodeDictionary:s}=e.errorModule;if(i){if(i.fillMode&&!["contain","cover","fill"].includes(i.fillMode))throw new a({code:o.INVALID_PARAMETER,extraCode:s.INVALID_PARAMETER_TYPE,message:"The fillMode parameter must be 'contain', 'cover' or 'fill'",fnName:r});if(i.rotation&&![0,90,180,270].includes(i.rotation))throw new a({code:o.INVALID_PARAMETER,extraCode:s.INVALID_PARAMETER_TYPE,message:"The rotation parameter must be 0, 90, 180 or 270",fnName:r})}}}),cameraValidateRule=e=>({type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},cameraId:{required:!1,type:"string"},videoTrack:{required:!1,instanceof:MediaStreamTrack},profile:{required:!1,type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},layout:__spreadValues({},layoutValidateRule(e))}}}),screenValidateRule=e=>({type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},profile:{required:!1,type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},captureElement:{required:!1,type:HTMLElement},preferDisplaySurface:{required:!1,type:"string"},layout:__spreadValues({},layoutValidateRule(e))},validate(i,t,r){const{RtcError:a,ErrorCode:o,ErrorCodeDictionary:s}=e.errorModule;if(!e.rtcDectection.isScreenCaptureApiAvailable())throw new a({code:o.ENV_NOT_SUPPORTED,fnName:r,extraCode:s.NOT_SUPPORTED_SCREEN_SHARE})}}}),textValidateRule=e=>({type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},content:{required:!0,type:"string"},font:{required:!1,type:"string"},color:{required:!1,type:["string",CanvasGradient,CanvasPattern]},layout:__spreadValues({},layoutValidateRule(e))}}}),imageValidateRule=e=>({type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},url:{required:!0,type:"string"},layout:__spreadValues({},layoutValidateRule(e))}}}),videoValidateRule=e=>({type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},url:{required:!0,type:"string"},layout:__spreadValues({},layoutValidateRule(e))}}});function startValidateRule(e){return{name:"VideoMixerOptions",type:"object",required:!0,allowEmpty:!1,properties:{view:__spreadValues({},viewValidateRule(e)),canvasInfo:__spreadValues({},canvasValidateRule(e,!0)),camera:__spreadValues({},cameraValidateRule(e)),screen:__spreadValues({},screenValidateRule(e)),text:__spreadValues({},textValidateRule(e)),image:__spreadValues({},imageValidateRule(e)),video:__spreadValues({},videoValidateRule(e))},validate(i,t,r,a){const{RtcError:o,ErrorCode:s,ErrorCodeDictionary:n}=e.errorModule;if(e.environment.isMobile())throw new o({code:s.ENV_NOT_SUPPORTED,message:"VideoMixer is not supported on mobile devices currently"});const{onScreenShareStop:d}=i;if(d&&!e.utils.isFunction(d))throw new o({code:s.INVALID_PARAMETER,extraCode:n.INVALID_PARAMETER_TYPE,fnName:r,messageParams:{key:"onScreenShareStop",value:typeof d,rule:{type:"Function"}}})}}}function updateValidateRule(e){return{name:"VideoMixerOptions",type:"object",required:!1,allowEmpty:!1,properties:{view:__spreadValues({},viewValidateRule(e)),canvasInfo:__spreadValues({},canvasValidateRule(e)),camera:__spreadValues({},cameraValidateRule(e)),screen:__spreadValues({},screenValidateRule(e)),text:__spreadValues({},textValidateRule(e)),image:__spreadValues({},imageValidateRule(e)),video:__spreadValues({},videoValidateRule(e))}}}function stopValidateRule(e){return{name:"StopVideoMixerOptions",required:!1}}var videoMixSeq=0,_VideoMixer=class e{constructor(e){this.core=e,__publicField(this,"seq"),__publicField(this,"log"),__publicField(this,"localMixVideoTrack",null),__publicField(this,"systemAudioTrackList",{}),__publicField(this,"_mixVideoConfig"),__publicField(this,"onScreenShareStop"),videoMixSeq+=1,this.seq=videoMixSeq,this.log=e.log.createChild({id:`${this.getAlias()}${videoMixSeq}`}),this.log.info("created")}getName(){return e.Name}getAlias(){return"vmix"}getValidateRule(e){switch(e){case"start":return startValidateRule(this.core);case"update":return updateValidateRule(this.core);case"stop":return stopValidateRule(this.core)}}getGroup(){return"vmix"}async start(e){this.localMixVideoTrack||(this.localMixVideoTrack=new this.core.LocalMixVideoTrack(this.core.room.videoManager)),this._mixVideoConfig={canvasInfo:{width:1920,height:1080}},e=this.core.utils.deepCloneBasic(e);const{view:i,onScreenShareStop:t}=e,r=await this.parseMixOptions(e);return t&&(this.onScreenShareStop=t,this._mixVideoConfig.onScreenShareStop=t),this._updatePreview({view:i,track:this.localMixVideoTrack}),this.core.utils.isUndefined(i)||(this._mixVideoConfig.view=i),await this.localMixVideoTrack.startMix(),{track:this.localMixVideoTrack._outputTrack,systemAudioTrackList:this.systemAudioTrackList,result:r}}async update(e){const{RtcError:i,ErrorCode:t}=this.core.errorModule;if(!this.localMixVideoTrack)throw new i({code:t.INVALID_OPERATION,message:"mixTrack doesn't initialize!"});e=this.core.utils.deepCloneBasic(e);const{view:r}=e,a=await this.parseMixOptions(e);return await this._updatePreview({view:r,track:this.localMixVideoTrack,prevConfig:this._mixVideoConfig}),this.core.utils.isUndefined(r)||(this._mixVideoConfig.view=r),{track:this.localMixVideoTrack._outputTrack,systemAudioTrackList:this.systemAudioTrackList,result:a}}async parseMixOptions(e){let i={successOptions:{},failedDetails:[]};const{RtcError:t,ErrorCode:r,ErrorCodeDictionary:a}=this.core.errorModule;if(!this.localMixVideoTrack||!this._mixVideoConfig)return i;const o=[],s=__spreadValues({},e),{canvasInfo:n,camera:d,screen:l,text:c,image:u,video:p}=e;let h=0,m=0;if(n){const{canvasColor:e,width:i,height:t,frameRate:r}=n;e&&this.localMixVideoTrack.setMixBackground(e),r&&this.localMixVideoTrack.setFps(r),this.localMixVideoTrack.resizeMixCanvas(i,t),this._mixVideoConfig.canvasInfo=n}if(d){h++;const{finalOptions:e,errors:i}=await this.parseCameraOptions(this.localMixVideoTrack,d,this._mixVideoConfig.camera);this._mixVideoConfig.camera=e,s.camera=e,i.length>0&&(o.push(...i),i.length===d.length&&m++)}if(l){h++;const{finalOptions:e,errors:i}=await this.parseScreenOptions(this.localMixVideoTrack,l,this._mixVideoConfig.screen);this._mixVideoConfig.screen=e,s.screen=e,i.length>0&&(o.push(...i),i.length===l.length&&m++)}if(c){h++;const{finalOptions:e,errors:i}=await this.parseTextOptions(this.localMixVideoTrack,c,this._mixVideoConfig.text);this._mixVideoConfig.text=e,s.text=e,i.length>0&&(o.push(...i),i.length===c.length&&m++)}if(u){h++;const{finalOptions:e,errors:i}=await this.parseImageOptions(this.localMixVideoTrack,u,this._mixVideoConfig.image);this._mixVideoConfig.image=e,s.image=e,i.length>0&&(o.push(...i),i.length===u.length&&m++)}if(p){h++;const{finalOptions:e,errors:i}=await this.parseVideoOptions(this.localMixVideoTrack,p,this._mixVideoConfig.video);this._mixVideoConfig.video=e,s.video=e,i.length>0&&(o.push(...i),i.length===p.length&&m++)}if(m>0&&m===h)throw new t({code:r.INVALID_PARAMETER,message:"all sources mix failed",data:{failedDetails:o}});return i={successOptions:s,failedDetails:o},i}async parseCameraOptions(e,i,t=[]){var r,a;const o=new Set(i.map((e=>e.id))),s=t.filter((e=>!o.has(e.id))).map((e=>e.id));for(const i of s)e.removeCameraSource(i);const n=new Map(t.map((e=>[e.id,e]))),d=[],l=[];for(const t of i){const{id:i,layout:o,profile:s}=t;try{if(e.inputLocalVideoTracks.has(i)){const n=null==(r=e.inputLocalVideoTracks.get(i))?void 0:r.mediaTrack;await this.updateCameraProfile(t);const d=null==(a=e.inputLocalVideoTracks.get(i))?void 0:a.mediaTrack;let l;s&&(l=this.core.utils.isString(s)?this.core.constants.videoProfileMap[s]:s),d!==n?e.updateCameraSource(i,o,d,l):e.updateCameraSource(i,o,null,l)}else{const r=await this.captureCamera(t);try{e.addCameraSource(i,r,o)}catch(e){throw r.close(),e}}d.push(t)}catch(e){l.push({id:i,error:e}),n.has(i)&&d.push(n.get(i))}}return{finalOptions:d,errors:l}}async parseScreenOptions(e,i,t=[]){const r=new Set(i.map((e=>e.id))),a=t.filter((e=>!r.has(e.id))).map((e=>e.id));for(const i of a)e.removeScreenSource(i);const o=new Map(t.map((e=>[e.id,e]))),s=[],n=[];for(const t of i){const{id:i,layout:r}=t;try{if(e.inputLocalScreenTracks.has(i))e.updateScreenSource(i,r);else{const a=await this.captureScreen(t);try{e.addScreenSource(i,a,r)}catch(e){throw a.close(),e}}s.push(t)}catch(e){n.push({id:i,error:e}),o.has(i)&&s.push(o.get(i))}}return{finalOptions:s,errors:n}}async parseTextOptions(e,i,t=[]){const r=new Set(i.map((e=>e.id))),a=t.filter((e=>!r.has(e.id))).map((e=>e.id));for(const i of a)e.removeTextSource(i);const o=new Map(t.map((e=>[e.id,e]))),s=[],n=[];for(const r of i){const{id:i}=r;try{t.some((e=>e.id===i))?e.updateTextSource(r):e.addTextSource(r),s.push(r)}catch(e){n.push({id:i,error:e}),o.has(i)&&s.push(o.get(i))}}return{finalOptions:s,errors:n}}async parseImageOptions(e,i,t=[]){const r=new Set(i.map((e=>e.id))),a=t.filter((e=>!r.has(e.id))).map((e=>e.id));for(const i of a)e.removeImageSource(i);const o=new Map(t.map((e=>[e.id,e]))),s=[],n=[];for(const r of i){const{id:i,url:a,layout:d}=r;try{const o=t.find((e=>e.id===i));if(o){let t;o.url!==a&&(t=await this.core.utils.loadImage(a)),e.updateImageSource(i,d,t)}else{const t=await this.core.utils.loadImage(a);e.addImageSource(i,t,d)}s.push(r)}catch(e){n.push({id:i,error:e}),o.has(i)&&s.push(o.get(i))}}return{finalOptions:s,errors:n}}async parseVideoOptions(e,i,t=[]){const r=new Set(i.map((e=>e.id))),a=t.filter((e=>!r.has(e.id))).map((e=>e.id));for(const i of a)e.removeVideoSource(i);const o=new Map(t.map((e=>[e.id,e]))),s=[],n=[];for(const r of i){const{id:i,url:a,layout:d}=r;try{const o=t.find((e=>e.id===i));let n;if(o)o.url!==a&&(n=await this.core.utils.loadVideo(a)),e.updateVideoSource(i,d,n);else{const t=await this.core.utils.loadVideo(a);e.addVideoSource(i,t,d)}s.push(r)}catch(e){n.push({id:i,error:e}),o.has(i)&&s.push(o.get(i))}}return{finalOptions:s,errors:n}}async captureCamera(e){const{id:i,cameraId:t,videoTrack:r,profile:a}=e,o=new this.core.LocalVideoTrack;o.log.id+=`-${i}`;const s={};return t?s.deviceId=t:this.core.utils.isUndefined(r)||(s.customSource=r),this.core.utils.isUndefined(a)||(this.core.utils.isString(a)?this.core.constants.videoProfileMap[a]&&o.setProfile(this.core.constants.videoProfileMap[a]):o.setProfile(a)),await o.capture(s),o}async updateCameraProfile(e){var i;const{id:t,cameraId:r,videoTrack:a,profile:o}=e,s=null==(i=this.localMixVideoTrack)?void 0:i.inputLocalVideoTracks.get(t);s&&(r?await s.switchDevice(r):this.core.utils.isUndefined(a)||await s.setInputMediaStreamTrack(a),this.core.utils.isUndefined(o)||(this.core.utils.isString(o)?this.core.constants.videoProfileMap[o]&&s.setProfile(this.core.constants.videoProfileMap[o]):s.setProfile(o),r&&s.isNeedToSwitchDevice(r)||await s.applyProfile()))}async captureScreen(e){const{id:i,profile:t,captureElement:r,preferDisplaySurface:a}=e,o=new this.core.LocalScreenTrack;o.log.id+=`-${i}`;const s={};this.core.utils.isUndefined(t)||(this.core.utils.isString(t)?this.core.constants.screenProfileMap[t]&&o.setProfile(this.core.constants.screenProfileMap[t]):o.setProfile(t)),r&&(s.captureElement=r),a&&(s.preferDisplaySurface=a),s.systemAudio=e.systemAudio;const n=await o.capture(s);return s.systemAudio&&n.getAudioTracks().length>0&&(this.systemAudioTrackList[i]=n.getAudioTracks()[0]),o.mediaTrack.addEventListener(this.core.constants.NAME.ENDED,(()=>{var e,t,r;null==(e=this.localMixVideoTrack)||e.removeScreenSource(i),(null==(t=this._mixVideoConfig)?void 0:t.screen)&&(this._mixVideoConfig.screen=this._mixVideoConfig.screen.filter((e=>e.id!==i))),null==(r=this.onScreenShareStop)||r.call(this,i)})),o}async _updatePreview({view:e,track:i,prevConfig:t}){if(this.core.utils.isUndefined(e)&&t&&t.view){const e=this.core.utils.getViewListFromView(t.view);e.length>0&&await i.play(e)}if(!this.core.utils.isUndefined(e)){const t=this.core.utils.getViewListFromView(e);t.length>0?await i.play(t):i.stop()}}stop(){var e;null==(e=this.localMixVideoTrack)||e.close(),this.localMixVideoTrack=null,delete this.onScreenShareStop,delete this._mixVideoConfig}};__publicField(_VideoMixer,"Name","VideoMixer");var VideoMixer=_VideoMixer,index_default=VideoMixer;export{index_default as default};export{VideoMixer};
1
+ var __defProp=Object.defineProperty,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,r,t)=>r in e?__defProp(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t,__spreadValues=(e,r)=>{for(var t in r||(r={}))__hasOwnProp.call(r,t)&&__defNormalProp(e,t,r[t]);if(__getOwnPropSymbols)for(var t of __getOwnPropSymbols(r))__propIsEnum.call(r,t)&&__defNormalProp(e,t,r[t]);return e},__publicField=(e,r,t)=>__defNormalProp(e,"symbol"!=typeof r?r+"":r,t),layoutProperty={x:{required:!0,type:"number"},y:{required:!0,type:"number"},width:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},height:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},zIndex:{required:!0,type:"number"},fillMode:{required:!1,type:"string"},mirror:{required:!1,type:"boolean"},rotation:{required:!1,type:"number"},hidden:{required:!1,type:"boolean"}},canvasValidateRule=(e,r=!1)=>({type:"object",required:r,properties:{canvasColor:{required:!1,type:["string",CanvasGradient,CanvasPattern]},width:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},height:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},frameRate:{required:!1,type:"number",notLessThanZero:!0,min:1,max:60}},validate(r,t,i){const{RtcError:o,ErrorCode:a,ErrorCodeDictionary:s}=e.errorModule;if(!r)return;const{width:c,height:n}=r;if(c&&n&&c*n>8294400)throw new o({code:a.INVALID_PARAMETER,message:"The mix resolution cannot be set higher than 3840 * 2160."})}}),viewValidateRule=e=>({required:!1,type:["string",HTMLElement,null],validate(r,t,i){const{RtcError:o,ErrorCode:a,ErrorCodeDictionary:s}=e.errorModule;if(e.utils.isString(r)){if(!document.getElementById(r))throw new o({code:a.INVALID_PARAMETER,extraCode:s.INVALID_ELEMENT_ID,fnName:i,messageParams:{key:t}})}}}),layoutValidateRule=(e,r=!0)=>({type:"object",required:r,properties:__spreadValues({},layoutProperty),validate(r,t,i){const{RtcError:o,ErrorCode:a,ErrorCodeDictionary:s}=e.errorModule;if(r){if(r.fillMode&&!["contain","cover","fill"].includes(r.fillMode))throw new o({code:a.INVALID_PARAMETER,extraCode:s.INVALID_PARAMETER_TYPE,message:"The fillMode parameter must be 'contain', 'cover' or 'fill'",fnName:i});if(r.rotation&&![0,90,180,270].includes(r.rotation))throw new o({code:a.INVALID_PARAMETER,extraCode:s.INVALID_PARAMETER_TYPE,message:"The rotation parameter must be 0, 90, 180 or 270",fnName:i})}}}),cameraValidateRule=e=>({type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},cameraId:{required:!1,type:"string"},videoTrack:{required:!1,instanceof:MediaStreamTrack},profile:{required:!1,type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},layout:__spreadValues({},layoutValidateRule(e))}}}),screenValidateRule=e=>({type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},profile:{required:!1,type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},captureElement:{required:!1,type:HTMLElement},preferDisplaySurface:{required:!1,type:"string"},layout:__spreadValues({},layoutValidateRule(e))},validate(r,t,i){const{RtcError:o,ErrorCode:a,ErrorCodeDictionary:s}=e.errorModule;if(!e.rtcDectection.isScreenCaptureApiAvailable())throw new o({code:a.ENV_NOT_SUPPORTED,fnName:i,extraCode:s.NOT_SUPPORTED_SCREEN_SHARE})}}}),textValidateRule=e=>({type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},content:{required:!0,type:"string"},font:{required:!1,type:"string"},color:{required:!1,type:["string",CanvasGradient,CanvasPattern]},layout:__spreadValues({},layoutValidateRule(e))}}}),imageValidateRule=e=>({type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},url:{required:!0,type:"string"},layout:__spreadValues({},layoutValidateRule(e))}}}),videoValidateRule=e=>({type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},url:{required:!0,type:"string"},layout:__spreadValues({},layoutValidateRule(e))}}});function startValidateRule(e){return{name:"VideoMixerOptions",type:"object",required:!0,allowEmpty:!1,properties:{view:__spreadValues({},viewValidateRule(e)),canvasInfo:__spreadValues({},canvasValidateRule(e,!0)),camera:__spreadValues({},cameraValidateRule(e)),screen:__spreadValues({},screenValidateRule(e)),text:__spreadValues({},textValidateRule(e)),image:__spreadValues({},imageValidateRule(e)),video:__spreadValues({},videoValidateRule(e))},validate(r,t,i,o){const{RtcError:a,ErrorCode:s,ErrorCodeDictionary:c}=e.errorModule;if(e.environment.isMobile())throw new a({code:s.ENV_NOT_SUPPORTED,message:"VideoMixer is not supported on mobile devices currently"});const{onScreenShareStop:n}=r;if(n&&!e.utils.isFunction(n))throw new a({code:s.INVALID_PARAMETER,extraCode:c.INVALID_PARAMETER_TYPE,fnName:i,messageParams:{key:"onScreenShareStop",value:typeof n,rule:{type:"Function"}}})}}}function updateValidateRule(e){return{name:"VideoMixerOptions",type:"object",required:!1,allowEmpty:!1,properties:{view:__spreadValues({},viewValidateRule(e)),canvasInfo:__spreadValues({},canvasValidateRule(e)),camera:__spreadValues({},cameraValidateRule(e)),screen:__spreadValues({},screenValidateRule(e)),text:__spreadValues({},textValidateRule(e)),image:__spreadValues({},imageValidateRule(e)),video:__spreadValues({},videoValidateRule(e))}}}function stopValidateRule(e){return{name:"StopVideoMixerOptions",required:!1}}var videoMixSeq=0,_VideoMixer=class e{constructor(e){this.core=e,__publicField(this,"seq"),__publicField(this,"log"),__publicField(this,"localMixVideoTrack",null),__publicField(this,"systemAudioTrackList",{}),__publicField(this,"_mixVideoConfig"),__publicField(this,"onScreenShareStop"),__publicField(this,"eventListeners",new Map),videoMixSeq+=1,this.seq=videoMixSeq,this.log=e.log.createChild({id:`${this.getAlias()}${videoMixSeq}`}),this.log.info("created")}getName(){return e.Name}getAlias(){return"vmix"}getValidateRule(e){switch(e){case"start":return startValidateRule(this.core);case"update":return updateValidateRule(this.core);case"stop":return stopValidateRule(this.core)}}getGroup(){return"vmix"}async start(e){this.localMixVideoTrack||(this.localMixVideoTrack=new this.core.LocalMixVideoTrack(this.core.room.videoManager)),this._mixVideoConfig={canvasInfo:{width:1920,height:1080}},e=this.core.utils.deepCloneBasic(e);const{view:r,onScreenShareStop:t}=e,i=await this.parseMixOptions(e);return t&&(this.onScreenShareStop=t,this._mixVideoConfig.onScreenShareStop=t),this._updatePreview({view:r,track:this.localMixVideoTrack}),this.core.utils.isUndefined(r)||(this._mixVideoConfig.view=r),await this.localMixVideoTrack.startMix(),{track:this.localMixVideoTrack._outputTrack,systemAudioTrackList:this.systemAudioTrackList,result:i}}async update(e){const{RtcError:r,ErrorCode:t}=this.core.errorModule;if(!this.localMixVideoTrack)throw new r({code:t.INVALID_OPERATION,message:"mixTrack doesn't initialize!"});e=this.core.utils.deepCloneBasic(e);const{view:i}=e,o=await this.parseMixOptions(e);return await this._updatePreview({view:i,track:this.localMixVideoTrack,prevConfig:this._mixVideoConfig}),this.core.utils.isUndefined(i)||(this._mixVideoConfig.view=i),{track:this.localMixVideoTrack._outputTrack,systemAudioTrackList:this.systemAudioTrackList,result:o}}stop(){var e;this.eventListeners.forEach(((e,r)=>{this.removeEventListeners(r)})),this.eventListeners.clear(),null==(e=this.localMixVideoTrack)||e.close(),this.localMixVideoTrack=null,Object.values(this.systemAudioTrackList).forEach((e=>e.stop())),this.systemAudioTrackList={},delete this.onScreenShareStop,delete this._mixVideoConfig}async parseMixOptions(e){const{RtcError:r,ErrorCode:t}=this.core.errorModule;if(!this.localMixVideoTrack||!this._mixVideoConfig)return{successOptions:{},failedDetails:[]};const i=[],o=__spreadValues({},e),{canvasInfo:a,camera:s,screen:c,text:n,image:d,video:l}=e;a&&this.parseCanvasOptions(a);let u=0,p=0;const h=[{key:"camera",options:s,parser:this.parseCameraOptions.bind(this)},{key:"screen",options:c,parser:this.parseScreenOptions.bind(this)},{key:"text",options:n,parser:this.parseTextOptions.bind(this)},{key:"image",options:d,parser:this.parseImageOptions.bind(this)},{key:"video",options:l,parser:this.parseVideoOptions.bind(this)}];for(const{key:e,options:r,parser:t}of h)if(r){u++;const a=await t(this.localMixVideoTrack,r,this._mixVideoConfig[e]||[]);this._mixVideoConfig[e]=a.finalOptions,o[e]=a.finalOptions,a.errors.length>0&&(i.push(...a.errors),a.errors.length===r.length&&p++)}if(p>0&&p===u)throw new r({code:t.INVALID_PARAMETER,message:"all sources mix failed",data:{failedDetails:i}});return{successOptions:o,failedDetails:i}}parseCanvasOptions(e){if(!this.localMixVideoTrack||!this._mixVideoConfig)return;const{canvasColor:r,width:t,height:i,frameRate:o}=e;r&&this.localMixVideoTrack.setMixBackground(r),o&&this.localMixVideoTrack.setFps(o),this.localMixVideoTrack.resizeMixCanvas(t,i),this._mixVideoConfig.canvasInfo=e}prepareSourceOptions(e,r){const t=new Set(e.map((e=>e.id)));return{removeIdList:r.filter((e=>!t.has(e.id))).map((e=>e.id)),preOptionsMap:new Map(r.map((e=>[e.id,e])))}}recordSourceError(e,r,t,i,o){o.push({id:e,error:r}),t.has(e)&&i.push(t.get(e))}async parseCameraOptions(e,r,t=[]){const{removeIdList:i,preOptionsMap:o}=this.prepareSourceOptions(r,t);for(const r of i)e.removeCameraSource(r);const a=[],s=[];for(const t of r)try{await this.processSingleCameraSource(e,t),a.push(t)}catch(e){this.recordSourceError(t.id,e,o,a,s)}return{finalOptions:a,errors:s}}async processSingleCameraSource(e,r){var t;const{id:i,layout:o,profile:a,useInternalTrack:s}=r;s&&((null==(t=this.core.trtc.localVideoTrack)?void 0:t.sourceTrack)?r.videoTrack=this.core.trtc.localVideoTrack.sourceTrack:r.videoTrack=this.createPlaceholderVideoTrack()),this.log.info(`videomixer camera option ${JSON.stringify(r)}`),e.inputLocalVideoTracks.has(i)?await this.updateExistingCameraSource(e,r):await this.addNewCameraSource(e,r)}async updateExistingCameraSource(e,r){var t,i;const{id:o,layout:a,profile:s}=r,c=null==(t=e.inputLocalVideoTracks.get(o))?void 0:t.mediaTrack;await this.updateCameraProfile(r);const n=null==(i=e.inputLocalVideoTracks.get(o))?void 0:i.mediaTrack,d=this.resolveVideoProfile(s);n!==c?e.updateCameraSource(o,a,n,d):e.updateCameraSource(o,a,null,d)}async addNewCameraSource(e,r){const{id:t,layout:i,useInternalTrack:o}=r,a=await this.captureCamera(r);if(this.removeEventListeners(t),o){const r=r=>{var i,o;if(null==(i=r.track)?void 0:i.isScreen)return;this.log.info("videomixer camera LOCAL_TRACK_CAPTURE_SUCCESS");const a=e.inputLocalVideoTracks.get(t);a&&(null==(o=r.track)?void 0:o.sourceTrack)&&a.setInputMediaStreamTrack(r.track.sourceTrack)};this.core.innerEmitter.on("102",r),this.eventListeners.has(t)||this.eventListeners.set(t,{}),this.eventListeners.get(t).captureSuccess=()=>{this.core.innerEmitter.off("102",r)}}try{e.addCameraSource(t,a,i)}catch(e){throw a.close(),e}}resolveVideoProfile(e){if(!this.core.utils.isUndefined(e))return this.core.utils.isString(e)?this.core.constants.videoProfileMap[e]:e}async parseScreenOptions(e,r,t=[]){const{removeIdList:i,preOptionsMap:o}=this.prepareSourceOptions(r,t);for(const r of i)e.removeScreenSource(r),this.removeSystemAudioTrack(r);const a=[],s=[];for(const t of r)try{await this.processSingleScreenSource(e,t,o),a.push(t)}catch(e){this.recordSourceError(t.id,e,o,a,s)}return{finalOptions:a,errors:s}}async processSingleScreenSource(e,r,t){var i,o;const{id:a,layout:s,useInternalTrack:c}=r;c&&((null==(i=this.core.trtc.localScreenTrack)?void 0:i.mediaTrack)?(r.videoTrack=this.core.trtc.localScreenTrack.mediaTrack,(null==(o=this.core.trtc.localScreenAudioTrack)?void 0:o.mediaTrack)&&(r.audioTrack=this.core.trtc.localScreenAudioTrack.mediaTrack),delete r.captureElement,delete r.preferDisplaySurface,delete r.systemAudio):r.videoTrack=this.createPlaceholderVideoTrack()),this.log.info(`videomixer screen option ${JSON.stringify(r)}`);const n=t.get(a),d=e.inputLocalScreenTracks.has(a),l=!(null==n?void 0:n.systemAudio)&&r.systemAudio;d&&!l?this.updateExistingScreenSource(e,a,s,n,r):await this.addNewScreenSource(e,r,n)}updateExistingScreenSource(e,r,t,i,o){e.updateScreenSource(r,t),(null==i?void 0:i.systemAudio)&&!o.systemAudio&&this.removeSystemAudioTrack(r)}async addNewScreenSource(e,r,t){const{id:i,useInternalTrack:o}=r,a=await this.captureScreen(r);if(this.removeEventListeners(i),o){const r=r=>{var t,o,a;if(!(null==(t=r.track)?void 0:t.isScreen))return;this.log.info("videomixer screen LOCAL_TRACK_CAPTURE_SUCCESS");const s=e.inputLocalScreenTracks.get(i);s&&(null==(o=r.track)?void 0:o.mediaTrack)&&s.setInputMediaStreamTrack(r.track.mediaTrack),this.systemAudioTrackList[i]&&(null==(a=r.track)?void 0:a.mediaTrack)&&(this.systemAudioTrackList[i]=r.track.mediaTrack)};this.core.innerEmitter.on("102",r),this.eventListeners.has(i)||this.eventListeners.set(i,{}),this.eventListeners.get(i).captureSuccess=()=>{this.core.innerEmitter.off("102",r)}}!(null==t?void 0:t.systemAudio)&&r.systemAudio&&e.inputLocalScreenTracks.has(r.id)&&e.removeScreenSource(r.id);try{e.addScreenSource(r.id,a,r.layout)}catch(e){throw a.close(),e}}async parseTextOptions(e,r,t=[]){const{removeIdList:i,preOptionsMap:o}=this.prepareSourceOptions(r,t);for(const r of i)e.removeTextSource(r);const a=[],s=[];for(const t of r)try{o.has(t.id)?e.updateTextSource(t):e.addTextSource(t),a.push(t)}catch(e){this.recordSourceError(t.id,e,o,a,s)}return{finalOptions:a,errors:s}}async parseImageOptions(e,r,t=[]){const{removeIdList:i,preOptionsMap:o}=this.prepareSourceOptions(r,t);for(const r of i)e.removeImageSource(r);const a=[],s=[];for(const t of r)try{await this.processSingleImageSource(e,t,o),a.push(t)}catch(e){this.recordSourceError(t.id,e,o,a,s)}return{finalOptions:a,errors:s}}async processSingleImageSource(e,r,t){const{id:i,url:o,layout:a}=r,s=t.get(i);if(s){let r;s.url!==o&&(r=await this.core.utils.loadImage(o)),e.updateImageSource(i,a,r)}else{const r=await this.core.utils.loadImage(o);e.addImageSource(i,r,a)}}async parseVideoOptions(e,r,t=[]){const{removeIdList:i,preOptionsMap:o}=this.prepareSourceOptions(r,t);for(const r of i)e.removeVideoSource(r);const a=[],s=[];for(const t of r)try{await this.processSingleVideoSource(e,t,o),a.push(t)}catch(e){this.recordSourceError(t.id,e,o,a,s)}return{finalOptions:a,errors:s}}async processSingleVideoSource(e,r,t){const{id:i,url:o,layout:a}=r,s=t.get(i);if(s){let r;s.url!==o&&(r=await this.core.utils.loadVideo(o)),e.updateVideoSource(i,a,r)}else{const r=await this.core.utils.loadVideo(o);e.addVideoSource(i,r,a)}}createPlaceholderVideoTrack(){const e=document.createElement("canvas");e.width=640,e.height=480;const r=e.getContext("2d");r&&(r.fillStyle="black",r.fillRect(0,0,e.width,e.height));return e.captureStream(1).getVideoTracks()[0]}removeEventListeners(e){const r=this.eventListeners.get(e);r&&(r.inputMediaTrackChanged&&r.inputMediaTrackChanged(),r.captureSuccess&&r.captureSuccess(),this.eventListeners.delete(e))}async captureCamera(e){const{id:r,cameraId:t,videoTrack:i,profile:o}=e,a=new this.core.LocalVideoTrack;a.log.id+=`-${r}`;const s={};if(t?s.deviceId=t:this.core.utils.isUndefined(i)||(s.customSource=i),!this.core.utils.isUndefined(o)){const e=this.resolveVideoProfile(o);e&&a.setProfile(e)}return await a.capture(s),a}async updateCameraProfile(e){var r;const{id:t,cameraId:i,videoTrack:o,profile:a}=e,s=null==(r=this.localMixVideoTrack)?void 0:r.inputLocalVideoTracks.get(t);if(s&&(i?await s.switchDevice(i):this.core.utils.isUndefined(o)||await s.setInputMediaStreamTrack(o),!this.core.utils.isUndefined(a))){const e=this.resolveVideoProfile(a);e&&s.setProfile(e),i&&s.isNeedToSwitchDevice(i)||await s.applyProfile()}}async captureScreen(e){const{id:r,profile:t,captureElement:i,preferDisplaySurface:o,systemAudio:a,videoTrack:s,audioTrack:c}=e,n=new this.core.LocalScreenTrack;n.log.id+=`-${r}`;const d={captureElement:i,preferDisplaySurface:o,systemAudio:a,videoTrack:s,audioTrack:c};if(!this.core.utils.isUndefined(t))if(this.core.utils.isString(t)){const e=this.core.constants.screenProfileMap[t];e&&n.setProfile(e)}else n.setProfile(t);const l=await n.capture(d);return a&&l.getAudioTracks().length>0?(this.systemAudioTrackList[r]=l.getAudioTracks()[0],this.log.info(`${r} system audio track captured`)):this.removeSystemAudioTrack(r),n.mediaTrack.addEventListener(this.core.constants.NAME.ENDED,(()=>{this.handleScreenShareEnded(r)})),n}handleScreenShareEnded(e){var r,t,i;null==(r=this.localMixVideoTrack)||r.removeScreenSource(e),(null==(t=this._mixVideoConfig)?void 0:t.screen)&&(this._mixVideoConfig.screen=this._mixVideoConfig.screen.filter((r=>r.id!==e))),null==(i=this.onScreenShareStop)||i.call(this,e)}async _updatePreview({view:e,track:r,prevConfig:t}){if(this.core.utils.isUndefined(e)&&(null==t?void 0:t.view)){const e=this.core.utils.getViewListFromView(t.view);e.length>0&&await r.play(e)}else if(!this.core.utils.isUndefined(e)){const t=this.core.utils.getViewListFromView(e);t.length>0?await r.play(t):r.stop()}}removeSystemAudioTrack(e){const r=this.systemAudioTrackList[e];r&&(r.stop(),this.log.info(`${e} system audio track stop`),delete this.systemAudioTrackList[e])}};__publicField(_VideoMixer,"Name","VideoMixer");var VideoMixer=_VideoMixer,index_default=VideoMixer;export{index_default as default};export{VideoMixer};
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).VideoMixer=t()}(this,(function(){"use strict";function e(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function t(e,t,r,n,i,o,a){try{var c=e[o](a),s=c.value}catch(e){return void r(e)}c.done?t(s):Promise.resolve(s).then(n,i)}function r(e){return function(){var r=this,n=arguments;return new Promise((function(i,o){var a=e.apply(r,n);function c(e){t(a,i,o,c,s,"next",e)}function s(e){t(a,i,o,c,s,"throw",e)}c(void 0)}))}}function n(e,t,r){return t&&function(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,c(n.key),n)}}(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function i(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=u(e))||t){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){c=!0,o=e},f:function(){try{a||null==r.return||r.return()}finally{if(c)throw o}}}}function o(){o=function(){return t};var e,t={},r=Object.prototype,n=r.hasOwnProperty,i=Object.defineProperty||function(e,t,r){e[t]=r.value},a="function"==typeof Symbol?Symbol:{},c=a.iterator||"@@iterator",s=a.asyncIterator||"@@asyncIterator",u=a.toStringTag||"@@toStringTag";function l(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,r){return e[t]=r}}function f(e,t,r,n){var o=t&&t.prototype instanceof g?t:g,a=Object.create(o.prototype),c=new O(n||[]);return i(a,"_invoke",{value:M(e,r,c)}),a}function p(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}t.wrap=f;var d="suspendedStart",h="suspendedYield",y="executing",v="completed",m={};function g(){}function x(){}function b(){}var w={};l(w,c,(function(){return this}));var k=Object.getPrototypeOf,S=k&&k(k(A([])));S&&S!==r&&n.call(S,c)&&(w=S);var T=b.prototype=g.prototype=Object.create(w);function E(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function V(e,t){function r(i,o,a,c){var s=p(e[i],e,o);if("throw"!==s.type){var u=s.arg,l=u.value;return l&&"object"==typeof l&&n.call(l,"__await")?t.resolve(l.__await).then((function(e){r("next",e,a,c)}),(function(e){r("throw",e,a,c)})):t.resolve(l).then((function(e){u.value=e,a(u)}),(function(e){return r("throw",e,a,c)}))}c(s.arg)}var o;i(this,"_invoke",{value:function(e,n){function i(){return new t((function(t,i){r(e,n,t,i)}))}return o=o?o.then(i,i):i()}})}function M(t,r,n){var i=d;return function(o,a){if(i===y)throw Error("Generator is already running");if(i===v){if("throw"===o)throw a;return{value:e,done:!0}}for(n.method=o,n.arg=a;;){var c=n.delegate;if(c){var s=C(c,n);if(s){if(s===m)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(i===d)throw i=v,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);i=y;var u=p(t,r,n);if("normal"===u.type){if(i=n.done?v:h,u.arg===m)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(i=v,n.method="throw",n.arg=u.arg)}}}function C(t,r){var n=r.method,i=t.iterator[n];if(i===e)return r.delegate=null,"throw"===n&&t.iterator.return&&(r.method="return",r.arg=e,C(t,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),m;var o=p(i,t.iterator,r.arg);if("throw"===o.type)return r.method="throw",r.arg=o.arg,r.delegate=null,m;var a=o.arg;return a?a.done?(r[t.resultName]=a.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,m):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,m)}function L(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function _(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function O(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(L,this),this.reset(!0)}function A(t){if(t||""===t){var r=t[c];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var i=-1,o=function r(){for(;++i<t.length;)if(n.call(t,i))return r.value=t[i],r.done=!1,r;return r.value=e,r.done=!0,r};return o.next=o}}throw new TypeError(typeof t+" is not iterable")}return x.prototype=b,i(T,"constructor",{value:b,configurable:!0}),i(b,"constructor",{value:x,configurable:!0}),x.displayName=l(b,u,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===x||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,b):(e.__proto__=b,l(e,u,"GeneratorFunction")),e.prototype=Object.create(T),e},t.awrap=function(e){return{__await:e}},E(V.prototype),l(V.prototype,s,(function(){return this})),t.AsyncIterator=V,t.async=function(e,r,n,i,o){void 0===o&&(o=Promise);var a=new V(f(e,r,n,i),o);return t.isGeneratorFunction(r)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},E(T),l(T,u,"Generator"),l(T,c,(function(){return this})),l(T,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),r=[];for(var n in t)r.push(n);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},t.values=A,O.prototype={constructor:O,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(_),!t)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var r=this;function i(n,i){return c.type="throw",c.arg=t,r.next=n,i&&(r.method="next",r.arg=e),!!i}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],c=a.completion;if("root"===a.tryLoc)return i("end");if(a.tryLoc<=this.prev){var s=n.call(a,"catchLoc"),u=n.call(a,"finallyLoc");if(s&&u){if(this.prev<a.catchLoc)return i(a.catchLoc,!0);if(this.prev<a.finallyLoc)return i(a.finallyLoc)}else if(s){if(this.prev<a.catchLoc)return i(a.catchLoc,!0)}else{if(!u)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return i(a.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var o=i;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=e,a.arg=t,o?(this.method="next",this.next=o.finallyLoc,m):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),m},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),_(r),m}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;_(r)}return i}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:A(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),m}},t}function a(t){return function(t){if(Array.isArray(t))return e(t)}(t)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(t)||u(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:t+""}function s(e){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s(e)}function u(t,r){if(t){if("string"==typeof t)return e(t,r);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?e(t,r):void 0}}var l=Object.defineProperty,f=Object.getOwnPropertySymbols,p=Object.prototype.hasOwnProperty,d=Object.prototype.propertyIsEnumerable,h=function(e,t,r){return t in e?l(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r},y=function(e,t){for(var r in t||(t={}))p.call(t,r)&&h(e,r,t[r]);if(f){var n,o=i(f(t));try{for(o.s();!(n=o.n()).done;){r=n.value;d.call(t,r)&&h(e,r,t[r])}}catch(e){o.e(e)}finally{o.f()}}return e},v=function(e,t,r){return h(e,"symbol"!==s(t)?t+"":t,r)},m={x:{required:!0,type:"number"},y:{required:!0,type:"number"},width:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},height:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},zIndex:{required:!0,type:"number"},fillMode:{required:!1,type:"string"},mirror:{required:!1,type:"boolean"},rotation:{required:!1,type:"number"},hidden:{required:!1,type:"boolean"}},g=function(e){return{type:"object",required:arguments.length>1&&void 0!==arguments[1]&&arguments[1],properties:{canvasColor:{required:!1,type:["string",CanvasGradient,CanvasPattern]},width:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},height:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},frameRate:{required:!1,type:"number",notLessThanZero:!0,min:1,max:60}},validate:function(t,r,n){var i=e.errorModule,o=i.RtcError,a=i.ErrorCode;if(i.ErrorCodeDictionary,t){var c=t.width,s=t.height;if(c&&s&&c*s>8294400)throw new o({code:a.INVALID_PARAMETER,message:"The mix resolution cannot be set higher than 3840 * 2160."})}}}},x=function(e){return{required:!1,type:["string",HTMLElement,null],validate:function(t,r,n){var i=e.errorModule,o=i.RtcError,a=i.ErrorCode,c=i.ErrorCodeDictionary;if(e.utils.isString(t)&&!document.getElementById(t))throw new o({code:a.INVALID_PARAMETER,extraCode:c.INVALID_ELEMENT_ID,fnName:n,messageParams:{key:r}})}}},b=function(e){return{type:"object",required:!(arguments.length>1&&void 0!==arguments[1])||arguments[1],properties:y({},m),validate:function(t,r,n){var i=e.errorModule,o=i.RtcError,a=i.ErrorCode,c=i.ErrorCodeDictionary;if(t){if(t.fillMode&&!["contain","cover","fill"].includes(t.fillMode))throw new o({code:a.INVALID_PARAMETER,extraCode:c.INVALID_PARAMETER_TYPE,message:"The fillMode parameter must be 'contain', 'cover' or 'fill'",fnName:n});if(t.rotation&&![0,90,180,270].includes(t.rotation))throw new o({code:a.INVALID_PARAMETER,extraCode:c.INVALID_PARAMETER_TYPE,message:"The rotation parameter must be 0, 90, 180 or 270",fnName:n})}}}},w=function(e){return{type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},cameraId:{required:!1,type:"string"},videoTrack:{required:!1,instanceof:MediaStreamTrack},profile:{required:!1,type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},layout:y({},b(e))}}}},k=function(e){return{type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},profile:{required:!1,type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},captureElement:{required:!1,type:HTMLElement},preferDisplaySurface:{required:!1,type:"string"},layout:y({},b(e))},validate:function(t,r,n){var i=e.errorModule,o=i.RtcError,a=i.ErrorCode,c=i.ErrorCodeDictionary;if(!e.rtcDectection.isScreenCaptureApiAvailable())throw new o({code:a.ENV_NOT_SUPPORTED,fnName:n,extraCode:c.NOT_SUPPORTED_SCREEN_SHARE})}}}},S=function(e){return{type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},content:{required:!0,type:"string"},font:{required:!1,type:"string"},color:{required:!1,type:["string",CanvasGradient,CanvasPattern]},layout:y({},b(e))}}}},T=function(e){return{type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},url:{required:!0,type:"string"},layout:y({},b(e))}}}},E=function(e){return{type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},url:{required:!0,type:"string"},layout:y({},b(e))}}}};var V=0,M=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.core=t,v(this,"seq"),v(this,"log"),v(this,"localMixVideoTrack",null),v(this,"systemAudioTrackList",{}),v(this,"_mixVideoConfig"),v(this,"onScreenShareStop"),V+=1,this.seq=V,this.log=t.log.createChild({id:"".concat(this.getAlias()).concat(V)}),this.log.info("created")}return n(e,[{key:"getName",value:function(){return e.Name}},{key:"getAlias",value:function(){return"vmix"}},{key:"getValidateRule",value:function(e){switch(e){case"start":return t=this.core,{name:"VideoMixerOptions",type:"object",required:!0,allowEmpty:!1,properties:{view:y({},x(t)),canvasInfo:y({},g(t,!0)),camera:y({},w(t)),screen:y({},k(t)),text:y({},S(t)),image:y({},T(t)),video:y({},E(t))},validate:function(e,r,n,i){var o=t.errorModule,a=o.RtcError,c=o.ErrorCode,u=o.ErrorCodeDictionary;if(t.environment.isMobile())throw new a({code:c.ENV_NOT_SUPPORTED,message:"VideoMixer is not supported on mobile devices currently"});var l=e.onScreenShareStop;if(l&&!t.utils.isFunction(l))throw new a({code:c.INVALID_PARAMETER,extraCode:u.INVALID_PARAMETER_TYPE,fnName:n,messageParams:{key:"onScreenShareStop",value:s(l),rule:{type:"Function"}}})}};case"update":return function(e){return{name:"VideoMixerOptions",type:"object",required:!1,allowEmpty:!1,properties:{view:y({},x(e)),canvasInfo:y({},g(e)),camera:y({},w(e)),screen:y({},k(e)),text:y({},S(e)),image:y({},T(e)),video:y({},E(e))}}}(this.core);case"stop":return this.core,{name:"StopVideoMixerOptions",required:!1}}var t}},{key:"getGroup",value:function(){return"vmix"}},{key:"start",value:(C=r(o().mark((function e(t){var r,n,i,a;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.localMixVideoTrack||(this.localMixVideoTrack=new this.core.LocalMixVideoTrack(this.core.room.videoManager)),this._mixVideoConfig={canvasInfo:{width:1920,height:1080}},t=this.core.utils.deepCloneBasic(t),n=(r=t).view,i=r.onScreenShareStop,e.next=6,this.parseMixOptions(t);case 6:return a=e.sent,i&&(this.onScreenShareStop=i,this._mixVideoConfig.onScreenShareStop=i),this._updatePreview({view:n,track:this.localMixVideoTrack}),this.core.utils.isUndefined(n)||(this._mixVideoConfig.view=n),e.next=12,this.localMixVideoTrack.startMix();case 12:return e.abrupt("return",{track:this.localMixVideoTrack._outputTrack,systemAudioTrackList:this.systemAudioTrackList,result:a});case 13:case"end":return e.stop()}}),e,this)}))),function(e){return C.apply(this,arguments)})},{key:"update",value:(M=r(o().mark((function e(t){var r,n,i,a,c;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=this.core.errorModule,n=r.RtcError,i=r.ErrorCode,this.localMixVideoTrack){e.next=3;break}throw new n({code:i.INVALID_OPERATION,message:"mixTrack doesn't initialize!"});case 3:return t=this.core.utils.deepCloneBasic(t),a=t.view,e.next=7,this.parseMixOptions(t);case 7:return c=e.sent,e.next=10,this._updatePreview({view:a,track:this.localMixVideoTrack,prevConfig:this._mixVideoConfig});case 10:return this.core.utils.isUndefined(a)||(this._mixVideoConfig.view=a),e.abrupt("return",{track:this.localMixVideoTrack._outputTrack,systemAudioTrackList:this.systemAudioTrackList,result:c});case 12:case"end":return e.stop()}}),e,this)}))),function(e){return M.apply(this,arguments)})},{key:"parseMixOptions",value:(b=r(o().mark((function e(t){var r,n,i,c,s,u,l,f,p,d,h,v,m,g,x,b,w,k,S,T,E,V,M,C,L,_,O,A,P,I,q,N,j;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r={successOptions:{},failedDetails:[]},n=this.core.errorModule,i=n.RtcError,c=n.ErrorCode,n.ErrorCodeDictionary,this.localMixVideoTrack&&this._mixVideoConfig){e.next=4;break}return e.abrupt("return",r);case 4:if(s=[],u=y({},t),l=t.canvasInfo,f=t.camera,p=t.screen,d=t.text,h=t.image,v=t.video,m=0,g=0,l&&(x=l.canvasColor,b=l.width,w=l.height,k=l.frameRate,x&&this.localMixVideoTrack.setMixBackground(x),k&&this.localMixVideoTrack.setFps(k),this.localMixVideoTrack.resizeMixCanvas(b,w),this._mixVideoConfig.canvasInfo=l),!f){e.next=20;break}return m++,e.next=14,this.parseCameraOptions(this.localMixVideoTrack,f,this._mixVideoConfig.camera);case 14:S=e.sent,T=S.finalOptions,E=S.errors,this._mixVideoConfig.camera=T,u.camera=T,E.length>0&&(s.push.apply(s,a(E)),E.length===f.length&&g++);case 20:if(!p){e.next=30;break}return m++,e.next=24,this.parseScreenOptions(this.localMixVideoTrack,p,this._mixVideoConfig.screen);case 24:V=e.sent,M=V.finalOptions,C=V.errors,this._mixVideoConfig.screen=M,u.screen=M,C.length>0&&(s.push.apply(s,a(C)),C.length===p.length&&g++);case 30:if(!d){e.next=40;break}return m++,e.next=34,this.parseTextOptions(this.localMixVideoTrack,d,this._mixVideoConfig.text);case 34:L=e.sent,_=L.finalOptions,O=L.errors,this._mixVideoConfig.text=_,u.text=_,O.length>0&&(s.push.apply(s,a(O)),O.length===d.length&&g++);case 40:if(!h){e.next=50;break}return m++,e.next=44,this.parseImageOptions(this.localMixVideoTrack,h,this._mixVideoConfig.image);case 44:A=e.sent,P=A.finalOptions,I=A.errors,this._mixVideoConfig.image=P,u.image=P,I.length>0&&(s.push.apply(s,a(I)),I.length===h.length&&g++);case 50:if(!v){e.next=60;break}return m++,e.next=54,this.parseVideoOptions(this.localMixVideoTrack,v,this._mixVideoConfig.video);case 54:q=e.sent,N=q.finalOptions,j=q.errors,this._mixVideoConfig.video=N,u.video=N,j.length>0&&(s.push.apply(s,a(j)),j.length===v.length&&g++);case 60:if(!(g>0&&g===m)){e.next=62;break}throw new i({code:c.INVALID_PARAMETER,message:"all sources mix failed",data:{failedDetails:s}});case 62:return r={successOptions:u,failedDetails:s},e.abrupt("return",r);case 64:case"end":return e.stop()}}),e,this)}))),function(e){return b.apply(this,arguments)})},{key:"parseCameraOptions",value:(m=r(o().mark((function e(t,r){var n,a,c,s,u,l,f,p,d,h,y,v,m,g,x,b,w,k,S,T,E,V=arguments;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=V.length>2&&void 0!==V[2]?V[2]:[],s=new Set(r.map((function(e){return e.id}))),u=n.filter((function(e){return!s.has(e.id)})).map((function(e){return e.id})),l=i(u);try{for(l.s();!(f=l.n()).done;)p=f.value,t.removeCameraSource(p)}catch(e){l.e(e)}finally{l.f()}d=new Map(n.map((function(e){return[e.id,e]}))),h=[],y=[],v=i(r),e.prev=9,v.s();case 11:if((m=v.n()).done){e.next=45;break}if(g=m.value,x=g.id,b=g.layout,w=g.profile,e.prev=14,!t.inputLocalVideoTracks.has(x)){e.next=25;break}return k=null==(a=t.inputLocalVideoTracks.get(x))?void 0:a.mediaTrack,e.next=19,this.updateCameraProfile(g);case 19:S=null==(c=t.inputLocalVideoTracks.get(x))?void 0:c.mediaTrack,T=void 0,w&&(T=this.core.utils.isString(w)?this.core.constants.videoProfileMap[w]:w),S!==k?t.updateCameraSource(x,b,S,T):t.updateCameraSource(x,b,null,T),e.next=36;break;case 25:return e.next=27,this.captureCamera(g);case 27:E=e.sent,e.prev=28,t.addCameraSource(x,E,b),e.next=36;break;case 32:throw e.prev=32,e.t0=e.catch(28),E.close(),e.t0;case 36:h.push(g),e.next=43;break;case 39:e.prev=39,e.t1=e.catch(14),y.push({id:x,error:e.t1}),d.has(x)&&h.push(d.get(x));case 43:e.next=11;break;case 45:e.next=50;break;case 47:e.prev=47,e.t2=e.catch(9),v.e(e.t2);case 50:return e.prev=50,v.f(),e.finish(50);case 53:return e.abrupt("return",{finalOptions:h,errors:y});case 54:case"end":return e.stop()}}),e,this,[[9,47,50,53],[14,39],[28,32]])}))),function(e,t){return m.apply(this,arguments)})},{key:"parseScreenOptions",value:(h=r(o().mark((function e(t,r){var n,a,c,s,u,l,f,p,d,h,y,v,m,g,x,b=arguments;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=b.length>2&&void 0!==b[2]?b[2]:[],a=new Set(r.map((function(e){return e.id}))),c=n.filter((function(e){return!a.has(e.id)})).map((function(e){return e.id})),s=i(c);try{for(s.s();!(u=s.n()).done;)l=u.value,t.removeScreenSource(l)}catch(e){s.e(e)}finally{s.f()}f=new Map(n.map((function(e){return[e.id,e]}))),p=[],d=[],h=i(r),e.prev=9,h.s();case 11:if((y=h.n()).done){e.next=39;break}if(v=y.value,m=v.id,g=v.layout,e.prev=14,!t.inputLocalScreenTracks.has(m)){e.next=19;break}t.updateScreenSource(m,g),e.next=30;break;case 19:return e.next=21,this.captureScreen(v);case 21:x=e.sent,e.prev=22,t.addScreenSource(m,x,g),e.next=30;break;case 26:throw e.prev=26,e.t0=e.catch(22),x.close(),e.t0;case 30:p.push(v),e.next=37;break;case 33:e.prev=33,e.t1=e.catch(14),d.push({id:m,error:e.t1}),f.has(m)&&p.push(f.get(m));case 37:e.next=11;break;case 39:e.next=44;break;case 41:e.prev=41,e.t2=e.catch(9),h.e(e.t2);case 44:return e.prev=44,h.f(),e.finish(44);case 47:return e.abrupt("return",{finalOptions:p,errors:d});case 48:case"end":return e.stop()}}),e,this,[[9,41,44,47],[14,33],[22,26]])}))),function(e,t){return h.apply(this,arguments)})},{key:"parseTextOptions",value:(d=r(o().mark((function e(t,r){var n,a,c,s,u,l,f,p,d,h,y,v,m=arguments;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=m.length>2&&void 0!==m[2]?m[2]:[],a=new Set(r.map((function(e){return e.id}))),c=n.filter((function(e){return!a.has(e.id)})).map((function(e){return e.id})),s=i(c);try{for(s.s();!(u=s.n()).done;)l=u.value,t.removeTextSource(l)}catch(e){s.e(e)}finally{s.f()}f=new Map(n.map((function(e){return[e.id,e]}))),p=[],d=[],h=i(r),e.prev=9,v=o().mark((function e(){var r,i;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=y.value,i=r.id;try{n.some((function(e){return e.id===i}))?t.updateTextSource(r):t.addTextSource(r),p.push(r)}catch(e){d.push({id:i,error:e}),f.has(i)&&p.push(f.get(i))}case 3:case"end":return e.stop()}}),e)})),h.s();case 12:if((y=h.n()).done){e.next=16;break}return e.delegateYield(v(),"t0",14);case 14:e.next=12;break;case 16:e.next=21;break;case 18:e.prev=18,e.t1=e.catch(9),h.e(e.t1);case 21:return e.prev=21,h.f(),e.finish(21);case 24:return e.abrupt("return",{finalOptions:p,errors:d});case 25:case"end":return e.stop()}}),e,null,[[9,18,21,24]])}))),function(e,t){return d.apply(this,arguments)})},{key:"parseImageOptions",value:(p=r(o().mark((function e(t,r){var n,a,c,s,u,l,f,p,d,h,y,v,m=this,g=arguments;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=g.length>2&&void 0!==g[2]?g[2]:[],a=new Set(r.map((function(e){return e.id}))),c=n.filter((function(e){return!a.has(e.id)})).map((function(e){return e.id})),s=i(c);try{for(s.s();!(u=s.n()).done;)l=u.value,t.removeImageSource(l)}catch(e){s.e(e)}finally{s.f()}f=new Map(n.map((function(e){return[e.id,e]}))),p=[],d=[],h=i(r),e.prev=9,v=o().mark((function e(){var r,i,a,c,s,u,l;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=y.value,i=r.id,a=r.url,c=r.layout,e.prev=2,!(s=n.find((function(e){return e.id===i})))){e.next=12;break}if(s.url===a){e.next=9;break}return e.next=8,m.core.utils.loadImage(a);case 8:u=e.sent;case 9:t.updateImageSource(i,c,u),e.next=16;break;case 12:return e.next=14,m.core.utils.loadImage(a);case 14:l=e.sent,t.addImageSource(i,l,c);case 16:p.push(r),e.next=23;break;case 19:e.prev=19,e.t0=e.catch(2),d.push({id:i,error:e.t0}),f.has(i)&&p.push(f.get(i));case 23:case"end":return e.stop()}}),e,null,[[2,19]])})),h.s();case 12:if((y=h.n()).done){e.next=16;break}return e.delegateYield(v(),"t0",14);case 14:e.next=12;break;case 16:e.next=21;break;case 18:e.prev=18,e.t1=e.catch(9),h.e(e.t1);case 21:return e.prev=21,h.f(),e.finish(21);case 24:return e.abrupt("return",{finalOptions:p,errors:d});case 25:case"end":return e.stop()}}),e,null,[[9,18,21,24]])}))),function(e,t){return p.apply(this,arguments)})},{key:"parseVideoOptions",value:(f=r(o().mark((function e(t,r){var n,a,c,s,u,l,f,p,d,h,y,v,m=this,g=arguments;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=g.length>2&&void 0!==g[2]?g[2]:[],a=new Set(r.map((function(e){return e.id}))),c=n.filter((function(e){return!a.has(e.id)})).map((function(e){return e.id})),s=i(c);try{for(s.s();!(u=s.n()).done;)l=u.value,t.removeVideoSource(l)}catch(e){s.e(e)}finally{s.f()}f=new Map(n.map((function(e){return[e.id,e]}))),p=[],d=[],h=i(r),e.prev=9,v=o().mark((function e(){var r,i,a,c,s,u,l;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=y.value,i=r.id,a=r.url,c=r.layout,e.prev=2,!(s=n.find((function(e){return e.id===i})))){e.next=12;break}if(s.url===a){e.next=9;break}return e.next=8,m.core.utils.loadVideo(a);case 8:u=e.sent;case 9:t.updateVideoSource(i,c,u),e.next=16;break;case 12:return e.next=14,m.core.utils.loadVideo(a);case 14:l=e.sent,t.addVideoSource(i,l,c);case 16:p.push(r),e.next=23;break;case 19:e.prev=19,e.t0=e.catch(2),d.push({id:i,error:e.t0}),f.has(i)&&p.push(f.get(i));case 23:case"end":return e.stop()}}),e,null,[[2,19]])})),h.s();case 12:if((y=h.n()).done){e.next=16;break}return e.delegateYield(v(),"t0",14);case 14:e.next=12;break;case 16:e.next=21;break;case 18:e.prev=18,e.t1=e.catch(9),h.e(e.t1);case 21:return e.prev=21,h.f(),e.finish(21);case 24:return e.abrupt("return",{finalOptions:p,errors:d});case 25:case"end":return e.stop()}}),e,null,[[9,18,21,24]])}))),function(e,t){return f.apply(this,arguments)})},{key:"captureCamera",value:(l=r(o().mark((function e(t){var r,n,i,a,c,s;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.id,n=t.cameraId,i=t.videoTrack,a=t.profile,(c=new this.core.LocalVideoTrack).log.id+="-".concat(r),s={},n?s.deviceId=n:this.core.utils.isUndefined(i)||(s.customSource=i),this.core.utils.isUndefined(a)||(this.core.utils.isString(a)?this.core.constants.videoProfileMap[a]&&c.setProfile(this.core.constants.videoProfileMap[a]):c.setProfile(a)),e.next=8,c.capture(s);case 8:return e.abrupt("return",c);case 9:case"end":return e.stop()}}),e,this)}))),function(e){return l.apply(this,arguments)})},{key:"updateCameraProfile",value:(u=r(o().mark((function e(t){var r,n,i,a,c,s;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.id,i=t.cameraId,a=t.videoTrack,c=t.profile,s=null==(r=this.localMixVideoTrack)?void 0:r.inputLocalVideoTracks.get(n)){e.next=4;break}return e.abrupt("return");case 4:if(!i){e.next=9;break}return e.next=7,s.switchDevice(i);case 7:e.next=12;break;case 9:if(this.core.utils.isUndefined(a)){e.next=12;break}return e.next=12,s.setInputMediaStreamTrack(a);case 12:if(this.core.utils.isUndefined(c)){e.next=17;break}if(this.core.utils.isString(c)?this.core.constants.videoProfileMap[c]&&s.setProfile(this.core.constants.videoProfileMap[c]):s.setProfile(c),i&&s.isNeedToSwitchDevice(i)){e.next=17;break}return e.next=17,s.applyProfile();case 17:case"end":return e.stop()}}),e,this)}))),function(e){return u.apply(this,arguments)})},{key:"captureScreen",value:(c=r(o().mark((function e(t){var r,n,i,a,c,s,u,l=this;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.id,n=t.profile,i=t.captureElement,a=t.preferDisplaySurface,(c=new this.core.LocalScreenTrack).log.id+="-".concat(r),s={},this.core.utils.isUndefined(n)||(this.core.utils.isString(n)?this.core.constants.screenProfileMap[n]&&c.setProfile(this.core.constants.screenProfileMap[n]):c.setProfile(n)),i&&(s.captureElement=i),a&&(s.preferDisplaySurface=a),s.systemAudio=t.systemAudio,e.next=10,c.capture(s);case 10:return u=e.sent,s.systemAudio&&u.getAudioTracks().length>0&&(this.systemAudioTrackList[r]=u.getAudioTracks()[0]),c.mediaTrack.addEventListener(this.core.constants.NAME.ENDED,(function(){var e,t,n;null==(e=l.localMixVideoTrack)||e.removeScreenSource(r),(null==(t=l._mixVideoConfig)?void 0:t.screen)&&(l._mixVideoConfig.screen=l._mixVideoConfig.screen.filter((function(e){return e.id!==r}))),null==(n=l.onScreenShareStop)||n.call(l,r)})),e.abrupt("return",c);case 14:case"end":return e.stop()}}),e,this)}))),function(e){return c.apply(this,arguments)})},{key:"_updatePreview",value:(t=r(o().mark((function e(t){var r,n,i,a,c;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t.view,n=t.track,i=t.prevConfig,!(this.core.utils.isUndefined(r)&&i&&i.view)){e.next=6;break}if(!((a=this.core.utils.getViewListFromView(i.view)).length>0)){e.next=6;break}return e.next=6,n.play(a);case 6:if(this.core.utils.isUndefined(r)){e.next=14;break}if(!((c=this.core.utils.getViewListFromView(r)).length>0)){e.next=13;break}return e.next=11,n.play(c);case 11:e.next=14;break;case 13:n.stop();case 14:case"end":return e.stop()}}),e,this)}))),function(e){return t.apply(this,arguments)})},{key:"stop",value:function(){var e;null==(e=this.localMixVideoTrack)||e.close(),this.localMixVideoTrack=null,delete this.onScreenShareStop,delete this._mixVideoConfig}}]);var t,c,u,l,f,p,d,h,m,b,M,C}();return v(M,"Name","VideoMixer"),M}));
1
+ !function(e,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):(e="undefined"!=typeof globalThis?globalThis:e||self).VideoMixer=r()}(this,(function(){"use strict";function e(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}function r(e,r,t,n,i,o,a){try{var s=e[o](a),c=s.value}catch(e){return void t(e)}s.done?r(c):Promise.resolve(c).then(n,i)}function t(e){return function(){var t=this,n=arguments;return new Promise((function(i,o){var a=e.apply(t,n);function s(e){r(a,i,o,s,c,"next",e)}function c(e){r(a,i,o,s,c,"throw",e)}s(void 0)}))}}function n(e,r,t){return r&&function(e,r){for(var t=0;t<r.length;t++){var n=r[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,s(n.key),n)}}(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function i(e,r){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=u(e))||r){t&&(e=t);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==t.return||t.return()}finally{if(s)throw o}}}}function o(){o=function(){return r};var e,r={},t=Object.prototype,n=t.hasOwnProperty,i=Object.defineProperty||function(e,r,t){e[r]=t.value},a="function"==typeof Symbol?Symbol:{},s=a.iterator||"@@iterator",c=a.asyncIterator||"@@asyncIterator",u=a.toStringTag||"@@toStringTag";function l(e,r,t){return Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}),e[r]}try{l({},"")}catch(e){l=function(e,r,t){return e[r]=t}}function p(e,r,t,n){var o=r&&r.prototype instanceof k?r:k,a=Object.create(o.prototype),s=new O(n||[]);return i(a,"_invoke",{value:V(e,t,s)}),a}function d(e,r,t){try{return{type:"normal",arg:e.call(r,t)}}catch(e){return{type:"throw",arg:e}}}r.wrap=p;var f="suspendedStart",h="suspendedYield",v="executing",y="completed",m={};function k(){}function g(){}function x(){}var b={};l(b,s,(function(){return this}));var S=Object.getPrototypeOf,w=S&&S(S(I([])));w&&w!==t&&n.call(w,s)&&(b=w);var T=x.prototype=k.prototype=Object.create(b);function E(e){["next","throw","return"].forEach((function(r){l(e,r,(function(e){return this._invoke(r,e)}))}))}function L(e,r){function t(i,o,a,s){var c=d(e[i],e,o);if("throw"!==c.type){var u=c.arg,l=u.value;return l&&"object"==typeof l&&n.call(l,"__await")?r.resolve(l.__await).then((function(e){t("next",e,a,s)}),(function(e){t("throw",e,a,s)})):r.resolve(l).then((function(e){u.value=e,a(u)}),(function(e){return t("throw",e,a,s)}))}s(c.arg)}var o;i(this,"_invoke",{value:function(e,n){function i(){return new r((function(r,i){t(e,n,r,i)}))}return o=o?o.then(i,i):i()}})}function V(r,t,n){var i=f;return function(o,a){if(i===v)throw Error("Generator is already running");if(i===y){if("throw"===o)throw a;return{value:e,done:!0}}for(n.method=o,n.arg=a;;){var s=n.delegate;if(s){var c=A(s,n);if(c){if(c===m)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(i===f)throw i=y,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);i=v;var u=d(r,t,n);if("normal"===u.type){if(i=n.done?y:h,u.arg===m)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(i=y,n.method="throw",n.arg=u.arg)}}}function A(r,t){var n=t.method,i=r.iterator[n];if(i===e)return t.delegate=null,"throw"===n&&r.iterator.return&&(t.method="return",t.arg=e,A(r,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),m;var o=d(i,r.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,m;var a=o.arg;return a?a.done?(t[r.resultName]=a.value,t.next=r.nextLoc,"return"!==t.method&&(t.method="next",t.arg=e),t.delegate=null,m):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,m)}function C(e){var r={tryLoc:e[0]};1 in e&&(r.catchLoc=e[1]),2 in e&&(r.finallyLoc=e[2],r.afterLoc=e[3]),this.tryEntries.push(r)}function M(e){var r=e.completion||{};r.type="normal",delete r.arg,e.completion=r}function O(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(C,this),this.reset(!0)}function I(r){if(r||""===r){var t=r[s];if(t)return t.call(r);if("function"==typeof r.next)return r;if(!isNaN(r.length)){var i=-1,o=function t(){for(;++i<r.length;)if(n.call(r,i))return t.value=r[i],t.done=!1,t;return t.value=e,t.done=!0,t};return o.next=o}}throw new TypeError(typeof r+" is not iterable")}return g.prototype=x,i(T,"constructor",{value:x,configurable:!0}),i(x,"constructor",{value:g,configurable:!0}),g.displayName=l(x,u,"GeneratorFunction"),r.isGeneratorFunction=function(e){var r="function"==typeof e&&e.constructor;return!!r&&(r===g||"GeneratorFunction"===(r.displayName||r.name))},r.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,x):(e.__proto__=x,l(e,u,"GeneratorFunction")),e.prototype=Object.create(T),e},r.awrap=function(e){return{__await:e}},E(L.prototype),l(L.prototype,c,(function(){return this})),r.AsyncIterator=L,r.async=function(e,t,n,i,o){void 0===o&&(o=Promise);var a=new L(p(e,t,n,i),o);return r.isGeneratorFunction(t)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},E(T),l(T,u,"Generator"),l(T,s,(function(){return this})),l(T,"toString",(function(){return"[object Generator]"})),r.keys=function(e){var r=Object(e),t=[];for(var n in r)t.push(n);return t.reverse(),function e(){for(;t.length;){var n=t.pop();if(n in r)return e.value=n,e.done=!1,e}return e.done=!0,e}},r.values=I,O.prototype={constructor:O,reset:function(r){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(M),!r)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(r){if(this.done)throw r;var t=this;function i(n,i){return s.type="throw",s.arg=r,t.next=n,i&&(t.method="next",t.arg=e),!!i}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return i("end");if(a.tryLoc<=this.prev){var c=n.call(a,"catchLoc"),u=n.call(a,"finallyLoc");if(c&&u){if(this.prev<a.catchLoc)return i(a.catchLoc,!0);if(this.prev<a.finallyLoc)return i(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return i(a.catchLoc,!0)}else{if(!u)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return i(a.finallyLoc)}}}},abrupt:function(e,r){for(var t=this.tryEntries.length-1;t>=0;--t){var i=this.tryEntries[t];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var o=i;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=r&&r<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=e,a.arg=r,o?(this.method="next",this.next=o.finallyLoc,m):this.complete(a)},complete:function(e,r){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&r&&(this.next=r),m},finish:function(e){for(var r=this.tryEntries.length-1;r>=0;--r){var t=this.tryEntries[r];if(t.finallyLoc===e)return this.complete(t.completion,t.afterLoc),M(t),m}},catch:function(e){for(var r=this.tryEntries.length-1;r>=0;--r){var t=this.tryEntries[r];if(t.tryLoc===e){var n=t.completion;if("throw"===n.type){var i=n.arg;M(t)}return i}}throw Error("illegal catch attempt")},delegateYield:function(r,t,n){return this.delegate={iterator:I(r),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=e),m}},r}function a(r){return function(r){if(Array.isArray(r))return e(r)}(r)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(r)||u(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function s(e){var r=function(e,r){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,r);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof r?r:r+""}function c(e){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c(e)}function u(r,t){if(r){if("string"==typeof r)return e(r,t);var n={}.toString.call(r).slice(8,-1);return"Object"===n&&r.constructor&&(n=r.constructor.name),"Map"===n||"Set"===n?Array.from(r):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?e(r,t):void 0}}var l=Object.defineProperty,p=Object.getOwnPropertySymbols,d=Object.prototype.hasOwnProperty,f=Object.prototype.propertyIsEnumerable,h=function(e,r,t){return r in e?l(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t},v=function(e,r){for(var t in r||(r={}))d.call(r,t)&&h(e,t,r[t]);if(p){var n,o=i(p(r));try{for(o.s();!(n=o.n()).done;){t=n.value;f.call(r,t)&&h(e,t,r[t])}}catch(e){o.e(e)}finally{o.f()}}return e},y=function(e,r,t){return h(e,"symbol"!==c(r)?r+"":r,t)},m={x:{required:!0,type:"number"},y:{required:!0,type:"number"},width:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},height:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},zIndex:{required:!0,type:"number"},fillMode:{required:!1,type:"string"},mirror:{required:!1,type:"boolean"},rotation:{required:!1,type:"number"},hidden:{required:!1,type:"boolean"}},k=function(e){return{type:"object",required:arguments.length>1&&void 0!==arguments[1]&&arguments[1],properties:{canvasColor:{required:!1,type:["string",CanvasGradient,CanvasPattern]},width:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},height:{required:!0,type:"number",notLessThanZero:!0,min:1,max:3840},frameRate:{required:!1,type:"number",notLessThanZero:!0,min:1,max:60}},validate:function(r,t,n){var i=e.errorModule,o=i.RtcError,a=i.ErrorCode;if(i.ErrorCodeDictionary,r){var s=r.width,c=r.height;if(s&&c&&s*c>8294400)throw new o({code:a.INVALID_PARAMETER,message:"The mix resolution cannot be set higher than 3840 * 2160."})}}}},g=function(e){return{required:!1,type:["string",HTMLElement,null],validate:function(r,t,n){var i=e.errorModule,o=i.RtcError,a=i.ErrorCode,s=i.ErrorCodeDictionary;if(e.utils.isString(r)&&!document.getElementById(r))throw new o({code:a.INVALID_PARAMETER,extraCode:s.INVALID_ELEMENT_ID,fnName:n,messageParams:{key:t}})}}},x=function(e){return{type:"object",required:!(arguments.length>1&&void 0!==arguments[1])||arguments[1],properties:v({},m),validate:function(r,t,n){var i=e.errorModule,o=i.RtcError,a=i.ErrorCode,s=i.ErrorCodeDictionary;if(r){if(r.fillMode&&!["contain","cover","fill"].includes(r.fillMode))throw new o({code:a.INVALID_PARAMETER,extraCode:s.INVALID_PARAMETER_TYPE,message:"The fillMode parameter must be 'contain', 'cover' or 'fill'",fnName:n});if(r.rotation&&![0,90,180,270].includes(r.rotation))throw new o({code:a.INVALID_PARAMETER,extraCode:s.INVALID_PARAMETER_TYPE,message:"The rotation parameter must be 0, 90, 180 or 270",fnName:n})}}}},b=function(e){return{type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},cameraId:{required:!1,type:"string"},videoTrack:{required:!1,instanceof:MediaStreamTrack},profile:{required:!1,type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},layout:v({},x(e))}}}},S=function(e){return{type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},profile:{required:!1,type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},captureElement:{required:!1,type:HTMLElement},preferDisplaySurface:{required:!1,type:"string"},layout:v({},x(e))},validate:function(r,t,n){var i=e.errorModule,o=i.RtcError,a=i.ErrorCode,s=i.ErrorCodeDictionary;if(!e.rtcDectection.isScreenCaptureApiAvailable())throw new o({code:a.ENV_NOT_SUPPORTED,fnName:n,extraCode:s.NOT_SUPPORTED_SCREEN_SHARE})}}}},w=function(e){return{type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},content:{required:!0,type:"string"},font:{required:!1,type:"string"},color:{required:!1,type:["string",CanvasGradient,CanvasPattern]},layout:v({},x(e))}}}},T=function(e){return{type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},url:{required:!0,type:"string"},layout:v({},x(e))}}}},E=function(e){return{type:"array",required:!1,arrayItem:{type:"object",properties:{id:{required:!0,type:"string"},url:{required:!0,type:"string"},layout:v({},x(e))}}}};var L=0,V=function(){function e(r){!function(e,r){if(!(e instanceof r))throw new TypeError("Cannot call a class as a function")}(this,e),this.core=r,y(this,"seq"),y(this,"log"),y(this,"localMixVideoTrack",null),y(this,"systemAudioTrackList",{}),y(this,"_mixVideoConfig"),y(this,"onScreenShareStop"),y(this,"eventListeners",new Map),L+=1,this.seq=L,this.log=r.log.createChild({id:"".concat(this.getAlias()).concat(L)}),this.log.info("created")}return n(e,[{key:"getName",value:function(){return e.Name}},{key:"getAlias",value:function(){return"vmix"}},{key:"getValidateRule",value:function(e){switch(e){case"start":return r=this.core,{name:"VideoMixerOptions",type:"object",required:!0,allowEmpty:!1,properties:{view:v({},g(r)),canvasInfo:v({},k(r,!0)),camera:v({},b(r)),screen:v({},S(r)),text:v({},w(r)),image:v({},T(r)),video:v({},E(r))},validate:function(e,t,n,i){var o=r.errorModule,a=o.RtcError,s=o.ErrorCode,u=o.ErrorCodeDictionary;if(r.environment.isMobile())throw new a({code:s.ENV_NOT_SUPPORTED,message:"VideoMixer is not supported on mobile devices currently"});var l=e.onScreenShareStop;if(l&&!r.utils.isFunction(l))throw new a({code:s.INVALID_PARAMETER,extraCode:u.INVALID_PARAMETER_TYPE,fnName:n,messageParams:{key:"onScreenShareStop",value:c(l),rule:{type:"Function"}}})}};case"update":return function(e){return{name:"VideoMixerOptions",type:"object",required:!1,allowEmpty:!1,properties:{view:v({},g(e)),canvasInfo:v({},k(e)),camera:v({},b(e)),screen:v({},S(e)),text:v({},w(e)),image:v({},T(e)),video:v({},E(e))}}}(this.core);case"stop":return this.core,{name:"StopVideoMixerOptions",required:!1}}var r}},{key:"getGroup",value:function(){return"vmix"}},{key:"start",value:(N=t(o().mark((function e(r){var t,n,i,a;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.localMixVideoTrack||(this.localMixVideoTrack=new this.core.LocalMixVideoTrack(this.core.room.videoManager)),this._mixVideoConfig={canvasInfo:{width:1920,height:1080}},r=this.core.utils.deepCloneBasic(r),n=(t=r).view,i=t.onScreenShareStop,e.next=6,this.parseMixOptions(r);case 6:return a=e.sent,i&&(this.onScreenShareStop=i,this._mixVideoConfig.onScreenShareStop=i),this._updatePreview({view:n,track:this.localMixVideoTrack}),this.core.utils.isUndefined(n)||(this._mixVideoConfig.view=n),e.next=12,this.localMixVideoTrack.startMix();case 12:return e.abrupt("return",{track:this.localMixVideoTrack._outputTrack,systemAudioTrackList:this.systemAudioTrackList,result:a});case 13:case"end":return e.stop()}}),e,this)}))),function(e){return N.apply(this,arguments)})},{key:"update",value:(P=t(o().mark((function e(r){var t,n,i,a,s;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this.core.errorModule,n=t.RtcError,i=t.ErrorCode,this.localMixVideoTrack){e.next=3;break}throw new n({code:i.INVALID_OPERATION,message:"mixTrack doesn't initialize!"});case 3:return r=this.core.utils.deepCloneBasic(r),a=r.view,e.next=7,this.parseMixOptions(r);case 7:return s=e.sent,e.next=10,this._updatePreview({view:a,track:this.localMixVideoTrack,prevConfig:this._mixVideoConfig});case 10:return this.core.utils.isUndefined(a)||(this._mixVideoConfig.view=a),e.abrupt("return",{track:this.localMixVideoTrack._outputTrack,systemAudioTrackList:this.systemAudioTrackList,result:s});case 12:case"end":return e.stop()}}),e,this)}))),function(e){return P.apply(this,arguments)})},{key:"stop",value:function(){var e,r=this;this.eventListeners.forEach((function(e,t){r.removeEventListeners(t)})),this.eventListeners.clear(),null==(e=this.localMixVideoTrack)||e.close(),this.localMixVideoTrack=null,Object.values(this.systemAudioTrackList).forEach((function(e){return e.stop()})),this.systemAudioTrackList={},delete this.onScreenShareStop,delete this._mixVideoConfig}},{key:"parseMixOptions",value:(_=t(o().mark((function e(r){var t,n,i,s,c,u,l,p,d,f,h,y,m,k,g,x,b,S,w,T,E,L;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t={successOptions:{},failedDetails:[]},n=this.core.errorModule,i=n.RtcError,s=n.ErrorCode,this.localMixVideoTrack&&this._mixVideoConfig){e.next=4;break}return e.abrupt("return",t);case 4:c=[],u=v({},r),l=r.canvasInfo,p=r.camera,d=r.screen,f=r.text,h=r.image,y=r.video,l&&this.parseCanvasOptions(l),m=0,k=0,g=[{key:"camera",options:p,parser:this.parseCameraOptions.bind(this)},{key:"screen",options:d,parser:this.parseScreenOptions.bind(this)},{key:"text",options:f,parser:this.parseTextOptions.bind(this)},{key:"image",options:h,parser:this.parseImageOptions.bind(this)},{key:"video",options:y,parser:this.parseVideoOptions.bind(this)}],x=0,b=g;case 12:if(!(x<b.length)){e.next=25;break}if(S=b[x],w=S.key,T=S.options,E=S.parser,!T){e.next=22;break}return m++,e.next=18,E(this.localMixVideoTrack,T,this._mixVideoConfig[w]||[]);case 18:L=e.sent,this._mixVideoConfig[w]=L.finalOptions,u[w]=L.finalOptions,L.errors.length>0&&(c.push.apply(c,a(L.errors)),L.errors.length===T.length&&k++);case 22:x++,e.next=12;break;case 25:if(!(k>0&&k===m)){e.next=27;break}throw new i({code:s.INVALID_PARAMETER,message:"all sources mix failed",data:{failedDetails:c}});case 27:return e.abrupt("return",{successOptions:u,failedDetails:c});case 28:case"end":return e.stop()}}),e,this)}))),function(e){return _.apply(this,arguments)})},{key:"parseCanvasOptions",value:function(e){if(this.localMixVideoTrack&&this._mixVideoConfig){var r=e.canvasColor,t=e.width,n=e.height,i=e.frameRate;r&&this.localMixVideoTrack.setMixBackground(r),i&&this.localMixVideoTrack.setFps(i),this.localMixVideoTrack.resizeMixCanvas(t,n),this._mixVideoConfig.canvasInfo=e}}},{key:"prepareSourceOptions",value:function(e,r){var t=new Set(e.map((function(e){return e.id})));return{removeIdList:r.filter((function(e){return!t.has(e.id)})).map((function(e){return e.id})),preOptionsMap:new Map(r.map((function(e){return[e.id,e]})))}}},{key:"recordSourceError",value:function(e,r,t,n,i){i.push({id:e,error:r}),t.has(e)&&n.push(t.get(e))}},{key:"parseCameraOptions",value:(I=t(o().mark((function e(r,t){var n,a,s,c,u,l,p,d,f,h,v,y,m=arguments;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=m.length>2&&void 0!==m[2]?m[2]:[],a=this.prepareSourceOptions(t,n),s=a.removeIdList,c=a.preOptionsMap,u=i(s);try{for(u.s();!(l=u.n()).done;)p=l.value,r.removeCameraSource(p)}catch(e){u.e(e)}finally{u.f()}d=[],f=[],h=i(t),e.prev=7,h.s();case 9:if((v=h.n()).done){e.next=22;break}return y=v.value,e.prev=11,e.next=14,this.processSingleCameraSource(r,y);case 14:d.push(y),e.next=20;break;case 17:e.prev=17,e.t0=e.catch(11),this.recordSourceError(y.id,e.t0,c,d,f);case 20:e.next=9;break;case 22:e.next=27;break;case 24:e.prev=24,e.t1=e.catch(7),h.e(e.t1);case 27:return e.prev=27,h.f(),e.finish(27);case 30:return e.abrupt("return",{finalOptions:d,errors:f});case 31:case"end":return e.stop()}}),e,this,[[7,24,27,30],[11,17]])}))),function(e,r){return I.apply(this,arguments)})},{key:"processSingleCameraSource",value:(O=t(o().mark((function e(r,t){var n,i;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=t.id,t.layout,t.profile,t.useInternalTrack&&((null==(n=this.core.trtc.localVideoTrack)?void 0:n.sourceTrack)?t.videoTrack=this.core.trtc.localVideoTrack.sourceTrack:t.videoTrack=this.createPlaceholderVideoTrack()),this.log.info("videomixer camera option ".concat(JSON.stringify(t))),!r.inputLocalVideoTracks.has(i)){e.next=8;break}return e.next=6,this.updateExistingCameraSource(r,t);case 6:e.next=10;break;case 8:return e.next=10,this.addNewCameraSource(r,t);case 10:case"end":return e.stop()}}),e,this)}))),function(e,r){return O.apply(this,arguments)})},{key:"updateExistingCameraSource",value:(M=t(o().mark((function e(r,t){var n,i,a,s,c,u,l,p;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.id,s=t.layout,c=t.profile,u=null==(n=r.inputLocalVideoTracks.get(a))?void 0:n.mediaTrack,e.next=4,this.updateCameraProfile(t);case 4:l=null==(i=r.inputLocalVideoTracks.get(a))?void 0:i.mediaTrack,p=this.resolveVideoProfile(c),l!==u?r.updateCameraSource(a,s,l,p):r.updateCameraSource(a,s,null,p);case 7:case"end":return e.stop()}}),e,this)}))),function(e,r){return M.apply(this,arguments)})},{key:"addNewCameraSource",value:(C=t(o().mark((function e(r,t){var n,i,a,s,c,u=this;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.id,i=t.layout,a=t.useInternalTrack,e.next=3,this.captureCamera(t);case 3:s=e.sent,this.removeEventListeners(n),a&&(c=function(e){var t,i;if(!(null==(t=e.track)?void 0:t.isScreen)){u.log.info("videomixer camera LOCAL_TRACK_CAPTURE_SUCCESS");var o=r.inputLocalVideoTracks.get(n);o&&(null==(i=e.track)?void 0:i.sourceTrack)&&o.setInputMediaStreamTrack(e.track.sourceTrack)}},this.core.innerEmitter.on("102",c),this.eventListeners.has(n)||this.eventListeners.set(n,{}),this.eventListeners.get(n).captureSuccess=function(){u.core.innerEmitter.off("102",c)}),e.prev=6,r.addCameraSource(n,s,i),e.next=14;break;case 10:throw e.prev=10,e.t0=e.catch(6),s.close(),e.t0;case 14:case"end":return e.stop()}}),e,this,[[6,10]])}))),function(e,r){return C.apply(this,arguments)})},{key:"resolveVideoProfile",value:function(e){if(!this.core.utils.isUndefined(e))return this.core.utils.isString(e)?this.core.constants.videoProfileMap[e]:e}},{key:"parseScreenOptions",value:(A=t(o().mark((function e(r,t){var n,a,s,c,u,l,p,d,f,h,v,y,m=arguments;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=m.length>2&&void 0!==m[2]?m[2]:[],a=this.prepareSourceOptions(t,n),s=a.removeIdList,c=a.preOptionsMap,u=i(s);try{for(u.s();!(l=u.n()).done;)p=l.value,r.removeScreenSource(p),this.removeSystemAudioTrack(p)}catch(e){u.e(e)}finally{u.f()}d=[],f=[],h=i(t),e.prev=7,h.s();case 9:if((v=h.n()).done){e.next=22;break}return y=v.value,e.prev=11,e.next=14,this.processSingleScreenSource(r,y,c);case 14:d.push(y),e.next=20;break;case 17:e.prev=17,e.t0=e.catch(11),this.recordSourceError(y.id,e.t0,c,d,f);case 20:e.next=9;break;case 22:e.next=27;break;case 24:e.prev=24,e.t1=e.catch(7),h.e(e.t1);case 27:return e.prev=27,h.f(),e.finish(27);case 30:return e.abrupt("return",{finalOptions:d,errors:f});case 31:case"end":return e.stop()}}),e,this,[[7,24,27,30],[11,17]])}))),function(e,r){return A.apply(this,arguments)})},{key:"processSingleScreenSource",value:(V=t(o().mark((function e(r,t,n){var i,a,s,c,u,l,p;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(s=t.id,c=t.layout,t.useInternalTrack&&((null==(i=this.core.trtc.localScreenTrack)?void 0:i.mediaTrack)?(t.videoTrack=this.core.trtc.localScreenTrack.mediaTrack,(null==(a=this.core.trtc.localScreenAudioTrack)?void 0:a.mediaTrack)&&(t.audioTrack=this.core.trtc.localScreenAudioTrack.mediaTrack),delete t.captureElement,delete t.preferDisplaySurface,delete t.systemAudio):t.videoTrack=this.createPlaceholderVideoTrack()),this.log.info("videomixer screen option ".concat(JSON.stringify(t))),u=n.get(s),l=r.inputLocalScreenTracks.has(s),p=!(null==u?void 0:u.systemAudio)&&t.systemAudio,!l||p){e.next=10;break}this.updateExistingScreenSource(r,s,c,u,t),e.next=12;break;case 10:return e.next=12,this.addNewScreenSource(r,t,u);case 12:case"end":return e.stop()}}),e,this)}))),function(e,r,t){return V.apply(this,arguments)})},{key:"updateExistingScreenSource",value:function(e,r,t,n,i){e.updateScreenSource(r,t),(null==n?void 0:n.systemAudio)&&!i.systemAudio&&this.removeSystemAudioTrack(r)}},{key:"addNewScreenSource",value:(x=t(o().mark((function e(r,t,n){var i,a,s,c,u=this;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=t.id,a=t.useInternalTrack,e.next=3,this.captureScreen(t);case 3:s=e.sent,this.removeEventListeners(i),a&&(c=function(e){var t,n,o;if(null==(t=e.track)?void 0:t.isScreen){u.log.info("videomixer screen LOCAL_TRACK_CAPTURE_SUCCESS");var a=r.inputLocalScreenTracks.get(i);a&&(null==(n=e.track)?void 0:n.mediaTrack)&&a.setInputMediaStreamTrack(e.track.mediaTrack),u.systemAudioTrackList[i]&&(null==(o=e.track)?void 0:o.mediaTrack)&&(u.systemAudioTrackList[i]=e.track.mediaTrack)}},this.core.innerEmitter.on("102",c),this.eventListeners.has(i)||this.eventListeners.set(i,{}),this.eventListeners.get(i).captureSuccess=function(){u.core.innerEmitter.off("102",c)}),!(null==n?void 0:n.systemAudio)&&t.systemAudio&&r.inputLocalScreenTracks.has(t.id)&&r.removeScreenSource(t.id),e.prev=7,r.addScreenSource(t.id,s,t.layout),e.next=15;break;case 11:throw e.prev=11,e.t0=e.catch(7),s.close(),e.t0;case 15:case"end":return e.stop()}}),e,this,[[7,11]])}))),function(e,r,t){return x.apply(this,arguments)})},{key:"parseTextOptions",value:(m=t(o().mark((function e(r,t){var n,a,s,c,u,l,p,d,f,h,v,y,m=arguments;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=m.length>2&&void 0!==m[2]?m[2]:[],a=this.prepareSourceOptions(t,n),s=a.removeIdList,c=a.preOptionsMap,u=i(s);try{for(u.s();!(l=u.n()).done;)p=l.value,r.removeTextSource(p)}catch(e){u.e(e)}finally{u.f()}d=[],f=[],h=i(t);try{for(h.s();!(v=h.n()).done;){y=v.value;try{c.has(y.id)?r.updateTextSource(y):r.addTextSource(y),d.push(y)}catch(e){this.recordSourceError(y.id,e,c,d,f)}}}catch(e){h.e(e)}finally{h.f()}return e.abrupt("return",{finalOptions:d,errors:f});case 9:case"end":return e.stop()}}),e,this)}))),function(e,r){return m.apply(this,arguments)})},{key:"parseImageOptions",value:(h=t(o().mark((function e(r,t){var n,a,s,c,u,l,p,d,f,h,v,y,m=arguments;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=m.length>2&&void 0!==m[2]?m[2]:[],a=this.prepareSourceOptions(t,n),s=a.removeIdList,c=a.preOptionsMap,u=i(s);try{for(u.s();!(l=u.n()).done;)p=l.value,r.removeImageSource(p)}catch(e){u.e(e)}finally{u.f()}d=[],f=[],h=i(t),e.prev=7,h.s();case 9:if((v=h.n()).done){e.next=22;break}return y=v.value,e.prev=11,e.next=14,this.processSingleImageSource(r,y,c);case 14:d.push(y),e.next=20;break;case 17:e.prev=17,e.t0=e.catch(11),this.recordSourceError(y.id,e.t0,c,d,f);case 20:e.next=9;break;case 22:e.next=27;break;case 24:e.prev=24,e.t1=e.catch(7),h.e(e.t1);case 27:return e.prev=27,h.f(),e.finish(27);case 30:return e.abrupt("return",{finalOptions:d,errors:f});case 31:case"end":return e.stop()}}),e,this,[[7,24,27,30],[11,17]])}))),function(e,r){return h.apply(this,arguments)})},{key:"processSingleImageSource",value:(f=t(o().mark((function e(r,t,n){var i,a,s,c,u,l;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=t.id,a=t.url,s=t.layout,!(c=n.get(i))){e.next=10;break}if(c.url===a){e.next=7;break}return e.next=6,this.core.utils.loadImage(a);case 6:u=e.sent;case 7:r.updateImageSource(i,s,u),e.next=14;break;case 10:return e.next=12,this.core.utils.loadImage(a);case 12:l=e.sent,r.addImageSource(i,l,s);case 14:case"end":return e.stop()}}),e,this)}))),function(e,r,t){return f.apply(this,arguments)})},{key:"parseVideoOptions",value:(d=t(o().mark((function e(r,t){var n,a,s,c,u,l,p,d,f,h,v,y,m=arguments;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=m.length>2&&void 0!==m[2]?m[2]:[],a=this.prepareSourceOptions(t,n),s=a.removeIdList,c=a.preOptionsMap,u=i(s);try{for(u.s();!(l=u.n()).done;)p=l.value,r.removeVideoSource(p)}catch(e){u.e(e)}finally{u.f()}d=[],f=[],h=i(t),e.prev=7,h.s();case 9:if((v=h.n()).done){e.next=22;break}return y=v.value,e.prev=11,e.next=14,this.processSingleVideoSource(r,y,c);case 14:d.push(y),e.next=20;break;case 17:e.prev=17,e.t0=e.catch(11),this.recordSourceError(y.id,e.t0,c,d,f);case 20:e.next=9;break;case 22:e.next=27;break;case 24:e.prev=24,e.t1=e.catch(7),h.e(e.t1);case 27:return e.prev=27,h.f(),e.finish(27);case 30:return e.abrupt("return",{finalOptions:d,errors:f});case 31:case"end":return e.stop()}}),e,this,[[7,24,27,30],[11,17]])}))),function(e,r){return d.apply(this,arguments)})},{key:"processSingleVideoSource",value:(p=t(o().mark((function e(r,t,n){var i,a,s,c,u,l;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=t.id,a=t.url,s=t.layout,!(c=n.get(i))){e.next=10;break}if(c.url===a){e.next=7;break}return e.next=6,this.core.utils.loadVideo(a);case 6:u=e.sent;case 7:r.updateVideoSource(i,s,u),e.next=14;break;case 10:return e.next=12,this.core.utils.loadVideo(a);case 12:l=e.sent,r.addVideoSource(i,l,s);case 14:case"end":return e.stop()}}),e,this)}))),function(e,r,t){return p.apply(this,arguments)})},{key:"createPlaceholderVideoTrack",value:function(){var e=document.createElement("canvas");e.width=640,e.height=480;var r=e.getContext("2d");return r&&(r.fillStyle="black",r.fillRect(0,0,e.width,e.height)),e.captureStream(1).getVideoTracks()[0]}},{key:"removeEventListeners",value:function(e){var r=this.eventListeners.get(e);r&&(r.inputMediaTrackChanged&&r.inputMediaTrackChanged(),r.captureSuccess&&r.captureSuccess(),this.eventListeners.delete(e))}},{key:"captureCamera",value:(l=t(o().mark((function e(r){var t,n,i,a,s,c,u;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=r.id,n=r.cameraId,i=r.videoTrack,a=r.profile,(s=new this.core.LocalVideoTrack).log.id+="-".concat(t),c={},n?c.deviceId=n:this.core.utils.isUndefined(i)||(c.customSource=i),this.core.utils.isUndefined(a)||(u=this.resolveVideoProfile(a))&&s.setProfile(u),e.next=8,s.capture(c);case 8:return e.abrupt("return",s);case 9:case"end":return e.stop()}}),e,this)}))),function(e){return l.apply(this,arguments)})},{key:"updateCameraProfile",value:(u=t(o().mark((function e(r){var t,n,i,a,s,c,u;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=r.id,i=r.cameraId,a=r.videoTrack,s=r.profile,c=null==(t=this.localMixVideoTrack)?void 0:t.inputLocalVideoTracks.get(n)){e.next=4;break}return e.abrupt("return");case 4:if(!i){e.next=9;break}return e.next=7,c.switchDevice(i);case 7:e.next=12;break;case 9:if(this.core.utils.isUndefined(a)){e.next=12;break}return e.next=12,c.setInputMediaStreamTrack(a);case 12:if(this.core.utils.isUndefined(s)){e.next=18;break}if((u=this.resolveVideoProfile(s))&&c.setProfile(u),i&&c.isNeedToSwitchDevice(i)){e.next=18;break}return e.next=18,c.applyProfile();case 18:case"end":return e.stop()}}),e,this)}))),function(e){return u.apply(this,arguments)})},{key:"captureScreen",value:(s=t(o().mark((function e(r){var t,n,i,a,s,c,u,l,p,d,f,h=this;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=r.id,n=r.profile,i=r.captureElement,a=r.preferDisplaySurface,s=r.systemAudio,c=r.videoTrack,u=r.audioTrack,(l=new this.core.LocalScreenTrack).log.id+="-".concat(t),p={captureElement:i,preferDisplaySurface:a,systemAudio:s,videoTrack:c,audioTrack:u},this.core.utils.isUndefined(n)||(this.core.utils.isString(n)?(d=this.core.constants.screenProfileMap[n])&&l.setProfile(d):l.setProfile(n)),e.next=7,l.capture(p);case 7:return f=e.sent,s&&f.getAudioTracks().length>0?(this.systemAudioTrackList[t]=f.getAudioTracks()[0],this.log.info("".concat(t," system audio track captured"))):this.removeSystemAudioTrack(t),l.mediaTrack.addEventListener(this.core.constants.NAME.ENDED,(function(){h.handleScreenShareEnded(t)})),e.abrupt("return",l);case 11:case"end":return e.stop()}}),e,this)}))),function(e){return s.apply(this,arguments)})},{key:"handleScreenShareEnded",value:function(e){var r,t,n;null==(r=this.localMixVideoTrack)||r.removeScreenSource(e),(null==(t=this._mixVideoConfig)?void 0:t.screen)&&(this._mixVideoConfig.screen=this._mixVideoConfig.screen.filter((function(r){return r.id!==e}))),null==(n=this.onScreenShareStop)||n.call(this,e)}},{key:"_updatePreview",value:(r=t(o().mark((function e(r){var t,n,i,a,s;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=r.view,n=r.track,i=r.prevConfig,!this.core.utils.isUndefined(t)||!(null==i?void 0:i.view)){e.next=7;break}if(!((a=this.core.utils.getViewListFromView(i.view)).length>0)){e.next=6;break}return e.next=6,n.play(a);case 6:return e.abrupt("return");case 7:if(this.core.utils.isUndefined(t)){e.next=15;break}if(!((s=this.core.utils.getViewListFromView(t)).length>0)){e.next=14;break}return e.next=12,n.play(s);case 12:e.next=15;break;case 14:n.stop();case 15:case"end":return e.stop()}}),e,this)}))),function(e){return r.apply(this,arguments)})},{key:"removeSystemAudioTrack",value:function(e){var r=this.systemAudioTrackList[e];r&&(r.stop(),this.log.info("".concat(e," system audio track stop")),delete this.systemAudioTrackList[e])}}]);var r,s,u,l,p,d,f,h,m,x,V,A,C,M,O,I,_,P,N}();return y(V,"Name","VideoMixer"),V}));
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rtc-plugin/virtual-background",
3
- "version": "5.15.0-wasm.2",
3
+ "version": "5.15.1-beta.1",
4
4
  "description": "TRTC Web SDK 5.x virtual background plugin",
5
5
  "main": "./virtual-background.esm.js",
6
6
  "module": "./virtual-background.esm.js",