@openclaw/whatsapp 2026.10.2 → 2026.10.5-beta.2

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 (212) hide show
  1. package/dist/.setup/{action-runtime-CE3zGstN.mjs → action-runtime-DUSkWTiZ.mjs} +2 -2
  2. package/dist/.setup/{agent-tools-login-B7VEvJO7.mjs → agent-tools-login-CB7OQbli.mjs} +5 -15
  3. package/dist/.setup/{approval-handler.runtime-CKposl6w.mjs → approval-handler.runtime-BEaAKSoU.mjs} +3 -3
  4. package/dist/.setup/{approval-reactions-CD6CDF9k.mjs → approval-reactions-CWkZ_ham.mjs} +7 -16
  5. package/dist/.setup/audio-preflight.runtime-Dg8oZgre.mjs +2 -0
  6. package/dist/.setup/{auth-store-D2rN-hP5.mjs → auth-store-DOBi5BPe.mjs} +10 -11
  7. package/dist/.setup/{channel-DNgKHMCz.mjs → channel-DcHw3Up2.mjs} +136 -135
  8. package/dist/.setup/{channel-react-action-BaBV9X6M.mjs → channel-react-action-C5E8_iDk.mjs} +3 -3
  9. package/dist/.setup/{channel.runtime-BniF8Swm.mjs → channel.runtime-DTj-wkEP.mjs} +5 -11
  10. package/dist/.setup/channel.setup-BJWEyQlF.mjs +5 -0
  11. package/dist/.setup/{connection-controller-COkcq48K.mjs → connection-controller-CejM7bhn.mjs} +50 -84
  12. package/dist/.setup/{directory-config-RYQomHyB.mjs → directory-config-DPLTUAqy.mjs} +22 -29
  13. package/dist/.setup/{group-session-key-BV8Le9r8.mjs → group-session-key-BbTPosdy.mjs} +12 -18
  14. package/dist/.setup/{login-CV_4V021.mjs → login-DUx5JYuW.mjs} +3 -3
  15. package/dist/.setup/{login-qr-DFhGc5yH.mjs → login-qr-BAWbPonj.mjs} +24 -45
  16. package/dist/.setup/{monitor-B5DS4PDV.mjs → monitor-CmXEQad9.mjs} +218 -367
  17. package/dist/.setup/{normalize-target-BGra1ZnM.mjs → normalize-target-D67Kc3g6.mjs} +5 -8
  18. package/dist/.setup/{question-reactions-LMeijbaq.mjs → question-reactions-DywNaX8m.mjs} +3 -10
  19. package/dist/.setup/reaction-target-CSPO7gtu.mjs +11 -0
  20. package/dist/.setup/{resolve-outbound-target-CzyNKmrl.mjs → resolve-outbound-target-qikGL4r0.mjs} +3 -4
  21. package/dist/.setup/{send-CGUsUdoX.mjs → send-CLBfAzd6.mjs} +34 -42
  22. package/dist/.setup/{send-api-B03VDwZ1.mjs → send-api-COzRvqXx.mjs} +28 -60
  23. package/dist/.setup/{setup-finalize-GtBmrO8p.mjs → setup-finalize-DSiP_-wa.mjs} +53 -69
  24. package/dist/.setup/setup-plugin-api-8WdNCjRW.mjs +3 -0
  25. package/dist/.setup/{setup-surface-BuA39k6K.mjs → setup-surface-C_flQyHy.mjs} +2 -2
  26. package/dist/.setup/{shared-CP_zs2U7.mjs → shared-SqcOkt51.mjs} +4 -4
  27. package/dist/.setup/{socket-close-DU7eerAa.mjs → socket-close-C9OU9mVN.mjs} +67 -86
  28. package/dist/.setup/{targets-runtime-Dls-Xh4F.mjs → targets-runtime-D5ryyPxh.mjs} +16 -25
  29. package/dist/action-runtime-api.js +1 -1
  30. package/dist/action-runtime.runtime.js +1 -1
  31. package/dist/agent-tools-api.js +4 -8
  32. package/dist/api.js +13 -15
  33. package/dist/channel-plugin-api.js +1 -1
  34. package/dist/contract-api.js +1 -1
  35. package/dist/directory-contract-api.js +1 -1
  36. package/dist/doctor-contract-api.js +12 -32
  37. package/dist/light-runtime-api.js +2 -2
  38. package/dist/login-qr-runtime.js +2 -4
  39. package/dist/runtime-api.js +8 -8
  40. package/dist/setup-entry.js +1 -1
  41. package/dist/setup-plugin-api.js +1 -1
  42. package/node_modules/audio-decode/node_modules/@audio/decode/package.json +7 -7
  43. package/node_modules/audio-decode/node_modules/@audio/decode/readme.md +2 -1
  44. package/node_modules/audio-decode/node_modules/@audio/decode-aac/README.md +10 -0
  45. package/node_modules/audio-decode/node_modules/@audio/decode-aac/decode-aac.d.ts +22 -0
  46. package/node_modules/audio-decode/node_modules/@audio/decode-aac/decode-aac.js +142 -7
  47. package/node_modules/audio-decode/node_modules/@audio/decode-aac/package.json +1 -1
  48. package/node_modules/audio-decode/node_modules/@audio/decode-caf/README.md +2 -0
  49. package/node_modules/audio-decode/node_modules/@audio/decode-caf/decode-caf.js +4 -1
  50. package/node_modules/audio-decode/node_modules/@audio/decode-caf/package.json +1 -1
  51. package/node_modules/audio-decode/node_modules/@audio/decode-flac/decode-flac.js +161 -29
  52. package/node_modules/audio-decode/node_modules/@audio/decode-flac/package.json +1 -1
  53. package/node_modules/audio-decode/node_modules/@audio/decode-mp4/README.md +1 -1
  54. package/node_modules/audio-decode/node_modules/@audio/decode-mp4/decode-mp4.js +127 -28
  55. package/node_modules/audio-decode/node_modules/@audio/decode-mp4/package.json +3 -3
  56. package/node_modules/audio-decode/node_modules/@audio/decode-opus/package.json +1 -1
  57. package/node_modules/audio-decode/node_modules/@audio/decode-opus/src/decode-opus.js +2 -2
  58. package/node_modules/audio-decode/node_modules/@audio/decode-qoa/README.md +1 -1
  59. package/node_modules/audio-decode/node_modules/@audio/decode-qoa/decode-qoa.js +79 -227
  60. package/node_modules/audio-decode/node_modules/@audio/decode-qoa/package.json +1 -1
  61. package/node_modules/audio-decode/node_modules/@audio/decode-vorbis/decode-vorbis.js +51 -10
  62. package/node_modules/audio-decode/node_modules/@audio/decode-vorbis/package.json +1 -1
  63. package/node_modules/audio-decode/node_modules/@audio/decode-wav/decode-wav.js +40 -18
  64. package/node_modules/audio-decode/node_modules/@audio/decode-wav/package.json +1 -1
  65. package/node_modules/audio-decode/node_modules/@audio/decode-wma/LICENSE.ffmpeg +502 -0
  66. package/node_modules/audio-decode/node_modules/@audio/decode-wma/README.md +5 -5
  67. package/node_modules/audio-decode/node_modules/@audio/decode-wma/decode-wma.js +15 -3
  68. package/node_modules/audio-decode/node_modules/@audio/decode-wma/package.json +5 -4
  69. package/node_modules/audio-decode/node_modules/@audio/decode-wma/src/wma.wasm.js +0 -0
  70. package/node_modules/audio-decode/node_modules/audio-type/audio-type.js +13 -0
  71. package/node_modules/audio-decode/node_modules/audio-type/package.json +1 -1
  72. package/node_modules/audio-decode/node_modules/audio-type/readme.md +1 -1
  73. package/node_modules/baileys/lib/Utils/messages-media.js +7 -11
  74. package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/react-native/diagnostics-channel-react-native.d.ts.map +1 -0
  75. package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/react-native/diagnostics-channel-react-native.js.map +1 -0
  76. package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/react-native/diagnostics-channel.d.ts +5 -0
  77. package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/react-native/diagnostics-channel.js +7 -0
  78. package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/react-native/index.d.ts +1400 -0
  79. package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/react-native/index.d.ts.map +1 -0
  80. package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/react-native/index.js +1733 -0
  81. package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/react-native/index.js.map +1 -0
  82. package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/react-native/perf.d.ts +12 -0
  83. package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/react-native/perf.d.ts.map +1 -0
  84. package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/react-native/perf.js +10 -0
  85. package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/react-native/perf.js.map +1 -0
  86. package/node_modules/baileys/node_modules/lru-cache/dist/esm/react-native/diagnostics-channel-react-native.d.ts.map +1 -0
  87. package/node_modules/baileys/node_modules/lru-cache/dist/esm/react-native/diagnostics-channel-react-native.js.map +1 -0
  88. package/node_modules/baileys/node_modules/lru-cache/dist/esm/react-native/diagnostics-channel.d.ts +5 -0
  89. package/node_modules/baileys/node_modules/lru-cache/dist/esm/react-native/diagnostics-channel.js +4 -0
  90. package/node_modules/baileys/node_modules/lru-cache/dist/esm/react-native/index.d.ts +1400 -0
  91. package/node_modules/baileys/node_modules/lru-cache/dist/esm/react-native/index.d.ts.map +1 -0
  92. package/node_modules/baileys/node_modules/lru-cache/dist/esm/react-native/index.js +1729 -0
  93. package/node_modules/baileys/node_modules/lru-cache/dist/esm/react-native/index.js.map +1 -0
  94. package/node_modules/baileys/node_modules/lru-cache/dist/esm/react-native/perf.d.ts +12 -0
  95. package/node_modules/baileys/node_modules/lru-cache/dist/esm/react-native/perf.d.ts.map +1 -0
  96. package/node_modules/baileys/node_modules/lru-cache/dist/esm/react-native/perf.js +7 -0
  97. package/node_modules/baileys/node_modules/lru-cache/dist/esm/react-native/perf.js.map +1 -0
  98. package/node_modules/baileys/node_modules/lru-cache/package.json +27 -1
  99. package/node_modules/baileys/node_modules/music-metadata/README.md +35 -32
  100. package/node_modules/baileys/node_modules/music-metadata/lib/ParserFactory.d.ts +1 -1
  101. package/node_modules/baileys/node_modules/music-metadata/lib/ParserFactory.js +17 -13
  102. package/node_modules/baileys/node_modules/music-metadata/lib/aiff/AiffParser.js +19 -12
  103. package/node_modules/baileys/node_modules/music-metadata/lib/aiff/AiffToken.d.ts +1 -1
  104. package/node_modules/baileys/node_modules/music-metadata/lib/aiff/AiffToken.js +2 -1
  105. package/node_modules/baileys/node_modules/music-metadata/lib/apev2/APEv2Parser.d.ts +4 -3
  106. package/node_modules/baileys/node_modules/music-metadata/lib/apev2/APEv2Parser.js +59 -16
  107. package/node_modules/baileys/node_modules/music-metadata/lib/apev2/APEv2TagMapper.js +1 -0
  108. package/node_modules/baileys/node_modules/music-metadata/lib/apev2/APEv2Token.d.ts +1 -1
  109. package/node_modules/baileys/node_modules/music-metadata/lib/apev2/APEv2Token.js +1 -1
  110. package/node_modules/baileys/node_modules/music-metadata/lib/asf/AsfGuid.js +56 -50
  111. package/node_modules/baileys/node_modules/music-metadata/lib/asf/AsfObject.d.ts +1 -1
  112. package/node_modules/baileys/node_modules/music-metadata/lib/asf/AsfObject.js +3 -2
  113. package/node_modules/baileys/node_modules/music-metadata/lib/asf/AsfParser.js +15 -7
  114. package/node_modules/baileys/node_modules/music-metadata/lib/asf/AsfTagMapper.d.ts +3 -2
  115. package/node_modules/baileys/node_modules/music-metadata/lib/asf/AsfTagMapper.js +21 -4
  116. package/node_modules/baileys/node_modules/music-metadata/lib/common/CaseInsensitiveTagMap.d.ts +1 -1
  117. package/node_modules/baileys/node_modules/music-metadata/lib/common/CombinedTagMapper.d.ts +2 -2
  118. package/node_modules/baileys/node_modules/music-metadata/lib/common/CombinedTagMapper.js +6 -6
  119. package/node_modules/baileys/node_modules/music-metadata/lib/common/FourCC.js +3 -2
  120. package/node_modules/baileys/node_modules/music-metadata/lib/common/GenericTagMapper.d.ts +1 -1
  121. package/node_modules/baileys/node_modules/music-metadata/lib/common/GenericTagTypes.js +1 -1
  122. package/node_modules/baileys/node_modules/music-metadata/lib/common/MetadataCollector.d.ts +3 -1
  123. package/node_modules/baileys/node_modules/music-metadata/lib/common/MetadataCollector.js +28 -9
  124. package/node_modules/baileys/node_modules/music-metadata/lib/common/Util.js +25 -17
  125. package/node_modules/baileys/node_modules/music-metadata/lib/core.d.ts +4 -4
  126. package/node_modules/baileys/node_modules/music-metadata/lib/core.js +18 -11
  127. package/node_modules/baileys/node_modules/music-metadata/lib/dsdiff/DsdiffParser.js +29 -16
  128. package/node_modules/baileys/node_modules/music-metadata/lib/dsf/DsfChunk.d.ts +1 -1
  129. package/node_modules/baileys/node_modules/music-metadata/lib/dsf/DsfParser.js +3 -5
  130. package/node_modules/baileys/node_modules/music-metadata/lib/ebml/EbmlIterator.d.ts +1 -1
  131. package/node_modules/baileys/node_modules/music-metadata/lib/ebml/EbmlIterator.js +35 -6
  132. package/node_modules/baileys/node_modules/music-metadata/lib/ebml/types.d.ts +1 -1
  133. package/node_modules/baileys/node_modules/music-metadata/lib/ebml/types.js +1 -1
  134. package/node_modules/baileys/node_modules/music-metadata/lib/flac/FlacParser.d.ts +1 -1
  135. package/node_modules/baileys/node_modules/music-metadata/lib/flac/FlacParser.js +6 -5
  136. package/node_modules/baileys/node_modules/music-metadata/lib/flac/FlacToken.d.ts +1 -1
  137. package/node_modules/baileys/node_modules/music-metadata/lib/flac/FlacToken.js +1 -1
  138. package/node_modules/baileys/node_modules/music-metadata/lib/id3v1/ID3v1Parser.d.ts +1 -1
  139. package/node_modules/baileys/node_modules/music-metadata/lib/id3v1/ID3v1Parser.js +212 -42
  140. package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/AbstractID3Parser.js +5 -5
  141. package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/FrameHeader.d.ts +1 -1
  142. package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/FrameHeader.js +8 -5
  143. package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/FrameParser.d.ts +2 -1
  144. package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/FrameParser.js +54 -23
  145. package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/ID3v22TagMapper.d.ts +1 -1
  146. package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/ID3v22TagMapper.js +1 -1
  147. package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/ID3v24TagMapper.js +3 -3
  148. package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/ID3v2ChapterToken.js +2 -2
  149. package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/ID3v2Parser.d.ts +1 -1
  150. package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/ID3v2Parser.js +32 -16
  151. package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/ID3v2Token.d.ts +2 -2
  152. package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/ID3v2Token.js +2 -3
  153. package/node_modules/baileys/node_modules/music-metadata/lib/index.js +6 -3
  154. package/node_modules/baileys/node_modules/music-metadata/lib/lrc/LyricsParser.js +3 -5
  155. package/node_modules/baileys/node_modules/music-metadata/lib/matroska/MatroskaDtd.js +7 -3
  156. package/node_modules/baileys/node_modules/music-metadata/lib/matroska/MatroskaParser.js +22 -11
  157. package/node_modules/baileys/node_modules/music-metadata/lib/matroska/types.d.ts +2 -2
  158. package/node_modules/baileys/node_modules/music-metadata/lib/mp4/Atom.d.ts +4 -3
  159. package/node_modules/baileys/node_modules/music-metadata/lib/mp4/Atom.js +44 -11
  160. package/node_modules/baileys/node_modules/music-metadata/lib/mp4/AtomToken.d.ts +1 -1
  161. package/node_modules/baileys/node_modules/music-metadata/lib/mp4/AtomToken.js +30 -8
  162. package/node_modules/baileys/node_modules/music-metadata/lib/mp4/MP4Parser.d.ts +2 -0
  163. package/node_modules/baileys/node_modules/music-metadata/lib/mp4/MP4Parser.js +79 -54
  164. package/node_modules/baileys/node_modules/music-metadata/lib/mp4/MP4TagMapper.d.ts +2 -2
  165. package/node_modules/baileys/node_modules/music-metadata/lib/mpeg/MpegLoader.js +1 -1
  166. package/node_modules/baileys/node_modules/music-metadata/lib/mpeg/MpegParser.js +41 -19
  167. package/node_modules/baileys/node_modules/music-metadata/lib/mpeg/ReplayGainDataFormat.d.ts +2 -2
  168. package/node_modules/baileys/node_modules/music-metadata/lib/mpeg/ReplayGainDataFormat.js +1 -1
  169. package/node_modules/baileys/node_modules/music-metadata/lib/mpeg/XingTag.d.ts +1 -1
  170. package/node_modules/baileys/node_modules/music-metadata/lib/musepack/MusepackParser.js +2 -2
  171. package/node_modules/baileys/node_modules/music-metadata/lib/musepack/sv7/BitReader.js +1 -1
  172. package/node_modules/baileys/node_modules/music-metadata/lib/musepack/sv7/MpcSv7Parser.js +4 -3
  173. package/node_modules/baileys/node_modules/music-metadata/lib/musepack/sv7/StreamVersion7.js +3 -3
  174. package/node_modules/baileys/node_modules/music-metadata/lib/musepack/sv8/MpcSv8Parser.js +7 -5
  175. package/node_modules/baileys/node_modules/music-metadata/lib/musepack/sv8/StreamVersion8.js +2 -2
  176. package/node_modules/baileys/node_modules/music-metadata/lib/ogg/OggParser.js +23 -13
  177. package/node_modules/baileys/node_modules/music-metadata/lib/ogg/OggToken.d.ts +2 -0
  178. package/node_modules/baileys/node_modules/music-metadata/lib/ogg/OggToken.js +1 -1
  179. package/node_modules/baileys/node_modules/music-metadata/lib/ogg/flac/FlacStream.d.ts +2 -2
  180. package/node_modules/baileys/node_modules/music-metadata/lib/ogg/flac/FlacStream.js +2 -2
  181. package/node_modules/baileys/node_modules/music-metadata/lib/ogg/opus/OpusStream.d.ts +2 -2
  182. package/node_modules/baileys/node_modules/music-metadata/lib/ogg/opus/OpusStream.js +8 -4
  183. package/node_modules/baileys/node_modules/music-metadata/lib/ogg/speex/SpeexStream.d.ts +2 -2
  184. package/node_modules/baileys/node_modules/music-metadata/lib/ogg/speex/SpeexStream.js +2 -1
  185. package/node_modules/baileys/node_modules/music-metadata/lib/ogg/theora/TheoraStream.d.ts +2 -2
  186. package/node_modules/baileys/node_modules/music-metadata/lib/ogg/vorbis/Vorbis.d.ts +1 -1
  187. package/node_modules/baileys/node_modules/music-metadata/lib/ogg/vorbis/VorbisDecoder.js +1 -1
  188. package/node_modules/baileys/node_modules/music-metadata/lib/ogg/vorbis/VorbisStream.d.ts +4 -3
  189. package/node_modules/baileys/node_modules/music-metadata/lib/ogg/vorbis/VorbisStream.js +16 -9
  190. package/node_modules/baileys/node_modules/music-metadata/lib/ogg/vorbis/VorbisTagMapper.js +4 -0
  191. package/node_modules/baileys/node_modules/music-metadata/lib/riff/RiffChunk.d.ts +3 -1
  192. package/node_modules/baileys/node_modules/music-metadata/lib/riff/RiffChunk.js +3 -2
  193. package/node_modules/baileys/node_modules/music-metadata/lib/riff/RiffInfoTagMap.d.ts +1 -1
  194. package/node_modules/baileys/node_modules/music-metadata/lib/type.d.ts +3 -3
  195. package/node_modules/baileys/node_modules/music-metadata/lib/type.js +1 -1
  196. package/node_modules/baileys/node_modules/music-metadata/lib/wav/WaveChunk.d.ts +1 -1
  197. package/node_modules/baileys/node_modules/music-metadata/lib/wav/WaveChunk.js +3 -2
  198. package/node_modules/baileys/node_modules/music-metadata/lib/wav/WaveParser.d.ts +6 -2
  199. package/node_modules/baileys/node_modules/music-metadata/lib/wav/WaveParser.js +75 -22
  200. package/node_modules/baileys/node_modules/music-metadata/lib/wavpack/WavPackParser.js +22 -13
  201. package/node_modules/baileys/node_modules/music-metadata/lib/wavpack/WavPackToken.js +3 -2
  202. package/node_modules/baileys/node_modules/music-metadata/package.json +3 -2
  203. package/node_modules/baileys/node_modules/uint8array-extras/index.d.ts +7 -7
  204. package/node_modules/baileys/node_modules/uint8array-extras/index.js +27 -13
  205. package/node_modules/baileys/node_modules/uint8array-extras/package.json +6 -6
  206. package/node_modules/baileys/node_modules/uint8array-extras/readme.md +7 -7
  207. package/node_modules/baileys/node_modules/ws/lib/websocket.js +17 -3
  208. package/node_modules/baileys/node_modules/ws/package.json +1 -1
  209. package/package.json +4 -4
  210. package/dist/.setup/audio-preflight.runtime-C_glQhZY.mjs +0 -7
  211. package/dist/.setup/channel.setup-CsS_NAKQ.mjs +0 -5
  212. package/dist/.setup/setup-plugin-api-Bsp7jI-r.mjs +0 -3
