music-metadata 7.12.2 → 7.12.5

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 (155) hide show
  1. package/LICENSE.txt +9 -9
  2. package/README.md +434 -434
  3. package/lib/ParserFactory.d.ts +48 -48
  4. package/lib/ParserFactory.js +252 -252
  5. package/lib/aiff/AiffParser.d.ts +14 -14
  6. package/lib/aiff/AiffParser.js +84 -84
  7. package/lib/aiff/AiffToken.d.ts +22 -22
  8. package/lib/aiff/AiffToken.js +43 -43
  9. package/lib/apev2/APEv2Parser.d.ts +30 -30
  10. package/lib/apev2/APEv2Parser.js +164 -164
  11. package/lib/apev2/APEv2TagMapper.d.ts +4 -4
  12. package/lib/apev2/APEv2TagMapper.js +86 -86
  13. package/lib/apev2/APEv2Token.d.ts +100 -100
  14. package/lib/apev2/APEv2Token.js +126 -126
  15. package/lib/asf/AsfObject.d.ts +319 -319
  16. package/lib/asf/AsfObject.js +381 -381
  17. package/lib/asf/AsfParser.d.ts +17 -17
  18. package/lib/asf/AsfParser.js +135 -135
  19. package/lib/asf/AsfTagMapper.d.ts +7 -7
  20. package/lib/asf/AsfTagMapper.js +95 -95
  21. package/lib/asf/AsfUtil.d.ts +13 -13
  22. package/lib/asf/AsfUtil.js +38 -38
  23. package/lib/asf/GUID.d.ts +84 -84
  24. package/lib/asf/GUID.js +121 -121
  25. package/lib/common/BasicParser.d.ts +17 -17
  26. package/lib/common/BasicParser.js +18 -18
  27. package/lib/common/CaseInsensitiveTagMap.d.ts +10 -10
  28. package/lib/common/CaseInsensitiveTagMap.js +21 -21
  29. package/lib/common/CombinedTagMapper.d.ts +19 -19
  30. package/lib/common/CombinedTagMapper.js +51 -51
  31. package/lib/common/FourCC.d.ts +6 -6
  32. package/lib/common/FourCC.js +28 -28
  33. package/lib/common/GenericTagMapper.d.ts +51 -51
  34. package/lib/common/GenericTagMapper.js +55 -55
  35. package/lib/common/GenericTagTypes.d.ts +33 -33
  36. package/lib/common/GenericTagTypes.js +131 -131
  37. package/lib/common/MetadataCollector.d.ts +76 -76
  38. package/lib/common/MetadataCollector.js +275 -275
  39. package/lib/common/RandomFileReader.d.ts +22 -22
  40. package/lib/common/RandomFileReader.js +34 -34
  41. package/lib/common/RandomUint8ArrayReader.d.ts +18 -18
  42. package/lib/common/RandomUint8ArrayReader.js +25 -25
  43. package/lib/common/Util.d.ts +57 -57
  44. package/lib/common/Util.js +157 -157
  45. package/lib/core.d.ts +48 -48
  46. package/lib/core.js +90 -90
  47. package/lib/dsdiff/DsdiffParser.d.ts +14 -14
  48. package/lib/dsdiff/DsdiffParser.js +143 -143
  49. package/lib/dsdiff/DsdiffToken.d.ts +9 -9
  50. package/lib/dsdiff/DsdiffToken.js +21 -21
  51. package/lib/dsf/DsfChunk.d.ts +86 -86
  52. package/lib/dsf/DsfChunk.js +54 -54
  53. package/lib/dsf/DsfParser.d.ts +9 -9
  54. package/lib/dsf/DsfParser.js +56 -56
  55. package/lib/flac/FlacParser.d.ts +28 -28
  56. package/lib/flac/FlacParser.js +175 -175
  57. package/lib/id3v1/ID3v1Parser.d.ts +13 -13
  58. package/lib/id3v1/ID3v1Parser.js +134 -134
  59. package/lib/id3v1/ID3v1TagMap.d.ts +4 -4
  60. package/lib/id3v1/ID3v1TagMap.js +22 -22
  61. package/lib/id3v2/AbstractID3Parser.d.ts +17 -17
  62. package/lib/id3v2/AbstractID3Parser.js +60 -60
  63. package/lib/id3v2/FrameParser.d.ts +31 -31
  64. package/lib/id3v2/FrameParser.js +329 -329
  65. package/lib/id3v2/ID3v22TagMapper.d.ts +9 -9
  66. package/lib/id3v2/ID3v22TagMapper.js +55 -55
  67. package/lib/id3v2/ID3v24TagMapper.d.ts +14 -14
  68. package/lib/id3v2/ID3v24TagMapper.js +193 -193
  69. package/lib/id3v2/ID3v2Parser.d.ts +28 -28
  70. package/lib/id3v2/ID3v2Parser.js +182 -182
  71. package/lib/id3v2/ID3v2Token.d.ts +73 -73
  72. package/lib/id3v2/ID3v2Token.js +106 -106
  73. package/lib/iff/index.d.ts +33 -33
  74. package/lib/iff/index.js +19 -19
  75. package/lib/index.d.ts +45 -45
  76. package/lib/index.js +74 -74
  77. package/lib/lyrics3/Lyrics3.d.ts +3 -3
  78. package/lib/lyrics3/Lyrics3.js +17 -17
  79. package/lib/matroska/MatroskaDtd.d.ts +8 -8
  80. package/lib/matroska/MatroskaDtd.js +279 -279
  81. package/lib/matroska/MatroskaParser.d.ts +37 -37
  82. package/lib/matroska/MatroskaParser.js +235 -235
  83. package/lib/matroska/MatroskaTagMapper.d.ts +4 -4
  84. package/lib/matroska/MatroskaTagMapper.js +35 -35
  85. package/lib/matroska/types.d.ts +175 -175
  86. package/lib/matroska/types.js +32 -32
  87. package/lib/mp4/Atom.d.ts +16 -16
  88. package/lib/mp4/Atom.js +70 -70
  89. package/lib/mp4/AtomToken.d.ts +395 -395
  90. package/lib/mp4/AtomToken.js +406 -406
  91. package/lib/mp4/MP4Parser.d.ts +30 -30
  92. package/lib/mp4/MP4Parser.js +511 -511
  93. package/lib/mp4/MP4TagMapper.d.ts +5 -5
  94. package/lib/mp4/MP4TagMapper.js +115 -115
  95. package/lib/mpeg/ExtendedLameHeader.d.ts +27 -27
  96. package/lib/mpeg/ExtendedLameHeader.js +31 -31
  97. package/lib/mpeg/MpegParser.d.ts +49 -49
  98. package/lib/mpeg/MpegParser.js +524 -524
  99. package/lib/mpeg/ReplayGainDataFormat.d.ts +55 -55
  100. package/lib/mpeg/ReplayGainDataFormat.js +69 -69
  101. package/lib/mpeg/XingTag.d.ts +45 -45
  102. package/lib/mpeg/XingTag.js +69 -69
  103. package/lib/musepack/index.d.ts +5 -5
  104. package/lib/musepack/index.js +32 -32
  105. package/lib/musepack/sv7/BitReader.d.ts +13 -13
  106. package/lib/musepack/sv7/BitReader.js +54 -54
  107. package/lib/musepack/sv7/MpcSv7Parser.d.ts +8 -8
  108. package/lib/musepack/sv7/MpcSv7Parser.js +46 -46
  109. package/lib/musepack/sv7/StreamVersion7.d.ts +28 -28
  110. package/lib/musepack/sv7/StreamVersion7.js +41 -41
  111. package/lib/musepack/sv8/MpcSv8Parser.d.ts +6 -6
  112. package/lib/musepack/sv8/MpcSv8Parser.js +55 -55
  113. package/lib/musepack/sv8/StreamVersion8.d.ts +40 -40
  114. package/lib/musepack/sv8/StreamVersion8.js +80 -80
  115. package/lib/ogg/Ogg.d.ts +72 -72
  116. package/lib/ogg/Ogg.js +2 -2
  117. package/lib/ogg/OggParser.d.ts +23 -23
  118. package/lib/ogg/OggParser.js +126 -126
  119. package/lib/ogg/opus/Opus.d.ts +48 -48
  120. package/lib/ogg/opus/Opus.js +28 -28
  121. package/lib/ogg/opus/OpusParser.d.ts +25 -25
  122. package/lib/ogg/opus/OpusParser.js +56 -56
  123. package/lib/ogg/speex/Speex.d.ts +36 -36
  124. package/lib/ogg/speex/Speex.js +31 -31
  125. package/lib/ogg/speex/SpeexParser.d.ts +22 -22
  126. package/lib/ogg/speex/SpeexParser.js +35 -35
  127. package/lib/ogg/theora/Theora.d.ts +20 -20
  128. package/lib/ogg/theora/Theora.js +23 -23
  129. package/lib/ogg/theora/TheoraParser.d.ts +28 -28
  130. package/lib/ogg/theora/TheoraParser.js +44 -44
  131. package/lib/ogg/vorbis/Vorbis.d.ts +69 -69
  132. package/lib/ogg/vorbis/Vorbis.js +78 -78
  133. package/lib/ogg/vorbis/VorbisDecoder.d.ts +12 -12
  134. package/lib/ogg/vorbis/VorbisDecoder.js +32 -32
  135. package/lib/ogg/vorbis/VorbisParser.d.ts +36 -36
  136. package/lib/ogg/vorbis/VorbisParser.js +128 -128
  137. package/lib/ogg/vorbis/VorbisTagMapper.d.ts +7 -7
  138. package/lib/ogg/vorbis/VorbisTagMapper.js +132 -132
  139. package/lib/riff/RiffChunk.d.ts +16 -16
  140. package/lib/riff/RiffChunk.js +32 -32
  141. package/lib/riff/RiffInfoTagMap.d.ts +10 -10
  142. package/lib/riff/RiffInfoTagMap.js +37 -37
  143. package/lib/type.d.ts +592 -592
  144. package/lib/type.js +5 -5
  145. package/lib/wav/BwfChunk.d.ts +17 -17
  146. package/lib/wav/BwfChunk.js +29 -28
  147. package/lib/wav/WaveChunk.d.ts +64 -64
  148. package/lib/wav/WaveChunk.js +65 -65
  149. package/lib/wav/WaveParser.d.ts +24 -24
  150. package/lib/wav/WaveParser.js +158 -156
  151. package/lib/wavpack/WavPackParser.d.ts +14 -14
  152. package/lib/wavpack/WavPackParser.js +99 -99
  153. package/lib/wavpack/WavPackToken.d.ts +64 -64
  154. package/lib/wavpack/WavPackToken.js +76 -76
  155. package/package.json +152 -150
@@ -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
- postId3v2Parse(): Promise<void>;
4
- }
5
- export default MusepackParser;
1
+ import { AbstractID3Parser } from '../id3v2/AbstractID3Parser';
2
+ declare class MusepackParser extends AbstractID3Parser {
3
+ postId3v2Parse(): Promise<void>;
4
+ }
5
+ export default MusepackParser;
@@ -1,32 +1,32 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const debug_1 = 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 = (0, debug_1.default)('music-metadata:parser:musepack');
9
- class MusepackParser extends AbstractID3Parser_1.AbstractID3Parser {
10
- async postId3v2Parse() {
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 debug_1 = 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 = (0, debug_1.default)('music-metadata:parser:musepack');
9
+ class MusepackParser extends AbstractID3Parser_1.AbstractID3Parser {
10
+ async postId3v2Parse() {
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
+ }