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,175 +1,175 @@
1
- /// <reference types="node" />
2
- export interface IHeader {
3
- id: number;
4
- len: number;
5
- }
6
- export declare enum DataType {
7
- 'string' = 0,
8
- uint = 1,
9
- uid = 2,
10
- bool = 3,
11
- binary = 4,
12
- float = 5
13
- }
14
- export interface IElementType<T> {
15
- readonly name: string;
16
- readonly value?: DataType;
17
- readonly container?: IContainerType;
18
- readonly multiple?: boolean;
19
- }
20
- export interface IContainerType {
21
- [id: number]: IElementType<string | number | boolean | Buffer>;
22
- }
23
- export interface ITree {
24
- [name: string]: string | number | boolean | Buffer | ITree | ITree[];
25
- }
26
- export interface ISeekHead {
27
- id?: Buffer;
28
- position?: number;
29
- }
30
- export interface IMetaSeekInformation {
31
- seekHeads: ISeekHead[];
32
- }
33
- export interface ISegmentInformation {
34
- uid?: Buffer;
35
- timecodeScale?: number;
36
- duration?: number;
37
- dateUTC?: number;
38
- title?: string;
39
- muxingApp?: string;
40
- writingApp?: string;
41
- }
42
- export interface ITrackEntry {
43
- uid?: Buffer;
44
- trackNumber?: number;
45
- trackType?: TrackType;
46
- audio?: ITrackAudio;
47
- video?: ITrackVideo;
48
- flagEnabled?: boolean;
49
- flagDefault?: boolean;
50
- flagLacing?: boolean;
51
- defaultDuration?: number;
52
- trackTimecodeScale?: number;
53
- name?: string;
54
- language?: string;
55
- codecID?: string;
56
- codecPrivate?: Buffer;
57
- codecName?: string;
58
- codecSettings?: string;
59
- codecInfoUrl?: string;
60
- codecDownloadUrl?: string;
61
- codecDecodeAll?: string;
62
- trackOverlay?: string;
63
- }
64
- export interface ITrackVideo {
65
- flagInterlaced?: boolean;
66
- stereoMode?: number;
67
- pixelWidth?: number;
68
- pixelHeight?: number;
69
- displayWidth?: number;
70
- displayHeight?: number;
71
- displayUnit?: number;
72
- aspectRatioType?: number;
73
- colourSpace?: Buffer;
74
- gammaValue?: number;
75
- }
76
- export interface ITrackAudio {
77
- samplingFrequency?: number;
78
- outputSamplingFrequency?: number;
79
- channels?: number;
80
- channelPositions?: Buffer;
81
- bitDepth?: number;
82
- }
83
- export interface ICuePoint {
84
- cueTime?: number;
85
- cueTrackPositions: ICueTrackPosition[];
86
- }
87
- export interface ICueTrackPosition {
88
- cueTrack?: number;
89
- cueClusterPosition?: number;
90
- cueBlockNumber?: number;
91
- cueCodecState?: number;
92
- cueReference?: ICueReference;
93
- }
94
- export interface ICueReference {
95
- cueRefTime?: number;
96
- cueRefCluster?: number;
97
- cueRefNumber?: number;
98
- cueRefCodecState?: number;
99
- }
100
- export interface ISimpleTag {
101
- name?: string;
102
- 'string'?: string;
103
- binary?: Buffer;
104
- language?: string;
105
- default?: boolean;
106
- }
107
- export declare enum TargetType {
108
- shot = 10,
109
- scene = 20,
110
- track = 30,
111
- part = 40,
112
- album = 50,
113
- edition = 60,
114
- collection = 70
115
- }
116
- export declare enum TrackType {
117
- video = 1,
118
- audio = 2,
119
- complex = 3,
120
- logo = 4,
121
- subtitle = 17,
122
- button = 18,
123
- control = 32
124
- }
125
- export interface ITarget {
126
- trackUID?: Buffer;
127
- chapterUID?: Buffer;
128
- attachmentUID?: Buffer;
129
- targetTypeValue?: TargetType;
130
- targetType?: string;
131
- }
132
- export interface ITag {
133
- target: ITarget;
134
- simpleTags: ISimpleTag[];
135
- }
136
- export interface ITags {
137
- tag: ITag[];
138
- }
139
- export interface ITrackElement {
140
- entries?: ITrackEntry[];
141
- }
142
- export interface IAttachmedFile {
143
- description?: string;
144
- name: string;
145
- mimeType: string;
146
- data: Buffer;
147
- uid: string;
148
- }
149
- export interface IAttachments {
150
- attachedFiles?: IAttachmedFile[];
151
- }
152
- export interface IMatroskaSegment {
153
- metaSeekInfo?: IMetaSeekInformation;
154
- seekHeads?: ISeekHead[];
155
- info?: ISegmentInformation;
156
- tracks?: ITrackElement;
157
- tags?: ITags;
158
- cues?: ICuePoint[];
159
- attachments?: IAttachments;
160
- }
161
- export interface IEbmlElements {
162
- version?: number;
163
- readVersion?: number;
164
- maxIDWidth?: number;
165
- maxSizeWidth?: number;
166
- docType?: string;
167
- docTypeVersion?: number;
168
- docTypeReadVersion?: number;
169
- }
170
- export interface IEbmlDoc {
171
- ebml: IEbmlElements;
172
- }
173
- export interface IMatroskaDoc extends IEbmlDoc {
174
- segment: IMatroskaSegment;
175
- }
1
+ /// <reference types="node" />
2
+ export interface IHeader {
3
+ id: number;
4
+ len: number;
5
+ }
6
+ export declare enum DataType {
7
+ 'string' = 0,
8
+ uint = 1,
9
+ uid = 2,
10
+ bool = 3,
11
+ binary = 4,
12
+ float = 5
13
+ }
14
+ export interface IElementType<T> {
15
+ readonly name: string;
16
+ readonly value?: DataType;
17
+ readonly container?: IContainerType;
18
+ readonly multiple?: boolean;
19
+ }
20
+ export interface IContainerType {
21
+ [id: number]: IElementType<string | number | boolean | Buffer>;
22
+ }
23
+ export interface ITree {
24
+ [name: string]: string | number | boolean | Buffer | ITree | ITree[];
25
+ }
26
+ export interface ISeekHead {
27
+ id?: Buffer;
28
+ position?: number;
29
+ }
30
+ export interface IMetaSeekInformation {
31
+ seekHeads: ISeekHead[];
32
+ }
33
+ export interface ISegmentInformation {
34
+ uid?: Buffer;
35
+ timecodeScale?: number;
36
+ duration?: number;
37
+ dateUTC?: number;
38
+ title?: string;
39
+ muxingApp?: string;
40
+ writingApp?: string;
41
+ }
42
+ export interface ITrackEntry {
43
+ uid?: Buffer;
44
+ trackNumber?: number;
45
+ trackType?: TrackType;
46
+ audio?: ITrackAudio;
47
+ video?: ITrackVideo;
48
+ flagEnabled?: boolean;
49
+ flagDefault?: boolean;
50
+ flagLacing?: boolean;
51
+ defaultDuration?: number;
52
+ trackTimecodeScale?: number;
53
+ name?: string;
54
+ language?: string;
55
+ codecID?: string;
56
+ codecPrivate?: Buffer;
57
+ codecName?: string;
58
+ codecSettings?: string;
59
+ codecInfoUrl?: string;
60
+ codecDownloadUrl?: string;
61
+ codecDecodeAll?: string;
62
+ trackOverlay?: string;
63
+ }
64
+ export interface ITrackVideo {
65
+ flagInterlaced?: boolean;
66
+ stereoMode?: number;
67
+ pixelWidth?: number;
68
+ pixelHeight?: number;
69
+ displayWidth?: number;
70
+ displayHeight?: number;
71
+ displayUnit?: number;
72
+ aspectRatioType?: number;
73
+ colourSpace?: Buffer;
74
+ gammaValue?: number;
75
+ }
76
+ export interface ITrackAudio {
77
+ samplingFrequency?: number;
78
+ outputSamplingFrequency?: number;
79
+ channels?: number;
80
+ channelPositions?: Buffer;
81
+ bitDepth?: number;
82
+ }
83
+ export interface ICuePoint {
84
+ cueTime?: number;
85
+ cueTrackPositions: ICueTrackPosition[];
86
+ }
87
+ export interface ICueTrackPosition {
88
+ cueTrack?: number;
89
+ cueClusterPosition?: number;
90
+ cueBlockNumber?: number;
91
+ cueCodecState?: number;
92
+ cueReference?: ICueReference;
93
+ }
94
+ export interface ICueReference {
95
+ cueRefTime?: number;
96
+ cueRefCluster?: number;
97
+ cueRefNumber?: number;
98
+ cueRefCodecState?: number;
99
+ }
100
+ export interface ISimpleTag {
101
+ name?: string;
102
+ 'string'?: string;
103
+ binary?: Buffer;
104
+ language?: string;
105
+ default?: boolean;
106
+ }
107
+ export declare enum TargetType {
108
+ shot = 10,
109
+ scene = 20,
110
+ track = 30,
111
+ part = 40,
112
+ album = 50,
113
+ edition = 60,
114
+ collection = 70
115
+ }
116
+ export declare enum TrackType {
117
+ video = 1,
118
+ audio = 2,
119
+ complex = 3,
120
+ logo = 4,
121
+ subtitle = 17,
122
+ button = 18,
123
+ control = 32
124
+ }
125
+ export interface ITarget {
126
+ trackUID?: Buffer;
127
+ chapterUID?: Buffer;
128
+ attachmentUID?: Buffer;
129
+ targetTypeValue?: TargetType;
130
+ targetType?: string;
131
+ }
132
+ export interface ITag {
133
+ target: ITarget;
134
+ simpleTags: ISimpleTag[];
135
+ }
136
+ export interface ITags {
137
+ tag: ITag[];
138
+ }
139
+ export interface ITrackElement {
140
+ entries?: ITrackEntry[];
141
+ }
142
+ export interface IAttachmedFile {
143
+ description?: string;
144
+ name: string;
145
+ mimeType: string;
146
+ data: Buffer;
147
+ uid: string;
148
+ }
149
+ export interface IAttachments {
150
+ attachedFiles?: IAttachmedFile[];
151
+ }
152
+ export interface IMatroskaSegment {
153
+ metaSeekInfo?: IMetaSeekInformation;
154
+ seekHeads?: ISeekHead[];
155
+ info?: ISegmentInformation;
156
+ tracks?: ITrackElement;
157
+ tags?: ITags;
158
+ cues?: ICuePoint[];
159
+ attachments?: IAttachments;
160
+ }
161
+ export interface IEbmlElements {
162
+ version?: number;
163
+ readVersion?: number;
164
+ maxIDWidth?: number;
165
+ maxSizeWidth?: number;
166
+ docType?: string;
167
+ docTypeVersion?: number;
168
+ docTypeReadVersion?: number;
169
+ }
170
+ export interface IEbmlDoc {
171
+ ebml: IEbmlElements;
172
+ }
173
+ export interface IMatroskaDoc extends IEbmlDoc {
174
+ segment: IMatroskaSegment;
175
+ }
@@ -1,33 +1,33 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TrackType = exports.TargetType = exports.DataType = void 0;
4
- var DataType;
5
- (function (DataType) {
6
- DataType[DataType["string"] = 0] = "string";
7
- DataType[DataType["uint"] = 1] = "uint";
8
- DataType[DataType["uid"] = 2] = "uid";
9
- DataType[DataType["bool"] = 3] = "bool";
10
- DataType[DataType["binary"] = 4] = "binary";
11
- DataType[DataType["float"] = 5] = "float";
12
- })(DataType = exports.DataType || (exports.DataType = {}));
13
- var TargetType;
14
- (function (TargetType) {
15
- TargetType[TargetType["shot"] = 10] = "shot";
16
- TargetType[TargetType["scene"] = 20] = "scene";
17
- TargetType[TargetType["track"] = 30] = "track";
18
- TargetType[TargetType["part"] = 40] = "part";
19
- TargetType[TargetType["album"] = 50] = "album";
20
- TargetType[TargetType["edition"] = 60] = "edition";
21
- TargetType[TargetType["collection"] = 70] = "collection";
22
- })(TargetType = exports.TargetType || (exports.TargetType = {}));
23
- var TrackType;
24
- (function (TrackType) {
25
- TrackType[TrackType["video"] = 1] = "video";
26
- TrackType[TrackType["audio"] = 2] = "audio";
27
- TrackType[TrackType["complex"] = 3] = "complex";
28
- TrackType[TrackType["logo"] = 4] = "logo";
29
- TrackType[TrackType["subtitle"] = 17] = "subtitle";
30
- TrackType[TrackType["button"] = 18] = "button";
31
- TrackType[TrackType["control"] = 32] = "control";
32
- })(TrackType = exports.TrackType || (exports.TrackType = {}));
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TrackType = exports.TargetType = exports.DataType = void 0;
4
+ var DataType;
5
+ (function (DataType) {
6
+ DataType[DataType["string"] = 0] = "string";
7
+ DataType[DataType["uint"] = 1] = "uint";
8
+ DataType[DataType["uid"] = 2] = "uid";
9
+ DataType[DataType["bool"] = 3] = "bool";
10
+ DataType[DataType["binary"] = 4] = "binary";
11
+ DataType[DataType["float"] = 5] = "float";
12
+ })(DataType = exports.DataType || (exports.DataType = {}));
13
+ var TargetType;
14
+ (function (TargetType) {
15
+ TargetType[TargetType["shot"] = 10] = "shot";
16
+ TargetType[TargetType["scene"] = 20] = "scene";
17
+ TargetType[TargetType["track"] = 30] = "track";
18
+ TargetType[TargetType["part"] = 40] = "part";
19
+ TargetType[TargetType["album"] = 50] = "album";
20
+ TargetType[TargetType["edition"] = 60] = "edition";
21
+ TargetType[TargetType["collection"] = 70] = "collection";
22
+ })(TargetType = exports.TargetType || (exports.TargetType = {}));
23
+ var TrackType;
24
+ (function (TrackType) {
25
+ TrackType[TrackType["video"] = 1] = "video";
26
+ TrackType[TrackType["audio"] = 2] = "audio";
27
+ TrackType[TrackType["complex"] = 3] = "complex";
28
+ TrackType[TrackType["logo"] = 4] = "logo";
29
+ TrackType[TrackType["subtitle"] = 17] = "subtitle";
30
+ TrackType[TrackType["button"] = 18] = "button";
31
+ TrackType[TrackType["control"] = 32] = "control";
32
+ })(TrackType = exports.TrackType || (exports.TrackType = {}));
33
33
  //# sourceMappingURL=types.js.map
