avbridge 2.11.0 → 2.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 (72) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/dist/{avi-B5CQYB7L.cjs → avi-EQE6AR75.cjs} +4 -4
  3. package/dist/{avi-2ILLBNPQ.cjs.map → avi-EQE6AR75.cjs.map} +1 -1
  4. package/dist/{avi-RWWPN2PR.js → avi-NNHH4AAA.js} +3 -3
  5. package/dist/{avi-JXU4GQL2.js.map → avi-NNHH4AAA.js.map} +1 -1
  6. package/dist/{avi-JXU4GQL2.js → avi-S7EY54YA.js} +3 -3
  7. package/dist/{avi-RWWPN2PR.js.map → avi-S7EY54YA.js.map} +1 -1
  8. package/dist/{avi-2ILLBNPQ.cjs → avi-Y3N325WZ.cjs} +4 -4
  9. package/dist/{avi-B5CQYB7L.cjs.map → avi-Y3N325WZ.cjs.map} +1 -1
  10. package/dist/{chunk-GYIJU44C.js → chunk-2LNXMGT6.js} +5 -5
  11. package/dist/{chunk-GYIJU44C.js.map → chunk-2LNXMGT6.js.map} +1 -1
  12. package/dist/{chunk-DCSOQH2N.js → chunk-3AI5WFFN.js} +40 -16
  13. package/dist/chunk-3AI5WFFN.js.map +1 -0
  14. package/dist/{chunk-2NSOOMXW.js → chunk-3YKWU4FM.js} +3 -3
  15. package/dist/{chunk-2NSOOMXW.js.map → chunk-3YKWU4FM.js.map} +1 -1
  16. package/dist/{chunk-CL6UEUQF.js → chunk-5Y5BTB5D.js} +5 -5
  17. package/dist/{chunk-CL6UEUQF.js.map → chunk-5Y5BTB5D.js.map} +1 -1
  18. package/dist/{chunk-37UOSAVI.cjs → chunk-7EF4VTUS.cjs} +23 -23
  19. package/dist/{chunk-IHNHHEA2.js.map → chunk-7EF4VTUS.cjs.map} +1 -1
  20. package/dist/{chunk-OTFS7DC4.cjs → chunk-GJBNLPGI.cjs} +14 -14
  21. package/dist/{chunk-OTFS7DC4.cjs.map → chunk-GJBNLPGI.cjs.map} +1 -1
  22. package/dist/{chunk-BYGZN4Z5.cjs → chunk-HBHSUGNI.cjs} +5 -5
  23. package/dist/{chunk-BYGZN4Z5.cjs.map → chunk-HBHSUGNI.cjs.map} +1 -1
  24. package/dist/{chunk-L7A3ECI2.cjs → chunk-HZUVMXBN.cjs} +4 -4
  25. package/dist/{chunk-L7A3ECI2.cjs.map → chunk-HZUVMXBN.cjs.map} +1 -1
  26. package/dist/{chunk-Z33SBWL5.cjs → chunk-YPZFGJV3.cjs} +40 -16
  27. package/dist/chunk-YPZFGJV3.cjs.map +1 -0
  28. package/dist/{chunk-IHNHHEA2.js → chunk-Z26PXRUY.js} +9 -9
  29. package/dist/chunk-Z26PXRUY.js.map +1 -0
  30. package/dist/element-browser.js +42 -18
  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 +60 -15
  51. package/dist/player.cjs.map +1 -1
  52. package/dist/player.d.cts +21 -0
  53. package/dist/player.d.ts +21 -0
  54. package/dist/player.js +60 -15
  55. package/dist/player.js.map +1 -1
  56. package/dist/remux-7TA4FKTY.js +10 -0
  57. package/dist/{remux-56V7LDAD.js.map → remux-7TA4FKTY.js.map} +1 -1
  58. package/dist/remux-VPKCLHHM.cjs +35 -0
  59. package/dist/{remux-KUS5GIL6.cjs.map → remux-VPKCLHHM.cjs.map} +1 -1
  60. package/package.json +1 -1
  61. package/src/element/avbridge-player.ts +36 -8
  62. package/src/element/player-styles.ts +13 -1
  63. package/src/player.ts +3 -3
  64. package/src/types.ts +15 -0
  65. package/src/util/libav-http-reader.ts +58 -19
  66. package/dist/chunk-37UOSAVI.cjs.map +0 -1
  67. package/dist/chunk-DCSOQH2N.js.map +0 -1
  68. package/dist/chunk-Z33SBWL5.cjs.map +0 -1
  69. package/dist/libav-http-reader-AZLE7YFS.cjs +0 -16
  70. package/dist/libav-http-reader-WXG3Z7AI.js +0 -3
  71. package/dist/remux-56V7LDAD.js +0 -10
  72. package/dist/remux-KUS5GIL6.cjs +0 -35
