jassub 2.0.19 → 2.1.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.
@@ -0,0 +1,48 @@
1
+ import type { ASSImage } from '../jassub';
2
+ export declare const colorMatrixConversionMap: {
3
+ readonly BT601: {
4
+ readonly BT709: Float32Array<ArrayBuffer>;
5
+ readonly BT601: Float32Array<ArrayBuffer>;
6
+ };
7
+ readonly BT709: {
8
+ readonly BT601: Float32Array<ArrayBuffer>;
9
+ readonly BT709: Float32Array<ArrayBuffer>;
10
+ };
11
+ readonly FCC: {
12
+ readonly BT709: Float32Array<ArrayBuffer>;
13
+ readonly BT601: Float32Array<ArrayBuffer>;
14
+ };
15
+ readonly SMPTE240M: {
16
+ readonly BT709: Float32Array<ArrayBuffer>;
17
+ readonly BT601: Float32Array<ArrayBuffer>;
18
+ };
19
+ };
20
+ export type ColorSpace = keyof typeof colorMatrixConversionMap;
21
+ interface TextureInfo {
22
+ texture: WebGLTexture;
23
+ width: number;
24
+ height: number;
25
+ }
26
+ export declare class WebGL2Renderer {
27
+ gl: WebGL2RenderingContext | null;
28
+ program: WebGLProgram | null;
29
+ vao: WebGLVertexArrayObject | null;
30
+ u_resolution: WebGLUniformLocation | null;
31
+ u_destRect: WebGLUniformLocation | null;
32
+ u_color: WebGLUniformLocation | null;
33
+ u_texture: WebGLUniformLocation | null;
34
+ u_colorMatrix: WebGLUniformLocation | null;
35
+ textures: TextureInfo[];
36
+ colorMatrix: Float32Array;
37
+ setCanvas(canvas: OffscreenCanvas, width: number, height: number): void;
38
+ createShader(type: number, source: string): WebGLShader | null;
39
+ /**
40
+ * Set the color matrix for color space conversion.
41
+ * Pass null or undefined to use identity (no conversion).
42
+ */
43
+ setColorMatrix(subtitleColorSpace?: 'BT601' | 'BT709' | 'SMPTE240M' | 'FCC', videoColorSpace?: 'BT601' | 'BT709'): void;
44
+ createTextureInfo(width: number, height: number): TextureInfo;
45
+ render(images: ASSImage[], heap: Uint8Array): void;
46
+ destroy(): void;
47
+ }
48
+ export {};
@@ -0,0 +1,290 @@
1
+ const IDENTITY_MATRIX = new Float32Array([
2
+ 1, 0, 0,
3
+ 0, 1, 0,
4
+ 0, 0, 1
5
+ ]);
6
+ // Color matrix conversion map - mat3x3 for WebGL2
7
+ // Each matrix converts FROM the key color space TO the nested key color space
8
+ export const colorMatrixConversionMap = {
9
+ BT601: {
10
+ BT709: new Float32Array([
11
+ 1.0863, 0.0965, -0.01411,
12
+ -0.0723, 0.8451, -0.0277,
13
+ -0.0141, 0.0584, 1.0418
14
+ ]),
15
+ BT601: IDENTITY_MATRIX
16
+ },
17
+ BT709: {
18
+ BT601: new Float32Array([
19
+ 0.9137, 0.0784, 0.0079,
20
+ -0.1049, 1.1722, -0.0671,
21
+ 0.0096, 0.0322, 0.9582
22
+ ]),
23
+ BT709: IDENTITY_MATRIX
24
+ },
25
+ FCC: {
26
+ BT709: new Float32Array([
27
+ 1.0873, -0.0736, -0.0137,
28
+ 0.0974, 0.8494, 0.0531,
29
+ -0.0127, -0.0251, 1.0378
30
+ ]),
31
+ BT601: new Float32Array([
32
+ 1.001, -0.0008, -0.0002,
33
+ 0.0009, 1.005, -0.006,
34
+ 0.0013, 0.0027, 0.996
35
+ ])
36
+ },
37
+ SMPTE240M: {
38
+ BT709: new Float32Array([
39
+ 0.9993, 0.0006, 0.0001,
40
+ -0.0004, 0.9812, 0.0192,
41
+ -0.0034, -0.0114, 1.0148
42
+ ]),
43
+ BT601: new Float32Array([
44
+ 0.913, 0.0774, 0.0096,
45
+ -0.1051, 1.1508, -0.0456,
46
+ 0.0063, 0.0207, 0.973
47
+ ])
48
+ }
49
+ };
50
+ // GLSL Vertex Shader
51
+ const VERTEX_SHADER = `#version 300 es
52
+ precision highp float;
53
+
54
+ uniform vec2 u_resolution;
55
+ uniform vec4 u_destRect; // x, y, w, h
56
+ uniform vec4 u_color; // RGBA
57
+
58
+ out vec2 v_texCoord;
59
+ out vec4 v_color;
60
+
61
+ // Quad vertices (0,0 to 1,1)
62
+ const vec2 QUAD_POSITIONS[6] = vec2[6](
63
+ vec2(0.0, 0.0),
64
+ vec2(1.0, 0.0),
65
+ vec2(0.0, 1.0),
66
+ vec2(1.0, 0.0),
67
+ vec2(1.0, 1.0),
68
+ vec2(0.0, 1.0)
69
+ );
70
+
71
+ void main() {
72
+ vec2 quadPos = QUAD_POSITIONS[gl_VertexID];
73
+
74
+ // Calculate pixel position
75
+ vec2 pixelPos = u_destRect.xy + quadPos * u_destRect.zw;
76
+
77
+ // Convert to clip space (-1 to 1)
78
+ vec2 clipPos = (pixelPos / u_resolution) * 2.0 - 1.0;
79
+ clipPos.y = -clipPos.y; // Flip Y for canvas coordinates
80
+
81
+ gl_Position = vec4(clipPos, 0.0, 1.0);
82
+ v_texCoord = quadPos;
83
+ v_color = u_color;
84
+ }
85
+ `;
86
+ // GLSL Fragment Shader
87
+ const FRAGMENT_SHADER = `#version 300 es
88
+ precision highp float;
89
+
90
+ uniform sampler2D u_texture;
91
+ uniform mat3 u_colorMatrix;
92
+
93
+ in vec2 v_texCoord;
94
+ in vec4 v_color;
95
+
96
+ out vec4 fragColor;
97
+
98
+ void main() {
99
+ // Sample texture
100
+ float mask = texture(u_texture, v_texCoord).r;
101
+
102
+ // Apply color matrix conversion (identity if no conversion needed)
103
+ vec3 correctedColor = u_colorMatrix * v_color.rgb;
104
+
105
+ // libass color alpha: 0 = opaque, 255 = transparent (inverted)
106
+ float colorAlpha = 1.0 - v_color.a;
107
+
108
+ // Final alpha = colorAlpha * mask
109
+ float a = colorAlpha * mask;
110
+
111
+ // Premultiplied alpha output
112
+ fragColor = vec4(correctedColor * a, a);
113
+ }
114
+ `;
115
+ export class WebGL2Renderer {
116
+ gl = null;
117
+ program = null;
118
+ vao = null;
119
+ // Uniform locations
120
+ u_resolution = null;
121
+ u_destRect = null;
122
+ u_color = null;
123
+ u_texture = null;
124
+ u_colorMatrix = null;
125
+ // Textures created on-demand (no fixed limit)
126
+ textures = [];
127
+ colorMatrix = IDENTITY_MATRIX;
128
+ setCanvas(canvas, width, height) {
129
+ // WebGL2 doesn't allow 0-sized canvases
130
+ if (width <= 0 || height <= 0)
131
+ return;
132
+ canvas.width = width;
133
+ canvas.height = height;
134
+ if (!this.gl) {
135
+ // Get canvas context
136
+ // Note: preserveDrawingBuffer is false (default) - the browser handles
137
+ // buffer swaps for OffscreenCanvas, avoiding flicker
138
+ this.gl = canvas.getContext('webgl2', {
139
+ alpha: true,
140
+ premultipliedAlpha: true,
141
+ antialias: false,
142
+ depth: false,
143
+ stencil: false
144
+ });
145
+ if (!this.gl) {
146
+ throw new Error('Could not get WebGL2 context');
147
+ }
148
+ // Create shaders
149
+ const vertexShader = this.createShader(this.gl.VERTEX_SHADER, VERTEX_SHADER);
150
+ const fragmentShader = this.createShader(this.gl.FRAGMENT_SHADER, FRAGMENT_SHADER);
151
+ if (!vertexShader || !fragmentShader) {
152
+ throw new Error('Failed to create shaders');
153
+ }
154
+ // Create program
155
+ this.program = this.gl.createProgram();
156
+ this.gl.attachShader(this.program, vertexShader);
157
+ this.gl.attachShader(this.program, fragmentShader);
158
+ this.gl.linkProgram(this.program);
159
+ if (!this.gl.getProgramParameter(this.program, this.gl.LINK_STATUS)) {
160
+ const info = this.gl.getProgramInfoLog(this.program);
161
+ throw new Error('Failed to link program: ' + info);
162
+ }
163
+ // Get uniform locations
164
+ this.u_resolution = this.gl.getUniformLocation(this.program, 'u_resolution');
165
+ this.u_destRect = this.gl.getUniformLocation(this.program, 'u_destRect');
166
+ this.u_color = this.gl.getUniformLocation(this.program, 'u_color');
167
+ this.u_texture = this.gl.getUniformLocation(this.program, 'u_texture');
168
+ this.u_colorMatrix = this.gl.getUniformLocation(this.program, 'u_colorMatrix');
169
+ // Create a VAO (required for WebGL2)
170
+ this.vao = this.gl.createVertexArray();
171
+ this.gl.bindVertexArray(this.vao);
172
+ // Set up blending for premultiplied alpha
173
+ this.gl.enable(this.gl.BLEND);
174
+ this.gl.blendFunc(this.gl.ONE, this.gl.ONE_MINUS_SRC_ALPHA);
175
+ // Use the program
176
+ this.gl.useProgram(this.program);
177
+ // Set texture unit
178
+ this.gl.uniform1i(this.u_texture, 0);
179
+ // Set initial color matrix
180
+ this.gl.uniformMatrix3fv(this.u_colorMatrix, false, this.colorMatrix);
181
+ // Set one-time GL state
182
+ this.gl.pixelStorei(this.gl.UNPACK_ALIGNMENT, 1);
183
+ this.gl.clearColor(0, 0, 0, 0);
184
+ this.gl.activeTexture(this.gl.TEXTURE0);
185
+ }
186
+ // Update viewport and resolution uniform
187
+ this.gl.viewport(0, 0, width, height);
188
+ this.gl.uniform2f(this.u_resolution, width, height);
189
+ }
190
+ createShader(type, source) {
191
+ const shader = this.gl.createShader(type);
192
+ this.gl.shaderSource(shader, source);
193
+ this.gl.compileShader(shader);
194
+ if (!this.gl.getShaderParameter(shader, this.gl.COMPILE_STATUS)) {
195
+ const info = this.gl.getShaderInfoLog(shader);
196
+ console.log(info);
197
+ this.gl.deleteShader(shader);
198
+ return null;
199
+ }
200
+ return shader;
201
+ }
202
+ /**
203
+ * Set the color matrix for color space conversion.
204
+ * Pass null or undefined to use identity (no conversion).
205
+ */
206
+ setColorMatrix(subtitleColorSpace, videoColorSpace) {
207
+ this.colorMatrix = (subtitleColorSpace && videoColorSpace && colorMatrixConversionMap[subtitleColorSpace]?.[videoColorSpace]) ?? IDENTITY_MATRIX;
208
+ if (this.gl && this.u_colorMatrix && this.program) {
209
+ this.gl.useProgram(this.program);
210
+ this.gl.uniformMatrix3fv(this.u_colorMatrix, false, this.colorMatrix);
211
+ }
212
+ }
213
+ createTextureInfo(width, height) {
214
+ const texture = this.gl.createTexture();
215
+ this.gl.bindTexture(this.gl.TEXTURE_2D, texture);
216
+ // Set texture parameters for nearest-neighbor sampling (pixel-perfect)
217
+ this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.NEAREST);
218
+ this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.NEAREST);
219
+ this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_S, this.gl.CLAMP_TO_EDGE);
220
+ this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_WRAP_T, this.gl.CLAMP_TO_EDGE);
221
+ return {
222
+ texture,
223
+ width,
224
+ height
225
+ };
226
+ }
227
+ render(images, heap) {
228
+ if (!this.gl || !this.program || !this.vao)
229
+ return;
230
+ // Hack: work around shared memory issues, webGL doesnt support shared memory, so there are race conditions when growing memory
231
+ if (self.HEAPU8RAW.buffer !== self.WASMMEMORY.buffer) {
232
+ heap = self.HEAPU8RAW = new Uint8Array(self.WASMMEMORY.buffer);
233
+ }
234
+ // Clear canvas
235
+ this.gl.clear(this.gl.COLOR_BUFFER_BIT);
236
+ // Grow texture array if needed
237
+ while (this.textures.length < images.length) {
238
+ this.textures.push(this.createTextureInfo(64, 64));
239
+ }
240
+ // Render each image
241
+ for (let i = 0, texIndex = -1; i < images.length; i++) {
242
+ const img = images[i];
243
+ // Skip images with invalid dimensions
244
+ if (img.w <= 0 || img.h <= 0)
245
+ continue;
246
+ const texInfo = this.textures[++texIndex];
247
+ // Bind texture
248
+ this.gl.bindTexture(this.gl.TEXTURE_2D, texInfo.texture);
249
+ // Upload bitmap data using bytesPerRow to handle stride
250
+ // Only need stride * (h-1) + w bytes per ASS spec
251
+ this.gl.pixelStorei(this.gl.UNPACK_ROW_LENGTH, img.stride); // Source rows are stride bytes apart
252
+ // Recreate texture if size changed (use actual w, not stride)
253
+ if (texInfo.width === img.w && texInfo.height === img.h) {
254
+ this.gl.texSubImage2D(this.gl.TEXTURE_2D, 0, 0, 0, img.w, // But we only copy w pixels per row
255
+ img.h, this.gl.RED, this.gl.UNSIGNED_BYTE, heap, img.bitmap);
256
+ }
257
+ else {
258
+ this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.R8, img.w, img.h, 0, this.gl.RED, this.gl.UNSIGNED_BYTE, heap, img.bitmap);
259
+ texInfo.width = img.w;
260
+ texInfo.height = img.h;
261
+ }
262
+ // Reset unpack parameters
263
+ this.gl.pixelStorei(this.gl.UNPACK_ROW_LENGTH, 0);
264
+ // destRect
265
+ this.gl.uniform4f(this.u_destRect, img.dst_x, img.dst_y, img.w, img.h);
266
+ // color (RGBA from 0xRRGGBBAA)
267
+ this.gl.uniform4f(this.u_color, ((img.color >>> 24) & 0xFF) / 255, ((img.color >>> 16) & 0xFF) / 255, ((img.color >>> 8) & 0xFF) / 255, (img.color & 0xFF) / 255);
268
+ // 6 vertices for quad
269
+ this.gl.drawArrays(this.gl.TRIANGLES, 0, 6);
270
+ }
271
+ }
272
+ destroy() {
273
+ if (this.gl) {
274
+ for (const tex of this.textures) {
275
+ this.gl.deleteTexture(tex.texture);
276
+ }
277
+ this.textures = [];
278
+ if (this.vao) {
279
+ this.gl.deleteVertexArray(this.vao);
280
+ this.vao = null;
281
+ }
282
+ if (this.program) {
283
+ this.gl.deleteProgram(this.program);
284
+ this.program = null;
285
+ }
286
+ this.gl = null;
287
+ }
288
+ }
289
+ }
290
+ //# sourceMappingURL=webgl-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl-renderer.js","sourceRoot":"","sources":["../../src/worker/webgl-renderer.ts"],"names":[],"mappings":"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"}
@@ -35,16 +35,15 @@ export declare class WebGPURenderer {
35
35
  textures: TextureInfo[];
36
36
  pendingDestroyTextures: GPUTexture[];
37
37
  format: GPUTextureFormat;
38
- _ready: Promise<void>;
39
- constructor();
40
- setCanvas(canvas: OffscreenCanvas, width: number, height: number): Promise<void>;
38
+ constructor(device: GPUDevice);
39
+ setCanvas(canvas: OffscreenCanvas, width: number, height: number): void;
41
40
  /**
42
41
  * Set the color matrix for color space conversion.
43
42
  * Pass null or undefined to use identity (no conversion).
44
43
  * Matrix should be a pre-padded Float32Array with 12 values (3 columns × 4 floats each).
45
44
  */
46
- setColorMatrix(matrix?: Float32Array<ArrayBuffer>): Promise<void>;
47
- private createTextureInfo;
45
+ setColorMatrix(subtitleColorSpace?: 'BT601' | 'BT709' | 'SMPTE240M' | 'FCC', videoColorSpace?: 'BT601' | 'BT709'): void;
46
+ createTextureInfo(width: number, height: number): TextureInfo;
48
47
  render(images: ASSImage[], heap: Uint8Array): void;
49
48
  destroy(): void;
50
49
  }
