akarisub 0.2.2 → 1.0.0

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 (76) hide show
  1. package/README.md +198 -167
  2. package/THIRD_PARTY_NOTICES.md +55 -163
  3. package/dist/COPYRIGHT +56 -164
  4. package/dist/index.d.ts +12 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +11 -147
  7. package/dist/index.js.map +1 -0
  8. package/dist/ts/{ts/akarisub.d.ts → akarisub.d.ts} +80 -99
  9. package/dist/ts/akarisub.d.ts.map +1 -0
  10. package/dist/ts/akarisub.js +2086 -0
  11. package/dist/ts/akarisub.js.map +1 -0
  12. package/dist/ts/timing.d.ts +63 -0
  13. package/dist/ts/timing.d.ts.map +1 -0
  14. package/dist/ts/timing.js +219 -0
  15. package/dist/ts/timing.js.map +1 -0
  16. package/dist/ts/{ts/types.d.ts → types.d.ts} +103 -78
  17. package/dist/ts/types.d.ts.map +1 -0
  18. package/dist/ts/types.js +2 -0
  19. package/dist/ts/{ts/types.js.map → types.js.map} +1 -1
  20. package/dist/ts/{ts/utils.d.ts → utils.d.ts} +0 -31
  21. package/dist/ts/utils.d.ts.map +1 -0
  22. package/dist/ts/{ts/utils.js → utils.js} +0 -56
  23. package/dist/ts/utils.js.map +1 -0
  24. package/dist/ts/wasm.d.ts +12 -0
  25. package/dist/ts/wasm.d.ts.map +1 -0
  26. package/dist/ts/wasm.js +46 -0
  27. package/dist/ts/wasm.js.map +1 -0
  28. package/dist/ts/{ts/webgl2-renderer.d.ts → webgl2-renderer.d.ts} +0 -12
  29. package/dist/ts/webgl2-renderer.d.ts.map +1 -0
  30. package/dist/ts/{ts/webgl2-renderer.js → webgl2-renderer.js} +0 -27
  31. package/dist/ts/webgl2-renderer.js.map +1 -0
  32. package/dist/ts/{ts/webgpu-renderer.d.ts → webgpu-renderer.d.ts} +17 -16
  33. package/dist/ts/webgpu-renderer.d.ts.map +1 -0
  34. package/dist/ts/{ts/webgpu-renderer.js → webgpu-renderer.js} +148 -71
  35. package/dist/ts/webgpu-renderer.js.map +1 -0
  36. package/dist/ts/worker.d.ts +2 -0
  37. package/dist/ts/{ts/worker.d.ts.map → worker.d.ts.map} +1 -1
  38. package/dist/ts/{ts/worker.js → worker.js} +1064 -264
  39. package/dist/ts/worker.js.map +1 -0
  40. package/dist/wrapper.d.ts +8 -0
  41. package/dist/wrapper.d.ts.map +1 -0
  42. package/dist/{ts/index.js → wrapper.js} +4 -14
  43. package/dist/wrapper.js.map +1 -0
  44. package/package.json +24 -22
  45. package/pkg/akarisub.js +53 -0
  46. package/{dist/akarisub-worker.wasm → pkg/akarisub.wasm} +0 -0
  47. package/src/wrapper.ts +46 -0
  48. package/dist/akarisub-worker.js +0 -39
  49. package/dist/akarisub.umd.js +0 -159
  50. package/dist/ts/index.d.ts +0 -14
  51. package/dist/ts/index.d.ts.map +0 -1
  52. package/dist/ts/index.js.map +0 -1
  53. package/dist/ts/ts/akarisub.d.ts.map +0 -1
  54. package/dist/ts/ts/akarisub.js +0 -1073
  55. package/dist/ts/ts/akarisub.js.map +0 -1
  56. package/dist/ts/ts/types.d.ts.map +0 -1
  57. package/dist/ts/ts/types.js +0 -5
  58. package/dist/ts/ts/utils.d.ts.map +0 -1
  59. package/dist/ts/ts/utils.js.map +0 -1
  60. package/dist/ts/ts/webgl2-renderer.d.ts.map +0 -1
  61. package/dist/ts/ts/webgl2-renderer.js.map +0 -1
  62. package/dist/ts/ts/webgpu-renderer.d.ts.map +0 -1
  63. package/dist/ts/ts/webgpu-renderer.js.map +0 -1
  64. package/dist/ts/ts/worker.d.ts +0 -6
  65. package/dist/ts/ts/worker.js.map +0 -1
  66. package/dist/ts/wrapper.d.ts +0 -8
  67. package/dist/ts/wrapper.d.ts.map +0 -1
  68. package/dist/ts/wrapper.js +0 -9
  69. package/dist/ts/wrapper.js.map +0 -1
  70. package/src/ts/akarisub.ts +0 -1272
  71. package/src/ts/types.ts +0 -397
  72. package/src/ts/utils.ts +0 -512
  73. package/src/ts/webgl2-renderer.ts +0 -426
  74. package/src/ts/webgpu-renderer.ts +0 -691
  75. package/src/ts/worker.ts +0 -2052
  76. /package/{dist → assets}/default.woff2 +0 -0
