@omnimedia/omnitool 1.1.0-75 → 1.1.0-76

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.
@@ -126,7 +126,10 @@ export class Compositor {
126
126
  if (!crop || crop.every(value => value === 0))
127
127
  return;
128
128
  const [top, right, bottom, left] = crop;
129
+ const activeMask = target.mask;
130
+ target.mask = null;
129
131
  const bounds = target.getLocalBounds();
132
+ target.mask = activeMask;
130
133
  const x = bounds.x + bounds.width * left;
131
134
  const y = bounds.y + bounds.height * top;
132
135
  const width = bounds.width * Math.max(0, 1 - left - right);
@@ -1 +1 @@
1
- {"version":3,"file":"compositor.js","sourceRoot":"","sources":["../../../s/driver/parts/compositor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compositor.js","sourceRoot":"","sources":["../../../s/driver/parts/compositor.ts"],"names":[],"mappings":"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"}
package/x/index.html CHANGED
@@ -295,7 +295,7 @@ canvas {
295
295
  }
296
296
  }
297
297
  </style>
298
- <script type=module src="demo/demo.bundle.min.js?v=3660199fbd24"></script>
298
+ <script type=module src="demo/demo.bundle.min.js?v=6cecd255ed4c"></script>
299
299
 
300
300
 
301
301
  <meta name="theme-color" content="#3cff9c">
@@ -317,7 +317,7 @@ canvas {
317
317
  <section>
318
318
  <header class="hero">
319
319
  <div>
320
- <h1>Omnitool <small>v1.1.0-75</small></h1>
320
+ <h1>Omnitool <small>v1.1.0-76</small></h1>
321
321
  <p>Developer demos for decoding, preview, waveform, playback, and export.</p>
322
322
  </div>
323
323
  </header>
@@ -2416,7 +2416,7 @@ vec4 transition(vec2 uv) {
2416
2416
  vec2 uv = vTextureCoord.xy;
2417
2417
  gl_FragColor = transition(vTextureCoord);
2418
2418
  }
2419
- `;function Cc({name:t,renderer:e}){let r=Ic.default.find(c=>c.name===t),n=new Rt,o=new Dt,s=new Xr({}),i=new Xr({}),a=new Vo({glProgram:new zo({vertex:Sc,fragment:Pc(r.glsl)}),resources:{from:s,to:i,uniforms:{...es.basics,...es.custom(r)}}});return n.filters=[a],{render({width:c,height:l,from:d,to:u,progress:m}){return(n.width!==c||n.height!==l)&&(n.setSize({width:c,height:l}),o.source.resize(c,l)),s.resource=d,i.resource=u,s.update(),i.update(),a.resources.uniforms.uniforms.progress=m,e.render({container:n,target:o,clear:!1,width:c,height:l}),o}}}var Fo=class{pixi;onPointerDown=he();onPointerMove=he();onPointerUp=he();onDispose=he();static async setup(){let e=await $i({width:1920,height:1080,preference:"webgl",background:"black",preferWebGLVersion:2}),r=new Oo;return r.interactive=!0,new this({renderer:e,stage:r})}constructor(e){this.pixi=e}#e=new Map;#t=new Map;#r=new WeakMap;async composite(e){let{stage:r,renderer:n}=this.pixi;this.#d(this.#u(e));let{dispose:o}=await this.#n(e,r);n.render(r);let s=new VideoFrame(n.canvas,{timestamp:0,duration:0});return o(),s}getActiveObject(e){return this.#t.get(e)?.sprite}async#n(e,r){if(Array.isArray(e)){let n=[];for(let o of[...e].reverse()){let s=await this.#n(o,r);n.push(s.dispose)}return{dispose:()=>n.forEach(o=>o())}}switch(e.kind){case"text":return this.#o(e,r);case"image":return this.#i(e,r);case"transition":return this.#l(e,r);case"gap":return this.pixi?.renderer.clear(),{dispose:()=>{}};default:return console.warn("Unknown layer kind",e.kind),{dispose:()=>{}}}}#o(e,r){let n=this.#c(e);return this.#s(n,e.matrix),this.#a(n,e.crop),r.addChild(n),{dispose:()=>{}}}#i(e,r){let n=this.#c(e);n.texture&&n.texture!==Dt.EMPTY&&n.texture.destroy(!0);let o=Dt.from(e.frame);return n.texture=o,this.#s(n,e.matrix),this.#a(n,e.crop),r.addChild(n),{dispose:()=>{e.frame.close()}}}#l({from:e,to:r,progress:n,name:o},s){let a=(this.#e.get(o)??(this.#e.set(o,Cc({name:"circle",renderer:this.pixi.renderer})),this.#e.get(o))).render({from:e,to:r,progress:n,width:e.displayWidth,height:e.displayHeight}),c=new Rt(a);return s.addChild(c),{dispose:()=>c.destroy(!1)}}#s(e,r){if(!r)return;let n=$a(r);e.setFromMatrix(n)}#a(e,r){let n=this.#r.get(e);if(n&&(e.mask===n&&(e.mask=null),n.removeFromParent(),n.clear()),!r||r.every(p=>p===0))return;let[o,s,i,a]=r,c=e.getLocalBounds(),l=c.x+c.width*a,d=c.y+c.height*o,u=c.width*Math.max(0,1-a-s),m=c.height*Math.max(0,1-o-i),f=n??new No;f.clear(),f.beginFill(16777215),f.drawRect(l,d,u,m),f.endFill(),e.addChild(f),e.mask=f,this.#r.set(e,f)}#c(e){let r=this.#t.get(e.id);if(r)return r.sprite;switch(e.kind){case"text":{let n=new Vr({text:e.content,style:e.style});n.eventMode="static";let o=a=>this.onPointerDown.publish({event:a,id:e.id,object:n}),s=a=>this.onPointerUp.publish({event:a,id:e.id,object:n}),i=a=>this.onPointerUp.publish({event:a,id:e.id,object:n});return n.on("pointerdown",o),n.on("pointerup",s),n.on("pointermove",i),this.#t.set(e.id,{sprite:n,dispose:()=>{this.onDispose.publish({id:e.id,object:n}),n.off("pointermove",i),n.off("pointerdown",o),n.off("pointerup",s)}}).get(e.id)?.sprite}case"image":{let n=new Rt;n.eventMode="static";let o=a=>this.onPointerDown.publish({event:a,id:e.id,object:n}),s=a=>this.onPointerUp.publish({event:a,id:e.id,object:n}),i=a=>this.onPointerUp.publish({event:a,id:e.id,object:n});return n.on("pointerdown",o),n.on("pointermove",i),n.on("pointerup",s),this.#t.set(e.id,{sprite:n,dispose:()=>{this.onDispose.publish({id:e.id,object:n}),n.off("pointerdown",o),n.off("pointermove",i),n.off("pointerup",s)}}).get(e.id)?.sprite}}}#u(e){let r=new Set,n=o=>{if(Array.isArray(o))for(let s of o)n(s);else r.add(o.id)};return n(e),r}#d(e){for(let r of this.#t.keys())if(!e.has(r)){let{sprite:n,dispose:o}=this.#t.get(r);o(),n.destroy(!0),this.#t.delete(r)}}};var Ac=t=>_o.host(e=>({async world(){t.count++}}));var it=class{machina;thread;compositor;static async setup(e){let r=new Eo,n=await _o.thread({label:"OmnitoolDriver",workerUrl:e?.workerUrl??"/node_modules/@omnimedia/omnitool/x/driver/driver.worker.bundle.min.js",setupHost:Ac(r)}),o=await Fo.setup();return new this(r,n,o)}constructor(e,r,n){this.machina=e,this.thread=r,this.compositor=n}async hello(){return this.thread.work.hello()}async getAudioDuration(e){let n=await new ue({source:await Ee(e),formats:Te}).getPrimaryAudioTrack();if(!n)throw new Error("primary audio track not found");return await n.computeDuration()}async getVideoDuration(e){return await(await new ue({source:await Ee(e),formats:Te}).getPrimaryVideoTrack())?.computeDuration()}decodeVideo(e){let r=null,{port1:n,port2:o}=new MessageChannel,s=new TransformStream({async transform(i,a){let c=await e.onFrame?.(i)??i;r?.close(),a.enqueue(c),r=c}});return this.thread.work.decodeVideo[ir]({transfer:[s.writable,o]})({source:e.source,cancel:o,video:s.writable,start:e.start,end:e.end}),{readable:s.readable,cancel(){n.postMessage("close"),n.close()}}}decodeAudio(e){let r=new TransformStream,{port1:n,port2:o}=new MessageChannel;return this.thread.work.decodeAudio[ir]({transfer:[r.writable,o]})({source:e.source,cancel:o,audio:r.writable,start:e.start,end:e.end}),{readable:r.readable,cancel(){n.postMessage("close"),n.close()}}}encode({audio:e,video:r,config:n}){let{readable:o,writable:s}=new TransformStream,i=[e,r,s].filter(on.happy),a=this.thread.work.encode[ir]({transfer:i})({audio:e,video:r,config:n,writable:s});return{readable:o,done:a}}async composite(e){return await this.compositor.composite(e)}};var Do=class{data;bytes;hash;nickname;constructor(e,r,n,o){this.data=e,this.bytes=r,this.hash=n,this.nickname=o}static async make(e){let r=new Uint8Array(e),n=new Uint8Array(await crypto.subtle.digest("SHA-256",r)),o=nn.fromBytes(n),s=gs.sigil.fromBytes(n);return new this(e,n,o,s)}};var st=class{url;bytes;blob;filename;checksum;constructor(e,r,n,o,s){this.url=e,this.bytes=r,this.blob=n,this.filename=o,this.checksum=s}static async make(e,r){let n=await e.arrayBuffer(),o=new Uint8Array(n),s=await Do.make(o),i=r??s.nickname,a=URL.createObjectURL(e);return new this(a,o,e,i,s)}static async load(e){}};async function cr(t){return fetch(t).then(e=>e.blob())}var _c=new URL("../driver/driver.worker.bundle.min.js",import.meta.url);async function de(){let t=await it.setup({workerUrl:_c}),e=new nt(t),r=await cr("/assets/temp/test.mp4"),{videoA:n}=await e.load({videoA:st.make(r,"test.mp4")});return{driver:t,omni:e,testVideo:r,videoA:n}}var Ec=je.suite({"basic demo":async()=>{let t=await it.setup({workerUrl:new URL("../driver/driver.worker.bundle.min.js",import.meta.url)}),e=new nt(t),r=await cr("/assets/temp/test.mp4"),{videoA:n}=await e.load({videoA:st.make(r,"test.mp4")}),o=new q({timeline:e.timeline(l=>l.sequence())}),s=o.require(o.timeline.rootId),i=o.video(n);o.addChildren(s,i);let a=H(i.id,o.timeline),c=H(o.timeline.rootId,o.timeline);P(a).is(c)},"sequence duration is 3x":async()=>{let{omni:t,videoA:e}=await de(),r=new q({timeline:t.timeline(o=>o.sequence(o.video(e),o.video(e),o.video(e)))}),n=H(r.timeline.rootId,r.timeline);P(n).is(e.duration*3)},"stack duration is 1x":async()=>{let{omni:t,videoA:e}=await de(),r=new q({timeline:t.timeline(o=>o.stack(o.video(e),o.video(e),o.video(e)))}),n=H(r.timeline.rootId,r.timeline);P(n).is(e.duration)},"nested stack inside sequence":async()=>{let{omni:t,videoA:e}=await de(),r=new q({timeline:t.timeline(o=>o.sequence(o.video(e),o.stack(o.video(e),o.video(e)),o.video(e)))}),n=H(r.timeline.rootId,r.timeline);P(n).is(e.duration*3)},"nested sequence inside stack":async()=>{let{omni:t,videoA:e}=await de(),r=new q({timeline:t.timeline(o=>o.stack(o.video(e),o.sequence(o.video(e),o.video(e))))}),n=H(r.timeline.rootId,r.timeline);P(n).is(e.duration*2)},"empty timeline duration is 0":async()=>{let{omni:t}=await de(),e=new q({timeline:t.timeline(s=>s.sequence())}),r=new q({timeline:t.timeline(s=>s.stack())}),n=H(e.timeline.rootId,e.timeline),o=H(r.timeline.rootId,r.timeline);P(n).is(0),P(o).is(0)},"transition in a sequence":async()=>{let{omni:t,videoA:e}=await de(),r=1e3,n=new q({timeline:t.timeline(i=>i.sequence(i.video(e),i.transition.crossfade(r),i.video(e)))}),o=H(n.timeline.rootId,n.timeline),s=e.duration*2-r;P(o).is(s)},"transition in a stack":async()=>{let{omni:t,videoA:e}=await de(),r=1e3,n=new q({timeline:t.timeline(s=>s.stack(s.video(e),s.transition.crossfade(r),s.video(e)))}),o=H(n.timeline.rootId,n.timeline);P(o).is(e.duration)},"ignore invalid transition":async()=>{let{omni:t,videoA:e}=await de(),r=new q({timeline:t.timeline(o=>o.sequence(o.transition.crossfade(1e3),o.video(e),o.video(e),o.transition.crossfade(1e3)))}),n=H(r.timeline.rootId,r.timeline);P(n).is(e.duration*2)},"clamp transition duration on overflow":async()=>{let{omni:t,videoA:e}=await de(),r=3e3,n=new q({timeline:t.timeline(s=>s.sequence(s.video(e,{duration:r}),s.transition.crossfade(r*2),s.video(e,{duration:r})))}),o=H(n.timeline.rootId,n.timeline);P(o).is(r)},"multiple transitions":async()=>{let{omni:t,videoA:e}=await de(),r=1e3,n=new q({timeline:t.timeline(i=>i.sequence(i.video(e),i.transition.crossfade(r),i.video(e),i.transition.crossfade(r),i.video(e)))}),o=H(n.timeline.rootId,n.timeline),s=e.duration*3-r*2;P(o).is(s)},"gap item in a sequence":async()=>{let{omni:t,videoA:e}=await de(),r=1e3,n=new q({timeline:t.timeline(i=>i.sequence(i.video(e),i.gap(r),i.video(e)))}),o=H(n.timeline.rootId,n.timeline),s=e.duration*2+r;P(o).is(s)},"gap item in a stack":async()=>{let{omni:t,videoA:e}=await de(),r=new q({timeline:t.timeline(o=>o.stack(o.video(e),o.gap(1e3),o.video(e)))}),n=H(r.timeline.rootId,r.timeline);P(n).is(e.duration)},"load media into Omni":async()=>{let t=await it.setup({workerUrl:_c}),e=new nt(t),r=await cr("/assets/temp/test.mp4"),{videoA:n}=await e.load({videoA:st.make(r,"test.mp4")});P(e.resources.require(n.datafile.checksum.hash)).happy()},"playback seeks to correct time":async()=>{let{omni:t,videoA:e}=await de(),r=new q({timeline:t.timeline(o=>o.sequence(o.video(e,{duration:2e3}),o.gap(500),o.video(e,{duration:2500})))}),n=await t.playback(r.timeline);await n.seek(1e3),P(n.currentTime).is(1e3)}});var Ol=new URL("../driver/driver.worker.bundle.min.js",import.meta.url);async function Ro(){let t=await it.setup({workerUrl:Ol}),e=new nt(t),r=await cr("/assets/temp/test.mp4"),{videoA:n}=await e.load({videoA:st.make(r,"test.mp4")});return{driver:t,omni:e,testVideo:r,videoA:n,resolveMedia:s=>e.resources.require(s).blob}}async function $r(t){let e=[];for await(let r of t)e.push(r);return e}var J=(t,e,r=1e-6)=>Math.abs(t-e)<r,Fc=je.suite({"cursor visual sampler cannot get previous samples":async()=>{let{omni:t,videoA:e,resolveMedia:r,driver:n}=await Ro(),{timeline:o}=new q({timeline:t.timeline(i=>i.sequence(i.video(e,{duration:2e3}),i.gap(500),i.video(e,{duration:2e3}),i.audio(e,{duration:500})))}),s=new rt(n,r,o);await s.next(O(1e3)),await P(async()=>await s.next(O(100))).throwsAsync()},"visual sampler gives correct layer at x time":async()=>{let{omni:t,videoA:e,resolveMedia:r}=await Ro(),{timeline:n}=new q({timeline:t.timeline(l=>l.sequence(l.video(e,{duration:2e3}),l.gap(500),l.video(e,{duration:2e3}),l.audio(e,{duration:500}),l.text("123",{duration:1e3})))}),o=rr(r),s=await o.sample(n,O(1e3));P(s[0].kind).is("image");let i=await o.sample(n,O(2300));P(i[0].kind).is("gap");let a=await o.sample(n,O(2700));P(a[0].kind).is("image");let c=await o.sample(n,O(5500));P(c[0].kind).is("text")},"audio mix sums overlapping chunks":async()=>{let t=new Fe({chunkFrames:4,clamp:!1});async function*e(){yield{planes:[new Float32Array([.25,.25,.25,.25])],sampleRate:4,timestamp:0},yield{planes:[new Float32Array([.5,.5,.5,.5])],sampleRate:4,timestamp:.5}}let r=await $r(t.mix(e()));P(r.length).is(2),P(r[0].startFrame).is(0),P(r[0].frames).is(4),P(r[0].channels).is(1),P(r[0].planar[0]).is(.25),P(r[0].planar[1]).is(.25),P(r[0].planar[2]).is(.75),P(r[0].planar[3]).is(.75),P(r[1].startFrame).is(4),P(r[1].planar[0]).is(.5),P(r[1].planar[1]).is(.5),P(r[1].planar[2]).is(0),P(r[1].planar[3]).is(0)},"audio mix clamps output to [-1, 1]":async()=>{let t=new Fe({chunkFrames:4,clamp:!0});async function*e(){yield{planes:[new Float32Array([.9,.9,.9,.9])],sampleRate:4,timestamp:0},yield{planes:[new Float32Array([.8,.8,.8,.8])],sampleRate:4,timestamp:0}}let r=await $r(t.mix(e()));P(r.length).is(1),P(r[0].planar[0]).is(1),P(r[0].planar[1]).is(1),P(r[0].planar[2]).is(1),P(r[0].planar[3]).is(1)},"audio mix fills gaps with silence":async()=>{let t=new Fe({chunkFrames:4,clamp:!1});async function*e(){yield{planes:[new Float32Array([1,1,1,1])],sampleRate:4,timestamp:0},yield{planes:[new Float32Array([2,2,2,2])],sampleRate:4,timestamp:2}}let r=await $r(t.mix(e()));P(r.length).is(3),P(r[0].startFrame).is(0),P(r[0].planar[0]).is(1),P(r[1].startFrame).is(4),P(r[1].planar[0]).is(0),P(r[1].planar[3]).is(0),P(r[2].startFrame).is(8),P(r[2].planar[0]).is(2)},"audio mix truncates negative timestamps":async()=>{let t=new Fe({chunkFrames:4,clamp:!1});async function*e(){yield{planes:[new Float32Array([1,2,3,4])],sampleRate:4,timestamp:-.5}}let r=await $r(t.mix(e()));P(r.length).is(1),P(r[0].startFrame).is(0),P(r[0].planar[0]).is(3),P(r[0].planar[1]).is(4),P(r[0].planar[2]).is(0),P(r[0].planar[3]).is(0)},"audio mix handles stereo planar layout":async()=>{let t=new Fe({chunkFrames:4,clamp:!1});async function*e(){yield{planes:[new Float32Array([1,1,1,1]),new Float32Array([2,2,2,2])],sampleRate:4,timestamp:0}}let r=await $r(t.mix(e()));P(r.length).is(1),P(r[0].channels).is(2),P(r[0].planar.length).is(8),P(r[0].planar[0]).is(1),P(r[0].planar[4]).is(2)},"applyGainToPlanar scales values across multiple channels":async()=>{let t=[new Float32Array([.2,-.4]),new Float32Array([.6,-.8])];nr(t,.5),P(J(t[0][0],.1)).ok(),P(J(t[0][1],-.2)).ok(),P(J(t[1][0],.3)).ok(),P(J(t[1][1],-.4)).ok()},"applyGainToPlanar does not mutate when gain is 1":async()=>{let t=[new Float32Array([.5,-.5])];nr(t,1),P(J(t[0][0],.5)).ok(),P(J(t[0][1],-.5)).ok()},"applyGainToPlanar mutes entirely when gain is 0":async()=>{let t=[new Float32Array([.9,-.9])];nr(t,0),P(t[0][0]).is(0),P(t[0][1]).is(0)},"resampleToPlanar returns original data when sample rates match":async()=>{let e=De({numberOfFrames:3,numberOfChannels:1,sampleRate:48e3,copyTo:r=>r.set([.1,.2,.3])},48e3);P(e.frames).is(3),P(e.data.length).is(1),P(J(e.data[0][0],.1)).ok(),P(J(e.data[0][1],.2)).ok(),P(J(e.data[0][2],.3)).ok()},"resampleToPlanar upsamples using linear interpolation":async()=>{let e=De({numberOfFrames:2,numberOfChannels:1,sampleRate:1,copyTo:r=>r.set([10,20])},2);P(e.frames).is(4),P(J(e.data[0][0],10)).ok(),P(J(e.data[0][1],15)).ok(),P(J(e.data[0][2],20)).ok(),P(J(e.data[0][3],20)).ok()},"resampleToPlanar downsamples correctly":async()=>{let e=De({numberOfFrames:4,numberOfChannels:1,sampleRate:4,copyTo:r=>r.set([1,2,3,4])},2);P(e.frames).is(2),P(J(e.data[0][0],1)).ok(),P(J(e.data[0][1],3)).ok()},"resampleToPlanar processes multi-channel planar data":async()=>{let t=[new Float32Array([1,2]),new Float32Array([3,4])],r=De({numberOfFrames:2,numberOfChannels:2,sampleRate:1,copyTo:(n,o)=>{n.set(t[o.planeIndex])}},2);P(r.data.length).is(2),P(J(r.data[0][1],1.5)).ok(),P(J(r.data[1][1],3.5)).ok()},"resampleToPlanar handles zero channels gracefully":async()=>{let e=De({numberOfFrames:10,numberOfChannels:0,sampleRate:48e3,copyTo:()=>{throw new Error("Should not be called")}},44100);P(e.data.length).is(0),P(e.frames).is(0)},"resampleToPlanar enforces minimum of 1 frame on aggressive downsample":async()=>{let e=De({numberOfFrames:1,numberOfChannels:1,sampleRate:48e3,copyTo:r=>r.set([.8])},8e3);P(e.frames).is(1),P(e.data[0].length).is(1),P(J(e.data[0][0],.8)).ok()},"resampleToPlanar calls copyTo with strict contract shape":async()=>{let t=null;De({numberOfFrames:2,numberOfChannels:1,sampleRate:48e3,copyTo:(r,n)=>{t=n}},44100),P(t).not.is(null),P(t.planeIndex).is(0),P(t.format).is("f32-planar")},"5s long export at 30fps renders exacly 150 frames":async()=>{let{omni:t,videoA:e,driver:r,resolveMedia:n}=await Ro(),{timeline:o}=new q({timeline:t.timeline(a=>a.sequence(a.video(e,{duration:2e3}),a.gap(500),a.video(e,{duration:2e3}),a.audio(e,{duration:500})))}),s=ho({timeline:o,fps:$e(30),driver:r,resolveMedia:n}),i=0;for await(let a of s)a.close(),i++;P(i).is(150)},"5s long audio export at 48000Hz renders exactly 240000 frames":async()=>{let{omni:t,videoA:e,resolveMedia:r}=await Ro(),{timeline:n}=new q({timeline:t.timeline(i=>i.sequence(i.video(e,{duration:2e3}),i.gap(500),i.video(e,{duration:2e3}),i.audio(e,{duration:500})))}),o=po({timeline:n,resolveMedia:r}),s=0;for await(let i of o)s+=i.numberOfFrames,i.close();P(s).is(24e4)}});await je.run({omniTest:Ec,renderersTest:Fc});
2419
+ `;function Cc({name:t,renderer:e}){let r=Ic.default.find(c=>c.name===t),n=new Rt,o=new Dt,s=new Xr({}),i=new Xr({}),a=new Vo({glProgram:new zo({vertex:Sc,fragment:Pc(r.glsl)}),resources:{from:s,to:i,uniforms:{...es.basics,...es.custom(r)}}});return n.filters=[a],{render({width:c,height:l,from:d,to:u,progress:m}){return(n.width!==c||n.height!==l)&&(n.setSize({width:c,height:l}),o.source.resize(c,l)),s.resource=d,i.resource=u,s.update(),i.update(),a.resources.uniforms.uniforms.progress=m,e.render({container:n,target:o,clear:!1,width:c,height:l}),o}}}var Fo=class{pixi;onPointerDown=he();onPointerMove=he();onPointerUp=he();onDispose=he();static async setup(){let e=await $i({width:1920,height:1080,preference:"webgl",background:"black",preferWebGLVersion:2}),r=new Oo;return r.interactive=!0,new this({renderer:e,stage:r})}constructor(e){this.pixi=e}#e=new Map;#t=new Map;#r=new WeakMap;async composite(e){let{stage:r,renderer:n}=this.pixi;this.#d(this.#u(e));let{dispose:o}=await this.#n(e,r);n.render(r);let s=new VideoFrame(n.canvas,{timestamp:0,duration:0});return o(),s}getActiveObject(e){return this.#t.get(e)?.sprite}async#n(e,r){if(Array.isArray(e)){let n=[];for(let o of[...e].reverse()){let s=await this.#n(o,r);n.push(s.dispose)}return{dispose:()=>n.forEach(o=>o())}}switch(e.kind){case"text":return this.#o(e,r);case"image":return this.#i(e,r);case"transition":return this.#l(e,r);case"gap":return this.pixi?.renderer.clear(),{dispose:()=>{}};default:return console.warn("Unknown layer kind",e.kind),{dispose:()=>{}}}}#o(e,r){let n=this.#c(e);return this.#s(n,e.matrix),this.#a(n,e.crop),r.addChild(n),{dispose:()=>{}}}#i(e,r){let n=this.#c(e);n.texture&&n.texture!==Dt.EMPTY&&n.texture.destroy(!0);let o=Dt.from(e.frame);return n.texture=o,this.#s(n,e.matrix),this.#a(n,e.crop),r.addChild(n),{dispose:()=>{e.frame.close()}}}#l({from:e,to:r,progress:n,name:o},s){let a=(this.#e.get(o)??(this.#e.set(o,Cc({name:"circle",renderer:this.pixi.renderer})),this.#e.get(o))).render({from:e,to:r,progress:n,width:e.displayWidth,height:e.displayHeight}),c=new Rt(a);return s.addChild(c),{dispose:()=>c.destroy(!1)}}#s(e,r){if(!r)return;let n=$a(r);e.setFromMatrix(n)}#a(e,r){let n=this.#r.get(e);if(n&&(e.mask===n&&(e.mask=null),n.removeFromParent(),n.clear()),!r||r.every(g=>g===0))return;let[o,s,i,a]=r,c=e.mask;e.mask=null;let l=e.getLocalBounds();e.mask=c;let d=l.x+l.width*a,u=l.y+l.height*o,m=l.width*Math.max(0,1-a-s),f=l.height*Math.max(0,1-o-i),p=n??new No;p.clear(),p.beginFill(16777215),p.drawRect(d,u,m,f),p.endFill(),e.addChild(p),e.mask=p,this.#r.set(e,p)}#c(e){let r=this.#t.get(e.id);if(r)return r.sprite;switch(e.kind){case"text":{let n=new Vr({text:e.content,style:e.style});n.eventMode="static";let o=a=>this.onPointerDown.publish({event:a,id:e.id,object:n}),s=a=>this.onPointerUp.publish({event:a,id:e.id,object:n}),i=a=>this.onPointerUp.publish({event:a,id:e.id,object:n});return n.on("pointerdown",o),n.on("pointerup",s),n.on("pointermove",i),this.#t.set(e.id,{sprite:n,dispose:()=>{this.onDispose.publish({id:e.id,object:n}),n.off("pointermove",i),n.off("pointerdown",o),n.off("pointerup",s)}}).get(e.id)?.sprite}case"image":{let n=new Rt;n.eventMode="static";let o=a=>this.onPointerDown.publish({event:a,id:e.id,object:n}),s=a=>this.onPointerUp.publish({event:a,id:e.id,object:n}),i=a=>this.onPointerUp.publish({event:a,id:e.id,object:n});return n.on("pointerdown",o),n.on("pointermove",i),n.on("pointerup",s),this.#t.set(e.id,{sprite:n,dispose:()=>{this.onDispose.publish({id:e.id,object:n}),n.off("pointerdown",o),n.off("pointermove",i),n.off("pointerup",s)}}).get(e.id)?.sprite}}}#u(e){let r=new Set,n=o=>{if(Array.isArray(o))for(let s of o)n(s);else r.add(o.id)};return n(e),r}#d(e){for(let r of this.#t.keys())if(!e.has(r)){let{sprite:n,dispose:o}=this.#t.get(r);o(),n.destroy(!0),this.#t.delete(r)}}};var Ac=t=>_o.host(e=>({async world(){t.count++}}));var it=class{machina;thread;compositor;static async setup(e){let r=new Eo,n=await _o.thread({label:"OmnitoolDriver",workerUrl:e?.workerUrl??"/node_modules/@omnimedia/omnitool/x/driver/driver.worker.bundle.min.js",setupHost:Ac(r)}),o=await Fo.setup();return new this(r,n,o)}constructor(e,r,n){this.machina=e,this.thread=r,this.compositor=n}async hello(){return this.thread.work.hello()}async getAudioDuration(e){let n=await new ue({source:await Ee(e),formats:Te}).getPrimaryAudioTrack();if(!n)throw new Error("primary audio track not found");return await n.computeDuration()}async getVideoDuration(e){return await(await new ue({source:await Ee(e),formats:Te}).getPrimaryVideoTrack())?.computeDuration()}decodeVideo(e){let r=null,{port1:n,port2:o}=new MessageChannel,s=new TransformStream({async transform(i,a){let c=await e.onFrame?.(i)??i;r?.close(),a.enqueue(c),r=c}});return this.thread.work.decodeVideo[ir]({transfer:[s.writable,o]})({source:e.source,cancel:o,video:s.writable,start:e.start,end:e.end}),{readable:s.readable,cancel(){n.postMessage("close"),n.close()}}}decodeAudio(e){let r=new TransformStream,{port1:n,port2:o}=new MessageChannel;return this.thread.work.decodeAudio[ir]({transfer:[r.writable,o]})({source:e.source,cancel:o,audio:r.writable,start:e.start,end:e.end}),{readable:r.readable,cancel(){n.postMessage("close"),n.close()}}}encode({audio:e,video:r,config:n}){let{readable:o,writable:s}=new TransformStream,i=[e,r,s].filter(on.happy),a=this.thread.work.encode[ir]({transfer:i})({audio:e,video:r,config:n,writable:s});return{readable:o,done:a}}async composite(e){return await this.compositor.composite(e)}};var Do=class{data;bytes;hash;nickname;constructor(e,r,n,o){this.data=e,this.bytes=r,this.hash=n,this.nickname=o}static async make(e){let r=new Uint8Array(e),n=new Uint8Array(await crypto.subtle.digest("SHA-256",r)),o=nn.fromBytes(n),s=gs.sigil.fromBytes(n);return new this(e,n,o,s)}};var st=class{url;bytes;blob;filename;checksum;constructor(e,r,n,o,s){this.url=e,this.bytes=r,this.blob=n,this.filename=o,this.checksum=s}static async make(e,r){let n=await e.arrayBuffer(),o=new Uint8Array(n),s=await Do.make(o),i=r??s.nickname,a=URL.createObjectURL(e);return new this(a,o,e,i,s)}static async load(e){}};async function cr(t){return fetch(t).then(e=>e.blob())}var _c=new URL("../driver/driver.worker.bundle.min.js",import.meta.url);async function de(){let t=await it.setup({workerUrl:_c}),e=new nt(t),r=await cr("/assets/temp/test.mp4"),{videoA:n}=await e.load({videoA:st.make(r,"test.mp4")});return{driver:t,omni:e,testVideo:r,videoA:n}}var Ec=je.suite({"basic demo":async()=>{let t=await it.setup({workerUrl:new URL("../driver/driver.worker.bundle.min.js",import.meta.url)}),e=new nt(t),r=await cr("/assets/temp/test.mp4"),{videoA:n}=await e.load({videoA:st.make(r,"test.mp4")}),o=new q({timeline:e.timeline(l=>l.sequence())}),s=o.require(o.timeline.rootId),i=o.video(n);o.addChildren(s,i);let a=H(i.id,o.timeline),c=H(o.timeline.rootId,o.timeline);P(a).is(c)},"sequence duration is 3x":async()=>{let{omni:t,videoA:e}=await de(),r=new q({timeline:t.timeline(o=>o.sequence(o.video(e),o.video(e),o.video(e)))}),n=H(r.timeline.rootId,r.timeline);P(n).is(e.duration*3)},"stack duration is 1x":async()=>{let{omni:t,videoA:e}=await de(),r=new q({timeline:t.timeline(o=>o.stack(o.video(e),o.video(e),o.video(e)))}),n=H(r.timeline.rootId,r.timeline);P(n).is(e.duration)},"nested stack inside sequence":async()=>{let{omni:t,videoA:e}=await de(),r=new q({timeline:t.timeline(o=>o.sequence(o.video(e),o.stack(o.video(e),o.video(e)),o.video(e)))}),n=H(r.timeline.rootId,r.timeline);P(n).is(e.duration*3)},"nested sequence inside stack":async()=>{let{omni:t,videoA:e}=await de(),r=new q({timeline:t.timeline(o=>o.stack(o.video(e),o.sequence(o.video(e),o.video(e))))}),n=H(r.timeline.rootId,r.timeline);P(n).is(e.duration*2)},"empty timeline duration is 0":async()=>{let{omni:t}=await de(),e=new q({timeline:t.timeline(s=>s.sequence())}),r=new q({timeline:t.timeline(s=>s.stack())}),n=H(e.timeline.rootId,e.timeline),o=H(r.timeline.rootId,r.timeline);P(n).is(0),P(o).is(0)},"transition in a sequence":async()=>{let{omni:t,videoA:e}=await de(),r=1e3,n=new q({timeline:t.timeline(i=>i.sequence(i.video(e),i.transition.crossfade(r),i.video(e)))}),o=H(n.timeline.rootId,n.timeline),s=e.duration*2-r;P(o).is(s)},"transition in a stack":async()=>{let{omni:t,videoA:e}=await de(),r=1e3,n=new q({timeline:t.timeline(s=>s.stack(s.video(e),s.transition.crossfade(r),s.video(e)))}),o=H(n.timeline.rootId,n.timeline);P(o).is(e.duration)},"ignore invalid transition":async()=>{let{omni:t,videoA:e}=await de(),r=new q({timeline:t.timeline(o=>o.sequence(o.transition.crossfade(1e3),o.video(e),o.video(e),o.transition.crossfade(1e3)))}),n=H(r.timeline.rootId,r.timeline);P(n).is(e.duration*2)},"clamp transition duration on overflow":async()=>{let{omni:t,videoA:e}=await de(),r=3e3,n=new q({timeline:t.timeline(s=>s.sequence(s.video(e,{duration:r}),s.transition.crossfade(r*2),s.video(e,{duration:r})))}),o=H(n.timeline.rootId,n.timeline);P(o).is(r)},"multiple transitions":async()=>{let{omni:t,videoA:e}=await de(),r=1e3,n=new q({timeline:t.timeline(i=>i.sequence(i.video(e),i.transition.crossfade(r),i.video(e),i.transition.crossfade(r),i.video(e)))}),o=H(n.timeline.rootId,n.timeline),s=e.duration*3-r*2;P(o).is(s)},"gap item in a sequence":async()=>{let{omni:t,videoA:e}=await de(),r=1e3,n=new q({timeline:t.timeline(i=>i.sequence(i.video(e),i.gap(r),i.video(e)))}),o=H(n.timeline.rootId,n.timeline),s=e.duration*2+r;P(o).is(s)},"gap item in a stack":async()=>{let{omni:t,videoA:e}=await de(),r=new q({timeline:t.timeline(o=>o.stack(o.video(e),o.gap(1e3),o.video(e)))}),n=H(r.timeline.rootId,r.timeline);P(n).is(e.duration)},"load media into Omni":async()=>{let t=await it.setup({workerUrl:_c}),e=new nt(t),r=await cr("/assets/temp/test.mp4"),{videoA:n}=await e.load({videoA:st.make(r,"test.mp4")});P(e.resources.require(n.datafile.checksum.hash)).happy()},"playback seeks to correct time":async()=>{let{omni:t,videoA:e}=await de(),r=new q({timeline:t.timeline(o=>o.sequence(o.video(e,{duration:2e3}),o.gap(500),o.video(e,{duration:2500})))}),n=await t.playback(r.timeline);await n.seek(1e3),P(n.currentTime).is(1e3)}});var Ol=new URL("../driver/driver.worker.bundle.min.js",import.meta.url);async function Ro(){let t=await it.setup({workerUrl:Ol}),e=new nt(t),r=await cr("/assets/temp/test.mp4"),{videoA:n}=await e.load({videoA:st.make(r,"test.mp4")});return{driver:t,omni:e,testVideo:r,videoA:n,resolveMedia:s=>e.resources.require(s).blob}}async function $r(t){let e=[];for await(let r of t)e.push(r);return e}var J=(t,e,r=1e-6)=>Math.abs(t-e)<r,Fc=je.suite({"cursor visual sampler cannot get previous samples":async()=>{let{omni:t,videoA:e,resolveMedia:r,driver:n}=await Ro(),{timeline:o}=new q({timeline:t.timeline(i=>i.sequence(i.video(e,{duration:2e3}),i.gap(500),i.video(e,{duration:2e3}),i.audio(e,{duration:500})))}),s=new rt(n,r,o);await s.next(O(1e3)),await P(async()=>await s.next(O(100))).throwsAsync()},"visual sampler gives correct layer at x time":async()=>{let{omni:t,videoA:e,resolveMedia:r}=await Ro(),{timeline:n}=new q({timeline:t.timeline(l=>l.sequence(l.video(e,{duration:2e3}),l.gap(500),l.video(e,{duration:2e3}),l.audio(e,{duration:500}),l.text("123",{duration:1e3})))}),o=rr(r),s=await o.sample(n,O(1e3));P(s[0].kind).is("image");let i=await o.sample(n,O(2300));P(i[0].kind).is("gap");let a=await o.sample(n,O(2700));P(a[0].kind).is("image");let c=await o.sample(n,O(5500));P(c[0].kind).is("text")},"audio mix sums overlapping chunks":async()=>{let t=new Fe({chunkFrames:4,clamp:!1});async function*e(){yield{planes:[new Float32Array([.25,.25,.25,.25])],sampleRate:4,timestamp:0},yield{planes:[new Float32Array([.5,.5,.5,.5])],sampleRate:4,timestamp:.5}}let r=await $r(t.mix(e()));P(r.length).is(2),P(r[0].startFrame).is(0),P(r[0].frames).is(4),P(r[0].channels).is(1),P(r[0].planar[0]).is(.25),P(r[0].planar[1]).is(.25),P(r[0].planar[2]).is(.75),P(r[0].planar[3]).is(.75),P(r[1].startFrame).is(4),P(r[1].planar[0]).is(.5),P(r[1].planar[1]).is(.5),P(r[1].planar[2]).is(0),P(r[1].planar[3]).is(0)},"audio mix clamps output to [-1, 1]":async()=>{let t=new Fe({chunkFrames:4,clamp:!0});async function*e(){yield{planes:[new Float32Array([.9,.9,.9,.9])],sampleRate:4,timestamp:0},yield{planes:[new Float32Array([.8,.8,.8,.8])],sampleRate:4,timestamp:0}}let r=await $r(t.mix(e()));P(r.length).is(1),P(r[0].planar[0]).is(1),P(r[0].planar[1]).is(1),P(r[0].planar[2]).is(1),P(r[0].planar[3]).is(1)},"audio mix fills gaps with silence":async()=>{let t=new Fe({chunkFrames:4,clamp:!1});async function*e(){yield{planes:[new Float32Array([1,1,1,1])],sampleRate:4,timestamp:0},yield{planes:[new Float32Array([2,2,2,2])],sampleRate:4,timestamp:2}}let r=await $r(t.mix(e()));P(r.length).is(3),P(r[0].startFrame).is(0),P(r[0].planar[0]).is(1),P(r[1].startFrame).is(4),P(r[1].planar[0]).is(0),P(r[1].planar[3]).is(0),P(r[2].startFrame).is(8),P(r[2].planar[0]).is(2)},"audio mix truncates negative timestamps":async()=>{let t=new Fe({chunkFrames:4,clamp:!1});async function*e(){yield{planes:[new Float32Array([1,2,3,4])],sampleRate:4,timestamp:-.5}}let r=await $r(t.mix(e()));P(r.length).is(1),P(r[0].startFrame).is(0),P(r[0].planar[0]).is(3),P(r[0].planar[1]).is(4),P(r[0].planar[2]).is(0),P(r[0].planar[3]).is(0)},"audio mix handles stereo planar layout":async()=>{let t=new Fe({chunkFrames:4,clamp:!1});async function*e(){yield{planes:[new Float32Array([1,1,1,1]),new Float32Array([2,2,2,2])],sampleRate:4,timestamp:0}}let r=await $r(t.mix(e()));P(r.length).is(1),P(r[0].channels).is(2),P(r[0].planar.length).is(8),P(r[0].planar[0]).is(1),P(r[0].planar[4]).is(2)},"applyGainToPlanar scales values across multiple channels":async()=>{let t=[new Float32Array([.2,-.4]),new Float32Array([.6,-.8])];nr(t,.5),P(J(t[0][0],.1)).ok(),P(J(t[0][1],-.2)).ok(),P(J(t[1][0],.3)).ok(),P(J(t[1][1],-.4)).ok()},"applyGainToPlanar does not mutate when gain is 1":async()=>{let t=[new Float32Array([.5,-.5])];nr(t,1),P(J(t[0][0],.5)).ok(),P(J(t[0][1],-.5)).ok()},"applyGainToPlanar mutes entirely when gain is 0":async()=>{let t=[new Float32Array([.9,-.9])];nr(t,0),P(t[0][0]).is(0),P(t[0][1]).is(0)},"resampleToPlanar returns original data when sample rates match":async()=>{let e=De({numberOfFrames:3,numberOfChannels:1,sampleRate:48e3,copyTo:r=>r.set([.1,.2,.3])},48e3);P(e.frames).is(3),P(e.data.length).is(1),P(J(e.data[0][0],.1)).ok(),P(J(e.data[0][1],.2)).ok(),P(J(e.data[0][2],.3)).ok()},"resampleToPlanar upsamples using linear interpolation":async()=>{let e=De({numberOfFrames:2,numberOfChannels:1,sampleRate:1,copyTo:r=>r.set([10,20])},2);P(e.frames).is(4),P(J(e.data[0][0],10)).ok(),P(J(e.data[0][1],15)).ok(),P(J(e.data[0][2],20)).ok(),P(J(e.data[0][3],20)).ok()},"resampleToPlanar downsamples correctly":async()=>{let e=De({numberOfFrames:4,numberOfChannels:1,sampleRate:4,copyTo:r=>r.set([1,2,3,4])},2);P(e.frames).is(2),P(J(e.data[0][0],1)).ok(),P(J(e.data[0][1],3)).ok()},"resampleToPlanar processes multi-channel planar data":async()=>{let t=[new Float32Array([1,2]),new Float32Array([3,4])],r=De({numberOfFrames:2,numberOfChannels:2,sampleRate:1,copyTo:(n,o)=>{n.set(t[o.planeIndex])}},2);P(r.data.length).is(2),P(J(r.data[0][1],1.5)).ok(),P(J(r.data[1][1],3.5)).ok()},"resampleToPlanar handles zero channels gracefully":async()=>{let e=De({numberOfFrames:10,numberOfChannels:0,sampleRate:48e3,copyTo:()=>{throw new Error("Should not be called")}},44100);P(e.data.length).is(0),P(e.frames).is(0)},"resampleToPlanar enforces minimum of 1 frame on aggressive downsample":async()=>{let e=De({numberOfFrames:1,numberOfChannels:1,sampleRate:48e3,copyTo:r=>r.set([.8])},8e3);P(e.frames).is(1),P(e.data[0].length).is(1),P(J(e.data[0][0],.8)).ok()},"resampleToPlanar calls copyTo with strict contract shape":async()=>{let t=null;De({numberOfFrames:2,numberOfChannels:1,sampleRate:48e3,copyTo:(r,n)=>{t=n}},44100),P(t).not.is(null),P(t.planeIndex).is(0),P(t.format).is("f32-planar")},"5s long export at 30fps renders exacly 150 frames":async()=>{let{omni:t,videoA:e,driver:r,resolveMedia:n}=await Ro(),{timeline:o}=new q({timeline:t.timeline(a=>a.sequence(a.video(e,{duration:2e3}),a.gap(500),a.video(e,{duration:2e3}),a.audio(e,{duration:500})))}),s=ho({timeline:o,fps:$e(30),driver:r,resolveMedia:n}),i=0;for await(let a of s)a.close(),i++;P(i).is(150)},"5s long audio export at 48000Hz renders exactly 240000 frames":async()=>{let{omni:t,videoA:e,resolveMedia:r}=await Ro(),{timeline:n}=new q({timeline:t.timeline(i=>i.sequence(i.video(e,{duration:2e3}),i.gap(500),i.video(e,{duration:2e3}),i.audio(e,{duration:500})))}),o=po({timeline:n,resolveMedia:r}),s=0;for await(let i of o)s+=i.numberOfFrames,i.close();P(s).is(24e4)}});await je.run({omniTest:Ec,renderersTest:Fc});
2420
2420
  /*! Bundled license information:
2421
2421
 
2422
2422
  mediabunny/dist/modules/src/misc.js: