;(()=>{!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).MSP_PLAYER=t()}(this,(function(){"use strict";function e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function t(t){for(var n=1;n0&&void 0!==arguments[0]?arguments[0]:this.gl.LINEAR,t=this.gl,n=t.createTexture();return t.bindTexture(t.TEXTURE_2D,n),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,e),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,e),n}},{key:"renderImg",value:function(e,t,n){var i=this.gl;i.viewport(0,0,i.canvas.width,i.canvas.height),i.clearColor(0,0,0,0),i.clear(i.COLOR_BUFFER_BIT);var r=e*t,o=(e>>1)*(t>>1);i.bindTexture(i.TEXTURE_2D,i.y),i.texImage2D(i.TEXTURE_2D,0,i.LUMINANCE,e,t,0,i.LUMINANCE,i.UNSIGNED_BYTE,n.subarray(0,r)),i.bindTexture(i.TEXTURE_2D,i.u),i.texImage2D(i.TEXTURE_2D,0,i.LUMINANCE,e>>1,t>>1,0,i.LUMINANCE,i.UNSIGNED_BYTE,n.subarray(r,r+o)),i.bindTexture(i.TEXTURE_2D,i.v),i.texImage2D(i.TEXTURE_2D,0,i.LUMINANCE,e>>1,t>>1,0,i.LUMINANCE,i.UNSIGNED_BYTE,n.subarray(r+o,n.length)),i.drawArrays(i.TRIANGLE_STRIP,0,4)}},{key:"setSize",value:function(e,t,n){var i=Math.min(n,e);this.canvas.width=i,this.canvas.height=i*t/e}},{key:"destroy",value:function(){var e=this.gl;e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT|e.STENCIL_BUFFER_BIT),e.getExtension("WEBGL_lose_context").loseContext()}}]),e}(),d="主动关闭",p=function(){function e(t,i){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};n(this,e);var o=new WebSocket(t);o.binaryType="arraybuffer",this.wsURL=t;var a=r.glWidth,l=r.glHeight;this.ws=o,this.gl=i,this.glWidth=a,this.glHeight=l,this.renderStatus=1,this.dataStatus=0,this.yuvData=null,this.reconnectTimer=1,this.reconnectTimerMax=3,this.reconnectTimerDelay=3e3,o&&this._wsInit();var s=this.glWidth*this.glHeight,u=(this.glWidth>>1)*(this.glHeight>>1),c=s+2*u,h=new Uint8Array(c);h.fill(0,0,s),h.fill(128,s,s+u),h.fill(128,s+u,c),this.gl.renderImg(this.glWidth,this.glHeight,h)}return r(e,[{key:"_wsInit",value:function(){var e=this;this.ws.onopen=function(){console.info("🙂---ws链接---open")},this.ws.onclose=function(t){var n=t.code,i=t.reason;console.info("😑---ws链接---close"),4444!==n&&i!==d&&e.reconnectWS()},this.ws.onmessage=function(t){0!==e.renderStatus&&(e.yuvData=new Uint8Array(t.data),e.gl.renderImg(e.glWidth,e.glHeight,e.yuvData))},this.ws.onerror=function(t){console.info("😭---ws链接---error",t),e.reconnectWS()}}},{key:"closeWS",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:4444,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:d;this.ws.close(e,t),this.ws=null,this.gl.destroy()}},{key:"setWsStatus",value:function(e){[0,1].includes(e)&&this.renderStatus!==e&&(this.renderStatus=e)}},{key:"reconnectWS",value:function(){var e=this;if(this.reconnectTimer>this.reconnectTimerMax)return console.error("【ERROR】---WebSocket链接错误",this.wsURL);setTimeout((function(){e.reconnectTimer++,e.ws=new WebSocket(e.wsURL),e._wsInit()}),this.reconnectTimerDelay)}}]),e}(),v="yuv-player",y=function(){var e=document.createElement("template");e.innerHTML='\n \n\n
\n 占位\n
\n';var t=function(t){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&l(e,t)}(u,t);var i,r,o=(i=u,r=s(),function(){var e,t=a(i);if(r){var n=a(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return h(this,e)});function u(){var t;return n(this,u),(t=o.call(this))._shadowRoot=t.attachShadow({mode:"open"}),t._shadowRoot.appendChild(e.content.cloneNode(!0)),t}return u}(c(HTMLElement));window.customElements.define(v,t)},g={},T=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{autoPlay:!0};n(this,e);var i=t.wsUrl,r=t.autoPlay,o=t.el,a=t.sharpType,l=void 0===a?g:a,s=t.cid;if(console.info("🚀MSP_PLAYER.CONFIG",t),this.cid=Number(s),null==l||!l.width||null==l||!l.height)return new Error("【初始化player参数错误】--请传入正确sharpType = { width, height } 宽高配置!");this._bridgeWidthToSharpType(l,!1),void 0===r&&(r=!0),e.initPlayerTemplate(),this.wsUrl=i,this.canvas_id=function(){var e,t,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:8,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:16,r="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),o=[];if(i=i||r.length,n)for(e=0;e0&&void 0!==arguments[0]?arguments[0]:null;this.playerWS.closeWS(),this.playerWS=null,e&&this._notifyMspClose(e)}},{key:"_notifyMspClose",value:function(e){if(this.cid)try{var t,n,i,r,o=window.cloudICP,a=function(t){e(t)},l={cid:String(this.cid),callback:a},s={confId:o.util.callStatusMgr.currentGoingConf,cid:o.util.callStatusMgr.currentGoingConfCid,callback:a};null!=l.cid&&l.cid==s.cid?null!=o.util.callStatusMgr.windowInfos[2147483647]?null===(t=o.dispatch)||void 0===t||null===(r=o.dispatch.conf)||void 0===r||r.endConf(s):null===(t=o.dispatch)||void 0===t||null===(r=o.dispatch.conf)||void 0===r||r.exitVideoConf(s):null===(t=o.dispatch)||void 0===t||null===(n=t.video)||void 0===n||null===(i=n.release)||void 0===i||i.call(n,l)}catch(e){console.error("[Error] - 调用cloudICP.dispatch.video.release出错",e)}}},{key:"changeVideResolution",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=""==t||null==t||null==t;if(console.info("changeVideResolution.sharpType",t),n)return console.warn("【changeVideResolution改变分辨率 参数错误】:请输入正确参数,如: { width: 1920, height: 1080 }");if(this.playerWS){this.playerWS.setWsStatus(0);if(null==t||!t.width||null==t||!t.height)return new Error("【初始化player参数错误】--请传入正确sharpType = { width, height } 宽高配置!");this._bridgeWidthToSharpType(t,!0,(function(){setTimeout((function(){e.playerWS.glWidth=e.playerWidth,e.playerWS.glHeight=e.playerHeight,e._setCanvasSize(),e.playerWS.setWsStatus(1)}),200)}))}}},{key:"_bridgeWidthToSharpType",value:function(n){var i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},o=parseInt(n.width),a=parseInt(n.height);o>e.MAX_WIDTH&&(o=e.MAX_WIDTH),a>e.MAX_HEIGHT&&(a=e.MAX_HEIGHT);var l=function(e,t){var n={};return n.width=e,n.height=t,n.width%4!=0&&(n.width=n.width+(4-n.width%4)),n.height%4!=0&&(n.height=n.height+(4-n.height%4)),n}(o,a);if(this._setMediaQUality(l),i){if(!this.cid)return console.warn("⚠⚠ 请在初始化player时传入cid!");try{var s,u,c,h=window.cloudICP,f=t(t({},n),{},{resID:this.cid,callback:r});null===(s=h.dispatch)||void 0===s||null===(u=s.video)||void 0===u||null===(c=u.setWssflowWinFmttype)||void 0===c||c.call(u,f)}catch(e){console.error("[Error] - 调用cloudICP.dispatch.video.setWssflowWinFmttype出错",e)}}}},{key:"_initCanvasGl",value:function(){var e=document.getElementById(this.canvas_id),t=new f(e);this.gl=t,this._setCanvasSize()}},{key:"_setCanvasSize",value:function(){this.gl.setSize(this.playerWidth,this.playerHeight,this.playerWidth)}},{key:"_initPlayerWs",value:function(){var e={glWidth:this.playerWidth,glHeight:this.playerHeight},t=new p(this.wsUrl,this.gl,e);this.playerWS=t}},{key:"_setMediaQUality",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.width,n=void 0===t?1280:t,i=e.height,r=void 0===i?720:i;this.playerWidth=n,this.playerHeight=r}},{key:"_mountPlayer",value:function(){var e='');this.mountDom.innerHTML=e}},{key:"setStatusTips",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";e&&(this.statusTips=e)}},{key:"_setPlayStatus",value:function(e){[-1,0,1].includes(e)&&(this.playStatus=e)}}],[{key:"genID",value:function(e){return Number(Math.random().toString().substr(3,e)+Date.now()).toString(36)}},{key:"initPlayerTemplate",value:function(){var e;(e=v,window.customElements.get(e))||y()}}]),e}();return o(T,"MAX_WIDTH",2560),o(T,"MAX_HEIGHT",1440),window.MSP_PLAYER=T,T}));})()