-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAgoraRtcAgentSDK-1.3.0.js
executable file
·2 lines (2 loc) · 31.3 KB
/
AgoraRtcAgentSDK-1.3.0.js
1
2
function AgoraRender(){function e(e,t,n,r,o){i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,u),i.texImage2D(i.TEXTURE_2D,0,i.LUMINANCE,e,t,0,i.LUMINANCE,i.UNSIGNED_BYTE,n);var a=i.getError();a!=i.NO_ERROR&&console.log("upload y plane ",e,t,n.byteLength," error",a),i.activeTexture(i.TEXTURE1),i.bindTexture(i.TEXTURE_2D,d),i.texImage2D(i.TEXTURE_2D,0,i.LUMINANCE,e/2,t/2,0,i.LUMINANCE,i.UNSIGNED_BYTE,r);var a=i.getError();a!=i.NO_ERROR&&console.log("upload u plane ",e,t,r.byteLength," error",a),i.activeTexture(i.TEXTURE2),i.bindTexture(i.TEXTURE_2D,f),i.texImage2D(i.TEXTURE_2D,0,i.LUMINANCE,e/2,t/2,0,i.LUMINANCE,i.UNSIGNED_BYTE,o);var a=i.getError();a!=i.NO_ERROR&&console.log("upload v plane ",e,t,o.byteLength," error",a)}function t(e){e&&v.gl&&v.gl.deleteBuffer(e)}function n(e){e&&v.gl&&v.gl.deleteTexture(e)}function r(e,t,n,r,a,c){v.view=e,v.mirrorView=t,v.container=document.createElement("div"),v.container.style.width="100%",v.container.style.height="100%",v.container.style.display="flex",v.container.style.justifyContent="center",v.container.style.alignItems="center",v.view.appendChild(v.container),v.canvas=document.createElement("canvas"),0==a||180==a?(v.canvas.width=n,v.canvas.height=r):(v.canvas.width=r,v.canvas.height=n),v.initWidth=n,v.initHeight=r,v.initRotation=a,v.mirrorView&&(v.canvas.style.transform="rotateY(180deg)"),v.container.appendChild(v.canvas);try{i=v.canvas.getContext("webgl")||v.canvas.getContext("experimental-webgl")}catch(l){console.log(l)}return i?(i.clearColor(0,0,0,1),i.enable(i.DEPTH_TEST),i.depthFunc(i.LEQUAL),i.clear(i.COLOR_BUFFER_BIT|i.DEPTH_BUFFER_BIT),s=createProgramFromSources(i,[AgoraRTC.vertexShaderSource,AgoraRTC.yuvShaderSource]),i.useProgram(s),void o()):(i=void 0,void c({error:"Browser not support! No WebGL detected."}))}function o(){c=i.getAttribLocation(s,"a_position"),l=i.getAttribLocation(s,"a_texCoord"),m=i.createBuffer(),g=i.createBuffer(),i.activeTexture(i.TEXTURE0),u=i.createTexture(),i.bindTexture(i.TEXTURE_2D,u),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,i.NEAREST),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,i.NEAREST),i.activeTexture(i.TEXTURE1),d=i.createTexture(),i.bindTexture(i.TEXTURE_2D,d),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,i.NEAREST),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,i.NEAREST),i.activeTexture(i.TEXTURE2),f=i.createTexture(),i.bindTexture(i.TEXTURE_2D,f),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,i.NEAREST),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,i.NEAREST);var e=i.getUniformLocation(s,"Ytex");i.uniform1i(e,0);var t=i.getUniformLocation(s,"Utex");i.uniform1i(t,1);var n=i.getUniformLocation(s,"Vtex");i.uniform1i(n,2)}function a(e,t,n){v.canvas.style.width="100%",v.canvas.style.height="100%",0===e||180==e?v.canvas.clientWidth/v.canvas.clientHeight>t/n?v.canvas.style.width=v.canvas.clientHeight*t/n+"px":v.canvas.clientWidth/v.canvas.clientHeight<t/n&&(v.canvas.style.height=v.canvas.clientWidth*n/t+"px"):v.canvas.clientHeight/v.canvas.clientWidth>t/n?v.canvas.style.height=v.canvas.clientWidth*t/n+"px":v.canvas.clientHeight/v.canvas.clientWidth<t/n&&(v.canvas.style.width=v.canvas.clientHeight*n/t+"px"),i.bindBuffer(i.ARRAY_BUFFER,m),i.enableVertexAttribArray(c),i.vertexAttribPointer(c,2,i.FLOAT,!1,0,0);var r={x:0,y:0},o={x:t,y:0},a={x:t,y:n},l={x:0,y:n},u=r,d=o,f=a,g=l;switch(e){case 0:break;case 90:u=o,d=a,f=l,g=r;break;case 180:u=a,d=l,f=r,g=o;break;case 270:u=l,d=r,f=o,g=a}i.bufferData(i.ARRAY_BUFFER,new Float32Array([u.x,u.y,d.x,d.y,g.x,g.y,g.x,g.y,d.x,d.y,f.x,f.y]),i.STATIC_DRAW);var E=i.getUniformLocation(s,"u_resolution");i.uniform2f(E,t,n)}var i=void 0,s=void 0,c=void 0,l=void 0,u=void 0,d=void 0,f=void 0,g=void 0,m=void 0,v={view:void 0,mirrorView:!1,container:void 0,canvas:void 0,renderImageCount:0,initWidth:320,initHeight:180,initRotation:0};return v.start=function(e,t,n){r(e,t,v.initWidth,v.initHeight,v.initRotation,n)},v.stop=function(){i=void 0,s=void 0,c=void 0,l=void 0,n(u),n(d),n(f),u=void 0,d=void 0,f=void 0,t(g),t(m),g=void 0,m=void 0,v.container&&v.container.removeChild(v.canvas),v.view&&v.view.removeChild(v.container),v.canvas=void 0,v.container=void 0,v.view=void 0,v.mirrorView=!1},v.renderImage=function(t){if(i){if(t.width!=v.initWidth||t.height!=v.initHeight||t.rotation!=v.initRotation){var n=v.view,o=v.mirrorView;v.stop(),console.log("init canvas "+t.width+"*"+t.height+" rotation "+t.rotation),r(n,o,t.width,t.height,t.rotation,function(e){console.error("init canvas "+t.width+"*"+t.height+" rotation "+t.rotation+" failed. "+e)})}i.bindBuffer(i.ARRAY_BUFFER,g);var s=t.width+t.left+t.right,c=t.height+t.top+t.bottom;i.bufferData(i.ARRAY_BUFFER,new Float32Array([t.left/s,t.bottom/c,1-t.right/s,t.bottom/c,t.left/s,1-t.top/c,t.left/s,1-t.top/c,1-t.right/s,t.bottom/c,1-t.right/s,1-t.top/c]),i.STATIC_DRAW),i.enableVertexAttribArray(l),i.vertexAttribPointer(l,2,i.FLOAT,!1,0,0),e(s,c,t.yplane,t.uplane,t.vplane),a(t.rotation,t.width,t.height),i.drawArrays(i.TRIANGLES,0,6),v.renderImageCount+=1}},v}var AgoraRTC=function(){"use strict";var e={};return Object.defineProperties(e,{version:{get:function(){return"<%= pkg.version %>"}},name:{get:function(){return"<%= pkg.title %>"}}}),e}();AgoraRTC.url="wss://localhost.agora.io:8921/",AgoraRTC.macAgentInstallUrl="http://download.agora.io/AgoraWebAgent-1.3.0.pkg",AgoraRTC.winAgentInstallUrl="http://download.agora.io/AgoraWebAgentSetup-1.3.0.exe",AgoraRTC.enAgentInstallGuideUrl="http://download.agora.io/install-guide-en.html",AgoraRTC.cnAgentInstallGuideUrl="http://download.agora.io/install-guide-cn.html",AgoraRTC.vertexShaderSource="attribute vec2 a_position;attribute vec2 a_texCoord;uniform vec2 u_resolution;varying vec2 v_texCoord;void main() {vec2 zeroToOne = a_position / u_resolution; vec2 zeroToTwo = zeroToOne * 2.0; vec2 clipSpace = zeroToTwo - 1.0; gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1);v_texCoord = a_texCoord;}",AgoraRTC.yuvShaderSource="precision mediump float;uniform sampler2D Ytex;uniform sampler2D Utex,Vtex;varying vec2 v_texCoord;void main(void) { float nx,ny,r,g,b,y,u,v; mediump vec4 txl,ux,vx; nx=v_texCoord[0]; ny=v_texCoord[1]; y=texture2D(Ytex,vec2(nx,ny)).r; u=texture2D(Utex,vec2(nx,ny)).r; v=texture2D(Vtex,vec2(nx,ny)).r; y=1.1643*(y-0.0625); u=u-0.5; v=v-0.5; r=y+1.5958*v; g=y-0.39173*u-0.81290*v; b=y+2.017*u; gl_FragColor=vec4(r,g,b,1.0);}",AgoraRTC.videoStreamSource='function onSuccess(){postMessage({type:"init",result:!0})}function onFailure(t){postMessage(t)}function sendMessage(t){"videoStat"!=t.command&&console.log(JSON.stringify(t)),that.stream&&that.stream.readyState==WebSocket.OPEN&&that.stream.send(JSON.stringify(t))}var that={};that.stream=void 0,that.init=function(t){return that.stream&&that.stream.readyState===WebSocket.OPEN?(console.warn("stream "+that.getId()+" has been initialized already"),void onSuccess()):(that.local=t.local,that.profile=t.videoProfile,that.stream=new WebSocket(t.url),that.stream.onopen=function(t){console.log((that.local?"local":"remote")+" Stream "),console.log(t),that.profile&&sendMessage({command:"setVideoProfile",profile:that.profile}),that.stream.binaryType="arraybuffer",onSuccess()},that.stream.onclose=function(t){console.log(that.local?"local":"remote"," Stream ",t),that.stream=void 0,onFailure({type:t.type,code:t.code,reason:t.reason})},that.stream.onerror=function(t){console.log(that.local?"local":"remote"," Stream ",t),onFailure({type:t.type,code:t.code,reason:t.reason})},void(that.stream.onmessage=function(t){"string"==typeof t.data?console.log(that.local?"local":"remote"," message from agent ",t.data):t.data instanceof ArrayBuffer?postMessage({type:"message",data:t.data}):t.data instanceof Blob&&console.warn("Blob image data is not supported")}))},that.close=function(){that.stream&&(that.stream.onmessage=void 0,that.stream.close()),that.stream=void 0},that.setVideoProfile=function(t){return"string"==typeof t?(that.stream?sendMessage({command:"setVideoProfile",profile:t}):that.profile=t,!0):!1},self.addEventListener("message",function(t){var e=t.data;switch(e.type){case"init":that.init(e);break;case"send":sendMessage(e.message);break;case"close":that.close()}},!1);';var AgoraCall=function(e,t){e&&e(t)},L={VideoProfiles:{Profile120P:"120P",Profile120P_2:"120P_2",Profile120P_3:"120P_3",Profile180P:"180P",Profile180P_2:"180P_2",Profile180P_3:"180P_3",Profile240P:"240P",Profile240P_2:"240P_2",Profile240P_3:"240P_3",Profile360P:"360P",Profile360P_2:"360P_2",Profile360P_3:"360P_3",Profile360P_4:"360P_4",Profile360P_5:"360P_5",Profile360P_6:"360P_6",Profile480P:"480P",Profile480P_2:"480P_2",Profile480P_3:"480P_3",Profile480P_4:"480P_4",Profile480P_5:"480P_5",Profile480P_6:"480P_6",Profile480P_7:"480P_7",Profile720P:"720P",Profile720P_2:"720P_2",Profile720P_3:"720P_3",Profile720P_4:"720P_4"},ErrorCode:{NO_ERROR:0,INVALID_VENDOR_KEY:101,FAILED:1,INVALID_ARGUMENT:2,NOT_READY:3,NOT_SUPPORTED:4,REFUSED:5,BUFFER_TOO_SMALL:6,NOT_INITIALIZED:7,INVALID_VIEW:8,NO_PERMISSION:9,TIMEDOUT:10,CANCELED:11,TOO_OFTEN:12,BIND_SOCKET:13,NET_DOWN:14,NET_NOBUFS:15,INIT_VIDEO:16,JOIN_CHANNEL_REJECTED:17,LEAVE_CHANNEL_REJECTED:18,ALREADY_IN_USE:19,INVALID_VENDOR_KEY:101,INVALID_CHANNEL_NAME:102,DYNAMIC_KEY_TIMEOUT:109,INVALID_DYNAMIC_KEY:110,LOAD_MEDIA_ENGINE:1001,START_CALL:1002,START_CAMERA:1003,START_VIDEO_RENDER:1004,ADM_GENERAL_ERROR:1005,ADM_JAVA_RESOURCE:1006,ADM_SAMPLE_RATE:1007,ADM_INIT_PLAYOUT:1008,ADM_START_PLAYOUT:1009,ADM_STOP_PLAYOUT:1010,ADM_INIT_RECORDING:1011,ADM_START_RECORDING:1012,ADM_STOP_RECORDING:1013,ADM_RUNTIME_PLAYOUT_ERROR:1015,ADM_RUNTIME_RECORDING_ERROR:1017,ADM_RECORD_AUDIO_FAILED:1018,ADM_INIT_LOOPBACK:1022,ADM_START_LOOPBACK:1023,VDM_CAMERA_NOT_AUTHORIZED:1501}};AgoraRTC.EventDispatcher=function(e){"use strict";var t={};return e.dispatcher={},e.dispatcher.eventListeners={},t.addEventListener=function(t,n){e.dispatcher.eventListeners[t]=n,e.dispatcher.eventListeners[t]||delete e.dispatcher.eventListeners[t]},t.on=t.addEventListener,t.dispatchEvent=function(t){e.dispatcher.eventListeners.hasOwnProperty(t.type)&&e.dispatcher.eventListeners[t.type](t)},t},AgoraRTC.BasicEvent=function(e){"use strict";var t={};return t.type=e.type,t},AgoraRTC.StreamEvent=function(e){"use strict";var t=AgoraRTC.BasicEvent(e);return t.stream=e.stream,t.msg=e.msg,t},AgoraRTC.ClientEvent=function(e){"use strict";var t=AgoraRTC.BasicEvent(e);return t.uid=e.uid,t.attr=e.attr,t.streams=e.streams,t},AgoraRTC.MediaEvent=function(e){"use strict";var t=AgoraRTC.BasicEvent(e);return t.msg=e.msg,t},AgoraRTC.Signal=function(e){var t=AgoraRTC.EventDispatcher(e);return t.connection=new WebSocket(e.url),t.sendMessage=function(e,n){t.connection.readyState==WebSocket.OPEN?t.connection.send(JSON.stringify(e)):(console.log("connection to agent lost."),n({error:"not connected"}))},t.close=function(){t.connection.onopen=void 0,t.connection.onclose=void 0,t.connection.onerror=void 0,t.connection.onmessage=void 0,t.connection.close()},t.connection.onopen=function(e){console.log(e),t.dispatchEvent(AgoraRTC.MediaEvent({type:"onopen",event:e}))},t.connection.onclose=function(t){console.log(t),AgoraCall(e.onFailure,t)},t.connection.onerror=function(t){console.log(t),AgoraCall(e.onFailure,t)},t.connection.onmessage=function(e){console.log(e);var n=JSON.parse(e.data);t.dispatchEvent(AgoraRTC.MediaEvent({type:n.command,msg:n}))},t},AgoraRTC.Stream=function(e){function t(){a=void 0,i=void 0,s=void 0,c=void 0}function n(e,t){return{width:e,height:t}}function r(e){var t=e.data;switch(t.type){case"init":o.oninit(t);break;case"close":o.onclose(t);break;case"error":o.onerror(t);break;case"message":o.onmessage(t.data)}}var o=AgoraRTC.EventDispatcher(e);o.stream=void 0,o.render=void 0,o.interval=void 0,o.lastRenderCount=0,o.profile=void 0,o.latency=0;var a=void 0,i=void 0,s=void 0,c=void 0;o.init=function(t,n){if(o.stream)return console.warn("stream "+o.getId()+" has been initialized already"),void t();var a=new Blob([AgoraRTC.videoStreamSource],{type:"application/javascript"});o.stream=new Worker(URL.createObjectURL(a)),o.oninit=function(r){console.log((e.local?"local":"remote")+" Stream "),console.log(r),r.result===!0?t():n()},o.onclose=function(t){window.clearInterval(o.interval),console.log(e.local?"local":"remote"," Stream ",t),o.stream=void 0},o.onerror=function(t){window.clearInterval(o.interval),console.log(e.local?"local":"remote"," Stream ",t),n(t)},o.onmessage=function(t){"string"==typeof t?console.log(e.local?"local":"remote"," message from agent ",t):t instanceof ArrayBuffer?o.render&&o.drawImage(t):t instanceof Blob&&console.warn("Blob image data is not supported")},o.stream.addEventListener("message",r,!1),o.stream.postMessage({type:"init",local:e.local,url:AgoraRTC.url,videoProfile:o.profile})},o.close=function(){window.clearInterval(o.interval),o.stream&&(o.stream.removeEventListener("message",r),o.stream.postMessage({type:"close"})),o.stream=void 0,o.stop()},o.play=function(t,n){var r=document.getElementById(t);o.stop();var a=e.local;o.render=AgoraRender(),o.render.start(r,a,n),e.local?o.stream.postMessage({type:"send",message:{command:"preview",uid:e.streamID}}):o.stream.postMessage({type:"send",message:{command:"subscribe",uid:e.streamID}}),o.interval&&window.clearInterval(o.interval),o.interval=window.setInterval(function(){if(o.render){var t=o.render.renderImageCount-o.lastRenderCount;o.stream.postMessage({type:"send",message:{command:"videoStat",uid:e.streamID,fps:t,frameCount:o.lastRenderCount,latency:o.latency}}),o.lastRenderCount=o.render.renderImageCount,o.latency=0}},1e3)},o.stop=function(){o.render&&o.render.stop(),o.render=void 0,o.lastRenderCount=0},o.bindClient=function(e){o.client=e},o.enableAudio=function(e){return o.client.enableAudio(o,e)},o.disableAudio=function(e){return o.client.disableAudio(o,e)},o.enableVideo=function(e){return o.client.enableVideo(o,e)},o.disableVideo=function(e){return o.client.disableVideo(o,e)},o.getId=function(){return e.streamID},o.drawImage=function(e){if(!a)return a=e,void(20!=a.byteLength&&(console.error("invalid image header "+e.byteLength),t()));if(!i)return i=e,void(20===i.byteLength&&(console.error("invalid image header "+e.byteLength+" "+i.byteLength),t()));if(!s)return s=e,void(20===s.byteLength&&(console.error("invalid image header "+e.byteLength+" "+i.byteLength+" "+s.byteLength),t()));if(!c){if(c=e,i.byteLength!=4*s.byteLength||s.byteLength!=c.byteLength)return console.error("invalid image header "+e.byteLength+" "+i.byteLength+" "+s.byteLength+" "+c.byteLength),void t();var n=new DataView(a),r=(n.getUint16(0),n.getUint16(2)),l=n.getUint16(4),u=n.getUint16(6),d=n.getUint16(8),f=n.getUint16(10),g=n.getUint16(12),m=n.getUint16(14),v=n.getUint32(16);o.render.renderImage({width:r,height:l,left:u,top:d,right:f,bottom:g,rotation:m,yplane:new Uint8Array(i),uplane:new Uint8Array(s),vplane:new Uint8Array(c)});var E=(4294967295&Date.now())>>>0,A=E-v;A>o.latency&&(o.latency=A),t()}},o.setVideoProfile=function(e){return"string"==typeof e?(o.stream?o.stream.postMessage({type:"send",message:{command:"setVideoProfile",profile:e}}):o.profile=e,!0):!1};({"true":!0,unspecified:!0,"120p":n(160,120),"240p":n(320,240),"360p":n(640,360),"480p":n(640,480),"720p":n(1280,720),"1080p":n(1920,1080),"4k":n(3840,2160)});return o},AgoraRTC.createStream=function(e){return AgoraRTC.Stream(e)},AgoraRTC.Client=function(e){"use strict";function t(e){return s.signalOpen?(console.log("signal connection lost."),void AgoraCall(s.onFailure,{reason:"LOST_CONNECTION_TO_AGENT",type:e.type,code:e.code})):(e.reason="CLOSE_BEFORE_OPEN",e.agentInstallUrl=o(),e.agentInstallGuideUrl=a(),void AgoraCall(s.onFailure,e))}function n(e){var t=e.msg;s.remoteStreams.hasOwnProperty(t.uid)&&(s.remoteStreams[t.uid].close(),delete s.remoteStreams[t.uid],console.log("remote streams after peer leave ",s.remoteStreams)),s.dispatchEvent(AgoraRTC.ClientEvent({type:"peer-leave",uid:t.uid}))}function r(e){var t=e.msg;if(!s.remoteStreams.hasOwnProperty(t.uid)){var n=AgoraRTC.Stream({streamID:t.uid,local:!1,audio:t.audio,video:t.video,screen:t.screen});n.bindClient(s),s.remoteStreams[t.uid]=n}s.dispatchEvent(AgoraRTC.StreamEvent({type:"stream-added",stream:s.remoteStreams[t.uid]})),console.log("remote streams",s.remoteStreams)}function o(){return-1!=navigator.appVersion.indexOf("Mac")?AgoraRTC.macAgentInstallUrl:AgoraRTC.winAgentInstallUrl}function a(){var e=navigator.language||navigator.userLanguage;return-1!=e.indexOf("zh")?AgoraRTC.cnAgentInstallGuideUrl:AgoraRTC.enAgentInstallGuideUrl}function i(){s.localStream&&s.localStream.close(),s.localStream=void 0;for(var e in s.remoteStreams)s.remoteStreams.hasOwnProperty(e)&&(s.remoteStreams[e].close(),delete s.remoteStreams[e])}var s=AgoraRTC.EventDispatcher(e);return s.signal=void 0,s.localStream=void 0,s.remoteStreams={},s.signalOpen=!1,s.init=function(n,r,o){function a(e){for(var t in L.ErrorCode)if(L.ErrorCode.hasOwnProperty(t)&&L.ErrorCode[t]===e)return void AgoraCall(o,{reason:String(t)});AgoraCall(o,{reason:"UNKNOWN_ERROR",code:m.code})}if(e.key=n,s.onFailure=o,!s.signal){try{s.signal=AgoraRTC.Signal({url:AgoraRTC.url,onFailure:t})}catch(i){return console.log("create signal connection failed"+i),void AgoraCall(o,i)}s.signal.on("onopen",function(t){s.signalOpen=!0,s.signal.sendMessage({command:"initialize",key:e.key},function(e){AgoraCall(o,e)})})}s.signalOpen&&s.signal.sendMessage({command:"initialize",key:e.key},function(e){AgoraCall(o,e)}),s.signal.on("initialize",function(e){var t=e.msg;return 1!=t.code?(s.signal.close(),s.signal=void 0,void a(t.code)):void AgoraCall(r,t)}),s.signal.on("onError",function(e){var t=e.msg;a(t.code)}),console.log(s.signal)},s.renewChannelDynamicKey=function(e,t,n){s.signal.sendMessage({command:"renewChannelDynamicKey",key:e},function(e){AgoraCall(n,e)}),s.signal.on("renewChannelDynamicKey",function(e){var r=e.msg;return r.code===!0?void AgoraCall(t,r):void AgoraCall(n,r)})},s.join=function(e,t,o,a,i){return t.length>64?void i(L.ErrorCode.INVALID_CHANNEL_NAME):(s.signal.sendMessage({command:"joinChannel",key:e,channel:t,uid:o},function(e){AgoraCall(i,{error:e})}),void s.signal.on("joinChannel",function(e){s.signal.on("onAddVideoStream",r),s.signal.on("onPeerLeave",n);var t=e.msg;return 1==t.code?(t.uid||(t.uid=0),void AgoraCall(a,t.uid)):t.code==L.ErrorCode.JOIN_CHANNEL_REJECTED?(console.error("Command joinChannel has been rejected by agent. Is this user joined a channel already?"),void AgoraCall(i,t.code)):void AgoraCall(i,t.code)}))},s.leave=function(e,t){i(),s.signal.sendMessage({command:"leaveChannel"},function(e){console.log("leave channel failed",e)}),s.signal.on("leaveChannel",function(n){var r=n.msg;return r.code===!0?void AgoraCall(e,r):r.code==L.ErrorCode.LEAVE_CHANNEL_REJECTED?(console.error("Command leaveChannel has been rejected by agent. Is this user not in a channel?"),void AgoraCall(e,r)):void AgoraCall(t,{code:r.code})})},s.publish=function(e,t,n){s.localStream=e,s.signal.sendMessage({command:"unmuteLocal"},function(e){AgoraCall(n,{error:e})}),s.signal.on("unmuteLocal",function(e){var r=e.msg;return 1!=r.code?void AgoraCall(n,{code:r.code}):void AgoraCall(t,r)}),e.bindClient(s)},s.unpublish=function(e,t,n){s.signal.sendMessage({command:"muteLocal"},function(e){AgoraCall(n,{error:e})}),s.signal.on("muteLocal",function(e){var r=e.msg;return 1!=r.code?void AgoraCall(n,{code:r.code}):void AgoraCall(t,r)})},s.subscribe=function(e,t){e.init(function(){s.dispatchEvent(AgoraRTC.StreamEvent({type:"stream-subscribed",stream:e}))},function(e){AgoraCall(t,e)})},s.unsubscribe=function(e,t){return console.log("remote streams",s.remoteStreams),void 0==s.remoteStreams[e]?void AgoraCall(t,{error:"no such stream"}):(s.remoteStreams[e].close(),void delete s.remoteStreams[e])},s.enableAudio=function(e,t){return s.signal.on("enableAudio",function(e){var n=e.msg;t&&AgoraCall(t,n.code===!0)}),s.signal.sendMessage({command:"enableAudio",streamID:e.getId()},function(e){e.reason="CONNECTION_TO_AGENT_ERROR",AgoraCall(t,e)}),!0},s.disableAudio=function(e,t){return s.signal.on("disableAudio",function(e){var n=e.msg;t&&AgoraCall(t,n.code===!0)}),s.signal.sendMessage({command:"disableAudio",streamID:e.getId()},function(e){e.reason="CONNECTION_TO_AGENT_ERROR",AgoraCall(t,e)}),!0},s.enableVideo=function(e,t){return s.signal.on("enableVideo",function(e){var n=e.msg;t&&AgoraCall(t,n.code===!0)}),s.signal.sendMessage({command:"enableVideo",streamID:e.getId()},function(e){e.reason="CONNECTION_TO_AGENT_ERROR",AgoraCall(t,e)}),!0},s.disableVideo=function(e,t){return s.signal.on("disableVideo",function(e){var n=e.msg;t&&AgoraCall(t,n.code===!0)}),s.signal.sendMessage({command:"disableVideo",streamID:e.getId()},function(e){e.reason="CONNECTION_TO_AGENT_ERROR",AgoraCall(t,e)}),!0},s.getDevices=function(e){s.signal.sendMessage({command:"getDevices"},function(t){t.reason="CONNECTION_TO_AGENT_ERROR",AgoraCall(e,t)}),s.signal.on("getDevices",function(t){var n=t.msg.devices;AgoraCall(e,n)})},s.selectDevice=function(e,t){s.signal.sendMessage({command:"selectDevice",device:e},function(e){e.reason="CONNECTION_TO_AGENT_ERROR",AgoraCall(t,e)}),s.signal.on("selectDevice",function(e){console.log(e)})},s.startRecording=function(e,t,n){s.signal.sendMessage({command:"startRecording",key:e},function(e){e.reason="CONNECTION_TO_AGENT_ERROR",AgoraCall(n,e)}),s.signal.on("startRecording",function(e){var r=e.msg;r.code===!0?AgoraCall(t,r):AgoraCall(n,r)})},s.stopRecording=function(e,t,n){s.signal.sendMessage({command:"stopRecording",key:e},function(e){e.reason="CONNECTION_TO_AGENT_ERROR",AgoraCall(n,e)}),s.signal.on("stopRecording",function(e){var r=e.msg;r.code===!0?AgoraCall(t,r):AgoraCall(n,r)})},s.queryRecordingStatus=function(e){s.signal.sendMessage({command:"queryRecordingStatus"},function(t){t.reason="CONNECTION_TO_AGENT_ERROR",AgoraCall(e,t)}),s.signal.on("queryRecordingStatus",function(t){e(t.msg)})},s.close=function(){i(),s.signal&&(s.signal.close(),s.signal=void 0)},s.getVersion=function(e,t){s.signal.sendMessage({command:"getVersion"}),s.signal.on("getVersion",function(n){var r=n.msg;r.code===!0?e(r):t(r)})},s.setParameters=function(e){s.signal.sendMessage({command:"setParameters",parameters:JSON.stringify(e)})},s},AgoraRTC.createRtcClient=function(){return AgoraRTC.Client({})},function(e,t){if("function"==typeof define&&define.amd)define([],t);else{var n=t.call(e);Object.keys(n).forEach(function(t){e[t]=n[t]})}}(this,function(){function e(e){G.console&&(G.console.error?G.console.error(e):G.console.log&&G.console.log(e))}function t(e){return e=e||G,e!==e.top}function n(e){return'<table style="background-color: #8CE; width: 100%; height: 100%;"><tr><td align="center"><div style="display: table-cell; vertical-align: middle;"><div style="">'+e+"</div></div></td></tr></table>"}function r(e,t){for(var n=["webgl","experimental-webgl"],r=null,o=0;o<n.length;++o){try{r=e.getContext(n[o],t)}catch(a){}if(r)break}return r}function o(e,t){function o(t){var r=e.parentNode;r&&(r.innerHTML=n(t))}if(!G.WebGLRenderingContext)return o(X),null;var a=r(e,t);return a||o(k),a}function a(){t()&&(document.body.className="iframe")}function i(e,n,r){var i=r||{};if(t()){if(a(),!i.dontResize&&i.resize!==!1){var s=e.clientWidth,c=e.clientHeight;e.width=s,e.height=c}}else if(!i.noTitle&&i.title!==!1){var l=document.title,u=document.createElement("h1");u.innerText=l,document.body.insertBefore(u,document.body.children[0])}var d=o(e,n);return d}function s(t,n,r,o){var a=o||e,i=t.createShader(r);t.shaderSource(i,n),t.compileShader(i);var s=t.getShaderParameter(i,t.COMPILE_STATUS);if(!s){var c=t.getShaderInfoLog(i);return a("*** Error compiling shader '"+i+"':"+c),t.deleteShader(i),null}return i}function c(t,n,r,o,a){var i=a||e,s=t.createProgram();n.forEach(function(e){t.attachShader(s,e)}),r&&obj_attrib.forEach(function(e,n){t.bindAttribLocation(s,o?o[n]:n,e)}),t.linkProgram(s);var c=t.getProgramParameter(s,t.LINK_STATUS);if(!c){var l=t.getProgramInfoLog(s);return i("Error in program linking:"+l),t.deleteProgram(s),null}return s}function l(e,t,n,r){var o,a="",i=document.getElementById(t);if(!i)throw"*** Error: unknown script element"+t;if(a=i.text,!n)if("x-shader/x-vertex"===i.type)o=e.VERTEX_SHADER;else if("x-shader/x-fragment"===i.type)o=e.FRAGMENT_SHADER;else if(o!==e.VERTEX_SHADER&&o!==e.FRAGMENT_SHADER)throw"*** Error: unknown shader type";return s(e,a,n?n:o,r)}function u(e,t,n,r,o){for(var a=[],i=0;i<t.length;++i)a.push(l(e,t[i],e[W[i]],o));return c(e,a,n,r,o)}function d(e,t,n,r,o){for(var a=[],i=0;i<t.length;++i)a.push(s(e,t[i],e[W[i]],o));return c(e,a,n,r,o)}function f(e,t){return t===e.SAMPLER_2D?e.TEXTURE_2D:t===e.SAMPLER_CUBE?e.TEXTURE_CUBE_MAP:void 0}function g(e,t){function n(t,n){var o=e.getUniformLocation(t,n.name),a=n.type,i=n.size>1&&"[0]"===n.name.substr(-3);if(a===e.FLOAT&&i)return function(t){e.uniform1fv(o,t)};if(a===e.FLOAT)return function(t){e.uniform1f(o,t)};if(a===e.FLOAT_VEC2)return function(t){e.uniform2fv(o,t)};if(a===e.FLOAT_VEC3)return function(t){e.uniform3fv(o,t)};if(a===e.FLOAT_VEC4)return function(t){e.uniform4fv(o,t)};if(a===e.INT&&i)return function(t){e.uniform1iv(o,t)};if(a===e.INT)return function(t){e.uniform1i(o,t)};if(a===e.INT_VEC2)return function(t){e.uniform2iv(o,t)};if(a===e.INT_VEC3)return function(t){e.uniform3iv(o,t)};if(a===e.INT_VEC4)return function(t){e.uniform4iv(o,t)};if(a===e.BOOL)return function(t){e.uniform1iv(o,t)};if(a===e.BOOL_VEC2)return function(t){e.uniform2iv(o,t)};if(a===e.BOOL_VEC3)return function(t){e.uniform3iv(o,t)};if(a===e.BOOL_VEC4)return function(t){e.uniform4iv(o,t)};if(a===e.FLOAT_MAT2)return function(t){e.uniformMatrix2fv(o,!1,t)};if(a===e.FLOAT_MAT3)return function(t){e.uniformMatrix3fv(o,!1,t)};if(a===e.FLOAT_MAT4)return function(t){e.uniformMatrix4fv(o,!1,t)};if((a===e.SAMPLER_2D||a===e.SAMPLER_CUBE)&&i){for(var s=[],c=0;c<info.size;++c)s.push(r++);return function(t,n){return function(r){e.uniform1iv(o,n),r.forEach(function(r,o){e.activeTexture(e.TEXTURE0+n[o]),e.bindTexture(t,r)})}}(f(e,a),s)}if(a===e.SAMPLER_2D||a===e.SAMPLER_CUBE)return function(t,n){return function(r){e.uniform1i(o,n),e.activeTexture(e.TEXTURE0+n),e.bindTexture(t,r)}}(f(e,a),r++);throw"unknown type: 0x"+a.toString(16)}for(var r=0,o={},a=e.getProgramParameter(t,e.ACTIVE_UNIFORMS),i=0;a>i;++i){var s=e.getActiveUniform(t,i);if(!s)break;var c=s.name;"[0]"===c.substr(-3)&&(c=c.substr(0,c.length-3));var l=n(t,s);o[c]=l}return o}function m(e,t){Object.keys(t).forEach(function(n){var r=e[n];r&&r(t[n])})}function v(e,t){function n(t){return function(n){e.bindBuffer(e.ARRAY_BUFFER,n.buffer),e.enableVertexAttribArray(t),e.vertexAttribPointer(t,n.numComponents||n.size,n.type||e.FLOAT,n.normalize||!1,n.stride||0,n.offset||0)}}for(var r={},o=e.getProgramParameter(t,e.ACTIVE_ATTRIBUTES),a=0;o>a;++a){var i=e.getActiveAttrib(t,a);if(!i)break;var s=e.getAttribLocation(t,i.name);r[i.name]=n(s)}return r}function E(e,t){Object.keys(t).forEach(function(n){var r=e[n];r&&r(t[n])})}function A(e,t,n,r,o){t=t.map(function(e){var t=document.getElementById(e);return t?t.text:e});var a=d(e,t,n,r,o);if(!a)return null;var i=g(e,a),s=v(e,a);return{program:a,uniformSetters:i,attribSetters:s}}function T(e,t,n){E(t,n.attribs),n.indices&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n.indices)}function _(e,t){for(var n=0;n<H.length;++n){var r=H[n]+t,o=e.getExtension(r);if(o)return o}}function R(e,t){t=t||1;var n=e.clientWidth*t,r=e.clientHeight*t;return e.width!==n||e.height!==r?(e.width=n,e.height=r,!0):!1}function h(e){if(t(e))for(var n=e.parent.document.getElementsByTagName("iframe"),r=0;r<n.length;++r){var o=n[r];if(o.contentDocument===e.document)return o}}function C(e){try{var t=h(e);if(!t)return!0;var n=t.getBoundingClientRect(),r=n.top<e.parent.innerHeight&&n.bottom>=0&&n.left<e.parent.innerWidth&&n.right>=0;return r&&C(e.parent)}catch(o){return!0}}function p(e){var t=!0;if(e){var n=e.getBoundingClientRect();t=n.top<G.innerHeight&&n.bottom>=0}return t&&C(G)}function y(e,t){var n=0;return e.push=function(){for(var t=0;t<arguments.length;++t){var r=arguments[t];if(r instanceof Array||r.buffer&&r.buffer instanceof ArrayBuffer)for(var o=0;o<r.length;++o)e[n++]=r[o];else e[n++]=r}},e.reset=function(e){n=e||0},e.numComponents=t,Object.defineProperty(e,"numElements",{get:function(){return this.length/this.numComponents|0}}),e}function b(e,t,n){var r=n||Float32Array;return y(new r(e*t),e)}function P(e,t,n,r){n=n||e.ARRAY_BUFFER;var o=e.createBuffer();return e.bindBuffer(n,o),e.bufferData(n,t,r||e.STATIC_DRAW),o}function N(e){return"indices"!==e}function I(e){var t={};return Object.keys(e).filter(N).forEach(function(e){t["a_"+e]=e}),t}function O(e,t){if(t instanceof Int8Array)return e.BYTE;if(t instanceof Uint8Array)return e.UNSIGNED_BYTE;if(t instanceof Int16Array)return e.SHORT;if(t instanceof Uint16Array)return e.UNSIGNED_SHORT;if(t instanceof Int32Array)return e.INT;if(t instanceof Uint32Array)return e.UNSIGNED_INT;if(t instanceof Float32Array)return e.FLOAT;throw"unsupported typed array type"}function S(e){return e instanceof Int8Array?!0:e instanceof Uint8Array}function L(e){return e.buffer&&e.buffer instanceof ArrayBuffer}function D(e,t){var n;if(n=e.indexOf("coord")>=0?2:e.indexOf("color")>=0?4:3,t%n>0)throw"can not guess numComponents. You should specify it.";return n}function U(e,t){if(L(e))return e;Array.isArray(e)&&(e={data:e}),e.numComponents||(e.numComponents=D(t,e.length));var n=e.type;n||"indices"===t&&(n=Uint16Array);var r=b(e.numComponents,e.data.length/e.numComponents|0,n);return r.push(e.data),r}function x(e,t,n){var r=n||I(t),o={};return Object.keys(r).forEach(function(n){var a=r[n],i=U(t[a],a);o[n]={buffer:P(e,i),numComponents:i.numComponents||D(a),type:O(e,i),normalize:S(i)}}),o}function M(e){var t=Object.keys(e)[0],n=e[t];return L(n)?n.numElements:n.data.length/n.numComponents}function w(e,t,n){var r={attribs:x(e,t,n)},o=t.indices;return o?(o=U(o,"indices"),r.indices=P(e,o,e.ELEMENT_ARRAY_BUFFER),r.numElements=o.length):r.numElements=M(t),r}function F(e,t){var n={};return Object.keys(t).forEach(function(r){var o="indices"===r?e.ELEMENT_ARRAY_BUFFER:e.ARRAY_BUFFER,a=U(t[r],name);n[r]=P(e,a,o)}),t.indices?n.numElements=t.indices.length:t.position&&(n.numElements=t.position.length/3),n}function B(e,t,n,r,o){var a=n.indices,i=void 0===r?n.numElements:r;o=void 0===o?o:0,a?e.drawElements(t,i,e.UNSIGNED_SHORT,o):e.drawArrays(t,o,i)}function V(e,t){var n=null,r=null;t.forEach(function(t){var o=t.programInfo,a=t.bufferInfo,i=!1;o!==n&&(n=o,e.useProgram(o.program),i=!0),(i||a!==r)&&(r=a,T(e,o.attribSetters,a)),m(o.uniformSetters,t.uniforms),B(e,e.TRIANGLES,a)})}var G=this,X='This page requires a browser that supports WebGL.<br/><a href="http://get.webgl.org">Click here to upgrade your browser.</a>',k='It doesn\'t appear your computer can support WebGL.<br/><a href="http://get.webgl.org/troubleshooting/">Click here for more information.</a>',W=["VERTEX_SHADER","FRAGMENT_SHADER"],H=["","MOZ_","OP_","WEBKIT_"];return G.requestAnimationFrame&&(G.requestAnimationFrame=function(e){return function(t,n){var r=function(){p(n)?e(t,n):e(r,n)};r()}}(G.requestAnimationFrame)),G.requestAnimFrame=G.requestAnimationFrame,G.cancelRequestAnimFrame=G.cancelAnimationFrame,{createAugmentedTypedArray:b,createAttribsFromArrays:x,createBuffersFromArrays:F,createBufferInfoFromArrays:w,createAttributeSetters:v,createProgram:c,createProgramFromScripts:u,createProgramFromSources:d,createProgramInfo:A,createUniformSetters:g,drawBufferInfo:B,drawObjectList:V,getWebGLContext:i,updateCSSIfInIFrame:a,getExtensionWithKnownPrefixes:_,resizeCanvasToDisplaySize:R,setAttributes:E,setBuffersAndAttributes:T,
setUniforms:m,setupWebGL:o}});