@@ -1,2 +1,2 @@
1
- var k=Symbol,Y0=", ",h=(()=>{let o="front",t="side",r="rear",s="left",e="center",n="right";return["",o+" ",t+" ",r+" "].map(a=>[[s,n],[s,n,e],[s,e,n],[e,s,n],[e]].flatMap(c=>c.map(p=>a+p).join(Y0)))})(),it="LFE",Ft="monophonic (mono)",kt="stereo",_e="surround",M=(o,...t)=>`${[Ft,kt,`linear ${_e}`,"quadraphonic",`5.0 ${_e}`,`5.1 ${_e}`,`6.1 ${_e}`,`7.1 ${_e}`][o-1]} (${t.join(Y0)})`,Se=[Ft,M(2,h[0][0]),M(3,h[0][2]),M(4,h[1][0],h[3][0]),M(5,h[1][2],h[3][0]),M(6,h[1][2],h[3][0],it),M(7,h[1][2],h[2][0],h[3][4],it),M(8,h[1][2],h[2][0],h[3][0],it)],Q0=192e3,tr=176400,i0=96e3,a0=88200,er=64e3,Mt=48e3,te=44100,ee=32e3,re=24e3,se=22050,oe=16e3,c0=12e3,p0=11025,ne=8e3,rr=7350,K="absoluteGranulePosition",f="bandwidth",I="bitDepth",U="bitrate",ye=U+"Maximum",Ce=U+"Minimum",we=U+"Nominal",at="buffer",Fe=at+"Fullness",F="codec",O=F+"Frames",ie="coupledStreamCount",ae="crc",ke=ae+"16",Me=ae+"32",w="data",u="description",ct="duration",ce="emphasis",Pe="hasOpusPadding",q="header",Pt="isContinuedPacket",He="isCopyrighted",Ht="isFirstPage",ve="isHome",W="isLastPage",mt="isOriginal",dt="isPrivate",De="isVbr",$="layer",i="length",d="mode",ft=d+"Extension",l0="mpeg",bt=l0+"Version",Re="numberAACFrames",pe="outputGain",vt="preSkip",Ae="profile",u0=k(),gt="protection",L0="rawData",X="segments",b="subarray",Dt="version",$t="vorbis",Be=$t+"Comments",Le=$t+"Setup",h0="block",Ne=h0+"ingStrategy",m0=k(),xt=h0+"Size",Rt=h0+"size0",At=h0+"size1",Ie=k(),d0="channel",_t=d0+"MappingFamily",le=d0+"MappingTable",T=d0+"Mode",Ue=k(),l=d0+"s",sr="copyright",Oe=sr+"Id",Te=sr+"IdStart",St="frame",yt=St+"Count",G=St+"Length",f0="Number",Ct=St+f0,pt=St+"Padding",m=St+"Size",or="Rate",ze="inputSample"+or,N0="page",Gt=N0+"Checksum",ue=k(),Bt=N0+"SegmentTable",R=N0+"Sequence"+f0,I0="sample",Ee=I0+f0,g=I0+or,lt=k(),x=I0+"s",b0="stream",he=b0+"Count",Ve=b0+"Info",ut=b0+"Serial"+f0,U0=b0+"StructureVersion",O0="total",qt=O0+"BytesOut",Wt=O0+"Duration",jt=O0+"Samples",S=k(),Y=k(),$e=k(),Lt=k(),st=k(),g0=k(),T0=k(),Nt=k(),y=k(),Q=k(),tt=k(),ht=k(),It=k(),x0=k(),ot=k(),nt=k(),et=k(),_0=k(),z=Uint8Array,Ut=DataView,C="reserved",E="bad",me="free",Ge="none",S0="16bit CRC";var z0=(o,t,r)=>{for(let s=0;s<o[i];s++){let e=t(s);for(let n=8;n>0;n--)e=r(e);o[s]=e}return o},Nr=z0(new z(256),o=>o,o=>o&128?7^o<<1:o<<1),P=[z0(new Uint16Array(256),o=>o<<8,o=>o<<1^(o&32768?32773:0))],H=[z0(new Uint32Array(256),o=>o,o=>o>>>1^(o&1)*3988292384)];for(let o=0;o<15;o++){P.push(new Uint16Array(256)),H.push(new Uint32Array(256));for(let t=0;t<=255;t++)P[o+1][t]=P[0][P[o][t]>>>8]^P[o][t]<<8,H[o+1][t]=H[o][t]>>>8^H[0][H[o][t]&255]}var ir=o=>{let t=0,r=o[i];for(let s=0;s!==r;s++)t=Nr[t^o[s]];return t},ar=o=>{let t=o[i],r=t-16,s=0,e=0;for(;e<=r;)s^=o[e++]<<8|o[e++],s=P[15][s>>8]^P[14][s&255]^P[13][o[e++]]^P[12][o[e++]]^P[11][o[e++]]^P[10][o[e++]]^P[9][o[e++]]^P[8][o[e++]]^P[7][o[e++]]^P[6][o[e++]]^P[5][o[e++]]^P[4][o[e++]]^P[3][o[e++]]^P[2][o[e++]]^P[1][o[e++]]^P[0][o[e++]];for(;e!==t;)s=(s&255)<<8^P[0][s>>8^o[e++]];return s},cr=o=>{let t=o[i],r=t-16,s=0,e=0;for(;e<=r;)s=H[15][(o[e++]^s)&255]^H[14][(o[e++]^s>>>8)&255]^H[13][(o[e++]^s>>>16)&255]^H[12][o[e++]^s>>>24]^H[11][o[e++]]^H[10][o[e++]]^H[9][o[e++]]^H[8][o[e++]]^H[7][o[e++]]^H[6][o[e++]]^H[5][o[e++]]^H[4][o[e++]]^H[3][o[e++]]^H[2][o[e++]]^H[1][o[e++]]^H[0][o[e++]];for(;e!==t;)s=H[0][(s^o[e++])&255]^s>>>8;return s^-1},We=(...o)=>{let t=new z(o.reduce((r,s)=>r+s[i],0));return o.reduce((r,s)=>(t.set(s,r),r+s[i]),0),t},j=o=>String.fromCharCode(...o),nr=[0,8,4,12,2,10,6,14,1,9,5,13,3,11,7,15],qe=o=>nr[o&15]<<4|nr[o>>4],y0=class{constructor(t){this._data=t,this._pos=t[i]*8}set position(t){this._pos=t}get position(){return this._pos}read(t){let r=Math.floor(this._pos/8),s=this._pos%8;return this._pos-=t,(qe(this._data[r-1])<<8)+qe(this._data[r])>>7-s&255}},pr=(o,t)=>{try{return o.getBigInt64(t,!0)}catch{let r=o.getUint8(t+7)&128?-1:1,s=o.getUint32(t,!0),e=o.getUint32(t+4,!0);return r===-1&&(s=~s+1,e=~e+1),e>1048575&&console.warn("This platform does not support BigInt"),r*(s+e*2**32)}};var je=class{constructor(t,r){this._onCodecHeader=t,this._onCodecUpdate=r,this[ot]()}[nt](){this._isEnabled=!0}[ot](){this._headerCache=new Map,this._codecUpdateData=new WeakMap,this._codecHeaderSent=!1,this._codecShouldUpdate=!1,this._bitrate=null,this._isEnabled=!1}[x0](t,r){if(this._onCodecUpdate){this._bitrate!==t&&(this._bitrate=t,this._codecShouldUpdate=!0);let s=this._codecUpdateData.get(this._headerCache.get(this._currentHeader));this._codecShouldUpdate&&s&&this._onCodecUpdate({bitrate:t,...s},r),this._codecShouldUpdate=!1}}[y](t){let r=this._headerCache.get(t);return r&&this._updateCurrentHeader(t),r}[Q](t,r,s){this._isEnabled&&(this._codecHeaderSent||(this._onCodecHeader({...r}),this._codecHeaderSent=!0),this._updateCurrentHeader(t),this._headerCache.set(t,r),this._codecUpdateData.set(r,s))}_updateCurrentHeader(t){this._onCodecUpdate&&t!==this._currentHeader&&(this._codecShouldUpdate=!0,this._currentHeader=t)}};var B=new WeakMap,L=new WeakMap;var V=class{constructor(t,r){this._codecParser=t,this._headerCache=r}*[T0](){let t;do{if(t=yield*this.Frame[tt](this._codecParser,this._headerCache,0),t)return t;this._codecParser[Y](1)}while(!0)}*[Nt](t){let r=yield*this[T0](),s=L.get(r)[i];if(t||this._codecParser._flushing||(yield*this.Header[y](this._codecParser,this._headerCache,s)))return this._headerCache[nt](),this._codecParser[Y](s),this._codecParser[Lt](r),r;this._codecParser[st](`Missing ${St} at ${s} bytes from current position.`,`Dropping current ${St} and trying again.`),this._headerCache[ot](),this._codecParser[Y](1)}};var Jt=class{constructor(t,r){L.set(this,{[q]:t}),this[w]=r}};var J=class extends Jt{static*[tt](t,r,s,e,n){let a=yield*t[y](s,e,n);if(a){let c=B.get(a)[G],p=B.get(a)[x],_=(yield*s[S](c,n))[b](0,c);return new r(a,_,p)}else return null}constructor(t,r,s){super(t,r),this[q]=t,this[x]=s,this[ct]=s/t[g]*1e3,this[Ct]=null,this[qt]=null,this[jt]=null,this[Wt]=null,L.get(this)[i]=r[i]}};var E0="unsynchronizationFlag",V0="extendedHeaderFlag",$0="experimentalFlag",G0="footerPresent",Je=class o{static*getID3v2Header(t,r,s){let n={},a=yield*t[S](3,s);if(a[0]!==73||a[1]!==68||a[2]!==51||(a=yield*t[S](10,s),n[Dt]=`id3v2.${a[3]}.${a[4]}`,a[5]&15)||(n[E0]=!!(a[5]&128),n[V0]=!!(a[5]&64),n[$0]=!!(a[5]&32),n[G0]=!!(a[5]&16),a[6]&128||a[7]&128||a[8]&128||a[9]&128))return null;let c=a[6]<<21|a[7]<<14|a[8]<<7|a[9];return n[i]=10+c,new o(n)}constructor(t){this[Dt]=t[Dt],this[E0]=t[E0],this[V0]=t[V0],this[$0]=t[$0],this[G0]=t[G0],this[i]=t[i]}};var Z=class{constructor(t){B.set(this,t),this[I]=t[I],this[U]=null,this[l]=t[l],this[T]=t[T],this[g]=t[g]}};var dr={0:[me,me,me,me,me],16:[32,32,32,32,8],240:[E,E,E,E,E]},C0=(o,t,r)=>8*((o+r)%t+t)*(1<<(o+r)/t)-8*t*(t/8|0);for(let o=2;o<15;o++)dr[o<<4]=[o*32,C0(o,4,0),C0(o,4,-1),C0(o,8,4),C0(o,8,0)];var Ir=0,Ur=1,Or=2,Tr=3,lr=4,w0="bands ",F0=" to 31",ur={0:w0+4+F0,16:w0+8+F0,32:w0+12+F0,48:w0+16+F0},Zt="bitrateIndex",Ze="v2",v0="v1",k0="Intensity stereo ",M0=", MS stereo ",P0="on",H0="off",zr={0:k0+H0+M0+H0,16:k0+P0+M0+H0,32:k0+H0+M0+P0,48:k0+P0+M0+P0},q0={0:{[u]:C},2:{[u]:"Layer III",[pt]:1,[ft]:zr,[v0]:{[Zt]:Or,[x]:1152},[Ze]:{[Zt]:lr,[x]:576}},4:{[u]:"Layer II",[pt]:1,[ft]:ur,[x]:1152,[v0]:{[Zt]:Ur},[Ze]:{[Zt]:lr}},6:{[u]:"Layer I",[pt]:4,[ft]:ur,[x]:384,[v0]:{[Zt]:Ir},[Ze]:{[Zt]:Tr}}},W0="MPEG Version ",hr="ISO/IEC ",Er={0:{[u]:`${W0}2.5 (later extension of MPEG 2)`,[$]:Ze,[g]:{0:p0,4:c0,8:ne,12:C}},8:{[u]:C},16:{[u]:`${W0}2 (${hr}13818-3)`,[$]:Ze,[g]:{0:se,4:re,8:oe,12:C}},24:{[u]:`${W0}1 (${hr}11172-3)`,[$]:v0,[g]:{0:te,4:Mt,8:ee,12:C}},length:i},Vr={0:S0,1:Ge},$r={0:Ge,1:"50/15 ms",2:C,3:"CCIT J.17"},mr={0:{[l]:2,[u]:kt},64:{[l]:2,[u]:"joint "+kt},128:{[l]:2,[u]:"dual channel"},192:{[l]:1,[u]:Ft}},Kt=class o extends Z{static*[y](t,r,s){let e={},n=yield*Je.getID3v2Header(t,r,s);n&&(yield*t[S](n[i],s),t[Y](n[i]));let a=yield*t[S](4,s),c=j(a[b](0,4)),p=r[y](c);if(p)return new o(p);if(a[0]!==255||a[1]<224)return null;let _=Er[a[1]&24];if(_[u]===C)return null;let A=a[1]&6;if(q0[A][u]===C)return null;let v={...q0[A],...q0[A][_[$]]};if(e[bt]=_[u],e[$]=v[u],e[x]=v[x],e[gt]=Vr[a[1]&1],e[i]=4,e[U]=dr[a[2]&240][v[Zt]],e[U]===E||(e[g]=_[g][a[2]&12],e[g]===C)||(e[pt]=a[2]&2&&v[pt],e[dt]=!!(a[2]&1),e[G]=Math.floor(125*e[U]*e[x]/e[g]+e[pt]),!e[G]))return null;let D=a[3]&192;if(e[T]=mr[D][u],e[l]=mr[D][l],e[ft]=v[ft][a[3]&48],e[He]=!!(a[3]&8),e[mt]=!!(a[3]&4),e[ce]=$r[a[3]&3],e[ce]===C)return null;e[I]=16;{let{length:Vt,frameLength:wt,samples:K0,...B0}=e;r[Q](c,e,B0)}return new o(e)}constructor(t){super(t),this[U]=t[U],this[ce]=t[ce],this[pt]=t[pt],this[He]=t[He],this[mt]=t[mt],this[dt]=t[dt],this[$]=t[$],this[ft]=t[ft],this[bt]=t[bt],this[gt]=t[gt]}};var Ke=class o extends J{static*[tt](t,r,s){return yield*super[tt](Kt,o,t,r,s)}constructor(t,r,s){super(t,r,s)}};var Xe=class extends V{constructor(t,r,s){super(t,r),this.Frame=Ke,this.Header=Kt,s(this[F])}get[F](){return l0}*[ht](){return yield*this[Nt]()}};var Gr={0:"MPEG-4",8:"MPEG-2"},qr={0:"valid",2:E,4:E,6:E},Wr={0:S0,1:Ge},jr={0:"AAC Main",64:"AAC LC (Low Complexity)",128:"AAC SSR (Scalable Sample Rate)",192:"AAC LTP (Long Term Prediction)"},Jr={0:i0,4:a0,8:er,12:Mt,16:te,20:ee,24:re,28:se,32:oe,36:c0,40:p0,44:ne,48:rr,52:C,56:C,60:"frequency is written explicitly"},fr={0:{[l]:0,[u]:"Defined in AOT Specific Config"},64:{[l]:1,[u]:Ft},128:{[l]:2,[u]:M(2,h[0][0])},192:{[l]:3,[u]:M(3,h[1][3])},256:{[l]:4,[u]:M(4,h[1][3],h[3][4])},320:{[l]:5,[u]:M(5,h[1][3],h[3][0])},384:{[l]:6,[u]:M(6,h[1][3],h[3][0],it)},448:{[l]:8,[u]:M(8,h[1][3],h[2][0],h[3][0],it)}},Xt=class o extends Z{static*[y](t,r,s){let e={},n=yield*t[S](7,s),a=j([n[0],n[1],n[2],n[3]&252|n[6]&3]),c=r[y](a);if(c)Object.assign(e,c);else{if(n[0]!==255||n[1]<240||(e[bt]=Gr[n[1]&8],e[$]=qr[n[1]&6],e[$]===E))return null;let _=n[1]&1;e[gt]=Wr[_],e[i]=_?7:9,e[u0]=n[2]&192,e[lt]=n[2]&60;let A=n[2]&2;if(e[Ae]=jr[e[u0]],e[g]=Jr[e[lt]],e[g]===C)return null;e[dt]=!!A,e[Ue]=(n[2]<<8|n[3])&448,e[T]=fr[e[Ue]][u],e[l]=fr[e[Ue]][l],e[mt]=!!(n[3]&32),e[ve]=!!(n[3]&8),e[Oe]=!!(n[3]&8),e[Te]=!!(n[3]&4),e[I]=16,e[x]=1024,e[Re]=n[6]&3;{let{length:v,channelModeBits:D,profileBits:Vt,sampleRateBits:wt,frameLength:K0,samples:B0,numberAACFrames:X0,...Br}=e;r[Q](a,e,Br)}}if(e[G]=(n[3]<<11|n[4]<<3|n[5]>>5)&8191,!e[G])return null;let p=(n[5]<<6|n[6]>>2)&2047;return e[Fe]=p===2047?"VBR":p,new o(e)}constructor(t){super(t),this[Oe]=t[Oe],this[Te]=t[Te],this[Fe]=t[Fe],this[ve]=t[ve],this[mt]=t[mt],this[dt]=t[dt],this[$]=t[$],this[i]=t[i],this[bt]=t[bt],this[Re]=t[Re],this[Ae]=t[Ae],this[gt]=t[gt]}get audioSpecificConfig(){let t=B.get(this),r=t[u0]+64<<5|t[lt]<<5|t[Ue]>>3,s=new z(2);return new Ut(s[at]).setUint16(0,r,!1),s}};var Ye=class o extends J{static*[tt](t,r,s){return yield*super[tt](Xt,o,t,r,s)}constructor(t,r,s){super(t,r,s)}};var Qe=class extends V{constructor(t,r,s){super(t,r),this.Frame=Ye,this.Header=Xt,s(this[F])}get[F](){return"aac"}*[ht](){return yield*this[Nt]()}};var Ot=class o extends J{static _getFrameFooterCrc16(t){return(t[t[i]-2]<<8)+t[t[i]-1]}static[_0](t){let r=o._getFrameFooterCrc16(t),s=ar(t[b](0,-2));return r===s}constructor(t,r,s){r[Ve]=s,r[ke]=o._getFrameFooterCrc16(t),super(r,t,B.get(r)[x])}};var br="get from STREAMINFO metadata block",Zr={0:"Fixed",1:"Variable"},gr={0:C,16:192};for(let o=2;o<16;o++)gr[o<<4]=o<6?576*2**(o-2):2**o;var Kr={0:br,1:a0,2:tr,3:Q0,4:ne,5:oe,6:se,7:re,8:ee,9:te,10:Mt,11:i0,15:E},Xr={0:{[l]:1,[u]:Ft},16:{[l]:2,[u]:M(2,h[0][0])},32:{[l]:3,[u]:M(3,h[0][1])},48:{[l]:4,[u]:M(4,h[1][0],h[3][0])},64:{[l]:5,[u]:M(5,h[1][1],h[3][0])},80:{[l]:6,[u]:M(6,h[1][1],it,h[3][0])},96:{[l]:7,[u]:M(7,h[1][1],it,h[3][4],h[2][0])},112:{[l]:8,[u]:M(8,h[1][1],it,h[3][0],h[2][0])},128:{[l]:2,[u]:`${kt} (left, diff)`},144:{[l]:2,[u]:`${kt} (diff, right)`},160:{[l]:2,[u]:`${kt} (avg, diff)`},176:C,192:C,208:C,224:C,240:C},Yr={0:br,2:8,4:12,6:C,8:16,10:20,12:24,14:C},Tt=class o extends Z{static _decodeUTF8Int(t){if(t[0]>254)return null;if(t[0]<128)return{value:t[0],length:1};let r=1;for(let a=64;a&t[0];a>>=1)r++;let s=r-1,e=0,n=0;for(;s>0;n+=6,s--){if((t[s]&192)!==128)return null;e|=(t[s]&63)<<n}return e|=(t[s]&127>>r)<<n,{value:e,length:r}}static[et](t,r){let s={[S]:function*(){return t}};return o[y](s,r,0).next().value}static*[y](t,r,s){let e=yield*t[S](6,s);if(e[0]!==255||!(e[1]===248||e[1]===249))return null;let n={},a=j(e[b](0,4)),c=r[y](a);if(c)Object.assign(n,c);else{if(n[m0]=e[1]&1,n[Ne]=Zr[n[m0]],n[Ie]=e[2]&240,n[lt]=e[2]&15,n[xt]=gr[n[Ie]],n[xt]===C||(n[g]=Kr[n[lt]],n[g]===E)||e[3]&1)return null;let _=Xr[e[3]&240];if(_===C||(n[l]=_[l],n[T]=_[u],n[I]=Yr[e[3]&14],n[I]===C))return null}n[i]=5,e=yield*t[S](n[i]+8,s);let p=o._decodeUTF8Int(e[b](4));if(!p||(n[m0]?n[Ee]=p.value:n[Ct]=p.value,n[i]+=p[i],n[Ie]===96?(e[i]<n[i]&&(e=yield*t[S](n[i],s)),n[xt]=e[n[i]-1]+1,n[i]+=1):n[Ie]===112&&(e[i]<n[i]&&(e=yield*t[S](n[i],s)),n[xt]=(e[n[i]-1]<<8)+e[n[i]]+1,n[i]+=2),n[x]=n[xt],n[lt]===12?(e[i]<n[i]&&(e=yield*t[S](n[i],s)),n[g]=e[n[i]-1]*1e3,n[i]+=1):n[lt]===13?(e[i]<n[i]&&(e=yield*t[S](n[i],s)),n[g]=(e[n[i]-1]<<8)+e[n[i]],n[i]+=2):n[lt]===14&&(e[i]<n[i]&&(e=yield*t[S](n[i],s)),n[g]=((e[n[i]-1]<<8)+e[n[i]])*10,n[i]+=2),e[i]<n[i]&&(e=yield*t[S](n[i],s)),n[ae]=e[n[i]-1],n[ae]!==ir(e[b](0,n[i]-1))))return null;if(!c){let{blockingStrategyBits:_,frameNumber:A,sampleNumber:v,samples:D,sampleRateBits:Vt,blockSizeBits:wt,crc:K0,length:B0,...X0}=n;r[Q](a,n,X0)}return new o(n)}constructor(t){super(t),this[ke]=null,this[Ne]=t[Ne],this[xt]=t[xt],this[Ct]=t[Ct],this[Ee]=t[Ee],this[Ve]=null}};var Qr=2,ts=512*1024,Yt=class extends V{constructor(t,r,s){super(t,r),this.Frame=Ot,this.Header=Tt,s(this[F])}get[F](){return"flac"}*_getNextFrameSyncOffset(t){let r=yield*this._codecParser[S](2,0),s=r[i]-2;for(;t<s;){if(r[t]===255){let n=r[t+1];if(n===248||n===249)break;n!==255&&t++}t++}return t}*[ht](){do{let t=yield*Tt[y](this._codecParser,this._headerCache,0);if(t){let r=B.get(t)[i]+Qr;for(;r<=ts;){if(this._codecParser._flushing||(yield*Tt[y](this._codecParser,this._headerCache,r))){let s=yield*this._codecParser[S](r);if(this._codecParser._flushing||(s=s[b](0,r)),Ot[_0](s)){let e=new Ot(s,t);return this._headerCache[nt](),this._codecParser[Y](r),this._codecParser[Lt](e),e}}r=yield*this._getNextFrameSyncOffset(r+1)}this._codecParser[st](`Unable to sync FLAC frame after searching ${r} bytes.`),this._codecParser[Y](r)}else this._codecParser[Y](yield*this._getNextFrameSyncOffset(1))}while(!0)}[It](t){return t[R]===0?(this._headerCache[nt](),this._streamInfo=t[w][b](13)):t[R]===1||(t[O]=L.get(t)[X].map(r=>{let s=Tt[et](r,this._headerCache);if(s)return new Ot(r,s,this._streamInfo);this._codecParser[st]("Failed to parse Ogg FLAC frame","Skipping invalid FLAC frame")}).filter(r=>!!r)),t}};var Qt=class o{static*[y](t,r,s){let e={},n=yield*t[S](28,s);if(n[0]!==79||n[1]!==103||n[2]!==103||n[3]!==83||(e[U0]=n[4],n[5]&248))return null;e[W]=!!(n[5]&4),e[Ht]=!!(n[5]&2),e[Pt]=!!(n[5]&1);let c=new Ut(z.from(n[b](0,28))[at]);e[K]=pr(c,6),e[ut]=c.getInt32(14,!0),e[R]=c.getInt32(18,!0),e[Gt]=c.getInt32(22,!0);let p=n[26];e[i]=p+27,n=yield*t[S](e[i],s),e[G]=0,e[Bt]=[],e[ue]=z.from(n[b](27,e[i]));for(let _=0,A=0;_<p;_++){let v=e[ue][_];e[G]+=v,A+=v,(v!==255||_===p-1)&&(e[Bt].push(A),A=0)}return new o(e)}constructor(t){B.set(this,t),this[K]=t[K],this[Pt]=t[Pt],this[Ht]=t[Ht],this[W]=t[W],this[Bt]=t[Bt],this[R]=t[R],this[Gt]=t[Gt],this[ut]=t[ut]}};var t0=class o extends Jt{static*[tt](t,r,s){let e=yield*Qt[y](t,r,s);if(e){let n=B.get(e)[G],a=B.get(e)[i],c=a+n,p=(yield*t[S](c,0))[b](0,c),_=p[b](a,c);return new o(e,_,p)}else return null}constructor(t,r,s){super(t,r),L.get(this)[i]=s[i],this[O]=[],this[L0]=s,this[K]=t[K],this[Me]=t[Gt],this[ct]=0,this[Pt]=t[Pt],this[Ht]=t[Ht],this[W]=t[W],this[R]=t[R],this[x]=0,this[ut]=t[ut]}};var de=class extends J{constructor(t,r,s){super(r,t,s)}};var xr={0:Se.slice(0,2),1:Se},rt="SILK-only",N="CELT-only",D0="Hybrid",zt="narrowband",R0="medium-band",Et="wideband",fe="super-wideband",be="fullband",es={0:{[d]:rt,[f]:zt,[m]:10},8:{[d]:rt,[f]:zt,[m]:20},16:{[d]:rt,[f]:zt,[m]:40},24:{[d]:rt,[f]:zt,[m]:60},32:{[d]:rt,[f]:R0,[m]:10},40:{[d]:rt,[f]:R0,[m]:20},48:{[d]:rt,[f]:R0,[m]:40},56:{[d]:rt,[f]:R0,[m]:60},64:{[d]:rt,[f]:Et,[m]:10},72:{[d]:rt,[f]:Et,[m]:20},80:{[d]:rt,[f]:Et,[m]:40},88:{[d]:rt,[f]:Et,[m]:60},96:{[d]:D0,[f]:fe,[m]:10},104:{[d]:D0,[f]:fe,[m]:20},112:{[d]:D0,[f]:be,[m]:10},120:{[d]:D0,[f]:be,[m]:20},128:{[d]:N,[f]:zt,[m]:2.5},136:{[d]:N,[f]:zt,[m]:5},144:{[d]:N,[f]:zt,[m]:10},152:{[d]:N,[f]:zt,[m]:20},160:{[d]:N,[f]:Et,[m]:2.5},168:{[d]:N,[f]:Et,[m]:5},176:{[d]:N,[f]:Et,[m]:10},184:{[d]:N,[f]:Et,[m]:20},192:{[d]:N,[f]:fe,[m]:2.5},200:{[d]:N,[f]:fe,[m]:5},208:{[d]:N,[f]:fe,[m]:10},216:{[d]:N,[f]:fe,[m]:20},224:{[d]:N,[f]:be,[m]:2.5},232:{[d]:N,[f]:be,[m]:5},240:{[d]:N,[f]:be,[m]:10},248:{[d]:N,[f]:be,[m]:20}},ge=class o extends Z{static[et](t,r,s){let e={};if(e[l]=t[9],e[_t]=t[18],e[i]=e[_t]!==0?21+e[l]:19,t[i]<e[i])throw new Error("Out of data while inside an Ogg Page");let n=r[0]&3,a=n===3?2:1,c=j(t[b](0,e[i]))+j(r[b](0,a)),p=s[y](c);if(p)return new o(p);if(c.substr(0,8)!=="OpusHead"||t[8]!==1)return null;e[w]=z.from(t[b](0,e[i]));let _=new Ut(e[w][at]);if(e[I]=16,e[vt]=_.getUint16(10,!0),e[ze]=_.getUint32(12,!0),e[g]=Mt,e[pe]=_.getInt16(16,!0),e[_t]in xr&&(e[T]=xr[e[_t]][e[l]-1],!e[T]))return null;e[_t]!==0&&(e[he]=t[19],e[ie]=t[20],e[le]=[...t[b](21,e[l]+21)]);let A=es[248&r[0]];switch(e[d]=A[d],e[f]=A[f],e[m]=A[m],n){case 0:e[yt]=1;break;case 1:case 2:e[yt]=2;break;case 3:e[De]=!!(128&r[1]),e[Pe]=!!(64&r[1]),e[yt]=63&r[1];break;default:return null}{let{length:v,data:D,channelMappingFamily:Vt,...wt}=e;s[Q](c,e,wt)}return new o(e)}constructor(t){super(t),this[w]=t[w],this[f]=t[f],this[_t]=t[_t],this[le]=t[le],this[ie]=t[ie],this[yt]=t[yt],this[m]=t[m],this[Pe]=t[Pe],this[ze]=t[ze],this[De]=t[De],this[d]=t[d],this[pe]=t[pe],this[vt]=t[vt],this[he]=t[he]}};var e0=class extends V{constructor(t,r,s){super(t,r),this.Frame=de,this.Header=ge,s(this[F]),this._identificationHeader=null,this._preSkipRemaining=null}get[F](){return"opus"}[It](t){return t[R]===0?(this._headerCache[nt](),this._identificationHeader=t[w]):t[R]===1||(t[O]=L.get(t)[X].map(r=>{let s=ge[et](this._identificationHeader,r,this._headerCache);if(s){this._preSkipRemaining===null&&(this._preSkipRemaining=s[vt]);let e=s[m]*s[yt]/1e3*s[g];return this._preSkipRemaining>0&&(this._preSkipRemaining-=e,e=this._preSkipRemaining<0?-this._preSkipRemaining:0),new de(r,s,e)}this._codecParser[g0]("Failed to parse Ogg Opus Header","Not a valid Ogg Opus file")})),t}};var xe=class extends J{constructor(t,r,s){super(r,t,s)}};var j0={};for(let o=0;o<8;o++)j0[o+6]=2**(6+o);var r0=class o extends Z{static[et](t,r,s,e){if(t[i]<30)throw new Error("Out of data while inside an Ogg Page");let n=j(t[b](0,30)),a=r[y](n);if(a)return new o(a);let c={[i]:30};if(n.substr(0,7)!=="vorbis")return null;c[w]=z.from(t[b](0,30));let p=new Ut(c[w][at]);if(c[Dt]=p.getUint32(7,!0),c[Dt]!==0||(c[l]=t[11],c[T]=Se[c[l]-1]||"application defined",c[g]=p.getUint32(12,!0),c[ye]=p.getInt32(16,!0),c[we]=p.getInt32(20,!0),c[Ce]=p.getInt32(24,!0),c[At]=j0[(t[28]&240)>>4],c[Rt]=j0[t[28]&15],c[Rt]>c[At])||t[29]!==1)return null;c[I]=32,c[Le]=e,c[Be]=s;{let{length:_,data:A,version:v,vorbisSetup:D,vorbisComments:Vt,...wt}=c;r[Q](n,c,wt)}return new o(c)}constructor(t){super(t),this[ye]=t[ye],this[Ce]=t[Ce],this[we]=t[we],this[Rt]=t[Rt],this[At]=t[At],this[w]=t[w],this[Be]=t[Be],this[Le]=t[Le]}};var s0=class extends V{constructor(t,r,s){super(t,r),this.Frame=xe,s(this[F]),this._identificationHeader=null,this._setupComplete=!1,this._prevBlockSize=null}get[F](){return $t}[It](t){t[O]=[];for(let r of L.get(t)[X])if(r[0]===1)this._headerCache[nt](),this._identificationHeader=t[w],this._setupComplete=!1;else if(r[0]===3)this._vorbisComments=r;else if(r[0]===5)this._vorbisSetup=r,this._mode=this._parseSetupHeader(r),this._setupComplete=!0;else if(this._setupComplete){let s=r0[et](this._identificationHeader,this._headerCache,this._vorbisComments,this._vorbisSetup);s?t[O].push(new xe(r,s,this._getSamples(r,s))):this._codecParser[logError]("Failed to parse Ogg Vorbis Header","Not a valid Ogg Vorbis file")}return t}_getSamples(t,r){let e=this._mode.blockFlags[t[0]>>1&this._mode.mask]?r[At]:r[Rt],n=this._prevBlockSize===null?0:(this._prevBlockSize+e)/4;return this._prevBlockSize=e,n}_parseSetupHeader(t){let r=new y0(t),s={count:0,blockFlags:[]};for(;(r.read(1)&1)!==1;);let e;for(;s.count<64&&r.position>0;){qe(r.read(8));let n=0;for(;r.read(8)===0&&n++<3;);if(n===4)e=r.read(7),s.blockFlags.unshift(e&1),r.position+=6,s.count++;else{((qe(e)&126)>>1)+1!==s.count&&this._codecParser[st]("vorbis derived mode count did not match actual mode count");break}}return s.mask=(1<<Math.log2(s.count))-1,s}};var J0=class{constructor(t,r,s){this._codecParser=t,this._headerCache=r,this._onCodec=s,this._continuedPacket=new z,this._codec=null,this._isSupported=null,this._previousAbsoluteGranulePosition=null}get[F](){return this._codec||""}_updateCodec(t,r){this._codec!==t&&(this._headerCache[ot](),this._parser=new r(this._codecParser,this._headerCache,this._onCodec),this._codec=t)}_checkCodecSupport({data:t}){let r=j(t[b](0,8));switch(r){case"fishead\0":return!1;case"OpusHead":return this._updateCodec("opus",e0),!0;case(/^\x7fFLAC/.test(r)&&r):return this._updateCodec("flac",Yt),!0;case(/^\x01vorbis/.test(r)&&r):return this._updateCodec($t,s0),!0;default:return!1}}_checkPageSequenceNumber(t){t[R]!==this._pageSequenceNumber+1&&this._pageSequenceNumber>1&&t[R]>1&&this._codecParser[st]("Unexpected gap in Ogg Page Sequence Number.",`Expected: ${this._pageSequenceNumber+1}, Got: ${t[R]}`),this._pageSequenceNumber=t[R]}_parsePage(t){this._isSupported===null&&(this._pageSequenceNumber=t[R],this._isSupported=this._checkCodecSupport(t)),this._checkPageSequenceNumber(t);let r=L.get(t),s=B.get(r[q]),e=0;if(r[X]=s[Bt].map(n=>t[w][b](e,e+=n)),this._continuedPacket[i]&&(r[X][0]=We(this._continuedPacket,r[X][0]),this._continuedPacket=new z),s[ue][s[ue][i]-1]===255&&(this._continuedPacket=We(this._continuedPacket,r[X].pop())),this._previousAbsoluteGranulePosition!==null&&(t[x]=Number(t[K]-this._previousAbsoluteGranulePosition)),this._previousAbsoluteGranulePosition=t[K],this._isSupported){let n=this._parser[It](t);return this._codecParser[Lt](n),n}else return t}},o0=class extends V{constructor(t,r,s){super(t,r),this._onCodec=s,this.Frame=t0,this.Header=Qt,this._streams=new Map,this._currentSerialNumber=null}get[F](){let t=this._streams.get(this._currentSerialNumber);return t?t.codec:""}*[ht](){let t=yield*this[Nt](!0);this._currentSerialNumber=t[ut];let r=this._streams.get(this._currentSerialNumber);return r||(r=new J0(this._codecParser,this._headerCache,this._onCodec),this._streams.set(this._currentSerialNumber,r)),t[W]&&this._streams.delete(this._currentSerialNumber),r._parsePage(t)}};var Z0=()=>{},n0=class{constructor(t,{onCodec:r,onCodecHeader:s,onCodecUpdate:e,enableLogging:n=!1,enableFrameCRC32:a=!0}={}){this._inputMimeType=t,this._onCodec=r||Z0,this._onCodecHeader=s||Z0,this._onCodecUpdate=e,this._enableLogging=n,this._crc32=a?cr:Z0,this[ot]()}get[F](){return this._parser?this._parser[F]:""}[ot](){this._headerCache=new je(this._onCodecHeader,this._onCodecUpdate),this._generator=this._getGenerator(),this._generator.next()}*flush(){this._flushing=!0;for(let t=this._generator.next();t.value;t=this._generator.next())yield t.value;this._flushing=!1,this[ot]()}*parseChunk(t){for(let r=this._generator.next(t);r.value;r=this._generator.next())yield r.value}parseAll(t){return[...this.parseChunk(t),...this.flush()]}*_getGenerator(){if(this._inputMimeType.match(/aac/))this._parser=new Qe(this,this._headerCache,this._onCodec);else if(this._inputMimeType.match(/mpeg/))this._parser=new Xe(this,this._headerCache,this._onCodec);else if(this._inputMimeType.match(/flac/))this._parser=new Yt(this,this._headerCache,this._onCodec);else if(this._inputMimeType.match(/ogg/))this._parser=new o0(this,this._headerCache,this._onCodec);else throw new Error(`Unsupported Codec ${mimeType}`);for(this._frameNumber=0,this._currentReadPosition=0,this._totalBytesIn=0,this._totalBytesOut=0,this._totalSamples=0,this._sampleRate=void 0,this._rawData=new Uint8Array(0);;){let t=yield*this._parser[ht]();t&&(yield t)}}*[S](t=0,r=0){let s;for(;this._rawData[i]<=t+r;){if(s=yield,this._flushing)return this._rawData[b](r);s&&(this._totalBytesIn+=s[i],this._rawData=We(this._rawData,s))}return this._rawData[b](r)}[Y](t){this._currentReadPosition+=t,this._rawData=this._rawData[b](t)}[$e](t){this._sampleRate=t[q][g],t[q][U]=t[ct]>0?Math.round(t[w][i]/t[ct])*8:0,t[Ct]=this._frameNumber++,t[qt]=this._totalBytesOut,t[jt]=this._totalSamples,t[Wt]=this._totalSamples/this._sampleRate*1e3,t[Me]=this._crc32(t[w]),this._headerCache[x0](t[q][U],t[Wt]),this._totalBytesOut+=t[w][i],this._totalSamples+=t[x]}[Lt](t){if(t[O]){if(t[W]){let r=t[x];t[O].forEach(s=>{let e=s[x];r<e&&(s[x]=r>0?r:0,s[ct]=s[x]/s[q][g]*1e3),r-=e,this[$e](s)})}else t[x]=0,t[O].forEach(r=>{t[x]+=r[x],this[$e](r)});t[ct]=t[x]/this._sampleRate*1e3||0,t[jt]=this._totalSamples,t[Wt]=this._totalSamples/this._sampleRate*1e3||0,t[qt]=this._totalBytesOut}else this[$e](t)}_log(t,r){if(this._enableLogging){let s=[`${F}: ${this[F]}`,`inputMimeType: ${this._inputMimeType}`,`readPosition: ${this._currentReadPosition}`,`totalBytesIn: ${this._totalBytesIn}`,`${qt}: ${this._totalBytesOut}`],e=Math.max(...s.map(n=>n[i]));r.push(`--stats--${"-".repeat(e-9)}`,...s,"-".repeat(e)),t("codec-parser",r.reduce((n,a)=>n+`
2
- `+a,""))}}[st](...t){this._log(console.warn,t)}[g0](...t){this._log(console.error,t)}};var _r=n0,Sr=K;var yr=O,Cr=ie;var wr=w;var Fr=q;var kr=W;var Mr=pe,Pr=vt;var Hr=le;var vr=l;var Dr=he;var Rr=jt;import{createOpusDecoder as rs}from"../core.js";var A0=Object.freeze({channelData:Object.freeze([]),sampleRate:0});async function ss(o){let t=o instanceof Uint8Array?o:new Uint8Array(o),r=await os();try{let s=r.decode(t),e=r.flush();return ns(s,e)}finally{r.free()}}async function os(){let o=await rs(),t=new _r("application/ogg",{onCodec:c=>{if(c!=="opus")throw Error("@audio/decode-opus does not support this codec "+c)},enableFrameCRC32:!1}),r=!1,s=0,e=!1,n=!1,a=c=>{let p=[];for(let _ of c){let A=_[yr];if(A.length){if(!r){let D=A[0][Fr];o.configure({sampleRate:48e3,channels:D[vr],streamCount:D[Dr],coupledStreamCount:D[Cr],channelMappingTable:D[Hr],preSkip:D[Pr],outputGain:D[Mr]}),r=!0,s=0}let v=o.decodeFrames(A.map(D=>D[wr]));s+=v.samplesDecoded,v.channelData.length&&p.push(v)}if(_[kr]){if(_[Sr]!==void 0&&p.length){let v=s-_[Rr];if(v>0){let D=p[p.length-1],Vt=Math.max(0,D.samplesDecoded-v);D.channelData=D.channelData.map(wt=>wt.subarray(0,Vt)),D.samplesDecoded=Vt}}o.unconfigure(),r=!1,s=0}}return Ar(p)};return{decode(c){if(n)throw Error("Decoder already freed");if(e)throw Error("Decoder already flushed");if(!c)return A0;let p=c instanceof Uint8Array?c:new Uint8Array(c);return p.length?a([...t.parseChunk(p)]):A0},flush(){if(n||e)return A0;e=!0;try{return a([...t.flush()])}finally{t=null,o.unconfigure(),r=!1}},free(){n||(n=!0,t=null,o.free())}}}function Ar(o){if(!o.length)return A0;if(o.length===1)return o[0];let t=Math.max(...o.map(r=>r.channelData.length));return{errors:o.flatMap(r=>r.errors),channelData:Array.from({length:t},(r,s)=>{let e=o.reduce((c,p)=>c+p.channelData[s%p.channelData.length].length,0),n=new Float32Array(e),a=0;for(let c of o){let p=c.channelData[s%c.channelData.length];n.set(p,a),a+=p.length}return n}),samplesDecoded:o.reduce((r,s)=>r+s.samplesDecoded,0),sampleRate:o[0].sampleRate,bitDepth:32}}function ns(o,t){return t?.channelData?.length?o?.channelData?.length?Ar([o,t]):t:o}export{os as decoder,ss as default};
1
+ var M=Symbol,rr=", ",h=(()=>{let s="front",t="side",r="rear",o="left",e="center",n="right";return["",s+" ",t+" ",r+" "].map(a=>[[o,n],[o,n,e],[o,e,n],[e,o,n],[e]].flatMap(c=>c.map(u=>a+u).join(rr)))})(),at="LFE",Pt="monophonic (mono)",Ht="stereo",Ce="surround",H=(s,...t)=>`${[Pt,Ht,`linear ${Ce}`,"quadraphonic",`5.0 ${Ce}`,`5.1 ${Ce}`,`6.1 ${Ce}`,`7.1 ${Ce}`][s-1]} (${t.join(rr)})`,we=[Pt,H(2,h[0][0]),H(3,h[0][2]),H(4,h[1][0],h[3][0]),H(5,h[1][2],h[3][0]),H(6,h[1][2],h[3][0],at),H(7,h[1][2],h[2][0],h[3][4],at),H(8,h[1][2],h[2][0],h[3][0],at)],sr=192e3,or=176400,l0=96e3,p0=88200,nr=64e3,vt=48e3,re=44100,se=32e3,oe=24e3,ne=22050,ie=16e3,u0=12e3,h0=11025,ae=8e3,ir=7350,X="absoluteGranulePosition",f="bandwidth",I="bitDepth",U="bitrate",Fe=U+"Maximum",ke=U+"Minimum",Me=U+"Nominal",ct="buffer",Pe=ct+"Fullness",k="codec",O=k+"Frames",ce="coupledStreamCount",le="crc",He=le+"16",ve=le+"32",w="data",p="description",lt="duration",pe="emphasis",De="hasOpusPadding",W="header",Dt="isContinuedPacket",Re="isCopyrighted",Rt="isFirstPage",Ae="isHome",j="isLastPage",gt="isOriginal",xt="isPrivate",Be="isVbr",$="layer",i="length",d="mode",_t=d+"Extension",m0="mpeg",yt=m0+"Version",Le="numberAACFrames",ue="outputGain",At="preSkip",Ne="profile",d0=M(),St="protection",U0="rawData",Y="segments",b="subarray",Bt="version",qt="vorbis",Ie=qt+"Comments",Ue=qt+"Setup",f0="block",Oe=f0+"ingStrategy",b0=M(),Ct=f0+"Size",Lt=f0+"size0",Nt=f0+"size1",Te=M(),g0="channel",pt=g0+"MappingFamily",he=g0+"MappingTable",T=g0+"Mode",ze=M(),l=g0+"s",ar="copyright",Ee=ar+"Id",Ve=ar+"IdStart",wt="frame",Ft=wt+"Count",G=wt+"Length",x0="Number",kt=wt+x0,ut=wt+"Padding",m=wt+"Size",cr="Rate",$e="inputSample"+cr,O0="page",Wt=O0+"Checksum",me=M(),It=O0+"SegmentTable",R=O0+"Sequence"+x0,T0="sample",Ge=T0+x0,g=T0+cr,ht=M(),x=T0+"s",_0="stream",de=_0+"Count",qe=_0+"Info",mt=_0+"Serial"+x0,z0=_0+"StructureVersion",E0="total",jt=E0+"BytesOut",Jt=E0+"Duration",Zt=E0+"Samples",_=M(),Q=M(),We=M(),Ut=M(),ot=M(),y0=M(),V0=M(),Ot=M(),S=M(),tt=M(),et=M(),dt=M(),Tt=M(),S0=M(),nt=M(),it=M(),rt=M(),C0=M(),z=Uint8Array,zt=DataView,C="reserved",E="bad",fe="free",je="none",w0="16bit CRC";var $0=(s,t,r)=>{for(let o=0;o<s[i];o++){let e=t(o);for(let n=8;n>0;n--)e=r(e);s[o]=e}return s},Tr=$0(new z(256),s=>s,s=>s&128?7^s<<1:s<<1),v=[$0(new Uint16Array(256),s=>s<<8,s=>s<<1^(s&32768?32773:0))],D=[$0(new Uint32Array(256),s=>s,s=>s>>>1^(s&1)*3988292384)];for(let s=0;s<15;s++){v.push(new Uint16Array(256)),D.push(new Uint32Array(256));for(let t=0;t<=255;t++)v[s+1][t]=v[0][v[s][t]>>>8]^v[s][t]<<8,D[s+1][t]=D[s][t]>>>8^D[0][D[s][t]&255]}var pr=s=>{let t=0,r=s[i];for(let o=0;o!==r;o++)t=Tr[t^s[o]];return t},ur=s=>{let t=s[i],r=t-16,o=0,e=0;for(;e<=r;)o^=s[e++]<<8|s[e++],o=v[15][o>>8]^v[14][o&255]^v[13][s[e++]]^v[12][s[e++]]^v[11][s[e++]]^v[10][s[e++]]^v[9][s[e++]]^v[8][s[e++]]^v[7][s[e++]]^v[6][s[e++]]^v[5][s[e++]]^v[4][s[e++]]^v[3][s[e++]]^v[2][s[e++]]^v[1][s[e++]]^v[0][s[e++]];for(;e!==t;)o=(o&255)<<8^v[0][o>>8^s[e++]];return o},hr=s=>{let t=s[i],r=t-16,o=0,e=0;for(;e<=r;)o=D[15][(s[e++]^o)&255]^D[14][(s[e++]^o>>>8)&255]^D[13][(s[e++]^o>>>16)&255]^D[12][s[e++]^o>>>24]^D[11][s[e++]]^D[10][s[e++]]^D[9][s[e++]]^D[8][s[e++]]^D[7][s[e++]]^D[6][s[e++]]^D[5][s[e++]]^D[4][s[e++]]^D[3][s[e++]]^D[2][s[e++]]^D[1][s[e++]]^D[0][s[e++]];for(;e!==t;)o=D[0][(o^s[e++])&255]^o>>>8;return o^-1},Ze=(...s)=>{let t=new z(s.reduce((r,o)=>r+o[i],0));return s.reduce((r,o)=>(t.set(o,r),r+o[i]),0),t},J=s=>String.fromCharCode(...s),lr=[0,8,4,12,2,10,6,14,1,9,5,13,3,11,7,15],Je=s=>lr[s&15]<<4|lr[s>>4],F0=class{constructor(t){this._data=t,this._pos=t[i]*8}set position(t){this._pos=t}get position(){return this._pos}read(t){let r=Math.floor(this._pos/8),o=this._pos%8;return this._pos-=t,(Je(this._data[r-1])<<8)+Je(this._data[r])>>7-o&255}},mr=(s,t)=>{try{return s.getBigInt64(t,!0)}catch{let r=s.getUint8(t+7)&128?-1:1,o=s.getUint32(t,!0),e=s.getUint32(t+4,!0);return r===-1&&(o=~o+1,e=~e+1),e>1048575&&console.warn("This platform does not support BigInt"),r*(o+e*2**32)}};var Ke=class{constructor(t,r){this._onCodecHeader=t,this._onCodecUpdate=r,this[nt]()}[it](){this._isEnabled=!0}[nt](){this._headerCache=new Map,this._codecUpdateData=new WeakMap,this._codecHeaderSent=!1,this._codecShouldUpdate=!1,this._bitrate=null,this._isEnabled=!1}[S0](t,r){if(this._onCodecUpdate){this._bitrate!==t&&(this._bitrate=t,this._codecShouldUpdate=!0);let o=this._codecUpdateData.get(this._headerCache.get(this._currentHeader));this._codecShouldUpdate&&o&&this._onCodecUpdate({bitrate:t,...o},r),this._codecShouldUpdate=!1}}[S](t){let r=this._headerCache.get(t);return r&&this._updateCurrentHeader(t),r}[tt](t,r,o){this._isEnabled&&(this._codecHeaderSent||(this._onCodecHeader({...r}),this._codecHeaderSent=!0),this._updateCurrentHeader(t),this._headerCache.set(t,r),this._codecUpdateData.set(r,o))}_updateCurrentHeader(t){this._onCodecUpdate&&t!==this._currentHeader&&(this._codecShouldUpdate=!0,this._currentHeader=t)}};var B=new WeakMap,L=new WeakMap;var V=class{constructor(t,r){this._codecParser=t,this._headerCache=r}*[V0](){let t;do{if(t=yield*this.Frame[et](this._codecParser,this._headerCache,0),t)return t;this._codecParser[Q](1)}while(!0)}*[Ot](t){let r=yield*this[V0](),o=L.get(r)[i];if(t||this._codecParser._flushing||(yield*this.Header[S](this._codecParser,this._headerCache,o)))return this._headerCache[it](),this._codecParser[Q](o),this._codecParser[Ut](r),r;this._codecParser[ot](`Missing ${wt} at ${o} bytes from current position.`,`Dropping current ${wt} and trying again.`),this._headerCache[nt](),this._codecParser[Q](1)}};var Kt=class{constructor(t,r){L.set(this,{[W]:t}),this[w]=r}};var Z=class extends Kt{static*[et](t,r,o,e,n){let a=yield*t[S](o,e,n);if(a){let c=B.get(a)[G],u=B.get(a)[x],y=(yield*o[_](c,n))[b](0,c);return new r(a,y,u)}else return null}constructor(t,r,o){super(t,r),this[W]=t,this[x]=o,this[lt]=o/t[g]*1e3,this[kt]=null,this[jt]=null,this[Zt]=null,this[Jt]=null,L.get(this)[i]=r[i]}};var G0="unsynchronizationFlag",q0="extendedHeaderFlag",W0="experimentalFlag",j0="footerPresent",Xe=class s{static*getID3v2Header(t,r,o){let n={},a=yield*t[_](3,o);if(a[0]!==73||a[1]!==68||a[2]!==51||(a=yield*t[_](10,o),n[Bt]=`id3v2.${a[3]}.${a[4]}`,a[5]&15)||(n[G0]=!!(a[5]&128),n[q0]=!!(a[5]&64),n[W0]=!!(a[5]&32),n[j0]=!!(a[5]&16),a[6]&128||a[7]&128||a[8]&128||a[9]&128))return null;let c=a[6]<<21|a[7]<<14|a[8]<<7|a[9];return n[i]=10+c,new s(n)}constructor(t){this[Bt]=t[Bt],this[G0]=t[G0],this[q0]=t[q0],this[W0]=t[W0],this[j0]=t[j0],this[i]=t[i]}};var K=class{constructor(t){B.set(this,t),this[I]=t[I],this[U]=null,this[l]=t[l],this[T]=t[T],this[g]=t[g]}};var xr={0:[fe,fe,fe,fe,fe],16:[32,32,32,32,8],240:[E,E,E,E,E]},k0=(s,t,r)=>8*((s+r)%t+t)*(1<<(s+r)/t)-8*t*(t/8|0);for(let s=2;s<15;s++)xr[s<<4]=[s*32,k0(s,4,0),k0(s,4,-1),k0(s,8,4),k0(s,8,0)];var zr=0,Er=1,Vr=2,$r=3,dr=4,M0="bands ",P0=" to 31",fr={0:M0+4+P0,16:M0+8+P0,32:M0+12+P0,48:M0+16+P0},Xt="bitrateIndex",Ye="v2",A0="v1",H0="Intensity stereo ",v0=", MS stereo ",D0="on",R0="off",Gr={0:H0+R0+v0+R0,16:H0+D0+v0+R0,32:H0+R0+v0+D0,48:H0+D0+v0+D0},J0={0:{[p]:C},2:{[p]:"Layer III",[ut]:1,[_t]:Gr,[A0]:{[Xt]:Vr,[x]:1152},[Ye]:{[Xt]:dr,[x]:576}},4:{[p]:"Layer II",[ut]:1,[_t]:fr,[x]:1152,[A0]:{[Xt]:Er},[Ye]:{[Xt]:dr}},6:{[p]:"Layer I",[ut]:4,[_t]:fr,[x]:384,[A0]:{[Xt]:zr},[Ye]:{[Xt]:$r}}},Z0="MPEG Version ",br="ISO/IEC ",qr={0:{[p]:`${Z0}2.5 (later extension of MPEG 2)`,[$]:Ye,[g]:{0:h0,4:u0,8:ae,12:C}},8:{[p]:C},16:{[p]:`${Z0}2 (${br}13818-3)`,[$]:Ye,[g]:{0:ne,4:oe,8:ie,12:C}},24:{[p]:`${Z0}1 (${br}11172-3)`,[$]:A0,[g]:{0:re,4:vt,8:se,12:C}},length:i},Wr={0:w0,1:je},jr={0:je,1:"50/15 ms",2:C,3:"CCIT J.17"},gr={0:{[l]:2,[p]:Ht},64:{[l]:2,[p]:"joint "+Ht},128:{[l]:2,[p]:"dual channel"},192:{[l]:1,[p]:Pt}},Yt=class s extends K{static*[S](t,r,o){let e={},n=yield*Xe.getID3v2Header(t,r,o);n&&(yield*t[_](n[i],o),t[Q](n[i]));let a=yield*t[_](4,o),c=J(a[b](0,4)),u=r[S](c);if(u)return new s(u);if(a[0]!==255||a[1]<224)return null;let y=qr[a[1]&24];if(y[p]===C)return null;let F=a[1]&6;if(J0[F][p]===C)return null;let P={...J0[F],...J0[F][y[$]]};if(e[yt]=y[p],e[$]=P[p],e[x]=P[x],e[St]=Wr[a[1]&1],e[i]=4,e[U]=xr[a[2]&240][P[Xt]],e[U]===E||(e[g]=y[g][a[2]&12],e[g]===C)||(e[ut]=a[2]&2&&P[ut],e[xt]=!!(a[2]&1),e[G]=Math.floor(125*e[U]*e[x]/e[g]+e[ut]),!e[G]))return null;let q=a[3]&192;if(e[T]=gr[q][p],e[l]=gr[q][l],e[_t]=P[_t][a[3]&48],e[Re]=!!(a[3]&8),e[gt]=!!(a[3]&4),e[pe]=jr[a[3]&3],e[pe]===C)return null;e[I]=16;{let{length:ft,frameLength:Mt,samples:bt,...A}=e;r[tt](c,e,A)}return new s(e)}constructor(t){super(t),this[U]=t[U],this[pe]=t[pe],this[ut]=t[ut],this[Re]=t[Re],this[gt]=t[gt],this[xt]=t[xt],this[$]=t[$],this[_t]=t[_t],this[yt]=t[yt],this[St]=t[St]}};var Qe=class s extends Z{static*[et](t,r,o){return yield*super[et](Yt,s,t,r,o)}constructor(t,r,o){super(t,r,o)}};var t0=class extends V{constructor(t,r,o){super(t,r),this.Frame=Qe,this.Header=Yt,o(this[k])}get[k](){return m0}*[dt](){return yield*this[Ot]()}};var Jr={0:"MPEG-4",8:"MPEG-2"},Zr={0:"valid",2:E,4:E,6:E},Kr={0:w0,1:je},Xr={0:"AAC Main",64:"AAC LC (Low Complexity)",128:"AAC SSR (Scalable Sample Rate)",192:"AAC LTP (Long Term Prediction)"},Yr={0:l0,4:p0,8:nr,12:vt,16:re,20:se,24:oe,28:ne,32:ie,36:u0,40:h0,44:ae,48:ir,52:C,56:C,60:"frequency is written explicitly"},_r={0:{[l]:0,[p]:"Defined in AOT Specific Config"},64:{[l]:1,[p]:Pt},128:{[l]:2,[p]:H(2,h[0][0])},192:{[l]:3,[p]:H(3,h[1][3])},256:{[l]:4,[p]:H(4,h[1][3],h[3][4])},320:{[l]:5,[p]:H(5,h[1][3],h[3][0])},384:{[l]:6,[p]:H(6,h[1][3],h[3][0],at)},448:{[l]:8,[p]:H(8,h[1][3],h[2][0],h[3][0],at)}},Qt=class s extends K{static*[S](t,r,o){let e={},n=yield*t[_](7,o),a=J([n[0],n[1],n[2],n[3]&252|n[6]&3]),c=r[S](a);if(c)Object.assign(e,c);else{if(n[0]!==255||n[1]<240||(e[yt]=Jr[n[1]&8],e[$]=Zr[n[1]&6],e[$]===E))return null;let y=n[1]&1;e[St]=Kr[y],e[i]=y?7:9,e[d0]=n[2]&192,e[ht]=n[2]&60;let F=n[2]&2;if(e[Ne]=Xr[e[d0]],e[g]=Yr[e[ht]],e[g]===C)return null;e[xt]=!!F,e[ze]=(n[2]<<8|n[3])&448,e[T]=_r[e[ze]][p],e[l]=_r[e[ze]][l],e[gt]=!!(n[3]&32),e[Ae]=!!(n[3]&8),e[Ee]=!!(n[3]&8),e[Ve]=!!(n[3]&4),e[I]=16,e[x]=1024,e[Le]=n[6]&3;{let{length:P,channelModeBits:q,profileBits:ft,sampleRateBits:Mt,frameLength:bt,samples:A,numberAACFrames:Se,...I0}=e;r[tt](a,e,I0)}}if(e[G]=(n[3]<<11|n[4]<<3|n[5]>>5)&8191,!e[G])return null;let u=(n[5]<<6|n[6]>>2)&2047;return e[Pe]=u===2047?"VBR":u,new s(e)}constructor(t){super(t),this[Ee]=t[Ee],this[Ve]=t[Ve],this[Pe]=t[Pe],this[Ae]=t[Ae],this[gt]=t[gt],this[xt]=t[xt],this[$]=t[$],this[i]=t[i],this[yt]=t[yt],this[Le]=t[Le],this[Ne]=t[Ne],this[St]=t[St]}get audioSpecificConfig(){let t=B.get(this),r=t[d0]+64<<5|t[ht]<<5|t[ze]>>3,o=new z(2);return new zt(o[ct]).setUint16(0,r,!1),o}};var e0=class s extends Z{static*[et](t,r,o){return yield*super[et](Qt,s,t,r,o)}constructor(t,r,o){super(t,r,o)}};var r0=class extends V{constructor(t,r,o){super(t,r),this.Frame=e0,this.Header=Qt,o(this[k])}get[k](){return"aac"}*[dt](){return yield*this[Ot]()}};var Et=class s extends Z{static _getFrameFooterCrc16(t){return(t[t[i]-2]<<8)+t[t[i]-1]}static[C0](t){let r=s._getFrameFooterCrc16(t),o=ur(t[b](0,-2));return r===o}constructor(t,r,o){r[qe]=o,r[He]=s._getFrameFooterCrc16(t),super(r,t,B.get(r)[x])}};var yr="get from STREAMINFO metadata block",Qr={0:"Fixed",1:"Variable"},Sr={0:C,16:192};for(let s=2;s<16;s++)Sr[s<<4]=s<6?576*2**(s-2):2**s;var ts={0:yr,1:p0,2:or,3:sr,4:ae,5:ie,6:ne,7:oe,8:se,9:re,10:vt,11:l0,15:E},es={0:{[l]:1,[p]:Pt},16:{[l]:2,[p]:H(2,h[0][0])},32:{[l]:3,[p]:H(3,h[0][1])},48:{[l]:4,[p]:H(4,h[1][0],h[3][0])},64:{[l]:5,[p]:H(5,h[1][1],h[3][0])},80:{[l]:6,[p]:H(6,h[1][1],at,h[3][0])},96:{[l]:7,[p]:H(7,h[1][1],at,h[3][4],h[2][0])},112:{[l]:8,[p]:H(8,h[1][1],at,h[3][0],h[2][0])},128:{[l]:2,[p]:`${Ht} (left, diff)`},144:{[l]:2,[p]:`${Ht} (diff, right)`},160:{[l]:2,[p]:`${Ht} (avg, diff)`},176:C,192:C,208:C,224:C,240:C},rs={0:yr,2:8,4:12,6:C,8:16,10:20,12:24,14:C},Vt=class s extends K{static _decodeUTF8Int(t){if(t[0]>254)return null;if(t[0]<128)return{value:t[0],length:1};let r=1;for(let a=64;a&t[0];a>>=1)r++;let o=r-1,e=0,n=0;for(;o>0;n+=6,o--){if((t[o]&192)!==128)return null;e|=(t[o]&63)<<n}return e|=(t[o]&127>>r)<<n,{value:e,length:r}}static[rt](t,r){let o={[_]:function*(){return t}};return s[S](o,r,0).next().value}static*[S](t,r,o){let e=yield*t[_](6,o);if(e[0]!==255||!(e[1]===248||e[1]===249))return null;let n={},a=J(e[b](0,4)),c=r[S](a);if(c)Object.assign(n,c);else{if(n[b0]=e[1]&1,n[Oe]=Qr[n[b0]],n[Te]=e[2]&240,n[ht]=e[2]&15,n[Ct]=Sr[n[Te]],n[Ct]===C||(n[g]=ts[n[ht]],n[g]===E)||e[3]&1)return null;let y=es[e[3]&240];if(y===C||(n[l]=y[l],n[T]=y[p],n[I]=rs[e[3]&14],n[I]===C))return null}n[i]=5,e=yield*t[_](n[i]+8,o);let u=s._decodeUTF8Int(e[b](4));if(!u||(n[b0]?n[Ge]=u.value:n[kt]=u.value,n[i]+=u[i],n[Te]===96?(e[i]<n[i]&&(e=yield*t[_](n[i],o)),n[Ct]=e[n[i]-1]+1,n[i]+=1):n[Te]===112&&(e[i]<n[i]&&(e=yield*t[_](n[i],o)),n[Ct]=(e[n[i]-1]<<8)+e[n[i]]+1,n[i]+=2),n[x]=n[Ct],n[ht]===12?(e[i]<n[i]&&(e=yield*t[_](n[i],o)),n[g]=e[n[i]-1]*1e3,n[i]+=1):n[ht]===13?(e[i]<n[i]&&(e=yield*t[_](n[i],o)),n[g]=(e[n[i]-1]<<8)+e[n[i]],n[i]+=2):n[ht]===14&&(e[i]<n[i]&&(e=yield*t[_](n[i],o)),n[g]=((e[n[i]-1]<<8)+e[n[i]])*10,n[i]+=2),e[i]<n[i]&&(e=yield*t[_](n[i],o)),n[le]=e[n[i]-1],n[le]!==pr(e[b](0,n[i]-1))))return null;if(!c){let{blockingStrategyBits:y,frameNumber:F,sampleNumber:P,samples:q,sampleRateBits:ft,blockSizeBits:Mt,crc:bt,length:A,...Se}=n;r[tt](a,n,Se)}return new s(n)}constructor(t){super(t),this[He]=null,this[Oe]=t[Oe],this[Ct]=t[Ct],this[kt]=t[kt],this[Ge]=t[Ge],this[qe]=null}};var ss=2,os=512*1024,te=class extends V{constructor(t,r,o){super(t,r),this.Frame=Et,this.Header=Vt,o(this[k])}get[k](){return"flac"}*_getNextFrameSyncOffset(t){let r=yield*this._codecParser[_](2,0),o=r[i]-2;for(;t<o;){if(r[t]===255){let n=r[t+1];if(n===248||n===249)break;n!==255&&t++}t++}return t}*[dt](){do{let t=yield*Vt[S](this._codecParser,this._headerCache,0);if(t){let r=B.get(t)[i]+ss;for(;r<=os;){if(this._codecParser._flushing||(yield*Vt[S](this._codecParser,this._headerCache,r))){let o=yield*this._codecParser[_](r);if(this._codecParser._flushing||(o=o[b](0,r)),Et[C0](o)){let e=new Et(o,t);return this._headerCache[it](),this._codecParser[Q](r),this._codecParser[Ut](e),e}}r=yield*this._getNextFrameSyncOffset(r+1)}this._codecParser[ot](`Unable to sync FLAC frame after searching ${r} bytes.`),this._codecParser[Q](r)}else this._codecParser[Q](yield*this._getNextFrameSyncOffset(1))}while(!0)}[Tt](t){return t[R]===0?(this._headerCache[it](),this._streamInfo=t[w][b](13)):t[R]===1||(t[O]=L.get(t)[Y].map(r=>{let o=Vt[rt](r,this._headerCache);if(o)return new Et(r,o,this._streamInfo);this._codecParser[ot]("Failed to parse Ogg FLAC frame","Skipping invalid FLAC frame")}).filter(r=>!!r)),t}};var ee=class s{static*[S](t,r,o){let e={},n=yield*t[_](28,o);if(n[0]!==79||n[1]!==103||n[2]!==103||n[3]!==83||(e[z0]=n[4],n[5]&248))return null;e[j]=!!(n[5]&4),e[Rt]=!!(n[5]&2),e[Dt]=!!(n[5]&1);let c=new zt(z.from(n[b](0,28))[ct]);e[X]=mr(c,6),e[mt]=c.getInt32(14,!0),e[R]=c.getInt32(18,!0),e[Wt]=c.getInt32(22,!0);let u=n[26];e[i]=u+27,n=yield*t[_](e[i],o),e[G]=0,e[It]=[],e[me]=z.from(n[b](27,e[i]));for(let y=0,F=0;y<u;y++){let P=e[me][y];e[G]+=P,F+=P,(P!==255||y===u-1)&&(e[It].push(F),F=0)}return new s(e)}constructor(t){B.set(this,t),this[X]=t[X],this[Dt]=t[Dt],this[Rt]=t[Rt],this[j]=t[j],this[It]=t[It],this[R]=t[R],this[Wt]=t[Wt],this[mt]=t[mt]}};var s0=class s extends Kt{static*[et](t,r,o){let e=yield*ee[S](t,r,o);if(e){let n=B.get(e)[G],a=B.get(e)[i],c=a+n,u=(yield*t[_](c,0))[b](0,c),y=u[b](a,c);return new s(e,y,u)}else return null}constructor(t,r,o){super(t,r),L.get(this)[i]=o[i],this[O]=[],this[U0]=o,this[X]=t[X],this[ve]=t[Wt],this[lt]=0,this[Dt]=t[Dt],this[Rt]=t[Rt],this[j]=t[j],this[R]=t[R],this[x]=0,this[mt]=t[mt]}};var be=class extends Z{constructor(t,r,o){super(r,t,o)}};var Cr={0:we.slice(0,2),1:we},st="SILK-only",N="CELT-only",B0="Hybrid",$t="narrowband",L0="medium-band",Gt="wideband",ge="super-wideband",xe="fullband",ns={0:{[d]:st,[f]:$t,[m]:10},8:{[d]:st,[f]:$t,[m]:20},16:{[d]:st,[f]:$t,[m]:40},24:{[d]:st,[f]:$t,[m]:60},32:{[d]:st,[f]:L0,[m]:10},40:{[d]:st,[f]:L0,[m]:20},48:{[d]:st,[f]:L0,[m]:40},56:{[d]:st,[f]:L0,[m]:60},64:{[d]:st,[f]:Gt,[m]:10},72:{[d]:st,[f]:Gt,[m]:20},80:{[d]:st,[f]:Gt,[m]:40},88:{[d]:st,[f]:Gt,[m]:60},96:{[d]:B0,[f]:ge,[m]:10},104:{[d]:B0,[f]:ge,[m]:20},112:{[d]:B0,[f]:xe,[m]:10},120:{[d]:B0,[f]:xe,[m]:20},128:{[d]:N,[f]:$t,[m]:2.5},136:{[d]:N,[f]:$t,[m]:5},144:{[d]:N,[f]:$t,[m]:10},152:{[d]:N,[f]:$t,[m]:20},160:{[d]:N,[f]:Gt,[m]:2.5},168:{[d]:N,[f]:Gt,[m]:5},176:{[d]:N,[f]:Gt,[m]:10},184:{[d]:N,[f]:Gt,[m]:20},192:{[d]:N,[f]:ge,[m]:2.5},200:{[d]:N,[f]:ge,[m]:5},208:{[d]:N,[f]:ge,[m]:10},216:{[d]:N,[f]:ge,[m]:20},224:{[d]:N,[f]:xe,[m]:2.5},232:{[d]:N,[f]:xe,[m]:5},240:{[d]:N,[f]:xe,[m]:10},248:{[d]:N,[f]:xe,[m]:20}},_e=class s extends K{static[rt](t,r,o){let e={};if(e[l]=t[9],e[pt]=t[18],e[i]=e[pt]!==0?21+e[l]:19,t[i]<e[i])throw new Error("Out of data while inside an Ogg Page");let n=r[0]&3,a=n===3?2:1,c=J(t[b](0,e[i]))+J(r[b](0,a)),u=o[S](c);if(u)return new s(u);if(c.substr(0,8)!=="OpusHead"||t[8]!==1)return null;e[w]=z.from(t[b](0,e[i]));let y=new zt(e[w][ct]);if(e[I]=16,e[At]=y.getUint16(10,!0),e[$e]=y.getUint32(12,!0),e[g]=vt,e[ue]=y.getInt16(16,!0),e[pt]in Cr&&(e[T]=Cr[e[pt]][e[l]-1],!e[T]))return null;e[pt]!==0&&(e[de]=t[19],e[ce]=t[20],e[he]=[...t[b](21,e[l]+21)]);let F=ns[248&r[0]];switch(e[d]=F[d],e[f]=F[f],e[m]=F[m],n){case 0:e[Ft]=1;break;case 1:case 2:e[Ft]=2;break;case 3:e[Be]=!!(128&r[1]),e[De]=!!(64&r[1]),e[Ft]=63&r[1];break;default:return null}{let{length:P,data:q,channelMappingFamily:ft,...Mt}=e;o[tt](c,e,Mt)}return new s(e)}constructor(t){super(t),this[w]=t[w],this[f]=t[f],this[pt]=t[pt],this[he]=t[he],this[ce]=t[ce],this[Ft]=t[Ft],this[m]=t[m],this[De]=t[De],this[$e]=t[$e],this[Be]=t[Be],this[d]=t[d],this[ue]=t[ue],this[At]=t[At],this[de]=t[de]}};var o0=class extends V{constructor(t,r,o){super(t,r),this.Frame=be,this.Header=_e,o(this[k]),this._identificationHeader=null,this._preSkipRemaining=null}get[k](){return"opus"}[Tt](t){return t[R]===0?(this._headerCache[it](),this._identificationHeader=t[w]):t[R]===1||(t[O]=L.get(t)[Y].map(r=>{let o=_e[rt](this._identificationHeader,r,this._headerCache);if(o){this._preSkipRemaining===null&&(this._preSkipRemaining=o[At]);let e=o[m]*o[Ft]/1e3*o[g];return this._preSkipRemaining>0&&(this._preSkipRemaining-=e,e=this._preSkipRemaining<0?-this._preSkipRemaining:0),new be(r,o,e)}this._codecParser[y0]("Failed to parse Ogg Opus Header","Not a valid Ogg Opus file")})),t}};var ye=class extends Z{constructor(t,r,o){super(r,t,o)}};var K0={};for(let s=0;s<8;s++)K0[s+6]=2**(6+s);var n0=class s extends K{static[rt](t,r,o,e){if(t[i]<30)throw new Error("Out of data while inside an Ogg Page");let n=J(t[b](0,30)),a=r[S](n);if(a)return new s(a);let c={[i]:30};if(n.substr(0,7)!=="vorbis")return null;c[w]=z.from(t[b](0,30));let u=new zt(c[w][ct]);if(c[Bt]=u.getUint32(7,!0),c[Bt]!==0||(c[l]=t[11],c[T]=we[c[l]-1]||"application defined",c[g]=u.getUint32(12,!0),c[Fe]=u.getInt32(16,!0),c[Me]=u.getInt32(20,!0),c[ke]=u.getInt32(24,!0),c[Nt]=K0[(t[28]&240)>>4],c[Lt]=K0[t[28]&15],c[Lt]>c[Nt])||t[29]!==1)return null;c[I]=32,c[Ue]=e,c[Ie]=o;{let{length:y,data:F,version:P,vorbisSetup:q,vorbisComments:ft,...Mt}=c;r[tt](n,c,Mt)}return new s(c)}constructor(t){super(t),this[Fe]=t[Fe],this[ke]=t[ke],this[Me]=t[Me],this[Lt]=t[Lt],this[Nt]=t[Nt],this[w]=t[w],this[Ie]=t[Ie],this[Ue]=t[Ue]}};var i0=class extends V{constructor(t,r,o){super(t,r),this.Frame=ye,o(this[k]),this._identificationHeader=null,this._setupComplete=!1,this._prevBlockSize=null}get[k](){return qt}[Tt](t){t[O]=[];for(let r of L.get(t)[Y])if(r[0]===1)this._headerCache[it](),this._identificationHeader=t[w],this._setupComplete=!1;else if(r[0]===3)this._vorbisComments=r;else if(r[0]===5)this._vorbisSetup=r,this._mode=this._parseSetupHeader(r),this._setupComplete=!0;else if(this._setupComplete){let o=n0[rt](this._identificationHeader,this._headerCache,this._vorbisComments,this._vorbisSetup);o?t[O].push(new ye(r,o,this._getSamples(r,o))):this._codecParser[logError]("Failed to parse Ogg Vorbis Header","Not a valid Ogg Vorbis file")}return t}_getSamples(t,r){let e=this._mode.blockFlags[t[0]>>1&this._mode.mask]?r[Nt]:r[Lt],n=this._prevBlockSize===null?0:(this._prevBlockSize+e)/4;return this._prevBlockSize=e,n}_parseSetupHeader(t){let r=new F0(t),o={count:0,blockFlags:[]};for(;(r.read(1)&1)!==1;);let e;for(;o.count<64&&r.position>0;){Je(r.read(8));let n=0;for(;r.read(8)===0&&n++<3;);if(n===4)e=r.read(7),o.blockFlags.unshift(e&1),r.position+=6,o.count++;else{((Je(e)&126)>>1)+1!==o.count&&this._codecParser[ot]("vorbis derived mode count did not match actual mode count");break}}return o.mask=(1<<Math.log2(o.count))-1,o}};var X0=class{constructor(t,r,o){this._codecParser=t,this._headerCache=r,this._onCodec=o,this._continuedPacket=new z,this._codec=null,this._isSupported=null,this._previousAbsoluteGranulePosition=null}get[k](){return this._codec||""}_updateCodec(t,r){this._codec!==t&&(this._headerCache[nt](),this._parser=new r(this._codecParser,this._headerCache,this._onCodec),this._codec=t)}_checkCodecSupport({data:t}){let r=J(t[b](0,8));switch(r){case"fishead\0":return!1;case"OpusHead":return this._updateCodec("opus",o0),!0;case(/^\x7fFLAC/.test(r)&&r):return this._updateCodec("flac",te),!0;case(/^\x01vorbis/.test(r)&&r):return this._updateCodec(qt,i0),!0;default:return!1}}_checkPageSequenceNumber(t){t[R]!==this._pageSequenceNumber+1&&this._pageSequenceNumber>1&&t[R]>1&&this._codecParser[ot]("Unexpected gap in Ogg Page Sequence Number.",`Expected: ${this._pageSequenceNumber+1}, Got: ${t[R]}`),this._pageSequenceNumber=t[R]}_parsePage(t){this._isSupported===null&&(this._pageSequenceNumber=t[R],this._isSupported=this._checkCodecSupport(t)),this._checkPageSequenceNumber(t);let r=L.get(t),o=B.get(r[W]),e=0;if(r[Y]=o[It].map(n=>t[w][b](e,e+=n)),this._continuedPacket[i]&&(r[Y][0]=Ze(this._continuedPacket,r[Y][0]),this._continuedPacket=new z),o[me][o[me][i]-1]===255&&(this._continuedPacket=Ze(this._continuedPacket,r[Y].pop())),this._previousAbsoluteGranulePosition!==null&&(t[x]=Number(t[X]-this._previousAbsoluteGranulePosition)),this._previousAbsoluteGranulePosition=t[X],this._isSupported){let n=this._parser[Tt](t);return this._codecParser[Ut](n),n}else return t}},a0=class extends V{constructor(t,r,o){super(t,r),this._onCodec=o,this.Frame=s0,this.Header=ee,this._streams=new Map,this._currentSerialNumber=null}get[k](){let t=this._streams.get(this._currentSerialNumber);return t?t.codec:""}*[dt](){let t=yield*this[Ot](!0);this._currentSerialNumber=t[mt];let r=this._streams.get(this._currentSerialNumber);return r||(r=new X0(this._codecParser,this._headerCache,this._onCodec),this._streams.set(this._currentSerialNumber,r)),t[j]&&this._streams.delete(this._currentSerialNumber),r._parsePage(t)}};var Y0=()=>{},c0=class{constructor(t,{onCodec:r,onCodecHeader:o,onCodecUpdate:e,enableLogging:n=!1,enableFrameCRC32:a=!0}={}){this._inputMimeType=t,this._onCodec=r||Y0,this._onCodecHeader=o||Y0,this._onCodecUpdate=e,this._enableLogging=n,this._crc32=a?hr:Y0,this[nt]()}get[k](){return this._parser?this._parser[k]:""}[nt](){this._headerCache=new Ke(this._onCodecHeader,this._onCodecUpdate),this._generator=this._getGenerator(),this._generator.next()}*flush(){this._flushing=!0;for(let t=this._generator.next();t.value;t=this._generator.next())yield t.value;this._flushing=!1,this[nt]()}*parseChunk(t){for(let r=this._generator.next(t);r.value;r=this._generator.next())yield r.value}parseAll(t){return[...this.parseChunk(t),...this.flush()]}*_getGenerator(){if(this._inputMimeType.match(/aac/))this._parser=new r0(this,this._headerCache,this._onCodec);else if(this._inputMimeType.match(/mpeg/))this._parser=new t0(this,this._headerCache,this._onCodec);else if(this._inputMimeType.match(/flac/))this._parser=new te(this,this._headerCache,this._onCodec);else if(this._inputMimeType.match(/ogg/))this._parser=new a0(this,this._headerCache,this._onCodec);else throw new Error(`Unsupported Codec ${mimeType}`);for(this._frameNumber=0,this._currentReadPosition=0,this._totalBytesIn=0,this._totalBytesOut=0,this._totalSamples=0,this._sampleRate=void 0,this._rawData=new Uint8Array(0);;){let t=yield*this._parser[dt]();t&&(yield t)}}*[_](t=0,r=0){let o;for(;this._rawData[i]<=t+r;){if(o=yield,this._flushing)return this._rawData[b](r);o&&(this._totalBytesIn+=o[i],this._rawData=Ze(this._rawData,o))}return this._rawData[b](r)}[Q](t){this._currentReadPosition+=t,this._rawData=this._rawData[b](t)}[We](t){this._sampleRate=t[W][g],t[W][U]=t[lt]>0?Math.round(t[w][i]/t[lt])*8:0,t[kt]=this._frameNumber++,t[jt]=this._totalBytesOut,t[Zt]=this._totalSamples,t[Jt]=this._totalSamples/this._sampleRate*1e3,t[ve]=this._crc32(t[w]),this._headerCache[S0](t[W][U],t[Jt]),this._totalBytesOut+=t[w][i],this._totalSamples+=t[x]}[Ut](t){if(t[O]){if(t[j]){let r=t[x];t[O].forEach(o=>{let e=o[x];r<e&&(o[x]=r>0?r:0,o[lt]=o[x]/o[W][g]*1e3),r-=e,this[We](o)})}else t[x]=0,t[O].forEach(r=>{t[x]+=r[x],this[We](r)});t[lt]=t[x]/this._sampleRate*1e3||0,t[Zt]=this._totalSamples,t[Jt]=this._totalSamples/this._sampleRate*1e3||0,t[jt]=this._totalBytesOut}else this[We](t)}_log(t,r){if(this._enableLogging){let o=[`${k}: ${this[k]}`,`inputMimeType: ${this._inputMimeType}`,`readPosition: ${this._currentReadPosition}`,`totalBytesIn: ${this._totalBytesIn}`,`${jt}: ${this._totalBytesOut}`],e=Math.max(...o.map(n=>n[i]));r.push(`--stats--${"-".repeat(e-9)}`,...o,"-".repeat(e)),t("codec-parser",r.reduce((n,a)=>n+`
2
+ `+a,""))}}[ot](...t){this._log(console.warn,t)}[y0](...t){this._log(console.error,t)}};var wr=c0,Q0=X;var Fr=O,kr=ce;var Mr=w;var Pr=W;var Hr=j;var vr=ue,tr=At;var Dr=pt,Rr=he;var Ar=l;var Br=de;var er=Zt;var Lr=(s,t)=>s[t]===79&&s[t+1]===103&&s[t+2]===103&&s[t+3]===83;function is(s){let t=0;for(;t+27<=s.length;){if(!Lr(s,t)){let e=t+1;for(;e+4<=s.length&&!Lr(s,e);)e++;if(e+4>s.length)return Math.max(t,s.length-3);t=e;continue}let r=t+27+s[t+26],o=r;if(r>s.length)break;for(let e=t+27;e<r;e++)o+=s[e];if(o>s.length)break;t=o}return t}function Nr(){let s=null;return{push(t){let r=s?as(s,t):t,o=is(r);return s=o<r.length?r.slice(o):null,r.subarray(0,o)}}}function as(s,t){let r=new Uint8Array(s.length+t.length);return r.set(s),r.set(t,s.length),r}import{createOpusDecoder as cs}from"../core.js";var N0=Object.freeze({channelData:Object.freeze([]),sampleRate:0});async function ls(s){let t=s instanceof Uint8Array?s:new Uint8Array(s),r=await us();try{let o=r.decode(t),e=r.flush();return hs(o,e)}finally{r.free()}}var Ir={3:[0,2,1],5:[0,2,1,3,4],6:[0,2,1,5,3,4],7:[0,2,1,6,5,3,4],8:[0,2,1,7,5,6,3,4]},ps=(s,t)=>s===1&&Ir[t?.length]?Ir[t.length].map(r=>t[r]):t;async function us(){let s=await cs(),t=Nr(),r=new wr("application/ogg",{onCodec:F=>{if(F!=="opus")throw Error("@audio/decode-opus does not support this codec "+F)},enableFrameCRC32:!1}),o=!1,e=0,n=0,a=0,c=!1,u=!1,y=F=>{let P=[];for(let q of F){let ft=q[Fr],Mt=ft.length&&!o;if(ft.length){if(!o){let A=ft[0][Pr];s.configure({sampleRate:48e3,channels:A[Ar],streamCount:A[Br],coupledStreamCount:A[kr],channelMappingTable:ps(A[Dr],A[Rr]),preSkip:A[tr],outputGain:A[vr]}),o=!0,e=0,a=A[tr]}let bt=s.decodeFrames(ft.map(A=>A[Mr]));e+=bt.samplesDecoded,bt.channelData.length&&P.push(bt)}if(q[Hr]){if(q[Q0]!==void 0&&P.length){let bt=e-(Mt?Number(q[Q0])-a:q[er]-n);if(bt>0){let A=P[P.length-1],Se=Math.max(0,A.samplesDecoded-bt);A.channelData=A.channelData.map(I0=>I0.subarray(0,Se)),A.samplesDecoded=Se}}n=q[er],s.unconfigure(),o=!1,e=0}}return Ur(P)};return{decode(F){if(u)throw Error("Decoder already freed");if(c)throw Error("Decoder already flushed");if(!F)return N0;let P=F instanceof Uint8Array?F:new Uint8Array(F);return P.length?y([...r.parseChunk(t.push(P))]):N0},flush(){if(u||c)return N0;c=!0;try{return y([...r.flush()])}finally{r=null,s.unconfigure(),o=!1}},free(){u||(u=!0,r=null,s.free())}}}function Ur(s){if(!s.length)return N0;if(s.length===1)return s[0];let t=Math.max(...s.map(r=>r.channelData.length));return{errors:s.flatMap(r=>r.errors),channelData:Array.from({length:t},(r,o)=>{let e=s.reduce((c,u)=>c+u.channelData[o%u.channelData.length].length,0),n=new Float32Array(e),a=0;for(let c of s){let u=c.channelData[o%c.channelData.length];n.set(u,a),a+=u.length}return n}),samplesDecoded:s.reduce((r,o)=>r+o.samplesDecoded,0),sampleRate:s[0].sampleRate,bitDepth:32}}function hs(s,t){return t?.channelData?.length?s?.channelData?.length?Ur([s,t]):t:s}export{us as decoder,ls as default};
@@ -12,7 +12,7 @@ let result = dec.decode(completeQoaFile)
12
12
  dec.free()
