libbitsub 1.6.0 → 1.7.1

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 (43) hide show
  1. package/README.md +407 -378
  2. package/dist/index.d.ts +2 -2
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +2 -2
  5. package/dist/index.js.map +1 -1
  6. package/dist/ts/parsers.d.ts +18 -1
  7. package/dist/ts/parsers.d.ts.map +1 -1
  8. package/dist/ts/parsers.js +151 -0
  9. package/dist/ts/parsers.js.map +1 -1
  10. package/dist/ts/renderers.d.ts +47 -4
  11. package/dist/ts/renderers.d.ts.map +1 -1
  12. package/dist/ts/renderers.js +391 -87
  13. package/dist/ts/renderers.js.map +1 -1
  14. package/dist/ts/types.d.ts +144 -0
  15. package/dist/ts/types.d.ts.map +1 -1
  16. package/dist/ts/utils.d.ts +11 -1
  17. package/dist/ts/utils.d.ts.map +1 -1
  18. package/dist/ts/utils.js +100 -1
  19. package/dist/ts/utils.js.map +1 -1
  20. package/dist/ts/wasm.js.map +1 -1
  21. package/dist/ts/webgl2-renderer.d.ts +2 -1
  22. package/dist/ts/webgl2-renderer.d.ts.map +1 -1
  23. package/dist/ts/webgl2-renderer.js +10 -7
  24. package/dist/ts/webgl2-renderer.js.map +1 -1
  25. package/dist/ts/webgpu-renderer.d.ts +4 -1
  26. package/dist/ts/webgpu-renderer.d.ts.map +1 -1
  27. package/dist/ts/webgpu-renderer.js +82 -32
  28. package/dist/ts/webgpu-renderer.js.map +1 -1
  29. package/dist/ts/worker.d.ts.map +1 -1
  30. package/dist/ts/worker.js +145 -87
  31. package/dist/ts/worker.js.map +1 -1
  32. package/dist/wrapper.d.ts +3 -2
  33. package/dist/wrapper.d.ts.map +1 -1
  34. package/dist/wrapper.js +3 -1
  35. package/dist/wrapper.js.map +1 -1
  36. package/package.json +3 -2
  37. package/pkg/README.md +407 -378
  38. package/pkg/libbitsub.d.ts +121 -1
  39. package/pkg/libbitsub.js +251 -15
  40. package/pkg/libbitsub_bg.wasm +0 -0
  41. package/pkg/libbitsub_bg.wasm.d.ts +25 -1
  42. package/pkg/package.json +1 -1
  43. package/src/wrapper.ts +14 -1
@@ -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.renderresult_compositionCount(this.__wbg_ptr);
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.renderresult_screenHeight(this.__wbg_ptr);
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.renderresult_screenWidth(this.__wbg_ptr);
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
- __wbg___wbindgen_throw_be289d5034ed271b: function(arg0, arg1) {
868
+ __wbg___wbindgen_throw_6ddd609b62940d55: function(arg0, arg1) {
633
869
  throw new Error(getStringFromWasm0(arg0, arg1));
634
870
  },
635
- __wbg_error_7534b8e9a36f1ab4: function(arg0, arg1) {
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
- __wbg_length_32ed9a279acd054c: function(arg0) {
882
+ __wbg_length_ea16607d7b61445b: function(arg0) {
647
883
  const ret = arg0.length;
648
884
  return ret;
649
885
  },
650
- __wbg_new_8a6f238a6ece86ea: function() {
886
+ __wbg_new_227d7c05414eb861: function() {
651
887
  const ret = new Error();
652
888
  return ret;
653
889
  },
654
- __wbg_new_from_slice_a3d2629dc1826784: function(arg0, arg1) {
890
+ __wbg_new_from_slice_22da9388ac046e50: function(arg0, arg1) {
655
891
  const ret = new Uint8Array(getArrayU8FromWasm0(arg0, arg1));
656
892
  return ret;
657
893
  },
658
- __wbg_new_with_length_6523745c0bd32809: function(arg0) {
659
- const ret = new Float64Array(arg0 >>> 0);
894
+ __wbg_new_with_length_825018a1616e9e55: function(arg0) {
895
+ const ret = new Uint8Array(arg0 >>> 0);
660
896
  return ret;
661
897
  },
662
- __wbg_new_with_length_a2c39cbe88fd8ff1: function(arg0) {
663
- const ret = new Uint8Array(arg0 >>> 0);
898
+ __wbg_new_with_length_eae667475c36c4e4: function(arg0) {
899
+ const ret = new Float64Array(arg0 >>> 0);
664
900
  return ret;
665
901
  },
666
- __wbg_prototypesetcall_bdcdcc5842e4d77d: function(arg0, arg1, arg2) {
902
+ __wbg_prototypesetcall_d62e5099504357e6: function(arg0, arg1, arg2) {
667
903
  Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);
668
904
  },
669
- __wbg_set_index_78a85f2e336ce120: function(arg0, arg1, arg2) {
905
+ __wbg_set_index_a56629feb5ac0ffa: function(arg0, arg1, arg2) {
670
906
  arg0[arg1 >>> 0] = arg2;
671
907
  },
672
- __wbg_stack_0ed75d68575b0f3c: function(arg0, arg1) {
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;
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
@@ -5,7 +5,7 @@
5
5
  "altqx"
6
6
  ],
7
7
  "description": "High-performance WASM renderer for graphical subtitles (PGS and VobSub)",
8
- "version": "1.6.0",
8
+ "version": "1.7.1",
9
9
  "license": "MIT",
10
10
  "repository": {
11
11
  "type": "git",
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)