rgbd 1.0.4 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -213,4 +213,4 @@ void main()
|
|
|
213
213
|
|
|
214
214
|
fragColor = vec4(col, 1.0);
|
|
215
215
|
}
|
|
216
|
-
`,y=class extends p{static get observedAttributes(){return T.concat(["autoplay","loop","muted","controls"])}constructor(){super(),this.n=[],this.c=[],this.l=[],this.Q=!1,this.$=!1,this.U=!0,this.g=null,this.E=null,this.D=null,this.bt=!1,this.i=new E,this.i.pause(),this.tt=!1,this.M=document.createElement("div"),this.M.classList.add("rgbd-controls"),Object.assign(this.M.style,{position:"absolute",bottom:"1%",left:"50%",transform:"translateX(-50%)",display:"none",alignItems:"center",justifyContent:"center",gap:"8px",background:"rgba(0, 0, 0, 0.4)",padding:"8px 8px",borderRadius:"8px",backdropFilter:"blur(6px)",boxSizing:"border-box",width:"50%",flexWrap:"wrap"}),this.shadowRoot.appendChild(this.M),this.G=document.createElement("button"),Object.assign(this.G.style,{border:"none",background:"transparent",color:"white",fontSize:"24px",cursor:"pointer",padding:"4px",flexShrink:"0"}),this.M.appendChild(this.G),this.G.addEventListener("click",()=>{this.paused?this.play():this.pause()}),this.m=document.createElement("input"),this.m.type="range",this.m.min="0",this.m.max="1",this.m.value="0",this.m.step="any",Object.assign(this.m.style,{flex:"1 1 auto",minWidth:"120px",maxWidth:"100%",cursor:"pointer",accentColor:"#fff"}),this.M.appendChild(this.m),this.m.addEventListener("input",()=>{let t=this.n[0];if(!t||!t.duration)return;let e=t.startTime+this.m.value*t.duration;this.currentTime=e})}connectedCallback(){if(super.connectedCallback(),!this.o)return;let t=this.o;this.g=this.dt(t,U,H),this.E={uProjection:t.getUniformLocation(this.g,"u_projMat"),uView:t.getUniformLocation(this.g,"u_viewMat"),uDepth:t.getUniformLocation(this.g,"u_depth"),uHeight:t.getUniformLocation(this.g,"u_height"),uScrubberWidth:t.getUniformLocation(this.g,"u_scrubberWidth"),uProgress:t.getUniformLocation(this.g,"u_progress"),uPaused:t.getUniformLocation(this.g,"u_paused"),uHitPos:t.getUniformLocation(this.g,"u_hitPos")}}disconnectedCallback(){this.i.started()&&this.i.stop(),super.disconnectedCallback()}attributeChangedCallback(t,e,i){e!==i&&(t==="color-src"?this.clear().then(()=>{this.n=[this.L(i,0,!1)],this.l=[this.L(i,0,!0)],this.et=this.n[0],this.it=this.l[0]}):t==="depth-src"?(this.c=[this.L(i,0,!1)],this.st=this.c[0]):t==="autoplay"?(this.Q=this.hasAttribute("autoplay"),this.Q&&this.i.play()):t==="loop"?this.$=this.hasAttribute("loop"):t==="muted"?(this.U=this.hasAttribute("muted"),this.i.setVolume(this.U?0:1),!this.U&&this.i.started()&&this.i.resumeContext()):t==="controls"?(this.tt=this.hasAttribute("controls"),this.M.style.display=this.tt?"flex":"none"):this.Z())}async play(){await this.i.play()}async pause(){await this.i.pause()}async clear(){for(this.t=null,this.f=null,this.A("color",null),this.A("depth",null),this.et=null,this.st=null,this.it=null;this.n.length>0;)this.F(this.n.shift());for(;this.c.length>0;)this.F(this.c.shift());for(;this.l.length>0;)this.F(this.l.shift());this.currentTime=0,this.i.started()&&await this.i.stop()}enqueue(t,e,i){this.n.push(this.L(t,i,!1)),this.c.push(this.L(e,i,!1)),this.l.push(this.L(t,i,!0))}get paused(){return this.i.isPaused}get currentTime(){return this.i.getVideoTime()}set currentTime(t){let e=i=>{if(i.length==0)return;this.F(i[0]),i[0]=this.B(i[0],i[0].startTime);let s=i[0];s.demuxer!=null&&console.error("Demuxing not yet finished!");let o=Number.MAX_VALUE,h=-1;for(let n=0;n<s.chunks.length;n++){if(s.chunks[n].type!=="key")continue;let r=Math.abs(t-(s.startTime+s.chunks[n].timestamp/1e6));r<o&&(o=r,h=n)}h<0||(s.curChunk=h)};this.i.setVideoTime(t),this.ot=null,e(this.n),e(this.c),e(this.l)}get volume(){return this.i.volume}set volume(t){this.i.setVolume(t)}Nt(t){if(this.i.started()){if(t==null)return;if(t.sampleRate!=this.i.sampleRate)throw new Error("Audio configs have mismatched sample rates!");if(t.numberOfChannels!=this.i.numChannels)throw new Error("Audio configs have mismatched channel counts!")}else this.i.start(t?{sampleRate:t.sampleRate,numChannels:t.numberOfChannels,volume:1}:{audioEnabled:!1}),this.U||this.i.resumeContext()}At(t,e){let i=e+t.timestamp/1e6,s=[];for(let o=0;o<t.numberOfChannels;o++){let h=new Float32Array(t.numberOfFrames);t.copyTo(h,{planeIndex:o,format:"f32-planar"}),s.push(h)}this.i.scheduleChunk(s,i)}L(t,e,i){let s={startTime:e,isAudio:i,duration:0,demuxer:null,decoder:null,chunks:[],frames:[],curChunk:0},o;return i?o=AudioDecoder:o=VideoDecoder,s.decoder=new o({output:h=>{i?this.At(h,s.startTime):s.frames.push(h)},error:h=>{console.error("Decoder encountered an error while decoding: ",h)}}),s.demuxer=new A(t,i,{onConfig:h=>{s.config=h,h?s.decoder?.configure(h):s.done=!0,i&&this.Nt(h)},onChunk:h=>{s.chunks?.push(h),s.duration=Math.max(s.duration,(h.timestamp+h.duration)/1e6)},onEndOfStream:()=>{s.demuxer=null}}),s}B(t,e){let i={startTime:e,isAudio:t.isAudio,duration:t.duration,demuxer:null,decoder:null,config:t.config,chunks:t.chunks,frames:[],curChunk:0},s;return t.isAudio?s=AudioDecoder:s=VideoDecoder,i.decoder=new s({output:o=>{i.isAudio?this.At(o,i.startTime):i.frames.push(o)},error:o=>{console.error("Decoder encountered an error while decoding: ",o)}}),t.config?i.decoder.configure(t.config):i.done=!0,i}kt(){let t=!this.paused;this.G.textContent=t?"\u23F8\uFE0F":"\u25B6\uFE0F";let e=this.n[0];if(!e||!e.duration){this.m.value=0;return}let i=this.currentTime-e.startTime,s=Math.max(0,Math.min(1,i/e.duration));this.m.value=s}Ut(t){let e=this.n[0];if(!e)return;this.D=null;let i=!1;for(let s of t.session.inputSources){if(!s.targetRaySpace)continue;let o=t.getPose(s.targetRaySpace,this.T);if(!o)continue;let h=o.transform.position,n=this.Dt(o.transform.orientation),r=(-this.e.DEPTH_MIN-h.z)/n.z;if(r<0)continue;let a=h.x+n.x*r,u=h.y+n.y*r,c=-.5*this.e.DEPTH_MIN,l=.5*this.e.DEPTH_MIN,d=(.5*m+.5+m/2)*-this.e.DEPTH_MIN,f=(-.5*m+.5+m/2)*-this.e.DEPTH_MIN;if(!(a<c||a>l||u<d||u>f)){if(this.D=this.D??{u:(a-c)/(l-c),v:(u-d)/(f-d)},s.gamepad?.buttons[0]?.pressed)i=!0;else continue;if(!this.bt)if(this.D.u<m)this.paused?this.play():this.pause();else{let _=1-P,v=(this.D.u-m-_/2)/(1-m-_);this.currentTime=v*(e.duration??0),console.log(v)}}}this.bt=i}X(t,e){if(super.X(t,e),!this.o)return;let i=this.o;if(this.r==null)return;let s=this.n[0];if(!s)return;let o;if(!s.duration)o=0;else{let h=this.currentTime-s.startTime;o=Math.max(0,Math.min(1,h/s.duration))}i.useProgram(this.g),i.uniformMatrix4fv(this.E.uView,!1,t),i.uniformMatrix4fv(this.E.uProjection,!1,e),i.uniform1f(this.E.uDepth,this.e.DEPTH_MIN),i.uniform1f(this.E.uHeight,m),i.uniform1f(this.E.uScrubberWidth,P),i.uniform1f(this.E.uProgress,o),i.uniform1ui(this.E.uPaused,this.i.isPaused?1:0),i.uniform2f(this.E.uHitPos,this.D?.u??-1,this.D?.v??-1),i.drawArrays(i.TRIANGLES,0,6)}Y(t,e){let i=(o,h)=>{let n=o[h];for(;n.curChunk<n.chunks.length;){let r=n.chunks[n.curChunk];if(n.startTime+r.timestamp/1e6>this.i.getVideoTime()+k)break;n.decoder.decode(r),n.curChunk++}if(n.curChunk>=n.chunks.length&&!n.demuxer&&n.decoder){let r=n.decoder;r.flush().then(()=>{r.close(),n.done=!0}),n.decoder=null}};for(let o=0;o<this.n.length;o++)i(this.n,o);for(let o=0;o<this.c.length;o++)i(this.c,o);for(let o=0;o<this.l.length;o++)this.l[o].config!=null&&i(this.l,o);let s=o=>o?o.done&&o.frames.length==1:!1;s(this.n[0])&&s(this.c[0])&&(this.n.shift(),this.c.shift(),this.yt=!0),this.l[0]?.done&&this.l.shift(),this.$&&this.n.length==0&&this.c.length==0&&this.l.length==0&&this.et!=null&&this.st!=null&&(this.i.setVideoTime(0),this.n=[this.B(this.et,0)],this.c=[this.B(this.st,0)],this.it!=null&&(this.l=[this.B(this.it,0)])),this.tt&&this.kt(),e!=null&&this.Ut(e),super.Y(t,e)}K(){this.t=document.createElement("video"),this.t.style.display="block",this.t.classList.add("fallback"),this.t.controls=this.M,this.t.muted=this.U,this.t.loop=this.$,this.t.autoplay=this.Q,this.t.src=this.getAttribute("color-src"),this.s.parentElement.appendChild(this.t),this.M.style.display="none"}pt(){let t=this.n[0],e=this.c[0];if(!t||!e)return;let i=this.i.getVideoTime(),s=this.ot!=null?Math.abs(i-this.ot):Number.MAX_VALUE,o=-1;for(let h=0;h<Math.min(t.frames.length,e.frames.length);h++){let n=Math.abs(i-(t.startTime+t.frames[h].timestamp/1e6));if(n<=s)s=n,o=h;else break}if(!(o<0)){this.yt&&(this.t.close(),this.f.close(),this.yt=!1),this.t=t.frames[o],this.f=e.frames[o],this.ot=t.startTime+this.t.timestamp/1e6,this.t?.timestamp!==this.f?.timestamp&&console.error("Color and depth frames have mismatched PTS"),this.A("color",this.t),this.A("depth",this.f);for(let h=0;h<o;h++)t.frames.shift().close(),e.frames.shift().close()}}q(t){return t instanceof VideoFrame}R(t){return t?t.codedWidth:1}C(t){return t?t.codedHeight:1}F(t){t.decoder?.close(),t.decoder=null;for(let e=0;e<t.frames.length;e++)t.frames[e].close()}};w&&(customElements.define("rgbd-img",x),customElements.define("rgbd-video",y));
|
|
216
|
+
`,y=class extends p{static get observedAttributes(){return T.concat(["autoplay","loop","muted","controls"])}constructor(){super(),this.n=[],this.c=[],this.l=[],this.Q=!1,this.$=!1,this.U=!0,this.g=null,this.E=null,this.D=null,this.bt=!1,this.i=new E,this.i.pause(),this.tt=!1,this.M=document.createElement("div"),this.M.classList.add("rgbd-controls"),Object.assign(this.M.style,{position:"absolute",bottom:"1%",left:"50%",transform:"translateX(-50%)",display:"none",alignItems:"center",justifyContent:"center",gap:"8px",background:"rgba(0, 0, 0, 0.4)",padding:"8px 8px",borderRadius:"8px",backdropFilter:"blur(6px)",boxSizing:"border-box",width:"50%",flexWrap:"wrap"}),this.shadowRoot.appendChild(this.M),this.G=document.createElement("button"),Object.assign(this.G.style,{border:"none",background:"transparent",color:"white",fontSize:"24px",cursor:"pointer",padding:"4px",flexShrink:"0"}),this.M.appendChild(this.G),this.G.addEventListener("click",()=>{this.paused?this.play():this.pause()}),this.m=document.createElement("input"),this.m.type="range",this.m.min="0",this.m.max="1",this.m.value="0",this.m.step="any",Object.assign(this.m.style,{flex:"1 1 auto",minWidth:"120px",maxWidth:"100%",cursor:"pointer",accentColor:"#fff"}),this.M.appendChild(this.m),this.m.addEventListener("input",()=>{let t=this.n[0];if(!t||!t.duration)return;let e=t.startTime+this.m.value*t.duration;this.currentTime=e})}connectedCallback(){if(super.connectedCallback(),!this.o)return;let t=this.o;this.g=this.dt(t,U,H),this.E={uProjection:t.getUniformLocation(this.g,"u_projMat"),uView:t.getUniformLocation(this.g,"u_viewMat"),uDepth:t.getUniformLocation(this.g,"u_depth"),uHeight:t.getUniformLocation(this.g,"u_height"),uScrubberWidth:t.getUniformLocation(this.g,"u_scrubberWidth"),uProgress:t.getUniformLocation(this.g,"u_progress"),uPaused:t.getUniformLocation(this.g,"u_paused"),uHitPos:t.getUniformLocation(this.g,"u_hitPos")}}disconnectedCallback(){this.i.started()&&this.i.stop(),super.disconnectedCallback()}attributeChangedCallback(t,e,i){e!==i&&(t==="color-src"?this.clear().then(()=>{this.n=[this.L(i,0,!1)],this.l=[this.L(i,0,!0)],this.et=this.n[0],this.it=this.l[0]}):t==="depth-src"?(this.c=[this.L(i,0,!1)],this.st=this.c[0]):t==="autoplay"?(this.Q=this.hasAttribute("autoplay"),this.Q&&this.i.play()):t==="loop"?this.$=this.hasAttribute("loop"):t==="muted"?(this.U=this.hasAttribute("muted"),this.i.setVolume(this.U?0:1),!this.U&&this.i.started()&&this.i.resumeContext()):t==="controls"?(this.tt=this.hasAttribute("controls"),this.M.style.display=this.tt?"flex":"none"):this.Z())}async play(){await this.i.play()}async pause(){await this.i.pause()}async clear(){for(this.t=null,this.f=null,this.A("color",null),this.A("depth",null),this.et=null,this.st=null,this.it=null;this.n.length>0;)this.F(this.n.shift());for(;this.c.length>0;)this.F(this.c.shift());for(;this.l.length>0;)this.F(this.l.shift());this.currentTime=0,this.i.started()&&await this.i.stop()}enqueue(t,e,i){this.n.push(this.L(t,i,!1)),this.c.push(this.L(e,i,!1)),this.l.push(this.L(t,i,!0))}get paused(){return this.i.isPaused}get currentTime(){return this.i.getVideoTime()}set currentTime(t){let e=i=>{if(i.length==0)return;this.F(i[0]),i[0]=this.B(i[0],i[0].startTime);let s=i[0];s.demuxer!=null&&console.error("Demuxing not yet finished!");let o=Number.MAX_VALUE,h=-1;for(let n=0;n<s.chunks.length;n++){if(s.chunks[n].type!=="key")continue;let r=Math.abs(t-(s.startTime+s.chunks[n].timestamp/1e6));r<o&&(o=r,h=n)}h<0||(s.curChunk=h)};this.i.setVideoTime(t),this.ot=null,e(this.n),e(this.c),e(this.l)}get volume(){return this.i.volume}set volume(t){this.i.setVolume(t)}Nt(t){if(this.i.started()){if(t==null)return;if(t.sampleRate!=this.i.sampleRate)throw new Error("Audio configs have mismatched sample rates!");if(t.numberOfChannels!=this.i.numChannels)throw new Error("Audio configs have mismatched channel counts!")}else this.i.start(t?{sampleRate:t.sampleRate,numChannels:t.numberOfChannels,volume:1}:{audioEnabled:!1}),this.U||this.i.resumeContext()}At(t,e){let i=e+t.timestamp/1e6,s=[];for(let o=0;o<t.numberOfChannels;o++){let h=new Float32Array(t.numberOfFrames);t.copyTo(h,{planeIndex:o,format:"f32-planar"}),s.push(h)}this.i.scheduleChunk(s,i)}L(t,e,i){let s={startTime:e,isAudio:i,duration:0,demuxer:null,decoder:null,chunks:[],frames:[],curChunk:0},o;return i?o=AudioDecoder:o=VideoDecoder,s.decoder=new o({output:h=>{i?this.At(h,s.startTime):s.frames.push(h)},error:h=>{console.error("Decoder encountered an error while decoding: ",h)}}),s.demuxer=new A(t,i,{onConfig:h=>{s.config=h,h?s.decoder?.configure(h):s.done=!0,i&&this.Nt(h)},onChunk:h=>{s.chunks?.push(h),s.duration=Math.max(s.duration,(h.timestamp+h.duration)/1e6)},onEndOfStream:()=>{s.demuxer=null}}),s}B(t,e){let i={startTime:e,isAudio:t.isAudio,duration:t.duration,demuxer:null,decoder:null,config:t.config,chunks:t.chunks,frames:[],curChunk:0},s;return t.isAudio?s=AudioDecoder:s=VideoDecoder,i.decoder=new s({output:o=>{i.isAudio?this.At(o,i.startTime):i.frames.push(o)},error:o=>{console.error("Decoder encountered an error while decoding: ",o)}}),t.config?i.decoder.configure(t.config):i.done=!0,i}kt(){let t=!this.paused;this.G.textContent=t?"\u23F8\uFE0F":"\u25B6\uFE0F";let e=this.n[0];if(!e||!e.duration){this.m.value=0;return}let i=this.currentTime-e.startTime,s=Math.max(0,Math.min(1,i/e.duration));this.m.value=s}Ut(t){let e=this.n[0];if(!e)return;this.D=null;let i=!1;for(let s of t.session.inputSources){if(!s.targetRaySpace)continue;let o=t.getPose(s.targetRaySpace,this.T);if(!o)continue;let h=o.transform.position,n=this.Dt(o.transform.orientation),r=(-this.e.DEPTH_MIN-h.z)/n.z;if(r<0)continue;let a=h.x+n.x*r,u=h.y+n.y*r,c=-.5*this.e.DEPTH_MIN,l=.5*this.e.DEPTH_MIN,d=(.5*m+.5+m/2)*-this.e.DEPTH_MIN,f=(-.5*m+.5+m/2)*-this.e.DEPTH_MIN;if(!(a<c||a>l||u<d||u>f)){if(this.D=this.D??{u:(a-c)/(l-c),v:(u-d)/(f-d)},s.gamepad?.buttons[0]?.pressed)i=!0;else continue;if(!this.bt)if(this.D.u<m)this.paused?this.play():this.pause();else{let _=1-P,v=(this.D.u-m-_/2)/(1-m-_);this.currentTime=v*(e.duration??0),console.log(v)}}}this.bt=i}X(t,e){if(super.X(t,e),!this.o)return;let i=this.o;if(this.r==null)return;let s=this.n[0];if(!s)return;let o;if(!s.duration)o=0;else{let h=this.currentTime-s.startTime;o=Math.max(0,Math.min(1,h/s.duration))}i.useProgram(this.g),i.uniformMatrix4fv(this.E.uView,!1,t),i.uniformMatrix4fv(this.E.uProjection,!1,e),i.uniform1f(this.E.uDepth,this.e.DEPTH_MIN),i.uniform1f(this.E.uHeight,m),i.uniform1f(this.E.uScrubberWidth,P),i.uniform1f(this.E.uProgress,o),i.uniform1ui(this.E.uPaused,this.i.isPaused?1:0),i.uniform2f(this.E.uHitPos,this.D?.u??-1,this.D?.v??-1),i.drawArrays(i.TRIANGLES,0,6)}Y(t,e){let i=(o,h)=>{let n=o[h];for(;n.curChunk<n.chunks.length;){let r=n.chunks[n.curChunk];if(n.startTime+r.timestamp/1e6>this.i.getVideoTime()+k)break;n.decoder.decode(r),n.curChunk++}if(n.curChunk>=n.chunks.length&&!n.demuxer&&n.decoder){let r=n.decoder;r.flush().then(()=>{r.close(),n.done=!0}),n.decoder=null}};for(let o=0;o<this.n.length;o++)i(this.n,o);for(let o=0;o<this.c.length;o++)i(this.c,o);for(let o=0;o<this.l.length;o++)this.l[o].config!=null&&i(this.l,o);let s=o=>o?o.done&&o.frames.length==1:!1;s(this.n[0])&&s(this.c[0])&&(this.n.shift(),this.c.shift(),this.yt=!0,this.onSegmentEnd?.(this.n.length==0)),this.l[0]?.done&&this.l.shift(),this.$&&this.n.length==0&&this.c.length==0&&this.l.length==0&&this.et!=null&&this.st!=null&&(this.i.setVideoTime(0),this.n=[this.B(this.et,0)],this.c=[this.B(this.st,0)],this.it!=null&&(this.l=[this.B(this.it,0)])),this.tt&&this.kt(),e!=null&&this.Ut(e),super.Y(t,e)}K(){this.t=document.createElement("video"),this.t.style.display="block",this.t.classList.add("fallback"),this.t.controls=this.M,this.t.muted=this.U,this.t.loop=this.$,this.t.autoplay=this.Q,this.t.src=this.getAttribute("color-src"),this.s.parentElement.appendChild(this.t),this.M.style.display="none"}pt(){let t=this.n[0],e=this.c[0];if(!t||!e)return;let i=this.i.getVideoTime(),s=this.ot!=null?Math.abs(i-this.ot):Number.MAX_VALUE,o=-1;for(let h=0;h<Math.min(t.frames.length,e.frames.length);h++){let n=Math.abs(i-(t.startTime+t.frames[h].timestamp/1e6));if(n<=s)s=n,o=h;else break}if(!(o<0)){this.yt&&(this.t.close(),this.f.close(),this.yt=!1),this.t=t.frames[o],this.f=e.frames[o],this.ot=t.startTime+this.t.timestamp/1e6,this.t?.timestamp!==this.f?.timestamp&&console.error("Color and depth frames have mismatched PTS"),this.A("color",this.t),this.A("depth",this.f);for(let h=0;h<o;h++)t.frames.shift().close(),e.frames.shift().close(),this.onFrameRendered?.()}}q(t){return t instanceof VideoFrame}R(t){return t?t.codedWidth:1}C(t){return t?t.codedHeight:1}F(t){t.decoder?.close(),t.decoder=null;for(let e=0;e<t.frames.length;e++)t.frames[e].close()}};w&&(customElements.define("rgbd-img",x),customElements.define("rgbd-video",y));
|