@dragon708/docmind-markdown 1.2.5 → 1.2.6
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/node_modules/music-metadata/LICENSE.txt +3 -3
- package/node_modules/music-metadata/README.md +246 -690
- package/node_modules/music-metadata/lib/ParserFactory.d.ts +31 -27
- package/node_modules/music-metadata/lib/ParserFactory.js +219 -108
- package/node_modules/music-metadata/lib/aiff/AiffParser.d.ts +2 -2
- package/node_modules/music-metadata/lib/aiff/AiffParser.js +38 -34
- package/node_modules/music-metadata/lib/aiff/AiffTagMap.d.ts +1 -1
- package/node_modules/music-metadata/lib/aiff/AiffTagMap.js +7 -2
- package/node_modules/music-metadata/lib/aiff/AiffToken.d.ts +6 -32
- package/node_modules/music-metadata/lib/aiff/AiffToken.js +17 -27
- package/node_modules/music-metadata/lib/apev2/APEv2Parser.d.ts +8 -24
- package/node_modules/music-metadata/lib/apev2/APEv2Parser.js +66 -78
- package/node_modules/music-metadata/lib/apev2/APEv2TagMapper.d.ts +1 -1
- package/node_modules/music-metadata/lib/apev2/APEv2TagMapper.js +8 -4
- package/node_modules/music-metadata/lib/apev2/APEv2Token.d.ts +11 -10
- package/node_modules/music-metadata/lib/apev2/APEv2Token.js +27 -16
- package/node_modules/music-metadata/lib/asf/AsfObject.d.ts +53 -59
- package/node_modules/music-metadata/lib/asf/AsfObject.js +131 -97
- package/node_modules/music-metadata/lib/asf/AsfParser.d.ts +1 -1
- package/node_modules/music-metadata/lib/asf/AsfParser.js +43 -42
- package/node_modules/music-metadata/lib/asf/AsfTagMapper.d.ts +2 -2
- package/node_modules/music-metadata/lib/asf/AsfTagMapper.js +10 -6
- package/node_modules/music-metadata/lib/asf/AsfUtil.d.ts +13 -4
- package/node_modules/music-metadata/lib/asf/AsfUtil.js +36 -30
- package/node_modules/music-metadata/lib/asf/GUID.d.ts +84 -0
- package/node_modules/music-metadata/lib/asf/GUID.js +121 -0
- package/node_modules/music-metadata/lib/common/BasicParser.d.ts +9 -9
- package/node_modules/music-metadata/lib/common/BasicParser.js +7 -2
- package/node_modules/music-metadata/lib/common/CaseInsensitiveTagMap.d.ts +3 -3
- package/node_modules/music-metadata/lib/common/CaseInsensitiveTagMap.js +7 -2
- package/node_modules/music-metadata/lib/common/CombinedTagMapper.d.ts +5 -5
- package/node_modules/music-metadata/lib/common/CombinedTagMapper.js +28 -24
- package/node_modules/music-metadata/lib/common/FourCC.d.ts +1 -1
- package/node_modules/music-metadata/lib/common/FourCC.js +11 -10
- package/node_modules/music-metadata/lib/common/GenericTagMapper.d.ts +13 -13
- package/node_modules/music-metadata/lib/common/GenericTagMapper.js +12 -7
- package/node_modules/music-metadata/lib/common/GenericTagTypes.d.ts +6 -7
- package/node_modules/music-metadata/lib/common/GenericTagTypes.js +85 -86
- package/node_modules/music-metadata/lib/common/MetadataCollector.d.ts +10 -20
- package/node_modules/music-metadata/lib/common/MetadataCollector.js +69 -100
- package/node_modules/music-metadata/lib/common/RandomFileReader.d.ts +22 -0
- package/node_modules/music-metadata/lib/common/RandomFileReader.js +34 -0
- package/node_modules/music-metadata/lib/common/RandomUint8ArrayReader.d.ts +18 -0
- package/node_modules/music-metadata/lib/common/RandomUint8ArrayReader.js +25 -0
- package/node_modules/music-metadata/lib/common/Util.d.ts +12 -11
- package/node_modules/music-metadata/lib/common/Util.js +53 -47
- package/node_modules/music-metadata/lib/core.d.ts +15 -42
- package/node_modules/music-metadata/lib/core.js +38 -74
- package/node_modules/music-metadata/lib/dsdiff/DsdiffParser.d.ts +1 -16
- package/node_modules/music-metadata/lib/dsdiff/DsdiffParser.js +44 -55
- package/node_modules/music-metadata/lib/dsdiff/DsdiffToken.d.ts +3 -3
- package/node_modules/music-metadata/lib/dsdiff/DsdiffToken.js +7 -4
- package/node_modules/music-metadata/lib/dsf/DsfChunk.d.ts +10 -11
- package/node_modules/music-metadata/lib/dsf/DsfChunk.js +19 -15
- package/node_modules/music-metadata/lib/dsf/DsfParser.d.ts +1 -16
- package/node_modules/music-metadata/lib/dsf/DsfParser.js +20 -21
- package/node_modules/music-metadata/lib/flac/FlacParser.d.ts +15 -16
- package/node_modules/music-metadata/lib/flac/FlacParser.js +119 -69
- package/node_modules/music-metadata/lib/id3v1/ID3v1Parser.d.ts +3 -7
- package/node_modules/music-metadata/lib/id3v1/ID3v1Parser.js +36 -39
- package/node_modules/music-metadata/lib/id3v1/ID3v1TagMap.d.ts +1 -1
- package/node_modules/music-metadata/lib/id3v1/ID3v1TagMap.js +7 -2
- package/node_modules/music-metadata/lib/id3v2/AbstractID3Parser.d.ts +2 -2
- package/node_modules/music-metadata/lib/id3v2/AbstractID3Parser.js +19 -15
- package/node_modules/music-metadata/lib/id3v2/FrameParser.d.ts +3 -64
- package/node_modules/music-metadata/lib/id3v2/FrameParser.js +103 -244
- package/node_modules/music-metadata/lib/id3v2/ID3v22TagMapper.d.ts +2 -2
- package/node_modules/music-metadata/lib/id3v2/ID3v22TagMapper.js +16 -6
- package/node_modules/music-metadata/lib/id3v2/ID3v24TagMapper.d.ts +5 -5
- package/node_modules/music-metadata/lib/id3v2/ID3v24TagMapper.js +35 -36
- package/node_modules/music-metadata/lib/id3v2/ID3v2Parser.d.ts +6 -11
- package/node_modules/music-metadata/lib/id3v2/ID3v2Parser.js +104 -91
- package/node_modules/music-metadata/lib/id3v2/ID3v2Token.d.ts +29 -67
- package/node_modules/music-metadata/lib/id3v2/ID3v2Token.js +36 -76
- package/node_modules/music-metadata/lib/iff/index.d.ts +1 -1
- package/node_modules/music-metadata/lib/iff/index.js +7 -4
- package/node_modules/music-metadata/lib/index.d.ts +31 -8
- package/node_modules/music-metadata/lib/index.js +53 -32
- package/node_modules/music-metadata/lib/lyrics3/Lyrics3.d.ts +2 -2
- package/node_modules/music-metadata/lib/lyrics3/Lyrics3.js +13 -13
- package/node_modules/music-metadata/lib/matroska/MatroskaDtd.d.ts +2 -2
- package/node_modules/music-metadata/lib/matroska/MatroskaDtd.js +242 -246
- package/node_modules/music-metadata/lib/matroska/MatroskaParser.d.ts +24 -6
- package/node_modules/music-metadata/lib/matroska/MatroskaParser.js +218 -124
- package/node_modules/music-metadata/lib/matroska/MatroskaTagMapper.d.ts +1 -1
- package/node_modules/music-metadata/lib/matroska/MatroskaTagMapper.js +7 -3
- package/node_modules/music-metadata/lib/matroska/types.d.ts +76 -43
- package/node_modules/music-metadata/lib/matroska/types.js +33 -27
- package/node_modules/music-metadata/lib/mp4/Atom.d.ts +7 -7
- package/node_modules/music-metadata/lib/mp4/Atom.js +22 -15
- package/node_modules/music-metadata/lib/mp4/AtomToken.d.ts +18 -110
- package/node_modules/music-metadata/lib/mp4/AtomToken.js +66 -184
- package/node_modules/music-metadata/lib/mp4/MP4Parser.d.ts +4 -6
- package/node_modules/music-metadata/lib/mp4/MP4Parser.js +128 -255
- package/node_modules/music-metadata/lib/mp4/MP4TagMapper.d.ts +4 -4
- package/node_modules/music-metadata/lib/mp4/MP4TagMapper.js +12 -8
- package/node_modules/music-metadata/lib/mpeg/ExtendedLameHeader.d.ts +5 -5
- package/node_modules/music-metadata/lib/mpeg/ExtendedLameHeader.js +10 -7
- package/node_modules/music-metadata/lib/mpeg/MpegParser.d.ts +4 -17
- package/node_modules/music-metadata/lib/mpeg/MpegParser.js +131 -176
- package/node_modules/music-metadata/lib/mpeg/ReplayGainDataFormat.d.ts +14 -16
- package/node_modules/music-metadata/lib/mpeg/ReplayGainDataFormat.js +19 -14
- package/node_modules/music-metadata/lib/mpeg/XingTag.d.ts +7 -6
- package/node_modules/music-metadata/lib/mpeg/XingTag.js +18 -14
- package/node_modules/music-metadata/lib/musepack/index.d.ts +5 -0
- package/node_modules/music-metadata/lib/musepack/index.js +32 -0
- package/node_modules/music-metadata/lib/musepack/sv7/BitReader.d.ts +2 -2
- package/node_modules/music-metadata/lib/musepack/sv7/BitReader.js +24 -16
- package/node_modules/music-metadata/lib/musepack/sv7/MpcSv7Parser.d.ts +1 -1
- package/node_modules/music-metadata/lib/musepack/sv7/MpcSv7Parser.js +15 -16
- package/node_modules/music-metadata/lib/musepack/sv7/StreamVersion7.d.ts +1 -1
- package/node_modules/music-metadata/lib/musepack/sv7/StreamVersion7.js +7 -5
- package/node_modules/music-metadata/lib/musepack/sv8/MpcSv8Parser.d.ts +1 -1
- package/node_modules/music-metadata/lib/musepack/sv8/MpcSv8Parser.js +17 -18
- package/node_modules/music-metadata/lib/musepack/sv8/StreamVersion8.d.ts +3 -5
- package/node_modules/music-metadata/lib/musepack/sv8/StreamVersion8.js +12 -14
- package/node_modules/music-metadata/lib/ogg/{OggToken.d.ts → Ogg.d.ts} +6 -17
- package/node_modules/music-metadata/lib/ogg/Ogg.js +2 -0
- package/node_modules/music-metadata/lib/ogg/OggParser.d.ts +12 -16
- package/node_modules/music-metadata/lib/ogg/OggParser.js +102 -101
- package/node_modules/music-metadata/lib/ogg/opus/Opus.d.ts +2 -17
- package/node_modules/music-metadata/lib/ogg/opus/Opus.js +14 -13
- package/node_modules/music-metadata/lib/ogg/opus/OpusParser.d.ts +25 -0
- package/node_modules/music-metadata/lib/ogg/opus/{OpusStream.js → OpusParser.js} +18 -18
- package/node_modules/music-metadata/lib/ogg/speex/Speex.d.ts +1 -1
- package/node_modules/music-metadata/lib/ogg/speex/Speex.js +19 -16
- package/node_modules/music-metadata/lib/ogg/speex/SpeexParser.d.ts +22 -0
- package/node_modules/music-metadata/lib/ogg/speex/{SpeexStream.js → SpeexParser.js} +13 -9
- package/node_modules/music-metadata/lib/ogg/theora/Theora.d.ts +1 -1
- package/node_modules/music-metadata/lib/ogg/theora/Theora.js +11 -8
- package/node_modules/music-metadata/lib/ogg/theora/TheoraParser.d.ts +28 -0
- package/node_modules/music-metadata/lib/ogg/theora/TheoraParser.js +44 -0
- package/node_modules/music-metadata/lib/ogg/vorbis/Vorbis.d.ts +7 -6
- package/node_modules/music-metadata/lib/ogg/vorbis/Vorbis.js +29 -34
- package/node_modules/music-metadata/lib/ogg/vorbis/VorbisDecoder.d.ts +1 -1
- package/node_modules/music-metadata/lib/ogg/vorbis/VorbisDecoder.js +9 -6
- package/node_modules/music-metadata/lib/ogg/vorbis/VorbisParser.d.ts +36 -0
- package/node_modules/music-metadata/lib/ogg/vorbis/VorbisParser.js +128 -0
- package/node_modules/music-metadata/lib/ogg/vorbis/VorbisTagMapper.d.ts +3 -3
- package/node_modules/music-metadata/lib/ogg/vorbis/VorbisTagMapper.js +9 -5
- package/node_modules/music-metadata/lib/riff/RiffChunk.d.ts +5 -5
- package/node_modules/music-metadata/lib/riff/RiffChunk.js +9 -5
- package/node_modules/music-metadata/lib/riff/RiffInfoTagMap.d.ts +2 -2
- package/node_modules/music-metadata/lib/riff/RiffInfoTagMap.js +25 -20
- package/node_modules/music-metadata/lib/type.d.ts +52 -121
- package/node_modules/music-metadata/lib/type.js +6 -2
- package/node_modules/music-metadata/lib/wav/BwfChunk.d.ts +1 -1
- package/node_modules/music-metadata/lib/wav/BwfChunk.js +11 -8
- package/node_modules/music-metadata/lib/wav/WaveChunk.d.ts +20 -50
- package/node_modules/music-metadata/lib/wav/WaveChunk.js +32 -45
- package/node_modules/music-metadata/lib/wav/WaveParser.d.ts +2 -2
- package/node_modules/music-metadata/lib/wav/WaveParser.js +39 -46
- package/node_modules/music-metadata/lib/wavpack/WavPackParser.d.ts +2 -18
- package/node_modules/music-metadata/lib/wavpack/WavPackParser.js +32 -42
- package/node_modules/music-metadata/lib/wavpack/WavPackToken.d.ts +18 -14
- package/node_modules/music-metadata/lib/wavpack/WavPackToken.js +30 -24
- package/node_modules/music-metadata/package.json +74 -81
- package/package.json +1 -5
- package/node_modules/@borewit/text-codec/LICENSE.txt +0 -9
- package/node_modules/@borewit/text-codec/README.md +0 -87
- package/node_modules/@borewit/text-codec/lib/index.d.ts +0 -6
- package/node_modules/@borewit/text-codec/lib/index.js +0 -380
- package/node_modules/@borewit/text-codec/package.json +0 -70
- package/node_modules/music-metadata/lib/ParseError.d.ts +0 -87
- package/node_modules/music-metadata/lib/ParseError.js +0 -38
- package/node_modules/music-metadata/lib/aiff/AiffLoader.d.ts +0 -2
- package/node_modules/music-metadata/lib/aiff/AiffLoader.js +0 -8
- package/node_modules/music-metadata/lib/apev2/Apev2Loader.d.ts +0 -2
- package/node_modules/music-metadata/lib/apev2/Apev2Loader.js +0 -8
- package/node_modules/music-metadata/lib/asf/AsfGuid.d.ts +0 -83
- package/node_modules/music-metadata/lib/asf/AsfGuid.js +0 -109
- package/node_modules/music-metadata/lib/asf/AsfLoader.d.ts +0 -2
- package/node_modules/music-metadata/lib/asf/AsfLoader.js +0 -8
- package/node_modules/music-metadata/lib/dsdiff/DsdiffLoader.d.ts +0 -2
- package/node_modules/music-metadata/lib/dsdiff/DsdiffLoader.js +0 -8
- package/node_modules/music-metadata/lib/dsf/DsfLoader.d.ts +0 -2
- package/node_modules/music-metadata/lib/dsf/DsfLoader.js +0 -8
- package/node_modules/music-metadata/lib/ebml/EbmlIterator.d.ts +0 -67
- package/node_modules/music-metadata/lib/ebml/EbmlIterator.js +0 -218
- package/node_modules/music-metadata/lib/ebml/types.d.ts +0 -37
- package/node_modules/music-metadata/lib/ebml/types.js +0 -8
- package/node_modules/music-metadata/lib/flac/FlacLoader.d.ts +0 -2
- package/node_modules/music-metadata/lib/flac/FlacLoader.js +0 -8
- package/node_modules/music-metadata/lib/flac/FlacToken.d.ts +0 -45
- package/node_modules/music-metadata/lib/flac/FlacToken.js +0 -63
- package/node_modules/music-metadata/lib/id3v2/FrameHeader.d.ts +0 -31
- package/node_modules/music-metadata/lib/id3v2/FrameHeader.js +0 -73
- package/node_modules/music-metadata/lib/id3v2/ID3v2ChapterToken.d.ts +0 -11
- package/node_modules/music-metadata/lib/id3v2/ID3v2ChapterToken.js +0 -17
- package/node_modules/music-metadata/lib/lrc/LyricsParser.d.ts +0 -9
- package/node_modules/music-metadata/lib/lrc/LyricsParser.js +0 -45
- package/node_modules/music-metadata/lib/matroska/MatroskaLoader.d.ts +0 -2
- package/node_modules/music-metadata/lib/matroska/MatroskaLoader.js +0 -8
- package/node_modules/music-metadata/lib/mp4/Mp4Loader.d.ts +0 -2
- package/node_modules/music-metadata/lib/mp4/Mp4Loader.js +0 -8
- package/node_modules/music-metadata/lib/mpeg/MpegLoader.d.ts +0 -2
- package/node_modules/music-metadata/lib/mpeg/MpegLoader.js +0 -8
- package/node_modules/music-metadata/lib/musepack/MusepackConentError.d.ts +0 -15
- package/node_modules/music-metadata/lib/musepack/MusepackConentError.js +0 -3
- package/node_modules/music-metadata/lib/musepack/MusepackLoader.d.ts +0 -2
- package/node_modules/music-metadata/lib/musepack/MusepackLoader.js +0 -8
- package/node_modules/music-metadata/lib/musepack/MusepackParser.d.ts +0 -4
- package/node_modules/music-metadata/lib/musepack/MusepackParser.js +0 -30
- package/node_modules/music-metadata/lib/ogg/OggLoader.d.ts +0 -2
- package/node_modules/music-metadata/lib/ogg/OggLoader.js +0 -8
- package/node_modules/music-metadata/lib/ogg/OggToken.js +0 -41
- package/node_modules/music-metadata/lib/ogg/flac/FlacStream.d.ts +0 -29
- package/node_modules/music-metadata/lib/ogg/flac/FlacStream.js +0 -74
- package/node_modules/music-metadata/lib/ogg/opus/OpusStream.d.ts +0 -24
- package/node_modules/music-metadata/lib/ogg/speex/SpeexStream.d.ts +0 -20
- package/node_modules/music-metadata/lib/ogg/theora/TheoraStream.d.ts +0 -25
- package/node_modules/music-metadata/lib/ogg/theora/TheoraStream.js +0 -39
- package/node_modules/music-metadata/lib/ogg/vorbis/VorbisStream.d.ts +0 -53
- package/node_modules/music-metadata/lib/ogg/vorbis/VorbisStream.js +0 -136
- package/node_modules/music-metadata/lib/wav/WaveLoader.d.ts +0 -2
- package/node_modules/music-metadata/lib/wav/WaveLoader.js +0 -8
- package/node_modules/music-metadata/lib/wavpack/WavPackLoader.d.ts +0 -2
- package/node_modules/music-metadata/lib/wavpack/WavPackLoader.js +0 -8
- package/node_modules/music-metadata/node_modules/file-type/core.d.ts +0 -253
- package/node_modules/music-metadata/node_modules/file-type/core.js +0 -2899
- package/node_modules/music-metadata/node_modules/file-type/index.d.ts +0 -98
- package/node_modules/music-metadata/node_modules/file-type/index.js +0 -163
- package/node_modules/music-metadata/node_modules/file-type/license +0 -9
- package/node_modules/music-metadata/node_modules/file-type/package.json +0 -290
- package/node_modules/music-metadata/node_modules/file-type/readme.md +0 -667
- package/node_modules/music-metadata/node_modules/file-type/supported.js +0 -360
- package/node_modules/music-metadata/node_modules/file-type/util.js +0 -60
- package/node_modules/music-metadata/node_modules/strtok3/LICENSE.txt +0 -21
- package/node_modules/music-metadata/node_modules/strtok3/README.md +0 -399
- package/node_modules/music-metadata/node_modules/strtok3/lib/AbstractTokenizer.d.ts +0 -76
- package/node_modules/music-metadata/node_modules/strtok3/lib/AbstractTokenizer.js +0 -111
- package/node_modules/music-metadata/node_modules/strtok3/lib/BlobTokenizer.d.ts +0 -29
- package/node_modules/music-metadata/node_modules/strtok3/lib/BlobTokenizer.js +0 -53
- package/node_modules/music-metadata/node_modules/strtok3/lib/BufferTokenizer.d.ts +0 -29
- package/node_modules/music-metadata/node_modules/strtok3/lib/BufferTokenizer.js +0 -52
- package/node_modules/music-metadata/node_modules/strtok3/lib/FileTokenizer.d.ts +0 -37
- package/node_modules/music-metadata/node_modules/strtok3/lib/FileTokenizer.js +0 -61
- package/node_modules/music-metadata/node_modules/strtok3/lib/ReadStreamTokenizer.d.ts +0 -34
- package/node_modules/music-metadata/node_modules/strtok3/lib/ReadStreamTokenizer.js +0 -107
- package/node_modules/music-metadata/node_modules/strtok3/lib/core.d.ts +0 -40
- package/node_modules/music-metadata/node_modules/strtok3/lib/core.js +0 -62
- package/node_modules/music-metadata/node_modules/strtok3/lib/index.d.ts +0 -16
- package/node_modules/music-metadata/node_modules/strtok3/lib/index.js +0 -22
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/AbstractStreamReader.d.ts +0 -54
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/AbstractStreamReader.js +0 -71
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/Deferred.d.ts +0 -6
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/Deferred.js +0 -10
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/Errors.d.ts +0 -10
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/Errors.js +0 -16
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/StreamReader.d.ts +0 -29
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/StreamReader.js +0 -83
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/WebStreamByobReader.d.ts +0 -14
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/WebStreamByobReader.js +0 -27
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/WebStreamDefaultReader.d.ts +0 -19
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/WebStreamDefaultReader.js +0 -62
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/WebStreamReader.d.ts +0 -14
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/WebStreamReader.js +0 -13
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/WebStreamReaderFactory.d.ts +0 -5
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/WebStreamReaderFactory.js +0 -19
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/index.d.ts +0 -6
- package/node_modules/music-metadata/node_modules/strtok3/lib/stream/index.js +0 -5
- package/node_modules/music-metadata/node_modules/strtok3/lib/types.d.ts +0 -139
- package/node_modules/music-metadata/node_modules/strtok3/lib/types.js +0 -1
- package/node_modules/music-metadata/node_modules/strtok3/package.json +0 -94
- package/node_modules/music-metadata/node_modules/token-types/LICENSE.txt +0 -9
- package/node_modules/music-metadata/node_modules/token-types/README.md +0 -120
- package/node_modules/music-metadata/node_modules/token-types/lib/index.d.ts +0 -135
- package/node_modules/music-metadata/node_modules/token-types/lib/index.js +0 -401
- package/node_modules/music-metadata/node_modules/token-types/package.json +0 -81
- package/node_modules/sprintf-js/.npmignore +0 -1
- package/node_modules/sprintf-js/LICENSE +0 -24
- package/node_modules/sprintf-js/README.md +0 -88
- package/node_modules/sprintf-js/bower.json +0 -14
- package/node_modules/sprintf-js/demo/angular.html +0 -20
- package/node_modules/sprintf-js/dist/angular-sprintf.min.js +0 -4
- package/node_modules/sprintf-js/dist/angular-sprintf.min.js.map +0 -1
- package/node_modules/sprintf-js/dist/angular-sprintf.min.map +0 -1
- package/node_modules/sprintf-js/dist/sprintf.min.js +0 -4
- package/node_modules/sprintf-js/dist/sprintf.min.js.map +0 -1
- package/node_modules/sprintf-js/dist/sprintf.min.map +0 -1
- package/node_modules/sprintf-js/gruntfile.js +0 -36
- package/node_modules/sprintf-js/package.json +0 -22
- package/node_modules/sprintf-js/src/angular-sprintf.js +0 -18
- package/node_modules/sprintf-js/src/sprintf.js +0 -208
- package/node_modules/sprintf-js/test/test.js +0 -82
- package/node_modules/uint8array-extras/index.d.ts +0 -331
- package/node_modules/uint8array-extras/index.js +0 -318
- package/node_modules/uint8array-extras/license +0 -9
- package/node_modules/uint8array-extras/package.json +0 -54
- package/node_modules/uint8array-extras/readme.md +0 -318
- package/node_modules/win-guid/LICENSE.txt +0 -9
- package/node_modules/win-guid/README.md +0 -113
- package/node_modules/win-guid/lib/guid.d.ts +0 -20
- package/node_modules/win-guid/lib/guid.js +0 -107
- package/node_modules/win-guid/package.json +0 -55
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/LICENSE +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/README.md +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/index.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/action/append/constant.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/action/append.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/action/count.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/action/help.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/action/store/constant.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/action/store/false.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/action/store/true.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/action/store.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/action/subparsers.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/action/version.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/action.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/action_container.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/argparse.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/argument/error.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/argument/exclusive.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/argument/group.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/argument_parser.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/const.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/help/added_formatters.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/help/formatter.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/namespace.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/lib/utils.js +0 -0
- /package/node_modules/{argparse → mammoth/node_modules/argparse}/package.json +0 -0
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WaveParser = void 0;
|
|
4
|
+
const strtok3 = require("strtok3/lib/core");
|
|
5
|
+
const Token = require("token-types");
|
|
6
|
+
const debug_1 = require("debug");
|
|
7
|
+
const riff = require("../riff/RiffChunk");
|
|
8
|
+
const WaveChunk = require("./../wav/WaveChunk");
|
|
9
|
+
const ID3v2Parser_1 = require("../id3v2/ID3v2Parser");
|
|
10
|
+
const util = require("../common/Util");
|
|
11
|
+
const FourCC_1 = require("../common/FourCC");
|
|
12
|
+
const BasicParser_1 = require("../common/BasicParser");
|
|
13
|
+
const BwfChunk_1 = require("../wav/BwfChunk");
|
|
14
|
+
const debug = (0, debug_1.default)('music-metadata:parser:RIFF');
|
|
13
15
|
/**
|
|
14
16
|
* Resource Interchange File Format (RIFF) Parser
|
|
15
17
|
*
|
|
@@ -21,17 +23,12 @@ const debug = initDebug('music-metadata:parser:RIFF');
|
|
|
21
23
|
*
|
|
22
24
|
* ToDo: Split WAVE part from RIFF parser
|
|
23
25
|
*/
|
|
24
|
-
|
|
25
|
-
constructor() {
|
|
26
|
-
super(...arguments);
|
|
27
|
-
this.blockAlign = 0;
|
|
28
|
-
}
|
|
26
|
+
class WaveParser extends BasicParser_1.BasicParser {
|
|
29
27
|
async parse() {
|
|
30
28
|
const riffHeader = await this.tokenizer.readToken(riff.Header);
|
|
31
29
|
debug(`pos=${this.tokenizer.position}, parse: chunkID=${riffHeader.chunkID}`);
|
|
32
30
|
if (riffHeader.chunkID !== 'RIFF')
|
|
33
31
|
return; // Not RIFF format
|
|
34
|
-
this.metadata.setAudioOnly();
|
|
35
32
|
return this.parseRiffChunk(riffHeader.chunkSize).catch(err => {
|
|
36
33
|
if (!(err instanceof strtok3.EndOfStreamError)) {
|
|
37
34
|
throw err;
|
|
@@ -39,13 +36,13 @@ export class WaveParser extends BasicParser {
|
|
|
39
36
|
});
|
|
40
37
|
}
|
|
41
38
|
async parseRiffChunk(chunkSize) {
|
|
42
|
-
const type = await this.tokenizer.readToken(FourCcToken);
|
|
39
|
+
const type = await this.tokenizer.readToken(FourCC_1.FourCcToken);
|
|
43
40
|
this.metadata.setFormat('container', type);
|
|
44
41
|
switch (type) {
|
|
45
42
|
case 'WAVE':
|
|
46
|
-
return this.readWaveChunk(chunkSize - FourCcToken.len);
|
|
43
|
+
return this.readWaveChunk(chunkSize - FourCC_1.FourCcToken.len);
|
|
47
44
|
default:
|
|
48
|
-
throw new
|
|
45
|
+
throw new Error(`Unsupported RIFF format: RIFF/${type}`);
|
|
49
46
|
}
|
|
50
47
|
}
|
|
51
48
|
async readWaveChunk(remaining) {
|
|
@@ -65,12 +62,12 @@ export class WaveParser extends BasicParser {
|
|
|
65
62
|
this.metadata.setFormat('lossless', false);
|
|
66
63
|
this.fact = await this.tokenizer.readToken(new WaveChunk.FactChunk(header));
|
|
67
64
|
break;
|
|
68
|
-
case 'fmt ':
|
|
65
|
+
case 'fmt ': // The Util Chunk, non-PCM Formats
|
|
69
66
|
const fmt = await this.tokenizer.readToken(new WaveChunk.Format(header));
|
|
70
|
-
let subFormat = WaveChunk.
|
|
67
|
+
let subFormat = WaveChunk.WaveFormat[fmt.wFormatTag];
|
|
71
68
|
if (!subFormat) {
|
|
72
|
-
debug(
|
|
73
|
-
subFormat =
|
|
69
|
+
debug('WAVE/non-PCM format=' + fmt.wFormatTag);
|
|
70
|
+
subFormat = 'non-PCM (' + fmt.wFormatTag + ')';
|
|
74
71
|
}
|
|
75
72
|
this.metadata.setFormat('codec', subFormat);
|
|
76
73
|
this.metadata.setFormat('bitsPerSample', fmt.wBitsPerSample);
|
|
@@ -79,15 +76,13 @@ export class WaveParser extends BasicParser {
|
|
|
79
76
|
this.metadata.setFormat('bitrate', fmt.nBlockAlign * fmt.nSamplesPerSec * 8);
|
|
80
77
|
this.blockAlign = fmt.nBlockAlign;
|
|
81
78
|
break;
|
|
82
|
-
}
|
|
83
79
|
case 'id3 ': // The way Picard, FooBar currently stores, ID3 meta-data
|
|
84
|
-
case 'ID3 ':
|
|
80
|
+
case 'ID3 ': // The way Mp3Tags stores ID3 meta-data
|
|
85
81
|
const id3_data = await this.tokenizer.readToken(new Token.Uint8ArrayType(header.chunkSize));
|
|
86
82
|
const rst = strtok3.fromBuffer(id3_data);
|
|
87
|
-
await new ID3v2Parser().parse(this.metadata, rst, this.options);
|
|
83
|
+
await new ID3v2Parser_1.ID3v2Parser().parse(this.metadata, rst, this.options);
|
|
88
84
|
break;
|
|
89
|
-
|
|
90
|
-
case 'data': { // PCM-data
|
|
85
|
+
case 'data': // PCM-data
|
|
91
86
|
if (this.metadata.format.lossless !== false) {
|
|
92
87
|
this.metadata.setFormat('lossless', true);
|
|
93
88
|
}
|
|
@@ -102,36 +97,32 @@ export class WaveParser extends BasicParser {
|
|
|
102
97
|
const numberOfSamples = this.fact ? this.fact.dwSampleLength : (chunkSize === 0xffffffff ? undefined : chunkSize / this.blockAlign);
|
|
103
98
|
if (numberOfSamples) {
|
|
104
99
|
this.metadata.setFormat('numberOfSamples', numberOfSamples);
|
|
105
|
-
|
|
106
|
-
this.metadata.setFormat('duration', numberOfSamples / this.metadata.format.sampleRate);
|
|
107
|
-
}
|
|
100
|
+
this.metadata.setFormat('duration', numberOfSamples / this.metadata.format.sampleRate);
|
|
108
101
|
}
|
|
109
102
|
if (this.metadata.format.codec === 'ADPCM') { // ADPCM is 4 bits lossy encoding resulting in 352kbps
|
|
110
103
|
this.metadata.setFormat('bitrate', 352000);
|
|
111
104
|
}
|
|
112
|
-
else
|
|
105
|
+
else {
|
|
113
106
|
this.metadata.setFormat('bitrate', this.blockAlign * this.metadata.format.sampleRate * 8);
|
|
114
107
|
}
|
|
115
108
|
await this.tokenizer.ignore(header.chunkSize);
|
|
116
109
|
break;
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
const bext = await this.tokenizer.readToken(BroadcastAudioExtensionChunk);
|
|
110
|
+
case 'bext': // Broadcast Audio Extension chunk https://tech.ebu.ch/docs/tech/tech3285.pdf
|
|
111
|
+
const bext = await this.tokenizer.readToken(BwfChunk_1.BroadcastAudioExtensionChunk);
|
|
120
112
|
Object.keys(bext).forEach(key => {
|
|
121
|
-
this.metadata.addTag('exif',
|
|
113
|
+
this.metadata.addTag('exif', 'bext.' + key, bext[key]);
|
|
122
114
|
});
|
|
123
|
-
const bextRemaining = header.chunkSize - BroadcastAudioExtensionChunk.len;
|
|
115
|
+
const bextRemaining = header.chunkSize - BwfChunk_1.BroadcastAudioExtensionChunk.len;
|
|
124
116
|
await this.tokenizer.ignore(bextRemaining);
|
|
125
117
|
break;
|
|
126
|
-
}
|
|
127
118
|
case '\x00\x00\x00\x00': // padding ??
|
|
128
119
|
debug(`Ignore padding chunk: RIFF/${header.chunkID} of ${header.chunkSize} bytes`);
|
|
129
|
-
this.metadata.addWarning(
|
|
120
|
+
this.metadata.addWarning('Ignore chunk: RIFF/' + header.chunkID);
|
|
130
121
|
await this.tokenizer.ignore(header.chunkSize);
|
|
131
122
|
break;
|
|
132
123
|
default:
|
|
133
124
|
debug(`Ignore chunk: RIFF/${header.chunkID} of ${header.chunkSize} bytes`);
|
|
134
|
-
this.metadata.addWarning(
|
|
125
|
+
this.metadata.addWarning('Ignore chunk: RIFF/' + header.chunkID);
|
|
135
126
|
await this.tokenizer.ignore(header.chunkSize);
|
|
136
127
|
}
|
|
137
128
|
if (this.header.chunkSize % 2 === 1) {
|
|
@@ -141,14 +132,15 @@ export class WaveParser extends BasicParser {
|
|
|
141
132
|
}
|
|
142
133
|
}
|
|
143
134
|
async parseListTag(listHeader) {
|
|
144
|
-
const listType = await this.tokenizer.readToken(new Token.StringType(4, '
|
|
135
|
+
const listType = await this.tokenizer.readToken(new Token.StringType(4, 'binary'));
|
|
145
136
|
debug('pos=%s, parseListTag: chunkID=RIFF/WAVE/LIST/%s', this.tokenizer.position, listType);
|
|
146
137
|
switch (listType) {
|
|
147
138
|
case 'INFO':
|
|
148
139
|
return this.parseRiffInfoTags(listHeader.chunkSize - 4);
|
|
140
|
+
case 'adtl':
|
|
149
141
|
default:
|
|
150
|
-
this.metadata.addWarning(
|
|
151
|
-
debug(
|
|
142
|
+
this.metadata.addWarning('Ignore chunk: RIFF/WAVE/LIST/' + listType);
|
|
143
|
+
debug('Ignoring chunkID=RIFF/WAVE/LIST/' + listType);
|
|
152
144
|
return this.tokenizer.ignore(listHeader.chunkSize - 4).then();
|
|
153
145
|
}
|
|
154
146
|
}
|
|
@@ -161,10 +153,11 @@ export class WaveParser extends BasicParser {
|
|
|
161
153
|
chunkSize -= (8 + valueToken.len);
|
|
162
154
|
}
|
|
163
155
|
if (chunkSize !== 0) {
|
|
164
|
-
throw
|
|
156
|
+
throw Error('Illegal remaining size: ' + chunkSize);
|
|
165
157
|
}
|
|
166
158
|
}
|
|
167
159
|
addTag(id, value) {
|
|
168
160
|
this.metadata.addTag('exif', id, value);
|
|
169
161
|
}
|
|
170
162
|
}
|
|
163
|
+
exports.WaveParser = WaveParser;
|
|
@@ -1,18 +1,4 @@
|
|
|
1
|
-
import { BasicParser } from '../common/BasicParser
|
|
2
|
-
declare const WavPackContentError_base: {
|
|
3
|
-
new (message: string): {
|
|
4
|
-
readonly fileType: string;
|
|
5
|
-
toString(): string;
|
|
6
|
-
name: "UnexpectedFileContentError";
|
|
7
|
-
message: string;
|
|
8
|
-
stack?: string;
|
|
9
|
-
};
|
|
10
|
-
captureStackTrace(targetObject: object, constructorOpt?: Function): void;
|
|
11
|
-
prepareStackTrace(err: Error, stackTraces: NodeJS.CallSite[]): any;
|
|
12
|
-
stackTraceLimit: number;
|
|
13
|
-
};
|
|
14
|
-
export declare class WavPackContentError extends WavPackContentError_base {
|
|
15
|
-
}
|
|
1
|
+
import { BasicParser } from '../common/BasicParser';
|
|
16
2
|
/**
|
|
17
3
|
* WavPack Parser
|
|
18
4
|
*/
|
|
@@ -22,9 +8,7 @@ export declare class WavPackParser extends BasicParser {
|
|
|
22
8
|
parseWavPackBlocks(): Promise<void>;
|
|
23
9
|
/**
|
|
24
10
|
* Ref: http://www.wavpack.com/WavPack5FileFormat.pdf, 3.0 Metadata Sub-blocks
|
|
25
|
-
* @param
|
|
26
|
-
* @param remainingLength Remaining length
|
|
11
|
+
* @param remainingLength
|
|
27
12
|
*/
|
|
28
13
|
private parseMetadataSubBlock;
|
|
29
14
|
}
|
|
30
|
-
export {};
|
|
@@ -1,39 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
}
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WavPackParser = void 0;
|
|
4
|
+
const Token = require("token-types");
|
|
5
|
+
const APEv2Parser_1 = require("../apev2/APEv2Parser");
|
|
6
|
+
const FourCC_1 = require("../common/FourCC");
|
|
7
|
+
const BasicParser_1 = require("../common/BasicParser");
|
|
8
|
+
const WavPackToken_1 = require("./WavPackToken");
|
|
9
|
+
const debug_1 = require("debug");
|
|
10
|
+
const debug = (0, debug_1.default)('music-metadata:parser:WavPack');
|
|
12
11
|
/**
|
|
13
12
|
* WavPack Parser
|
|
14
13
|
*/
|
|
15
|
-
|
|
16
|
-
constructor() {
|
|
17
|
-
super(...arguments);
|
|
18
|
-
this.audioDataSize = 0;
|
|
19
|
-
}
|
|
14
|
+
class WavPackParser extends BasicParser_1.BasicParser {
|
|
20
15
|
async parse() {
|
|
21
|
-
this.metadata.setAudioOnly();
|
|
22
16
|
this.audioDataSize = 0;
|
|
23
17
|
// First parse all WavPack blocks
|
|
24
18
|
await this.parseWavPackBlocks();
|
|
25
19
|
// try to parse APEv2 header
|
|
26
|
-
return tryParseApeHeader(this.metadata, this.tokenizer, this.options);
|
|
20
|
+
return APEv2Parser_1.APEv2Parser.tryParseApeHeader(this.metadata, this.tokenizer, this.options);
|
|
27
21
|
}
|
|
28
22
|
async parseWavPackBlocks() {
|
|
29
23
|
do {
|
|
30
|
-
const blockId = await this.tokenizer.peekToken(FourCcToken);
|
|
24
|
+
const blockId = await this.tokenizer.peekToken(FourCC_1.FourCcToken);
|
|
31
25
|
if (blockId !== 'wvpk')
|
|
32
26
|
break;
|
|
33
|
-
const header = await this.tokenizer.readToken(BlockHeaderToken);
|
|
27
|
+
const header = await this.tokenizer.readToken(WavPackToken_1.WavPack.BlockHeaderToken);
|
|
34
28
|
if (header.BlockID !== 'wvpk')
|
|
35
|
-
throw new
|
|
36
|
-
debug(`WavPack header blockIndex=${header.blockIndex}, len=${BlockHeaderToken.len}`);
|
|
29
|
+
throw new Error('Invalid WavPack Block-ID');
|
|
30
|
+
debug(`WavPack header blockIndex=${header.blockIndex}, len=${WavPackToken_1.WavPack.BlockHeaderToken.len}`);
|
|
37
31
|
if (header.blockIndex === 0 && !this.metadata.format.container) {
|
|
38
32
|
this.metadata.setFormat('container', 'WavPack');
|
|
39
33
|
this.metadata.setFormat('lossless', !header.flags.isHybrid);
|
|
@@ -48,43 +42,38 @@ export class WavPackParser extends BasicParser {
|
|
|
48
42
|
this.metadata.setFormat('numberOfSamples', header.totalSamples);
|
|
49
43
|
this.metadata.setFormat('codec', header.flags.isDSD ? 'DSD' : 'PCM');
|
|
50
44
|
}
|
|
51
|
-
const ignoreBytes = header.blockSize - (BlockHeaderToken.len - 8);
|
|
45
|
+
const ignoreBytes = header.blockSize - (WavPackToken_1.WavPack.BlockHeaderToken.len - 8);
|
|
52
46
|
await (header.blockIndex === 0 ? this.parseMetadataSubBlock(header, ignoreBytes) : this.tokenizer.ignore(ignoreBytes));
|
|
53
47
|
if (header.blockSamples > 0) {
|
|
54
48
|
this.audioDataSize += header.blockSize; // Count audio data for bit-rate calculation
|
|
55
49
|
}
|
|
56
|
-
} while (!this.tokenizer.fileInfo.size || this.tokenizer.fileInfo.size - this.tokenizer.position >= BlockHeaderToken.len);
|
|
57
|
-
|
|
58
|
-
this.metadata.setFormat('bitrate', this.audioDataSize * 8 / this.metadata.format.duration);
|
|
59
|
-
}
|
|
50
|
+
} while (!this.tokenizer.fileInfo.size || this.tokenizer.fileInfo.size - this.tokenizer.position >= WavPackToken_1.WavPack.BlockHeaderToken.len);
|
|
51
|
+
this.metadata.setFormat('bitrate', this.audioDataSize * 8 / this.metadata.format.duration);
|
|
60
52
|
}
|
|
61
53
|
/**
|
|
62
54
|
* Ref: http://www.wavpack.com/WavPack5FileFormat.pdf, 3.0 Metadata Sub-blocks
|
|
63
|
-
* @param
|
|
64
|
-
* @param remainingLength Remaining length
|
|
55
|
+
* @param remainingLength
|
|
65
56
|
*/
|
|
66
57
|
async parseMetadataSubBlock(header, remainingLength) {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
const id = await this.tokenizer.readToken(MetadataIdToken);
|
|
58
|
+
while (remainingLength > WavPackToken_1.WavPack.MetadataIdToken.len) {
|
|
59
|
+
const id = await this.tokenizer.readToken(WavPackToken_1.WavPack.MetadataIdToken);
|
|
70
60
|
const dataSizeInWords = await this.tokenizer.readNumber(id.largeBlock ? Token.UINT24_LE : Token.UINT8);
|
|
71
|
-
const data =
|
|
61
|
+
const data = Buffer.alloc(dataSizeInWords * 2 - (id.isOddSize ? 1 : 0));
|
|
72
62
|
await this.tokenizer.readBuffer(data);
|
|
73
63
|
debug(`Metadata Sub-Blocks functionId=0x${id.functionId.toString(16)}, id.largeBlock=${id.largeBlock},data-size=${data.length}`);
|
|
74
64
|
switch (id.functionId) {
|
|
75
65
|
case 0x0: // ID_DUMMY: could be used to pad WavPack blocks
|
|
76
66
|
break;
|
|
77
|
-
case 0xe:
|
|
67
|
+
case 0xe: // ID_DSD_BLOCK
|
|
78
68
|
debug('ID_DSD_BLOCK');
|
|
79
69
|
// https://github.com/dbry/WavPack/issues/71#issuecomment-483094813
|
|
80
|
-
const mp = 1 <<
|
|
70
|
+
const mp = 1 << data.readUInt8(0);
|
|
81
71
|
const samplingRate = header.flags.samplingRate * mp * 8; // ToDo: second factor should be read from DSD-metadata block https://github.com/dbry/WavPack/issues/71#issuecomment-483094813
|
|
82
72
|
if (!header.flags.isDSD)
|
|
83
|
-
throw new
|
|
73
|
+
throw new Error('Only expect DSD block if DSD-flag is set');
|
|
84
74
|
this.metadata.setFormat('sampleRate', samplingRate);
|
|
85
75
|
this.metadata.setFormat('duration', header.totalSamples / samplingRate);
|
|
86
76
|
break;
|
|
87
|
-
}
|
|
88
77
|
case 0x24: // ID_ALT_TRAILER: maybe used to embed original ID3 tag header
|
|
89
78
|
debug('ID_ALT_TRAILER: trailer for non-wav files');
|
|
90
79
|
break;
|
|
@@ -92,18 +81,19 @@ export class WavPackParser extends BasicParser {
|
|
|
92
81
|
this.metadata.setFormat('audioMD5', data);
|
|
93
82
|
break;
|
|
94
83
|
case 0x2f: // ID_BLOCK_CHECKSUM
|
|
95
|
-
debug(`ID_BLOCK_CHECKSUM: checksum=${
|
|
84
|
+
debug(`ID_BLOCK_CHECKSUM: checksum=${data.toString('hex')}`);
|
|
96
85
|
break;
|
|
97
86
|
default:
|
|
98
87
|
debug(`Ignore unsupported meta-sub-block-id functionId=0x${id.functionId.toString(16)}`);
|
|
99
88
|
break;
|
|
100
89
|
}
|
|
101
|
-
|
|
102
|
-
debug(`remainingLength=${
|
|
90
|
+
remainingLength -= WavPackToken_1.WavPack.MetadataIdToken.len + (id.largeBlock ? Token.UINT24_LE.len : Token.UINT8.len) + dataSizeInWords * 2;
|
|
91
|
+
debug(`remainingLength=${remainingLength}`);
|
|
103
92
|
if (id.isOddSize)
|
|
104
93
|
this.tokenizer.ignore(1);
|
|
105
94
|
}
|
|
106
|
-
if (
|
|
107
|
-
throw new
|
|
95
|
+
if (remainingLength !== 0)
|
|
96
|
+
throw new Error('metadata-sub-block should fit it remaining length');
|
|
108
97
|
}
|
|
109
98
|
}
|
|
99
|
+
exports.WavPackParser = WavPackParser;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { IGetToken } from 'strtok3/lib/core';
|
|
2
2
|
/**
|
|
3
3
|
* WavPack Block Header
|
|
4
4
|
*
|
|
@@ -45,16 +45,20 @@ export interface IMetadataId {
|
|
|
45
45
|
*/
|
|
46
46
|
largeBlock: boolean;
|
|
47
47
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
48
|
+
export declare class WavPack {
|
|
49
|
+
/**
|
|
50
|
+
* WavPack Block Header
|
|
51
|
+
*
|
|
52
|
+
* 32-byte little-endian header at the front of every WavPack block
|
|
53
|
+
*
|
|
54
|
+
* Ref: http://www.wavpack.com/WavPack5FileFormat.pdf (page 2/6: 2.0 "Block Header")
|
|
55
|
+
*/
|
|
56
|
+
static BlockHeaderToken: IGetToken<IBlockHeader>;
|
|
57
|
+
/**
|
|
58
|
+
* 3.0 Metadata Sub-Blocks
|
|
59
|
+
* Ref: http://www.wavpack.com/WavPack5FileFormat.pdf (page 4/6: 3.0 "Metadata Sub-Block")
|
|
60
|
+
*/
|
|
61
|
+
static MetadataIdToken: IGetToken<IMetadataId>;
|
|
62
|
+
private static isBitSet;
|
|
63
|
+
private static getBitAllignedNumber;
|
|
64
|
+
}
|
|
@@ -1,7 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WavPack = void 0;
|
|
4
|
+
const Token = require("token-types");
|
|
5
|
+
const FourCC_1 = require("../common/FourCC");
|
|
3
6
|
const SampleRates = [6000, 8000, 9600, 11025, 12000, 16000, 22050, 24000, 32000, 44100,
|
|
4
7
|
48000, 64000, 88200, 96000, 192000, -1];
|
|
8
|
+
class WavPack {
|
|
9
|
+
static isBitSet(flags, bitOffset) {
|
|
10
|
+
return WavPack.getBitAllignedNumber(flags, bitOffset, 1) === 1;
|
|
11
|
+
}
|
|
12
|
+
static getBitAllignedNumber(flags, bitOffset, len) {
|
|
13
|
+
return (flags >>> bitOffset) & (0xffffffff >>> (32 - len));
|
|
14
|
+
}
|
|
15
|
+
}
|
|
5
16
|
/**
|
|
6
17
|
* WavPack Block Header
|
|
7
18
|
*
|
|
@@ -9,13 +20,13 @@ const SampleRates = [6000, 8000, 9600, 11025, 12000, 16000, 22050, 24000, 32000,
|
|
|
9
20
|
*
|
|
10
21
|
* Ref: http://www.wavpack.com/WavPack5FileFormat.pdf (page 2/6: 2.0 "Block Header")
|
|
11
22
|
*/
|
|
12
|
-
|
|
23
|
+
WavPack.BlockHeaderToken = {
|
|
13
24
|
len: 32,
|
|
14
25
|
get: (buf, off) => {
|
|
15
26
|
const flags = Token.UINT32_LE.get(buf, off + 24);
|
|
16
27
|
const res = {
|
|
17
28
|
// should equal 'wvpk'
|
|
18
|
-
BlockID: FourCcToken.get(buf, off),
|
|
29
|
+
BlockID: FourCC_1.FourCcToken.get(buf, off),
|
|
19
30
|
// 0x402 to 0x410 are valid for decode
|
|
20
31
|
blockSize: Token.UINT32_LE.get(buf, off + 4),
|
|
21
32
|
// 0x402 (1026) to 0x410 are valid for decode
|
|
@@ -28,15 +39,15 @@ export const BlockHeaderToken = {
|
|
|
28
39
|
blockSamples: Token.UINT32_LE.get(buf, off + 20),
|
|
29
40
|
// various flags for id and decoding
|
|
30
41
|
flags: {
|
|
31
|
-
bitsPerSample: (1 + getBitAllignedNumber(flags, 0, 2)) * 8,
|
|
32
|
-
isMono: isBitSet(flags, 2),
|
|
33
|
-
isHybrid: isBitSet(flags, 3),
|
|
34
|
-
isJointStereo: isBitSet(flags, 4),
|
|
35
|
-
crossChannel: isBitSet(flags, 5),
|
|
36
|
-
hybridNoiseShaping: isBitSet(flags, 6),
|
|
37
|
-
floatingPoint: isBitSet(flags, 7),
|
|
38
|
-
samplingRate: SampleRates[getBitAllignedNumber(flags, 23, 4)],
|
|
39
|
-
isDSD: isBitSet(flags, 31)
|
|
42
|
+
bitsPerSample: (1 + WavPack.getBitAllignedNumber(flags, 0, 2)) * 8,
|
|
43
|
+
isMono: WavPack.isBitSet(flags, 2),
|
|
44
|
+
isHybrid: WavPack.isBitSet(flags, 3),
|
|
45
|
+
isJointStereo: WavPack.isBitSet(flags, 4),
|
|
46
|
+
crossChannel: WavPack.isBitSet(flags, 5),
|
|
47
|
+
hybridNoiseShaping: WavPack.isBitSet(flags, 6),
|
|
48
|
+
floatingPoint: WavPack.isBitSet(flags, 7),
|
|
49
|
+
samplingRate: SampleRates[WavPack.getBitAllignedNumber(flags, 23, 4)],
|
|
50
|
+
isDSD: WavPack.isBitSet(flags, 31)
|
|
40
51
|
},
|
|
41
52
|
// crc for actual decoded data
|
|
42
53
|
crc: new Token.Uint8ArrayType(4).get(buf, off + 28)
|
|
@@ -51,20 +62,15 @@ export const BlockHeaderToken = {
|
|
|
51
62
|
* 3.0 Metadata Sub-Blocks
|
|
52
63
|
* Ref: http://www.wavpack.com/WavPack5FileFormat.pdf (page 4/6: 3.0 "Metadata Sub-Block")
|
|
53
64
|
*/
|
|
54
|
-
|
|
65
|
+
WavPack.MetadataIdToken = {
|
|
55
66
|
len: 1,
|
|
56
67
|
get: (buf, off) => {
|
|
57
68
|
return {
|
|
58
|
-
functionId: getBitAllignedNumber(buf[off], 0, 6),
|
|
59
|
-
isOptional: isBitSet(buf[off], 5),
|
|
60
|
-
isOddSize: isBitSet(buf[off], 6),
|
|
61
|
-
largeBlock: isBitSet(buf[off], 7)
|
|
69
|
+
functionId: WavPack.getBitAllignedNumber(buf[off], 0, 6),
|
|
70
|
+
isOptional: WavPack.isBitSet(buf[off], 5),
|
|
71
|
+
isOddSize: WavPack.isBitSet(buf[off], 6),
|
|
72
|
+
largeBlock: WavPack.isBitSet(buf[off], 7)
|
|
62
73
|
};
|
|
63
74
|
}
|
|
64
75
|
};
|
|
65
|
-
|
|
66
|
-
return getBitAllignedNumber(flags, bitOffset, 1) === 1;
|
|
67
|
-
}
|
|
68
|
-
function getBitAllignedNumber(flags, bitOffset, len) {
|
|
69
|
-
return (flags >>> bitOffset) & (0xffffffff >>> (32 - len));
|
|
70
|
-
}
|
|
76
|
+
exports.WavPack = WavPack;
|