libbitsub 1.0.0 → 1.1.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.
package/pkg/README.md CHANGED
@@ -168,6 +168,60 @@ renderer.resetDisplaySettings()
168
168
  - Positive values move down (e.g., `10` moves down by 10% of height)
169
169
  - Range: `-50` to `50`
170
170
 
171
+ ### Performance Statistics
172
+
173
+ Both `PgsRenderer` and `VobSubRenderer` provide real-time performance metrics:
174
+
175
+ ```typescript
176
+ // Get performance statistics
177
+ const stats = renderer.getStats()
178
+ console.log(stats)
179
+ // Output:
180
+ // {
181
+ // framesRendered: 120,
182
+ // framesDropped: 2,
183
+ // avgRenderTime: 1.45,
184
+ // maxRenderTime: 8.32,
185
+ // minRenderTime: 0.12,
186
+ // lastRenderTime: 1.23,
187
+ // renderFps: 60,
188
+ // usingWorker: true,
189
+ // cachedFrames: 5,
190
+ // pendingRenders: 0,
191
+ // totalEntries: 847,
192
+ // currentIndex: 42
193
+ // }
194
+
195
+ // Example: Display stats in a debug overlay
196
+ setInterval(() => {
197
+ const stats = renderer.getStats()
198
+ debugOverlay.textContent = `
199
+ FPS: ${stats.renderFps}
200
+ Frames: ${stats.framesRendered} (dropped: ${stats.framesDropped})
201
+ Avg render: ${stats.avgRenderTime}ms
202
+ Worker: ${stats.usingWorker ? 'Yes' : 'No'}
203
+ Cache: ${stats.cachedFrames} frames
204
+ `
205
+ }, 1000)
206
+ ```
207
+
208
+ **Stats Reference:**
209
+
210
+ | Property | Type | Description |
211
+ |----------|------|-------------|
212
+ | `framesRendered` | number | Total frames rendered since initialization |
213
+ | `framesDropped` | number | Frames dropped due to slow rendering (>16.67ms) |
214
+ | `avgRenderTime` | number | Average render time in milliseconds (rolling 60-sample window) |
215
+ | `maxRenderTime` | number | Maximum render time in milliseconds |
216
+ | `minRenderTime` | number | Minimum render time in milliseconds |
217
+ | `lastRenderTime` | number | Most recent render time in milliseconds |
218
+ | `renderFps` | number | Current renders per second (based on last 1 second) |
219
+ | `usingWorker` | boolean | Whether rendering is using Web Worker (off-main-thread) |
220
+ | `cachedFrames` | number | Number of decoded frames currently cached |
221
+ | `pendingRenders` | number | Number of frames currently being decoded asynchronously |
222
+ | `totalEntries` | number | Total subtitle entries/display sets in the loaded file |
223
+ | `currentIndex` | number | Index of the currently displayed subtitle |
224
+
171
225
  ## Low-Level API (Programmatic Use)
172
226
 
173
227
  For more control over rendering, use the low-level parsers directly.
@@ -267,6 +321,7 @@ parser.dispose()
267
321
  - `getDisplaySettings(): SubtitleDisplaySettings` - Get current display settings
268
322
  - `setDisplaySettings(settings: Partial<SubtitleDisplaySettings>): void` - Update display settings
269
323
  - `resetDisplaySettings(): void` - Reset display settings to defaults
324
+ - `getStats(): SubtitleRendererStats` - Get performance statistics
270
325
  - `dispose(): void` - Clean up all resources
271
326
 
272
327
  #### `VobSubRenderer`
@@ -275,6 +330,7 @@ parser.dispose()
275
330
  - `getDisplaySettings(): SubtitleDisplaySettings` - Get current display settings
276
331
  - `setDisplaySettings(settings: Partial<SubtitleDisplaySettings>): void` - Update display settings
277
332
  - `resetDisplaySettings(): void` - Reset display settings to defaults
333
+ - `getStats(): SubtitleRendererStats` - Get performance statistics
278
334
  - `dispose(): void` - Clean up all resources
279
335
 
280
336
  ### Low-Level (Programmatic)
@@ -338,6 +394,25 @@ interface SubtitleDisplaySettings {
338
394
  }
339
395
  ```
340
396
 
397
+ #### `SubtitleRendererStats`
398
+
399
+ ```typescript
400
+ interface SubtitleRendererStats {
401
+ framesRendered: number // Total frames rendered since initialization
402
+ framesDropped: number // Frames dropped due to slow rendering
403
+ avgRenderTime: number // Average render time in milliseconds
404
+ maxRenderTime: number // Maximum render time in milliseconds
405
+ minRenderTime: number // Minimum render time in milliseconds
406
+ lastRenderTime: number // Last render time in milliseconds
407
+ renderFps: number // Current FPS (renders per second)
408
+ usingWorker: boolean // Whether rendering is using web worker
409
+ cachedFrames: number // Number of cached frames
410
+ pendingRenders: number // Number of pending renders
411
+ totalEntries: number // Total subtitle entries/display sets
412
+ currentIndex: number // Current subtitle index being displayed
413
+ }
414
+ ```
415
+
341
416
  #### `SubtitleData`
342
417
 
343
418
  ```typescript
@@ -353,3 +428,10 @@ interface SubtitleCompositionData {
353
428
  y: number // Y position
354
429
  }
355
430
  ```
431
+
432
+ ## License
433
+
434
+ Licensed under either of
435
+
436
+ - Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://apache.org/licenses/LICENSE-2.0)
437
+ - MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
Binary file
package/pkg/package.json CHANGED
@@ -5,8 +5,8 @@
5
5
  "altqx"
6
6
  ],
7
7
  "description": "High-performance WASM renderer for graphical subtitles (PGS and VobSub)",
8
- "version": "1.0.0",
9
- "license": "GPL-3.0",
8
+ "version": "1.1.1",
9
+ "license": "MIT OR Apache-2.0",
10
10
  "repository": {
11
11
  "type": "git",
12
12
  "url": "https://github.com/altqx/libbitsub"