libbitsub 1.10.2 → 1.12.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 (98) hide show
  1. package/README.md +296 -49
  2. package/dist/index.d.ts +3 -3
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +3 -3
  5. package/dist/index.js.map +1 -1
  6. package/dist/integrations/hlsjs.d.ts +45 -0
  7. package/dist/integrations/hlsjs.d.ts.map +1 -0
  8. package/dist/integrations/hlsjs.js +121 -0
  9. package/dist/integrations/hlsjs.js.map +1 -0
  10. package/dist/integrations/index.d.ts +11 -0
  11. package/dist/integrations/index.d.ts.map +1 -0
  12. package/dist/integrations/index.js +11 -0
  13. package/dist/integrations/index.js.map +1 -0
  14. package/dist/integrations/react.d.ts +55 -0
  15. package/dist/integrations/react.d.ts.map +1 -0
  16. package/dist/integrations/react.js +133 -0
  17. package/dist/integrations/react.js.map +1 -0
  18. package/dist/integrations/shaka.d.ts +38 -0
  19. package/dist/integrations/shaka.d.ts.map +1 -0
  20. package/dist/integrations/shaka.js +71 -0
  21. package/dist/integrations/shaka.js.map +1 -0
  22. package/dist/integrations/shared.d.ts +41 -0
  23. package/dist/integrations/shared.d.ts.map +1 -0
  24. package/dist/integrations/shared.js +123 -0
  25. package/dist/integrations/shared.js.map +1 -0
  26. package/dist/integrations/videojs.d.ts +85 -0
  27. package/dist/integrations/videojs.d.ts.map +1 -0
  28. package/dist/integrations/videojs.js +111 -0
  29. package/dist/integrations/videojs.js.map +1 -0
  30. package/dist/ts/capabilities.d.ts +8 -0
  31. package/dist/ts/capabilities.d.ts.map +1 -0
  32. package/dist/ts/capabilities.js +105 -0
  33. package/dist/ts/capabilities.js.map +1 -0
  34. package/dist/ts/diagnostics.d.ts.map +1 -1
  35. package/dist/ts/diagnostics.js.map +1 -1
  36. package/dist/ts/frame-export.d.ts.map +1 -1
  37. package/dist/ts/frame-export.js +4 -4
  38. package/dist/ts/frame-export.js.map +1 -1
  39. package/dist/ts/parsers.d.ts +46 -8
  40. package/dist/ts/parsers.d.ts.map +1 -1
  41. package/dist/ts/parsers.js +305 -14
  42. package/dist/ts/parsers.js.map +1 -1
  43. package/dist/ts/range-loader.d.ts +31 -0
  44. package/dist/ts/range-loader.d.ts.map +1 -0
  45. package/dist/ts/range-loader.js +220 -0
  46. package/dist/ts/range-loader.js.map +1 -0
  47. package/dist/ts/renderers.d.ts +140 -8
  48. package/dist/ts/renderers.d.ts.map +1 -1
  49. package/dist/ts/renderers.js +1773 -287
  50. package/dist/ts/renderers.js.map +1 -1
  51. package/dist/ts/types.d.ts +210 -7
  52. package/dist/ts/types.d.ts.map +1 -1
  53. package/dist/ts/utils.d.ts.map +1 -1
  54. package/dist/ts/utils.js +98 -2
  55. package/dist/ts/utils.js.map +1 -1
  56. package/dist/ts/video-frame-scheduler.d.ts +35 -0
  57. package/dist/ts/video-frame-scheduler.d.ts.map +1 -0
  58. package/dist/ts/video-frame-scheduler.js +98 -0
  59. package/dist/ts/video-frame-scheduler.js.map +1 -0
  60. package/dist/ts/wasm.d.ts +2 -0
  61. package/dist/ts/wasm.d.ts.map +1 -1
  62. package/dist/ts/wasm.js +12 -0
  63. package/dist/ts/wasm.js.map +1 -1
  64. package/dist/ts/webgl2-renderer.d.ts +9 -0
  65. package/dist/ts/webgl2-renderer.d.ts.map +1 -1
  66. package/dist/ts/webgl2-renderer.js +34 -0
  67. package/dist/ts/webgl2-renderer.js.map +1 -1
  68. package/dist/ts/webgpu-renderer.d.ts +9 -0
  69. package/dist/ts/webgpu-renderer.d.ts.map +1 -1
  70. package/dist/ts/webgpu-renderer.js +70 -2
  71. package/dist/ts/webgpu-renderer.js.map +1 -1
  72. package/dist/ts/worker.d.ts +11 -0
  73. package/dist/ts/worker.d.ts.map +1 -1
  74. package/dist/ts/worker.js +620 -158
  75. package/dist/ts/worker.js.map +1 -1
  76. package/dist/wrapper.d.ts +6 -3
  77. package/dist/wrapper.d.ts.map +1 -1
  78. package/dist/wrapper.js +5 -2
  79. package/dist/wrapper.js.map +1 -1
  80. package/examples/README.md +38 -0
  81. package/examples/hlsjs/README.md +53 -0
  82. package/examples/react/README.md +60 -0
  83. package/examples/shaka/README.md +61 -0
  84. package/examples/videojs/README.md +55 -0
  85. package/package.json +66 -8
  86. package/pkg/README.md +296 -49
  87. package/pkg/libbitsub.d.ts +65 -1
  88. package/pkg/libbitsub.js +228 -3
  89. package/pkg/libbitsub_bg.wasm +0 -0
  90. package/pkg/libbitsub_bg.wasm.d.ts +28 -0
  91. package/pkg/package.json +4 -4
  92. package/src/integrations/hlsjs.ts +154 -0
  93. package/src/integrations/index.ts +36 -0
  94. package/src/integrations/react.tsx +176 -0
  95. package/src/integrations/shaka.ts +92 -0
  96. package/src/integrations/shared.ts +171 -0
  97. package/src/integrations/videojs.ts +200 -0
  98. package/src/wrapper.ts +34 -2