@@ -1,16 +1,8 @@
1
- /**
2
- * Utility functions for AkariSub.
3
- */
4
- // =============================================================================
5
- // Color Space Utilities
6
- // =============================================================================
7
- /** Map video color space to standard name */
8
1
  export const webYCbCrMap = {
9
2
  bt709: 'BT709',
10
3
  bt470bg: 'BT601', // BT.601 PAL
11
4
  smpte170m: 'BT601' // BT.601 NTSC
12
5
  };
13
- /** Color matrix conversion values for SVG filter */
14
6
  export const colorMatrixConversionMap = {
15
7
  BT601: {
16
8
  BT709: '1.0863 -0.0723 -0.014 0 0 0.0965 0.8451 0.0584 0 0 -0.0141 -0.0277 1.0418'
@@ -27,7 +19,6 @@ export const colorMatrixConversionMap = {
27
19
  BT601: '0.913 0.0774 0.0096 0 0 -0.1051 1.1508 -0.0456 0 0 0.0063 0.0207 0.973'
28
20
  }
29
21
  };
30
- /** libass YCbCr color space index map */
31
22
  export const libassYCbCrMap = [
32
23
  null,
33
24
  'BT601',
@@ -41,9 +32,6 @@ export const libassYCbCrMap = [
41
32
  'FCC',
42
33
  'FCC'
43
34
  ];
44
- /**
45
- * Generate SVG filter URL for color space conversion.
46
- */
47
35
  export function getColorSpaceFilterUrl(subtitleColorSpace, videoColorSpace) {
48
36
  if (!subtitleColorSpace || !videoColorSpace)
49
37
  return null;
@@ -54,12 +42,6 @@ export function getColorSpaceFilterUrl(subtitleColorSpace, videoColorSpace) {
54
42
  return null;
55
43
  return `url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg'><filter id='f'><feColorMatrix type='matrix' values='${matrix} 0 0 0 0 0 1 0'/></filter></svg>#f")`;
56
44
  }
57
- // =============================================================================
58
- // Canvas Utilities
59
- // =============================================================================
60
- /**
61
- * Compute canvas size with prescaling.
62
- */
63
45
  export function computeCanvasSize(width, height, prescaleFactor, prescaleHeightLimit, maxRenderHeight) {
64
46
  const scalefactor = prescaleFactor <= 0 ? 1.0 : prescaleFactor;
65
47
  const ratio = globalThis.devicePixelRatio || 1;
@@ -81,9 +63,6 @@ export function computeCanvasSize(width, height, prescaleFactor, prescaleHeightL
81
63
  height = newH;
82
64
  return { width, height };
83
65
  }
84
- /**
85
- * Get video position and size accounting for aspect ratio.
86
- */
87
66
  export function getVideoPosition(video, videoWidth = video.videoWidth, videoHeight = video.videoHeight) {
88
67
  const videoRatio = videoWidth / videoHeight;
89
68
  const { offsetWidth, offsetHeight } = video;
@@ -100,9 +79,6 @@ export function getVideoPosition(video, videoWidth = video.videoWidth, videoHeig
100
79
  const y = (offsetHeight - height) / 2;
101
80
  return { width, height, x, y };
102
81
  }
103
- // =============================================================================
104
- // Alpha Bug Fix
105
- // =============================================================================
106
82
  /**
107
83
  * Fix alpha bug in some browsers (transparent pixels rendered as non-black).
108
84
  */
@@ -111,7 +87,6 @@ export function fixAlpha(uint8, hasAlphaBug) {
111
87
  return uint8;
112
88
  const len = uint8.length;
113
89
  const len4 = len - (len % 16); // Process 4 pixels at a time (16 bytes)
114
- // Unrolled loop for 4 pixels at a time
115
90
  let j = 3;
116
91
  for (; j < len4; j += 16) {
117
92
  if (uint8[j] < 2)
@@ -123,18 +98,12 @@ export function fixAlpha(uint8, hasAlphaBug) {
123
98
  if (uint8[j + 12] < 2)
124
99
  uint8[j + 12] = 1;
125
100
  }
126
- // Handle remaining pixels
127
101
  for (; j < len; j += 4) {
128
102
  if (uint8[j] < 2)
129
103
  uint8[j] = 1;
130
104
  }
131
105
  return uint8;
132
106
  }
133
- /**
134
- * Parse ASS file content.
135
- * @param content - ASS file content
136
- * @param stopAtEvents - Stop parsing when [Events] section is reached (for font detection)
137
- */
138
107
  export function parseAss(content, stopAtEvents = false) {
139
108
  const sections = [];
140
109
  const lines = content.split(/[\r\n]+/g);
@@ -149,7 +118,6 @@ export function parseAss(content, stopAtEvents = false) {
149
118
  if (firstChar === '[') {
150
119
  const m = line.match(/^\[(.*)\]$/);
151
120
  if (m) {
152
- // Early termination for font detection performance
153
121
  if (stopAtEvents && m[1].toLowerCase() === 'events') {
154
122
  break;
155
123
  }
@@ -204,17 +172,10 @@ export function parseAss(content, stopAtEvents = false) {
204
172
  }
205
173
  return sections;
206
174
  }
207
- // =============================================================================
208
- // ASS Content Transformation Utilities
209
- // =============================================================================
210
175
  const blurRegex = /\\blur(?:[0-9]+\.)?[0-9]+/gm;
211
- /**
212
- * Remove all blur tags from subtitle content.
213
- */
214
176
  export function dropBlur(subContent) {
215
177
  return subContent.replace(blurRegex, '');
216
178
  }
217
- // Common video resolutions to detect source resolution
218
179
  const commonResolutions = [
219
180
  { w: 7680, h: 4320 }, // 8K
220
181
  { w: 3840, h: 2160 }, // 4K UHD
@@ -222,9 +183,6 @@ const commonResolutions = [
222
183
  { w: 1920, h: 1080 }, // 1080p
223
184
  { w: 1280, h: 720 } // 720p
224
185
  ];
225
- /**
226
- * Detect the likely source resolution based on max position values.
227
- */
228
186
  function detectSourceResolution(maxX, maxY) {
229
187
  const sorted = [...commonResolutions].sort((a, b) => a.w - b.w);
230
188
  for (const res of sorted) {
@@ -315,14 +273,8 @@ export function fixPlayRes(subContent) {
315
273
  });
316
274
  return newContent.substring(0, eventsMatch.index) + eventsSection;
317
275
  }
318
- // =============================================================================
319
- // Feature Detection
320
- // =============================================================================
321
276
  let _hasAlphaBug = null;
322
277
  let _hasBitmapBug = null;
323
- /**
324
- * Test for browser image bugs.
325
- */
326
278
  export async function testImageBugs() {
327
279
  if (_hasAlphaBug !== null && _hasBitmapBug !== null) {
328
280
  return { hasAlphaBug: _hasAlphaBug, hasBitmapBug: _hasBitmapBug };
@@ -331,7 +283,6 @@ export async function testImageBugs() {
331
283
  const ctx1 = canvas1.getContext('2d', { willReadFrequently: true });
332
284
  if (!ctx1)
333
285
  throw new Error('Canvas rendering not supported');
334
- // Test ImageData constructor
335
286
  if (typeof ImageData.prototype.constructor === 'function') {
336
287
  try {
337
288
  new ImageData(new Uint8ClampedArray([0, 0, 0, 0]), 1, 1);
@@ -340,7 +291,6 @@ export async function testImageBugs() {
340
291
  console.log('Detected that ImageData is not constructable despite browser saying so');
341
292
  }
342
293
  }
343
- // Test for alpha bug
344
294
  const canvas2 = document.createElement('canvas');
345
295
  const ctx2 = canvas2.getContext('2d', { willReadFrequently: true });
346
296
  if (!ctx2)
@@ -357,7 +307,6 @@ export async function testImageBugs() {
357
307
  if (_hasAlphaBug) {
358
308
  console.log('Detected a browser having issue with transparent pixels, applying workaround');
359
309
  }
360
- // Test for bitmap bug
361
310
  if (typeof createImageBitmap !== 'undefined') {
362
311
  const subarray = new Uint8ClampedArray([255, 0, 255, 0, 255]).subarray(1, 5);
363
312
  ctx2.drawImage(await createImageBitmap(new ImageData(subarray, 1)), 0, 0);
@@ -378,17 +327,12 @@ export async function testImageBugs() {
378
327
  canvas2.remove();
379
328
  return { hasAlphaBug: _hasAlphaBug, hasBitmapBug: _hasBitmapBug };
380
329
  }
381
- /**
382
- * Run all feature detection tests.
383
- */
384
330
  export async function runFeatureTests() {
385
331
  return testImageBugs();
386
332
  }
387
- /** Get cached alpha bug value */
388
333
  export function getAlphaBug() {
389
334
  return _hasAlphaBug;
390
335
  }
391
- /** Get cached bitmap bug value */
392
336
  export function getBitmapBug() {
393
337
  return _hasBitmapBug;
394
338
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/ts/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * WASM glue and binary URL resolution.
3
+ */
4
+ /** Get the bundled fallback font URL (always returns an absolute URL). */
5
+ export declare function getDefaultFontUrl(): string;
6
+ /** Get the WASM file URL (always returns an absolute URL). */
7
+ export declare function getWasmUrl(): string;
8
+ /** Get the WASM glue script URL (always returns an absolute URL). */
9
+ export declare function getWasmGlueUrl(): string;
10
+ /** Derive a glue URL from a WASM URL when the caller only provided wasmUrl. */
11
+ export declare function glueUrlFromWasmUrl(wasmUrl: string): string;
12
+ //# sourceMappingURL=wasm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wasm.d.ts","sourceRoot":"","sources":["../../src/ts/wasm.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,0EAA0E;AAC1E,wBAAgB,iBAAiB,IAAI,MAAM,CAU1C;AAED,8DAA8D;AAC9D,wBAAgB,UAAU,IAAI,MAAM,CAUnC;AAED,qEAAqE;AACrE,wBAAgB,cAAc,IAAI,MAAM,CAUvC;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAI1D"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * WASM glue and binary URL resolution.
3
+ */
4
+ /** Get the bundled fallback font URL (always returns an absolute URL). */
5
+ export function getDefaultFontUrl() {
6
+ try {
7
+ return new URL('../../assets/default.woff2', import.meta.url).href;
8
+ }
9
+ catch {
10
+ if (typeof window !== 'undefined') {
11
+ return new URL('/akarisub/default.woff2', window.location.origin).href;
12
+ }
13
+ return '/akarisub/default.woff2';
14
+ }
15
+ }
16
+ /** Get the WASM file URL (always returns an absolute URL). */
17
+ export function getWasmUrl() {
18
+ try {
19
+ return new URL('../../pkg/akarisub.wasm', import.meta.url).href;
20
+ }
21
+ catch {
22
+ if (typeof window !== 'undefined') {
23
+ return new URL('/akarisub/akarisub.wasm', window.location.origin).href;
24
+ }
25
+ return '/akarisub/akarisub.wasm';
26
+ }
27
+ }
28
+ /** Get the WASM glue script URL (always returns an absolute URL). */
29
+ export function getWasmGlueUrl() {
30
+ try {
31
+ return new URL('../../pkg/akarisub.js', import.meta.url).href;
32
+ }
33
+ catch {
34
+ if (typeof window !== 'undefined') {
35
+ return new URL('/akarisub/akarisub.js', window.location.origin).href;
36
+ }
37
+ return '/akarisub/akarisub.js';
38
+ }
39
+ }
40
+ /** Derive a glue URL from a WASM URL when the caller only provided wasmUrl. */
41
+ export function glueUrlFromWasmUrl(wasmUrl) {
42
+ const derivedUrl = new URL(wasmUrl, typeof location !== 'undefined' ? location.href : 'http://localhost/');
43
+ derivedUrl.pathname = derivedUrl.pathname.replace(/\.wasm$/, '.js');
44
+ return derivedUrl.href;
45
+ }
46
+ //# sourceMappingURL=wasm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wasm.js","sourceRoot":"","sources":["../../src/ts/wasm.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,0EAA0E;AAC1E,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,4BAA4B,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,OAAO,IAAI,GAAG,CAAC,yBAAyB,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAA;QACxE,CAAC;QAED,OAAO,yBAAyB,CAAA;IAClC,CAAC;AACH,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,yBAAyB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,OAAO,IAAI,GAAG,CAAC,yBAAyB,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAA;QACxE,CAAC;QAED,OAAO,yBAAyB,CAAA;IAClC,CAAC;AACH,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,uBAAuB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,OAAO,IAAI,GAAG,CAAC,uBAAuB,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAA;QACtE,CAAC;QAED,OAAO,uBAAuB,CAAA;IAChC,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAA;IAC1G,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IACnE,OAAO,UAAU,CAAC,IAAI,CAAA;AACxB,CAAC"}
@@ -1,11 +1,5 @@
1
1
  import type { RenderImage } from './types';
2
- /**
3
- * Check if WebGL2 is supported in the current browser.
4
- */
5
2
  export declare function isWebGL2Supported(): boolean;
6
- /**
7
- * High-performance WebGL2 subtitle renderer for AkariSub.
8
- */
9
3
  export declare class WebGL2Renderer {
10
4
  private _gl;
11
5
  private _canvas;
@@ -33,17 +27,11 @@ export declare class WebGL2Renderer {
33
27
  private _ensureTextureArray;
34
28
  setCanvas(canvas: HTMLCanvasElement, width: number, height: number): Promise<void>;
35
29
  updateSize(width: number, height: number): void;
36
- /**
37
- * Render from ImageBitmaps (async render mode)
38
- */
39
30
  renderBitmaps(images: {
40
31
  image: ImageBitmap;
41
32
  x: number;
42
33
  y: number;
43
34
  }[], _canvasWidth: number, _canvasHeight: number): void;
44
- /**
45
- * Render from raw ArrayBuffer data (non-async render mode)
46
- */
47
35
  render(images: RenderImage[], _canvasWidth: number, _canvasHeight: number): void;
48
36
  clear(): void;
49
37
  get initialized(): boolean;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl2-renderer.d.ts","sourceRoot":"","sources":["../../src/ts/webgl2-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AA6D1C,wBAAgB,iBAAiB,IAAI,OAAO,CAQ3C;AAkBD,qBAAa,cAAc;IACzB,OAAO,CAAC,GAAG,CAAsC;IACjD,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,IAAI,CAAsC;IAClD,OAAO,CAAC,eAAe,CAA2B;IAClD,OAAO,CAAC,SAAS,CAA4B;IAE7C,OAAO,CAAC,SAAS,CAAI;IACrB,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,UAAU,CAAI;IAEtB,OAAO,CAAC,cAAc,CAAoC;IAC1D,OAAO,CAAC,gBAAgB,CAAoC;IAC5D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAc;IAE5C,OAAO,CAAC,gBAAgB,CAAI;IAC5B,OAAO,CAAC,iBAAiB,CAAI;IAC7B,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,YAAY,CAA6B;IAEjD,cAEC;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAI1B;YAEa,aAAa;IAM3B,OAAO,CAAC,OAAO;IAwDf,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,qBAAqB;IAoB7B,OAAO,CAAC,mBAAmB;IASrB,SAAS,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUvF;IAED,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAQ9C;IAED,aAAa,CACX,MAAM,EAAE;QAAE,KAAK,EAAE,WAAW,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,EACtD,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,GACpB,IAAI,CAwDN;IAED,MAAM,CACJ,MAAM,EAAE,WAAW,EAAE,EACrB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,GACpB,IAAI,CA8DN;IAED,KAAK,IAAI,IAAI,CAIZ;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,OAAO,IAAI,IAAI,CAgBd;CACF"}
@@ -1,6 +1,5 @@
1
1
  const MAX_IMAGES_PER_BATCH = 256;
2
2
  const MAX_TEXTURE_ARRAY_LAYERS = 256;
3
- // GLSL Vertex Shader (GLSL ES 3.00)
4
3
  const VERTEX_SHADER = /* glsl */ `#version 300 es
5
4
  precision highp float;
6
5
 
@@ -36,7 +35,6 @@ void main() {
36
35
  v_texSize = a_texInfo.xy;
37
36
  }
38
37
  `;
39
- // GLSL Fragment Shader (GLSL ES 3.00)
40
38
  const FRAGMENT_SHADER = /* glsl */ `#version 300 es
41
39
  precision highp float;
42
40
  precision highp sampler2DArray;
@@ -53,13 +51,9 @@ out vec4 fragColor;
53
51
  void main() {
54
52
  vec2 normalizedCoord = v_uv * v_texSize / vec2(u_texArraySize);
55
53
  vec4 color = texture(u_texArray, vec3(normalizedCoord, float(v_texIndex)));
56
- // Premultiplied alpha output (matches WebGPU renderer behaviour)
57
54
  fragColor = vec4(color.rgb * color.a, color.a);
58
55
  }
59
56
  `;
60
- /**
61
- * Check if WebGL2 is supported in the current browser.
62
- */
63
57
  export function isWebGL2Supported() {
64
58
  if (typeof document === 'undefined')
65
59
  return false;
@@ -85,9 +79,6 @@ function compileShader(gl, type, source) {
85
79
  }
86
80
  return shader;
87
81
  }
88
- /**
89
- * High-performance WebGL2 subtitle renderer for AkariSub.
90
- */
91
82
  export class WebGL2Renderer {
92
83
  _gl = null;
93
84
  _canvas = null;
@@ -130,7 +121,6 @@ export class WebGL2Renderer {
130
121
  if (!gl)
131
122
  throw new Error('Failed to create WebGL2 context');
132
123
  this._gl = gl;
133
- // Compile and link program
134
124
  const vert = compileShader(gl, gl.VERTEX_SHADER, VERTEX_SHADER);
135
125
  const frag = compileShader(gl, gl.FRAGMENT_SHADER, FRAGMENT_SHADER);
136
126
  const program = gl.createProgram();
@@ -145,12 +135,10 @@ export class WebGL2Renderer {
145
135
  this._program = program;
146
136
  this._resolutionLoc = gl.getUniformLocation(program, 'u_resolution');
147
137
  this._texArraySizeLoc = gl.getUniformLocation(program, 'u_texArraySize');
148
- // VAO + instance VBO
149
138
  this._vao = gl.createVertexArray();
150
139
  gl.bindVertexArray(this._vao);
151
140
  this._instanceBuffer = gl.createBuffer();
152
141
  gl.bindBuffer(gl.ARRAY_BUFFER, this._instanceBuffer);
153
- // Size: MAX_IMAGES * 8 floats * 4 bytes
154
142
  gl.bufferData(gl.ARRAY_BUFFER, MAX_IMAGES_PER_BATCH * 32, gl.DYNAMIC_DRAW);
155
143
  // stride = 32 bytes (8 × float)
156
144
  const aDestRect = gl.getAttribLocation(program, 'a_destRect');
@@ -162,24 +150,18 @@ export class WebGL2Renderer {
162
150
  gl.vertexAttribPointer(aTexInfo, 4, gl.FLOAT, false, 32, 16);
163
151
  gl.vertexAttribDivisor(aTexInfo, 1);
164
152
  gl.bindVertexArray(null);
165
- // Texture array
166
153
  this._allocateTextureArray(256, 256, 32);
167
- // Premultiplied-alpha blending
168
154
  gl.enable(gl.BLEND);
169
155
  gl.blendEquation(gl.FUNC_ADD);
170
156
  gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
171
157
  this._initialized = true;
172
158
  }
173
- // ==========================================================================
174
- // Texture management
175
- // ==========================================================================
176
159
  // Round up to a multiple of 64: gives headroom against size jitter without
177
160
  // power-of-2 over-allocation (a 1920x1080 blend region would otherwise
178
161
  // round to 2048x2048 and waste ~2x memory).
179
162
  _roundDim(n) {
180
163
  return (Math.max(n, 64) + 63) & ~63;
181
164
  }
182
- // Round layers up to a multiple of 8, clamped to the layer cap
183
165
  _roundLayers(n) {
184
166
  return Math.min((Math.max(n, 8) + 7) & ~7, MAX_TEXTURE_ARRAY_LAYERS);
185
167
  }
@@ -210,9 +192,6 @@ export class WebGL2Renderer {
210
192
  const newL = Math.max(c, Math.min(this._texLayers, 16));
211
193
  this._allocateTextureArray(newW, newH, newL);
212
194
  }
213
- // ==========================================================================
214
- // Public interface
215
- // ==========================================================================
216
195
  async setCanvas(canvas, width, height) {
217
196
  await this.init();
218
197
  if (width <= 0 || height <= 0)
@@ -236,9 +215,6 @@ export class WebGL2Renderer {
236
215
  this._lastCanvasWidth = width;
237
216
  this._lastCanvasHeight = height;
238
217
  }
239
- /**
240
- * Render from ImageBitmaps (async render mode)
241
- */
242
218
  renderBitmaps(images, _canvasWidth, _canvasHeight) {
243
219
  if (!this._gl || !this._initialized)
244
220
  return;
@@ -295,9 +271,6 @@ export class WebGL2Renderer {
295
271
  gl.bindVertexArray(null);
296
272
  }
297
273
  }
298
- /**
299
- * Render from raw ArrayBuffer data (non-async render mode)
300
- */
301
274
  render(images, _canvasWidth, _canvasHeight) {
302
275
  if (!this._gl || !this._initialized)
303
276
  return;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl2-renderer.js","sourceRoot":"","sources":["../../src/ts/webgl2-renderer.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,9 @@
1
1
  import type { RenderImage } from './types';
2
- /**
3
- * Check if WebGPU is supported in the current browser.
4
- */
5
2
  export declare function isWebGPUSupported(): boolean;
6
- /**
7
- * High-performance WebGPU subtitle renderer for AkariSub.
8
- */
9
3
  export declare class WebGPURenderer {
10
4
  private device;
11
5
  private context;
6
+ private stageContexts;
12
7
  private pipeline;
13
8
  private bindGroupLayout;
14
9
  private uniformBuffer;
@@ -19,6 +14,9 @@ export declare class WebGPURenderer {
19
14
  private textureArrayWidth;
20
15
  private textureArrayHeight;
21
16
  private pendingDestroyTextures;
17
+ private externalUploadCanvas;
18
+ private externalUploadContext;
19
+ private warnedExternalUploadFallback;
22
20
  private readonly imageDataArray;
23
21
  private readonly resolutionArray;
24
22
  private bindGroup;
@@ -38,24 +36,27 @@ export declare class WebGPURenderer {
38
36
  private ensureTextureArray;
39
37
  private updateBindGroup;
40
38
  setCanvas(canvas: HTMLCanvasElement, width: number, height: number): Promise<void>;
41
- updateSize(width: number, height: number): void;
42
39
  /**
43
- * Render ImageBitmaps (async render mode)
44
- * Handles batching when image count exceeds MAX_TEXTURE_ARRAY_LAYERS
40
+ * Render a prepared full-frame subtitle snapshot into its own WebGPU canvas.
41
+ * Keeping prepared frames on the selected backend avoids switching to a 2D
42
+ * compositor during playback (and lets Chromium keep one GPU overlay stack).
45
43
  */
44
+ renderBitmapToCanvas(canvas: HTMLCanvasElement, bitmap: ImageBitmap, width: number, height: number): boolean;
45
+ releaseCanvas(canvas: HTMLCanvasElement): void;
46
+ updateSize(width: number, height: number): void;
46
47
  renderBitmaps(images: {
47
48
  image: ImageBitmap;
48
49
  x: number;
49
50
  y: number;
50
- }[], _canvasWidth: number, _canvasHeight: number): void;
51
- /**
52
- * Render from raw ArrayBuffer data (non-async render mode)
53
- * Handles batching when image count exceeds MAX_TEXTURE_ARRAY_LAYERS
54
- */
55
- render(images: RenderImage[], _canvasWidth: number, _canvasHeight: number): void;
51
+ }[], canvasWidth: number, canvasHeight: number): boolean;
52
+ submittedWorkDone(): Promise<void>;
53
+ private renderBitmapsToContext;
54
+ render(images: RenderImage[], _canvasWidth: number, _canvasHeight: number): boolean;
55
+ private uploadImageBitmap;
56
56
  private uploadTextureData;
57
57
  private cleanupPendingTextures;
58
- clear(): void;
58
+ clear(): boolean;
59
+ private clearContext;
59
60
  get initialized(): boolean;
60
61
  destroy(): void;
61
62
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgpu-renderer.d.ts","sourceRoot":"","sources":["../../src/ts/webgpu-renderer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAgG1C,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAUD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,aAAa,CAAiD;IACtE,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,eAAe,CAAkC;IAEzD,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,eAAe,CAAyB;IAEhD,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,gBAAgB,CAA8B;IACtD,OAAO,CAAC,gBAAgB,CAAI;IAC5B,OAAO,CAAC,iBAAiB,CAAI;IAC7B,OAAO,CAAC,kBAAkB,CAAI;IAE9B,OAAO,CAAC,sBAAsB,CAAmB;IACjD,OAAO,CAAC,oBAAoB,CAAmD;IAC/E,OAAO,CAAC,qBAAqB,CAA4E;IACzG,OAAO,CAAC,4BAA4B,CAAQ;IAE5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAc;IAC7C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsB;IAEtD,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,cAAc,CAAO;IAE7B,OAAO,CAAC,eAAe,CAAI;IAC3B,OAAO,CAAC,gBAAgB,CAAI;IAE5B,MAAM,EAAE,gBAAgB,CAAe;IAEvC,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,YAAY,CAAQ;IAE5B,cAEC;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAI1B;YAEa,WAAW;IA4EzB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,kBAAkB;IA0C1B,OAAO,CAAC,kBAAkB;IAmB1B,OAAO,CAAC,eAAe;IAcjB,SAAS,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BvF;IAED;;;;OAIG;IACH,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAkB3G;IAED,aAAa,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAS7C;IAED,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAY9C;IAED,aAAa,CACX,MAAM,EAAE;QAAE,KAAK,EAAE,WAAW,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,EACtD,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,OAAO,CAGT;IAED,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAEjC;IAED,OAAO,CAAC,sBAAsB;IA4G9B,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CA6GlF;IAED,OAAO,CAAC,iBAAiB;IA+CzB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,sBAAsB;IAW9B,KAAK,IAAI,OAAO,CAIf;IAED,OAAO,CAAC,YAAY;IA0BpB,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,OAAO,IAAI,IAAI,CAgCd;CACF"}