libbitsub 1.8.2 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/README.md +187 -9
  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 +272 -67
  17. package/dist/ts/parsers.js.map +1 -1
  18. package/dist/ts/renderers.d.ts +19 -2
  19. package/dist/ts/renderers.d.ts.map +1 -1
  20. package/dist/ts/renderers.js +180 -40
  21. package/dist/ts/renderers.js.map +1 -1
  22. package/dist/ts/types.d.ts +112 -1
  23. package/dist/ts/types.d.ts.map +1 -1
  24. package/dist/ts/utils.d.ts +2 -2
  25. package/dist/ts/utils.d.ts.map +1 -1
  26. package/dist/ts/utils.js +26 -11
  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 +32 -14
  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 +1 -1
  36. package/pkg/README.md +187 -9
  37. package/pkg/libbitsub.d.ts +15 -0
  38. package/pkg/libbitsub.js +48 -7
  39. package/pkg/libbitsub_bg.wasm +0 -0
  40. package/pkg/libbitsub_bg.wasm.d.ts +3 -0
  41. package/pkg/package.json +1 -1
  42. package/src/wrapper.ts +20 -1
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/ts/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/ts/utils.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/ts/worker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAe5D,0CAA0C;AAC1C,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAoUD,gDAAgD;AAChD,wBAAgB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAgDnD;AAKD,yDAAyD;AACzD,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,SAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,CA8BtG"}
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/ts/worker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAe5D,0CAA0C;AAC1C,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAsVD,gDAAgD;AAChD,wBAAgB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAgDnD;AAKD,yDAAyD;AACzD,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,SAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,CA8BtG"}
package/dist/ts/worker.js CHANGED
@@ -177,9 +177,7 @@ function convertFrame(frame, isVobSub) {
177
177
  if (isVobSub) {
178
178
  const rgba = frame.getRgba();
179
179
  if (frame.width > 0 && frame.height > 0 && rgba.length === frame.width * frame.height * 4) {
180
- const rgbaCopy = new Uint8Array(rgba.length);
181
- rgbaCopy.set(rgba);
182
- compositions.push({ rgba: rgbaCopy, x: frame.x, y: frame.y, width: frame.width, height: frame.height });
180
+ compositions.push({ rgba, x: frame.x, y: frame.y, width: frame.width, height: frame.height });
183
181
  }
184
182
  return { width: frame.screenWidth, height: frame.screenHeight, compositions };
185
183
  }
@@ -189,9 +187,7 @@ function convertFrame(frame, isVobSub) {
189
187
  if (!comp) continue;
190
188
  const rgba = comp.getRgba();
191
189
  if (comp.width > 0 && comp.height > 0 && rgba.length === comp.width * comp.height * 4) {
192
- const rgbaCopy = new Uint8Array(rgba.length);
193
- rgbaCopy.set(rgba);
194
- compositions.push({ rgba: rgbaCopy, x: comp.x, y: comp.y, width: comp.width, height: comp.height });
190
+ compositions.push({ rgba, x: comp.x, y: comp.y, width: comp.width, height: comp.height });
195
191
  }
196
192
  }
197
193
 
@@ -217,50 +213,72 @@ self.onmessage = async function(event) {
217
213
  disposeSession(request.sessionId);
218
214
  const parser = new wasmModule.PgsParser();
219
215
  const count = parser.parse(new Uint8Array(request.data));
216
+ const timestamps = parser.getTimestamps();
220
217
  pgsParsers.set(request.sessionId, parser);
221
- postResponse({ type: 'pgsLoaded', count, byteLength: request.data.byteLength, metadata: buildPgsMetadata(parser) }, [], _id);
218
+ postResponse(
219
+ { type: 'pgsLoaded', count, byteLength: request.data.byteLength, metadata: buildPgsMetadata(parser), timestamps },
220
+ [timestamps.buffer],
221
+ _id
222
+ );
222
223
  break;
223
224
  }
224
225
  case 'loadVobSub': {
225
226
  disposeSession(request.sessionId);
226
227
  const parser = new wasmModule.VobSubParser();
227
228
  parser.loadFromData(request.idxContent, new Uint8Array(request.subData));
229
+ const timestamps = parser.getTimestamps();
228
230
  vobSubParsers.set(request.sessionId, parser);
229
- postResponse({ type: 'vobSubLoaded', count: parser.count, metadata: buildVobSubMetadata(parser) }, [], _id);
231
+ postResponse(
232
+ { type: 'vobSubLoaded', count: parser.count, metadata: buildVobSubMetadata(parser), timestamps },
233
+ [timestamps.buffer],
234
+ _id
235
+ );
230
236
  break;
231
237
  }
232
238
  case 'loadVobSubMks': {
233
239
  disposeSession(request.sessionId);
234
240
  const parser = new wasmModule.VobSubParser();
235
241
  parser.loadFromMks(new Uint8Array(request.subData));
242
+ const timestamps = parser.getTimestamps();
236
243
  vobSubParsers.set(request.sessionId, parser);
237
- postResponse({ type: 'vobSubLoaded', count: parser.count, metadata: buildVobSubMetadata(parser) }, [], _id);
244
+ postResponse(
245
+ { type: 'vobSubLoaded', count: parser.count, metadata: buildVobSubMetadata(parser), timestamps },
246
+ [timestamps.buffer],
247
+ _id
248
+ );
238
249
  break;
239
250
  }
240
251
  case 'loadVobSubOnly': {
241
252
  disposeSession(request.sessionId);
242
253
  const parser = new wasmModule.VobSubParser();
243
254
  parser.loadFromSubOnly(new Uint8Array(request.subData));
255
+ const timestamps = parser.getTimestamps();
244
256
  vobSubParsers.set(request.sessionId, parser);
245
- postResponse({ type: 'vobSubLoaded', count: parser.count, metadata: buildVobSubMetadata(parser) }, [], _id);
257
+ postResponse(
258
+ { type: 'vobSubLoaded', count: parser.count, metadata: buildVobSubMetadata(parser), timestamps },
259
+ [timestamps.buffer],
260
+ _id
261
+ );
246
262
  break;
247
263
  }
248
264
  case 'renderPgsAtIndex': {
249
265
  const parser = pgsParsers.get(request.sessionId);
250
266
  if (!parser) { postResponse({ type: 'pgsFrame', frame: null }, [], _id); break; }
251
267
  const frame = parser.renderAtIndex(request.index);
252
- if (!frame) { postResponse({ type: 'pgsFrame', frame: null }, [], _id); break; }
268
+ const renderIssue = parser.lastRenderIssue || '';
269
+ if (!frame) { postResponse({ type: 'pgsFrame', frame: null, renderIssue }, [], _id); break; }
253
270
  const frameData = convertFrame(frame, false);
254
- postResponse({ type: 'pgsFrame', frame: frameData }, frameData.compositions.map((c) => c.rgba.buffer), _id);
271
+ postResponse({ type: 'pgsFrame', frame: frameData, renderIssue }, frameData.compositions.map((c) => c.rgba.buffer), _id);
255
272
  break;
256
273
  }
257
274
  case 'renderVobSubAtIndex': {
258
275
  const parser = vobSubParsers.get(request.sessionId);
259
276
  if (!parser) { postResponse({ type: 'vobSubFrame', frame: null }, [], _id); break; }
260
277
  const frame = parser.renderAtIndex(request.index);
261
- if (!frame) { postResponse({ type: 'vobSubFrame', frame: null }, [], _id); break; }
278
+ const renderIssue = parser.lastRenderIssue || '';
279
+ if (!frame) { postResponse({ type: 'vobSubFrame', frame: null, renderIssue }, [], _id); break; }
262
280
  const frameData = convertFrame(frame, true);
263
- postResponse({ type: 'vobSubFrame', frame: frameData }, frameData.compositions.map((c) => c.rgba.buffer), _id);
281
+ postResponse({ type: 'vobSubFrame', frame: frameData, renderIssue }, frameData.compositions.map((c) => c.rgba.buffer), _id);
264
282
  break;
265
283
  }
266
284
  case 'findPgsIndex': {
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/ts/worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/ts/worker.ts"],"names":[],"mappings":"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"}
package/dist/wrapper.d.ts CHANGED
@@ -2,10 +2,12 @@
2
2
  * TypeScript wrapper for the libbitsub Rust rendering engine.
3
3
  * Provides a compatible API with the original libpgs-js implementation.
4
4
  */
5
- export type { AutoSubtitleSource, AutoVideoSubtitleOptions, SubtitleAspectMode, SubtitleCueBounds, SubtitleCueMetadata, SubtitleData, SubtitleCompositionData, SubtitleDisplaySettings, SubtitleFormatName, SubtitleHorizontalAlign, SubtitleParserMetadata, SubtitleRendererBackend, SubtitleRendererEvent, SubtitleRendererStatsSnapshot, VideoSubtitleOptions, VideoVobSubOptions, RenderResult, SubtitleFrame, VobSubFrame } from './ts/types';
5
+ export type { AutoSubtitleSource, AutoVideoSubtitleOptions, OpenedSubtitles, SubtitleAspectMode, SubtitleCacheStats, SubtitleFrameCanvasOptions, SubtitleFrameCanvasTarget, SubtitleFrameCropMode, SubtitleFrameRenderOptions, SubtitleRenderedFrameData, SubtitleCueBounds, SubtitleCueMetadata, SubtitleData, SubtitleDiagnosticDetailValue, SubtitleDiagnosticErrorCode, SubtitleDiagnosticErrorLike, SubtitleDiagnosticsOptions, SubtitleDiagnosticWarning, SubtitleDiagnosticWarningCode, SubtitleCompositionData, SubtitleDisplaySettings, SubtitleFormatName, SubtitleHorizontalAlign, SubtitleLastRenderInfo, SubtitleParserMetadata, SubtitleRendererBackend, SubtitleRendererEvent, SubtitleRendererStatsSnapshot, VideoSubtitleOptions, VideoVobSubOptions, RenderResult, SubtitleFrame, VobSubFrame } from './ts/types';
6
+ export { SubtitleDiagnosticError, createSubtitleDiagnosticError, normalizeSubtitleError } from './ts/diagnostics';
6
7
  export { initWasm, isWasmInitialized } from './ts/wasm';
7
8
  export { isWebGPUSupported } from './ts/webgpu-renderer';
8
- export { PgsParser, VobSubParserLowLevel, UnifiedSubtitleParser } from './ts/parsers';
9
+ export { PgsParser, VobSubParserLowLevel, UnifiedSubtitleParser, openSubtitles } from './ts/parsers';
10
+ export { renderFrameData, toBlob, toCanvas, toImageBitmap } from './ts/frame-export';
9
11
  export { PgsRenderer, VobSubRenderer, createAutoSubtitleRenderer, type SubtitleRendererStats } from './ts/renderers';
10
12
  export { detectSubtitleFormat } from './ts/utils';
11
13
  import { PgsRenderer as _PgsRenderer, VobSubRenderer as _VobSubRenderer } from './ts/renderers';
@@ -1 +1 @@
1
- {"version":3,"file":"wrapper.d.ts","sourceRoot":"","sources":["../src/wrapper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,EACZ,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,6BAA6B,EAC7B,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,WAAW,EACZ,MAAM,YAAY,CAAA;AAGnB,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAGvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAGxD,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAGrF,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,0BAA0B,EAAE,KAAK,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAGpH,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAMjD,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,cAAc,IAAI,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC/F,OAAO,EAAE,qBAAqB,IAAI,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAE9E,0CAA0C;AAC1C,eAAO,MAAM,WAAW,qBAAe,CAAA;AAEvC,6CAA6C;AAC7C,eAAO,MAAM,cAAc,wBAAkB,CAAA;AAE7C,oDAAoD;AACpD,eAAO,MAAM,uBAAuB,+BAAyB,CAAA"}
1
+ {"version":3,"file":"wrapper.d.ts","sourceRoot":"","sources":["../src/wrapper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,kBAAkB,EAClB,wBAAwB,EACxB,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,0BAA0B,EAC1B,yBAAyB,EACzB,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,EACZ,6BAA6B,EAC7B,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,yBAAyB,EACzB,6BAA6B,EAC7B,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,6BAA6B,EAC7B,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,WAAW,EACZ,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAGjH,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAGvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAGxD,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAGpG,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGpF,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,0BAA0B,EAAE,KAAK,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAGpH,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAMjD,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,cAAc,IAAI,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC/F,OAAO,EAAE,qBAAqB,IAAI,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAE9E,0CAA0C;AAC1C,eAAO,MAAM,WAAW,qBAAe,CAAA;AAEvC,6CAA6C;AAC7C,eAAO,MAAM,cAAc,wBAAkB,CAAA;AAE7C,oDAAoD;AACpD,eAAO,MAAM,uBAAuB,+BAAyB,CAAA"}
package/dist/wrapper.js CHANGED
@@ -2,12 +2,15 @@
2
2
  * TypeScript wrapper for the libbitsub Rust rendering engine.
3
3
  * Provides a compatible API with the original libpgs-js implementation.
4
4
  */
5
+ export { SubtitleDiagnosticError, createSubtitleDiagnosticError, normalizeSubtitleError } from './ts/diagnostics';
5
6
  // Re-export WASM management
6
7
  export { initWasm, isWasmInitialized } from './ts/wasm';
7
8
  // Re-export WebGPU utilities
8
9
  export { isWebGPUSupported } from './ts/webgpu-renderer';
9
10
  // Re-export parsers
10
- export { PgsParser, VobSubParserLowLevel, UnifiedSubtitleParser } from './ts/parsers';
11
+ export { PgsParser, VobSubParserLowLevel, UnifiedSubtitleParser, openSubtitles } from './ts/parsers';
12
+ // Re-export frame export helpers
13
+ export { renderFrameData, toBlob, toCanvas, toImageBitmap } from './ts/frame-export';
11
14
  // Re-export renderers
12
15
  export { PgsRenderer, VobSubRenderer, createAutoSubtitleRenderer } from './ts/renderers';
13
16
  // Re-export format detection utilities
@@ -1 +1 @@
1
- {"version":3,"file":"wrapper.js","sourceRoot":"","sources":["../src/wrapper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAyBH,4BAA4B;AAC5B,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAEvD,6BAA6B;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAExD,oBAAoB;AACpB,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAErF,sBAAsB;AACtB,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,0BAA0B,EAA8B,MAAM,gBAAgB,CAAA;AAEpH,uCAAuC;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEjD,gFAAgF;AAChF,8CAA8C;AAC9C,gFAAgF;AAEhF,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,cAAc,IAAI,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC/F,OAAO,EAAE,qBAAqB,IAAI,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAE9E,0CAA0C;AAC1C,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAA;AAEvC,6CAA6C;AAC7C,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAA;AAE7C,oDAAoD;AACpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,sBAAsB,CAAA"}
1
+ {"version":3,"file":"wrapper.js","sourceRoot":"","sources":["../src/wrapper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAuCH,OAAO,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAEjH,4BAA4B;AAC5B,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAEvD,6BAA6B;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAExD,oBAAoB;AACpB,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAEpG,iCAAiC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEpF,sBAAsB;AACtB,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,0BAA0B,EAA8B,MAAM,gBAAgB,CAAA;AAEpH,uCAAuC;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEjD,gFAAgF;AAChF,8CAA8C;AAC9C,gFAAgF;AAEhF,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,cAAc,IAAI,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC/F,OAAO,EAAE,qBAAqB,IAAI,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAE9E,0CAA0C;AAC1C,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAA;AAEvC,6CAA6C;AAC7C,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAA;AAE7C,oDAAoD;AACpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,sBAAsB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "libbitsub",
3
- "version": "1.8.2",
3
+ "version": "1.10.0",
4
4
  "author": "altqx",
5
5
  "license": "MIT",
6
6
  "description": "High-performance WASM renderer for graphical subtitles (PGS and VobSub)",
package/pkg/README.md CHANGED
@@ -11,10 +11,12 @@ Started as a fork of Arcus92's [libpgs-js](https://github.com/Arcus92/libpgs-js)
11
11
  - Matroska `.mks` extraction for embedded `S_VOBSUB` tracks
12
12
  - WebGPU, WebGL2, and Canvas2D rendering with automatic fallback
13
13
  - Worker-backed parsing/rendering for large subtitle files
14
- - Rich layout controls: scale, horizontal/vertical offsets, alignment, bottom padding, safe area, opacity
14
+ - Rich layout controls: scale, aspect mode, horizontal/vertical offsets, alignment, bottom padding, safe area, opacity
15
15
  - Cue metadata and parser introspection APIs
16
+ - Rendered-frame export helpers for ImageData, ImageBitmap, Blob, and custom canvas targets
16
17
  - Frame prefetching and cache control for high-level renderers
17
18
  - Automatic format detection and unified loading helpers
19
+ - First-class diagnostics with structured error codes, warning hooks, and render/cache snapshots
18
20
  - TypeScript support with exported event and metadata types
19
21
 
20
22
  ## Showcase
@@ -104,13 +106,18 @@ import { PgsRenderer } from 'libbitsub'
104
106
  const renderer = new PgsRenderer({
105
107
  video: videoElement,
106
108
  subUrl: '/subtitles/movie.sup',
109
+ debug: true,
107
110
  displaySettings: {
108
111
  scale: 1.1,
112
+ aspectMode: 'stretch',
109
113
  bottomPadding: 4,
110
114
  safeArea: 5
111
115
  },
112
116
  cacheLimit: 32,
113
117
  prefetchWindow: { before: 1, after: 2 },
118
+ onWarning: (warning) => {
119
+ console.warn(warning.code, warning.message, warning.details)
120
+ },
114
121
  onEvent: (event) => {
115
122
  if (event.type === 'worker-state') {
116
123
  console.log('worker', event.ready ? 'ready' : 'starting', event.sessionId)
@@ -163,6 +170,7 @@ Both `PgsRenderer` and `VobSubRenderer` support runtime layout changes:
163
170
  ```ts
164
171
  renderer.setDisplaySettings({
165
172
  scale: 1.2,
173
+ aspectMode: 'stretch',
166
174
  verticalOffset: -8,
167
175
  horizontalOffset: 2,
168
176
  horizontalAlign: 'center',
@@ -175,11 +183,18 @@ const settings = renderer.getDisplaySettings()
175
183
  renderer.resetDisplaySettings()
176
184
  ```
177
185
 
186
+ `aspectMode` controls how the subtitle track's own presentation size is mapped into the video content box:
187
+
188
+ - `stretch` default behavior, scales X/Y independently.
189
+ - `contain` preserves subtitle bitmap shape and fits the track inside the visible video box.
190
+ - `cover` preserves subtitle bitmap shape while filling the video box.
191
+
178
192
  `SubtitleDisplaySettings`:
179
193
 
180
194
  | Field | Type | Range / values | Meaning |
181
195
  | --- | --- | --- | --- |
182
196
  | `scale` | number | `0.1` to `3.0` | Overall subtitle scale |
197
+ | `aspectMode` | `'stretch' \| 'contain' \| 'cover'` | fixed set | How subtitle screen coordinates map into the visible video box |
183
198
  | `verticalOffset` | number | `-50` to `50` | Vertical movement as percent of video height |
184
199
  | `horizontalOffset` | number | `-50` to `50` | Horizontal movement as percent of video width |
185
200
  | `horizontalAlign` | `'left' \| 'center' \| 'right'` | fixed set | Anchor used when scaling subtitle groups |
@@ -195,12 +210,15 @@ High-level renderers expose parser and cue metadata:
195
210
  const metadata = renderer.getMetadata()
196
211
  const currentCue = renderer.getCurrentCueMetadata()
197
212
  const cue42 = renderer.getCueMetadata(42)
213
+ const stats = renderer.getStats()
214
+ const cache = renderer.getCacheStats()
215
+ const lastRender = renderer.getLastRenderInfo()
198
216
  ```
199
217
 
200
218
  Low-level parsers expose the same model:
201
219
 
202
220
  ```ts
203
- import { PgsParser, UnifiedSubtitleParser, VobSubParserLowLevel } from 'libbitsub'
221
+ import { PgsParser, UnifiedSubtitleParser, VobSubParserLowLevel, openSubtitles } from 'libbitsub'
204
222
 
205
223
  const vob = new VobSubParserLowLevel()
206
224
  vob.loadFromMks(new Uint8Array(mksBuffer))
@@ -208,9 +226,13 @@ vob.loadFromMks(new Uint8Array(mksBuffer))
208
226
  const parser = new UnifiedSubtitleParser()
209
227
  const detected = parser.loadAuto({ data: subtitleBytes, fileName: 'track.mks' })
210
228
 
229
+ const opened = await openSubtitles({ data: subtitleBytes, fileName: 'track.mks' })
230
+
211
231
  console.log(detected)
212
232
  console.log(parser.getMetadata())
213
233
  console.log(parser.getCueMetadata(0))
234
+ console.log(opened.format)
235
+ opened.dispose()
214
236
  ```
215
237
 
216
238
  Metadata includes:
@@ -221,6 +243,134 @@ Metadata includes:
221
243
  - PGS composition count, palette ID, composition state
222
244
  - VobSub language, track ID, IDX metadata presence, file position where available
223
245
 
246
+ ## One-shot auto API
247
+
248
+ If you do not care whether the input is PGS or VobSub and only want one stable low-level surface, use `openSubtitles()`.
249
+
250
+ ```ts
251
+ import { openSubtitles } from 'libbitsub'
252
+
253
+ const subtitles = await openSubtitles({
254
+ data: subtitleBytes,
255
+ fileName: 'track.sup'
256
+ })
257
+
258
+ console.log(subtitles.format)
259
+ console.log(subtitles.metadata)
260
+ console.log(subtitles.timestamps)
261
+
262
+ const frame = subtitles.renderAtTimestamp(120.5)
263
+ const rendered = subtitles.renderFrameDataAtTimestamp(120.5)
264
+ const cue = subtitles.getCueMetadata(0)
265
+
266
+ subtitles.dispose()
267
+ ```
268
+
269
+ `openSubtitles()` initializes WASM for you, auto-detects the format, loads the subtitle source, and returns a normalized handle with snapshot properties plus shared low-level helpers such as `renderAtIndex()`, `renderAtTimestamp()`, `renderFrameDataAtIndex()`, `renderFrameDataAtTimestamp()`, `getCueMetadata()`, `getLastRenderIssue()`, `clearCache()`, and `dispose()`.
270
+
271
+ Like `UnifiedSubtitleParser.loadAuto()`, this is a low-level in-memory API: pass binary subtitle content via `data` or `subData`, and optionally include `fileName`, `idxContent`, `idxUrl`, or `subUrl` as format hints or companion metadata.
272
+
273
+ ## Frame export helpers
274
+
275
+ Low-level parser output can be flattened into a single exportable frame for previews, editors, snapshots, fixture generation, or visual diffing.
276
+
277
+ ```ts
278
+ import {
279
+ PgsParser,
280
+ initWasm,
281
+ renderFrameData,
282
+ toBlob,
283
+ toCanvas,
284
+ toImageBitmap
285
+ } from 'libbitsub'
286
+
287
+ await initWasm()
288
+
289
+ const parser = new PgsParser()
290
+ parser.load(new Uint8Array(arrayBuffer))
291
+
292
+ const subtitleFrame = parser.renderAtTimestamp(120.5)
293
+ const rendered = subtitleFrame ? renderFrameData(subtitleFrame, { crop: 'bounds' }) : null
294
+
295
+ if (rendered) {
296
+ const canvas = toCanvas(rendered)
297
+ const bitmap = await toImageBitmap(rendered)
298
+ const pngBlob = await toBlob(rendered)
299
+
300
+ console.log({
301
+ width: rendered.imageData.width,
302
+ height: rendered.imageData.height,
303
+ offsetX: rendered.offsetX,
304
+ offsetY: rendered.offsetY,
305
+ bounds: rendered.bounds,
306
+ canvas,
307
+ bitmap,
308
+ pngBlob
309
+ })
310
+ }
311
+ ```
312
+
313
+ Parser convenience methods avoid the extra `renderAtTimestamp()` step:
314
+
315
+ ```ts
316
+ const rendered = parser.renderFrameDataAtTimestamp(120.5)
317
+ const fullScreenFrame = parser.renderFrameDataAtIndex(42, { crop: 'screen' })
318
+ ```
319
+
320
+ Cropping modes:
321
+
322
+ - `bounds` is the default. It returns a tightly cropped composed image and records where that image belongs in the original subtitle presentation area via `offsetX` and `offsetY`.
323
+ - `screen` preserves the full subtitle presentation dimensions, which is useful when you need stable frame sizes for test fixtures or when drawing into a presentation-sized surface.
324
+
325
+ Drawing behavior:
326
+
327
+ - `toCanvas(frame)` creates a new canvas sized to the rendered export.
328
+ - Passing an existing canvas target resizes it by default before drawing.
329
+ - Passing an existing 2D context draws in place by default, which is useful when you want subtitles composited into your own pre-sized surface.
330
+
331
+ ## Diagnostics mode
332
+
333
+ Enable `debug: true` on high-level renderers when you need richer field diagnostics for malformed subtitle files. In debug mode, libbitsub records the most recent render attempt and emits structured warnings in addition to the existing lifecycle events.
334
+
335
+ ```ts
336
+ import { PgsRenderer, SubtitleDiagnosticError } from 'libbitsub'
337
+
338
+ const renderer = new PgsRenderer({
339
+ video: videoElement,
340
+ subUrl: '/subtitles/movie.sup',
341
+ debug: true,
342
+ onWarning: (warning) => {
343
+ console.warn('[warning]', warning.code, warning.message, warning.details)
344
+ },
345
+ onError: (error) => {
346
+ if (error instanceof SubtitleDiagnosticError) {
347
+ console.error('[error]', error.code, error.message, error.details)
348
+ return
349
+ }
350
+
351
+ console.error(error)
352
+ }
353
+ })
354
+
355
+ console.log(renderer.getStats())
356
+ console.log(renderer.getCacheStats())
357
+ console.log(renderer.getLastRenderInfo())
358
+ ```
359
+
360
+ Structured diagnostic error codes currently include:
361
+
362
+ - `UNSUPPORTED_FORMAT`
363
+ - `BAD_IDX`
364
+ - `MISSING_PALETTE`
365
+ - `TRACK_NOT_FOUND`
366
+ - `MISSING_INPUT`
367
+ - `FETCH_FAILED`
368
+ - `INVALID_SUBTITLE_DATA`
369
+ - `WORKER_FALLBACK`
370
+ - `UNKNOWN`
371
+
372
+ Warnings use a smaller code set focused on non-fatal conditions such as malformed bitmap buffers, worker fallback, and missing PGS palettes during render.
373
+
224
374
  ## MKS security and corruption checks
225
375
 
226
376
  The `.mks` path validates Matroska structure before handing payloads to the VobSub decoder. Embedded subtitle blocks are size-checked, compressed blocks use bounded zlib inflation, and extracted SPU packets are rejected if their declared payload lengths or control offsets are inconsistent. Malformed or oversized `.mks` payloads fail fast instead of being partially decoded.
@@ -251,6 +401,7 @@ const renderer = new PgsRenderer({
251
401
  case 'loading':
252
402
  case 'loaded':
253
403
  case 'error':
404
+ case 'warning':
254
405
  case 'renderer-change':
255
406
  case 'worker-state':
256
407
  case 'cache-change':
@@ -319,7 +470,8 @@ Emitted events:
319
470
  | --- | --- |
320
471
  | `loading` | subtitle format |
321
472
  | `loaded` | subtitle format and parser metadata |
322
- | `error` | subtitle format and `Error` |
473
+ | `error` | subtitle format and `SubtitleDiagnosticErrorLike` |
474
+ | `warning` | `SubtitleDiagnosticWarning` |
323
475
  | `renderer-change` | active backend: `webgpu`, `webgl2`, or `canvas2d` |
324
476
  | `worker-state` | whether worker mode is enabled, ready, fallback status, and the active session ID |
325
477
  | `cache-change` | cached frame count, pending renders, and configured cache limit |
@@ -347,6 +499,8 @@ const stats = renderer.getStats()
347
499
  - `totalEntries`
348
500
  - `currentIndex`
349
501
 
502
+ `getCacheStats()` adds worker/session state for the current renderer cache, while `getLastRenderInfo()` exposes the most recent render outcome with a status of `rendered`, `cleared`, `pending`, `empty`, or `failed`.
503
+
350
504
  ## Low-level APIs
351
505
 
352
506
  ### PGS parser
@@ -359,7 +513,9 @@ parser.load(new Uint8Array(arrayBuffer))
359
513
 
360
514
  const timestamps = parser.getTimestamps()
361
515
  const frame = parser.renderAtIndex(0)
516
+ const rendered = parser.renderFrameDataAtTimestamp(120.5)
362
517
  const metadata = parser.getMetadata()
518
+ const lastIssue = parser.getLastRenderIssue()
363
519
  ```
364
520
 
365
521
  ### VobSub parser
@@ -372,7 +528,9 @@ parser.loadFromData(idxContent, new Uint8Array(subArrayBuffer))
372
528
  parser.setDebandEnabled(true)
373
529
 
374
530
  const frame = parser.renderAtTimestamp(120.5)
531
+ const rendered = parser.renderFrameDataAtIndex(0, { crop: 'screen' })
375
532
  const cue = parser.getCueMetadata(0)
533
+ const lastIssue = parser.getLastRenderIssue()
376
534
  ```
377
535
 
378
536
  ### Unified parser
@@ -382,7 +540,10 @@ import { UnifiedSubtitleParser, detectSubtitleFormat } from 'libbitsub'
382
540
 
383
541
  const format = detectSubtitleFormat({ data: subtitleBytes, fileName: 'track.sup' })
384
542
 
385
- const parser = new UnifiedSubtitleParser()
543
+ const parser = new UnifiedSubtitleParser({
544
+ debug: true,
545
+ onWarning: (warning) => console.warn(warning.code, warning.message)
546
+ })
386
547
  parser.loadAuto({ data: subtitleBytes, fileName: 'track.sup' })
387
548
  ```
388
549
 
@@ -395,19 +556,20 @@ libbitsub prefers:
395
556
  3. Canvas2D
396
557
 
397
558
  ```ts
398
- import { isWebGL2Supported, isWebGPUSupported } from 'libbitsub'
559
+ import { isWebGPUSupported } from 'libbitsub'
399
560
 
400
561
  console.log({
401
- webgpu: isWebGPUSupported(),
402
- webgl2: isWebGL2Supported()
562
+ webgpu: isWebGPUSupported()
403
563
  })
404
564
  ```
405
565
 
566
+ WebGL2 and Canvas2D fallback remain automatic. Use `onWebGPUFallback`, `onWebGL2Fallback`, `onEvent`, or `onWarning` if you need to observe backend changes.
567
+
406
568
  ## Notes
407
569
 
408
570
  - Worker mode is shared, but subtitle parser state is isolated per renderer session.
409
571
  - Multiple subtitle renderers can coexist without reusing the same parser instance.
410
- - If worker startup fails, the high-level API falls back to main-thread parsing.
572
+ - If worker startup fails, the high-level API falls back to main-thread parsing and emits a `WORKER_FALLBACK` warning/event when diagnostics are being observed.
411
573
  - The library only handles bitmap subtitle formats. It does not parse text subtitle formats such as SRT or ASS.
412
574
 
413
575
  ## API Reference
@@ -419,6 +581,13 @@ console.log({
419
581
  - `isWebGPUSupported(): boolean` checks WebGPU support.
420
582
  - `detectSubtitleFormat(source: AutoSubtitleSource): 'pgs' | 'vobsub' | null` detects the bitmap subtitle format from file hints or binary data.
421
583
  - `createAutoSubtitleRenderer(options: AutoVideoSubtitleOptions): PgsRenderer | VobSubRenderer` creates a high-level renderer after format detection.
584
+ - `openSubtitles(source, options?): Promise<OpenedSubtitles>` initializes WASM, auto-detects the low-level format, and returns a normalized parser handle.
585
+ - `renderFrameData(frame, options?): SubtitleRenderedFrameData | null` composes a `SubtitleData` frame into exportable pixels.
586
+ - `toCanvas(frame, target?, options?): HTMLCanvasElement | OffscreenCanvas` draws a rendered frame to a new or existing canvas/context.
587
+ - `toImageBitmap(frame, options?): Promise<ImageBitmap>` creates an `ImageBitmap` from a subtitle frame export.
588
+ - `toBlob(frame, type?, quality?, options?): Promise<Blob>` encodes a subtitle frame export, defaulting to PNG.
589
+ - `SubtitleDiagnosticError` is the structured error class libbitsub uses for coded diagnostics.
590
+ - `createSubtitleDiagnosticError(...)` and `normalizeSubtitleError(...)` are exported for integrations that want to preserve libbitsub-style error codes.
422
591
  - Legacy aliases remain exported: `PGSRenderer`, `VobsubRenderer`, `UnifiedSubtitleRenderer`.
423
592
 
424
593
  ### High-level renderers
@@ -430,6 +599,8 @@ console.log({
430
599
  - `setDisplaySettings(settings: Partial<SubtitleDisplaySettings>): void` updates layout settings.
431
600
  - `resetDisplaySettings(): void` resets layout settings to defaults.
432
601
  - `getStats(): SubtitleRendererStats` returns render statistics.
602
+ - `getCacheStats(): SubtitleCacheStats` returns cache occupancy, worker readiness, and session ID details.
603
+ - `getLastRenderInfo(): SubtitleLastRenderInfo | null` returns the last render attempt recorded in debug mode.
433
604
  - `getMetadata(): SubtitleParserMetadata | null` returns track-level metadata.
434
605
  - `getCurrentCueMetadata(): SubtitleCueMetadata | null` returns the currently displayed cue metadata.
435
606
  - `getCueMetadata(index: number): SubtitleCueMetadata | null` returns metadata for a specific cue.
@@ -528,6 +699,7 @@ interface AutoVideoSubtitleOptions extends Omit<VideoVobSubOptions, 'subUrl' | '
528
699
  ```ts
529
700
  interface SubtitleDisplaySettings {
530
701
  scale: number
702
+ aspectMode: 'stretch' | 'contain' | 'cover'
531
703
  verticalOffset: number
532
704
  horizontalOffset: number
533
705
  horizontalAlign: 'left' | 'center' | 'right'
@@ -543,7 +715,8 @@ interface SubtitleDisplaySettings {
543
715
  type SubtitleRendererEvent =
544
716
  | { type: 'loading'; format: SubtitleFormatName }
545
717
  | { type: 'loaded'; format: SubtitleFormatName; metadata: SubtitleParserMetadata }
546
- | { type: 'error'; format: SubtitleFormatName; error: Error }
718
+ | { type: 'error'; format: SubtitleFormatName; error: SubtitleDiagnosticErrorLike }
719
+ | { type: 'warning'; warning: SubtitleDiagnosticWarning }
547
720
  | { type: 'renderer-change'; renderer: 'webgpu' | 'webgl2' | 'canvas2d' }
548
721
  | { type: 'worker-state'; enabled: boolean; ready: boolean; sessionId: string | null; fallback?: boolean }
549
722
  | { type: 'cache-change'; cachedFrames: number; pendingRenders: number; cacheLimit: number }
@@ -568,6 +741,11 @@ Both shapes expose:
568
741
  - `totalEntries`
569
742
  - `currentIndex`
570
743
 
744
+ Related diagnostics shapes:
745
+
746
+ - `SubtitleCacheStats` from `getCacheStats()`.
747
+ - `SubtitleLastRenderInfo` from `getLastRenderInfo()` when `debug` is enabled.
748
+
571
749
  #### `SubtitleParserMetadata`
572
750
 
573
751
  ```ts