@@ -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,14 +2,17 @@
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, 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';
5
+ export type { AssetFetchStrategy, AutoSubtitleSource, AutoVideoSubtitleOptions, LiveSubtitleRenderer, 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, SubtitleSynchronizationMode, SubtitleStreamChunk, RuntimeCapabilities, SubtitlePresentPath, VideoSubtitleOptions, VideoVobSubOptions, RenderResult, SubtitleFrame, VobSubFrame } from './ts/types';
6
6
  export { SubtitleDiagnosticError, createSubtitleDiagnosticError, normalizeSubtitleError } from './ts/diagnostics';
7
7
  export { initWasm, isWasmInitialized } from './ts/wasm';
8
+ export { warmup, ready, isWorkerAvailable, isWorkerReady } from './ts/worker';
8
9
  export { isWebGPUSupported } from './ts/webgpu-renderer';
9
- export { PgsParser, VobSubParserLowLevel, UnifiedSubtitleParser, openSubtitles } from './ts/parsers';
10
+ export { getRuntimeCapabilities, canUseWorkerOffscreenRender, isOffscreenCanvasSupported, isOffscreenCanvas2DSupported, isTransferControlToOffscreenSupported, isCanvas2DSupported } from './ts/capabilities';
11
+ export { PgsParser, DvbParser, VobSubParserLowLevel, UnifiedSubtitleParser, openSubtitles } from './ts/parsers';
10
12
  export { renderFrameData, toBlob, toCanvas, toImageBitmap } from './ts/frame-export';
11
- export { PgsRenderer, VobSubRenderer, createAutoSubtitleRenderer, type SubtitleRendererStats } from './ts/renderers';
13
+ export { PgsRenderer, DvbRenderer, VobSubRenderer, createAutoSubtitleRenderer, type SubtitleRendererStats } from './ts/renderers';
12
14
  export { detectSubtitleFormat } from './ts/utils';
