avbridge 2.11.0 → 2.12.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 (84) hide show
  1. package/CHANGELOG.md +111 -0
  2. package/dist/{avi-B5CQYB7L.cjs → avi-32UABODO.cjs} +14 -6
  3. package/dist/avi-32UABODO.cjs.map +1 -0
  4. package/dist/{avi-2ILLBNPQ.cjs → avi-5BPR6QUX.cjs} +14 -6
  5. package/dist/avi-5BPR6QUX.cjs.map +1 -0
  6. package/dist/{avi-RWWPN2PR.js → avi-BLIH7KKV.js} +13 -5
  7. package/dist/avi-BLIH7KKV.js.map +1 -0
  8. package/dist/{avi-JXU4GQL2.js → avi-GX2H34IQ.js} +13 -5
  9. package/dist/avi-GX2H34IQ.js.map +1 -0
  10. package/dist/{chunk-DCSOQH2N.js → chunk-3AI5WFFN.js} +40 -16
  11. package/dist/chunk-3AI5WFFN.js.map +1 -0
  12. package/dist/{chunk-2NSOOMXW.js → chunk-3YKWU4FM.js} +3 -3
  13. package/dist/{chunk-2NSOOMXW.js.map → chunk-3YKWU4FM.js.map} +1 -1
  14. package/dist/{chunk-GYIJU44C.js → chunk-5CX7BVVV.js} +5 -5
  15. package/dist/{chunk-GYIJU44C.js.map → chunk-5CX7BVVV.js.map} +1 -1
  16. package/dist/{chunk-CL6UEUQF.js → chunk-B76QWPFM.js} +5 -5
  17. package/dist/{chunk-CL6UEUQF.js.map → chunk-B76QWPFM.js.map} +1 -1
  18. package/dist/{chunk-IHNHHEA2.js → chunk-BN7BRTLY.js} +143 -32
  19. package/dist/chunk-BN7BRTLY.js.map +1 -0
  20. package/dist/{chunk-OTFS7DC4.cjs → chunk-E5MAM2P4.cjs} +14 -14
  21. package/dist/{chunk-OTFS7DC4.cjs.map → chunk-E5MAM2P4.cjs.map} +1 -1
  22. package/dist/{chunk-L7A3ECI2.cjs → chunk-HZUVMXBN.cjs} +4 -4
  23. package/dist/{chunk-L7A3ECI2.cjs.map → chunk-HZUVMXBN.cjs.map} +1 -1
  24. package/dist/{chunk-37UOSAVI.cjs → chunk-UM6WCSGL.cjs} +157 -46
  25. package/dist/chunk-UM6WCSGL.cjs.map +1 -0
  26. package/dist/{chunk-BYGZN4Z5.cjs → chunk-VLI3Y6IJ.cjs} +5 -5
  27. package/dist/{chunk-BYGZN4Z5.cjs.map → chunk-VLI3Y6IJ.cjs.map} +1 -1
  28. package/dist/{chunk-Z33SBWL5.cjs → chunk-YPZFGJV3.cjs} +40 -16
  29. package/dist/chunk-YPZFGJV3.cjs.map +1 -0
  30. package/dist/element-browser.js +186 -43
  31. package/dist/element-browser.js.map +1 -1
  32. package/dist/element.cjs +5 -5
  33. package/dist/element.d.cts +1 -1
  34. package/dist/element.d.ts +1 -1
  35. package/dist/element.js +4 -4
  36. package/dist/index.cjs +21 -21
  37. package/dist/index.d.cts +2 -2
  38. package/dist/index.d.ts +2 -2
  39. package/dist/index.js +9 -9
  40. package/dist/{libav-demux-3N5Y3VQA.cjs → libav-demux-575OYCT2.cjs} +9 -9
  41. package/dist/{libav-demux-3N5Y3VQA.cjs.map → libav-demux-575OYCT2.cjs.map} +1 -1
  42. package/dist/{libav-demux-JXD4OTLM.js → libav-demux-SXZDLC7W.js} +4 -4
  43. package/dist/{libav-demux-JXD4OTLM.js.map → libav-demux-SXZDLC7W.js.map} +1 -1
  44. package/dist/libav-http-reader-2S5HAHW4.js +3 -0
  45. package/dist/{libav-http-reader-WXG3Z7AI.js.map → libav-http-reader-2S5HAHW4.js.map} +1 -1
  46. package/dist/libav-http-reader-Q356EO2K.cjs +16 -0
  47. package/dist/{libav-http-reader-AZLE7YFS.cjs.map → libav-http-reader-Q356EO2K.cjs.map} +1 -1
  48. package/dist/{player-DDdNVFDv.d.cts → player-bQ6n4hVp.d.cts} +15 -0
  49. package/dist/{player-DDdNVFDv.d.ts → player-bQ6n4hVp.d.ts} +15 -0
  50. package/dist/player.cjs +264 -53
  51. package/dist/player.cjs.map +1 -1
  52. package/dist/player.d.cts +22 -0
  53. package/dist/player.d.ts +22 -0
  54. package/dist/player.js +264 -53
  55. package/dist/player.js.map +1 -1
  56. package/dist/remux-NSBJFMLG.cjs +35 -0
  57. package/dist/{remux-KUS5GIL6.cjs.map → remux-NSBJFMLG.cjs.map} +1 -1
  58. package/dist/remux-PHUHO3VV.js +10 -0
  59. package/dist/{remux-56V7LDAD.js.map → remux-PHUHO3VV.js.map} +1 -1
  60. package/package.json +1 -1
  61. package/src/element/avbridge-player.ts +123 -23
  62. package/src/element/player-styles.ts +13 -1
  63. package/src/player.ts +3 -3
  64. package/src/probe/avi.ts +34 -2
  65. package/src/strategies/fallback/decoder.ts +148 -19
  66. package/src/strategies/fallback/video-renderer.ts +41 -3
  67. package/src/strategies/hybrid/decoder.ts +34 -9
  68. package/src/types.ts +15 -0
  69. package/src/util/libav-http-reader.ts +58 -19
  70. package/vendor/libav/avbridge/libav-6.8.8.0-avbridge.wasm.mjs +1 -1
  71. package/vendor/libav/avbridge/libav-6.8.8.0-avbridge.wasm.wasm +0 -0
  72. package/vendor/libav/avbridge/libav-avbridge.mjs +1 -1
  73. package/dist/avi-2ILLBNPQ.cjs.map +0 -1
  74. package/dist/avi-B5CQYB7L.cjs.map +0 -1
  75. package/dist/avi-JXU4GQL2.js.map +0 -1
  76. package/dist/avi-RWWPN2PR.js.map +0 -1
  77. package/dist/chunk-37UOSAVI.cjs.map +0 -1
  78. package/dist/chunk-DCSOQH2N.js.map +0 -1
  79. package/dist/chunk-IHNHHEA2.js.map +0 -1
  80. package/dist/chunk-Z33SBWL5.cjs.map +0 -1
  81. package/dist/libav-http-reader-AZLE7YFS.cjs +0 -16
  82. package/dist/libav-http-reader-WXG3Z7AI.js +0 -3
  83. package/dist/remux-56V7LDAD.js +0 -10
  84. package/dist/remux-KUS5GIL6.cjs +0 -35
