music-metadata 7.11.3 → 7.11.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/README.md +432 -432
  2. package/lib/ParserFactory.d.ts +49 -49
  3. package/lib/ParserFactory.js +251 -251
  4. package/lib/aiff/AiffParser.d.ts +15 -15
  5. package/lib/aiff/AiffParser.js +85 -85
  6. package/lib/aiff/AiffToken.d.ts +22 -22
  7. package/lib/aiff/AiffToken.js +43 -43
  8. package/lib/apev2/APEv2Parser.d.ts +30 -30
  9. package/lib/apev2/APEv2Parser.js +162 -162
  10. package/lib/apev2/APEv2TagMapper.d.ts +4 -4
  11. package/lib/apev2/APEv2TagMapper.js +87 -86
  12. package/lib/apev2/APEv2Token.d.ts +100 -100
  13. package/lib/apev2/APEv2Token.js +127 -126
  14. package/lib/asf/AsfObject.d.ts +319 -319
  15. package/lib/asf/AsfObject.js +384 -384
  16. package/lib/asf/AsfParser.d.ts +17 -17
  17. package/lib/asf/AsfParser.js +135 -135
  18. package/lib/asf/AsfTagMapper.d.ts +7 -7
  19. package/lib/asf/AsfTagMapper.js +96 -95
  20. package/lib/asf/AsfUtil.d.ts +13 -13
  21. package/lib/asf/AsfUtil.js +40 -40
  22. package/lib/asf/GUID.d.ts +86 -86
  23. package/lib/asf/GUID.js +123 -123
  24. package/lib/common/BasicParser.d.ts +17 -17
  25. package/lib/common/BasicParser.js +18 -18
  26. package/lib/common/CaseInsensitiveTagMap.d.ts +10 -10
  27. package/lib/common/CaseInsensitiveTagMap.js +22 -21
  28. package/lib/common/CombinedTagMapper.d.ts +19 -19
  29. package/lib/common/CombinedTagMapper.js +52 -51
  30. package/lib/common/FourCC.d.ts +6 -6
  31. package/lib/common/FourCC.js +29 -28
  32. package/lib/common/GenericTagMapper.d.ts +51 -51
  33. package/lib/common/GenericTagMapper.js +56 -55
  34. package/lib/common/GenericTagTypes.d.ts +33 -33
  35. package/lib/common/GenericTagTypes.js +132 -131
  36. package/lib/common/MetadataCollector.d.ts +76 -76
  37. package/lib/common/MetadataCollector.js +276 -274
  38. package/lib/common/RandomFileReader.d.ts +20 -20
  39. package/lib/common/RandomFileReader.js +37 -37
  40. package/lib/common/RandomUint8ArrayReader.d.ts +18 -18
  41. package/lib/common/RandomUint8ArrayReader.js +25 -25
  42. package/lib/common/Util.d.ts +58 -57
  43. package/lib/common/Util.js +163 -169
  44. package/lib/core.d.ts +48 -48
  45. package/lib/core.js +90 -90
  46. package/lib/dsdiff/DsdiffParser.d.ts +14 -14
  47. package/lib/dsdiff/DsdiffParser.js +143 -143
  48. package/lib/dsdiff/DsdiffToken.d.ts +9 -9
  49. package/lib/dsdiff/DsdiffToken.js +21 -21
  50. package/lib/dsf/DsfChunk.d.ts +86 -86
  51. package/lib/dsf/DsfChunk.js +54 -54
  52. package/lib/dsf/DsfParser.d.ts +9 -9
  53. package/lib/dsf/DsfParser.js +56 -56
  54. package/lib/flac/FlacParser.d.ts +28 -28
  55. package/lib/flac/FlacParser.js +175 -175
  56. package/lib/id3v1/ID3v1Parser.d.ts +13 -13
  57. package/lib/id3v1/ID3v1Parser.js +134 -134
  58. package/lib/id3v1/ID3v1TagMap.d.ts +4 -4
  59. package/lib/id3v1/ID3v1TagMap.js +23 -22
  60. package/lib/id3v2/AbstractID3Parser.d.ts +17 -17
  61. package/lib/id3v2/AbstractID3Parser.js +60 -60
  62. package/lib/id3v2/FrameParser.d.ts +32 -32
  63. package/lib/id3v2/FrameParser.js +329 -323
  64. package/lib/id3v2/ID3v22TagMapper.d.ts +9 -9
  65. package/lib/id3v2/ID3v22TagMapper.js +56 -54
  66. package/lib/id3v2/ID3v24TagMapper.d.ts +14 -14
  67. package/lib/id3v2/ID3v24TagMapper.js +194 -193
  68. package/lib/id3v2/ID3v2Parser.d.ts +29 -29
  69. package/lib/id3v2/ID3v2Parser.js +194 -194
  70. package/lib/id3v2/ID3v2Token.d.ts +73 -73
  71. package/lib/id3v2/ID3v2Token.js +106 -106
  72. package/lib/iff/index.d.ts +33 -33
  73. package/lib/iff/index.js +19 -19
  74. package/lib/index.d.ts +45 -34
  75. package/lib/index.js +74 -64
  76. package/lib/lyrics3/Lyrics3.d.ts +3 -3
  77. package/lib/lyrics3/Lyrics3.js +17 -17
  78. package/lib/matroska/MatroskaDtd.d.ts +8 -8
  79. package/lib/matroska/MatroskaDtd.js +279 -279
  80. package/lib/matroska/MatroskaParser.d.ts +37 -37
  81. package/lib/matroska/MatroskaParser.js +235 -234
  82. package/lib/matroska/MatroskaTagMapper.d.ts +4 -4
  83. package/lib/matroska/MatroskaTagMapper.js +36 -35
  84. package/lib/matroska/types.d.ts +175 -175
  85. package/lib/matroska/types.js +32 -32
  86. package/lib/mp4/Atom.d.ts +16 -16
  87. package/lib/mp4/Atom.js +70 -70
  88. package/lib/mp4/AtomToken.d.ts +395 -395
  89. package/lib/mp4/AtomToken.js +406 -406
  90. package/lib/mp4/MP4Parser.d.ts +30 -30
  91. package/lib/mp4/MP4Parser.js +511 -511
  92. package/lib/mp4/MP4TagMapper.d.ts +5 -5
  93. package/lib/mp4/MP4TagMapper.js +116 -115
  94. package/lib/mpeg/ExtendedLameHeader.d.ts +27 -27
  95. package/lib/mpeg/ExtendedLameHeader.js +31 -31
  96. package/lib/mpeg/MpegParser.d.ts +49 -49
  97. package/lib/mpeg/MpegParser.js +529 -529
  98. package/lib/mpeg/ReplayGainDataFormat.d.ts +55 -55
  99. package/lib/mpeg/ReplayGainDataFormat.js +69 -69
  100. package/lib/mpeg/XingTag.d.ts +45 -45
  101. package/lib/mpeg/XingTag.js +69 -69
  102. package/lib/musepack/index.d.ts +5 -5
  103. package/lib/musepack/index.js +32 -32
  104. package/lib/musepack/sv7/BitReader.d.ts +13 -13
  105. package/lib/musepack/sv7/BitReader.js +54 -54
  106. package/lib/musepack/sv7/MpcSv7Parser.d.ts +8 -8
  107. package/lib/musepack/sv7/MpcSv7Parser.js +46 -46
  108. package/lib/musepack/sv7/StreamVersion7.d.ts +28 -28
  109. package/lib/musepack/sv7/StreamVersion7.js +41 -41
  110. package/lib/musepack/sv8/MpcSv8Parser.d.ts +6 -6
  111. package/lib/musepack/sv8/MpcSv8Parser.js +55 -55
  112. package/lib/musepack/sv8/StreamVersion8.d.ts +40 -40
  113. package/lib/musepack/sv8/StreamVersion8.js +80 -80
  114. package/lib/ogg/Ogg.d.ts +72 -72
  115. package/lib/ogg/Ogg.js +2 -2
  116. package/lib/ogg/OggParser.d.ts +23 -23
  117. package/lib/ogg/OggParser.js +126 -126
  118. package/lib/ogg/opus/Opus.d.ts +48 -48
  119. package/lib/ogg/opus/Opus.js +28 -28
  120. package/lib/ogg/opus/OpusParser.d.ts +25 -25
  121. package/lib/ogg/opus/OpusParser.js +56 -56
  122. package/lib/ogg/speex/Speex.d.ts +36 -36
  123. package/lib/ogg/speex/Speex.js +31 -31
  124. package/lib/ogg/speex/SpeexParser.d.ts +22 -22
  125. package/lib/ogg/speex/SpeexParser.js +35 -35
  126. package/lib/ogg/theora/Theora.d.ts +20 -20
  127. package/lib/ogg/theora/Theora.js +23 -23
  128. package/lib/ogg/theora/TheoraParser.d.ts +28 -28
  129. package/lib/ogg/theora/TheoraParser.js +44 -44
  130. package/lib/ogg/vorbis/Vorbis.d.ts +79 -79
  131. package/lib/ogg/vorbis/Vorbis.js +78 -78
  132. package/lib/ogg/vorbis/VorbisDecoder.d.ts +12 -12
  133. package/lib/ogg/vorbis/VorbisDecoder.js +32 -32
  134. package/lib/ogg/vorbis/VorbisParser.d.ts +36 -36
  135. package/lib/ogg/vorbis/VorbisParser.js +128 -128
  136. package/lib/ogg/vorbis/VorbisTagMapper.d.ts +7 -7
  137. package/lib/ogg/vorbis/VorbisTagMapper.js +133 -132
  138. package/lib/riff/RiffChunk.d.ts +16 -16
  139. package/lib/riff/RiffChunk.js +32 -32
  140. package/lib/riff/RiffInfoTagMap.d.ts +10 -10
  141. package/lib/riff/RiffInfoTagMap.js +38 -37
  142. package/lib/type.d.ts +599 -599
  143. package/lib/type.js +14 -13
  144. package/lib/wav/WaveChunk.d.ts +64 -64
  145. package/lib/wav/WaveChunk.js +65 -65
  146. package/lib/wav/WaveParser.d.ts +24 -24
  147. package/lib/wav/WaveParser.js +144 -144
  148. package/lib/wavpack/WavPackParser.d.ts +14 -14
  149. package/lib/wavpack/WavPackParser.js +105 -105
  150. package/lib/wavpack/WavPackToken.d.ts +64 -64
  151. package/lib/wavpack/WavPackToken.js +76 -76
  152. package/package.json +142 -142
