libbitsub 1.6.0 → 1.7.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.
- package/README.md +259 -233
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/ts/parsers.d.ts +18 -1
- package/dist/ts/parsers.d.ts.map +1 -1
- package/dist/ts/parsers.js +151 -0
- package/dist/ts/parsers.js.map +1 -1
- package/dist/ts/renderers.d.ts +47 -4
- package/dist/ts/renderers.d.ts.map +1 -1
- package/dist/ts/renderers.js +391 -87
- package/dist/ts/renderers.js.map +1 -1
- package/dist/ts/types.d.ts +144 -0
- package/dist/ts/types.d.ts.map +1 -1
- package/dist/ts/utils.d.ts +11 -1
- package/dist/ts/utils.d.ts.map +1 -1
- package/dist/ts/utils.js +100 -1
- package/dist/ts/utils.js.map +1 -1
- package/dist/ts/wasm.js.map +1 -1
- package/dist/ts/webgl2-renderer.d.ts +2 -1
- package/dist/ts/webgl2-renderer.d.ts.map +1 -1
- package/dist/ts/webgl2-renderer.js +10 -7
- package/dist/ts/webgl2-renderer.js.map +1 -1
- package/dist/ts/webgpu-renderer.d.ts +1 -1
- package/dist/ts/webgpu-renderer.d.ts.map +1 -1
- package/dist/ts/webgpu-renderer.js +11 -11
- package/dist/ts/webgpu-renderer.js.map +1 -1
- package/dist/ts/worker.d.ts.map +1 -1
- package/dist/ts/worker.js +145 -87
- package/dist/ts/worker.js.map +1 -1
- package/dist/wrapper.d.ts +3 -2
- package/dist/wrapper.d.ts.map +1 -1
- package/dist/wrapper.js +3 -1
- package/dist/wrapper.js.map +1 -1
- package/package.json +3 -2
- package/pkg/README.md +259 -233
- package/pkg/libbitsub.d.ts +121 -1
- package/pkg/libbitsub.js +251 -15
- package/pkg/libbitsub_bg.wasm +0 -0
- package/pkg/libbitsub_bg.wasm.d.ts +25 -1
- package/pkg/package.json +1 -1
- package/src/wrapper.ts +14 -1
package/pkg/libbitsub.d.ts
CHANGED
|
@@ -15,6 +15,26 @@ export class PgsParser {
|
|
|
15
15
|
* Find the display set index for a given timestamp in milliseconds.
|
|
16
16
|
*/
|
|
17
17
|
findIndexAtTimestamp(time_ms: number): number;
|
|
18
|
+
/**
|
|
19
|
+
* Get the number of composition objects in a cue.
|
|
20
|
+
*/
|
|
21
|
+
getCueCompositionCount(index: number): number;
|
|
22
|
+
/**
|
|
23
|
+
* Get the cue composition state.
|
|
24
|
+
*/
|
|
25
|
+
getCueCompositionState(index: number): number;
|
|
26
|
+
/**
|
|
27
|
+
* Get the cue end time in milliseconds.
|
|
28
|
+
*/
|
|
29
|
+
getCueEndTime(index: number): number;
|
|
30
|
+
/**
|
|
31
|
+
* Get the cue palette ID.
|
|
32
|
+
*/
|
|
33
|
+
getCuePaletteId(index: number): number;
|
|
34
|
+
/**
|
|
35
|
+
* Get the cue start time in milliseconds.
|
|
36
|
+
*/
|
|
37
|
+
getCueStartTime(index: number): number;
|
|
18
38
|
/**
|
|
19
39
|
* Get all timestamps in milliseconds as a Float64Array.
|
|
20
40
|
*/
|
|
@@ -37,6 +57,14 @@ export class PgsParser {
|
|
|
37
57
|
* Get the number of display sets.
|
|
38
58
|
*/
|
|
39
59
|
readonly count: number;
|
|
60
|
+
/**
|
|
61
|
+
* Get the presentation height for this subtitle track.
|
|
62
|
+
*/
|
|
63
|
+
readonly screenHeight: number;
|
|
64
|
+
/**
|
|
65
|
+
* Get the presentation width for this subtitle track.
|
|
66
|
+
*/
|
|
67
|
+
readonly screenWidth: number;
|
|
40
68
|
}
|
|
41
69
|
|
|
42
70
|
/**
|
|
@@ -142,6 +170,18 @@ export class SubtitleRenderer {
|
|
|
142
170
|
* Find the subtitle index for a given timestamp in milliseconds.
|
|
143
171
|
*/
|
|
144
172
|
findIndexAtTimestamp(time_ms: number): number;
|
|
173
|
+
/**
|
|
174
|
+
* Get the cue duration in milliseconds.
|
|
175
|
+
*/
|
|
176
|
+
getCueDuration(index: number): number;
|
|
177
|
+
/**
|
|
178
|
+
* Get the cue end time in milliseconds.
|
|
179
|
+
*/
|
|
180
|
+
getCueEndTime(index: number): number;
|
|
181
|
+
/**
|
|
182
|
+
* Get the cue start time in milliseconds.
|
|
183
|
+
*/
|
|
184
|
+
getCueStartTime(index: number): number;
|
|
145
185
|
/**
|
|
146
186
|
* Get all timestamps in milliseconds.
|
|
147
187
|
*/
|
|
@@ -179,6 +219,26 @@ export class SubtitleRenderer {
|
|
|
179
219
|
* Get the current subtitle format.
|
|
180
220
|
*/
|
|
181
221
|
readonly format: SubtitleFormat | undefined;
|
|
222
|
+
/**
|
|
223
|
+
* Check whether IDX metadata was used for VobSub.
|
|
224
|
+
*/
|
|
225
|
+
readonly hasIdxMetadata: boolean;
|
|
226
|
+
/**
|
|
227
|
+
* Get the VobSub language code if available.
|
|
228
|
+
*/
|
|
229
|
+
readonly language: string;
|
|
230
|
+
/**
|
|
231
|
+
* Get the presentation height for the loaded subtitle track.
|
|
232
|
+
*/
|
|
233
|
+
readonly screenHeight: number;
|
|
234
|
+
/**
|
|
235
|
+
* Get the presentation width for the loaded subtitle track.
|
|
236
|
+
*/
|
|
237
|
+
readonly screenWidth: number;
|
|
238
|
+
/**
|
|
239
|
+
* Get the VobSub track ID if available.
|
|
240
|
+
*/
|
|
241
|
+
readonly trackId: string;
|
|
182
242
|
}
|
|
183
243
|
|
|
184
244
|
/**
|
|
@@ -219,6 +279,22 @@ export class VobSubParser {
|
|
|
219
279
|
* Returns -1 if no subtitle should be displayed at this time.
|
|
220
280
|
*/
|
|
221
281
|
findIndexAtTimestamp(time_ms: number): number;
|
|
282
|
+
/**
|
|
283
|
+
* Get the cue duration in milliseconds.
|
|
284
|
+
*/
|
|
285
|
+
getCueDuration(index: number): number;
|
|
286
|
+
/**
|
|
287
|
+
* Get the cue end time in milliseconds.
|
|
288
|
+
*/
|
|
289
|
+
getCueEndTime(index: number): number;
|
|
290
|
+
/**
|
|
291
|
+
* Get the cue file position in the SUB file.
|
|
292
|
+
*/
|
|
293
|
+
getCueFilePosition(index: number): number;
|
|
294
|
+
/**
|
|
295
|
+
* Get the cue start time in milliseconds.
|
|
296
|
+
*/
|
|
297
|
+
getCueStartTime(index: number): number;
|
|
222
298
|
/**
|
|
223
299
|
* Get all timestamps in milliseconds as a Float64Array.
|
|
224
300
|
*/
|
|
@@ -259,6 +335,26 @@ export class VobSubParser {
|
|
|
259
335
|
* Check if debanding is enabled.
|
|
260
336
|
*/
|
|
261
337
|
readonly debandEnabled: boolean;
|
|
338
|
+
/**
|
|
339
|
+
* Check whether IDX metadata was used to load the parser.
|
|
340
|
+
*/
|
|
341
|
+
readonly hasIdxMetadata: boolean;
|
|
342
|
+
/**
|
|
343
|
+
* Get the declared language code from IDX metadata.
|
|
344
|
+
*/
|
|
345
|
+
readonly language: string;
|
|
346
|
+
/**
|
|
347
|
+
* Get the presentation height for this subtitle track.
|
|
348
|
+
*/
|
|
349
|
+
readonly screenHeight: number;
|
|
350
|
+
/**
|
|
351
|
+
* Get the presentation width for this subtitle track.
|
|
352
|
+
*/
|
|
353
|
+
readonly screenWidth: number;
|
|
354
|
+
/**
|
|
355
|
+
* Get the declared subtitle track ID from IDX metadata.
|
|
356
|
+
*/
|
|
357
|
+
readonly trackId: string;
|
|
262
358
|
}
|
|
263
359
|
|
|
264
360
|
/**
|
|
@@ -280,10 +376,17 @@ export interface InitOutput {
|
|
|
280
376
|
readonly pgsparser_clearCache: (a: number) => void;
|
|
281
377
|
readonly pgsparser_count: (a: number) => number;
|
|
282
378
|
readonly pgsparser_findIndexAtTimestamp: (a: number, b: number) => number;
|
|
379
|
+
readonly pgsparser_getCueCompositionCount: (a: number, b: number) => number;
|
|
380
|
+
readonly pgsparser_getCueCompositionState: (a: number, b: number) => number;
|
|
381
|
+
readonly pgsparser_getCueEndTime: (a: number, b: number) => number;
|
|
382
|
+
readonly pgsparser_getCuePaletteId: (a: number, b: number) => number;
|
|
383
|
+
readonly pgsparser_getCueStartTime: (a: number, b: number) => number;
|
|
283
384
|
readonly pgsparser_getTimestamps: (a: number) => any;
|
|
284
385
|
readonly pgsparser_new: () => number;
|
|
285
386
|
readonly pgsparser_parse: (a: number, b: number, c: number) => number;
|
|
286
387
|
readonly pgsparser_renderAtIndex: (a: number, b: number) => number;
|
|
388
|
+
readonly pgsparser_screenHeight: (a: number) => number;
|
|
389
|
+
readonly pgsparser_screenWidth: (a: number) => number;
|
|
287
390
|
readonly renderresult_compositionCount: (a: number) => number;
|
|
288
391
|
readonly renderresult_getCompositionHeight: (a: number, b: number) => number;
|
|
289
392
|
readonly renderresult_getCompositionRgba: (a: number, b: number) => any;
|
|
@@ -303,13 +406,21 @@ export interface InitOutput {
|
|
|
303
406
|
readonly subtitlerenderer_dispose: (a: number) => void;
|
|
304
407
|
readonly subtitlerenderer_findIndexAtTimestamp: (a: number, b: number) => number;
|
|
305
408
|
readonly subtitlerenderer_format: (a: number) => number;
|
|
409
|
+
readonly subtitlerenderer_getCueDuration: (a: number, b: number) => number;
|
|
410
|
+
readonly subtitlerenderer_getCueEndTime: (a: number, b: number) => number;
|
|
411
|
+
readonly subtitlerenderer_getCueStartTime: (a: number, b: number) => number;
|
|
306
412
|
readonly subtitlerenderer_getTimestamps: (a: number) => any;
|
|
413
|
+
readonly subtitlerenderer_hasIdxMetadata: (a: number) => number;
|
|
414
|
+
readonly subtitlerenderer_language: (a: number) => [number, number];
|
|
307
415
|
readonly subtitlerenderer_loadPgs: (a: number, b: number, c: number) => number;
|
|
308
416
|
readonly subtitlerenderer_loadVobSub: (a: number, b: number, c: number, d: number, e: number) => void;
|
|
309
417
|
readonly subtitlerenderer_loadVobSubOnly: (a: number, b: number, c: number) => void;
|
|
310
418
|
readonly subtitlerenderer_new: () => number;
|
|
311
419
|
readonly subtitlerenderer_renderAtIndex: (a: number, b: number) => number;
|
|
312
420
|
readonly subtitlerenderer_renderAtTimestamp: (a: number, b: number) => number;
|
|
421
|
+
readonly subtitlerenderer_screenHeight: (a: number) => number;
|
|
422
|
+
readonly subtitlerenderer_screenWidth: (a: number) => number;
|
|
423
|
+
readonly subtitlerenderer_trackId: (a: number) => [number, number];
|
|
313
424
|
readonly vobsubframe_getRgba: (a: number) => any;
|
|
314
425
|
readonly vobsubframe_height: (a: number) => number;
|
|
315
426
|
readonly vobsubframe_screenHeight: (a: number) => number;
|
|
@@ -322,17 +433,26 @@ export interface InitOutput {
|
|
|
322
433
|
readonly vobsubparser_debandEnabled: (a: number) => number;
|
|
323
434
|
readonly vobsubparser_dispose: (a: number) => void;
|
|
324
435
|
readonly vobsubparser_findIndexAtTimestamp: (a: number, b: number) => number;
|
|
436
|
+
readonly vobsubparser_getCueDuration: (a: number, b: number) => number;
|
|
437
|
+
readonly vobsubparser_getCueEndTime: (a: number, b: number) => number;
|
|
438
|
+
readonly vobsubparser_getCueFilePosition: (a: number, b: number) => number;
|
|
439
|
+
readonly vobsubparser_getCueStartTime: (a: number, b: number) => number;
|
|
325
440
|
readonly vobsubparser_getTimestamps: (a: number) => any;
|
|
441
|
+
readonly vobsubparser_hasIdxMetadata: (a: number) => number;
|
|
442
|
+
readonly vobsubparser_language: (a: number) => [number, number];
|
|
326
443
|
readonly vobsubparser_loadFromData: (a: number, b: number, c: number, d: number, e: number) => void;
|
|
327
444
|
readonly vobsubparser_loadFromSubOnly: (a: number, b: number, c: number) => void;
|
|
328
445
|
readonly vobsubparser_new: () => number;
|
|
329
446
|
readonly vobsubparser_renderAtIndex: (a: number, b: number) => number;
|
|
447
|
+
readonly vobsubparser_screenHeight: (a: number) => number;
|
|
448
|
+
readonly vobsubparser_screenWidth: (a: number) => number;
|
|
330
449
|
readonly vobsubparser_setDebandEnabled: (a: number, b: number) => void;
|
|
331
450
|
readonly vobsubparser_setDebandRange: (a: number, b: number) => void;
|
|
332
451
|
readonly vobsubparser_setDebandThreshold: (a: number, b: number) => void;
|
|
452
|
+
readonly vobsubparser_trackId: (a: number) => [number, number];
|
|
333
453
|
readonly __wbg_subtitleframe_free: (a: number, b: number) => void;
|
|
334
|
-
readonly subtitleframe_height: (a: number) => number;
|
|
335
454
|
readonly subtitleframe_width: (a: number) => number;
|
|
455
|
+
readonly subtitleframe_height: (a: number) => number;
|
|
336
456
|
readonly subtitleframe_compositionCount: (a: number) => number;
|
|
337
457
|
readonly __wbindgen_free: (a: number, b: number, c: number) => void;
|
|
338
458
|
readonly __wbindgen_malloc: (a: number, b: number) => number;
|
package/pkg/libbitsub.js
CHANGED
|
@@ -37,6 +37,51 @@ export class PgsParser {
|
|
|
37
37
|
const ret = wasm.pgsparser_findIndexAtTimestamp(this.__wbg_ptr, time_ms);
|
|
38
38
|
return ret;
|
|
39
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Get the number of composition objects in a cue.
|
|
42
|
+
* @param {number} index
|
|
43
|
+
* @returns {number}
|
|
44
|
+
*/
|
|
45
|
+
getCueCompositionCount(index) {
|
|
46
|
+
const ret = wasm.pgsparser_getCueCompositionCount(this.__wbg_ptr, index);
|
|
47
|
+
return ret >>> 0;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get the cue composition state.
|
|
51
|
+
* @param {number} index
|
|
52
|
+
* @returns {number}
|
|
53
|
+
*/
|
|
54
|
+
getCueCompositionState(index) {
|
|
55
|
+
const ret = wasm.pgsparser_getCueCompositionState(this.__wbg_ptr, index);
|
|
56
|
+
return ret;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get the cue end time in milliseconds.
|
|
60
|
+
* @param {number} index
|
|
61
|
+
* @returns {number}
|
|
62
|
+
*/
|
|
63
|
+
getCueEndTime(index) {
|
|
64
|
+
const ret = wasm.pgsparser_getCueEndTime(this.__wbg_ptr, index);
|
|
65
|
+
return ret;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Get the cue palette ID.
|
|
69
|
+
* @param {number} index
|
|
70
|
+
* @returns {number}
|
|
71
|
+
*/
|
|
72
|
+
getCuePaletteId(index) {
|
|
73
|
+
const ret = wasm.pgsparser_getCuePaletteId(this.__wbg_ptr, index);
|
|
74
|
+
return ret;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Get the cue start time in milliseconds.
|
|
78
|
+
* @param {number} index
|
|
79
|
+
* @returns {number}
|
|
80
|
+
*/
|
|
81
|
+
getCueStartTime(index) {
|
|
82
|
+
const ret = wasm.pgsparser_getCueStartTime(this.__wbg_ptr, index);
|
|
83
|
+
return ret;
|
|
84
|
+
}
|
|
40
85
|
/**
|
|
41
86
|
* Get all timestamps in milliseconds as a Float64Array.
|
|
42
87
|
* @returns {Float64Array}
|
|
@@ -76,6 +121,22 @@ export class PgsParser {
|
|
|
76
121
|
const ret = wasm.pgsparser_renderAtIndex(this.__wbg_ptr, index);
|
|
77
122
|
return ret === 0 ? undefined : SubtitleFrame.__wrap(ret);
|
|
78
123
|
}
|
|
124
|
+
/**
|
|
125
|
+
* Get the presentation height for this subtitle track.
|
|
126
|
+
* @returns {number}
|
|
127
|
+
*/
|
|
128
|
+
get screenHeight() {
|
|
129
|
+
const ret = wasm.pgsparser_screenHeight(this.__wbg_ptr);
|
|
130
|
+
return ret;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get the presentation width for this subtitle track.
|
|
134
|
+
* @returns {number}
|
|
135
|
+
*/
|
|
136
|
+
get screenWidth() {
|
|
137
|
+
const ret = wasm.pgsparser_screenWidth(this.__wbg_ptr);
|
|
138
|
+
return ret;
|
|
139
|
+
}
|
|
79
140
|
}
|
|
80
141
|
if (Symbol.dispose) PgsParser.prototype[Symbol.dispose] = PgsParser.prototype.free;
|
|
81
142
|
|
|
@@ -271,7 +332,7 @@ export class SubtitleFrame {
|
|
|
271
332
|
* @returns {number}
|
|
272
333
|
*/
|
|
273
334
|
get compositionCount() {
|
|
274
|
-
const ret = wasm.
|
|
335
|
+
const ret = wasm.subtitleframe_compositionCount(this.__wbg_ptr);
|
|
275
336
|
return ret >>> 0;
|
|
276
337
|
}
|
|
277
338
|
/**
|
|
@@ -287,14 +348,14 @@ export class SubtitleFrame {
|
|
|
287
348
|
* @returns {number}
|
|
288
349
|
*/
|
|
289
350
|
get height() {
|
|
290
|
-
const ret = wasm.
|
|
351
|
+
const ret = wasm.subtitleframe_height(this.__wbg_ptr);
|
|
291
352
|
return ret;
|
|
292
353
|
}
|
|
293
354
|
/**
|
|
294
355
|
* @returns {number}
|
|
295
356
|
*/
|
|
296
357
|
get width() {
|
|
297
|
-
const ret = wasm.
|
|
358
|
+
const ret = wasm.subtitleframe_width(this.__wbg_ptr);
|
|
298
359
|
return ret;
|
|
299
360
|
}
|
|
300
361
|
}
|
|
@@ -351,6 +412,33 @@ export class SubtitleRenderer {
|
|
|
351
412
|
const ret = wasm.subtitlerenderer_format(this.__wbg_ptr);
|
|
352
413
|
return ret === 2 ? undefined : ret;
|
|
353
414
|
}
|
|
415
|
+
/**
|
|
416
|
+
* Get the cue duration in milliseconds.
|
|
417
|
+
* @param {number} index
|
|
418
|
+
* @returns {number}
|
|
419
|
+
*/
|
|
420
|
+
getCueDuration(index) {
|
|
421
|
+
const ret = wasm.subtitlerenderer_getCueDuration(this.__wbg_ptr, index);
|
|
422
|
+
return ret;
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
425
|
+
* Get the cue end time in milliseconds.
|
|
426
|
+
* @param {number} index
|
|
427
|
+
* @returns {number}
|
|
428
|
+
*/
|
|
429
|
+
getCueEndTime(index) {
|
|
430
|
+
const ret = wasm.subtitlerenderer_getCueEndTime(this.__wbg_ptr, index);
|
|
431
|
+
return ret;
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* Get the cue start time in milliseconds.
|
|
435
|
+
* @param {number} index
|
|
436
|
+
* @returns {number}
|
|
437
|
+
*/
|
|
438
|
+
getCueStartTime(index) {
|
|
439
|
+
const ret = wasm.subtitlerenderer_getCueStartTime(this.__wbg_ptr, index);
|
|
440
|
+
return ret;
|
|
441
|
+
}
|
|
354
442
|
/**
|
|
355
443
|
* Get all timestamps in milliseconds.
|
|
356
444
|
* @returns {Float64Array}
|
|
@@ -359,6 +447,30 @@ export class SubtitleRenderer {
|
|
|
359
447
|
const ret = wasm.subtitlerenderer_getTimestamps(this.__wbg_ptr);
|
|
360
448
|
return ret;
|
|
361
449
|
}
|
|
450
|
+
/**
|
|
451
|
+
* Check whether IDX metadata was used for VobSub.
|
|
452
|
+
* @returns {boolean}
|
|
453
|
+
*/
|
|
454
|
+
get hasIdxMetadata() {
|
|
455
|
+
const ret = wasm.subtitlerenderer_hasIdxMetadata(this.__wbg_ptr);
|
|
456
|
+
return ret !== 0;
|
|
457
|
+
}
|
|
458
|
+
/**
|
|
459
|
+
* Get the VobSub language code if available.
|
|
460
|
+
* @returns {string}
|
|
461
|
+
*/
|
|
462
|
+
get language() {
|
|
463
|
+
let deferred1_0;
|
|
464
|
+
let deferred1_1;
|
|
465
|
+
try {
|
|
466
|
+
const ret = wasm.subtitlerenderer_language(this.__wbg_ptr);
|
|
467
|
+
deferred1_0 = ret[0];
|
|
468
|
+
deferred1_1 = ret[1];
|
|
469
|
+
return getStringFromWasm0(ret[0], ret[1]);
|
|
470
|
+
} finally {
|
|
471
|
+
wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
|
|
472
|
+
}
|
|
473
|
+
}
|
|
362
474
|
/**
|
|
363
475
|
* Load PGS subtitle data.
|
|
364
476
|
* @param {Uint8Array} data
|
|
@@ -419,6 +531,38 @@ export class SubtitleRenderer {
|
|
|
419
531
|
const ret = wasm.subtitlerenderer_renderAtTimestamp(this.__wbg_ptr, time_seconds);
|
|
420
532
|
return ret === 0 ? undefined : RenderResult.__wrap(ret);
|
|
421
533
|
}
|
|
534
|
+
/**
|
|
535
|
+
* Get the presentation height for the loaded subtitle track.
|
|
536
|
+
* @returns {number}
|
|
537
|
+
*/
|
|
538
|
+
get screenHeight() {
|
|
539
|
+
const ret = wasm.subtitlerenderer_screenHeight(this.__wbg_ptr);
|
|
540
|
+
return ret;
|
|
541
|
+
}
|
|
542
|
+
/**
|
|
543
|
+
* Get the presentation width for the loaded subtitle track.
|
|
544
|
+
* @returns {number}
|
|
545
|
+
*/
|
|
546
|
+
get screenWidth() {
|
|
547
|
+
const ret = wasm.subtitlerenderer_screenWidth(this.__wbg_ptr);
|
|
548
|
+
return ret;
|
|
549
|
+
}
|
|
550
|
+
/**
|
|
551
|
+
* Get the VobSub track ID if available.
|
|
552
|
+
* @returns {string}
|
|
553
|
+
*/
|
|
554
|
+
get trackId() {
|
|
555
|
+
let deferred1_0;
|
|
556
|
+
let deferred1_1;
|
|
557
|
+
try {
|
|
558
|
+
const ret = wasm.subtitlerenderer_trackId(this.__wbg_ptr);
|
|
559
|
+
deferred1_0 = ret[0];
|
|
560
|
+
deferred1_1 = ret[1];
|
|
561
|
+
return getStringFromWasm0(ret[0], ret[1]);
|
|
562
|
+
} finally {
|
|
563
|
+
wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
|
|
564
|
+
}
|
|
565
|
+
}
|
|
422
566
|
}
|
|
423
567
|
if (Symbol.dispose) SubtitleRenderer.prototype[Symbol.dispose] = SubtitleRenderer.prototype.free;
|
|
424
568
|
|
|
@@ -548,6 +692,42 @@ export class VobSubParser {
|
|
|
548
692
|
const ret = wasm.vobsubparser_findIndexAtTimestamp(this.__wbg_ptr, time_ms);
|
|
549
693
|
return ret;
|
|
550
694
|
}
|
|
695
|
+
/**
|
|
696
|
+
* Get the cue duration in milliseconds.
|
|
697
|
+
* @param {number} index
|
|
698
|
+
* @returns {number}
|
|
699
|
+
*/
|
|
700
|
+
getCueDuration(index) {
|
|
701
|
+
const ret = wasm.vobsubparser_getCueDuration(this.__wbg_ptr, index);
|
|
702
|
+
return ret;
|
|
703
|
+
}
|
|
704
|
+
/**
|
|
705
|
+
* Get the cue end time in milliseconds.
|
|
706
|
+
* @param {number} index
|
|
707
|
+
* @returns {number}
|
|
708
|
+
*/
|
|
709
|
+
getCueEndTime(index) {
|
|
710
|
+
const ret = wasm.vobsubparser_getCueEndTime(this.__wbg_ptr, index);
|
|
711
|
+
return ret;
|
|
712
|
+
}
|
|
713
|
+
/**
|
|
714
|
+
* Get the cue file position in the SUB file.
|
|
715
|
+
* @param {number} index
|
|
716
|
+
* @returns {number}
|
|
717
|
+
*/
|
|
718
|
+
getCueFilePosition(index) {
|
|
719
|
+
const ret = wasm.vobsubparser_getCueFilePosition(this.__wbg_ptr, index);
|
|
720
|
+
return ret;
|
|
721
|
+
}
|
|
722
|
+
/**
|
|
723
|
+
* Get the cue start time in milliseconds.
|
|
724
|
+
* @param {number} index
|
|
725
|
+
* @returns {number}
|
|
726
|
+
*/
|
|
727
|
+
getCueStartTime(index) {
|
|
728
|
+
const ret = wasm.vobsubparser_getCueStartTime(this.__wbg_ptr, index);
|
|
729
|
+
return ret;
|
|
730
|
+
}
|
|
551
731
|
/**
|
|
552
732
|
* Get all timestamps in milliseconds as a Float64Array.
|
|
553
733
|
* @returns {Float64Array}
|
|
@@ -556,6 +736,30 @@ export class VobSubParser {
|
|
|
556
736
|
const ret = wasm.vobsubparser_getTimestamps(this.__wbg_ptr);
|
|
557
737
|
return ret;
|
|
558
738
|
}
|
|
739
|
+
/**
|
|
740
|
+
* Check whether IDX metadata was used to load the parser.
|
|
741
|
+
* @returns {boolean}
|
|
742
|
+
*/
|
|
743
|
+
get hasIdxMetadata() {
|
|
744
|
+
const ret = wasm.vobsubparser_hasIdxMetadata(this.__wbg_ptr);
|
|
745
|
+
return ret !== 0;
|
|
746
|
+
}
|
|
747
|
+
/**
|
|
748
|
+
* Get the declared language code from IDX metadata.
|
|
749
|
+
* @returns {string}
|
|
750
|
+
*/
|
|
751
|
+
get language() {
|
|
752
|
+
let deferred1_0;
|
|
753
|
+
let deferred1_1;
|
|
754
|
+
try {
|
|
755
|
+
const ret = wasm.vobsubparser_language(this.__wbg_ptr);
|
|
756
|
+
deferred1_0 = ret[0];
|
|
757
|
+
deferred1_1 = ret[1];
|
|
758
|
+
return getStringFromWasm0(ret[0], ret[1]);
|
|
759
|
+
} finally {
|
|
760
|
+
wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
|
|
761
|
+
}
|
|
762
|
+
}
|
|
559
763
|
/**
|
|
560
764
|
* Load VobSub from IDX content and SUB data.
|
|
561
765
|
* @param {string} idx_content
|
|
@@ -595,6 +799,22 @@ export class VobSubParser {
|
|
|
595
799
|
const ret = wasm.vobsubparser_renderAtIndex(this.__wbg_ptr, index);
|
|
596
800
|
return ret === 0 ? undefined : VobSubFrame.__wrap(ret);
|
|
597
801
|
}
|
|
802
|
+
/**
|
|
803
|
+
* Get the presentation height for this subtitle track.
|
|
804
|
+
* @returns {number}
|
|
805
|
+
*/
|
|
806
|
+
get screenHeight() {
|
|
807
|
+
const ret = wasm.vobsubparser_screenHeight(this.__wbg_ptr);
|
|
808
|
+
return ret;
|
|
809
|
+
}
|
|
810
|
+
/**
|
|
811
|
+
* Get the presentation width for this subtitle track.
|
|
812
|
+
* @returns {number}
|
|
813
|
+
*/
|
|
814
|
+
get screenWidth() {
|
|
815
|
+
const ret = wasm.vobsubparser_screenWidth(this.__wbg_ptr);
|
|
816
|
+
return ret;
|
|
817
|
+
}
|
|
598
818
|
/**
|
|
599
819
|
* Enable or disable debanding.
|
|
600
820
|
* @param {boolean} enabled
|
|
@@ -616,6 +836,22 @@ export class VobSubParser {
|
|
|
616
836
|
setDebandThreshold(threshold) {
|
|
617
837
|
wasm.vobsubparser_setDebandThreshold(this.__wbg_ptr, threshold);
|
|
618
838
|
}
|
|
839
|
+
/**
|
|
840
|
+
* Get the declared subtitle track ID from IDX metadata.
|
|
841
|
+
* @returns {string}
|
|
842
|
+
*/
|
|
843
|
+
get trackId() {
|
|
844
|
+
let deferred1_0;
|
|
845
|
+
let deferred1_1;
|
|
846
|
+
try {
|
|
847
|
+
const ret = wasm.vobsubparser_trackId(this.__wbg_ptr);
|
|
848
|
+
deferred1_0 = ret[0];
|
|
849
|
+
deferred1_1 = ret[1];
|
|
850
|
+
return getStringFromWasm0(ret[0], ret[1]);
|
|
851
|
+
} finally {
|
|
852
|
+
wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
|
|
853
|
+
}
|
|
854
|
+
}
|
|
619
855
|
}
|
|
620
856
|
if (Symbol.dispose) VobSubParser.prototype[Symbol.dispose] = VobSubParser.prototype.free;
|
|
621
857
|
|
|
@@ -629,10 +865,10 @@ export function init() {
|
|
|
629
865
|
function __wbg_get_imports() {
|
|
630
866
|
const import0 = {
|
|
631
867
|
__proto__: null,
|
|
632
|
-
|
|
868
|
+
__wbg___wbindgen_throw_df03e93053e0f4bc: function(arg0, arg1) {
|
|
633
869
|
throw new Error(getStringFromWasm0(arg0, arg1));
|
|
634
870
|
},
|
|
635
|
-
|
|
871
|
+
__wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) {
|
|
636
872
|
let deferred0_0;
|
|
637
873
|
let deferred0_1;
|
|
638
874
|
try {
|
|
@@ -643,33 +879,33 @@ function __wbg_get_imports() {
|
|
|
643
879
|
wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);
|
|
644
880
|
}
|
|
645
881
|
},
|
|
646
|
-
|
|
882
|
+
__wbg_length_5e07cf181b2745fb: function(arg0) {
|
|
647
883
|
const ret = arg0.length;
|
|
648
884
|
return ret;
|
|
649
885
|
},
|
|
650
|
-
|
|
886
|
+
__wbg_new_227d7c05414eb861: function() {
|
|
651
887
|
const ret = new Error();
|
|
652
888
|
return ret;
|
|
653
889
|
},
|
|
654
|
-
|
|
890
|
+
__wbg_new_from_slice_e98c2bb0a59c32a0: function(arg0, arg1) {
|
|
655
891
|
const ret = new Uint8Array(getArrayU8FromWasm0(arg0, arg1));
|
|
656
892
|
return ret;
|
|
657
893
|
},
|
|
658
|
-
|
|
659
|
-
const ret = new
|
|
894
|
+
__wbg_new_with_length_9b57e4a9683723fa: function(arg0) {
|
|
895
|
+
const ret = new Uint8Array(arg0 >>> 0);
|
|
660
896
|
return ret;
|
|
661
897
|
},
|
|
662
|
-
|
|
663
|
-
const ret = new
|
|
898
|
+
__wbg_new_with_length_fbe257d20500214d: function(arg0) {
|
|
899
|
+
const ret = new Float64Array(arg0 >>> 0);
|
|
664
900
|
return ret;
|
|
665
901
|
},
|
|
666
|
-
|
|
902
|
+
__wbg_prototypesetcall_d1a7133bc8d83aa9: function(arg0, arg1, arg2) {
|
|
667
903
|
Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);
|
|
668
904
|
},
|
|
669
|
-
|
|
905
|
+
__wbg_set_index_0a7915ae2e548e40: function(arg0, arg1, arg2) {
|
|
670
906
|
arg0[arg1 >>> 0] = arg2;
|
|
671
907
|
},
|
|
672
|
-
|
|
908
|
+
__wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) {
|
|
673
909
|
const ret = arg1.stack;
|
|
674
910
|
const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
675
911
|
const len1 = WASM_VECTOR_LEN;
|
package/pkg/libbitsub_bg.wasm
CHANGED
|
Binary file
|
|
@@ -11,10 +11,17 @@ export const init: () => void;
|
|
|
11
11
|
export const pgsparser_clearCache: (a: number) => void;
|
|
12
12
|
export const pgsparser_count: (a: number) => number;
|
|
13
13
|
export const pgsparser_findIndexAtTimestamp: (a: number, b: number) => number;
|
|
14
|
+
export const pgsparser_getCueCompositionCount: (a: number, b: number) => number;
|
|
15
|
+
export const pgsparser_getCueCompositionState: (a: number, b: number) => number;
|
|
16
|
+
export const pgsparser_getCueEndTime: (a: number, b: number) => number;
|
|
17
|
+
export const pgsparser_getCuePaletteId: (a: number, b: number) => number;
|
|
18
|
+
export const pgsparser_getCueStartTime: (a: number, b: number) => number;
|
|
14
19
|
export const pgsparser_getTimestamps: (a: number) => any;
|
|
15
20
|
export const pgsparser_new: () => number;
|
|
16
21
|
export const pgsparser_parse: (a: number, b: number, c: number) => number;
|
|
17
22
|
export const pgsparser_renderAtIndex: (a: number, b: number) => number;
|
|
23
|
+
export const pgsparser_screenHeight: (a: number) => number;
|
|
24
|
+
export const pgsparser_screenWidth: (a: number) => number;
|
|
18
25
|
export const renderresult_compositionCount: (a: number) => number;
|
|
19
26
|
export const renderresult_getCompositionHeight: (a: number, b: number) => number;
|
|
20
27
|
export const renderresult_getCompositionRgba: (a: number, b: number) => any;
|
|
@@ -34,13 +41,21 @@ export const subtitlerenderer_count: (a: number) => number;
|
|
|
34
41
|
export const subtitlerenderer_dispose: (a: number) => void;
|
|
35
42
|
export const subtitlerenderer_findIndexAtTimestamp: (a: number, b: number) => number;
|
|
36
43
|
export const subtitlerenderer_format: (a: number) => number;
|
|
44
|
+
export const subtitlerenderer_getCueDuration: (a: number, b: number) => number;
|
|
45
|
+
export const subtitlerenderer_getCueEndTime: (a: number, b: number) => number;
|
|
46
|
+
export const subtitlerenderer_getCueStartTime: (a: number, b: number) => number;
|
|
37
47
|
export const subtitlerenderer_getTimestamps: (a: number) => any;
|
|
48
|
+
export const subtitlerenderer_hasIdxMetadata: (a: number) => number;
|
|
49
|
+
export const subtitlerenderer_language: (a: number) => [number, number];
|
|
38
50
|
export const subtitlerenderer_loadPgs: (a: number, b: number, c: number) => number;
|
|
39
51
|
export const subtitlerenderer_loadVobSub: (a: number, b: number, c: number, d: number, e: number) => void;
|
|
40
52
|
export const subtitlerenderer_loadVobSubOnly: (a: number, b: number, c: number) => void;
|
|
41
53
|
export const subtitlerenderer_new: () => number;
|
|
42
54
|
export const subtitlerenderer_renderAtIndex: (a: number, b: number) => number;
|
|
43
55
|
export const subtitlerenderer_renderAtTimestamp: (a: number, b: number) => number;
|
|
56
|
+
export const subtitlerenderer_screenHeight: (a: number) => number;
|
|
57
|
+
export const subtitlerenderer_screenWidth: (a: number) => number;
|
|
58
|
+
export const subtitlerenderer_trackId: (a: number) => [number, number];
|
|
44
59
|
export const vobsubframe_getRgba: (a: number) => any;
|
|
45
60
|
export const vobsubframe_height: (a: number) => number;
|
|
46
61
|
export const vobsubframe_screenHeight: (a: number) => number;
|
|
@@ -53,17 +68,26 @@ export const vobsubparser_count: (a: number) => number;
|
|
|
53
68
|
export const vobsubparser_debandEnabled: (a: number) => number;
|
|
54
69
|
export const vobsubparser_dispose: (a: number) => void;
|
|
55
70
|
export const vobsubparser_findIndexAtTimestamp: (a: number, b: number) => number;
|
|
71
|
+
export const vobsubparser_getCueDuration: (a: number, b: number) => number;
|
|
72
|
+
export const vobsubparser_getCueEndTime: (a: number, b: number) => number;
|
|
73
|
+
export const vobsubparser_getCueFilePosition: (a: number, b: number) => number;
|
|
74
|
+
export const vobsubparser_getCueStartTime: (a: number, b: number) => number;
|
|
56
75
|
export const vobsubparser_getTimestamps: (a: number) => any;
|
|
76
|
+
export const vobsubparser_hasIdxMetadata: (a: number) => number;
|
|
77
|
+
export const vobsubparser_language: (a: number) => [number, number];
|
|
57
78
|
export const vobsubparser_loadFromData: (a: number, b: number, c: number, d: number, e: number) => void;
|
|
58
79
|
export const vobsubparser_loadFromSubOnly: (a: number, b: number, c: number) => void;
|
|
59
80
|
export const vobsubparser_new: () => number;
|
|
60
81
|
export const vobsubparser_renderAtIndex: (a: number, b: number) => number;
|
|
82
|
+
export const vobsubparser_screenHeight: (a: number) => number;
|
|
83
|
+
export const vobsubparser_screenWidth: (a: number) => number;
|
|
61
84
|
export const vobsubparser_setDebandEnabled: (a: number, b: number) => void;
|
|
62
85
|
export const vobsubparser_setDebandRange: (a: number, b: number) => void;
|
|
63
86
|
export const vobsubparser_setDebandThreshold: (a: number, b: number) => void;
|
|
87
|
+
export const vobsubparser_trackId: (a: number) => [number, number];
|
|
64
88
|
export const __wbg_subtitleframe_free: (a: number, b: number) => void;
|
|
65
|
-
export const subtitleframe_height: (a: number) => number;
|
|
66
89
|
export const subtitleframe_width: (a: number) => number;
|
|
90
|
+
export const subtitleframe_height: (a: number) => number;
|
|
67
91
|
export const subtitleframe_compositionCount: (a: number) => number;
|
|
68
92
|
export const __wbindgen_free: (a: number, b: number, c: number) => void;
|
|
69
93
|
export const __wbindgen_malloc: (a: number, b: number) => number;
|
package/pkg/package.json
CHANGED
package/src/wrapper.ts
CHANGED
|
@@ -5,9 +5,19 @@
|
|
|
5
5
|
|
|
6
6
|
// Re-export all types
|
|
7
7
|
export type {
|
|
8
|
+
AutoSubtitleSource,
|
|
9
|
+
AutoVideoSubtitleOptions,
|
|
10
|
+
SubtitleCueBounds,
|
|
11
|
+
SubtitleCueMetadata,
|
|
8
12
|
SubtitleData,
|
|
9
13
|
SubtitleCompositionData,
|
|
10
14
|
SubtitleDisplaySettings,
|
|
15
|
+
SubtitleFormatName,
|
|
16
|
+
SubtitleHorizontalAlign,
|
|
17
|
+
SubtitleParserMetadata,
|
|
18
|
+
SubtitleRendererBackend,
|
|
19
|
+
SubtitleRendererEvent,
|
|
20
|
+
SubtitleRendererStatsSnapshot,
|
|
11
21
|
VideoSubtitleOptions,
|
|
12
22
|
VideoVobSubOptions,
|
|
13
23
|
RenderResult,
|
|
@@ -25,7 +35,10 @@ export { isWebGPUSupported } from './ts/webgpu-renderer'
|
|
|
25
35
|
export { PgsParser, VobSubParserLowLevel, UnifiedSubtitleParser } from './ts/parsers'
|
|
26
36
|
|
|
27
37
|
// Re-export renderers
|
|
28
|
-
export { PgsRenderer, VobSubRenderer, type SubtitleRendererStats } from './ts/renderers'
|
|
38
|
+
export { PgsRenderer, VobSubRenderer, createAutoSubtitleRenderer, type SubtitleRendererStats } from './ts/renderers'
|
|
39
|
+
|
|
40
|
+
// Re-export format detection utilities
|
|
41
|
+
export { detectSubtitleFormat } from './ts/utils'
|
|
29
42
|
|
|
30
43
|
// =============================================================================
|
|
31
44
|
// Legacy Aliases (for backward compatibility)
|