13
13
  ```
14
14
 
15
- `decode()` and `decoder()` are synchronous. The decoder is stateless, so every chunk must contain a complete QOA file.
15
+ `decode()` and `decoder()` are synchronous. The decoder takes chunks of any size and returns the frames they complete (each QOA frame carries its own LMS state). A header with `samples: 0` is QOA's streaming mode: frames decode until the data ends.
16
16
 
17
17
  ## License
18
18
 
@@ -1,139 +1,4 @@
1
- // ../../node_modules/@thi.ng/errors/deferror.js
2
- var defError = (prefix, suffix = (msg) => msg !== void 0 ? ": " + msg : "") => class extends Error {
3
- origMessage;
4
- constructor(msg) {
5
- super(prefix(msg) + suffix(msg));
6
- this.origMessage = msg !== void 0 ? String(msg) : "";
7
- }
8
- };
9
-
10
- // ../../node_modules/@thi.ng/errors/illegal-arguments.js
11
- var IllegalArgumentError = defError(() => "illegal argument(s)");
12
- var illegalArgs = (msg) => {
13
- throw new IllegalArgumentError(msg);
14
- };
15
-
16
- // ../../node_modules/@thi.ng/errors/illegal-state.js
17
- var IllegalStateError = defError(() => "illegal state");
18
- var illegalState = (msg) => {
19
- throw new IllegalStateError(msg);
20
- };
21
-
22
- // ../../node_modules/@thi.ng/bitstream/input.js
23
- var U32 = 4294967296;
24
- var BitInputStream = class {
25
- buffer;
26
- start;
27
- limit;
28
- pos;
29
- bitPos;
30
- bit;
31
- constructor(buffer, offset = 0, limit = buffer.length << 3) {
32
- this.buffer = buffer;
33
- this.start = offset;
34
- this.limit = limit;
35
- this.seek(offset);
36
- }
37
- *[Symbol.iterator]() {
38
- let j = this.start;
39
- let i = j >>> 3;
40
- let b = 7 - (j & 7);
41
- while (j < this.limit) {
42
- yield this.buffer[i] >>> b & 1;
43
- if (--b < 0) {
44
- i++;
45
- b = 7;
46
- }
47
- j++;
48
- }
49
- }
50
- get length() {
51
- return this.limit;
52
- }
53
- get position() {
54
- return this.bitPos;
55
- }
56
- seek(pos) {
57
- if (pos < this.start || pos >= this.limit) {
58
- illegalArgs(`seek pos out of bounds: ${pos}`);
59
- }
60
- this.pos = pos >>> 3;
61
- this.bit = 8 - (pos & 7);
62
- this.bitPos = pos;
63
- return this;
64
- }
65
- read(wordSize = 1, safe = true) {
66
- if (wordSize > 32) {
67
- return this.read(wordSize - 32, safe) * U32 + this.read(32, safe);
68
- } else if (wordSize > 8) {
69
- let out = 0;
70
- let n = wordSize & -8;
71
- let msb = wordSize - n;
72
- if (msb > 0) {
73
- out = this._read(msb, safe);
74
- }
75
- while (n > 0) {
76
- out = (out << 8 | this._read(8, safe)) >>> 0;
77
- n -= 8;
78
- }
79
- return out;
80
- } else {
81
- return this._read(wordSize, safe);
82
- }
83
- }
84
- readFields(fields, safe = true) {
85
- return fields.map((word) => this.read(word, safe));
86
- }
87
- readWords(n, wordSize = 8, safe = true) {
88
- let out = [];
89
- while (n-- > 0) {
90
- out.push(this.read(wordSize, safe));
91
- }
92
- return out;
93
- }
94
- readStruct(fields, safe = true) {
95
- return fields.reduce((acc, [id, word]) => {
96
- return acc[id] = this.read(word, safe), acc;
97
- }, {});
98
- }
99
- readBit(safe = true) {
100
- safe && this.checkLimit(1);
101
- this.bit--;
102
- this.bitPos++;
103
- let out = this.buffer[this.pos] >>> this.bit & 1;
104
- if (this.bit === 0) {
105
- this.pos++;
106
- this.bit = 8;
107
- }
108
- return out;
109
- }
110
- _read(wordSize, safe = true) {
111
- safe && this.checkLimit(wordSize);
112
- let l = this.bit - wordSize, out;
113
- if (l >= 0) {
114
- this.bit = l;
115
- out = this.buffer[this.pos] >>> l & (1 << wordSize) - 1;
116
- if (l === 0) {
117
- this.pos++;
118
- this.bit = 8;
119
- }
120
- } else {
121
- out = (this.buffer[this.pos++] & (1 << this.bit) - 1) << -l;
122
- this.bit = 8 + l;
123
- out = out | this.buffer[this.pos] >>> this.bit;
124
- }
125
- this.bitPos += wordSize;
126
- return out;
127
- }
128
- checkLimit(requested) {
129
- if (this.bitPos + requested > this.limit) {
130
- illegalState(`can't read past EOF`);
131
- }
132
- }
133
- };
134
-
135
1
  // ../../node_modules/qoa-format/lib/common.js