@@ -29513,7 +29513,8 @@ async function prepareLibavInput(libav, filename, source, transport) {
29513
29513
  if (source.kind === "url") {
29514
29514
  const handle = await attachLibavHttpReader(libav, filename, source.url, {
29515
29515
  requestInit: transport?.requestInit,
29516
- fetchFn: transport?.fetchFn
29516
+ fetchFn: transport?.fetchFn,
29517
+ cacheBytes: transport?.cacheBytes
29517
29518
  });
29518
29519
  return {
29519
29520
  filename,
@@ -29575,7 +29576,9 @@ async function attachLibavHttpReader(libav, filename, url2, options = {}) {
29575
29576
  }
29576
29577
  await libav.mkblockreaderdev(filename, size);
29577
29578
  let detached = false;
29578
- let cached = null;
29579
+ const cache2 = /* @__PURE__ */ new Map();
29580
+ let cacheBytes = 0;
29581
+ const cacheBudget = Math.max(0, options.cacheBytes ?? DEFAULT_CACHE_BYTES);
29579
29582
  let inflight = null;
29580
29583
  function clampReadLength(requested) {
29581
29584
  const doubled = requested * 2;
@@ -29583,14 +29586,33 @@ async function attachLibavHttpReader(libav, filename, url2, options = {}) {
29583
29586
  if (doubled > MAX_READ) return MAX_READ;
29584
29587
  return doubled;
29585
29588
  }
29586
- function cacheCovers(pos, length) {
29587
- if (!cached) return false;
29588
- return pos >= cached.pos && pos + length <= cached.pos + cached.bytes.byteLength;
29589
+ function cacheLookup(pos, length) {
29590
+ for (const [blockPos, bytes2] of cache2) {
29591
+ if (pos >= blockPos && pos + length <= blockPos + bytes2.byteLength) {
29592
+ cache2.delete(blockPos);
29593
+ cache2.set(blockPos, bytes2);
29594
+ const offset = pos - blockPos;
29595
+ return bytes2.subarray(offset, offset + length);
29596
+ }
29597
+ }
29598
+ return null;
29589
29599
  }
29590
- function sliceFromCache(pos, length) {
29591
- if (!cached) throw new Error("sliceFromCache called with no cache");
29592
- const offset = pos - cached.pos;
29593
- return cached.bytes.subarray(offset, offset + length);
29600
+ function cacheInsert(pos, bytes2) {
29601
+ const existing = cache2.get(pos);
29602
+ if (existing) {
29603
+ cacheBytes -= existing.byteLength;
29604
+ cache2.delete(pos);
29605
+ }
29606
+ cache2.set(pos, bytes2);
29607
+ cacheBytes += bytes2.byteLength;
29608
+ while (cacheBytes > cacheBudget && cache2.size > 0) {
29609
+ const oldestKey = cache2.keys().next().value;
29610
+ if (oldestKey === void 0) break;
29611
+ const oldest = cache2.get(oldestKey);
29612
+ if (!oldest) break;
29613
+ cache2.delete(oldestKey);
29614
+ cacheBytes -= oldest.byteLength;
29615
+ }
29594
29616
  }
29595
29617
  async function fetchRange(pos, length) {
29596
29618
  const end = Math.min(pos + length - 1, size - 1);
@@ -29607,7 +29629,7 @@ async function attachLibavHttpReader(libav, filename, url2, options = {}) {
29607
29629
  );
29608
29630
  }
29609
29631
  const buf = new Uint8Array(await res.arrayBuffer());
29610
- cached = { pos, bytes: buf };
29632
+ cacheInsert(pos, buf);
29611
29633
  return buf;
29612
29634
  }
29613
29635
  async function handleRead(name, pos, length) {
@@ -29618,10 +29640,10 @@ async function attachLibavHttpReader(libav, filename, url2, options = {}) {
29618
29640
  }
29619
29641
  }
29620
29642
  if (detached) return;
29621
- if (cacheCovers(pos, length)) {
29622
- const data = sliceFromCache(pos, length);
29643
+ const hit = cacheLookup(pos, length);
29644
+ if (hit) {
29623
29645
  try {
29624
- await libav.ff_block_reader_dev_send(name, pos, data);
29646
+ await libav.ff_block_reader_dev_send(name, pos, hit);
29625
29647
  } catch {
29626
29648
  }
29627
29649
  return;
@@ -29674,7 +29696,8 @@ async function attachLibavHttpReader(libav, filename, url2, options = {}) {
29674
29696
  } catch {
29675
29697
  }
29676
29698
  }
29677
- cached = null;
29699
+ cache2.clear();
29700
+ cacheBytes = 0;
29678
29701
  try {
29679
29702
  await libav.unlinkreadaheadfile(filename);
29680
29703
  } catch {
@@ -29682,11 +29705,12 @@ async function attachLibavHttpReader(libav, filename, url2, options = {}) {
29682
29705
  }
29683
29706
  };
29684
29707
  }
29685
- var MIN_READ, MAX_READ;
29708
+ var MIN_READ, MAX_READ, DEFAULT_CACHE_BYTES;
29686
29709
  var init_libav_http_reader = __esm({
29687
29710
  "src/util/libav-http-reader.ts"() {
29688
29711
  MIN_READ = 256 * 1024;
29689
29712
  MAX_READ = 1 * 1024 * 1024;
29713
+ DEFAULT_CACHE_BYTES = 8 * 1024 * 1024;
29690
29714
  }
29691
29715
  });
29692
29716
 
@@ -34634,9 +34658,9 @@ var UnifiedPlayer = class _UnifiedPlayer {
34634
34658
  constructor(options, registry) {
34635
34659
  this.options = options;
34636
34660
  this.registry = registry;
34637
- const { requestInit, fetchFn } = options;
34638
- if (requestInit || fetchFn) {
34639
- this.transport = { requestInit, fetchFn };
34661
+ const { requestInit, fetchFn, cacheBytes } = options;
34662
+ if (requestInit || fetchFn || cacheBytes !== void 0) {
34663
+ this.transport = { requestInit, fetchFn, cacheBytes };
34640
34664
  }
34641
34665
  }
34642
34666
  options;