akarisub 0.2.2 → 1.0.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 (78) hide show
  1. package/README.md +198 -167
  2. package/THIRD_PARTY_NOTICES.md +55 -163
  3. package/dist/COPYRIGHT +56 -164
  4. package/dist/index.d.ts +26 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +24 -147
  7. package/dist/index.js.map +1 -0
  8. package/dist/ts/akarisub.d.ts +323 -0
  9. package/dist/ts/akarisub.d.ts.map +1 -0
  10. package/dist/ts/akarisub.js +2235 -0
  11. package/dist/ts/akarisub.js.map +1 -0
  12. package/dist/ts/timing.d.ts +63 -0
  13. package/dist/ts/timing.d.ts.map +1 -0
  14. package/dist/ts/timing.js +219 -0
  15. package/dist/ts/timing.js.map +1 -0
  16. package/dist/ts/{ts/types.d.ts → types.d.ts} +176 -78
  17. package/dist/ts/types.d.ts.map +1 -0
  18. package/dist/ts/types.js +2 -0
  19. package/dist/ts/{ts/types.js.map → types.js.map} +1 -1
  20. package/dist/ts/{ts/utils.d.ts → utils.d.ts} +24 -37
  21. package/dist/ts/utils.d.ts.map +1 -0
  22. package/dist/ts/{ts/utils.js → utils.js} +12 -56
  23. package/dist/ts/utils.js.map +1 -0
  24. package/dist/ts/wasm.d.ts +12 -0
  25. package/dist/ts/wasm.d.ts.map +1 -0
  26. package/dist/ts/wasm.js +46 -0
  27. package/dist/ts/wasm.js.map +1 -0
  28. package/dist/ts/{ts/webgl2-renderer.d.ts → webgl2-renderer.d.ts} +17 -12
  29. package/dist/ts/webgl2-renderer.d.ts.map +1 -0
  30. package/dist/ts/{ts/webgl2-renderer.js → webgl2-renderer.js} +17 -27
  31. package/dist/ts/webgl2-renderer.js.map +1 -0
  32. package/dist/ts/webgpu-renderer.d.ts +88 -0
  33. package/dist/ts/webgpu-renderer.d.ts.map +1 -0
  34. package/dist/ts/{ts/webgpu-renderer.js → webgpu-renderer.js} +173 -71
  35. package/dist/ts/webgpu-renderer.js.map +1 -0
  36. package/dist/ts/worker.d.ts +2 -0
  37. package/dist/ts/{ts/worker.d.ts.map → worker.d.ts.map} +1 -1
  38. package/dist/ts/{ts/worker.js → worker.js} +1064 -264
  39. package/dist/ts/worker.js.map +1 -0
  40. package/dist/wrapper.d.ts +8 -0
  41. package/dist/wrapper.d.ts.map +1 -0
  42. package/dist/{ts/index.js → wrapper.js} +4 -14
  43. package/dist/wrapper.js.map +1 -0
  44. package/package.json +24 -22
  45. package/pkg/akarisub.js +53 -0
  46. package/{dist/akarisub-worker.wasm → pkg/akarisub.wasm} +0 -0
  47. package/src/wrapper.ts +46 -0
  48. package/dist/akarisub-worker.js +0 -39
  49. package/dist/akarisub.umd.js +0 -159
  50. package/dist/ts/index.d.ts +0 -14
  51. package/dist/ts/index.d.ts.map +0 -1
  52. package/dist/ts/index.js.map +0 -1
  53. package/dist/ts/ts/akarisub.d.ts +0 -225
  54. package/dist/ts/ts/akarisub.d.ts.map +0 -1
  55. package/dist/ts/ts/akarisub.js +0 -1073
  56. package/dist/ts/ts/akarisub.js.map +0 -1
  57. package/dist/ts/ts/types.d.ts.map +0 -1
  58. package/dist/ts/ts/types.js +0 -5
  59. package/dist/ts/ts/utils.d.ts.map +0 -1
  60. package/dist/ts/ts/utils.js.map +0 -1
  61. package/dist/ts/ts/webgl2-renderer.d.ts.map +0 -1
  62. package/dist/ts/ts/webgl2-renderer.js.map +0 -1
  63. package/dist/ts/ts/webgpu-renderer.d.ts +0 -62
  64. package/dist/ts/ts/webgpu-renderer.d.ts.map +0 -1
  65. package/dist/ts/ts/webgpu-renderer.js.map +0 -1
  66. package/dist/ts/ts/worker.d.ts +0 -6
  67. package/dist/ts/ts/worker.js.map +0 -1
  68. package/dist/ts/wrapper.d.ts +0 -8
  69. package/dist/ts/wrapper.d.ts.map +0 -1
  70. package/dist/ts/wrapper.js +0 -9
  71. package/dist/ts/wrapper.js.map +0 -1
  72. package/src/ts/akarisub.ts +0 -1272
  73. package/src/ts/types.ts +0 -397
  74. package/src/ts/utils.ts +0 -512
  75. package/src/ts/webgl2-renderer.ts +0 -426
  76. package/src/ts/webgpu-renderer.ts +0 -691
  77. package/src/ts/worker.ts +0 -2052
  78. /package/{dist → assets}/default.woff2 +0 -0