@@ -1,55 +1,55 @@
1
- import { IGetToken } from 'strtok3/lib/core';
2
- export interface IReplayGain {
3
- type: NameCode;
4
- origin: ReplayGainOriginator;
5
- adjustment: number;
6
- }
7
- /**
8
- * https://github.com/Borewit/music-metadata/wiki/Replay-Gain-Data-Format#name-code
9
- */
10
- declare enum NameCode {
11
- /**
12
- * not set
13
- */
14
- not_set = 0,
15
- /**
16
- * Radio Gain Adjustment
17
- */
18
- radio = 1,
19
- /**
20
- * Audiophile Gain Adjustment
21
- */
22
- audiophile = 2
23
- }
24
- /**
25
- * https://github.com/Borewit/music-metadata/wiki/Replay-Gain-Data-Format#originator-code
26
- */
27
- declare enum ReplayGainOriginator {
28
- /**
29
- * Replay Gain unspecified
30
- */
31
- unspecified = 0,
32
- /**
33
- * Replay Gain pre-set by artist/producer/mastering engineer
34
- */
35
- engineer = 1,
36
- /**
37
- * Replay Gain set by user
38
- */
39
- user = 2,
40
- /**
41
- * Replay Gain determined automatically, as described on this site
42
- */
43
- automatic = 3,
44
- /**
45
- * Set by simple RMS average
46
- */
47
- rms_average = 4
48
- }
49
- /**
50
- * Replay Gain Data Format
51
- *
52
- * https://github.com/Borewit/music-metadata/wiki/Replay-Gain-Data-Format
53
- */
54
- export declare const ReplayGain: IGetToken<IReplayGain>;
55
- export {};
1
+ import { IGetToken } from 'strtok3/lib/core';
2
+ export interface IReplayGain {
3
+ type: NameCode;
4
+ origin: ReplayGainOriginator;
5
+ adjustment: number;
6
+ }
7
+ /**
8
+ * https://github.com/Borewit/music-metadata/wiki/Replay-Gain-Data-Format#name-code
9
+ */
10
+ declare enum NameCode {
11
+ /**
12
+ * not set
13
+ */
14
+ not_set = 0,
15
+ /**
16
+ * Radio Gain Adjustment
17
+ */
18
+ radio = 1,
19
+ /**
20
+ * Audiophile Gain Adjustment
21
+ */
22
+ audiophile = 2
23
+ }
24
+ /**
25
+ * https://github.com/Borewit/music-metadata/wiki/Replay-Gain-Data-Format#originator-code
26
+ */
27
+ declare enum ReplayGainOriginator {
28
+ /**
29
+ * Replay Gain unspecified
30
+ */
31
+ unspecified = 0,
32
+ /**
33
+ * Replay Gain pre-set by artist/producer/mastering engineer
34
+ */
35
+ engineer = 1,
36
+ /**
37
+ * Replay Gain set by user
38
+ */
39
+ user = 2,
40
+ /**
41
+ * Replay Gain determined automatically, as described on this site
42
+ */
43
+ automatic = 3,
44
+ /**
45
+ * Set by simple RMS average
46
+ */
47
+ rms_average = 4
48
+ }
49
+ /**
50
+ * Replay Gain Data Format
51
+ *
52
+ * https://github.com/Borewit/music-metadata/wiki/Replay-Gain-Data-Format
53
+ */
54
+ export declare const ReplayGain: IGetToken<IReplayGain>;
55
+ export {};
@@ -1,69 +1,69 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ReplayGain = void 0;
4
- const common = require("../common/Util");
5
- /**
6
- * https://github.com/Borewit/music-metadata/wiki/Replay-Gain-Data-Format#name-code
7
- */
8
- var NameCode;
9
- (function (NameCode) {
10
- /**
11
- * not set
12
- */
13
- NameCode[NameCode["not_set"] = 0] = "not_set";
14
- /**
15
- * Radio Gain Adjustment
16
- */
17
- NameCode[NameCode["radio"] = 1] = "radio";
18
- /**
19
- * Audiophile Gain Adjustment
20
- */
21
- NameCode[NameCode["audiophile"] = 2] = "audiophile";
22
- })(NameCode || (NameCode = {}));
23
- /**
24
- * https://github.com/Borewit/music-metadata/wiki/Replay-Gain-Data-Format#originator-code
25
- */
26
- var ReplayGainOriginator;
27
- (function (ReplayGainOriginator) {
28
- /**
29
- * Replay Gain unspecified
30
- */
31
- ReplayGainOriginator[ReplayGainOriginator["unspecified"] = 0] = "unspecified";
32
- /**
33
- * Replay Gain pre-set by artist/producer/mastering engineer
34
- */
35
- ReplayGainOriginator[ReplayGainOriginator["engineer"] = 1] = "engineer";
36
- /**
37
- * Replay Gain set by user
38
- */
39
- ReplayGainOriginator[ReplayGainOriginator["user"] = 2] = "user";
40
- /**
41
- * Replay Gain determined automatically, as described on this site
42
- */
43
- ReplayGainOriginator[ReplayGainOriginator["automatic"] = 3] = "automatic";
44
- /**
45
- * Set by simple RMS average
46
- */
47
- ReplayGainOriginator[ReplayGainOriginator["rms_average"] = 4] = "rms_average";
48
- })(ReplayGainOriginator || (ReplayGainOriginator = {}));
49
- /**
50
- * Replay Gain Data Format
51
- *
52
- * https://github.com/Borewit/music-metadata/wiki/Replay-Gain-Data-Format
53
- */
54
- exports.ReplayGain = {
55
- len: 2,
56
- get: (buf, off) => {
57
- const gain_type = common.getBitAllignedNumber(buf, off, 0, 3);
58
- const sign = common.getBitAllignedNumber(buf, off, 6, 1);
59
- const gain_adj = common.getBitAllignedNumber(buf, off, 7, 9) / 10.0;
60
- if (gain_type > 0) {
61
- return {
62
- type: common.getBitAllignedNumber(buf, off, 0, 3),
63
- origin: common.getBitAllignedNumber(buf, off, 3, 3),
64
- adjustment: (sign ? -gain_adj : gain_adj)
65
- };
66
- }
67
- return undefined;
68
- }
69
- };
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReplayGain = void 0;
4
+ const common = require("../common/Util");
5
+ /**
6
+ * https://github.com/Borewit/music-metadata/wiki/Replay-Gain-Data-Format#name-code
7
+ */
8
+ var NameCode;
9
+ (function (NameCode) {
10
+ /**
11
+ * not set
12
+ */
13
+ NameCode[NameCode["not_set"] = 0] = "not_set";
14
+ /**
15
+ * Radio Gain Adjustment
16
+ */
17
+ NameCode[NameCode["radio"] = 1] = "radio";
18
+ /**
19
+ * Audiophile Gain Adjustment
20
+ */
21
+ NameCode[NameCode["audiophile"] = 2] = "audiophile";
22
+ })(NameCode || (NameCode = {}));
23
+ /**
24
+ * https://github.com/Borewit/music-metadata/wiki/Replay-Gain-Data-Format#originator-code
25
+ */
26
+ var ReplayGainOriginator;
27
+ (function (ReplayGainOriginator) {
28
+ /**
29
+ * Replay Gain unspecified
30
+ */
31
+ ReplayGainOriginator[ReplayGainOriginator["unspecified"] = 0] = "unspecified";
32
+ /**
33
+ * Replay Gain pre-set by artist/producer/mastering engineer
34
+ */
35
+ ReplayGainOriginator[ReplayGainOriginator["engineer"] = 1] = "engineer";
36
+ /**
37
+ * Replay Gain set by user
38
+ */
39
+ ReplayGainOriginator[ReplayGainOriginator["user"] = 2] = "user";
40
+ /**
41
+ * Replay Gain determined automatically, as described on this site
42
+ */
43
+ ReplayGainOriginator[ReplayGainOriginator["automatic"] = 3] = "automatic";
44
+ /**
45
+ * Set by simple RMS average
46
+ */
47
+ ReplayGainOriginator[ReplayGainOriginator["rms_average"] = 4] = "rms_average";
48
+ })(ReplayGainOriginator || (ReplayGainOriginator = {}));
49
+ /**
50
+ * Replay Gain Data Format
51
+ *
52
+ * https://github.com/Borewit/music-metadata/wiki/Replay-Gain-Data-Format
53
+ */
54
+ exports.ReplayGain = {
55
+ len: 2,
56
+ get: (buf, off) => {
57
+ const gain_type = common.getBitAllignedNumber(buf, off, 0, 3);
58
+ const sign = common.getBitAllignedNumber(buf, off, 6, 1);
59
+ const gain_adj = common.getBitAllignedNumber(buf, off, 7, 9) / 10.0;
60
+ if (gain_type > 0) {
61
+ return {
62
+ type: common.getBitAllignedNumber(buf, off, 0, 3),
63
+ origin: common.getBitAllignedNumber(buf, off, 3, 3),
64
+ adjustment: (sign ? -gain_adj : gain_adj)
65
+ };
66
+ }
67
+ return undefined;
68
+ }
69
+ };
@@ -1,45 +1,45 @@
1
- /// <reference types="node" />
2
- import * as Token from "token-types";
3
- import { IGetToken, ITokenizer } from 'strtok3/lib/core';
4
- import { IExtendedLameHeader } from './ExtendedLameHeader';
5
- export interface IXingHeaderFlags {
6
- frames: boolean;
7
- bytes: boolean;
8
- toc: boolean;
9
- vbrScale: boolean;
10
- }
11
- /**
12
- * Info Tag: Xing, LAME
13
- */
14
- export declare const InfoTagHeaderTag: Token.StringType;
15
- /**
16
- * LAME TAG value
17
- * Did not find any official documentation for this
18
- * Value e.g.: "3.98.4"
19
- */
20
- export declare const LameEncoderVersion: Token.StringType;
21
- export interface IXingInfoTag {
22
- /**
23
- * total bit stream frames from Vbr header data
24
- */
25
- numFrames?: number;
26
- /**
27
- * Actual stream size = file size - header(s) size [bytes]
28
- */
29
- streamSize?: number;
30
- toc?: Buffer;
31
- /**
32
- * the number of header data bytes (from original file)
33
- */
34
- vbrScale?: number;
35
- lame?: {
36
- version: string;
37
- extended?: IExtendedLameHeader;
38
- };
39
- }
40
- /**
41
- * Info Tag
42
- * Ref: http://gabriel.mp3-tech.org/mp3infotag.html
43
- */
44
- export declare const XingHeaderFlags: IGetToken<IXingHeaderFlags>;
45
- export declare function readXingHeader(tokenizer: ITokenizer): Promise<IXingInfoTag>;
1
+ /// <reference types="node" />
2
+ import * as Token from 'token-types';
3
+ import { IGetToken, ITokenizer } from 'strtok3/lib/core';
4
+ import { IExtendedLameHeader } from './ExtendedLameHeader';
5
+ export interface IXingHeaderFlags {
6
+ frames: boolean;
7
+ bytes: boolean;
8
+ toc: boolean;
9
+ vbrScale: boolean;
10
+ }
11
+ /**
12
+ * Info Tag: Xing, LAME
13
+ */
14
+ export declare const InfoTagHeaderTag: Token.StringType;
15
+ /**
16
+ * LAME TAG value
17
+ * Did not find any official documentation for this
18
+ * Value e.g.: "3.98.4"
19
+ */
20
+ export declare const LameEncoderVersion: Token.StringType;
21
+ export interface IXingInfoTag {
22
+ /**
23
+ * total bit stream frames from Vbr header data
24
+ */
25
+ numFrames?: number;
26
+ /**
27
+ * Actual stream size = file size - header(s) size [bytes]
28
+ */
29
+ streamSize?: number;
30
+ toc?: Buffer;
31
+ /**
32
+ * the number of header data bytes (from original file)
33
+ */
34
+ vbrScale?: number;
35
+ lame?: {
36
+ version: string;
37
+ extended?: IExtendedLameHeader;
38
+ };
39
+ }
40
+ /**
41
+ * Info Tag
42
+ * Ref: http://gabriel.mp3-tech.org/mp3infotag.html
43
+ */
44
+ export declare const XingHeaderFlags: IGetToken<IXingHeaderFlags>;
45
+ export declare function readXingHeader(tokenizer: ITokenizer): Promise<IXingInfoTag>;
@@ -1,69 +1,69 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.readXingHeader = exports.XingHeaderFlags = exports.LameEncoderVersion = exports.InfoTagHeaderTag = void 0;
4
- const Token = require("token-types");
5
- const util = require("../common/Util");
6
- const ExtendedLameHeader_1 = require("./ExtendedLameHeader");
7
- /**
8
- * Info Tag: Xing, LAME
9
- */
10
- exports.InfoTagHeaderTag = new Token.StringType(4, 'ascii');
11
- /**
12
- * LAME TAG value
13
- * Did not find any official documentation for this
14
- * Value e.g.: "3.98.4"
15
- */
16
- exports.LameEncoderVersion = new Token.StringType(6, 'ascii');
17
- /**
18
- * Info Tag
19
- * Ref: http://gabriel.mp3-tech.org/mp3infotag.html
20
- */
21
- exports.XingHeaderFlags = {
22
- len: 4,
23
- get: (buf, off) => {
24
- return {
25
- frames: util.isBitSet(buf, off, 31),
26
- bytes: util.isBitSet(buf, off, 30),
27
- toc: util.isBitSet(buf, off, 29),
28
- vbrScale: util.isBitSet(buf, off, 28)
29
- };
30
- }
31
- };
32
- // /**
33
- // * XING Header Tag
34
- // * Ref: http://gabriel.mp3-tech.org/mp3infotag.html
35
- // */
36
- async function readXingHeader(tokenizer) {
37
- const flags = await tokenizer.readToken(exports.XingHeaderFlags);
38
- const xingInfoTag = {};
39
- if (flags.frames) {
40
- xingInfoTag.numFrames = await tokenizer.readToken(Token.UINT32_BE);
41
- }
42
- if (flags.bytes) {
43
- xingInfoTag.streamSize = await tokenizer.readToken(Token.UINT32_BE);
44
- }
45
- if (flags.toc) {
46
- xingInfoTag.toc = Buffer.alloc(100);
47
- await tokenizer.readBuffer(xingInfoTag.toc);
48
- }
49
- if (flags.vbrScale) {
50
- xingInfoTag.vbrScale = await tokenizer.readToken(Token.UINT32_BE);
51
- }
52
- const lameTag = await tokenizer.peekToken(new Token.StringType(4, 'ascii'));
53
- if (lameTag === 'LAME') {
54
- await tokenizer.ignore(4);
55
- xingInfoTag.lame = {
56
- version: await tokenizer.readToken(new Token.StringType(5, 'ascii'))
57
- };
58
- const match = xingInfoTag.lame.version.match(/\d+.\d+/g);
59
- if (match) {
60
- const majorMinorVersion = xingInfoTag.lame.version.match(/\d+.\d+/g)[0]; // e.g. 3.97
61
- const version = majorMinorVersion.split('.').map(n => parseInt(n, 10));
62
- if (version[0] >= 3 && version[1] >= 90) {
63
- xingInfoTag.lame.extended = await tokenizer.readToken(ExtendedLameHeader_1.ExtendedLameHeader);
64
- }
65
- }
66
- }
67
- return xingInfoTag;
68
- }
69
- exports.readXingHeader = readXingHeader;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.readXingHeader = exports.XingHeaderFlags = exports.LameEncoderVersion = exports.InfoTagHeaderTag = void 0;
4
+ const Token = require("token-types");
5
+ const util = require("../common/Util");
6
+ const ExtendedLameHeader_1 = require("./ExtendedLameHeader");
7
+ /**
8
+ * Info Tag: Xing, LAME
9
+ */
10
+ exports.InfoTagHeaderTag = new Token.StringType(4, 'ascii');
11
+ /**
12
+ * LAME TAG value
13
+ * Did not find any official documentation for this
14
+ * Value e.g.: "3.98.4"
15
+ */
16
+ exports.LameEncoderVersion = new Token.StringType(6, 'ascii');
17
+ /**
18
+ * Info Tag
19
+ * Ref: http://gabriel.mp3-tech.org/mp3infotag.html
20
+ */
21
+ exports.XingHeaderFlags = {
22
+ len: 4,
23
+ get: (buf, off) => {
24
+ return {
25
+ frames: util.isBitSet(buf, off, 31),
26
+ bytes: util.isBitSet(buf, off, 30),
27
+ toc: util.isBitSet(buf, off, 29),
28
+ vbrScale: util.isBitSet(buf, off, 28)
29
+ };
30
+ }
31
+ };
32
+ // /**
33
+ // * XING Header Tag
34
+ // * Ref: http://gabriel.mp3-tech.org/mp3infotag.html
35
+ // */
36
+ async function readXingHeader(tokenizer) {
37
+ const flags = await tokenizer.readToken(exports.XingHeaderFlags);
38
+ const xingInfoTag = {};
39
+ if (flags.frames) {
40
+ xingInfoTag.numFrames = await tokenizer.readToken(Token.UINT32_BE);
41
+ }
42
+ if (flags.bytes) {
43
+ xingInfoTag.streamSize = await tokenizer.readToken(Token.UINT32_BE);
44
+ }
45
+ if (flags.toc) {
46
+ xingInfoTag.toc = Buffer.alloc(100);
47
+ await tokenizer.readBuffer(xingInfoTag.toc);
48
+ }
49
+ if (flags.vbrScale) {
50
+ xingInfoTag.vbrScale = await tokenizer.readToken(Token.UINT32_BE);
51
+ }
52
+ const lameTag = await tokenizer.peekToken(new Token.StringType(4, 'ascii'));
53
+ if (lameTag === 'LAME') {
54
+ await tokenizer.ignore(4);
55
+ xingInfoTag.lame = {
56
+ version: await tokenizer.readToken(new Token.StringType(5, 'ascii'))
57
+ };
58
+ const match = xingInfoTag.lame.version.match(/\d+.\d+/g);
59
+ if (match) {
60
+ const majorMinorVersion = xingInfoTag.lame.version.match(/\d+.\d+/g)[0]; // e.g. 3.97
61
+ const version = majorMinorVersion.split('.').map(n => parseInt(n, 10));
62
+ if (version[0] >= 3 && version[1] >= 90) {
63
+ xingInfoTag.lame.extended = await tokenizer.readToken(ExtendedLameHeader_1.ExtendedLameHeader);
64
+ }
65
+ }
66
+ }
67
+ return xingInfoTag;
68
+ }
69
+ exports.readXingHeader = readXingHeader;
@@ -1,5 +1,5 @@
1
- import { AbstractID3Parser } from '../id3v2/AbstractID3Parser';
2
- declare class MusepackParser extends AbstractID3Parser {
3
- _parse(): Promise<void>;
4
- }
5
- export default MusepackParser;
1
+ import { AbstractID3Parser } from '../id3v2/AbstractID3Parser';
2
+ declare class MusepackParser extends AbstractID3Parser {
3
+ _parse(): Promise<void>;
4
+ }
5
+ export default MusepackParser;
@@ -1,32 +1,32 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const initDebug = require("debug");
4
- const Token = require("token-types");
5
- const MpcSv8Parser_1 = require("./sv8/MpcSv8Parser");
6
- const MpcSv7Parser_1 = require("./sv7/MpcSv7Parser");
7
- const AbstractID3Parser_1 = require("../id3v2/AbstractID3Parser");
8
- const debug = initDebug('music-metadata:parser:musepack');
9
- class MusepackParser extends AbstractID3Parser_1.AbstractID3Parser {
10
- async _parse() {
11
- const signature = await this.tokenizer.peekToken(new Token.StringType(3, 'binary'));
12
- let mpcParser;
13
- switch (signature) {
14
- case 'MP+': {
15
- debug('Musepack stream-version 7');
16
- mpcParser = new MpcSv7Parser_1.MpcSv7Parser();
17
- break;
18
- }
19
- case 'MPC': {
20
- debug('Musepack stream-version 8');
21
- mpcParser = new MpcSv8Parser_1.MpcSv8Parser();
22
- break;
23
- }
24
- default: {
25
- throw new Error('Invalid Musepack signature prefix');
26
- }
27
- }
28
- mpcParser.init(this.metadata, this.tokenizer, this.options);
29
- return mpcParser.parse();
30
- }
31
- }
32
- exports.default = MusepackParser;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const initDebug = require("debug");
4
+ const Token = require("token-types");
5
+ const AbstractID3Parser_1 = require("../id3v2/AbstractID3Parser");
6
+ const MpcSv8Parser_1 = require("./sv8/MpcSv8Parser");
7
+ const MpcSv7Parser_1 = require("./sv7/MpcSv7Parser");
8
+ const debug = initDebug('music-metadata:parser:musepack');
9
+ class MusepackParser extends AbstractID3Parser_1.AbstractID3Parser {
10
+ async _parse() {
11
+ const signature = await this.tokenizer.peekToken(new Token.StringType(3, 'binary'));
12
+ let mpcParser;
13
+ switch (signature) {
14
+ case 'MP+': {
15
+ debug('Musepack stream-version 7');
16
+ mpcParser = new MpcSv7Parser_1.MpcSv7Parser();
17
+ break;
18
+ }
19
+ case 'MPC': {
20
+ debug('Musepack stream-version 8');
21
+ mpcParser = new MpcSv8Parser_1.MpcSv8Parser();
22
+ break;
23
+ }
24
+ default: {
25
+ throw new Error('Invalid Musepack signature prefix');
26
+ }
27
+ }
28
+ mpcParser.init(this.metadata, this.tokenizer, this.options);
29
+ return mpcParser.parse();
30
+ }
31
+ }
32
+ exports.default = MusepackParser;
@@ -1,13 +1,13 @@
1
- import { ITokenizer } from 'strtok3/lib/core';
2
- export declare class BitReader {
3
- private tokenizer;
4
- pos: number;
5
- private dword;
6
- constructor(tokenizer: ITokenizer);
7
- /**
8
- *
9
- * @param bits 1..30 bits
10
- */
11
- read(bits: number): Promise<number>;
12
- ignore(bits: number): Promise<number>;
13
- }
1
+ import { ITokenizer } from 'strtok3/lib/core';
2
+ export declare class BitReader {
3
+ private tokenizer;
4
+ pos: number;
5
+ private dword;
6
+ constructor(tokenizer: ITokenizer);
7
+ /**
8
+ *
9
+ * @param bits 1..30 bits
10
+ */
11
+ read(bits: number): Promise<number>;
12
+ ignore(bits: number): Promise<number>;
13
+ }