@ioai/robot_viewer 0.0.0-stage → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +217 -2
  3. package/bin/cli.js +83 -0
  4. package/dist/assets/css/PlotPanel-3e7d7555.css +1 -0
  5. package/dist/assets/js/ColladaLoader-2a0c4638.js +1 -0
  6. package/dist/assets/js/GLTFLoader-7a7f40d7.js +1 -0
  7. package/dist/assets/js/MTLLoader-b6ce88b7.js +1 -0
  8. package/dist/assets/js/OBJLoader-7667aa01.js +1 -0
  9. package/dist/assets/js/PlotPanel-09f986c7.js +1 -0
  10. package/dist/assets/js/STLLoader-de0915d4.js +1 -0
  11. package/dist/assets/js/URDFLoader-a34b6917.js +1 -0
  12. package/dist/assets/js/USDZLoader-64197f74.js +7 -0
  13. package/dist/assets/js/__vite-browser-external-afb87ea8.js +1 -0
  14. package/dist/assets/js/codemirror-c3cec7b3.js +1 -0
  15. package/dist/assets/js/codemirror-themes-e6995a6a.js +1 -0
  16. package/dist/assets/js/d3-2e308866.js +1 -0
  17. package/dist/assets/js/index-56e94ce5.js +6 -0
  18. package/dist/assets/js/mujoco_wasm-345a2576.js +1 -0
  19. package/dist/assets/js/three-9c891de0.js +6 -0
  20. package/dist/camera-publish-worker.js +1 -0
  21. package/dist/favicon.svg +2 -0
  22. package/dist/heartbeat-worker.js +1 -0
  23. package/dist/index.html +4373 -0
  24. package/dist/models/mocap/blender_human.urdf +2319 -0
  25. package/dist/models/mocap/blender_human_skeleton_v4.urdf +1432 -0
  26. package/dist/models/mocap/blender_human_skeleton_v5.urdf +2717 -0
  27. package/dist/models/mocap/meshes/v4/L_base_link.STL +0 -0
  28. package/dist/models/mocap/meshes/v4/L_figer1_1.STL +0 -0
  29. package/dist/models/mocap/meshes/v4/L_figer1_2.STL +0 -0
  30. package/dist/models/mocap/meshes/v4/L_figer1_3.STL +0 -0
  31. package/dist/models/mocap/meshes/v4/L_figer1_4.STL +0 -0
  32. package/dist/models/mocap/meshes/v4/L_figer1_5.STL +0 -0
  33. package/dist/models/mocap/meshes/v4/L_figer1base.STL +0 -0
  34. package/dist/models/mocap/meshes/v4/L_figer2_1.STL +0 -0
  35. package/dist/models/mocap/meshes/v4/L_figer2_2.STL +0 -0
  36. package/dist/models/mocap/meshes/v4/L_figer2_3.STL +0 -0
  37. package/dist/models/mocap/meshes/v4/L_figer2_4.STL +0 -0
  38. package/dist/models/mocap/meshes/v4/L_figer2_5.STL +0 -0
  39. package/dist/models/mocap/meshes/v4/L_figer3_1.STL +0 -0
  40. package/dist/models/mocap/meshes/v4/L_figer3_2.STL +0 -0
  41. package/dist/models/mocap/meshes/v4/L_figer3_3.STL +0 -0
  42. package/dist/models/mocap/meshes/v4/L_figer3_4.STL +0 -0
  43. package/dist/models/mocap/meshes/v4/L_figer3_5.STL +0 -0
  44. package/dist/models/mocap/meshes/v4/L_figer4_1.STL +0 -0
  45. package/dist/models/mocap/meshes/v4/L_figer4_2.STL +0 -0
  46. package/dist/models/mocap/meshes/v4/L_figer4_3.STL +0 -0
  47. package/dist/models/mocap/meshes/v4/L_figer4_4.STL +0 -0
  48. package/dist/models/mocap/meshes/v4/L_figer4_5.STL +0 -0
  49. package/dist/models/mocap/meshes/v4/L_figer5_1.STL +0 -0
  50. package/dist/models/mocap/meshes/v4/L_figer5_2.STL +0 -0
  51. package/dist/models/mocap/meshes/v4/L_figer5_3.STL +0 -0
  52. package/dist/models/mocap/meshes/v4/L_figer5_4.STL +0 -0
  53. package/dist/models/mocap/meshes/v4/L_figer5_5.STL +0 -0
  54. package/dist/models/mocap/meshes/v4/L_handle.STL +0 -0
  55. package/dist/models/mocap/meshes/v4/L_handleseat.STL +0 -0
  56. package/dist/models/mocap/meshes/v4/L_mark.STL +0 -0
  57. package/dist/models/mocap/meshes/v4/L_markseat.STL +0 -0
  58. package/dist/models/mocap/meshes/v4/Lgamepadbase.STL +0 -0
  59. package/dist/models/mocap/meshes/v4/Link1.STL +0 -0
  60. package/dist/models/mocap/meshes/v4/Link2.STL +0 -0
  61. package/dist/models/mocap/meshes/v4/R_base_link.STL +0 -0
  62. package/dist/models/mocap/meshes/v4/R_figer1_1.STL +0 -0
  63. package/dist/models/mocap/meshes/v4/R_figer1_2.STL +0 -0
  64. package/dist/models/mocap/meshes/v4/R_figer1_3.STL +0 -0
  65. package/dist/models/mocap/meshes/v4/R_figer1_4.STL +0 -0
  66. package/dist/models/mocap/meshes/v4/R_figer1_5.STL +0 -0
  67. package/dist/models/mocap/meshes/v4/R_figer1base.STL +0 -0
  68. package/dist/models/mocap/meshes/v4/R_figer2_1.STL +0 -0
  69. package/dist/models/mocap/meshes/v4/R_figer2_2.STL +0 -0
  70. package/dist/models/mocap/meshes/v4/R_figer2_3.STL +0 -0
  71. package/dist/models/mocap/meshes/v4/R_figer2_4.STL +0 -0
  72. package/dist/models/mocap/meshes/v4/R_figer2_5.STL +0 -0
  73. package/dist/models/mocap/meshes/v4/R_figer3_1.STL +0 -0
  74. package/dist/models/mocap/meshes/v4/R_figer3_2.STL +0 -0
  75. package/dist/models/mocap/meshes/v4/R_figer3_3.STL +0 -0
  76. package/dist/models/mocap/meshes/v4/R_figer3_4.STL +0 -0
  77. package/dist/models/mocap/meshes/v4/R_figer3_5.STL +0 -0
  78. package/dist/models/mocap/meshes/v4/R_figer4_1.STL +0 -0
  79. package/dist/models/mocap/meshes/v4/R_figer4_2.STL +0 -0
  80. package/dist/models/mocap/meshes/v4/R_figer4_3.STL +0 -0
  81. package/dist/models/mocap/meshes/v4/R_figer4_4.STL +0 -0
  82. package/dist/models/mocap/meshes/v4/R_figer4_5.STL +0 -0
  83. package/dist/models/mocap/meshes/v4/R_figer5_1.STL +0 -0
  84. package/dist/models/mocap/meshes/v4/R_figer5_2.STL +0 -0
  85. package/dist/models/mocap/meshes/v4/R_figer5_3.STL +0 -0
  86. package/dist/models/mocap/meshes/v4/R_figer5_4.STL +0 -0
  87. package/dist/models/mocap/meshes/v4/R_figer5_5.STL +0 -0
  88. package/dist/models/mocap/meshes/v4/R_handle.STL +0 -0
  89. package/dist/models/mocap/meshes/v4/R_handleseat.STL +0 -0
  90. package/dist/models/mocap/meshes/v4/R_mark.STL +0 -0
  91. package/dist/models/mocap/meshes/v4/R_markseat.STL +0 -0
  92. package/dist/models/mocap/meshes/v4/Rgamepadbase.STL +0 -0
  93. package/dist/models/mocap/meshes/v4/base_link.STL +0 -0
  94. package/dist/models/mocap/meshes/v4/r_figer1_1.STL +0 -0
  95. package/dist/models/mocap/meshes/v5/L_handleseat.STL +0 -0
  96. package/dist/models/mocap/meshes/v5/R_handleseat.STL +0 -0
  97. package/dist/models/mocap/meshes/v5/link_LeftSkeletonBase.STL +0 -0
  98. package/dist/models/mocap/meshes/v5/link_LeftSkeletonIndex1.STL +0 -0
  99. package/dist/models/mocap/meshes/v5/link_LeftSkeletonIndex2.STL +0 -0
  100. package/dist/models/mocap/meshes/v5/link_LeftSkeletonIndex3.STL +0 -0
  101. package/dist/models/mocap/meshes/v5/link_LeftSkeletonIndex4.STL +0 -0
  102. package/dist/models/mocap/meshes/v5/link_LeftSkeletonMiddle1.STL +0 -0
  103. package/dist/models/mocap/meshes/v5/link_LeftSkeletonMiddle2.STL +0 -0
  104. package/dist/models/mocap/meshes/v5/link_LeftSkeletonMiddle3.STL +0 -0
  105. package/dist/models/mocap/meshes/v5/link_LeftSkeletonMiddle4.STL +0 -0
  106. package/dist/models/mocap/meshes/v5/link_LeftSkeletonPinky1.STL +0 -0
  107. package/dist/models/mocap/meshes/v5/link_LeftSkeletonPinky2.STL +0 -0
  108. package/dist/models/mocap/meshes/v5/link_LeftSkeletonPinky3.STL +0 -0
  109. package/dist/models/mocap/meshes/v5/link_LeftSkeletonPinky4.STL +0 -0
  110. package/dist/models/mocap/meshes/v5/link_LeftSkeletonRing1.STL +0 -0
  111. package/dist/models/mocap/meshes/v5/link_LeftSkeletonRing2.STL +0 -0
  112. package/dist/models/mocap/meshes/v5/link_LeftSkeletonRing3.STL +0 -0
  113. package/dist/models/mocap/meshes/v5/link_LeftSkeletonRing4.STL +0 -0
  114. package/dist/models/mocap/meshes/v5/link_LeftSkeletonThumb1.STL +0 -0
  115. package/dist/models/mocap/meshes/v5/link_LeftSkeletonThumb2.STL +0 -0
  116. package/dist/models/mocap/meshes/v5/link_LeftSkeletonThumb3.STL +0 -0
  117. package/dist/models/mocap/meshes/v5/link_LeftSkeletonThumb4.STL +0 -0
  118. package/dist/models/mocap/meshes/v5/link_LeftSkeletonThumbBase.STL +0 -0
  119. package/dist/models/mocap/meshes/v5/link_RightSkeletonBase.STL +0 -0
  120. package/dist/models/mocap/meshes/v5/link_RightSkeletonIndex1.STL +0 -0
  121. package/dist/models/mocap/meshes/v5/link_RightSkeletonIndex2.STL +0 -0
  122. package/dist/models/mocap/meshes/v5/link_RightSkeletonIndex3.STL +0 -0
  123. package/dist/models/mocap/meshes/v5/link_RightSkeletonIndex4.STL +0 -0
  124. package/dist/models/mocap/meshes/v5/link_RightSkeletonMiddle1.STL +0 -0
  125. package/dist/models/mocap/meshes/v5/link_RightSkeletonMiddle2.STL +0 -0
  126. package/dist/models/mocap/meshes/v5/link_RightSkeletonMiddle3.STL +0 -0
  127. package/dist/models/mocap/meshes/v5/link_RightSkeletonMiddle4.STL +0 -0
  128. package/dist/models/mocap/meshes/v5/link_RightSkeletonPinky1.STL +0 -0
  129. package/dist/models/mocap/meshes/v5/link_RightSkeletonPinky2.STL +0 -0
  130. package/dist/models/mocap/meshes/v5/link_RightSkeletonPinky3.STL +0 -0
  131. package/dist/models/mocap/meshes/v5/link_RightSkeletonPinky4.STL +0 -0
  132. package/dist/models/mocap/meshes/v5/link_RightSkeletonRing1.STL +0 -0
  133. package/dist/models/mocap/meshes/v5/link_RightSkeletonRing2.STL +0 -0
  134. package/dist/models/mocap/meshes/v5/link_RightSkeletonRing3.STL +0 -0
  135. package/dist/models/mocap/meshes/v5/link_RightSkeletonRing4.STL +0 -0
  136. package/dist/models/mocap/meshes/v5/link_RightSkeletonThumb1.STL +0 -0
  137. package/dist/models/mocap/meshes/v5/link_RightSkeletonThumb2.STL +0 -0
  138. package/dist/models/mocap/meshes/v5/link_RightSkeletonThumb3.STL +0 -0
  139. package/dist/models/mocap/meshes/v5/link_RightSkeletonThumb4.STL +0 -0
  140. package/dist/models/mocap/meshes/v5/link_RightSkeletonThumbBase.STL +0 -0
  141. package/dist/scripts/start-rosbridge.sh +77 -0
  142. package/dist/usd-iframe.html +41 -0
  143. package/dist/usd-viewer/bindings/.gitattributes +2 -0
  144. package/dist/usd-viewer/bindings/emHdBindings.data +19331 -0
  145. package/dist/usd-viewer/bindings/emHdBindings.js +12281 -0
  146. package/dist/usd-viewer/bindings/emHdBindings.wasm +0 -0
  147. package/dist/usd-viewer/bindings/emHdBindings.worker.js +124 -0
  148. package/dist/usd-viewer/environments/neutral.hdr +0 -0
  149. package/dist/usd-viewer/error-handler.js +57 -0
  150. package/dist/usd-viewer/hydra/HydraPrimitives.js +740 -0
  151. package/dist/usd-viewer/hydra/TextureRegistry.js +130 -0
  152. package/dist/usd-viewer/hydra/ThreeJsRenderDelegate.js +65 -0
  153. package/dist/usd-viewer/index.d.ts +1 -0
  154. package/dist/usd-viewer/main.js +1018 -0
  155. package/dist/usd-viewer/usd.html +36 -0
  156. package/dist/usd-viewer/usdUtils.js +67 -0
  157. package/package.json +70 -4
  158. package/server/package.json +14 -0
  159. package/server/static-server.js +106 -0