@@ -1,225 +0,0 @@
1
- /**
2
- * Main AkariSub class - TypeScript implementation.
3
- * High-level ASS/SSA subtitle renderer for web browsers using libass.
4
- */
5
- import type { AkariSubOptions, ASSEvent, ASSStyle, PerformanceStats } from './types';
6
- import type { EncryptedSubtitleContent } from './types';
7
- /**
8
- * AkariSub - JavaScript ASS/SSA Subtitle Renderer
9
- *
10
- * Renders ASS/SSA subtitles on an HTML5 video element using libass compiled to WebAssembly.
11
- *
12
- * @example
13
- * ```typescript
14
- * const renderer = new AkariSub({
15
- * video: document.querySelector('video'),
16
- * subUrl: '/subtitles/example.ass',
17
- * workerUrl: '/akarisub-worker.js'
18
- * });
19
- *
20
- * // Later, cleanup
21
- * renderer.destroy();
22
- * ```
23
- */
24
- export default class AkariSub extends EventTarget {
25
- private static readonly MAX_PENDING_DEMANDS;
26
- private static _hasAlphaBug;
27
- private static _hasBitmapBug;
28
- private _loaded;
29
- private _init;
30
- private _onDemandRender;
31
- private _offscreenRender;
32
- private _video?;
33
- private _videoWidth;
34
- private _videoHeight;
35
- private _videoColorSpace;
36
- private _canvas;
37
- private _canvasParent?;
38
- private _bufferCanvas;
39
- private _bufferCtx;
40
- private _canvasctrl;
41
- private _ctx;
42
- private _lastRenderTime;
43
- private _playstate;
44
- private _destroyed;
45
- private _workerReady;
46
- private _ro?;
47
- private _worker;
48
- private _pendingDemandTimes;
49
- private readonly _isLikelyWebKit;
50
- private _activeDemandStartedAt;
51
- private _smoothedDemandLatencyMs;
52
- private _boundResize;
53
- private _boundTimeUpdate;
54
- private _boundSetRate;
55
- private _boundUpdateColorSpace;
56
- private _boundHandleRVFC;
57
- private _gpuRenderer;
58
- private _rendererType;
59
- private _onCanvasFallback?;
60
- private _lastRenderWidth;
61
- private _lastRenderHeight;
62
- private _gpuBitmapImages;
63
- timeOffset: number;
64
- debug: boolean;
65
- prescaleFactor: number;
66
- prescaleHeightLimit: number;
67
- maxRenderHeight: number;
68
- busy: boolean;
69
- renderAhead: number;
70
- constructor(options: AkariSubOptions);
71
- private static _testImageBugs;
72
- private static _test;
73
- private static _getSubtitleTransfers;
74
- /**
75
- * Attempt to initialise the best available GPU renderer.
76
- */
77
- private _initGPURenderer;
78
- /** Returns which renderer backend is currently active. */
79
- get rendererType(): 'webgpu' | 'webgl2' | 'canvas2d';
80
- /** @deprecated Use rendererType === 'webgpu' */
81
- get isUsingWebGPU(): boolean;
82
- /** Returns true when a hardware-accelerated GPU renderer is active. */
83
- get isUsingGPURenderer(): boolean;
84
- private _createCanvas;
85
- /**
86
- * Resize the canvas to given parameters. Auto-generated if values are omitted.
87
- */
88
- resize(width?: number, height?: number, top?: number, left?: number, force?: boolean): void;
89
- private _timeupdate;
90
- /**
91
- * Change the video to use as target for event listeners.
92
- */
93
- setVideo(video: HTMLVideoElement): void;
94
- /**
95
- * Overwrites the current subtitle content by URL.
96
- */
97
- setTrackByUrl(url: string): void;
98
- /**
99
- * Overwrites the current subtitle content.
100
- */
101
- setTrack(content: string | Uint8Array | ArrayBuffer): void;
102
- /**
103
- * Overwrites the current subtitle content with encrypted v2 payloads.
104
- * Decryption happens inside the AkariSub worker so plaintext ASS text is not
105
- * materialized in the main thread.
106
- */
107
- setEncryptedTrack(content: EncryptedSubtitleContent): void;
108
- /**
109
- * Free currently used subtitle track.
110
- */
111
- freeTrack(): void;
112
- /**
113
- * Sets the playback state of the media.
114
- */
115
- setIsPaused(isPaused: boolean): void;
116
- /**
117
- * Sets the playback rate of the media.
118
- */
119
- setRate(rate: number): void;
120
- /**
121
- * Sets the current time, playback state and rate of the subtitles.
122
- */
123
- setCurrentTime(isPaused?: boolean, currentTime?: number, rate?: number): void;
124
- /**
125
- * Create a new ASS event directly.
126
- */
127
- createEvent(event: Partial<ASSEvent>): void;
128
- /**
129
- * Overwrite the data of the event with the specified index.
130
- */
131
- setEvent(event: Partial<ASSEvent>, index: number): void;
132
- /**
133
- * Remove the event with the specified index.
134
- */
135
- removeEvent(index: number): void;
136
- /**
137
- * Get all ASS events.
138
- */
139
- getEvents(): Promise<ASSEvent[]>;
140
- /**
141
- * Set a style override.
142
- */
143
- styleOverride(style: Partial<ASSStyle>): void;
144
- /**
145
- * Disable style override.
146
- */
147
- disableStyleOverride(): void;
148
- /**
149
- * Create a new ASS style directly.
150
- */
151
- createStyle(style: Partial<ASSStyle>): void;
152
- /**
153
- * Overwrite the data of the style with the specified index.
154
- */
155
- setStyle(style: Partial<ASSStyle>, index: number): void;
156
- /**
157
- * Remove the style with the specified index.
158
- */
159
- removeStyle(index: number): void;
160
- /**
161
- * Get all ASS styles.
162
- */
163
- getStyles(): Promise<ASSStyle[]>;
164
- /**
165
- * Adds a font to the renderer.
166
- */
167
- addFont(font: string | Uint8Array): void;
168
- /**
169
- * Changes the font family of the default font.
170
- */
171
- setDefaultFont(font: string): void;
172
- /**
173
- * Get real-time performance statistics.
174
- */
175
- getStats(): Promise<PerformanceStats>;
176
- /**
177
- * Reset performance statistics counters.
178
- */
179
- resetStats(): Promise<void>;
180
- /**
181
- * Get event count
182
- */
183
- getEventCount(): Promise<number>;
184
- /**
185
- * Get style count
186
- */
187
- getStyleCount(): Promise<number>;
188
- private _sendLocalFont;
189
- private _getLocalFont;
190
- private _unbusy;
191
- private _markDemandDispatched;
192
- private _observeDemandCompletion;
193
- private _getDemandPipelineLeadSeconds;
194
- private _enqueueDemand;
195
- private _handleRVFC;
196
- private _demandRender;
197
- private _detachOffscreen;
198
- private _reAttachOffscreen;
199
- private _updateColorSpace;
200
- private _verifyColorSpace;
201
- private _render;
202
- private _renderGPU;
203
- private _ready;
204
- /**
205
- * Handler for partial_ready message from worker.
206
- * Emitted early for large subtitle files to allow playback to start
207
- * while font loading and track parsing continues.
208
- */
209
- private _partial_ready;
210
- private _trackReady;
211
- /**
212
- * Send data and execute function in the worker.
213
- */
214
- sendMessage(target: string, data?: Record<string, any>, transferable?: Transferable[]): Promise<void>;
215
- private _fetchFromWorker;
216
- private _console;
217
- private _onmessage;
218
- private _error;
219
- private _removeListeners;
220
- /**
221
- * Destroy the object, worker, listeners and all data.
222
- */
223
- destroy(err?: Error | string): Error | undefined;
224
- }
225
- //# sourceMappingURL=akarisub.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"akarisub.d.ts","sourceRoot":"","sources":["../../../src/ts/akarisub.ts"],"names":[],"mappings":"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"}