sliccy 6.209.0 → 6.210.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 (171) hide show
  1. package/dist/ui/.vite/manifest.json +186 -186
  2. package/dist/ui/assets/{account-store-D_95JvI-.js → account-store-BXs7YUd1.js} +1 -1
  3. package/dist/ui/assets/{account-store-CXMrgQNZ.js → account-store-Bj2sWuL9.js} +1 -1
  4. package/dist/ui/assets/{adobe-DpfC7c2y.js → adobe-DtoNpFL2.js} +1 -1
  5. package/dist/ui/assets/{adobe-CGuSOIZ2.js → adobe-F-IKKOJO.js} +1 -1
  6. package/dist/ui/assets/{agent-panels-B0IKGzXg.js → agent-panels-CVsqg2-h.js} +1 -1
  7. package/dist/ui/assets/{almost-bash-shell-headless-DAxrU3sK.js → almost-bash-shell-headless-CH7VDHBB.js} +39 -39
  8. package/dist/ui/assets/{apply-layout-Cju0yZJn.js → apply-layout-FFHCB9bO.js} +1 -1
  9. package/dist/ui/assets/{apps-v9wPhTaT.js → apps-BJzl3RZW.js} +1 -1
  10. package/dist/ui/assets/{azure-openai-aBi3cM3K.js → azure-openai-BLEG5MlZ.js} +1 -1
  11. package/dist/ui/assets/{azure-openai-BsKClIv1.js → azure-openai-CpRQdIQb.js} +1 -1
  12. package/dist/ui/assets/{backend-hostfs-5NmEIgGV.js → backend-hostfs-DZyH5GFZ.js} +1 -1
  13. package/dist/ui/assets/{bsh-watchdog-xbXqblUt.js → bsh-watchdog-CqfihC2k.js} +1 -1
  14. package/dist/ui/assets/{bunny-probe-Y6RN8nEm.js → bunny-probe-ZpG6E7n2.js} +1 -1
  15. package/dist/ui/assets/{bunny-run-C4HFX6FX.js → bunny-run-ysVsr1mX.js} +1 -1
  16. package/dist/ui/assets/{cdp-8zqtNpCK.js → cdp-DwsDXLhg.js} +1 -1
  17. package/dist/ui/assets/{cerebras-CSTfT4vG.js → cerebras-CnpcT2_8.js} +1 -1
  18. package/dist/ui/assets/{cerebras-DhmaKu3Y.js → cerebras-gnXcXmk7.js} +1 -1
  19. package/dist/ui/assets/{composer-speech-KDOhETAk.js → composer-speech-BURN-dPW.js} +1 -1
  20. package/dist/ui/assets/{connect-surface-B7zzCdY_.js → connect-surface-D0BfSkwe.js} +1 -1
  21. package/dist/ui/assets/{core-VO3EvqHP.js → core-Dj0t7hQO.js} +1 -1
  22. package/dist/ui/assets/{directed-approval-C5TsWG7I.js → directed-approval-BWqIdB9e.js} +1 -1
  23. package/dist/ui/assets/{emscripten-vfs-hook-pi_gCIBZ.js → emscripten-vfs-hook-Boy5xq-Z.js} +1 -1
  24. package/dist/ui/assets/{ensure-speech-assets-BPAgYM0p.js → ensure-speech-assets-CzLCdx9h.js} +1 -1
  25. package/dist/ui/assets/{esbuild-wasm-BqY5rzxc.js → esbuild-wasm-C-mKofIl.js} +1 -1
  26. package/dist/ui/assets/{fast-path-vLRu2cHH.js → fast-path-hOi08xeS.js} +1 -1
  27. package/dist/ui/assets/{ffmpeg-wasm-NIvl0oHG.js → ffmpeg-wasm-DsXD0tX2.js} +1 -1
  28. package/dist/ui/assets/{frozen-archive-writer-Bn9kqJre.js → frozen-archive-writer-o7ImcSbe.js} +1 -1
  29. package/dist/ui/assets/{fs-D13P93lG.js → fs-BaM5oYgh.js} +2 -2
  30. package/dist/ui/assets/{fs-D5yEr6Lj.js → fs-C7Qh7l0E.js} +1 -1
  31. package/dist/ui/assets/{gelatiere-store-002d76Pu.js → gelatiere-store-BkPyZ5mV.js} +1 -1
  32. package/dist/ui/assets/{gelatiere-unit-PblSQDN5.js → gelatiere-unit-BYlMZ2v4.js} +1 -1
  33. package/dist/ui/assets/{github-C1hhmywY.js → github-D0VXVUSM.js} +2 -2
  34. package/dist/ui/assets/{github-BZFHM2Et.js → github-N-Ega4Po.js} +1 -1
  35. package/dist/ui/assets/{github-auth-B39F_Smu.js → github-auth-DvbRhyIc.js} +1 -1
  36. package/dist/ui/assets/{github-copilot-CwhIXDTK.js → github-copilot-C2Lk0xfw.js} +1 -1
  37. package/dist/ui/assets/{github-copilot-cUPIRyvE.js → github-copilot-CCvuY9BS.js} +1 -1
  38. package/dist/ui/assets/{github-install-DoUx643r.js → github-install-DPTw6LV_.js} +1 -1
  39. package/dist/ui/assets/{github-zip-CSPX1g-L.js → github-zip-Bbft7vZj.js} +1 -1
  40. package/dist/ui/assets/{guest-tool-gate-BzUxTS0o.js → guest-tool-gate-C3mMUKtL.js} +1 -1
  41. package/dist/ui/assets/{hear-C5ECjuHu.js → hear-l_e8vu4Q.js} +1 -1
  42. package/dist/ui/assets/{help-DghSr_hq.js → help-C5uNreTt.js} +1 -1
  43. package/dist/ui/assets/{installer-BZvW1okl.js → installer-BidZuNnC.js} +1 -1
  44. package/dist/ui/assets/{interrupted-work-recovery-DkaikSRv.js → interrupted-work-recovery-D5TFE2JG.js} +1 -1
  45. package/dist/ui/assets/{ipk-mamba-YIcGvmbs.js → ipk-mamba-CvGbcFF_.js} +1 -1
  46. package/dist/ui/assets/{js-realm-worker-DMdELQLe.js → js-realm-worker-BFJHUvlI.js} +2 -2
  47. package/dist/ui/assets/{jsh-executor-B-jk9nVj.js → jsh-executor-B4ySdjop.js} +2 -2
  48. package/dist/ui/assets/{kernel-worker-vwPHAOWR.js → kernel-worker-BzcdrkzF.js} +9 -9
  49. package/dist/ui/assets/{lick-ws-bridge-CPX63GSt.js → lick-ws-bridge-B248zI2U.js} +1 -1
  50. package/dist/ui/assets/{lick-ws-bridge-BFC-sVhl.js → lick-ws-bridge-CodIkT51.js} +1 -1
  51. package/dist/ui/assets/{live-session-curation-Dj9Mi2me.js → live-session-curation-vrJYxCgm.js} +1 -1
  52. package/dist/ui/assets/{live-session-snapshot-BMgXz5yR.js → live-session-snapshot-lJ3w4rOH.js} +1 -1
  53. package/dist/ui/assets/{local-llm-Dti8Zg2k.js → local-llm-dkgrXktX.js} +1 -1
  54. package/dist/ui/assets/{local-llm-2mEnfN8G.js → local-llm-vgDCJvkZ.js} +1 -1
  55. package/dist/ui/assets/{magick-wasm-DjyHtD1t.js → magick-wasm-qrxQJP5k.js} +1 -1
  56. package/dist/ui/assets/{main-DAU-AyCy.js → main-CXeU8DQz.js} +3 -3
  57. package/dist/ui/assets/{main-cherry-4aXVU9rJ.js → main-cherry-sfCt3gLL.js} +1 -1
  58. package/dist/ui/assets/{memory-curation-seam-CDn-RTnL.js → memory-curation-seam-T4WRfl1n.js} +1 -1
  59. package/dist/ui/assets/{memory-health-B4tNJGRc.js → memory-health-EXXqHw1x.js} +1 -1
  60. package/dist/ui/assets/{memory-write-execute-Cnhe2Xxb.js → memory-write-execute-DIYIwJKg.js} +1 -1
  61. package/dist/ui/assets/{merge-folded-cost-into-frozen-QOjJC7mR.js → merge-folded-cost-into-frozen-bDakT1WR.js} +1 -1
  62. package/dist/ui/assets/{mount-BLD3M6EK.js → mount-BABm_hJd.js} +3 -3
  63. package/dist/ui/assets/{mount-C1FVZ7Sn.js → mount-C7dlV4rl.js} +1 -1
  64. package/dist/ui/assets/{new-session-BtSXodkO.js → new-session-D2rtUiOZ.js} +2 -2
  65. package/dist/ui/assets/{oauth-bootstrap-BYpeIatf.js → oauth-bootstrap-3P5XkiLD.js} +2 -2
  66. package/dist/ui/assets/{onboarding-orchestrator-WLJQQ-Vf.js → onboarding-orchestrator-CYP3TBxO.js} +1 -1
  67. package/dist/ui/assets/{openai-codex-lYWzqB0q.js → openai-codex-CUa5FPoQ.js} +1 -1
  68. package/dist/ui/assets/{openai-codex-BR_yced5.js → openai-codex-DvxYitk6.js} +1 -1
  69. package/dist/ui/assets/{openrouter-CNf9NNc7.js → openrouter-Btmqh3ZY.js} +1 -1
  70. package/dist/ui/assets/{openrouter-DPBXpqgl.js → openrouter-BxUHkfTR.js} +1 -1
  71. package/dist/ui/assets/{openrouter-free-71RJenB8.js → openrouter-free-BCIYdkt3.js} +1 -1
  72. package/dist/ui/assets/{openrouter-free-D7rahepE.js → openrouter-free-nn_h_WC_.js} +1 -1
  73. package/dist/ui/assets/{openrouter-oauth-Bwi2hsU6.js → openrouter-oauth-8cwBPqX7.js} +1 -1
  74. package/dist/ui/assets/{openrouter-oauth-PUXZq93J.js → openrouter-oauth-Bba1qXT3.js} +1 -1
  75. package/dist/ui/assets/{opfs-mount-B6OI1oqH.js → opfs-mount-DbON63F4.js} +1 -1
  76. package/dist/ui/assets/{panel-rpc-handlers-DDhiuy4K.js → panel-rpc-handlers-aqHjP3Jn.js} +2 -2
  77. package/dist/ui/assets/{panelize-shell-Dfzx0Eja.js → panelize-shell-CjtBTrHH.js} +1 -1
  78. package/dist/ui/assets/{pi-edit-execution-BPgerAyF.js → pi-edit-execution-DFk-ThoQ.js} +1 -1
  79. package/dist/ui/assets/process-worker-BlGG6CFl.js +3 -0
  80. package/dist/ui/assets/{provider-D9yEgxif.js → provider-B7Epu3fA.js} +2 -2
  81. package/dist/ui/assets/{provider-LZtcBmKS.js → provider-DFROVc_U.js} +1 -1
  82. package/dist/ui/assets/{provider-settings-DtdWymDf.js → provider-settings-WmZqlEWG.js} +1 -1
  83. package/dist/ui/assets/provider-store-access-XxfYiVq-.js +1 -0
  84. package/dist/ui/assets/provider-store-access-bqTWCaz8.js +1 -0
  85. package/dist/ui/assets/{providers-BtQv6Iun.js → providers-CUOgmyqw.js} +2 -2
  86. package/dist/ui/assets/{providers-CNBnEbCX.js → providers-CnFwVWZQ.js} +1 -1
  87. package/dist/ui/assets/{quick-llm-14VNlAXQ.js → quick-llm-TyBh96Nl.js} +1 -1
  88. package/dist/ui/assets/{realm-inprocess-DurO7I6Z.js → realm-inprocess-DtJhD5Fl.js} +2 -2
  89. package/dist/ui/assets/{realm-unhandled-rejections-BgGL8Mod.js → realm-unhandled-rejections-DgtQR_nu.js} +1 -1
  90. package/dist/ui/assets/{realm-unhandled-rejections-DQRN5wlM.js → realm-unhandled-rejections-vs4_4-j5.js} +1 -1
  91. package/dist/ui/assets/{recovery-screen-BMUQTWIb.js → recovery-screen-DCebt00Y.js} +1 -1
  92. package/dist/ui/assets/{remote-terminal-view-OA02y1n8.js → remote-terminal-view-hFKpOJq6.js} +4 -3
  93. package/dist/ui/assets/{require-guards-Dor7ByR7.js → require-guards-Bo27pPOL.js} +1 -1
  94. package/dist/ui/assets/{restore-DNRcWWgP.js → restore-zcvXidEG.js} +1 -1
  95. package/dist/ui/assets/run-2WVtdZpl.js +8 -0
  96. package/dist/ui/assets/{run-BMTzNhm7.js → run-BV9MB7ra.js} +1 -1
  97. package/dist/ui/assets/{run-BtrJghdw.js → run-C2DCKniQ.js} +1 -1
  98. package/dist/ui/assets/{run-DWA1_d1u.js → run-CS2W694M.js} +2 -2
  99. package/dist/ui/assets/{run-OtfZUGcj.js → run-Cd_VCcVf.js} +2 -2
  100. package/dist/ui/assets/{run-DWjXaL1W.js → run-CuBHWlsa.js} +2 -2
  101. package/dist/ui/assets/{run-Cf-MrlWL.js → run-D_M6FYKF.js} +2 -2
  102. package/dist/ui/assets/{run-BtNqaJOt.js → run-DjxRQ23G.js} +1 -1
  103. package/dist/ui/assets/{run-BKqRP8Pt.js → run-Q7BN7qk3.js} +2 -2
  104. package/dist/ui/assets/{run-reISaz1J.js → run-UiQipOb7.js} +1 -1
  105. package/dist/ui/assets/{screencapture-run-CJF_k55t.js → screencapture-run-CBm4TDjf.js} +1 -1
  106. package/dist/ui/assets/{session-command-memory-B8eBiSlR.js → session-command-memory-CcaZsaLQ.js} +2 -2
  107. package/dist/ui/assets/{session-jsonl-CgBBbMPR.js → session-jsonl-BmGkCWUz.js} +1 -1
  108. package/dist/ui/assets/{session-jsonl-Dw_Aa6GO.js → session-jsonl-DmxnjLdx.js} +1 -1
  109. package/dist/ui/assets/{session-search-index-DZ4EEMff.js → session-search-index-KJ0_eoRM.js} +1 -1
  110. package/dist/ui/assets/{setup-feature-flags-remote-V0bXU-Xo.js → setup-feature-flags-remote-C803V0VC.js} +1 -1
  111. package/dist/ui/assets/{setup-model-catalog-bOEh3I2Z.js → setup-model-catalog-bxrNmkOq.js} +1 -1
  112. package/dist/ui/assets/{shared-Bi8EHIOr.js → shared-De1sMYMX.js} +4 -4
  113. package/dist/ui/assets/{signed-fetch-CMYMchhb.js → signed-fetch-CK_GPwxJ.js} +1 -1
  114. package/dist/ui/assets/{silent-renew-backoff-DdU1grFR.js → silent-renew-backoff-CWJs245J.js} +1 -1
  115. package/dist/ui/assets/slicc-version-Da6sXKjo.js +1 -0
  116. package/dist/ui/assets/{snapshot-sMzJDppS.js → snapshot-CcXAgR24.js} +1 -1
  117. package/dist/ui/assets/{snapshot-features-kDpOw0A8.js → snapshot-features-Bb6rt3T9.js} +1 -1
  118. package/dist/ui/assets/{soundscape-CCmLSGeY.js → soundscape-DWkIHoSH.js} +1 -1
  119. package/dist/ui/assets/{speak-DQGvijsT.js → speak-bIrefGJW.js} +1 -1
  120. package/dist/ui/assets/{sprinkle-manager-DTuZkM86.js → sprinkle-manager-HaLL6TAH.js} +1 -1
  121. package/dist/ui/assets/{sprinkle-renderer-DLAqwc_L.js → sprinkle-renderer-CH7z9LWi.js} +1 -1
  122. package/dist/ui/assets/{src-tqB6XcSU.js → src-ngGdoF7q.js} +12 -12
  123. package/dist/ui/assets/{ssh-D2rNItRY.js → ssh-HG-JzaxD.js} +1 -1
  124. package/dist/ui/assets/{state-B5mkDtuH.js → state-y36olpuJ.js} +1 -1
  125. package/dist/ui/assets/{stdio-tty-CE0OUA_G.js → stdio-tty-uIuGda2o.js} +1 -1
  126. package/dist/ui/assets/{store-Dkmzxaja.js → store-DI5uS3CV.js} +1 -1
  127. package/dist/ui/assets/{store-Dxb78W8Q.js → store-Dy2vvTSi.js} +1 -1
  128. package/dist/ui/assets/{sudo-g88w-Yt7.js → sudo-7nF2-79o.js} +1 -1
  129. package/dist/ui/assets/{supervisor-CIp3y5wX.js → supervisor-CEG_pawR.js} +1 -1
  130. package/dist/ui/assets/{sync-dialog-CNYsNEic.js → sync-dialog-B28jW7rW.js} +1 -1
  131. package/dist/ui/assets/{transformers-env-gUfVzZxD.js → transformers-env-G9ZvPj4i.js} +1 -1
  132. package/dist/ui/assets/{tray-leader-t2KaN0By.js → tray-leader-CxQceUY8.js} +1 -1
  133. package/dist/ui/assets/{tray-leave-runtime-CDQM5sWi.js → tray-leave-runtime-B7ePnPKy.js} +1 -1
  134. package/dist/ui/assets/{tray-sidecar-0IJHOSmG.js → tray-sidecar-BlpsBLlK.js} +1 -1
  135. package/dist/ui/assets/{turn-journal-C1eVrq7Y.js → turn-journal-aW8ez41d.js} +1 -1
  136. package/dist/ui/assets/{upgrade-detection-CkuR6fXR.js → upgrade-detection-BpdjDhSG.js} +1 -1
  137. package/dist/ui/assets/{upskill-lick-skip-Df5fMRF5.js → upskill-lick-skip-DLAifByM.js} +1 -1
  138. package/dist/ui/assets/{voice-reply-BzGMfJso.js → voice-reply-DERl1Bi0.js} +1 -1
  139. package/dist/ui/assets/{wc-attach-Co3k_hVU.js → wc-attach-DTYFvNFe.js} +2 -2
  140. package/dist/ui/assets/{wc-browser-DU7Ll0Su.js → wc-browser-CfT_4eXt.js} +1 -1
  141. package/dist/ui/assets/{wc-computers-DKZ8uxal.js → wc-computers-CZzSDuty.js} +1 -1
  142. package/dist/ui/assets/{wc-detached-CTVp8UAi.js → wc-detached-C-E9uOpQ.js} +1 -1
  143. package/dist/ui/assets/{wc-extension-BSEBIUhE.js → wc-extension-dtGYhAVK.js} +2 -2
  144. package/dist/ui/assets/{wc-follower-lb8Q6FGB.js → wc-follower-gU-qxutC.js} +3 -3
  145. package/dist/ui/assets/{wc-follower-oauth-DWvjmrz_.js → wc-follower-oauth-BGkJQhXu.js} +1 -1
  146. package/dist/ui/assets/{wc-gelatiere-CgINXN3w.js → wc-gelatiere-Bwy-mfMy.js} +1 -1
  147. package/dist/ui/assets/{wc-live-BVazwLWr.js → wc-live-DOg7ifPs.js} +5 -5
  148. package/dist/ui/assets/{wc-nav-BeAxrAW3.js → wc-nav-Dwr_mhPy.js} +2 -2
  149. package/dist/ui/assets/{wc-onboarding-DGarUiE6.js → wc-onboarding-BE9A-Amw.js} +2 -2
  150. package/dist/ui/assets/{wc-permissions-BiDEAjXd.js → wc-permissions-BloJ3nhv.js} +2 -2
  151. package/dist/ui/assets/{wc-placeholder-ZyBwZAnt.js → wc-placeholder-C4vxqDp9.js} +3 -3
  152. package/dist/ui/assets/{wc-secret-request-CrQLiiCF.js → wc-secret-request-BgFU3Vv4.js} +1 -1
  153. package/dist/ui/assets/{wc-settings-BE6p1PPQ.js → wc-settings-D4tUKiOo.js} +3 -3
  154. package/dist/ui/assets/{wc-shell-vt7qflet.js → wc-shell-DWs7UK-n.js} +3 -3
  155. package/dist/ui/assets/{wc-shortcut-config-DqgIZh8a.js → wc-shortcut-config-DVN2gtoP.js} +1 -1
  156. package/dist/ui/assets/{wc-sprinkles-B1RV7qvO.js → wc-sprinkles-DKpkBiOU.js} +2 -2
  157. package/dist/ui/assets/{wc-transcript-export-B_0SXPBh.js → wc-transcript-export-BIr7xQ8r.js} +2 -2
  158. package/dist/ui/assets/{wc-tray-DGPwMFeq.js → wc-tray-CPoilaMn.js} +4 -4
  159. package/dist/ui/assets/welcome-detection-B8xTkXMq.js +1 -0
  160. package/dist/ui/assets/{whisper-session-B-UNGtdO.js → whisper-session-CjnOyfPM.js} +2 -2
  161. package/dist/ui/assets/{xai-grok-BeE-NRdg.js → xai-grok-CKBHF5WO.js} +1 -1
  162. package/dist/ui/assets/{xai-grok-BrcpA9mE.js → xai-grok-CsjlfFq3.js} +1 -1
  163. package/dist/ui/index.html +3 -3
  164. package/dist/ui/packages/webapp/index.html +3 -3
  165. package/package.json +1 -1
  166. package/dist/ui/assets/process-worker-BSgfWg_O.js +0 -3
  167. package/dist/ui/assets/provider-store-access-CFT8okou.js +0 -1
  168. package/dist/ui/assets/provider-store-access-CewS-Dmx.js +0 -1
  169. package/dist/ui/assets/run-ChsOHVUd.js +0 -7
  170. package/dist/ui/assets/slicc-version-DVRQVnZq.js +0 -1
  171. package/dist/ui/assets/welcome-detection-Ca48tQVP.js +0 -1
@@ -22,7 +22,7 @@ var Pt;(function(e){e[e.Silent=0]=`Silent`,e[e.Errors=1]=`Errors`,e[e.Warnings=2
22
22
  * License, v. 2.0. If a copy of the MPL was not distributed with this
23
23
  * file, You can obtain one at https://mozilla.org/MPL/2.0/.
24
24
  */
25
- var Ft=class{constructor(e,t){if(this.data=e,this.mimeType=t,!(e instanceof Uint8Array))throw TypeError(`data must be a Uint8Array.`);if(typeof t!=`string`)throw TypeError(`mimeType must be a string.`)}},It=class{constructor(e,t,n,r){if(this.data=e,this.mimeType=t,this.name=n,this.description=r,!(e instanceof Uint8Array))throw TypeError(`data must be a Uint8Array.`);if(t!==void 0&&typeof t!=`string`)throw TypeError(`mimeType, when provided, must be a string.`);if(n!==void 0&&typeof n!=`string`)throw TypeError(`name, when provided, must be a string.`);if(r!==void 0&&typeof r!=`string`)throw TypeError(`description, when provided, must be a string.`)}};const Lt=e=>{if(!e||typeof e!=`object`)throw TypeError(`tags must be an object.`);if(e.title!==void 0&&typeof e.title!=`string`)throw TypeError(`tags.title, when provided, must be a string.`);if(e.description!==void 0&&typeof e.description!=`string`)throw TypeError(`tags.description, when provided, must be a string.`);if(e.artist!==void 0&&typeof e.artist!=`string`)throw TypeError(`tags.artist, when provided, must be a string.`);if(e.album!==void 0&&typeof e.album!=`string`)throw TypeError(`tags.album, when provided, must be a string.`);if(e.albumArtist!==void 0&&typeof e.albumArtist!=`string`)throw TypeError(`tags.albumArtist, when provided, must be a string.`);if(e.trackNumber!==void 0&&(!Number.isInteger(e.trackNumber)||e.trackNumber<=0))throw TypeError(`tags.trackNumber, when provided, must be a positive integer.`);if(e.tracksTotal!==void 0&&(!Number.isInteger(e.tracksTotal)||e.tracksTotal<=0))throw TypeError(`tags.tracksTotal, when provided, must be a positive integer.`);if(e.discNumber!==void 0&&(!Number.isInteger(e.discNumber)||e.discNumber<=0))throw TypeError(`tags.discNumber, when provided, must be a positive integer.`);if(e.discsTotal!==void 0&&(!Number.isInteger(e.discsTotal)||e.discsTotal<=0))throw TypeError(`tags.discsTotal, when provided, must be a positive integer.`);if(e.genre!==void 0&&typeof e.genre!=`string`)throw TypeError(`tags.genre, when provided, must be a string.`);if(e.date!==void 0&&(!(e.date instanceof Date)||Number.isNaN(e.date.getTime())))throw TypeError(`tags.date, when provided, must be a valid Date.`);if(e.lyrics!==void 0&&typeof e.lyrics!=`string`)throw TypeError(`tags.lyrics, when provided, must be a string.`);if(e.images!==void 0){if(!Array.isArray(e.images))throw TypeError(`tags.images, when provided, must be an array.`);for(let t of e.images){if(!t||typeof t!=`object`)throw TypeError(`Each image in tags.images must be an object.`);if(!(t.data instanceof Uint8Array))throw TypeError(`Each image.data must be a Uint8Array.`);if(typeof t.mimeType!=`string`)throw TypeError(`Each image.mimeType must be a string.`);if(![`coverFront`,`coverBack`,`unknown`].includes(t.kind))throw TypeError(`Each image.kind must be 'coverFront', 'coverBack', or 'unknown'.`)}}if(e.comment!==void 0&&typeof e.comment!=`string`)throw TypeError(`tags.comment, when provided, must be a string.`);if(e.raw!==void 0){if(!e.raw||typeof e.raw!=`object`)throw TypeError(`tags.raw, when provided, must be an object.`);for(let t of Object.values(e.raw))if(t!==null&&typeof t!=`string`&&!(Array.isArray(t)&&t.every(e=>typeof e==`string`))&&!(t instanceof Uint8Array)&&!(t instanceof Ft)&&!(t instanceof It)&&!Nt(t))throw TypeError(`Each value in tags.raw must be a string, string array, Uint8Array, RichImageData, AttachedFile, Record<string, string>, or null.`)}},Rt=e=>e.title===void 0&&e.description===void 0&&e.artist===void 0&&e.album===void 0&&e.albumArtist===void 0&&e.trackNumber===void 0&&e.tracksTotal===void 0&&e.discNumber===void 0&&e.discsTotal===void 0&&e.genre===void 0&&e.date===void 0&&e.lyrics===void 0&&(!e.images||e.images.length===0)&&e.comment===void 0&&(e.raw===void 0||Object.keys(e.raw).length===0),zt={default:!0,primary:!0,forced:!1,original:!1,commentary:!1,hearingImpaired:!1,visuallyImpaired:!1},Bt=e=>{if(!e||typeof e!=`object`)throw TypeError(`disposition must be an object.`);if(e.default!==void 0&&typeof e.default!=`boolean`)throw TypeError(`disposition.default must be a boolean.`);if(e.primary!==void 0&&typeof e.primary!=`boolean`)throw TypeError(`disposition.primary must be a boolean.`);if(e.forced!==void 0&&typeof e.forced!=`boolean`)throw TypeError(`disposition.forced must be a boolean.`);if(e.original!==void 0&&typeof e.original!=`boolean`)throw TypeError(`disposition.original must be a boolean.`);if(e.commentary!==void 0&&typeof e.commentary!=`boolean`)throw TypeError(`disposition.commentary must be a boolean.`);if(e.hearingImpaired!==void 0&&typeof e.hearingImpaired!=`boolean`)throw TypeError(`disposition.hearingImpaired must be a boolean.`);if(e.visuallyImpaired!==void 0&&typeof e.visuallyImpaired!=`boolean`)throw TypeError(`disposition.visuallyImpaired must be a boolean.`)};
25
+ var Ft=class{constructor(e,t){if(this.data=e,this.mimeType=t,!(e instanceof Uint8Array))throw TypeError(`data must be a Uint8Array.`);if(typeof t!=`string`)throw TypeError(`mimeType must be a string.`)}},It=class{constructor(e,t,n,r){if(this.data=e,this.mimeType=t,this.name=n,this.description=r,!(e instanceof Uint8Array))throw TypeError(`data must be a Uint8Array.`);if(t!==void 0&&typeof t!=`string`)throw TypeError(`mimeType, when provided, must be a string.`);if(n!==void 0&&typeof n!=`string`)throw TypeError(`name, when provided, must be a string.`);if(r!==void 0&&typeof r!=`string`)throw TypeError(`description, when provided, must be a string.`)}};const Lt=e=>{if(!e||typeof e!=`object`)throw TypeError(`tags must be an object.`);if(e.title!==void 0&&typeof e.title!=`string`)throw TypeError(`tags.title, when provided, must be a string.`);if(e.description!==void 0&&typeof e.description!=`string`)throw TypeError(`tags.description, when provided, must be a string.`);if(e.artist!==void 0&&typeof e.artist!=`string`)throw TypeError(`tags.artist, when provided, must be a string.`);if(e.album!==void 0&&typeof e.album!=`string`)throw TypeError(`tags.album, when provided, must be a string.`);if(e.albumArtist!==void 0&&typeof e.albumArtist!=`string`)throw TypeError(`tags.albumArtist, when provided, must be a string.`);if(e.trackNumber!==void 0&&(!Number.isInteger(e.trackNumber)||e.trackNumber<=0))throw TypeError(`tags.trackNumber, when provided, must be a positive integer.`);if(e.tracksTotal!==void 0&&(!Number.isInteger(e.tracksTotal)||e.tracksTotal<=0))throw TypeError(`tags.tracksTotal, when provided, must be a positive integer.`);if(e.discNumber!==void 0&&(!Number.isInteger(e.discNumber)||e.discNumber<=0))throw TypeError(`tags.discNumber, when provided, must be a positive integer.`);if(e.discsTotal!==void 0&&(!Number.isInteger(e.discsTotal)||e.discsTotal<=0))throw TypeError(`tags.discsTotal, when provided, must be a positive integer.`);if(e.genre!==void 0&&typeof e.genre!=`string`)throw TypeError(`tags.genre, when provided, must be a string.`);if(e.date!==void 0&&(!(e.date instanceof Date)||Number.isNaN(e.date.getTime())))throw TypeError(`tags.date, when provided, must be a valid Date.`);if(e.beatsPerMinute!==void 0&&(!Number.isInteger(e.beatsPerMinute)||e.beatsPerMinute<=0))throw TypeError(`tags.beatsPerMinute, when provided, must be a positive integer.`);if(e.lyrics!==void 0&&typeof e.lyrics!=`string`)throw TypeError(`tags.lyrics, when provided, must be a string.`);if(e.images!==void 0){if(!Array.isArray(e.images))throw TypeError(`tags.images, when provided, must be an array.`);for(let t of e.images){if(!t||typeof t!=`object`)throw TypeError(`Each image in tags.images must be an object.`);if(!(t.data instanceof Uint8Array))throw TypeError(`Each image.data must be a Uint8Array.`);if(typeof t.mimeType!=`string`)throw TypeError(`Each image.mimeType must be a string.`);if(![`coverFront`,`coverBack`,`unknown`].includes(t.kind))throw TypeError(`Each image.kind must be 'coverFront', 'coverBack', or 'unknown'.`)}}if(e.comment!==void 0&&typeof e.comment!=`string`)throw TypeError(`tags.comment, when provided, must be a string.`);if(e.raw!==void 0){if(!e.raw||typeof e.raw!=`object`)throw TypeError(`tags.raw, when provided, must be an object.`);for(let t of Object.values(e.raw))if(t!==null&&typeof t!=`string`&&!(Array.isArray(t)&&t.every(e=>typeof e==`string`))&&!(t instanceof Uint8Array)&&!(t instanceof Ft)&&!(t instanceof It)&&!Nt(t))throw TypeError(`Each value in tags.raw must be a string, string array, Uint8Array, RichImageData, AttachedFile, Record<string, string>, or null.`)}},Rt=e=>e.title===void 0&&e.description===void 0&&e.artist===void 0&&e.album===void 0&&e.albumArtist===void 0&&e.trackNumber===void 0&&e.tracksTotal===void 0&&e.discNumber===void 0&&e.discsTotal===void 0&&e.genre===void 0&&e.beatsPerMinute===void 0&&e.date===void 0&&e.lyrics===void 0&&(!e.images||e.images.length===0)&&e.comment===void 0&&(e.raw===void 0||Object.keys(e.raw).length===0),zt={default:!0,primary:!0,forced:!1,original:!1,commentary:!1,hearingImpaired:!1,visuallyImpaired:!1},Bt=e=>{if(!e||typeof e!=`object`)throw TypeError(`disposition must be an object.`);if(e.default!==void 0&&typeof e.default!=`boolean`)throw TypeError(`disposition.default must be a boolean.`);if(e.primary!==void 0&&typeof e.primary!=`boolean`)throw TypeError(`disposition.primary must be a boolean.`);if(e.forced!==void 0&&typeof e.forced!=`boolean`)throw TypeError(`disposition.forced must be a boolean.`);if(e.original!==void 0&&typeof e.original!=`boolean`)throw TypeError(`disposition.original must be a boolean.`);if(e.commentary!==void 0&&typeof e.commentary!=`boolean`)throw TypeError(`disposition.commentary must be a boolean.`);if(e.hearingImpaired!==void 0&&typeof e.hearingImpaired!=`boolean`)throw TypeError(`disposition.hearingImpaired must be a boolean.`);if(e.visuallyImpaired!==void 0&&typeof e.visuallyImpaired!=`boolean`)throw TypeError(`disposition.visuallyImpaired must be a boolean.`)};
26
26
  /*!
27
27
  * Copyright (c) 2026-present, Vanilagy and contributors
28
28
  *
@@ -54,7 +54,7 @@ const Vt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],H
54
54
  * License, v. 2.0. If a copy of the MPL was not distributed with this
55
55
  * file, You can obtain one at https://mozilla.org/MPL/2.0/.
56
56
  */
57
- var en;(function(e){e[e.NON_IDR_SLICE=1]=`NON_IDR_SLICE`,e[e.SLICE_DPA=2]=`SLICE_DPA`,e[e.SLICE_DPB=3]=`SLICE_DPB`,e[e.SLICE_DPC=4]=`SLICE_DPC`,e[e.IDR=5]=`IDR`,e[e.SEI=6]=`SEI`,e[e.SPS=7]=`SPS`,e[e.PPS=8]=`PPS`,e[e.AUD=9]=`AUD`,e[e.SPS_EXT=13]=`SPS_EXT`})(en||={});var M;(function(e){e[e.RASL_N=8]=`RASL_N`,e[e.RASL_R=9]=`RASL_R`,e[e.BLA_W_LP=16]=`BLA_W_LP`,e[e.RSV_IRAP_VCL23=23]=`RSV_IRAP_VCL23`,e[e.VPS_NUT=32]=`VPS_NUT`,e[e.SPS_NUT=33]=`SPS_NUT`,e[e.PPS_NUT=34]=`PPS_NUT`,e[e.AUD_NUT=35]=`AUD_NUT`,e[e.PREFIX_SEI_NUT=39]=`PREFIX_SEI_NUT`,e[e.SUFFIX_SEI_NUT=40]=`SUFFIX_SEI_NUT`})(M||={});const tn=function*(e){let t=0,n=-1;for(;t<e.length-2;){let r=e.indexOf(0,t);if(r===-1||r>=e.length-2)break;t=r;let i=0;if(t+3<e.length&&e[t+1]===0&&e[t+2]===0&&e[t+3]===1?i=4:e[t+1]===0&&e[t+2]===1&&(i=3),i===0){t++;continue}n!==-1&&t>n&&(yield{offset:n,length:t-n}),n=t+i,t=n}n!==-1&&n<e.length&&(yield{offset:n,length:e.length-n})},nn=function*(e,t){let r=0,i=new DataView(e.buffer,e.byteOffset,e.byteLength);for(;r+t<=e.length;){let e;t===1?e=i.getUint8(r):t===2?e=i.getUint16(r,!1):t===3?e=De(i,r,!1):(n(t===4),e=i.getUint32(r,!1)),r+=t,yield{offset:r,length:e},r+=e}},rn=(e,t)=>{if(t.description){let n=(S(t.description)[4]&3)+1;return nn(e,n)}return tn(e)},an=e=>e&31,on=e=>{let t=[],n=e.length;for(let r=0;r<n;r++)r+2<n&&e[r]===0&&e[r+1]===0&&e[r+2]===3?(t.push(0,0),r+=2):t.push(e[r]);return new Uint8Array(t)},sn=e=>{let t=[],n=0;for(let r of e)n===2&&r<=3&&(t.push(3),n=0),t.push(r),n=r===0?n+1:0;return new Uint8Array(t)},cn=new Uint8Array([0,0,0,1]),ln=e=>{let t=e.reduce((e,t)=>e+cn.byteLength+t.byteLength,0),n=new Uint8Array(t),r=0;for(let t of e)n.set(cn,r),r+=cn.byteLength,n.set(t,r),r+=t.byteLength;return n},un=(e,t)=>{let n=e.reduce((e,n)=>e+t+n.byteLength,0),r=new Uint8Array(n),i=0;for(let n of e){let e=new DataView(r.buffer,r.byteOffset,r.byteLength);switch(t){case 1:e.setUint8(i,n.byteLength);break;case 2:e.setUint16(i,n.byteLength,!1);break;case 3:ke(e,i,n.byteLength,!1);break;case 4:e.setUint32(i,n.byteLength,!1)}i+=t,r.set(n,i),i+=n.byteLength}return r},dn=(e,t)=>{if(t.description){let n=(S(t.description)[4]&3)+1;return un(e,n)}return ln(e)},fn=e=>{try{let t=[],r=[],i=[];for(let n of tn(e)){let a=e.subarray(n.offset,n.offset+n.length),o=an(a[0]);o===en.SPS?t.push(a):o===en.PPS?r.push(a):o===en.SPS_EXT&&i.push(a)}if(t.length===0||r.length===0)return null;let a=t[0],o=gn(a);n(o!==null);let s=o.profileIdc===100||o.profileIdc===110||o.profileIdc===122||o.profileIdc===144;return{configurationVersion:1,avcProfileIndication:o.profileIdc,profileCompatibility:o.constraintFlags,avcLevelIndication:o.levelIdc,lengthSizeMinusOne:3,sequenceParameterSets:t,pictureParameterSets:r,chromaFormat:s?o.chromaFormatIdc:null,bitDepthLumaMinus8:s?o.bitDepthLumaMinus8:null,bitDepthChromaMinus8:s?o.bitDepthChromaMinus8:null,sequenceParameterSetExt:s?i:null}}catch(e){return A._error(`Error building AVC Decoder Configuration Record:`,e),null}},pn=e=>{let t=[];t.push(e.configurationVersion),t.push(e.avcProfileIndication),t.push(e.profileCompatibility),t.push(e.avcLevelIndication),t.push(252|e.lengthSizeMinusOne&3),t.push(224|e.sequenceParameterSets.length&31);for(let n of e.sequenceParameterSets){let e=n.byteLength;t.push(e>>8),t.push(e&255);for(let r=0;r<e;r++)t.push(n[r])}t.push(e.pictureParameterSets.length);for(let n of e.pictureParameterSets){let e=n.byteLength;t.push(e>>8),t.push(e&255);for(let r=0;r<e;r++)t.push(n[r])}if((e.avcProfileIndication===100||e.avcProfileIndication===110||e.avcProfileIndication===122||e.avcProfileIndication===144)&&e.chromaFormat!==null){n(e.bitDepthLumaMinus8!==null),n(e.bitDepthChromaMinus8!==null),n(e.sequenceParameterSetExt!==null),t.push(252|e.chromaFormat&3),t.push(248|e.bitDepthLumaMinus8&7),t.push(248|e.bitDepthChromaMinus8&7),t.push(e.sequenceParameterSetExt.length);for(let n of e.sequenceParameterSetExt){let e=n.byteLength;t.push(e>>8),t.push(e&255);for(let r=0;r<e;r++)t.push(n[r])}}return new Uint8Array(t)},mn=e=>{try{let t=C(e),n=0,r=t.getUint8(n++),i=t.getUint8(n++),a=t.getUint8(n++),o=t.getUint8(n++),s=t.getUint8(n++)&3,c=t.getUint8(n++)&31,l=[];for(let r=0;r<c;r++){let r=t.getUint16(n,!1);n+=2,l.push(e.subarray(n,n+r)),n+=r}let u=t.getUint8(n++),d=[];for(let r=0;r<u;r++){let r=t.getUint16(n,!1);n+=2,d.push(e.subarray(n,n+r)),n+=r}let f={configurationVersion:r,avcProfileIndication:i,profileCompatibility:a,avcLevelIndication:o,lengthSizeMinusOne:s,sequenceParameterSets:l,pictureParameterSets:d,chromaFormat:null,bitDepthLumaMinus8:null,bitDepthChromaMinus8:null,sequenceParameterSetExt:null};if((i===100||i===110||i===122||i===144)&&n+4<=e.length){let r=t.getUint8(n++)&3,i=t.getUint8(n++)&7,a=t.getUint8(n++)&7,o=t.getUint8(n++);f.chromaFormat=r,f.bitDepthLumaMinus8=i,f.bitDepthChromaMinus8=a;let s=[];for(let r=0;r<o;r++){let r=t.getUint16(n,!1);n+=2,s.push(e.subarray(n,n+r)),n+=r}f.sequenceParameterSetExt=s}return f}catch(e){return A._error(`Error deserializing AVC Decoder Configuration Record:`,e),null}},hn={1:{num:1,den:1},2:{num:12,den:11},3:{num:10,den:11},4:{num:16,den:11},5:{num:40,den:33},6:{num:24,den:11},7:{num:20,den:11},8:{num:32,den:11},9:{num:80,den:33},10:{num:18,den:11},11:{num:15,den:11},12:{num:64,den:33},13:{num:160,den:99},14:{num:4,den:3},15:{num:3,den:2},16:{num:2,den:1}},gn=e=>{try{let t=on(e),r=new j(t);if(r.skipBits(1),r.skipBits(2),r.readBits(5)!==7)return null;let i=r.readAlignedByte(),a=r.readAlignedByte(),o=r.readAlignedByte();v(r);let s=1,c=0,l=0,u=0;if((i===100||i===110||i===122||i===244||i===44||i===83||i===86||i===118||i===128)&&(s=v(r),s===3&&(u=r.readBits(1)),c=v(r),l=v(r),r.skipBits(1),r.readBits(1))){for(let e=0;e<(s===3?12:8);e++)if(r.readBits(1)){let t=e<6?16:64,n=8,i=8;for(let e=0;e<t;e++){if(i!==0){let e=b(r);i=(n+e+256)%256}n=i===0?n:i}}}v(r);let d=v(r);if(d===0)v(r);else if(d===1){r.skipBits(1),b(r),b(r);let e=v(r);for(let t=0;t<e;t++)b(r)}v(r),r.skipBits(1);let f=v(r),p=v(r),m=16*(f+1),g=16*(p+1),_=m,y=g,x=r.readBits(1);if(x||r.skipBits(1),r.skipBits(1),r.readBits(1)){let e=v(r),t=v(r),n=v(r),i=v(r),a,o;if((u===0?s:0)===0)a=1,o=2-x;else{let e=s===3?1:2,t=s===1?2:1;a=e,o=t*(2-x)}_-=a*(e+t),y-=o*(n+i)}let S=2,C=2,ee=2,te=0,w={num:1,den:1},T=null,ne=null,re=null,ie=null,ae=r.pos;if(r.readBits(1)){if(r.readBits(1)){let e=r.readBits(8);if(e===255)w={num:r.readBits(16),den:r.readBits(16)};else{let t=hn[e];t&&(w=t)}}r.readBits(1)&&r.skipBits(1),r.readBits(1)&&(r.skipBits(3),te=r.readBits(1),r.readBits(1)&&(S=r.readBits(8),C=r.readBits(8),ee=r.readBits(8))),r.readBits(1)&&(v(r),v(r)),r.readBits(1)&&(r.skipBits(32),r.skipBits(32),r.skipBits(1));let e=r.readBits(1);e&&_n(r);let t=r.readBits(1);t&&_n(r),(e||t)&&r.skipBits(1),r.skipBits(1),re=r.pos,ie=r.readBits(1),ie&&(r.skipBits(1),v(r),v(r),v(r),v(r),T=v(r),ne=v(r))}if(T===null){n(ne===null);let e=a&16;if((i===44||i===86||i===100||i===110||i===122||i===244)&&e)T=0,ne=0;else{let e=f+1,t=p+1,n=(2-x)*t,r=Cr.find(e=>e.level>=o)??h(Cr),i=Math.min(Math.floor(r.maxDpbMbs/(e*n)),16);T=i,ne=i}}return n(ne!==null),{emulationUnpreventedBytes:t,profileIdc:i,constraintFlags:a,levelIdc:o,frameMbsOnlyFlag:x,chromaFormatIdc:s,bitDepthLumaMinus8:c,bitDepthChromaMinus8:l,codedWidth:m,codedHeight:g,displayWidth:_,displayHeight:y,pixelAspectRatio:w,colourPrimaries:S,matrixCoefficients:ee,transferCharacteristics:C,fullRangeFlag:te,numReorderFrames:T,maxDecFrameBuffering:ne,vuiParametersFlagBitOffset:ae,bitstreamRestrictionFlagBitOffset:re,bitstreamRestrictionFlag:ie}}catch(e){return A._error(`Error parsing AVC SPS:`,e),null}},_n=e=>{let t=v(e);e.skipBits(4),e.skipBits(4);for(let n=0;n<=t;n++)v(e),v(e),e.skipBits(1);e.skipBits(5),e.skipBits(5),e.skipBits(5),e.skipBits(5)},vn=e=>{n(e.bitstreamRestrictionFlag!==1);let t=new Uint8Array(e.emulationUnpreventedBytes.byteLength+64),r=new j(e.emulationUnpreventedBytes),i=new j(t);e.bitstreamRestrictionFlag===null?(i.copyBits(e.vuiParametersFlagBitOffset,r),i.writeBits(1,1),i.writeBits(1,0),i.writeBits(1,0),i.writeBits(1,0),i.writeBits(1,0),i.writeBits(1,0),i.writeBits(1,0),i.writeBits(1,0),i.writeBits(1,0)):(n(e.bitstreamRestrictionFlagBitOffset!==null),i.copyBits(e.bitstreamRestrictionFlagBitOffset,r)),i.writeBits(1,1),i.writeBits(1,1),y(i,2),y(i,1),y(i,16),y(i,16),y(i,e.numReorderFrames),y(i,e.maxDecFrameBuffering),i.writeBits(1,1),i.writeBits((8-i.pos%8)%8,0);let a=i.pos/8;return n(Number.isInteger(a)),sn(t.subarray(0,a))},yn=(e,t)=>{if(t.description){let n=(S(t.description)[21]&3)+1;return un(e,n)}return ln(e)},bn=(e,t)=>{if(t.description){let n=(S(t.description)[21]&3)+1;return nn(e,n)}return tn(e)},xn=e=>e>>1&63,Sn=e=>{try{let t=new j(on(e));t.skipBits(16),t.readBits(4);let n=t.readBits(3),r=t.readBits(1),{general_profile_space:i,general_tier_flag:a,general_profile_idc:o,general_profile_compatibility_flags:s,general_constraint_indicator_flags:c,general_level_idc:l}=wn(t,n);v(t);let u=v(t),d=0;u===3&&(d=t.readBits(1));let f=v(t),p=v(t),m=f,h=p;if(t.readBits(1)){let e=v(t),n=v(t),r=v(t),i=v(t),a=1,o=1,s=d===0?u:0;s===1?(a=2,o=2):s===2&&(a=2,o=1),m-=(e+n)*a,h-=(r+i)*o}let g=v(t),_=v(t);v(t);let y=t.readBits(1)?0:n,b=0;for(let e=y;e<=n;e++)v(t),b=v(t),v(t);v(t),v(t),v(t),v(t),v(t),v(t),t.readBits(1)&&t.readBits(1)&&Tn(t),t.skipBits(1),t.skipBits(1),t.readBits(1)&&(t.skipBits(4),t.skipBits(4),v(t),v(t),t.skipBits(1));let x=v(t);if(En(t,x),t.readBits(1)){let e=v(t);for(let n=0;n<e;n++)v(t),t.skipBits(1)}t.skipBits(1),t.skipBits(1);let S=2,C=2,ee=2,te=0,w=0,T={num:1,den:1};if(t.readBits(1)){let e=On(t,n);T=e.pixelAspectRatio,S=e.colourPrimaries,C=e.transferCharacteristics,ee=e.matrixCoefficients,te=e.fullRangeFlag,w=e.minSpatialSegmentationIdc}return{displayWidth:m,displayHeight:h,pixelAspectRatio:T,colourPrimaries:S,transferCharacteristics:C,matrixCoefficients:ee,fullRangeFlag:te,maxDecFrameBuffering:b+1,spsMaxSubLayersMinus1:n,spsTemporalIdNestingFlag:r,generalProfileSpace:i,generalTierFlag:a,generalProfileIdc:o,generalProfileCompatibilityFlags:s,generalConstraintIndicatorFlags:c,generalLevelIdc:l,chromaFormatIdc:u,bitDepthLumaMinus8:g,bitDepthChromaMinus8:_,minSpatialSegmentationIdc:w}}catch(e){return A._error(`Error parsing HEVC SPS:`,e),null}},Cn=e=>{try{let t=[],n=[],r=[],i=[];for(let a of tn(e)){let o=e.subarray(a.offset,a.offset+a.length),s=xn(o[0]);s===M.VPS_NUT?t.push(o):s===M.SPS_NUT?n.push(o):s===M.PPS_NUT?r.push(o):(s===M.PREFIX_SEI_NUT||s===M.SUFFIX_SEI_NUT)&&i.push(o)}if(n.length===0||r.length===0)return null;let a=Sn(n[0]);if(!a)return null;let o=0;if(r.length>0){let e=r[0],t=new j(on(e));t.skipBits(16),v(t),v(t),t.skipBits(1),t.skipBits(1),t.skipBits(3),t.skipBits(1),t.skipBits(1),v(t),v(t),b(t),t.skipBits(1),t.skipBits(1),t.readBits(1)&&v(t),b(t),b(t),t.skipBits(1),t.skipBits(1),t.skipBits(1),t.skipBits(1);let n=t.readBits(1),i=t.readBits(1);o=!n&&!i?0:n&&!i?2:!n&&i?3:0}let s=[...t.length?[{arrayCompleteness:1,nalUnitType:M.VPS_NUT,nalUnits:t}]:[],...n.length?[{arrayCompleteness:1,nalUnitType:M.SPS_NUT,nalUnits:n}]:[],...r.length?[{arrayCompleteness:1,nalUnitType:M.PPS_NUT,nalUnits:r}]:[],...i.length?[{arrayCompleteness:1,nalUnitType:xn(i[0][0]),nalUnits:i}]:[]];return{configurationVersion:1,generalProfileSpace:a.generalProfileSpace,generalTierFlag:a.generalTierFlag,generalProfileIdc:a.generalProfileIdc,generalProfileCompatibilityFlags:a.generalProfileCompatibilityFlags,generalConstraintIndicatorFlags:a.generalConstraintIndicatorFlags,generalLevelIdc:a.generalLevelIdc,minSpatialSegmentationIdc:a.minSpatialSegmentationIdc,parallelismType:o,chromaFormatIdc:a.chromaFormatIdc,bitDepthLumaMinus8:a.bitDepthLumaMinus8,bitDepthChromaMinus8:a.bitDepthChromaMinus8,avgFrameRate:0,constantFrameRate:0,numTemporalLayers:a.spsMaxSubLayersMinus1+1,temporalIdNested:a.spsTemporalIdNestingFlag,lengthSizeMinusOne:3,arrays:s}}catch(e){return A._error(`Error building HEVC Decoder Configuration Record:`,e),null}},wn=(e,t)=>{let n=e.readBits(2),r=e.readBits(1),i=e.readBits(5),a=0;for(let t=0;t<32;t++)a=a<<1|e.readBits(1);let o=new Uint8Array(6);for(let t=0;t<6;t++)o[t]=e.readBits(8);let s=e.readBits(8),c=[],l=[];for(let n=0;n<t;n++)c.push(e.readBits(1)),l.push(e.readBits(1));if(t>0)for(let n=t;n<8;n++)e.skipBits(2);for(let n=0;n<t;n++)c[n]&&e.skipBits(88),l[n]&&e.skipBits(8);return{general_profile_space:n,general_tier_flag:r,general_profile_idc:i,general_profile_compatibility_flags:a,general_constraint_indicator_flags:o,general_level_idc:s}},Tn=e=>{for(let t=0;t<4;t++)for(let n=0;n<(t===3?2:6);n++)if(!e.readBits(1))v(e);else{let n=Math.min(64,1<<4+(t<<1));t>1&&b(e);for(let t=0;t<n;t++)b(e)}},En=(e,t)=>{let n=[];for(let r=0;r<t;r++)n[r]=Dn(e,r,t,n)},Dn=(e,t,n,r)=>{let i=0,a=0,o=0;if(t!==0&&(a=e.readBits(1)),a){o=t===n?t-(v(e)+1):t-1,e.readBits(1),v(e);let a=r[o]??0;for(let t=0;t<=a;t++)e.readBits(1)||e.readBits(1);i=r[o]}else{let t=v(e),n=v(e);for(let n=0;n<t;n++)v(e),e.readBits(1);for(let t=0;t<n;t++)v(e),e.readBits(1);i=t+n}return i},On=(e,t)=>{let n=2,r=2,i=2,a=0,o=0,s={num:1,den:1};if(e.readBits(1)){let t=e.readBits(8);if(t===255)s={num:e.readBits(16),den:e.readBits(16)};else{let e=hn[t];e&&(s=e)}}return e.readBits(1)&&e.readBits(1),e.readBits(1)&&(e.readBits(3),a=e.readBits(1),e.readBits(1)&&(n=e.readBits(8),r=e.readBits(8),i=e.readBits(8))),e.readBits(1)&&(v(e),v(e)),e.readBits(1),e.readBits(1),e.readBits(1),e.readBits(1)&&(v(e),v(e),v(e),v(e)),e.readBits(1)&&(e.readBits(32),e.readBits(32),e.readBits(1)&&v(e),e.readBits(1)&&kn(e,!0,t)),e.readBits(1)&&(e.readBits(1),e.readBits(1),e.readBits(1),o=v(e),v(e),v(e),v(e),v(e)),{pixelAspectRatio:s,colourPrimaries:n,transferCharacteristics:r,matrixCoefficients:i,fullRangeFlag:a,minSpatialSegmentationIdc:o}},kn=(e,t,n)=>{let r=!1,i=!1,a=!1;t&&(r=e.readBits(1)===1,i=e.readBits(1)===1,(r||i)&&(a=e.readBits(1)===1,a&&(e.readBits(8),e.readBits(5),e.readBits(1),e.readBits(5)),e.readBits(4),e.readBits(4),a&&e.readBits(4),e.readBits(5),e.readBits(5),e.readBits(5)));for(let t=0;t<=n;t++){let t=e.readBits(1)===1,n=!0;t||(n=e.readBits(1)===1);let o=!1;n?v(e):o=e.readBits(1)===1;let s=1;o||(s=v(e)+1),r&&An(e,s,a),i&&An(e,s,a)}},An=(e,t,n)=>{for(let r=0;r<t;r++)v(e),v(e),n&&(v(e),v(e)),e.readBits(1)},jn=e=>{let t=[];t.push(e.configurationVersion),t.push((e.generalProfileSpace&3)<<6|(e.generalTierFlag&1)<<5|e.generalProfileIdc&31),t.push(e.generalProfileCompatibilityFlags>>>24&255),t.push(e.generalProfileCompatibilityFlags>>>16&255),t.push(e.generalProfileCompatibilityFlags>>>8&255),t.push(e.generalProfileCompatibilityFlags&255),t.push(...e.generalConstraintIndicatorFlags),t.push(e.generalLevelIdc&255),t.push(240|e.minSpatialSegmentationIdc>>8&15),t.push(e.minSpatialSegmentationIdc&255),t.push(252|e.parallelismType&3),t.push(252|e.chromaFormatIdc&3),t.push(248|e.bitDepthLumaMinus8&7),t.push(248|e.bitDepthChromaMinus8&7),t.push(e.avgFrameRate>>8&255),t.push(e.avgFrameRate&255),t.push((e.constantFrameRate&3)<<6|(e.numTemporalLayers&7)<<3|(e.temporalIdNested&1)<<2|e.lengthSizeMinusOne&3),t.push(e.arrays.length&255);for(let n of e.arrays){t.push((n.arrayCompleteness&1)<<7|0|n.nalUnitType&63),t.push(n.nalUnits.length>>8&255),t.push(n.nalUnits.length&255);for(let e of n.nalUnits){t.push(e.length>>8&255),t.push(e.length&255);for(let n=0;n<e.length;n++)t.push(e[n])}}return new Uint8Array(t)},Mn=e=>{try{let t=C(e),n=0,r=t.getUint8(n++),i=t.getUint8(n++),a=i>>6&3,o=i>>5&1,s=i&31,c=t.getUint32(n,!1);n+=4;let l=e.subarray(n,n+6);n+=6;let u=t.getUint8(n++),d=(t.getUint8(n++)&15)<<8|t.getUint8(n++),f=t.getUint8(n++)&3,p=t.getUint8(n++)&3,m=t.getUint8(n++)&7,h=t.getUint8(n++)&7,g=t.getUint16(n,!1);n+=2;let _=t.getUint8(n++),v=_>>6&3,y=_>>3&7,b=_>>2&1,x=_&3,S=t.getUint8(n++),ee=[];for(let r=0;r<S;r++){let r=t.getUint8(n++),i=r>>7&1,a=r&63,o=t.getUint16(n,!1);n+=2;let s=[];for(let r=0;r<o;r++){let r=t.getUint16(n,!1);n+=2,s.push(e.subarray(n,n+r)),n+=r}ee.push({arrayCompleteness:i,nalUnitType:a,nalUnits:s})}return{configurationVersion:r,generalProfileSpace:a,generalTierFlag:o,generalProfileIdc:s,generalProfileCompatibilityFlags:c,generalConstraintIndicatorFlags:l,generalLevelIdc:u,minSpatialSegmentationIdc:d,parallelismType:f,chromaFormatIdc:p,bitDepthLumaMinus8:m,bitDepthChromaMinus8:h,avgFrameRate:g,constantFrameRate:v,numTemporalLayers:y,temporalIdNested:b,lengthSizeMinusOne:x,arrays:ee}}catch(e){return A._error(`Error deserializing HEVC Decoder Configuration Record:`,e),null}};var Nn;(function(e){e[e.audAllowed=0]=`audAllowed`,e[e.beforeFirstVcl=1]=`beforeFirstVcl`,e[e.afterFirstVcl=2]=`afterFirstVcl`,e[e.eoBitstreamAllowed=3]=`eoBitstreamAllowed`,e[e.noMoreDataAllowed=4]=`noMoreDataAllowed`})(Nn||={});const Pn=(e,t)=>{let n=new Set,r=Nn.audAllowed;for(let i of bn(e,t)){if(r===Nn.noMoreDataAllowed){n.add(i.offset);continue}let t=xn(e[i.offset]);if(r===Nn.eoBitstreamAllowed&&t!==37){n.add(i.offset);continue}let a=!1;t===35?r>Nn.audAllowed?a=!0:r=Nn.beforeFirstVcl:t<=31?r>Nn.afterFirstVcl?a=!0:r=Nn.afterFirstVcl:t===36?r===Nn.afterFirstVcl?r=Nn.eoBitstreamAllowed:a=!0:t===37?r<Nn.afterFirstVcl?a=!0:r=Nn.noMoreDataAllowed:t===32||t===33||t===34||t===39||t>=41&&t<=44||t>=48&&t<=55?r>Nn.beforeFirstVcl?a=!0:r=Nn.beforeFirstVcl:(t===38||t===40||t>=45&&t<=47||t>=56&&t<=63)&&r<Nn.afterFirstVcl&&(a=!0),a&&n.add(i.offset)}if(n.size===0)return null;let i=[];for(let r of bn(e,t))n.has(r.offset)||i.push(e.subarray(r.offset,r.offset+r.length));return yn(i,t)},Fn={1:{colourPrimaries:5,transferCharacteristics:6,matrixCoefficients:5},2:{colourPrimaries:1,transferCharacteristics:1,matrixCoefficients:1},3:{colourPrimaries:6,transferCharacteristics:6,matrixCoefficients:6},4:{colourPrimaries:7,transferCharacteristics:7,matrixCoefficients:7},5:{colourPrimaries:9,transferCharacteristics:14,matrixCoefficients:9},7:{colourPrimaries:1,transferCharacteristics:13,matrixCoefficients:0}},In=e=>{let t=new j(e);if(t.readBits(2)!==2)return null;let n=t.readBits(1),r=(t.readBits(1)<<1)+n;if(r===3&&t.skipBits(1),t.readBits(1)===1||t.readBits(1)!==0||(t.skipBits(2),t.readBits(24)!==4817730))return null;let i=8;r>=2&&(i=t.readBits(1)?12:10);let a=t.readBits(3),o=0,s=0;if(a!==7){if(s=t.readBits(1),r===1||r===3){let e=t.readBits(1),n=t.readBits(1);o=!e&&!n?3:e&&!n?2:1,t.skipBits(1)}else o=1}else o=3,s=1;let c=t.readBits(16),l=t.readBits(16),u=(c+1)*(l+1),d=h(Tr).level;for(let e of Tr)if(u<=e.maxPictureSize){d=e.level;break}let f=Fn[a],p=f?.colourPrimaries??2,m=f?.transferCharacteristics??2,g=f?.matrixCoefficients??2;return{profile:r,level:d,bitDepth:i,chromaSubsampling:o,videoFullRangeFlag:s,colourPrimaries:p,transferCharacteristics:m,matrixCoefficients:g}},Ln=e=>e.colourPrimaries!==2||e.transferCharacteristics!==2||e.matrixCoefficients!==2,Rn=function*(e){let t=new j(e),r=()=>{let e=0;for(let n=0;n<8;n++){let r=t.readAlignedByte();if(e+=(r&127)*2**(n*7),!(r&128))break;if(n===7&&r&128)return null}return e>2**32-1?null:e};for(;t.getBitsLeft()>=8;){t.skipBits(1);let i=t.readBits(4),a=t.readBits(1),o=t.readBits(1);t.skipBits(1),a&&t.skipBits(8);let s;if(o){let e=r();if(e===null)return;s=e}else s=Math.floor(t.getBitsLeft()/8);n(t.pos%8==0),yield{type:i,data:e.subarray(t.pos/8,t.pos/8+s)},t.skipBits(s*8)}},zn=e=>{for(let{type:t,data:n}of Rn(e)){if(t!==1)continue;let e=new j(n),r=e.readBits(3);e.readBits(1);let i=e.readBits(1),a=0,o=0,s=0;if(i)a=e.readBits(5);else{let t=e.readBits(1),n=0;if(t){if(e.skipBits(32),e.skipBits(32),e.readBits(1)){let t=0;for(;t<32&&!e.readBits(1);)t++;t<32&&e.skipBits(t)}n=e.readBits(1),n&&(s=e.readBits(5),e.skipBits(32),e.skipBits(5),e.skipBits(5))}let r=e.readBits(1),i=e.readBits(5);for(let t=0;t<=i;t++){e.skipBits(12);let i=e.readBits(5);if(t===0&&(a=i),i>7){let n=e.readBits(1);t===0&&(o=n)}if(n&&e.readBits(1)){let t=s+1;e.skipBits(t),e.skipBits(t),e.skipBits(1)}r&&e.readBits(1)&&e.skipBits(4)}}let c=e.readBits(4),l=e.readBits(4),u=c+1;e.skipBits(u);let d=l+1;e.skipBits(d);let f=0;if(f=i?0:e.readBits(1),f&&(e.skipBits(4),e.skipBits(3)),e.skipBits(1),e.skipBits(1),e.skipBits(1),!i){e.skipBits(1),e.skipBits(1),e.skipBits(1),e.skipBits(1);let t=e.readBits(1);t&&(e.skipBits(1),e.skipBits(1));let n=e.readBits(1),r=0;r=n?2:e.readBits(1),r>0&&(e.readBits(1)||e.skipBits(1)),t&&e.skipBits(3)}e.skipBits(1),e.skipBits(1),e.skipBits(1);let p=e.readBits(1),m=8;r===2&&p?m=e.readBits(1)?12:10:r<=2&&(m=p?10:8);let h=0;r!==1&&(h=e.readBits(1));let g=2,_=2,v=2;e.readBits(1)&&(g=e.readBits(8),_=e.readBits(8),v=e.readBits(8));let y=0,b=1,x=1,S=0;return h?y=e.readBits(1):g===1&&_===13&&v===0?(y=1,b=0,x=0):(y=e.readBits(1),r===0?(b=1,x=1):r===1?(b=0,x=0):m===12?(b=e.readBits(1),x=b?e.readBits(1):0):(b=1,x=0),b&&x&&(S=e.readBits(2))),{profile:r,level:a,tier:o,bitDepth:m,monochrome:h,chromaSubsamplingX:b,chromaSubsamplingY:x,chromaSamplePosition:S,videoFullRangeFlag:y,colourPrimaries:g,transferCharacteristics:_,matrixCoefficients:v}}return null},Bn=e=>e.colourPrimaries!==2||e.transferCharacteristics!==2||e.matrixCoefficients!==2,Vn=e=>{if(e.length<36)return null;let t=C(e);return t.getUint32(4)!==1768124518||t.getUint16(8)<28?null:{fullRange:!1,colourPrimaries:t.getUint8(22),transferCharacteristics:t.getUint8(23),matrixCoefficients:t.getUint8(24)}},Hn=e=>{let t=C(e),n=t.getUint8(9),r=t.getUint16(10,!0),i=t.getUint32(12,!0),a=t.getInt16(16,!0),o=t.getUint8(18),s=null;return o&&(s=e.subarray(19,21+n)),{outputChannelCount:n,preSkip:r,inputSampleRate:i,outputGain:a,channelMappingFamily:o,channelMappingTable:s}},Un=[480,960,1920,2880,480,960,1920,2880,480,960,1920,2880,480,960,480,960,120,240,480,960,120,240,480,960,120,240,480,960,120,240,480,960],Wn=e=>{let t=e[0]>>3,n=e[0]&3,r;return r=n===0?1:n===1||n===2?2:e[1]&63,{durationInSamples:Un[t]*r}},Gn=e=>{if(e.length<7)throw Error(`Setup header is too short.`);if(e[0]!==5)throw Error(`Wrong packet type in Setup header.`);if(String.fromCharCode(...e.slice(1,7))!==`vorbis`)throw Error(`Invalid packet signature in Setup header.`);let t=e.length,n=new Uint8Array(t);for(let r=0;r<t;r++)n[r]=e[t-1-r];let r=new j(n),i=0;for(;r.getBitsLeft()>97;)if(r.readBits(1)===1){i=r.pos;break}if(i===0)throw Error(`Invalid Setup header: framing bit not found.`);let a=0,o=!1,s=0;for(;r.getBitsLeft()>=97;){let e=r.pos,t=r.readBits(8),n=r.readBits(16),i=r.readBits(16);if(t>63||n!==0||i!==0){r.pos=e;break}if(r.skipBits(1),a++,a>64)break;r.clone().readBits(6)+1===a&&(o=!0,s=a)}if(!o)throw Error(`Invalid Setup header: mode header not found.`);if(s>63)throw Error(`Unsupported mode count: ${s}.`);let c=s;r.pos=0,r.skipBits(i);let l=Array(c).fill(0);for(let e=c-1;e>=0;e--)r.skipBits(40),l[e]=r.readBits(1);return{modeBlockflags:l}},Kn=(e,t,r)=>{switch(e){case`avc`:for(let e of rn(r,t)){let t=r[e.offset],n=an(t);if(n>=en.NON_IDR_SLICE&&n<=en.SLICE_DPC)return`delta`;if(n===en.IDR)return`key`;if(n===en.SEI&&!tt()){let t=r.subarray(e.offset,e.offset+e.length),n=on(t),i=1;do{let e=0;for(;;){let t=n[i++];if(t===void 0||(e+=t,t<255))break}let t=0;for(;;){let e=n[i++];if(e===void 0||(t+=e,e<255))break}if(e===6){let e=new j(n);e.pos=8*i;let t=v(e),r=e.readBits(1);if(t===0&&r===1)return`key`}i+=t}while(i<n.length-1)}}return`delta`;case`hevc`:for(let e of bn(r,t)){let t=xn(r[e.offset]);if(t<M.BLA_W_LP)return`delta`;if(t<=M.RSV_IRAP_VCL23)return`key`}return`delta`;case`vp8`:return r[0]&1?`delta`:`key`;case`vp9`:{let e=new j(r);if(e.readBits(2)!==2)return null;let t=e.readBits(1);return(e.readBits(1)<<1)+t===3&&e.skipBits(1),e.readBits(1)?null:e.readBits(1)===0?`key`:`delta`}case`av1`:{let e=!1;for(let{type:t,data:n}of Rn(r))if(t===1){let t=new j(n);t.skipBits(4),e=!!t.readBits(1)}else if(t===3||t===6||t===7){if(e)return`key`;let t=new j(n);return t.readBits(1)?null:t.readBits(2)===0?`key`:`delta`}return null}case`prores`:return`key`;default:Ee(e),n(!1)}};var qn;(function(e){e[e.STREAMINFO=0]=`STREAMINFO`,e[e.VORBIS_COMMENT=4]=`VORBIS_COMMENT`,e[e.PICTURE=6]=`PICTURE`})(qn||={});const Jn=(e,t)=>{let n=C(e),r=0,i=n.getUint32(r,!0);r+=4;let a=w.decode(e.subarray(r,r+i));r+=i,i>0&&(t.raw??={},t.raw.vendor??=a);let o=n.getUint32(r,!0);r+=4;for(let i=0;i<o;i++){let i=n.getUint32(r,!0);r+=4;let a=w.decode(e.subarray(r,r+i));r+=i;let o=a.indexOf(`=`);if(o===-1)continue;let s=a.slice(0,o).toUpperCase(),c=a.slice(o+1);switch(t.raw??={},Array.isArray(t.raw[s])?t.raw[s]=[...t.raw[s],c]:typeof t.raw[s]==`string`?t.raw[s]=[t.raw[s],c]:t.raw[s]??=c,s){case`TITLE`:t.title??=c;break;case`DESCRIPTION`:t.description??=c;break;case`ARTIST`:t.artist??=c;break;case`ALBUM`:t.album??=c;break;case`ALBUMARTIST`:t.albumArtist??=c;break;case`COMMENT`:t.comment??=c;break;case`LYRICS`:t.lyrics??=c;break;case`TRACKNUMBER`:{let e=c.split(`/`),n=Number.parseInt(e[0],10),r=e[1]&&Number.parseInt(e[1],10);Number.isInteger(n)&&n>0&&(t.trackNumber??=n),r&&Number.isInteger(r)&&r>0&&(t.tracksTotal??=r)}break;case`TRACKTOTAL`:{let e=Number.parseInt(c,10);Number.isInteger(e)&&e>0&&(t.tracksTotal??=e)}break;case`DISCNUMBER`:{let e=c.split(`/`),n=Number.parseInt(e[0],10),r=e[1]&&Number.parseInt(e[1],10);Number.isInteger(n)&&n>0&&(t.discNumber??=n),r&&Number.isInteger(r)&&r>0&&(t.discsTotal??=r)}break;case`DISCTOTAL`:{let e=Number.parseInt(c,10);Number.isInteger(e)&&e>0&&(t.discsTotal??=e)}break;case`DATE`:{let e=new Date(c);Number.isNaN(e.getTime())||(t.date??=e)}break;case`GENRE`:t.genre??=c;break;case`METADATA_BLOCK_PICTURE`:{let e=ct(c),n=C(e),r=n.getUint32(0,!1),i=n.getUint32(4,!1),a=String.fromCharCode(...e.subarray(8,8+i)),o=n.getUint32(8+i,!1),s=w.decode(e.subarray(12+i,12+i+o)),l=n.getUint32(i+o+28),u=e.subarray(i+o+32,i+o+32+l);t.images??=[],t.images.push({data:u,mimeType:a,kind:r===3?`coverFront`:r===4?`coverBack`:`unknown`,name:void 0,description:s||void 0})}}}},Yn=(e,t,n)=>{let r=[e],i=T.encode(`Mediabunny`),a=new Uint8Array(4+i.length),o=new DataView(a.buffer);o.setUint32(0,i.length,!0),a.set(i,4),r.push(a);let s=[],c=(e,t)=>{let n=`${e}=${t}`,i=T.encode(n);a=new Uint8Array(4+i.length),o=new DataView(a.buffer),o.setUint32(0,i.length,!0),a.set(i,4),r.push(a),s.push(e)};for(let{key:e,value:r}of ot(t))switch(e){case`title`:c(`TITLE`,r);break;case`description`:c(`DESCRIPTION`,r);break;case`artist`:c(`ARTIST`,r);break;case`album`:c(`ALBUM`,r);break;case`albumArtist`:c(`ALBUMARTIST`,r);break;case`genre`:c(`GENRE`,r);break;case`date`:c(`DATE`,r.toISOString().slice(0,10));break;case`comment`:c(`COMMENT`,r);break;case`lyrics`:c(`LYRICS`,r);break;case`trackNumber`:c(`TRACKNUMBER`,r.toString());break;case`tracksTotal`:c(`TRACKTOTAL`,r.toString());break;case`discNumber`:c(`DISCNUMBER`,r.toString());break;case`discsTotal`:c(`DISCTOTAL`,r.toString());break;case`images`:if(!n)break;for(let e of r){let t=e.kind===`coverFront`?3:e.kind===`coverBack`?4:0,n=new Uint8Array(e.mimeType.length);for(let t=0;t<e.mimeType.length;t++)n[t]=e.mimeType.charCodeAt(t);let r=T.encode(e.description??``),i=new Uint8Array(8+n.length+4+r.length+16+4+e.data.length),a=C(i);a.setUint32(0,t,!1),a.setUint32(4,n.length,!1),i.set(n,8),a.setUint32(8+n.length,r.length,!1),i.set(r,12+n.length),a.setUint32(28+n.length+r.length,e.data.length,!1),i.set(e.data,32+n.length+r.length),c(`METADATA_BLOCK_PICTURE`,lt(i))}break;case`raw`:break;default:Ee(e)}if(t.raw)for(let e in t.raw){let n=t.raw[e]??t.raw[e.toLowerCase()];if(!(e===`vendor`||n==null||s.includes(e))){if(typeof n==`string`)c(e,n);else if(Array.isArray(n)&&n.every(e=>typeof e==`string`))for(let t of n)c(e,t)}}let l=new Uint8Array(4);C(l).setUint32(0,s.length,!0),r.splice(2,0,l);let u=r.reduce((e,t)=>e+t.length,0),d=new Uint8Array(u),f=0;for(let e of r)d.set(e,f),f+=e.length;return d},Xn=[2,1,2,3,3,4,4,5],Zn=e=>{if(e.length<7||e[0]!==11||e[1]!==119)return null;let t=new j(e);t.skipBits(16),t.skipBits(16);let n=t.readBits(2);if(n===3)return null;let r=t.readBits(6),i=t.readBits(5);if(i>8)return null;let a=t.readBits(3),o=t.readBits(3);return o&1&&o!==1&&t.skipBits(2),o&4&&t.skipBits(2),o===2&&t.skipBits(2),{fscod:n,bsid:i,bsmod:a,acmod:o,lfeon:t.readBits(1),bitRateCode:Math.floor(r/2)}},Qn=[128,138,192,128,140,192,160,174,240,160,176,240,192,208,288,192,210,288,224,242,336,224,244,336,256,278,384,256,280,384,320,348,480,320,350,480,384,416,576,384,418,576,448,486,672,448,488,672,512,556,768,512,558,768,640,696,960,640,698,960,768,834,1152,768,836,1152,896,974,1344,896,976,1344,1024,1114,1536,1024,1116,1536,1280,1392,1920,1280,1394,1920,1536,1670,2304,1536,1672,2304,1792,1950,2688,1792,1952,2688,2048,2228,3072,2048,2230,3072,2304,2506,3456,2304,2508,3456,2560,2786,3840,2560,2788,3840],$n=new Uint8Array([5,4,65,67,45,51]),er=new Uint8Array([5,4,69,65,67,51]),tr=[1,2,3,6],nr=e=>{if(e.length<6||e[0]!==11||e[1]!==119)return null;let t=new j(e);t.skipBits(16);let n=t.readBits(2);if(t.skipBits(3),n!==0&&n!==2)return null;let r=t.readBits(11),i=t.readBits(2),a=0,o;i===3?(a=t.readBits(2),o=3):o=t.readBits(2);let s=t.readBits(3),c=t.readBits(1),l=t.readBits(5);if(l<11||l>16)return null;let u=tr[o],d;return d=i<3?Qt[i]/1e3:$t[a]/1e3,{dataRate:Math.round((r+1)*d/(u*16)),substreams:[{fscod:i,fscod2:a,bsid:l,bsmod:0,acmod:s,lfeon:c,numDepSub:0,chanLoc:0}]}},rr=e=>{if(e.length<2)return null;let t=new j(e),n=t.readBits(13),r=t.readBits(3),i=[];for(let n=0;n<=r&&!(Math.ceil(t.pos/8)+3>e.length);n++){let e=t.readBits(2),n=t.readBits(5);t.skipBits(1),t.skipBits(1);let r=t.readBits(3),a=t.readBits(3),o=t.readBits(1);t.skipBits(3);let s=t.readBits(4),c=0;s>0?c=t.readBits(9):t.skipBits(1),i.push({fscod:e,fscod2:null,bsid:n,bsmod:r,acmod:a,lfeon:o,numDepSub:s,chanLoc:c})}return i.length===0?null:{dataRate:n,substreams:i}},ir=e=>{let t=e.substreams[0];return n(t),t.fscod<3?Qt[t.fscod]:t.fscod2!==null&&t.fscod2<3?$t[t.fscod2]:null},ar=e=>{let t=e.substreams[0];n(t);let r=Xn[t.acmod]+t.lfeon;if(t.numDepSub>0){let e=[2,2,1,1,2,2,2,1,1];for(let n=0;n<9;n++)t.chanLoc&1<<8-n&&(r+=e[n])}return r},or=[0,8e3,16e3,32e3,0,0,11025,22050,44100,0,0,12e3,24e3,48e3,96e3,192e3],sr=[32e3,56e3,64e3,96e3,112e3,128e3,192e3,224e3,256e3,32e4,384e3,448e3,512e3,576e3,64e4,768e3,96e4,1024e3,1152e3,128e4,1344e3,1408e3,1411200,1472e3,1536e3,192e4,2048e3,3072e3,384e4,0,0,0],cr=[16,16,20,20,0,24,24,0],lr=[1,2,2,2,2,3,3,4,4,5,6,6,6,7,8,8],ur=[1,2,2,2,2,3,18,19,6,7,518,323,83,519,582,535],dr=[32e3,44100,48e3,0],fr=[8e3,16e3,32e3,64e3,128e3,22050,44100,88200,176400,352800,12e3,24e3,48e3,96e3,192e3,384e3],pr=[512,1024,2048,4096],mr=e=>{let t=gr(e),n=C(e),r=t?Math.ceil(t.frameSize/4)*4:0,i=null;for(;r+4<=e.length&&n.getUint32(r)===1683496997;){let t=_r(e.subarray(r));if(!t)break;i??=t,r+=t.frameSize}if(t)return{frameSize:i?r:t.frameSize,sampleRate:t.sampleRate,numberOfChannels:t.numberOfChannels,sampleCount:t.sampleCount,channelLayout:t.channelLayout,pcmResolution:t.pcmResolution,bitRate:t.bitRate,core:t,hasExtensions:i!==null};if(!i?.asset)return null;let{asset:a}=i;return{frameSize:r,sampleRate:a.sampleRate,numberOfChannels:a.numberOfChannels,sampleCount:a.sampleCount,channelLayout:a.channelLayout,pcmResolution:a.pcmResolution,bitRate:0,core:null,hasExtensions:!0}},hr=e=>{let t=mr(e);return t?.core?t.hasExtensions?`dtsh`:`dtsc`:null},gr=e=>{if(e.length<18||e[0]!==127||e[1]!==254||e[2]!==128||e[3]!==1)return null;let t=new j(e);if(t.skipBits(32),t.skipBits(1),t.readBits(5)!==31)return null;let n=t.readBits(1),r=t.readBits(7)+1;if(r%8!=0)return null;let i=t.readBits(14)+1;if(i<96)return null;let a=t.readBits(6);if(a>=lr.length)return null;let o=or[t.readBits(4)];if(o===0)return null;let s=sr[t.readBits(5)];if(t.readBits(1)!==0)return null;t.skipBits(4),t.skipBits(5);let c=t.readBits(2);if(c===3)return null;t.skipBits(1),n&&t.skipBits(16),t.skipBits(7);let l=cr[t.readBits(3)];if(l===0)return null;let u=c!==0;return{frameSize:i,sampleRate:o,numberOfChannels:lr[a]+ +!!u,sampleCount:r*32,channelLayout:ur[a]|(u?8:0),amode:a,lfePresent:u,bitRate:s,pcmResolution:l}},_r=e=>{if(e.length<10||e[0]!==100||e[1]!==88||e[2]!==32||e[3]!==37)return null;let t=new j(e);t.skipBits(32),t.skipBits(8);let n=t.readBits(2),r=t.readBits(1),i=8+4*r,a=16+4*r;t.skipBits(i);let o=t.readBits(a)+1,s={frameSize:o,asset:null};if(!t.readBits(1))return s;let c=dr[t.readBits(2)],l=512*(t.readBits(3)+1);t.readBits(1)&&t.skipBits(36);let u=t.readBits(3)+1,d=t.readBits(3)+1,f=[];for(let e=0;e<u;e++)f.push(t.readBits(n+1));for(let e of f)t.skipBits(8*Ve(e));if(t.readBits(1)){t.skipBits(2);let e=t.readBits(2)+1<<2,n=t.readBits(2)+1;t.skipBits(n*e)}for(let e=0;e<d;e++)t.skipBits(a);t.skipBits(9),t.skipBits(3),t.readBits(1)&&t.skipBits(4),t.readBits(1)&&t.skipBits(24),t.readBits(1)&&t.skipBits(8*(t.readBits(10)+1));let p=t.readBits(5)+1,m=fr[t.readBits(4)],h=t.readBits(8)+1,g=0;if(t.readBits(1)&&(h>2&&t.skipBits(1),h>6&&t.skipBits(1),t.readBits(1))){let e=t.readBits(2)+1<<2;g=t.readBits(e)}return c===0||t.getBitsLeft()<0?s:{frameSize:o,asset:{sampleRate:m,numberOfChannels:h,sampleCount:Math.round(l*m/c),channelLayout:g,pcmResolution:p}}},vr=e=>{if(e.length<20)return null;let t=C(e),n=t.getUint32(0);if(n===0)return null;let r=new j(e);r.seekToByte(13);let i=r.readBits(2);r.skipBits(5);let a=r.readBits(1),o=r.readBits(6);r.skipBits(14),r.skipBits(1),r.skipBits(3);let s=r.readBits(16),c=null;return s===0?o<lr.length&&(c=lr[o]+a):c=br(s),{sampleRate:n,maxBitrate:t.getUint32(4),avgBitrate:t.getUint32(8),pcmSampleDepth:e[12],sampleCount:pr[i],channelLayout:s,numberOfChannels:c}},yr=e=>{let t=new Uint8Array(20),n=C(t);n.setUint32(0,e.sampleRate),n.setUint32(4,e.bitRate),n.setUint32(8,e.bitRate),t[12]=e.pcmResolution;let r=e.core&&!e.hasExtensions?1:0,i=new j(t);return i.seekToByte(13),i.writeBits(2,Math.max(pr.indexOf(e.sampleCount),0)),i.writeBits(5,r),i.writeBits(1,+!!e.core?.lfePresent),i.writeBits(6,e.core?.amode??0),i.writeBits(14,e.core?e.core.frameSize-1:0),i.writeBits(1,0),i.writeBits(3,0),i.writeBits(16,e.channelLayout),i.writeBits(1,0),i.writeBits(1,0),i.writeBits(1,0),i.writeBits(5,0),t},br=e=>Ve(e)+Ve(e&44646),N=[`avc`,`hevc`,`vp9`,`av1`,`vp8`,`prores`],P=[`pcm-s16`,`pcm-s16be`,`pcm-s24`,`pcm-s24be`,`pcm-s32`,`pcm-s32be`,`pcm-f32`,`pcm-f32be`,`pcm-f64`,`pcm-f64be`,`pcm-u8`,`pcm-s8`,`ulaw`,`alaw`],xr=[`aac`,`opus`,`mp3`,`vorbis`,`flac`,`ac3`,`eac3`,`dts`],F=[...xr,...P],Sr=[`webvtt`],Cr=[{maxMacroblocks:99,maxBitrate:64e3,maxDpbMbs:396,level:10},{maxMacroblocks:396,maxBitrate:192e3,maxDpbMbs:900,level:11},{maxMacroblocks:396,maxBitrate:384e3,maxDpbMbs:2376,level:12},{maxMacroblocks:396,maxBitrate:768e3,maxDpbMbs:2376,level:13},{maxMacroblocks:396,maxBitrate:2e6,maxDpbMbs:2376,level:20},{maxMacroblocks:792,maxBitrate:4e6,maxDpbMbs:4752,level:21},{maxMacroblocks:1620,maxBitrate:4e6,maxDpbMbs:8100,level:22},{maxMacroblocks:1620,maxBitrate:1e7,maxDpbMbs:8100,level:30},{maxMacroblocks:3600,maxBitrate:14e6,maxDpbMbs:18e3,level:31},{maxMacroblocks:5120,maxBitrate:2e7,maxDpbMbs:20480,level:32},{maxMacroblocks:8192,maxBitrate:2e7,maxDpbMbs:32768,level:40},{maxMacroblocks:8192,maxBitrate:5e7,maxDpbMbs:32768,level:41},{maxMacroblocks:8704,maxBitrate:5e7,maxDpbMbs:34816,level:42},{maxMacroblocks:22080,maxBitrate:135e6,maxDpbMbs:110400,level:50},{maxMacroblocks:36864,maxBitrate:24e7,maxDpbMbs:184320,level:51},{maxMacroblocks:36864,maxBitrate:24e7,maxDpbMbs:184320,level:52},{maxMacroblocks:139264,maxBitrate:24e7,maxDpbMbs:696320,level:60},{maxMacroblocks:139264,maxBitrate:48e7,maxDpbMbs:696320,level:61},{maxMacroblocks:139264,maxBitrate:8e8,maxDpbMbs:696320,level:62}],wr=[{maxPictureSize:36864,maxBitrate:128e3,tier:`L`,level:30},{maxPictureSize:122880,maxBitrate:15e5,tier:`L`,level:60},{maxPictureSize:245760,maxBitrate:3e6,tier:`L`,level:63},{maxPictureSize:552960,maxBitrate:6e6,tier:`L`,level:90},{maxPictureSize:983040,maxBitrate:1e7,tier:`L`,level:93},{maxPictureSize:2228224,maxBitrate:12e6,tier:`L`,level:120},{maxPictureSize:2228224,maxBitrate:3e7,tier:`H`,level:120},{maxPictureSize:2228224,maxBitrate:2e7,tier:`L`,level:123},{maxPictureSize:2228224,maxBitrate:5e7,tier:`H`,level:123},{maxPictureSize:8912896,maxBitrate:25e6,tier:`L`,level:150},{maxPictureSize:8912896,maxBitrate:1e8,tier:`H`,level:150},{maxPictureSize:8912896,maxBitrate:4e7,tier:`L`,level:153},{maxPictureSize:8912896,maxBitrate:16e7,tier:`H`,level:153},{maxPictureSize:8912896,maxBitrate:6e7,tier:`L`,level:156},{maxPictureSize:8912896,maxBitrate:24e7,tier:`H`,level:156},{maxPictureSize:35651584,maxBitrate:6e7,tier:`L`,level:180},{maxPictureSize:35651584,maxBitrate:24e7,tier:`H`,level:180},{maxPictureSize:35651584,maxBitrate:12e7,tier:`L`,level:183},{maxPictureSize:35651584,maxBitrate:48e7,tier:`H`,level:183},{maxPictureSize:35651584,maxBitrate:24e7,tier:`L`,level:186},{maxPictureSize:35651584,maxBitrate:8e8,tier:`H`,level:186}],Tr=[{maxPictureSize:36864,maxBitrate:2e5,level:10},{maxPictureSize:73728,maxBitrate:8e5,level:11},{maxPictureSize:122880,maxBitrate:18e5,level:20},{maxPictureSize:245760,maxBitrate:36e5,level:21},{maxPictureSize:552960,maxBitrate:72e5,level:30},{maxPictureSize:983040,maxBitrate:12e6,level:31},{maxPictureSize:2228224,maxBitrate:18e6,level:40},{maxPictureSize:2228224,maxBitrate:3e7,level:41},{maxPictureSize:8912896,maxBitrate:6e7,level:50},{maxPictureSize:8912896,maxBitrate:12e7,level:51},{maxPictureSize:8912896,maxBitrate:18e7,level:52},{maxPictureSize:35651584,maxBitrate:18e7,level:60},{maxPictureSize:35651584,maxBitrate:24e7,level:61},{maxPictureSize:35651584,maxBitrate:48e7,level:62}],Er=[{maxPictureSize:147456,maxBitrate:15e5,tier:`M`,level:0},{maxPictureSize:278784,maxBitrate:3e6,tier:`M`,level:1},{maxPictureSize:665856,maxBitrate:6e6,tier:`M`,level:4},{maxPictureSize:1065024,maxBitrate:1e7,tier:`M`,level:5},{maxPictureSize:2359296,maxBitrate:12e6,tier:`M`,level:8},{maxPictureSize:2359296,maxBitrate:3e7,tier:`H`,level:8},{maxPictureSize:2359296,maxBitrate:2e7,tier:`M`,level:9},{maxPictureSize:2359296,maxBitrate:5e7,tier:`H`,level:9},{maxPictureSize:8912896,maxBitrate:3e7,tier:`M`,level:12},{maxPictureSize:8912896,maxBitrate:1e8,tier:`H`,level:12},{maxPictureSize:8912896,maxBitrate:4e7,tier:`M`,level:13},{maxPictureSize:8912896,maxBitrate:16e7,tier:`H`,level:13},{maxPictureSize:8912896,maxBitrate:6e7,tier:`M`,level:14},{maxPictureSize:8912896,maxBitrate:24e7,tier:`H`,level:14},{maxPictureSize:35651584,maxBitrate:6e7,tier:`M`,level:15},{maxPictureSize:35651584,maxBitrate:24e7,tier:`H`,level:15},{maxPictureSize:35651584,maxBitrate:6e7,tier:`M`,level:16},{maxPictureSize:35651584,maxBitrate:24e7,tier:`H`,level:16},{maxPictureSize:35651584,maxBitrate:1e8,tier:`M`,level:17},{maxPictureSize:35651584,maxBitrate:48e7,tier:`H`,level:17},{maxPictureSize:35651584,maxBitrate:16e7,tier:`M`,level:18},{maxPictureSize:35651584,maxBitrate:8e8,tier:`H`,level:18},{maxPictureSize:35651584,maxBitrate:16e7,tier:`M`,level:19},{maxPictureSize:35651584,maxBitrate:8e8,tier:`H`,level:19}],Dr=[`ap4x`,`ap4h`,`apch`,`apcn`,`apcs`,`apco`],Or=[`dtsc`,`dtsh`,`dtsl`,`dtse`],kr=[{fourCc:`apco`,bitrate:45e6,alpha:!1},{fourCc:`apcs`,bitrate:102e6,alpha:!1},{fourCc:`apcn`,bitrate:147e6,alpha:!1},{fourCc:`apch`,bitrate:22e7,alpha:!1},{fourCc:`ap4h`,bitrate:33e7,alpha:!0},{fourCc:`ap4x`,bitrate:5e8,alpha:!0}],Ar=(e,t,n,r,i)=>{
57
+ var en;(function(e){e[e.NON_IDR_SLICE=1]=`NON_IDR_SLICE`,e[e.SLICE_DPA=2]=`SLICE_DPA`,e[e.SLICE_DPB=3]=`SLICE_DPB`,e[e.SLICE_DPC=4]=`SLICE_DPC`,e[e.IDR=5]=`IDR`,e[e.SEI=6]=`SEI`,e[e.SPS=7]=`SPS`,e[e.PPS=8]=`PPS`,e[e.AUD=9]=`AUD`,e[e.SPS_EXT=13]=`SPS_EXT`})(en||={});var M;(function(e){e[e.RASL_N=8]=`RASL_N`,e[e.RASL_R=9]=`RASL_R`,e[e.BLA_W_LP=16]=`BLA_W_LP`,e[e.RSV_IRAP_VCL23=23]=`RSV_IRAP_VCL23`,e[e.VPS_NUT=32]=`VPS_NUT`,e[e.SPS_NUT=33]=`SPS_NUT`,e[e.PPS_NUT=34]=`PPS_NUT`,e[e.AUD_NUT=35]=`AUD_NUT`,e[e.PREFIX_SEI_NUT=39]=`PREFIX_SEI_NUT`,e[e.SUFFIX_SEI_NUT=40]=`SUFFIX_SEI_NUT`})(M||={});const tn=function*(e){let t=0,n=-1;for(;t<e.length-2;){let r=e.indexOf(0,t);if(r===-1||r>=e.length-2)break;t=r;let i=0;if(t+3<e.length&&e[t+1]===0&&e[t+2]===0&&e[t+3]===1?i=4:e[t+1]===0&&e[t+2]===1&&(i=3),i===0){t++;continue}n!==-1&&t>n&&(yield{offset:n,length:t-n}),n=t+i,t=n}n!==-1&&n<e.length&&(yield{offset:n,length:e.length-n})},nn=function*(e,t){let r=0,i=new DataView(e.buffer,e.byteOffset,e.byteLength);for(;r+t<=e.length;){let e;t===1?e=i.getUint8(r):t===2?e=i.getUint16(r,!1):t===3?e=De(i,r,!1):(n(t===4),e=i.getUint32(r,!1)),r+=t,yield{offset:r,length:e},r+=e}},rn=(e,t)=>{if(t.description){let n=(S(t.description)[4]&3)+1;return nn(e,n)}return tn(e)},an=e=>e&31,on=e=>{let t=[],n=e.length;for(let r=0;r<n;r++)r+2<n&&e[r]===0&&e[r+1]===0&&e[r+2]===3?(t.push(0,0),r+=2):t.push(e[r]);return new Uint8Array(t)},sn=e=>{let t=[],n=0;for(let r of e)n===2&&r<=3&&(t.push(3),n=0),t.push(r),n=r===0?n+1:0;return new Uint8Array(t)},cn=new Uint8Array([0,0,0,1]),ln=e=>{let t=e.reduce((e,t)=>e+cn.byteLength+t.byteLength,0),n=new Uint8Array(t),r=0;for(let t of e)n.set(cn,r),r+=cn.byteLength,n.set(t,r),r+=t.byteLength;return n},un=(e,t)=>{let n=e.reduce((e,n)=>e+t+n.byteLength,0),r=new Uint8Array(n),i=0;for(let n of e){let e=new DataView(r.buffer,r.byteOffset,r.byteLength);switch(t){case 1:e.setUint8(i,n.byteLength);break;case 2:e.setUint16(i,n.byteLength,!1);break;case 3:ke(e,i,n.byteLength,!1);break;case 4:e.setUint32(i,n.byteLength,!1)}i+=t,r.set(n,i),i+=n.byteLength}return r},dn=(e,t)=>{if(t.description){let n=(S(t.description)[4]&3)+1;return un(e,n)}return ln(e)},fn=e=>{try{let t=[],r=[],i=[];for(let n of tn(e)){let a=e.subarray(n.offset,n.offset+n.length),o=an(a[0]);o===en.SPS?t.push(a):o===en.PPS?r.push(a):o===en.SPS_EXT&&i.push(a)}if(t.length===0||r.length===0)return null;let a=t[0],o=gn(a);n(o!==null);let s=o.profileIdc===100||o.profileIdc===110||o.profileIdc===122||o.profileIdc===144;return{configurationVersion:1,avcProfileIndication:o.profileIdc,profileCompatibility:o.constraintFlags,avcLevelIndication:o.levelIdc,lengthSizeMinusOne:3,sequenceParameterSets:t,pictureParameterSets:r,chromaFormat:s?o.chromaFormatIdc:null,bitDepthLumaMinus8:s?o.bitDepthLumaMinus8:null,bitDepthChromaMinus8:s?o.bitDepthChromaMinus8:null,sequenceParameterSetExt:s?i:null}}catch(e){return A._error(`Error building AVC Decoder Configuration Record:`,e),null}},pn=e=>{let t=[];t.push(e.configurationVersion),t.push(e.avcProfileIndication),t.push(e.profileCompatibility),t.push(e.avcLevelIndication),t.push(252|e.lengthSizeMinusOne&3),t.push(224|e.sequenceParameterSets.length&31);for(let n of e.sequenceParameterSets){let e=n.byteLength;t.push(e>>8),t.push(e&255);for(let r=0;r<e;r++)t.push(n[r])}t.push(e.pictureParameterSets.length);for(let n of e.pictureParameterSets){let e=n.byteLength;t.push(e>>8),t.push(e&255);for(let r=0;r<e;r++)t.push(n[r])}if((e.avcProfileIndication===100||e.avcProfileIndication===110||e.avcProfileIndication===122||e.avcProfileIndication===144)&&e.chromaFormat!==null){n(e.bitDepthLumaMinus8!==null),n(e.bitDepthChromaMinus8!==null),n(e.sequenceParameterSetExt!==null),t.push(252|e.chromaFormat&3),t.push(248|e.bitDepthLumaMinus8&7),t.push(248|e.bitDepthChromaMinus8&7),t.push(e.sequenceParameterSetExt.length);for(let n of e.sequenceParameterSetExt){let e=n.byteLength;t.push(e>>8),t.push(e&255);for(let r=0;r<e;r++)t.push(n[r])}}return new Uint8Array(t)},mn=e=>{try{let t=C(e),n=0,r=t.getUint8(n++),i=t.getUint8(n++),a=t.getUint8(n++),o=t.getUint8(n++),s=t.getUint8(n++)&3,c=t.getUint8(n++)&31,l=[];for(let r=0;r<c;r++){let r=t.getUint16(n,!1);n+=2,l.push(e.subarray(n,n+r)),n+=r}let u=t.getUint8(n++),d=[];for(let r=0;r<u;r++){let r=t.getUint16(n,!1);n+=2,d.push(e.subarray(n,n+r)),n+=r}let f={configurationVersion:r,avcProfileIndication:i,profileCompatibility:a,avcLevelIndication:o,lengthSizeMinusOne:s,sequenceParameterSets:l,pictureParameterSets:d,chromaFormat:null,bitDepthLumaMinus8:null,bitDepthChromaMinus8:null,sequenceParameterSetExt:null};if((i===100||i===110||i===122||i===144)&&n+4<=e.length){let r=t.getUint8(n++)&3,i=t.getUint8(n++)&7,a=t.getUint8(n++)&7,o=t.getUint8(n++);f.chromaFormat=r,f.bitDepthLumaMinus8=i,f.bitDepthChromaMinus8=a;let s=[];for(let r=0;r<o;r++){let r=t.getUint16(n,!1);n+=2,s.push(e.subarray(n,n+r)),n+=r}f.sequenceParameterSetExt=s}return f}catch(e){return A._error(`Error deserializing AVC Decoder Configuration Record:`,e),null}},hn={1:{num:1,den:1},2:{num:12,den:11},3:{num:10,den:11},4:{num:16,den:11},5:{num:40,den:33},6:{num:24,den:11},7:{num:20,den:11},8:{num:32,den:11},9:{num:80,den:33},10:{num:18,den:11},11:{num:15,den:11},12:{num:64,den:33},13:{num:160,den:99},14:{num:4,den:3},15:{num:3,den:2},16:{num:2,den:1}},gn=e=>{try{let t=on(e),r=new j(t);if(r.skipBits(1),r.skipBits(2),r.readBits(5)!==7)return null;let i=r.readAlignedByte(),a=r.readAlignedByte(),o=r.readAlignedByte();v(r);let s=1,c=0,l=0,u=0;if((i===100||i===110||i===122||i===244||i===44||i===83||i===86||i===118||i===128)&&(s=v(r),s===3&&(u=r.readBits(1)),c=v(r),l=v(r),r.skipBits(1),r.readBits(1))){for(let e=0;e<(s===3?12:8);e++)if(r.readBits(1)){let t=e<6?16:64,n=8,i=8;for(let e=0;e<t;e++){if(i!==0){let e=b(r);i=(n+e+256)%256}n=i===0?n:i}}}v(r);let d=v(r);if(d===0)v(r);else if(d===1){r.skipBits(1),b(r),b(r);let e=v(r);for(let t=0;t<e;t++)b(r)}v(r),r.skipBits(1);let f=v(r),p=v(r),m=16*(f+1),g=16*(p+1),_=m,y=g,x=r.readBits(1);if(x||r.skipBits(1),r.skipBits(1),r.readBits(1)){let e=v(r),t=v(r),n=v(r),i=v(r),a,o;if((u===0?s:0)===0)a=1,o=2-x;else{let e=s===3?1:2,t=s===1?2:1;a=e,o=t*(2-x)}_-=a*(e+t),y-=o*(n+i)}let S=2,C=2,ee=2,te=0,w={num:1,den:1},T=null,ne=null,re=null,ie=null,ae=r.pos;if(r.readBits(1)){if(r.readBits(1)){let e=r.readBits(8);if(e===255)w={num:r.readBits(16),den:r.readBits(16)};else{let t=hn[e];t&&(w=t)}}r.readBits(1)&&r.skipBits(1),r.readBits(1)&&(r.skipBits(3),te=r.readBits(1),r.readBits(1)&&(S=r.readBits(8),C=r.readBits(8),ee=r.readBits(8))),r.readBits(1)&&(v(r),v(r)),r.readBits(1)&&(r.skipBits(32),r.skipBits(32),r.skipBits(1));let e=r.readBits(1);e&&_n(r);let t=r.readBits(1);t&&_n(r),(e||t)&&r.skipBits(1),r.skipBits(1),re=r.pos,ie=r.readBits(1),ie&&(r.skipBits(1),v(r),v(r),v(r),v(r),T=v(r),ne=v(r))}if(T===null){n(ne===null);let e=a&16;if((i===44||i===86||i===100||i===110||i===122||i===244)&&e)T=0,ne=0;else{let e=f+1,t=p+1,n=(2-x)*t,r=Cr.find(e=>e.level>=o)??h(Cr),i=Math.min(Math.floor(r.maxDpbMbs/(e*n)),16);T=i,ne=i}}return n(ne!==null),{emulationUnpreventedBytes:t,profileIdc:i,constraintFlags:a,levelIdc:o,frameMbsOnlyFlag:x,chromaFormatIdc:s,bitDepthLumaMinus8:c,bitDepthChromaMinus8:l,codedWidth:m,codedHeight:g,displayWidth:_,displayHeight:y,pixelAspectRatio:w,colourPrimaries:S,matrixCoefficients:ee,transferCharacteristics:C,fullRangeFlag:te,numReorderFrames:T,maxDecFrameBuffering:ne,vuiParametersFlagBitOffset:ae,bitstreamRestrictionFlagBitOffset:re,bitstreamRestrictionFlag:ie}}catch(e){return A._error(`Error parsing AVC SPS:`,e),null}},_n=e=>{let t=v(e);e.skipBits(4),e.skipBits(4);for(let n=0;n<=t;n++)v(e),v(e),e.skipBits(1);e.skipBits(5),e.skipBits(5),e.skipBits(5),e.skipBits(5)},vn=e=>{n(e.bitstreamRestrictionFlag!==1);let t=new Uint8Array(e.emulationUnpreventedBytes.byteLength+64),r=new j(e.emulationUnpreventedBytes),i=new j(t);e.bitstreamRestrictionFlag===null?(i.copyBits(e.vuiParametersFlagBitOffset,r),i.writeBits(1,1),i.writeBits(1,0),i.writeBits(1,0),i.writeBits(1,0),i.writeBits(1,0),i.writeBits(1,0),i.writeBits(1,0),i.writeBits(1,0),i.writeBits(1,0)):(n(e.bitstreamRestrictionFlagBitOffset!==null),i.copyBits(e.bitstreamRestrictionFlagBitOffset,r)),i.writeBits(1,1),i.writeBits(1,1),y(i,2),y(i,1),y(i,16),y(i,16),y(i,e.numReorderFrames),y(i,e.maxDecFrameBuffering),i.writeBits(1,1),i.writeBits((8-i.pos%8)%8,0);let a=i.pos/8;return n(Number.isInteger(a)),sn(t.subarray(0,a))},yn=(e,t)=>{if(t.description){let n=(S(t.description)[21]&3)+1;return un(e,n)}return ln(e)},bn=(e,t)=>{if(t.description){let n=(S(t.description)[21]&3)+1;return nn(e,n)}return tn(e)},xn=e=>e>>1&63,Sn=e=>{try{let t=new j(on(e));t.skipBits(16),t.readBits(4);let n=t.readBits(3),r=t.readBits(1),{general_profile_space:i,general_tier_flag:a,general_profile_idc:o,general_profile_compatibility_flags:s,general_constraint_indicator_flags:c,general_level_idc:l}=wn(t,n);v(t);let u=v(t),d=0;u===3&&(d=t.readBits(1));let f=v(t),p=v(t),m=f,h=p;if(t.readBits(1)){let e=v(t),n=v(t),r=v(t),i=v(t),a=1,o=1,s=d===0?u:0;s===1?(a=2,o=2):s===2&&(a=2,o=1),m-=(e+n)*a,h-=(r+i)*o}let g=v(t),_=v(t);v(t);let y=t.readBits(1)?0:n,b=0;for(let e=y;e<=n;e++)v(t),b=v(t),v(t);v(t),v(t),v(t),v(t),v(t),v(t),t.readBits(1)&&t.readBits(1)&&Tn(t),t.skipBits(1),t.skipBits(1),t.readBits(1)&&(t.skipBits(4),t.skipBits(4),v(t),v(t),t.skipBits(1));let x=v(t);if(En(t,x),t.readBits(1)){let e=v(t);for(let n=0;n<e;n++)v(t),t.skipBits(1)}t.skipBits(1),t.skipBits(1);let S=2,C=2,ee=2,te=0,w=0,T={num:1,den:1};if(t.readBits(1)){let e=On(t,n);T=e.pixelAspectRatio,S=e.colourPrimaries,C=e.transferCharacteristics,ee=e.matrixCoefficients,te=e.fullRangeFlag,w=e.minSpatialSegmentationIdc}return{displayWidth:m,displayHeight:h,pixelAspectRatio:T,colourPrimaries:S,transferCharacteristics:C,matrixCoefficients:ee,fullRangeFlag:te,maxDecFrameBuffering:b+1,spsMaxSubLayersMinus1:n,spsTemporalIdNestingFlag:r,generalProfileSpace:i,generalTierFlag:a,generalProfileIdc:o,generalProfileCompatibilityFlags:s,generalConstraintIndicatorFlags:c,generalLevelIdc:l,chromaFormatIdc:u,bitDepthLumaMinus8:g,bitDepthChromaMinus8:_,minSpatialSegmentationIdc:w}}catch(e){return A._error(`Error parsing HEVC SPS:`,e),null}},Cn=e=>{try{let t=[],n=[],r=[],i=[];for(let a of tn(e)){let o=e.subarray(a.offset,a.offset+a.length),s=xn(o[0]);s===M.VPS_NUT?t.push(o):s===M.SPS_NUT?n.push(o):s===M.PPS_NUT?r.push(o):(s===M.PREFIX_SEI_NUT||s===M.SUFFIX_SEI_NUT)&&i.push(o)}if(n.length===0||r.length===0)return null;let a=Sn(n[0]);if(!a)return null;let o=0;if(r.length>0){let e=r[0],t=new j(on(e));t.skipBits(16),v(t),v(t),t.skipBits(1),t.skipBits(1),t.skipBits(3),t.skipBits(1),t.skipBits(1),v(t),v(t),b(t),t.skipBits(1),t.skipBits(1),t.readBits(1)&&v(t),b(t),b(t),t.skipBits(1),t.skipBits(1),t.skipBits(1),t.skipBits(1);let n=t.readBits(1),i=t.readBits(1);o=!n&&!i?0:n&&!i?2:!n&&i?3:0}let s=[...t.length?[{arrayCompleteness:1,nalUnitType:M.VPS_NUT,nalUnits:t}]:[],...n.length?[{arrayCompleteness:1,nalUnitType:M.SPS_NUT,nalUnits:n}]:[],...r.length?[{arrayCompleteness:1,nalUnitType:M.PPS_NUT,nalUnits:r}]:[],...i.length?[{arrayCompleteness:1,nalUnitType:xn(i[0][0]),nalUnits:i}]:[]];return{configurationVersion:1,generalProfileSpace:a.generalProfileSpace,generalTierFlag:a.generalTierFlag,generalProfileIdc:a.generalProfileIdc,generalProfileCompatibilityFlags:a.generalProfileCompatibilityFlags,generalConstraintIndicatorFlags:a.generalConstraintIndicatorFlags,generalLevelIdc:a.generalLevelIdc,minSpatialSegmentationIdc:a.minSpatialSegmentationIdc,parallelismType:o,chromaFormatIdc:a.chromaFormatIdc,bitDepthLumaMinus8:a.bitDepthLumaMinus8,bitDepthChromaMinus8:a.bitDepthChromaMinus8,avgFrameRate:0,constantFrameRate:0,numTemporalLayers:a.spsMaxSubLayersMinus1+1,temporalIdNested:a.spsTemporalIdNestingFlag,lengthSizeMinusOne:3,arrays:s}}catch(e){return A._error(`Error building HEVC Decoder Configuration Record:`,e),null}},wn=(e,t)=>{let n=e.readBits(2),r=e.readBits(1),i=e.readBits(5),a=0;for(let t=0;t<32;t++)a=a<<1|e.readBits(1);let o=new Uint8Array(6);for(let t=0;t<6;t++)o[t]=e.readBits(8);let s=e.readBits(8),c=[],l=[];for(let n=0;n<t;n++)c.push(e.readBits(1)),l.push(e.readBits(1));if(t>0)for(let n=t;n<8;n++)e.skipBits(2);for(let n=0;n<t;n++)c[n]&&e.skipBits(88),l[n]&&e.skipBits(8);return{general_profile_space:n,general_tier_flag:r,general_profile_idc:i,general_profile_compatibility_flags:a,general_constraint_indicator_flags:o,general_level_idc:s}},Tn=e=>{for(let t=0;t<4;t++)for(let n=0;n<(t===3?2:6);n++)if(!e.readBits(1))v(e);else{let n=Math.min(64,1<<4+(t<<1));t>1&&b(e);for(let t=0;t<n;t++)b(e)}},En=(e,t)=>{let n=[];for(let r=0;r<t;r++)n[r]=Dn(e,r,t,n)},Dn=(e,t,n,r)=>{let i=0,a=0,o=0;if(t!==0&&(a=e.readBits(1)),a){o=t===n?t-(v(e)+1):t-1,e.readBits(1),v(e);let a=r[o]??0;for(let t=0;t<=a;t++)e.readBits(1)||e.readBits(1);i=r[o]}else{let t=v(e),n=v(e);for(let n=0;n<t;n++)v(e),e.readBits(1);for(let t=0;t<n;t++)v(e),e.readBits(1);i=t+n}return i},On=(e,t)=>{let n=2,r=2,i=2,a=0,o=0,s={num:1,den:1};if(e.readBits(1)){let t=e.readBits(8);if(t===255)s={num:e.readBits(16),den:e.readBits(16)};else{let e=hn[t];e&&(s=e)}}return e.readBits(1)&&e.readBits(1),e.readBits(1)&&(e.readBits(3),a=e.readBits(1),e.readBits(1)&&(n=e.readBits(8),r=e.readBits(8),i=e.readBits(8))),e.readBits(1)&&(v(e),v(e)),e.readBits(1),e.readBits(1),e.readBits(1),e.readBits(1)&&(v(e),v(e),v(e),v(e)),e.readBits(1)&&(e.readBits(32),e.readBits(32),e.readBits(1)&&v(e),e.readBits(1)&&kn(e,!0,t)),e.readBits(1)&&(e.readBits(1),e.readBits(1),e.readBits(1),o=v(e),v(e),v(e),v(e),v(e)),{pixelAspectRatio:s,colourPrimaries:n,transferCharacteristics:r,matrixCoefficients:i,fullRangeFlag:a,minSpatialSegmentationIdc:o}},kn=(e,t,n)=>{let r=!1,i=!1,a=!1;t&&(r=e.readBits(1)===1,i=e.readBits(1)===1,(r||i)&&(a=e.readBits(1)===1,a&&(e.readBits(8),e.readBits(5),e.readBits(1),e.readBits(5)),e.readBits(4),e.readBits(4),a&&e.readBits(4),e.readBits(5),e.readBits(5),e.readBits(5)));for(let t=0;t<=n;t++){let t=e.readBits(1)===1,n=!0;t||(n=e.readBits(1)===1);let o=!1;n?v(e):o=e.readBits(1)===1;let s=1;o||(s=v(e)+1),r&&An(e,s,a),i&&An(e,s,a)}},An=(e,t,n)=>{for(let r=0;r<t;r++)v(e),v(e),n&&(v(e),v(e)),e.readBits(1)},jn=e=>{let t=[];t.push(e.configurationVersion),t.push((e.generalProfileSpace&3)<<6|(e.generalTierFlag&1)<<5|e.generalProfileIdc&31),t.push(e.generalProfileCompatibilityFlags>>>24&255),t.push(e.generalProfileCompatibilityFlags>>>16&255),t.push(e.generalProfileCompatibilityFlags>>>8&255),t.push(e.generalProfileCompatibilityFlags&255),t.push(...e.generalConstraintIndicatorFlags),t.push(e.generalLevelIdc&255),t.push(240|e.minSpatialSegmentationIdc>>8&15),t.push(e.minSpatialSegmentationIdc&255),t.push(252|e.parallelismType&3),t.push(252|e.chromaFormatIdc&3),t.push(248|e.bitDepthLumaMinus8&7),t.push(248|e.bitDepthChromaMinus8&7),t.push(e.avgFrameRate>>8&255),t.push(e.avgFrameRate&255),t.push((e.constantFrameRate&3)<<6|(e.numTemporalLayers&7)<<3|(e.temporalIdNested&1)<<2|e.lengthSizeMinusOne&3),t.push(e.arrays.length&255);for(let n of e.arrays){t.push((n.arrayCompleteness&1)<<7|0|n.nalUnitType&63),t.push(n.nalUnits.length>>8&255),t.push(n.nalUnits.length&255);for(let e of n.nalUnits){t.push(e.length>>8&255),t.push(e.length&255);for(let n=0;n<e.length;n++)t.push(e[n])}}return new Uint8Array(t)},Mn=e=>{try{let t=C(e),n=0,r=t.getUint8(n++),i=t.getUint8(n++),a=i>>6&3,o=i>>5&1,s=i&31,c=t.getUint32(n,!1);n+=4;let l=e.subarray(n,n+6);n+=6;let u=t.getUint8(n++),d=(t.getUint8(n++)&15)<<8|t.getUint8(n++),f=t.getUint8(n++)&3,p=t.getUint8(n++)&3,m=t.getUint8(n++)&7,h=t.getUint8(n++)&7,g=t.getUint16(n,!1);n+=2;let _=t.getUint8(n++),v=_>>6&3,y=_>>3&7,b=_>>2&1,x=_&3,S=t.getUint8(n++),ee=[];for(let r=0;r<S;r++){let r=t.getUint8(n++),i=r>>7&1,a=r&63,o=t.getUint16(n,!1);n+=2;let s=[];for(let r=0;r<o;r++){let r=t.getUint16(n,!1);n+=2,s.push(e.subarray(n,n+r)),n+=r}ee.push({arrayCompleteness:i,nalUnitType:a,nalUnits:s})}return{configurationVersion:r,generalProfileSpace:a,generalTierFlag:o,generalProfileIdc:s,generalProfileCompatibilityFlags:c,generalConstraintIndicatorFlags:l,generalLevelIdc:u,minSpatialSegmentationIdc:d,parallelismType:f,chromaFormatIdc:p,bitDepthLumaMinus8:m,bitDepthChromaMinus8:h,avgFrameRate:g,constantFrameRate:v,numTemporalLayers:y,temporalIdNested:b,lengthSizeMinusOne:x,arrays:ee}}catch(e){return A._error(`Error deserializing HEVC Decoder Configuration Record:`,e),null}};var Nn;(function(e){e[e.audAllowed=0]=`audAllowed`,e[e.beforeFirstVcl=1]=`beforeFirstVcl`,e[e.afterFirstVcl=2]=`afterFirstVcl`,e[e.eoBitstreamAllowed=3]=`eoBitstreamAllowed`,e[e.noMoreDataAllowed=4]=`noMoreDataAllowed`})(Nn||={});const Pn=(e,t)=>{let n=new Set,r=Nn.audAllowed;for(let i of bn(e,t)){if(r===Nn.noMoreDataAllowed){n.add(i.offset);continue}let t=xn(e[i.offset]);if(r===Nn.eoBitstreamAllowed&&t!==37){n.add(i.offset);continue}let a=!1;t===35?r>Nn.audAllowed?a=!0:r=Nn.beforeFirstVcl:t<=31?r>Nn.afterFirstVcl?a=!0:r=Nn.afterFirstVcl:t===36?r===Nn.afterFirstVcl?r=Nn.eoBitstreamAllowed:a=!0:t===37?r<Nn.afterFirstVcl?a=!0:r=Nn.noMoreDataAllowed:t===32||t===33||t===34||t===39||t>=41&&t<=44||t>=48&&t<=55?r>Nn.beforeFirstVcl?a=!0:r=Nn.beforeFirstVcl:(t===38||t===40||t>=45&&t<=47||t>=56&&t<=63)&&r<Nn.afterFirstVcl&&(a=!0),a&&n.add(i.offset)}if(n.size===0)return null;let i=[];for(let r of bn(e,t))n.has(r.offset)||i.push(e.subarray(r.offset,r.offset+r.length));return yn(i,t)},Fn={1:{colourPrimaries:5,transferCharacteristics:6,matrixCoefficients:5},2:{colourPrimaries:1,transferCharacteristics:1,matrixCoefficients:1},3:{colourPrimaries:6,transferCharacteristics:6,matrixCoefficients:6},4:{colourPrimaries:7,transferCharacteristics:7,matrixCoefficients:7},5:{colourPrimaries:9,transferCharacteristics:14,matrixCoefficients:9},7:{colourPrimaries:1,transferCharacteristics:13,matrixCoefficients:0}},In=e=>{let t=new j(e);if(t.readBits(2)!==2)return null;let n=t.readBits(1),r=(t.readBits(1)<<1)+n;if(r===3&&t.skipBits(1),t.readBits(1)===1||t.readBits(1)!==0||(t.skipBits(2),t.readBits(24)!==4817730))return null;let i=8;r>=2&&(i=t.readBits(1)?12:10);let a=t.readBits(3),o=0,s=0;if(a!==7){if(s=t.readBits(1),r===1||r===3){let e=t.readBits(1),n=t.readBits(1);o=!e&&!n?3:e&&!n?2:1,t.skipBits(1)}else o=1}else o=3,s=1;let c=t.readBits(16),l=t.readBits(16),u=(c+1)*(l+1),d=h(Tr).level;for(let e of Tr)if(u<=e.maxPictureSize){d=e.level;break}let f=Fn[a],p=f?.colourPrimaries??2,m=f?.transferCharacteristics??2,g=f?.matrixCoefficients??2;return{profile:r,level:d,bitDepth:i,chromaSubsampling:o,videoFullRangeFlag:s,colourPrimaries:p,transferCharacteristics:m,matrixCoefficients:g}},Ln=e=>e.colourPrimaries!==2||e.transferCharacteristics!==2||e.matrixCoefficients!==2,Rn=function*(e){let t=new j(e),r=()=>{let e=0;for(let n=0;n<8;n++){let r=t.readAlignedByte();if(e+=(r&127)*2**(n*7),!(r&128))break;if(n===7&&r&128)return null}return e>2**32-1?null:e};for(;t.getBitsLeft()>=8;){t.skipBits(1);let i=t.readBits(4),a=t.readBits(1),o=t.readBits(1);t.skipBits(1),a&&t.skipBits(8);let s;if(o){let e=r();if(e===null)return;s=e}else s=Math.floor(t.getBitsLeft()/8);n(t.pos%8==0),yield{type:i,data:e.subarray(t.pos/8,t.pos/8+s)},t.skipBits(s*8)}},zn=e=>{for(let{type:t,data:n}of Rn(e)){if(t!==1)continue;let e=new j(n),r=e.readBits(3);e.readBits(1);let i=e.readBits(1),a=0,o=0,s=0;if(i)a=e.readBits(5);else{let t=e.readBits(1),n=0;if(t){if(e.skipBits(32),e.skipBits(32),e.readBits(1)){let t=0;for(;t<32&&!e.readBits(1);)t++;t<32&&e.skipBits(t)}n=e.readBits(1),n&&(s=e.readBits(5),e.skipBits(32),e.skipBits(5),e.skipBits(5))}let r=e.readBits(1),i=e.readBits(5);for(let t=0;t<=i;t++){e.skipBits(12);let i=e.readBits(5);if(t===0&&(a=i),i>7){let n=e.readBits(1);t===0&&(o=n)}if(n&&e.readBits(1)){let t=s+1;e.skipBits(t),e.skipBits(t),e.skipBits(1)}r&&e.readBits(1)&&e.skipBits(4)}}let c=e.readBits(4),l=e.readBits(4),u=c+1;e.skipBits(u);let d=l+1;e.skipBits(d);let f=0;if(f=i?0:e.readBits(1),f&&(e.skipBits(4),e.skipBits(3)),e.skipBits(1),e.skipBits(1),e.skipBits(1),!i){e.skipBits(1),e.skipBits(1),e.skipBits(1),e.skipBits(1);let t=e.readBits(1);t&&(e.skipBits(1),e.skipBits(1));let n=e.readBits(1),r=0;r=n?2:e.readBits(1),r>0&&(e.readBits(1)||e.skipBits(1)),t&&e.skipBits(3)}e.skipBits(1),e.skipBits(1),e.skipBits(1);let p=e.readBits(1),m=8;r===2&&p?m=e.readBits(1)?12:10:r<=2&&(m=p?10:8);let h=0;r!==1&&(h=e.readBits(1));let g=2,_=2,v=2;e.readBits(1)&&(g=e.readBits(8),_=e.readBits(8),v=e.readBits(8));let y=0,b=1,x=1,S=0;return h?y=e.readBits(1):g===1&&_===13&&v===0?(y=1,b=0,x=0):(y=e.readBits(1),r===0?(b=1,x=1):r===1?(b=0,x=0):m===12?(b=e.readBits(1),x=b?e.readBits(1):0):(b=1,x=0),b&&x&&(S=e.readBits(2))),{profile:r,level:a,tier:o,bitDepth:m,monochrome:h,chromaSubsamplingX:b,chromaSubsamplingY:x,chromaSamplePosition:S,videoFullRangeFlag:y,colourPrimaries:g,transferCharacteristics:_,matrixCoefficients:v}}return null},Bn=e=>e.colourPrimaries!==2||e.transferCharacteristics!==2||e.matrixCoefficients!==2,Vn=e=>{if(e.length<36)return null;let t=C(e);return t.getUint32(4)!==1768124518||t.getUint16(8)<28?null:{fullRange:!1,colourPrimaries:t.getUint8(22),transferCharacteristics:t.getUint8(23),matrixCoefficients:t.getUint8(24)}},Hn=e=>{let t=C(e),n=t.getUint8(9),r=t.getUint16(10,!0),i=t.getUint32(12,!0),a=t.getInt16(16,!0),o=t.getUint8(18),s=null;return o&&(s=e.subarray(19,21+n)),{outputChannelCount:n,preSkip:r,inputSampleRate:i,outputGain:a,channelMappingFamily:o,channelMappingTable:s}},Un=[480,960,1920,2880,480,960,1920,2880,480,960,1920,2880,480,960,480,960,120,240,480,960,120,240,480,960,120,240,480,960,120,240,480,960],Wn=e=>{let t=e[0]>>3,n=e[0]&3,r;return r=n===0?1:n===1||n===2?2:e[1]&63,{durationInSamples:Un[t]*r}},Gn=e=>{if(e.length<7)throw Error(`Setup header is too short.`);if(e[0]!==5)throw Error(`Wrong packet type in Setup header.`);if(String.fromCharCode(...e.slice(1,7))!==`vorbis`)throw Error(`Invalid packet signature in Setup header.`);let t=e.length,n=new Uint8Array(t);for(let r=0;r<t;r++)n[r]=e[t-1-r];let r=new j(n),i=0;for(;r.getBitsLeft()>97;)if(r.readBits(1)===1){i=r.pos;break}if(i===0)throw Error(`Invalid Setup header: framing bit not found.`);let a=0,o=!1,s=0;for(;r.getBitsLeft()>=97;){let e=r.pos,t=r.readBits(8),n=r.readBits(16),i=r.readBits(16);if(t>63||n!==0||i!==0){r.pos=e;break}if(r.skipBits(1),a++,a>64)break;r.clone().readBits(6)+1===a&&(o=!0,s=a)}if(!o)throw Error(`Invalid Setup header: mode header not found.`);if(s>63)throw Error(`Unsupported mode count: ${s}.`);let c=s;r.pos=0,r.skipBits(i);let l=Array(c).fill(0);for(let e=c-1;e>=0;e--)r.skipBits(40),l[e]=r.readBits(1);return{modeBlockflags:l}},Kn=(e,t,r)=>{switch(e){case`avc`:for(let e of rn(r,t)){let t=r[e.offset],n=an(t);if(n>=en.NON_IDR_SLICE&&n<=en.SLICE_DPC)return`delta`;if(n===en.IDR)return`key`;if(n===en.SEI&&!tt()){let t=r.subarray(e.offset,e.offset+e.length),n=on(t),i=1;do{let e=0;for(;;){let t=n[i++];if(t===void 0||(e+=t,t<255))break}let t=0;for(;;){let e=n[i++];if(e===void 0||(t+=e,e<255))break}if(e===6){let e=new j(n);e.pos=8*i;let t=v(e),r=e.readBits(1);if(t===0&&r===1)return`key`}i+=t}while(i<n.length-1)}}return`delta`;case`hevc`:for(let e of bn(r,t)){let t=xn(r[e.offset]);if(t<M.BLA_W_LP)return`delta`;if(t<=M.RSV_IRAP_VCL23)return`key`}return`delta`;case`vp8`:return r[0]&1?`delta`:`key`;case`vp9`:{let e=new j(r);if(e.readBits(2)!==2)return null;let t=e.readBits(1);return(e.readBits(1)<<1)+t===3&&e.skipBits(1),e.readBits(1)?null:e.readBits(1)===0?`key`:`delta`}case`av1`:{let e=!1;for(let{type:t,data:n}of Rn(r))if(t===1){let t=new j(n);t.skipBits(4),e=!!t.readBits(1)}else if(t===3||t===6||t===7){if(e)return`key`;let t=new j(n);return t.readBits(1)?null:t.readBits(2)===0?`key`:`delta`}return null}case`prores`:return`key`;default:Ee(e),n(!1)}};var qn;(function(e){e[e.STREAMINFO=0]=`STREAMINFO`,e[e.VORBIS_COMMENT=4]=`VORBIS_COMMENT`,e[e.PICTURE=6]=`PICTURE`})(qn||={});const Jn=(e,t)=>{let n=C(e),r=0,i=n.getUint32(r,!0);r+=4;let a=w.decode(e.subarray(r,r+i));r+=i,i>0&&(t.raw??={},t.raw.vendor??=a);let o=n.getUint32(r,!0);r+=4;for(let i=0;i<o;i++){let i=n.getUint32(r,!0);r+=4;let a=w.decode(e.subarray(r,r+i));r+=i;let o=a.indexOf(`=`);if(o===-1)continue;let s=a.slice(0,o).toUpperCase(),c=a.slice(o+1);switch(t.raw??={},Array.isArray(t.raw[s])?t.raw[s]=[...t.raw[s],c]:typeof t.raw[s]==`string`?t.raw[s]=[t.raw[s],c]:t.raw[s]??=c,s){case`TITLE`:t.title??=c;break;case`DESCRIPTION`:t.description??=c;break;case`ARTIST`:t.artist??=c;break;case`ALBUM`:t.album??=c;break;case`ALBUMARTIST`:t.albumArtist??=c;break;case`COMMENT`:t.comment??=c;break;case`LYRICS`:t.lyrics??=c;break;case`TRACKNUMBER`:{let e=c.split(`/`),n=Number.parseInt(e[0],10),r=e[1]&&Number.parseInt(e[1],10);Number.isInteger(n)&&n>0&&(t.trackNumber??=n),r&&Number.isInteger(r)&&r>0&&(t.tracksTotal??=r)}break;case`TRACKTOTAL`:{let e=Number.parseInt(c,10);Number.isInteger(e)&&e>0&&(t.tracksTotal??=e)}break;case`DISCNUMBER`:{let e=c.split(`/`),n=Number.parseInt(e[0],10),r=e[1]&&Number.parseInt(e[1],10);Number.isInteger(n)&&n>0&&(t.discNumber??=n),r&&Number.isInteger(r)&&r>0&&(t.discsTotal??=r)}break;case`DISCTOTAL`:{let e=Number.parseInt(c,10);Number.isInteger(e)&&e>0&&(t.discsTotal??=e)}break;case`DATE`:{let e=new Date(c);Number.isNaN(e.getTime())||(t.date??=e)}break;case`BPM`:{let e=Number.parseInt(c,10);Number.isInteger(e)&&e>0&&(t.beatsPerMinute??=e)}break;case`GENRE`:t.genre??=c;break;case`METADATA_BLOCK_PICTURE`:{let e=ct(c),n=C(e),r=n.getUint32(0,!1),i=n.getUint32(4,!1),a=String.fromCharCode(...e.subarray(8,8+i)),o=n.getUint32(8+i,!1),s=w.decode(e.subarray(12+i,12+i+o)),l=n.getUint32(i+o+28),u=e.subarray(i+o+32,i+o+32+l);t.images??=[],t.images.push({data:u,mimeType:a,kind:r===3?`coverFront`:r===4?`coverBack`:`unknown`,name:void 0,description:s||void 0})}}}},Yn=(e,t,n)=>{let r=[e],i=T.encode(`Mediabunny`),a=new Uint8Array(4+i.length),o=new DataView(a.buffer);o.setUint32(0,i.length,!0),a.set(i,4),r.push(a);let s=[],c=(e,t)=>{let n=`${e}=${t}`,i=T.encode(n);a=new Uint8Array(4+i.length),o=new DataView(a.buffer),o.setUint32(0,i.length,!0),a.set(i,4),r.push(a),s.push(e)};for(let{key:e,value:r}of ot(t))switch(e){case`title`:c(`TITLE`,r);break;case`description`:c(`DESCRIPTION`,r);break;case`artist`:c(`ARTIST`,r);break;case`album`:c(`ALBUM`,r);break;case`albumArtist`:c(`ALBUMARTIST`,r);break;case`genre`:c(`GENRE`,r);break;case`date`:c(`DATE`,r.toISOString().slice(0,10));break;case`comment`:c(`COMMENT`,r);break;case`lyrics`:c(`LYRICS`,r);break;case`trackNumber`:c(`TRACKNUMBER`,r.toString());break;case`tracksTotal`:c(`TRACKTOTAL`,r.toString());break;case`discNumber`:c(`DISCNUMBER`,r.toString());break;case`discsTotal`:c(`DISCTOTAL`,r.toString());break;case`beatsPerMinute`:c(`BPM`,r.toString());break;case`images`:if(!n)break;for(let e of r){let t=e.kind===`coverFront`?3:e.kind===`coverBack`?4:0,n=new Uint8Array(e.mimeType.length);for(let t=0;t<e.mimeType.length;t++)n[t]=e.mimeType.charCodeAt(t);let r=T.encode(e.description??``),i=new Uint8Array(8+n.length+4+r.length+16+4+e.data.length),a=C(i);a.setUint32(0,t,!1),a.setUint32(4,n.length,!1),i.set(n,8),a.setUint32(8+n.length,r.length,!1),i.set(r,12+n.length),a.setUint32(28+n.length+r.length,e.data.length,!1),i.set(e.data,32+n.length+r.length),c(`METADATA_BLOCK_PICTURE`,lt(i))}break;case`raw`:break;default:Ee(e)}if(t.raw)for(let e in t.raw){let n=t.raw[e]??t.raw[e.toLowerCase()];if(!(e===`vendor`||n==null||s.includes(e))){if(typeof n==`string`)c(e,n);else if(Array.isArray(n)&&n.every(e=>typeof e==`string`))for(let t of n)c(e,t)}}let l=new Uint8Array(4);C(l).setUint32(0,s.length,!0),r.splice(2,0,l);let u=r.reduce((e,t)=>e+t.length,0),d=new Uint8Array(u),f=0;for(let e of r)d.set(e,f),f+=e.length;return d},Xn=[2,1,2,3,3,4,4,5],Zn=e=>{if(e.length<7||e[0]!==11||e[1]!==119)return null;let t=new j(e);t.skipBits(16),t.skipBits(16);let n=t.readBits(2);if(n===3)return null;let r=t.readBits(6),i=t.readBits(5);if(i>8)return null;let a=t.readBits(3),o=t.readBits(3);return o&1&&o!==1&&t.skipBits(2),o&4&&t.skipBits(2),o===2&&t.skipBits(2),{fscod:n,bsid:i,bsmod:a,acmod:o,lfeon:t.readBits(1),bitRateCode:Math.floor(r/2)}},Qn=[128,138,192,128,140,192,160,174,240,160,176,240,192,208,288,192,210,288,224,242,336,224,244,336,256,278,384,256,280,384,320,348,480,320,350,480,384,416,576,384,418,576,448,486,672,448,488,672,512,556,768,512,558,768,640,696,960,640,698,960,768,834,1152,768,836,1152,896,974,1344,896,976,1344,1024,1114,1536,1024,1116,1536,1280,1392,1920,1280,1394,1920,1536,1670,2304,1536,1672,2304,1792,1950,2688,1792,1952,2688,2048,2228,3072,2048,2230,3072,2304,2506,3456,2304,2508,3456,2560,2786,3840,2560,2788,3840],$n=new Uint8Array([5,4,65,67,45,51]),er=new Uint8Array([5,4,69,65,67,51]),tr=[1,2,3,6],nr=e=>{if(e.length<6||e[0]!==11||e[1]!==119)return null;let t=new j(e);t.skipBits(16);let n=t.readBits(2);if(t.skipBits(3),n!==0&&n!==2)return null;let r=t.readBits(11),i=t.readBits(2),a=0,o;i===3?(a=t.readBits(2),o=3):o=t.readBits(2);let s=t.readBits(3),c=t.readBits(1),l=t.readBits(5);if(l<11||l>16)return null;let u=tr[o],d;return d=i<3?Qt[i]/1e3:$t[a]/1e3,{dataRate:Math.round((r+1)*d/(u*16)),substreams:[{fscod:i,fscod2:a,bsid:l,bsmod:0,acmod:s,lfeon:c,numDepSub:0,chanLoc:0}]}},rr=e=>{if(e.length<2)return null;let t=new j(e),n=t.readBits(13),r=t.readBits(3),i=[];for(let n=0;n<=r&&!(Math.ceil(t.pos/8)+3>e.length);n++){let e=t.readBits(2),n=t.readBits(5);t.skipBits(1),t.skipBits(1);let r=t.readBits(3),a=t.readBits(3),o=t.readBits(1);t.skipBits(3);let s=t.readBits(4),c=0;s>0?c=t.readBits(9):t.skipBits(1),i.push({fscod:e,fscod2:null,bsid:n,bsmod:r,acmod:a,lfeon:o,numDepSub:s,chanLoc:c})}return i.length===0?null:{dataRate:n,substreams:i}},ir=e=>{let t=e.substreams[0];return n(t),t.fscod<3?Qt[t.fscod]:t.fscod2!==null&&t.fscod2<3?$t[t.fscod2]:null},ar=e=>{let t=e.substreams[0];n(t);let r=Xn[t.acmod]+t.lfeon;if(t.numDepSub>0){let e=[2,2,1,1,2,2,2,1,1];for(let n=0;n<9;n++)t.chanLoc&1<<8-n&&(r+=e[n])}return r},or=[0,8e3,16e3,32e3,0,0,11025,22050,44100,0,0,12e3,24e3,48e3,96e3,192e3],sr=[32e3,56e3,64e3,96e3,112e3,128e3,192e3,224e3,256e3,32e4,384e3,448e3,512e3,576e3,64e4,768e3,96e4,1024e3,1152e3,128e4,1344e3,1408e3,1411200,1472e3,1536e3,192e4,2048e3,3072e3,384e4,0,0,0],cr=[16,16,20,20,0,24,24,0],lr=[1,2,2,2,2,3,3,4,4,5,6,6,6,7,8,8],ur=[1,2,2,2,2,3,18,19,6,7,518,323,83,519,582,535],dr=[32e3,44100,48e3,0],fr=[8e3,16e3,32e3,64e3,128e3,22050,44100,88200,176400,352800,12e3,24e3,48e3,96e3,192e3,384e3],pr=[512,1024,2048,4096],mr=e=>{let t=gr(e),n=C(e),r=t?Math.ceil(t.frameSize/4)*4:0,i=null;for(;r+4<=e.length&&n.getUint32(r)===1683496997;){let t=_r(e.subarray(r));if(!t)break;i??=t,r+=t.frameSize}if(t)return{frameSize:i?r:t.frameSize,sampleRate:t.sampleRate,numberOfChannels:t.numberOfChannels,sampleCount:t.sampleCount,channelLayout:t.channelLayout,pcmResolution:t.pcmResolution,bitRate:t.bitRate,core:t,hasExtensions:i!==null};if(!i?.asset)return null;let{asset:a}=i;return{frameSize:r,sampleRate:a.sampleRate,numberOfChannels:a.numberOfChannels,sampleCount:a.sampleCount,channelLayout:a.channelLayout,pcmResolution:a.pcmResolution,bitRate:0,core:null,hasExtensions:!0}},hr=e=>{let t=mr(e);return t?.core?t.hasExtensions?`dtsh`:`dtsc`:null},gr=e=>{if(e.length<18||e[0]!==127||e[1]!==254||e[2]!==128||e[3]!==1)return null;let t=new j(e);if(t.skipBits(32),t.skipBits(1),t.readBits(5)!==31)return null;let n=t.readBits(1),r=t.readBits(7)+1;if(r%8!=0)return null;let i=t.readBits(14)+1;if(i<96)return null;let a=t.readBits(6);if(a>=lr.length)return null;let o=or[t.readBits(4)];if(o===0)return null;let s=sr[t.readBits(5)];if(t.readBits(1)!==0)return null;t.skipBits(4),t.skipBits(5);let c=t.readBits(2);if(c===3)return null;t.skipBits(1),n&&t.skipBits(16),t.skipBits(7);let l=cr[t.readBits(3)];if(l===0)return null;let u=c!==0;return{frameSize:i,sampleRate:o,numberOfChannels:lr[a]+ +!!u,sampleCount:r*32,channelLayout:ur[a]|(u?8:0),amode:a,lfePresent:u,bitRate:s,pcmResolution:l}},_r=e=>{if(e.length<10||e[0]!==100||e[1]!==88||e[2]!==32||e[3]!==37)return null;let t=new j(e);t.skipBits(32),t.skipBits(8);let n=t.readBits(2),r=t.readBits(1),i=8+4*r,a=16+4*r;t.skipBits(i);let o=t.readBits(a)+1,s={frameSize:o,asset:null};if(!t.readBits(1))return s;let c=dr[t.readBits(2)],l=512*(t.readBits(3)+1);t.readBits(1)&&t.skipBits(36);let u=t.readBits(3)+1,d=t.readBits(3)+1,f=[];for(let e=0;e<u;e++)f.push(t.readBits(n+1));for(let e of f)t.skipBits(8*Ve(e));if(t.readBits(1)){t.skipBits(2);let e=t.readBits(2)+1<<2,n=t.readBits(2)+1;t.skipBits(n*e)}for(let e=0;e<d;e++)t.skipBits(a);t.skipBits(9),t.skipBits(3),t.readBits(1)&&t.skipBits(4),t.readBits(1)&&t.skipBits(24),t.readBits(1)&&t.skipBits(8*(t.readBits(10)+1));let p=t.readBits(5)+1,m=fr[t.readBits(4)],h=t.readBits(8)+1,g=0;if(t.readBits(1)&&(h>2&&t.skipBits(1),h>6&&t.skipBits(1),t.readBits(1))){let e=t.readBits(2)+1<<2;g=t.readBits(e)}return c===0||t.getBitsLeft()<0?s:{frameSize:o,asset:{sampleRate:m,numberOfChannels:h,sampleCount:Math.round(l*m/c),channelLayout:g,pcmResolution:p}}},vr=e=>{if(e.length<20)return null;let t=C(e),n=t.getUint32(0);if(n===0)return null;let r=new j(e);r.seekToByte(13);let i=r.readBits(2);r.skipBits(5);let a=r.readBits(1),o=r.readBits(6);r.skipBits(14),r.skipBits(1),r.skipBits(3);let s=r.readBits(16),c=null;return s===0?o<lr.length&&(c=lr[o]+a):c=br(s),{sampleRate:n,maxBitrate:t.getUint32(4),avgBitrate:t.getUint32(8),pcmSampleDepth:e[12],sampleCount:pr[i],channelLayout:s,numberOfChannels:c}},yr=e=>{let t=new Uint8Array(20),n=C(t);n.setUint32(0,e.sampleRate),n.setUint32(4,e.bitRate),n.setUint32(8,e.bitRate),t[12]=e.pcmResolution;let r=e.core&&!e.hasExtensions?1:0,i=new j(t);return i.seekToByte(13),i.writeBits(2,Math.max(pr.indexOf(e.sampleCount),0)),i.writeBits(5,r),i.writeBits(1,+!!e.core?.lfePresent),i.writeBits(6,e.core?.amode??0),i.writeBits(14,e.core?e.core.frameSize-1:0),i.writeBits(1,0),i.writeBits(3,0),i.writeBits(16,e.channelLayout),i.writeBits(1,0),i.writeBits(1,0),i.writeBits(1,0),i.writeBits(5,0),t},br=e=>Ve(e)+Ve(e&44646),N=[`avc`,`hevc`,`vp9`,`av1`,`vp8`,`prores`],P=[`pcm-s16`,`pcm-s16be`,`pcm-s24`,`pcm-s24be`,`pcm-s32`,`pcm-s32be`,`pcm-f32`,`pcm-f32be`,`pcm-f64`,`pcm-f64be`,`pcm-u8`,`pcm-s8`,`ulaw`,`alaw`],xr=[`aac`,`opus`,`mp3`,`vorbis`,`flac`,`ac3`,`eac3`,`dts`],F=[...xr,...P],Sr=[`webvtt`],Cr=[{maxMacroblocks:99,maxBitrate:64e3,maxDpbMbs:396,level:10},{maxMacroblocks:396,maxBitrate:192e3,maxDpbMbs:900,level:11},{maxMacroblocks:396,maxBitrate:384e3,maxDpbMbs:2376,level:12},{maxMacroblocks:396,maxBitrate:768e3,maxDpbMbs:2376,level:13},{maxMacroblocks:396,maxBitrate:2e6,maxDpbMbs:2376,level:20},{maxMacroblocks:792,maxBitrate:4e6,maxDpbMbs:4752,level:21},{maxMacroblocks:1620,maxBitrate:4e6,maxDpbMbs:8100,level:22},{maxMacroblocks:1620,maxBitrate:1e7,maxDpbMbs:8100,level:30},{maxMacroblocks:3600,maxBitrate:14e6,maxDpbMbs:18e3,level:31},{maxMacroblocks:5120,maxBitrate:2e7,maxDpbMbs:20480,level:32},{maxMacroblocks:8192,maxBitrate:2e7,maxDpbMbs:32768,level:40},{maxMacroblocks:8192,maxBitrate:5e7,maxDpbMbs:32768,level:41},{maxMacroblocks:8704,maxBitrate:5e7,maxDpbMbs:34816,level:42},{maxMacroblocks:22080,maxBitrate:135e6,maxDpbMbs:110400,level:50},{maxMacroblocks:36864,maxBitrate:24e7,maxDpbMbs:184320,level:51},{maxMacroblocks:36864,maxBitrate:24e7,maxDpbMbs:184320,level:52},{maxMacroblocks:139264,maxBitrate:24e7,maxDpbMbs:696320,level:60},{maxMacroblocks:139264,maxBitrate:48e7,maxDpbMbs:696320,level:61},{maxMacroblocks:139264,maxBitrate:8e8,maxDpbMbs:696320,level:62}],wr=[{maxPictureSize:36864,maxBitrate:128e3,tier:`L`,level:30},{maxPictureSize:122880,maxBitrate:15e5,tier:`L`,level:60},{maxPictureSize:245760,maxBitrate:3e6,tier:`L`,level:63},{maxPictureSize:552960,maxBitrate:6e6,tier:`L`,level:90},{maxPictureSize:983040,maxBitrate:1e7,tier:`L`,level:93},{maxPictureSize:2228224,maxBitrate:12e6,tier:`L`,level:120},{maxPictureSize:2228224,maxBitrate:3e7,tier:`H`,level:120},{maxPictureSize:2228224,maxBitrate:2e7,tier:`L`,level:123},{maxPictureSize:2228224,maxBitrate:5e7,tier:`H`,level:123},{maxPictureSize:8912896,maxBitrate:25e6,tier:`L`,level:150},{maxPictureSize:8912896,maxBitrate:1e8,tier:`H`,level:150},{maxPictureSize:8912896,maxBitrate:4e7,tier:`L`,level:153},{maxPictureSize:8912896,maxBitrate:16e7,tier:`H`,level:153},{maxPictureSize:8912896,maxBitrate:6e7,tier:`L`,level:156},{maxPictureSize:8912896,maxBitrate:24e7,tier:`H`,level:156},{maxPictureSize:35651584,maxBitrate:6e7,tier:`L`,level:180},{maxPictureSize:35651584,maxBitrate:24e7,tier:`H`,level:180},{maxPictureSize:35651584,maxBitrate:12e7,tier:`L`,level:183},{maxPictureSize:35651584,maxBitrate:48e7,tier:`H`,level:183},{maxPictureSize:35651584,maxBitrate:24e7,tier:`L`,level:186},{maxPictureSize:35651584,maxBitrate:8e8,tier:`H`,level:186}],Tr=[{maxPictureSize:36864,maxBitrate:2e5,level:10},{maxPictureSize:73728,maxBitrate:8e5,level:11},{maxPictureSize:122880,maxBitrate:18e5,level:20},{maxPictureSize:245760,maxBitrate:36e5,level:21},{maxPictureSize:552960,maxBitrate:72e5,level:30},{maxPictureSize:983040,maxBitrate:12e6,level:31},{maxPictureSize:2228224,maxBitrate:18e6,level:40},{maxPictureSize:2228224,maxBitrate:3e7,level:41},{maxPictureSize:8912896,maxBitrate:6e7,level:50},{maxPictureSize:8912896,maxBitrate:12e7,level:51},{maxPictureSize:8912896,maxBitrate:18e7,level:52},{maxPictureSize:35651584,maxBitrate:18e7,level:60},{maxPictureSize:35651584,maxBitrate:24e7,level:61},{maxPictureSize:35651584,maxBitrate:48e7,level:62}],Er=[{maxPictureSize:147456,maxBitrate:15e5,tier:`M`,level:0},{maxPictureSize:278784,maxBitrate:3e6,tier:`M`,level:1},{maxPictureSize:665856,maxBitrate:6e6,tier:`M`,level:4},{maxPictureSize:1065024,maxBitrate:1e7,tier:`M`,level:5},{maxPictureSize:2359296,maxBitrate:12e6,tier:`M`,level:8},{maxPictureSize:2359296,maxBitrate:3e7,tier:`H`,level:8},{maxPictureSize:2359296,maxBitrate:2e7,tier:`M`,level:9},{maxPictureSize:2359296,maxBitrate:5e7,tier:`H`,level:9},{maxPictureSize:8912896,maxBitrate:3e7,tier:`M`,level:12},{maxPictureSize:8912896,maxBitrate:1e8,tier:`H`,level:12},{maxPictureSize:8912896,maxBitrate:4e7,tier:`M`,level:13},{maxPictureSize:8912896,maxBitrate:16e7,tier:`H`,level:13},{maxPictureSize:8912896,maxBitrate:6e7,tier:`M`,level:14},{maxPictureSize:8912896,maxBitrate:24e7,tier:`H`,level:14},{maxPictureSize:35651584,maxBitrate:6e7,tier:`M`,level:15},{maxPictureSize:35651584,maxBitrate:24e7,tier:`H`,level:15},{maxPictureSize:35651584,maxBitrate:6e7,tier:`M`,level:16},{maxPictureSize:35651584,maxBitrate:24e7,tier:`H`,level:16},{maxPictureSize:35651584,maxBitrate:1e8,tier:`M`,level:17},{maxPictureSize:35651584,maxBitrate:48e7,tier:`H`,level:17},{maxPictureSize:35651584,maxBitrate:16e7,tier:`M`,level:18},{maxPictureSize:35651584,maxBitrate:8e8,tier:`H`,level:18},{maxPictureSize:35651584,maxBitrate:16e7,tier:`M`,level:19},{maxPictureSize:35651584,maxBitrate:8e8,tier:`H`,level:19}],Dr=[`ap4x`,`ap4h`,`apch`,`apcn`,`apcs`,`apco`],Or=[`dtsc`,`dtsh`,`dtsl`,`dtse`],kr=[{fourCc:`apco`,bitrate:45e6,alpha:!1},{fourCc:`apcs`,bitrate:102e6,alpha:!1},{fourCc:`apcn`,bitrate:147e6,alpha:!1},{fourCc:`apch`,bitrate:22e7,alpha:!1},{fourCc:`ap4h`,bitrate:33e7,alpha:!0},{fourCc:`ap4x`,bitrate:5e8,alpha:!0}],Ar=(e,t,n,r,i)=>{
58
58
  /*!
59
59
  * Copyright (c) 2026-present, Vanilagy and contributors
60
60
  *
@@ -118,7 +118,7 @@ let t=W(e),n=G(e,4),r=8;t===1&&(t=fu(e),r=16);let i=t-r;return i<0?null:{name:n,
118
118
  * License, v. 2.0. If a copy of the MPL was not distributed with this
119
119
  * file, You can obtain one at https://mozilla.org/MPL/2.0/.
120
120
  */
121
- var ji=class e extends li{constructor(e){super(e),this.moovSlice=null,this.currentTrack=null,this.tracks=[],this.metadataPromise=null,this.movieTimescale=-1,this.movieDurationInTimescale=-1,this.movieMatrix=o,this.isQuickTime=!1,this.metadataTags={},this.currentMetadataKeys=null,this.isFragmented=!1,this.fragmentTrackDefaults=[],this.psshBoxes=[],this.currentFragment=null,this.lastReadFragment=null,this.decryptionKeyCache=new Map,this.reader=e._reader}async getTrackBackings(){return await this.readMetadata(),this.tracks.map(e=>e.trackBacking)}async getMimeType(){await this.readMetadata();let e=await this.getTrackBackings(),t=await Promise.all(e.map(e=>e.getDecoderConfig().then(e=>e?.codec??null)));return di({isQuickTime:this.isQuickTime,hasVideo:this.tracks.some(e=>e.info?.type===`video`),hasAudio:this.tracks.some(e=>e.info?.type===`audio`),codecStrings:t.filter(Boolean)})}async getMetadataTags(){return await this.readMetadata(),this.metadataTags}readMetadata(){return this.metadataPromise??=(async()=>{let e=0,t=!1,r=!1;for(;;){let n=this.reader.requestSliceRange(e,8,16);if(k(n)&&(n=await n),!n)break;let i=e,a=mi(n);if(!a)break;if(a.name===`ftyp`||a.name===`styp`){let e=G(n,4);this.isQuickTime=e===`qt `}else if(a.name===`moov`){let e=this.reader.requestSlice(n.filePos,a.contentSize);if(k(e)&&(e=await e),!e)break;this.moovSlice=e,this.readContiguousBoxes(this.moovSlice);for(let e of this.tracks){let t=e.editListPreviousSegmentDurations/this.movieTimescale;e.editListOffset-=Math.round(t*e.timescale)}t=this.isFragmented&&this.reader.fileSize!==null&&this.reader.fileSize>i+a.totalSize,r=!0;break}else if(a.name===`moof`){if(!this.input._initInput)throw Error(`"moof" box encountered with no "moov" box present; this file is likely a Segment as described in ISO/IEC 14496-12 Section 8.16. A separate init file that contains a "moov" box is required to read this file, please provide it using InputOptions.initInput.`);await this.copyMetadataFromInitInput(this.input._initInput),t=!1,r=!0;break}e=i+a.totalSize}if(!r&&this.input._initInput&&await this.copyMetadataFromInitInput(this.input._initInput),t){n(this.reader.fileSize!==null);let e=this.reader.requestSlice(this.reader.fileSize-4,4);k(e)&&(e=await e),n(e);let t=W(e),r=this.reader.fileSize-t;if(r>=0&&r<=this.reader.fileSize-16){let e=this.reader.requestSliceRange(r,8,16);if(k(e)&&(e=await e),e){let t=mi(e);if(t&&t.name===`mfra`){let n=this.reader.requestSlice(e.filePos,t.contentSize);k(n)&&(n=await n),n&&this.readContiguousBoxes(n)}}}}})()}async copyMetadataFromInitInput(t){let r=await t._getDemuxer();if(r.constructor!==e)throw Error(`Init input must match the input's format.`);await r.readMetadata(),this.movieTimescale=r.movieTimescale,this.movieDurationInTimescale=r.movieDurationInTimescale,this.movieMatrix=r.movieMatrix,this.metadataTags=r.metadataTags,this.isFragmented=!0,this.fragmentTrackDefaults=r.fragmentTrackDefaults,this.psshBoxes=r.psshBoxes;for(let e of r.tracks){let t={id:e.id,demuxer:this,trackBacking:null,disposition:e.disposition,timescale:e.timescale,durationInMediaTimescale:e.durationInMediaTimescale,durationInMovieTimescale:e.durationInMovieTimescale,matrix:e.matrix,internalCodecId:e.internalCodecId,name:e.name,languageCode:e.languageCode,sampleTableByteOffset:null,sampleTable:null,fragmentLookupTable:[],currentFragmentState:null,fragmentPositionCache:[],editListPreviousSegmentDurations:e.editListPreviousSegmentDurations,editListOffset:e.editListOffset,encryptionInfo:e.encryptionInfo,encryptionAuxInfo:null,frmaCodecString:null,maxBitrate:e.maxBitrate,avgBitrate:e.avgBitrate,info:e.info};e.trackBacking&&(n(t.info),t.info.type===`video`&&t.info.width!==-1?(t.trackBacking=new Ni(t),this.tracks.push(t)):t.info.type===`audio`&&t.info.numberOfChannels!==-1&&(t.trackBacking=new Pi(t),this.tracks.push(t)))}}getSampleTableForTrack(e){if(e.sampleTable)return e.sampleTable;let t={sampleTimingEntries:[],sampleCompositionTimeOffsets:[],sampleSizes:[],keySampleIndices:null,chunkOffsets:[],sampleToChunk:[],presentationTimestamps:null,presentationTimestampIndexMap:null};if(e.sampleTable=t,e.sampleTableByteOffset===null)return t;n(this.moovSlice);let r=this.moovSlice.slice(e.sampleTableByteOffset);if(this.currentTrack=e,this.traverseBox(r),this.currentTrack=null,e.info?.type===`audio`&&e.info.codec&&P.includes(e.info.codec)&&t.sampleCompositionTimeOffsets.length===0){n(e.info?.type===`audio`);let r=Br(e.info.codec),i=[],a=[];for(let n=0;n<t.sampleToChunk.length;n++){let o=t.sampleToChunk[n],s=t.sampleToChunk[n+1],c=(s?s.startChunkIndex:t.chunkOffsets.length)-o.startChunkIndex;for(let n=0;n<c;n++){let s=o.startSampleIndex+n*o.samplesPerChunk,c=s+o.samplesPerChunk,l=E(t.sampleTimingEntries,s,e=>e.startIndex),u=t.sampleTimingEntries[l],d=E(t.sampleTimingEntries,c,e=>e.startIndex),f=t.sampleTimingEntries[d],p=u.startDecodeTimestamp+(s-u.startIndex)*u.delta,m=f.startDecodeTimestamp+(c-f.startIndex)*f.delta-p,g=h(i);g&&g.delta===m?g.count++:i.push({startIndex:o.startChunkIndex+n,startDecodeTimestamp:p,count:1,delta:m});let _=o.samplesPerChunk*r.sampleSize*e.info.numberOfChannels;a.push(_)}o.startSampleIndex=o.startChunkIndex,o.samplesPerChunk=1}t.sampleTimingEntries=i,t.sampleSizes=a}if(t.sampleCompositionTimeOffsets.length>0){t.presentationTimestamps=[];for(let e of t.sampleTimingEntries)for(let n=0;n<e.count;n++)t.presentationTimestamps.push({presentationTimestamp:e.startDecodeTimestamp+n*e.delta,sampleIndex:e.startIndex+n});for(let e of t.sampleCompositionTimeOffsets)for(let n=0;n<e.count;n++){let r=e.startIndex+n,i=t.presentationTimestamps[r];i&&(i.presentationTimestamp+=e.offset)}t.presentationTimestamps.sort((e,t)=>e.presentationTimestamp-t.presentationTimestamp),t.presentationTimestampIndexMap=Array(t.presentationTimestamps.length).fill(-1);for(let e=0;e<t.presentationTimestamps.length;e++)t.presentationTimestampIndexMap[t.presentationTimestamps[e].sampleIndex]=e}return t}async readFragment(e){if(this.lastReadFragment?.moofOffset===e)return this.lastReadFragment;let t=this.reader.requestSliceRange(e,8,16);k(t)&&(t=await t),n(t);let r=mi(t);n(r?.name===`moof`);let i=this.reader.requestSlice(e,r.totalSize);k(i)&&(i=await i),n(i),this.traverseBox(i);let a=this.lastReadFragment;n(a&&a.moofOffset===e);for(let[,e]of a.trackData){let t=e.track,{fragmentPositionCache:n}=t;if(!e.startTimestampIsFinal){let r=t.fragmentLookupTable.find(e=>e.moofOffset===a.moofOffset);if(r)zi(e,r.timestamp);else{let t=E(n,a.moofOffset-1,e=>e.moofOffset);if(t!==-1){let r=n[t];zi(e,r.endTimestamp)}}e.startTimestampIsFinal=!0}let r=E(n,e.startTimestamp,e=>e.startTimestamp);if((r===-1||n[r].moofOffset!==a.moofOffset)&&n.splice(r+1,0,{moofOffset:a.moofOffset,startTimestamp:e.startTimestamp,endTimestamp:e.endTimestamp}),e.encryptionAuxInfo&&t.encryptionInfo){let n=await Ui(this.reader,t.encryptionInfo,e.encryptionAuxInfo);for(let t=0;t<Math.min(e.samples.length,n.length);t++){let r=n[t];e.samples[t].encryption=r}}}return a}readContiguousBoxes(e){let t=e.filePos;for(;e.filePos-t<=e.length-8&&this.traverseBox(e););}*iterateContiguousBoxes(e){let t=e.filePos;for(;e.filePos-t<=e.length-8;){let t=e.filePos,n=mi(e);if(!n)break;yield{boxInfo:n,slice:e},e.filePos=t+n.totalSize}}traverseBox(e){let t=e.filePos,r=mi(e);if(!r)return!1;let i=e.filePos,a=t+r.totalSize;switch(r.name){case`mdia`:case`minf`:case`dinf`:case`mfra`:case`edts`:case`sinf`:case`schi`:this.readContiguousBoxes(e.slice(i,r.contentSize));break;case`mvhd`:{let t=H(e);e.skip(3),t===1?(e.skip(16),this.movieTimescale=W(e),this.movieDurationInTimescale=fu(e)):(e.skip(8),this.movieTimescale=W(e),this.movieDurationInTimescale=W(e)),e.skip(16),this.movieMatrix=Bi(e)}break;case`trak`:{let t={id:-1,demuxer:this,trackBacking:null,disposition:{...zt,primary:!1},info:null,timescale:-1,durationInMovieTimescale:-1,durationInMediaTimescale:-1,matrix:o,internalCodecId:null,name:null,languageCode:`und`,sampleTableByteOffset:-1,sampleTable:null,fragmentLookupTable:[],currentFragmentState:null,fragmentPositionCache:[],editListPreviousSegmentDurations:0,editListOffset:0,encryptionInfo:null,encryptionAuxInfo:null,frmaCodecString:null,maxBitrate:null,avgBitrate:null};this.currentTrack=t,this.readContiguousBoxes(e.slice(i,r.contentSize)),t.id!==-1&&t.timescale!==-1&&t.info!==null&&(t.info.type===`video`&&t.info.width!==-1?(t.trackBacking=new Ni(t),this.tracks.push(t)):t.info.type===`audio`&&t.info.numberOfChannels!==-1&&(t.trackBacking=new Pi(t),this.tracks.push(t))),this.currentTrack=null}break;case`tkhd`:{let t=this.currentTrack;if(!t)break;let n=H(e),r=!!(au(e)&1);if(t.disposition.default=r,n===0)e.skip(8),t.id=W(e),e.skip(4),t.durationInMovieTimescale=W(e);else if(n===1)e.skip(16),t.id=W(e),e.skip(4),t.durationInMovieTimescale=fu(e);else throw Error(`Incorrect track header version ${n}.`);e.skip(16);let i=Bi(e);t.matrix=p(i,this.movieMatrix)}break;case`elst`:{let t=this.currentTrack;if(!t)break;let n=H(e);e.skip(3);let r=!1,i=0,a=W(e);for(let o=0;o<a;o++){let a=n===1?fu(e):W(e),o=n===1?pu(e):lu(e),s=hi(e);if(r){A._warn(`Unsupported edit list: multiple edits are not currently supported. Only using first edit.`);break}if(o===-1){i+=a;continue}if(s!==1){A._warn(`Unsupported edit list entry: media rate must be 1.`);break}t.editListPreviousSegmentDurations=i,t.editListOffset=o,r=!0}}break;case`mdhd`:{let t=this.currentTrack;if(!t)break;let n=H(e);e.skip(3),n===0?(e.skip(8),t.timescale=W(e),t.durationInMediaTimescale=W(e)):n===1&&(e.skip(16),t.timescale=W(e),t.durationInMediaTimescale=fu(e));let r=U(e);if(r>0){t.languageCode=``;for(let e=0;e<3;e++)t.languageCode=String.fromCharCode(96+(r&31))+t.languageCode,r>>=5;Ue(t.languageCode)||(t.languageCode=`und`)}}break;case`hdlr`:{let t=this.currentTrack;if(!t)break;e.skip(8);let n=G(e,4);n===`vide`?t.info={type:`video`,width:-1,height:-1,squarePixelWidth:-1,squarePixelHeight:-1,codec:null,codecDescription:null,colorSpace:{...fe},avcType:null,avcCodecInfo:null,hevcCodecInfo:null,vp9CodecInfo:null,av1CodecInfo:null,proresCodecInfo:null,proresFormat:null}:n===`soun`&&(t.info={type:`audio`,numberOfChannels:-1,sampleRate:-1,codec:null,codecDescription:null,aacCodecInfo:null,dtsFormat:null,pcmLittleEndian:!1,pcmSampleSize:null})}break;case`stbl`:{let n=this.currentTrack;if(!n)break;n.sampleTableByteOffset=t,this.readContiguousBoxes(e.slice(i,r.contentSize))}break;case`stsd`:{let t=this.currentTrack;if(!t||t.info===null||t.sampleTable)break;let n=H(e);e.skip(3);let r=W(e);for(let i=0;i<r;i++){let r=e.filePos,i=mi(e);if(!i)break;t.internalCodecId=i.name;let a=i.name.toLowerCase();if(t.info.type===`video`){e.skip(24),t.info.width=U(e),t.info.height=U(e),t.info.squarePixelWidth=t.info.width,t.info.squarePixelHeight=t.info.height,e.skip(50),t.frmaCodecString=null,this.readContiguousBoxes(e.slice(e.filePos,r+i.totalSize-e.filePos));let n=a===`encv`?t.frmaCodecString:a;t.frmaCodecString=null,n===`avc1`||n===`avc3`?(t.info.codec=`avc`,t.info.avcType=n===`avc1`?1:3):n===`hvc1`||n===`hev1`?t.info.codec=`hevc`:n===`vp08`?t.info.codec=`vp8`:n===`vp09`?t.info.codec=`vp9`:n===`av01`?t.info.codec=`av1`:Dr.includes(a)?(t.info.codec=`prores`,t.info.proresFormat=a):n===null?A._warn(`Unknown encrypted video codec due to missing frma box.`):A._warn(`Unsupported video codec (sample entry type '${i.name}').`)}else{e.skip(8);let o=U(e);e.skip(6);let s=U(e),c=U(e);e.skip(4);let l=W(e)/65536,u=null;n===0&&o>0&&(o===1?(e.skip(4),c=8*W(e),e.skip(8)):o===2&&(e.skip(4),l=gu(e),s=W(e),e.skip(4),c=W(e),u=W(e),e.skip(8))),t.info.numberOfChannels=s,t.info.sampleRate=l,t.frmaCodecString=null,this.readContiguousBoxes(e.slice(e.filePos,r+i.totalSize-e.filePos));let d=a===`enca`?t.frmaCodecString:a;if(t.frmaCodecString=null,d!==`mp4a`){if(d===`opus`)t.info.codec=`opus`,t.info.sampleRate=Rr;else if(d===`flac`)t.info.codec=`flac`;else if(d===`ulaw`)t.info.codec=`ulaw`;else if(d===`alaw`)t.info.codec=`alaw`;else if(d===`ac-3`)t.info.codec=`ac3`;else if(d===`ec-3`)t.info.codec=`eac3`;else if(Or.includes(d))t.info.codec=`dts`,t.info.dtsFormat=d;else if(d===`twos`)c===8?t.info.codec=`pcm-s8`:c===16?t.info.codec=t.info.pcmLittleEndian?`pcm-s16`:`pcm-s16be`:(A._warn(`Unsupported sample size ${c} for codec 'twos'.`),t.info.codec=null);else if(d===`sowt`)c===8?t.info.codec=`pcm-s8`:c===16?t.info.codec=`pcm-s16`:(A._warn(`Unsupported sample size ${c} for codec 'sowt'.`),t.info.codec=null);else if(d===`raw `)t.info.codec=`pcm-u8`;else if(d===`in24`)t.info.codec=t.info.pcmLittleEndian?`pcm-s24`:`pcm-s24be`;else if(d===`in32`)t.info.codec=t.info.pcmLittleEndian?`pcm-s32`:`pcm-s32be`;else if(d===`fl32`)t.info.codec=t.info.pcmLittleEndian?`pcm-f32`:`pcm-f32be`;else if(d===`fl64`)t.info.codec=t.info.pcmLittleEndian?`pcm-f64`:`pcm-f64be`;else if(d===`ipcm`){let e=t.info.pcmSampleSize;t.info.pcmLittleEndian?e===16?t.info.codec=`pcm-s16`:e===24?t.info.codec=`pcm-s24`:e===32?t.info.codec=`pcm-s32`:(A._warn(`Invalid ipcm sample size ${e}.`),t.info.codec=null):e===16?t.info.codec=`pcm-s16be`:e===24?t.info.codec=`pcm-s24be`:e===32?t.info.codec=`pcm-s32be`:(A._warn(`Invalid ipcm sample size ${e}.`),t.info.codec=null)}else if(d===`fpcm`){let e=t.info.pcmSampleSize;t.info.pcmLittleEndian?e===32?t.info.codec=`pcm-f32`:e===64?t.info.codec=`pcm-f64`:(A._warn(`Invalid fpcm sample size ${e}.`),t.info.codec=null):e===32?t.info.codec=`pcm-f32be`:e===64?t.info.codec=`pcm-f64be`:(A._warn(`Invalid fpcm sample size ${e}.`),t.info.codec=null)}else if(d===`lpcm`&&u!==null){let e=c+7>>3,n=!!(u&1),r=!!(u&2),i=u&4?-1:0;c>0&&c<=64&&(n?c===32&&(t.info.codec=r?`pcm-f32be`:`pcm-f32`):i&1<<e-1?e===1?t.info.codec=`pcm-s8`:e===2?t.info.codec=r?`pcm-s16be`:`pcm-s16`:e===3?t.info.codec=r?`pcm-s24be`:`pcm-s24`:e===4&&(t.info.codec=r?`pcm-s32be`:`pcm-s32`):e===1&&(t.info.codec=`pcm-u8`)),t.info.codec===null&&A._warn(`Unsupported PCM format.`)}else d===null?A._warn(`Unknown encrypted audio codec due to missing frma box.`):A._warn(`Unsupported audio codec (sample entry type '${i.name}').`)}}e.filePos=r+i.totalSize}}break;case`frma`:{let t=this.currentTrack;if(!t)break;t.frmaCodecString=G(e,4).toLowerCase()}break;case`schm`:{let t=this.currentTrack;if(!t)break;e.skip(4);let n=G(e,4);n===`cenc`||n===`cens`||n===`cbcs`?t.encryptionInfo={scheme:n,defaultKid:null,defaultIsProtected:null,defaultPerSampleIvSize:null,defaultConstantIv:null,defaultCryptByteBlock:null,defaultSkipByteBlock:null}:A._warn(`Unsupported encryption scheme '${n}'.`)}break;case`tenc`:{let t=this.currentTrack;if(!t||!t.encryptionInfo)break;let n=H(e);e.skip(3),e.skip(1);let r=H(e);if(n>0?(t.encryptionInfo.defaultCryptByteBlock=r>>4,t.encryptionInfo.defaultSkipByteBlock=r&15):(t.encryptionInfo.defaultCryptByteBlock=0,t.encryptionInfo.defaultSkipByteBlock=0),t.encryptionInfo.defaultIsProtected=H(e)!==0,t.encryptionInfo.defaultPerSampleIvSize=H(e),t.encryptionInfo.defaultKid=ge(V(e,16)),t.encryptionInfo.defaultIsProtected&&t.encryptionInfo.defaultPerSampleIvSize===0){let n=H(e),r=new Uint8Array(16);r.set(V(e,n),0),t.encryptionInfo.defaultConstantIv=r}}break;case`avcC`:{let t=this.currentTrack;if(!t||(n(t.info),r.contentSize===0))break;t.info.codecDescription=V(e,r.contentSize)}break;case`hvcC`:{let t=this.currentTrack;if(!t||(n(t.info),r.contentSize===0))break;t.info.codecDescription=V(e,r.contentSize)}break;case`vpcC`:{let t=this.currentTrack;if(!t)break;n(t.info?.type===`video`),e.skip(4);let r=H(e),i=H(e),a=H(e),o=a>>4,s=a>>1&7,c=a&1,l=H(e),u=H(e),d=H(e);t.info.vp9CodecInfo={profile:r,level:i,bitDepth:o,chromaSubsampling:s,videoFullRangeFlag:c,colourPrimaries:l,transferCharacteristics:u,matrixCoefficients:d}}break;case`av1C`:{let t=this.currentTrack;if(!t)break;n(t.info?.type===`video`),e.skip(1);let i=H(e),a=i>>5,o=i&31,s=H(e),c=s>>7,l=s>>6&1,u=s>>5&1,d=s>>4&1,f=s>>3&1,p=s>>2&1,m=s&3,h=a===2&&l?u?12:10:l?10:8;e.skip(1);let g=V(e,r.contentSize-4),_=zn(g);t.info.av1CodecInfo={profile:a,level:o,tier:c,bitDepth:h,monochrome:d,chromaSubsamplingX:f,chromaSubsamplingY:p,chromaSamplePosition:m,videoFullRangeFlag:_?.videoFullRangeFlag??0,colourPrimaries:_?.colourPrimaries??2,transferCharacteristics:_?.transferCharacteristics??2,matrixCoefficients:_?.matrixCoefficients??2}}break;case`colr`:{let t=this.currentTrack;if(!t)break;n(t.info?.type===`video`);let r=G(e,4);if(r!==`nclx`&&r!==`nclc`)break;let i=U(e),a=U(e),o=U(e),s;r===`nclx`&&(s=!!(H(e)&128)),t.info.colorSpace={primaries:ae[i],transfer:se[a],matrix:le[o],fullRange:s}}break;case`pasp`:{let t=this.currentTrack;if(!t)break;n(t.info?.type===`video`);let r=W(e),i=W(e);r>0&&i>0&&(r>i?t.info.squarePixelWidth=Math.round(t.info.width*r/i):t.info.squarePixelHeight=Math.round(t.info.height*i/r))}break;case`btrt`:{let t=this.currentTrack;if(!t)break;e.skip(4);let n=W(e),r=W(e);t.maxBitrate=n>0?n:null,t.avgBitrate=r>0?r:null}break;case`wave`:this.readContiguousBoxes(e.slice(i,r.contentSize));break;case`esds`:{let t=this.currentTrack;if(!t||t.info?.type!==`audio`)break;e.skip(4),n(H(e)===3),_i(e),e.skip(2);let r=H(e),i=!!(r&128),a=!!(r&64),o=!!(r&32);if(i&&e.skip(2),a){let t=H(e);e.skip(t)}o&&e.skip(2),n(H(e)===4);let s=_i(e),c=e.filePos,l=H(e);if(l===64||l===103?(t.info.codec=`aac`,t.info.aacCodecInfo={isMpeg2:l===103,objectType:null}):l===105||l===107?t.info.codec=`mp3`:l===221?t.info.codec=`vorbis`:l===169?t.info.codec=`dts`:A._warn(`Unsupported audio codec (objectTypeIndication ${l}) - discarding track.`),e.skip(12),s>e.filePos-c){n(H(e)===5);let r=_i(e);if(t.info.codecDescription=V(e,r),t.info.codec===`aac`){let e=Ut(t.info.codecDescription);e.outputNumberOfChannels!==null&&(t.info.numberOfChannels=e.outputNumberOfChannels),e.outputSampleRate!==null&&(t.info.sampleRate=e.outputSampleRate)}}}break;case`enda`:{let t=this.currentTrack;if(!t)break;n(t.info?.type===`audio`),t.info.pcmLittleEndian=!!(U(e)&255)}break;case`pcmC`:{let t=this.currentTrack;if(!t)break;n(t.info?.type===`audio`),e.skip(4);let r=H(e);t.info.pcmLittleEndian=!!(r&1),t.info.pcmSampleSize=H(e)}break;case`dOps`:{let t=this.currentTrack;if(!t)break;n(t.info?.type===`audio`),e.skip(1);let r=H(e),i=U(e),a=W(e),o=ou(e),s=H(e),c;c=s===0?new Uint8Array:V(e,2+r);let l=new Uint8Array(19+c.byteLength),u=new DataView(l.buffer);u.setUint32(0,1332770163,!1),u.setUint32(4,1214603620,!1),u.setUint8(8,1),u.setUint8(9,r),u.setUint16(10,i,!0),u.setUint32(12,a,!0),u.setInt16(16,o,!0),u.setUint8(18,s),l.set(c,19),t.info.codecDescription=l,t.info.numberOfChannels=r}break;case`dfLa`:{let t=this.currentTrack;if(!t)break;n(t.info?.type===`audio`),e.skip(4);let r=e.filePos;for(;e.filePos<a;){let n=H(e),r=au(e);if((n&127)===qn.STREAMINFO){e.skip(10);let n=W(e),r=n>>>12,i=(n>>9&7)+1;t.info.sampleRate=r,t.info.numberOfChannels=i,e.skip(20)}else e.skip(r);if(n&128)break}let i=e.filePos;e.filePos=r;let o=V(e,i-r),s=new Uint8Array(4+o.byteLength);new DataView(s.buffer).setUint32(0,1716281667,!1),s.set(o,4),t.info.codecDescription=s}break;case`dac3`:{let t=this.currentTrack;if(!t)break;n(t.info?.type===`audio`);let r=new j(V(e,3)),i=r.readBits(2);r.skipBits(8);let a=r.readBits(3),o=r.readBits(1);i<3&&(t.info.sampleRate=Qt[i]),t.info.numberOfChannels=Xn[a]+o}break;case`dec3`:{let t=this.currentTrack;if(!t)break;n(t.info?.type===`audio`);let i=V(e,r.contentSize),a=rr(i);if(!a){A._warn(`Invalid dec3 box contents, ignoring.`);break}let o=ir(a);o!==null&&(t.info.sampleRate=o),t.info.numberOfChannels=ar(a)}break;case`ddts`:{let t=this.currentTrack;if(!t)break;n(t.info?.type===`audio`);let i=V(e,Math.min(r.contentSize,20)),a=vr(i);if(!a){A._warn(`Invalid ddts box contents, ignoring.`);break}t.info.sampleRate=a.sampleRate,a.numberOfChannels!==null&&(t.info.numberOfChannels=a.numberOfChannels)}break;case`stts`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4);let n=W(e),r=0,i=0;for(let a=0;a<n;a++){let n=W(e),a=W(e);t.sampleTable.sampleTimingEntries.push({startIndex:r,startDecodeTimestamp:i,count:n,delta:a}),r+=n,i+=n*a}}break;case`ctts`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4);let n=W(e),r=0;for(let i=0;i<n;i++){let n=W(e),i=lu(e);t.sampleTable.sampleCompositionTimeOffsets.push({startIndex:r,count:n,offset:i}),r+=n}}break;case`stsz`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4);let n=W(e),r=W(e);if(n===0)for(let n=0;n<r;n++){let n=W(e);t.sampleTable.sampleSizes.push(n)}else t.sampleTable.sampleSizes.push(n)}break;case`stz2`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4),e.skip(3);let n=H(e),r=W(e),i=new j(V(e,Math.ceil(r*n/8)));for(let e=0;e<r;e++){let e=i.readBits(n);t.sampleTable.sampleSizes.push(e)}}break;case`stss`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4),t.sampleTable.keySampleIndices=[];let n=W(e);for(let r=0;r<n;r++){let n=W(e)-1;t.sampleTable.keySampleIndices.push(n)}t.sampleTable.keySampleIndices[0]!==0&&t.sampleTable.keySampleIndices.unshift(0)}break;case`stsc`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4);let n=W(e);for(let r=0;r<n;r++){let n=W(e)-1,r=W(e),i=W(e);t.sampleTable.sampleToChunk.push({startSampleIndex:-1,startChunkIndex:n,samplesPerChunk:r,sampleDescriptionIndex:i})}let r=0;for(let e=0;e<t.sampleTable.sampleToChunk.length;e++)if(t.sampleTable.sampleToChunk[e].startSampleIndex=r,e<t.sampleTable.sampleToChunk.length-1){let n=t.sampleTable.sampleToChunk[e+1].startChunkIndex-t.sampleTable.sampleToChunk[e].startChunkIndex;r+=n*t.sampleTable.sampleToChunk[e].samplesPerChunk}}break;case`stco`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4);let n=W(e);for(let r=0;r<n;r++){let n=W(e);t.sampleTable.chunkOffsets.push(n)}}break;case`co64`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4);let n=W(e);for(let r=0;r<n;r++){let n=fu(e);t.sampleTable.chunkOffsets.push(n)}}break;case`mvex`:this.isFragmented=!0,this.readContiguousBoxes(e.slice(i,r.contentSize));break;case`mehd`:{let t=H(e);e.skip(3);let n=t===1?fu(e):W(e);this.movieDurationInTimescale=n}break;case`trex`:{e.skip(4);let t=W(e),n=W(e),r=W(e),i=W(e),a=W(e);this.fragmentTrackDefaults.push({trackId:t,defaultSampleDescriptionIndex:n,defaultSampleDuration:r,defaultSampleSize:i,defaultSampleFlags:a})}break;case`tfra`:{let t=H(e);e.skip(3);let n=W(e),r=this.tracks.find(e=>e.id===n);if(!r)break;let i=W(e),a=(i&48)>>4,o=(i&12)>>2,s=i&3,c=[H,U,au,W],l=c[a],u=c[o],d=c[s],f=W(e);for(let n=0;n<f;n++){let n=t===1?fu(e):W(e),i=t===1?fu(e):W(e);l(e),u(e),d(e),r.fragmentLookupTable.push({timestamp:n,moofOffset:i})}r.fragmentLookupTable.sort((e,t)=>e.timestamp-t.timestamp);for(let e=0;e<r.fragmentLookupTable.length-1;e++){let t=r.fragmentLookupTable[e],n=r.fragmentLookupTable[e+1];t.timestamp===n.timestamp&&(r.fragmentLookupTable.splice(e+1,1),e--)}}break;case`moof`:this.currentFragment={moofOffset:t,moofSize:r.totalSize,implicitBaseDataOffset:t,trackData:new Map,psshBoxes:[]},this.readContiguousBoxes(e.slice(i,r.contentSize)),this.lastReadFragment=this.currentFragment,this.currentFragment=null;break;case`traf`:if(n(this.currentFragment),this.readContiguousBoxes(e.slice(i,r.contentSize)),this.currentTrack){let e=this.currentFragment.trackData.get(this.currentTrack.id);cond:if(e){if(e.samples.length===0){this.currentFragment.trackData.delete(this.currentTrack.id);break cond}e.presentationTimestamps=e.samples.map((e,t)=>({presentationTimestamp:e.presentationTimestamp,sampleIndex:t})).sort((e,t)=>e.presentationTimestamp-t.presentationTimestamp);for(let t=0;t<e.presentationTimestamps.length;t++){let n=e.presentationTimestamps[t],r=e.samples[n.sampleIndex];e.firstKeyFrameTimestamp===null&&r.isKeyFrame&&(e.firstKeyFrameTimestamp=r.presentationTimestamp),t<e.presentationTimestamps.length-1&&(r.duration=e.presentationTimestamps[t+1].presentationTimestamp-n.presentationTimestamp)}let t=e.samples[e.presentationTimestamps[0].sampleIndex],r=e.samples[h(e.presentationTimestamps).sampleIndex];e.startTimestamp=t.presentationTimestamp,e.endTimestamp=r.presentationTimestamp+r.duration;let{currentFragmentState:i}=this.currentTrack;n(i),i.startTimestamp!==null&&(zi(e,i.startTimestamp),e.startTimestampIsFinal=!0),i.encryptionAuxInfo&&!e.samples[0].encryption&&(e.encryptionAuxInfo=i.encryptionAuxInfo)}this.currentTrack.currentFragmentState=null,this.currentTrack=null}break;case`pssh`:{if(this.input._formatOptions.isobmff?._suppressPsshParsing)break;let t=fi(V(e,r.contentSize));this.currentFragment?this.currentFragment.psshBoxes.push(t):this.currentTrack||this.psshBoxes.push(t)}break;case`tfhd`:{n(this.currentFragment),e.skip(1);let t=au(e),r=!!(t&1),i=!!(t&2),a=!!(t&8),o=!!(t&16),s=!!(t&32),c=!!(t&65536),l=!!(t&131072),u=W(e),d=this.tracks.find(e=>e.id===u);if(!d)break;let f=this.fragmentTrackDefaults.find(e=>e.trackId===u);this.currentTrack=d,d.currentFragmentState={baseDataOffset:this.currentFragment.implicitBaseDataOffset,sampleDescriptionIndex:f?.defaultSampleDescriptionIndex??null,defaultSampleDuration:f?.defaultSampleDuration??null,defaultSampleSize:f?.defaultSampleSize??null,defaultSampleFlags:f?.defaultSampleFlags??null,startTimestamp:null,encryptionAuxInfo:null},r?d.currentFragmentState.baseDataOffset=fu(e):l&&(d.currentFragmentState.baseDataOffset=this.currentFragment.moofOffset),i&&(d.currentFragmentState.sampleDescriptionIndex=W(e)),a&&(d.currentFragmentState.defaultSampleDuration=W(e)),o&&(d.currentFragmentState.defaultSampleSize=W(e)),s&&(d.currentFragmentState.defaultSampleFlags=W(e)),c&&(d.currentFragmentState.defaultSampleDuration=0)}break;case`tfdt`:{let t=this.currentTrack;if(!t)break;n(t.currentFragmentState);let r=H(e);e.skip(3);let i=r===0?W(e):fu(e);t.currentFragmentState.startTimestamp=i}break;case`trun`:{let t=this.currentTrack;if(!t)break;n(this.currentFragment),n(t.currentFragmentState);let r=H(e),i=au(e),a=!!(i&1),o=!!(i&4),s=!!(i&256),c=!!(i&512),l=!!(i&1024),u=!!(i&2048),d=W(e),f=null;a&&(f=lu(e));let p=null;o&&(p=W(e));let m;this.currentFragment.trackData.has(t.id)?(m=this.currentFragment.trackData.get(t.id),f!==null&&(m.currentOffset=t.currentFragmentState.baseDataOffset+f)):(m={track:t,currentTimestamp:0,currentOffset:t.currentFragmentState.baseDataOffset+(f??0),startTimestamp:0,endTimestamp:0,firstKeyFrameTimestamp:null,samples:[],presentationTimestamps:[],startTimestampIsFinal:!1,encryptionAuxInfo:null},this.currentFragment.trackData.set(t.id,m));for(let i=0;i<d;i++){let a;s?a=W(e):(n(t.currentFragmentState.defaultSampleDuration!==null),a=t.currentFragmentState.defaultSampleDuration);let o;c?o=W(e):(n(t.currentFragmentState.defaultSampleSize!==null),o=t.currentFragmentState.defaultSampleSize);let d;l?d=W(e):(n(t.currentFragmentState.defaultSampleFlags!==null),d=t.currentFragmentState.defaultSampleFlags),i===0&&p!==null&&(d=p);let f=0;u&&(f=r===0?W(e):lu(e));let h=!(d&65536);m.samples.push({presentationTimestamp:m.currentTimestamp+f,duration:a,byteOffset:m.currentOffset,byteSize:o,isKeyFrame:h,encryption:null}),m.currentOffset+=o,m.currentTimestamp+=a}this.currentFragment.implicitBaseDataOffset=m.currentOffset}break;case`saiz`:{let t=this.currentTrack;if(!t||!t.encryptionInfo)break;if(e.skip(1),au(e)&1){let n=G(e,4),r=W(e);if(n!==t.encryptionInfo.scheme||r!==0)break}let n=H(e),r=W(e),i=null;n===0&&r>0&&(i=V(e,r));let a=Hi(t);a.defaultSampleInfoSize=n,a.sampleSizes=i,a.sampleCount=r}break;case`saio`:{let t=this.currentTrack;if(!t||!t.encryptionInfo)break;let n=H(e);if(au(e)&1){let n=G(e,4),r=W(e);if(n!==t.encryptionInfo.scheme||r!==0)break}let r=W(e);if(r===0)break;r>1&&A._warn(`Multiple saio entries are not supported; using the first offset only.`);let i=n===0?W(e):Number(fu(e));this.currentFragment&&(i+=this.currentFragment.moofOffset);let a=Hi(t);a.offset=i}break;case`senc`:{let t=this.currentTrack;if(!t||!t.encryptionInfo)break;n(this.currentFragment);let r=this.currentFragment.trackData.get(t.id);if(!r)break;e.skip(1);let i=!!(au(e)&2),a=W(e),o=t.encryptionInfo.defaultPerSampleIvSize;n(o!==null);for(let n=0;n<Math.min(a,r.samples.length);n++){let a=new Uint8Array(16);o>0?a.set(V(e,o),0):a.set(t.encryptionInfo.defaultConstantIv,0);let s=null;if(i){let t=U(e);s=[];for(let n=0;n<t;n++){let t=U(e),n=W(e);s.push({clearLen:t,protectedLen:n})}}let c=r.samples[n];c.encryption={iv:a,subsamples:s}}}break;case`udta`:{let t=this.iterateContiguousBoxes(e.slice(i,r.contentSize));for(let{boxInfo:e,slice:n}of t){if(e.name!==`meta`&&!this.currentTrack){let t=n.filePos;this.metadataTags.raw??={},e.name[0]===`©`?this.metadataTags.raw[e.name]??=vi(n):this.metadataTags.raw[e.name]??=V(n,e.contentSize),n.filePos=t}switch(e.name){case`meta`:n.skip(-e.headerSize),this.traverseBox(n);break;case`©nam`:case`name`:this.currentTrack?this.currentTrack.name=w.decode(V(n,e.contentSize)):this.metadataTags.title??=vi(n);break;case`©des`:this.currentTrack||(this.metadataTags.description??=vi(n));break;case`©ART`:this.currentTrack||(this.metadataTags.artist??=vi(n));break;case`©alb`:this.currentTrack||(this.metadataTags.album??=vi(n));break;case`albr`:this.currentTrack||(this.metadataTags.albumArtist??=vi(n));break;case`©gen`:this.currentTrack||(this.metadataTags.genre??=vi(n));break;case`©day`:if(!this.currentTrack){let e=new Date(vi(n));Number.isNaN(e.getTime())||(this.metadataTags.date??=e)}break;case`©cmt`:this.currentTrack||(this.metadataTags.comment??=vi(n));break;case`©lyr`:this.currentTrack||(this.metadataTags.lyrics??=vi(n))}}}break;case`meta`:{if(this.currentTrack)break;let t=W(e)!==0;this.currentMetadataKeys=new Map,t?this.readContiguousBoxes(e.slice(i,r.contentSize)):this.readContiguousBoxes(e.slice(i+4,r.contentSize-4)),this.currentMetadataKeys=null}break;case`keys`:{if(!this.currentMetadataKeys)break;e.skip(4);let t=W(e);for(let n=0;n<t;n++){let t=W(e);e.skip(4);let r=w.decode(V(e,t-8));this.currentMetadataKeys.set(n+1,r)}}break;case`ilst`:{if(!this.currentMetadataKeys)break;let t=this.iterateContiguousBoxes(e.slice(i,r.contentSize));for(let{boxInfo:e,slice:n}of t){let t=e.name,r=(t.charCodeAt(0)<<24)+(t.charCodeAt(1)<<16)+(t.charCodeAt(2)<<8)+t.charCodeAt(3);this.currentMetadataKeys.has(r)&&(t=this.currentMetadataKeys.get(r));let i=yi(n);switch(this.metadataTags.raw??={},this.metadataTags.raw[t]??=i,t){case`©nam`:case`titl`:case`com.apple.quicktime.title`:case`title`:typeof i==`string`&&(this.metadataTags.title??=i);break;case`©des`:case`desc`:case`dscp`:case`com.apple.quicktime.description`:case`description`:typeof i==`string`&&(this.metadataTags.description??=i);break;case`©ART`:case`com.apple.quicktime.artist`:case`artist`:typeof i==`string`&&(this.metadataTags.artist??=i);break;case`©alb`:case`albm`:case`com.apple.quicktime.album`:case`album`:typeof i==`string`&&(this.metadataTags.album??=i);break;case`aART`:case`album_artist`:typeof i==`string`&&(this.metadataTags.albumArtist??=i);break;case`©cmt`:case`com.apple.quicktime.comment`:case`comment`:typeof i==`string`&&(this.metadataTags.comment??=i);break;case`©gen`:case`gnre`:case`com.apple.quicktime.genre`:case`genre`:typeof i==`string`&&(this.metadataTags.genre??=i);break;case`©lyr`:case`lyrics`:typeof i==`string`&&(this.metadataTags.lyrics??=i);break;case`©day`:case`rldt`:case`com.apple.quicktime.creationdate`:case`date`:if(typeof i==`string`){let e=new Date(i);Number.isNaN(e.getTime())||(this.metadataTags.date??=e)}break;case`covr`:case`com.apple.quicktime.artwork`:i instanceof Ft?(this.metadataTags.images??=[],this.metadataTags.images.push({data:i.data,kind:`coverFront`,mimeType:i.mimeType})):i instanceof Uint8Array&&(this.metadataTags.images??=[],this.metadataTags.images.push({data:i,kind:`coverFront`,mimeType:`image/*`}));break;case`track`:if(typeof i==`string`){let e=i.split(`/`),t=Number.parseInt(e[0],10),n=e[1]&&Number.parseInt(e[1],10);Number.isInteger(t)&&t>0&&(this.metadataTags.trackNumber??=t),n&&Number.isInteger(n)&&n>0&&(this.metadataTags.tracksTotal??=n)}break;case`trkn`:if(i instanceof Uint8Array&&i.length>=6){let e=C(i),t=e.getUint16(2,!1),n=e.getUint16(4,!1);t>0&&(this.metadataTags.trackNumber??=t),n>0&&(this.metadataTags.tracksTotal??=n)}break;case`disc`:case`disk`:if(i instanceof Uint8Array&&i.length>=6){let e=C(i),t=e.getUint16(2,!1),n=e.getUint16(4,!1);t>0&&(this.metadataTags.discNumber??=t),n>0&&(this.metadataTags.discsTotal??=n)}}}}}return e.filePos=a,!0}},Mi=class{constructor(e){this.internalTrack=e,this.packetToSampleIndex=new WeakMap,this.packetToFragmentLocation=new WeakMap}getId(){return this.internalTrack.id}getNumber(){let e=this.internalTrack.demuxer,t=this.internalTrack.trackBacking.getType(),n=0;for(let r of e.tracks)if(r.trackBacking.getType()===t&&n++,r===this.internalTrack)break;return n}getCodec(){throw Error(`Not implemented on base class.`)}getInternalCodecId(){return this.internalTrack.internalCodecId}getName(){return this.internalTrack.name}getLanguageCode(){return this.internalTrack.languageCode}getTimeResolution(){return this.internalTrack.timescale}isRelativeToUnixEpoch(){return!1}getUnixTimeForTimestamp(){return null}getDisposition(){return this.internalTrack.disposition}getPairingMask(){return 1n}getBitrate(){return this.internalTrack.maxBitrate}getAverageBitrate(){return this.internalTrack.avgBitrate}async getDurationFromMetadata(){let e=this.internalTrack;return e.durationInMediaTimescale<=0?null:(n(e.trackBacking),((await e.trackBacking.getFirstPacket({metadataOnly:!0}))?.timestamp??0)+e.durationInMediaTimescale/e.timescale)}async getLiveRefreshInterval(){return null}async getFirstPacket(e){let t=await this.fetchPacketForSampleIndex(0,e);return t||!this.internalTrack.demuxer.isFragmented?t:this.performFragmentedLookup(null,e=>e.trackData.get(this.internalTrack.id)?{sampleIndex:0,correctSampleFound:!0}:{sampleIndex:-1,correctSampleFound:!1},-1/0,1/0,e)}mapTimestampIntoTimescale(e){return Fe(e*this.internalTrack.timescale)+this.internalTrack.editListOffset}async getPacket(e,t){let n=this.mapTimestampIntoTimescale(e),r=this.internalTrack.demuxer.getSampleTableForTrack(this.internalTrack),i=Fi(r,n),a=await this.fetchPacketForSampleIndex(i,t);return!Vi(r)||!this.internalTrack.demuxer.isFragmented?a:this.performFragmentedLookup(null,e=>{let t=e.trackData.get(this.internalTrack.id);if(!t)return{sampleIndex:-1,correctSampleFound:!1};let r=E(t.presentationTimestamps,n,e=>e.presentationTimestamp);return{sampleIndex:r===-1?-1:t.presentationTimestamps[r].sampleIndex,correctSampleFound:r!==-1&&n<t.endTimestamp}},n,n,t)}async getNextPacket(e,t){let n=this.packetToSampleIndex.get(e);if(n!==void 0)return this.fetchPacketForSampleIndex(n+1,t);let r=this.packetToFragmentLocation.get(e);if(r===void 0)throw Error(`Packet was not created from this track.`);return this.performFragmentedLookup(r.fragment,e=>{if(e===r.fragment){let t=e.trackData.get(this.internalTrack.id);if(r.sampleIndex+1<t.samples.length)return{sampleIndex:r.sampleIndex+1,correctSampleFound:!0}}else if(e.trackData.get(this.internalTrack.id))return{sampleIndex:0,correctSampleFound:!0};return{sampleIndex:-1,correctSampleFound:!1}},-1/0,1/0,t)}async getKeyPacket(e,t){let n=this.mapTimestampIntoTimescale(e),r=this.internalTrack.demuxer.getSampleTableForTrack(this.internalTrack),i=Ii(r,n),a=await this.fetchPacketForSampleIndex(i,t);return!Vi(r)||!this.internalTrack.demuxer.isFragmented?a:this.performFragmentedLookup(null,e=>{let t=e.trackData.get(this.internalTrack.id);if(!t)return{sampleIndex:-1,correctSampleFound:!1};let r=Ce(t.presentationTimestamps,e=>t.samples[e.sampleIndex].isKeyFrame&&e.presentationTimestamp<=n);return{sampleIndex:r===-1?-1:t.presentationTimestamps[r].sampleIndex,correctSampleFound:r!==-1&&n<t.endTimestamp}},n,n,t)}async getNextKeyPacket(e,t){let r=this.packetToSampleIndex.get(e);if(r!==void 0){let e=this.internalTrack.demuxer.getSampleTableForTrack(this.internalTrack),n=Ri(e,r);return this.fetchPacketForSampleIndex(n,t)}let i=this.packetToFragmentLocation.get(e);if(i===void 0)throw Error(`Packet was not created from this track.`);return this.performFragmentedLookup(i.fragment,e=>{if(e===i.fragment){let t=e.trackData.get(this.internalTrack.id).samples.findIndex((e,t)=>e.isKeyFrame&&t>i.sampleIndex);if(t!==-1)return{sampleIndex:t,correctSampleFound:!0}}else{let t=e.trackData.get(this.internalTrack.id);if(t&&t.firstKeyFrameTimestamp!==null){let e=t.samples.findIndex(e=>e.isKeyFrame);return n(e!==-1),{sampleIndex:e,correctSampleFound:!0}}}return{sampleIndex:-1,correctSampleFound:!1}},-1/0,1/0,t)}async fetchPacketForSampleIndex(e,t){if(e===-1)return null;let n=this.internalTrack.demuxer.getSampleTableForTrack(this.internalTrack),r=Li(n,e);if(!r)return null;let i;if(t.metadataOnly)i=ui;else{let t=this.internalTrack.demuxer.reader.requestSlice(r.sampleOffset,r.sampleSize);if(k(t)&&(t=await t),!t)return null;if(i=V(t,r.sampleSize),this.internalTrack.encryptionInfo){let t=null;if(this.internalTrack.encryptionAuxInfo){let n=await Ui(this.internalTrack.demuxer.reader,this.internalTrack.encryptionInfo,this.internalTrack.encryptionAuxInfo);e<n.length&&(t=n[e])}t??=Wi(this.internalTrack.encryptionInfo),t&&(i=await Gi(this.internalTrack,t,i,null))}}let a=(r.presentationTimestamp-this.internalTrack.editListOffset)/this.internalTrack.timescale,o=r.duration/this.internalTrack.timescale,s=new I(i,r.isKeyFrame?`key`:`delta`,a,o,e,r.sampleSize);return this.packetToSampleIndex.set(s,e),s}async fetchPacketInFragment(e,t,r){if(t===-1)return null;let i=e.trackData.get(this.internalTrack.id).samples[t];n(i);let a;if(r.metadataOnly)a=ui;else{let t=this.internalTrack.demuxer.reader.requestSlice(i.byteOffset,i.byteSize);if(k(t)&&(t=await t),!t)return null;if(a=V(t,i.byteSize),this.internalTrack.encryptionInfo){let t=i.encryption??Wi(this.internalTrack.encryptionInfo);t&&(a=await Gi(this.internalTrack,t,a,e))}}let o=(i.presentationTimestamp-this.internalTrack.editListOffset)/this.internalTrack.timescale,s=i.duration/this.internalTrack.timescale,c=new I(a,i.isKeyFrame?`key`:`delta`,o,s,e.moofOffset+t,i.byteSize);return this.packetToFragmentLocation.set(c,{fragment:e,sampleIndex:t}),c}async performFragmentedLookup(e,t,r,i,a){let o=this.internalTrack.demuxer,s=null,c=null,l=-1;if(e){let{sampleIndex:n,correctSampleFound:r}=t(e);if(r)return this.fetchPacketInFragment(e,n,a);n!==-1&&(c=e,l=n)}let u=E(this.internalTrack.fragmentLookupTable,r,e=>e.timestamp),d=u===-1?null:this.internalTrack.fragmentLookupTable[u],f=E(this.internalTrack.fragmentPositionCache,r,e=>e.startTimestamp),p=f===-1?null:this.internalTrack.fragmentPositionCache[f],m=Math.max(d?.moofOffset??0,p?.moofOffset??0)||null,h;for(e?m===null||e.moofOffset>=m?(h=e.moofOffset+e.moofSize,s=e):h=m:h=m??0;;){if(s){let e=s.trackData.get(this.internalTrack.id);if(e&&e.startTimestamp>i)break}let e=o.reader.requestSliceRange(h,8,16);if(k(e)&&(e=await e),!e)break;let n=h,r=mi(e);if(!r)break;if(r.name===`moof`){s=await o.readFragment(n);let{sampleIndex:e,correctSampleFound:r}=t(s);if(r)return this.fetchPacketInFragment(s,e,a);e!==-1&&(c=s,l=e)}h=n+r.totalSize}if(d&&(!c||c.moofOffset<d.moofOffset)){let e=this.internalTrack.fragmentLookupTable[u-1];n(!e||e.timestamp<d.timestamp);let r=e?.timestamp??-1/0;return this.performFragmentedLookup(null,t,r,i,a)}return c?this.fetchPacketInFragment(c,l,a):null}},Ni=class extends Mi{constructor(e){super(e),this.decoderConfigPromise=null,this.internalTrack=e}getType(){return`video`}getCodec(){return this.internalTrack.info.codec}getCodedWidth(){return this.internalTrack.info.width}getCodedHeight(){return this.internalTrack.info.height}getSquarePixelWidth(){return this.internalTrack.info.squarePixelWidth}getSquarePixelHeight(){return this.internalTrack.info.squarePixelHeight}getTransformationMatrix(){return[...this.internalTrack.matrix]}async getColorSpace(){let e=await this.getDecoderConfig();return e?{primaries:e.colorSpace?.primaries,transfer:e.colorSpace?.transfer,matrix:e.colorSpace?.matrix,fullRange:e.colorSpace?.fullRange}:this.internalTrack.info.colorSpace}async canBeTransparent(){return this.internalTrack.info.codec===`prores`&&(this.internalTrack.info.proresFormat===`ap4h`||this.internalTrack.info.proresFormat===`ap4x`)}async getDecoderConfig(){return this.internalTrack.info.codec?this.decoderConfigPromise??=(async()=>{if(this.internalTrack.info.codec===`avc`&&!this.internalTrack.info.codecDescription){let e=await this.getFirstPacket({});this.internalTrack.info.avcCodecInfo=e&&fn(e.data)}else if(this.internalTrack.info.codec===`hevc`&&!this.internalTrack.info.codecDescription){let e=await this.getFirstPacket({});this.internalTrack.info.hevcCodecInfo=e&&Cn(e.data)}else if(this.internalTrack.info.codec===`vp9`&&(!this.internalTrack.info.vp9CodecInfo||!Ln(this.internalTrack.info.vp9CodecInfo))){let e=await this.getFirstPacket({}),t=e&&In(e.data);t&&(this.internalTrack.info.vp9CodecInfo={...this.internalTrack.info.vp9CodecInfo??t,videoFullRangeFlag:t.videoFullRangeFlag,colourPrimaries:t.colourPrimaries,transferCharacteristics:t.transferCharacteristics,matrixCoefficients:t.matrixCoefficients})}else if(this.internalTrack.info.codec===`av1`&&(!this.internalTrack.info.av1CodecInfo||!Bn(this.internalTrack.info.av1CodecInfo))){let e=await this.getFirstPacket({}),t=e&&zn(e.data);t&&(this.internalTrack.info.av1CodecInfo=t)}else if(this.internalTrack.info.codec===`prores`&&!this.internalTrack.info.proresCodecInfo){let e=await this.getFirstPacket({});this.internalTrack.info.proresCodecInfo=e&&Vn(e.data)}if(!ue(this.internalTrack.info.colorSpace)){let e=Pr(this.internalTrack.info);this.internalTrack.info.colorSpace.primaries??=e.primaries,this.internalTrack.info.colorSpace.transfer??=e.transfer,this.internalTrack.info.colorSpace.matrix??=e.matrix,this.internalTrack.info.colorSpace.fullRange??=e.fullRange}let e={codec:Nr(this.internalTrack.info),codedWidth:this.internalTrack.info.width,codedHeight:this.internalTrack.info.height,description:this.internalTrack.info.codecDescription??void 0,colorSpace:this.internalTrack.info.colorSpace};return(this.internalTrack.info.width!==this.internalTrack.info.squarePixelWidth||this.internalTrack.info.height!==this.internalTrack.info.squarePixelHeight)&&(e.displayAspectWidth=this.internalTrack.info.squarePixelWidth,e.displayAspectHeight=this.internalTrack.info.squarePixelHeight),e})():null}},Pi=class extends Mi{constructor(e){super(e),this.decoderConfigPromise=null,this.internalTrack=e}getType(){return`audio`}getCodec(){return this.internalTrack.info.codec}getNumberOfChannels(){return this.internalTrack.info.numberOfChannels}getSampleRate(){return this.internalTrack.info.sampleRate}async getDecoderConfig(){return this.internalTrack.info.codec?this.decoderConfigPromise??=(async()=>{if(this.internalTrack.info.codec===`dts`&&!this.internalTrack.info.dtsFormat){let e=await this.getFirstPacket({});this.internalTrack.info.dtsFormat=e&&hr(e.data)}return{codec:Ir(this.internalTrack.info),numberOfChannels:this.internalTrack.info.numberOfChannels,sampleRate:this.internalTrack.info.sampleRate,description:this.internalTrack.info.codecDescription??void 0}})():null}};const Fi=(e,t)=>{if(e.presentationTimestamps){let n=E(e.presentationTimestamps,t,e=>e.presentationTimestamp);return n===-1?-1:e.presentationTimestamps[n].sampleIndex}{let n=E(e.sampleTimingEntries,t,e=>e.startDecodeTimestamp);if(n===-1)return-1;let r=e.sampleTimingEntries[n];return r.startIndex+Math.min(Math.floor((t-r.startDecodeTimestamp)/r.delta),r.count-1)}},Ii=(e,t)=>{if(!e.keySampleIndices)return Fi(e,t);if(e.presentationTimestamps){let n=E(e.presentationTimestamps,t,e=>e.presentationTimestamp);if(n===-1)return-1;for(let t=n;t>=0;t--){let n=e.presentationTimestamps[t].sampleIndex;if(ye(e.keySampleIndices,n,e=>e)!==-1)return n}return-1}{let n=Fi(e,t),r=E(e.keySampleIndices,n,e=>e);return e.keySampleIndices[r]??-1}},Li=(e,t)=>{let r=E(e.sampleTimingEntries,t,e=>e.startIndex),i=e.sampleTimingEntries[r];if(!i||i.startIndex+i.count<=t)return null;let a=i.startDecodeTimestamp+(t-i.startIndex)*i.delta,o=E(e.sampleCompositionTimeOffsets,t,e=>e.startIndex),s=e.sampleCompositionTimeOffsets[o];s&&t-s.startIndex<s.count&&(a+=s.offset);let c=e.sampleSizes[Math.min(t,e.sampleSizes.length-1)],l=E(e.sampleToChunk,t,e=>e.startSampleIndex),u=e.sampleToChunk[l];n(u);let d=u.startChunkIndex+Math.floor((t-u.startSampleIndex)/u.samplesPerChunk),f=e.chunkOffsets[d],p=u.startSampleIndex+(d-u.startChunkIndex)*u.samplesPerChunk,m=0,h=f;if(e.sampleSizes.length===1)h+=c*(t-p),m+=c*u.samplesPerChunk;else for(let n=p;n<p+u.samplesPerChunk;n++){let r=e.sampleSizes[n];n<t&&(h+=r),m+=r}let g=i.delta;if(e.presentationTimestamps){let r=e.presentationTimestampIndexMap[t];n(r!==void 0),r<e.presentationTimestamps.length-1&&(g=e.presentationTimestamps[r+1].presentationTimestamp-a)}return{presentationTimestamp:a,duration:g,sampleOffset:h,sampleSize:c,chunkOffset:f,chunkSize:m,isKeyFrame:!e.keySampleIndices||ye(e.keySampleIndices,t,e=>e)!==-1}},Ri=(e,t)=>{if(!e.keySampleIndices)return t+1;let n=E(e.keySampleIndices,t,e=>e);return e.keySampleIndices[n+1]??-1},zi=(e,t)=>{e.startTimestamp+=t,e.endTimestamp+=t;for(let n of e.samples)n.presentationTimestamp+=t;for(let n of e.presentationTimestamps)n.presentationTimestamp+=t},Bi=e=>[hi(e),hi(e),gi(e),hi(e),hi(e),gi(e),hi(e),hi(e),gi(e)],Vi=e=>e.sampleSizes.length===0,Hi=e=>e.currentFragmentState?e.currentFragmentState.encryptionAuxInfo??={defaultSampleInfoSize:0,sampleSizes:null,sampleCount:0,offset:null,resolved:null}:e.encryptionAuxInfo??={defaultSampleInfoSize:0,sampleSizes:null,sampleCount:0,offset:null,resolved:null},Ui=async(e,t,r)=>{if(r.resolved)return r.resolved;if(r.offset===null||r.sampleCount===0)throw Error(`Incomplete saiz/saio info; cannot resolve encryption data.`);let i=0;if(r.defaultSampleInfoSize>0)i=r.defaultSampleInfoSize*r.sampleCount;else{n(r.sampleSizes);for(let e=0;e<r.sampleCount;e++)i+=r.sampleSizes[e]}let a=e.requestSlice(r.offset,i);if(k(a)&&(a=await a),!a)throw Error(`Failed to read auxiliary encryption info.`);let o=t.defaultPerSampleIvSize;n(o!==null);let s=[];for(let e=0;e<r.sampleCount;e++){let n=r.defaultSampleInfoSize>0?r.defaultSampleInfoSize:r.sampleSizes[e],i=new Uint8Array(16);o>0?i.set(V(a,o),0):i.set(t.defaultConstantIv,0);let c=null;if(n>o){let e=U(a);c=[];for(let t=0;t<e;t++){let e=U(a),t=W(a);c.push({clearLen:e,protectedLen:t})}}s.push({iv:i,subsamples:c})}return r.resolved=s,s},Wi=e=>e.defaultConstantIv?{iv:e.defaultConstantIv,subsamples:null}:null,Gi=async(e,t,r,i)=>{n(e.encryptionInfo);let a=e.encryptionInfo;n(a.defaultKid!==null);let o=a.defaultKid,s,c=e.demuxer.decryptionKeyCache.get(o);if(c)s=await c;else{if(!e.demuxer.input._formatOptions.isobmff?.resolveKeyId)throw Error(`Encrypted media samples encountered. To decrypt them, please provide a callback for InputOptions.formatOptions.isobmff.resolveKeyId.`);let t=(async()=>{let t=e.demuxer.psshBoxes;if(i){t=[...t,...i.psshBoxes].filter(e=>e.keyIds===null||e.keyIds.includes(o));for(let e=0;e<t.length-1;e++)for(let n=e+1;n<t.length;n++)pi(t[e],t[n])&&(t.splice(n,1),n--)}let n=await e.demuxer.input._formatOptions.isobmff.resolveKeyId({keyId:o,psshBoxes:t});if(!(typeof n==`string`&&n.length===32&&he.test(n)||n instanceof Uint8Array&&n.byteLength===16))throw TypeError(`resolveKeyId must return a 32-character hex string or a 16-byte Uint8Array containing the decryption key.`);return n instanceof Uint8Array?n:_e(n)})();e.demuxer.decryptionKeyCache.set(o,t),s=await t}return a.scheme===`cenc`||a.scheme===`cens`?Ki(s,a,t,r):qi(s,a,t,r)},Ki=async(e,t,r,i)=>{let a=new Uint8Array(16);a.set(r.iv,0);let o=await crypto.subtle.importKey(`raw`,e,{name:`AES-CTR`},!1,[`decrypt`]),s=async e=>{let t=await crypto.subtle.decrypt({name:`AES-CTR`,counter:a,length:64},o,e);return new Uint8Array(t)};if(!r.subsamples)return s(i);n(t.defaultCryptByteBlock!==null&&t.defaultSkipByteBlock!==null);let c=Ji(r.subsamples,t.defaultCryptByteBlock,t.defaultSkipByteBlock),l=0;for(let e of c)for(let t of e.perSubsample)l+=t.length;let u=new Uint8Array(l),d=0;for(let e of c)for(let t of e.perSubsample)u.set(i.subarray(t.offset,t.offset+t.length),d),d+=t.length;let f=await s(u),p=new Uint8Array(i),m=0;for(let e of c)for(let t of e.perSubsample)p.set(f.subarray(m,m+t.length),t.offset),m+=t.length;return p},qi=(e,t,r,i)=>{let a=new ki;a.init({key:e,iv:r.iv});let o=t.defaultCryptByteBlock,s=t.defaultSkipByteBlock;if(n(o!==null&&s!==null),!r.subsamples){let e=new Uint8Array(i),t=Math.floor(i.length/16);for(let n=0;n<t;n++){let t=n*16;a.in.set(i.subarray(t,t+16)),a.decrypt(),e.set(a.out,t)}return e}if(o===0&&s===0)throw Error(`cbcs with subsamples requires pattern encryption.`);let c=new Uint8Array(i),l=Ji(r.subsamples,o,s),u=new DataView(r.iv.buffer,r.iv.byteOffset,16);for(let e of l){a.iv[0]=u.getUint32(0,!1),a.iv[1]=u.getUint32(4,!1),a.iv[2]=u.getUint32(8,!1),a.iv[3]=u.getUint32(12,!1);for(let t of e.perSubsample){let e=t.length/16;for(let n=0;n<e;n++){let e=t.offset+n*16;a.in.set(i.subarray(e,e+16)),a.decrypt(),c.set(a.out,e)}}}return c},Ji=(e,t,n)=>{let r=[],i=t!==0||n!==0,a=0;for(let o of e){a+=o.clearLen;let e=[];if(!i)o.protectedLen>0&&e.push({offset:a,length:o.protectedLen}),a+=o.protectedLen;else{let r=o.protectedLen,i=a;for(;r>0&&!(r<16*t);){let a=16*t;e.push({offset:i,length:a}),i+=a,r-=a;let o=Math.min(16*n,r);i+=o,r-=o}a+=o.protectedLen}r.push({perSubsample:e})}return r};
121
+ var ji=class e extends li{constructor(e){super(e),this.moovSlice=null,this.currentTrack=null,this.tracks=[],this.metadataPromise=null,this.movieTimescale=-1,this.movieDurationInTimescale=-1,this.movieMatrix=o,this.isQuickTime=!1,this.metadataTags={},this.currentMetadataKeys=null,this.isFragmented=!1,this.fragmentTrackDefaults=[],this.psshBoxes=[],this.currentFragment=null,this.lastReadFragment=null,this.decryptionKeyCache=new Map,this.reader=e._reader}async getTrackBackings(){return await this.readMetadata(),this.tracks.map(e=>e.trackBacking)}async getMimeType(){await this.readMetadata();let e=await this.getTrackBackings(),t=await Promise.all(e.map(e=>e.getDecoderConfig().then(e=>e?.codec??null)));return di({isQuickTime:this.isQuickTime,hasVideo:this.tracks.some(e=>e.info?.type===`video`),hasAudio:this.tracks.some(e=>e.info?.type===`audio`),codecStrings:t.filter(Boolean)})}async getMetadataTags(){return await this.readMetadata(),this.metadataTags}readMetadata(){return this.metadataPromise??=(async()=>{let e=0,t=!1,r=!1;for(;;){let n=this.reader.requestSliceRange(e,8,16);if(k(n)&&(n=await n),!n)break;let i=e,a=mi(n);if(!a)break;if(a.name===`ftyp`||a.name===`styp`){let e=G(n,4);this.isQuickTime=e===`qt `}else if(a.name===`moov`){let e=this.reader.requestSlice(n.filePos,a.contentSize);if(k(e)&&(e=await e),!e)break;this.moovSlice=e,this.readContiguousBoxes(this.moovSlice);for(let e of this.tracks){let t=e.editListPreviousSegmentDurations/this.movieTimescale;e.editListOffset-=Math.round(t*e.timescale)}t=this.isFragmented&&this.reader.fileSize!==null&&this.reader.fileSize>i+a.totalSize,r=!0;break}else if(a.name===`moof`){if(!this.input._initInput)throw Error(`"moof" box encountered with no "moov" box present; this file is likely a Segment as described in ISO/IEC 14496-12 Section 8.16. A separate init file that contains a "moov" box is required to read this file, please provide it using InputOptions.initInput.`);await this.copyMetadataFromInitInput(this.input._initInput),t=!1,r=!0;break}e=i+a.totalSize}if(!r&&this.input._initInput&&await this.copyMetadataFromInitInput(this.input._initInput),t){n(this.reader.fileSize!==null);let e=this.reader.requestSlice(this.reader.fileSize-4,4);k(e)&&(e=await e),n(e);let t=W(e),r=this.reader.fileSize-t;if(r>=0&&r<=this.reader.fileSize-16){let e=this.reader.requestSliceRange(r,8,16);if(k(e)&&(e=await e),e){let t=mi(e);if(t&&t.name===`mfra`){let n=this.reader.requestSlice(e.filePos,t.contentSize);k(n)&&(n=await n),n&&this.readContiguousBoxes(n)}}}}})()}async copyMetadataFromInitInput(t){let r=await t._getDemuxer();if(r.constructor!==e)throw Error(`Init input must match the input's format.`);await r.readMetadata(),this.movieTimescale=r.movieTimescale,this.movieDurationInTimescale=r.movieDurationInTimescale,this.movieMatrix=r.movieMatrix,this.metadataTags=r.metadataTags,this.isFragmented=!0,this.fragmentTrackDefaults=r.fragmentTrackDefaults,this.psshBoxes=r.psshBoxes;for(let e of r.tracks){let t={id:e.id,demuxer:this,trackBacking:null,disposition:e.disposition,timescale:e.timescale,durationInMediaTimescale:e.durationInMediaTimescale,durationInMovieTimescale:e.durationInMovieTimescale,matrix:e.matrix,internalCodecId:e.internalCodecId,name:e.name,languageCode:e.languageCode,sampleTableByteOffset:null,sampleTable:null,fragmentLookupTable:[],currentFragmentState:null,fragmentPositionCache:[],editListPreviousSegmentDurations:e.editListPreviousSegmentDurations,editListOffset:e.editListOffset,encryptionInfo:e.encryptionInfo,encryptionAuxInfo:null,frmaCodecString:null,maxBitrate:e.maxBitrate,avgBitrate:e.avgBitrate,info:e.info};e.trackBacking&&(n(t.info),t.info.type===`video`&&t.info.width!==-1?(t.trackBacking=new Ni(t),this.tracks.push(t)):t.info.type===`audio`&&t.info.numberOfChannels!==-1&&(t.trackBacking=new Pi(t),this.tracks.push(t)))}}getSampleTableForTrack(e){if(e.sampleTable)return e.sampleTable;let t={sampleTimingEntries:[],sampleCompositionTimeOffsets:[],sampleSizes:[],keySampleIndices:null,chunkOffsets:[],sampleToChunk:[],presentationTimestamps:null,presentationTimestampIndexMap:null};if(e.sampleTable=t,e.sampleTableByteOffset===null)return t;n(this.moovSlice);let r=this.moovSlice.slice(e.sampleTableByteOffset);if(this.currentTrack=e,this.traverseBox(r),this.currentTrack=null,e.info?.type===`audio`&&e.info.codec&&P.includes(e.info.codec)&&t.sampleCompositionTimeOffsets.length===0){n(e.info?.type===`audio`);let r=Br(e.info.codec),i=[],a=[];for(let n=0;n<t.sampleToChunk.length;n++){let o=t.sampleToChunk[n],s=t.sampleToChunk[n+1],c=(s?s.startChunkIndex:t.chunkOffsets.length)-o.startChunkIndex;for(let n=0;n<c;n++){let s=o.startSampleIndex+n*o.samplesPerChunk,c=s+o.samplesPerChunk,l=E(t.sampleTimingEntries,s,e=>e.startIndex),u=t.sampleTimingEntries[l],d=E(t.sampleTimingEntries,c,e=>e.startIndex),f=t.sampleTimingEntries[d],p=u.startDecodeTimestamp+(s-u.startIndex)*u.delta,m=f.startDecodeTimestamp+(c-f.startIndex)*f.delta-p,g=h(i);g&&g.delta===m?g.count++:i.push({startIndex:o.startChunkIndex+n,startDecodeTimestamp:p,count:1,delta:m});let _=o.samplesPerChunk*r.sampleSize*e.info.numberOfChannels;a.push(_)}o.startSampleIndex=o.startChunkIndex,o.samplesPerChunk=1}t.sampleTimingEntries=i,t.sampleSizes=a}if(t.sampleCompositionTimeOffsets.length>0){t.presentationTimestamps=[];for(let e of t.sampleTimingEntries)for(let n=0;n<e.count;n++)t.presentationTimestamps.push({presentationTimestamp:e.startDecodeTimestamp+n*e.delta,sampleIndex:e.startIndex+n});for(let e of t.sampleCompositionTimeOffsets)for(let n=0;n<e.count;n++){let r=e.startIndex+n,i=t.presentationTimestamps[r];i&&(i.presentationTimestamp+=e.offset)}t.presentationTimestamps.sort((e,t)=>e.presentationTimestamp-t.presentationTimestamp),t.presentationTimestampIndexMap=Array(t.presentationTimestamps.length).fill(-1);for(let e=0;e<t.presentationTimestamps.length;e++)t.presentationTimestampIndexMap[t.presentationTimestamps[e].sampleIndex]=e}return t}async readFragment(e){if(this.lastReadFragment?.moofOffset===e)return this.lastReadFragment;let t=this.reader.requestSliceRange(e,8,16);k(t)&&(t=await t),n(t);let r=mi(t);n(r?.name===`moof`);let i=this.reader.requestSlice(e,r.totalSize);k(i)&&(i=await i),n(i),this.traverseBox(i);let a=this.lastReadFragment;n(a&&a.moofOffset===e);for(let[,e]of a.trackData){let t=e.track,{fragmentPositionCache:n}=t;if(!e.startTimestampIsFinal){let r=t.fragmentLookupTable.find(e=>e.moofOffset===a.moofOffset);if(r)zi(e,r.timestamp);else{let t=E(n,a.moofOffset-1,e=>e.moofOffset);if(t!==-1){let r=n[t];zi(e,r.endTimestamp)}}e.startTimestampIsFinal=!0}let r=E(n,e.startTimestamp,e=>e.startTimestamp);if((r===-1||n[r].moofOffset!==a.moofOffset)&&n.splice(r+1,0,{moofOffset:a.moofOffset,startTimestamp:e.startTimestamp,endTimestamp:e.endTimestamp}),e.encryptionAuxInfo&&t.encryptionInfo){let n=await Ui(this.reader,t.encryptionInfo,e.encryptionAuxInfo);for(let t=0;t<Math.min(e.samples.length,n.length);t++){let r=n[t];e.samples[t].encryption=r}}}return a}readContiguousBoxes(e){let t=e.filePos;for(;e.filePos-t<=e.length-8&&this.traverseBox(e););}*iterateContiguousBoxes(e){let t=e.filePos;for(;e.filePos-t<=e.length-8;){let t=e.filePos,n=mi(e);if(!n)break;yield{boxInfo:n,slice:e},e.filePos=t+n.totalSize}}traverseBox(e){let t=e.filePos,r=mi(e);if(!r)return!1;let i=e.filePos,a=t+r.totalSize;switch(r.name){case`mdia`:case`minf`:case`dinf`:case`mfra`:case`edts`:case`sinf`:case`schi`:this.readContiguousBoxes(e.slice(i,r.contentSize));break;case`mvhd`:{let t=H(e);e.skip(3),t===1?(e.skip(16),this.movieTimescale=W(e),this.movieDurationInTimescale=fu(e)):(e.skip(8),this.movieTimescale=W(e),this.movieDurationInTimescale=W(e)),e.skip(16),this.movieMatrix=Bi(e)}break;case`trak`:{let t={id:-1,demuxer:this,trackBacking:null,disposition:{...zt,primary:!1},info:null,timescale:-1,durationInMovieTimescale:-1,durationInMediaTimescale:-1,matrix:o,internalCodecId:null,name:null,languageCode:`und`,sampleTableByteOffset:-1,sampleTable:null,fragmentLookupTable:[],currentFragmentState:null,fragmentPositionCache:[],editListPreviousSegmentDurations:0,editListOffset:0,encryptionInfo:null,encryptionAuxInfo:null,frmaCodecString:null,maxBitrate:null,avgBitrate:null};this.currentTrack=t,this.readContiguousBoxes(e.slice(i,r.contentSize)),t.id!==-1&&t.timescale!==-1&&t.info!==null&&(t.info.type===`video`&&t.info.width!==-1?(t.trackBacking=new Ni(t),this.tracks.push(t)):t.info.type===`audio`&&t.info.numberOfChannels!==-1&&(t.trackBacking=new Pi(t),this.tracks.push(t))),this.currentTrack=null}break;case`tkhd`:{let t=this.currentTrack;if(!t)break;let n=H(e),r=!!(au(e)&1);if(t.disposition.default=r,n===0)e.skip(8),t.id=W(e),e.skip(4),t.durationInMovieTimescale=W(e);else if(n===1)e.skip(16),t.id=W(e),e.skip(4),t.durationInMovieTimescale=fu(e);else throw Error(`Incorrect track header version ${n}.`);e.skip(16);let i=Bi(e);t.matrix=p(i,this.movieMatrix)}break;case`elst`:{let t=this.currentTrack;if(!t)break;let n=H(e);e.skip(3);let r=!1,i=0,a=W(e);for(let o=0;o<a;o++){let a=n===1?fu(e):W(e),o=n===1?pu(e):lu(e),s=hi(e);if(r){A._warn(`Unsupported edit list: multiple edits are not currently supported. Only using first edit.`);break}if(o===-1){i+=a;continue}if(s!==1){A._warn(`Unsupported edit list entry: media rate must be 1.`);break}t.editListPreviousSegmentDurations=i,t.editListOffset=o,r=!0}}break;case`mdhd`:{let t=this.currentTrack;if(!t)break;let n=H(e);e.skip(3),n===0?(e.skip(8),t.timescale=W(e),t.durationInMediaTimescale=W(e)):n===1&&(e.skip(16),t.timescale=W(e),t.durationInMediaTimescale=fu(e));let r=U(e);if(r>0){t.languageCode=``;for(let e=0;e<3;e++)t.languageCode=String.fromCharCode(96+(r&31))+t.languageCode,r>>=5;Ue(t.languageCode)||(t.languageCode=`und`)}}break;case`hdlr`:{let t=this.currentTrack;if(!t)break;e.skip(8);let n=G(e,4);n===`vide`?t.info={type:`video`,width:-1,height:-1,squarePixelWidth:-1,squarePixelHeight:-1,codec:null,codecDescription:null,colorSpace:{...fe},avcType:null,avcCodecInfo:null,hevcCodecInfo:null,vp9CodecInfo:null,av1CodecInfo:null,proresCodecInfo:null,proresFormat:null}:n===`soun`&&(t.info={type:`audio`,numberOfChannels:-1,sampleRate:-1,codec:null,codecDescription:null,aacCodecInfo:null,dtsFormat:null,pcmLittleEndian:!1,pcmSampleSize:null})}break;case`stbl`:{let n=this.currentTrack;if(!n)break;n.sampleTableByteOffset=t,this.readContiguousBoxes(e.slice(i,r.contentSize))}break;case`stsd`:{let t=this.currentTrack;if(!t||t.info===null||t.sampleTable)break;let n=H(e);e.skip(3);let r=W(e);for(let i=0;i<r;i++){let r=e.filePos,i=mi(e);if(!i)break;t.internalCodecId=i.name;let a=i.name.toLowerCase();if(t.info.type===`video`){e.skip(24),t.info.width=U(e),t.info.height=U(e),t.info.squarePixelWidth=t.info.width,t.info.squarePixelHeight=t.info.height,e.skip(50),t.frmaCodecString=null,this.readContiguousBoxes(e.slice(e.filePos,r+i.totalSize-e.filePos));let n=a===`encv`?t.frmaCodecString:a;t.frmaCodecString=null,n===`avc1`||n===`avc3`?(t.info.codec=`avc`,t.info.avcType=n===`avc1`?1:3):n===`hvc1`||n===`hev1`?t.info.codec=`hevc`:n===`vp08`?t.info.codec=`vp8`:n===`vp09`?t.info.codec=`vp9`:n===`av01`?t.info.codec=`av1`:Dr.includes(a)?(t.info.codec=`prores`,t.info.proresFormat=a):n===null?A._warn(`Unknown encrypted video codec due to missing frma box.`):A._warn(`Unsupported video codec (sample entry type '${i.name}').`)}else{e.skip(8);let o=U(e);e.skip(6);let s=U(e),c=U(e);e.skip(4);let l=W(e)/65536,u=null;n===0&&o>0&&(o===1?(e.skip(4),c=8*W(e),e.skip(8)):o===2&&(e.skip(4),l=gu(e),s=W(e),e.skip(4),c=W(e),u=W(e),e.skip(8))),t.info.numberOfChannels=s,t.info.sampleRate=l,t.frmaCodecString=null,this.readContiguousBoxes(e.slice(e.filePos,r+i.totalSize-e.filePos));let d=a===`enca`?t.frmaCodecString:a;if(t.frmaCodecString=null,d!==`mp4a`){if(d===`opus`)t.info.codec=`opus`,t.info.sampleRate=Rr;else if(d===`flac`)t.info.codec=`flac`;else if(d===`ulaw`)t.info.codec=`ulaw`;else if(d===`alaw`)t.info.codec=`alaw`;else if(d===`ac-3`)t.info.codec=`ac3`;else if(d===`ec-3`)t.info.codec=`eac3`;else if(Or.includes(d))t.info.codec=`dts`,t.info.dtsFormat=d;else if(d===`twos`)c===8?t.info.codec=`pcm-s8`:c===16?t.info.codec=t.info.pcmLittleEndian?`pcm-s16`:`pcm-s16be`:(A._warn(`Unsupported sample size ${c} for codec 'twos'.`),t.info.codec=null);else if(d===`sowt`)c===8?t.info.codec=`pcm-s8`:c===16?t.info.codec=`pcm-s16`:(A._warn(`Unsupported sample size ${c} for codec 'sowt'.`),t.info.codec=null);else if(d===`raw `)t.info.codec=`pcm-u8`;else if(d===`in24`)t.info.codec=t.info.pcmLittleEndian?`pcm-s24`:`pcm-s24be`;else if(d===`in32`)t.info.codec=t.info.pcmLittleEndian?`pcm-s32`:`pcm-s32be`;else if(d===`fl32`)t.info.codec=t.info.pcmLittleEndian?`pcm-f32`:`pcm-f32be`;else if(d===`fl64`)t.info.codec=t.info.pcmLittleEndian?`pcm-f64`:`pcm-f64be`;else if(d===`ipcm`){let e=t.info.pcmSampleSize;t.info.pcmLittleEndian?e===16?t.info.codec=`pcm-s16`:e===24?t.info.codec=`pcm-s24`:e===32?t.info.codec=`pcm-s32`:(A._warn(`Invalid ipcm sample size ${e}.`),t.info.codec=null):e===16?t.info.codec=`pcm-s16be`:e===24?t.info.codec=`pcm-s24be`:e===32?t.info.codec=`pcm-s32be`:(A._warn(`Invalid ipcm sample size ${e}.`),t.info.codec=null)}else if(d===`fpcm`){let e=t.info.pcmSampleSize;t.info.pcmLittleEndian?e===32?t.info.codec=`pcm-f32`:e===64?t.info.codec=`pcm-f64`:(A._warn(`Invalid fpcm sample size ${e}.`),t.info.codec=null):e===32?t.info.codec=`pcm-f32be`:e===64?t.info.codec=`pcm-f64be`:(A._warn(`Invalid fpcm sample size ${e}.`),t.info.codec=null)}else if(d===`lpcm`&&u!==null){let e=c+7>>3,n=!!(u&1),r=!!(u&2),i=u&4?-1:0;c>0&&c<=64&&(n?c===32&&(t.info.codec=r?`pcm-f32be`:`pcm-f32`):i&1<<e-1?e===1?t.info.codec=`pcm-s8`:e===2?t.info.codec=r?`pcm-s16be`:`pcm-s16`:e===3?t.info.codec=r?`pcm-s24be`:`pcm-s24`:e===4&&(t.info.codec=r?`pcm-s32be`:`pcm-s32`):e===1&&(t.info.codec=`pcm-u8`)),t.info.codec===null&&A._warn(`Unsupported PCM format.`)}else d===null?A._warn(`Unknown encrypted audio codec due to missing frma box.`):A._warn(`Unsupported audio codec (sample entry type '${i.name}').`)}}e.filePos=r+i.totalSize}}break;case`frma`:{let t=this.currentTrack;if(!t)break;t.frmaCodecString=G(e,4).toLowerCase()}break;case`schm`:{let t=this.currentTrack;if(!t)break;e.skip(4);let n=G(e,4);n===`cenc`||n===`cens`||n===`cbcs`?t.encryptionInfo={scheme:n,defaultKid:null,defaultIsProtected:null,defaultPerSampleIvSize:null,defaultConstantIv:null,defaultCryptByteBlock:null,defaultSkipByteBlock:null}:A._warn(`Unsupported encryption scheme '${n}'.`)}break;case`tenc`:{let t=this.currentTrack;if(!t||!t.encryptionInfo)break;let n=H(e);e.skip(3),e.skip(1);let r=H(e);if(n>0?(t.encryptionInfo.defaultCryptByteBlock=r>>4,t.encryptionInfo.defaultSkipByteBlock=r&15):(t.encryptionInfo.defaultCryptByteBlock=0,t.encryptionInfo.defaultSkipByteBlock=0),t.encryptionInfo.defaultIsProtected=H(e)!==0,t.encryptionInfo.defaultPerSampleIvSize=H(e),t.encryptionInfo.defaultKid=ge(V(e,16)),t.encryptionInfo.defaultIsProtected&&t.encryptionInfo.defaultPerSampleIvSize===0){let n=H(e),r=new Uint8Array(16);r.set(V(e,n),0),t.encryptionInfo.defaultConstantIv=r}}break;case`avcC`:{let t=this.currentTrack;if(!t||(n(t.info),r.contentSize===0))break;t.info.codecDescription=V(e,r.contentSize)}break;case`hvcC`:{let t=this.currentTrack;if(!t||(n(t.info),r.contentSize===0))break;t.info.codecDescription=V(e,r.contentSize)}break;case`vpcC`:{let t=this.currentTrack;if(!t)break;n(t.info?.type===`video`),e.skip(4);let r=H(e),i=H(e),a=H(e),o=a>>4,s=a>>1&7,c=a&1,l=H(e),u=H(e),d=H(e);t.info.vp9CodecInfo={profile:r,level:i,bitDepth:o,chromaSubsampling:s,videoFullRangeFlag:c,colourPrimaries:l,transferCharacteristics:u,matrixCoefficients:d}}break;case`av1C`:{let t=this.currentTrack;if(!t)break;n(t.info?.type===`video`),e.skip(1);let i=H(e),a=i>>5,o=i&31,s=H(e),c=s>>7,l=s>>6&1,u=s>>5&1,d=s>>4&1,f=s>>3&1,p=s>>2&1,m=s&3,h=a===2&&l?u?12:10:l?10:8;e.skip(1);let g=V(e,r.contentSize-4),_=zn(g);t.info.av1CodecInfo={profile:a,level:o,tier:c,bitDepth:h,monochrome:d,chromaSubsamplingX:f,chromaSubsamplingY:p,chromaSamplePosition:m,videoFullRangeFlag:_?.videoFullRangeFlag??0,colourPrimaries:_?.colourPrimaries??2,transferCharacteristics:_?.transferCharacteristics??2,matrixCoefficients:_?.matrixCoefficients??2}}break;case`colr`:{let t=this.currentTrack;if(!t)break;n(t.info?.type===`video`);let r=G(e,4);if(r!==`nclx`&&r!==`nclc`)break;let i=U(e),a=U(e),o=U(e),s;r===`nclx`&&(s=!!(H(e)&128)),t.info.colorSpace={primaries:ae[i],transfer:se[a],matrix:le[o],fullRange:s}}break;case`pasp`:{let t=this.currentTrack;if(!t)break;n(t.info?.type===`video`);let r=W(e),i=W(e);r>0&&i>0&&(r>i?t.info.squarePixelWidth=Math.round(t.info.width*r/i):t.info.squarePixelHeight=Math.round(t.info.height*i/r))}break;case`btrt`:{let t=this.currentTrack;if(!t)break;e.skip(4);let n=W(e),r=W(e);t.maxBitrate=n>0?n:null,t.avgBitrate=r>0?r:null}break;case`wave`:this.readContiguousBoxes(e.slice(i,r.contentSize));break;case`esds`:{let t=this.currentTrack;if(!t||t.info?.type!==`audio`)break;e.skip(4),n(H(e)===3),_i(e),e.skip(2);let r=H(e),i=!!(r&128),a=!!(r&64),o=!!(r&32);if(i&&e.skip(2),a){let t=H(e);e.skip(t)}o&&e.skip(2),n(H(e)===4);let s=_i(e),c=e.filePos,l=H(e);if(l===64||l===103?(t.info.codec=`aac`,t.info.aacCodecInfo={isMpeg2:l===103,objectType:null}):l===105||l===107?t.info.codec=`mp3`:l===221?t.info.codec=`vorbis`:l===169?t.info.codec=`dts`:A._warn(`Unsupported audio codec (objectTypeIndication ${l}) - discarding track.`),e.skip(12),s>e.filePos-c){n(H(e)===5);let r=_i(e);if(t.info.codecDescription=V(e,r),t.info.codec===`aac`){let e=Ut(t.info.codecDescription);e.outputNumberOfChannels!==null&&(t.info.numberOfChannels=e.outputNumberOfChannels),e.outputSampleRate!==null&&(t.info.sampleRate=e.outputSampleRate)}}}break;case`enda`:{let t=this.currentTrack;if(!t)break;n(t.info?.type===`audio`),t.info.pcmLittleEndian=!!(U(e)&255)}break;case`pcmC`:{let t=this.currentTrack;if(!t)break;n(t.info?.type===`audio`),e.skip(4);let r=H(e);t.info.pcmLittleEndian=!!(r&1),t.info.pcmSampleSize=H(e)}break;case`dOps`:{let t=this.currentTrack;if(!t)break;n(t.info?.type===`audio`),e.skip(1);let r=H(e),i=U(e),a=W(e),o=ou(e),s=H(e),c;c=s===0?new Uint8Array:V(e,2+r);let l=new Uint8Array(19+c.byteLength),u=new DataView(l.buffer);u.setUint32(0,1332770163,!1),u.setUint32(4,1214603620,!1),u.setUint8(8,1),u.setUint8(9,r),u.setUint16(10,i,!0),u.setUint32(12,a,!0),u.setInt16(16,o,!0),u.setUint8(18,s),l.set(c,19),t.info.codecDescription=l,t.info.numberOfChannels=r}break;case`dfLa`:{let t=this.currentTrack;if(!t)break;n(t.info?.type===`audio`),e.skip(4);let r=e.filePos;for(;e.filePos<a;){let n=H(e),r=au(e);if((n&127)===qn.STREAMINFO){e.skip(10);let n=W(e),r=n>>>12,i=(n>>9&7)+1;t.info.sampleRate=r,t.info.numberOfChannels=i,e.skip(20)}else e.skip(r);if(n&128)break}let i=e.filePos;e.filePos=r;let o=V(e,i-r),s=new Uint8Array(4+o.byteLength);new DataView(s.buffer).setUint32(0,1716281667,!1),s.set(o,4),t.info.codecDescription=s}break;case`dac3`:{let t=this.currentTrack;if(!t)break;n(t.info?.type===`audio`);let r=new j(V(e,3)),i=r.readBits(2);r.skipBits(8);let a=r.readBits(3),o=r.readBits(1);i<3&&(t.info.sampleRate=Qt[i]),t.info.numberOfChannels=Xn[a]+o}break;case`dec3`:{let t=this.currentTrack;if(!t)break;n(t.info?.type===`audio`);let i=V(e,r.contentSize),a=rr(i);if(!a){A._warn(`Invalid dec3 box contents, ignoring.`);break}let o=ir(a);o!==null&&(t.info.sampleRate=o),t.info.numberOfChannels=ar(a)}break;case`ddts`:{let t=this.currentTrack;if(!t)break;n(t.info?.type===`audio`);let i=V(e,Math.min(r.contentSize,20)),a=vr(i);if(!a){A._warn(`Invalid ddts box contents, ignoring.`);break}t.info.sampleRate=a.sampleRate,a.numberOfChannels!==null&&(t.info.numberOfChannels=a.numberOfChannels)}break;case`stts`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4);let n=W(e),r=0,i=0;for(let a=0;a<n;a++){let n=W(e),a=W(e);t.sampleTable.sampleTimingEntries.push({startIndex:r,startDecodeTimestamp:i,count:n,delta:a}),r+=n,i+=n*a}}break;case`ctts`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4);let n=W(e),r=0;for(let i=0;i<n;i++){let n=W(e),i=lu(e);t.sampleTable.sampleCompositionTimeOffsets.push({startIndex:r,count:n,offset:i}),r+=n}}break;case`stsz`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4);let n=W(e),r=W(e);if(n===0)for(let n=0;n<r;n++){let n=W(e);t.sampleTable.sampleSizes.push(n)}else t.sampleTable.sampleSizes.push(n)}break;case`stz2`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4),e.skip(3);let n=H(e),r=W(e),i=new j(V(e,Math.ceil(r*n/8)));for(let e=0;e<r;e++){let e=i.readBits(n);t.sampleTable.sampleSizes.push(e)}}break;case`stss`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4),t.sampleTable.keySampleIndices=[];let n=W(e);for(let r=0;r<n;r++){let n=W(e)-1;t.sampleTable.keySampleIndices.push(n)}t.sampleTable.keySampleIndices[0]!==0&&t.sampleTable.keySampleIndices.unshift(0)}break;case`stsc`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4);let n=W(e);for(let r=0;r<n;r++){let n=W(e)-1,r=W(e),i=W(e);t.sampleTable.sampleToChunk.push({startSampleIndex:-1,startChunkIndex:n,samplesPerChunk:r,sampleDescriptionIndex:i})}let r=0;for(let e=0;e<t.sampleTable.sampleToChunk.length;e++)if(t.sampleTable.sampleToChunk[e].startSampleIndex=r,e<t.sampleTable.sampleToChunk.length-1){let n=t.sampleTable.sampleToChunk[e+1].startChunkIndex-t.sampleTable.sampleToChunk[e].startChunkIndex;r+=n*t.sampleTable.sampleToChunk[e].samplesPerChunk}}break;case`stco`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4);let n=W(e);for(let r=0;r<n;r++){let n=W(e);t.sampleTable.chunkOffsets.push(n)}}break;case`co64`:{let t=this.currentTrack;if(!t||!t.sampleTable)break;e.skip(4);let n=W(e);for(let r=0;r<n;r++){let n=fu(e);t.sampleTable.chunkOffsets.push(n)}}break;case`mvex`:this.isFragmented=!0,this.readContiguousBoxes(e.slice(i,r.contentSize));break;case`mehd`:{let t=H(e);e.skip(3);let n=t===1?fu(e):W(e);this.movieDurationInTimescale=n}break;case`trex`:{e.skip(4);let t=W(e),n=W(e),r=W(e),i=W(e),a=W(e);this.fragmentTrackDefaults.push({trackId:t,defaultSampleDescriptionIndex:n,defaultSampleDuration:r,defaultSampleSize:i,defaultSampleFlags:a})}break;case`tfra`:{let t=H(e);e.skip(3);let n=W(e),r=this.tracks.find(e=>e.id===n);if(!r)break;let i=W(e),a=(i&48)>>4,o=(i&12)>>2,s=i&3,c=[H,U,au,W],l=c[a],u=c[o],d=c[s],f=W(e);for(let n=0;n<f;n++){let n=t===1?fu(e):W(e),i=t===1?fu(e):W(e);l(e),u(e),d(e),r.fragmentLookupTable.push({timestamp:n,moofOffset:i})}r.fragmentLookupTable.sort((e,t)=>e.timestamp-t.timestamp);for(let e=0;e<r.fragmentLookupTable.length-1;e++){let t=r.fragmentLookupTable[e],n=r.fragmentLookupTable[e+1];t.timestamp===n.timestamp&&(r.fragmentLookupTable.splice(e+1,1),e--)}}break;case`moof`:this.currentFragment={moofOffset:t,moofSize:r.totalSize,implicitBaseDataOffset:t,trackData:new Map,psshBoxes:[]},this.readContiguousBoxes(e.slice(i,r.contentSize)),this.lastReadFragment=this.currentFragment,this.currentFragment=null;break;case`traf`:if(n(this.currentFragment),this.readContiguousBoxes(e.slice(i,r.contentSize)),this.currentTrack){let e=this.currentFragment.trackData.get(this.currentTrack.id);cond:if(e){if(e.samples.length===0){this.currentFragment.trackData.delete(this.currentTrack.id);break cond}e.presentationTimestamps=e.samples.map((e,t)=>({presentationTimestamp:e.presentationTimestamp,sampleIndex:t})).sort((e,t)=>e.presentationTimestamp-t.presentationTimestamp);for(let t=0;t<e.presentationTimestamps.length;t++){let n=e.presentationTimestamps[t],r=e.samples[n.sampleIndex];e.firstKeyFrameTimestamp===null&&r.isKeyFrame&&(e.firstKeyFrameTimestamp=r.presentationTimestamp),t<e.presentationTimestamps.length-1&&(r.duration=e.presentationTimestamps[t+1].presentationTimestamp-n.presentationTimestamp)}let t=e.samples[e.presentationTimestamps[0].sampleIndex],r=e.samples[h(e.presentationTimestamps).sampleIndex];e.startTimestamp=t.presentationTimestamp,e.endTimestamp=r.presentationTimestamp+r.duration;let{currentFragmentState:i}=this.currentTrack;n(i),i.startTimestamp!==null&&(zi(e,i.startTimestamp),e.startTimestampIsFinal=!0),i.encryptionAuxInfo&&!e.samples[0].encryption&&(e.encryptionAuxInfo=i.encryptionAuxInfo)}this.currentTrack.currentFragmentState=null,this.currentTrack=null}break;case`pssh`:{if(this.input._formatOptions.isobmff?._suppressPsshParsing)break;let t=fi(V(e,r.contentSize));this.currentFragment?this.currentFragment.psshBoxes.push(t):this.currentTrack||this.psshBoxes.push(t)}break;case`tfhd`:{n(this.currentFragment),e.skip(1);let t=au(e),r=!!(t&1),i=!!(t&2),a=!!(t&8),o=!!(t&16),s=!!(t&32),c=!!(t&65536),l=!!(t&131072),u=W(e),d=this.tracks.find(e=>e.id===u);if(!d)break;let f=this.fragmentTrackDefaults.find(e=>e.trackId===u);this.currentTrack=d,d.currentFragmentState={baseDataOffset:this.currentFragment.implicitBaseDataOffset,sampleDescriptionIndex:f?.defaultSampleDescriptionIndex??null,defaultSampleDuration:f?.defaultSampleDuration??null,defaultSampleSize:f?.defaultSampleSize??null,defaultSampleFlags:f?.defaultSampleFlags??null,startTimestamp:null,encryptionAuxInfo:null},r?d.currentFragmentState.baseDataOffset=fu(e):l&&(d.currentFragmentState.baseDataOffset=this.currentFragment.moofOffset),i&&(d.currentFragmentState.sampleDescriptionIndex=W(e)),a&&(d.currentFragmentState.defaultSampleDuration=W(e)),o&&(d.currentFragmentState.defaultSampleSize=W(e)),s&&(d.currentFragmentState.defaultSampleFlags=W(e)),c&&(d.currentFragmentState.defaultSampleDuration=0)}break;case`tfdt`:{let t=this.currentTrack;if(!t)break;n(t.currentFragmentState);let r=H(e);e.skip(3);let i=r===0?W(e):fu(e);t.currentFragmentState.startTimestamp=i}break;case`trun`:{let t=this.currentTrack;if(!t)break;n(this.currentFragment),n(t.currentFragmentState);let r=H(e),i=au(e),a=!!(i&1),o=!!(i&4),s=!!(i&256),c=!!(i&512),l=!!(i&1024),u=!!(i&2048),d=W(e),f=null;a&&(f=lu(e));let p=null;o&&(p=W(e));let m;this.currentFragment.trackData.has(t.id)?(m=this.currentFragment.trackData.get(t.id),f!==null&&(m.currentOffset=t.currentFragmentState.baseDataOffset+f)):(m={track:t,currentTimestamp:0,currentOffset:t.currentFragmentState.baseDataOffset+(f??0),startTimestamp:0,endTimestamp:0,firstKeyFrameTimestamp:null,samples:[],presentationTimestamps:[],startTimestampIsFinal:!1,encryptionAuxInfo:null},this.currentFragment.trackData.set(t.id,m));for(let i=0;i<d;i++){let a;s?a=W(e):(n(t.currentFragmentState.defaultSampleDuration!==null),a=t.currentFragmentState.defaultSampleDuration);let o;c?o=W(e):(n(t.currentFragmentState.defaultSampleSize!==null),o=t.currentFragmentState.defaultSampleSize);let d;l?d=W(e):(n(t.currentFragmentState.defaultSampleFlags!==null),d=t.currentFragmentState.defaultSampleFlags),i===0&&p!==null&&(d=p);let f=0;u&&(f=r===0?W(e):lu(e));let h=!(d&65536);m.samples.push({presentationTimestamp:m.currentTimestamp+f,duration:a,byteOffset:m.currentOffset,byteSize:o,isKeyFrame:h,encryption:null}),m.currentOffset+=o,m.currentTimestamp+=a}this.currentFragment.implicitBaseDataOffset=m.currentOffset}break;case`saiz`:{let t=this.currentTrack;if(!t||!t.encryptionInfo)break;if(e.skip(1),au(e)&1){let n=G(e,4),r=W(e);if(n!==t.encryptionInfo.scheme||r!==0)break}let n=H(e),r=W(e),i=null;n===0&&r>0&&(i=V(e,r));let a=Hi(t);a.defaultSampleInfoSize=n,a.sampleSizes=i,a.sampleCount=r}break;case`saio`:{let t=this.currentTrack;if(!t||!t.encryptionInfo)break;let n=H(e);if(au(e)&1){let n=G(e,4),r=W(e);if(n!==t.encryptionInfo.scheme||r!==0)break}let r=W(e);if(r===0)break;r>1&&A._warn(`Multiple saio entries are not supported; using the first offset only.`);let i=n===0?W(e):Number(fu(e));this.currentFragment&&(i+=this.currentFragment.moofOffset);let a=Hi(t);a.offset=i}break;case`senc`:{let t=this.currentTrack;if(!t||!t.encryptionInfo)break;n(this.currentFragment);let r=this.currentFragment.trackData.get(t.id);if(!r)break;e.skip(1);let i=!!(au(e)&2),a=W(e),o=t.encryptionInfo.defaultPerSampleIvSize;n(o!==null);for(let n=0;n<Math.min(a,r.samples.length);n++){let a=new Uint8Array(16);o>0?a.set(V(e,o),0):a.set(t.encryptionInfo.defaultConstantIv,0);let s=null;if(i){let t=U(e);s=[];for(let n=0;n<t;n++){let t=U(e),n=W(e);s.push({clearLen:t,protectedLen:n})}}let c=r.samples[n];c.encryption={iv:a,subsamples:s}}}break;case`udta`:{let t=this.iterateContiguousBoxes(e.slice(i,r.contentSize));for(let{boxInfo:e,slice:n}of t){if(e.name!==`meta`&&!this.currentTrack){let t=n.filePos;this.metadataTags.raw??={},e.name[0]===`©`?this.metadataTags.raw[e.name]??=vi(n):this.metadataTags.raw[e.name]??=V(n,e.contentSize),n.filePos=t}switch(e.name){case`meta`:n.skip(-e.headerSize),this.traverseBox(n);break;case`©nam`:case`name`:this.currentTrack?this.currentTrack.name=w.decode(V(n,e.contentSize)):this.metadataTags.title??=vi(n);break;case`©des`:this.currentTrack||(this.metadataTags.description??=vi(n));break;case`©ART`:this.currentTrack||(this.metadataTags.artist??=vi(n));break;case`©alb`:this.currentTrack||(this.metadataTags.album??=vi(n));break;case`albr`:this.currentTrack||(this.metadataTags.albumArtist??=vi(n));break;case`©gen`:this.currentTrack||(this.metadataTags.genre??=vi(n));break;case`©day`:if(!this.currentTrack){let e=new Date(vi(n));Number.isNaN(e.getTime())||(this.metadataTags.date??=e)}break;case`©cmt`:this.currentTrack||(this.metadataTags.comment??=vi(n));break;case`©lyr`:this.currentTrack||(this.metadataTags.lyrics??=vi(n))}}}break;case`meta`:{if(this.currentTrack)break;let t=W(e)!==0;this.currentMetadataKeys=new Map,t?this.readContiguousBoxes(e.slice(i,r.contentSize)):this.readContiguousBoxes(e.slice(i+4,r.contentSize-4)),this.currentMetadataKeys=null}break;case`keys`:{if(!this.currentMetadataKeys)break;e.skip(4);let t=W(e);for(let n=0;n<t;n++){let t=W(e);e.skip(4);let r=w.decode(V(e,t-8));this.currentMetadataKeys.set(n+1,r)}}break;case`ilst`:{if(!this.currentMetadataKeys)break;let t=this.iterateContiguousBoxes(e.slice(i,r.contentSize));for(let{boxInfo:e,slice:n}of t){let t=e.name,r=(t.charCodeAt(0)<<24)+(t.charCodeAt(1)<<16)+(t.charCodeAt(2)<<8)+t.charCodeAt(3);this.currentMetadataKeys.has(r)&&(t=this.currentMetadataKeys.get(r));let i=yi(n);switch(this.metadataTags.raw??={},this.metadataTags.raw[t]??=i,t){case`©nam`:case`titl`:case`com.apple.quicktime.title`:case`title`:typeof i==`string`&&(this.metadataTags.title??=i);break;case`©des`:case`desc`:case`dscp`:case`com.apple.quicktime.description`:case`description`:typeof i==`string`&&(this.metadataTags.description??=i);break;case`©ART`:case`com.apple.quicktime.artist`:case`artist`:typeof i==`string`&&(this.metadataTags.artist??=i);break;case`©alb`:case`albm`:case`com.apple.quicktime.album`:case`album`:typeof i==`string`&&(this.metadataTags.album??=i);break;case`aART`:case`album_artist`:typeof i==`string`&&(this.metadataTags.albumArtist??=i);break;case`©cmt`:case`com.apple.quicktime.comment`:case`comment`:typeof i==`string`&&(this.metadataTags.comment??=i);break;case`©gen`:case`gnre`:case`com.apple.quicktime.genre`:case`genre`:typeof i==`string`&&(this.metadataTags.genre??=i);break;case`©lyr`:case`lyrics`:typeof i==`string`&&(this.metadataTags.lyrics??=i);break;case`©day`:case`rldt`:case`com.apple.quicktime.creationdate`:case`date`:if(typeof i==`string`){let e=new Date(i);Number.isNaN(e.getTime())||(this.metadataTags.date??=e)}break;case`tmpo`:if(i instanceof Uint8Array&&i.length>=2){let e=C(i).getInt16(0,!1);e>0&&(this.metadataTags.beatsPerMinute??=e)}break;case`covr`:case`com.apple.quicktime.artwork`:i instanceof Ft?(this.metadataTags.images??=[],this.metadataTags.images.push({data:i.data,kind:`coverFront`,mimeType:i.mimeType})):i instanceof Uint8Array&&(this.metadataTags.images??=[],this.metadataTags.images.push({data:i,kind:`coverFront`,mimeType:`image/*`}));break;case`track`:if(typeof i==`string`){let e=i.split(`/`),t=Number.parseInt(e[0],10),n=e[1]&&Number.parseInt(e[1],10);Number.isInteger(t)&&t>0&&(this.metadataTags.trackNumber??=t),n&&Number.isInteger(n)&&n>0&&(this.metadataTags.tracksTotal??=n)}break;case`trkn`:if(i instanceof Uint8Array&&i.length>=6){let e=C(i),t=e.getUint16(2,!1),n=e.getUint16(4,!1);t>0&&(this.metadataTags.trackNumber??=t),n>0&&(this.metadataTags.tracksTotal??=n)}break;case`disc`:case`disk`:if(i instanceof Uint8Array&&i.length>=6){let e=C(i),t=e.getUint16(2,!1),n=e.getUint16(4,!1);t>0&&(this.metadataTags.discNumber??=t),n>0&&(this.metadataTags.discsTotal??=n)}}}}}return e.filePos=a,!0}},Mi=class{constructor(e){this.internalTrack=e,this.packetToSampleIndex=new WeakMap,this.packetToFragmentLocation=new WeakMap}getId(){return this.internalTrack.id}getNumber(){let e=this.internalTrack.demuxer,t=this.internalTrack.trackBacking.getType(),n=0;for(let r of e.tracks)if(r.trackBacking.getType()===t&&n++,r===this.internalTrack)break;return n}getCodec(){throw Error(`Not implemented on base class.`)}getInternalCodecId(){return this.internalTrack.internalCodecId}getName(){return this.internalTrack.name}getLanguageCode(){return this.internalTrack.languageCode}getTimeResolution(){return this.internalTrack.timescale}isRelativeToUnixEpoch(){return!1}getUnixTimeForTimestamp(){return null}getDisposition(){return this.internalTrack.disposition}getPairingMask(){return 1n}getBitrate(){return this.internalTrack.maxBitrate}getAverageBitrate(){return this.internalTrack.avgBitrate}async getDurationFromMetadata(){let e=this.internalTrack;return e.durationInMediaTimescale<=0?null:(n(e.trackBacking),((await e.trackBacking.getFirstPacket({metadataOnly:!0}))?.timestamp??0)+e.durationInMediaTimescale/e.timescale)}async getLiveRefreshInterval(){return null}async getFirstPacket(e){let t=await this.fetchPacketForSampleIndex(0,e);return t||!this.internalTrack.demuxer.isFragmented?t:this.performFragmentedLookup(null,e=>e.trackData.get(this.internalTrack.id)?{sampleIndex:0,correctSampleFound:!0}:{sampleIndex:-1,correctSampleFound:!1},-1/0,1/0,e)}mapTimestampIntoTimescale(e){return Fe(e*this.internalTrack.timescale)+this.internalTrack.editListOffset}async getPacket(e,t){let n=this.mapTimestampIntoTimescale(e),r=this.internalTrack.demuxer.getSampleTableForTrack(this.internalTrack),i=Fi(r,n),a=await this.fetchPacketForSampleIndex(i,t);return!Vi(r)||!this.internalTrack.demuxer.isFragmented?a:this.performFragmentedLookup(null,e=>{let t=e.trackData.get(this.internalTrack.id);if(!t)return{sampleIndex:-1,correctSampleFound:!1};let r=E(t.presentationTimestamps,n,e=>e.presentationTimestamp);return{sampleIndex:r===-1?-1:t.presentationTimestamps[r].sampleIndex,correctSampleFound:r!==-1&&n<t.endTimestamp}},n,n,t)}async getNextPacket(e,t){let n=this.packetToSampleIndex.get(e);if(n!==void 0)return this.fetchPacketForSampleIndex(n+1,t);let r=this.packetToFragmentLocation.get(e);if(r===void 0)throw Error(`Packet was not created from this track.`);return this.performFragmentedLookup(r.fragment,e=>{if(e===r.fragment){let t=e.trackData.get(this.internalTrack.id);if(r.sampleIndex+1<t.samples.length)return{sampleIndex:r.sampleIndex+1,correctSampleFound:!0}}else if(e.trackData.get(this.internalTrack.id))return{sampleIndex:0,correctSampleFound:!0};return{sampleIndex:-1,correctSampleFound:!1}},-1/0,1/0,t)}async getKeyPacket(e,t){let n=this.mapTimestampIntoTimescale(e),r=this.internalTrack.demuxer.getSampleTableForTrack(this.internalTrack),i=Ii(r,n),a=await this.fetchPacketForSampleIndex(i,t);return!Vi(r)||!this.internalTrack.demuxer.isFragmented?a:this.performFragmentedLookup(null,e=>{let t=e.trackData.get(this.internalTrack.id);if(!t)return{sampleIndex:-1,correctSampleFound:!1};let r=Ce(t.presentationTimestamps,e=>t.samples[e.sampleIndex].isKeyFrame&&e.presentationTimestamp<=n);return{sampleIndex:r===-1?-1:t.presentationTimestamps[r].sampleIndex,correctSampleFound:r!==-1&&n<t.endTimestamp}},n,n,t)}async getNextKeyPacket(e,t){let r=this.packetToSampleIndex.get(e);if(r!==void 0){let e=this.internalTrack.demuxer.getSampleTableForTrack(this.internalTrack),n=Ri(e,r);return this.fetchPacketForSampleIndex(n,t)}let i=this.packetToFragmentLocation.get(e);if(i===void 0)throw Error(`Packet was not created from this track.`);return this.performFragmentedLookup(i.fragment,e=>{if(e===i.fragment){let t=e.trackData.get(this.internalTrack.id).samples.findIndex((e,t)=>e.isKeyFrame&&t>i.sampleIndex);if(t!==-1)return{sampleIndex:t,correctSampleFound:!0}}else{let t=e.trackData.get(this.internalTrack.id);if(t&&t.firstKeyFrameTimestamp!==null){let e=t.samples.findIndex(e=>e.isKeyFrame);return n(e!==-1),{sampleIndex:e,correctSampleFound:!0}}}return{sampleIndex:-1,correctSampleFound:!1}},-1/0,1/0,t)}async fetchPacketForSampleIndex(e,t){if(e===-1)return null;let n=this.internalTrack.demuxer.getSampleTableForTrack(this.internalTrack),r=Li(n,e);if(!r)return null;let i;if(t.metadataOnly)i=ui;else{let t=this.internalTrack.demuxer.reader.requestSlice(r.sampleOffset,r.sampleSize);if(k(t)&&(t=await t),!t)return null;if(i=V(t,r.sampleSize),this.internalTrack.encryptionInfo){let t=null;if(this.internalTrack.encryptionAuxInfo){let n=await Ui(this.internalTrack.demuxer.reader,this.internalTrack.encryptionInfo,this.internalTrack.encryptionAuxInfo);e<n.length&&(t=n[e])}t??=Wi(this.internalTrack.encryptionInfo),t&&(i=await Gi(this.internalTrack,t,i,null))}}let a=(r.presentationTimestamp-this.internalTrack.editListOffset)/this.internalTrack.timescale,o=r.duration/this.internalTrack.timescale,s=new I(i,r.isKeyFrame?`key`:`delta`,a,o,e,r.sampleSize);return this.packetToSampleIndex.set(s,e),s}async fetchPacketInFragment(e,t,r){if(t===-1)return null;let i=e.trackData.get(this.internalTrack.id).samples[t];n(i);let a;if(r.metadataOnly)a=ui;else{let t=this.internalTrack.demuxer.reader.requestSlice(i.byteOffset,i.byteSize);if(k(t)&&(t=await t),!t)return null;if(a=V(t,i.byteSize),this.internalTrack.encryptionInfo){let t=i.encryption??Wi(this.internalTrack.encryptionInfo);t&&(a=await Gi(this.internalTrack,t,a,e))}}let o=(i.presentationTimestamp-this.internalTrack.editListOffset)/this.internalTrack.timescale,s=i.duration/this.internalTrack.timescale,c=new I(a,i.isKeyFrame?`key`:`delta`,o,s,e.moofOffset+t,i.byteSize);return this.packetToFragmentLocation.set(c,{fragment:e,sampleIndex:t}),c}async performFragmentedLookup(e,t,r,i,a){let o=this.internalTrack.demuxer,s=null,c=null,l=-1;if(e){let{sampleIndex:n,correctSampleFound:r}=t(e);if(r)return this.fetchPacketInFragment(e,n,a);n!==-1&&(c=e,l=n)}let u=E(this.internalTrack.fragmentLookupTable,r,e=>e.timestamp),d=u===-1?null:this.internalTrack.fragmentLookupTable[u],f=E(this.internalTrack.fragmentPositionCache,r,e=>e.startTimestamp),p=f===-1?null:this.internalTrack.fragmentPositionCache[f],m=Math.max(d?.moofOffset??0,p?.moofOffset??0)||null,h;for(e?m===null||e.moofOffset>=m?(h=e.moofOffset+e.moofSize,s=e):h=m:h=m??0;;){if(s){let e=s.trackData.get(this.internalTrack.id);if(e&&e.startTimestamp>i)break}let e=o.reader.requestSliceRange(h,8,16);if(k(e)&&(e=await e),!e)break;let n=h,r=mi(e);if(!r)break;if(r.name===`moof`){s=await o.readFragment(n);let{sampleIndex:e,correctSampleFound:r}=t(s);if(r)return this.fetchPacketInFragment(s,e,a);e!==-1&&(c=s,l=e)}h=n+r.totalSize}if(d&&(!c||c.moofOffset<d.moofOffset)){let e=this.internalTrack.fragmentLookupTable[u-1];n(!e||e.timestamp<d.timestamp);let r=e?.timestamp??-1/0;return this.performFragmentedLookup(null,t,r,i,a)}return c?this.fetchPacketInFragment(c,l,a):null}},Ni=class extends Mi{constructor(e){super(e),this.decoderConfigPromise=null}getType(){return`video`}getCodec(){return this.internalTrack.info.codec}getCodedWidth(){return this.internalTrack.info.width}getCodedHeight(){return this.internalTrack.info.height}getSquarePixelWidth(){return this.internalTrack.info.squarePixelWidth}getSquarePixelHeight(){return this.internalTrack.info.squarePixelHeight}getTransformationMatrix(){return[...this.internalTrack.matrix]}async getColorSpace(){let e=await this.getDecoderConfig();return e?{primaries:e.colorSpace?.primaries,transfer:e.colorSpace?.transfer,matrix:e.colorSpace?.matrix,fullRange:e.colorSpace?.fullRange}:this.internalTrack.info.colorSpace}async canBeTransparent(){return this.internalTrack.info.codec===`prores`&&(this.internalTrack.info.proresFormat===`ap4h`||this.internalTrack.info.proresFormat===`ap4x`)}async getDecoderConfig(){return this.internalTrack.info.codec?this.decoderConfigPromise??=(async()=>{if(this.internalTrack.info.codec===`avc`&&!this.internalTrack.info.codecDescription){let e=await this.getFirstPacket({});this.internalTrack.info.avcCodecInfo=e&&fn(e.data)}else if(this.internalTrack.info.codec===`hevc`&&!this.internalTrack.info.codecDescription){let e=await this.getFirstPacket({});this.internalTrack.info.hevcCodecInfo=e&&Cn(e.data)}else if(this.internalTrack.info.codec===`vp9`&&(!this.internalTrack.info.vp9CodecInfo||!Ln(this.internalTrack.info.vp9CodecInfo))){let e=await this.getFirstPacket({}),t=e&&In(e.data);t&&(this.internalTrack.info.vp9CodecInfo={...this.internalTrack.info.vp9CodecInfo??t,videoFullRangeFlag:t.videoFullRangeFlag,colourPrimaries:t.colourPrimaries,transferCharacteristics:t.transferCharacteristics,matrixCoefficients:t.matrixCoefficients})}else if(this.internalTrack.info.codec===`av1`&&(!this.internalTrack.info.av1CodecInfo||!Bn(this.internalTrack.info.av1CodecInfo))){let e=await this.getFirstPacket({}),t=e&&zn(e.data);t&&(this.internalTrack.info.av1CodecInfo=t)}else if(this.internalTrack.info.codec===`prores`&&!this.internalTrack.info.proresCodecInfo){let e=await this.getFirstPacket({});this.internalTrack.info.proresCodecInfo=e&&Vn(e.data)}if(!ue(this.internalTrack.info.colorSpace)){let e=Pr(this.internalTrack.info);this.internalTrack.info.colorSpace.primaries??=e.primaries,this.internalTrack.info.colorSpace.transfer??=e.transfer,this.internalTrack.info.colorSpace.matrix??=e.matrix,this.internalTrack.info.colorSpace.fullRange??=e.fullRange}let e={codec:Nr(this.internalTrack.info),codedWidth:this.internalTrack.info.width,codedHeight:this.internalTrack.info.height,description:this.internalTrack.info.codecDescription??void 0,colorSpace:this.internalTrack.info.colorSpace};return(this.internalTrack.info.width!==this.internalTrack.info.squarePixelWidth||this.internalTrack.info.height!==this.internalTrack.info.squarePixelHeight)&&(e.displayAspectWidth=this.internalTrack.info.squarePixelWidth,e.displayAspectHeight=this.internalTrack.info.squarePixelHeight),e})():null}},Pi=class extends Mi{constructor(e){super(e),this.decoderConfigPromise=null}getType(){return`audio`}getCodec(){return this.internalTrack.info.codec}getNumberOfChannels(){return this.internalTrack.info.numberOfChannels}getSampleRate(){return this.internalTrack.info.sampleRate}async getDecoderConfig(){return this.internalTrack.info.codec?this.decoderConfigPromise??=(async()=>{if(this.internalTrack.info.codec===`dts`&&!this.internalTrack.info.dtsFormat){let e=await this.getFirstPacket({});this.internalTrack.info.dtsFormat=e&&hr(e.data)}return{codec:Ir(this.internalTrack.info),numberOfChannels:this.internalTrack.info.numberOfChannels,sampleRate:this.internalTrack.info.sampleRate,description:this.internalTrack.info.codecDescription??void 0}})():null}};const Fi=(e,t)=>{if(e.presentationTimestamps){let n=E(e.presentationTimestamps,t,e=>e.presentationTimestamp);return n===-1?-1:e.presentationTimestamps[n].sampleIndex}{let n=E(e.sampleTimingEntries,t,e=>e.startDecodeTimestamp);if(n===-1)return-1;let r=e.sampleTimingEntries[n];return r.startIndex+Math.min(Math.floor((t-r.startDecodeTimestamp)/r.delta),r.count-1)}},Ii=(e,t)=>{if(!e.keySampleIndices)return Fi(e,t);if(e.presentationTimestamps){let n=E(e.presentationTimestamps,t,e=>e.presentationTimestamp);if(n===-1)return-1;for(let t=n;t>=0;t--){let n=e.presentationTimestamps[t].sampleIndex;if(ye(e.keySampleIndices,n,e=>e)!==-1)return n}return-1}{let n=Fi(e,t),r=E(e.keySampleIndices,n,e=>e);return e.keySampleIndices[r]??-1}},Li=(e,t)=>{let r=E(e.sampleTimingEntries,t,e=>e.startIndex),i=e.sampleTimingEntries[r];if(!i||i.startIndex+i.count<=t)return null;let a=i.startDecodeTimestamp+(t-i.startIndex)*i.delta,o=E(e.sampleCompositionTimeOffsets,t,e=>e.startIndex),s=e.sampleCompositionTimeOffsets[o];s&&t-s.startIndex<s.count&&(a+=s.offset);let c=e.sampleSizes[Math.min(t,e.sampleSizes.length-1)],l=E(e.sampleToChunk,t,e=>e.startSampleIndex),u=e.sampleToChunk[l];n(u);let d=u.startChunkIndex+Math.floor((t-u.startSampleIndex)/u.samplesPerChunk),f=e.chunkOffsets[d],p=u.startSampleIndex+(d-u.startChunkIndex)*u.samplesPerChunk,m=0,h=f;if(e.sampleSizes.length===1)h+=c*(t-p),m+=c*u.samplesPerChunk;else for(let n=p;n<p+u.samplesPerChunk;n++){let r=e.sampleSizes[n];n<t&&(h+=r),m+=r}let g=i.delta;if(e.presentationTimestamps){let r=e.presentationTimestampIndexMap[t];n(r!==void 0),r<e.presentationTimestamps.length-1&&(g=e.presentationTimestamps[r+1].presentationTimestamp-a)}return{presentationTimestamp:a,duration:g,sampleOffset:h,sampleSize:c,chunkOffset:f,chunkSize:m,isKeyFrame:!e.keySampleIndices||ye(e.keySampleIndices,t,e=>e)!==-1}},Ri=(e,t)=>{if(!e.keySampleIndices)return t+1;let n=E(e.keySampleIndices,t,e=>e);return e.keySampleIndices[n+1]??-1},zi=(e,t)=>{e.startTimestamp+=t,e.endTimestamp+=t;for(let n of e.samples)n.presentationTimestamp+=t;for(let n of e.presentationTimestamps)n.presentationTimestamp+=t},Bi=e=>[hi(e),hi(e),gi(e),hi(e),hi(e),gi(e),hi(e),hi(e),gi(e)],Vi=e=>e.sampleSizes.length===0,Hi=e=>e.currentFragmentState?e.currentFragmentState.encryptionAuxInfo??={defaultSampleInfoSize:0,sampleSizes:null,sampleCount:0,offset:null,resolved:null}:e.encryptionAuxInfo??={defaultSampleInfoSize:0,sampleSizes:null,sampleCount:0,offset:null,resolved:null},Ui=async(e,t,r)=>{if(r.resolved)return r.resolved;if(r.offset===null||r.sampleCount===0)throw Error(`Incomplete saiz/saio info; cannot resolve encryption data.`);let i=0;if(r.defaultSampleInfoSize>0)i=r.defaultSampleInfoSize*r.sampleCount;else{n(r.sampleSizes);for(let e=0;e<r.sampleCount;e++)i+=r.sampleSizes[e]}let a=e.requestSlice(r.offset,i);if(k(a)&&(a=await a),!a)throw Error(`Failed to read auxiliary encryption info.`);let o=t.defaultPerSampleIvSize;n(o!==null);let s=[];for(let e=0;e<r.sampleCount;e++){let n=r.defaultSampleInfoSize>0?r.defaultSampleInfoSize:r.sampleSizes[e],i=new Uint8Array(16);o>0?i.set(V(a,o),0):i.set(t.defaultConstantIv,0);let c=null;if(n>o){let e=U(a);c=[];for(let t=0;t<e;t++){let e=U(a),t=W(a);c.push({clearLen:e,protectedLen:t})}}s.push({iv:i,subsamples:c})}return r.resolved=s,s},Wi=e=>e.defaultConstantIv?{iv:e.defaultConstantIv,subsamples:null}:null,Gi=async(e,t,r,i)=>{n(e.encryptionInfo);let a=e.encryptionInfo;n(a.defaultKid!==null);let o=a.defaultKid,s,c=e.demuxer.decryptionKeyCache.get(o);if(c)s=await c;else{if(!e.demuxer.input._formatOptions.isobmff?.resolveKeyId)throw Error(`Encrypted media samples encountered. To decrypt them, please provide a callback for InputOptions.formatOptions.isobmff.resolveKeyId.`);let t=(async()=>{let t=e.demuxer.psshBoxes;if(i){t=[...t,...i.psshBoxes].filter(e=>e.keyIds===null||e.keyIds.includes(o));for(let e=0;e<t.length-1;e++)for(let n=e+1;n<t.length;n++)pi(t[e],t[n])&&(t.splice(n,1),n--)}let n=await e.demuxer.input._formatOptions.isobmff.resolveKeyId({keyId:o,psshBoxes:t});if(!(typeof n==`string`&&n.length===32&&he.test(n)||n instanceof Uint8Array&&n.byteLength===16))throw TypeError(`resolveKeyId must return a 32-character hex string or a 16-byte Uint8Array containing the decryption key.`);return n instanceof Uint8Array?n:_e(n)})();e.demuxer.decryptionKeyCache.set(o,t),s=await t}return a.scheme===`cenc`||a.scheme===`cens`?Ki(s,a,t,r):qi(s,a,t,r)},Ki=async(e,t,r,i)=>{let a=new Uint8Array(16);a.set(r.iv,0);let o=await crypto.subtle.importKey(`raw`,e,{name:`AES-CTR`},!1,[`decrypt`]),s=async e=>{let t=await crypto.subtle.decrypt({name:`AES-CTR`,counter:a,length:64},o,e);return new Uint8Array(t)};if(!r.subsamples)return s(i);n(t.defaultCryptByteBlock!==null&&t.defaultSkipByteBlock!==null);let c=Ji(r.subsamples,t.defaultCryptByteBlock,t.defaultSkipByteBlock),l=0;for(let e of c)for(let t of e.perSubsample)l+=t.length;let u=new Uint8Array(l),d=0;for(let e of c)for(let t of e.perSubsample)u.set(i.subarray(t.offset,t.offset+t.length),d),d+=t.length;let f=await s(u),p=new Uint8Array(i),m=0;for(let e of c)for(let t of e.perSubsample)p.set(f.subarray(m,m+t.length),t.offset),m+=t.length;return p},qi=(e,t,r,i)=>{let a=new ki;a.init({key:e,iv:r.iv});let o=t.defaultCryptByteBlock,s=t.defaultSkipByteBlock;if(n(o!==null&&s!==null),!r.subsamples){let e=new Uint8Array(i),t=Math.floor(i.length/16);for(let n=0;n<t;n++){let t=n*16;a.in.set(i.subarray(t,t+16)),a.decrypt(),e.set(a.out,t)}return e}if(o===0&&s===0)throw Error(`cbcs with subsamples requires pattern encryption.`);let c=new Uint8Array(i),l=Ji(r.subsamples,o,s),u=new DataView(r.iv.buffer,r.iv.byteOffset,16);for(let e of l){a.iv[0]=u.getUint32(0,!1),a.iv[1]=u.getUint32(4,!1),a.iv[2]=u.getUint32(8,!1),a.iv[3]=u.getUint32(12,!1);for(let t of e.perSubsample){let e=t.length/16;for(let n=0;n<e;n++){let e=t.offset+n*16;a.in.set(i.subarray(e,e+16)),a.decrypt(),c.set(a.out,e)}}}return c},Ji=(e,t,n)=>{let r=[],i=t!==0||n!==0,a=0;for(let o of e){a+=o.clearLen;let e=[];if(!i)o.protectedLen>0&&e.push({offset:a,length:o.protectedLen}),a+=o.protectedLen;else{let r=o.protectedLen,i=a;for(;r>0&&!(r<16*t);){let a=16*t;e.push({offset:i,length:a}),i+=a,r-=a;let o=Math.min(16*n,r);i+=o,r-=o}a+=o.protectedLen}r.push({perSubsample:e})}return r};
122
122
  /*!
123
123
  * Copyright (c) 2026-present, Vanilagy and contributors
124
124
  *
@@ -142,7 +142,7 @@ const ba=e=>{let t=(e.hasVideo?`video/`:e.hasAudio?`audio/`:`application/`)+(e.i
142
142
  * License, v. 2.0. If a copy of the MPL was not distributed with this
143
143
  * file, You can obtain one at https://mozilla.org/MPL/2.0/.
144
144
  */
145
- var xa;(function(e){e[e.None=0]=`None`,e[e.Xiph=1]=`Xiph`,e[e.FixedSize=2]=`FixedSize`,e[e.Ebml=3]=`Ebml`})(xa||={});var Sa;(function(e){e[e.Block=1]=`Block`,e[e.Private=2]=`Private`,e[e.Next=4]=`Next`})(Sa||={});var Ca;(function(e){e[e.Zlib=0]=`Zlib`,e[e.Bzlib=1]=`Bzlib`,e[e.lzo1x=2]=`lzo1x`,e[e.HeaderStripping=3]=`HeaderStripping`})(Ca||={});const wa=[{id:L.SeekHead,flag:`seekHeadSeen`},{id:L.Info,flag:`infoSeen`},{id:L.Tracks,flag:`tracksSeen`},{id:L.Cues,flag:`cuesSeen`}],Ta=10*2**20;var Ea=class extends li{constructor(e){super(e),this.readMetadataPromise=null,this.segments=[],this.currentSegment=null,this.currentTrack=null,this.currentCluster=null,this.currentBlock=null,this.currentBlockAdditional=null,this.currentCueTime=null,this.currentDecodingInstruction=null,this.currentTagTargetIsMovie=!0,this.currentSimpleTagName=null,this.currentAttachedFile=null,this.isWebM=!1,this.reader=e._reader}async getTrackBackings(){return await this.readMetadata(),this.segments.flatMap(e=>e.tracks.map(e=>e.trackBacking))}async getMimeType(){await this.readMetadata();let e=await this.getTrackBackings(),t=await Promise.all(e.map(e=>e.getDecoderConfig().then(e=>e?.codec??null)));return ba({isWebM:this.isWebM,hasVideo:this.segments.some(e=>e.tracks.some(e=>e.info?.type===`video`)),hasAudio:this.segments.some(e=>e.tracks.some(e=>e.info?.type===`audio`)),codecStrings:t.filter(Boolean)})}async getMetadataTags(){await this.readMetadata();for(let e of this.segments)e.metadataTagsCollected||=(this.reader.fileSize!==null&&await this.loadSegmentMetadata(e),!0);let e={};for(let t of this.segments)e={...e,...t.metadataTags};return e}readMetadata(){return this.readMetadataPromise??=(async()=>{let e=0;for(;;){let t=this.reader.requestSliceRange(e,2,16);if(k(t)&&(t=await t),!t)break;let n=fa(t);if(!n)break;let r=n.id,i=n.size,a=t.filePos;if(r===L.EBML){ya(i);let e=this.reader.requestSlice(a,i);if(k(e)&&(e=await e),!e)break;this.readContiguousElements(e)}else if(r===L.Segment){if(await this.readSegment(a,i),i===void 0||this.reader.fileSize===null)break}else if(r===L.Cluster){if(this.reader.fileSize===null)break;i===void 0&&(i=(await ga(this.reader,a,ta,this.reader.fileSize)).pos-a);let e=h(this.segments);e&&(e.elementEndPos=a+i)}ya(i),e=a+i}})()}async readSegment(e,t){this.currentSegment={seekHeadSeen:!1,infoSeen:!1,tracksSeen:!1,cuesSeen:!1,tagsSeen:!1,attachmentsSeen:!1,timestampScale:-1,timestampFactor:-1,duration:-1,seekEntries:[],tracks:[],cuePoints:[],dataStartPos:e,elementEndPos:t===void 0?null:e+t,clusterSeekStartPos:e,lastReadCluster:null,metadataTags:{},metadataTagsCollected:!1},this.segments.push(this.currentSegment);let n=e;for(;this.currentSegment.elementEndPos===null||n<this.currentSegment.elementEndPos;){let e=this.reader.requestSliceRange(n,2,16);if(k(e)&&(e=await e),!e)break;let t=n,r=fa(e);if(!r||!ea.includes(r.id)&&r.id!==L.Void){let e=await _a(this.reader,t,ea,Math.min(this.currentSegment.elementEndPos??1/0,t+Ta));if(e){n=e;continue}break}let{id:i,size:a}=r,o=e.filePos,s=wa.findIndex(e=>e.id===i);if(s!==-1){let e=wa[s].flag;this.currentSegment[e]=!0,ya(a);let t=this.reader.requestSlice(o,a);k(t)&&(t=await t),t&&this.readContiguousElements(t)}else if(i===L.Tags||i===L.Attachments){i===L.Tags?this.currentSegment.tagsSeen=!0:this.currentSegment.attachmentsSeen=!0,ya(a);let e=this.reader.requestSlice(o,a);k(e)&&(e=await e),e&&this.readContiguousElements(e)}else if(i===L.Cluster){this.currentSegment.clusterSeekStartPos=t;break}if(a===void 0)break;n=o+a}if(this.currentSegment.seekEntries.sort((e,t)=>e.segmentPosition-t.segmentPosition),this.reader.fileSize!==null)for(let t of this.currentSegment.seekEntries){let n=wa.find(e=>e.id===t.id);if(!n||this.currentSegment[n.flag])continue;let r=this.reader.requestSliceRange(e+t.segmentPosition,2,16);if(k(r)&&(r=await r),!r)continue;let i=fa(r);if(!i)continue;let{id:a,size:o}=i;if(a!==n.id)continue;ya(o),this.currentSegment[n.flag]=!0;let s=this.reader.requestSlice(r.filePos,o);k(s)&&(s=await s),s&&this.readContiguousElements(s)}this.currentSegment.timestampScale===-1&&(this.currentSegment.timestampScale=1e6,this.currentSegment.timestampFactor=1e3);for(let e of this.currentSegment.tracks)e.defaultDurationNs!==null&&(e.defaultDuration=this.currentSegment.timestampFactor*e.defaultDurationNs/1e9);let r=new Map(this.currentSegment.tracks.map(e=>[e.id,e]));for(let e of this.currentSegment.cuePoints){let t=r.get(e.trackId);t&&t.cuePoints.push(e)}for(let e of this.currentSegment.tracks){e.cuePoints.sort((e,t)=>e.time-t.time);for(let t=0;t<e.cuePoints.length-1;t++){let n=e.cuePoints[t],r=e.cuePoints[t+1];n.time===r.time&&(e.cuePoints.splice(t+1,1),t--)}}let i=null,a=-1/0;for(let e of this.currentSegment.tracks)e.cuePoints.length>a&&(a=e.cuePoints.length,i=e);for(let e of this.currentSegment.tracks)e.cuePoints.length===0&&(e.cuePoints=i.cuePoints);this.currentSegment=null}async readCluster(e,t){if(t.lastReadCluster?.elementStartPos===e)return t.lastReadCluster;let r=this.reader.requestSliceRange(e,2,16);k(r)&&(r=await r),n(r);let i=e,a=fa(r);n(a);let o=a.id;n(o===L.Cluster);let s=a.size,c=r.filePos;s===void 0&&(s=(await ga(this.reader,c,ta,t.elementEndPos)).pos-c);let l=this.reader.requestSlice(c,s);k(l)&&(l=await l);let u={segment:t,elementStartPos:i,elementEndPos:c+s,dataStartPos:c,timestamp:-1,trackData:new Map};this.currentCluster=u,l&&(u.elementEndPos=this.readContiguousElements(l,ta));for(let[,e]of u.trackData){let t=e.track;n(e.blocks.length>0);let r=!1;for(let t=0;t<e.blocks.length;t++){let n=e.blocks[t];n.timestamp+=u.timestamp,r||=n.lacing!==xa.None}e.presentationTimestamps=e.blocks.map((e,t)=>({timestamp:e.timestamp,blockIndex:t})).sort((e,t)=>e.timestamp-t.timestamp);for(let n=0;n<e.presentationTimestamps.length;n++){let r=e.presentationTimestamps[n],i=e.blocks[r.blockIndex];e.firstKeyFrameTimestamp===null&&i.isKeyFrame&&(e.firstKeyFrameTimestamp=i.timestamp),n<e.presentationTimestamps.length-1?i.duration=e.presentationTimestamps[n+1].timestamp-i.timestamp:i.duration===0&&t.defaultDuration!=null&&i.lacing===xa.None&&(i.duration=t.defaultDuration)}r&&(this.expandLacedBlocks(e.blocks,t),e.presentationTimestamps=e.blocks.map((e,t)=>({timestamp:e.timestamp,blockIndex:t})).sort((e,t)=>e.timestamp-t.timestamp));let a=e.blocks[e.presentationTimestamps[0].blockIndex],o=e.blocks[h(e.presentationTimestamps).blockIndex];e.startTimestamp=a.timestamp,e.endTimestamp=o.timestamp+o.duration;let s=E(t.clusterPositionCache,e.startTimestamp,e=>e.startTimestamp);(s===-1||t.clusterPositionCache[s].elementStartPos!==i)&&t.clusterPositionCache.splice(s+1,0,{elementStartPos:u.elementStartPos,startTimestamp:e.startTimestamp})}return t.lastReadCluster=u,u}getTrackDataInCluster(e,t){let n=e.trackData.get(t);if(!n){let r=e.segment.tracks.find(e=>e.id===t);if(!r)return null;n={track:r,startTimestamp:0,endTimestamp:0,firstKeyFrameTimestamp:null,blocks:[],presentationTimestamps:[]},e.trackData.set(t,n)}return n}expandLacedBlocks(e,t){for(let r=0;r<e.length;r++){let i=e[r];if(i.lacing===xa.None)continue;i.decoded||=(i.data=this.decodeBlockData(t,i.data),!0);let a=nu.tempFromBytes(i.data),o=[],s=H(a)+1;switch(i.lacing){case xa.Xiph:{let e=0;for(let t=0;t<s-1;t++){let t=0;for(;a.bufferPos<a.length;){let n=H(a);if(t+=n,n<255){o.push(t),e+=t;break}}}o.push(a.length-(a.bufferPos+e))}break;case xa.FixedSize:{let e=a.length-1,t=Math.floor(e/s);for(let e=0;e<s;e++)o.push(t)}break;case xa.Ebml:{let e=ca(a);n(e!==null);let t=e;o.push(t);let r=t;for(let e=1;e<s-1;e++){let e=a.bufferPos,i=ca(a);n(i!==null);let s=i-((1<<(a.bufferPos-e)*7-1)-1);t+=s,o.push(t),r+=t}o.push(a.length-(a.bufferPos+r))}break;default:n(!1)}n(o.length===s),e.splice(r,1);let c=i.duration||s*(t.defaultDuration??0);for(let t=0;t<s;t++){let n=o[t],l=V(a,n),u=i.timestamp+c*t/s,d=c/s;e.splice(r+t,0,{timestamp:u,duration:d,isKeyFrame:i.isKeyFrame,data:l,lacing:xa.None,decoded:!0,postProcessed:!1,mainAdditional:i.mainAdditional})}r+=s,r--}}async loadSegmentMetadata(e){for(let t of e.seekEntries){if(!(t.id===L.Tags&&!e.tagsSeen)&&!(t.id===L.Attachments&&!e.attachmentsSeen))continue;let r=this.reader.requestSliceRange(e.dataStartPos+t.segmentPosition,2,16);if(k(r)&&(r=await r),!r)continue;let i=fa(r);if(!i||i.id!==t.id)continue;let{size:a}=i;ya(a),n(!this.currentSegment),this.currentSegment=e;let o=this.reader.requestSlice(r.filePos,a);k(o)&&(o=await o),o&&this.readContiguousElements(o),this.currentSegment=null,t.id===L.Tags?e.tagsSeen=!0:t.id===L.Attachments&&(e.attachmentsSeen=!0)}}readContiguousElements(e,t){for(;e.remainingLength>=2;){let n=e.filePos;if(!this.traverseElement(e,t))return n}return e.filePos}traverseElement(e,t){let i=fa(e);if(!i||t&&t.includes(i.id))return!1;let{id:o,size:s}=i,c=e.filePos;switch(ya(s),o){case L.DocType:this.isWebM=pa(e,s)===`webm`;break;case L.Seek:{if(!this.currentSegment)break;let t={id:-1,segmentPosition:-1};this.currentSegment.seekEntries.push(t),this.readContiguousElements(e.slice(c,s)),(t.id===-1||t.segmentPosition===-1)&&this.currentSegment.seekEntries.pop()}break;case L.SeekID:{let t=this.currentSegment?.seekEntries[this.currentSegment.seekEntries.length-1];if(!t)break;t.id=R(e,s)}break;case L.SeekPosition:{let t=this.currentSegment?.seekEntries[this.currentSegment.seekEntries.length-1];if(!t)break;t.segmentPosition=R(e,s)}break;case L.TimestampScale:if(!this.currentSegment)break;this.currentSegment.timestampScale=R(e,s),this.currentSegment.timestampFactor=1e9/this.currentSegment.timestampScale;break;case L.Duration:if(!this.currentSegment)break;this.currentSegment.duration=ha(e,s);break;case L.TrackEntry:if(!this.currentSegment||(this.currentTrack={id:-1,segment:this.currentSegment,demuxer:this,clusterPositionCache:[],cuePoints:[],disposition:{...zt,primary:!1},trackBacking:null,codecId:null,codecPrivate:null,defaultDuration:null,defaultDurationNs:null,name:null,languageCode:`eng`,hasLanguageBcp47:!1,decodingInstructions:[],info:null},this.readContiguousElements(e.slice(c,s)),!this.currentTrack))break;if(this.currentTrack.decodingInstructions.some(e=>e.data?.type!==`decompress`||e.scope!==Sa.Block||e.data.algorithm!==Ca.HeaderStripping)&&(A._warn(`Track #${this.currentTrack.id} has an unsupported content encoding; dropping.`),this.currentTrack=null),this.currentTrack&&this.currentTrack.id!==-1&&this.currentTrack.codecId&&this.currentTrack.info){let e=this.currentTrack.codecId.indexOf(`/`),t=e===-1?this.currentTrack.codecId:this.currentTrack.codecId.slice(0,e);if(this.currentTrack.info.type===`video`&&this.currentTrack.info.width!==-1&&this.currentTrack.info.height!==-1){if(this.currentTrack.info.squarePixelWidth=this.currentTrack.info.width,this.currentTrack.info.squarePixelHeight=this.currentTrack.info.height,this.currentTrack.info.displayWidth!==null&&this.currentTrack.info.displayHeight!==null){let e=this.currentTrack.info.displayWidth*this.currentTrack.info.height,t=this.currentTrack.info.displayHeight*this.currentTrack.info.width;e>0&&t>0&&(e>t?this.currentTrack.info.squarePixelWidth=Math.round(this.currentTrack.info.width*e/t):this.currentTrack.info.squarePixelHeight=Math.round(this.currentTrack.info.height*t/e))}if(this.currentTrack.codecId===va.avc)this.currentTrack.info.codec=`avc`,this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate;else if(this.currentTrack.codecId===va.hevc)this.currentTrack.info.codec=`hevc`,this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate;else if(t===va.vp8)this.currentTrack.info.codec=`vp8`;else if(t===va.vp9)this.currentTrack.info.codec=`vp9`;else if(t===va.av1)this.currentTrack.info.codec=`av1`;else if(t===va.prores){let e=this.currentTrack.codecPrivate?w.decode(this.currentTrack.codecPrivate):``;Dr.includes(e)&&(this.currentTrack.info.codec=`prores`,this.currentTrack.info.proresFormat=e)}let e=this.currentTrack;this.currentTrack.trackBacking=new Oa(e),this.currentSegment.tracks.push(this.currentTrack)}else if(this.currentTrack.info.type===`audio`){t===va.aac?(this.currentTrack.info.codec=`aac`,this.currentTrack.info.aacCodecInfo={isMpeg2:this.currentTrack.codecId.includes(`MPEG2`),objectType:null},this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):this.currentTrack.codecId===va.mp3?this.currentTrack.info.codec=`mp3`:t===va.opus?(this.currentTrack.info.codec=`opus`,this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate,this.currentTrack.info.sampleRate=Rr):t===va.vorbis?(this.currentTrack.info.codec=`vorbis`,this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):t===va.flac?(this.currentTrack.info.codec=`flac`,this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):t===va.ac3?(this.currentTrack.info.codec=`ac3`,this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):t===va.eac3?(this.currentTrack.info.codec=`eac3`,this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):t===va.dts?(this.currentTrack.info.codec=`dts`,this.currentTrack.codecId===`A_DTS/EXPRESS`?this.currentTrack.info.dtsFormat=`dtse`:this.currentTrack.codecId===`A_DTS/LOSSLESS`&&(this.currentTrack.info.dtsFormat=`dtsl`)):this.currentTrack.codecId===`A_PCM/INT/LIT`?this.currentTrack.info.bitDepth===8?this.currentTrack.info.codec=`pcm-u8`:this.currentTrack.info.bitDepth===16?this.currentTrack.info.codec=`pcm-s16`:this.currentTrack.info.bitDepth===24?this.currentTrack.info.codec=`pcm-s24`:this.currentTrack.info.bitDepth===32&&(this.currentTrack.info.codec=`pcm-s32`):this.currentTrack.codecId===`A_PCM/INT/BIG`?this.currentTrack.info.bitDepth===8?this.currentTrack.info.codec=`pcm-u8`:this.currentTrack.info.bitDepth===16?this.currentTrack.info.codec=`pcm-s16be`:this.currentTrack.info.bitDepth===24?this.currentTrack.info.codec=`pcm-s24be`:this.currentTrack.info.bitDepth===32&&(this.currentTrack.info.codec=`pcm-s32be`):this.currentTrack.codecId===`A_PCM/FLOAT/IEEE`&&(this.currentTrack.info.bitDepth===32?this.currentTrack.info.codec=`pcm-f32`:this.currentTrack.info.bitDepth===64&&(this.currentTrack.info.codec=`pcm-f64`));let e=this.currentTrack;this.currentTrack.trackBacking=new ka(e),this.currentSegment.tracks.push(this.currentTrack)}}this.currentTrack=null;break;case L.TrackNumber:if(!this.currentTrack)break;this.currentTrack.id=R(e,s);break;case L.TrackType:{if(!this.currentTrack)break;let t=R(e,s);t===1?this.currentTrack.info={type:`video`,width:-1,height:-1,displayWidth:null,displayHeight:null,displayUnit:null,squarePixelWidth:-1,squarePixelHeight:-1,horizontalScale:1,verticalScale:1,rotation:0,codec:null,codecDescription:null,colorSpace:{...fe},alphaMode:!1,proresFormat:null}:t===2&&(this.currentTrack.info={type:`audio`,numberOfChannels:1,sampleRate:8e3,bitDepth:-1,codec:null,codecDescription:null,aacCodecInfo:null,dtsFormat:null})}break;case L.FlagEnabled:if(!this.currentTrack)break;R(e,s)||(this.currentTrack=null);break;case L.FlagDefault:if(!this.currentTrack)break;this.currentTrack.disposition.default=!!R(e,s);break;case L.FlagForced:if(!this.currentTrack)break;this.currentTrack.disposition.forced=!!R(e,s);break;case L.FlagOriginal:if(!this.currentTrack)break;this.currentTrack.disposition.original=!!R(e,s);break;case L.FlagHearingImpaired:if(!this.currentTrack)break;this.currentTrack.disposition.hearingImpaired=!!R(e,s);break;case L.FlagVisualImpaired:if(!this.currentTrack)break;this.currentTrack.disposition.visuallyImpaired=!!R(e,s);break;case L.FlagCommentary:if(!this.currentTrack)break;this.currentTrack.disposition.commentary=!!R(e,s);break;case L.CodecID:if(!this.currentTrack)break;this.currentTrack.codecId=pa(e,s);break;case L.CodecPrivate:if(!this.currentTrack)break;this.currentTrack.codecPrivate=V(e,s);break;case L.DefaultDuration:if(!this.currentTrack)break;this.currentTrack.defaultDurationNs=R(e,s);break;case L.Name:if(!this.currentTrack)break;this.currentTrack.name=ma(e,s);break;case L.Language:if(!this.currentTrack||this.currentTrack.hasLanguageBcp47)break;this.currentTrack.languageCode=pa(e,s),Ue(this.currentTrack.languageCode)||(this.currentTrack.languageCode=`und`);break;case L.LanguageBCP47:{if(!this.currentTrack)break;let t=pa(e,s).split(`-`)[0];t?this.currentTrack.languageCode=t:this.currentTrack.languageCode=`und`,this.currentTrack.hasLanguageBcp47=!0}break;case L.Video:if(this.currentTrack?.info?.type!==`video`)break;this.readContiguousElements(e.slice(c,s));break;case L.PixelWidth:if(this.currentTrack?.info?.type!==`video`)break;this.currentTrack.info.width=R(e,s);break;case L.PixelHeight:if(this.currentTrack?.info?.type!==`video`)break;this.currentTrack.info.height=R(e,s);break;case L.DisplayWidth:if(this.currentTrack?.info?.type!==`video`)break;this.currentTrack.info.displayWidth=R(e,s);break;case L.DisplayHeight:if(this.currentTrack?.info?.type!==`video`)break;this.currentTrack.info.displayHeight=R(e,s);break;case L.DisplayUnit:if(this.currentTrack?.info?.type!==`video`)break;this.currentTrack.info.displayUnit=R(e,s);break;case L.AlphaMode:if(this.currentTrack?.info?.type!==`video`)break;this.currentTrack.info.alphaMode=R(e,s)===1;break;case L.Colour:if(this.currentTrack?.info?.type!==`video`)break;this.readContiguousElements(e.slice(c,s));break;case L.MatrixCoefficients:{if(this.currentTrack?.info?.type!==`video`)break;let t=R(e,s),n=le[t];this.currentTrack.info.colorSpace.matrix=n}break;case L.Range:{if(this.currentTrack?.info?.type!==`video`)break;let t=R(e,s);this.currentTrack.info.colorSpace.fullRange=t===1||t===2?t===2:void 0}break;case L.TransferCharacteristics:{if(this.currentTrack?.info?.type!==`video`)break;let t=R(e,s),n=se[t];this.currentTrack.info.colorSpace.transfer=n}break;case L.Primaries:{if(this.currentTrack?.info?.type!==`video`)break;let t=R(e,s),n=ae[t];this.currentTrack.info.colorSpace.primaries=n}break;case L.Projection:if(this.currentTrack?.info?.type!==`video`)break;this.readContiguousElements(e.slice(c,s));break;case L.ProjectionPoseYaw:{if(this.currentTrack?.info?.type!==`video`)break;let t=ha(e,s);try{let e=a(t);this.currentTrack.info.horizontalScale=Math.round(Math.cos(e*r))}catch{}}break;case L.ProjectionPosePitch:{if(this.currentTrack?.info?.type!==`video`)break;let t=ha(e,s);try{let e=a(t);this.currentTrack.info.verticalScale=Math.round(Math.cos(e*r))}catch{}}break;case L.ProjectionPoseRoll:{if(this.currentTrack?.info?.type!==`video`)break;let t=-ha(e,s);try{this.currentTrack.info.rotation=a(t)}catch{}}break;case L.Audio:if(this.currentTrack?.info?.type!==`audio`)break;this.readContiguousElements(e.slice(c,s));break;case L.SamplingFrequency:if(this.currentTrack?.info?.type!==`audio`)break;this.currentTrack.info.sampleRate=ha(e,s);break;case L.Channels:if(this.currentTrack?.info?.type!==`audio`)break;this.currentTrack.info.numberOfChannels=R(e,s);break;case L.BitDepth:if(this.currentTrack?.info?.type!==`audio`)break;this.currentTrack.info.bitDepth=R(e,s);break;case L.CuePoint:if(!this.currentSegment)break;this.readContiguousElements(e.slice(c,s)),this.currentCueTime=null;break;case L.CueTime:this.currentCueTime=R(e,s);break;case L.CueTrackPositions:{if(this.currentCueTime===null)break;n(this.currentSegment);let t={time:this.currentCueTime,trackId:-1,clusterPosition:-1};this.currentSegment.cuePoints.push(t),this.readContiguousElements(e.slice(c,s)),(t.trackId===-1||t.clusterPosition===-1)&&this.currentSegment.cuePoints.pop()}break;case L.CueTrack:{let t=this.currentSegment?.cuePoints[this.currentSegment.cuePoints.length-1];if(!t)break;t.trackId=R(e,s)}break;case L.CueClusterPosition:{let t=this.currentSegment?.cuePoints[this.currentSegment.cuePoints.length-1];if(!t)break;n(this.currentSegment),t.clusterPosition=this.currentSegment.dataStartPos+R(e,s)}break;case L.Timestamp:if(!this.currentCluster)break;this.currentCluster.timestamp=R(e,s);break;case L.SimpleBlock:{if(!this.currentCluster)break;let t=ca(e);if(t===null)break;let n=this.getTrackDataInCluster(this.currentCluster,t);if(!n)break;let r=ou(e),i=H(e),a=i>>1&3,o=!!(i&128);n.track.info?.type===`audio`&&n.track.info.codec&&(o=!0);let l=V(e,s-(e.filePos-c)),u=n.track.decodingInstructions.length>0;n.blocks.push({timestamp:r,duration:0,isKeyFrame:o,data:l,lacing:a,decoded:!u,postProcessed:!1,mainAdditional:null})}break;case L.BlockGroup:if(!this.currentCluster)break;this.readContiguousElements(e.slice(c,s)),this.currentBlock=null;break;case L.Block:{if(!this.currentCluster)break;let t=ca(e);if(t===null)break;let n=this.getTrackDataInCluster(this.currentCluster,t);if(!n)break;let r=ou(e),i=H(e)>>1&3,a=V(e,s-(e.filePos-c)),o=n.track.decodingInstructions.length>0;this.currentBlock={timestamp:r,duration:0,isKeyFrame:!0,data:a,lacing:i,decoded:!o,postProcessed:!1,mainAdditional:null},n.blocks.push(this.currentBlock)}break;case L.BlockAdditions:this.readContiguousElements(e.slice(c,s));break;case L.BlockMore:if(!this.currentBlock)break;this.currentBlockAdditional={addId:1,data:null},this.readContiguousElements(e.slice(c,s)),this.currentBlockAdditional.data&&this.currentBlockAdditional.addId===1&&(this.currentBlock.mainAdditional=this.currentBlockAdditional.data),this.currentBlockAdditional=null;break;case L.BlockAdditional:if(!this.currentBlockAdditional)break;this.currentBlockAdditional.data=V(e,s);break;case L.BlockAddID:if(!this.currentBlockAdditional)break;this.currentBlockAdditional.addId=R(e,s);break;case L.BlockDuration:if(!this.currentBlock)break;this.currentBlock.duration=R(e,s);break;case L.ReferenceBlock:if(!this.currentBlock)break;this.currentBlock.isKeyFrame=!1;break;case L.Tag:this.currentTagTargetIsMovie=!0,this.readContiguousElements(e.slice(c,s));break;case L.Targets:this.readContiguousElements(e.slice(c,s));break;case L.TargetTypeValue:R(e,s)!==50&&(this.currentTagTargetIsMovie=!1);break;case L.TagTrackUID:case L.TagEditionUID:case L.TagChapterUID:case L.TagAttachmentUID:this.currentTagTargetIsMovie=!1;break;case L.SimpleTag:if(!this.currentTagTargetIsMovie)break;this.currentSimpleTagName=null,this.readContiguousElements(e.slice(c,s));break;case L.TagName:this.currentSimpleTagName=ma(e,s);break;case L.TagString:{if(!this.currentSimpleTagName)break;let t=ma(e,s);this.processTagValue(this.currentSimpleTagName,t)}break;case L.TagBinary:{if(!this.currentSimpleTagName)break;let t=V(e,s);this.processTagValue(this.currentSimpleTagName,t)}break;case L.AttachedFile:{if(!this.currentSegment)break;this.currentAttachedFile={fileUid:null,fileName:null,fileMediaType:null,fileData:null,fileDescription:null},this.readContiguousElements(e.slice(c,s));let t=this.currentSegment.metadataTags;if(this.currentAttachedFile.fileUid&&this.currentAttachedFile.fileData&&(t.raw??={},t.raw[this.currentAttachedFile.fileUid.toString()]=new It(this.currentAttachedFile.fileData,this.currentAttachedFile.fileMediaType??void 0,this.currentAttachedFile.fileName??void 0,this.currentAttachedFile.fileDescription??void 0)),this.currentAttachedFile.fileMediaType?.startsWith(`image/`)&&this.currentAttachedFile.fileData){let e=this.currentAttachedFile.fileName,n=`unknown`;if(e){let t=e.toLowerCase();t.startsWith(`cover.`)?n=`coverFront`:t.startsWith(`back.`)&&(n=`coverBack`)}t.images??=[],t.images.push({data:this.currentAttachedFile.fileData,mimeType:this.currentAttachedFile.fileMediaType,kind:n,name:this.currentAttachedFile.fileName??void 0,description:this.currentAttachedFile.fileDescription??void 0})}this.currentAttachedFile=null}break;case L.FileUID:if(!this.currentAttachedFile)break;this.currentAttachedFile.fileUid=la(e,s);break;case L.FileName:if(!this.currentAttachedFile)break;this.currentAttachedFile.fileName=ma(e,s);break;case L.FileMediaType:if(!this.currentAttachedFile)break;this.currentAttachedFile.fileMediaType=pa(e,s);break;case L.FileData:if(!this.currentAttachedFile)break;this.currentAttachedFile.fileData=V(e,s);break;case L.FileDescription:if(!this.currentAttachedFile)break;this.currentAttachedFile.fileDescription=ma(e,s);break;case L.ContentEncodings:if(!this.currentTrack)break;this.readContiguousElements(e.slice(c,s)),this.currentTrack.decodingInstructions.sort((e,t)=>t.order-e.order);break;case L.ContentEncoding:this.currentDecodingInstruction={order:0,scope:Sa.Block,data:null},this.readContiguousElements(e.slice(c,s)),this.currentDecodingInstruction.data&&this.currentTrack.decodingInstructions.push(this.currentDecodingInstruction),this.currentDecodingInstruction=null;break;case L.ContentEncodingOrder:if(!this.currentDecodingInstruction)break;this.currentDecodingInstruction.order=R(e,s);break;case L.ContentEncodingScope:if(!this.currentDecodingInstruction)break;this.currentDecodingInstruction.scope=R(e,s);break;case L.ContentCompression:if(!this.currentDecodingInstruction)break;this.currentDecodingInstruction.data={type:`decompress`,algorithm:Ca.Zlib,settings:null},this.readContiguousElements(e.slice(c,s));break;case L.ContentCompAlgo:if(this.currentDecodingInstruction?.data?.type!==`decompress`)break;this.currentDecodingInstruction.data.algorithm=R(e,s);break;case L.ContentCompSettings:if(this.currentDecodingInstruction?.data?.type!==`decompress`)break;this.currentDecodingInstruction.data.settings=V(e,s);break;case L.ContentEncryption:if(!this.currentDecodingInstruction)break;this.currentDecodingInstruction.data={type:`decrypt`}}return e.filePos=c+s,!0}decodeBlockData(e,t){n(e.decodingInstructions.length>0);let r=t;for(let t of e.decodingInstructions)if(n(t.data),t.data.type===`decompress`)switch(t.data.algorithm){case Ca.HeaderStripping:if(t.data.settings&&t.data.settings.length>0){let e=t.data.settings,n=new Uint8Array(e.length+r.length);n.set(e,0),n.set(r,e.length),r=n}}return r}processTagValue(e,t){if(!this.currentSegment?.metadataTags)return;let n=this.currentSegment.metadataTags;if(n.raw??={},n.raw[e]??=t,typeof t==`string`)switch(e.toLowerCase()){case`title`:n.title??=t;break;case`description`:n.description??=t;break;case`artist`:n.artist??=t;break;case`album`:n.album??=t;break;case`album_artist`:n.albumArtist??=t;break;case`genre`:n.genre??=t;break;case`comment`:n.comment??=t;break;case`lyrics`:n.lyrics??=t;break;case`date`:{let e=new Date(t);Number.isNaN(e.getTime())||(n.date??=e)}break;case`track_number`:case`part_number`:{let e=t.split(`/`),r=Number.parseInt(e[0],10),i=e[1]&&Number.parseInt(e[1],10);Number.isInteger(r)&&r>0&&(n.trackNumber??=r),i&&Number.isInteger(i)&&i>0&&(n.tracksTotal??=i)}break;case`disc_number`:case`disc`:{let e=t.split(`/`),r=Number.parseInt(e[0],10),i=e[1]&&Number.parseInt(e[1],10);Number.isInteger(r)&&r>0&&(n.discNumber??=r),i&&Number.isInteger(i)&&i>0&&(n.discsTotal??=i)}}}async getDurationFromMetadata(e){if(e.duration<=0)return null;let t=null;for(let r of e.tracks){n(r.trackBacking);let e=await r.trackBacking.getFirstPacket({metadataOnly:!0});e&&(t=Math.min(t??1/0,e.timestamp))}let r=e.duration/e.timestampFactor;return r+=t??0,r}},Da=class{constructor(e){this.internalTrack=e,this.packetToClusterLocation=new WeakMap}getId(){return this.internalTrack.id}getNumber(){let e=this.internalTrack.demuxer,t=this.internalTrack.trackBacking.getType(),n=0;for(let r of e.segments)for(let e of r.tracks)if(e.trackBacking.getType()===t&&n++,e===this.internalTrack)break;return n}getCodec(){throw Error(`Not implemented on base class.`)}getInternalCodecId(){return this.internalTrack.codecId}getName(){return this.internalTrack.name}getLanguageCode(){return this.internalTrack.languageCode}getTimeResolution(){return this.internalTrack.segment.timestampFactor}isRelativeToUnixEpoch(){return!1}getUnixTimeForTimestamp(){return null}getDisposition(){return this.internalTrack.disposition}getPairingMask(){return 1n}getBitrate(){return null}getAverageBitrate(){return null}async getDurationFromMetadata(){return this.internalTrack.demuxer.getDurationFromMetadata(this.internalTrack.segment)}async getLiveRefreshInterval(){return null}async getFirstPacket(e){return this.performClusterLookup(null,e=>e.trackData.get(this.internalTrack.id)?{blockIndex:0,correctBlockFound:!0}:{blockIndex:-1,correctBlockFound:!1},-1/0,1/0,e)}intoTimescale(e){return Fe(e*this.internalTrack.segment.timestampFactor)}async getPacket(e,t){let n=this.intoTimescale(e);return this.performClusterLookup(null,e=>{let t=e.trackData.get(this.internalTrack.id);if(!t)return{blockIndex:-1,correctBlockFound:!1};let r=E(t.presentationTimestamps,n,e=>e.timestamp);return{blockIndex:r===-1?-1:t.presentationTimestamps[r].blockIndex,correctBlockFound:r!==-1&&n<t.endTimestamp}},n,n,t)}async getNextPacket(e,t){let n=this.packetToClusterLocation.get(e);if(n===void 0)throw Error(`Packet was not created from this track.`);return this.performClusterLookup(n.cluster,e=>{if(e===n.cluster){let t=e.trackData.get(this.internalTrack.id);if(n.blockIndex+1<t.blocks.length)return{blockIndex:n.blockIndex+1,correctBlockFound:!0}}else if(e.trackData.get(this.internalTrack.id))return{blockIndex:0,correctBlockFound:!0};return{blockIndex:-1,correctBlockFound:!1}},-1/0,1/0,t)}async getKeyPacket(e,t){let n=this.intoTimescale(e);return this.performClusterLookup(null,e=>{let t=e.trackData.get(this.internalTrack.id);if(!t)return{blockIndex:-1,correctBlockFound:!1};let r=Ce(t.presentationTimestamps,e=>t.blocks[e.blockIndex].isKeyFrame&&e.timestamp<=n);return{blockIndex:r===-1?-1:t.presentationTimestamps[r].blockIndex,correctBlockFound:r!==-1&&n<t.endTimestamp}},n,n,t)}async getNextKeyPacket(e,t){let r=this.packetToClusterLocation.get(e);if(r===void 0)throw Error(`Packet was not created from this track.`);return this.performClusterLookup(r.cluster,e=>{if(e===r.cluster){let t=e.trackData.get(this.internalTrack.id).blocks.findIndex((e,t)=>e.isKeyFrame&&t>r.blockIndex);if(t!==-1)return{blockIndex:t,correctBlockFound:!0}}else{let t=e.trackData.get(this.internalTrack.id);if(t&&t.firstKeyFrameTimestamp!==null){let e=t.blocks.findIndex(e=>e.isKeyFrame);return n(e!==-1),{blockIndex:e,correctBlockFound:!0}}}return{blockIndex:-1,correctBlockFound:!1}},-1/0,1/0,t)}async fetchPacketInCluster(e,t,r){if(t===-1)return null;let i=e.trackData.get(this.internalTrack.id).blocks[t];if(n(i),i.decoded||=(i.data=this.internalTrack.demuxer.decodeBlockData(this.internalTrack,i.data),!0),!i.postProcessed){if(this.internalTrack.info?.codec===`prores`&&!(i.data.length>=8&&i.data[4]===105&&i.data[5]===99&&i.data[6]===112&&i.data[7]===102)){let e=new Uint8Array(i.data.length+8);C(e).setUint32(0,e.length,!1),e[4]=105,e[5]=99,e[6]=112,e[7]=102,e.set(i.data,8),i.data=e}i.postProcessed=!0}let a=r.metadataOnly?ui:i.data,o=i.timestamp/this.internalTrack.segment.timestampFactor,s=i.duration/this.internalTrack.segment.timestampFactor,c={};i.mainAdditional&&this.internalTrack.info?.type===`video`&&this.internalTrack.info.alphaMode&&(c.alpha=r.metadataOnly?ui:i.mainAdditional,c.alphaByteLength=i.mainAdditional.byteLength);let l=new I(a,i.isKeyFrame?`key`:`delta`,o,s,e.dataStartPos+t,i.data.byteLength,c);return this.packetToClusterLocation.set(l,{cluster:e,blockIndex:t}),l}async performClusterLookup(e,t,r,i,a){let{demuxer:o,segment:s}=this.internalTrack,c=null,l=null,u=-1;if(e){let{blockIndex:n,correctBlockFound:r}=t(e);if(r)return this.fetchPacketInCluster(e,n,a);n!==-1&&(l=e,u=n)}let d=E(this.internalTrack.cuePoints,r,e=>e.time),f=d===-1?null:this.internalTrack.cuePoints[d],p=E(this.internalTrack.clusterPositionCache,r,e=>e.startTimestamp),m=p===-1?null:this.internalTrack.clusterPositionCache[p],h=Math.max(f?.clusterPosition??0,m?.elementStartPos??0)||null,g;for(e?h===null||e.elementStartPos>=h?(g=e.elementEndPos,c=e):g=h:g=h??s.clusterSeekStartPos;s.elementEndPos===null||g<=s.elementEndPos-2;){if(c){let e=c.trackData.get(this.internalTrack.id);if(e&&e.startTimestamp>i)break}let e=o.reader.requestSliceRange(g,2,16);if(k(e)&&(e=await e),!e)break;let r=g,d=fa(e);if(!d||!ea.includes(d.id)&&d.id!==L.Void){let e=await _a(o.reader,r,ea,Math.min(s.elementEndPos??1/0,r+Ta));if(e){g=e;continue}break}let f=d.id,p=d.size,m=e.filePos;if(f===L.Cluster){c=await o.readCluster(r,s),p=c.elementEndPos-m;let{blockIndex:e,correctBlockFound:n}=t(c);if(n)return this.fetchPacketInCluster(c,e,a);e!==-1&&(l=c,u=e)}p===void 0&&(n(f!==L.Cluster),p=(await ga(o.reader,m,ta,s.elementEndPos)).pos-m);let h=m+p;if(s.elementEndPos===null){let e=o.reader.requestSliceRange(h,2,16);if(k(e)&&(e=await e),!e)break;if(ua(e)===L.Segment){s.elementEndPos=h;break}}g=h}if(f&&(!l||l.elementStartPos<f.clusterPosition)){let e=this.internalTrack.cuePoints[d-1];n(!e||e.time<f.time);let r=e?.time??-1/0;return this.performClusterLookup(null,t,r,i,a)}return l?this.fetchPacketInCluster(l,u,a):null}},Oa=class extends Da{constructor(e){super(e),this.decoderConfigPromise=null,this.internalTrack=e}getType(){return`video`}getCodec(){return this.internalTrack.info.codec}getCodedWidth(){return this.internalTrack.info.width}getCodedHeight(){return this.internalTrack.info.height}getSquarePixelWidth(){return this.internalTrack.info.squarePixelWidth}getSquarePixelHeight(){return this.internalTrack.info.squarePixelHeight}getTransformationMatrix(){let e=this.internalTrack.info,t=p(f(e.horizontalScale,e.verticalScale),u(e.rotation));return s(t,e.width,e.height)}async getColorSpace(){let e=await this.getDecoderConfig();return e?{primaries:e.colorSpace?.primaries,transfer:e.colorSpace?.transfer,matrix:e.colorSpace?.matrix,fullRange:e.colorSpace?.fullRange}:this.internalTrack.info.colorSpace}async canBeTransparent(){return this.internalTrack.info.alphaMode||this.internalTrack.info.codec===`prores`&&(this.internalTrack.info.proresFormat===`ap4h`||this.internalTrack.info.proresFormat===`ap4x`)}async getDecoderConfig(){return this.internalTrack.info.codec?this.decoderConfigPromise??=(async()=>{let e=null;(this.internalTrack.info.codec===`vp9`||this.internalTrack.info.codec===`av1`||this.internalTrack.info.codec===`prores`||this.internalTrack.info.codec===`avc`&&!this.internalTrack.info.codecDescription||this.internalTrack.info.codec===`hevc`&&!this.internalTrack.info.codecDescription)&&(e=await this.getFirstPacket({}));let t={width:this.internalTrack.info.width,height:this.internalTrack.info.height,codec:this.internalTrack.info.codec,codecDescription:this.internalTrack.info.codecDescription,colorSpace:this.internalTrack.info.colorSpace,avcType:1,avcCodecInfo:this.internalTrack.info.codec===`avc`&&e?fn(e.data):null,hevcCodecInfo:this.internalTrack.info.codec===`hevc`&&e?Cn(e.data):null,vp9CodecInfo:this.internalTrack.info.codec===`vp9`&&e?In(e.data):null,av1CodecInfo:this.internalTrack.info.codec===`av1`&&e?zn(e.data):null,proresCodecInfo:this.internalTrack.info.codec===`prores`&&e?Vn(e.data):null,proresFormat:this.internalTrack.info.proresFormat};if(!ue(this.internalTrack.info.colorSpace)){let e=Pr(t);this.internalTrack.info.colorSpace.primaries??=e.primaries,this.internalTrack.info.colorSpace.transfer??=e.transfer,this.internalTrack.info.colorSpace.matrix??=e.matrix,this.internalTrack.info.colorSpace.fullRange??=e.fullRange}let n={codec:Nr(t),codedWidth:this.internalTrack.info.width,codedHeight:this.internalTrack.info.height,description:this.internalTrack.info.codecDescription??void 0,colorSpace:this.internalTrack.info.colorSpace};return(this.internalTrack.info.width!==this.internalTrack.info.squarePixelWidth||this.internalTrack.info.height!==this.internalTrack.info.squarePixelHeight)&&(n.displayAspectWidth=this.internalTrack.info.squarePixelWidth,n.displayAspectHeight=this.internalTrack.info.squarePixelHeight),n})():null}},ka=class extends Da{constructor(e){super(e),this.decoderConfigPromise=null,this.internalTrack=e}getType(){return`audio`}getCodec(){return this.internalTrack.info.codec}getNumberOfChannels(){return this.internalTrack.info.numberOfChannels}getSampleRate(){return this.internalTrack.info.sampleRate}async getDecoderConfig(){return this.internalTrack.info.codec?this.decoderConfigPromise??=(async()=>{if(this.internalTrack.info.codec===`dts`&&!this.internalTrack.info.dtsFormat){let e=await this.getFirstPacket({});this.internalTrack.info.dtsFormat=e&&hr(e.data)}return{codec:Ir({codec:this.internalTrack.info.codec,codecDescription:this.internalTrack.info.codecDescription,aacCodecInfo:this.internalTrack.info.aacCodecInfo,dtsFormat:this.internalTrack.info.dtsFormat}),numberOfChannels:this.internalTrack.info.numberOfChannels,sampleRate:this.internalTrack.info.sampleRate,description:this.internalTrack.info.codecDescription??void 0}})():null}};
145
+ var xa;(function(e){e[e.None=0]=`None`,e[e.Xiph=1]=`Xiph`,e[e.FixedSize=2]=`FixedSize`,e[e.Ebml=3]=`Ebml`})(xa||={});var Sa;(function(e){e[e.Block=1]=`Block`,e[e.Private=2]=`Private`,e[e.Next=4]=`Next`})(Sa||={});var Ca;(function(e){e[e.Zlib=0]=`Zlib`,e[e.Bzlib=1]=`Bzlib`,e[e.lzo1x=2]=`lzo1x`,e[e.HeaderStripping=3]=`HeaderStripping`})(Ca||={});const wa=[{id:L.SeekHead,flag:`seekHeadSeen`},{id:L.Info,flag:`infoSeen`},{id:L.Tracks,flag:`tracksSeen`},{id:L.Cues,flag:`cuesSeen`}],Ta=10*2**20;var Ea=class extends li{constructor(e){super(e),this.readMetadataPromise=null,this.segments=[],this.currentSegment=null,this.currentTrack=null,this.currentCluster=null,this.currentBlock=null,this.currentBlockAdditional=null,this.currentCueTime=null,this.currentDecodingInstruction=null,this.currentTagTargetIsMovie=!0,this.currentSimpleTagName=null,this.currentAttachedFile=null,this.isWebM=!1,this.reader=e._reader}async getTrackBackings(){return await this.readMetadata(),this.segments.flatMap(e=>e.tracks.map(e=>e.trackBacking))}async getMimeType(){await this.readMetadata();let e=await this.getTrackBackings(),t=await Promise.all(e.map(e=>e.getDecoderConfig().then(e=>e?.codec??null)));return ba({isWebM:this.isWebM,hasVideo:this.segments.some(e=>e.tracks.some(e=>e.info?.type===`video`)),hasAudio:this.segments.some(e=>e.tracks.some(e=>e.info?.type===`audio`)),codecStrings:t.filter(Boolean)})}async getMetadataTags(){await this.readMetadata();for(let e of this.segments)e.metadataTagsCollected||=(this.reader.fileSize!==null&&await this.loadSegmentMetadata(e),!0);let e={};for(let t of this.segments)e={...e,...t.metadataTags};return e}readMetadata(){return this.readMetadataPromise??=(async()=>{let e=0;for(;;){let t=this.reader.requestSliceRange(e,2,16);if(k(t)&&(t=await t),!t)break;let n=fa(t);if(!n)break;let r=n.id,i=n.size,a=t.filePos;if(r===L.EBML){ya(i);let e=this.reader.requestSlice(a,i);if(k(e)&&(e=await e),!e)break;this.readContiguousElements(e)}else if(r===L.Segment){if(await this.readSegment(a,i),i===void 0||this.reader.fileSize===null)break}else if(r===L.Cluster){if(this.reader.fileSize===null)break;i===void 0&&(i=(await ga(this.reader,a,ta,this.reader.fileSize)).pos-a);let e=h(this.segments);e&&(e.elementEndPos=a+i)}ya(i),e=a+i}})()}async readSegment(e,t){this.currentSegment={seekHeadSeen:!1,infoSeen:!1,tracksSeen:!1,cuesSeen:!1,tagsSeen:!1,attachmentsSeen:!1,timestampScale:-1,timestampFactor:-1,duration:-1,seekEntries:[],tracks:[],cuePoints:[],dataStartPos:e,elementEndPos:t===void 0?null:e+t,clusterSeekStartPos:e,lastReadCluster:null,metadataTags:{},metadataTagsCollected:!1},this.segments.push(this.currentSegment);let n=e;for(;this.currentSegment.elementEndPos===null||n<this.currentSegment.elementEndPos;){let e=this.reader.requestSliceRange(n,2,16);if(k(e)&&(e=await e),!e)break;let t=n,r=fa(e);if(!r||!ea.includes(r.id)&&r.id!==L.Void){let e=await _a(this.reader,t,ea,Math.min(this.currentSegment.elementEndPos??1/0,t+Ta));if(e){n=e;continue}break}let{id:i,size:a}=r,o=e.filePos,s=wa.findIndex(e=>e.id===i);if(s!==-1){let e=wa[s].flag;this.currentSegment[e]=!0,ya(a);let t=this.reader.requestSlice(o,a);k(t)&&(t=await t),t&&this.readContiguousElements(t)}else if(i===L.Tags||i===L.Attachments){i===L.Tags?this.currentSegment.tagsSeen=!0:this.currentSegment.attachmentsSeen=!0,ya(a);let e=this.reader.requestSlice(o,a);k(e)&&(e=await e),e&&this.readContiguousElements(e)}else if(i===L.Cluster){this.currentSegment.clusterSeekStartPos=t;break}if(a===void 0)break;n=o+a}if(this.currentSegment.seekEntries.sort((e,t)=>e.segmentPosition-t.segmentPosition),this.reader.fileSize!==null)for(let t of this.currentSegment.seekEntries){let n=wa.find(e=>e.id===t.id);if(!n||this.currentSegment[n.flag])continue;let r=this.reader.requestSliceRange(e+t.segmentPosition,2,16);if(k(r)&&(r=await r),!r)continue;let i=fa(r);if(!i)continue;let{id:a,size:o}=i;if(a!==n.id)continue;ya(o),this.currentSegment[n.flag]=!0;let s=this.reader.requestSlice(r.filePos,o);k(s)&&(s=await s),s&&this.readContiguousElements(s)}this.currentSegment.timestampScale===-1&&(this.currentSegment.timestampScale=1e6,this.currentSegment.timestampFactor=1e3);for(let e of this.currentSegment.tracks)e.defaultDurationNs!==null&&(e.defaultDuration=this.currentSegment.timestampFactor*e.defaultDurationNs/1e9);let r=new Map(this.currentSegment.tracks.map(e=>[e.id,e]));for(let e of this.currentSegment.cuePoints){let t=r.get(e.trackId);t&&t.cuePoints.push(e)}for(let e of this.currentSegment.tracks){e.cuePoints.sort((e,t)=>e.time-t.time);for(let t=0;t<e.cuePoints.length-1;t++){let n=e.cuePoints[t],r=e.cuePoints[t+1];n.time===r.time&&(e.cuePoints.splice(t+1,1),t--)}}let i=null,a=-1/0;for(let e of this.currentSegment.tracks)e.cuePoints.length>a&&(a=e.cuePoints.length,i=e);for(let e of this.currentSegment.tracks)e.cuePoints.length===0&&(e.cuePoints=i.cuePoints);this.currentSegment=null}async readCluster(e,t){if(t.lastReadCluster?.elementStartPos===e)return t.lastReadCluster;let r=this.reader.requestSliceRange(e,2,16);k(r)&&(r=await r),n(r);let i=e,a=fa(r);n(a);let o=a.id;n(o===L.Cluster);let s=a.size,c=r.filePos;s===void 0&&(s=(await ga(this.reader,c,ta,t.elementEndPos)).pos-c);let l=this.reader.requestSlice(c,s);k(l)&&(l=await l);let u={segment:t,elementStartPos:i,elementEndPos:c+s,dataStartPos:c,timestamp:-1,trackData:new Map};this.currentCluster=u,l&&(u.elementEndPos=this.readContiguousElements(l,ta));for(let[,e]of u.trackData){let t=e.track;n(e.blocks.length>0);let r=!1;for(let t=0;t<e.blocks.length;t++){let n=e.blocks[t];n.timestamp+=u.timestamp,r||=n.lacing!==xa.None}e.presentationTimestamps=e.blocks.map((e,t)=>({timestamp:e.timestamp,blockIndex:t})).sort((e,t)=>e.timestamp-t.timestamp);for(let n=0;n<e.presentationTimestamps.length;n++){let r=e.presentationTimestamps[n],i=e.blocks[r.blockIndex];e.firstKeyFrameTimestamp===null&&i.isKeyFrame&&(e.firstKeyFrameTimestamp=i.timestamp),n<e.presentationTimestamps.length-1?i.duration=e.presentationTimestamps[n+1].timestamp-i.timestamp:i.duration===0&&t.defaultDuration!=null&&i.lacing===xa.None&&(i.duration=t.defaultDuration)}r&&(this.expandLacedBlocks(e.blocks,t),e.presentationTimestamps=e.blocks.map((e,t)=>({timestamp:e.timestamp,blockIndex:t})).sort((e,t)=>e.timestamp-t.timestamp));let a=e.blocks[e.presentationTimestamps[0].blockIndex],o=e.blocks[h(e.presentationTimestamps).blockIndex];e.startTimestamp=a.timestamp,e.endTimestamp=o.timestamp+o.duration;let s=E(t.clusterPositionCache,e.startTimestamp,e=>e.startTimestamp);(s===-1||t.clusterPositionCache[s].elementStartPos!==i)&&t.clusterPositionCache.splice(s+1,0,{elementStartPos:u.elementStartPos,startTimestamp:e.startTimestamp})}return t.lastReadCluster=u,u}getTrackDataInCluster(e,t){let n=e.trackData.get(t);if(!n){let r=e.segment.tracks.find(e=>e.id===t);if(!r)return null;n={track:r,startTimestamp:0,endTimestamp:0,firstKeyFrameTimestamp:null,blocks:[],presentationTimestamps:[]},e.trackData.set(t,n)}return n}expandLacedBlocks(e,t){for(let r=0;r<e.length;r++){let i=e[r];if(i.lacing===xa.None)continue;i.decoded||=(i.data=this.decodeBlockData(t,i.data),!0);let a=nu.tempFromBytes(i.data),o=[],s=H(a)+1;switch(i.lacing){case xa.Xiph:{let e=0;for(let t=0;t<s-1;t++){let t=0;for(;a.bufferPos<a.length;){let n=H(a);if(t+=n,n<255){o.push(t),e+=t;break}}}o.push(a.length-(a.bufferPos+e))}break;case xa.FixedSize:{let e=a.length-1,t=Math.floor(e/s);for(let e=0;e<s;e++)o.push(t)}break;case xa.Ebml:{let e=ca(a);n(e!==null);let t=e;o.push(t);let r=t;for(let e=1;e<s-1;e++){let e=a.bufferPos,i=ca(a);n(i!==null);let s=i-((1<<(a.bufferPos-e)*7-1)-1);t+=s,o.push(t),r+=t}o.push(a.length-(a.bufferPos+r))}break;default:n(!1)}n(o.length===s),e.splice(r,1);let c=i.duration||s*(t.defaultDuration??0);for(let t=0;t<s;t++){let n=o[t],l=V(a,n),u=i.timestamp+c*t/s,d=c/s;e.splice(r+t,0,{timestamp:u,duration:d,isKeyFrame:i.isKeyFrame,data:l,lacing:xa.None,decoded:!0,postProcessed:!1,mainAdditional:i.mainAdditional})}r+=s,r--}}async loadSegmentMetadata(e){for(let t of e.seekEntries){if(!(t.id===L.Tags&&!e.tagsSeen)&&!(t.id===L.Attachments&&!e.attachmentsSeen))continue;let r=this.reader.requestSliceRange(e.dataStartPos+t.segmentPosition,2,16);if(k(r)&&(r=await r),!r)continue;let i=fa(r);if(!i||i.id!==t.id)continue;let{size:a}=i;ya(a),n(!this.currentSegment),this.currentSegment=e;let o=this.reader.requestSlice(r.filePos,a);k(o)&&(o=await o),o&&this.readContiguousElements(o),this.currentSegment=null,t.id===L.Tags?e.tagsSeen=!0:t.id===L.Attachments&&(e.attachmentsSeen=!0)}}readContiguousElements(e,t){for(;e.remainingLength>=2;){let n=e.filePos;if(!this.traverseElement(e,t))return n}return e.filePos}traverseElement(e,t){let i=fa(e);if(!i||t&&t.includes(i.id))return!1;let{id:o,size:s}=i,c=e.filePos;switch(ya(s),o){case L.DocType:this.isWebM=pa(e,s)===`webm`;break;case L.Seek:{if(!this.currentSegment)break;let t={id:-1,segmentPosition:-1};this.currentSegment.seekEntries.push(t),this.readContiguousElements(e.slice(c,s)),(t.id===-1||t.segmentPosition===-1)&&this.currentSegment.seekEntries.pop()}break;case L.SeekID:{let t=this.currentSegment?.seekEntries[this.currentSegment.seekEntries.length-1];if(!t)break;t.id=R(e,s)}break;case L.SeekPosition:{let t=this.currentSegment?.seekEntries[this.currentSegment.seekEntries.length-1];if(!t)break;t.segmentPosition=R(e,s)}break;case L.TimestampScale:if(!this.currentSegment)break;this.currentSegment.timestampScale=R(e,s),this.currentSegment.timestampFactor=1e9/this.currentSegment.timestampScale;break;case L.Duration:if(!this.currentSegment)break;this.currentSegment.duration=ha(e,s);break;case L.TrackEntry:if(!this.currentSegment||(this.currentTrack={id:-1,segment:this.currentSegment,demuxer:this,clusterPositionCache:[],cuePoints:[],disposition:{...zt,primary:!1},trackBacking:null,codecId:null,codecPrivate:null,defaultDuration:null,defaultDurationNs:null,name:null,languageCode:`eng`,hasLanguageBcp47:!1,decodingInstructions:[],info:null},this.readContiguousElements(e.slice(c,s)),!this.currentTrack))break;if(this.currentTrack.decodingInstructions.some(e=>e.data?.type!==`decompress`||e.scope!==Sa.Block||e.data.algorithm!==Ca.HeaderStripping)&&(A._warn(`Track #${this.currentTrack.id} has an unsupported content encoding; dropping.`),this.currentTrack=null),this.currentTrack&&this.currentTrack.id!==-1&&this.currentTrack.codecId&&this.currentTrack.info){let e=this.currentTrack.codecId.indexOf(`/`),t=e===-1?this.currentTrack.codecId:this.currentTrack.codecId.slice(0,e);if(this.currentTrack.info.type===`video`&&this.currentTrack.info.width!==-1&&this.currentTrack.info.height!==-1){if(this.currentTrack.info.squarePixelWidth=this.currentTrack.info.width,this.currentTrack.info.squarePixelHeight=this.currentTrack.info.height,this.currentTrack.info.displayWidth!==null&&this.currentTrack.info.displayHeight!==null){let e=this.currentTrack.info.displayWidth*this.currentTrack.info.height,t=this.currentTrack.info.displayHeight*this.currentTrack.info.width;e>0&&t>0&&(e>t?this.currentTrack.info.squarePixelWidth=Math.round(this.currentTrack.info.width*e/t):this.currentTrack.info.squarePixelHeight=Math.round(this.currentTrack.info.height*t/e))}if(this.currentTrack.codecId===va.avc)this.currentTrack.info.codec=`avc`,this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate;else if(this.currentTrack.codecId===va.hevc)this.currentTrack.info.codec=`hevc`,this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate;else if(t===va.vp8)this.currentTrack.info.codec=`vp8`;else if(t===va.vp9)this.currentTrack.info.codec=`vp9`;else if(t===va.av1)this.currentTrack.info.codec=`av1`;else if(t===va.prores){let e=this.currentTrack.codecPrivate?w.decode(this.currentTrack.codecPrivate):``;Dr.includes(e)&&(this.currentTrack.info.codec=`prores`,this.currentTrack.info.proresFormat=e)}let e=this.currentTrack;this.currentTrack.trackBacking=new Oa(e),this.currentSegment.tracks.push(this.currentTrack)}else if(this.currentTrack.info.type===`audio`){t===va.aac?(this.currentTrack.info.codec=`aac`,this.currentTrack.info.aacCodecInfo={isMpeg2:this.currentTrack.codecId.includes(`MPEG2`),objectType:null},this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):this.currentTrack.codecId===va.mp3?this.currentTrack.info.codec=`mp3`:t===va.opus?(this.currentTrack.info.codec=`opus`,this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate,this.currentTrack.info.sampleRate=Rr):t===va.vorbis?(this.currentTrack.info.codec=`vorbis`,this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):t===va.flac?(this.currentTrack.info.codec=`flac`,this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):t===va.ac3?(this.currentTrack.info.codec=`ac3`,this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):t===va.eac3?(this.currentTrack.info.codec=`eac3`,this.currentTrack.info.codecDescription=this.currentTrack.codecPrivate):t===va.dts?(this.currentTrack.info.codec=`dts`,this.currentTrack.codecId===`A_DTS/EXPRESS`?this.currentTrack.info.dtsFormat=`dtse`:this.currentTrack.codecId===`A_DTS/LOSSLESS`&&(this.currentTrack.info.dtsFormat=`dtsl`)):this.currentTrack.codecId===`A_PCM/INT/LIT`?this.currentTrack.info.bitDepth===8?this.currentTrack.info.codec=`pcm-u8`:this.currentTrack.info.bitDepth===16?this.currentTrack.info.codec=`pcm-s16`:this.currentTrack.info.bitDepth===24?this.currentTrack.info.codec=`pcm-s24`:this.currentTrack.info.bitDepth===32&&(this.currentTrack.info.codec=`pcm-s32`):this.currentTrack.codecId===`A_PCM/INT/BIG`?this.currentTrack.info.bitDepth===8?this.currentTrack.info.codec=`pcm-u8`:this.currentTrack.info.bitDepth===16?this.currentTrack.info.codec=`pcm-s16be`:this.currentTrack.info.bitDepth===24?this.currentTrack.info.codec=`pcm-s24be`:this.currentTrack.info.bitDepth===32&&(this.currentTrack.info.codec=`pcm-s32be`):this.currentTrack.codecId===`A_PCM/FLOAT/IEEE`&&(this.currentTrack.info.bitDepth===32?this.currentTrack.info.codec=`pcm-f32`:this.currentTrack.info.bitDepth===64&&(this.currentTrack.info.codec=`pcm-f64`));let e=this.currentTrack;this.currentTrack.trackBacking=new ka(e),this.currentSegment.tracks.push(this.currentTrack)}}this.currentTrack=null;break;case L.TrackNumber:if(!this.currentTrack)break;this.currentTrack.id=R(e,s);break;case L.TrackType:{if(!this.currentTrack)break;let t=R(e,s);t===1?this.currentTrack.info={type:`video`,width:-1,height:-1,displayWidth:null,displayHeight:null,displayUnit:null,squarePixelWidth:-1,squarePixelHeight:-1,horizontalScale:1,verticalScale:1,rotation:0,codec:null,codecDescription:null,colorSpace:{...fe},alphaMode:!1,proresFormat:null}:t===2&&(this.currentTrack.info={type:`audio`,numberOfChannels:1,sampleRate:8e3,bitDepth:-1,codec:null,codecDescription:null,aacCodecInfo:null,dtsFormat:null})}break;case L.FlagEnabled:if(!this.currentTrack)break;R(e,s)||(this.currentTrack=null);break;case L.FlagDefault:if(!this.currentTrack)break;this.currentTrack.disposition.default=!!R(e,s);break;case L.FlagForced:if(!this.currentTrack)break;this.currentTrack.disposition.forced=!!R(e,s);break;case L.FlagOriginal:if(!this.currentTrack)break;this.currentTrack.disposition.original=!!R(e,s);break;case L.FlagHearingImpaired:if(!this.currentTrack)break;this.currentTrack.disposition.hearingImpaired=!!R(e,s);break;case L.FlagVisualImpaired:if(!this.currentTrack)break;this.currentTrack.disposition.visuallyImpaired=!!R(e,s);break;case L.FlagCommentary:if(!this.currentTrack)break;this.currentTrack.disposition.commentary=!!R(e,s);break;case L.CodecID:if(!this.currentTrack)break;this.currentTrack.codecId=pa(e,s);break;case L.CodecPrivate:if(!this.currentTrack)break;this.currentTrack.codecPrivate=V(e,s);break;case L.DefaultDuration:if(!this.currentTrack)break;this.currentTrack.defaultDurationNs=R(e,s);break;case L.Name:if(!this.currentTrack)break;this.currentTrack.name=ma(e,s);break;case L.Language:if(!this.currentTrack||this.currentTrack.hasLanguageBcp47)break;this.currentTrack.languageCode=pa(e,s),Ue(this.currentTrack.languageCode)||(this.currentTrack.languageCode=`und`);break;case L.LanguageBCP47:{if(!this.currentTrack)break;let t=pa(e,s).split(`-`)[0];t?this.currentTrack.languageCode=t:this.currentTrack.languageCode=`und`,this.currentTrack.hasLanguageBcp47=!0}break;case L.Video:if(this.currentTrack?.info?.type!==`video`)break;this.readContiguousElements(e.slice(c,s));break;case L.PixelWidth:if(this.currentTrack?.info?.type!==`video`)break;this.currentTrack.info.width=R(e,s);break;case L.PixelHeight:if(this.currentTrack?.info?.type!==`video`)break;this.currentTrack.info.height=R(e,s);break;case L.DisplayWidth:if(this.currentTrack?.info?.type!==`video`)break;this.currentTrack.info.displayWidth=R(e,s);break;case L.DisplayHeight:if(this.currentTrack?.info?.type!==`video`)break;this.currentTrack.info.displayHeight=R(e,s);break;case L.DisplayUnit:if(this.currentTrack?.info?.type!==`video`)break;this.currentTrack.info.displayUnit=R(e,s);break;case L.AlphaMode:if(this.currentTrack?.info?.type!==`video`)break;this.currentTrack.info.alphaMode=R(e,s)===1;break;case L.Colour:if(this.currentTrack?.info?.type!==`video`)break;this.readContiguousElements(e.slice(c,s));break;case L.MatrixCoefficients:{if(this.currentTrack?.info?.type!==`video`)break;let t=R(e,s),n=le[t];this.currentTrack.info.colorSpace.matrix=n}break;case L.Range:{if(this.currentTrack?.info?.type!==`video`)break;let t=R(e,s);this.currentTrack.info.colorSpace.fullRange=t===1||t===2?t===2:void 0}break;case L.TransferCharacteristics:{if(this.currentTrack?.info?.type!==`video`)break;let t=R(e,s),n=se[t];this.currentTrack.info.colorSpace.transfer=n}break;case L.Primaries:{if(this.currentTrack?.info?.type!==`video`)break;let t=R(e,s),n=ae[t];this.currentTrack.info.colorSpace.primaries=n}break;case L.Projection:if(this.currentTrack?.info?.type!==`video`)break;this.readContiguousElements(e.slice(c,s));break;case L.ProjectionPoseYaw:{if(this.currentTrack?.info?.type!==`video`)break;let t=ha(e,s);try{let e=a(t);this.currentTrack.info.horizontalScale=Math.round(Math.cos(e*r))}catch{}}break;case L.ProjectionPosePitch:{if(this.currentTrack?.info?.type!==`video`)break;let t=ha(e,s);try{let e=a(t);this.currentTrack.info.verticalScale=Math.round(Math.cos(e*r))}catch{}}break;case L.ProjectionPoseRoll:{if(this.currentTrack?.info?.type!==`video`)break;let t=-ha(e,s);try{this.currentTrack.info.rotation=a(t)}catch{}}break;case L.Audio:if(this.currentTrack?.info?.type!==`audio`)break;this.readContiguousElements(e.slice(c,s));break;case L.SamplingFrequency:if(this.currentTrack?.info?.type!==`audio`)break;this.currentTrack.info.sampleRate=ha(e,s);break;case L.Channels:if(this.currentTrack?.info?.type!==`audio`)break;this.currentTrack.info.numberOfChannels=R(e,s);break;case L.BitDepth:if(this.currentTrack?.info?.type!==`audio`)break;this.currentTrack.info.bitDepth=R(e,s);break;case L.CuePoint:if(!this.currentSegment)break;this.readContiguousElements(e.slice(c,s)),this.currentCueTime=null;break;case L.CueTime:this.currentCueTime=R(e,s);break;case L.CueTrackPositions:{if(this.currentCueTime===null)break;n(this.currentSegment);let t={time:this.currentCueTime,trackId:-1,clusterPosition:-1};this.currentSegment.cuePoints.push(t),this.readContiguousElements(e.slice(c,s)),(t.trackId===-1||t.clusterPosition===-1)&&this.currentSegment.cuePoints.pop()}break;case L.CueTrack:{let t=this.currentSegment?.cuePoints[this.currentSegment.cuePoints.length-1];if(!t)break;t.trackId=R(e,s)}break;case L.CueClusterPosition:{let t=this.currentSegment?.cuePoints[this.currentSegment.cuePoints.length-1];if(!t)break;n(this.currentSegment),t.clusterPosition=this.currentSegment.dataStartPos+R(e,s)}break;case L.Timestamp:if(!this.currentCluster)break;this.currentCluster.timestamp=R(e,s);break;case L.SimpleBlock:{if(!this.currentCluster)break;let t=ca(e);if(t===null)break;let n=this.getTrackDataInCluster(this.currentCluster,t);if(!n)break;let r=ou(e),i=H(e),a=i>>1&3,o=!!(i&128);n.track.info?.type===`audio`&&n.track.info.codec&&(o=!0);let l=V(e,s-(e.filePos-c)),u=n.track.decodingInstructions.length>0;n.blocks.push({timestamp:r,duration:0,isKeyFrame:o,data:l,lacing:a,decoded:!u,postProcessed:!1,mainAdditional:null})}break;case L.BlockGroup:if(!this.currentCluster)break;this.readContiguousElements(e.slice(c,s)),this.currentBlock=null;break;case L.Block:{if(!this.currentCluster)break;let t=ca(e);if(t===null)break;let n=this.getTrackDataInCluster(this.currentCluster,t);if(!n)break;let r=ou(e),i=H(e)>>1&3,a=V(e,s-(e.filePos-c)),o=n.track.decodingInstructions.length>0;this.currentBlock={timestamp:r,duration:0,isKeyFrame:!0,data:a,lacing:i,decoded:!o,postProcessed:!1,mainAdditional:null},n.blocks.push(this.currentBlock)}break;case L.BlockAdditions:this.readContiguousElements(e.slice(c,s));break;case L.BlockMore:if(!this.currentBlock)break;this.currentBlockAdditional={addId:1,data:null},this.readContiguousElements(e.slice(c,s)),this.currentBlockAdditional.data&&this.currentBlockAdditional.addId===1&&(this.currentBlock.mainAdditional=this.currentBlockAdditional.data),this.currentBlockAdditional=null;break;case L.BlockAdditional:if(!this.currentBlockAdditional)break;this.currentBlockAdditional.data=V(e,s);break;case L.BlockAddID:if(!this.currentBlockAdditional)break;this.currentBlockAdditional.addId=R(e,s);break;case L.BlockDuration:if(!this.currentBlock)break;this.currentBlock.duration=R(e,s);break;case L.ReferenceBlock:if(!this.currentBlock)break;this.currentBlock.isKeyFrame=!1;break;case L.Tag:this.currentTagTargetIsMovie=!0,this.readContiguousElements(e.slice(c,s));break;case L.Targets:this.readContiguousElements(e.slice(c,s));break;case L.TargetTypeValue:R(e,s)!==50&&(this.currentTagTargetIsMovie=!1);break;case L.TagTrackUID:case L.TagEditionUID:case L.TagChapterUID:case L.TagAttachmentUID:this.currentTagTargetIsMovie=!1;break;case L.SimpleTag:if(!this.currentTagTargetIsMovie)break;this.currentSimpleTagName=null,this.readContiguousElements(e.slice(c,s));break;case L.TagName:this.currentSimpleTagName=ma(e,s);break;case L.TagString:{if(!this.currentSimpleTagName)break;let t=ma(e,s);this.processTagValue(this.currentSimpleTagName,t)}break;case L.TagBinary:{if(!this.currentSimpleTagName)break;let t=V(e,s);this.processTagValue(this.currentSimpleTagName,t)}break;case L.AttachedFile:{if(!this.currentSegment)break;this.currentAttachedFile={fileUid:null,fileName:null,fileMediaType:null,fileData:null,fileDescription:null},this.readContiguousElements(e.slice(c,s));let t=this.currentSegment.metadataTags;if(this.currentAttachedFile.fileUid&&this.currentAttachedFile.fileData&&(t.raw??={},t.raw[this.currentAttachedFile.fileUid.toString()]=new It(this.currentAttachedFile.fileData,this.currentAttachedFile.fileMediaType??void 0,this.currentAttachedFile.fileName??void 0,this.currentAttachedFile.fileDescription??void 0)),this.currentAttachedFile.fileMediaType?.startsWith(`image/`)&&this.currentAttachedFile.fileData){let e=this.currentAttachedFile.fileName,n=`unknown`;if(e){let t=e.toLowerCase();t.startsWith(`cover.`)?n=`coverFront`:t.startsWith(`back.`)&&(n=`coverBack`)}t.images??=[],t.images.push({data:this.currentAttachedFile.fileData,mimeType:this.currentAttachedFile.fileMediaType,kind:n,name:this.currentAttachedFile.fileName??void 0,description:this.currentAttachedFile.fileDescription??void 0})}this.currentAttachedFile=null}break;case L.FileUID:if(!this.currentAttachedFile)break;this.currentAttachedFile.fileUid=la(e,s);break;case L.FileName:if(!this.currentAttachedFile)break;this.currentAttachedFile.fileName=ma(e,s);break;case L.FileMediaType:if(!this.currentAttachedFile)break;this.currentAttachedFile.fileMediaType=pa(e,s);break;case L.FileData:if(!this.currentAttachedFile)break;this.currentAttachedFile.fileData=V(e,s);break;case L.FileDescription:if(!this.currentAttachedFile)break;this.currentAttachedFile.fileDescription=ma(e,s);break;case L.ContentEncodings:if(!this.currentTrack)break;this.readContiguousElements(e.slice(c,s)),this.currentTrack.decodingInstructions.sort((e,t)=>t.order-e.order);break;case L.ContentEncoding:this.currentDecodingInstruction={order:0,scope:Sa.Block,data:null},this.readContiguousElements(e.slice(c,s)),this.currentDecodingInstruction.data&&this.currentTrack.decodingInstructions.push(this.currentDecodingInstruction),this.currentDecodingInstruction=null;break;case L.ContentEncodingOrder:if(!this.currentDecodingInstruction)break;this.currentDecodingInstruction.order=R(e,s);break;case L.ContentEncodingScope:if(!this.currentDecodingInstruction)break;this.currentDecodingInstruction.scope=R(e,s);break;case L.ContentCompression:if(!this.currentDecodingInstruction)break;this.currentDecodingInstruction.data={type:`decompress`,algorithm:Ca.Zlib,settings:null},this.readContiguousElements(e.slice(c,s));break;case L.ContentCompAlgo:if(this.currentDecodingInstruction?.data?.type!==`decompress`)break;this.currentDecodingInstruction.data.algorithm=R(e,s);break;case L.ContentCompSettings:if(this.currentDecodingInstruction?.data?.type!==`decompress`)break;this.currentDecodingInstruction.data.settings=V(e,s);break;case L.ContentEncryption:if(!this.currentDecodingInstruction)break;this.currentDecodingInstruction.data={type:`decrypt`}}return e.filePos=c+s,!0}decodeBlockData(e,t){n(e.decodingInstructions.length>0);let r=t;for(let t of e.decodingInstructions)if(n(t.data),t.data.type===`decompress`)switch(t.data.algorithm){case Ca.HeaderStripping:if(t.data.settings&&t.data.settings.length>0){let e=t.data.settings,n=new Uint8Array(e.length+r.length);n.set(e,0),n.set(r,e.length),r=n}}return r}processTagValue(e,t){if(!this.currentSegment?.metadataTags)return;let n=this.currentSegment.metadataTags;if(n.raw??={},n.raw[e]??=t,typeof t==`string`)switch(e.toLowerCase()){case`title`:n.title??=t;break;case`description`:n.description??=t;break;case`artist`:n.artist??=t;break;case`album`:n.album??=t;break;case`album_artist`:n.albumArtist??=t;break;case`genre`:n.genre??=t;break;case`bpm`:{let e=Number.parseInt(t,10);Number.isInteger(e)&&e>0&&(n.beatsPerMinute??=e)}break;case`comment`:n.comment??=t;break;case`lyrics`:n.lyrics??=t;break;case`date`:{let e=new Date(t);Number.isNaN(e.getTime())||(n.date??=e)}break;case`track_number`:case`part_number`:{let e=t.split(`/`),r=Number.parseInt(e[0],10),i=e[1]&&Number.parseInt(e[1],10);Number.isInteger(r)&&r>0&&(n.trackNumber??=r),i&&Number.isInteger(i)&&i>0&&(n.tracksTotal??=i)}break;case`disc_number`:case`disc`:{let e=t.split(`/`),r=Number.parseInt(e[0],10),i=e[1]&&Number.parseInt(e[1],10);Number.isInteger(r)&&r>0&&(n.discNumber??=r),i&&Number.isInteger(i)&&i>0&&(n.discsTotal??=i)}}}async getDurationFromMetadata(e){if(e.duration<=0)return null;let t=null;for(let r of e.tracks){n(r.trackBacking);let e=await r.trackBacking.getFirstPacket({metadataOnly:!0});e&&(t=Math.min(t??1/0,e.timestamp))}let r=e.duration/e.timestampFactor;return r+=t??0,r}},Da=class{constructor(e){this.internalTrack=e,this.packetToClusterLocation=new WeakMap}getId(){return this.internalTrack.id}getNumber(){let e=this.internalTrack.demuxer,t=this.internalTrack.trackBacking.getType(),n=0;for(let r of e.segments)for(let e of r.tracks)if(e.trackBacking.getType()===t&&n++,e===this.internalTrack)break;return n}getCodec(){throw Error(`Not implemented on base class.`)}getInternalCodecId(){return this.internalTrack.codecId}getName(){return this.internalTrack.name}getLanguageCode(){return this.internalTrack.languageCode}getTimeResolution(){return this.internalTrack.segment.timestampFactor}isRelativeToUnixEpoch(){return!1}getUnixTimeForTimestamp(){return null}getDisposition(){return this.internalTrack.disposition}getPairingMask(){return 1n}getBitrate(){return null}getAverageBitrate(){return null}async getDurationFromMetadata(){return this.internalTrack.demuxer.getDurationFromMetadata(this.internalTrack.segment)}async getLiveRefreshInterval(){return null}async getFirstPacket(e){return this.performClusterLookup(null,e=>e.trackData.get(this.internalTrack.id)?{blockIndex:0,correctBlockFound:!0}:{blockIndex:-1,correctBlockFound:!1},-1/0,1/0,e)}intoTimescale(e){return Fe(e*this.internalTrack.segment.timestampFactor)}async getPacket(e,t){let n=this.intoTimescale(e);return this.performClusterLookup(null,e=>{let t=e.trackData.get(this.internalTrack.id);if(!t)return{blockIndex:-1,correctBlockFound:!1};let r=E(t.presentationTimestamps,n,e=>e.timestamp);return{blockIndex:r===-1?-1:t.presentationTimestamps[r].blockIndex,correctBlockFound:r!==-1&&n<t.endTimestamp}},n,n,t)}async getNextPacket(e,t){let n=this.packetToClusterLocation.get(e);if(n===void 0)throw Error(`Packet was not created from this track.`);return this.performClusterLookup(n.cluster,e=>{if(e===n.cluster){let t=e.trackData.get(this.internalTrack.id);if(n.blockIndex+1<t.blocks.length)return{blockIndex:n.blockIndex+1,correctBlockFound:!0}}else if(e.trackData.get(this.internalTrack.id))return{blockIndex:0,correctBlockFound:!0};return{blockIndex:-1,correctBlockFound:!1}},-1/0,1/0,t)}async getKeyPacket(e,t){let n=this.intoTimescale(e);return this.performClusterLookup(null,e=>{let t=e.trackData.get(this.internalTrack.id);if(!t)return{blockIndex:-1,correctBlockFound:!1};let r=Ce(t.presentationTimestamps,e=>t.blocks[e.blockIndex].isKeyFrame&&e.timestamp<=n);return{blockIndex:r===-1?-1:t.presentationTimestamps[r].blockIndex,correctBlockFound:r!==-1&&n<t.endTimestamp}},n,n,t)}async getNextKeyPacket(e,t){let r=this.packetToClusterLocation.get(e);if(r===void 0)throw Error(`Packet was not created from this track.`);return this.performClusterLookup(r.cluster,e=>{if(e===r.cluster){let t=e.trackData.get(this.internalTrack.id).blocks.findIndex((e,t)=>e.isKeyFrame&&t>r.blockIndex);if(t!==-1)return{blockIndex:t,correctBlockFound:!0}}else{let t=e.trackData.get(this.internalTrack.id);if(t&&t.firstKeyFrameTimestamp!==null){let e=t.blocks.findIndex(e=>e.isKeyFrame);return n(e!==-1),{blockIndex:e,correctBlockFound:!0}}}return{blockIndex:-1,correctBlockFound:!1}},-1/0,1/0,t)}async fetchPacketInCluster(e,t,r){if(t===-1)return null;let i=e.trackData.get(this.internalTrack.id).blocks[t];if(n(i),i.decoded||=(i.data=this.internalTrack.demuxer.decodeBlockData(this.internalTrack,i.data),!0),!i.postProcessed){if(this.internalTrack.info?.codec===`prores`&&!(i.data.length>=8&&i.data[4]===105&&i.data[5]===99&&i.data[6]===112&&i.data[7]===102)){let e=new Uint8Array(i.data.length+8);C(e).setUint32(0,e.length,!1),e[4]=105,e[5]=99,e[6]=112,e[7]=102,e.set(i.data,8),i.data=e}i.postProcessed=!0}let a=r.metadataOnly?ui:i.data,o=i.timestamp/this.internalTrack.segment.timestampFactor,s=i.duration/this.internalTrack.segment.timestampFactor,c={};i.mainAdditional&&this.internalTrack.info?.type===`video`&&this.internalTrack.info.alphaMode&&(c.alpha=r.metadataOnly?ui:i.mainAdditional,c.alphaByteLength=i.mainAdditional.byteLength);let l=new I(a,i.isKeyFrame?`key`:`delta`,o,s,e.dataStartPos+t,i.data.byteLength,c);return this.packetToClusterLocation.set(l,{cluster:e,blockIndex:t}),l}async performClusterLookup(e,t,r,i,a){let{demuxer:o,segment:s}=this.internalTrack,c=null,l=null,u=-1;if(e){let{blockIndex:n,correctBlockFound:r}=t(e);if(r)return this.fetchPacketInCluster(e,n,a);n!==-1&&(l=e,u=n)}let d=E(this.internalTrack.cuePoints,r,e=>e.time),f=d===-1?null:this.internalTrack.cuePoints[d],p=E(this.internalTrack.clusterPositionCache,r,e=>e.startTimestamp),m=p===-1?null:this.internalTrack.clusterPositionCache[p],h=Math.max(f?.clusterPosition??0,m?.elementStartPos??0)||null,g;for(e?h===null||e.elementStartPos>=h?(g=e.elementEndPos,c=e):g=h:g=h??s.clusterSeekStartPos;s.elementEndPos===null||g<=s.elementEndPos-2;){if(c){let e=c.trackData.get(this.internalTrack.id);if(e&&e.startTimestamp>i)break}let e=o.reader.requestSliceRange(g,2,16);if(k(e)&&(e=await e),!e)break;let r=g,d=fa(e);if(!d||!ea.includes(d.id)&&d.id!==L.Void){let e=await _a(o.reader,r,ea,Math.min(s.elementEndPos??1/0,r+Ta));if(e){g=e;continue}break}let f=d.id,p=d.size,m=e.filePos;if(f===L.Cluster){c=await o.readCluster(r,s),p=c.elementEndPos-m;let{blockIndex:e,correctBlockFound:n}=t(c);if(n)return this.fetchPacketInCluster(c,e,a);e!==-1&&(l=c,u=e)}p===void 0&&(n(f!==L.Cluster),p=(await ga(o.reader,m,ta,s.elementEndPos)).pos-m);let h=m+p;if(s.elementEndPos===null){let e=o.reader.requestSliceRange(h,2,16);if(k(e)&&(e=await e),!e)break;if(ua(e)===L.Segment){s.elementEndPos=h;break}}g=h}if(f&&(!l||l.elementStartPos<f.clusterPosition)){let e=this.internalTrack.cuePoints[d-1];n(!e||e.time<f.time);let r=e?.time??-1/0;return this.performClusterLookup(null,t,r,i,a)}return l?this.fetchPacketInCluster(l,u,a):null}},Oa=class extends Da{constructor(e){super(e),this.decoderConfigPromise=null}getType(){return`video`}getCodec(){return this.internalTrack.info.codec}getCodedWidth(){return this.internalTrack.info.width}getCodedHeight(){return this.internalTrack.info.height}getSquarePixelWidth(){return this.internalTrack.info.squarePixelWidth}getSquarePixelHeight(){return this.internalTrack.info.squarePixelHeight}getTransformationMatrix(){let e=this.internalTrack.info,t=p(f(e.horizontalScale,e.verticalScale),u(e.rotation));return s(t,e.width,e.height)}async getColorSpace(){let e=await this.getDecoderConfig();return e?{primaries:e.colorSpace?.primaries,transfer:e.colorSpace?.transfer,matrix:e.colorSpace?.matrix,fullRange:e.colorSpace?.fullRange}:this.internalTrack.info.colorSpace}async canBeTransparent(){return this.internalTrack.info.alphaMode||this.internalTrack.info.codec===`prores`&&(this.internalTrack.info.proresFormat===`ap4h`||this.internalTrack.info.proresFormat===`ap4x`)}async getDecoderConfig(){return this.internalTrack.info.codec?this.decoderConfigPromise??=(async()=>{let e=null;(this.internalTrack.info.codec===`vp9`||this.internalTrack.info.codec===`av1`||this.internalTrack.info.codec===`prores`||this.internalTrack.info.codec===`avc`&&!this.internalTrack.info.codecDescription||this.internalTrack.info.codec===`hevc`&&!this.internalTrack.info.codecDescription)&&(e=await this.getFirstPacket({}));let t={width:this.internalTrack.info.width,height:this.internalTrack.info.height,codec:this.internalTrack.info.codec,codecDescription:this.internalTrack.info.codecDescription,colorSpace:this.internalTrack.info.colorSpace,avcType:1,avcCodecInfo:this.internalTrack.info.codec===`avc`&&e?fn(e.data):null,hevcCodecInfo:this.internalTrack.info.codec===`hevc`&&e?Cn(e.data):null,vp9CodecInfo:this.internalTrack.info.codec===`vp9`&&e?In(e.data):null,av1CodecInfo:this.internalTrack.info.codec===`av1`&&e?zn(e.data):null,proresCodecInfo:this.internalTrack.info.codec===`prores`&&e?Vn(e.data):null,proresFormat:this.internalTrack.info.proresFormat};if(!ue(this.internalTrack.info.colorSpace)){let e=Pr(t);this.internalTrack.info.colorSpace.primaries??=e.primaries,this.internalTrack.info.colorSpace.transfer??=e.transfer,this.internalTrack.info.colorSpace.matrix??=e.matrix,this.internalTrack.info.colorSpace.fullRange??=e.fullRange}let n={codec:Nr(t),codedWidth:this.internalTrack.info.width,codedHeight:this.internalTrack.info.height,description:this.internalTrack.info.codecDescription??void 0,colorSpace:this.internalTrack.info.colorSpace};return(this.internalTrack.info.width!==this.internalTrack.info.squarePixelWidth||this.internalTrack.info.height!==this.internalTrack.info.squarePixelHeight)&&(n.displayAspectWidth=this.internalTrack.info.squarePixelWidth,n.displayAspectHeight=this.internalTrack.info.squarePixelHeight),n})():null}},ka=class extends Da{constructor(e){super(e),this.decoderConfigPromise=null}getType(){return`audio`}getCodec(){return this.internalTrack.info.codec}getNumberOfChannels(){return this.internalTrack.info.numberOfChannels}getSampleRate(){return this.internalTrack.info.sampleRate}async getDecoderConfig(){return this.internalTrack.info.codec?this.decoderConfigPromise??=(async()=>{if(this.internalTrack.info.codec===`dts`&&!this.internalTrack.info.dtsFormat){let e=await this.getFirstPacket({});this.internalTrack.info.dtsFormat=e&&hr(e.data)}return{codec:Ir({codec:this.internalTrack.info.codec,codecDescription:this.internalTrack.info.codecDescription,aacCodecInfo:this.internalTrack.info.aacCodecInfo,dtsFormat:this.internalTrack.info.dtsFormat}),numberOfChannels:this.internalTrack.info.numberOfChannels,sampleRate:this.internalTrack.info.sampleRate,description:this.internalTrack.info.codecDescription??void 0}})():null}};
146
146
  /*!
147
147
  * Copyright (c) 2026-present, Vanilagy and contributors
148
148
  *
@@ -278,7 +278,7 @@ if(t!=null){if(typeof t!=`object`&&typeof t!=`function`)throw TypeError(`Object
278
278
  * License, v. 2.0. If a copy of the MPL was not distributed with this
279
279
  * file, You can obtain one at https://mozilla.org/MPL/2.0/.
280
280
  */
281
- super(e),this.metadataPromise=null,this.trackBackings=null,this.internalTracks=null,this.segmentedInputs=[],this.hasMasterPlaylist=!0}readMetadata(){return this.metadataPromise??=(async()=>{n(this.input._rootSource instanceof Fo);let e=await this.input._reader.requestEntireFile();n(e);let t=_u(e,e.length,{ignore:Co}),{rootPath:r}=this.input._rootSource,i=[],a=[];for(let e=1;e<t.length;e++){let n=t[e];if(n.startsWith(`#EXT-X-STREAM-INF:`)){let a=e,o=t[++e];if(o===void 0)throw Error(`Incorrect M3U8 file; a line must follow the #EXT-X-STREAM-INF tag.`);let s=pt(r,o),c=new wo(n.slice(18));if(c.getAsNumber(`bandwidth`)===null)throw Error(`Invalid M3U8 file; #EXT-X-STREAM-INF tag requires a BANDWIDTH attribute with a valid numerical value.`);i.push({fullPath:s,attributes:c,lineNumber:a,hasOnlyKeyPackets:!1})}else if(n.startsWith(`#EXT-X-I-FRAME-STREAM-INF:`)){let t=new wo(n.slice(26)),a=t.get(`uri`);if(a===null)throw Error(`Invalid M3U8 file; #EXT-X-I-FRAME-STREAM-INF tag requires a URI attribute.`);if(t.getAsNumber(`bandwidth`)===null)throw Error(`Invalid M3U8 file; #EXT-X-I-FRAME-STREAM-INF tag requires a BANDWIDTH attribute with a valid numerical value.`);let o=pt(r,a);i.push({fullPath:o,attributes:t,lineNumber:e,hasOnlyKeyPackets:!0})}else if(n.startsWith(`#EXT-X-MEDIA:`)){let t=new wo(n.slice(13));if(t.get(`type`)===null)throw Error(`Invalid M3U8 file; #EXT-X-MEDIA tag requires a TYPE attribute.`);if(t.get(`group-id`)===null)throw Error(`Invalid M3U8 file; #EXT-X-MEDIA tag requires a GROUP-ID attribute.`);let i=null,o=t.get(`uri`);o!==null&&(i=pt(r,o)),a.push({fullPath:i,attributes:t,lineNumber:e})}else if(n!==`#EXT-X-I-FRAMES-ONLY`&&n.startsWith(`#EXTINF:`)){let e=new is(this,r,null,t);this.segmentedInputs=[e],this.hasMasterPlaylist=!1,this.trackBackings=await e.getTrackBackings();return}}let o=[...new Set(a.filter(e=>e.attributes.get(`type`).toLowerCase()===`video`).map(e=>e.attributes.get(`group-id`)))],s=[...new Set(a.filter(e=>e.attributes.get(`type`).toLowerCase()===`audio`).map(e=>e.attributes.get(`group-id`)))],c=await Promise.all(i.map(async(e,t)=>{let i=[],c=e.attributes.get(`codecs`),l;if(c)l=c.split(`,`).map(e=>e.trim());else{let t=await this.getSegmentedInputForPath(e.fullPath).getTrackBackings(),n=await Promise.all(t.map(async e=>({track:e,codec:await e.getCodec()})));l=await Promise.all(n.filter(e=>e.codec!==null).map(e=>e.track.getDecoderConfig().then(e=>e.codec)))}let u=e.attributes.get(`video`),d=e.attributes.get(`audio`),f=l.some(e=>N.includes(Vr(e))),p=l.some(e=>F.includes(Vr(e)));if(u!==null&&!f){if(!o.includes(u))throw Error(`Invalid M3U8 file; variant stream references video group "${u}" which is not defined in any #EXT-X-MEDIA tags.`);let e=a.find(e=>{let t=e.attributes.get(`group-id`),n=e.attributes.get(`type`);return t===u&&n.toLowerCase()===`video`});outer:if(e){let t=e.attributes.get(`uri`);if(t===null)break outer;let i=pt(r,t),a=(await this.getSegmentedInputForPath(i).getTrackBackings()).find(e=>e.getType()===`video`);if(!a||await a.getCodec()===null)break outer;let o=await a.getDecoderConfig().then(e=>e?.codec??null);n(o!==null),l.push(o)}}if(d!==null&&!p){if(!s.includes(d))throw Error(`Invalid M3U8 file; variant stream references audio group "${d}" which is not defined in any #EXT-X-MEDIA tags.`);let e=a.find(e=>{let t=e.attributes.get(`group-id`),n=e.attributes.get(`type`);return t===d&&n.toLowerCase()===`audio`});outer:if(e){let t=e.attributes.get(`uri`);if(t===null)break outer;let i=pt(r,t),a=(await this.getSegmentedInputForPath(i).getTrackBackings()).find(e=>e.getType()===`audio`);if(!a||await a.getCodec()===null)break outer;let o=await a.getDecoderConfig().then(e=>e?.codec??null);n(o!==null),l.push(o)}}l=[...new Set(l)];let m=null,h=null,g=e.attributes.getAsNumber(`bandwidth`);n(g!==null);let _=e.attributes.getAsNumber(`average-bandwidth`),v=e.attributes.get(`name`);for(let n of l){let r=Vr(n);if(r!==null){if(N.includes(r)){if(m!==null)throw Error(`Unsupported M3U8 file; multiple video codecs found in the CODECS attribute of a variant stream.`);m=n;let r=e.attributes.get(`video`);if(r===null){let n=e.attributes.get(`resolution`),r=null,a=null;if(n){let e=n.match(/^(\d+)x(\d+)$/);e&&(r=Number(e[1]),a=Number(e[2]))}i.push({id:-1,demuxer:this,backingTrack:null,default:!0,autoselect:!0,languageCode:`und`,lineNumber:e.lineNumber,fullPath:e.fullPath,fullCodecString:m,pairingMask:1n<<BigInt(t),peakBitrate:g,averageBitrate:_,name:v,hasOnlyKeyPackets:e.hasOnlyKeyPackets,info:{type:`video`,width:r,height:a}})}else{if(!o.includes(r))throw Error(`Invalid M3U8 file; variant stream references video group "${r}" which is not defined in any #EXT-X-MEDIA tags.`);for(let n of a){let a=n.attributes.get(`group-id`),o=n.attributes.get(`type`);if(a!==r||o.toLowerCase()!==`video`)continue;let s=n.attributes.get(`resolution`)??e.attributes.get(`resolution`),c=null,l=null;if(s){let e=s.match(/^(\d+)x(\d+)$/);e&&(c=Number(e[1]),l=Number(e[2]))}i.push({id:-1,demuxer:this,backingTrack:null,default:ls(n.attributes),autoselect:ls(n.attributes)||us(n.attributes),languageCode:ds(n.attributes.get(`language`)),lineNumber:n.lineNumber,fullPath:n.fullPath??e.fullPath,fullCodecString:m,pairingMask:1n<<BigInt(t),peakBitrate:null,averageBitrate:null,name:n.attributes.get(`name`),hasOnlyKeyPackets:e.hasOnlyKeyPackets,info:{type:`video`,width:c,height:l}})}}}else if(F.includes(r)){if(h!==null)throw Error(`Unsupported M3U8 file; multiple audio codecs found in the CODECS attribute of a variant stream.`);h=n;let r=e.attributes.get(`audio`);if(r===null){let n=e.attributes.get(`channels`),r=n===null?null:Number(n.split(`/`)[0]);i.push({id:-1,demuxer:this,backingTrack:null,default:!0,autoselect:!0,languageCode:`und`,lineNumber:e.lineNumber,fullPath:e.fullPath,fullCodecString:h,pairingMask:1n<<BigInt(t),peakBitrate:g,averageBitrate:_,name:v,hasOnlyKeyPackets:e.hasOnlyKeyPackets,info:{type:`audio`,numberOfChannels:r!==null&&Number.isInteger(r)&&r>0?r:null}})}else{if(!s.includes(r))throw Error(`Invalid M3U8 file; variant stream references audio group "${r}" which is not defined in any #EXT-X-MEDIA tags.`);for(let n of a){let a=n.attributes.get(`group-id`),o=n.attributes.get(`type`);if(a!==r||o.toLowerCase()!==`audio`)continue;let s=n.attributes.get(`channels`)??e.attributes.get(`channels`),c=s===null?null:Number(s.split(`/`)[0]);i.push({id:-1,demuxer:this,backingTrack:null,default:ls(n.attributes),autoselect:ls(n.attributes)||us(n.attributes),languageCode:ds(n.attributes.get(`language`)),lineNumber:n.lineNumber,fullPath:n.fullPath??e.fullPath,fullCodecString:h,pairingMask:1n<<BigInt(t),peakBitrate:null,averageBitrate:null,name:n.attributes.get(`name`),hasOnlyKeyPackets:e.hasOnlyKeyPackets,info:{type:`audio`,numberOfChannels:c!==null&&Number.isInteger(c)&&c>0?c:null}})}}}}}return i})),l=[],u=e=>{let t=l.find(t=>t.fullPath===e.fullPath&&t.info.type===e.info.type);t?(t.pairingMask|=e.pairingMask,t.default||=e.default,t.autoselect||=e.autoselect,t.lineNumber=Math.min(t.lineNumber,e.lineNumber),e.peakBitrate!==null&&(t.peakBitrate=Math.max(t.peakBitrate??-1/0,e.peakBitrate)),e.averageBitrate!==null&&(t.averageBitrate=Math.max(t.averageBitrate??-1/0,e.averageBitrate)),t.languageCode===`und`&&(t.languageCode=e.languageCode)):(e.id=l.length+1,l.push(e))};for(let e of c)for(let t of e)u(t);l.sort((e,t)=>e.lineNumber-t.lineNumber),this.trackBackings=[];for(let e of l)e.info.type===`video`?this.trackBackings.push(new ss(e)):this.trackBackings.push(new cs(e));this.internalTracks=l})()}async getTrackBackings(){return await this.readMetadata(),n(this.trackBackings),this.trackBackings}getSegmentedInputForPath(e){let t=this.segmentedInputs.find(t=>t.path===e);if(t)return t;let n=null;return this.internalTracks&&(n=this.internalTracks.filter(t=>t.fullPath===e).map(e=>({id:e.id,type:e.info.type}))),t=new is(this,e,n,null),this.segmentedInputs.push(t),t}async getMetadataTags(){return{}}async getMimeType(){return So}dispose(){if(this.segmentedInputs){for(let e of this.segmentedInputs)e.dispose();this.segmentedInputs.length=0}}},os=class{constructor(e){this.internalTrack=e,this.hydrationPromise=null}hydrate(){return this.hydrationPromise??=(async()=>{let e=this.internalTrack.demuxer.getSegmentedInputForPath(this.internalTrack.fullPath),t=null,r=(await e.getTrackBackings()).filter(e=>e.getType()===this.getType());if(r.length===1)t=r[0];else if(this instanceof ss){for(let e of r)if(await e.getCodec()===this.getCodec()){t=e;break}}else{n(this instanceof cs);for(let e of r)if(await e.getCodec()===this.getCodec()){t=e;break}}if(!t)throw Error(`Could not find matching track in underlying media data.`);this.internalTrack.backingTrack=t})()}delegate(e){return this.internalTrack.backingTrack?e():this.hydrate().then(e)}getCodec(){throw Error(`Not implemented on base class.`)}getDisposition(){return{...zt,default:this.internalTrack.autoselect,primary:this.internalTrack.default}}getId(){return this.internalTrack.id}getPairingMask(){return this.internalTrack.pairingMask}getInternalCodecId(){return null}getLanguageCode(){return this.internalTrack.languageCode}getName(){return this.internalTrack.name}getNumber(){n(this.internalTrack.demuxer.internalTracks);let e=this.internalTrack.info.type,t=0;for(let n of this.internalTrack.demuxer.internalTracks)if(n.info.type===e&&t++,n===this.internalTrack)break;return t}getTimeResolution(){return this.delegate(()=>this.internalTrack.backingTrack.getTimeResolution())}isRelativeToUnixEpoch(){return this.delegate(()=>this.internalTrack.backingTrack.isRelativeToUnixEpoch())}getUnixTimeForTimestamp(e){return this.delegate(()=>this.internalTrack.backingTrack.getUnixTimeForTimestamp(e))}getBitrate(){return this.internalTrack.peakBitrate}getAverageBitrate(){return this.internalTrack.averageBitrate}async getDurationFromMetadata(e){return await this.hydrate(),this.internalTrack.backingTrack.getDurationFromMetadata(e)}async getLiveRefreshInterval(){return await this.hydrate(),this.internalTrack.backingTrack.getLiveRefreshInterval()}getHasOnlyKeyPackets(){return this.internalTrack.hasOnlyKeyPackets||null}async getFirstPacket(e){return await this.hydrate(),this.internalTrack.backingTrack.getFirstPacket(e)}async getPacket(e,t){return await this.hydrate(),this.internalTrack.backingTrack.getPacket(e,t)}async getKeyPacket(e,t){return await this.hydrate(),this.internalTrack.backingTrack.getKeyPacket(e,t)}async getNextPacket(e,t){return await this.hydrate(),this.internalTrack.backingTrack.getNextPacket(e,t)}async getNextKeyPacket(e,t){return await this.hydrate(),this.internalTrack.backingTrack.getNextKeyPacket(e,t)}},ss=class extends os{constructor(e){super(e)}get backingVideoTrack(){return this.internalTrack.backingTrack}getType(){return`video`}getCodec(){return Vr(this.internalTrack.fullCodecString)}getCodedWidth(){return this.delegate(()=>this.backingVideoTrack.getCodedWidth())}getCodedHeight(){return this.delegate(()=>this.backingVideoTrack.getCodedHeight())}getSquarePixelWidth(){return this.delegate(()=>this.backingVideoTrack.getSquarePixelWidth())}getSquarePixelHeight(){return this.delegate(()=>this.backingVideoTrack.getSquarePixelHeight())}getMetadataDisplayWidth(){return this.backingVideoTrack?null:this.internalTrack.info.width}getMetadataDisplayHeight(){return this.backingVideoTrack?null:this.internalTrack.info.height}getTransformationMatrix(){return this.delegate(()=>this.backingVideoTrack.getTransformationMatrix())}async getColorSpace(){return await this.hydrate(),this.backingVideoTrack.getColorSpace()}async canBeTransparent(){return await this.hydrate(),this.backingVideoTrack.canBeTransparent()}getMetadataCodecParameterString(){return this.backingVideoTrack?null:this.internalTrack.fullCodecString}async getDecoderConfig(){return await this.hydrate(),this.backingVideoTrack.getDecoderConfig()}},cs=class extends os{constructor(e){super(e)}get backingAudioTrack(){return this.internalTrack.backingTrack}getType(){return`audio`}getCodec(){return Vr(this.internalTrack.fullCodecString)}getNumberOfChannels(){return this.internalTrack.info.numberOfChannels===null?this.delegate(()=>this.backingAudioTrack.getNumberOfChannels()):this.internalTrack.info.numberOfChannels}getSampleRate(){return this.delegate(()=>this.backingAudioTrack.getSampleRate())}getMetadataCodecParameterString(){return this.backingAudioTrack?null:this.internalTrack.fullCodecString}async getDecoderConfig(){return await this.hydrate(),this.backingAudioTrack.getDecoderConfig()}};const ls=e=>{let t=e.get(`default`);if(t===null)return!1;let n=t.toUpperCase();if(n===`YES`)return!0;if(n===`NO`)return!1;throw Error(`Invalid M3U8 file; #EXT-X-MEDIA DEFAULT attribute must be YES or NO, got "${t}".`)},us=e=>{let t=e.get(`autoselect`);if(t===null)return!1;let n=t.toUpperCase();if(n===`YES`)return!0;if(n===`NO`)return!1;throw Error(`Invalid M3U8 file; #EXT-X-MEDIA AUTOSELECT attribute must be YES or NO, got "${t}".`)},ds=e=>e===null?`und`:e.split(`-`)[0]||`und`;
281
+ super(e),this.metadataPromise=null,this.trackBackings=null,this.internalTracks=null,this.segmentedInputs=[],this.hasMasterPlaylist=!0}readMetadata(){return this.metadataPromise??=(async()=>{n(this.input._rootSource instanceof Fo);let e=await this.input._reader.requestEntireFile();n(e);let t=_u(e,e.length,{ignore:Co}),{rootPath:r}=this.input._rootSource,i=[],a=[];for(let e=1;e<t.length;e++){let n=t[e];if(n.startsWith(`#EXT-X-STREAM-INF:`)){let a=e,o=t[++e];if(o===void 0)throw Error(`Incorrect M3U8 file; a line must follow the #EXT-X-STREAM-INF tag.`);let s=pt(r,o),c=new wo(n.slice(18));if(c.getAsNumber(`bandwidth`)===null)throw Error(`Invalid M3U8 file; #EXT-X-STREAM-INF tag requires a BANDWIDTH attribute with a valid numerical value.`);i.push({fullPath:s,attributes:c,lineNumber:a,hasOnlyKeyPackets:!1})}else if(n.startsWith(`#EXT-X-I-FRAME-STREAM-INF:`)){let t=new wo(n.slice(26)),a=t.get(`uri`);if(a===null)throw Error(`Invalid M3U8 file; #EXT-X-I-FRAME-STREAM-INF tag requires a URI attribute.`);if(t.getAsNumber(`bandwidth`)===null)throw Error(`Invalid M3U8 file; #EXT-X-I-FRAME-STREAM-INF tag requires a BANDWIDTH attribute with a valid numerical value.`);let o=pt(r,a);i.push({fullPath:o,attributes:t,lineNumber:e,hasOnlyKeyPackets:!0})}else if(n.startsWith(`#EXT-X-MEDIA:`)){let t=new wo(n.slice(13));if(t.get(`type`)===null)throw Error(`Invalid M3U8 file; #EXT-X-MEDIA tag requires a TYPE attribute.`);if(t.get(`group-id`)===null)throw Error(`Invalid M3U8 file; #EXT-X-MEDIA tag requires a GROUP-ID attribute.`);let i=null,o=t.get(`uri`);o!==null&&(i=pt(r,o)),a.push({fullPath:i,attributes:t,lineNumber:e})}else if(n!==`#EXT-X-I-FRAMES-ONLY`&&n.startsWith(`#EXTINF:`)){let e=new is(this,r,null,t);this.segmentedInputs=[e],this.hasMasterPlaylist=!1,this.trackBackings=await e.getTrackBackings();return}}let o=await Promise.all(i.map(async(e,t)=>{let i=[],o=e.attributes.get(`codecs`),s;if(o)s=o.split(`,`).map(e=>e.trim());else{let t=await this.getSegmentedInputForPath(e.fullPath).getTrackBackings(),n=await Promise.all(t.map(async e=>({track:e,codec:await e.getCodec()})));s=await Promise.all(n.filter(e=>e.codec!==null).map(e=>e.track.getDecoderConfig().then(e=>e.codec)))}let c=e.attributes.get(`video`),l=e.attributes.get(`audio`),u=s.some(e=>N.includes(Vr(e))),d=s.some(e=>F.includes(Vr(e)));if(c!==null&&!u){let e=a.find(e=>{let t=e.attributes.get(`group-id`),n=e.attributes.get(`type`);return t===c&&n.toLowerCase()===`video`});outer:if(e){let t=e.attributes.get(`uri`);if(t===null)break outer;let i=pt(r,t),a=(await this.getSegmentedInputForPath(i).getTrackBackings()).find(e=>e.getType()===`video`);if(!a||await a.getCodec()===null)break outer;let o=await a.getDecoderConfig().then(e=>e?.codec??null);n(o!==null),s.push(o)}}if(l!==null&&!d){let e=a.find(e=>{let t=e.attributes.get(`group-id`),n=e.attributes.get(`type`);return t===l&&n.toLowerCase()===`audio`});outer:if(e){let t=e.attributes.get(`uri`);if(t===null)break outer;let i=pt(r,t),a=(await this.getSegmentedInputForPath(i).getTrackBackings()).find(e=>e.getType()===`audio`);if(!a||await a.getCodec()===null)break outer;let o=await a.getDecoderConfig().then(e=>e?.codec??null);n(o!==null),s.push(o)}}s=[...new Set(s)];let f=null,p=null,m=e.attributes.getAsNumber(`bandwidth`);n(m!==null);let h=e.attributes.getAsNumber(`average-bandwidth`),g=e.attributes.get(`name`);for(let n of s){let r=Vr(n);if(r!==null){if(N.includes(r)){if(f!==null)throw Error(`Unsupported M3U8 file; multiple video codecs found in the CODECS attribute of a variant stream.`);f=n;let r=e.attributes.get(`video`);if(r===null){let n=e.attributes.get(`resolution`),r=null,a=null;if(n){let e=n.match(/^(\d+)x(\d+)$/);e&&(r=Number(e[1]),a=Number(e[2]))}i.push({id:-1,demuxer:this,backingTrack:null,default:!0,autoselect:!0,languageCode:`und`,lineNumber:e.lineNumber,fullPath:e.fullPath,fullCodecString:f,pairingMask:1n<<BigInt(t),peakBitrate:m,averageBitrate:h,name:g,hasOnlyKeyPackets:e.hasOnlyKeyPackets,info:{type:`video`,width:r,height:a}})}else for(let n of a){let a=n.attributes.get(`group-id`),o=n.attributes.get(`type`);if(a!==r||o.toLowerCase()!==`video`)continue;let s=n.attributes.get(`resolution`)??e.attributes.get(`resolution`),c=null,l=null;if(s){let e=s.match(/^(\d+)x(\d+)$/);e&&(c=Number(e[1]),l=Number(e[2]))}i.push({id:-1,demuxer:this,backingTrack:null,default:ls(n.attributes),autoselect:ls(n.attributes)||us(n.attributes),languageCode:ds(n.attributes.get(`language`)),lineNumber:n.lineNumber,fullPath:n.fullPath??e.fullPath,fullCodecString:f,pairingMask:1n<<BigInt(t),peakBitrate:n.fullPath===null?m:null,averageBitrate:n.fullPath===null?h:null,name:n.attributes.get(`name`),hasOnlyKeyPackets:e.hasOnlyKeyPackets,info:{type:`video`,width:c,height:l}})}}else if(F.includes(r)){if(p!==null)throw Error(`Unsupported M3U8 file; multiple audio codecs found in the CODECS attribute of a variant stream.`);p=n;let r=e.attributes.get(`audio`);if(r===null){let n=e.attributes.get(`channels`),r=n===null?null:Number(n.split(`/`)[0]);i.push({id:-1,demuxer:this,backingTrack:null,default:!0,autoselect:!0,languageCode:`und`,lineNumber:e.lineNumber,fullPath:e.fullPath,fullCodecString:p,pairingMask:1n<<BigInt(t),peakBitrate:m,averageBitrate:h,name:g,hasOnlyKeyPackets:e.hasOnlyKeyPackets,info:{type:`audio`,numberOfChannels:r!==null&&Number.isInteger(r)&&r>0?r:null}})}else for(let n of a){let a=n.attributes.get(`group-id`),o=n.attributes.get(`type`);if(a!==r||o.toLowerCase()!==`audio`)continue;let s=n.attributes.get(`channels`)??e.attributes.get(`channels`),c=s===null?null:Number(s.split(`/`)[0]);i.push({id:-1,demuxer:this,backingTrack:null,default:ls(n.attributes),autoselect:ls(n.attributes)||us(n.attributes),languageCode:ds(n.attributes.get(`language`)),lineNumber:n.lineNumber,fullPath:n.fullPath??e.fullPath,fullCodecString:p,pairingMask:1n<<BigInt(t),peakBitrate:n.fullPath===null?m:null,averageBitrate:n.fullPath===null?h:null,name:n.attributes.get(`name`),hasOnlyKeyPackets:e.hasOnlyKeyPackets,info:{type:`audio`,numberOfChannels:c!==null&&Number.isInteger(c)&&c>0?c:null}})}}}}return i})),s=[],c=e=>{let t=s.find(t=>t.fullPath===e.fullPath&&t.info.type===e.info.type);t?(t.pairingMask|=e.pairingMask,t.default||=e.default,t.autoselect||=e.autoselect,t.lineNumber=Math.min(t.lineNumber,e.lineNumber),e.peakBitrate!==null&&(t.peakBitrate=Math.max(t.peakBitrate??-1/0,e.peakBitrate)),e.averageBitrate!==null&&(t.averageBitrate=Math.max(t.averageBitrate??-1/0,e.averageBitrate)),t.languageCode===`und`&&(t.languageCode=e.languageCode)):(e.id=s.length+1,s.push(e))};for(let e of o)for(let t of e)c(t);s.sort((e,t)=>e.lineNumber-t.lineNumber),this.trackBackings=[];for(let e of s)e.info.type===`video`?this.trackBackings.push(new ss(e)):this.trackBackings.push(new cs(e));this.internalTracks=s})()}async getTrackBackings(){return await this.readMetadata(),n(this.trackBackings),this.trackBackings}getSegmentedInputForPath(e){let t=this.segmentedInputs.find(t=>t.path===e);if(t)return t;let n=null;return this.internalTracks&&(n=this.internalTracks.filter(t=>t.fullPath===e).map(e=>({id:e.id,type:e.info.type}))),t=new is(this,e,n,null),this.segmentedInputs.push(t),t}async getMetadataTags(){return{}}async getMimeType(){return So}dispose(){if(this.segmentedInputs){for(let e of this.segmentedInputs)e.dispose();this.segmentedInputs.length=0}}},os=class{constructor(e){this.internalTrack=e,this.hydrationPromise=null}hydrate(){return this.hydrationPromise??=(async()=>{let e=this.internalTrack.demuxer.getSegmentedInputForPath(this.internalTrack.fullPath),t=null,r=(await e.getTrackBackings()).filter(e=>e.getType()===this.getType());if(r.length===1)t=r[0];else if(this instanceof ss){for(let e of r)if(await e.getCodec()===this.getCodec()){t=e;break}}else{n(this instanceof cs);for(let e of r)if(await e.getCodec()===this.getCodec()){t=e;break}}if(!t)throw Error(`Could not find matching track in underlying media data.`);this.internalTrack.backingTrack=t})()}delegate(e){return this.internalTrack.backingTrack?e():this.hydrate().then(e)}getCodec(){throw Error(`Not implemented on base class.`)}getDisposition(){return{...zt,default:this.internalTrack.autoselect,primary:this.internalTrack.default}}getId(){return this.internalTrack.id}getPairingMask(){return this.internalTrack.pairingMask}getInternalCodecId(){return null}getLanguageCode(){return this.internalTrack.languageCode}getName(){return this.internalTrack.name}getNumber(){n(this.internalTrack.demuxer.internalTracks);let e=this.internalTrack.info.type,t=0;for(let n of this.internalTrack.demuxer.internalTracks)if(n.info.type===e&&t++,n===this.internalTrack)break;return t}getTimeResolution(){return this.delegate(()=>this.internalTrack.backingTrack.getTimeResolution())}isRelativeToUnixEpoch(){return this.delegate(()=>this.internalTrack.backingTrack.isRelativeToUnixEpoch())}getUnixTimeForTimestamp(e){return this.delegate(()=>this.internalTrack.backingTrack.getUnixTimeForTimestamp(e))}getBitrate(){return this.internalTrack.peakBitrate}getAverageBitrate(){return this.internalTrack.averageBitrate}async getDurationFromMetadata(e){return await this.hydrate(),this.internalTrack.backingTrack.getDurationFromMetadata(e)}async getLiveRefreshInterval(){return await this.hydrate(),this.internalTrack.backingTrack.getLiveRefreshInterval()}getHasOnlyKeyPackets(){return this.internalTrack.hasOnlyKeyPackets||null}async getFirstPacket(e){return await this.hydrate(),this.internalTrack.backingTrack.getFirstPacket(e)}async getPacket(e,t){return await this.hydrate(),this.internalTrack.backingTrack.getPacket(e,t)}async getKeyPacket(e,t){return await this.hydrate(),this.internalTrack.backingTrack.getKeyPacket(e,t)}async getNextPacket(e,t){return await this.hydrate(),this.internalTrack.backingTrack.getNextPacket(e,t)}async getNextKeyPacket(e,t){return await this.hydrate(),this.internalTrack.backingTrack.getNextKeyPacket(e,t)}},ss=class extends os{constructor(e){super(e)}get backingVideoTrack(){return this.internalTrack.backingTrack}getType(){return`video`}getCodec(){return Vr(this.internalTrack.fullCodecString)}getCodedWidth(){return this.delegate(()=>this.backingVideoTrack.getCodedWidth())}getCodedHeight(){return this.delegate(()=>this.backingVideoTrack.getCodedHeight())}getSquarePixelWidth(){return this.delegate(()=>this.backingVideoTrack.getSquarePixelWidth())}getSquarePixelHeight(){return this.delegate(()=>this.backingVideoTrack.getSquarePixelHeight())}getMetadataDisplayWidth(){return this.backingVideoTrack?null:this.internalTrack.info.width}getMetadataDisplayHeight(){return this.backingVideoTrack?null:this.internalTrack.info.height}getTransformationMatrix(){return this.delegate(()=>this.backingVideoTrack.getTransformationMatrix())}async getColorSpace(){return await this.hydrate(),this.backingVideoTrack.getColorSpace()}async canBeTransparent(){return await this.hydrate(),this.backingVideoTrack.canBeTransparent()}getMetadataCodecParameterString(){return this.backingVideoTrack?null:this.internalTrack.fullCodecString}async getDecoderConfig(){return await this.hydrate(),this.backingVideoTrack.getDecoderConfig()}},cs=class extends os{constructor(e){super(e)}get backingAudioTrack(){return this.internalTrack.backingTrack}getType(){return`audio`}getCodec(){return Vr(this.internalTrack.fullCodecString)}getNumberOfChannels(){return this.internalTrack.info.numberOfChannels===null?this.delegate(()=>this.backingAudioTrack.getNumberOfChannels()):this.internalTrack.info.numberOfChannels}getSampleRate(){return this.delegate(()=>this.backingAudioTrack.getSampleRate())}getMetadataCodecParameterString(){return this.backingAudioTrack?null:this.internalTrack.fullCodecString}async getDecoderConfig(){return await this.hydrate(),this.backingAudioTrack.getDecoderConfig()}};const ls=e=>{let t=e.get(`default`);if(t===null)return!1;let n=t.toUpperCase();if(n===`YES`)return!0;if(n===`NO`)return!1;throw Error(`Invalid M3U8 file; #EXT-X-MEDIA DEFAULT attribute must be YES or NO, got "${t}".`)},us=e=>{let t=e.get(`autoselect`);if(t===null)return!1;let n=t.toUpperCase();if(n===`YES`)return!0;if(n===`NO`)return!1;throw Error(`Invalid M3U8 file; #EXT-X-MEDIA AUTOSELECT attribute must be YES or NO, got "${t}".`)},ds=e=>e===null?`und`:e.split(`-`)[0]||`und`;
282
282
  /*!
283
283
  * Copyright (c) 2026-present, Vanilagy and contributors
284
284
  *
@@ -342,7 +342,7 @@ if(!e||typeof e!=`object`)throw TypeError(`options must be an object.`);if(e.met
342
342
  * License, v. 2.0. If a copy of the MPL was not distributed with this
343
343
  * file, You can obtain one at https://mozilla.org/MPL/2.0/.
344
344
  */
345
- this.input=e,this._backing=t}isVideoTrack(){return this instanceof Vl}isAudioTrack(){return this instanceof Hl}get id(){return this._backing.getId()}get number(){return this._backing.getNumber()}async getInternalCodecId(){return this._backing.getInternalCodecId()}get internalCodecId(){return B(this._backing.getInternalCodecId(),`internalCodecId`,`getInternalCodecId`)}async getLanguageCode(){return this._backing.getLanguageCode()}get languageCode(){return B(this._backing.getLanguageCode(),`languageCode`,`getLanguageCode`)}async getName(){return this._backing.getName()}get name(){return B(this._backing.getName(),`name`,`getName`)}async getTimeResolution(){return this._backing.getTimeResolution()}get timeResolution(){return B(this._backing.getTimeResolution(),`timeResolution`,`getTimeResolution`)}async isRelativeToUnixEpoch(){return this._backing.isRelativeToUnixEpoch()}async getUnixTimeForTimestamp(e){return this._backing.getUnixTimeForTimestamp(e)}async hasUnixTimeMapping(){return await this._backing.getUnixTimeForTimestamp(await this.getFirstTimestamp())!==null}async getDisposition(){return this._backing.getDisposition()}get disposition(){return B(this._backing.getDisposition(),`disposition`,`getDisposition`)}async getBitrate(){return this._backing.getBitrate()}async getAverageBitrate(){return this._backing.getAverageBitrate()}async getFirstTimestamp(){return(await this._backing.getFirstPacket({metadataOnly:!0}))?.timestamp??0}async computeDuration(e){let t=await this._backing.getPacket(1/0,{metadataOnly:!0,...e}),n=(t?.timestamp??0)+(t?.duration??0);return Le(n,await this.getTimeResolution())}async getDurationFromMetadata(e={}){return this._backing.getDurationFromMetadata(e)}async computePacketStats(e=1/0,t){let n=new wl(this),r=1/0,i=-1/0,a=0,o=0;for await(let s of n.packets(void 0,void 0,{metadataOnly:!0,...t})){if(a>=e&&s.timestamp>=i)break;r=Math.min(r,s.timestamp),i=Math.max(i,s.timestamp+s.duration),a++,o+=s.byteLength}return{packetCount:a,averagePacketRate:a?Number((a/(i-r)).toPrecision(16)):0,averageBitrate:a?Number((8*o/(i-r)).toPrecision(16)):0}}async isLive(){return await this._backing.getLiveRefreshInterval()!==null}async getLiveRefreshInterval(){return this._backing.getLiveRefreshInterval()}canBePairedWith(t){if(!(t instanceof e))throw TypeError(`other must be an InputTrack.`);return this.input!==t.input||this===t?!1:(this._backing.getPairingMask()&t._backing.getPairingMask())!==0n}async getPairableTracks(e){return this.input.getTracks(ql({filter:e=>e.canBePairedWith(this)},e))}async getPairableVideoTracks(e){return this.input.getVideoTracks(ql({filter:e=>e.canBePairedWith(this)},e))}async getPairableAudioTracks(e){return this.input.getAudioTracks(ql({filter:e=>e.canBePairedWith(this)},e))}async getPrimaryPairableVideoTrack(e){return this.input.getPrimaryVideoTrack(ql({filter:e=>e.canBePairedWith(this)},e))}async getPrimaryPairableAudioTrack(e){return this.input.getPrimaryAudioTrack(ql({filter:e=>e.canBePairedWith(this)},e))}async hasPairableTrack(e){e&&=Bl(e);let t=await this.input.getTracks();for(let n of t)if(this.canBePairedWith(n)&&(!e||await e(n)))return!0;return!1}hasPairableVideoTrack(e){return e&&=Bl(e),this.hasPairableTrack(async t=>t.isVideoTrack()&&(!e||await e(t)))}hasPairableAudioTrack(e){return e&&=Bl(e),this.hasPairableTrack(async t=>t.isAudioTrack()&&(!e||await e(t)))}};const B=(e,t,n)=>{if(k(e))throw Error(`'${t}' is deprecated and not available synchronously for this track. Use the preferred '${n}()' instead.`);return e},Bl=e=>{if(e!==void 0&&typeof e!=`function`)throw TypeError(`predicate, when provided, must be a function.`);return e?t=>{let n=e=>{if(typeof e!=`boolean`)throw TypeError(`predicate must return or resolve to a boolean value.`);return e},r=e(t);return k(r)?r.then(n):n(r)}:void 0};var Vl=class extends zl{constructor(e,t){super(e,t),this._pixelAspectRatioCache=null,this._backing=t}get type(){return`video`}async getCodec(){return this._backing.getCodec()}get codec(){return B(this._backing.getCodec(),`codec`,`getCodec`)}async hasOnlyKeyPackets(){return await this._backing.getHasOnlyKeyPackets?.()??await this._backing.getCodec()===`prores`}async getCodedWidth(){return this._backing.getCodedWidth()}get codedWidth(){return B(this._backing.getCodedWidth(),`codedWidth`,`getCodedWidth`)}async getCodedHeight(){return this._backing.getCodedHeight()}get codedHeight(){return B(this._backing.getCodedHeight(),`codedHeight`,`getCodedHeight`)}async getTransformationMatrix(){return this._backing.getTransformationMatrix()}async getRotation(){return c(await this._backing.getTransformationMatrix())}get rotation(){return c(B(this._backing.getTransformationMatrix(),`rotation`,`getRotation`))}async getFlip(){return l(await this._backing.getTransformationMatrix())}async getSquarePixelWidth(){return this._backing.getSquarePixelWidth()}get squarePixelWidth(){return B(this._backing.getSquarePixelWidth(),`squarePixelWidth`,`getSquarePixelWidth`)}async getSquarePixelHeight(){return this._backing.getSquarePixelHeight()}get squarePixelHeight(){return B(this._backing.getSquarePixelHeight(),`squarePixelHeight`,`getSquarePixelHeight`)}async getPixelAspectRatio(){return this._pixelAspectRatioCache??=_t({num:await this.getSquarePixelWidth()*await this.getCodedHeight(),den:await this.getSquarePixelHeight()*await this.getCodedWidth()})}get pixelAspectRatio(){return this._pixelAspectRatioCache??=_t({num:B(this._backing.getSquarePixelWidth(),`pixelAspectRatio`,`getPixelAspectRatio`)*B(this._backing.getCodedHeight(),`pixelAspectRatio`,`getPixelAspectRatio`),den:B(this._backing.getSquarePixelHeight(),`pixelAspectRatio`,`getPixelAspectRatio`)*B(this._backing.getCodedWidth(),`pixelAspectRatio`,`getPixelAspectRatio`)})}async getDisplayWidth(){return await this._backing.getMetadataDisplayWidth?.()??(await this.getRotation()%180==0?this.getSquarePixelWidth():this.getSquarePixelHeight())}get displayWidth(){let e=this._backing.getMetadataDisplayWidth?.();if(e!==void 0){let t=B(e,`displayWidth`,`getDisplayWidth`);if(t!==null)return t}let t=c(B(this._backing.getTransformationMatrix(),`displayWidth`,`getDisplayWidth`))%180==0?this._backing.getSquarePixelWidth():this._backing.getSquarePixelHeight();return B(t,`displayWidth`,`getDisplayWidth`)}async getDisplayHeight(){return await this._backing.getMetadataDisplayHeight?.()??(await this.getRotation()%180==0?this.getSquarePixelHeight():this.getSquarePixelWidth())}get displayHeight(){let e=this._backing.getMetadataDisplayHeight?.();if(e!==void 0){let t=B(e,`displayHeight`,`getDisplayHeight`);if(t!==null)return t}let t=c(B(this._backing.getTransformationMatrix(),`displayHeight`,`getDisplayHeight`))%180==0?this._backing.getSquarePixelHeight():this._backing.getSquarePixelWidth();return B(t,`displayHeight`,`getDisplayHeight`)}async getColorSpace(){return this._backing.getColorSpace()}async hasHighDynamicRange(){let e=await this._backing.getColorSpace();return e.primaries===`bt2020`||e.primaries===`smpte432`||e.transfer===`pq`||e.transfer===`hlg`||e.matrix===`bt2020-ncl`}async canBeTransparent(){return this._backing.canBeTransparent()}async getDecoderConfig(){return this._backing.getDecoderConfig()}async getCodecParameterString(){return await this._backing.getMetadataCodecParameterString?.()??(await this._backing.getDecoderConfig())?.codec??null}async canDecode(){try{let e=await this._backing.getDecoderConfig();if(!e)return!1;let t=await this._backing.getCodec();return n(t!==null),dl.some(n=>n.supports(t,e))?!0:typeof VideoDecoder>`u`?!1:(await VideoDecoder.isConfigSupported(e)).supported===!0}catch(e){return A._error(`Error during decodability check:`,e),!1}}async determinePacketType(e){if(!(e instanceof I))throw TypeError(`packet must be an EncodedPacket.`);if(e.isMetadataOnly)throw TypeError(`packet must not be metadata-only to determine its type.`);let t=await this.getCodec();if(t===null)return null;let r=await this.getDecoderConfig();return n(r),Kn(t,r,e.data)}async computeFrameRateMetrics(e={}){if(!e||typeof e!=`object`)throw TypeError(`options must be an object.`);if(e.targetPacketCount!==void 0&&(!ft(e.targetPacketCount)||e.targetPacketCount<0))throw TypeError(`options.targetPacketCount must be a non-negative number.`);let t=await this.getTimeResolution(),n=e.targetPacketCount??256,r=new wl(this),i=[],a=-1/0,o=0;for await(let e of r.packets(void 0,void 0,{metadataOnly:!0})){if(i.length>=n&&e.timestamp>=a)break;i.push(e.timestamp),a=Math.max(a,e.timestamp),o++}let s=new Float64Array(i.length);for(let e=0;e<i.length;e++)s[e]=Math.round(i[e]*t);s.sort();let c=1;for(let e=1;e<s.length;e++)s[e]!==s[c-1]&&(s[c++]=s[e]);if(c<2)return{underlyingFrameRate:null,bestGuessFrameRate:t,minFrameRate:t,maxFrameRate:t,averageFrameRate:t,medianFrameRate:t,frameRateIsConstant:!0,probedPacketCount:o};let l=s.subarray(0,c),u=Yl(l,t),d=u??t,f=u===null?null:t/u,p=new Map,m=1/0,h=-1/0,g=0;for(let e=1;e<c;e++){let t=l[e]-l[e-1],n=f===null?t:Math.max(1,Math.round(t/f));p.set(n,(p.get(n)??0)+1),m=Math.min(m,n),h=Math.max(h,n),g+=n}let _=c-1,v=[...p.keys()].sort((e,t)=>e-t),y=_-1>>1,b=_>>1,x=0,S=0,C=0;for(let e of v)if(C+=p.get(e),x===0&&C>y&&(x=e),C>b){S=e;break}let ee=(d/x+d/S)/2;return{underlyingFrameRate:u,bestGuessFrameRate:u===null?Zl(ee):u,minFrameRate:d/h,maxFrameRate:d/m,averageFrameRate:d*_/g,medianFrameRate:ee,frameRateIsConstant:u!==null&&m===1&&h===1,probedPacketCount:o}}},Hl=class extends zl{constructor(e,t){super(e,t),this._backing=t}get type(){return`audio`}async getCodec(){return this._backing.getCodec()}get codec(){return B(this._backing.getCodec(),`codec`,`getCodec`)}async hasOnlyKeyPackets(){return await this._backing.getHasOnlyKeyPackets?.()??!0}async getNumberOfChannels(){return this._backing.getNumberOfChannels()}get numberOfChannels(){return B(this._backing.getNumberOfChannels(),`numberOfChannels`,`getNumberOfChannels`)}async getSampleRate(){return this._backing.getSampleRate()}get sampleRate(){return B(this._backing.getSampleRate(),`sampleRate`,`getSampleRate`)}async getDecoderConfig(){return this._backing.getDecoderConfig()}async getCodecParameterString(){return await this._backing.getMetadataCodecParameterString?.()??(await this._backing.getDecoderConfig())?.codec??null}async canDecode(){try{let e=await this._backing.getDecoderConfig();if(!e)return!1;let t=await this._backing.getCodec();return n(t!==null),fl.some(n=>n.supports(t,e))||P.includes(e.codec)?!0:typeof AudioDecoder>`u`?!1:(await AudioDecoder.isConfigSupported(e)).supported===!0}catch(e){return A._error(`Error during decodability check:`,e),!1}}async determinePacketType(e){if(!(e instanceof I))throw TypeError(`packet must be an EncodedPacket.`);return await this.getCodec()===null?null:`key`}};const Ul=e=>e??1/0,Wl=e=>-(e??-1/0),Gl=e=>-e,Kl=e=>{if(typeof e!=`object`||!e)throw TypeError(`query must be an object.`);if(e.filter!==void 0&&typeof e.filter!=`function`)throw TypeError(`query.filter, when provided, must be a function.`);if(e.sortBy!==void 0&&typeof e.sortBy!=`function`)throw TypeError(`query.sortBy, when provided, must be a function.`);return{filter:e.filter?t=>{let n=e=>{if(typeof e!=`boolean`)throw TypeError(`query.filter must return or resolve to a boolean.`);return e},r=e.filter(t);return k(r)?r.then(n):n(r)}:void 0,sortBy:e.sortBy?t=>{let n=e=>{if(typeof e!=`number`&&(!Array.isArray(e)||!e.every(e=>typeof e==`number`)))throw TypeError(`query.sortBy must return or resolve to a number or an array of numbers.`);return e},r=e.sortBy(t);return k(r)?r.then(n):n(r)}:void 0}},ql=(e,t)=>({filter:e?.filter||t?.filter?n=>{let r=e?.filter?.(n)??!0,i=e=>e===!1?!1:t?.filter?.(n)??!0;return k(r)?r.then(i):i(r)}:void 0,sortBy:e?.sortBy||t?.sortBy?n=>{let r=e?.sortBy?.(n)??[],i=t?.sortBy?.(n)??[],a=(e,t)=>[...Array.isArray(e)?e:[e],...Array.isArray(t)?t:[t]];return k(r)||k(i)?Promise.all([r,i]).then(([e,t])=>a(e,t)):a(r,i)}:void 0}),Jl=async(e,t)=>{let n=e;if(t?.filter){let r=e.map(e=>t.filter(e));if(r.some(e=>k(e))){let t=await Promise.all(r);n=e.filter((e,n)=>t[n])}else n=e.filter((e,t)=>r[t])}if(!t?.sortBy)return n;let r=n.map(e=>t.sortBy(e)),i=r.some(e=>k(e))?await Promise.all(r):r;return n.map((e,t)=>({track:e,sortValue:i[t]})).sort((e,t)=>{let n=Array.isArray(e.sortValue)?e.sortValue:[e.sortValue],r=Array.isArray(t.sortValue)?t.sortValue:[t.sortValue],i=Math.max(n.length,r.length);for(let e=0;e<i;e++){let t=n[e]??0,i=r[e]??0;if(t!==i)return t-i}return 0}).map(e=>e.track)},Yl=(e,t)=>{let n=1e6,r=.98,i=1+1e-9,a=[12,15,20,24e3/1001,24,25,3e4/1001,30,48,50,6e4/1001,60,100,12e4/1001,120,144,240];if(e.length<2)return null;let o=new Float64Array(e.length-1);for(let t=1;t<e.length;t++){let n=e[t]-e[t-1];if(!(n>0))return null;o[t-1]=n}let s=o.slice();s.sort();let c=s[Math.floor(s.length*.05)];for(let e=0;e<6;e++){let e=0,t=0;for(let n of o){let r=Math.max(1,Math.round(n/c));Math.abs(n-r*c)>=i||(e+=n,t+=r)}if(t===0)return null;let n=e/t;if(Math.abs(n-c)<=1e-12*Math.max(1,c)){c=n;break}c=n}let l=0,u=0,d=0;for(let e of o){let t=Math.max(1,Math.round(e/c));Math.abs(e-t*c)>=i||(l++,u+=e,d+=t)}if(l/o.length<r)return null;c=u/d;let f=1/Math.min(d,1e3),p=Math.max(2**-52,c-f),m=c+f,h=t/m,g=t/p,_=t/c,v=null,y=1/0;for(let e of a){if(e<h||e>g)continue;let t=Math.abs(e/_-1);t<y&&(v=e,y=t)}if(v===null){let e=Xl(p,m,n),r=Xl(h,g,n);if(r&&(!e||r.den<e.den||r.den===e.den&&r.num<=e.num))v=r.num/r.den;else if(e)v=t*e.den/e.num;else return null}let b=t/v,x=0;for(let e of o){let t=Math.max(1,Math.round(e/b));Math.abs(e-t*b)<i&&x++}return x/o.length<r?null:v},Xl=(e,t,n)=>{for(let r=1;r<=n;r++){let n=Math.floor(e*r)+1;if(n/r<t)return _t({num:n,den:r})}return null},Zl=e=>{let t=[24/1.001,30/1.001,60/1.001,120/1.001],n=[12,15,20,24,25,30,48,50,60,100,120,144,240];for(let n of t)if(Math.abs(n/e-1)<=5e-4)return n;let r=e,i=1/0;for(let t of n){let n=Math.abs(t/e-1);n<=.025&&n<i&&(r=t,i=n)}return r};
345
+ this.input=e,this._backing=t}isVideoTrack(){return this instanceof Vl}isAudioTrack(){return this instanceof Hl}get id(){return this._backing.getId()}get number(){return this._backing.getNumber()}async getInternalCodecId(){return this._backing.getInternalCodecId()}get internalCodecId(){return B(this._backing.getInternalCodecId(),`internalCodecId`,`getInternalCodecId`)}async getLanguageCode(){return this._backing.getLanguageCode()}get languageCode(){return B(this._backing.getLanguageCode(),`languageCode`,`getLanguageCode`)}async getName(){return this._backing.getName()}get name(){return B(this._backing.getName(),`name`,`getName`)}async getTimeResolution(){return this._backing.getTimeResolution()}get timeResolution(){return B(this._backing.getTimeResolution(),`timeResolution`,`getTimeResolution`)}async isRelativeToUnixEpoch(){return this._backing.isRelativeToUnixEpoch()}async getUnixTimeForTimestamp(e){return this._backing.getUnixTimeForTimestamp(e)}async hasUnixTimeMapping(){return await this._backing.getUnixTimeForTimestamp(await this.getFirstTimestamp())!==null}async getDisposition(){return this._backing.getDisposition()}get disposition(){return B(this._backing.getDisposition(),`disposition`,`getDisposition`)}async getBitrate(){return this._backing.getBitrate()}async getAverageBitrate(){return this._backing.getAverageBitrate()}async getFirstTimestamp(){return(await this._backing.getFirstPacket({metadataOnly:!0}))?.timestamp??0}async computeDuration(e){let t=await this._backing.getPacket(1/0,{metadataOnly:!0,...e}),n=(t?.timestamp??0)+(t?.duration??0);return Le(n,await this.getTimeResolution())}async getDurationFromMetadata(e={}){return this._backing.getDurationFromMetadata(e)}async computePacketStats(e=1/0,t){let n=new wl(this),r=1/0,i=-1/0,a=0,o=0;for await(let s of n.packets(void 0,void 0,{metadataOnly:!0,...t})){if(a>=e&&s.timestamp>=i)break;r=Math.min(r,s.timestamp),i=Math.max(i,s.timestamp+s.duration),a++,o+=s.byteLength}return{packetCount:a,averagePacketRate:a?Number((a/(i-r)).toPrecision(16)):0,averageBitrate:a?Number((8*o/(i-r)).toPrecision(16)):0}}async isLive(){return await this._backing.getLiveRefreshInterval()!==null}async getLiveRefreshInterval(){return this._backing.getLiveRefreshInterval()}canBePairedWith(t){if(!(t instanceof e))throw TypeError(`other must be an InputTrack.`);return this.input!==t.input||this===t?!1:(this._backing.getPairingMask()&t._backing.getPairingMask())!==0n}async getPairableTracks(e){return this.input.getTracks(ql({filter:e=>e.canBePairedWith(this)},e))}async getPairableVideoTracks(e){return this.input.getVideoTracks(ql({filter:e=>e.canBePairedWith(this)},e))}async getPairableAudioTracks(e){return this.input.getAudioTracks(ql({filter:e=>e.canBePairedWith(this)},e))}async getPrimaryPairableVideoTrack(e){return this.input.getPrimaryVideoTrack(ql({filter:e=>e.canBePairedWith(this)},e))}async getPrimaryPairableAudioTrack(e){return this.input.getPrimaryAudioTrack(ql({filter:e=>e.canBePairedWith(this)},e))}async hasPairableTrack(e){e&&=Bl(e);let t=await this.input.getTracks();for(let n of t)if(this.canBePairedWith(n)&&(!e||await e(n)))return!0;return!1}hasPairableVideoTrack(e){return e&&=Bl(e),this.hasPairableTrack(async t=>t.isVideoTrack()&&(!e||await e(t)))}hasPairableAudioTrack(e){return e&&=Bl(e),this.hasPairableTrack(async t=>t.isAudioTrack()&&(!e||await e(t)))}};const B=(e,t,n)=>{if(k(e))throw Error(`'${t}' is deprecated and not available synchronously for this track. Use the preferred '${n}()' instead.`);return e},Bl=e=>{if(e!==void 0&&typeof e!=`function`)throw TypeError(`predicate, when provided, must be a function.`);return e?t=>{let n=e=>{if(typeof e!=`boolean`)throw TypeError(`predicate must return or resolve to a boolean value.`);return e},r=e(t);return k(r)?r.then(n):n(r)}:void 0};var Vl=class extends zl{constructor(e,t){super(e,t),this._pixelAspectRatioCache=null}get type(){return`video`}async getCodec(){return this._backing.getCodec()}get codec(){return B(this._backing.getCodec(),`codec`,`getCodec`)}async hasOnlyKeyPackets(){return await this._backing.getHasOnlyKeyPackets?.()??await this._backing.getCodec()===`prores`}async getCodedWidth(){return this._backing.getCodedWidth()}get codedWidth(){return B(this._backing.getCodedWidth(),`codedWidth`,`getCodedWidth`)}async getCodedHeight(){return this._backing.getCodedHeight()}get codedHeight(){return B(this._backing.getCodedHeight(),`codedHeight`,`getCodedHeight`)}async getTransformationMatrix(){return this._backing.getTransformationMatrix()}async getRotation(){return c(await this._backing.getTransformationMatrix())}get rotation(){return c(B(this._backing.getTransformationMatrix(),`rotation`,`getRotation`))}async getFlip(){return l(await this._backing.getTransformationMatrix())}async getSquarePixelWidth(){return this._backing.getSquarePixelWidth()}get squarePixelWidth(){return B(this._backing.getSquarePixelWidth(),`squarePixelWidth`,`getSquarePixelWidth`)}async getSquarePixelHeight(){return this._backing.getSquarePixelHeight()}get squarePixelHeight(){return B(this._backing.getSquarePixelHeight(),`squarePixelHeight`,`getSquarePixelHeight`)}async getPixelAspectRatio(){return this._pixelAspectRatioCache??=_t({num:await this.getSquarePixelWidth()*await this.getCodedHeight(),den:await this.getSquarePixelHeight()*await this.getCodedWidth()})}get pixelAspectRatio(){return this._pixelAspectRatioCache??=_t({num:B(this._backing.getSquarePixelWidth(),`pixelAspectRatio`,`getPixelAspectRatio`)*B(this._backing.getCodedHeight(),`pixelAspectRatio`,`getPixelAspectRatio`),den:B(this._backing.getSquarePixelHeight(),`pixelAspectRatio`,`getPixelAspectRatio`)*B(this._backing.getCodedWidth(),`pixelAspectRatio`,`getPixelAspectRatio`)})}async getDisplayWidth(){return await this._backing.getMetadataDisplayWidth?.()??(await this.getRotation()%180==0?this.getSquarePixelWidth():this.getSquarePixelHeight())}get displayWidth(){let e=this._backing.getMetadataDisplayWidth?.();if(e!==void 0){let t=B(e,`displayWidth`,`getDisplayWidth`);if(t!==null)return t}let t=c(B(this._backing.getTransformationMatrix(),`displayWidth`,`getDisplayWidth`))%180==0?this._backing.getSquarePixelWidth():this._backing.getSquarePixelHeight();return B(t,`displayWidth`,`getDisplayWidth`)}async getDisplayHeight(){return await this._backing.getMetadataDisplayHeight?.()??(await this.getRotation()%180==0?this.getSquarePixelHeight():this.getSquarePixelWidth())}get displayHeight(){let e=this._backing.getMetadataDisplayHeight?.();if(e!==void 0){let t=B(e,`displayHeight`,`getDisplayHeight`);if(t!==null)return t}let t=c(B(this._backing.getTransformationMatrix(),`displayHeight`,`getDisplayHeight`))%180==0?this._backing.getSquarePixelHeight():this._backing.getSquarePixelWidth();return B(t,`displayHeight`,`getDisplayHeight`)}async getColorSpace(){return this._backing.getColorSpace()}async hasHighDynamicRange(){let e=await this._backing.getColorSpace();return e.primaries===`bt2020`||e.primaries===`smpte432`||e.transfer===`pq`||e.transfer===`hlg`||e.matrix===`bt2020-ncl`}async canBeTransparent(){return this._backing.canBeTransparent()}async getDecoderConfig(){return this._backing.getDecoderConfig()}async getCodecParameterString(){return await this._backing.getMetadataCodecParameterString?.()??(await this._backing.getDecoderConfig())?.codec??null}async canDecode(){try{let e=await this._backing.getDecoderConfig();if(!e)return!1;let t=await this._backing.getCodec();return n(t!==null),dl.some(n=>n.supports(t,e))?!0:typeof VideoDecoder>`u`?!1:(await VideoDecoder.isConfigSupported(e)).supported===!0}catch(e){return A._error(`Error during decodability check:`,e),!1}}async determinePacketType(e){if(!(e instanceof I))throw TypeError(`packet must be an EncodedPacket.`);if(e.isMetadataOnly)throw TypeError(`packet must not be metadata-only to determine its type.`);let t=await this.getCodec();if(t===null)return null;let r=await this.getDecoderConfig();return n(r),Kn(t,r,e.data)}async computeFrameRateMetrics(e={}){if(!e||typeof e!=`object`)throw TypeError(`options must be an object.`);if(e.targetPacketCount!==void 0&&(!ft(e.targetPacketCount)||e.targetPacketCount<0))throw TypeError(`options.targetPacketCount must be a non-negative number.`);let t=await this.getTimeResolution(),n=e.targetPacketCount??256,r=new wl(this),i=[],a=-1/0,o=0;for await(let e of r.packets(void 0,void 0,{metadataOnly:!0})){if(i.length>=n&&e.timestamp>=a)break;i.push(e.timestamp),a=Math.max(a,e.timestamp),o++}let s=new Float64Array(i.length);for(let e=0;e<i.length;e++)s[e]=Math.round(i[e]*t);s.sort();let c=1;for(let e=1;e<s.length;e++)s[e]!==s[c-1]&&(s[c++]=s[e]);if(c<2)return{underlyingFrameRate:null,bestGuessFrameRate:t,minFrameRate:t,maxFrameRate:t,averageFrameRate:t,medianFrameRate:t,frameRateIsConstant:!0,probedPacketCount:o};let l=s.subarray(0,c),u=Yl(l,t),d=u??t,f=u===null?null:t/u,p=new Map,m=1/0,h=-1/0,g=0;for(let e=1;e<c;e++){let t=l[e]-l[e-1],n=f===null?t:Math.max(1,Math.round(t/f));p.set(n,(p.get(n)??0)+1),m=Math.min(m,n),h=Math.max(h,n),g+=n}let _=c-1,v=[...p.keys()].sort((e,t)=>e-t),y=_-1>>1,b=_>>1,x=0,S=0,C=0;for(let e of v)if(C+=p.get(e),x===0&&C>y&&(x=e),C>b){S=e;break}let ee=(d/x+d/S)/2;return{underlyingFrameRate:u,bestGuessFrameRate:u===null?Zl(ee):u,minFrameRate:d/h,maxFrameRate:d/m,averageFrameRate:d*_/g,medianFrameRate:ee,frameRateIsConstant:u!==null&&m===1&&h===1,probedPacketCount:o}}},Hl=class extends zl{constructor(e,t){super(e,t)}get type(){return`audio`}async getCodec(){return this._backing.getCodec()}get codec(){return B(this._backing.getCodec(),`codec`,`getCodec`)}async hasOnlyKeyPackets(){return await this._backing.getHasOnlyKeyPackets?.()??!0}async getNumberOfChannels(){return this._backing.getNumberOfChannels()}get numberOfChannels(){return B(this._backing.getNumberOfChannels(),`numberOfChannels`,`getNumberOfChannels`)}async getSampleRate(){return this._backing.getSampleRate()}get sampleRate(){return B(this._backing.getSampleRate(),`sampleRate`,`getSampleRate`)}async getDecoderConfig(){return this._backing.getDecoderConfig()}async getCodecParameterString(){return await this._backing.getMetadataCodecParameterString?.()??(await this._backing.getDecoderConfig())?.codec??null}async canDecode(){try{let e=await this._backing.getDecoderConfig();if(!e)return!1;let t=await this._backing.getCodec();return n(t!==null),fl.some(n=>n.supports(t,e))||P.includes(e.codec)?!0:typeof AudioDecoder>`u`?!1:(await AudioDecoder.isConfigSupported(e)).supported===!0}catch(e){return A._error(`Error during decodability check:`,e),!1}}async determinePacketType(e){if(!(e instanceof I))throw TypeError(`packet must be an EncodedPacket.`);return await this.getCodec()===null?null:`key`}};const Ul=e=>e??1/0,Wl=e=>-(e??-1/0),Gl=e=>-e,Kl=e=>{if(typeof e!=`object`||!e)throw TypeError(`query must be an object.`);if(e.filter!==void 0&&typeof e.filter!=`function`)throw TypeError(`query.filter, when provided, must be a function.`);if(e.sortBy!==void 0&&typeof e.sortBy!=`function`)throw TypeError(`query.sortBy, when provided, must be a function.`);return{filter:e.filter?t=>{let n=e=>{if(typeof e!=`boolean`)throw TypeError(`query.filter must return or resolve to a boolean.`);return e},r=e.filter(t);return k(r)?r.then(n):n(r)}:void 0,sortBy:e.sortBy?t=>{let n=e=>{if(typeof e!=`number`&&(!Array.isArray(e)||!e.every(e=>typeof e==`number`)))throw TypeError(`query.sortBy must return or resolve to a number or an array of numbers.`);return e},r=e.sortBy(t);return k(r)?r.then(n):n(r)}:void 0}},ql=(e,t)=>({filter:e?.filter||t?.filter?n=>{let r=e?.filter?.(n)??!0,i=e=>e===!1?!1:t?.filter?.(n)??!0;return k(r)?r.then(i):i(r)}:void 0,sortBy:e?.sortBy||t?.sortBy?n=>{let r=e?.sortBy?.(n)??[],i=t?.sortBy?.(n)??[],a=(e,t)=>[...Array.isArray(e)?e:[e],...Array.isArray(t)?t:[t]];return k(r)||k(i)?Promise.all([r,i]).then(([e,t])=>a(e,t)):a(r,i)}:void 0}),Jl=async(e,t)=>{let n=e;if(t?.filter){let r=e.map(e=>t.filter(e));if(r.some(e=>k(e))){let t=await Promise.all(r);n=e.filter((e,n)=>t[n])}else n=e.filter((e,t)=>r[t])}if(!t?.sortBy)return n;let r=n.map(e=>t.sortBy(e)),i=r.some(e=>k(e))?await Promise.all(r):r;return n.map((e,t)=>({track:e,sortValue:i[t]})).sort((e,t)=>{let n=Array.isArray(e.sortValue)?e.sortValue:[e.sortValue],r=Array.isArray(t.sortValue)?t.sortValue:[t.sortValue],i=Math.max(n.length,r.length);for(let e=0;e<i;e++){let t=n[e]??0,i=r[e]??0;if(t!==i)return t-i}return 0}).map(e=>e.track)},Yl=(e,t)=>{let n=1e6,r=.98,i=1+1e-9,a=[12,15,20,24e3/1001,24,25,3e4/1001,30,48,50,6e4/1001,60,100,12e4/1001,120,144,240];if(e.length<2)return null;let o=new Float64Array(e.length-1);for(let t=1;t<e.length;t++){let n=e[t]-e[t-1];if(!(n>0))return null;o[t-1]=n}let s=o.slice();s.sort();let c=s[Math.floor(s.length*.05)];for(let e=0;e<6;e++){let e=0,t=0;for(let n of o){let r=Math.max(1,Math.round(n/c));Math.abs(n-r*c)>=i||(e+=n,t+=r)}if(t===0)return null;let n=e/t;if(Math.abs(n-c)<=1e-12*Math.max(1,c)){c=n;break}c=n}let l=0,u=0,d=0;for(let e of o){let t=Math.max(1,Math.round(e/c));Math.abs(e-t*c)>=i||(l++,u+=e,d+=t)}if(l/o.length<r)return null;c=u/d;let f=1/Math.min(d,1e3),p=Math.max(2**-52,c-f),m=c+f,h=t/m,g=t/p,_=t/c,v=null,y=1/0;for(let e of a){if(e<h||e>g)continue;let t=Math.abs(e/_-1);t<y&&(v=e,y=t)}if(v===null){let e=Xl(p,m,n),r=Xl(h,g,n);if(r&&(!e||r.den<e.den||r.den===e.den&&r.num<=e.num))v=r.num/r.den;else if(e)v=t*e.den/e.num;else return null}let b=t/v,x=0;for(let e of o){let t=Math.max(1,Math.round(e/b));Math.abs(e-t*b)<i&&x++}return x/o.length<r?null:v},Xl=(e,t,n)=>{for(let r=1;r<=n;r++){let n=Math.floor(e*r)+1;if(n/r<t)return _t({num:n,den:r})}return null},Zl=e=>{let t=[24/1.001,30/1.001,60/1.001,120/1.001],n=[12,15,20,24,25,30,48,50,60,100,120,144,240];for(let n of t)if(Math.abs(n/e-1)<=5e-4)return n;let r=e,i=1/0;for(let t of n){let n=Math.abs(t/e-1);n<=.025&&n<i&&(r=t,i=n)}return r};
346
346
  /*!
347
347
  * Copyright (c) 2026-present, Vanilagy and contributors
348
348
  *
@@ -367,7 +367,7 @@ this.source=e}get fileSize(){let e=this.source._getFileSize();if(e===void 0)thro
367
367
  * License, v. 2.0. If a copy of the MPL was not distributed with this
368
368
  * file, You can obtain one at https://mozilla.org/MPL/2.0/.
369
369
  */
370
- var vu;(function(e){e[e.Unsynchronisation=128]=`Unsynchronisation`,e[e.ExtendedHeader=64]=`ExtendedHeader`,e[e.ExperimentalIndicator=32]=`ExperimentalIndicator`,e[e.Footer=16]=`Footer`})(vu||={});var yu;(function(e){e[e.ISO_8859_1=0]=`ISO_8859_1`,e[e.UTF_16_WITH_BOM=1]=`UTF_16_WITH_BOM`,e[e.UTF_16_BE_NO_BOM=2]=`UTF_16_BE_NO_BOM`,e[e.UTF_8=3]=`UTF_8`})(yu||={});const bu=`Blues.Classic rock.Country.Dance.Disco.Funk.Grunge.Hip-hop.Jazz.Metal.New age.Oldies.Other.Pop.Rhythm and blues.Rap.Reggae.Rock.Techno.Industrial.Alternative.Ska.Death metal.Pranks.Soundtrack.Euro-techno.Ambient.Trip-hop.Vocal.Jazz & funk.Fusion.Trance.Classical.Instrumental.Acid.House.Game.Sound clip.Gospel.Noise.Alternative rock.Bass.Soul.Punk.Space.Meditative.Instrumental pop.Instrumental rock.Ethnic.Gothic.Darkwave.Techno-industrial.Electronic.Pop-folk.Eurodance.Dream.Southern rock.Comedy.Cult.Gangsta.Top 40.Christian rap.Pop/funk.Jungle music.Native US.Cabaret.New wave.Psychedelic.Rave.Showtunes.Trailer.Lo-fi.Tribal.Acid punk.Acid jazz.Polka.Retro.Musical.Rock 'n' roll.Hard rock.Folk.Folk rock.National folk.Swing.Fast fusion.Bebop.Latin.Revival.Celtic.Bluegrass.Avantgarde.Gothic rock.Progressive rock.Psychedelic rock.Symphonic rock.Slow rock.Big band.Chorus.Easy listening.Acoustic.Humour.Speech.Chanson.Opera.Chamber music.Sonata.Symphony.Booty bass.Primus.Porn groove.Satire.Slow jam.Club.Tango.Samba.Folklore.Ballad.Power ballad.Rhythmic Soul.Freestyle.Duet.Punk rock.Drum solo.A cappella.Euro-house.Dance hall.Goa music.Drum & bass.Club-house.Hardcore techno.Terror.Indie.Britpop.Negerpunk.Polsk punk.Beat.Christian gangsta rap.Heavy metal.Black metal.Crossover.Contemporary Christian.Christian rock.Merengue.Salsa.Thrash metal.Anime.Jpop.Synthpop.Christmas.Art rock.Baroque.Bhangra.Big beat.Breakbeat.Chillout.Downtempo.Dub.EBM.Eclectic.Electro.Electroclash.Emo.Experimental.Garage.Global.IDM.Illbient.Industro-Goth.Jam Band.Krautrock.Leftfield.Lounge.Math rock.New romantic.Nu-breakz.Post-punk.Post-rock.Psytrance.Shoegaze.Space rock.Trop rock.World music.Neoclassical.Audiobook.Audio theatre.Neue Deutsche Welle.Podcast.Indie rock.G-Funk.Dubstep.Garage rock.Psybient`.split(`.`),xu=(e,t)=>{let n=e.filePos;t.raw??={},t.raw.TAG??=V(e,125),e.filePos=n;let r=Su(e,30);r&&(t.title??=r);let i=Su(e,30);i&&(t.artist??=i);let a=Su(e,30);a&&(t.album??=a);let o=Su(e,4),s=Number.parseInt(o,10);Number.isInteger(s)&&s>0&&(t.date??=new Date(String(s)));let c=V(e,30),l;if(c[28]===0&&c[29]!==0){let n=c[29];n>0&&(t.trackNumber??=n),e.skip(-30),l=Su(e,28),e.skip(2)}else e.skip(-30),l=Su(e,30);l&&(t.comment??=l);let u=H(e);u<bu.length&&(t.genre??=bu[u])},Su=(e,t)=>{let n=V(e,t),r=it(n.indexOf(0),n.length),i=n.subarray(0,r),a=``;for(let e=0;e<i.length;e++)a+=String.fromCharCode(i[e]);return a.trimEnd()},Cu=e=>{let t=e.filePos,n=G(e,3),r=H(e),i=H(e),a=H(e),o=W(e);if(n!==`ID3`||r===255||i===255||o&2155905152)return e.filePos=t,null;let s=oi(o);return a&vu.Footer&&(s+=10),{majorVersion:r,revision:i,flags:a,size:s}},wu=(e,t,n)=>{if(![2,3,4].includes(t.majorVersion)){A._warn(`Unsupported ID3v2 major version: ${t.majorVersion}`);return}let r=t.flags&vu.Footer?t.size-10:t.size,i=new Tu(t,V(e,r));if(t.flags&vu.Unsynchronisation&&t.majorVersion===3&&i.ununsynchronizeAll(),t.flags&vu.ExtendedHeader){let e=i.readU32();t.majorVersion===3?i.pos+=e:i.pos+=e-4}for(;i.pos<=i.bytes.length-i.frameHeaderSize();){let e=i.readId3V2Frame();if(!e)break;let r=i.pos,a=i.pos+e.size,o=!1,s=!1,c=!1;if(t.majorVersion===3?(o=!!(e.flags&64),s=!!(e.flags&128)):t.majorVersion===4&&(o=!!(e.flags&4),s=!!(e.flags&8),c=!!(e.flags&2)||!!(t.flags&vu.Unsynchronisation)),o){A._warn(`Skipping encrypted ID3v2 frame ${e.id}`),i.pos=a;continue}if(s){A._warn(`Skipping compressed ID3v2 frame ${e.id}`),i.pos=a;continue}if(c&&i.ununsynchronizeRegion(i.pos,a),n.raw??={},e.id===`TXXX`){let e=n.raw.TXXX??={},t=i.readId3V2TextEncoding(),r=i.readId3V2Text(t,a),o=i.readId3V2Text(t,a);e[r]??=o}else e.id[0]===`T`?n.raw[e.id]??=i.readId3V2EncodingAndText(a):n.raw[e.id]??=i.readBytes(e.size);switch(i.pos=r,e.id){case`TIT2`:case`TT2`:n.title??=i.readId3V2EncodingAndText(a);break;case`TIT3`:case`TT3`:n.description??=i.readId3V2EncodingAndText(a);break;case`TPE1`:case`TP1`:n.artist??=i.readId3V2EncodingAndText(a);break;case`TALB`:case`TAL`:n.album??=i.readId3V2EncodingAndText(a);break;case`TPE2`:case`TP2`:n.albumArtist??=i.readId3V2EncodingAndText(a);break;case`TRCK`:case`TRK`:{let e=i.readId3V2EncodingAndText(a).split(`/`),t=Number.parseInt(e[0],10),r=e[1]&&Number.parseInt(e[1],10);Number.isInteger(t)&&t>0&&(n.trackNumber??=t),r&&Number.isInteger(r)&&r>0&&(n.tracksTotal??=r)}break;case`TPOS`:case`TPA`:{let e=i.readId3V2EncodingAndText(a).split(`/`),t=Number.parseInt(e[0],10),r=e[1]&&Number.parseInt(e[1],10);Number.isInteger(t)&&t>0&&(n.discNumber??=t),r&&Number.isInteger(r)&&r>0&&(n.discsTotal??=r)}break;case`TCON`:case`TCO`:{let e=i.readId3V2EncodingAndText(a),t=/^\((\d+)\)/.exec(e);if(t){let e=Number.parseInt(t[1]);if(bu[e]!==void 0){n.genre??=bu[e];break}}if(t=/^\d+$/.exec(e),t){let e=Number.parseInt(t[0]);if(bu[e]!==void 0){n.genre??=bu[e];break}}n.genre??=e}break;case`TDRC`:case`TDAT`:{let e=i.readId3V2EncodingAndText(a),t=new Date(e);Number.isNaN(t.getTime())||(n.date??=t)}break;case`TYER`:case`TYE`:{let e=i.readId3V2EncodingAndText(a),t=Number.parseInt(e,10);Number.isInteger(t)&&(n.date??=new Date(String(t)))}break;case`USLT`:case`ULT`:{let e=i.readU8();i.pos+=3,i.readId3V2Text(e,a),n.lyrics??=i.readId3V2Text(e,a)}break;case`COMM`:case`COM`:{let e=i.readU8();i.pos+=3,i.readId3V2Text(e,a),n.comment??=i.readId3V2Text(e,a)}break;case`APIC`:case`PIC`:{let e=i.readId3V2TextEncoding(),r;if(t.majorVersion===2){let e=i.readAscii(3);r=e===`PNG`?`image/png`:e===`JPG`?`image/jpeg`:`image/*`}else r=i.readId3V2Text(e,a);let o=i.readU8(),s=i.readId3V2Text(e,a).trimEnd(),c=a-i.pos;if(c>=0){let e=i.readBytes(c);n.images||=[],n.images.push({data:e,mimeType:r,kind:o===3?`coverFront`:o===4?`coverBack`:`unknown`,description:s})}}break;default:i.pos+=e.size}i.pos=a}};var Tu=class{constructor(e,t){this.header=e,this.bytes=t,this.pos=0,this.view=new DataView(t.buffer,t.byteOffset,t.byteLength)}frameHeaderSize(){return this.header.majorVersion===2?6:10}ununsynchronizeAll(){let e=[];for(let t=0;t<this.bytes.length;t++){let n=this.bytes[t];e.push(n),n===255&&t!==this.bytes.length-1&&this.bytes[t]===0&&t++}this.bytes=new Uint8Array(e),this.view=new DataView(this.bytes.buffer)}ununsynchronizeRegion(e,t){let n=[];for(let r=e;r<t;r++){let e=this.bytes[r];n.push(e),e===255&&r!==t-1&&this.bytes[r+1]===0&&r++}let r=this.bytes.subarray(0,e),i=this.bytes.subarray(t);this.bytes=new Uint8Array(r.length+n.length+i.length),this.bytes.set(r,0),this.bytes.set(n,r.length),this.bytes.set(i,r.length+n.length),this.view=new DataView(this.bytes.buffer)}readBytes(e){let t=this.bytes.subarray(this.pos,this.pos+e);return this.pos+=e,t}readU8(){let e=this.view.getUint8(this.pos);return this.pos+=1,e}readU16(){let e=this.view.getUint16(this.pos,!1);return this.pos+=2,e}readU24(){let e=this.view.getUint16(this.pos,!1),t=this.view.getUint8(this.pos+2);return this.pos+=3,e*256+t}readU32(){let e=this.view.getUint32(this.pos,!1);return this.pos+=4,e}readAscii(e){let t=``;for(let n=0;n<e;n++)t+=String.fromCharCode(this.view.getUint8(this.pos+n));return this.pos+=e,t}readId3V2Frame(){if(this.header.majorVersion===2){let e=this.readAscii(3);return e===`\0\0\0`?null:{id:e,size:this.readU24(),flags:0}}{let e=this.readAscii(4);if(e===`\0\0\0\0`)return null;let t=this.readU32(),n=this.header.majorVersion===4?oi(t):t,r=this.readU16(),i=this.pos,a=e=>{let t=this.pos+e;if(t>this.bytes.length)return!1;if(t<=this.bytes.length-this.frameHeaderSize()){this.pos+=e;let t=this.readAscii(4);if(t!==`\0\0\0\0`&&!/[0-9A-Z]{4}/.test(t))return!1}return!0};if(!a(n)){let e=this.header.majorVersion===4?t:oi(t);a(e)&&(n=e)}return this.pos=i,{id:e,size:n,flags:r}}}readId3V2TextEncoding(){let e=this.readU8();if(e>3)throw Error(`Unsupported text encoding: ${e}`);return e}readId3V2Text(e,t){let n=this.pos,r=this.readBytes(t-this.pos);switch(e){case yu.ISO_8859_1:{let e=``;for(let t=0;t<r.length;t++){let i=r[t];if(i===0){this.pos=n+t+1;break}e+=String.fromCharCode(i)}return e}case yu.UTF_16_WITH_BOM:if(r[0]===255&&r[1]===254){let e=new te(`utf-16le`),t=it(r.findIndex((e,t)=>e===0&&r[t+1]===0&&t%2==0),r.length);return this.pos=n+Math.min(t+2,r.length),e.decode(r.subarray(2,t))}if(r[0]===254&&r[1]===255){let e=new te(`utf-16be`),t=it(r.findIndex((e,t)=>e===0&&r[t+1]===0&&t%2==0),r.length);return this.pos=n+Math.min(t+2,r.length),e.decode(r.subarray(2,t))}{let e=it(r.findIndex(e=>e===0),r.length);return this.pos=n+Math.min(e+1,r.length),w.decode(r.subarray(0,e))}case yu.UTF_16_BE_NO_BOM:{let e=new te(`utf-16be`),t=it(r.findIndex((e,t)=>e===0&&r[t+1]===0&&t%2==0),r.length);return this.pos=n+Math.min(t+2,r.length),e.decode(r.subarray(0,t))}case yu.UTF_8:{let e=it(r.findIndex(e=>e===0),r.length);return this.pos=n+Math.min(e+1,r.length),w.decode(r.subarray(0,e))}}}readId3V2EncodingAndText(e){if(this.pos>=e)return``;let t=this.readId3V2TextEncoding();return this.readId3V2Text(t,e)}},Eu=class{constructor(e){this.helper=new Uint8Array(8),this.helperView=C(this.helper),this.writer=e}writeId3V2Tag(e){let t=this.writer.getPos();this.writeAscii(`ID3`),this.writeU8(4),this.writeU8(0),this.writeU8(0),this.writeSynchsafeU32(0);let n=this.writer.getPos(),r=new Set;for(let{key:t,value:n}of ot(e))switch(t){case`title`:this.writeId3V2TextFrame(`TIT2`,n),r.add(`TIT2`);break;case`description`:this.writeId3V2TextFrame(`TIT3`,n),r.add(`TIT3`);break;case`artist`:this.writeId3V2TextFrame(`TPE1`,n),r.add(`TPE1`);break;case`album`:this.writeId3V2TextFrame(`TALB`,n),r.add(`TALB`);break;case`albumArtist`:this.writeId3V2TextFrame(`TPE2`,n),r.add(`TPE2`);break;case`trackNumber`:{let t=e.tracksTotal===void 0?n.toString():`${n}/${e.tracksTotal}`;this.writeId3V2TextFrame(`TRCK`,t),r.add(`TRCK`)}break;case`discNumber`:{let t=e.discsTotal===void 0?n.toString():`${n}/${e.discsTotal}`;this.writeId3V2TextFrame(`TPOS`,t),r.add(`TPOS`)}break;case`genre`:this.writeId3V2TextFrame(`TCON`,n),r.add(`TCON`);break;case`date`:this.writeId3V2TextFrame(`TDRC`,n.toISOString().slice(0,10)),r.add(`TDRC`);break;case`lyrics`:this.writeId3V2LyricsFrame(n),r.add(`USLT`);break;case`comment`:this.writeId3V2CommentFrame(n),r.add(`COMM`);break;case`images`:{let e={coverFront:3,coverBack:4,unknown:0};for(let t of n){let n=e[t.kind]??0,r=t.description??``;this.writeId3V2ApicFrame(t.mimeType,n,r,t.data)}}break;case`tracksTotal`:case`discsTotal`:break;case`raw`:break;default:Ee(t)}if(e.raw)for(let t in e.raw){let n=e.raw[t];if(n==null||t.length!==4||r.has(t))continue;let i;if(typeof n==`string`){if(ne(n)){i=new Uint8Array(n.length+2),i[0]=yu.ISO_8859_1;for(let e=0;e<n.length;e++)i[e+1]=n.charCodeAt(e)}else{let e=T.encode(n);i=new Uint8Array(e.byteLength+2),i[0]=yu.UTF_8,i.set(e,1)}}else if(n instanceof Uint8Array)i=n;else if(t===`TXXX`&&Nt(n)){for(let e in n){let t=n[e],r=ne(e)&&ne(t),i=r?null:T.encode(e),a=r?null:T.encode(t),o=r?e.length:i.byteLength,s=r?t.length:a.byteLength,c=1+o+1+s+1;this.writeAscii(`TXXX`),this.writeSynchsafeU32(c),this.writeU16(0),this.writeU8(r?yu.ISO_8859_1:yu.UTF_8),r?(this.writeIsoString(e),this.writeIsoString(t)):(this.writer.write(i),this.writeU8(0),this.writer.write(a),this.writeU8(0))}continue}else continue;this.writeAscii(t),this.writeSynchsafeU32(i.byteLength),this.writeU16(0),this.writer.write(i)}let i=this.writer.getPos(),a=i-n;return this.writer.seek(t+6),this.writeSynchsafeU32(a),this.writer.seek(i),a+10}writeU8(e){this.helper[0]=e,this.writer.write(this.helper.subarray(0,1))}writeU16(e){this.helperView.setUint16(0,e,!1),this.writer.write(this.helper.subarray(0,2))}writeU32(e){this.helperView.setUint32(0,e,!1),this.writer.write(this.helper.subarray(0,4))}writeAscii(e){for(let t=0;t<e.length;t++)this.helper[t]=e.charCodeAt(t);this.writer.write(this.helper.subarray(0,e.length))}writeSynchsafeU32(e){this.writeU32(ai(e))}writeIsoString(e){let t=new Uint8Array(e.length+1);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);this.writer.write(t)}writeUtf8String(e){let t=T.encode(e);this.writer.write(t),this.writeU8(0)}writeId3V2TextFrame(e,t){let n=ne(t),r=1+(n?t.length:T.encode(t).byteLength)+1;this.writeAscii(e),this.writeSynchsafeU32(r),this.writeU16(0),this.writeU8(n?yu.ISO_8859_1:yu.UTF_8),n?this.writeIsoString(t):this.writeUtf8String(t)}writeId3V2LyricsFrame(e){let t=ne(e),n=5+e.length+1;this.writeAscii(`USLT`),this.writeSynchsafeU32(n),this.writeU16(0),this.writeU8(t?yu.ISO_8859_1:yu.UTF_8),this.writeAscii(`und`),t?(this.writeIsoString(``),this.writeIsoString(e)):(this.writeUtf8String(``),this.writeUtf8String(e))}writeId3V2CommentFrame(e){let t=ne(e),n=5+(t?e.length:T.encode(e).byteLength)+1;this.writeAscii(`COMM`),this.writeSynchsafeU32(n),this.writeU16(0),this.writeU8(t?yu.ISO_8859_1:yu.UTF_8),this.writeU8(117),this.writeU8(110),this.writeU8(100),t?(this.writeIsoString(``),this.writeIsoString(e)):(this.writeUtf8String(``),this.writeUtf8String(e))}writeId3V2ApicFrame(e,t,n,r){let i=ne(e)&&ne(n),a=i?n.length:T.encode(n).byteLength,o=1+e.length+1+1+a+1+r.byteLength;this.writeAscii(`APIC`),this.writeSynchsafeU32(o),this.writeU16(0),this.writeU8(i?yu.ISO_8859_1:yu.UTF_8),i?this.writeIsoString(e):this.writeUtf8String(e),this.writeU8(t),i?this.writeIsoString(n):this.writeUtf8String(n),this.writer.write(r)}},Du=class{constructor(e){
370
+ var vu;(function(e){e[e.Unsynchronisation=128]=`Unsynchronisation`,e[e.ExtendedHeader=64]=`ExtendedHeader`,e[e.ExperimentalIndicator=32]=`ExperimentalIndicator`,e[e.Footer=16]=`Footer`})(vu||={});var yu;(function(e){e[e.ISO_8859_1=0]=`ISO_8859_1`,e[e.UTF_16_WITH_BOM=1]=`UTF_16_WITH_BOM`,e[e.UTF_16_BE_NO_BOM=2]=`UTF_16_BE_NO_BOM`,e[e.UTF_8=3]=`UTF_8`})(yu||={});const bu=`Blues.Classic rock.Country.Dance.Disco.Funk.Grunge.Hip-hop.Jazz.Metal.New age.Oldies.Other.Pop.Rhythm and blues.Rap.Reggae.Rock.Techno.Industrial.Alternative.Ska.Death metal.Pranks.Soundtrack.Euro-techno.Ambient.Trip-hop.Vocal.Jazz & funk.Fusion.Trance.Classical.Instrumental.Acid.House.Game.Sound clip.Gospel.Noise.Alternative rock.Bass.Soul.Punk.Space.Meditative.Instrumental pop.Instrumental rock.Ethnic.Gothic.Darkwave.Techno-industrial.Electronic.Pop-folk.Eurodance.Dream.Southern rock.Comedy.Cult.Gangsta.Top 40.Christian rap.Pop/funk.Jungle music.Native US.Cabaret.New wave.Psychedelic.Rave.Showtunes.Trailer.Lo-fi.Tribal.Acid punk.Acid jazz.Polka.Retro.Musical.Rock 'n' roll.Hard rock.Folk.Folk rock.National folk.Swing.Fast fusion.Bebop.Latin.Revival.Celtic.Bluegrass.Avantgarde.Gothic rock.Progressive rock.Psychedelic rock.Symphonic rock.Slow rock.Big band.Chorus.Easy listening.Acoustic.Humour.Speech.Chanson.Opera.Chamber music.Sonata.Symphony.Booty bass.Primus.Porn groove.Satire.Slow jam.Club.Tango.Samba.Folklore.Ballad.Power ballad.Rhythmic Soul.Freestyle.Duet.Punk rock.Drum solo.A cappella.Euro-house.Dance hall.Goa music.Drum & bass.Club-house.Hardcore techno.Terror.Indie.Britpop.Negerpunk.Polsk punk.Beat.Christian gangsta rap.Heavy metal.Black metal.Crossover.Contemporary Christian.Christian rock.Merengue.Salsa.Thrash metal.Anime.Jpop.Synthpop.Christmas.Art rock.Baroque.Bhangra.Big beat.Breakbeat.Chillout.Downtempo.Dub.EBM.Eclectic.Electro.Electroclash.Emo.Experimental.Garage.Global.IDM.Illbient.Industro-Goth.Jam Band.Krautrock.Leftfield.Lounge.Math rock.New romantic.Nu-breakz.Post-punk.Post-rock.Psytrance.Shoegaze.Space rock.Trop rock.World music.Neoclassical.Audiobook.Audio theatre.Neue Deutsche Welle.Podcast.Indie rock.G-Funk.Dubstep.Garage rock.Psybient`.split(`.`),xu=(e,t)=>{let n=e.filePos;t.raw??={},t.raw.TAG??=V(e,125),e.filePos=n;let r=Su(e,30);r&&(t.title??=r);let i=Su(e,30);i&&(t.artist??=i);let a=Su(e,30);a&&(t.album??=a);let o=Su(e,4),s=Number.parseInt(o,10);Number.isInteger(s)&&s>0&&(t.date??=new Date(String(s)));let c=V(e,30),l;if(c[28]===0&&c[29]!==0){let n=c[29];n>0&&(t.trackNumber??=n),e.skip(-30),l=Su(e,28),e.skip(2)}else e.skip(-30),l=Su(e,30);l&&(t.comment??=l);let u=H(e);u<bu.length&&(t.genre??=bu[u])},Su=(e,t)=>{let n=V(e,t),r=it(n.indexOf(0),n.length),i=n.subarray(0,r),a=``;for(let e=0;e<i.length;e++)a+=String.fromCharCode(i[e]);return a.trimEnd()},Cu=e=>{let t=e.filePos,n=G(e,3),r=H(e),i=H(e),a=H(e),o=W(e);if(n!==`ID3`||r===255||i===255||o&2155905152)return e.filePos=t,null;let s=oi(o);return a&vu.Footer&&(s+=10),{majorVersion:r,revision:i,flags:a,size:s}},wu=(e,t,n)=>{if(![2,3,4].includes(t.majorVersion)){A._warn(`Unsupported ID3v2 major version: ${t.majorVersion}`);return}let r=t.flags&vu.Footer?t.size-10:t.size,i=new Tu(t,V(e,r));if(t.flags&vu.Unsynchronisation&&t.majorVersion===3&&i.ununsynchronizeAll(),t.flags&vu.ExtendedHeader){let e=i.readU32();t.majorVersion===3?i.pos+=e:i.pos+=e-4}for(;i.pos<=i.bytes.length-i.frameHeaderSize();){let e=i.readId3V2Frame();if(!e)break;let r=i.pos,a=i.pos+e.size,o=!1,s=!1,c=!1;if(t.majorVersion===3?(o=!!(e.flags&64),s=!!(e.flags&128)):t.majorVersion===4&&(o=!!(e.flags&4),s=!!(e.flags&8),c=!!(e.flags&2)||!!(t.flags&vu.Unsynchronisation)),o){A._warn(`Skipping encrypted ID3v2 frame ${e.id}`),i.pos=a;continue}if(s){A._warn(`Skipping compressed ID3v2 frame ${e.id}`),i.pos=a;continue}if(c&&i.ununsynchronizeRegion(i.pos,a),n.raw??={},e.id===`TXXX`){let e=n.raw.TXXX??={},t=i.readId3V2TextEncoding(),r=i.readId3V2Text(t,a),o=i.readId3V2Text(t,a);e[r]??=o}else e.id[0]===`T`?n.raw[e.id]??=i.readId3V2EncodingAndText(a):n.raw[e.id]??=i.readBytes(e.size);switch(i.pos=r,e.id){case`TIT2`:case`TT2`:n.title??=i.readId3V2EncodingAndText(a);break;case`TIT3`:case`TT3`:n.description??=i.readId3V2EncodingAndText(a);break;case`TPE1`:case`TP1`:n.artist??=i.readId3V2EncodingAndText(a);break;case`TALB`:case`TAL`:n.album??=i.readId3V2EncodingAndText(a);break;case`TPE2`:case`TP2`:n.albumArtist??=i.readId3V2EncodingAndText(a);break;case`TRCK`:case`TRK`:{let e=i.readId3V2EncodingAndText(a).split(`/`),t=Number.parseInt(e[0],10),r=e[1]&&Number.parseInt(e[1],10);Number.isInteger(t)&&t>0&&(n.trackNumber??=t),r&&Number.isInteger(r)&&r>0&&(n.tracksTotal??=r)}break;case`TPOS`:case`TPA`:{let e=i.readId3V2EncodingAndText(a).split(`/`),t=Number.parseInt(e[0],10),r=e[1]&&Number.parseInt(e[1],10);Number.isInteger(t)&&t>0&&(n.discNumber??=t),r&&Number.isInteger(r)&&r>0&&(n.discsTotal??=r)}break;case`TCON`:case`TCO`:{let e=i.readId3V2EncodingAndText(a),t=/^\((\d+)\)/.exec(e);if(t){let e=Number.parseInt(t[1]);if(bu[e]!==void 0){n.genre??=bu[e];break}}if(t=/^\d+$/.exec(e),t){let e=Number.parseInt(t[0]);if(bu[e]!==void 0){n.genre??=bu[e];break}}n.genre??=e}break;case`TDRC`:case`TDAT`:{let e=i.readId3V2EncodingAndText(a),t=new Date(e);Number.isNaN(t.getTime())||(n.date??=t)}break;case`TYER`:case`TYE`:{let e=i.readId3V2EncodingAndText(a),t=Number.parseInt(e,10);Number.isInteger(t)&&(n.date??=new Date(String(t)))}break;case`TBPM`:case`TBP`:{let e=i.readId3V2EncodingAndText(a),t=Number.parseInt(e,10);Number.isInteger(t)&&(n.beatsPerMinute??=t)}break;case`USLT`:case`ULT`:{let e=i.readU8();i.pos+=3,i.readId3V2Text(e,a),n.lyrics??=i.readId3V2Text(e,a)}break;case`COMM`:case`COM`:{let e=i.readU8();i.pos+=3,i.readId3V2Text(e,a),n.comment??=i.readId3V2Text(e,a)}break;case`APIC`:case`PIC`:{let e=i.readId3V2TextEncoding(),r;if(t.majorVersion===2){let e=i.readAscii(3);r=e===`PNG`?`image/png`:e===`JPG`?`image/jpeg`:`image/*`}else r=i.readId3V2Text(e,a);let o=i.readU8(),s=i.readId3V2Text(e,a).trimEnd(),c=a-i.pos;if(c>=0){let e=i.readBytes(c);n.images||=[],n.images.push({data:e,mimeType:r,kind:o===3?`coverFront`:o===4?`coverBack`:`unknown`,description:s})}}break;default:i.pos+=e.size}i.pos=a}};var Tu=class{constructor(e,t){this.header=e,this.bytes=t,this.pos=0,this.view=new DataView(t.buffer,t.byteOffset,t.byteLength)}frameHeaderSize(){return this.header.majorVersion===2?6:10}ununsynchronizeAll(){let e=[];for(let t=0;t<this.bytes.length;t++){let n=this.bytes[t];e.push(n),n===255&&t!==this.bytes.length-1&&this.bytes[t]===0&&t++}this.bytes=new Uint8Array(e),this.view=new DataView(this.bytes.buffer)}ununsynchronizeRegion(e,t){let n=[];for(let r=e;r<t;r++){let e=this.bytes[r];n.push(e),e===255&&r!==t-1&&this.bytes[r+1]===0&&r++}let r=this.bytes.subarray(0,e),i=this.bytes.subarray(t);this.bytes=new Uint8Array(r.length+n.length+i.length),this.bytes.set(r,0),this.bytes.set(n,r.length),this.bytes.set(i,r.length+n.length),this.view=new DataView(this.bytes.buffer)}readBytes(e){let t=this.bytes.subarray(this.pos,this.pos+e);return this.pos+=e,t}readU8(){let e=this.view.getUint8(this.pos);return this.pos+=1,e}readU16(){let e=this.view.getUint16(this.pos,!1);return this.pos+=2,e}readU24(){let e=this.view.getUint16(this.pos,!1),t=this.view.getUint8(this.pos+2);return this.pos+=3,e*256+t}readU32(){let e=this.view.getUint32(this.pos,!1);return this.pos+=4,e}readAscii(e){let t=``;for(let n=0;n<e;n++)t+=String.fromCharCode(this.view.getUint8(this.pos+n));return this.pos+=e,t}readId3V2Frame(){if(this.header.majorVersion===2){let e=this.readAscii(3);return e===`\0\0\0`?null:{id:e,size:this.readU24(),flags:0}}{let e=this.readAscii(4);if(e===`\0\0\0\0`)return null;let t=this.readU32(),n=this.header.majorVersion===4?oi(t):t,r=this.readU16(),i=this.pos,a=e=>{let t=this.pos+e;if(t>this.bytes.length)return!1;if(t<=this.bytes.length-this.frameHeaderSize()){this.pos+=e;let t=this.readAscii(4);if(t!==`\0\0\0\0`&&!/[0-9A-Z]{4}/.test(t))return!1}return!0};if(!a(n)){let e=this.header.majorVersion===4?t:oi(t);a(e)&&(n=e)}return this.pos=i,{id:e,size:n,flags:r}}}readId3V2TextEncoding(){let e=this.readU8();if(e>3)throw Error(`Unsupported text encoding: ${e}`);return e}readId3V2Text(e,t){let n=this.pos,r=this.readBytes(t-this.pos);switch(e){case yu.ISO_8859_1:{let e=``;for(let t=0;t<r.length;t++){let i=r[t];if(i===0){this.pos=n+t+1;break}e+=String.fromCharCode(i)}return e}case yu.UTF_16_WITH_BOM:if(r[0]===255&&r[1]===254){let e=new te(`utf-16le`),t=it(r.findIndex((e,t)=>e===0&&r[t+1]===0&&t%2==0),r.length);return this.pos=n+Math.min(t+2,r.length),e.decode(r.subarray(2,t))}if(r[0]===254&&r[1]===255){let e=new te(`utf-16be`),t=it(r.findIndex((e,t)=>e===0&&r[t+1]===0&&t%2==0),r.length);return this.pos=n+Math.min(t+2,r.length),e.decode(r.subarray(2,t))}{let e=it(r.findIndex(e=>e===0),r.length);return this.pos=n+Math.min(e+1,r.length),w.decode(r.subarray(0,e))}case yu.UTF_16_BE_NO_BOM:{let e=new te(`utf-16be`),t=it(r.findIndex((e,t)=>e===0&&r[t+1]===0&&t%2==0),r.length);return this.pos=n+Math.min(t+2,r.length),e.decode(r.subarray(0,t))}case yu.UTF_8:{let e=it(r.findIndex(e=>e===0),r.length);return this.pos=n+Math.min(e+1,r.length),w.decode(r.subarray(0,e))}}}readId3V2EncodingAndText(e){if(this.pos>=e)return``;let t=this.readId3V2TextEncoding();return this.readId3V2Text(t,e)}},Eu=class{constructor(e){this.helper=new Uint8Array(8),this.helperView=C(this.helper),this.writer=e}writeId3V2Tag(e){let t=this.writer.getPos();this.writeAscii(`ID3`),this.writeU8(4),this.writeU8(0),this.writeU8(0),this.writeSynchsafeU32(0);let n=this.writer.getPos(),r=new Set;for(let{key:t,value:n}of ot(e))switch(t){case`title`:this.writeId3V2TextFrame(`TIT2`,n),r.add(`TIT2`);break;case`description`:this.writeId3V2TextFrame(`TIT3`,n),r.add(`TIT3`);break;case`artist`:this.writeId3V2TextFrame(`TPE1`,n),r.add(`TPE1`);break;case`album`:this.writeId3V2TextFrame(`TALB`,n),r.add(`TALB`);break;case`albumArtist`:this.writeId3V2TextFrame(`TPE2`,n),r.add(`TPE2`);break;case`trackNumber`:{let t=e.tracksTotal===void 0?n.toString():`${n}/${e.tracksTotal}`;this.writeId3V2TextFrame(`TRCK`,t),r.add(`TRCK`)}break;case`discNumber`:{let t=e.discsTotal===void 0?n.toString():`${n}/${e.discsTotal}`;this.writeId3V2TextFrame(`TPOS`,t),r.add(`TPOS`)}break;case`genre`:this.writeId3V2TextFrame(`TCON`,n),r.add(`TCON`);break;case`date`:this.writeId3V2TextFrame(`TDRC`,n.toISOString().slice(0,10)),r.add(`TDRC`);break;case`beatsPerMinute`:this.writeId3V2TextFrame(`TBPM`,`${n}`),r.add(`TBPM`);break;case`lyrics`:this.writeId3V2LyricsFrame(n),r.add(`USLT`);break;case`comment`:this.writeId3V2CommentFrame(n),r.add(`COMM`);break;case`images`:{let e={coverFront:3,coverBack:4,unknown:0};for(let t of n){let n=e[t.kind]??0,r=t.description??``;this.writeId3V2ApicFrame(t.mimeType,n,r,t.data)}}break;case`tracksTotal`:case`discsTotal`:break;case`raw`:break;default:Ee(t)}if(e.raw)for(let t in e.raw){let n=e.raw[t];if(n==null||t.length!==4||r.has(t))continue;let i;if(typeof n==`string`){if(ne(n)){i=new Uint8Array(n.length+2),i[0]=yu.ISO_8859_1;for(let e=0;e<n.length;e++)i[e+1]=n.charCodeAt(e)}else{let e=T.encode(n);i=new Uint8Array(e.byteLength+2),i[0]=yu.UTF_8,i.set(e,1)}}else if(n instanceof Uint8Array)i=n;else if(t===`TXXX`&&Nt(n)){for(let e in n){let t=n[e],r=ne(e)&&ne(t),i=r?null:T.encode(e),a=r?null:T.encode(t),o=r?e.length:i.byteLength,s=r?t.length:a.byteLength,c=1+o+1+s+1;this.writeAscii(`TXXX`),this.writeSynchsafeU32(c),this.writeU16(0),this.writeU8(r?yu.ISO_8859_1:yu.UTF_8),r?(this.writeIsoString(e),this.writeIsoString(t)):(this.writer.write(i),this.writeU8(0),this.writer.write(a),this.writeU8(0))}continue}else continue;this.writeAscii(t),this.writeSynchsafeU32(i.byteLength),this.writeU16(0),this.writer.write(i)}let i=this.writer.getPos(),a=i-n;return this.writer.seek(t+6),this.writeSynchsafeU32(a),this.writer.seek(i),a+10}writeU8(e){this.helper[0]=e,this.writer.write(this.helper.subarray(0,1))}writeU16(e){this.helperView.setUint16(0,e,!1),this.writer.write(this.helper.subarray(0,2))}writeU32(e){this.helperView.setUint32(0,e,!1),this.writer.write(this.helper.subarray(0,4))}writeAscii(e){for(let t=0;t<e.length;t++)this.helper[t]=e.charCodeAt(t);this.writer.write(this.helper.subarray(0,e.length))}writeSynchsafeU32(e){this.writeU32(ai(e))}writeIsoString(e){let t=new Uint8Array(e.length+1);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);this.writer.write(t)}writeUtf8String(e){let t=T.encode(e);this.writer.write(t),this.writeU8(0)}writeId3V2TextFrame(e,t){let n=ne(t),r=1+(n?t.length:T.encode(t).byteLength)+1;this.writeAscii(e),this.writeSynchsafeU32(r),this.writeU16(0),this.writeU8(n?yu.ISO_8859_1:yu.UTF_8),n?this.writeIsoString(t):this.writeUtf8String(t)}writeId3V2LyricsFrame(e){let t=ne(e),n=5+e.length+1;this.writeAscii(`USLT`),this.writeSynchsafeU32(n),this.writeU16(0),this.writeU8(t?yu.ISO_8859_1:yu.UTF_8),this.writeAscii(`und`),t?(this.writeIsoString(``),this.writeIsoString(e)):(this.writeUtf8String(``),this.writeUtf8String(e))}writeId3V2CommentFrame(e){let t=ne(e),n=5+(t?e.length:T.encode(e).byteLength)+1;this.writeAscii(`COMM`),this.writeSynchsafeU32(n),this.writeU16(0),this.writeU8(t?yu.ISO_8859_1:yu.UTF_8),this.writeU8(117),this.writeU8(110),this.writeU8(100),t?(this.writeIsoString(``),this.writeIsoString(e)):(this.writeUtf8String(``),this.writeUtf8String(e))}writeId3V2ApicFrame(e,t,n,r){let i=ne(e)&&ne(n),a=i?n.length:T.encode(n).byteLength,o=1+e.length+1+1+a+1+r.byteLength;this.writeAscii(`APIC`),this.writeSynchsafeU32(o),this.writeU16(0),this.writeU8(i?yu.ISO_8859_1:yu.UTF_8),i?this.writeIsoString(e):this.writeUtf8String(e),this.writeU8(t),i?this.writeIsoString(n):this.writeUtf8String(n),this.writer.write(r)}},Du=class{constructor(e){
371
371
  /*!
372
372
  * Copyright (c) 2026-present, Vanilagy and contributors
373
373
  *
@@ -413,7 +413,7 @@ const ju=/(?:(.+?)\n)?((?:\d{2}:)?\d{2}:\d{2}.\d{3})\s+-->\s+((?:\d{2}:)?\d{2}:\
413
413
  * License, v. 2.0. If a copy of the MPL was not distributed with this
414
414
  * file, You can obtain one at https://mozilla.org/MPL/2.0/.
415
415
  */
416
- var Ru=class{constructor(e){this.writer=e,this.helper=new Uint8Array(8),this.helperView=new DataView(this.helper.buffer),this.offsets=new WeakMap}writeU32(e){this.helperView.setUint32(0,e,!1),this.writer.write(this.helper.subarray(0,4))}writeU64(e){this.helperView.setUint32(0,Math.floor(e/2**32),!1),this.helperView.setUint32(4,e,!1),this.writer.write(this.helper.subarray(0,8))}writeAscii(e){for(let t=0;t<e.length;t++)this.helperView.setUint8(t%8,e.charCodeAt(t)),t%8==7&&this.writer.write(this.helper);e.length%8!=0&&this.writer.write(this.helper.subarray(0,e.length%8))}writeBox(e){if(this.offsets.set(e,this.writer.getPos()),e.contents&&!e.children)this.writeBoxHeader(e,e.size??e.contents.byteLength+8),this.writer.write(e.contents);else{let t=this.writer.getPos();if(this.writeBoxHeader(e,0),e.contents&&this.writer.write(e.contents),e.children)for(let t of e.children)t&&this.writeBox(t);let n=this.writer.getPos(),r=e.size??n-t;this.writer.seek(t),this.writeBoxHeader(e,r),this.writer.seek(n)}}writeBoxHeader(e,t){this.writeU32(e.largeSize?1:t),this.writeAscii(e.type),e.largeSize&&this.writeU64(t)}measureBoxHeader(e){return 8+(e.largeSize?8:0)}patchBox(e){let t=this.offsets.get(e);n(t!==void 0);let r=this.writer.getPos();this.writer.seek(t),this.writeBox(e),this.writer.seek(r)}measureBox(e){if(e.contents&&!e.children)return this.measureBoxHeader(e)+e.contents.byteLength;{let t=this.measureBoxHeader(e);if(e.contents&&(t+=e.contents.byteLength),e.children)for(let n of e.children)n&&(t+=this.measureBox(n));return t}}};const K=new Uint8Array(8),zu=new DataView(K.buffer),q=e=>[(e%256+256)%256],J=e=>(zu.setUint16(0,e,!1),[K[0],K[1]]),Bu=e=>(zu.setInt16(0,e,!1),[K[0],K[1]]),Vu=e=>(zu.setUint32(0,e,!1),[K[1],K[2],K[3]]),Y=e=>(zu.setUint32(0,e,!1),[K[0],K[1],K[2],K[3]]),Hu=e=>(zu.setInt32(0,e,!1),[K[0],K[1],K[2],K[3]]),Uu=e=>(zu.setUint32(0,Math.floor(e/2**32),!1),zu.setUint32(4,e,!1),[K[0],K[1],K[2],K[3],K[4],K[5],K[6],K[7]]),Wu=e=>(zu.setInt32(0,Math.floor(e/2**32),!1),zu.setUint32(4,e,!1),[K[0],K[1],K[2],K[3],K[4],K[5],K[6],K[7]]),Gu=e=>(zu.setInt16(0,256*e,!1),[K[0],K[1]]),Ku=e=>(zu.setInt32(0,2**16*e,!1),[K[0],K[1],K[2],K[3]]),qu=e=>(zu.setInt32(0,2**30*e,!1),[K[0],K[1],K[2],K[3]]),Ju=(e,t)=>{let n=[],r=e;do{let e=r&127;r>>=7,n.length>0&&(e|=128),n.push(e),t!==void 0&&t--}while(r>0||t);return n.reverse()},X=(e,t=!1)=>{let n=Array(e.length).fill(null).map((t,n)=>e.charCodeAt(n));return t&&n.push(0),n},Yu=e=>[Ku(e[0]),Ku(e[1]),qu(e[2]),Ku(e[3]),Ku(e[4]),qu(e[5]),Ku(e[6]),Ku(e[7]),qu(e[8])],Z=(e,t,n)=>({type:e,contents:t&&new Uint8Array(t.flat(10)),children:n}),Q=(e,t,n,r,i)=>Z(e,[q(t),Vu(n),r??[]],i),Xu=e=>e.isQuickTime?Z(`ftyp`,[X(`qt `),Y(512),X(`qt `)]):e.fragmented?e.cmaf?Z(`ftyp`,[X(`iso5`),Y(512),X(`iso5`),X(`iso6`),X(`mp41`),X(`cmfc`),X(`dash`)]):Z(`ftyp`,[X(`iso5`),Y(512),X(`iso5`),X(`iso6`),X(`mp41`)]):Z(`ftyp`,[X(`isom`),Y(512),X(`isom`),e.holdsAvc?X(`avc1`):[],X(`mp41`)]),Zu=()=>Z(`styp`,[X(`iso5`),Y(0),X(`iso5`),X(`iso6`),X(`mp41`),X(`cmfc`),X(`dash`)]),Qu=(e,t)=>{let n=Math.max(0,e.minWrittenTimestamp),r=Math.max(0,e.maxWrittenEndTimestamp-n);return Number.isFinite(r)||(r=0),Q(`sidx`,1,0,[Y(1),Y(If),Uu($(n,If)),Uu(0),J(0),J(1),Y(t&2147483647),Y($(r,If)),Y(0)])},$u=e=>({type:`mdat`,largeSize:e}),ed=e=>({type:`free`,size:e}),td=e=>Z(`moov`,void 0,[nd(e.creationTime,e.trackDatas),...e.trackDatas.map(t=>rd(t,e.creationTime)),e.isFragmented?Kd(e.trackDatas):null,cf(e)]),nd=(e,t)=>{let n=Math.max(0,...t.map(e=>Math.max(0,$(Rf(e),If)+$(e.startTimestampOffset??0,If)))),r=Math.max(0,...t.map(e=>e.track.id))+1,i=!g(e)||!g(n),a=i?Uu:Y;return Q(`mvhd`,+i,0,[a(e),a(e),Y(If),a(n),Ku(1),Gu(1),Array(10).fill(0),Yu(o),Array(24).fill(0),Y(r)])},rd=(e,t)=>{let n=Lf(e),r=e.startTimestampOffset!==null&&e.startTimestampOffset!==0;return Z(`trak`,void 0,[id(e,t),r?ad(e):null,od(e,t),n.name===void 0?null:Z(`udta`,void 0,[Z(`name`,[...T.encode(n.name)])])])},id=(e,t)=>{let n=Math.max(0,$(Rf(e),If)+$(e.startTimestampOffset??0,If)),r=!g(t)||!g(n),i=r?Uu:Y,a;if(e.type===`video`&&e.track.metadata.transformationMatrix)a=e.track.metadata.transformationMatrix;else if(e.type===`video`){let{rotation:t,flip:n}=e.track.metadata,r=p(u(t??0),f(n?-1:1,1));a=s(r,e.info.width,e.info.height)}else a=o;let c=2;e.track.metadata.disposition?.default!==!1&&(c|=1);let l=e.type===`video`?0:e.type===`audio`?1:e.type===`subtitle`?2:Ee(e);return Q(`tkhd`,+r,c,[i(t),i(t),Y(e.track.id),Y(0),i(n),Array(8).fill(0),J(0),J(l),Gu(+(e.type===`audio`)),J(0),Yu(a),Ku(e.type===`video`?e.info.width:0),Ku(e.type===`video`?e.info.height:0)])},ad=e=>{let t=e.startTimestampOffset;if(n(t!==null),t>0){let n=$(t,If),r=$(Rf(e),If),i=!g(n)||!g(r),a=i?Uu:Y,o=i?Wu:Hu;return Z(`edts`,void 0,[Q(`elst`,+!!i,0,[Y(2),a(n),o(-1),Ku(1),a(r),o(0),Ku(1)])])}{let n=$(-t,e.timescale),r=Math.max(0,$(Rf(e),If)+$(t,If)),i=!_(n)||!g(r),a=i?Uu:Y,o=i?Wu:Hu;return Z(`edts`,void 0,[Q(`elst`,+!!i,0,[Y(1),a(r),o(n),Ku(1)])])}},od=(e,t)=>Z(`mdia`,void 0,[sd(e,t),ud(!0,cd[e.type],ld[e.type]),dd(e)]),sd=(e,t)=>{let n=$(Rf(e),e.timescale),r=!g(t)||!g(n),i=r?Uu:Y;return Q(`mdhd`,+r,0,[i(t),i(t),Y(e.timescale),i(n),J(Sf(e.track.metadata.languageCode??`und`)),J(0)])},cd={video:`vide`,audio:`soun`,subtitle:`text`},ld={video:`MediabunnyVideoHandler`,audio:`MediabunnySoundHandler`,subtitle:`MediabunnyTextHandler`},ud=(e,t,n,r=`\0\0\0\0`)=>Q(`hdlr`,0,0,[e?X(`mhlr`):Y(0),X(t),X(r),Y(0),Y(0),X(n,!0)]),dd=e=>Z(`minf`,void 0,[fd[e.type](),pd(),gd(e)]),fd={video:()=>Q(`vmhd`,0,1,[J(0),J(0),J(0),J(0)]),audio:()=>Q(`smhd`,0,0,[J(0),J(0)]),subtitle:()=>Q(`nmhd`,0,0)},pd=()=>Z(`dinf`,void 0,[md()]),md=()=>Q(`dref`,0,0,[Y(1)],[hd()]),hd=()=>Q(`url `,0,1),gd=e=>{let t=e.compositionTimeOffsetTable.length>1||e.compositionTimeOffsetTable.some(e=>e.sampleCompositionTimeOffset!==0);return Z(`stbl`,void 0,[_d(e),zd(e),t?Wd(e):null,t?Gd(e):null,Vd(e),Hd(e),Ud(e),Bd(e)])},_d=e=>{let t;if(e.type===`video`)t=vd(gf(e.track.source._codec,e.info.decoderConfig.codec),e);else if(e.type===`audio`){let r=vf(e.track.source._codec,e.info.decoderConfig.codec,e.muxer.isQuickTime);n(r),t=Ed(r,e)}else e.type===`subtitle`&&(t=Ld(bf[e.track.source._codec],e));return n(t),Q(`stsd`,0,0,[Y(1)],[t])},vd=(e,t)=>Z(e,[[,,,,,,].fill(0),J(1),J(0),J(0),Array(12).fill(0),J(t.info.width),J(t.info.height),Y(4718592),Y(4718592),Y(0),J(1),q(10),X(`Mediabunny`),Array(21).fill(0),J(t.info.hasAlphaChannel?32:24),Bu(65535)],[_f[t.track.source._codec]?.(t)??null,bd(t),de(t.info.decoderConfig.colorSpace)?null:xd(t),yd(t)]),yd=e=>e.avgBitrate===0&&e.maxBitrate===0?null:Z(`btrt`,[Y(0),Y(e.maxBitrate),Y(e.avgBitrate)]),bd=e=>e.info.pixelAspectRatio.num===e.info.pixelAspectRatio.den?null:Z(`pasp`,[Y(e.info.pixelAspectRatio.num),Y(e.info.pixelAspectRatio.den)]),xd=e=>{let t=e.info.decoderConfig.colorSpace;return Z(`colr`,[X(e.muxer.isQuickTime?`nclc`:`nclx`),J(t?.primaries==null?2:ie[t.primaries]),J(t?.transfer==null?2:oe[t.transfer]),J(t?.matrix==null?2:ce[t.matrix]),e.muxer.isQuickTime?[]:q(!!t?.fullRange<<7)])},Sd=e=>e.info.decoderConfig&&Z(`avcC`,[...S(e.info.decoderConfig.description)]),Cd=e=>e.info.decoderConfig&&Z(`hvcC`,[...S(e.info.decoderConfig.description)]),wd=e=>{if(!e.info.decoderConfig)return null;let t=e.info.decoderConfig,n=t.codec.split(`.`),r=Number(n[1]),i=Number(n[2]),a=Number(n[3]),o=n[4]?Number(n[4]):1,s=n[8]?Number(n[8]):Number(t.colorSpace?.fullRange??0),c=(a<<4)+(o<<1)+s,l=n[5]?Number(n[5]):t.colorSpace?.primaries?ie[t.colorSpace.primaries]:1,u=n[6]?Number(n[6]):t.colorSpace?.transfer?oe[t.colorSpace.transfer]:1,d=n[7]?Number(n[7]):t.colorSpace?.matrix?ce[t.colorSpace.matrix]:1;return Q(`vpcC`,1,0,[q(r),q(i),q(c),q(l),q(u),q(d),J(0)])},Td=e=>Z(`av1C`,Mr(e.info.decoderConfig.codec)),Ed=(e,t)=>{let n=0,r,i=16,a=P.includes(t.track.source._codec);if(a){let e=t.track.source._codec,{sampleSize:r}=Br(e);i=8*r,i>16&&(n=1)}if(t.muxer.isQuickTime&&(n=1),n===0)r=[[,,,,,,].fill(0),J(1),J(n),J(0),Y(0),J(t.info.numberOfChannels),J(i),J(0),J(0),J(t.info.sampleRate<2**16?t.info.sampleRate:0),J(0)];else{let e=a?0:-2;r=[[,,,,,,].fill(0),J(1),J(n),J(0),Y(0),J(t.info.numberOfChannels),J(Math.min(i,16)),Bu(e),J(0),J(t.info.sampleRate<2**16?t.info.sampleRate:0),J(0),a?[Y(1),Y(i/8),Y(t.info.numberOfChannels*i/8)]:[Y(0),Y(0),Y(0)],Y(2)]}return Z(e,r,[yf(t.track.source._codec,t.muxer.isQuickTime)?.(t)??null,yd(t)])},Dd=e=>{let t;switch(e.track.source._codec){case`aac`:t=64;break;case`mp3`:t=107;break;case`vorbis`:t=221;break;default:throw Error(`Unhandled audio codec: ${e.track.source._codec}`)}let n=[...q(t),...q(21),...Vu(0),...Y(e.maxBitrate),...Y(e.avgBitrate)];if(e.info.decoderConfig.description){let t=S(e.info.decoderConfig.description);n=[...n,...q(5),...Ju(t.byteLength),...t]}return n=[...J(1),...q(0),...q(4),...Ju(n.length),...n,...q(6),...q(1),...q(2)],n=[...q(3),...Ju(n.length),...n],Q(`esds`,0,0,n)},Od=e=>Z(`wave`,void 0,[kd(e),Ad(e),Z(`\0\0\0\0`)]),kd=e=>Z(`frma`,[X(vf(e.track.source._codec,e.info.decoderConfig.codec,e.muxer.isQuickTime))]),Ad=e=>{let{littleEndian:t}=Br(e.track.source._codec);return Z(`enda`,[J(+t)])},jd=e=>{let t=e.info.numberOfChannels,r=3840,i=e.info.sampleRate,a=0,o=0,s=new Uint8Array,c=e.info.decoderConfig?.description;if(c){n(c.byteLength>=18);let e=S(c),l=Hn(e);t=l.outputChannelCount,r=l.preSkip,i=l.inputSampleRate,a=l.outputGain,o=l.channelMappingFamily,l.channelMappingTable&&(s=l.channelMappingTable)}return Z(`dOps`,[q(0),q(t),J(r),Y(i),Bu(a),q(o),...s])},Md=e=>{let t=e.info.decoderConfig?.description;n(t);let r=S(t);return Q(`dfLa`,0,0,[...r.subarray(4)])},Nd=e=>{let{littleEndian:t,sampleSize:n}=Br(e.track.source._codec),r=+t;return Q(`pcmC`,0,0,[q(r),q(8*n)])},Pd=e=>{n(e.info.primingPacket);let t=Zn(e.info.primingPacket.data);if(!t)throw Error(`Couldn't extract AC-3 frame info from the audio packet. Ensure the packets contain valid AC-3 sync frames (as specified in ETSI TS 102 366).`);let r=new Uint8Array(3),i=new j(r);return i.writeBits(2,t.fscod),i.writeBits(5,t.bsid),i.writeBits(3,t.bsmod),i.writeBits(3,t.acmod),i.writeBits(1,t.lfeon),i.writeBits(5,t.bitRateCode),i.writeBits(5,0),Z(`dac3`,[...r])},Fd=e=>{n(e.info.primingPacket);let t=nr(e.info.primingPacket.data);if(!t)throw Error(`Couldn't extract E-AC-3 frame info from the audio packet. Ensure the packets contain valid E-AC-3 sync frames (as specified in ETSI TS 102 366).`);let r=16;for(let e of t.substreams)r+=23,e.numDepSub>0?r+=9:r+=1;let i=Math.ceil(r/8),a=new Uint8Array(i),o=new j(a);o.writeBits(13,t.dataRate),o.writeBits(3,t.substreams.length-1);for(let e of t.substreams)o.writeBits(2,e.fscod),o.writeBits(5,e.bsid),o.writeBits(1,0),o.writeBits(1,0),o.writeBits(3,e.bsmod),o.writeBits(3,e.acmod),o.writeBits(1,e.lfeon),o.writeBits(3,0),o.writeBits(4,e.numDepSub),e.numDepSub>0?o.writeBits(9,e.chanLoc):o.writeBits(1,0);return Z(`dec3`,[...a])},Id=e=>{n(e.info.primingPacket);let t=mr(e.info.primingPacket.data);if(!t)throw Error(`Couldn't extract DTS frame info from the audio packet. Ensure the packets contain valid DTS frames as specified in ETSI TS 102 114.`);return Z(`ddts`,[...yr(t)])},Ld=(e,t)=>Z(e,[[,,,,,,].fill(0),J(1)],[xf[t.track.source._codec](t),yd(t)]),Rd=e=>Z(`vttC`,[...T.encode(e.info.config.description)]),zd=e=>Q(`stts`,0,0,[Y(e.timeToSampleTable.length),e.timeToSampleTable.map(e=>[Y(e.sampleCount),Y(e.sampleDelta)])]),Bd=e=>{if(e.samples.every(e=>e.type===`key`))return null;let t=[...e.samples.entries()].filter(([,e])=>e.type===`key`);return Q(`stss`,0,0,[Y(t.length),t.map(([e])=>Y(e+1))])},Vd=e=>Q(`stsc`,0,0,[Y(e.compactlyCodedChunkTable.length),e.compactlyCodedChunkTable.map(e=>[Y(e.firstChunk),Y(e.samplesPerChunk),Y(1)])]),Hd=e=>{if(e.type===`audio`&&e.info.requiresPcmTransformation){let{sampleSize:t}=Br(e.track.source._codec);return Q(`stsz`,0,0,[Y(t*e.info.numberOfChannels),Y(e.samples.reduce((t,n)=>t+$(n.duration,e.timescale),0))])}return Q(`stsz`,0,0,[Y(0),Y(e.samples.length),e.samples.map(e=>Y(e.size))])},Ud=e=>e.finalizedChunks.length>0&&h(e.finalizedChunks).offset>=2**32?Q(`co64`,0,0,[Y(e.finalizedChunks.length),e.finalizedChunks.map(e=>Uu(e.offset))]):Q(`stco`,0,0,[Y(e.finalizedChunks.length),e.finalizedChunks.map(e=>Y(e.offset))]),Wd=e=>Q(`ctts`,1,0,[Y(e.compositionTimeOffsetTable.length),e.compositionTimeOffsetTable.map(e=>[Y(e.sampleCount),Hu(e.sampleCompositionTimeOffset)])]),Gd=e=>{let t=1/0,r=-1/0,i=1/0,a=-1/0;n(e.compositionTimeOffsetTable.length>0),n(e.samples.length>0);for(let n=0;n<e.compositionTimeOffsetTable.length;n++){let i=e.compositionTimeOffsetTable[n];t=Math.min(t,i.sampleCompositionTimeOffset),r=Math.max(r,i.sampleCompositionTimeOffset)}for(let t=0;t<e.samples.length;t++){let n=e.samples[t];i=Math.min(i,$(n.timestamp,e.timescale)),a=Math.max(a,$(n.timestamp+n.duration,e.timescale))}let o=Math.max(-t,0);return a>=2**31?null:Q(`cslg`,0,0,[Hu(o),Hu(t),Hu(r),Hu(i),Hu(a)])},Kd=e=>Z(`mvex`,void 0,e.map(qd)),qd=e=>Q(`trex`,0,0,[Y(e.track.id),Y(1),Y(0),Y(0),Y(0)]),Jd=(e,t)=>Z(`moof`,void 0,[Yd(e),...t.map(Zd)]),Yd=e=>Q(`mfhd`,0,0,[Y(e)]),Xd=e=>{let t=0,n=0,r=e.type===`delta`;return n|=+r,t|=r?1:2,t<<24|n<<16|0},Zd=e=>Z(`traf`,void 0,[Qd(e),$d(e),ef(e)]),Qd=e=>{n(e.currentChunk);let t=0;t|=8,t|=16,t|=32,t|=131072;let r=e.currentChunk.samples[1]??e.currentChunk.samples[0],i={duration:r.timescaleUnitsToNextSample,size:r.size,flags:Xd(r)};return Q(`tfhd`,0,t,[Y(e.track.id),Y(i.duration),Y(i.size),Y(i.flags)])},$d=e=>(n(e.currentChunk),Q(`tfdt`,1,0,[Uu($(e.currentChunk.startTimestamp,e.timescale))])),ef=e=>{n(e.currentChunk);let t=e.currentChunk.samples.map(e=>e.timescaleUnitsToNextSample),r=e.currentChunk.samples.map(e=>e.size),i=e.currentChunk.samples.map(Xd),a=e.currentChunk.samples.map(t=>$(t.timestamp-t.decodeTimestamp,e.timescale)),o=new Set(t),s=new Set(r),c=new Set(i),l=new Set(a),u=c.size===2&&i[0]!==i[1],d=o.size>1,f=s.size>1,p=!u&&c.size>1,m=l.size>1||[...l].some(e=>e!==0),h=0;return h|=1,h|=4*u,h|=256*d,h|=512*f,h|=1024*p,h|=2048*m,Q(`trun`,1,h,[Y(e.currentChunk.samples.length),Y(e.currentChunk.offset-e.currentChunk.moofOffset||0),u?Y(i[0]):[],e.currentChunk.samples.map((e,n)=>[d?Y(t[n]):[],f?Y(r[n]):[],p?Y(i[n]):[],m?Hu(a[n]):[]])])},tf=e=>Z(`mfra`,void 0,[...e.map(nf),rf()]),nf=e=>Q(`tfra`,1,0,[Y(e.track.id),Y(63),Y(e.finalizedChunks.length),e.finalizedChunks.map(t=>[Uu($(t.samples[0].timestamp,e.timescale)),Uu(t.moofOffset),Y(t.trafIndex+1),Y(1),Y(1)])]),rf=()=>Q(`mfro`,0,0,[Y(0)]),af=()=>Z(`vtte`),of=(e,t,n,r,i)=>Z(`vttc`,void 0,[i===null?null:Z(`vsid`,[Hu(i)]),n===null?null:Z(`iden`,[...T.encode(n)]),t===null?null:Z(`ctim`,[...T.encode(Lu(t))]),r===null?null:Z(`sttg`,[...T.encode(r)]),Z(`payl`,[...T.encode(e)])]),sf=e=>Z(`vtta`,[...T.encode(e)]),cf=e=>{let t=[],n=e.format._options.metadataFormat??`auto`,r=e.output._metadataTags;if(n===`mdir`||n===`auto`&&!e.isQuickTime){let e=pf(r);e&&t.push(e)}else if(n===`mdta`){let e=mf(r);e&&t.push(e)}else(n===`udta`||n===`auto`&&e.isQuickTime)&&lf(t,e.output._metadataTags);return t.length===0?null:Z(`udta`,void 0,t)},lf=(e,t)=>{for(let{key:n,value:r}of ot(t))switch(n){case`title`:e.push(uf(`©nam`,r));break;case`description`:e.push(uf(`©des`,r));break;case`artist`:e.push(uf(`©ART`,r));break;case`album`:e.push(uf(`©alb`,r));break;case`albumArtist`:e.push(uf(`albr`,r));break;case`genre`:e.push(uf(`©gen`,r));break;case`date`:e.push(uf(`©day`,r.toISOString().slice(0,10)));break;case`comment`:e.push(uf(`©cmt`,r));break;case`lyrics`:e.push(uf(`©lyr`,r));break;case`raw`:break;case`discNumber`:case`discsTotal`:case`trackNumber`:case`tracksTotal`:case`images`:break;default:Ee(n)}if(t.raw)for(let n in t.raw){let r=t.raw[n];r==null||n.length!==4||e.some(e=>e.type===n)||(typeof r==`string`?e.push(uf(n,r)):r instanceof Uint8Array&&e.push(Z(n,Array.from(r))))}},uf=(e,t)=>{let n=T.encode(t);return Z(e,[J(n.length),J(Sf(`und`)),Array.from(n)])},df={"image/jpeg":13,"image/png":14,"image/bmp":27},ff=(e,t)=>{let n=[];for(let{key:r,value:i}of ot(e))switch(r){case`title`:n.push({key:t?`title`:`©nam`,value:hf(i)});break;case`description`:n.push({key:t?`description`:`©des`,value:hf(i)});break;case`artist`:n.push({key:t?`artist`:`©ART`,value:hf(i)});break;case`album`:n.push({key:t?`album`:`©alb`,value:hf(i)});break;case`albumArtist`:n.push({key:t?`album_artist`:`aART`,value:hf(i)});break;case`comment`:n.push({key:t?`comment`:`©cmt`,value:hf(i)});break;case`genre`:n.push({key:t?`genre`:`©gen`,value:hf(i)});break;case`lyrics`:n.push({key:t?`lyrics`:`©lyr`,value:hf(i)});break;case`date`:n.push({key:t?`date`:`©day`,value:hf(i.toISOString().slice(0,10))});break;case`images`:for(let e of i)e.kind===`coverFront`&&n.push({key:`covr`,value:Z(`data`,[Y(df[e.mimeType]??0),Y(0),Array.from(e.data)])});break;case`trackNumber`:if(t){let t=e.tracksTotal===void 0?i.toString():`${i}/${e.tracksTotal}`;n.push({key:`track`,value:hf(t)})}else n.push({key:`trkn`,value:Z(`data`,[Y(0),Y(0),J(0),J(i),J(e.tracksTotal??0),J(0)])});break;case`discNumber`:t||n.push({key:`disc`,value:Z(`data`,[Y(0),Y(0),J(0),J(i),J(e.discsTotal??0),J(0)])});break;case`tracksTotal`:case`discsTotal`:break;case`raw`:break;default:Ee(r)}if(e.raw)for(let r in e.raw){let i=e.raw[r];i==null||!t&&r.length!==4||n.some(e=>e.key===r)||(typeof i==`string`?n.push({key:r,value:hf(i)}):i instanceof Uint8Array?n.push({key:r,value:Z(`data`,[Y(0),Y(0),Array.from(i)])}):i instanceof Ft&&n.push({key:r,value:Z(`data`,[Y(df[i.mimeType]??0),Y(0),Array.from(i.data)])}))}return n},pf=e=>{let t=ff(e,!1);return t.length===0?null:Q(`meta`,0,0,void 0,[ud(!1,`mdir`,``,`appl`),Z(`ilst`,void 0,t.map(e=>Z(e.key,void 0,[e.value])))])},mf=e=>{let t=ff(e,!0);return t.length===0?null:Z(`meta`,void 0,[ud(!1,`mdta`,``),Q(`keys`,0,0,[Y(t.length)],t.map(e=>Z(`mdta`,[...T.encode(e.key)]))),Z(`ilst`,void 0,t.map((e,t)=>{let n=String.fromCharCode(...Y(t+1));return Z(n,void 0,[e.value])}))])},hf=e=>Z(`data`,[Y(1),Y(0),...T.encode(e)]),gf=(e,t)=>{switch(e){case`avc`:return t.startsWith(`avc3`)?`avc3`:`avc1`;case`hevc`:return`hvc1`;case`vp8`:return`vp08`;case`vp9`:return`vp09`;case`av1`:return`av01`;case`prores`:return t}},_f={avc:Sd,hevc:Cd,vp8:wd,vp9:wd,av1:Td,prores:null},vf=(e,t,n)=>{switch(e){case`aac`:return`mp4a`;case`mp3`:return`mp4a`;case`opus`:return`Opus`;case`vorbis`:return`mp4a`;case`flac`:return`fLaC`;case`ulaw`:return`ulaw`;case`alaw`:return`alaw`;case`pcm-u8`:return`raw `;case`pcm-s8`:return`sowt`;case`ac3`:return`ac-3`;case`eac3`:return`ec-3`;case`dts`:return t}if(n)switch(e){case`pcm-s16`:return`sowt`;case`pcm-s16be`:return`twos`;case`pcm-s24`:return`in24`;case`pcm-s24be`:return`in24`;case`pcm-s32`:return`in32`;case`pcm-s32be`:return`in32`;case`pcm-f32`:return`fl32`;case`pcm-f32be`:return`fl32`;case`pcm-f64`:return`fl64`;case`pcm-f64be`:return`fl64`}else switch(e){case`pcm-s16`:return`ipcm`;case`pcm-s16be`:return`ipcm`;case`pcm-s24`:return`ipcm`;case`pcm-s24be`:return`ipcm`;case`pcm-s32`:return`ipcm`;case`pcm-s32be`:return`ipcm`;case`pcm-f32`:return`fpcm`;case`pcm-f32be`:return`fpcm`;case`pcm-f64`:return`fpcm`;case`pcm-f64be`:return`fpcm`}},yf=(e,t)=>{switch(e){case`aac`:return Dd;case`mp3`:return Dd;case`opus`:return jd;case`vorbis`:return Dd;case`flac`:return Md;case`ac3`:return Pd;case`eac3`:return Fd;case`dts`:return Id}if(t)switch(e){case`pcm-s24`:return Od;case`pcm-s24be`:return Od;case`pcm-s32`:return Od;case`pcm-s32be`:return Od;case`pcm-f32`:return Od;case`pcm-f32be`:return Od;case`pcm-f64`:return Od;case`pcm-f64be`:return Od}else switch(e){case`pcm-s16`:return Nd;case`pcm-s16be`:return Nd;case`pcm-s24`:return Nd;case`pcm-s24be`:return Nd;case`pcm-s32`:return Nd;case`pcm-s32be`:return Nd;case`pcm-f32`:return Nd;case`pcm-f32be`:return Nd;case`pcm-f64`:return Nd;case`pcm-f64be`:return Nd}return null},bf={webvtt:`wvtt`},xf={webvtt:Rd},Sf=e=>{n(e.length===3);let t=0;for(let n=0;n<3;n++)t<<=5,t+=e.charCodeAt(n)-96;return t};
416
+ var Ru=class{constructor(e){this.writer=e,this.helper=new Uint8Array(8),this.helperView=new DataView(this.helper.buffer),this.offsets=new WeakMap}writeU32(e){this.helperView.setUint32(0,e,!1),this.writer.write(this.helper.subarray(0,4))}writeU64(e){this.helperView.setUint32(0,Math.floor(e/2**32),!1),this.helperView.setUint32(4,e,!1),this.writer.write(this.helper.subarray(0,8))}writeAscii(e){for(let t=0;t<e.length;t++)this.helperView.setUint8(t%8,e.charCodeAt(t)),t%8==7&&this.writer.write(this.helper);e.length%8!=0&&this.writer.write(this.helper.subarray(0,e.length%8))}writeBox(e){if(this.offsets.set(e,this.writer.getPos()),e.contents&&!e.children)this.writeBoxHeader(e,e.size??e.contents.byteLength+8),this.writer.write(e.contents);else{let t=this.writer.getPos();if(this.writeBoxHeader(e,0),e.contents&&this.writer.write(e.contents),e.children)for(let t of e.children)t&&this.writeBox(t);let n=this.writer.getPos(),r=e.size??n-t;this.writer.seek(t),this.writeBoxHeader(e,r),this.writer.seek(n)}}writeBoxHeader(e,t){this.writeU32(e.largeSize?1:t),this.writeAscii(e.type),e.largeSize&&this.writeU64(t)}measureBoxHeader(e){return 8+(e.largeSize?8:0)}patchBox(e){let t=this.offsets.get(e);n(t!==void 0);let r=this.writer.getPos();this.writer.seek(t),this.writeBox(e),this.writer.seek(r)}measureBox(e){if(e.contents&&!e.children)return this.measureBoxHeader(e)+e.contents.byteLength;{let t=this.measureBoxHeader(e);if(e.contents&&(t+=e.contents.byteLength),e.children)for(let n of e.children)n&&(t+=this.measureBox(n));return t}}};const K=new Uint8Array(8),zu=new DataView(K.buffer),q=e=>[(e%256+256)%256],J=e=>(zu.setUint16(0,e,!1),[K[0],K[1]]),Bu=e=>(zu.setInt16(0,e,!1),[K[0],K[1]]),Vu=e=>(zu.setUint32(0,e,!1),[K[1],K[2],K[3]]),Y=e=>(zu.setUint32(0,e,!1),[K[0],K[1],K[2],K[3]]),Hu=e=>(zu.setInt32(0,e,!1),[K[0],K[1],K[2],K[3]]),Uu=e=>(zu.setUint32(0,Math.floor(e/2**32),!1),zu.setUint32(4,e,!1),[K[0],K[1],K[2],K[3],K[4],K[5],K[6],K[7]]),Wu=e=>(zu.setInt32(0,Math.floor(e/2**32),!1),zu.setUint32(4,e,!1),[K[0],K[1],K[2],K[3],K[4],K[5],K[6],K[7]]),Gu=e=>(zu.setInt16(0,256*e,!1),[K[0],K[1]]),Ku=e=>(zu.setInt32(0,2**16*e,!1),[K[0],K[1],K[2],K[3]]),qu=e=>(zu.setInt32(0,2**30*e,!1),[K[0],K[1],K[2],K[3]]),Ju=(e,t)=>{let n=[],r=e;do{let e=r&127;r>>=7,n.length>0&&(e|=128),n.push(e),t!==void 0&&t--}while(r>0||t);return n.reverse()},X=(e,t=!1)=>{let n=Array(e.length).fill(null).map((t,n)=>e.charCodeAt(n));return t&&n.push(0),n},Yu=e=>[Ku(e[0]),Ku(e[1]),qu(e[2]),Ku(e[3]),Ku(e[4]),qu(e[5]),Ku(e[6]),Ku(e[7]),qu(e[8])],Z=(e,t,n)=>({type:e,contents:t&&new Uint8Array(t.flat(10)),children:n}),Q=(e,t,n,r,i)=>Z(e,[q(t),Vu(n),r??[]],i),Xu=e=>e.isQuickTime?Z(`ftyp`,[X(`qt `),Y(512),X(`qt `)]):e.fragmented?e.cmaf?Z(`ftyp`,[X(`iso5`),Y(512),X(`iso5`),X(`iso6`),X(`mp41`),X(`cmfc`),X(`dash`)]):Z(`ftyp`,[X(`iso5`),Y(512),X(`iso5`),X(`iso6`),X(`mp41`)]):Z(`ftyp`,[X(`isom`),Y(512),X(`isom`),e.holdsAvc?X(`avc1`):[],X(`mp41`)]),Zu=()=>Z(`styp`,[X(`iso5`),Y(0),X(`iso5`),X(`iso6`),X(`mp41`),X(`cmfc`),X(`dash`)]),Qu=(e,t)=>{let n=Math.max(0,e.minWrittenTimestamp),r=Math.max(0,e.maxWrittenEndTimestamp-n);return Number.isFinite(r)||(r=0),Q(`sidx`,1,0,[Y(1),Y(If),Uu($(n,If)),Uu(0),J(0),J(1),Y(t&2147483647),Y($(r,If)),Y(0)])},$u=e=>({type:`mdat`,largeSize:e}),ed=e=>({type:`free`,size:e}),td=e=>Z(`moov`,void 0,[nd(e.creationTime,e.trackDatas),...e.trackDatas.map(t=>rd(t,e.creationTime)),e.isFragmented?Kd(e.trackDatas):null,cf(e)]),nd=(e,t)=>{let n=Math.max(0,...t.map(e=>Math.max(0,$(Rf(e),If)+$(e.startTimestampOffset??0,If)))),r=Math.max(0,...t.map(e=>e.track.id))+1,i=!g(e)||!g(n),a=i?Uu:Y;return Q(`mvhd`,+i,0,[a(e),a(e),Y(If),a(n),Ku(1),Gu(1),Array(10).fill(0),Yu(o),Array(24).fill(0),Y(r)])},rd=(e,t)=>{let n=Lf(e),r=e.startTimestampOffset!==null&&e.startTimestampOffset!==0;return Z(`trak`,void 0,[id(e,t),r?ad(e):null,od(e,t),n.name===void 0?null:Z(`udta`,void 0,[Z(`name`,[...T.encode(n.name)])])])},id=(e,t)=>{let n=Math.max(0,$(Rf(e),If)+$(e.startTimestampOffset??0,If)),r=!g(t)||!g(n),i=r?Uu:Y,a;if(e.type===`video`&&e.track.metadata.transformationMatrix)a=e.track.metadata.transformationMatrix;else if(e.type===`video`){let{rotation:t,flip:n}=e.track.metadata,r=p(u(t??0),f(n?-1:1,1));a=s(r,e.info.width,e.info.height)}else a=o;let c=2;e.track.metadata.disposition?.default!==!1&&(c|=1);let l=e.type===`video`?0:e.type===`audio`?1:e.type===`subtitle`?2:Ee(e);return Q(`tkhd`,+r,c,[i(t),i(t),Y(e.track.id),Y(0),i(n),Array(8).fill(0),J(0),J(l),Gu(+(e.type===`audio`)),J(0),Yu(a),Ku(e.type===`video`?e.info.width:0),Ku(e.type===`video`?e.info.height:0)])},ad=e=>{let t=e.startTimestampOffset;if(n(t!==null),t>0){let n=$(t,If),r=$(Rf(e),If),i=!g(n)||!g(r),a=i?Uu:Y,o=i?Wu:Hu;return Z(`edts`,void 0,[Q(`elst`,+!!i,0,[Y(2),a(n),o(-1),Ku(1),a(r),o(0),Ku(1)])])}{let n=$(-t,e.timescale),r=Math.max(0,$(Rf(e),If)+$(t,If)),i=!_(n)||!g(r),a=i?Uu:Y,o=i?Wu:Hu;return Z(`edts`,void 0,[Q(`elst`,+!!i,0,[Y(1),a(r),o(n),Ku(1)])])}},od=(e,t)=>Z(`mdia`,void 0,[sd(e,t),ud(!0,cd[e.type],ld[e.type]),dd(e)]),sd=(e,t)=>{let n=$(Rf(e),e.timescale),r=!g(t)||!g(n),i=r?Uu:Y;return Q(`mdhd`,+r,0,[i(t),i(t),Y(e.timescale),i(n),J(Sf(e.track.metadata.languageCode??`und`)),J(0)])},cd={video:`vide`,audio:`soun`,subtitle:`text`},ld={video:`MediabunnyVideoHandler`,audio:`MediabunnySoundHandler`,subtitle:`MediabunnyTextHandler`},ud=(e,t,n,r=`\0\0\0\0`)=>Q(`hdlr`,0,0,[e?X(`mhlr`):Y(0),X(t),X(r),Y(0),Y(0),X(n,!0)]),dd=e=>Z(`minf`,void 0,[fd[e.type](),pd(),gd(e)]),fd={video:()=>Q(`vmhd`,0,1,[J(0),J(0),J(0),J(0)]),audio:()=>Q(`smhd`,0,0,[J(0),J(0)]),subtitle:()=>Q(`nmhd`,0,0)},pd=()=>Z(`dinf`,void 0,[md()]),md=()=>Q(`dref`,0,0,[Y(1)],[hd()]),hd=()=>Q(`url `,0,1),gd=e=>{let t=e.compositionTimeOffsetTable.length>1||e.compositionTimeOffsetTable.some(e=>e.sampleCompositionTimeOffset!==0);return Z(`stbl`,void 0,[_d(e),zd(e),t?Wd(e):null,t?Gd(e):null,Vd(e),Hd(e),Ud(e),Bd(e)])},_d=e=>{let t;if(e.type===`video`)t=vd(gf(e.track.source._codec,e.info.decoderConfig.codec),e);else if(e.type===`audio`){let r=vf(e.track.source._codec,e.info.decoderConfig.codec,e.muxer.isQuickTime);n(r),t=Ed(r,e)}else e.type===`subtitle`&&(t=Ld(bf[e.track.source._codec],e));return n(t),Q(`stsd`,0,0,[Y(1)],[t])},vd=(e,t)=>Z(e,[[,,,,,,].fill(0),J(1),J(0),J(0),Array(12).fill(0),J(t.info.width),J(t.info.height),Y(4718592),Y(4718592),Y(0),J(1),q(10),X(`Mediabunny`),Array(21).fill(0),J(t.info.hasAlphaChannel?32:24),Bu(65535)],[_f[t.track.source._codec]?.(t)??null,bd(t),de(t.info.decoderConfig.colorSpace)?null:xd(t),yd(t)]),yd=e=>e.avgBitrate===0&&e.maxBitrate===0?null:Z(`btrt`,[Y(0),Y(e.maxBitrate),Y(e.avgBitrate)]),bd=e=>e.info.pixelAspectRatio.num===e.info.pixelAspectRatio.den?null:Z(`pasp`,[Y(e.info.pixelAspectRatio.num),Y(e.info.pixelAspectRatio.den)]),xd=e=>{let t=e.info.decoderConfig.colorSpace;return Z(`colr`,[X(e.muxer.isQuickTime?`nclc`:`nclx`),J(t?.primaries==null?2:ie[t.primaries]),J(t?.transfer==null?2:oe[t.transfer]),J(t?.matrix==null?2:ce[t.matrix]),e.muxer.isQuickTime?[]:q(!!t?.fullRange<<7)])},Sd=e=>e.info.decoderConfig&&Z(`avcC`,[...S(e.info.decoderConfig.description)]),Cd=e=>e.info.decoderConfig&&Z(`hvcC`,[...S(e.info.decoderConfig.description)]),wd=e=>{if(!e.info.decoderConfig)return null;let t=e.info.decoderConfig,n=t.codec.split(`.`),r=Number(n[1]),i=Number(n[2]),a=Number(n[3]),o=n[4]?Number(n[4]):1,s=n[8]?Number(n[8]):Number(t.colorSpace?.fullRange??0),c=(a<<4)+(o<<1)+s,l=n[5]?Number(n[5]):t.colorSpace?.primaries?ie[t.colorSpace.primaries]:1,u=n[6]?Number(n[6]):t.colorSpace?.transfer?oe[t.colorSpace.transfer]:1,d=n[7]?Number(n[7]):t.colorSpace?.matrix?ce[t.colorSpace.matrix]:1;return Q(`vpcC`,1,0,[q(r),q(i),q(c),q(l),q(u),q(d),J(0)])},Td=e=>Z(`av1C`,Mr(e.info.decoderConfig.codec)),Ed=(e,t)=>{let n=0,r,i=16,a=P.includes(t.track.source._codec);if(a){let e=t.track.source._codec,{sampleSize:r}=Br(e);i=8*r,i>16&&(n=1)}if(t.muxer.isQuickTime&&(n=1),n===0)r=[[,,,,,,].fill(0),J(1),J(n),J(0),Y(0),J(t.info.numberOfChannels),J(i),J(0),J(0),J(t.info.sampleRate<2**16?t.info.sampleRate:0),J(0)];else{let e=a?0:-2;r=[[,,,,,,].fill(0),J(1),J(n),J(0),Y(0),J(t.info.numberOfChannels),J(Math.min(i,16)),Bu(e),J(0),J(t.info.sampleRate<2**16?t.info.sampleRate:0),J(0),a?[Y(1),Y(i/8),Y(t.info.numberOfChannels*i/8)]:[Y(0),Y(0),Y(0)],Y(2)]}return Z(e,r,[yf(t.track.source._codec,t.muxer.isQuickTime)?.(t)??null,yd(t)])},Dd=e=>{let t;switch(e.track.source._codec){case`aac`:t=64;break;case`mp3`:t=107;break;case`vorbis`:t=221;break;default:throw Error(`Unhandled audio codec: ${e.track.source._codec}`)}let n=[...q(t),...q(21),...Vu(0),...Y(e.maxBitrate),...Y(e.avgBitrate)];if(e.info.decoderConfig.description){let t=S(e.info.decoderConfig.description);n=[...n,...q(5),...Ju(t.byteLength),...t]}return n=[...J(1),...q(0),...q(4),...Ju(n.length),...n,...q(6),...q(1),...q(2)],n=[...q(3),...Ju(n.length),...n],Q(`esds`,0,0,n)},Od=e=>Z(`wave`,void 0,[kd(e),Ad(e),Z(`\0\0\0\0`)]),kd=e=>Z(`frma`,[X(vf(e.track.source._codec,e.info.decoderConfig.codec,e.muxer.isQuickTime))]),Ad=e=>{let{littleEndian:t}=Br(e.track.source._codec);return Z(`enda`,[J(+t)])},jd=e=>{let t=e.info.numberOfChannels,r=3840,i=e.info.sampleRate,a=0,o=0,s=new Uint8Array,c=e.info.decoderConfig?.description;if(c){n(c.byteLength>=18);let e=S(c),l=Hn(e);t=l.outputChannelCount,r=l.preSkip,i=l.inputSampleRate,a=l.outputGain,o=l.channelMappingFamily,l.channelMappingTable&&(s=l.channelMappingTable)}return Z(`dOps`,[q(0),q(t),J(r),Y(i),Bu(a),q(o),...s])},Md=e=>{let t=e.info.decoderConfig?.description;n(t);let r=S(t);return Q(`dfLa`,0,0,[...r.subarray(4)])},Nd=e=>{let{littleEndian:t,sampleSize:n}=Br(e.track.source._codec),r=+t;return Q(`pcmC`,0,0,[q(r),q(8*n)])},Pd=e=>{n(e.info.primingPacket);let t=Zn(e.info.primingPacket.data);if(!t)throw Error(`Couldn't extract AC-3 frame info from the audio packet. Ensure the packets contain valid AC-3 sync frames (as specified in ETSI TS 102 366).`);let r=new Uint8Array(3),i=new j(r);return i.writeBits(2,t.fscod),i.writeBits(5,t.bsid),i.writeBits(3,t.bsmod),i.writeBits(3,t.acmod),i.writeBits(1,t.lfeon),i.writeBits(5,t.bitRateCode),i.writeBits(5,0),Z(`dac3`,[...r])},Fd=e=>{n(e.info.primingPacket);let t=nr(e.info.primingPacket.data);if(!t)throw Error(`Couldn't extract E-AC-3 frame info from the audio packet. Ensure the packets contain valid E-AC-3 sync frames (as specified in ETSI TS 102 366).`);let r=16;for(let e of t.substreams)r+=23,e.numDepSub>0?r+=9:r+=1;let i=Math.ceil(r/8),a=new Uint8Array(i),o=new j(a);o.writeBits(13,t.dataRate),o.writeBits(3,t.substreams.length-1);for(let e of t.substreams)o.writeBits(2,e.fscod),o.writeBits(5,e.bsid),o.writeBits(1,0),o.writeBits(1,0),o.writeBits(3,e.bsmod),o.writeBits(3,e.acmod),o.writeBits(1,e.lfeon),o.writeBits(3,0),o.writeBits(4,e.numDepSub),e.numDepSub>0?o.writeBits(9,e.chanLoc):o.writeBits(1,0);return Z(`dec3`,[...a])},Id=e=>{n(e.info.primingPacket);let t=mr(e.info.primingPacket.data);if(!t)throw Error(`Couldn't extract DTS frame info from the audio packet. Ensure the packets contain valid DTS frames as specified in ETSI TS 102 114.`);return Z(`ddts`,[...yr(t)])},Ld=(e,t)=>Z(e,[[,,,,,,].fill(0),J(1)],[xf[t.track.source._codec](t),yd(t)]),Rd=e=>Z(`vttC`,[...T.encode(e.info.config.description)]),zd=e=>Q(`stts`,0,0,[Y(e.timeToSampleTable.length),e.timeToSampleTable.map(e=>[Y(e.sampleCount),Y(e.sampleDelta)])]),Bd=e=>{if(e.samples.every(e=>e.type===`key`))return null;let t=[...e.samples.entries()].filter(([,e])=>e.type===`key`);return Q(`stss`,0,0,[Y(t.length),t.map(([e])=>Y(e+1))])},Vd=e=>Q(`stsc`,0,0,[Y(e.compactlyCodedChunkTable.length),e.compactlyCodedChunkTable.map(e=>[Y(e.firstChunk),Y(e.samplesPerChunk),Y(1)])]),Hd=e=>{if(e.type===`audio`&&e.info.requiresPcmTransformation){let{sampleSize:t}=Br(e.track.source._codec);return Q(`stsz`,0,0,[Y(t*e.info.numberOfChannels),Y(e.samples.reduce((t,n)=>t+$(n.duration,e.timescale),0))])}return Q(`stsz`,0,0,[Y(0),Y(e.samples.length),e.samples.map(e=>Y(e.size))])},Ud=e=>e.finalizedChunks.length>0&&h(e.finalizedChunks).offset>=2**32?Q(`co64`,0,0,[Y(e.finalizedChunks.length),e.finalizedChunks.map(e=>Uu(e.offset))]):Q(`stco`,0,0,[Y(e.finalizedChunks.length),e.finalizedChunks.map(e=>Y(e.offset))]),Wd=e=>Q(`ctts`,1,0,[Y(e.compositionTimeOffsetTable.length),e.compositionTimeOffsetTable.map(e=>[Y(e.sampleCount),Hu(e.sampleCompositionTimeOffset)])]),Gd=e=>{let t=1/0,r=-1/0,i=1/0,a=-1/0;n(e.compositionTimeOffsetTable.length>0),n(e.samples.length>0);for(let n=0;n<e.compositionTimeOffsetTable.length;n++){let i=e.compositionTimeOffsetTable[n];t=Math.min(t,i.sampleCompositionTimeOffset),r=Math.max(r,i.sampleCompositionTimeOffset)}for(let t=0;t<e.samples.length;t++){let n=e.samples[t];i=Math.min(i,$(n.timestamp,e.timescale)),a=Math.max(a,$(n.timestamp+n.duration,e.timescale))}let o=Math.max(-t,0);return a>=2**31?null:Q(`cslg`,0,0,[Hu(o),Hu(t),Hu(r),Hu(i),Hu(a)])},Kd=e=>Z(`mvex`,void 0,e.map(qd)),qd=e=>Q(`trex`,0,0,[Y(e.track.id),Y(1),Y(0),Y(0),Y(0)]),Jd=(e,t)=>Z(`moof`,void 0,[Yd(e),...t.map(Zd)]),Yd=e=>Q(`mfhd`,0,0,[Y(e)]),Xd=e=>{let t=0,n=0,r=e.type===`delta`;return n|=+r,t|=r?1:2,t<<24|n<<16|0},Zd=e=>Z(`traf`,void 0,[Qd(e),$d(e),ef(e)]),Qd=e=>{n(e.currentChunk);let t=0;t|=8,t|=16,t|=32,t|=131072;let r=e.currentChunk.samples[1]??e.currentChunk.samples[0],i={duration:r.timescaleUnitsToNextSample,size:r.size,flags:Xd(r)};return Q(`tfhd`,0,t,[Y(e.track.id),Y(i.duration),Y(i.size),Y(i.flags)])},$d=e=>(n(e.currentChunk),Q(`tfdt`,1,0,[Uu($(e.currentChunk.startTimestamp,e.timescale))])),ef=e=>{n(e.currentChunk);let t=e.currentChunk.samples.map(e=>e.timescaleUnitsToNextSample),r=e.currentChunk.samples.map(e=>e.size),i=e.currentChunk.samples.map(Xd),a=e.currentChunk.samples.map(t=>$(t.timestamp-t.decodeTimestamp,e.timescale)),o=new Set(t),s=new Set(r),c=new Set(i),l=new Set(a),u=c.size===2&&i[0]!==i[1],d=o.size>1,f=s.size>1,p=!u&&c.size>1,m=l.size>1||[...l].some(e=>e!==0),h=0;return h|=1,h|=4*u,h|=256*d,h|=512*f,h|=1024*p,h|=2048*m,Q(`trun`,1,h,[Y(e.currentChunk.samples.length),Y(e.currentChunk.offset-e.currentChunk.moofOffset||0),u?Y(i[0]):[],e.currentChunk.samples.map((e,n)=>[d?Y(t[n]):[],f?Y(r[n]):[],p?Y(i[n]):[],m?Hu(a[n]):[]])])},tf=e=>Z(`mfra`,void 0,[...e.map(nf),rf()]),nf=e=>Q(`tfra`,1,0,[Y(e.track.id),Y(63),Y(e.finalizedChunks.length),e.finalizedChunks.map(t=>[Uu($(t.samples[0].timestamp,e.timescale)),Uu(t.moofOffset),Y(t.trafIndex+1),Y(1),Y(1)])]),rf=()=>Q(`mfro`,0,0,[Y(0)]),af=()=>Z(`vtte`),of=(e,t,n,r,i)=>Z(`vttc`,void 0,[i===null?null:Z(`vsid`,[Hu(i)]),n===null?null:Z(`iden`,[...T.encode(n)]),t===null?null:Z(`ctim`,[...T.encode(Lu(t))]),r===null?null:Z(`sttg`,[...T.encode(r)]),Z(`payl`,[...T.encode(e)])]),sf=e=>Z(`vtta`,[...T.encode(e)]),cf=e=>{let t=[],n=e.format._options.metadataFormat??`auto`,r=e.output._metadataTags;if(n===`mdir`||n===`auto`&&!e.isQuickTime){let e=pf(r);e&&t.push(e)}else if(n===`mdta`){let e=mf(r);e&&t.push(e)}else(n===`udta`||n===`auto`&&e.isQuickTime)&&lf(t,e.output._metadataTags);return t.length===0?null:Z(`udta`,void 0,t)},lf=(e,t)=>{for(let{key:n,value:r}of ot(t))switch(n){case`title`:e.push(uf(`©nam`,r));break;case`description`:e.push(uf(`©des`,r));break;case`artist`:e.push(uf(`©ART`,r));break;case`album`:e.push(uf(`©alb`,r));break;case`albumArtist`:e.push(uf(`albr`,r));break;case`genre`:e.push(uf(`©gen`,r));break;case`date`:e.push(uf(`©day`,r.toISOString().slice(0,10)));break;case`comment`:e.push(uf(`©cmt`,r));break;case`lyrics`:e.push(uf(`©lyr`,r));break;case`raw`:break;case`discNumber`:case`discsTotal`:case`trackNumber`:case`tracksTotal`:case`beatsPerMinute`:case`images`:break;default:Ee(n)}if(t.raw)for(let n in t.raw){let r=t.raw[n];r==null||n.length!==4||e.some(e=>e.type===n)||(typeof r==`string`?e.push(uf(n,r)):r instanceof Uint8Array&&e.push(Z(n,Array.from(r))))}},uf=(e,t)=>{let n=T.encode(t);return Z(e,[J(n.length),J(Sf(`und`)),Array.from(n)])},df={"image/jpeg":13,"image/png":14,"image/bmp":27},ff=(e,t)=>{let n=[];for(let{key:r,value:i}of ot(e))switch(r){case`title`:n.push({key:t?`title`:`©nam`,value:hf(i)});break;case`description`:n.push({key:t?`description`:`©des`,value:hf(i)});break;case`artist`:n.push({key:t?`artist`:`©ART`,value:hf(i)});break;case`album`:n.push({key:t?`album`:`©alb`,value:hf(i)});break;case`albumArtist`:n.push({key:t?`album_artist`:`aART`,value:hf(i)});break;case`comment`:n.push({key:t?`comment`:`©cmt`,value:hf(i)});break;case`genre`:n.push({key:t?`genre`:`©gen`,value:hf(i)});break;case`beatsPerMinute`:t||n.push({key:`tmpo`,value:Z(`data`,[Y(21),Y(0),J(i)])});break;case`lyrics`:n.push({key:t?`lyrics`:`©lyr`,value:hf(i)});break;case`date`:n.push({key:t?`date`:`©day`,value:hf(i.toISOString().slice(0,10))});break;case`images`:for(let e of i)e.kind===`coverFront`&&n.push({key:`covr`,value:Z(`data`,[Y(df[e.mimeType]??0),Y(0),Array.from(e.data)])});break;case`trackNumber`:if(t){let t=e.tracksTotal===void 0?i.toString():`${i}/${e.tracksTotal}`;n.push({key:`track`,value:hf(t)})}else n.push({key:`trkn`,value:Z(`data`,[Y(0),Y(0),J(0),J(i),J(e.tracksTotal??0),J(0)])});break;case`discNumber`:t||n.push({key:`disc`,value:Z(`data`,[Y(0),Y(0),J(0),J(i),J(e.discsTotal??0),J(0)])});break;case`tracksTotal`:case`discsTotal`:break;case`raw`:break;default:Ee(r)}if(e.raw)for(let r in e.raw){let i=e.raw[r];i==null||!t&&r.length!==4||n.some(e=>e.key===r)||(typeof i==`string`?n.push({key:r,value:hf(i)}):i instanceof Uint8Array?n.push({key:r,value:Z(`data`,[Y(0),Y(0),Array.from(i)])}):i instanceof Ft&&n.push({key:r,value:Z(`data`,[Y(df[i.mimeType]??0),Y(0),Array.from(i.data)])}))}return n},pf=e=>{let t=ff(e,!1);return t.length===0?null:Q(`meta`,0,0,void 0,[ud(!1,`mdir`,``,`appl`),Z(`ilst`,void 0,t.map(e=>Z(e.key,void 0,[e.value])))])},mf=e=>{let t=ff(e,!0);return t.length===0?null:Z(`meta`,void 0,[ud(!1,`mdta`,``),Q(`keys`,0,0,[Y(t.length)],t.map(e=>Z(`mdta`,[...T.encode(e.key)]))),Z(`ilst`,void 0,t.map((e,t)=>{let n=String.fromCharCode(...Y(t+1));return Z(n,void 0,[e.value])}))])},hf=e=>Z(`data`,[Y(1),Y(0),...T.encode(e)]),gf=(e,t)=>{switch(e){case`avc`:return t.startsWith(`avc3`)?`avc3`:`avc1`;case`hevc`:return`hvc1`;case`vp8`:return`vp08`;case`vp9`:return`vp09`;case`av1`:return`av01`;case`prores`:return t}},_f={avc:Sd,hevc:Cd,vp8:wd,vp9:wd,av1:Td,prores:null},vf=(e,t,n)=>{switch(e){case`aac`:return`mp4a`;case`mp3`:return`mp4a`;case`opus`:return`Opus`;case`vorbis`:return`mp4a`;case`flac`:return`fLaC`;case`ulaw`:return`ulaw`;case`alaw`:return`alaw`;case`pcm-u8`:return`raw `;case`pcm-s8`:return`sowt`;case`ac3`:return`ac-3`;case`eac3`:return`ec-3`;case`dts`:return t}if(n)switch(e){case`pcm-s16`:return`sowt`;case`pcm-s16be`:return`twos`;case`pcm-s24`:return`in24`;case`pcm-s24be`:return`in24`;case`pcm-s32`:return`in32`;case`pcm-s32be`:return`in32`;case`pcm-f32`:return`fl32`;case`pcm-f32be`:return`fl32`;case`pcm-f64`:return`fl64`;case`pcm-f64be`:return`fl64`}else switch(e){case`pcm-s16`:return`ipcm`;case`pcm-s16be`:return`ipcm`;case`pcm-s24`:return`ipcm`;case`pcm-s24be`:return`ipcm`;case`pcm-s32`:return`ipcm`;case`pcm-s32be`:return`ipcm`;case`pcm-f32`:return`fpcm`;case`pcm-f32be`:return`fpcm`;case`pcm-f64`:return`fpcm`;case`pcm-f64be`:return`fpcm`}},yf=(e,t)=>{switch(e){case`aac`:return Dd;case`mp3`:return Dd;case`opus`:return jd;case`vorbis`:return Dd;case`flac`:return Md;case`ac3`:return Pd;case`eac3`:return Fd;case`dts`:return Id}if(t)switch(e){case`pcm-s24`:return Od;case`pcm-s24be`:return Od;case`pcm-s32`:return Od;case`pcm-s32be`:return Od;case`pcm-f32`:return Od;case`pcm-f32be`:return Od;case`pcm-f64`:return Od;case`pcm-f64be`:return Od}else switch(e){case`pcm-s16`:return Nd;case`pcm-s16be`:return Nd;case`pcm-s24`:return Nd;case`pcm-s24be`:return Nd;case`pcm-s32`:return Nd;case`pcm-s32be`:return Nd;case`pcm-f32`:return Nd;case`pcm-f32be`:return Nd;case`pcm-f64`:return Nd;case`pcm-f64be`:return Nd}return null},bf={webvtt:`wvtt`},xf={webvtt:Rd},Sf=e=>{n(e.length===3);let t=0;for(let n=0;n<3;n++)t<<=5,t+=e.charCodeAt(n)-96;return t};
417
417
  /*!
418
418
  * Copyright (c) 2026-present, Vanilagy and contributors
419
419
  *
@@ -445,7 +445,7 @@ const If=57600,Lf=e=>{let t={},n=e.track;return n.metadata.name!==void 0&&(t.nam
445
445
  * License, v. 2.0. If a copy of the MPL was not distributed with this
446
446
  * file, You can obtain one at https://mozilla.org/MPL/2.0/.
447
447
  */
448
- const Bf=-(2**15),Vf=2**15-1,Hf=`Mediabunny`,Uf={video:1,audio:2,subtitle:17};var Wf=class extends Du{constructor(e,t){super(e),this.trackDatas=[],this.allTracksKnown=D(),this.segment=null,this.segmentInfo=null,this.seekHead=null,this.tracksElement=null,this.tagsElement=null,this.attachmentsElement=null,this.segmentDuration=null,this.cues=null,this.currentCluster=null,this.currentClusterStartMsTimestamp=null,this.currentClusterMaxMsTimestamp=null,this.trackDatasInCurrentCluster=new Map,this.startTimestamp=1/0,this.endTimestamp=-1/0,this.warnedAboutTooNegativeTimestamp=!1,this.format=t}async start(){let e=await this.mutex.acquire();this.writer=await this.output._getRootWriter(!!this.format._options.appendOnly),this.ebmlWriter=new oa(this.writer),this.writeEBMLHeader(),this.createSegmentInfo(),this.createCues(),await this.writer.flush();for(let e of this.output.tracks)e.isVideoTrack()&&e.metadata.decoderConfig?this.getVideoTrackData(e,e.metadata.primingPacket??null,{decoderConfig:e.metadata.decoderConfig}):e.isAudioTrack()&&e.metadata.decoderConfig&&this.getAudioTrackData(e,e.metadata.primingPacket??null,{decoderConfig:e.metadata.decoderConfig});e()}writeEBMLHeader(){this.format._options.onEbmlHeader&&this.writer.startTrackingWrites();let e={id:L.EBML,data:[{id:L.EBMLVersion,data:1},{id:L.EBMLReadVersion,data:1},{id:L.EBMLMaxIDLength,data:4},{id:L.EBMLMaxSizeLength,data:8},{id:L.DocType,data:this.format instanceof Up?`webm`:`matroska`},{id:L.DocTypeVersion,data:2},{id:L.DocTypeReadVersion,data:2}]};if(this.ebmlWriter.writeEBML(e),this.format._options.onEbmlHeader){let{data:e,start:t}=this.writer.stopTrackingWrites();this.format._options.onEbmlHeader(e,t)}}maybeCreateSeekHead(e){if(this.format._options.appendOnly)return;let t=new Uint8Array([28,83,187,107]),n=new Uint8Array([21,73,169,102]),r=new Uint8Array([22,84,174,107]),i=new Uint8Array([25,65,164,105]),a=new Uint8Array([18,84,195,103]),o={id:L.SeekHead,data:[{id:L.Seek,data:[{id:L.SeekID,data:t},{id:L.SeekPosition,size:5,data:e?this.ebmlWriter.offsets.get(this.cues)-this.segmentDataOffset:0}]},{id:L.Seek,data:[{id:L.SeekID,data:n},{id:L.SeekPosition,size:5,data:e?this.ebmlWriter.offsets.get(this.segmentInfo)-this.segmentDataOffset:0}]},{id:L.Seek,data:[{id:L.SeekID,data:r},{id:L.SeekPosition,size:5,data:e?this.ebmlWriter.offsets.get(this.tracksElement)-this.segmentDataOffset:0}]},this.attachmentsElement?{id:L.Seek,data:[{id:L.SeekID,data:i},{id:L.SeekPosition,size:5,data:e?this.ebmlWriter.offsets.get(this.attachmentsElement)-this.segmentDataOffset:0}]}:null,this.tagsElement?{id:L.Seek,data:[{id:L.SeekID,data:a},{id:L.SeekPosition,size:5,data:e?this.ebmlWriter.offsets.get(this.tagsElement)-this.segmentDataOffset:0}]}:null]};this.seekHead=o}createSegmentInfo(){let e={id:L.Duration,data:new Xi(0)};this.segmentDuration=e;let t={id:L.Info,data:[{id:L.TimestampScale,data:1e6},{id:L.MuxingApp,data:Hf},{id:L.WritingApp,data:Hf},this.format._options.appendOnly?null:e]};this.segmentInfo=t}createTracks(){let e={id:L.Tracks,data:[]};this.tracksElement=e;for(let t of this.trackDatas){let r=va[t.track.source._codec];n(r),t.type===`audio`&&t.track.source._codec===`dts`&&(t.info.decoderConfig.codec===`dtse`?r=`A_DTS/EXPRESS`:t.info.decoderConfig.codec===`dtsl`&&(r=`A_DTS/LOSSLESS`));let i=0;if(t.type===`audio`&&t.track.source._codec===`opus`){i=8e7;let e=t.info.decoderConfig.description;if(e){let t=S(e),n=Hn(t);i=Math.round(1e9*(n.preSkip/Rr))}}e.data.push({id:L.TrackEntry,data:[{id:L.TrackNumber,data:t.track.id},{id:L.TrackUID,data:t.track.id},{id:L.TrackType,data:Uf[t.type]},t.track.metadata.disposition?.default===!1?{id:L.FlagDefault,data:0}:null,t.track.metadata.disposition?.forced?{id:L.FlagForced,data:1}:null,t.track.metadata.disposition?.hearingImpaired?{id:L.FlagHearingImpaired,data:1}:null,t.track.metadata.disposition?.visuallyImpaired?{id:L.FlagVisualImpaired,data:1}:null,t.track.metadata.disposition?.original?{id:L.FlagOriginal,data:1}:null,t.track.metadata.disposition?.commentary?{id:L.FlagCommentary,data:1}:null,{id:L.FlagLacing,data:0},{id:L.Language,data:t.track.metadata.languageCode??`und`},{id:L.CodecID,data:r},t.codecPrivate?{id:L.CodecPrivate,data:S(t.codecPrivate)}:null,{id:L.CodecDelay,data:0},{id:L.SeekPreRoll,data:i},t.track.metadata.name===void 0?null:{id:L.Name,data:new Qi(t.track.metadata.name)},t.type===`video`?this.videoSpecificTrackInfo(t):null,t.type===`audio`?this.audioSpecificTrackInfo(t):null,t.type===`subtitle`?this.subtitleSpecificTrackInfo(t):null]})}}videoSpecificTrackInfo(e){let{frameRate:t,transformationMatrix:n}=e.track.metadata,r=[t?{id:L.DefaultDuration,data:1e9/t}:null],o,s,l;if(n){o=c(n);let e=p(u(-o),n);s=Math.sign(e[0]),l=Math.sign(e[4]),l===-1&&(l=1,s=-s,o=a(o+180))}else o=e.track.metadata.rotation??0,s=e.track.metadata.flip?-1:1,l=1;let d=o?a(s===-1?o:-o):0,f=Math.round(Math.acos(s)*i),m=Math.round(Math.acos(l)*i),h=!!e.info.aspectRatio&&e.info.aspectRatio.num*e.info.height!==e.info.aspectRatio.den*e.info.width,g=e.info.decoderConfig.colorSpace,_={id:L.Video,data:[{id:L.PixelWidth,data:e.info.width},{id:L.PixelHeight,data:e.info.height},h?{id:L.DisplayWidth,data:e.info.aspectRatio.num}:null,h?{id:L.DisplayHeight,data:e.info.aspectRatio.den}:null,h?{id:L.DisplayUnit,data:3}:null,e.info.alphaMode?{id:L.AlphaMode,data:1}:null,de(g)?null:{id:L.Colour,data:[{id:L.MatrixCoefficients,data:g?.matrix==null?2:ce[g.matrix]},{id:L.TransferCharacteristics,data:g?.transfer==null?2:oe[g.transfer]},{id:L.Primaries,data:g?.primaries==null?2:ie[g.primaries]},{id:L.Range,data:g?.fullRange==null?0:g.fullRange?2:1}]},d||f||m?{id:L.Projection,data:[{id:L.ProjectionType,data:0},f?{id:L.ProjectionPoseYaw,data:new Yi(f)}:null,m?{id:L.ProjectionPosePitch,data:new Yi(m)}:null,d?{id:L.ProjectionPoseRoll,data:new Yi((d+180)%360-180)}:null]}:null]};return r.push(_),r}audioSpecificTrackInfo(e){let t=P.includes(e.track.source._codec)?Br(e.track.source._codec):null;return[{id:L.Audio,data:[{id:L.SamplingFrequency,data:new Yi(e.info.sampleRate)},{id:L.Channels,data:e.info.numberOfChannels},t?{id:L.BitDepth,data:8*t.sampleSize}:null]}]}subtitleSpecificTrackInfo(e){return[]}maybeCreateTags(){let e=[],t=(t,n)=>{e.push({id:L.SimpleTag,data:[{id:L.TagName,data:new Qi(t)},typeof n==`string`?{id:L.TagString,data:new Qi(n)}:{id:L.TagBinary,data:n}]})},n=this.output._metadataTags,r=new Set;for(let{key:e,value:i}of ot(n))switch(e){case`title`:t(`TITLE`,i),r.add(`TITLE`);break;case`description`:t(`DESCRIPTION`,i),r.add(`DESCRIPTION`);break;case`artist`:t(`ARTIST`,i),r.add(`ARTIST`);break;case`album`:t(`ALBUM`,i),r.add(`ALBUM`);break;case`albumArtist`:t(`ALBUM_ARTIST`,i),r.add(`ALBUM_ARTIST`);break;case`genre`:t(`GENRE`,i),r.add(`GENRE`);break;case`comment`:t(`COMMENT`,i),r.add(`COMMENT`);break;case`lyrics`:t(`LYRICS`,i),r.add(`LYRICS`);break;case`date`:t(`DATE`,i.toISOString().slice(0,10)),r.add(`DATE`);break;case`trackNumber`:t(`PART_NUMBER`,n.tracksTotal===void 0?i.toString():`${i}/${n.tracksTotal}`),r.add(`PART_NUMBER`);break;case`discNumber`:t(`DISC`,n.discsTotal===void 0?i.toString():`${i}/${n.discsTotal}`),r.add(`DISC`);break;case`tracksTotal`:case`discsTotal`:break;case`images`:case`raw`:break;default:Ee(e)}if(n.raw)for(let e in n.raw){let i=n.raw[e];i==null||r.has(e)||(typeof i==`string`||i instanceof Uint8Array)&&t(e,i)}e.length!==0&&(this.tagsElement={id:L.Tags,data:[{id:L.Tag,data:[{id:L.Targets,data:[{id:L.TargetTypeValue,data:50},{id:L.TargetType,data:`MOVIE`}]},...e]}]})}maybeCreateAttachments(){let e=this.output._metadataTags,t=[],n=new Set,r=e.images??[];for(let e of r){let r=e.name;r===void 0&&(r=(e.kind===`coverFront`?`cover`:e.kind===`coverBack`?`back`:`image`)+(st(e.mimeType)??``));let i;for(;;){i=0n;for(let e=0;e<8;e++)i<<=8n,i|=BigInt(Math.floor(Math.random()*256));if(i!==0n&&!n.has(i))break}n.add(i),t.push({id:L.AttachedFile,data:[e.description===void 0?null:{id:L.FileDescription,data:new Qi(e.description)},{id:L.FileName,data:new Qi(r)},{id:L.FileMediaType,data:e.mimeType},{id:L.FileData,data:e.data},{id:L.FileUID,data:i}]})}for(let[n,i]of Object.entries(e.raw??{}))i instanceof It&&/^\d+$/.test(n)&&(r.find(e=>e.mimeType===i.mimeType&&ut(e.data,i.data))||t.push({id:L.AttachedFile,data:[i.description===void 0?null:{id:L.FileDescription,data:new Qi(i.description)},{id:L.FileName,data:new Qi(i.name??``)},{id:L.FileMediaType,data:i.mimeType??``},{id:L.FileData,data:i.data},{id:L.FileUID,data:BigInt(n)}]}));t.length!==0&&(this.attachmentsElement={id:L.Attachments,data:t})}createSegment(){this.createTracks(),this.maybeCreateTags(),this.maybeCreateAttachments(),this.maybeCreateSeekHead(!1);let e={id:L.Segment,size:this.format._options.appendOnly?-1:6,data:[this.seekHead,this.segmentInfo,this.tracksElement,this.attachmentsElement,this.tagsElement]};if(this.segment=e,this.format._options.onSegmentHeader&&this.writer.startTrackingWrites(),this.ebmlWriter.writeEBML(e),this.format._options.onSegmentHeader){let{data:e,start:t}=this.writer.stopTrackingWrites();this.format._options.onSegmentHeader(e,t)}}createCues(){this.cues={id:L.Cues,data:[]}}get segmentDataOffset(){return n(this.segment),this.ebmlWriter.dataOffsets.get(this.segment)}allTracksAreKnown(){for(let e of this.output.tracks)if(!e.source._closed&&!this.trackDatas.some(t=>t.track===e))return!1;return!0}async getMimeType(){await this.allTracksKnown.promise;let e=this.trackDatas.map(e=>e.type===`video`||e.type===`audio`?e.info.decoderConfig.codec:{webvtt:`wvtt`}[e.track.source._codec]);return ba({isWebM:this.format instanceof Up,hasVideo:this.trackDatas.some(e=>e.type===`video`),hasAudio:this.trackDatas.some(e=>e.type===`audio`),codecStrings:e})}getVideoTrackData(e,t,r){let i=this.trackDatas.find(t=>t.track===e);if(i)return i;Yr(r,e.source._codec),n(r),n(r.decoderConfig),n(r.decoderConfig.codedWidth!==void 0),n(r.decoderConfig.codedHeight!==void 0);let a=r.decoderConfig.displayAspectWidth,o=r.decoderConfig.displayAspectHeight,s=a===void 0||o===void 0?null:_t({num:a,den:o}),c={track:e,type:`video`,info:{width:r.decoderConfig.codedWidth,height:r.decoderConfig.codedHeight,aspectRatio:s,decoderConfig:r.decoderConfig,alphaMode:t?!!t.sideData.alpha:null},chunkQueue:[],lastWrittenMsTimestamp:null,codecPrivate:r.decoderConfig.description??null,closed:!1};return e.source._codec===`vp9`?c.codecPrivate=new Uint8Array(jr(c.info.decoderConfig.codec)):e.source._codec===`av1`?c.codecPrivate=new Uint8Array(Mr(c.info.decoderConfig.codec)):e.source._codec===`prores`&&(c.codecPrivate=T.encode(r.decoderConfig.codec)),this.trackDatas.push(c),this.trackDatas.sort((e,t)=>e.track.id-t.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),c}getAudioTrackData(e,t,r){let i=this.trackDatas.find(t=>t.track===e);if(i)return i;Zr(r,e.source._codec),n(r),n(r.decoderConfig);let a={...r.decoderConfig},o=!1;if(e.source._codec===`aac`&&!a.description){if(!t)throw Error(`No AAC description provided; you must therefore provide a priming packet.`);let e=Ja(nu.tempFromBytes(t.data));if(!e)throw Error(`Couldn't parse ADTS header from the AAC packet. Make sure the packets are in ADTS format (as specified in ISO 13818-7) when not providing a description, or provide a description (must be an AudioSpecificConfig as specified in ISO 14496-3) and ensure the packets are raw AAC data.`);let n=Vt[e.samplingFrequencyIndex],r=Ht[e.channelConfiguration];if(n===void 0||r===void 0)throw Error(`Invalid ADTS frame header.`);a.description=Kt({objectType:e.objectType,outputSampleRate:n,outputNumberOfChannels:r}),o=!0}let s={track:e,type:`audio`,info:{numberOfChannels:r.decoderConfig.numberOfChannels,sampleRate:r.decoderConfig.sampleRate,decoderConfig:a,requiresAdtsStripping:o},chunkQueue:[],lastWrittenMsTimestamp:null,codecPrivate:a.description??null,closed:!1};return this.trackDatas.push(s),this.trackDatas.sort((e,t)=>e.track.id-t.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),s}getSubtitleTrackData(e,t){let r=this.trackDatas.find(t=>t.track===e);if(r)return r;Qr(t),n(t),n(t.config);let i={track:e,type:`subtitle`,info:{config:t.config},chunkQueue:[],lastWrittenMsTimestamp:null,codecPrivate:T.encode(t.config.description),closed:!1};return this.trackDatas.push(i),this.trackDatas.sort((e,t)=>e.track.id-t.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),i}async addEncodedVideoPacket(e,t,n){let r=await this.mutex.acquire();try{let r=this.getVideoTrackData(e,t,n);r.info.alphaMode??=!!t.sideData.alpha;let i=t.data;if(e.source._codec===`prores`){if(i.byteLength<8)throw Error(`ProRes packet too small, expected at least 8 bytes.`);i=i.subarray(8)}let a=t.type===`key`;this.validateTimestamp(r.track,t.timestamp,a);let o=t.timestamp,s=t.duration;e.metadata.frameRate!==void 0&&(o=Le(o,e.metadata.frameRate),s=Le(s,e.metadata.frameRate));let c=r.info.alphaMode?t.sideData.alpha??null:null,l=this.createInternalChunk(i,o,s,t.type,c);e.source._codec===`vp9`&&this.fixVP9ColorSpace(r,l),r.chunkQueue.push(l),await this.interleaveChunks()}finally{r()}}async addEncodedAudioPacket(e,t,n){let r=await this.mutex.acquire();try{let r=this.getAudioTrackData(e,t,n),i=t.data;if(r.info.requiresAdtsStripping){let e=Ja(nu.tempFromBytes(i));if(!e)throw Error(`Expected ADTS frame, didn't get one.`);let t=e.crcCheck===null?7:9;i=i.subarray(t)}let a=t.type===`key`;this.validateTimestamp(r.track,t.timestamp,a);let o=this.createInternalChunk(i,t.timestamp,t.duration,t.type);r.chunkQueue.push(o),await this.interleaveChunks()}finally{r()}}async addSubtitleCue(e,t,n){let r=await this.mutex.acquire();try{let r=this.getSubtitleTrackData(e,n);this.validateTimestamp(r.track,t.timestamp,!0);let i=t.text,a=Math.round(t.timestamp*1e3);Nu.lastIndex=0,i=i.replace(Nu,e=>{let t=Iu(e.slice(1,-1))-a;return`<${Lu(t)}>`});let o=T.encode(i),s=`${t.settings??``}\n${t.identifier??``}\n${t.notes??``}`,c=this.createInternalChunk(o,t.timestamp,t.duration,`key`,s.trim()?T.encode(s):null);r.chunkQueue.push(c),await this.interleaveChunks()}finally{r()}}async interleaveChunks(e=!1){if(!(!e&&!this.allTracksAreKnown())){outer:for(;;){let t=null,n=1/0;for(let r of this.trackDatas){if(!e&&r.chunkQueue.length===0&&!r.closed)break outer;r.chunkQueue.length>0&&r.chunkQueue[0].timestamp<n&&(t=r,n=r.chunkQueue[0].timestamp)}if(!t)break;let r=t.chunkQueue.shift();this.writeBlock(t,r)}e||await this.writer.flush()}}fixVP9ColorSpace(e,t){if(t.type!==`key`||!e.info.decoderConfig.colorSpace||!e.info.decoderConfig.colorSpace.matrix)return;let n=new j(t.data);n.skipBits(2);let r=n.readBits(1),i=(n.readBits(1)<<1)+r;if(i===3&&n.skipBits(1),n.readBits(1)||n.readBits(1)!==0||(n.skipBits(2),n.readBits(24)!==4817730))return;i>=2&&n.skipBits(1);let a={rgb:7,bt709:2,bt470bg:1,smpte170m:3}[e.info.decoderConfig.colorSpace.matrix];x(t.data,n.pos,n.pos+3,a)}createInternalChunk(e,t,n,r,i=null){return{data:e,type:r,timestamp:t,duration:n,additions:i}}writeBlock(e,t){this.segment||this.createSegment();let r=Math.round(1e3*t.timestamp),i=this.trackDatas.every(n=>{if(e===n)return t.type===`key`;let r=n.chunkQueue[0];return r?r.type===`key`:n.closed}),a=!1;if(!this.currentCluster)a=!0;else{n(this.currentClusterStartMsTimestamp!==null),n(this.currentClusterMaxMsTimestamp!==null);let e=r-this.currentClusterStartMsTimestamp;a=i&&r>this.currentClusterMaxMsTimestamp&&e>=1e3*(this.format._options.minimumClusterDuration??1)||e>Vf}a&&this.createNewCluster(r);let o=r-this.currentClusterStartMsTimestamp;if(o<Bf){if(!this.warnedAboutTooNegativeTimestamp){let e=this.format instanceof Up?`WebM`:`Matroska`;A._warn(`Packets had to be discarded because their timestamp is too negative to represent in ${e}.`),this.warnedAboutTooNegativeTimestamp=!0}return}let s=new Uint8Array(4),c=new DataView(s.buffer);c.setUint8(0,128|e.track.id),c.setInt16(1,o,!1);let l=Math.round(1e3*t.duration);if(t.additions||e.type===`subtitle`){let n={id:L.BlockGroup,data:[{id:L.Block,data:[s,t.data]},t.type===`delta`?{id:L.ReferenceBlock,data:new Zi(e.lastWrittenMsTimestamp-r)}:null,t.additions?{id:L.BlockAdditions,data:[{id:L.BlockMore,data:[{id:L.BlockAddID,data:1},{id:L.BlockAdditional,data:t.additions}]}]}:null,l>0?{id:L.BlockDuration,data:l}:null]};this.ebmlWriter.writeEBML(n)}else{c.setUint8(3,Number(t.type===`key`)<<7);let e={id:L.SimpleBlock,data:[s,t.data]};this.ebmlWriter.writeEBML(e)}this.startTimestamp=Math.min(this.startTimestamp,r),this.endTimestamp=Math.max(this.endTimestamp,r+l),e.lastWrittenMsTimestamp=r,this.trackDatasInCurrentCluster.has(e)||this.trackDatasInCurrentCluster.set(e,{firstMsTimestamp:r}),this.currentClusterMaxMsTimestamp=Math.max(this.currentClusterMaxMsTimestamp,r)}createNewCluster(e){e=Math.max(0,e),this.currentCluster&&this.finalizeCurrentCluster(),this.format._options.onCluster&&this.writer.startTrackingWrites(),this.currentCluster={id:L.Cluster,size:this.format._options.appendOnly?-1:5,data:[{id:L.Timestamp,data:e}]},this.ebmlWriter.writeEBML(this.currentCluster),this.currentClusterStartMsTimestamp=e,this.currentClusterMaxMsTimestamp=e,this.trackDatasInCurrentCluster.clear()}finalizeCurrentCluster(){if(n(this.currentCluster),!this.format._options.appendOnly){let e=this.writer.getPos()-this.ebmlWriter.dataOffsets.get(this.currentCluster),t=this.writer.getPos();this.writer.seek(this.ebmlWriter.offsets.get(this.currentCluster)+4),this.ebmlWriter.writeVarInt(e,5),this.writer.seek(t)}if(this.format._options.onCluster){n(this.currentClusterStartMsTimestamp!==null);let{data:e,start:t}=this.writer.stopTrackingWrites();this.format._options.onCluster(e,t,this.currentClusterStartMsTimestamp/1e3)}let e=this.ebmlWriter.offsets.get(this.currentCluster)-this.segmentDataOffset,t=new Map;for(let[e,{firstMsTimestamp:n}]of this.trackDatasInCurrentCluster)t.has(n)||t.set(n,[]),t.get(n).push(e);let r=[...t.entries()].sort((e,t)=>e[0]-t[0]);for(let[t,i]of r)n(this.cues),this.cues.data.push({id:L.CuePoint,data:[{id:L.CueTime,data:Math.max(0,t)},...i.map(t=>({id:L.CueTrackPositions,data:[{id:L.CueTrack,data:t.track.id},{id:L.CueClusterPosition,data:e}]}))]})}async onTrackClose(e){let t=await this.mutex.acquire(),n=this.trackDatas.find(t=>t.track===e);n&&(n.closed=!0),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),await this.interleaveChunks(),t()}async finalize(){let e=await this.mutex.acquire();this.allTracksKnown.resolve();for(let e of this.trackDatas)e.closed=!0;if(this.segment||this.createSegment(),await this.interleaveChunks(!0),this.currentCluster&&this.finalizeCurrentCluster(),n(this.cues),this.ebmlWriter.writeEBML(this.cues),!this.format._options.appendOnly){let e=this.writer.getPos()-this.segmentDataOffset;this.writer.seek(this.ebmlWriter.offsets.get(this.segment)+4),this.ebmlWriter.writeVarInt(e,6);let t=this.startTimestamp===1/0?0:this.endTimestamp-this.startTimestamp;this.segmentDuration.data=new Xi(t),this.writer.seek(this.ebmlWriter.offsets.get(this.segmentDuration)),this.ebmlWriter.writeEBML(this.segmentDuration),n(this.seekHead),this.writer.seek(this.ebmlWriter.offsets.get(this.seekHead)),this.maybeCreateSeekHead(!0),this.ebmlWriter.writeEBML(this.seekHead)}e()}},Gf=class{constructor(e){
448
+ const Bf=-(2**15),Vf=2**15-1,Hf=`Mediabunny`,Uf={video:1,audio:2,subtitle:17};var Wf=class extends Du{constructor(e,t){super(e),this.trackDatas=[],this.allTracksKnown=D(),this.segment=null,this.segmentInfo=null,this.seekHead=null,this.tracksElement=null,this.tagsElement=null,this.attachmentsElement=null,this.segmentDuration=null,this.cues=null,this.currentCluster=null,this.currentClusterStartMsTimestamp=null,this.currentClusterMaxMsTimestamp=null,this.trackDatasInCurrentCluster=new Map,this.startTimestamp=1/0,this.endTimestamp=-1/0,this.warnedAboutTooNegativeTimestamp=!1,this.format=t}async start(){let e=await this.mutex.acquire();this.writer=await this.output._getRootWriter(!!this.format._options.appendOnly),this.ebmlWriter=new oa(this.writer),this.writeEBMLHeader(),this.createSegmentInfo(),this.createCues(),await this.writer.flush();for(let e of this.output.tracks)e.isVideoTrack()&&e.metadata.decoderConfig?this.getVideoTrackData(e,e.metadata.primingPacket??null,{decoderConfig:e.metadata.decoderConfig}):e.isAudioTrack()&&e.metadata.decoderConfig&&this.getAudioTrackData(e,e.metadata.primingPacket??null,{decoderConfig:e.metadata.decoderConfig});e()}writeEBMLHeader(){this.format._options.onEbmlHeader&&this.writer.startTrackingWrites();let e={id:L.EBML,data:[{id:L.EBMLVersion,data:1},{id:L.EBMLReadVersion,data:1},{id:L.EBMLMaxIDLength,data:4},{id:L.EBMLMaxSizeLength,data:8},{id:L.DocType,data:this.format instanceof Up?`webm`:`matroska`},{id:L.DocTypeVersion,data:2},{id:L.DocTypeReadVersion,data:2}]};if(this.ebmlWriter.writeEBML(e),this.format._options.onEbmlHeader){let{data:e,start:t}=this.writer.stopTrackingWrites();this.format._options.onEbmlHeader(e,t)}}maybeCreateSeekHead(e){if(this.format._options.appendOnly)return;let t=new Uint8Array([28,83,187,107]),n=new Uint8Array([21,73,169,102]),r=new Uint8Array([22,84,174,107]),i=new Uint8Array([25,65,164,105]),a=new Uint8Array([18,84,195,103]),o={id:L.SeekHead,data:[{id:L.Seek,data:[{id:L.SeekID,data:t},{id:L.SeekPosition,size:5,data:e?this.ebmlWriter.offsets.get(this.cues)-this.segmentDataOffset:0}]},{id:L.Seek,data:[{id:L.SeekID,data:n},{id:L.SeekPosition,size:5,data:e?this.ebmlWriter.offsets.get(this.segmentInfo)-this.segmentDataOffset:0}]},{id:L.Seek,data:[{id:L.SeekID,data:r},{id:L.SeekPosition,size:5,data:e?this.ebmlWriter.offsets.get(this.tracksElement)-this.segmentDataOffset:0}]},this.attachmentsElement?{id:L.Seek,data:[{id:L.SeekID,data:i},{id:L.SeekPosition,size:5,data:e?this.ebmlWriter.offsets.get(this.attachmentsElement)-this.segmentDataOffset:0}]}:null,this.tagsElement?{id:L.Seek,data:[{id:L.SeekID,data:a},{id:L.SeekPosition,size:5,data:e?this.ebmlWriter.offsets.get(this.tagsElement)-this.segmentDataOffset:0}]}:null]};this.seekHead=o}createSegmentInfo(){let e={id:L.Duration,data:new Xi(0)};this.segmentDuration=e;let t={id:L.Info,data:[{id:L.TimestampScale,data:1e6},{id:L.MuxingApp,data:Hf},{id:L.WritingApp,data:Hf},this.format._options.appendOnly?null:e]};this.segmentInfo=t}createTracks(){let e={id:L.Tracks,data:[]};this.tracksElement=e;for(let t of this.trackDatas){let r=va[t.track.source._codec];n(r),t.type===`audio`&&t.track.source._codec===`dts`&&(t.info.decoderConfig.codec===`dtse`?r=`A_DTS/EXPRESS`:t.info.decoderConfig.codec===`dtsl`&&(r=`A_DTS/LOSSLESS`));let i=0;if(t.type===`audio`&&t.track.source._codec===`opus`){i=8e7;let e=t.info.decoderConfig.description;if(e){let t=S(e),n=Hn(t);i=Math.round(1e9*(n.preSkip/Rr))}}e.data.push({id:L.TrackEntry,data:[{id:L.TrackNumber,data:t.track.id},{id:L.TrackUID,data:t.track.id},{id:L.TrackType,data:Uf[t.type]},t.track.metadata.disposition?.default===!1?{id:L.FlagDefault,data:0}:null,t.track.metadata.disposition?.forced?{id:L.FlagForced,data:1}:null,t.track.metadata.disposition?.hearingImpaired?{id:L.FlagHearingImpaired,data:1}:null,t.track.metadata.disposition?.visuallyImpaired?{id:L.FlagVisualImpaired,data:1}:null,t.track.metadata.disposition?.original?{id:L.FlagOriginal,data:1}:null,t.track.metadata.disposition?.commentary?{id:L.FlagCommentary,data:1}:null,{id:L.FlagLacing,data:0},{id:L.Language,data:t.track.metadata.languageCode??`und`},{id:L.CodecID,data:r},t.codecPrivate?{id:L.CodecPrivate,data:S(t.codecPrivate)}:null,{id:L.CodecDelay,data:0},{id:L.SeekPreRoll,data:i},t.track.metadata.name===void 0?null:{id:L.Name,data:new Qi(t.track.metadata.name)},t.type===`video`?this.videoSpecificTrackInfo(t):null,t.type===`audio`?this.audioSpecificTrackInfo(t):null,t.type===`subtitle`?this.subtitleSpecificTrackInfo(t):null]})}}videoSpecificTrackInfo(e){let{frameRate:t,transformationMatrix:n}=e.track.metadata,r=[t?{id:L.DefaultDuration,data:1e9/t}:null],o,s,l;if(n){o=c(n);let e=p(u(-o),n);s=Math.sign(e[0]),l=Math.sign(e[4]),l===-1&&(l=1,s=-s,o=a(o+180))}else o=e.track.metadata.rotation??0,s=e.track.metadata.flip?-1:1,l=1;let d=o?a(s===-1?o:-o):0,f=Math.round(Math.acos(s)*i),m=Math.round(Math.acos(l)*i),h=!!e.info.aspectRatio&&e.info.aspectRatio.num*e.info.height!==e.info.aspectRatio.den*e.info.width,g=e.info.decoderConfig.colorSpace,_={id:L.Video,data:[{id:L.PixelWidth,data:e.info.width},{id:L.PixelHeight,data:e.info.height},h?{id:L.DisplayWidth,data:e.info.aspectRatio.num}:null,h?{id:L.DisplayHeight,data:e.info.aspectRatio.den}:null,h?{id:L.DisplayUnit,data:3}:null,e.info.alphaMode?{id:L.AlphaMode,data:1}:null,de(g)?null:{id:L.Colour,data:[{id:L.MatrixCoefficients,data:g?.matrix==null?2:ce[g.matrix]},{id:L.TransferCharacteristics,data:g?.transfer==null?2:oe[g.transfer]},{id:L.Primaries,data:g?.primaries==null?2:ie[g.primaries]},{id:L.Range,data:g?.fullRange==null?0:g.fullRange?2:1}]},d||f||m?{id:L.Projection,data:[{id:L.ProjectionType,data:0},f?{id:L.ProjectionPoseYaw,data:new Yi(f)}:null,m?{id:L.ProjectionPosePitch,data:new Yi(m)}:null,d?{id:L.ProjectionPoseRoll,data:new Yi((d+180)%360-180)}:null]}:null]};return r.push(_),r}audioSpecificTrackInfo(e){let t=P.includes(e.track.source._codec)?Br(e.track.source._codec):null;return[{id:L.Audio,data:[{id:L.SamplingFrequency,data:new Yi(e.info.sampleRate)},{id:L.Channels,data:e.info.numberOfChannels},t?{id:L.BitDepth,data:8*t.sampleSize}:null]}]}subtitleSpecificTrackInfo(e){return[]}maybeCreateTags(){let e=[],t=(t,n)=>{e.push({id:L.SimpleTag,data:[{id:L.TagName,data:new Qi(t)},typeof n==`string`?{id:L.TagString,data:new Qi(n)}:{id:L.TagBinary,data:n}]})},n=this.output._metadataTags,r=new Set;for(let{key:e,value:i}of ot(n))switch(e){case`title`:t(`TITLE`,i),r.add(`TITLE`);break;case`description`:t(`DESCRIPTION`,i),r.add(`DESCRIPTION`);break;case`artist`:t(`ARTIST`,i),r.add(`ARTIST`);break;case`album`:t(`ALBUM`,i),r.add(`ALBUM`);break;case`albumArtist`:t(`ALBUM_ARTIST`,i),r.add(`ALBUM_ARTIST`);break;case`genre`:t(`GENRE`,i),r.add(`GENRE`);break;case`beatsPerMinute`:t(`BPM`,i.toString()),r.add(`BPM`);break;case`comment`:t(`COMMENT`,i),r.add(`COMMENT`);break;case`lyrics`:t(`LYRICS`,i),r.add(`LYRICS`);break;case`date`:t(`DATE`,i.toISOString().slice(0,10)),r.add(`DATE`);break;case`trackNumber`:t(`PART_NUMBER`,n.tracksTotal===void 0?i.toString():`${i}/${n.tracksTotal}`),r.add(`PART_NUMBER`);break;case`discNumber`:t(`DISC`,n.discsTotal===void 0?i.toString():`${i}/${n.discsTotal}`),r.add(`DISC`);break;case`tracksTotal`:case`discsTotal`:break;case`images`:case`raw`:break;default:Ee(e)}if(n.raw)for(let e in n.raw){let i=n.raw[e];i==null||r.has(e)||(typeof i==`string`||i instanceof Uint8Array)&&t(e,i)}e.length!==0&&(this.tagsElement={id:L.Tags,data:[{id:L.Tag,data:[{id:L.Targets,data:[{id:L.TargetTypeValue,data:50},{id:L.TargetType,data:`MOVIE`}]},...e]}]})}maybeCreateAttachments(){let e=this.output._metadataTags,t=[],n=new Set,r=e.images??[];for(let e of r){let r=e.name;r===void 0&&(r=(e.kind===`coverFront`?`cover`:e.kind===`coverBack`?`back`:`image`)+(st(e.mimeType)??``));let i;for(;;){i=0n;for(let e=0;e<8;e++)i<<=8n,i|=BigInt(Math.floor(Math.random()*256));if(i!==0n&&!n.has(i))break}n.add(i),t.push({id:L.AttachedFile,data:[e.description===void 0?null:{id:L.FileDescription,data:new Qi(e.description)},{id:L.FileName,data:new Qi(r)},{id:L.FileMediaType,data:e.mimeType},{id:L.FileData,data:e.data},{id:L.FileUID,data:i}]})}for(let[n,i]of Object.entries(e.raw??{}))i instanceof It&&/^\d+$/.test(n)&&(r.find(e=>e.mimeType===i.mimeType&&ut(e.data,i.data))||t.push({id:L.AttachedFile,data:[i.description===void 0?null:{id:L.FileDescription,data:new Qi(i.description)},{id:L.FileName,data:new Qi(i.name??``)},{id:L.FileMediaType,data:i.mimeType??``},{id:L.FileData,data:i.data},{id:L.FileUID,data:BigInt(n)}]}));t.length!==0&&(this.attachmentsElement={id:L.Attachments,data:t})}createSegment(){this.createTracks(),this.maybeCreateTags(),this.maybeCreateAttachments(),this.maybeCreateSeekHead(!1);let e={id:L.Segment,size:this.format._options.appendOnly?-1:6,data:[this.seekHead,this.segmentInfo,this.tracksElement,this.attachmentsElement,this.tagsElement]};if(this.segment=e,this.format._options.onSegmentHeader&&this.writer.startTrackingWrites(),this.ebmlWriter.writeEBML(e),this.format._options.onSegmentHeader){let{data:e,start:t}=this.writer.stopTrackingWrites();this.format._options.onSegmentHeader(e,t)}}createCues(){this.cues={id:L.Cues,data:[]}}get segmentDataOffset(){return n(this.segment),this.ebmlWriter.dataOffsets.get(this.segment)}allTracksAreKnown(){for(let e of this.output.tracks)if(!e.source._closed&&!this.trackDatas.some(t=>t.track===e))return!1;return!0}async getMimeType(){await this.allTracksKnown.promise;let e=this.trackDatas.map(e=>e.type===`video`||e.type===`audio`?e.info.decoderConfig.codec:{webvtt:`wvtt`}[e.track.source._codec]);return ba({isWebM:this.format instanceof Up,hasVideo:this.trackDatas.some(e=>e.type===`video`),hasAudio:this.trackDatas.some(e=>e.type===`audio`),codecStrings:e})}getVideoTrackData(e,t,r){let i=this.trackDatas.find(t=>t.track===e);if(i)return i;Yr(r,e.source._codec),n(r),n(r.decoderConfig),n(r.decoderConfig.codedWidth!==void 0),n(r.decoderConfig.codedHeight!==void 0);let a=r.decoderConfig.displayAspectWidth,o=r.decoderConfig.displayAspectHeight,s=a===void 0||o===void 0?null:_t({num:a,den:o}),c={track:e,type:`video`,info:{width:r.decoderConfig.codedWidth,height:r.decoderConfig.codedHeight,aspectRatio:s,decoderConfig:r.decoderConfig,alphaMode:t?!!t.sideData.alpha:null},chunkQueue:[],lastWrittenMsTimestamp:null,codecPrivate:r.decoderConfig.description??null,closed:!1};return e.source._codec===`vp9`?c.codecPrivate=new Uint8Array(jr(c.info.decoderConfig.codec)):e.source._codec===`av1`?c.codecPrivate=new Uint8Array(Mr(c.info.decoderConfig.codec)):e.source._codec===`prores`&&(c.codecPrivate=T.encode(r.decoderConfig.codec)),this.trackDatas.push(c),this.trackDatas.sort((e,t)=>e.track.id-t.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),c}getAudioTrackData(e,t,r){let i=this.trackDatas.find(t=>t.track===e);if(i)return i;Zr(r,e.source._codec),n(r),n(r.decoderConfig);let a={...r.decoderConfig},o=!1;if(e.source._codec===`aac`&&!a.description){if(!t)throw Error(`No AAC description provided; you must therefore provide a priming packet.`);let e=Ja(nu.tempFromBytes(t.data));if(!e)throw Error(`Couldn't parse ADTS header from the AAC packet. Make sure the packets are in ADTS format (as specified in ISO 13818-7) when not providing a description, or provide a description (must be an AudioSpecificConfig as specified in ISO 14496-3) and ensure the packets are raw AAC data.`);let n=Vt[e.samplingFrequencyIndex],r=Ht[e.channelConfiguration];if(n===void 0||r===void 0)throw Error(`Invalid ADTS frame header.`);a.description=Kt({objectType:e.objectType,outputSampleRate:n,outputNumberOfChannels:r}),o=!0}let s={track:e,type:`audio`,info:{numberOfChannels:r.decoderConfig.numberOfChannels,sampleRate:r.decoderConfig.sampleRate,decoderConfig:a,requiresAdtsStripping:o},chunkQueue:[],lastWrittenMsTimestamp:null,codecPrivate:a.description??null,closed:!1};return this.trackDatas.push(s),this.trackDatas.sort((e,t)=>e.track.id-t.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),s}getSubtitleTrackData(e,t){let r=this.trackDatas.find(t=>t.track===e);if(r)return r;Qr(t),n(t),n(t.config);let i={track:e,type:`subtitle`,info:{config:t.config},chunkQueue:[],lastWrittenMsTimestamp:null,codecPrivate:T.encode(t.config.description),closed:!1};return this.trackDatas.push(i),this.trackDatas.sort((e,t)=>e.track.id-t.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),i}async addEncodedVideoPacket(e,t,n){let r=await this.mutex.acquire();try{let r=this.getVideoTrackData(e,t,n);r.info.alphaMode??=!!t.sideData.alpha;let i=t.data;if(e.source._codec===`prores`){if(i.byteLength<8)throw Error(`ProRes packet too small, expected at least 8 bytes.`);i=i.subarray(8)}let a=t.type===`key`;this.validateTimestamp(r.track,t.timestamp,a);let o=t.timestamp,s=t.duration;e.metadata.frameRate!==void 0&&(o=Le(o,e.metadata.frameRate),s=Le(s,e.metadata.frameRate));let c=r.info.alphaMode?t.sideData.alpha??null:null,l=this.createInternalChunk(i,o,s,t.type,c);e.source._codec===`vp9`&&this.fixVP9ColorSpace(r,l),r.chunkQueue.push(l),await this.interleaveChunks()}finally{r()}}async addEncodedAudioPacket(e,t,n){let r=await this.mutex.acquire();try{let r=this.getAudioTrackData(e,t,n),i=t.data;if(r.info.requiresAdtsStripping){let e=Ja(nu.tempFromBytes(i));if(!e)throw Error(`Expected ADTS frame, didn't get one.`);let t=e.crcCheck===null?7:9;i=i.subarray(t)}let a=t.type===`key`;this.validateTimestamp(r.track,t.timestamp,a);let o=this.createInternalChunk(i,t.timestamp,t.duration,t.type);r.chunkQueue.push(o),await this.interleaveChunks()}finally{r()}}async addSubtitleCue(e,t,n){let r=await this.mutex.acquire();try{let r=this.getSubtitleTrackData(e,n);this.validateTimestamp(r.track,t.timestamp,!0);let i=t.text,a=Math.round(t.timestamp*1e3);Nu.lastIndex=0,i=i.replace(Nu,e=>{let t=Iu(e.slice(1,-1))-a;return`<${Lu(t)}>`});let o=T.encode(i),s=`${t.settings??``}\n${t.identifier??``}\n${t.notes??``}`,c=this.createInternalChunk(o,t.timestamp,t.duration,`key`,s.trim()?T.encode(s):null);r.chunkQueue.push(c),await this.interleaveChunks()}finally{r()}}async interleaveChunks(e=!1){if(!(!e&&!this.allTracksAreKnown())){outer:for(;;){let t=null,n=1/0;for(let r of this.trackDatas){if(!e&&r.chunkQueue.length===0&&!r.closed)break outer;r.chunkQueue.length>0&&r.chunkQueue[0].timestamp<n&&(t=r,n=r.chunkQueue[0].timestamp)}if(!t)break;let r=t.chunkQueue.shift();this.writeBlock(t,r)}e||await this.writer.flush()}}fixVP9ColorSpace(e,t){if(t.type!==`key`||!e.info.decoderConfig.colorSpace||!e.info.decoderConfig.colorSpace.matrix)return;let n=new j(t.data);n.skipBits(2);let r=n.readBits(1),i=(n.readBits(1)<<1)+r;if(i===3&&n.skipBits(1),n.readBits(1)||n.readBits(1)!==0||(n.skipBits(2),n.readBits(24)!==4817730))return;i>=2&&n.skipBits(1);let a={rgb:7,bt709:2,bt470bg:1,smpte170m:3}[e.info.decoderConfig.colorSpace.matrix];x(t.data,n.pos,n.pos+3,a)}createInternalChunk(e,t,n,r,i=null){return{data:e,type:r,timestamp:t,duration:n,additions:i}}writeBlock(e,t){this.segment||this.createSegment();let r=Math.round(1e3*t.timestamp),i=this.trackDatas.every(n=>{if(e===n)return t.type===`key`;let r=n.chunkQueue[0];return r?r.type===`key`:n.closed}),a=!1;if(!this.currentCluster)a=!0;else{n(this.currentClusterStartMsTimestamp!==null),n(this.currentClusterMaxMsTimestamp!==null);let e=r-this.currentClusterStartMsTimestamp;a=i&&r>this.currentClusterMaxMsTimestamp&&e>=1e3*(this.format._options.minimumClusterDuration??1)||e>Vf}a&&this.createNewCluster(r);let o=r-this.currentClusterStartMsTimestamp;if(o<Bf){if(!this.warnedAboutTooNegativeTimestamp){let e=this.format instanceof Up?`WebM`:`Matroska`;A._warn(`Packets had to be discarded because their timestamp is too negative to represent in ${e}.`),this.warnedAboutTooNegativeTimestamp=!0}return}let s=new Uint8Array(4),c=new DataView(s.buffer);c.setUint8(0,128|e.track.id),c.setInt16(1,o,!1);let l=Math.round(1e3*t.duration);if(t.additions||e.type===`subtitle`){let n={id:L.BlockGroup,data:[{id:L.Block,data:[s,t.data]},t.type===`delta`?{id:L.ReferenceBlock,data:new Zi(e.lastWrittenMsTimestamp-r)}:null,t.additions?{id:L.BlockAdditions,data:[{id:L.BlockMore,data:[{id:L.BlockAddID,data:1},{id:L.BlockAdditional,data:t.additions}]}]}:null,l>0?{id:L.BlockDuration,data:l}:null]};this.ebmlWriter.writeEBML(n)}else{c.setUint8(3,Number(t.type===`key`)<<7);let e={id:L.SimpleBlock,data:[s,t.data]};this.ebmlWriter.writeEBML(e)}this.startTimestamp=Math.min(this.startTimestamp,r),this.endTimestamp=Math.max(this.endTimestamp,r+l),e.lastWrittenMsTimestamp=r,this.trackDatasInCurrentCluster.has(e)||this.trackDatasInCurrentCluster.set(e,{firstMsTimestamp:r}),this.currentClusterMaxMsTimestamp=Math.max(this.currentClusterMaxMsTimestamp,r)}createNewCluster(e){e=Math.max(0,e),this.currentCluster&&this.finalizeCurrentCluster(),this.format._options.onCluster&&this.writer.startTrackingWrites(),this.currentCluster={id:L.Cluster,size:this.format._options.appendOnly?-1:5,data:[{id:L.Timestamp,data:e}]},this.ebmlWriter.writeEBML(this.currentCluster),this.currentClusterStartMsTimestamp=e,this.currentClusterMaxMsTimestamp=e,this.trackDatasInCurrentCluster.clear()}finalizeCurrentCluster(){if(n(this.currentCluster),!this.format._options.appendOnly){let e=this.writer.getPos()-this.ebmlWriter.dataOffsets.get(this.currentCluster),t=this.writer.getPos();this.writer.seek(this.ebmlWriter.offsets.get(this.currentCluster)+4),this.ebmlWriter.writeVarInt(e,5),this.writer.seek(t)}if(this.format._options.onCluster){n(this.currentClusterStartMsTimestamp!==null);let{data:e,start:t}=this.writer.stopTrackingWrites();this.format._options.onCluster(e,t,this.currentClusterStartMsTimestamp/1e3)}let e=this.ebmlWriter.offsets.get(this.currentCluster)-this.segmentDataOffset,t=new Map;for(let[e,{firstMsTimestamp:n}]of this.trackDatasInCurrentCluster)t.has(n)||t.set(n,[]),t.get(n).push(e);let r=[...t.entries()].sort((e,t)=>e[0]-t[0]);for(let[t,i]of r)n(this.cues),this.cues.data.push({id:L.CuePoint,data:[{id:L.CueTime,data:Math.max(0,t)},...i.map(t=>({id:L.CueTrackPositions,data:[{id:L.CueTrack,data:t.track.id},{id:L.CueClusterPosition,data:e}]}))]})}async onTrackClose(e){let t=await this.mutex.acquire(),n=this.trackDatas.find(t=>t.track===e);n&&(n.closed=!0),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),await this.interleaveChunks(),t()}async finalize(){let e=await this.mutex.acquire();this.allTracksKnown.resolve();for(let e of this.trackDatas)e.closed=!0;if(this.segment||this.createSegment(),await this.interleaveChunks(!0),this.currentCluster&&this.finalizeCurrentCluster(),n(this.cues),this.ebmlWriter.writeEBML(this.cues),!this.format._options.appendOnly){let e=this.writer.getPos()-this.segmentDataOffset;this.writer.seek(this.ebmlWriter.offsets.get(this.segment)+4),this.ebmlWriter.writeVarInt(e,6);let t=this.startTimestamp===1/0?0:this.endTimestamp-this.startTimestamp;this.segmentDuration.data=new Xi(t),this.writer.seek(this.ebmlWriter.offsets.get(this.segmentDuration)),this.ebmlWriter.writeEBML(this.segmentDuration),n(this.seekHead),this.writer.seek(this.ebmlWriter.offsets.get(this.seekHead)),this.maybeCreateSeekHead(!0),this.ebmlWriter.writeEBML(this.seekHead)}e()}},Gf=class{constructor(e){
449
449
  /*!
450
450
  * Copyright (c) 2026-present, Vanilagy and contributors
451
451
  *
@@ -493,7 +493,7 @@ var tp=class{constructor(e){this.writer=e,this.helper=new Uint8Array(8),this.hel
493
493
  * License, v. 2.0. If a copy of the MPL was not distributed with this
494
494
  * file, You can obtain one at https://mozilla.org/MPL/2.0/.
495
495
  */
496
- super(e),this.headerWritten=!1,this.dataSize=0,this.sampleRate=null,this.sampleCount=0,this.riffSizePos=null,this.dataSizePos=null,this.ds64RiffSizePos=null,this.ds64DataSizePos=null,this.ds64SampleCountPos=null,this.format=t,this.isRf64=!!t._options.large}async start(){let e=await this.mutex.acquire();this.writer=await this.output._getRootWriter(!1),this.riffWriter=new tp(this.writer);let t=this.output.tracks[0];n(t?.isAudioTrack()),t.metadata.decoderConfig&&(Zr({decoderConfig:t.metadata.decoderConfig},t.source._codec),this.writeHeader(t,t.metadata.decoderConfig),this.sampleRate=t.metadata.decoderConfig.sampleRate,this.headerWritten=!0),e()}async getMimeType(){return`audio/wav`}async addEncodedVideoPacket(){throw Error(`WAVE does not support video.`)}async addEncodedAudioPacket(e,t,r){let i=await this.mutex.acquire();try{if(this.headerWritten||=(Zr(r,e.source._codec),n(r),n(r.decoderConfig),this.writeHeader(e,r.decoderConfig),this.sampleRate=r.decoderConfig.sampleRate,!0),this.validateTimestamp(e,t.timestamp,t.type===`key`),!this.isRf64&&this.writer.getPos()+t.data.byteLength>=2**32)throw Error("Adding more audio data would exceed the maximum RIFF size of 4 GiB. To write larger files, use RF64 by setting `large: true` in the WavOutputFormatOptions.");this.writer.write(t.data),this.dataSize+=t.data.byteLength,this.sampleCount+=Math.round(t.duration*this.sampleRate),await this.writer.flush()}finally{i()}}async addSubtitleCue(){throw Error(`WAVE does not support subtitles.`)}writeHeader(e,t){this.format._options.onHeader&&this.writer.startTrackingWrites();let n,r=e.source._codec,i=Br(r);n=i.dataType===`ulaw`?Wa.MULAW:i.dataType===`alaw`?Wa.ALAW:i.dataType===`float`?Wa.IEEE_FLOAT:Wa.PCM;let a=t.numberOfChannels,o=t.sampleRate,s=i.sampleSize*a;if(this.riffWriter.writeAscii(this.isRf64?`RF64`:`RIFF`),this.isRf64?this.riffWriter.writeU32(4294967295):(this.riffSizePos=this.writer.getPos(),this.riffWriter.writeU32(0)),this.riffWriter.writeAscii(`WAVE`),this.isRf64&&(this.riffWriter.writeAscii(`ds64`),this.riffWriter.writeU32(28),this.ds64RiffSizePos=this.writer.getPos(),this.riffWriter.writeU64(0),this.ds64DataSizePos=this.writer.getPos(),this.riffWriter.writeU64(0),this.ds64SampleCountPos=this.writer.getPos(),this.riffWriter.writeU64(0),this.riffWriter.writeU32(0)),this.riffWriter.writeAscii(`fmt `),this.riffWriter.writeU32(16),this.riffWriter.writeU16(n),this.riffWriter.writeU16(a),this.riffWriter.writeU32(o),this.riffWriter.writeU32(o*s),this.riffWriter.writeU16(s),this.riffWriter.writeU16(8*i.sampleSize),!Rt(this.output._metadataTags)){let e=this.format._options.metadataFormat??`info`;e===`info`?this.writeInfoChunk(this.output._metadataTags):e===`id3`?this.writeId3Chunk(this.output._metadataTags):Ee(e)}if(this.riffWriter.writeAscii(`data`),this.isRf64?this.riffWriter.writeU32(4294967295):(this.dataSizePos=this.writer.getPos(),this.riffWriter.writeU32(0)),this.format._options.onHeader){let{data:e,start:t}=this.writer.stopTrackingWrites();this.format._options.onHeader(e,t)}}writeInfoChunk(e){let t=this.writer.getPos();this.riffWriter.writeAscii(`LIST`),this.riffWriter.writeU32(0),this.riffWriter.writeAscii(`INFO`);let n=new Set,r=(e,t)=>{if(!ne(t)){A._warn(`Didn't write tag '${e}' because '${t}' is not ISO 8859-1-compatible.`);return}let r=t.length+1,i=new Uint8Array(r);for(let e=0;e<t.length;e++)i[e]=t.charCodeAt(e);this.riffWriter.writeAscii(e),this.riffWriter.writeU32(r),this.writer.write(i),r&1&&this.writer.write(new Uint8Array(1)),n.add(e)};for(let{key:t,value:i}of ot(e))switch(t){case`title`:r(`INAM`,i),n.add(`INAM`);break;case`artist`:r(`IART`,i),n.add(`IART`);break;case`album`:r(`IPRD`,i),n.add(`IPRD`);break;case`trackNumber`:r(`ITRK`,e.tracksTotal===void 0?i.toString():`${i}/${e.tracksTotal}`),n.add(`ITRK`);break;case`genre`:r(`IGNR`,i),n.add(`IGNR`);break;case`date`:r(`ICRD`,i.toISOString().slice(0,10)),n.add(`ICRD`);break;case`comment`:r(`ICMT`,i),n.add(`ICMT`);break;case`albumArtist`:case`discNumber`:case`tracksTotal`:case`discsTotal`:case`description`:case`lyrics`:case`images`:break;case`raw`:break;default:Ee(t)}if(e.raw)for(let t in e.raw){let i=e.raw[t];i==null||t.length!==4||n.has(t)||typeof i==`string`&&r(t,i)}let i=this.writer.getPos(),a=i-t-8;this.writer.seek(t+4),this.riffWriter.writeU32(a),this.writer.seek(i),a&1&&this.writer.write(new Uint8Array(1))}writeId3Chunk(e){let t=this.writer.getPos();this.riffWriter.writeAscii(`ID3 `),this.riffWriter.writeU32(0);let n=new Eu(this.writer).writeId3V2Tag(e),r=this.writer.getPos();this.writer.seek(t+4),this.riffWriter.writeU32(n),this.writer.seek(r),n&1&&this.writer.write(new Uint8Array(1))}async finalize(){let e=await this.mutex.acquire();if(!this.headerWritten)throw Error(`Cannot finalize an empty WAVE file: no packets were added and the track specified no decoderConfig in its metadata, so there's no telling what the file should look like.`);let t=this.writer.getPos();this.isRf64?(n(this.ds64RiffSizePos!==null),this.writer.seek(this.ds64RiffSizePos),this.riffWriter.writeU64(t-8),n(this.ds64DataSizePos!==null),this.writer.seek(this.ds64DataSizePos),this.riffWriter.writeU64(this.dataSize),n(this.ds64SampleCountPos!==null),this.writer.seek(this.ds64SampleCountPos),this.riffWriter.writeU64(this.sampleCount)):(n(this.riffSizePos!==null),this.writer.seek(this.riffSizePos),this.riffWriter.writeU32(t-8),n(this.dataSizePos!==null),this.writer.seek(this.dataSizePos),this.riffWriter.writeU32(this.dataSize)),e()}},rp=class{constructor(e){
496
+ super(e),this.headerWritten=!1,this.dataSize=0,this.sampleRate=null,this.sampleCount=0,this.riffSizePos=null,this.dataSizePos=null,this.ds64RiffSizePos=null,this.ds64DataSizePos=null,this.ds64SampleCountPos=null,this.format=t,this.isRf64=!!t._options.large}async start(){let e=await this.mutex.acquire();this.writer=await this.output._getRootWriter(!1),this.riffWriter=new tp(this.writer);let t=this.output.tracks[0];n(t?.isAudioTrack()),t.metadata.decoderConfig&&(Zr({decoderConfig:t.metadata.decoderConfig},t.source._codec),this.writeHeader(t,t.metadata.decoderConfig),this.sampleRate=t.metadata.decoderConfig.sampleRate,this.headerWritten=!0),e()}async getMimeType(){return`audio/wav`}async addEncodedVideoPacket(){throw Error(`WAVE does not support video.`)}async addEncodedAudioPacket(e,t,r){let i=await this.mutex.acquire();try{if(this.headerWritten||=(Zr(r,e.source._codec),n(r),n(r.decoderConfig),this.writeHeader(e,r.decoderConfig),this.sampleRate=r.decoderConfig.sampleRate,!0),this.validateTimestamp(e,t.timestamp,t.type===`key`),!this.isRf64&&this.writer.getPos()+t.data.byteLength>=2**32)throw Error("Adding more audio data would exceed the maximum RIFF size of 4 GiB. To write larger files, use RF64 by setting `large: true` in the WavOutputFormatOptions.");this.writer.write(t.data),this.dataSize+=t.data.byteLength,this.sampleCount+=Math.round(t.duration*this.sampleRate),await this.writer.flush()}finally{i()}}async addSubtitleCue(){throw Error(`WAVE does not support subtitles.`)}writeHeader(e,t){this.format._options.onHeader&&this.writer.startTrackingWrites();let n,r=e.source._codec,i=Br(r);n=i.dataType===`ulaw`?Wa.MULAW:i.dataType===`alaw`?Wa.ALAW:i.dataType===`float`?Wa.IEEE_FLOAT:Wa.PCM;let a=t.numberOfChannels,o=t.sampleRate,s=i.sampleSize*a;if(this.riffWriter.writeAscii(this.isRf64?`RF64`:`RIFF`),this.isRf64?this.riffWriter.writeU32(4294967295):(this.riffSizePos=this.writer.getPos(),this.riffWriter.writeU32(0)),this.riffWriter.writeAscii(`WAVE`),this.isRf64&&(this.riffWriter.writeAscii(`ds64`),this.riffWriter.writeU32(28),this.ds64RiffSizePos=this.writer.getPos(),this.riffWriter.writeU64(0),this.ds64DataSizePos=this.writer.getPos(),this.riffWriter.writeU64(0),this.ds64SampleCountPos=this.writer.getPos(),this.riffWriter.writeU64(0),this.riffWriter.writeU32(0)),this.riffWriter.writeAscii(`fmt `),this.riffWriter.writeU32(16),this.riffWriter.writeU16(n),this.riffWriter.writeU16(a),this.riffWriter.writeU32(o),this.riffWriter.writeU32(o*s),this.riffWriter.writeU16(s),this.riffWriter.writeU16(8*i.sampleSize),!Rt(this.output._metadataTags)){let e=this.format._options.metadataFormat??`info`;e===`info`?this.writeInfoChunk(this.output._metadataTags):e===`id3`?this.writeId3Chunk(this.output._metadataTags):Ee(e)}if(this.riffWriter.writeAscii(`data`),this.isRf64?this.riffWriter.writeU32(4294967295):(this.dataSizePos=this.writer.getPos(),this.riffWriter.writeU32(0)),this.format._options.onHeader){let{data:e,start:t}=this.writer.stopTrackingWrites();this.format._options.onHeader(e,t)}}writeInfoChunk(e){let t=this.writer.getPos();this.riffWriter.writeAscii(`LIST`),this.riffWriter.writeU32(0),this.riffWriter.writeAscii(`INFO`);let n=new Set,r=(e,t)=>{if(!ne(t)){A._warn(`Didn't write tag '${e}' because '${t}' is not ISO 8859-1-compatible.`);return}let r=t.length+1,i=new Uint8Array(r);for(let e=0;e<t.length;e++)i[e]=t.charCodeAt(e);this.riffWriter.writeAscii(e),this.riffWriter.writeU32(r),this.writer.write(i),r&1&&this.writer.write(new Uint8Array(1)),n.add(e)};for(let{key:t,value:i}of ot(e))switch(t){case`title`:r(`INAM`,i),n.add(`INAM`);break;case`artist`:r(`IART`,i),n.add(`IART`);break;case`album`:r(`IPRD`,i),n.add(`IPRD`);break;case`trackNumber`:r(`ITRK`,e.tracksTotal===void 0?i.toString():`${i}/${e.tracksTotal}`),n.add(`ITRK`);break;case`genre`:r(`IGNR`,i),n.add(`IGNR`);break;case`date`:r(`ICRD`,i.toISOString().slice(0,10)),n.add(`ICRD`);break;case`comment`:r(`ICMT`,i),n.add(`ICMT`);break;case`albumArtist`:case`discNumber`:case`tracksTotal`:case`discsTotal`:case`beatsPerMinute`:case`description`:case`lyrics`:case`images`:break;case`raw`:break;default:Ee(t)}if(e.raw)for(let t in e.raw){let i=e.raw[t];i==null||t.length!==4||n.has(t)||typeof i==`string`&&r(t,i)}let i=this.writer.getPos(),a=i-t-8;this.writer.seek(t+4),this.riffWriter.writeU32(a),this.writer.seek(i),a&1&&this.writer.write(new Uint8Array(1))}writeId3Chunk(e){let t=this.writer.getPos();this.riffWriter.writeAscii(`ID3 `),this.riffWriter.writeU32(0);let n=new Eu(this.writer).writeId3V2Tag(e),r=this.writer.getPos();this.writer.seek(t+4),this.riffWriter.writeU32(n),this.writer.seek(r),n&1&&this.writer.write(new Uint8Array(1))}async finalize(){let e=await this.mutex.acquire();if(!this.headerWritten)throw Error(`Cannot finalize an empty WAVE file: no packets were added and the track specified no decoderConfig in its metadata, so there's no telling what the file should look like.`);let t=this.writer.getPos();this.isRf64?(n(this.ds64RiffSizePos!==null),this.writer.seek(this.ds64RiffSizePos),this.riffWriter.writeU64(t-8),n(this.ds64DataSizePos!==null),this.writer.seek(this.ds64DataSizePos),this.riffWriter.writeU64(this.dataSize),n(this.ds64SampleCountPos!==null),this.writer.seek(this.ds64SampleCountPos),this.riffWriter.writeU64(this.sampleCount)):(n(this.riffSizePos!==null),this.writer.seek(this.riffSizePos),this.riffWriter.writeU32(t-8),n(this.dataSizePos!==null),this.writer.seek(this.dataSizePos),this.riffWriter.writeU32(this.dataSize)),e()}},rp=class{constructor(e){
497
497
  /*!
498
498
  * Copyright (c) 2026-present, Vanilagy and contributors
499
499
  *
@@ -501,7 +501,7 @@ super(e),this.headerWritten=!1,this.dataSize=0,this.sampleRate=null,this.sampleC
501
501
  * License, v. 2.0. If a copy of the MPL was not distributed with this
502
502
  * file, You can obtain one at https://mozilla.org/MPL/2.0/.
503
503
  */
504
- this.sourceSampleRate=null,this.sourceNumberOfChannels=null,this.startTime=null,this.bufferStartFrame=0,this.maxWrittenFrame=null,this.targetSampleRate=e.targetSampleRate,this.targetNumberOfChannels=e.targetNumberOfChannels,this.onSample=e.onSample,this.bufferSizeInFrames=Math.floor(this.targetSampleRate*5),this.bufferSizeInSamples=this.bufferSizeInFrames*this.targetNumberOfChannels,this.outputBuffer=new Float32Array(this.bufferSizeInSamples)}doChannelMixerSetup(){n(this.sourceNumberOfChannels!==null);let e=this.sourceNumberOfChannels,t=this.targetNumberOfChannels;this.channelMixer=e===1&&t===2?(t,n)=>t[n*e]:e===1&&t===4?(t,n,r)=>t[n*e]*+(r<2):e===1&&t===6?(t,n,r)=>t[n*e]*+(r===2):e===2&&t===1?(t,n)=>{let r=n*e;return .5*(t[r]+t[r+1])}:e===2&&t===4||e===2&&t===6?(t,n,r)=>r<2?t[n*e+r]:0:e===4&&t===1?(t,n)=>{let r=n*e;return .25*(t[r]+t[r+1]+t[r+2]+t[r+3])}:e===4&&t===2?(t,n,r)=>{let i=n*e;return .5*(t[i+r]+t[i+r+2])}:e===4&&t===6?(t,n,r)=>{let i=n*e;return r<2?t[i+r]:r===2||r===3?0:t[i+r-2]}:e===6&&t===1?(t,n)=>{let r=n*e;return Math.SQRT1_2*(t[r]+t[r+1])+t[r+2]+.5*(t[r+4]+t[r+5])}:e===6&&t===2?(t,n,r)=>{let i=n*e;return t[i+r]+Math.SQRT1_2*(t[i+2]+t[i+r+4])}:e===6&&t===4?(t,n,r)=>{let i=n*e;return r<2?t[i+r]+Math.SQRT1_2*t[i+2]:t[i+r+2]}:(t,n,r)=>r<e?t[n*e+r]:0}ensureTempBufferSize(e){let t=this.tempSourceBuffer.length;for(;t<e;)t*=2;if(t!==this.tempSourceBuffer.length){let e=new Float32Array(t);e.set(this.tempSourceBuffer),this.tempSourceBuffer=e}}async add(e){this.sourceSampleRate===null&&(this.sourceSampleRate=e.sampleRate,this.sourceNumberOfChannels=e.numberOfChannels,this.startTime=e.timestamp,this.tempSourceBuffer=new Float32Array(this.sourceSampleRate*this.sourceNumberOfChannels),this.doChannelMixerSetup()),n(this.startTime!==null);let t=e.numberOfFrames*e.numberOfChannels;this.ensureTempBufferSize(t);let r=e.allocationSize({planeIndex:0,format:`f32`}),i=new Float32Array(this.tempSourceBuffer.buffer,0,r/4);e.copyTo(i,{planeIndex:0,format:`f32`});let a=e.timestamp-this.startTime,o=a+e.duration,s=Math.floor((a-1/this.sourceSampleRate)*this.targetSampleRate)+1,c=Math.ceil(o*this.targetSampleRate);for(let t=s;t<c;t++){if(t<this.bufferStartFrame)continue;for(;t>=this.bufferStartFrame+this.bufferSizeInFrames;)await this.finalizeCurrentBuffer(),this.bufferStartFrame+=this.bufferSizeInFrames;let r=t-this.bufferStartFrame;n(r<this.bufferSizeInFrames);let o=(t/this.targetSampleRate-a)*this.sourceSampleRate,s=Math.floor(o),c=Math.ceil(o),l=o-s;for(let t=0;t<this.targetNumberOfChannels;t++){let n=0,a=0;s>=0&&s<e.numberOfFrames&&(n=this.channelMixer(i,s,t)),c>=0&&c<e.numberOfFrames&&(a=this.channelMixer(i,c,t));let o=n+l*(a-n),u=r*this.targetNumberOfChannels+t;this.outputBuffer[u]+=o}this.maxWrittenFrame=this.maxWrittenFrame===null?r:Math.max(this.maxWrittenFrame,r)}}async finalizeCurrentBuffer(){if(this.maxWrittenFrame===null)return;n(this.startTime!==null);let e=(this.maxWrittenFrame+1)*this.targetNumberOfChannels,t=new Float32Array(e);t.set(this.outputBuffer.subarray(0,e));let r=new Sc({format:`f32`,sampleRate:this.targetSampleRate,numberOfChannels:this.targetNumberOfChannels,timestamp:this.startTime+this.bufferStartFrame/this.targetSampleRate,data:t});await this.onSample(r),this.outputBuffer.fill(0),this.maxWrittenFrame=null}finalize(){return this.finalizeCurrentBuffer()}},ip=function(e,t,n){
504
+ this.sourceSampleRate=null,this.sourceNumberOfChannels=null,this.startTime=null,this.bufferStartFrame=0,this.maxWrittenFrame=null,this.targetSampleRate=e.targetSampleRate,this.targetNumberOfChannels=e.targetNumberOfChannels,this.onSample=e.onSample,this.bufferSizeInFrames=Math.floor(this.targetSampleRate*5),this.bufferSizeInSamples=this.bufferSizeInFrames*this.targetNumberOfChannels}doChannelMixerSetup(){n(this.sourceNumberOfChannels!==null);let e=this.sourceNumberOfChannels,t=this.targetNumberOfChannels;this.channelMixer=e===1&&t===2?(t,n)=>t[n*e]:e===1&&t===4?(t,n,r)=>t[n*e]*+(r<2):e===1&&t===6?(t,n,r)=>t[n*e]*+(r===2):e===2&&t===1?(t,n)=>{let r=n*e;return .5*(t[r]+t[r+1])}:e===2&&t===4||e===2&&t===6?(t,n,r)=>r<2?t[n*e+r]:0:e===4&&t===1?(t,n)=>{let r=n*e;return .25*(t[r]+t[r+1]+t[r+2]+t[r+3])}:e===4&&t===2?(t,n,r)=>{let i=n*e;return .5*(t[i+r]+t[i+r+2])}:e===4&&t===6?(t,n,r)=>{let i=n*e;return r<2?t[i+r]:r===2||r===3?0:t[i+r-2]}:e===6&&t===1?(t,n)=>{let r=n*e;return Math.SQRT1_2*(t[r]+t[r+1])+t[r+2]+.5*(t[r+4]+t[r+5])}:e===6&&t===2?(t,n,r)=>{let i=n*e;return t[i+r]+Math.SQRT1_2*(t[i+2]+t[i+r+4])}:e===6&&t===4?(t,n,r)=>{let i=n*e;return r<2?t[i+r]+Math.SQRT1_2*t[i+2]:t[i+r+2]}:(t,n,r)=>r<e?t[n*e+r]:0}ensureTempBufferSize(e){let t=this.tempSourceBuffer.length;for(;t<e;)t*=2;if(t!==this.tempSourceBuffer.length){let e=new Float32Array(t);e.set(this.tempSourceBuffer),this.tempSourceBuffer=e}}async add(e){if(this.sourceSampleRate===null){this.sourceSampleRate=e.sampleRate,this.sourceNumberOfChannels=e.numberOfChannels,this.startTime=e.timestamp;let t=Math.ceil(this.targetSampleRate/this.sourceSampleRate);this.bufferCapacityInFrames=this.bufferSizeInFrames+t,this.outputBuffer=new Float32Array(this.bufferCapacityInFrames*this.targetNumberOfChannels),this.tempSourceBuffer=new Float32Array(this.sourceSampleRate*this.sourceNumberOfChannels),this.doChannelMixerSetup()}n(this.startTime!==null);let t=e.numberOfFrames*e.numberOfChannels;this.ensureTempBufferSize(t);let r=e.allocationSize({planeIndex:0,format:`f32`}),i=new Float32Array(this.tempSourceBuffer.buffer,0,r/4);e.copyTo(i,{planeIndex:0,format:`f32`});let a=e.timestamp-this.startTime,o=a+e.duration,s=Math.floor((a-1/this.sourceSampleRate)*this.targetSampleRate)+1,c=Math.ceil(o*this.targetSampleRate);for(let t=s;t<c;t++){if(t<this.bufferStartFrame)continue;for(;t>=this.bufferStartFrame+this.bufferCapacityInFrames;)await this.finalizeCurrentBuffer(),this.bufferStartFrame+=this.bufferSizeInFrames;let r=t-this.bufferStartFrame;n(r<this.bufferCapacityInFrames);let o=(t/this.targetSampleRate-a)*this.sourceSampleRate,s=Math.floor(o),c=Math.ceil(o),l=o-s;for(let t=0;t<this.targetNumberOfChannels;t++){let n=0,a=0;s>=0&&s<e.numberOfFrames&&(n=this.channelMixer(i,s,t)),c>=0&&c<e.numberOfFrames&&(a=this.channelMixer(i,c,t));let o=n+l*(a-n),u=r*this.targetNumberOfChannels+t;this.outputBuffer[u]+=o}this.maxWrittenFrame=this.maxWrittenFrame===null?r:Math.max(this.maxWrittenFrame,r)}}async finalizeCurrentBuffer(){if(this.maxWrittenFrame===null)return;n(this.startTime!==null);let e=Math.min(this.maxWrittenFrame+1,this.bufferSizeInFrames)*this.targetNumberOfChannels,t=new Float32Array(e);t.set(this.outputBuffer.subarray(0,e));let r=new Sc({format:`f32`,sampleRate:this.targetSampleRate,numberOfChannels:this.targetNumberOfChannels,timestamp:this.startTime+this.bufferStartFrame/this.targetSampleRate,data:t});await this.onSample(r),this.outputBuffer.copyWithin(0,this.bufferSizeInSamples),this.outputBuffer.fill(0,this.outputBuffer.length-this.bufferSizeInSamples),this.maxWrittenFrame=this.maxWrittenFrame>=this.bufferSizeInFrames?this.maxWrittenFrame-this.bufferSizeInFrames:null}async finalize(){for(;this.maxWrittenFrame!==null;)await this.finalizeCurrentBuffer(),this.bufferStartFrame+=this.bufferSizeInFrames}},ip=function(e,t,n){
505
505
  /*!
506
506
  * Copyright (c) 2026-present, Vanilagy and contributors
507
507
  *
@@ -509,7 +509,7 @@ this.sourceSampleRate=null,this.sourceNumberOfChannels=null,this.startTime=null,
509
509
  * License, v. 2.0. If a copy of the MPL was not distributed with this
510
510
  * file, You can obtain one at https://mozilla.org/MPL/2.0/.
511
511
  */
512
- if(t!=null){if(typeof t!=`object`&&typeof t!=`function`)throw TypeError(`Object expected.`);var r,i;if(n){if(!Symbol.asyncDispose)throw TypeError(`Symbol.asyncDispose is not defined.`);r=t[Symbol.asyncDispose]}if(r===void 0){if(!Symbol.dispose)throw TypeError(`Symbol.dispose is not defined.`);r=t[Symbol.dispose],n&&(i=r)}if(typeof r!=`function`)throw TypeError(`Object not disposable.`);i&&(r=function(){try{i.call(this)}catch(e){return Promise.reject(e)}}),e.stack.push({value:t,dispose:r,async:n})}else n&&e.stack.push({async:!0});return t},ap=(function(e){return function(t){function n(n){t.error=t.hasError?new e(n,t.error,`An error was suppressed during disposal.`):n,t.hasError=!0}var r,i=0;function a(){for(;r=t.stack.pop();)try{if(!r.async&&i===1)return i=0,t.stack.push(r),Promise.resolve().then(a);if(r.dispose){var e=r.dispose.call(r.value);if(r.async)return i|=2,Promise.resolve(e).then(a,function(e){return n(e),a()})}else i|=1}catch(e){n(e)}if(i===1)return t.hasError?Promise.reject(t.error):Promise.resolve();if(t.hasError)throw t.error}return a()}})(typeof SuppressedError==`function`?SuppressedError:function(e,t,n){var r=Error(n);return r.name=`SuppressedError`,r.error=e,r.suppressed=t,r}),op=class{constructor(){this._connectedTrack=null,this._closingPromise=null,this._closed=!1,this._nominalBitrate=null}_ensureValidAdd(){if(!this._connectedTrack)throw Error(`Source is not connected to an output track.`);if(this._connectedTrack.output.state===`canceled`)throw Error(`Output has been canceled.`);if(this._connectedTrack.output.state===`finalizing`||this._connectedTrack.output.state===`finalized`)throw Error(`Output has been finalized.`);if(this._connectedTrack.output.state===`pending`)throw Error(`Output has not started.`);if(this._closed)throw Error(`Source is closed.`)}async _start(){}async _flushAndClose(e){}close(){if(this._closingPromise)return;let e=this._connectedTrack;if(!e)throw Error(`Cannot call close without connecting the source to an output track.`);if(e.output.state===`pending`)throw Error(`Cannot call close before output has been started.`);this._closingPromise=(async()=>{await this._flushAndClose(!1),this._closed=!0,e.output.state!==`finalizing`&&e.output.state!==`finalized`&&e.output._muxer.onTrackClose(e)})()}async _flushOrWaitForOngoingClose(e){return this._closingPromise??=(async()=>{await this._flushAndClose(e),this._closed=!0})()}},sp=class extends op{constructor(e){if(super(),this._connectedTrack=null,!N.includes(e))throw TypeError(`Invalid video codec '${e}'. Must be one of: ${N.join(`, `)}.`);this._codec=e}};const cp=(e,t)=>{if(e.metadata.hasOnlyKeyPackets&&t.type!==`key`)throw Error(`Cannot add non-key packets to a hasOnlyKeyPackets video track.`)};var lp=class extends sp{constructor(e){super(e)}add(e,t){if(!(e instanceof I))throw TypeError(`packet must be an EncodedPacket.`);if(e.isMetadataOnly)throw TypeError(`Metadata-only packets cannot be added.`);if(t!==void 0&&(!t||typeof t!=`object`))throw TypeError(`meta, when provided, must be an object.`);return this._ensureValidAdd(),cp(this._connectedTrack,e),this._connectedTrack.output._muxer.addEncodedVideoPacket(this._connectedTrack,e,t)}},up=class{setError(e){this.errorSet||=(this.error=e,!0)}constructor(e,t){this.source=e,this.encodingConfig=t,this.ensureEncoderPromise=null,this.encoderInitialized=!1,this.encoder=null,this.muxer=null,this.lastMultipleOfKeyFrameInterval=-1,this.emittedEncoderPackets=0,this.codedWidth=null,this.codedHeight=null,this.outputWidth=null,this.outputHeight=null,this.frameRateLastSample=null,this.frameRateLastTimestamp=null,this.frameRateLastEndTimestamp=null,this.preciseTimings=[],this.customEncoder=null,this.customEncoderCallSerializer=new Ye,this.customEncoderQueueSize=0,this.defaultEncodeOptions={},this.alphaEncoder=null,this.splitter=null,this.splitterCreationFailed=!1,this.alphaFrameQueue=[],this.error=null,this.errorSet=!1,this.lastMuxerPromise=Promise.resolve(),this.closed=!1}async add(e,t,r){let i=e;try{this.checkForEncoderError(),this.source._ensureValidAdd();let a=this.encodingConfig,o=a.sizeChangeBehavior??`deny`,s=!1;if(this.codedWidth!==null&&this.codedHeight!==null){if((e.codedWidth!==this.codedWidth||e.codedHeight!==this.codedHeight)&&(s=!0,o===`deny`))throw Error(`Video sample size must remain constant. Expected ${this.codedWidth}x${this.codedHeight}, got ${e.codedWidth}x${e.codedHeight}. To allow the sample size to change over time, set \`sizeChangeBehavior\` to a value other than 'deny' in the encoding options.`)}else this.codedWidth=e.codedWidth,this.codedHeight=e.codedHeight;if(a.transform?.width!==void 0||a.transform?.height!==void 0||a.transform?.rotate!==void 0||a.transform?.flip!==void 0||a.transform?.crop!==void 0||a.transform?.force===!0||s&&o!==`passThrough`){let r=a.transform?.width,i=a.transform?.height,c=a.transform?.fit??`fill`;s&&o!==`passThrough`&&(n(this.outputWidth),n(this.outputHeight),n(o!==`deny`),r=this.outputWidth,i=this.outputHeight,c=o);let l=await e.transform({width:r,height:i,roundDimensionsTo:2,crop:a.transform?.crop,rotate:a.transform?.rotate,flip:a.transform?.flip,fit:c,alpha:a.alpha});(this.outputWidth===null||this.outputHeight===null)&&(this.outputWidth=l.displayWidth,this.outputHeight=l.displayHeight),t&&e.close(),e=l,t=!0}else(this.outputWidth===null||this.outputHeight===null)&&(this.outputWidth=e.codedWidth,this.outputHeight=e.codedHeight);let c=a.transform?.frameRate;if(c!==void 0){let n=e.timestamp+e.duration,a=ze(e.timestamp,c);if(this.frameRateLastSample!==null){if(a<=this.frameRateLastTimestamp){this.frameRateLastSample.close(),this.frameRateLastSample=e.clone(),this.frameRateLastEndTimestamp=n;return}await this.padFrameRate(a,r)}e===i&&(e=e.clone(),t=!0),e.setTimestamp(a),e.setDuration(1/c),this.frameRateLastSample?.close(),this.frameRateLastSample=e.clone(),this.frameRateLastTimestamp=a,this.frameRateLastEndTimestamp=n}await this.processAndEncode(e,r)}finally{t&&e.close()}}async processAndEncode(e,t){let r=this.encodingConfig,i;if(r.transform?.process){let t=r.transform.process(e);if(k(t)&&(t=await t),t===null)return;Array.isArray(t)||(t=[t]);let n=[];try{for(let r of t)r instanceof rc?n.push(r):typeof VideoFrame<`u`&&r instanceof VideoFrame?n.push(new rc(r)):n.push(new rc(r,{timestamp:e.timestamp,duration:e.duration}))}catch(r){for(let t of n)t!==e&&t.close();for(let n of t)(n instanceof rc&&n!==e||typeof VideoFrame<`u`&&n instanceof VideoFrame)&&n.close();throw r}i=n}else i=[e];try{for(let e of i){if(this.encoderInitialized||(this.ensureEncoderPromise||this.ensureEncoder(e),this.encoderInitialized||await this.ensureEncoderPromise),n(this.encoderInitialized),this.closed)break;let r=this.encodingConfig.keyFrameInterval??2,i=Math.floor(e.timestamp/r),a={...this.defaultEncodeOptions,...e.encodeOptions,...t},o={...a,keyFrame:a.keyFrame===void 0?r===0||i!==this.lastMultipleOfKeyFrameInterval:a.keyFrame};if(this.lastMultipleOfKeyFrameInterval=i,this.encodingConfig.onEncodedSample?.(e),this.customEncoder){this.customEncoderQueueSize++;let t=e.clone(),n=this.customEncoderCallSerializer.call(()=>this.customEncoder.encode(t,o)).catch(e=>this.setError(e)).finally(()=>{this.customEncoderQueueSize--,t.close()});this.customEncoderQueueSize>=4&&await n}else{n(this.encoder);let t=e.toVideoFrame(),r=E(this.preciseTimings,t.timestamp,e=>e.microsecondTimestamp),i=r===-1?null:this.preciseTimings[r];if(i&&i.microsecondTimestamp===t.timestamp?(i.timestamp!==e.timestamp&&(i.timestampIsValid=!1),i.duration!==e.duration&&(i.durationIsValid=!1)):(this.preciseTimings.splice(r+1,0,{microsecondTimestamp:t.timestamp,timestamp:e.timestamp,duration:e.duration,timestampIsValid:!0,durationIsValid:!0}),this.preciseTimings.length>128&&this.preciseTimings.shift()),!this.alphaEncoder)try{this.encoder.encode(t,o)}finally{t.close()}else if(t.format&&!t.format.includes(`A`)||this.splitterCreationFailed){this.alphaFrameQueue.push(null);try{this.encoder.encode(t,o)}finally{t.close()}}else{this.splitter||=new fp;let{colorFrame:e,alphaFrame:n}=await this.splitter.split(t);this.alphaFrameQueue.push(n);try{this.encoder.encode(e,o)}finally{e.close()}}this.encoder.encodeQueueSize>=4&&await new Promise(e=>this.encoder.addEventListener(`dequeue`,e,{once:!0}))}await this.lastMuxerPromise}}finally{for(let t of i)t!==e&&t.close()}}async padFrameRate(e,t){let r=this.encodingConfig.transform.frameRate;n(this.frameRateLastSample);let i=Math.round((e-this.frameRateLastTimestamp)*r);for(let e=1;e<i;e++){let n={stack:[],error:void 0,hasError:!1};try{let i=ip(n,this.frameRateLastSample.clone(),!1);i.setTimestamp(this.frameRateLastTimestamp+e/r),i.setDuration(1/r),await this.processAndEncode(i,t)}catch(e){n.error=e,n.hasError=!0}finally{ap(n)}}}ensureEncoder(e){this.ensureEncoderPromise=(async()=>{let t=Qc(this.encodingConfig.quality,this.encodingConfig.bitrate);n(t!==void 0);let r=Fc({...this.encodingConfig,quality:t,width:e.codedWidth,height:e.codedHeight,squarePixelWidth:e.squarePixelWidth,squarePixelHeight:e.squarePixelHeight,framerate:this.source._connectedTrack?.metadata.frameRate}),i=null,a;for(let e of r){let t=e.config;if(this.encodingConfig.onEncoderConfig?.(t),a=pl.find(e=>e.supports(this.encodingConfig.codec,t)),a){i=e;break}if(!(typeof VideoEncoder>`u`)){if(t.alpha=`discard`,this.encodingConfig.alpha===`keep`&&(t.latencyMode=`quality`),(t.width%2==1||t.height%2==1)&&(this.encodingConfig.codec===`avc`||this.encodingConfig.codec===`hevc`))throw Error(`The dimensions ${t.width}x${t.height} are not supported for codec '${this.encodingConfig.codec}'; both width and height must be even numbers. Make sure to round your dimensions to the nearest even number.`);try{if((await VideoEncoder.isConfigSupported(t)).supported){i=e;break}}catch{}}}if(!i){if(typeof VideoEncoder>`u`)throw Error(nt(`VideoEncoder`));let e=r[0].config,t=r.map(({config:e,quantizer:t})=>t===null?`${e.bitrate} bps`:`quantizer ${t}`);throw Error(`This specific encoder configuration (${e.codec}, ${t.join(` / `)}, ${e.width}x${e.height}, hardware acceleration: ${e.hardwareAcceleration??`no-preference`}) is not supported in this environment. Consider using another codec or changing your video parameters.`)}let o=i.config;if(i.quantizer===null?this.source._nominalBitrate=o.bitrate??null:this.defaultEncodeOptions=Uc(this.encodingConfig.codec,i.quantizer),a)this.customEncoder=new a,this.customEncoder.codec=this.encodingConfig.codec,this.customEncoder.config=o,this.customEncoder.onPacket=(e,t)=>{if(!(e instanceof I))throw TypeError(`The first argument passed to onPacket must be an EncodedPacket.`);if(t!==void 0&&(!t||typeof t!=`object`))throw TypeError(`The second argument passed to onPacket must be an object or undefined.`);cp(this.source._connectedTrack,e),this.encodingConfig.onEncodedPacket?.(e,t),this.lastMuxerPromise=this.muxer.addEncodedVideoPacket(this.source._connectedTrack,e,t).catch(e=>{this.setError(e)})},this.customEncoder.onError=e=>{this.setError(e)},await this.customEncoder.init();else{let e=[],t=[],r=0,i=0,a=(e,t,n)=>{let r={};if(t){let e=new Uint8Array(t.byteLength);t.copyTo(e),r.alpha=e}let i=I.fromEncodedChunk(e,r),a=E(this.preciseTimings,e.timestamp,e=>e.microsecondTimestamp),o=a===-1?null:this.preciseTimings[a],s=null;this.emittedEncoderPackets===0&&i.type===`delta`&&n?.decoderConfig&&(s=Kn(this.encodingConfig.codec,n.decoderConfig,i.data)),(o&&o.microsecondTimestamp===e.timestamp||s!==null)&&(i=i.clone({timestamp:o?.timestampIsValid?o.timestamp:void 0,duration:o?.durationIsValid?o.duration:void 0,type:s??void 0})),cp(this.source._connectedTrack,i),this.encodingConfig.onEncodedPacket?.(i,n),this.lastMuxerPromise=this.muxer.addEncodedVideoPacket(this.source._connectedTrack,i,n).catch(e=>{this.setError(e)}),this.emittedEncoderPackets++},s=Error(`Encoding error`).stack;if(this.encoder=new VideoEncoder({output:(o,s)=>{if(!this.alphaEncoder){a(o,null,s);return}let c=this.alphaFrameQueue.shift();n(c!==void 0),c?(this.alphaEncoder.encode(c,{...this.defaultEncodeOptions,keyFrame:o.type===`key`}),i++,c.close(),e.push({chunk:o,meta:s})):i===0?a(o,null,s):(t.push(r+i),e.push({chunk:o,meta:s}))},error:e=>{e.stack=s,this.setError(e)}}),this.encoder.configure(o),this.encodingConfig.alpha===`keep`){let s=Error(`Encoding error`).stack;this.alphaEncoder=new VideoEncoder({output:(o,s)=>{i--;let c=e.shift();for(n(c!==void 0),a(c.chunk,o,c.meta),r++;t.length>0&&t[0]===r;){t.shift();let r=e.shift();n(r!==void 0),a(r.chunk,null,r.meta)}},error:e=>{e.stack=s,this.setError(e)}}),this.alphaEncoder.configure(o)}}n(this.source._connectedTrack),this.muxer=this.source._connectedTrack.output._muxer,this.encoderInitialized=!0})()}async flushAndClose(e){try{if(!e&&(this.checkForEncoderError(),this.frameRateLastSample)){let e=this.encodingConfig.transform.frameRate,t=ze(this.frameRateLastEndTimestamp,e);await this.padFrameRate(t)}this.closed=!0,e||(this.customEncoder?this.customEncoderCallSerializer.call(()=>this.customEncoder.flush()):this.encoder&&(await this.encoder.flush(),await this.alphaEncoder?.flush(),await Ot(25)))}finally{this.closed=!0,this.frameRateLastSample?.close(),this.frameRateLastSample=null,this.customEncoder?await this.customEncoderCallSerializer.call(()=>this.customEncoder.close()).catch(e=>this.setError(e)):this.encoder&&(this.encoder.state!==`closed`&&this.encoder.close(),this.alphaEncoder&&this.alphaEncoder.state!==`closed`&&this.alphaEncoder.close(),this.alphaFrameQueue.forEach(e=>e?.close()),this.alphaFrameQueue.length=0,this.splitter?.close())}e||this.checkForEncoderError()}getQueueSize(){return this.customEncoder?this.customEncoderQueueSize:this.encoder?.encodeQueueSize??0}checkForEncoderError(){if(this.errorSet)throw this.error}};let dp=null;var fp=class{constructor(){this.worker=null,this.pendingRequests=new Map,this.nextRequestId=0}split(e){if(!this.worker){if(!dp){let e=new Blob([`(${pp.toString()})()`],{type:`application/javascript`});dp=URL.createObjectURL(e)}this.worker=new Worker(dp),this.worker.addEventListener(`message`,e=>{let t=e.data,n=this.pendingRequests.get(t.id);n&&(this.pendingRequests.delete(t.id),`error`in t?n.reject(Error(t.error)):n.resolve({colorFrame:t.colorFrame,alphaFrame:t.alphaFrame}))}),this.worker.addEventListener(`error`,e=>{let t=Error(e.message||`Color/alpha splitter worker error.`);for(let e of this.pendingRequests.values())e.reject(t);this.pendingRequests.clear()})}let t=this.nextRequestId++,n=D();return this.pendingRequests.set(t,n),this.worker.postMessage({id:t,sourceFrame:e},{transfer:[e]}),n.promise}close(){this.worker?.terminate(),this.worker=null;let e=Error(`Color/alpha splitter closed.`);for(let t of this.pendingRequests.values())t.reject(e);this.pendingRequests.clear()}};const pp=()=>{let e=null,t=Promise.resolve();self.addEventListener(`message`,e=>{let{id:r,sourceFrame:i}=e.data;t=t.then(async()=>{try{let{colorFrame:e,alphaFrame:t}=await n(i);self.postMessage({id:r,colorFrame:e,alphaFrame:t},{transfer:[e,t]})}catch(e){self.postMessage({id:r,error:e.message})}finally{i.close()}})});let n=async t=>{let n=t.format;if(!n)throw Error(`CPU color/alpha splitting requires a known VideoFrame format.`);let a=t.allocationSize();if((!e||e.byteLength!==a)&&(e=new Uint8Array(a)),await t.copyTo(e),n===`RGBA`||n===`BGRA`)return r(e,n,t);if(n===`I420A`||n===`I420AP10`||n===`I420AP12`||n===`I422A`||n===`I422AP10`||n===`I422AP12`||n===`I444A`||n===`I444AP10`||n===`I444AP12`)return i(e,n,t);throw Error(`CPU color/alpha splitting does not support format '${n}'.`)},r=(e,t,n)=>{let r=n.visibleRect?.width??n.codedWidth,i=n.visibleRect?.height??n.codedHeight,a=r*i,o=a+Math.ceil(r/2)*Math.ceil(i/2)*2,s=new Uint8Array(o);for(let t=0,n=3;t<a;t++,n+=4)s[t]=e[n];s.fill(128,a);let c=new VideoFrame(e,{format:t===`RGBA`?`RGBX`:`BGRX`,codedWidth:r,codedHeight:i,timestamp:n.timestamp,duration:n.duration??void 0}),l={format:`I420`,codedWidth:r,codedHeight:i,timestamp:n.timestamp,duration:n.duration??void 0,transfer:[s.buffer]};return{colorFrame:c,alphaFrame:new VideoFrame(s,l)}},i=(e,t,n)=>{let r=n.visibleRect?.width??n.codedWidth,i=n.visibleRect?.height??n.codedHeight,a=t.includes(`P10`),o=t.includes(`P12`),s=a||o?2:1,c,l;t.startsWith(`I420`)?(c=Math.ceil(r/2),l=Math.ceil(i/2)):t.startsWith(`I422`)?(c=Math.ceil(r/2),l=i):(c=r,l=i);let u=r*i,d=c*l,f=u*s,p=d*s,m=u*s,h=f+p*2,g=t.replace(`A`,``),_=Math.ceil(r/2)*Math.ceil(i/2),v=m+_*s*2,y=new Uint8Array(v),b=h;y.set(e.subarray(b,b+m),0);let x=m,S=a?512:o?2048:128;s===1?y.fill(S,x):new Uint16Array(y.buffer,x,2*_).fill(S);let C=a?`I420P10`:o?`I420P12`:`I420`,ee=new VideoFrame(e.subarray(0,h),{format:g,codedWidth:r,codedHeight:i,timestamp:n.timestamp,duration:n.duration??void 0}),te={format:C,codedWidth:r,codedHeight:i,timestamp:n.timestamp,duration:n.duration??void 0,transfer:[y.buffer]};return{colorFrame:ee,alphaFrame:new VideoFrame(y,te)}}};var mp=class extends sp{constructor(e){Nc(e),super(e.codec),this._encoder=new up(this,e)}add(e,t){if(!(e instanceof rc))throw TypeError(`videoSample must be a VideoSample.`);return this._encoder.add(e,!1,t)}_flushAndClose(e){return this._encoder.flushAndClose(e)}},hp=class extends sp{constructor(e,t){if(!(typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement)&&!(typeof OffscreenCanvas<`u`&&e instanceof OffscreenCanvas))throw TypeError(`canvas must be an HTMLCanvasElement or OffscreenCanvas.`);Nc(t),super(t.codec),this._encoder=new up(this,t),this._canvas=e}add(e,t=0,n){if(!Number.isFinite(e))throw TypeError(`timestamp must be a finite number.`);if(!Number.isFinite(t)||t<0)throw TypeError(`duration must be a non-negative number.`);let r=new rc(this._canvas,{timestamp:e,duration:t});return this._encoder.add(r,!0,n)}_flushAndClose(e){return this._encoder.flushAndClose(e)}},gp=class extends sp{get errorPromise(){return this._errorPromiseAccessed=!0,this._promiseWithResolvers.promise}get paused(){return this._paused}constructor(e,t,n={}){if(!(e instanceof MediaStreamTrack)||e.kind!==`video`)throw TypeError(`track must be a video MediaStreamTrack.`);if(Nc(t),typeof n!=`object`||!n)throw TypeError(`options must be an object.`);if(n.frameRate!=null&&(typeof n.frameRate!=`number`||n.frameRate<=0))throw TypeError(`options.frameRate, when provided, must be either a positive number or null.`);if(n.timestampBase!==void 0&&n.timestampBase!==`synced-zero`&&n.timestampBase!==`zero`&&n.timestampBase!==`unix`)throw TypeError(`options.timestampBase, when provided, must be one of 'synced-zero', 'zero', or 'unix'.`);t={...t,latencyMode:`realtime`},super(t.codec),this._abortController=null,this._workerTrackId=null,this._workerListener=null,this._promiseWithResolvers=D(),this._errorPromiseAccessed=!1,this._paused=!1,this._lastVideoFrame=null,this._timerHandle=null,this._videoElement=null,this._options=n,this._encoder=new up(this,t),this._track=e}async _start(){this._errorPromiseAccessed||A._warn("Make sure not to ignore the `errorPromise` field on MediaStreamVideoTrackSource, so that any internal errors get bubbled up properly.");let e=this._options.frameRate===void 0?this._track.getSettings().frameRate??null:this._options.frameRate;this._abortController=new AbortController;let t=null,r=null,i=0,a=!1,o=null,s=0,c=()=>{if(n(e!==null),!this._lastVideoFrame)return;n(r!==null),n(t!==null);let a=performance.now();for(;a-r>1e3/e;){r+=1e3/e;let n=t+i/e,o=new VideoFrame(this._videoElement??this._lastVideoFrame,{timestamp:1e6*n,duration:1e6/e});u(o,a)}};e!==null&&(this._timerHandle=Et(c,4));let l=t=>{if(e===null)u(t);else{let e=performance.now();this._lastVideoFrame?(c(),this._lastVideoFrame?.close(),this._lastVideoFrame=t):(u(t.clone(),e),r=e,this._lastVideoFrame=t)}},u=(e,n=performance.now())=>{if(a){e.close();return}i++;let r=e.timestamp/1e6;if(this._paused){if(t!==null){if(o!==null&&this._options.timestampBase!==`unix`){let e=r-o;s-=e}o=r}e.close();return}if(t===null){t=r;let e,i=this._options.timestampBase??`synced-zero`;if(i===`unix`)e=Date.now()/1e3;else if(i===`zero`)e=0;else{let t=this._connectedTrack.output;t._firstMediaStreamTimestamp===null?(t._firstMediaStreamTimestamp=n/1e3,e=0):e=n/1e3-t._firstMediaStreamTimestamp}s=e-t}if(o=r,this._encoder.getQueueSize()>=8){e.close();return}let c=new rc(e,{timestamp:r+s});this._encoder.add(c,!0).catch(e=>{a=!0,this._abortController?.abort(),this._promiseWithResolvers.reject(e),this._workerTrackId!==null&&kp({type:`stopTrack`,trackId:this._workerTrackId})})};if(typeof MediaStreamTrackProcessor<`u`){let e=new MediaStreamTrackProcessor({track:this._track}),t=new WritableStream({write:l});e.readable.pipeTo(t,{signal:this._abortController.signal}).catch(e=>{e instanceof DOMException&&e.name===`AbortError`||this._promiseWithResolvers.reject(e)})}else if(await Op())this._workerTrackId=wp++,kp({type:`videoTrack`,trackId:this._workerTrackId,track:this._track}),this._workerListener=e=>{let t=e.data;t.type===`videoFrame`&&t.trackId===this._workerTrackId?l(t.videoFrame):t.type===`error`&&t.trackId===this._workerTrackId&&this._promiseWithResolvers.reject(t.error)},Tp.addEventListener(`message`,this._workerListener);else if(e!==null){let e=document.createElement(`video`);e.style.position=`fixed`,e.style.left=`-10000px`,e.style.top=`-10000px`,e.style.width=`1px`,e.style.height=`1px`,e.style.opacity=`0`,e.style.pointerEvents=`none`,e.muted=!0,e.srcObject=new MediaStream([this._track]),document.body.appendChild(e),this._videoElement=e,e.addEventListener(`loadeddata`,()=>{if(a||!this._videoElement)return;let t=new VideoFrame(e,{timestamp:1e3*performance.now()});l(t),t.close()},{once:!0}),e.play().catch(e=>{a=!0,this._promiseWithResolvers.reject(e)})}else throw Error(`When no explicit frame rate is set, MediaStreamTrackProcessor is required; but it's not available in this environment.`)}pause(){this._paused=!0}resume(){this._paused=!1}async _flushAndClose(e){try{this._abortController&&=(this._abortController.abort(),null),this._timerHandle&&Dt(this._timerHandle),this._lastVideoFrame?.close(),this._videoElement&&=(this._videoElement.srcObject=null,this._videoElement.remove(),null),this._workerTrackId!==null&&(n(this._workerListener),kp({type:`stopTrack`,trackId:this._workerTrackId}),await new Promise(e=>{let t=r=>{let i=r.data;i.type===`trackStopped`&&i.trackId===this._workerTrackId&&(n(this._workerListener),Tp.removeEventListener(`message`,this._workerListener),Tp.removeEventListener(`message`,t),e())};Tp.addEventListener(`message`,t)}))}finally{await this._encoder.flushAndClose(e)}}},_p=class extends op{constructor(e){if(super(),this._connectedTrack=null,!F.includes(e))throw TypeError(`Invalid audio codec '${e}'. Must be one of: ${F.join(`, `)}.`);this._codec=e}},vp=class extends _p{constructor(e){super(e)}add(e,t){if(!(e instanceof I))throw TypeError(`packet must be an EncodedPacket.`);if(e.isMetadataOnly)throw TypeError(`Metadata-only packets cannot be added.`);if(t!==void 0&&(!t||typeof t!=`object`))throw TypeError(`meta, when provided, must be an object.`);return this._ensureValidAdd(),this._connectedTrack.output._muxer.addEncodedAudioPacket(this._connectedTrack,e,t)}},yp=class{setError(e){this.errorSet||=(this.error=e,!0)}constructor(e,t){this.source=e,this.encodingConfig=t,this.ensureEncoderPromise=null,this.encoderInitialized=!1,this.encoder=null,this.muxer=null,this.lastNumberOfChannels=null,this.lastSampleRate=null,this.isPcmEncoder=!1,this.outputSampleSize=null,this.writeOutputValue=null,this.customEncoder=null,this.customEncoderCallSerializer=new Ye,this.customEncoderQueueSize=0,this.lastEndSampleIndex=null,this.resampler=null,this.error=null,this.errorSet=!1,this.lastMuxerPromise=Promise.resolve(),this.closed=!1}async add(e,t){try{if(this.checkForEncoderError(),this.source._ensureValidAdd(),this.lastNumberOfChannels!==null&&this.lastSampleRate!==null){if(e.numberOfChannels!==this.lastNumberOfChannels||e.sampleRate!==this.lastSampleRate)throw Error(`Audio parameters must remain constant. Expected ${this.lastNumberOfChannels} channels at ${this.lastSampleRate} Hz, got ${e.numberOfChannels} channels at ${e.sampleRate} Hz.`)}else this.lastNumberOfChannels=e.numberOfChannels,this.lastSampleRate=e.sampleRate;let n=this.encodingConfig;n.transform?.numberOfChannels!==void 0||n.transform?.sampleRate!==void 0?(this.resampler||=new rp({targetNumberOfChannels:n.transform.numberOfChannels??e.numberOfChannels,targetSampleRate:n.transform.sampleRate??e.sampleRate,onSample:async e=>{await this.processAndEncode(e,!0)}}),await this.resampler.add(e)):await this.processAndEncode(e,t)}finally{t&&e.close()}}async processAndEncode(e,t){let n=this.encodingConfig;if(n.transform?.sampleFormat!==void 0&&Oc(e.format)!==n.transform.sampleFormat){let r=Ac(e,n.transform.sampleFormat);t&&e.close(),e=r,t=!0}if(n.transform?.process)try{let t=n.transform.process(e);if(k(t)&&(t=await t),t===null)return;Array.isArray(t)||(t=[t]);try{for(let e of t)if(!(e instanceof Sc))throw TypeError(`The audio process function must return an AudioSample, null, or an array of AudioSamples.`);for(let e of t)await this.encodeSample(e,!0)}finally{for(let e of t)e instanceof Sc&&e.close()}}finally{t&&e.close()}else await this.encodeSample(e,t)}async encodeSample(e,t){try{if(this.encoderInitialized||(this.ensureEncoderPromise||this.ensureEncoder(e),this.encoderInitialized||await this.ensureEncoderPromise),n(this.encoderInitialized),this.closed)return;{let t=Math.round(e.timestamp*e.sampleRate),n=Math.round((e.timestamp+e.duration)*e.sampleRate);if(this.lastEndSampleIndex===null)this.lastEndSampleIndex=n;else{let n=t-this.lastEndSampleIndex;if(n>=64){let t=new Sc({data:new Float32Array(n*e.numberOfChannels),format:`f32-planar`,sampleRate:e.sampleRate,numberOfChannels:e.numberOfChannels,numberOfFrames:n,timestamp:this.lastEndSampleIndex/e.sampleRate});await this.encodeSample(t,!0)}this.lastEndSampleIndex+=e.numberOfFrames}}if(this.encodingConfig.onEncodedSample?.(e),this.customEncoder){this.customEncoderQueueSize++;let t=e.clone(),n=this.customEncoderCallSerializer.call(()=>this.customEncoder.encode(t)).catch(e=>this.setError(e)).finally(()=>{this.customEncoderQueueSize--,t.close()});this.customEncoderQueueSize>=4&&await n,await this.lastMuxerPromise}else if(this.isPcmEncoder)await this.doPcmEncoding(e,t);else{n(this.encoder);let r=e.toAudioData();this.encoder.encode(r),r.close(),t&&e.close(),this.encoder.encodeQueueSize>=4&&await new Promise(e=>this.encoder.addEventListener(`dequeue`,e,{once:!0})),await this.lastMuxerPromise}}finally{t&&e.close()}}async doPcmEncoding(e,t){n(this.outputSampleSize),n(this.writeOutputValue);let{numberOfChannels:r,numberOfFrames:i,sampleRate:a,timestamp:o}=e,s=2048,c=[];for(let t=0;t<i;t+=s){let n=Math.min(s,e.numberOfFrames-t),i=n*r*this.outputSampleSize,a=new ArrayBuffer(i),o=new DataView(a);c.push({frameCount:n,view:o})}let l=e.format===`s32`||e.format===`s32-planar`,u=l?`s32-planar`:`f32-planar`,d=l?1/2147483648:1,f=e.allocationSize({planeIndex:0,format:u}),p=l?new Int32Array(f/4):new Float32Array(f/4);for(let t=0;t<r;t++){e.copyTo(p,{planeIndex:t,format:u});for(let e=0;e<c.length;e++){let{frameCount:n,view:i}=c[e];for(let a=0;a<n;a++)this.writeOutputValue(i,(a*r+t)*this.outputSampleSize,p[e*s+a]*d)}}t&&e.close();let m={decoderConfig:{codec:this.encodingConfig.codec,numberOfChannels:r,sampleRate:a}};for(let e=0;e<c.length;e++){let{frameCount:t,view:n}=c[e],r=n.buffer,i=e*s,l=new I(new Uint8Array(r),`key`,o+i/a,t/a);this.encodingConfig.onEncodedPacket?.(l,m),await this.muxer.addEncodedAudioPacket(this.source._connectedTrack,l,m)}}ensureEncoder(e){this.ensureEncoderPromise=(async()=>{let{numberOfChannels:t,sampleRate:r}=e,i=Qc(this.encodingConfig.quality,this.encodingConfig.bitrate),a=Rc({numberOfChannels:t,sampleRate:r,...this.encodingConfig,quality:i});this.encodingConfig.onEncoderConfig?.(a),this.source._nominalBitrate=a.bitrate??null;let o=ml.find(e=>e.supports(this.encodingConfig.codec,a));if(o)this.customEncoder=new o,this.customEncoder.codec=this.encodingConfig.codec,this.customEncoder.config=a,this.customEncoder.onPacket=(e,t)=>{if(!(e instanceof I))throw TypeError(`The first argument passed to onPacket must be an EncodedPacket.`);if(t!==void 0&&(!t||typeof t!=`object`))throw TypeError(`The second argument passed to onPacket must be an object or undefined.`);this.encodingConfig.onEncodedPacket?.(e,t),this.lastMuxerPromise=this.muxer.addEncodedAudioPacket(this.source._connectedTrack,e,t).catch(e=>{this.setError(e)})},this.customEncoder.onError=e=>{this.setError(e)},await this.customEncoder.init();else if(P.includes(this.encodingConfig.codec))this.initPcmEncoder();else{if(typeof AudioEncoder>`u`)throw Error(nt(`AudioEncoder`));let e;try{e=(await AudioEncoder.isConfigSupported(a)).supported??!1}catch{e=!1}if(!e)throw Error(`This specific encoder configuration (${a.codec}, ${a.bitrate} bps, ${a.numberOfChannels} channels, ${a.sampleRate} Hz) is not supported in this environment. Consider using another codec or changing your audio parameters.`);let t=Error(`Encoding error`).stack;this.encoder=new AudioEncoder({output:(e,t)=>{if(this.encodingConfig.codec===`aac`&&t?.decoderConfig){let e=!1;if(e=!t.decoderConfig.description||t.decoderConfig.description.byteLength<2||Ut(S(t.decoderConfig.description)).objectType===0,e){let e=Number(h(a.codec.split(`.`)));t.decoderConfig.description=Kt({objectType:e,outputNumberOfChannels:t.decoderConfig.numberOfChannels,outputSampleRate:t.decoderConfig.sampleRate})}}let n=I.fromEncodedChunk(e);n=n.clone({timestamp:Le(n.timestamp,a.sampleRate),duration:e.duration==null?void 0:Le(n.duration,a.sampleRate)}),this.encodingConfig.onEncodedPacket?.(n,t),this.lastMuxerPromise=this.muxer.addEncodedAudioPacket(this.source._connectedTrack,n,t).catch(e=>{this.setError(e)})},error:e=>{e.stack=t,this.setError(e)}}),this.encoder.configure(a)}n(this.source._connectedTrack),this.muxer=this.source._connectedTrack.output._muxer,this.encoderInitialized=!0})()}initPcmEncoder(){this.isPcmEncoder=!0;let e=this.encodingConfig.codec,{dataType:t,sampleSize:r,littleEndian:i}=Br(e);switch(this.outputSampleSize=r,r){case 1:t===`unsigned`?this.writeOutputValue=(e,t,n)=>e.setUint8(t,O(Math.round(n*128)+128,0,255)):t===`signed`?this.writeOutputValue=(e,t,n)=>{e.setInt8(t,O(Math.round(n*128),-128,127))}:t===`ulaw`?this.writeOutputValue=(e,t,n)=>{let r=O(Math.round(n*32768),-32768,32767);e.setUint8(t,_l(r))}:t===`alaw`?this.writeOutputValue=(e,t,n)=>{let r=O(Math.round(n*32768),-32768,32767);e.setUint8(t,yl(r))}:n(!1);break;case 2:t===`unsigned`?this.writeOutputValue=(e,t,n)=>e.setUint16(t,O(Math.round(n*32768)+32768,0,65535),i):t===`signed`?this.writeOutputValue=(e,t,n)=>e.setInt16(t,O(Math.round(n*32768),-32768,32767),i):n(!1);break;case 3:t===`unsigned`?this.writeOutputValue=(e,t,n)=>ke(e,t,O(Math.round(n*8388608)+8388608,0,16777215),i):t===`signed`?this.writeOutputValue=(e,t,n)=>Ae(e,t,O(Math.round(n*8388608),-8388608,8388607),i):n(!1);break;case 4:t===`unsigned`?this.writeOutputValue=(e,t,n)=>e.setUint32(t,O(Math.round(n*2147483648)+2147483648,0,4294967295),i):t===`signed`?this.writeOutputValue=(e,t,n)=>e.setInt32(t,O(Math.round(n*2147483648),-2147483648,2147483647),i):t===`float`?this.writeOutputValue=(e,t,n)=>e.setFloat32(t,n,i):n(!1);break;case 8:t===`float`?this.writeOutputValue=(e,t,n)=>e.setFloat64(t,n,i):n(!1);break;default:Ee(r),n(!1)}}async flushAndClose(e){try{e||(this.checkForEncoderError(),this.resampler&&await this.resampler.finalize()),this.closed=!0,e||(this.customEncoder?this.customEncoderCallSerializer.call(()=>this.customEncoder.flush()):this.encoder&&await this.encoder.flush())}finally{this.closed=!0,this.resampler=null,this.customEncoder?await this.customEncoderCallSerializer.call(()=>this.customEncoder.close()).catch(e=>this.setError(e)):this.encoder&&this.encoder.state!==`closed`&&this.encoder.close()}e||this.checkForEncoderError()}getQueueSize(){return this.customEncoder?this.customEncoderQueueSize:this.isPcmEncoder?0:this.encoder?.encodeQueueSize??0}checkForEncoderError(){if(this.errorSet)throw this.error}},bp=class extends _p{constructor(e){Ic(e),super(e.codec),this._encoder=new yp(this,e)}add(e){if(!(e instanceof Sc))throw TypeError(`audioSample must be an AudioSample.`);return this._encoder.add(e,!1)}_flushAndClose(e){return this._encoder.flushAndClose(e)}},xp=class extends _p{constructor(e,t={}){if(Ic(e),typeof t!=`object`||!t)throw TypeError(`options must be an object.`);if(t.startTimestamp!==void 0&&!Number.isFinite(t.startTimestamp))throw TypeError(`options.startTimestamp, when provided, must be a finite number.`);super(e.codec),this._encoder=new yp(this,e),this._accumulatedTime=t.startTimestamp??0}async add(e){if(!(e instanceof AudioBuffer))throw TypeError(`audioBuffer must be an AudioBuffer.`);let t=Sc._fromAudioBuffer(e,this._accumulatedTime);this._accumulatedTime+=e.duration;for(let e of t)await this._encoder.add(e,!0)}_flushAndClose(e){return this._encoder.flushAndClose(e)}},Sp=class extends _p{get errorPromise(){return this._errorPromiseAccessed=!0,this._promiseWithResolvers.promise}get paused(){return this._paused}constructor(e,t,n={}){if(!(e instanceof MediaStreamTrack)||e.kind!==`audio`)throw TypeError(`track must be an audio MediaStreamTrack.`);if(Ic(t),typeof n!=`object`||!n)throw TypeError(`options must be an object.`);if(n.timestampBase!==void 0&&n.timestampBase!==`synced-zero`&&n.timestampBase!==`zero`&&n.timestampBase!==`unix`)throw TypeError(`options.timestampBase, when provided, must be one of 'synced-zero', 'zero', or 'unix'.`);super(t.codec),this._abortController=null,this._audioContext=null,this._scriptProcessorNode=null,this._promiseWithResolvers=D(),this._errorPromiseAccessed=!1,this._paused=!1,this._options=n,this._encoder=new yp(this,t),this._track=e}async _start(){this._errorPromiseAccessed||A._warn("Make sure not to ignore the `errorPromise` field on MediaStreamAudioTrackSource, so that any internal errors get bubbled up properly."),this._abortController=new AbortController;let e=null,t=!1,n=null,r=0,i=i=>{if(t){i.close();return}let a=i.timestamp;if(this._paused){if(e!==null){if(n!==null&&this._options.timestampBase!==`unix`){let e=a-n;r-=e}n=a}i.close();return}if(e===null){e=i.timestamp;let t,n=this._options.timestampBase??`synced-zero`;if(n===`unix`)t=Date.now()/1e3;else if(n===`zero`)t=0;else{let e=this._connectedTrack.output;e._firstMediaStreamTimestamp===null?(e._firstMediaStreamTimestamp=performance.now()/1e3,t=0):t=performance.now()/1e3-e._firstMediaStreamTimestamp}r=t-e}if(n=a,this._encoder.getQueueSize()>=8){i.close();return}i.setTimestamp(a+r),this._encoder.add(i,!0).catch(e=>{t=!0,this._abortController?.abort(),this._promiseWithResolvers.reject(e),this._audioContext?.suspend()})};if(typeof MediaStreamTrackProcessor<`u`){let e=new MediaStreamTrackProcessor({track:this._track}),t=new WritableStream({write:e=>i(new Sc(e))});e.readable.pipeTo(t,{signal:this._abortController.signal}).catch(e=>{e instanceof DOMException&&e.name===`AbortError`||this._promiseWithResolvers.reject(e)})}else{let e=window.AudioContext||window.webkitAudioContext;this._audioContext=new e({sampleRate:this._track.getSettings().sampleRate});let t=this._audioContext.createMediaStreamSource(new MediaStream([this._track]));this._scriptProcessorNode=this._audioContext.createScriptProcessor(4096),this._audioContext.state===`suspended`&&await this._audioContext.resume(),t.connect(this._scriptProcessorNode),this._scriptProcessorNode.connect(this._audioContext.destination);let n=0;this._scriptProcessorNode.onaudioprocess=e=>{let t=Sc._fromAudioBuffer(e.inputBuffer,n);n+=e.inputBuffer.duration;for(let e of t)i(e)}}}pause(){this._paused=!0}resume(){this._paused=!1}async _flushAndClose(e){try{this._abortController&&=(this._abortController.abort(),null),this._audioContext&&(n(this._scriptProcessorNode),this._scriptProcessorNode.disconnect(),await this._audioContext.suspend())}finally{await this._encoder.flushAndClose(e)}}};const Cp=()=>{let e=(e,t)=>{t?self.postMessage(e,{transfer:t}):self.postMessage(e)};e({type:`support`,supported:typeof MediaStreamTrackProcessor<`u`});let t=new Map,n=new Map;self.addEventListener(`message`,r=>{let i=r.data;switch(i.type){case`videoTrack`:{n.set(i.trackId,i.track);let r=new MediaStreamTrackProcessor({track:i.track}),a=new WritableStream({write:t=>{if(!n.has(i.trackId)){t.close();return}e({type:`videoFrame`,trackId:i.trackId,videoFrame:t},[t])}}),o=new AbortController;t.set(i.trackId,o),r.readable.pipeTo(a,{signal:o.signal}).catch(t=>{t instanceof DOMException&&t.name===`AbortError`||e({type:`error`,trackId:i.trackId,error:t})})}break;case`stopTrack`:{let r=t.get(i.trackId);r&&(r.abort(),t.delete(i.trackId)),n.get(i.trackId)?.stop(),n.delete(i.trackId),e({type:`trackStopped`,trackId:i.trackId})}break;default:Ee(i)}})};let wp=0,Tp=null;const Ep=()=>{let e=new Blob([`(${Cp.toString()})()`],{type:`application/javascript`}),t=URL.createObjectURL(e);Tp=new Worker(t)};let Dp=null;const Op=async()=>Dp===null?(Tp||Ep(),new Promise(e=>{n(Tp);let t=n=>{let r=n.data;r.type===`support`&&(Dp=r.supported,Tp.removeEventListener(`message`,t),e(r.supported))};Tp.addEventListener(`message`,t)})):Dp,kp=(e,t)=>{n(Tp),t?Tp.postMessage(e,t):Tp.postMessage(e)};var Ap=class extends op{constructor(e){if(super(),this._connectedTrack=null,!Sr.includes(e))throw TypeError(`Invalid subtitle codec '${e}'. Must be one of: ${Sr.join(`, `)}.`);this._codec=e}},jp=class extends Ap{constructor(e){super(e),this._error=null,this._errorSet=!1,this._lastMuxerPromise=Promise.resolve(),this._parser=new Pu({codec:e,output:(e,t)=>{this._lastMuxerPromise=this._connectedTrack.output._muxer.addSubtitleCue(this._connectedTrack,e,t).catch(e=>{this._setError(e)})}})}add(e){if(typeof e!=`string`)throw TypeError(`text must be a string.`);return this._checkForError(),this._ensureValidAdd(),this._parser.parse(e),this._lastMuxerPromise}_setError(e){this._errorSet||=(this._error=e,!0)}_checkForError(){if(this._errorSet)throw this._error}async _flushAndClose(e){e||this._checkForError()}},Mp=class extends Du{constructor(e,t){
512
+ if(t!=null){if(typeof t!=`object`&&typeof t!=`function`)throw TypeError(`Object expected.`);var r,i;if(n){if(!Symbol.asyncDispose)throw TypeError(`Symbol.asyncDispose is not defined.`);r=t[Symbol.asyncDispose]}if(r===void 0){if(!Symbol.dispose)throw TypeError(`Symbol.dispose is not defined.`);r=t[Symbol.dispose],n&&(i=r)}if(typeof r!=`function`)throw TypeError(`Object not disposable.`);i&&(r=function(){try{i.call(this)}catch(e){return Promise.reject(e)}}),e.stack.push({value:t,dispose:r,async:n})}else n&&e.stack.push({async:!0});return t},ap=(function(e){return function(t){function n(n){t.error=t.hasError?new e(n,t.error,`An error was suppressed during disposal.`):n,t.hasError=!0}var r,i=0;function a(){for(;r=t.stack.pop();)try{if(!r.async&&i===1)return i=0,t.stack.push(r),Promise.resolve().then(a);if(r.dispose){var e=r.dispose.call(r.value);if(r.async)return i|=2,Promise.resolve(e).then(a,function(e){return n(e),a()})}else i|=1}catch(e){n(e)}if(i===1)return t.hasError?Promise.reject(t.error):Promise.resolve();if(t.hasError)throw t.error}return a()}})(typeof SuppressedError==`function`?SuppressedError:function(e,t,n){var r=Error(n);return r.name=`SuppressedError`,r.error=e,r.suppressed=t,r}),op=class{constructor(){this._connectedTrack=null,this._closingPromise=null,this._closed=!1,this._nominalBitrate=null}_ensureValidAdd(){if(!this._connectedTrack)throw Error(`Source is not connected to an output track.`);if(this._connectedTrack.output.state===`canceled`)throw Error(`Output has been canceled.`);if(this._connectedTrack.output.state===`finalizing`||this._connectedTrack.output.state===`finalized`)throw Error(`Output has been finalized.`);if(this._connectedTrack.output.state===`pending`)throw Error(`Output has not started.`);if(this._closed)throw Error(`Source is closed.`)}async _start(){}async _flushAndClose(e){}close(){if(this._closingPromise)return;let e=this._connectedTrack;if(!e)throw Error(`Cannot call close without connecting the source to an output track.`);if(e.output.state===`pending`)throw Error(`Cannot call close before output has been started.`);this._closingPromise=(async()=>{await this._flushAndClose(!1),this._closed=!0,e.output.state!==`finalizing`&&e.output.state!==`finalized`&&e.output._muxer.onTrackClose(e)})()}async _flushOrWaitForOngoingClose(e){return this._closingPromise??=(async()=>{await this._flushAndClose(e),this._closed=!0})()}},sp=class extends op{constructor(e){if(super(),!N.includes(e))throw TypeError(`Invalid video codec '${e}'. Must be one of: ${N.join(`, `)}.`);this._codec=e}};const cp=(e,t)=>{if(e.metadata.hasOnlyKeyPackets&&t.type!==`key`)throw Error(`Cannot add non-key packets to a hasOnlyKeyPackets video track.`)};var lp=class extends sp{constructor(e){super(e)}add(e,t){if(!(e instanceof I))throw TypeError(`packet must be an EncodedPacket.`);if(e.isMetadataOnly)throw TypeError(`Metadata-only packets cannot be added.`);if(t!==void 0&&(!t||typeof t!=`object`))throw TypeError(`meta, when provided, must be an object.`);return this._ensureValidAdd(),cp(this._connectedTrack,e),this._connectedTrack.output._muxer.addEncodedVideoPacket(this._connectedTrack,e,t)}},up=class{setError(e){this.errorSet||=(this.error=e,!0)}constructor(e,t){this.source=e,this.encodingConfig=t,this.ensureEncoderPromise=null,this.encoderInitialized=!1,this.encoder=null,this.muxer=null,this.lastMultipleOfKeyFrameInterval=-1,this.emittedEncoderPackets=0,this.codedWidth=null,this.codedHeight=null,this.outputWidth=null,this.outputHeight=null,this.frameRateLastSample=null,this.frameRateLastTimestamp=null,this.frameRateLastEndTimestamp=null,this.preciseTimings=[],this.customEncoder=null,this.customEncoderCallSerializer=new Ye,this.customEncoderQueueSize=0,this.defaultEncodeOptions={},this.alphaEncoder=null,this.splitter=null,this.splitterCreationFailed=!1,this.alphaFrameQueue=[],this.error=null,this.errorSet=!1,this.lastMuxerPromise=Promise.resolve(),this.closed=!1}async add(e,t,r){let i=e;try{this.checkForEncoderError(),this.source._ensureValidAdd();let a=this.encodingConfig,o=a.sizeChangeBehavior??`deny`,s=!1;if(this.codedWidth!==null&&this.codedHeight!==null){if((e.codedWidth!==this.codedWidth||e.codedHeight!==this.codedHeight)&&(s=!0,o===`deny`))throw Error(`Video sample size must remain constant. Expected ${this.codedWidth}x${this.codedHeight}, got ${e.codedWidth}x${e.codedHeight}. To allow the sample size to change over time, set \`sizeChangeBehavior\` to a value other than 'deny' in the encoding options.`)}else this.codedWidth=e.codedWidth,this.codedHeight=e.codedHeight;if(a.transform?.width!==void 0||a.transform?.height!==void 0||a.transform?.rotate!==void 0||a.transform?.flip!==void 0||a.transform?.crop!==void 0||a.transform?.force===!0||s&&o!==`passThrough`){let r=a.transform?.width,i=a.transform?.height,c=a.transform?.fit??`fill`;s&&o!==`passThrough`&&(n(this.outputWidth),n(this.outputHeight),n(o!==`deny`),r=this.outputWidth,i=this.outputHeight,c=o);let l=await e.transform({width:r,height:i,roundDimensionsTo:2,crop:a.transform?.crop,rotate:a.transform?.rotate,flip:a.transform?.flip,fit:c,alpha:a.alpha});(this.outputWidth===null||this.outputHeight===null)&&(this.outputWidth=l.displayWidth,this.outputHeight=l.displayHeight),t&&e.close(),e=l,t=!0}else(this.outputWidth===null||this.outputHeight===null)&&(this.outputWidth=e.codedWidth,this.outputHeight=e.codedHeight);let c=a.transform?.frameRate;if(c!==void 0){let n=e.timestamp+e.duration,a=ze(e.timestamp,c);if(this.frameRateLastSample!==null){if(a<=this.frameRateLastTimestamp){this.frameRateLastSample.close(),this.frameRateLastSample=e.clone(),this.frameRateLastEndTimestamp=n;return}await this.padFrameRate(a,r)}e===i&&(e=e.clone(),t=!0),e.setTimestamp(a),e.setDuration(1/c),this.frameRateLastSample?.close(),this.frameRateLastSample=e.clone(),this.frameRateLastTimestamp=a,this.frameRateLastEndTimestamp=n}await this.processAndEncode(e,r)}finally{t&&e.close()}}async processAndEncode(e,t){let r=this.encodingConfig,i;if(r.transform?.process){let t=r.transform.process(e);if(k(t)&&(t=await t),t===null)return;Array.isArray(t)||(t=[t]);let n=[];try{for(let r of t)r instanceof rc?n.push(r):typeof VideoFrame<`u`&&r instanceof VideoFrame?n.push(new rc(r)):n.push(new rc(r,{timestamp:e.timestamp,duration:e.duration}))}catch(r){for(let t of n)t!==e&&t.close();for(let n of t)(n instanceof rc&&n!==e||typeof VideoFrame<`u`&&n instanceof VideoFrame)&&n.close();throw r}i=n}else i=[e];try{for(let e of i){if(this.encoderInitialized||(this.ensureEncoderPromise||this.ensureEncoder(e),this.encoderInitialized||await this.ensureEncoderPromise),n(this.encoderInitialized),this.closed)break;let r=this.encodingConfig.keyFrameInterval??2,i=Math.floor(e.timestamp/r),a={...this.defaultEncodeOptions,...e.encodeOptions,...t},o={...a,keyFrame:a.keyFrame===void 0?r===0||i!==this.lastMultipleOfKeyFrameInterval:a.keyFrame};if(this.lastMultipleOfKeyFrameInterval=i,this.encodingConfig.onEncodedSample?.(e),this.customEncoder){this.customEncoderQueueSize++;let t=e.clone(),n=this.customEncoderCallSerializer.call(()=>this.customEncoder.encode(t,o)).catch(e=>this.setError(e)).finally(()=>{this.customEncoderQueueSize--,t.close()});this.customEncoderQueueSize>=4&&await n}else{n(this.encoder);let t=e.toVideoFrame(),r=E(this.preciseTimings,t.timestamp,e=>e.microsecondTimestamp),i=r===-1?null:this.preciseTimings[r];if(i&&i.microsecondTimestamp===t.timestamp?(i.timestamp!==e.timestamp&&(i.timestampIsValid=!1),i.duration!==e.duration&&(i.durationIsValid=!1)):(this.preciseTimings.splice(r+1,0,{microsecondTimestamp:t.timestamp,timestamp:e.timestamp,duration:e.duration,timestampIsValid:!0,durationIsValid:!0}),this.preciseTimings.length>128&&this.preciseTimings.shift()),!this.alphaEncoder)try{this.encoder.encode(t,o)}finally{t.close()}else if(t.format&&!t.format.includes(`A`)||this.splitterCreationFailed){this.alphaFrameQueue.push(null);try{this.encoder.encode(t,o)}finally{t.close()}}else{this.splitter||=new fp;let{colorFrame:e,alphaFrame:n}=await this.splitter.split(t);this.alphaFrameQueue.push(n);try{this.encoder.encode(e,o)}finally{e.close()}}this.encoder.encodeQueueSize>=4&&await new Promise(e=>this.encoder.addEventListener(`dequeue`,e,{once:!0}))}await this.lastMuxerPromise}}finally{for(let t of i)t!==e&&t.close()}}async padFrameRate(e,t){let r=this.encodingConfig.transform.frameRate;n(this.frameRateLastSample);let i=Math.round((e-this.frameRateLastTimestamp)*r);for(let e=1;e<i;e++){let n={stack:[],error:void 0,hasError:!1};try{let i=ip(n,this.frameRateLastSample.clone(),!1);i.setTimestamp(this.frameRateLastTimestamp+e/r),i.setDuration(1/r),await this.processAndEncode(i,t)}catch(e){n.error=e,n.hasError=!0}finally{ap(n)}}}ensureEncoder(e){this.ensureEncoderPromise=(async()=>{let t=Qc(this.encodingConfig.quality,this.encodingConfig.bitrate);n(t!==void 0);let r=Fc({...this.encodingConfig,quality:t,width:e.codedWidth,height:e.codedHeight,squarePixelWidth:e.squarePixelWidth,squarePixelHeight:e.squarePixelHeight,framerate:this.source._connectedTrack?.metadata.frameRate}),i=null,a;for(let e of r){let t=e.config;if(this.encodingConfig.onEncoderConfig?.(t),a=pl.find(e=>e.supports(this.encodingConfig.codec,t)),a){i=e;break}if(!(typeof VideoEncoder>`u`)){if(t.alpha=`discard`,this.encodingConfig.alpha===`keep`&&(t.latencyMode=`quality`),(t.width%2==1||t.height%2==1)&&(this.encodingConfig.codec===`avc`||this.encodingConfig.codec===`hevc`))throw Error(`The dimensions ${t.width}x${t.height} are not supported for codec '${this.encodingConfig.codec}'; both width and height must be even numbers. Make sure to round your dimensions to the nearest even number.`);try{if((await VideoEncoder.isConfigSupported(t)).supported){i=e;break}}catch{}}}if(!i){if(typeof VideoEncoder>`u`)throw Error(nt(`VideoEncoder`));let e=r[0].config,t=r.map(({config:e,quantizer:t})=>t===null?`${e.bitrate} bps`:`quantizer ${t}`);throw Error(`This specific encoder configuration (${e.codec}, ${t.join(` / `)}, ${e.width}x${e.height}, hardware acceleration: ${e.hardwareAcceleration??`no-preference`}) is not supported in this environment. Consider using another codec or changing your video parameters.`)}let o=i.config;if(i.quantizer===null?this.source._nominalBitrate=o.bitrate??null:this.defaultEncodeOptions=Uc(this.encodingConfig.codec,i.quantizer),a)this.customEncoder=new a,this.customEncoder.codec=this.encodingConfig.codec,this.customEncoder.config=o,this.customEncoder.onPacket=(e,t)=>{if(!(e instanceof I))throw TypeError(`The first argument passed to onPacket must be an EncodedPacket.`);if(t!==void 0&&(!t||typeof t!=`object`))throw TypeError(`The second argument passed to onPacket must be an object or undefined.`);cp(this.source._connectedTrack,e),this.encodingConfig.onEncodedPacket?.(e,t),this.lastMuxerPromise=this.muxer.addEncodedVideoPacket(this.source._connectedTrack,e,t).catch(e=>{this.setError(e)})},this.customEncoder.onError=e=>{this.setError(e)},await this.customEncoder.init();else{let e=[],t=[],r=0,i=0,a=(e,t,n)=>{let r={};if(t){let e=new Uint8Array(t.byteLength);t.copyTo(e),r.alpha=e}let i=I.fromEncodedChunk(e,r),a=E(this.preciseTimings,e.timestamp,e=>e.microsecondTimestamp),o=a===-1?null:this.preciseTimings[a],s=null;this.emittedEncoderPackets===0&&i.type===`delta`&&n?.decoderConfig&&(s=Kn(this.encodingConfig.codec,n.decoderConfig,i.data)),(o&&o.microsecondTimestamp===e.timestamp||s!==null)&&(i=i.clone({timestamp:o?.timestampIsValid?o.timestamp:void 0,duration:o?.durationIsValid?o.duration:void 0,type:s??void 0})),cp(this.source._connectedTrack,i),this.encodingConfig.onEncodedPacket?.(i,n),this.lastMuxerPromise=this.muxer.addEncodedVideoPacket(this.source._connectedTrack,i,n).catch(e=>{this.setError(e)}),this.emittedEncoderPackets++},s=Error(`Encoding error`).stack;if(this.encoder=new VideoEncoder({output:(o,s)=>{if(!this.alphaEncoder){a(o,null,s);return}let c=this.alphaFrameQueue.shift();n(c!==void 0),c?(this.alphaEncoder.encode(c,{...this.defaultEncodeOptions,keyFrame:o.type===`key`}),i++,c.close(),e.push({chunk:o,meta:s})):i===0?a(o,null,s):(t.push(r+i),e.push({chunk:o,meta:s}))},error:e=>{e.stack=s,this.setError(e)}}),this.encoder.configure(o),this.encodingConfig.alpha===`keep`){let s=Error(`Encoding error`).stack;this.alphaEncoder=new VideoEncoder({output:(o,s)=>{i--;let c=e.shift();for(n(c!==void 0),a(c.chunk,o,c.meta),r++;t.length>0&&t[0]===r;){t.shift();let r=e.shift();n(r!==void 0),a(r.chunk,null,r.meta)}},error:e=>{e.stack=s,this.setError(e)}}),this.alphaEncoder.configure(o)}}n(this.source._connectedTrack),this.muxer=this.source._connectedTrack.output._muxer,this.encoderInitialized=!0})()}async flushAndClose(e){try{if(!e&&(this.checkForEncoderError(),this.frameRateLastSample)){let e=this.encodingConfig.transform.frameRate,t=ze(this.frameRateLastEndTimestamp,e);await this.padFrameRate(t)}this.closed=!0,e||(this.customEncoder?this.customEncoderCallSerializer.call(()=>this.customEncoder.flush()):this.encoder&&(await this.encoder.flush(),await this.alphaEncoder?.flush(),await Ot(25)))}finally{this.closed=!0,this.frameRateLastSample?.close(),this.frameRateLastSample=null,this.customEncoder?await this.customEncoderCallSerializer.call(()=>this.customEncoder.close()).catch(e=>this.setError(e)):this.encoder&&(this.encoder.state!==`closed`&&this.encoder.close(),this.alphaEncoder&&this.alphaEncoder.state!==`closed`&&this.alphaEncoder.close(),this.alphaFrameQueue.forEach(e=>e?.close()),this.alphaFrameQueue.length=0,this.splitter?.close())}e||this.checkForEncoderError()}getQueueSize(){return this.customEncoder?this.customEncoderQueueSize:this.encoder?.encodeQueueSize??0}checkForEncoderError(){if(this.errorSet)throw this.error}};let dp=null;var fp=class{constructor(){this.worker=null,this.pendingRequests=new Map,this.nextRequestId=0}split(e){if(!this.worker){if(!dp){let e=new Blob([`(${pp.toString()})()`],{type:`application/javascript`});dp=URL.createObjectURL(e)}this.worker=new Worker(dp),this.worker.addEventListener(`message`,e=>{let t=e.data,n=this.pendingRequests.get(t.id);n&&(this.pendingRequests.delete(t.id),`error`in t?n.reject(Error(t.error)):n.resolve({colorFrame:t.colorFrame,alphaFrame:t.alphaFrame}))}),this.worker.addEventListener(`error`,e=>{let t=Error(e.message||`Color/alpha splitter worker error.`);for(let e of this.pendingRequests.values())e.reject(t);this.pendingRequests.clear()})}let t=this.nextRequestId++,n=D();return this.pendingRequests.set(t,n),this.worker.postMessage({id:t,sourceFrame:e},{transfer:[e]}),n.promise}close(){this.worker?.terminate(),this.worker=null;let e=Error(`Color/alpha splitter closed.`);for(let t of this.pendingRequests.values())t.reject(e);this.pendingRequests.clear()}};const pp=()=>{let e=null,t=Promise.resolve();self.addEventListener(`message`,e=>{let{id:r,sourceFrame:i}=e.data;t=t.then(async()=>{try{let{colorFrame:e,alphaFrame:t}=await n(i);self.postMessage({id:r,colorFrame:e,alphaFrame:t},{transfer:[e,t]})}catch(e){self.postMessage({id:r,error:e.message})}finally{i.close()}})});let n=async t=>{let n=t.format;if(!n)throw Error(`CPU color/alpha splitting requires a known VideoFrame format.`);let a=t.allocationSize();if((!e||e.byteLength!==a)&&(e=new Uint8Array(a)),await t.copyTo(e),n===`RGBA`||n===`BGRA`)return r(e,n,t);if(n===`I420A`||n===`I420AP10`||n===`I420AP12`||n===`I422A`||n===`I422AP10`||n===`I422AP12`||n===`I444A`||n===`I444AP10`||n===`I444AP12`)return i(e,n,t);throw Error(`CPU color/alpha splitting does not support format '${n}'.`)},r=(e,t,n)=>{let r=n.visibleRect?.width??n.codedWidth,i=n.visibleRect?.height??n.codedHeight,a=r*i,o=a+Math.ceil(r/2)*Math.ceil(i/2)*2,s=new Uint8Array(o);for(let t=0,n=3;t<a;t++,n+=4)s[t]=e[n];s.fill(128,a);let c=new VideoFrame(e,{format:t===`RGBA`?`RGBX`:`BGRX`,codedWidth:r,codedHeight:i,timestamp:n.timestamp,duration:n.duration??void 0}),l={format:`I420`,codedWidth:r,codedHeight:i,timestamp:n.timestamp,duration:n.duration??void 0,transfer:[s.buffer]};return{colorFrame:c,alphaFrame:new VideoFrame(s,l)}},i=(e,t,n)=>{let r=n.visibleRect?.width??n.codedWidth,i=n.visibleRect?.height??n.codedHeight,a=t.includes(`P10`),o=t.includes(`P12`),s=a||o?2:1,c,l;t.startsWith(`I420`)?(c=Math.ceil(r/2),l=Math.ceil(i/2)):t.startsWith(`I422`)?(c=Math.ceil(r/2),l=i):(c=r,l=i);let u=r*i,d=c*l,f=u*s,p=d*s,m=u*s,h=f+p*2,g=t.replace(`A`,``),_=Math.ceil(r/2)*Math.ceil(i/2),v=m+_*s*2,y=new Uint8Array(v),b=h;y.set(e.subarray(b,b+m),0);let x=m,S=a?512:o?2048:128;s===1?y.fill(S,x):new Uint16Array(y.buffer,x,2*_).fill(S);let C=a?`I420P10`:o?`I420P12`:`I420`,ee=new VideoFrame(e.subarray(0,h),{format:g,codedWidth:r,codedHeight:i,timestamp:n.timestamp,duration:n.duration??void 0}),te={format:C,codedWidth:r,codedHeight:i,timestamp:n.timestamp,duration:n.duration??void 0,transfer:[y.buffer]};return{colorFrame:ee,alphaFrame:new VideoFrame(y,te)}}};var mp=class extends sp{constructor(e){Nc(e),super(e.codec),this._encoder=new up(this,e)}add(e,t){if(!(e instanceof rc))throw TypeError(`videoSample must be a VideoSample.`);return this._encoder.add(e,!1,t)}_flushAndClose(e){return this._encoder.flushAndClose(e)}},hp=class extends sp{constructor(e,t){if(!(typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement)&&!(typeof OffscreenCanvas<`u`&&e instanceof OffscreenCanvas))throw TypeError(`canvas must be an HTMLCanvasElement or OffscreenCanvas.`);Nc(t),super(t.codec),this._encoder=new up(this,t),this._canvas=e}add(e,t=0,n){if(!Number.isFinite(e))throw TypeError(`timestamp must be a finite number.`);if(!Number.isFinite(t)||t<0)throw TypeError(`duration must be a non-negative number.`);let r=new rc(this._canvas,{timestamp:e,duration:t});return this._encoder.add(r,!0,n)}_flushAndClose(e){return this._encoder.flushAndClose(e)}},gp=class extends sp{get errorPromise(){return this._errorPromiseAccessed=!0,this._promiseWithResolvers.promise}get paused(){return this._paused}constructor(e,t,n={}){if(!(e instanceof MediaStreamTrack)||e.kind!==`video`)throw TypeError(`track must be a video MediaStreamTrack.`);if(Nc(t),typeof n!=`object`||!n)throw TypeError(`options must be an object.`);if(n.frameRate!=null&&(typeof n.frameRate!=`number`||n.frameRate<=0))throw TypeError(`options.frameRate, when provided, must be either a positive number or null.`);if(n.timestampBase!==void 0&&n.timestampBase!==`synced-zero`&&n.timestampBase!==`zero`&&n.timestampBase!==`unix`)throw TypeError(`options.timestampBase, when provided, must be one of 'synced-zero', 'zero', or 'unix'.`);t={...t,latencyMode:`realtime`},super(t.codec),this._abortController=null,this._workerTrackId=null,this._workerListener=null,this._promiseWithResolvers=D(),this._errorPromiseAccessed=!1,this._paused=!1,this._lastVideoFrame=null,this._timerHandle=null,this._videoElement=null,this._options=n,this._encoder=new up(this,t),this._track=e}async _start(){this._errorPromiseAccessed||A._warn("Make sure not to ignore the `errorPromise` field on MediaStreamVideoTrackSource, so that any internal errors get bubbled up properly.");let e=this._options.frameRate===void 0?this._track.getSettings().frameRate??null:this._options.frameRate;this._abortController=new AbortController;let t=null,r=null,i=0,a=!1,o=null,s=0,c=()=>{if(n(e!==null),!this._lastVideoFrame)return;n(r!==null),n(t!==null);let a=performance.now();for(;a-r>1e3/e;){r+=1e3/e;let n=t+i/e,o=new VideoFrame(this._videoElement??this._lastVideoFrame,{timestamp:1e6*n,duration:1e6/e});u(o,a)}};e!==null&&(this._timerHandle=Et(c,4));let l=t=>{if(e===null)u(t);else{let e=performance.now();this._lastVideoFrame?(c(),this._lastVideoFrame?.close(),this._lastVideoFrame=t):(u(t.clone(),e),r=e,this._lastVideoFrame=t)}},u=(e,n=performance.now())=>{if(a){e.close();return}i++;let r=e.timestamp/1e6;if(this._paused){if(t!==null){if(o!==null&&this._options.timestampBase!==`unix`){let e=r-o;s-=e}o=r}e.close();return}if(t===null){t=r;let e,i=this._options.timestampBase??`synced-zero`;if(i===`unix`)e=Date.now()/1e3;else if(i===`zero`)e=0;else{let t=this._connectedTrack.output;t._firstMediaStreamTimestamp===null?(t._firstMediaStreamTimestamp=n/1e3,e=0):e=n/1e3-t._firstMediaStreamTimestamp}s=e-t}if(o=r,this._encoder.getQueueSize()>=8){e.close();return}let c=new rc(e,{timestamp:r+s});this._encoder.add(c,!0).catch(e=>{a=!0,this._abortController?.abort(),this._promiseWithResolvers.reject(e),this._workerTrackId!==null&&kp({type:`stopTrack`,trackId:this._workerTrackId})})};if(typeof MediaStreamTrackProcessor<`u`){let e=new MediaStreamTrackProcessor({track:this._track}),t=new WritableStream({write:l});e.readable.pipeTo(t,{signal:this._abortController.signal}).catch(e=>{e instanceof DOMException&&e.name===`AbortError`||this._promiseWithResolvers.reject(e)})}else if(await Op())this._workerTrackId=wp++,kp({type:`videoTrack`,trackId:this._workerTrackId,track:this._track}),this._workerListener=e=>{let t=e.data;t.type===`videoFrame`&&t.trackId===this._workerTrackId?l(t.videoFrame):t.type===`error`&&t.trackId===this._workerTrackId&&this._promiseWithResolvers.reject(t.error)},Tp.addEventListener(`message`,this._workerListener);else if(e!==null){let e=document.createElement(`video`);e.style.position=`fixed`,e.style.left=`-10000px`,e.style.top=`-10000px`,e.style.width=`1px`,e.style.height=`1px`,e.style.opacity=`0`,e.style.pointerEvents=`none`,e.muted=!0,e.srcObject=new MediaStream([this._track]),document.body.appendChild(e),this._videoElement=e,e.addEventListener(`loadeddata`,()=>{if(a||!this._videoElement)return;let t=new VideoFrame(e,{timestamp:1e3*performance.now()});l(t),t.close()},{once:!0}),e.play().catch(e=>{a=!0,this._promiseWithResolvers.reject(e)})}else throw Error(`When no explicit frame rate is set, MediaStreamTrackProcessor is required; but it's not available in this environment.`)}pause(){this._paused=!0}resume(){this._paused=!1}async _flushAndClose(e){try{this._abortController&&=(this._abortController.abort(),null),this._timerHandle&&Dt(this._timerHandle),this._lastVideoFrame?.close(),this._videoElement&&=(this._videoElement.srcObject=null,this._videoElement.remove(),null),this._workerTrackId!==null&&(n(this._workerListener),kp({type:`stopTrack`,trackId:this._workerTrackId}),await new Promise(e=>{let t=r=>{let i=r.data;i.type===`trackStopped`&&i.trackId===this._workerTrackId&&(n(this._workerListener),Tp.removeEventListener(`message`,this._workerListener),Tp.removeEventListener(`message`,t),e())};Tp.addEventListener(`message`,t)}))}finally{await this._encoder.flushAndClose(e)}}},_p=class extends op{constructor(e){if(super(),!F.includes(e))throw TypeError(`Invalid audio codec '${e}'. Must be one of: ${F.join(`, `)}.`);this._codec=e}},vp=class extends _p{constructor(e){super(e)}add(e,t){if(!(e instanceof I))throw TypeError(`packet must be an EncodedPacket.`);if(e.isMetadataOnly)throw TypeError(`Metadata-only packets cannot be added.`);if(t!==void 0&&(!t||typeof t!=`object`))throw TypeError(`meta, when provided, must be an object.`);return this._ensureValidAdd(),this._connectedTrack.output._muxer.addEncodedAudioPacket(this._connectedTrack,e,t)}},yp=class{setError(e){this.errorSet||=(this.error=e,!0)}constructor(e,t){this.source=e,this.encodingConfig=t,this.ensureEncoderPromise=null,this.encoderInitialized=!1,this.encoder=null,this.muxer=null,this.lastNumberOfChannels=null,this.lastSampleRate=null,this.isPcmEncoder=!1,this.outputSampleSize=null,this.writeOutputValue=null,this.customEncoder=null,this.customEncoderCallSerializer=new Ye,this.customEncoderQueueSize=0,this.lastEndSampleIndex=null,this.resampler=null,this.error=null,this.errorSet=!1,this.lastMuxerPromise=Promise.resolve(),this.closed=!1}async add(e,t){try{if(this.checkForEncoderError(),this.source._ensureValidAdd(),this.lastNumberOfChannels!==null&&this.lastSampleRate!==null){if(e.numberOfChannels!==this.lastNumberOfChannels||e.sampleRate!==this.lastSampleRate)throw Error(`Audio parameters must remain constant. Expected ${this.lastNumberOfChannels} channels at ${this.lastSampleRate} Hz, got ${e.numberOfChannels} channels at ${e.sampleRate} Hz.`)}else this.lastNumberOfChannels=e.numberOfChannels,this.lastSampleRate=e.sampleRate;let n=this.encodingConfig;n.transform?.numberOfChannels!==void 0||n.transform?.sampleRate!==void 0?(this.resampler||=new rp({targetNumberOfChannels:n.transform.numberOfChannels??e.numberOfChannels,targetSampleRate:n.transform.sampleRate??e.sampleRate,onSample:async e=>{await this.processAndEncode(e,!0)}}),await this.resampler.add(e)):await this.processAndEncode(e,t)}finally{t&&e.close()}}async processAndEncode(e,t){let n=this.encodingConfig;if(n.transform?.sampleFormat!==void 0&&Oc(e.format)!==n.transform.sampleFormat){let r=Ac(e,n.transform.sampleFormat);t&&e.close(),e=r,t=!0}if(n.transform?.process)try{let t=n.transform.process(e);if(k(t)&&(t=await t),t===null)return;Array.isArray(t)||(t=[t]);try{for(let e of t)if(!(e instanceof Sc))throw TypeError(`The audio process function must return an AudioSample, null, or an array of AudioSamples.`);for(let e of t)await this.encodeSample(e,!0)}finally{for(let e of t)e instanceof Sc&&e.close()}}finally{t&&e.close()}else await this.encodeSample(e,t)}async encodeSample(e,t){try{if(this.encoderInitialized||(this.ensureEncoderPromise||this.ensureEncoder(e),this.encoderInitialized||await this.ensureEncoderPromise),n(this.encoderInitialized),this.closed)return;{let t=Math.round(e.timestamp*e.sampleRate),n=Math.round((e.timestamp+e.duration)*e.sampleRate);if(this.lastEndSampleIndex===null)this.lastEndSampleIndex=n;else{let n=t-this.lastEndSampleIndex;if(n>=64){let t=new Sc({data:new Float32Array(n*e.numberOfChannels),format:`f32-planar`,sampleRate:e.sampleRate,numberOfChannels:e.numberOfChannels,numberOfFrames:n,timestamp:this.lastEndSampleIndex/e.sampleRate});await this.encodeSample(t,!0)}this.lastEndSampleIndex+=e.numberOfFrames}}if(this.encodingConfig.onEncodedSample?.(e),this.customEncoder){this.customEncoderQueueSize++;let t=e.clone(),n=this.customEncoderCallSerializer.call(()=>this.customEncoder.encode(t)).catch(e=>this.setError(e)).finally(()=>{this.customEncoderQueueSize--,t.close()});this.customEncoderQueueSize>=4&&await n,await this.lastMuxerPromise}else if(this.isPcmEncoder)await this.doPcmEncoding(e,t);else{n(this.encoder);let r=e.toAudioData();this.encoder.encode(r),r.close(),t&&e.close(),this.encoder.encodeQueueSize>=4&&await new Promise(e=>this.encoder.addEventListener(`dequeue`,e,{once:!0})),await this.lastMuxerPromise}}finally{t&&e.close()}}async doPcmEncoding(e,t){n(this.outputSampleSize),n(this.writeOutputValue);let{numberOfChannels:r,numberOfFrames:i,sampleRate:a,timestamp:o}=e,s=2048,c=[];for(let t=0;t<i;t+=s){let n=Math.min(s,e.numberOfFrames-t),i=n*r*this.outputSampleSize,a=new ArrayBuffer(i),o=new DataView(a);c.push({frameCount:n,view:o})}let l=e.format===`s32`||e.format===`s32-planar`,u=l?`s32-planar`:`f32-planar`,d=l?1/2147483648:1,f=e.allocationSize({planeIndex:0,format:u}),p=l?new Int32Array(f/4):new Float32Array(f/4);for(let t=0;t<r;t++){e.copyTo(p,{planeIndex:t,format:u});for(let e=0;e<c.length;e++){let{frameCount:n,view:i}=c[e];for(let a=0;a<n;a++)this.writeOutputValue(i,(a*r+t)*this.outputSampleSize,p[e*s+a]*d)}}t&&e.close();let m={decoderConfig:{codec:this.encodingConfig.codec,numberOfChannels:r,sampleRate:a}};for(let e=0;e<c.length;e++){let{frameCount:t,view:n}=c[e],r=n.buffer,i=e*s,l=new I(new Uint8Array(r),`key`,o+i/a,t/a);this.encodingConfig.onEncodedPacket?.(l,m),await this.muxer.addEncodedAudioPacket(this.source._connectedTrack,l,m)}}ensureEncoder(e){this.ensureEncoderPromise=(async()=>{let{numberOfChannels:t,sampleRate:r}=e,i=Qc(this.encodingConfig.quality,this.encodingConfig.bitrate),a=Rc({numberOfChannels:t,sampleRate:r,...this.encodingConfig,quality:i});this.encodingConfig.onEncoderConfig?.(a),this.source._nominalBitrate=a.bitrate??null;let o=ml.find(e=>e.supports(this.encodingConfig.codec,a));if(o)this.customEncoder=new o,this.customEncoder.codec=this.encodingConfig.codec,this.customEncoder.config=a,this.customEncoder.onPacket=(e,t)=>{if(!(e instanceof I))throw TypeError(`The first argument passed to onPacket must be an EncodedPacket.`);if(t!==void 0&&(!t||typeof t!=`object`))throw TypeError(`The second argument passed to onPacket must be an object or undefined.`);this.encodingConfig.onEncodedPacket?.(e,t),this.lastMuxerPromise=this.muxer.addEncodedAudioPacket(this.source._connectedTrack,e,t).catch(e=>{this.setError(e)})},this.customEncoder.onError=e=>{this.setError(e)},await this.customEncoder.init();else if(P.includes(this.encodingConfig.codec))this.initPcmEncoder();else{if(typeof AudioEncoder>`u`)throw Error(nt(`AudioEncoder`));let e;try{e=(await AudioEncoder.isConfigSupported(a)).supported??!1}catch{e=!1}if(!e)throw Error(`This specific encoder configuration (${a.codec}, ${a.bitrate} bps, ${a.numberOfChannels} channels, ${a.sampleRate} Hz) is not supported in this environment. Consider using another codec or changing your audio parameters.`);let t=Error(`Encoding error`).stack;this.encoder=new AudioEncoder({output:(e,t)=>{if(this.encodingConfig.codec===`aac`&&t?.decoderConfig){let e=!1;if(e=!t.decoderConfig.description||t.decoderConfig.description.byteLength<2||Ut(S(t.decoderConfig.description)).objectType===0,e){let e=Number(h(a.codec.split(`.`)));t.decoderConfig.description=Kt({objectType:e,outputNumberOfChannels:t.decoderConfig.numberOfChannels,outputSampleRate:t.decoderConfig.sampleRate})}}let n=I.fromEncodedChunk(e);n=n.clone({timestamp:Le(n.timestamp,a.sampleRate),duration:e.duration==null?void 0:Le(n.duration,a.sampleRate)}),this.encodingConfig.onEncodedPacket?.(n,t),this.lastMuxerPromise=this.muxer.addEncodedAudioPacket(this.source._connectedTrack,n,t).catch(e=>{this.setError(e)})},error:e=>{e.stack=t,this.setError(e)}}),this.encoder.configure(a)}n(this.source._connectedTrack),this.muxer=this.source._connectedTrack.output._muxer,this.encoderInitialized=!0})()}initPcmEncoder(){this.isPcmEncoder=!0;let e=this.encodingConfig.codec,{dataType:t,sampleSize:r,littleEndian:i}=Br(e);switch(this.outputSampleSize=r,r){case 1:t===`unsigned`?this.writeOutputValue=(e,t,n)=>e.setUint8(t,O(Math.round(n*128)+128,0,255)):t===`signed`?this.writeOutputValue=(e,t,n)=>{e.setInt8(t,O(Math.round(n*128),-128,127))}:t===`ulaw`?this.writeOutputValue=(e,t,n)=>{let r=O(Math.round(n*32768),-32768,32767);e.setUint8(t,_l(r))}:t===`alaw`?this.writeOutputValue=(e,t,n)=>{let r=O(Math.round(n*32768),-32768,32767);e.setUint8(t,yl(r))}:n(!1);break;case 2:t===`unsigned`?this.writeOutputValue=(e,t,n)=>e.setUint16(t,O(Math.round(n*32768)+32768,0,65535),i):t===`signed`?this.writeOutputValue=(e,t,n)=>e.setInt16(t,O(Math.round(n*32768),-32768,32767),i):n(!1);break;case 3:t===`unsigned`?this.writeOutputValue=(e,t,n)=>ke(e,t,O(Math.round(n*8388608)+8388608,0,16777215),i):t===`signed`?this.writeOutputValue=(e,t,n)=>Ae(e,t,O(Math.round(n*8388608),-8388608,8388607),i):n(!1);break;case 4:t===`unsigned`?this.writeOutputValue=(e,t,n)=>e.setUint32(t,O(Math.round(n*2147483648)+2147483648,0,4294967295),i):t===`signed`?this.writeOutputValue=(e,t,n)=>e.setInt32(t,O(Math.round(n*2147483648),-2147483648,2147483647),i):t===`float`?this.writeOutputValue=(e,t,n)=>e.setFloat32(t,n,i):n(!1);break;case 8:t===`float`?this.writeOutputValue=(e,t,n)=>e.setFloat64(t,n,i):n(!1);break;default:Ee(r),n(!1)}}async flushAndClose(e){try{e||(this.checkForEncoderError(),this.resampler&&await this.resampler.finalize()),this.closed=!0,e||(this.customEncoder?this.customEncoderCallSerializer.call(()=>this.customEncoder.flush()):this.encoder&&await this.encoder.flush())}finally{this.closed=!0,this.resampler=null,this.customEncoder?await this.customEncoderCallSerializer.call(()=>this.customEncoder.close()).catch(e=>this.setError(e)):this.encoder&&this.encoder.state!==`closed`&&this.encoder.close()}e||this.checkForEncoderError()}getQueueSize(){return this.customEncoder?this.customEncoderQueueSize:this.isPcmEncoder?0:this.encoder?.encodeQueueSize??0}checkForEncoderError(){if(this.errorSet)throw this.error}},bp=class extends _p{constructor(e){Ic(e),super(e.codec),this._encoder=new yp(this,e)}add(e){if(!(e instanceof Sc))throw TypeError(`audioSample must be an AudioSample.`);return this._encoder.add(e,!1)}_flushAndClose(e){return this._encoder.flushAndClose(e)}},xp=class extends _p{constructor(e,t={}){if(Ic(e),typeof t!=`object`||!t)throw TypeError(`options must be an object.`);if(t.startTimestamp!==void 0&&!Number.isFinite(t.startTimestamp))throw TypeError(`options.startTimestamp, when provided, must be a finite number.`);super(e.codec),this._encoder=new yp(this,e),this._accumulatedTime=t.startTimestamp??0}async add(e){if(!(e instanceof AudioBuffer))throw TypeError(`audioBuffer must be an AudioBuffer.`);let t=Sc._fromAudioBuffer(e,this._accumulatedTime);this._accumulatedTime+=e.duration;for(let e of t)await this._encoder.add(e,!0)}_flushAndClose(e){return this._encoder.flushAndClose(e)}},Sp=class extends _p{get errorPromise(){return this._errorPromiseAccessed=!0,this._promiseWithResolvers.promise}get paused(){return this._paused}constructor(e,t,n={}){if(!(e instanceof MediaStreamTrack)||e.kind!==`audio`)throw TypeError(`track must be an audio MediaStreamTrack.`);if(Ic(t),typeof n!=`object`||!n)throw TypeError(`options must be an object.`);if(n.timestampBase!==void 0&&n.timestampBase!==`synced-zero`&&n.timestampBase!==`zero`&&n.timestampBase!==`unix`)throw TypeError(`options.timestampBase, when provided, must be one of 'synced-zero', 'zero', or 'unix'.`);super(t.codec),this._abortController=null,this._audioContext=null,this._scriptProcessorNode=null,this._promiseWithResolvers=D(),this._errorPromiseAccessed=!1,this._paused=!1,this._options=n,this._encoder=new yp(this,t),this._track=e}async _start(){this._errorPromiseAccessed||A._warn("Make sure not to ignore the `errorPromise` field on MediaStreamAudioTrackSource, so that any internal errors get bubbled up properly."),this._abortController=new AbortController;let e=null,t=!1,n=null,r=0,i=i=>{if(t){i.close();return}let a=i.timestamp;if(this._paused){if(e!==null){if(n!==null&&this._options.timestampBase!==`unix`){let e=a-n;r-=e}n=a}i.close();return}if(e===null){e=i.timestamp;let t,n=this._options.timestampBase??`synced-zero`;if(n===`unix`)t=Date.now()/1e3;else if(n===`zero`)t=0;else{let e=this._connectedTrack.output;e._firstMediaStreamTimestamp===null?(e._firstMediaStreamTimestamp=performance.now()/1e3,t=0):t=performance.now()/1e3-e._firstMediaStreamTimestamp}r=t-e}if(n=a,this._encoder.getQueueSize()>=8){i.close();return}i.setTimestamp(a+r),this._encoder.add(i,!0).catch(e=>{t=!0,this._abortController?.abort(),this._promiseWithResolvers.reject(e),this._audioContext?.suspend()})};if(typeof MediaStreamTrackProcessor<`u`){let e=new MediaStreamTrackProcessor({track:this._track}),t=new WritableStream({write:e=>i(new Sc(e))});e.readable.pipeTo(t,{signal:this._abortController.signal}).catch(e=>{e instanceof DOMException&&e.name===`AbortError`||this._promiseWithResolvers.reject(e)})}else{let e=window.AudioContext||window.webkitAudioContext;this._audioContext=new e({sampleRate:this._track.getSettings().sampleRate});let t=this._audioContext.createMediaStreamSource(new MediaStream([this._track]));this._scriptProcessorNode=this._audioContext.createScriptProcessor(4096),this._audioContext.state===`suspended`&&await this._audioContext.resume(),t.connect(this._scriptProcessorNode),this._scriptProcessorNode.connect(this._audioContext.destination);let n=0;this._scriptProcessorNode.onaudioprocess=e=>{let t=Sc._fromAudioBuffer(e.inputBuffer,n);n+=e.inputBuffer.duration;for(let e of t)i(e)}}}pause(){this._paused=!0}resume(){this._paused=!1}async _flushAndClose(e){try{this._abortController&&=(this._abortController.abort(),null),this._audioContext&&(n(this._scriptProcessorNode),this._scriptProcessorNode.disconnect(),await this._audioContext.suspend())}finally{await this._encoder.flushAndClose(e)}}};const Cp=()=>{let e=(e,t)=>{t?self.postMessage(e,{transfer:t}):self.postMessage(e)};e({type:`support`,supported:typeof MediaStreamTrackProcessor<`u`});let t=new Map,n=new Map;self.addEventListener(`message`,r=>{let i=r.data;switch(i.type){case`videoTrack`:{n.set(i.trackId,i.track);let r=new MediaStreamTrackProcessor({track:i.track}),a=new WritableStream({write:t=>{if(!n.has(i.trackId)){t.close();return}e({type:`videoFrame`,trackId:i.trackId,videoFrame:t},[t])}}),o=new AbortController;t.set(i.trackId,o),r.readable.pipeTo(a,{signal:o.signal}).catch(t=>{t instanceof DOMException&&t.name===`AbortError`||e({type:`error`,trackId:i.trackId,error:t})})}break;case`stopTrack`:{let r=t.get(i.trackId);r&&(r.abort(),t.delete(i.trackId)),n.get(i.trackId)?.stop(),n.delete(i.trackId),e({type:`trackStopped`,trackId:i.trackId})}break;default:Ee(i)}})};let wp=0,Tp=null;const Ep=()=>{let e=new Blob([`(${Cp.toString()})()`],{type:`application/javascript`}),t=URL.createObjectURL(e);Tp=new Worker(t)};let Dp=null;const Op=async()=>Dp===null?(Tp||Ep(),new Promise(e=>{n(Tp);let t=n=>{let r=n.data;r.type===`support`&&(Dp=r.supported,Tp.removeEventListener(`message`,t),e(r.supported))};Tp.addEventListener(`message`,t)})):Dp,kp=(e,t)=>{n(Tp),t?Tp.postMessage(e,t):Tp.postMessage(e)};var Ap=class extends op{constructor(e){if(super(),!Sr.includes(e))throw TypeError(`Invalid subtitle codec '${e}'. Must be one of: ${Sr.join(`, `)}.`);this._codec=e}},jp=class extends Ap{constructor(e){super(e),this._error=null,this._errorSet=!1,this._lastMuxerPromise=Promise.resolve(),this._parser=new Pu({codec:e,output:(e,t)=>{this._lastMuxerPromise=this._connectedTrack.output._muxer.addSubtitleCue(this._connectedTrack,e,t).catch(e=>{this._setError(e)})}})}add(e){if(typeof e!=`string`)throw TypeError(`text must be a string.`);return this._checkForError(),this._ensureValidAdd(),this._parser.parse(e),this._lastMuxerPromise}_setError(e){this._errorSet||=(this._error=e,!0)}_checkForError(){if(this._errorSet)throw this._error}async _flushAndClose(e){e||this._checkForError()}},Mp=class extends Du{constructor(e,t){
513
513
  /*!
514
514
  * Copyright (c) 2026-present, Vanilagy and contributors
515
515
  *