package/lib/mp4/Atom.d.ts CHANGED
@@ -1,16 +1,16 @@
1
- import { ITokenizer } from 'strtok3/lib/core';
2
- import * as AtomToken from './AtomToken';
3
- export declare type AtomDataHandler = (atom: Atom, remaining: number) => Promise<void>;
4
- export declare class Atom {
5
- readonly header: AtomToken.IAtomHeader;
6
- extended: boolean;
7
- readonly parent: Atom;
8
- static readAtom(tokenizer: ITokenizer, dataHandler: AtomDataHandler, parent: Atom, remaining: number): Promise<Atom>;
9
- readonly children: Atom[];
10
- readonly atomPath: string;
11
- constructor(header: AtomToken.IAtomHeader, extended: boolean, parent: Atom);
12
- getHeaderLength(): number;
13
- getPayloadLength(remaining: number): number;
14
- readAtoms(tokenizer: ITokenizer, dataHandler: AtomDataHandler, size: number): Promise<void>;
15
- private readData;
16
- }
1
+ import { ITokenizer } from 'strtok3/lib/core';
2
+ import * as AtomToken from './AtomToken';
3
+ export declare type AtomDataHandler = (atom: Atom, remaining: number) => Promise<void>;
4
+ export declare class Atom {
5
+ readonly header: AtomToken.IAtomHeader;
6
+ extended: boolean;
7
+ readonly parent: Atom;
8
+ static readAtom(tokenizer: ITokenizer, dataHandler: AtomDataHandler, parent: Atom, remaining: number): Promise<Atom>;
9
+ readonly children: Atom[];
10
+ readonly atomPath: string;
11
+ constructor(header: AtomToken.IAtomHeader, extended: boolean, parent: Atom);
12
+ getHeaderLength(): number;
13
+ getPayloadLength(remaining: number): number;
14
+ readAtoms(tokenizer: ITokenizer, dataHandler: AtomDataHandler, size: number): Promise<void>;
15
+ private readData;
16
+ }
package/lib/mp4/Atom.js CHANGED
@@ -1,70 +1,70 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Atom = void 0;
4
- const debug_1 = require("debug");
5
- const AtomToken = require("./AtomToken");
6
- const debug = (0, debug_1.default)('music-metadata:parser:MP4:Atom');
7
- class Atom {
8
- constructor(header, extended, parent) {
9
- this.header = header;
10
- this.extended = extended;
11
- this.parent = parent;
12
- this.children = [];
13
- this.atomPath = (this.parent ? this.parent.atomPath + '.' : '') + this.header.name;
14
- }
15
- static async readAtom(tokenizer, dataHandler, parent, remaining) {
16
- // Parse atom header
17
- const offset = tokenizer.position;
18
- // debug(`Reading next token on offset=${offset}...`); // buf.toString('ascii')
19
- const header = await tokenizer.readToken(AtomToken.Header);
20
- const extended = header.length === BigInt(1);
21
- if (extended) {
22
- header.length = await tokenizer.readToken(AtomToken.ExtendedSize);
23
- }
24
- const atomBean = new Atom(header, header.length === BigInt(1), parent);
25
- const payloadLength = atomBean.getPayloadLength(remaining);
26
- debug(`parse atom name=${atomBean.atomPath}, extended=${atomBean.extended}, offset=${offset}, len=${atomBean.header.length}`); // buf.toString('ascii')
27
- await atomBean.readData(tokenizer, dataHandler, payloadLength);
28
- return atomBean;
29
- }
30
- getHeaderLength() {
31
- return this.extended ? 16 : 8;
32
- }
33
- getPayloadLength(remaining) {
34
- return (this.header.length === BigInt(0) ? remaining : Number(this.header.length)) - this.getHeaderLength();
35
- }
36
- async readAtoms(tokenizer, dataHandler, size) {
37
- while (size > 0) {
38
- const atomBean = await Atom.readAtom(tokenizer, dataHandler, this, size);
39
- this.children.push(atomBean);
40
- size -= atomBean.header.length === BigInt(0) ? size : Number(atomBean.header.length);
41
- }
42
- }
43
- async readData(tokenizer, dataHandler, remaining) {
44
- switch (this.header.name) {
45
- // "Container" atoms, contains nested atoms
46
- case 'moov': // The Movie Atom: contains other atoms
47
- case 'udta': // User defined atom
48
- case 'trak':
49
- case 'mdia': // Media atom
50
- case 'minf': // Media Information Atom
51
- case 'stbl': // The Sample Table Atom
52
- case '<id>':
53
- case 'ilst':
54
- case 'tref':
55
- return this.readAtoms(tokenizer, dataHandler, this.getPayloadLength(remaining));
56
- case 'meta': // Metadata Atom, ref: https://developer.apple.com/library/content/documentation/QuickTime/QTFF/Metadata/Metadata.html#//apple_ref/doc/uid/TP40000939-CH1-SW8
57
- // meta has 4 bytes of padding, ignore
58
- await tokenizer.ignore(4);
59
- return this.readAtoms(tokenizer, dataHandler, this.getPayloadLength(remaining) - 4);
60
- case 'mdhd': // Media header atom
61
- case 'mvhd': // 'movie' => 'mvhd': movie header atom; child of Movie Atom
62
- case 'tkhd':
63
- case 'stsz':
64
- case 'mdat':
65
- default:
66
- return dataHandler(this, remaining);
67
- }
68
- }
69
- }
70
- exports.Atom = Atom;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Atom = void 0;
4
+ const debug_1 = require("debug");
5
+ const AtomToken = require("./AtomToken");
6
+ const debug = (0, debug_1.default)('music-metadata:parser:MP4:Atom');
7
+ class Atom {
8
+ constructor(header, extended, parent) {
9
+ this.header = header;
10
+ this.extended = extended;
11
+ this.parent = parent;
12
+ this.children = [];
13
+ this.atomPath = (this.parent ? this.parent.atomPath + '.' : '') + this.header.name;
14
+ }
15
+ static async readAtom(tokenizer, dataHandler, parent, remaining) {
16
+ // Parse atom header
17
+ const offset = tokenizer.position;
18
+ // debug(`Reading next token on offset=${offset}...`); // buf.toString('ascii')
19
+ const header = await tokenizer.readToken(AtomToken.Header);
20
+ const extended = header.length === BigInt(1);
21
+ if (extended) {
22
+ header.length = await tokenizer.readToken(AtomToken.ExtendedSize);
23
+ }
24
+ const atomBean = new Atom(header, header.length === BigInt(1), parent);
25
+ const payloadLength = atomBean.getPayloadLength(remaining);
26
+ debug(`parse atom name=${atomBean.atomPath}, extended=${atomBean.extended}, offset=${offset}, len=${atomBean.header.length}`); // buf.toString('ascii')
27
+ await atomBean.readData(tokenizer, dataHandler, payloadLength);
28
+ return atomBean;
29
+ }
30
+ getHeaderLength() {
31
+ return this.extended ? 16 : 8;
32
+ }
33
+ getPayloadLength(remaining) {
34
+ return (this.header.length === BigInt(0) ? remaining : Number(this.header.length)) - this.getHeaderLength();
35
+ }
36
+ async readAtoms(tokenizer, dataHandler, size) {
37
+ while (size > 0) {
38
+ const atomBean = await Atom.readAtom(tokenizer, dataHandler, this, size);
39
+ this.children.push(atomBean);
40
+ size -= atomBean.header.length === BigInt(0) ? size : Number(atomBean.header.length);
41
+ }
42
+ }
43
+ async readData(tokenizer, dataHandler, remaining) {
44
+ switch (this.header.name) {
45
+ // "Container" atoms, contains nested atoms
46
+ case 'moov': // The Movie Atom: contains other atoms
47
+ case 'udta': // User defined atom
48
+ case 'trak':
49
+ case 'mdia': // Media atom
50
+ case 'minf': // Media Information Atom
51
+ case 'stbl': // The Sample Table Atom
52
+ case '<id>':
53
+ case 'ilst':
54
+ case 'tref':
55
+ return this.readAtoms(tokenizer, dataHandler, this.getPayloadLength(remaining));
56
+ case 'meta': // Metadata Atom, ref: https://developer.apple.com/library/content/documentation/QuickTime/QTFF/Metadata/Metadata.html#//apple_ref/doc/uid/TP40000939-CH1-SW8
57
+ // meta has 4 bytes of padding, ignore
58
+ await tokenizer.ignore(4);
59
+ return this.readAtoms(tokenizer, dataHandler, this.getPayloadLength(remaining) - 4);
60
+ case 'mdhd': // Media header atom
61
+ case 'mvhd': // 'movie' => 'mvhd': movie header atom; child of Movie Atom
62
+ case 'tkhd':
63
+ case 'stsz':
64
+ case 'mdat':
65
+ default:
66
+ return dataHandler(this, remaining);
67
+ }
68
+ }
69
+ }
70
+ exports.Atom = Atom;