package/dist/player.d.cts CHANGED
@@ -209,6 +209,14 @@ interface CreatePlayerOptions {
209
209
  * for interceptors, logging, or environments without a global fetch.
210
210
  */
211
211
  fetchFn?: FetchFn;
212
+ /**
213
+ * Byte budget for the libav HTTP reader's LRU cache of fetched ranges.
214
+ * Defaults to 8 MB. Set to `0` to disable caching. Raise this when the
215
+ * app plays seek-heavy legacy-container media from URLs — hot regions
216
+ * (header/moov, tail index, current window) stay resident instead of
217
+ * being re-fetched on every bounce.
218
+ */
219
+ cacheBytes?: number;
212
220
  }
213
221
  /** Signature-compatible with `globalThis.fetch`. */
214
222
  type FetchFn = (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
@@ -216,6 +224,13 @@ type FetchFn = (input: RequestInfo | URL, init?: RequestInit) => Promise<Respons
216
224
  interface TransportConfig {
217
225
  requestInit?: RequestInit;
218
226
  fetchFn?: FetchFn;
227
+ /**
228
+ * Byte budget for the libav HTTP reader's LRU cache of fetched ranges.
229
+ * Defaults to 8 MB. Set to `0` to disable caching entirely. Higher
230
+ * values help seek-heavy network playback keep hot regions
231
+ * (header/moov, tail index, current read) resident.
232
+ */
233
+ cacheBytes?: number;
219
234
  }
220
235
  /** Events emitted by {@link UnifiedPlayer}. Strongly typed. */
221
236
  interface PlayerEventMap {
@@ -380,12 +395,19 @@ declare class AvbridgePlayerElement extends HTMLElement {
380
395
  private _updateSeekTooltip;
381
396
  private _updateSeekVisuals;
382
397
  private _updateTime;
398
+ /**
399
+ * Render every buffered range as its own segment so gaps (common on MSE
400
+ * after seeks) are visible. Not gated by `_userSeeking` — ranges should
401
+ * keep updating while the user scrubs, and runs cheaply on `progress`.
402
+ */
403
+ private _updateBuffered;
383
404
  private _toggleMute;
384
405
  private _updateVolume;
385
406
  private _toggleSettings;
386
407
  private _fitSettingsToPlayer;
387
408
  private _closeSettings;
388
409
  private _buildSettingsMenu;
410
+ private _statsPrev;
389
411
  private _toggleStats;
390
412
  private _updateStats;
391
413
  private _toggleFullscreen;
package/dist/player.d.ts CHANGED
@@ -209,6 +209,14 @@ interface CreatePlayerOptions {
209
209
  * for interceptors, logging, or environments without a global fetch.
210
210
  */
211
211
  fetchFn?: FetchFn;
212
+ /**
213
+ * Byte budget for the libav HTTP reader's LRU cache of fetched ranges.
214
+ * Defaults to 8 MB. Set to `0` to disable caching. Raise this when the
215
+ * app plays seek-heavy legacy-container media from URLs — hot regions
216
+ * (header/moov, tail index, current window) stay resident instead of
217
+ * being re-fetched on every bounce.
218
+ */
219
+ cacheBytes?: number;
212
220
  }
213
221
  /** Signature-compatible with `globalThis.fetch`. */
214
222
  type FetchFn = (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
@@ -216,6 +224,13 @@ type FetchFn = (input: RequestInfo | URL, init?: RequestInit) => Promise<Respons
216
224
  interface TransportConfig {
217
225
  requestInit?: RequestInit;
218
226
  fetchFn?: FetchFn;
227
+ /**
228
+ * Byte budget for the libav HTTP reader's LRU cache of fetched ranges.
229
+ * Defaults to 8 MB. Set to `0` to disable caching entirely. Higher
230
+ * values help seek-heavy network playback keep hot regions
231
+ * (header/moov, tail index, current read) resident.
232
+ */
233
+ cacheBytes?: number;
219
234
  }
220
235
  /** Events emitted by {@link UnifiedPlayer}. Strongly typed. */
221
236
  interface PlayerEventMap {
@@ -380,12 +395,19 @@ declare class AvbridgePlayerElement extends HTMLElement {
380
395
  private _updateSeekTooltip;
381
396
  private _updateSeekVisuals;
382
397
  private _updateTime;
398
+ /**
399
+ * Render every buffered range as its own segment so gaps (common on MSE
400
+ * after seeks) are visible. Not gated by `_userSeeking` — ranges should
401
+ * keep updating while the user scrubs, and runs cheaply on `progress`.
402
+ */
403
+ private _updateBuffered;
383
404
  private _toggleMute;
384
405
  private _updateVolume;
385
406
  private _toggleSettings;
386
407
  private _fitSettingsToPlayer;
387
408
  private _closeSettings;
388
409
  private _buildSettingsMenu;
410
+ private _statsPrev;
389
411
  private _toggleStats;
390
412
  private _updateStats;
391
413
  private _toggleFullscreen;