@@ -0,0 +1 @@
1
+ const PREVIEW_MIME='image/jpeg';const PREVIEW_QUALITY=0.7;const MAX_SOCKET_BUFFER=0x4*0x400*0x400;const MAX_QUEUE=0x3;const DOMAIN_ID_TOPIC='/robot_viewer/domain_id';const DOMAIN_ID_TYPE='std_msgs/msg/Int32';const DOMAIN_ID_TIMEOUT_MS=0x1388;const TOPIC_TYPE='sensor_msgs/msg/CompressedImage';const ENCODINGS=[{'format':'jpeg','mime':'image/jpeg','lossy':!![]},{'format':'png','mime':'image/png','lossy':![]},{'format':'webp','mime':'image/webp','lossy':!![]}];const MIME_TO_FORMAT={'image/jpeg':'jpeg','image/png':'png','image/webp':'webp'};const requestedEncoding=()=>ENCODINGS['find'](_0x18f059=>_0x18f059['format']===cfg['format'])||ENCODINGS[0x0];const formatOfBlob=(_0x1cdf63,_0x3dddad)=>MIME_TO_FORMAT[_0x1cdf63]||_0x3dddad;let encodingSupport=null;async function probeEncodings(){if(!encodingSupport){const _0x15483b=[];try{const _0x3f8cd0=new OffscreenCanvas(0x8,0x8);const _0x5bf113=_0x3f8cd0['getContext']('2d');_0x5bf113['putImageData'](new ImageData(new Uint8ClampedArray(0x8*0x8*0x4),0x8,0x8),0x0,0x0);for(const _0x27e78e of ENCODINGS){let _0x5833e5=![];try{const _0x4ab256=await _0x3f8cd0['convertToBlob'](_0x27e78e['lossy']?{'type':_0x27e78e['mime'],'quality':0.8}:{'type':_0x27e78e['mime']});_0x5833e5=!!_0x4ab256&&_0x4ab256['type']===_0x27e78e['mime'];}catch(_0x92927c){_0x5833e5=![];}_0x15483b['push']({'format':_0x27e78e['format'],'supported':_0x5833e5});}}catch(_0x2b6980){for(const _0xd82ff5 of ENCODINGS)_0x15483b['push']({'format':_0xd82ff5['format'],'supported':_0xd82ff5['format']==='jpeg'});}encodingSupport=_0x15483b;}self['postMessage']({'cmd':'encodings','list':encodingSupport});return encodingSupport;}function bytesToBase64(_0x434049){const _0x4499e8=0x8000;let _0x53a71c='';for(let _0xc65f4e=0x0;_0xc65f4e<_0x434049['length'];_0xc65f4e+=_0x4499e8){_0x53a71c+=String['fromCharCode']['apply'](null,_0x434049['subarray'](_0xc65f4e,_0xc65f4e+_0x4499e8));}return btoa(_0x53a71c);}let cfg={'url':'','topic':'','type':TOPIC_TYPE,'frameId':'','rate':0xa,'format':'jpeg','quality':0x50,'preview':![],'previewWidth':0x140};let ws=null;let connected=![];let running=![];let connectionWanted=![];let reconnectTimer=null;let retryDelay=0x7d0;let connectStartedAt=-0x1;let advertisedTopic=null;let gridTimer=null;let queue=[];let pendingNeed=0x0;let encodeInFlight=0x0;let lastNeedAt=0x0;let lastEncodeAt=0x0;let domainId=undefined;let domainIdTimer=null;let domainIdSubscribed=![];let canvas=null;let ctx=null;let previewCanvas=null;let previewCtx=null;let statsTimer=null;const NEED_TIMEOUT_MS=0x5dc;const ENCODE_TIMEOUT_MS=0x1388;const CONNECT_TIMEOUT_MS=0x1388;const stats={'published':0x0,'dropped':0x0,'underruns':0x0,'stalled':0x0,'reconnects':0x0,'payloadBytes':0x0,'encodeMs':0x0,'captureMs':0x0,'rate':0x0,'lastDrop':null};let rateWindow={'start':0x0,'count':0x0};let produceSamples=[];const clampedRate=()=>Math['max'](0x1,Math['min'](0x78,Math['round'](cfg['rate'])||0xa));const ROUND_TRIP_MS=0x3;const MIN_DEPTH=0x2;const targetDepth=()=>{const _0x5c2904=0x3e8/clampedRate();const _0x3e9854=produceSamples['length']?Math['max'](...produceSamples):0x0;if(_0x3e9854<=0x0)return MIN_DEPTH;const _0x473b2c=Math['ceil']((_0x3e9854+ROUND_TRIP_MS)*1.15/_0x5c2904);return Math['min'](MAX_QUEUE,Math['max'](MIN_DEPTH,_0x473b2c));};function closeSocket(){stopDomainIdQuery();if(ws){const _0x11e06a=ws;_0x11e06a['onopen']=null;_0x11e06a['onclose']=null;_0x11e06a['onerror']=null;try{_0x11e06a['close']();}catch(_0x2c6c5){}ws=null;}connected=![];advertisedTopic=null;}function scheduleReconnect(){if(!connectionWanted||reconnectTimer)return;reconnectTimer=setTimeout(()=>{reconnectTimer=null;if(running)connect(cfg['url']);},retryDelay);retryDelay=Math['min'](0x2710,retryDelay*0x2);}function connect(_0x4ddf25){if(ws&&connected&&ws['readyState']===0x1&&cfg['url']===_0x4ddf25){self['postMessage']({'cmd':'state','connected':!![],'reused':!![]});return;}closeSocket();if(!_0x4ddf25){self['postMessage']({'cmd':'state','connected':![],'error':'缺少\x20rosbridge\x20地址'});return;}connectStartedAt=performance['now']();try{ws=new WebSocket(_0x4ddf25);}catch(_0x18676b){self['postMessage']({'cmd':'state','connected':![],'error':String(_0x18676b&&_0x18676b['message']||_0x18676b)});scheduleReconnect();return;}ws['onopen']=()=>{connected=!![];connectStartedAt=-0x1;retryDelay=0x7d0;advertise();queryDomainId();if(running)startGrid();self['postMessage']({'cmd':'state','connected':!![]});};ws['onclose']=()=>{connected=![];connectStartedAt=-0x1;advertisedTopic=null;self['postMessage']({'cmd':'state','connected':![]});scheduleReconnect();};ws['onerror']=()=>{self['postMessage']({'cmd':'state','connected':![],'error':'WebSocket\x20连接错误'});};ws['onmessage']=_0x13a21e=>onSocketMessage(_0x13a21e['data']);}function wsSend(_0xd69d70){if(!ws||ws['readyState']!==0x1)return![];try{ws['send'](JSON['stringify'](_0xd69d70));return!![];}catch(_0x312abc){return![];}}function advertise(){if(!connected||!cfg['topic'])return;wsSend({'op':'advertise','id':'advertise:'+cfg['topic'],'type':cfg['type'],'topic':cfg['topic'],'latch':![],'queue_size':0xa,'qos':{'history':'keep_last','depth':0xa,'reliability':'best_effort','durability':'volatile'}});advertisedTopic=cfg['topic'];}function unadvertise(){if(connected&&advertisedTopic){wsSend({'op':'unadvertise','topic':advertisedTopic,'id':'advertise:'+advertisedTopic});}advertisedTopic=null;}function queryDomainId(){if(!connected)return;domainIdSubscribed=!![];domainId=undefined;wsSend({'op':'subscribe','id':'domain-id','topic':DOMAIN_ID_TOPIC,'type':DOMAIN_ID_TYPE,'throttle_rate':0x7d0});if(domainIdTimer)clearTimeout(domainIdTimer);domainIdTimer=setTimeout(()=>{domainIdTimer=null;if(domainId===undefined){domainId=null;self['postMessage']({'cmd':'domainId','value':null});}},DOMAIN_ID_TIMEOUT_MS);}function stopDomainIdQuery(){domainIdSubscribed=![];if(domainIdTimer)clearTimeout(domainIdTimer);domainIdTimer=null;if(ws&&connected&&ws['readyState']===0x1){try{wsSend({'op':'unsubscribe','id':'domain-id','topic':DOMAIN_ID_TOPIC});}catch(_0x5ad13e){}}domainId=undefined;}function onSocketMessage(_0x130fa5){let _0x4a4d43=null;try{_0x4a4d43=JSON['parse'](_0x130fa5);}catch(_0xa82860){return;}if(!domainIdSubscribed)return;if(!_0x4a4d43||_0x4a4d43['topic']!==DOMAIN_ID_TOPIC)return;const _0x260825=typeof _0x4a4d43['msg']==='number'?_0x4a4d43['msg']:_0x4a4d43['msg']&&_0x4a4d43['msg']['data'];if(typeof _0x260825!=='number')return;domainId=_0x260825;if(domainIdTimer)clearTimeout(domainIdTimer);domainIdTimer=null;self['postMessage']({'cmd':'domainId','value':_0x260825});}function startGrid(){stopGrid();rateWindow={'start':performance['now'](),'count':0x0};gridTimer=setInterval(onGrid,0x3e8/clampedRate());}function stopGrid(){if(gridTimer)clearInterval(gridTimer);gridTimer=null;}function onGrid(){if(!connected||!running)return;if(ws&&typeof ws['bufferedAmount']==='number'&&ws['bufferedAmount']>MAX_SOCKET_BUFFER){stats['dropped']++;stats['lastDrop']='socket-backlog';return;}const _0x53975c=queue['shift']()||null;if(_0x53975c){publish(_0x53975c);}else if(stats['published']>0x0||pendingNeed>0x0){stats['underruns']++;}requestFrames();}function requestFrames(){if(!connected)return;const _0x194044=targetDepth()-queue['length']-pendingNeed-encodeInFlight;for(let _0x54293e=0x0;_0x54293e<_0x194044;_0x54293e++){pendingNeed++;lastNeedAt=performance['now']();self['postMessage']({'cmd':'need'});}}function watchdogStall(_0x4e6d02){if(!running)return;if(!connected){if(connectStartedAt>=0x0&&_0x4e6d02-connectStartedAt>CONNECT_TIMEOUT_MS){stats['reconnects']++;stats['lastDrop']='connect-timeout';connectStartedAt=-0x1;closeSocket();connect(cfg['url']);}return;}if(pendingNeed>0x0&&_0x4e6d02-lastNeedAt>NEED_TIMEOUT_MS){stats['stalled']+=pendingNeed;pendingNeed=0x0;stats['lastDrop']='need-timeout';requestFrames();}if(encodeInFlight>0x0&&_0x4e6d02-lastEncodeAt>ENCODE_TIMEOUT_MS){stats['stalled']+=encodeInFlight;encodeInFlight=0x0;stats['lastDrop']='encode-timeout';requestFrames();}}function buildMessage(_0x4fda6b){const _0xc7e127=Date['now']();return{'header':{'stamp':{'sec':Math['floor'](_0xc7e127/0x3e8),'nanosec':_0xc7e127%0x3e8*0xf4240},'frame_id':cfg['frameId']||''},'format':_0x4fda6b['format']||requestedEncoding()['format'],'data':_0x4fda6b['base64']};}function publish(_0x42c567){const _0x1e2305=wsSend({'op':'publish','topic':cfg['topic'],'msg':buildMessage(_0x42c567)});if(!_0x1e2305){stats['dropped']++;stats['lastDrop']='send';return;}stats['published']++;rateWindow['count']++;stats['payloadBytes']=_0x42c567['base64']['length'];stats['captureMs']=_0x42c567['captureMs']||0x0;stats['encodeMs']=_0x42c567['encodeMs']||0x0;stats['format']=_0x42c567['format']||'';if(cfg['preview']&&_0x42c567['previewBase64']){self['postMessage']({'cmd':'preview','base64':_0x42c567['previewBase64'],'mime':PREVIEW_MIME,'width':_0x42c567['width'],'height':_0x42c567['height'],'previewWidth':_0x42c567['pw'],'previewHeight':_0x42c567['ph'],'payloadBytes':_0x42c567['base64']['length'],'captureMs':_0x42c567['captureMs']||0x0});}}function reportStats(){const _0x19731c=performance['now']();watchdogStall(_0x19731c);const _0xf682e0=_0x19731c-rateWindow['start'];stats['rate']=_0xf682e0>0x0?rateWindow['count']/(_0xf682e0/0x3e8):0x0;rateWindow={'start':_0x19731c,'count':0x0};stats['queue']=queue['length'];stats['depth']=targetDepth();stats['pendingNeed']=pendingNeed;stats['encodeInFlight']=encodeInFlight;stats['wsState']=ws?ws['readyState']:-0x1;stats['connected']=connected;stats['running']=running;self['postMessage']({'cmd':'stats',...stats,'target':clampedRate()});}async function encodeFrame(_0xf50773){const {buffer:_0x179b43,width:_0x5958dc,height:_0x5f52dc,captureMs:_0x54e1c6}=_0xf50773;const _0x18c4f7=performance['now']();try{if(!canvas)canvas=new OffscreenCanvas(_0x5958dc,_0x5f52dc);else if(canvas['width']!==_0x5958dc||canvas['height']!==_0x5f52dc){canvas['width']=_0x5958dc;canvas['height']=_0x5f52dc;}if(!ctx)ctx=canvas['getContext']('2d');ctx['putImageData'](new ImageData(new Uint8ClampedArray(_0x179b43),_0x5958dc,_0x5f52dc),0x0,0x0);const _0x79a8a0=requestedEncoding();const _0x1eab18=await canvas['convertToBlob'](_0x79a8a0['lossy']?{'type':_0x79a8a0['mime'],'quality':Math['min'](0x1,Math['max'](0.01,(cfg['quality']||0x50)/0x64))}:{'type':_0x79a8a0['mime']});const _0x383bb5=new Uint8Array(await _0x1eab18['arrayBuffer']());const _0x3eccc2=formatOfBlob(_0x1eab18['type'],_0x79a8a0['format']);if(_0x3eccc2!==_0x79a8a0['format']){stats['lastDrop']='编码回落:'+_0x79a8a0['format']+'->'+_0x3eccc2;}let _0x51dbcc=null;let _0x3310ad=0x0;let _0x23f07f=0x0;if(cfg['preview']){const _0x256adb=Math['max'](0x50,Math['min'](0x280,cfg['previewWidth']||0x140));_0x3310ad=Math['min'](_0x256adb,_0x5958dc);_0x23f07f=Math['max'](0x1,Math['round'](_0x5f52dc*(_0x3310ad/_0x5958dc)));if(!previewCanvas)previewCanvas=new OffscreenCanvas(_0x3310ad,_0x23f07f);else if(previewCanvas['width']!==_0x3310ad||previewCanvas['height']!==_0x23f07f){previewCanvas['width']=_0x3310ad;previewCanvas['height']=_0x23f07f;}if(!previewCtx)previewCtx=previewCanvas['getContext']('2d');previewCtx['drawImage'](canvas,0x0,0x0,_0x3310ad,_0x23f07f);const _0x393e2c=await previewCanvas['convertToBlob']({'type':PREVIEW_MIME,'quality':PREVIEW_QUALITY});_0x51dbcc=bytesToBase64(new Uint8Array(await _0x393e2c['arrayBuffer']()));}const _0x3d9880=performance['now']()-_0x18c4f7;produceSamples['push']((_0x54e1c6||0x0)+_0x3d9880);if(produceSamples['length']>0x8)produceSamples['shift']();queue['push']({'base64':bytesToBase64(_0x383bb5),'format':_0x3eccc2,'previewBase64':_0x51dbcc,'pw':_0x3310ad,'ph':_0x23f07f,'width':_0x5958dc,'height':_0x5f52dc,'captureMs':_0x54e1c6,'encodeMs':_0x3d9880});if(queue['length']>MAX_QUEUE)queue['shift']();requestFrames();}catch(_0x51b40a){stats['dropped']++;self['postMessage']({'cmd':'state','connected':connected,'error':'编码失败:\x20'+(_0x51b40a&&_0x51b40a['message']?_0x51b40a['message']:String(_0x51b40a))});}finally{try{self['postMessage']({'cmd':'buffer','buffer':_0x179b43},[_0x179b43]);}catch(_0x4bbd72){stats['lastDrop']='buffer-return';}}}function applyConfig(_0x5409fd){Object['assign'](cfg,{'url':_0x5409fd['url']||cfg['url'],'topic':_0x5409fd['topic']||cfg['topic'],'type':_0x5409fd['type']||cfg['type'],'frameId':_0x5409fd['frameId']!==undefined?_0x5409fd['frameId']:cfg['frameId'],'rate':_0x5409fd['rate']||cfg['rate'],'format':_0x5409fd['format']||cfg['format'],'quality':_0x5409fd['quality']||cfg['quality'],'preview':_0x5409fd['preview']!==undefined?!!_0x5409fd['preview']:cfg['preview'],'previewWidth':_0x5409fd['previewWidth']||cfg['previewWidth']});}self['onmessage']=_0x571913=>{const _0x46d2a0=_0x571913['data']||{};switch(_0x46d2a0['cmd']){case'connect':{applyConfig(_0x46d2a0);connectionWanted=!![];retryDelay=0x7d0;if(reconnectTimer)clearTimeout(reconnectTimer);reconnectTimer=null;connectStartedAt=-0x1;if(!statsTimer)statsTimer=setInterval(reportStats,0x3e8);connect(cfg['url']);probeEncodings();break;}case'disconnect':{running=![];connectionWanted=![];connectStartedAt=-0x1;if(reconnectTimer)clearTimeout(reconnectTimer);reconnectTimer=null;stopGrid();if(statsTimer)clearInterval(statsTimer);statsTimer=null;unadvertise();closeSocket();queue=[];pendingNeed=0x0;encodeInFlight=0x0;self['postMessage']({'cmd':'state','connected':![]});break;}case'start':{applyConfig(_0x46d2a0);running=!![];connectionWanted=!![];retryDelay=0x7d0;if(reconnectTimer)clearTimeout(reconnectTimer);reconnectTimer=null;queue=[];produceSamples=[];pendingNeed=0x0;encodeInFlight=0x0;lastNeedAt=performance['now']();lastEncodeAt=lastNeedAt;connectStartedAt=-0x1;stats['published']=0x0;stats['dropped']=0x0;stats['underruns']=0x0;stats['stalled']=0x0;stats['reconnects']=0x0;stats['lastDrop']=null;if(statsTimer)clearInterval(statsTimer);statsTimer=setInterval(reportStats,0x3e8);connect(cfg['url']);if(connected)startGrid();probeEncodings();break;}case'config':{const _0x1b403a=clampedRate();const _0x50a588=cfg['topic'];const _0x3e6223=cfg['type'];['topic','type','frameId','rate','format','quality','preview','previewWidth']['forEach'](_0x19023f=>{if(_0x46d2a0[_0x19023f]!==undefined)cfg[_0x19023f]=_0x46d2a0[_0x19023f];});if(cfg['topic']!==_0x50a588||cfg['type']!==_0x3e6223){unadvertise();advertise();}if(clampedRate()!==_0x1b403a)startGrid();break;}case'stop':{running=![];stopGrid();queue=[];pendingNeed=0x0;encodeInFlight=0x0;break;}case'frame':{pendingNeed=Math['max'](0x0,pendingNeed-0x1);lastNeedAt=performance['now']();encodeInFlight++;lastEncodeAt=performance['now']();encodeFrame(_0x46d2a0)['finally'](()=>{encodeInFlight=Math['max'](0x0,encodeInFlight-0x1);});break;}case'noframe':{pendingNeed=Math['max'](0x0,pendingNeed-0x1);lastNeedAt=performance['now']();if(_0x46d2a0['reason'])stats['lastDrop']='no-frame:'+_0x46d2a0['reason'];break;}case'encodings':{if(typeof domainId==='number')self['postMessage']({'cmd':'domainId','value':domainId});probeEncodings();break;}default:break;}};
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1762008661611" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1723" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M640 307.2h-85.333333V234.666667c38.4-17.066667 64-55.466667 64-98.133334 0-59.733333-46.933333-106.666667-106.666667-106.666666S405.333333 81.066667 405.333333 136.533333c0 42.666667 25.6 81.066667 64 98.133334v72.533333H384c-153.6 0-277.333333 123.733333-277.333333 277.333333s123.733333 277.333333 277.333333 277.333334h256c153.6 0 277.333333-123.733333 277.333333-277.333334S793.6 307.2 640 307.2z m-128-187.733333c12.8 0 21.333333 8.533333 21.333333 21.333333s-8.533333 21.333333-21.333333 21.333333-21.333333-8.533333-21.333333-21.333333 8.533333-21.333333 21.333333-21.333333z m128 657.066666H384c-106.666667 0-192-85.333333-192-192s85.333333-192 192-192h256c106.666667 0 192 85.333333 192 192s-85.333333 192-192 192z" p-id="1724" fill="#2c2c2c"></path><path d="M362.666667 460.8c-72.533333 0-128 55.466667-128 128s55.466667 128 128 128 128-55.466667 128-128-55.466667-128-128-128z m0 170.666667c-25.6 0-42.666667-17.066667-42.666667-42.666667s17.066667-42.666667 42.666667-42.666667 42.666667 17.066667 42.666666 42.666667-17.066667 42.666667-42.666666 42.666667zM661.333333 460.8c-72.533333 0-128 55.466667-128 128s55.466667 128 128 128 128-55.466667 128-128-55.466667-128-128-128z m0 170.666667c-25.6 0-42.666667-17.066667-42.666666-42.666667s17.066667-42.666667 42.666666-42.666667 42.666667 17.066667 42.666667 42.666667-17.066667 42.666667-42.666667 42.666667zM42.666667 460.8c-25.6 0-42.666667 17.066667-42.666667 42.666667v170.666666c0 25.6 17.066667 42.666667 42.666667 42.666667s42.666667-17.066667 42.666666-42.666667v-170.666666c0-25.6-17.066667-42.666667-42.666666-42.666667zM981.333333 460.8c-25.6 0-42.666667 17.066667-42.666666 42.666667v170.666666c0 25.6 17.066667 42.666667 42.666666 42.666667s42.666667-17.066667 42.666667-42.666667v-170.666666c0-25.6-17.066667-42.666667-42.666667-42.666667zM857.6 904.533333H166.4c-25.6 0-42.666667 17.066667-42.666667 42.666667s17.066667 42.666667 42.666667 42.666667h691.2c25.6 0 42.666667-17.066667 42.666667-42.666667s-21.333333-42.666667-42.666667-42.666667z" p-id="1725" fill="#2c2c2c"></path></svg>
2
+
@@ -0,0 +1 @@
1
+ let intervalId=null;self['onmessage']=_0x60997=>{const {cmd:_0x3e64c1,rate:_0x149300}=_0x60997['data'];if(_0x3e64c1==='start'){if(intervalId)clearInterval(intervalId);const _0x3a99db=Math['max'](0x1,Math['min'](_0x149300||0xc8,0x1f4));intervalId=setInterval(()=>{self['postMessage']('tick');},0x3e8/_0x3a99db);}else if(_0x3e64c1==='stop'){if(intervalId){clearInterval(intervalId);intervalId=null;}}};