136
- var QOA_MIN_FILESIZE = 16;
137
2
  var QOA_SLICE_LEN = 20;
138
3
  var QOA_SLICES_PER_FRAME = 256;
139
4
  var QOA_FRAME_LEN = QOA_SLICES_PER_FRAME * QOA_SLICE_LEN;
@@ -168,106 +33,93 @@ var qoa_dequant_tab = qoa_scalefactor_tab.map((sf) => {
168
33
  return dqt.map((dq) => qoa_round(dq * sf));
169
34
  });
170
35
 
171
- // ../../node_modules/qoa-format/decode.js
172
- function decodeHeader(stream) {
173
- const magic = stream.read(32);
174
- if (magic !== QOA_MAGIC) {
175
- throw new Error(`Not a QOA file; expected magic number 'qoaf'`);
176
- }
177
- const header = {
178
- samples: stream.read(32),
179
- channels: stream.read(8),
180
- sampleRate: stream.read(24)
36
+ // src/decode-qoa.src.js
37
+ var EMPTY = Object.freeze({ channelData: [], sampleRate: 0 });
38
+ function decodeQoa(src) {
39
+ let out = decoder().decode(src instanceof Uint8Array ? src : new Uint8Array(src));
40
+ if (!out.channelData.length) throw new Error("QOA: no complete frame");
41
+ return out;
42
+ }
43
+ function decoder() {
44
+ let buf = new Uint8Array(0), header = false, total = 0, done = 0, rate = 0;
45
+ return {
46
+ decode(chunk) {
47
+ if (!chunk?.byteLength) return EMPTY;
48
+ if (!(chunk instanceof Uint8Array)) chunk = new Uint8Array(chunk.buffer ?? chunk, chunk.byteOffset ?? 0, chunk.byteLength);
49
+ buf = buf.length ? concat(buf, chunk) : chunk;
50
+ let out = [], p = 0;
51
+ if (!header) {
52
+ if (buf.length < 8) return EMPTY;
53
+ let dv = new DataView(buf.buffer, buf.byteOffset);
54
+ if (dv.getUint32(0) !== QOA_MAGIC) throw new Error("Not a QOA file; expected magic number 'qoaf'");
55
+ total = dv.getUint32(4);
56
+ header = true;
57
+ p = 8;
58
+ }
59
+ while (p + 8 <= buf.length && (!total || done < total)) {
60
+ let size = buf[p + 6] << 8 | buf[p + 7];
61
+ if (size < 8 || p + size > buf.length) break;
62
+ let f = frame(buf, p, size);
63
+ rate = f.sampleRate;
64
+ if (total && done + f.samples > total) f.channelData = f.channelData.map((c) => c.subarray(0, total - done));
65
+ done += f.channelData[0].length;
66
+ out.push(f.channelData);
67
+ p += size;
68
+ }
69
+ buf = buf.subarray(p);
70
+ if (!out.length) return EMPTY;
71
+ return { channelData: out.length === 1 ? out[0] : out[0].map((_, c) => join(out.map((o) => o[c]))), sampleRate: rate };
72
+ },
73
+ flush: () => EMPTY,
74
+ free() {
75
+ buf = new Uint8Array(0);
76
+ }
181
77
  };
182
- stream.seek(64);
183
- return header;
184
78
  }
185
- function qoa_decode_frame(stream, audio, lmses, channelData, sampleOffset) {
186
- const channels = stream.read(8);
187
- const sampleRate = stream.read(24);
188
- const samples = stream.read(16);
189
- const frameSize = stream.read(16);
190
- const dataSize = Math.floor(frameSize - 8 - QOA_LMS_LEN * 4 * channels);
191
- const numSlices = Math.floor(dataSize / 8);
192
- const maxTotalSamples = numSlices * QOA_SLICE_LEN;
193
- if (channels != audio.channels || sampleRate != audio.sampleRate || samples * channels > maxTotalSamples) {
194
- throw new Error(`invalid frame header data`);
195
- }
79
+ function frame(b, p, size) {
80
+ let channels = b[p], sampleRate = b[p + 1] << 16 | b[p + 2] << 8 | b[p + 3], samples = b[p + 4] << 8 | b[p + 5];
81
+ let slices = Math.floor((size - 8 - QOA_LMS_LEN * 4 * channels) / 8);
82
+ if (!channels || samples * channels > slices * QOA_SLICE_LEN) throw new Error("QOA: invalid frame header data");
83
+ let dv = new DataView(b.buffer, b.byteOffset + p), o = 8, lmses = [];
196
84
  for (let c = 0; c < channels; c++) {
197
- const lms = lmses[c];
198
- for (let i = 0; i < QOA_LMS_LEN; i++) {
199
- let h = stream.read(16);
200
- lms.history[i] = h;
201
- }
202
- for (let i = 0; i < QOA_LMS_LEN; i++) {
203
- let w = stream.read(16);
204
- lms.weights[i] = w;
205
- }
206
- }
207
- for (let sample_index = 0; sample_index < samples; sample_index += QOA_SLICE_LEN) {
208
- for (let c = 0; c < channels; c++) {
209
- const scalefactor = stream.read(4);
210
- const table = qoa_dequant_tab[scalefactor];
211
- const slice_start = sample_index;
212
- const slice_end = Math.min(sample_index + QOA_SLICE_LEN, samples);
213
- const slice_count = slice_end - slice_start;
214
- const lms = lmses[c];
215
- const sampleData = channelData[c];
216
- let idx = sampleOffset + slice_start;
217
- const weights = lms.weights;
218
- const history = lms.history;
219
- let bitsRemaining = 60;
220
- for (let i = 0; i < slice_count; i++) {
221
- const predicted = qoa_lms_predict(weights, history);
222
- const quantized = stream.read(3);
223
- const dequantized = table[quantized];
224
- const reconstructed = qoa_clamp(predicted + dequantized, -32768, 32767);
225
- const sample = reconstructed < 0 ? reconstructed / 32768 : reconstructed / 32767;
226
- sampleData[idx++] = sample;
227
- qoa_lms_update(weights, history, reconstructed, dequantized);
228
- bitsRemaining -= 3;
229
- }
230
- if (bitsRemaining > 0) {
231
- stream.read(bitsRemaining);
85
+ let lms = LMS();
86
+ for (let i = 0; i < QOA_LMS_LEN; i++, o += 2) lms.history[i] = dv.getInt16(o);
87
+ for (let i = 0; i < QOA_LMS_LEN; i++, o += 2) lms.weights[i] = dv.getInt16(o);
88
+ lmses.push(lms);
89
+ }
90
+ let channelData = Array.from({ length: channels }, () => new Float32Array(samples));
91
+ for (let s = 0; s < samples; s += QOA_SLICE_LEN) {
92
+ for (let c = 0; c < channels; c++, o += 8) {
93
+ let hi = dv.getUint32(o), lo = dv.getUint32(o + 4), table = qoa_dequant_tab[hi >>> 28];
94
+ let { weights, history } = lmses[c], out = channelData[c], n = Math.min(QOA_SLICE_LEN, samples - s);
95
+ for (let i = 0; i < n; i++) {
96
+ let sh = 57 - 3 * i;
97
+ let q = sh >= 32 ? hi >>> sh - 32 & 7 : sh + 3 <= 32 ? lo >>> sh & 7 : (hi << 32 - sh | lo >>> sh) & 7;
98
+ let predicted = qoa_lms_predict(weights, history), dequantized = table[q];
99
+ let r = qoa_clamp(predicted + dequantized, -32768, 32767);
100
+ out[s + i] = r < 0 ? r / 32768 : r / 32767;
101
+ qoa_lms_update(weights, history, r, dequantized);
232
102
  }
233
103
  }
234
104
  }
235
- return samples;
105
+ return { channelData, sampleRate, samples };
236
106
  }
237
- function decode(data) {
238
- if (data.byteLength < QOA_MIN_FILESIZE) {
239
- throw new Error(`QOA file size must be >= ${QOA_MIN_FILESIZE}`);
240
- }
241
- const stream = new BitInputStream(data);
242
- const audio = decodeHeader(stream);
243
- const channelData = [];
244
- const lmses = [];
245
- for (let c = 0; c < audio.channels; c++) {
246
- const d = new Float32Array(audio.samples);
247
- channelData.push(d);
248
- lmses.push(LMS());
249
- }
250
- let sampleIndex = 0;
251
- let frameLen = 0;
252
- do {
253
- frameLen = qoa_decode_frame(stream, audio, lmses, channelData, sampleIndex);
254
- sampleIndex += frameLen;
255
- } while (frameLen && sampleIndex < audio.samples);
256
- return {
257
- ...audio,
258
- channelData
259
- };
107
+ function concat(a, b) {
108
+ let o = new Uint8Array(a.length + b.length);
109
+ o.set(a);
110
+ o.set(b, a.length);
111
+ return o;
260
112
  }
261
-
262
- // src/decode-qoa.src.js
263
- var decodeQoa = (src) => decode(src instanceof Uint8Array ? src : new Uint8Array(src));
264
- function decoder() {
265
- return {
266
- decode: decodeQoa,
267
- flush: () => ({ channelData: [], sampleRate: 0 }),
268
- free: () => {
269
- }
270
- };
113
+ function join(parts) {
114
+ let n = 0;
115
+ for (let p of parts) n += p.length;
116
+ let o = new Float32Array(n);
117
+ n = 0;
118
+ for (let p of parts) {
119
+ o.set(p, n);
120
+ n += p.length;
121
+ }
122
+ return o;
271
123
  }
272
124
  export {
273
125
  decoder,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@audio/decode-qoa",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "Decode QOA audio to PCM samples",
5
5
  "type": "module",
6
6
  "main": "decode-qoa.js",
@@ -2768,10 +2768,10 @@ var OggVorbisDecoder = class {
2768
2768
  free() {
2769
2769
  this._decoder.free();
2770
2770
  }
2771
- async decodeOggPages(oggPages) {
2771
+ async decodeOggPages(oggPages2) {
2772
2772
  const packets = [];
2773
- for (let i = 0; i < oggPages.length; i++) {
2774
- const oggPage2 = oggPages[i];
2773
+ for (let i = 0; i < oggPages2.length; i++) {
2774
+ const oggPage2 = oggPages2[i];
2775
2775
  if (this._vorbisSetupInProgress) {
2776
2776
  if (oggPage2[data2][0] === 1) {
2777
2777
  this._decoder.sendSetupHeader(oggPage2[data2]);
@@ -2787,7 +2787,7 @@ var OggVorbisDecoder = class {
2787
2787
  }
2788
2788
  const decoded = await this._decoder.decodePackets(packets);
2789
2789
  this._totalSamplesDecoded += decoded.samplesDecoded;
2790
- const oggPage = oggPages[oggPages.length - 1];
2790
+ const oggPage = oggPages2[oggPages2.length - 1];
2791
2791
  if (oggPage && oggPage[isLastPage2]) {
2792
2792
  const samplesToTrim = this._totalSamplesDecoded - oggPage[totalSamples2];
2793
2793
  if (samplesToTrim > 0) {
@@ -2819,8 +2819,46 @@ var OggVorbisDecoder = class {
2819
2819
  }
2820
2820
  };
2821
2821
 
2822
+ // ../_build/ogg.js
2823
+ var isPage = (b, o) => b[o] === 79 && b[o + 1] === 103 && b[o + 2] === 103 && b[o + 3] === 83;
2824
+ function whole(buf) {
2825
+ let o = 0;
2826
+ while (o + 27 <= buf.length) {
2827
+ if (!isPage(buf, o)) {
2828
+ let k = o + 1;
2829
+ while (k + 4 <= buf.length && !isPage(buf, k)) k++;
2830
+ if (k + 4 > buf.length) return Math.max(o, buf.length - 3);
2831
+ o = k;
2832
+ continue;
2833
+ }
2834
+ let body = o + 27 + buf[o + 26], end = body;
2835
+ if (body > buf.length) break;
2836
+ for (let i = o + 27; i < body; i++) end += buf[i];
2837
+ if (end > buf.length) break;
2838
+ o = end;
2839
+ }
2840
+ return o;
2841
+ }
2842
+ function oggPages() {
2843
+ let tail = null;
2844
+ return {
2845
+ push(chunk) {
2846
+ let buf = tail ? concat(tail, chunk) : chunk, n = whole(buf);
2847
+ tail = n < buf.length ? buf.slice(n) : null;
2848
+ return buf.subarray(0, n);
2849
+ }
2850
+ };
2851
+ }
2852
+ function concat(a, b) {
2853
+ let out = new Uint8Array(a.length + b.length);
2854
+ out.set(a);
2855
+ out.set(b, a.length);
2856
+ return out;
2857
+ }
2858
+
2822
2859
  // src/decode-vorbis.src.js
2823
2860
  var EMPTY = Object.freeze({ channelData: Object.freeze([]), sampleRate: 0 });
2861
+ var ORDER = { 3: [0, 2, 1], 5: [0, 2, 1, 3, 4], 6: [0, 2, 1, 5, 3, 4], 7: [0, 2, 1, 6, 5, 3, 4], 8: [0, 2, 1, 7, 5, 6, 3, 4] };
2824
2862
  async function decode(src) {
2825
2863
  let buf = src instanceof Uint8Array ? src : new Uint8Array(src);
2826
2864
  let dec = await decoder();
@@ -2854,7 +2892,7 @@ async function decoder() {
2854
2892
  },
2855
2893
  enableFrameCRC32: false
2856
2894
  });
2857
- let parser = createParser(), setup = true, total2 = 0, fresh = true;
2895
+ let parser = createParser(), pages = oggPages(), setup = true, total2 = 0, fresh = true;
2858
2896
  let resetPending = false, ended = false, freed = false;
2859
2897
  let resetCodec = () => {
2860
2898
  if (wasm.HEAP.byteLength < initialMemory.length)
@@ -2866,15 +2904,16 @@ async function decoder() {
2866
2904
  let startStream = () => {
2867
2905
  resetCodec();
2868
2906
  parser = createParser();
2907
+ pages = oggPages();
2869
2908
  setup = true;
2870
2909
  total2 = 0;
2871
2910
  fresh = true;
2872
2911
  resetPending = false;
2873
2912
  };
2874
- let decodePages = (pages) => {
2875
- if (!pages.length) return null;
2913
+ let decodePages = (pages2) => {
2914
+ if (!pages2.length) return null;
2876
2915
  let packets = [];
2877
- for (let page3 of pages) {
2916
+ for (let page3 of pages2) {
2878
2917
  if (setup) {
2879
2918
  if (page3[data2][0] === 1) codec2.sendSetupHeader(page3[data2]);
2880
2919
  if (page3[codecFrames2].length) {
@@ -2888,8 +2927,10 @@ async function decoder() {
2888
2927
  }
2889
2928
  if (!packets.length) return null;
2890
2929
  let decoded = codec2.decodePackets(packets);
2930
+ let order = ORDER[decoded.channelData.length];
2931
+ if (order) decoded.channelData = order.map((i) => decoded.channelData[i]);
2891
2932
  total2 += decoded.samplesDecoded;
2892
- let page2 = pages[pages.length - 1];
2933
+ let page2 = pages2[pages2.length - 1];
2893
2934
  if (page2?.[isLastPage2]) {
2894
2935
  let trim = total2 - page2[totalSamples2];
2895
2936
  if (trim > 0) {
@@ -2916,7 +2957,7 @@ async function decoder() {
2916
2957
  return hasAudio(r2) ? r2 : EMPTY;
2917
2958
  }
2918
2959
  fresh = false;
2919
- let r = decodePages([...parser.parseChunk(buf)]);
2960
+ let r = decodePages([...parser.parseChunk(pages.push(buf))]);
2920
2961
  return hasAudio(r) ? r : EMPTY;
2921
2962
  };
2922
2963
  upstream.flush = () => {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@audio/decode-vorbis",
3
- "version": "1.3.2",
3
+ "version": "1.3.4",
4
4
  "description": "Decode Ogg Vorbis audio with libvorbis WASM",
5
5
  "type": "module",
6
6
  "main": "decode-vorbis.js",