webcodecs-utils 0.1.8 → 0.1.9
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.cjs +1 -1
- package/dist/index.js +7 -2
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Fn=require("lamejs"),Ai=require("mp4box");function Jn(t,e,i=30,n="good"){const d=t*e,o={low:.05,good:.08,high:.1,"very-high":.15},m=o[n]||o.good;return d*i*m}function En(t,e,i,n){const d=[{maxMacroblocks:99,maxBitrate:64e3,level:10},{maxMacroblocks:396,maxBitrate:192e3,level:11},{maxMacroblocks:396,maxBitrate:384e3,level:12},{maxMacroblocks:396,maxBitrate:768e3,level:13},{maxMacroblocks:396,maxBitrate:2e6,level:20},{maxMacroblocks:792,maxBitrate:4e6,level:21},{maxMacroblocks:1620,maxBitrate:4e6,level:22},{maxMacroblocks:1620,maxBitrate:1e7,level:30},{maxMacroblocks:3600,maxBitrate:14e6,level:31},{maxMacroblocks:5120,maxBitrate:2e7,level:32},{maxMacroblocks:8192,maxBitrate:2e7,level:40},{maxMacroblocks:8192,maxBitrate:5e7,level:41},{maxMacroblocks:8704,maxBitrate:5e7,level:42},{maxMacroblocks:22080,maxBitrate:135e6,level:50},{maxMacroblocks:36864,maxBitrate:24e7,level:51},{maxMacroblocks:36864,maxBitrate:24e7,level:52},{maxMacroblocks:139264,maxBitrate:24e7,level:60},{maxMacroblocks:139264,maxBitrate:48e7,level:61},{maxMacroblocks:139264,maxBitrate:8e8,level:62}],o=[{maxPictureSize:36864,maxBitrate:128e3,tier:"L",level:30},{maxPictureSize:122880,maxBitrate:15e5,tier:"L",level:60},{maxPictureSize:245760,maxBitrate:3e6,tier:"L",level:63},{maxPictureSize:552960,maxBitrate:6e6,tier:"L",level:90},{maxPictureSize:983040,maxBitrate:1e7,tier:"L",level:93},{maxPictureSize:2228224,maxBitrate:12e6,tier:"L",level:120},{maxPictureSize:2228224,maxBitrate:3e7,tier:"H",level:120},{maxPictureSize:2228224,maxBitrate:2e7,tier:"L",level:123},{maxPictureSize:2228224,maxBitrate:5e7,tier:"H",level:123},{maxPictureSize:8912896,maxBitrate:25e6,tier:"L",level:150},{maxPictureSize:8912896,maxBitrate:1e8,tier:"H",level:150},{maxPictureSize:8912896,maxBitrate:4e7,tier:"L",level:153},{maxPictureSize:8912896,maxBitrate:16e7,tier:"H",level:153},{maxPictureSize:8912896,maxBitrate:6e7,tier:"L",level:156},{maxPictureSize:8912896,maxBitrate:24e7,tier:"H",level:156},{maxPictureSize:35651584,maxBitrate:6e7,tier:"L",level:180},{maxPictureSize:35651584,maxBitrate:24e7,tier:"H",level:180},{maxPictureSize:35651584,maxBitrate:12e7,tier:"L",level:183},{maxPictureSize:35651584,maxBitrate:48e7,tier:"H",level:183},{maxPictureSize:35651584,maxBitrate:24e7,tier:"L",level:186},{maxPictureSize:35651584,maxBitrate:8e8,tier:"H",level:186}],m=[{maxPictureSize:36864,maxBitrate:2e5,level:10},{maxPictureSize:73728,maxBitrate:8e5,level:11},{maxPictureSize:122880,maxBitrate:18e5,level:20},{maxPictureSize:245760,maxBitrate:36e5,level:21},{maxPictureSize:552960,maxBitrate:72e5,level:30},{maxPictureSize:983040,maxBitrate:12e6,level:31},{maxPictureSize:2228224,maxBitrate:18e6,level:40},{maxPictureSize:2228224,maxBitrate:3e7,level:41},{maxPictureSize:8912896,maxBitrate:6e7,level:50},{maxPictureSize:8912896,maxBitrate:12e7,level:51},{maxPictureSize:8912896,maxBitrate:18e7,level:52},{maxPictureSize:35651584,maxBitrate:18e7,level:60},{maxPictureSize:35651584,maxBitrate:24e7,level:61},{maxPictureSize:35651584,maxBitrate:48e7,level:62}],h=[{maxPictureSize:147456,maxBitrate:15e5,tier:"M",level:0},{maxPictureSize:278784,maxBitrate:3e6,tier:"M",level:1},{maxPictureSize:665856,maxBitrate:6e6,tier:"M",level:4},{maxPictureSize:1065024,maxBitrate:1e7,tier:"M",level:5},{maxPictureSize:2359296,maxBitrate:12e6,tier:"M",level:8},{maxPictureSize:2359296,maxBitrate:3e7,tier:"H",level:8},{maxPictureSize:2359296,maxBitrate:2e7,tier:"M",level:9},{maxPictureSize:2359296,maxBitrate:5e7,tier:"H",level:9},{maxPictureSize:8912896,maxBitrate:3e7,tier:"M",level:12},{maxPictureSize:8912896,maxBitrate:1e8,tier:"H",level:12},{maxPictureSize:8912896,maxBitrate:4e7,tier:"M",level:13},{maxPictureSize:8912896,maxBitrate:16e7,tier:"H",level:13},{maxPictureSize:8912896,maxBitrate:6e7,tier:"M",level:14},{maxPictureSize:8912896,maxBitrate:24e7,tier:"H",level:14},{maxPictureSize:35651584,maxBitrate:6e7,tier:"M",level:15},{maxPictureSize:35651584,maxBitrate:24e7,tier:"H",level:15},{maxPictureSize:35651584,maxBitrate:6e7,tier:"M",level:16},{maxPictureSize:35651584,maxBitrate:24e7,tier:"H",level:16},{maxPictureSize:35651584,maxBitrate:1e8,tier:"M",level:17},{maxPictureSize:35651584,maxBitrate:48e7,tier:"H",level:17},{maxPictureSize:35651584,maxBitrate:16e7,tier:"M",level:18},{maxPictureSize:35651584,maxBitrate:8e8,tier:"H",level:18},{maxPictureSize:35651584,maxBitrate:16e7,tier:"M",level:19},{maxPictureSize:35651584,maxBitrate:8e8,tier:"H",level:19}];function S(W){return W?W[W.length-1]:void 0}if(t==="avc"){const v=Math.ceil(e/16)*Math.ceil(i/16),Z=d.find(U=>v<=U.maxMacroblocks&&n<=U.maxBitrate)??S(d),O=Z?Z.level:0,w="64".padStart(2,"0"),N="00",J=O.toString(16).padStart(2,"0");return`avc1.${w}${N}${J}`}else if(t==="hevc"){const W="",Z="6",O=e*i,w=o.find(J=>O<=J.maxPictureSize&&n<=J.maxBitrate)??S(o);return`hev1.${W}1.${Z}.${w.tier}${w.level}.B0`}else{if(t==="vp8")return"vp8";if(t==="vp9"){const W="00",v=e*i,Z=m.find(w=>v<=w.maxPictureSize&&n<=w.maxBitrate)??S(m);return`vp09.${W}.${Z.level.toString().padStart(2,"0")}.08`}else if(t==="av1"){const v=e*i,Z=h.find(N=>v<=N.maxPictureSize&&n<=N.maxBitrate)??S(h);return`av01.0.${Z.level.toString().padStart(2,"0")}${Z.tier}.08`}}throw new TypeError(`Unhandled codec '${t}'.`)}class Nn{constructor(e,i={}){this.canvas=e,this.mode="webgpu",this.filterMode=i.filterMode||"linear",this.device=null,this.context=null,this.linearPipeline=null,this.bicubicPipeline=null,this.sampler=null,this.uniformBuffer=null,this.bitmapCtx=null}async init(){if(navigator.gpu)try{await this.initWebGPU(),this.mode="webgpu",console.log("GPUDrawImage: Using WebGPU (zero-copy)");return}catch(
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Fn=require("lamejs"),Ai=require("mp4box");function Jn(t,e,i=30,n="good"){const d=t*e,o={low:.05,good:.08,high:.1,"very-high":.15},m=o[n]||o.good;return d*i*m}function En(t,e,i,n){const d=[{maxMacroblocks:99,maxBitrate:64e3,level:10},{maxMacroblocks:396,maxBitrate:192e3,level:11},{maxMacroblocks:396,maxBitrate:384e3,level:12},{maxMacroblocks:396,maxBitrate:768e3,level:13},{maxMacroblocks:396,maxBitrate:2e6,level:20},{maxMacroblocks:792,maxBitrate:4e6,level:21},{maxMacroblocks:1620,maxBitrate:4e6,level:22},{maxMacroblocks:1620,maxBitrate:1e7,level:30},{maxMacroblocks:3600,maxBitrate:14e6,level:31},{maxMacroblocks:5120,maxBitrate:2e7,level:32},{maxMacroblocks:8192,maxBitrate:2e7,level:40},{maxMacroblocks:8192,maxBitrate:5e7,level:41},{maxMacroblocks:8704,maxBitrate:5e7,level:42},{maxMacroblocks:22080,maxBitrate:135e6,level:50},{maxMacroblocks:36864,maxBitrate:24e7,level:51},{maxMacroblocks:36864,maxBitrate:24e7,level:52},{maxMacroblocks:139264,maxBitrate:24e7,level:60},{maxMacroblocks:139264,maxBitrate:48e7,level:61},{maxMacroblocks:139264,maxBitrate:8e8,level:62}],o=[{maxPictureSize:36864,maxBitrate:128e3,tier:"L",level:30},{maxPictureSize:122880,maxBitrate:15e5,tier:"L",level:60},{maxPictureSize:245760,maxBitrate:3e6,tier:"L",level:63},{maxPictureSize:552960,maxBitrate:6e6,tier:"L",level:90},{maxPictureSize:983040,maxBitrate:1e7,tier:"L",level:93},{maxPictureSize:2228224,maxBitrate:12e6,tier:"L",level:120},{maxPictureSize:2228224,maxBitrate:3e7,tier:"H",level:120},{maxPictureSize:2228224,maxBitrate:2e7,tier:"L",level:123},{maxPictureSize:2228224,maxBitrate:5e7,tier:"H",level:123},{maxPictureSize:8912896,maxBitrate:25e6,tier:"L",level:150},{maxPictureSize:8912896,maxBitrate:1e8,tier:"H",level:150},{maxPictureSize:8912896,maxBitrate:4e7,tier:"L",level:153},{maxPictureSize:8912896,maxBitrate:16e7,tier:"H",level:153},{maxPictureSize:8912896,maxBitrate:6e7,tier:"L",level:156},{maxPictureSize:8912896,maxBitrate:24e7,tier:"H",level:156},{maxPictureSize:35651584,maxBitrate:6e7,tier:"L",level:180},{maxPictureSize:35651584,maxBitrate:24e7,tier:"H",level:180},{maxPictureSize:35651584,maxBitrate:12e7,tier:"L",level:183},{maxPictureSize:35651584,maxBitrate:48e7,tier:"H",level:183},{maxPictureSize:35651584,maxBitrate:24e7,tier:"L",level:186},{maxPictureSize:35651584,maxBitrate:8e8,tier:"H",level:186}],m=[{maxPictureSize:36864,maxBitrate:2e5,level:10},{maxPictureSize:73728,maxBitrate:8e5,level:11},{maxPictureSize:122880,maxBitrate:18e5,level:20},{maxPictureSize:245760,maxBitrate:36e5,level:21},{maxPictureSize:552960,maxBitrate:72e5,level:30},{maxPictureSize:983040,maxBitrate:12e6,level:31},{maxPictureSize:2228224,maxBitrate:18e6,level:40},{maxPictureSize:2228224,maxBitrate:3e7,level:41},{maxPictureSize:8912896,maxBitrate:6e7,level:50},{maxPictureSize:8912896,maxBitrate:12e7,level:51},{maxPictureSize:8912896,maxBitrate:18e7,level:52},{maxPictureSize:35651584,maxBitrate:18e7,level:60},{maxPictureSize:35651584,maxBitrate:24e7,level:61},{maxPictureSize:35651584,maxBitrate:48e7,level:62}],h=[{maxPictureSize:147456,maxBitrate:15e5,tier:"M",level:0},{maxPictureSize:278784,maxBitrate:3e6,tier:"M",level:1},{maxPictureSize:665856,maxBitrate:6e6,tier:"M",level:4},{maxPictureSize:1065024,maxBitrate:1e7,tier:"M",level:5},{maxPictureSize:2359296,maxBitrate:12e6,tier:"M",level:8},{maxPictureSize:2359296,maxBitrate:3e7,tier:"H",level:8},{maxPictureSize:2359296,maxBitrate:2e7,tier:"M",level:9},{maxPictureSize:2359296,maxBitrate:5e7,tier:"H",level:9},{maxPictureSize:8912896,maxBitrate:3e7,tier:"M",level:12},{maxPictureSize:8912896,maxBitrate:1e8,tier:"H",level:12},{maxPictureSize:8912896,maxBitrate:4e7,tier:"M",level:13},{maxPictureSize:8912896,maxBitrate:16e7,tier:"H",level:13},{maxPictureSize:8912896,maxBitrate:6e7,tier:"M",level:14},{maxPictureSize:8912896,maxBitrate:24e7,tier:"H",level:14},{maxPictureSize:35651584,maxBitrate:6e7,tier:"M",level:15},{maxPictureSize:35651584,maxBitrate:24e7,tier:"H",level:15},{maxPictureSize:35651584,maxBitrate:6e7,tier:"M",level:16},{maxPictureSize:35651584,maxBitrate:24e7,tier:"H",level:16},{maxPictureSize:35651584,maxBitrate:1e8,tier:"M",level:17},{maxPictureSize:35651584,maxBitrate:48e7,tier:"H",level:17},{maxPictureSize:35651584,maxBitrate:16e7,tier:"M",level:18},{maxPictureSize:35651584,maxBitrate:8e8,tier:"H",level:18},{maxPictureSize:35651584,maxBitrate:16e7,tier:"M",level:19},{maxPictureSize:35651584,maxBitrate:8e8,tier:"H",level:19}];function S(W){return W?W[W.length-1]:void 0}if(t==="avc"){const v=Math.ceil(e/16)*Math.ceil(i/16),Z=d.find(U=>v<=U.maxMacroblocks&&n<=U.maxBitrate)??S(d),O=Z?Z.level:0,w="64".padStart(2,"0"),N="00",J=O.toString(16).padStart(2,"0");return`avc1.${w}${N}${J}`}else if(t==="hevc"){const W="",Z="6",O=e*i,w=o.find(J=>O<=J.maxPictureSize&&n<=J.maxBitrate)??S(o);return`hev1.${W}1.${Z}.${w.tier}${w.level}.B0`}else{if(t==="vp8")return"vp8";if(t==="vp9"){const W="00",v=e*i,Z=m.find(w=>v<=w.maxPictureSize&&n<=w.maxBitrate)??S(m);return`vp09.${W}.${Z.level.toString().padStart(2,"0")}.08`}else if(t==="av1"){const v=e*i,Z=h.find(N=>v<=N.maxPictureSize&&n<=N.maxBitrate)??S(h);return`av01.0.${Z.level.toString().padStart(2,"0")}${Z.tier}.08`}}throw new TypeError(`Unhandled codec '${t}'.`)}class Nn{constructor(e,i={}){this.canvas=e,this.mode="webgpu",this.filterMode=i.filterMode||"linear",this.device=null,this.context=null,this.linearPipeline=null,this.bicubicPipeline=null,this.sampler=null,this.uniformBuffer=null,this.bitmapCtx=null}async init(){const e=navigator.platform.toLowerCase().includes("linux"),i=navigator.userAgent.toLowerCase().includes("firefox");if(e&&i){console.log("GPUDrawImage: Linux + Firefox detected, using ImageBitmapRenderer"),this.initBitmapRenderer(),this.mode="bitmap";return}if(navigator.gpu)try{await this.initWebGPU(),this.mode="webgpu",console.log("GPUDrawImage: Using WebGPU (zero-copy)");return}catch(n){console.warn("GPUDrawImage: WebGPU initialization failed, falling back to ImageBitmap",n)}this.initBitmapRenderer(),this.mode="bitmap",console.log("GPUDrawImage: Using ImageBitmapRenderer (fallback)")}async initWebGPU(){const e=await navigator.gpu.requestAdapter();if(!e||(this.device=await e.requestDevice(),!this.device)||(this.context=this.canvas.getContext("webgpu"),!this.context))return!1;const i=navigator.gpu.getPreferredCanvasFormat();this.context.configure({device:this.device,format:i,alphaMode:"opaque"}),this.sampler=this.device.createSampler({magFilter:"linear",minFilter:"linear"}),this.uniformBuffer=this.device.createBuffer({size:8,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});const n=`
|
|
2
2
|
struct VertexOutput {
|
|
3
3
|
@builtin(position) position: vec4f,
|
|
4
4
|
@location(0) texCoord: vec2f,
|
package/dist/index.js
CHANGED
|
@@ -229,12 +229,17 @@ class v1 {
|
|
|
229
229
|
* ```
|
|
230
230
|
*/
|
|
231
231
|
async init() {
|
|
232
|
+
const e = navigator.platform.toLowerCase().includes("linux"), i = navigator.userAgent.toLowerCase().includes("firefox");
|
|
233
|
+
if (e && i) {
|
|
234
|
+
console.log("GPUDrawImage: Linux + Firefox detected, using ImageBitmapRenderer"), this.initBitmapRenderer(), this.mode = "bitmap";
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
232
237
|
if (navigator.gpu)
|
|
233
238
|
try {
|
|
234
239
|
await this.initWebGPU(), this.mode = "webgpu", console.log("GPUDrawImage: Using WebGPU (zero-copy)");
|
|
235
240
|
return;
|
|
236
|
-
} catch (
|
|
237
|
-
console.warn("GPUDrawImage: WebGPU initialization failed, falling back to ImageBitmap",
|
|
241
|
+
} catch (n) {
|
|
242
|
+
console.warn("GPUDrawImage: WebGPU initialization failed, falling back to ImageBitmap", n);
|
|
238
243
|
}
|
|
239
244
|
this.initBitmapRenderer(), this.mode = "bitmap", console.log("GPUDrawImage: Using ImageBitmapRenderer (fallback)");
|
|
240
245
|
}
|