libbitsub 1.9.0 → 1.10.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 (42) hide show
  1. package/README.md +192 -8
  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/diagnostics.d.ts +35 -0
  7. package/dist/ts/diagnostics.d.ts.map +1 -0
  8. package/dist/ts/diagnostics.js +102 -0
  9. package/dist/ts/diagnostics.js.map +1 -0
  10. package/dist/ts/frame-export.d.ts +6 -0
  11. package/dist/ts/frame-export.d.ts.map +1 -0
  12. package/dist/ts/frame-export.js +235 -0
  13. package/dist/ts/frame-export.js.map +1 -0
  14. package/dist/ts/parsers.d.ts +44 -4
  15. package/dist/ts/parsers.d.ts.map +1 -1
  16. package/dist/ts/parsers.js +269 -56
  17. package/dist/ts/parsers.js.map +1 -1
  18. package/dist/ts/renderers.d.ts +21 -2
  19. package/dist/ts/renderers.d.ts.map +1 -1
  20. package/dist/ts/renderers.js +150 -27
  21. package/dist/ts/renderers.js.map +1 -1
  22. package/dist/ts/types.d.ts +110 -1
  23. package/dist/ts/types.d.ts.map +1 -1
  24. package/dist/ts/utils.d.ts +1 -1
  25. package/dist/ts/utils.d.ts.map +1 -1
  26. package/dist/ts/utils.js +8 -1
  27. package/dist/ts/utils.js.map +1 -1
  28. package/dist/ts/worker.d.ts.map +1 -1
  29. package/dist/ts/worker.js +6 -4
  30. package/dist/ts/worker.js.map +1 -1
  31. package/dist/wrapper.d.ts +4 -2
  32. package/dist/wrapper.d.ts.map +1 -1
  33. package/dist/wrapper.js +4 -1
  34. package/dist/wrapper.js.map +1 -1
  35. package/package.json +9 -5
  36. package/pkg/README.md +192 -8
  37. package/pkg/libbitsub.d.ts +12 -220
  38. package/pkg/libbitsub.js +65 -118
  39. package/pkg/libbitsub_bg.wasm +0 -0
  40. package/pkg/libbitsub_bg.wasm.d.ts +7 -4
  41. package/pkg/package.json +2 -2
  42. package/src/wrapper.ts +20 -1
@@ -7,63 +7,20 @@
7
7
  export class PgsParser {
8
8
  free(): void;
9
9
  [Symbol.dispose](): void;
10
- /**
11
- * Clear the internal cache.
12
- */
13
10
  clearCache(): void;
14
- /**
15
- * Find the display set index for a given timestamp in milliseconds.
16
- */
17
11
  findIndexAtTimestamp(time_ms: number): number;
18
- /**
19
- * Get the number of composition objects in a cue.
20
- */
21
12
  getCueCompositionCount(index: number): number;
22
- /**
23
- * Get the cue composition state.
24
- */
25
13
  getCueCompositionState(index: number): number;
26
- /**
27
- * Get the cue end time in milliseconds.
28
- */
29
14
  getCueEndTime(index: number): number;
30
- /**
31
- * Get the cue palette ID.
32
- */
33
15
  getCuePaletteId(index: number): number;
34
- /**
35
- * Get the cue start time in milliseconds.
36
- */
37
16
  getCueStartTime(index: number): number;
38
- /**
39
- * Get all timestamps in milliseconds as a Float64Array.
40
- */
41
17
  getTimestamps(): Float64Array;
42
- /**
43
- * Create a new PGS parser.
44
- */
45
18
  constructor();
46
- /**
47
- * Parse a PGS file from binary data.
48
- * Returns the number of display sets parsed.
49
- */
50
19
  parse(data: Uint8Array): number;
51
- /**
52
- * Render subtitle at the given index and return RGBA data.
53
- * Returns null if index is invalid or no subtitle data.
54
- */
55
20
  renderAtIndex(index: number): SubtitleFrame | undefined;
56
- /**
57
- * Get the number of display sets.
58
- */
59
21
  readonly count: number;
60
- /**
61
- * Get the presentation height for this subtitle track.
62
- */
22
+ readonly lastRenderIssue: string;
63
23
  readonly screenHeight: number;
64
- /**
65
- * Get the presentation width for this subtitle track.
66
- */
67
24
  readonly screenWidth: number;
68
25
  }
69
26
 