15
+ export { fetchSubtitleAsset, fetchSubtitleText, probeRangeSupport, type AssetFetchOptions, type AssetFetchProgress, type RangeProbeResult } from './ts/range-loader';
13
16
  import { PgsRenderer as _PgsRenderer, VobSubRenderer as _VobSubRenderer } from './ts/renderers';
14
17
  import { UnifiedSubtitleParser as _UnifiedSubtitleParser } from './ts/parsers';
15
18
  /** @deprecated Use PgsRenderer instead */
@@ -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,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"}
1
+ {"version":3,"file":"wrapper.d.ts","sourceRoot":"","sources":["../src/wrapper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,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,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,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;AAEvD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAG7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAExD,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,EAC5B,qCAAqC,EACrC,mBAAmB,EACpB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAG/G,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGpF,OAAO,EACL,WAAW,EACX,WAAW,EACX,cAAc,EACd,0BAA0B,EAC1B,KAAK,qBAAqB,EAC3B,MAAM,gBAAgB,CAAA;AAGvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEjD,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAA;AAM1B,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
@@ -5,16 +5,19 @@
5
5
  export { SubtitleDiagnosticError, createSubtitleDiagnosticError, normalizeSubtitleError } from './ts/diagnostics';
6
6
  // Re-export WASM management
7
7
  export { initWasm, isWasmInitialized } from './ts/wasm';
8
+ export { warmup, ready, isWorkerAvailable, isWorkerReady } from './ts/worker';
8
9
  // Re-export WebGPU utilities
9
10
  export { isWebGPUSupported } from './ts/webgpu-renderer';
11
+ export { getRuntimeCapabilities, canUseWorkerOffscreenRender, isOffscreenCanvasSupported, isOffscreenCanvas2DSupported, isTransferControlToOffscreenSupported, isCanvas2DSupported } from './ts/capabilities';
10
12
  // Re-export parsers
11
- export { PgsParser, VobSubParserLowLevel, UnifiedSubtitleParser, openSubtitles } from './ts/parsers';
13
+ export { PgsParser, DvbParser, VobSubParserLowLevel, UnifiedSubtitleParser, openSubtitles } from './ts/parsers';
12
14
  // Re-export frame export helpers
13
15
  export { renderFrameData, toBlob, toCanvas, toImageBitmap } from './ts/frame-export';
14
16
  // Re-export renderers
15
- export { PgsRenderer, VobSubRenderer, createAutoSubtitleRenderer } from './ts/renderers';
17
+ export { PgsRenderer, DvbRenderer, VobSubRenderer, createAutoSubtitleRenderer } from './ts/renderers';
16
18
  // Re-export format detection utilities
17
19
  export { detectSubtitleFormat } from './ts/utils';
20
+ export { fetchSubtitleAsset, fetchSubtitleText, probeRangeSupport } from './ts/range-loader';
18
21
  // =============================================================================
19
22
  // Legacy Aliases (for backward compatibility)
20
23
  // =============================================================================
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"wrapper.js","sourceRoot":"","sources":["../src/wrapper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA6CH,OAAO,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAEjH,4BAA4B;AAC5B,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAEvD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAE7E,6BAA6B;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAExD,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,EAC5B,qCAAqC,EACrC,mBAAmB,EACpB,MAAM,mBAAmB,CAAA;AAE1B,oBAAoB;AACpB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAE/G,iCAAiC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEpF,sBAAsB;AACtB,OAAO,EACL,WAAW,EACX,WAAW,EACX,cAAc,EACd,0BAA0B,EAE3B,MAAM,gBAAgB,CAAA;AAEvB,uCAAuC;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEjD,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EAIlB,MAAM,mBAAmB,CAAA;AAE1B,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"}
@@ -0,0 +1,38 @@
1
+ # libbitsub player integration recipes
2
+
3
+ Optional adapters ship with the core package as **subpath exports**. They keep `libbitsub` itself dependency-free: player/React packages are optional peer dependencies and are only required when you import that adapter.
4
+
5
+ | Integration | Import | Peer dependency |
6
+ | ----------------- | ----------------------------------------- | ----------------------- |
7
+ | Shared controller | `libbitsub/integrations` (`attachBitSub`) | none beyond `libbitsub` |
8
+ | Video.js | `libbitsub/videojs` | `video.js` >= 7 |
9
+ | Shaka Player | `libbitsub/shaka` | `shaka-player` >= 4 |
10
+ | hls.js | `libbitsub/hlsjs` | `hls.js` >= 1 |
11
+ | React | `libbitsub/react` | `react` >= 18 |
12
+
13
+ Bitmap PGS / VobSub / MKS tracks are **not** native HTML text tracks. Each adapter overlays libbitsub on the player's `HTMLVideoElement`.
14
+
15
+ See the per-player folders for copy-paste recipes:
16
+
17
+ - [videojs](./videojs)
18
+ - [shaka](./shaka)
19
+ - [hlsjs](./hlsjs)
20
+ - [react](./react)
21
+
22
+ ## Shared controller
23
+
24
+ ```ts
25
+ import { attachBitSub } from 'libbitsub/integrations'
26
+
27
+ const bitsub = attachBitSub(videoElement, {
28
+ subUrl: '/subs/movie.sup',
29
+ displaySettings: { scale: 1.05, bottomPadding: 4 }
30
+ })
31
+
32
+ bitsub.setDisplaySettings({ opacity: 0.9 })
33
+ bitsub.load({ subUrl: '/subs/other.sup' })
34
+ bitsub.clear()
35
+ bitsub.dispose()
36
+ ```
37
+
38
+ Prefer deep imports (`libbitsub/videojs`, …) in apps so unused adapters stay out of the bundle graph.
@@ -0,0 +1,53 @@
1
+ # hls.js + libbitsub
2
+
3
+ ## Install
4
+
5
+ ```bash
6
+ npm install libbitsub hls.js
7
+ ```
8
+
9
+ ## Recipe
10
+
11
+ ```ts
12
+ import Hls from 'hls.js'
13
+ import { attachBitSubToHls } from 'libbitsub/hlsjs'
14
+
15
+ const video = document.getElementById('video') as HTMLVideoElement
16
+ const hls = new Hls()
17
+
18
+ hls.loadSource('/media/master.m3u8')
19
+ hls.attachMedia(video)
20
+
21
+ // Can be created before or after attachMedia().
22
+ const bitsub = attachBitSubToHls(hls, {
23
+ subUrl: '/subs/movie.sup',
24
+ displaySettings: { aspectMode: 'contain' },
25
+ onEvent: (event) => {
26
+ if (event.type === 'loaded') {
27
+ console.log('bitmap track ready', event.metadata)
28
+ }
29
+ }
30
+ })
31
+
32
+ // Runtime swap:
33
+ bitsub.load({ subUrl: '/subs/commentary.sup', fileName: 'commentary.sup' })
34
+ bitsub.clear()
35
+
36
+ // Cleanup (also runs if hls.destroy() fires DESTROYING)
37
+ bitsub.dispose()
38
+ hls.destroy()
39
+ ```
40
+
41
+ ## HTML sketch
42
+
43
+ ```html
44
+ <div style="position: relative">
45
+ <video id="video" controls playsinline></video>
46
+ </div>
47
+ ```
48
+
49
+ ## Notes
50
+
51
+ - Binds to `hls.media` and re-attaches on `MEDIA_ATTACHED`.
52
+ - Clears on `MEDIA_DETACHED` and disposes on `DESTROYING`.
53
+ - hls.js continues to own HLS text tracks (WebVTT, etc.); libbitsub only draws external bitmap overlays.
@@ -0,0 +1,60 @@
1
+ # React + libbitsub
2
+
3
+ ## Install
4
+
5
+ ```bash
6
+ npm install libbitsub react react-dom
7
+ ```
8
+
9
+ ## Hook recipe
10
+
11
+ ```tsx
12
+ import { useRef } from 'react'
13
+ import { useBitSub } from 'libbitsub/react'
14
+
15
+ export function VideoWithBitmaps({ src, subUrl }: { src: string; subUrl: string }) {
16
+ const videoRef = useRef<HTMLVideoElement>(null)
17
+ const { error } = useBitSub(videoRef, {
18
+ subUrl,
19
+ fileName: subUrl,
20
+ displaySettings: { scale: 1.05, bottomPadding: 4 },
21
+ onEvent: (event) => {
22
+ if (event.type === 'cue-change') {
23
+ console.log('cue', event.cue)
24
+ }
25
+ }
26
+ })
27
+
28
+ return (
29
+ <div style={{ position: 'relative' }}>
30
+ <video ref={videoRef} src={src} controls playsInline style={{ width: '100%' }} />
31
+ {error ? <p role='alert'>{error.message}</p> : null}
32
+ </div>
33
+ )
34
+ }
35
+ ```
36
+
37
+ ## Overlay component recipe
38
+
39
+ ```tsx
40
+ import { useRef } from 'react'
41
+ import { BitSubOverlay } from 'libbitsub/react'
42
+
43
+ export function Player({ src, subUrl }: { src: string; subUrl: string }) {
44
+ const videoRef = useRef<HTMLVideoElement>(null)
45
+
46
+ return (
47
+ <div style={{ position: 'relative' }}>
48
+ <video ref={videoRef} src={src} controls playsInline />
49
+ <BitSubOverlay videoRef={videoRef} subUrl={subUrl} displaySettings={{ aspectMode: 'cover' }} />
50
+ </div>
51
+ )
52
+ }
53
+ ```
54
+
55
+ ## Notes
56
+
57
+ - Prefer **either** `useBitSub` **or** `BitSubOverlay` on the same video — not both.
58
+ - Parent should be non-static (`relative` is enough) so the canvas overlay can position correctly.
59
+ - Changing `subUrl` / content identity disposes and recreates the renderer; layout-only `displaySettings` updates are applied in place.
60
+ - Call sites that need imperative control can read `controller` from `useBitSub` (`load`, `clear`, `setDisplaySettings`).
@@ -0,0 +1,61 @@
1
+ # Shaka Player + libbitsub
2
+
3
+ ## Install
4
+
5
+ ```bash
6
+ npm install libbitsub shaka-player
7
+ ```
8
+
9
+ ## Recipe
10
+
11
+ ```ts
12
+ import shaka from 'shaka-player'
13
+ import { attachBitSubToShaka } from 'libbitsub/shaka'
14
+
15
+ shaka.polyfill.installAll()
16
+
17
+ const video = document.getElementById('video') as HTMLVideoElement
18
+ const player = new shaka.Player()
19
+ await player.attach(video)
20
+ await player.load('/media/manifest.mpd')
21
+
22
+ // Bitmap tracks are external overlays (not Shaka TextTrack objects).
23
+ const bitsub = attachBitSubToShaka(player, {
24
+ subUrl: '/subs/movie.sup',
25
+ prefetchWindow: { before: 1, after: 2 },
26
+ onError: (error) => console.error(error)
27
+ })
28
+
29
+ // Switch tracks at runtime:
30
+ bitsub.load({
31
+ subUrl: '/subs/movie.idx', // companion .sub inferred / provide subUrl to .sub
32
+ idxUrl: '/subs/movie.idx',
33
+ fileName: 'movie.sub'
34
+ })
35
+
36
+ // Prefer explicit VobSub pair:
37
+ bitsub.load({
38
+ subUrl: '/subs/movie.sub',
39
+ idxUrl: '/subs/movie.idx'
40
+ })
41
+
42
+ bitsub.setDisplaySettings({ safeArea: 5, opacity: 0.95 })
43
+
44
+ // Cleanup
45
+ bitsub.dispose()
46
+ await player.destroy()
47
+ ```
48
+
49
+ ## HTML sketch
50
+
51
+ ```html
52
+ <div style="position: relative">
53
+ <video id="video" controls playsinline></video>
54
+ </div>
55
+ ```
56
+
57
+ ## Notes
58
+
59
+ - Uses `player.getMediaElement()` and requires an `HTMLVideoElement`.
60
+ - Listens for Shaka `loaded` / `unloading` when available to rebind or clear.
61
+ - Keep using Shaka's native text pipeline for WebVTT/TTML; use libbitsub only for PGS/VobSub/MKS bitmaps.
@@ -0,0 +1,55 @@
1
+ # Video.js + libbitsub
2
+
3
+ ## Install
4
+
5
+ ```bash
6
+ npm install libbitsub video.js
7
+ ```
8
+
9
+ ## Recipe
10
+
11
+ ```ts
12
+ import videojs from 'video.js'
13
+ import 'video.js/dist/video-js.css'
14
+ import { registerBitSubPlugin } from 'libbitsub/videojs'
15
+
16
+ registerBitSubPlugin(videojs)
17
+
18
+ const player = videojs('my-video', {
19
+ controls: true,
20
+ sources: [{ src: '/media/movie.mp4', type: 'video/mp4' }]
21
+ })
22
+
23
+ // Autoload a PGS track when the plugin starts:
24
+ const bitsub = player.bitsub({
25
+ subUrl: '/subs/movie.sup',
26
+ displaySettings: { aspectMode: 'cover', bottomPadding: 6 },
27
+ onEvent: (event) => console.log('bitsub', event)
28
+ })
29
+
30
+ // Or load later (e.g. after the user picks a language):
31
+ bitsub.load({
32
+ subUrl: '/subs/movie.eng.sup',
33
+ fileName: 'movie.eng.sup'
34
+ })
35
+
36
+ bitsub.setDisplaySettings({ scale: 1.1 })
37
+ bitsub.clear()
38
+
39
+ // Plugin resources are released with the player:
40
+ // player.dispose()
41
+ ```
42
+
43
+ ## HTML sketch
44
+
45
+ ```html
46
+ <video id="my-video" class="video-js vjs-big-play-centered" playsinline></video>
47
+ ```
48
+
49
+ Ensure the player container can host an absolutely positioned canvas (Video.js already uses non-static positioning on its root).
50
+
51
+ ## Notes
52
+
53
+ - Resolves the tech `<video>` element via `player.tech(true)` with a DOM fallback.
54
+ - Rebinds on `loadeddata` if the tech element is replaced.
55
+ - Emits `bitsubload` / `bitsubclear` on the player for light app wiring.
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "libbitsub",
3
- "version": "1.10.2",
3
+ "version": "1.12.0",
4
4
  "author": "altqx",
5
5
  "license": "MIT",
6
- "description": "High-performance WASM renderer for graphical subtitles (PGS and VobSub)",
6
+ "description": "High-performance WASM renderer for graphical subtitles (PGS, VobSub, and DVB)",
7
7
  "repository": {
8
8
  "type": "git",
9
9
  "url": "https://github.com/altqx/libbitsub"
@@ -12,31 +12,65 @@
12
12
  "libbitsub",
13
13
  "pgs",
14
14
  "vobsub",
15
+ "dvb",
15
16
  "subtitle",
16
17
  "wasm",
17
18
  "rust",
18
19
  "rendering",
19
20
  "video",
20
- "player"
21
+ "player",
22
+ "videojs",
23
+ "shaka",
24
+ "hls.js",
25
+ "react"
21
26
  ],
22
27
  "main": "dist/index.js",
23
28
  "module": "dist/index.js",
24
29
  "types": "dist/index.d.ts",
25
30
  "exports": {
26
31
  ".": {
32
+ "types": "./dist/index.d.ts",
27
33
  "import": "./dist/index.js",
28
34
  "require": "./dist/index.js",
29
- "types": "./dist/index.d.ts"
35
+ "default": "./dist/index.js"
30
36
  },
31
37
  "./pkg": {
38
+ "types": "./pkg/libbitsub.d.ts",
32
39
  "import": "./pkg/libbitsub.js",
33
- "types": "./pkg/libbitsub.d.ts"
40
+ "default": "./pkg/libbitsub.js"
41
+ },
42
+ "./videojs": {
43
+ "types": "./dist/integrations/videojs.d.ts",
44
+ "import": "./dist/integrations/videojs.js",
45
+ "default": "./dist/integrations/videojs.js"
46
+ },
47
+ "./shaka": {
48
+ "types": "./dist/integrations/shaka.d.ts",
49
+ "import": "./dist/integrations/shaka.js",
50
+ "default": "./dist/integrations/shaka.js"
51
+ },
52
+ "./hlsjs": {
53
+ "types": "./dist/integrations/hlsjs.d.ts",
54
+ "import": "./dist/integrations/hlsjs.js",
55
+ "default": "./dist/integrations/hlsjs.js"
56
+ },
57
+ "./react": {
58
+ "types": "./dist/integrations/react.d.ts",
59
+ "import": "./dist/integrations/react.js",
60
+ "default": "./dist/integrations/react.js"
61
+ },
62
+ "./integrations": {
63
+ "types": "./dist/integrations/index.d.ts",
64
+ "import": "./dist/integrations/index.js",
65
+ "default": "./dist/integrations/index.js"
34
66
  }
35
67
  },
36
68
  "files": [
37
69
  "dist",
38
70
  "pkg",
39
- "src/wrapper.ts"
71
+ "src/wrapper.ts",
72
+ "src/integrations",
73
+ "examples"
40
74
  ],
41
75
  "scripts": {
42
76
  "build:wasm": "wasm-pack build --target web --out-dir pkg",
@@ -45,15 +79,39 @@
45
79
  "build:ts": "tsc",
46
80
  "build": "bun run build:wasm:release && bun run build:ts",
47
81
  "clean": "rm -rf pkg pkg-bundler dist target",
48
- "test": "cargo test",
82
+ "test": "cargo test --workspace",
83
+ "test:ts": "bun test src/ts",
84
+ "test:visual": "bun tests/visual/run.mjs",
85
+ "test:all": "bun run test && bun run test:ts && bun run test:visual",
49
86
  "test:wasm": "wasm-pack test --headless --chrome",
50
87
  "format": "cargo fmt && prettier . --write"
51
88
  },
52
89
  "devDependencies": {
90
+ "@types/react": "^19.2.17",
53
91
  "prettier": "^3.9.6",
92
+ "react": "^19.2.8",
54
93
  "typescript": "^7.0.2"
55
94
  },
56
- "peerDependencies": {},
95
+ "peerDependencies": {
96
+ "hls.js": ">=1.0.0",
97
+ "react": ">=18.0.0",
98
+ "shaka-player": ">=4.0.0",
99
+ "video.js": ">=7.0.0"
100
+ },
101
+ "peerDependenciesMeta": {
102
+ "hls.js": {
103
+ "optional": true
104
+ },
105
+ "react": {
106
+ "optional": true
107
+ },
108
+ "shaka-player": {
109
+ "optional": true
110
+ },
111
+ "video.js": {
112
+ "optional": true
113
+ }
114
+ },
57
115
  "engines": {
58
116
  "node": ">=18"
59
117
  },