@@ -157,106 +157,91 @@ export class WebGPURenderer {
157
157
  pendingDestroyTextures = [];
158
158
  // eslint-disable-next-line no-undef
159
159
  format = 'bgra8unorm';
160
- _ready;
161
- constructor() {
162
- // Start async initialization immediately
163
- this._ready = (async () => {
164
- // Check WebGPU support
165
- if (!navigator.gpu) {
166
- throw new Error('WebGPU not supported');
167
- }
168
- const adapter = await navigator.gpu.requestAdapter({
169
- powerPreference: 'high-performance'
170
- });
171
- if (!adapter) {
172
- throw new Error('No WebGPU adapter found');
173
- }
174
- this.device = await adapter.requestDevice();
175
- this.format = navigator.gpu.getPreferredCanvasFormat();
176
- // Create shader modules
177
- const vertexModule = this.device.createShaderModule({
178
- code: VERTEX_SHADER
179
- });
180
- const fragmentModule = this.device.createShaderModule({
181
- code: FRAGMENT_SHADER
182
- });
183
- // Create uniform buffer
184
- this.uniformBuffer = this.device.createBuffer({
185
- size: 16, // vec2f resolution + padding
186
- usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST
187
- });
188
- // Create color matrix buffer (mat3x3f requires 48 bytes: 3 vec3f padded to vec4f each)
189
- this.colorMatrixBuffer = this.device.createBuffer({
190
- size: 48, // 3 x vec4f (each column is vec3f padded to 16 bytes)
191
- usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST
192
- });
193
- // Initialize with identity matrix
194
- this.device.queue.writeBuffer(this.colorMatrixBuffer, 0, IDENTITY_MATRIX);
195
- // Create bind group layout (no sampler needed - using textureLoad for pixel-perfect sampling)
196
- this.bindGroupLayout = this.device.createBindGroupLayout({
197
- entries: [
198
- {
199
- binding: 0,
200
- visibility: GPUShaderStage.VERTEX,
201
- buffer: { type: 'uniform' }
202
- },
203
- {
204
- binding: 1,
205
- visibility: GPUShaderStage.VERTEX,
206
- buffer: { type: 'read-only-storage' }
207
- },
208
- {
209
- binding: 3,
210
- visibility: GPUShaderStage.FRAGMENT,
211
- texture: { sampleType: 'unfilterable-float' } // textureLoad requires unfilterable
212
- },
213
- {
214
- binding: 4,
215
- visibility: GPUShaderStage.FRAGMENT,
216
- buffer: { type: 'uniform' }
217
- }
218
- ]
219
- });
220
- // Create pipeline layout
221
- const pipelineLayout = this.device.createPipelineLayout({
222
- bindGroupLayouts: [this.bindGroupLayout]
223
- });
224
- // Create render pipeline
225
- this.pipeline = this.device.createRenderPipeline({
226
- layout: pipelineLayout,
227
- vertex: {
228
- module: vertexModule,
229
- entryPoint: 'vertexMain'
160
+ constructor(device) {
161
+ this.device = device;
162
+ this.format = navigator.gpu.getPreferredCanvasFormat();
163
+ // Create shader modules
164
+ const vertexModule = this.device.createShaderModule({
165
+ code: VERTEX_SHADER
166
+ });
167
+ const fragmentModule = this.device.createShaderModule({
168
+ code: FRAGMENT_SHADER
169
+ });
170
+ // Create uniform buffer
171
+ this.uniformBuffer = this.device.createBuffer({
172
+ size: 16, // vec2f resolution + padding
173
+ usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST
174
+ });
175
+ // Create color matrix buffer (mat3x3f requires 48 bytes: 3 vec3f padded to vec4f each)
176
+ this.colorMatrixBuffer = this.device.createBuffer({
177
+ size: 48, // 3 x vec4f (each column is vec3f padded to 16 bytes)
178
+ usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST
179
+ });
180
+ // Initialize with identity matrix
181
+ this.device.queue.writeBuffer(this.colorMatrixBuffer, 0, IDENTITY_MATRIX);
182
+ // Create bind group layout (no sampler needed - using textureLoad for pixel-perfect sampling)
183
+ this.bindGroupLayout = this.device.createBindGroupLayout({
184
+ entries: [
185
+ {
186
+ binding: 0,
187
+ visibility: GPUShaderStage.VERTEX,
188
+ buffer: { type: 'uniform' }
230
189
  },
231
- fragment: {
232
- module: fragmentModule,
233
- entryPoint: 'fragmentMain',
234
- targets: [
235
- {
236
- format: this.format,
237
- blend: {
238
- color: {
239
- srcFactor: 'one',
240
- dstFactor: 'one-minus-src-alpha',
241
- operation: 'add'
242
- },
243
- alpha: {
244
- srcFactor: 'one',
245
- dstFactor: 'one-minus-src-alpha',
246
- operation: 'add'
247
- }
248
- }
249
- }
250
- ]
190
+ {
191
+ binding: 1,
192
+ visibility: GPUShaderStage.VERTEX,
193
+ buffer: { type: 'read-only-storage' }
251
194
  },
252
- primitive: {
253
- topology: 'triangle-list'
195
+ {
196
+ binding: 3,
197
+ visibility: GPUShaderStage.FRAGMENT,
198
+ texture: { sampleType: 'unfilterable-float' } // textureLoad requires unfilterable
199
+ },
200
+ {
201
+ binding: 4,
202
+ visibility: GPUShaderStage.FRAGMENT,
203
+ buffer: { type: 'uniform' }
254
204
  }
255
- });
256
- })();
205
+ ]
206
+ });
207
+ // Create pipeline layout
208
+ const pipelineLayout = this.device.createPipelineLayout({
209
+ bindGroupLayouts: [this.bindGroupLayout]
210
+ });
211
+ // Create render pipeline
212
+ this.pipeline = this.device.createRenderPipeline({
213
+ layout: pipelineLayout,
214
+ vertex: {
215
+ module: vertexModule,
216
+ entryPoint: 'vertexMain'
217
+ },
218
+ fragment: {
219
+ module: fragmentModule,
220
+ entryPoint: 'fragmentMain',
221
+ targets: [
222
+ {
223
+ format: this.format,
224
+ blend: {
225
+ color: {
226
+ srcFactor: 'one',
227
+ dstFactor: 'one-minus-src-alpha',
228
+ operation: 'add'
229
+ },
230
+ alpha: {
231
+ srcFactor: 'one',
232
+ dstFactor: 'one-minus-src-alpha',
233
+ operation: 'add'
234
+ }
235
+ }
236
+ }
237
+ ]
238
+ },
239
+ primitive: {
240
+ topology: 'triangle-list'
241
+ }
242
+ });
257
243
  }
258
- async setCanvas(canvas, width, height) {
259
- await this._ready;
244
+ setCanvas(canvas, width, height) {
260
245
  if (!this.device)
261
246
  return;
262
247
  // WebGPU doesn't allow 0-sized textures/swapchains
@@ -284,11 +269,11 @@ export class WebGPURenderer {
284
269
  * Pass null or undefined to use identity (no conversion).
285
270
  * Matrix should be a pre-padded Float32Array with 12 values (3 columns × 4 floats each).
286
271
  */
287
- async setColorMatrix(matrix) {
288
- await this._ready;
272
+ setColorMatrix(subtitleColorSpace, videoColorSpace) {
289
273
  if (!this.device)
290
274
  return;
291
- this.device.queue.writeBuffer(this.colorMatrixBuffer, 0, matrix ?? IDENTITY_MATRIX);
275
+ const colorMatrix = (subtitleColorSpace && videoColorSpace && colorMatrixConversionMap[subtitleColorSpace]?.[videoColorSpace]) ?? IDENTITY_MATRIX;
276
+ this.device.queue.writeBuffer(this.colorMatrixBuffer, 0, colorMatrix);
292
277
  }
293
278
  createTextureInfo(width, height) {
294
279
  const texture = this.device.createTexture({
@@ -1 +1 @@
1
- {"version":3,"file":"webgpu-renderer.js","sourceRoot":"","sources":["../../src/worker/webgpu-renderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webgpu-renderer.js","sourceRoot":"","sources":["../../src/worker/webgpu-renderer.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { finalizer } from 'abslink';
2
+ import { WebGL2Renderer } from './webgl-renderer';
2
3
  import { WebGPURenderer } from './webgpu-renderer';
3
4
  import type { ASSEvent, ASSStyle } from '../jassub';
4
5
  import type { JASSUB } from '../wasm/types.js';
@@ -22,7 +23,7 @@ export declare class ASSRenderer {
22
23
  _subtitleColorSpace?: 'BT601' | 'BT709' | 'SMPTE240M' | 'FCC' | null;
23
24
  _videoColorSpace?: 'BT709' | 'BT601';
24
25
  _malloc: (size: number) => number;
25
- _gpurender: WebGPURenderer;
26
+ _gpurender?: WebGL2Renderer | WebGPURenderer;
26
27
  debug: boolean;
27
28
  useLocalFonts: boolean;
28
29
  _availableFonts: Record<string, Uint8Array | string>;
@@ -53,7 +54,7 @@ export declare class ASSRenderer {
53
54
  _allocFont(uint8: Uint8Array): void;
54
55
  _processAvailableFonts(content: string): void;
55
56
  _canvas(width: number, height: number, videoWidth: number, videoHeight: number): void;
56
- [finalizer](): void;
57
+ [finalizer](): Promise<void>;
57
58
  _draw(time: number, force?: boolean): void;
58
59
  _setColorSpace(videoColorSpace: 'RGB' | 'BT709' | 'BT601'): void;
59
60
  }