@@ -74,44 +31,23 @@ export class RenderResult {
74
31
  private constructor();
75
32
  free(): void;
76
33
  [Symbol.dispose](): void;
77
- /**
78
- * Get composition height at index.
79
- */
80
34
  getCompositionHeight(index: number): number;
81
- /**
82
- * Get composition RGBA data at index.
83
- */
84
35
  getCompositionRgba(index: number): Uint8Array;
85
- /**
86
- * Get composition width at index.
87
- */
88
36
  getCompositionWidth(index: number): number;
89
- /**
90
- * Get composition X position at index.
91
- */
92
37
  getCompositionX(index: number): number;
93
- /**
94
- * Get composition Y position at index.
95
- */
96
38
  getCompositionY(index: number): number;
97
- /**
98
- * Get the number of composition elements.
99
- */
100
39
  readonly compositionCount: number;
101
40
  readonly screenHeight: number;
102
41
  readonly screenWidth: number;
103
42
  }
104
43
 
105
44
  /**
106
- * A single subtitle composition element.
45
+ * A single PGS subtitle composition element.
107
46
  */
108
47
  export class SubtitleComposition {
109
48
  private constructor();
110
49
  free(): void;
111
50
  [Symbol.dispose](): void;
112
- /**
113
- * Get RGBA pixel data as Uint8Array.
114
- */
115
51
  getRgba(): Uint8Array;
116
52
  readonly height: number;
117
53
  readonly width: number;
@@ -123,30 +59,18 @@ export class SubtitleComposition {
123
59
  * Subtitle format type.
124
60
  */
125
61
  export enum SubtitleFormat {
126
- /**
127
- * PGS (Blu-ray) subtitle format
128
- */
129
62
  Pgs = 0,
130
- /**
131
- * VobSub (DVD) subtitle format
132
- */
133
63
  VobSub = 1,
134
64
  }
135
65
 
136
66
  /**
137
- * A complete subtitle frame with all compositions.
67
+ * A complete PGS subtitle frame with all compositions.
138
68
  */
139
69
  export class SubtitleFrame {
140
70
  private constructor();
141
71
  free(): void;
142
72
  [Symbol.dispose](): void;
143
- /**
144
- * Get a composition by index.
145
- */
146
73
  getComposition(index: number): SubtitleComposition | undefined;
147
- /**
148
- * Get the number of compositions.
149
- */
150
74
  readonly compositionCount: number;
151
75
  readonly height: number;
152
76
  readonly width: number;
@@ -158,90 +82,27 @@ export class SubtitleFrame {
158
82
  export class SubtitleRenderer {
159
83
  free(): void;
160
84
  [Symbol.dispose](): void;
161
- /**
162
- * Clear internal caches.
163
- */
164
85
  clearCache(): void;
165
- /**
166
- * Dispose of all resources.
167
- */
168
86
  dispose(): void;
169
- /**
170
- * Find the subtitle index for a given timestamp in milliseconds.
171
- */
172
87
  findIndexAtTimestamp(time_ms: number): number;
173
- /**
174
- * Get the cue duration in milliseconds.
175
- */
176
88
  getCueDuration(index: number): number;
177
- /**
178
- * Get the cue end time in milliseconds.
179
- */
180
89
  getCueEndTime(index: number): number;
181
- /**
182
- * Get the cue start time in milliseconds.
183
- */
184
90
  getCueStartTime(index: number): number;
185
- /**
186
- * Get all timestamps in milliseconds.
187
- */
188
91
  getTimestamps(): Float64Array;
189
- /**
190
- * Load PGS subtitle data.
191
- */
192
92
  loadPgs(data: Uint8Array): number;
193
- /**
194
- * Load VobSub subtitle data from IDX and SUB.
195
- */
196
93
  loadVobSub(idx_content: string, sub_data: Uint8Array): void;
197
- /**
198
- * Load VobSub subtitle data from a Matroska subtitle container.
199
- */
200
94
  loadVobSubMks(mks_data: Uint8Array): void;
201
- /**
202
- * Load VobSub from SUB file only.
203
- */
204
95
  loadVobSubOnly(sub_data: Uint8Array): void;
205
- /**
206
- * Create a new subtitle renderer.
207
- */
208
96
  constructor();
209
- /**
210
- * Render subtitle at the given index.
211
- * Returns a unified RenderResult or null.
212
- */
213
97
  renderAtIndex(index: number): RenderResult | undefined;
214
- /**
215
- * Render subtitle at the given timestamp in seconds.
216
- */
217
98
  renderAtTimestamp(time_seconds: number): RenderResult | undefined;
218
- /**
219
- * Get the number of subtitle entries.
220
- */
221
99
  readonly count: number;
222
- /**
223
- * Get the current subtitle format.
224
- */
225
100
  readonly format: SubtitleFormat | undefined;
226
- /**
227
- * Check whether IDX metadata was used for VobSub.
228
- */
229
101
  readonly hasIdxMetadata: boolean;
230
- /**
231
- * Get the VobSub language code if available.
232
- */
233
102
  readonly language: string;
234
- /**
235
- * Get the presentation height for the loaded subtitle track.
236
- */
103
+ readonly lastRenderIssue: string;
237
104
  readonly screenHeight: number;
238
- /**
239
- * Get the presentation width for the loaded subtitle track.
240
- */
241
105
  readonly screenWidth: number;
242
- /**
243
- * Get the VobSub track ID if available.
244
- */
245
106
  readonly trackId: string;
246
107
  }
247
108
 
@@ -252,9 +113,6 @@ export class VobSubFrame {
252
113
  private constructor();
253
114
  free(): void;
254
115
  [Symbol.dispose](): void;
255
- /**
256
- * Get RGBA pixel data as Uint8Array.
257
- */
258
116
  getRgba(): Uint8Array;
259
117
  readonly height: number;
260
118
  readonly screenHeight: number;
@@ -270,98 +128,29 @@ export class VobSubFrame {
270
128
  export class VobSubParser {
271
129
  free(): void;
272
130
  [Symbol.dispose](): void;
273
- /**
274
- * Clear the internal cache.
275
- */
276
131
  clearCache(): void;
277
- /**
278
- * Dispose of all resources.
279
- */
280
132
  dispose(): void;
281
- /**
282
- * Find the subtitle index for a given timestamp in milliseconds.
283
- * Returns -1 if no subtitle should be displayed at this time.
284
- */
285
133
  findIndexAtTimestamp(time_ms: number): number;
286
- /**
287
- * Get the cue duration in milliseconds.
288
- */
289
134
  getCueDuration(index: number): number;
290
- /**
291
- * Get the cue end time in milliseconds.
292
- */
293
135
  getCueEndTime(index: number): number;
294
- /**
295
- * Get the cue file position in the SUB file.
296
- */
297
136
  getCueFilePosition(index: number): number;
298
- /**
299
- * Get the cue start time in milliseconds.
300
- */
301
137
  getCueStartTime(index: number): number;
302
- /**
303
- * Get all timestamps in milliseconds as a Float64Array.
304
- */
305
138
  getTimestamps(): Float64Array;
306
- /**
307
- * Load VobSub from IDX content and SUB data.
308
- */
309
139
  loadFromData(idx_content: string, sub_data: Uint8Array): void;
310
- /**
311
- * Load VobSub from a Matroska subtitle container with embedded S_VOBSUB tracks.
312
- */
313
140
  loadFromMks(mks_data: Uint8Array): void;
314
- /**
315
- * Load VobSub from SUB file only (scans for timestamps).
316
- */
317
141
  loadFromSubOnly(sub_data: Uint8Array): void;
318
- /**
319
- * Create a new VobSub parser.
320
- */
321
142
  constructor();
322
- /**
323
- * Render subtitle at the given index and return RGBA data.
324
- */
325
143
  renderAtIndex(index: number): VobSubFrame | undefined;
326
- /**
327
- * Enable or disable debanding.
328
- */
329
144
  setDebandEnabled(enabled: boolean): void;
330
- /**
331
- * Set the deband sample range in pixels (default: 15).
332
- */
333
145
  setDebandRange(range: number): void;
334
- /**
335
- * Set the deband threshold (0.0-255.0, default: 64.0).
336
- */
337
146
  setDebandThreshold(threshold: number): void;
338
- /**
339
- * Get the number of subtitle entries.
340
- */
341
147
  readonly count: number;
342
- /**
343
- * Check if debanding is enabled.
344
- */
345
148
  readonly debandEnabled: boolean;
346
- /**
347
- * Check whether IDX metadata was used to load the parser.
348
- */
349
149
  readonly hasIdxMetadata: boolean;
350
- /**
351
- * Get the declared language code from IDX metadata.
352
- */
353
150
  readonly language: string;
354
- /**
355
- * Get the presentation height for this subtitle track.
356
- */
151
+ readonly lastRenderIssue: string;
357
152
  readonly screenHeight: number;
358
- /**
359
- * Get the presentation width for this subtitle track.
360
- */
361
153
  readonly screenWidth: number;
362
- /**
363
- * Get the declared subtitle track ID from IDX metadata.
364
- */
365
154
  readonly trackId: string;
366
155
  }
367
156
 
@@ -377,6 +166,7 @@ export interface InitOutput {
377
166
  readonly __wbg_pgsparser_free: (a: number, b: number) => void;
378
167
  readonly __wbg_renderresult_free: (a: number, b: number) => void;
379
168
  readonly __wbg_subtitlecomposition_free: (a: number, b: number) => void;
169
+ readonly __wbg_subtitleframe_free: (a: number, b: number) => void;
380
170
  readonly __wbg_subtitlerenderer_free: (a: number, b: number) => void;
381
171
  readonly __wbg_vobsubframe_free: (a: number, b: number) => void;
382
172
  readonly __wbg_vobsubparser_free: (a: number, b: number) => void;
@@ -390,6 +180,7 @@ export interface InitOutput {
390
180
  readonly pgsparser_getCuePaletteId: (a: number, b: number) => number;
391
181
  readonly pgsparser_getCueStartTime: (a: number, b: number) => number;
392
182
  readonly pgsparser_getTimestamps: (a: number) => any;
183
+ readonly pgsparser_lastRenderIssue: (a: number) => [number, number];
393
184
  readonly pgsparser_new: () => number;
394
185
  readonly pgsparser_parse: (a: number, b: number, c: number) => number;
395
186
  readonly pgsparser_renderAtIndex: (a: number, b: number) => number;
@@ -408,7 +199,10 @@ export interface InitOutput {
408
199
  readonly subtitlecomposition_width: (a: number) => number;
409
200
  readonly subtitlecomposition_x: (a: number) => number;
410
201
  readonly subtitlecomposition_y: (a: number) => number;
202
+ readonly subtitleframe_compositionCount: (a: number) => number;
411
203
  readonly subtitleframe_getComposition: (a: number, b: number) => number;
204
+ readonly subtitleframe_height: (a: number) => number;
205
+ readonly subtitleframe_width: (a: number) => number;
412
206
  readonly subtitlerenderer_clearCache: (a: number) => void;
413
207
  readonly subtitlerenderer_count: (a: number) => number;
414
208
  readonly subtitlerenderer_dispose: (a: number) => void;
@@ -420,6 +214,7 @@ export interface InitOutput {
420
214
  readonly subtitlerenderer_getTimestamps: (a: number) => any;
421
215
  readonly subtitlerenderer_hasIdxMetadata: (a: number) => number;
422
216
  readonly subtitlerenderer_language: (a: number) => [number, number];
217
+ readonly subtitlerenderer_lastRenderIssue: (a: number) => [number, number];
423
218
  readonly subtitlerenderer_loadPgs: (a: number, b: number, c: number) => number;
424
219
  readonly subtitlerenderer_loadVobSub: (a: number, b: number, c: number, d: number, e: number) => void;
425
220
  readonly subtitlerenderer_loadVobSubMks: (a: number, b: number, c: number) => [number, number];
@@ -449,6 +244,7 @@ export interface InitOutput {
449
244
  readonly vobsubparser_getTimestamps: (a: number) => any;
450
245
  readonly vobsubparser_hasIdxMetadata: (a: number) => number;
451
246
  readonly vobsubparser_language: (a: number) => [number, number];
247
+ readonly vobsubparser_lastRenderIssue: (a: number) => [number, number];
452
248
  readonly vobsubparser_loadFromData: (a: number, b: number, c: number, d: number, e: number) => void;
453
249
  readonly vobsubparser_loadFromMks: (a: number, b: number, c: number) => [number, number];
454
250
  readonly vobsubparser_loadFromSubOnly: (a: number, b: number, c: number) => void;
@@ -460,10 +256,6 @@ export interface InitOutput {
460
256
  readonly vobsubparser_setDebandRange: (a: number, b: number) => void;
461
257
  readonly vobsubparser_setDebandThreshold: (a: number, b: number) => void;
462
258
  readonly vobsubparser_trackId: (a: number) => [number, number];
463
- readonly __wbg_subtitleframe_free: (a: number, b: number) => void;
464
- readonly subtitleframe_compositionCount: (a: number) => number;
465
- readonly subtitleframe_width: (a: number) => number;
466
- readonly subtitleframe_height: (a: number) => number;
467
259
  readonly __wbindgen_free: (a: number, b: number, c: number) => void;
468
260
  readonly __wbindgen_malloc: (a: number, b: number) => number;
469
261
  readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;