@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.
- package/dist/.setup/{action-runtime-CE3zGstN.mjs → action-runtime-DUSkWTiZ.mjs} +2 -2
- package/dist/.setup/{agent-tools-login-B7VEvJO7.mjs → agent-tools-login-CB7OQbli.mjs} +5 -15
- package/dist/.setup/{approval-handler.runtime-CKposl6w.mjs → approval-handler.runtime-BEaAKSoU.mjs} +3 -3
- package/dist/.setup/{approval-reactions-CD6CDF9k.mjs → approval-reactions-CWkZ_ham.mjs} +7 -16
- package/dist/.setup/audio-preflight.runtime-Dg8oZgre.mjs +2 -0
- package/dist/.setup/{auth-store-D2rN-hP5.mjs → auth-store-DOBi5BPe.mjs} +10 -11
- package/dist/.setup/{channel-DNgKHMCz.mjs → channel-DcHw3Up2.mjs} +136 -135
- package/dist/.setup/{channel-react-action-BaBV9X6M.mjs → channel-react-action-C5E8_iDk.mjs} +3 -3
- package/dist/.setup/{channel.runtime-BniF8Swm.mjs → channel.runtime-DTj-wkEP.mjs} +5 -11
- package/dist/.setup/channel.setup-BJWEyQlF.mjs +5 -0
- package/dist/.setup/{connection-controller-COkcq48K.mjs → connection-controller-CejM7bhn.mjs} +50 -84
- package/dist/.setup/{directory-config-RYQomHyB.mjs → directory-config-DPLTUAqy.mjs} +22 -29
- package/dist/.setup/{group-session-key-BV8Le9r8.mjs → group-session-key-BbTPosdy.mjs} +12 -18
- package/dist/.setup/{login-CV_4V021.mjs → login-DUx5JYuW.mjs} +3 -3
- package/dist/.setup/{login-qr-DFhGc5yH.mjs → login-qr-BAWbPonj.mjs} +24 -45
- package/dist/.setup/{monitor-B5DS4PDV.mjs → monitor-CmXEQad9.mjs} +218 -367
- package/dist/.setup/{normalize-target-BGra1ZnM.mjs → normalize-target-D67Kc3g6.mjs} +5 -8
- package/dist/.setup/{question-reactions-LMeijbaq.mjs → question-reactions-DywNaX8m.mjs} +3 -10
- package/dist/.setup/reaction-target-CSPO7gtu.mjs +11 -0
- package/dist/.setup/{resolve-outbound-target-CzyNKmrl.mjs → resolve-outbound-target-qikGL4r0.mjs} +3 -4
- package/dist/.setup/{send-CGUsUdoX.mjs → send-CLBfAzd6.mjs} +34 -42
- package/dist/.setup/{send-api-B03VDwZ1.mjs → send-api-COzRvqXx.mjs} +28 -60
- package/dist/.setup/{setup-finalize-GtBmrO8p.mjs → setup-finalize-DSiP_-wa.mjs} +53 -69
- package/dist/.setup/setup-plugin-api-8WdNCjRW.mjs +3 -0
- package/dist/.setup/{setup-surface-BuA39k6K.mjs → setup-surface-C_flQyHy.mjs} +2 -2
- package/dist/.setup/{shared-CP_zs2U7.mjs → shared-SqcOkt51.mjs} +4 -4
- package/dist/.setup/{socket-close-DU7eerAa.mjs → socket-close-C9OU9mVN.mjs} +67 -86
- package/dist/.setup/{targets-runtime-Dls-Xh4F.mjs → targets-runtime-D5ryyPxh.mjs} +16 -25
- package/dist/action-runtime-api.js +1 -1
- package/dist/action-runtime.runtime.js +1 -1
- package/dist/agent-tools-api.js +4 -8
- package/dist/api.js +13 -15
- package/dist/channel-plugin-api.js +1 -1
- package/dist/contract-api.js +1 -1
- package/dist/directory-contract-api.js +1 -1
- package/dist/doctor-contract-api.js +12 -32
- package/dist/light-runtime-api.js +2 -2
- package/dist/login-qr-runtime.js +2 -4
- package/dist/runtime-api.js +8 -8
- package/dist/setup-entry.js +1 -1
- package/dist/setup-plugin-api.js +1 -1
- package/node_modules/audio-decode/node_modules/@audio/decode/package.json +7 -7
- package/node_modules/audio-decode/node_modules/@audio/decode/readme.md +2 -1
- package/node_modules/audio-decode/node_modules/@audio/decode-aac/README.md +10 -0
- package/node_modules/audio-decode/node_modules/@audio/decode-aac/decode-aac.d.ts +22 -0
- package/node_modules/audio-decode/node_modules/@audio/decode-aac/decode-aac.js +142 -7
- package/node_modules/audio-decode/node_modules/@audio/decode-aac/package.json +1 -1
- package/node_modules/audio-decode/node_modules/@audio/decode-caf/README.md +2 -0
- package/node_modules/audio-decode/node_modules/@audio/decode-caf/decode-caf.js +4 -1
- package/node_modules/audio-decode/node_modules/@audio/decode-caf/package.json +1 -1
- package/node_modules/audio-decode/node_modules/@audio/decode-flac/decode-flac.js +161 -29
- package/node_modules/audio-decode/node_modules/@audio/decode-flac/package.json +1 -1
- package/node_modules/audio-decode/node_modules/@audio/decode-mp4/README.md +1 -1
- package/node_modules/audio-decode/node_modules/@audio/decode-mp4/decode-mp4.js +127 -28
- package/node_modules/audio-decode/node_modules/@audio/decode-mp4/package.json +3 -3
- package/node_modules/audio-decode/node_modules/@audio/decode-opus/package.json +1 -1
- package/node_modules/audio-decode/node_modules/@audio/decode-opus/src/decode-opus.js +2 -2
- package/node_modules/audio-decode/node_modules/@audio/decode-qoa/README.md +1 -1
- package/node_modules/audio-decode/node_modules/@audio/decode-qoa/decode-qoa.js +79 -227
- package/node_modules/audio-decode/node_modules/@audio/decode-qoa/package.json +1 -1
- package/node_modules/audio-decode/node_modules/@audio/decode-vorbis/decode-vorbis.js +51 -10
- package/node_modules/audio-decode/node_modules/@audio/decode-vorbis/package.json +1 -1
- package/node_modules/audio-decode/node_modules/@audio/decode-wav/decode-wav.js +40 -18
- package/node_modules/audio-decode/node_modules/@audio/decode-wav/package.json +1 -1
- package/node_modules/audio-decode/node_modules/@audio/decode-wma/LICENSE.ffmpeg +502 -0
- package/node_modules/audio-decode/node_modules/@audio/decode-wma/README.md +5 -5
- package/node_modules/audio-decode/node_modules/@audio/decode-wma/decode-wma.js +15 -3
- package/node_modules/audio-decode/node_modules/@audio/decode-wma/package.json +5 -4
- package/node_modules/audio-decode/node_modules/@audio/decode-wma/src/wma.wasm.js +0 -0
- package/node_modules/audio-decode/node_modules/audio-type/audio-type.js +13 -0
- package/node_modules/audio-decode/node_modules/audio-type/package.json +1 -1
- package/node_modules/audio-decode/node_modules/audio-type/readme.md +1 -1
- package/node_modules/baileys/lib/Utils/messages-media.js +7 -11
- package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/react-native/diagnostics-channel-react-native.d.ts.map +1 -0
- package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/react-native/diagnostics-channel-react-native.js.map +1 -0
- package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/react-native/diagnostics-channel.d.ts +5 -0
- package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/react-native/diagnostics-channel.js +7 -0
- package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/react-native/index.d.ts +1400 -0
- package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/react-native/index.d.ts.map +1 -0
- package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/react-native/index.js +1733 -0
- package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/react-native/index.js.map +1 -0
- package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/react-native/perf.d.ts +12 -0
- package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/react-native/perf.d.ts.map +1 -0
- package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/react-native/perf.js +10 -0
- package/node_modules/baileys/node_modules/lru-cache/dist/commonjs/react-native/perf.js.map +1 -0
- package/node_modules/baileys/node_modules/lru-cache/dist/esm/react-native/diagnostics-channel-react-native.d.ts.map +1 -0
- package/node_modules/baileys/node_modules/lru-cache/dist/esm/react-native/diagnostics-channel-react-native.js.map +1 -0
- package/node_modules/baileys/node_modules/lru-cache/dist/esm/react-native/diagnostics-channel.d.ts +5 -0
- package/node_modules/baileys/node_modules/lru-cache/dist/esm/react-native/diagnostics-channel.js +4 -0
- package/node_modules/baileys/node_modules/lru-cache/dist/esm/react-native/index.d.ts +1400 -0
- package/node_modules/baileys/node_modules/lru-cache/dist/esm/react-native/index.d.ts.map +1 -0
- package/node_modules/baileys/node_modules/lru-cache/dist/esm/react-native/index.js +1729 -0
- package/node_modules/baileys/node_modules/lru-cache/dist/esm/react-native/index.js.map +1 -0
- package/node_modules/baileys/node_modules/lru-cache/dist/esm/react-native/perf.d.ts +12 -0
- package/node_modules/baileys/node_modules/lru-cache/dist/esm/react-native/perf.d.ts.map +1 -0
- package/node_modules/baileys/node_modules/lru-cache/dist/esm/react-native/perf.js +7 -0
- package/node_modules/baileys/node_modules/lru-cache/dist/esm/react-native/perf.js.map +1 -0
- package/node_modules/baileys/node_modules/lru-cache/package.json +27 -1
- package/node_modules/baileys/node_modules/music-metadata/README.md +35 -32
- package/node_modules/baileys/node_modules/music-metadata/lib/ParserFactory.d.ts +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/ParserFactory.js +17 -13
- package/node_modules/baileys/node_modules/music-metadata/lib/aiff/AiffParser.js +19 -12
- package/node_modules/baileys/node_modules/music-metadata/lib/aiff/AiffToken.d.ts +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/aiff/AiffToken.js +2 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/apev2/APEv2Parser.d.ts +4 -3
- package/node_modules/baileys/node_modules/music-metadata/lib/apev2/APEv2Parser.js +59 -16
- package/node_modules/baileys/node_modules/music-metadata/lib/apev2/APEv2TagMapper.js +1 -0
- package/node_modules/baileys/node_modules/music-metadata/lib/apev2/APEv2Token.d.ts +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/apev2/APEv2Token.js +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/asf/AsfGuid.js +56 -50
- package/node_modules/baileys/node_modules/music-metadata/lib/asf/AsfObject.d.ts +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/asf/AsfObject.js +3 -2
- package/node_modules/baileys/node_modules/music-metadata/lib/asf/AsfParser.js +15 -7
- package/node_modules/baileys/node_modules/music-metadata/lib/asf/AsfTagMapper.d.ts +3 -2
- package/node_modules/baileys/node_modules/music-metadata/lib/asf/AsfTagMapper.js +21 -4
- package/node_modules/baileys/node_modules/music-metadata/lib/common/CaseInsensitiveTagMap.d.ts +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/common/CombinedTagMapper.d.ts +2 -2
- package/node_modules/baileys/node_modules/music-metadata/lib/common/CombinedTagMapper.js +6 -6
- package/node_modules/baileys/node_modules/music-metadata/lib/common/FourCC.js +3 -2
- package/node_modules/baileys/node_modules/music-metadata/lib/common/GenericTagMapper.d.ts +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/common/GenericTagTypes.js +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/common/MetadataCollector.d.ts +3 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/common/MetadataCollector.js +28 -9
- package/node_modules/baileys/node_modules/music-metadata/lib/common/Util.js +25 -17
- package/node_modules/baileys/node_modules/music-metadata/lib/core.d.ts +4 -4
- package/node_modules/baileys/node_modules/music-metadata/lib/core.js +18 -11
- package/node_modules/baileys/node_modules/music-metadata/lib/dsdiff/DsdiffParser.js +29 -16
- package/node_modules/baileys/node_modules/music-metadata/lib/dsf/DsfChunk.d.ts +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/dsf/DsfParser.js +3 -5
- package/node_modules/baileys/node_modules/music-metadata/lib/ebml/EbmlIterator.d.ts +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/ebml/EbmlIterator.js +35 -6
- package/node_modules/baileys/node_modules/music-metadata/lib/ebml/types.d.ts +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/ebml/types.js +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/flac/FlacParser.d.ts +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/flac/FlacParser.js +6 -5
- package/node_modules/baileys/node_modules/music-metadata/lib/flac/FlacToken.d.ts +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/flac/FlacToken.js +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/id3v1/ID3v1Parser.d.ts +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/id3v1/ID3v1Parser.js +212 -42
- package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/AbstractID3Parser.js +5 -5
- package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/FrameHeader.d.ts +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/FrameHeader.js +8 -5
- package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/FrameParser.d.ts +2 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/FrameParser.js +54 -23
- package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/ID3v22TagMapper.d.ts +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/ID3v22TagMapper.js +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/ID3v24TagMapper.js +3 -3
- package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/ID3v2ChapterToken.js +2 -2
- package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/ID3v2Parser.d.ts +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/ID3v2Parser.js +32 -16
- package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/ID3v2Token.d.ts +2 -2
- package/node_modules/baileys/node_modules/music-metadata/lib/id3v2/ID3v2Token.js +2 -3
- package/node_modules/baileys/node_modules/music-metadata/lib/index.js +6 -3
- package/node_modules/baileys/node_modules/music-metadata/lib/lrc/LyricsParser.js +3 -5
- package/node_modules/baileys/node_modules/music-metadata/lib/matroska/MatroskaDtd.js +7 -3
- package/node_modules/baileys/node_modules/music-metadata/lib/matroska/MatroskaParser.js +22 -11
- package/node_modules/baileys/node_modules/music-metadata/lib/matroska/types.d.ts +2 -2
- package/node_modules/baileys/node_modules/music-metadata/lib/mp4/Atom.d.ts +4 -3
- package/node_modules/baileys/node_modules/music-metadata/lib/mp4/Atom.js +44 -11
- package/node_modules/baileys/node_modules/music-metadata/lib/mp4/AtomToken.d.ts +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/mp4/AtomToken.js +30 -8
- package/node_modules/baileys/node_modules/music-metadata/lib/mp4/MP4Parser.d.ts +2 -0
- package/node_modules/baileys/node_modules/music-metadata/lib/mp4/MP4Parser.js +79 -54
- package/node_modules/baileys/node_modules/music-metadata/lib/mp4/MP4TagMapper.d.ts +2 -2
- package/node_modules/baileys/node_modules/music-metadata/lib/mpeg/MpegLoader.js +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/mpeg/MpegParser.js +41 -19
- package/node_modules/baileys/node_modules/music-metadata/lib/mpeg/ReplayGainDataFormat.d.ts +2 -2
- package/node_modules/baileys/node_modules/music-metadata/lib/mpeg/ReplayGainDataFormat.js +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/mpeg/XingTag.d.ts +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/musepack/MusepackParser.js +2 -2
- package/node_modules/baileys/node_modules/music-metadata/lib/musepack/sv7/BitReader.js +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/musepack/sv7/MpcSv7Parser.js +4 -3
- package/node_modules/baileys/node_modules/music-metadata/lib/musepack/sv7/StreamVersion7.js +3 -3
- package/node_modules/baileys/node_modules/music-metadata/lib/musepack/sv8/MpcSv8Parser.js +7 -5
- package/node_modules/baileys/node_modules/music-metadata/lib/musepack/sv8/StreamVersion8.js +2 -2
- package/node_modules/baileys/node_modules/music-metadata/lib/ogg/OggParser.js +23 -13
- package/node_modules/baileys/node_modules/music-metadata/lib/ogg/OggToken.d.ts +2 -0
- package/node_modules/baileys/node_modules/music-metadata/lib/ogg/OggToken.js +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/ogg/flac/FlacStream.d.ts +2 -2
- package/node_modules/baileys/node_modules/music-metadata/lib/ogg/flac/FlacStream.js +2 -2
- package/node_modules/baileys/node_modules/music-metadata/lib/ogg/opus/OpusStream.d.ts +2 -2
- package/node_modules/baileys/node_modules/music-metadata/lib/ogg/opus/OpusStream.js +8 -4
- package/node_modules/baileys/node_modules/music-metadata/lib/ogg/speex/SpeexStream.d.ts +2 -2
- package/node_modules/baileys/node_modules/music-metadata/lib/ogg/speex/SpeexStream.js +2 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/ogg/theora/TheoraStream.d.ts +2 -2
- package/node_modules/baileys/node_modules/music-metadata/lib/ogg/vorbis/Vorbis.d.ts +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/ogg/vorbis/VorbisDecoder.js +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/ogg/vorbis/VorbisStream.d.ts +4 -3
- package/node_modules/baileys/node_modules/music-metadata/lib/ogg/vorbis/VorbisStream.js +16 -9
- package/node_modules/baileys/node_modules/music-metadata/lib/ogg/vorbis/VorbisTagMapper.js +4 -0
- package/node_modules/baileys/node_modules/music-metadata/lib/riff/RiffChunk.d.ts +3 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/riff/RiffChunk.js +3 -2
- package/node_modules/baileys/node_modules/music-metadata/lib/riff/RiffInfoTagMap.d.ts +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/type.d.ts +3 -3
- package/node_modules/baileys/node_modules/music-metadata/lib/type.js +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/wav/WaveChunk.d.ts +1 -1
- package/node_modules/baileys/node_modules/music-metadata/lib/wav/WaveChunk.js +3 -2
- package/node_modules/baileys/node_modules/music-metadata/lib/wav/WaveParser.d.ts +6 -2
- package/node_modules/baileys/node_modules/music-metadata/lib/wav/WaveParser.js +75 -22
- package/node_modules/baileys/node_modules/music-metadata/lib/wavpack/WavPackParser.js +22 -13
- package/node_modules/baileys/node_modules/music-metadata/lib/wavpack/WavPackToken.js +3 -2
- package/node_modules/baileys/node_modules/music-metadata/package.json +3 -2
- package/node_modules/baileys/node_modules/uint8array-extras/index.d.ts +7 -7
- package/node_modules/baileys/node_modules/uint8array-extras/index.js +27 -13
- package/node_modules/baileys/node_modules/uint8array-extras/package.json +6 -6
- package/node_modules/baileys/node_modules/uint8array-extras/readme.md +7 -7
- package/node_modules/baileys/node_modules/ws/lib/websocket.js +17 -3
- package/node_modules/baileys/node_modules/ws/package.json +1 -1
- package/package.json +4 -4
- package/dist/.setup/audio-preflight.runtime-C_glQhZY.mjs +0 -7
- package/dist/.setup/channel.setup-CsS_NAKQ.mjs +0 -5
- 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,""))}}[
|
|
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
|
|
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
|
-
//
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
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
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
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
|
-
|
|
198
|
-
for (let i = 0; i < QOA_LMS_LEN; i
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
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
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
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
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
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,
|
|
@@ -2768,10 +2768,10 @@ var OggVorbisDecoder = class {
|
|
|
2768
2768
|
free() {
|
|
2769
2769
|
this._decoder.free();
|
|
2770
2770
|
}
|
|
2771
|
-
async decodeOggPages(
|
|
2771
|
+
async decodeOggPages(oggPages2) {
|
|
2772
2772
|
const packets = [];
|
|
2773
|
-
for (let i = 0; i <
|
|
2774
|
-
const oggPage2 =
|
|
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 =
|
|
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 = (
|
|
2875
|
-
if (!
|
|
2913
|
+
let decodePages = (pages2) => {
|
|
2914
|
+
if (!pages2.length) return null;
|
|
2876
2915
|
let packets = [];
|
|
2877
|
-
for (let page3 of
|
|
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 =
|
|
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 = () => {
|