@remotion/media-parser 4.0.234 → 4.0.236

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 (94) hide show
  1. package/dist/aac-codecprivate.d.ts +19 -0
  2. package/dist/aac-codecprivate.js +122 -0
  3. package/dist/add-avc-profile-to-track.d.ts +1 -1
  4. package/dist/boxes/iso-base-media/get-actual-number-of-channels.d.ts +13 -0
  5. package/dist/boxes/iso-base-media/get-actual-number-of-channels.js +22 -0
  6. package/dist/boxes/iso-base-media/make-track.js +16 -7
  7. package/dist/boxes/iso-base-media/meta/hdlr.d.ts +12 -0
  8. package/dist/boxes/iso-base-media/meta/hdlr.js +33 -0
  9. package/dist/boxes/iso-base-media/meta/ilst.d.ts +28 -0
  10. package/dist/boxes/iso-base-media/meta/ilst.js +86 -0
  11. package/dist/boxes/iso-base-media/meta/keys.d.ts +10 -0
  12. package/dist/boxes/iso-base-media/meta/keys.js +17 -0
  13. package/dist/boxes/iso-base-media/meta/list.d.ts +12 -0
  14. package/dist/boxes/iso-base-media/meta/list.js +33 -0
  15. package/dist/boxes/iso-base-media/moov/moov.d.ts +3 -1
  16. package/dist/boxes/iso-base-media/moov/moov.js +2 -1
  17. package/dist/boxes/iso-base-media/process-box.d.ts +5 -2
  18. package/dist/boxes/iso-base-media/process-box.js +66 -8
  19. package/dist/boxes/iso-base-media/stsd/keys.d.ts +15 -1
  20. package/dist/boxes/iso-base-media/stsd/keys.js +25 -12
  21. package/dist/boxes/iso-base-media/stsd/mebx.d.ts +3 -1
  22. package/dist/boxes/iso-base-media/stsd/mebx.js +2 -1
  23. package/dist/boxes/iso-base-media/stsd/samples.d.ts +5 -2
  24. package/dist/boxes/iso-base-media/stsd/samples.js +7 -2
  25. package/dist/boxes/iso-base-media/stsd/stsd.d.ts +3 -1
  26. package/dist/boxes/iso-base-media/stsd/stsd.js +2 -1
  27. package/dist/boxes/iso-base-media/trak/trak.d.ts +3 -1
  28. package/dist/boxes/iso-base-media/trak/trak.js +2 -1
  29. package/dist/boxes/riff/expect-riff-box.d.ts +1 -0
  30. package/dist/boxes/riff/expect-riff-box.js +1 -1
  31. package/dist/boxes/riff/get-tracks-from-avi.d.ts +2 -1
  32. package/dist/boxes/riff/get-tracks-from-avi.js +14 -8
  33. package/dist/boxes/riff/parse-box.d.ts +3 -1
  34. package/dist/boxes/riff/parse-box.js +38 -5
  35. package/dist/boxes/riff/parse-isft.d.ts +6 -0
  36. package/dist/boxes/riff/parse-isft.js +17 -0
  37. package/dist/boxes/riff/parse-movi.js +31 -20
  38. package/dist/boxes/riff/parse-riff-box.js +4 -0
  39. package/dist/boxes/riff/riff-box.d.ts +5 -1
  40. package/dist/boxes/webm/parse-ebml.js +2 -1
  41. package/dist/boxes/webm/parse-webm-header.d.ts +6 -1
  42. package/dist/boxes/webm/parse-webm-header.js +3 -1
  43. package/dist/boxes/webm/segments/all-segments.d.ts +42 -2
  44. package/dist/boxes/webm/segments/all-segments.js +28 -3
  45. package/dist/boxes/webm/segments/parse-children.d.ts +8 -3
  46. package/dist/boxes/webm/segments/parse-children.js +39 -4
  47. package/dist/boxes/webm/segments.d.ts +5 -2
  48. package/dist/boxes/webm/segments.js +23 -3
  49. package/dist/boxes/webm/traversal.d.ts +1 -0
  50. package/dist/boxes/webm/traversal.js +18 -2
  51. package/dist/buffer-iterator.d.ts +3 -0
  52. package/dist/buffer-iterator.js +23 -0
  53. package/dist/create/iso-base-media/codec-specific/mp4a.js +1 -17
  54. package/dist/create/iso-base-media/mp4-header.js +2 -1
  55. package/dist/emit-available-info.d.ts +1 -1
  56. package/dist/emit-available-info.js +17 -6
  57. package/dist/esm/index.mjs +992 -162
  58. package/dist/get-audio-codec.d.ts +1 -1
  59. package/dist/get-dimensions.d.ts +1 -1
  60. package/dist/get-duration.d.ts +1 -1
  61. package/dist/get-is-hdr.d.ts +1 -1
  62. package/dist/get-metadata.d.ts +7 -0
  63. package/dist/get-metadata.js +63 -0
  64. package/dist/get-tracks.d.ts +1 -1
  65. package/dist/get-tracks.js +1 -1
  66. package/dist/get-video-codec.d.ts +1 -1
  67. package/dist/has-all-info.d.ts +8 -3
  68. package/dist/has-all-info.js +21 -12
  69. package/dist/index.d.ts +6 -0
  70. package/dist/index.js +2 -0
  71. package/dist/metadata/get-metadata.d.ts +7 -0
  72. package/dist/metadata/get-metadata.js +16 -0
  73. package/dist/metadata/metadata-from-iso.d.ts +4 -0
  74. package/dist/metadata/metadata-from-iso.js +148 -0
  75. package/dist/metadata/metadata-from-matroska.d.ts +3 -0
  76. package/dist/metadata/metadata-from-matroska.js +53 -0
  77. package/dist/metadata/metadata-from-riff.d.ts +3 -0
  78. package/dist/metadata/metadata-from-riff.js +24 -0
  79. package/dist/options.d.ts +9 -3
  80. package/dist/parse-media.js +32 -29
  81. package/dist/parse-result.d.ts +3 -1
  82. package/dist/parse-video.d.ts +3 -1
  83. package/dist/parse-video.js +5 -3
  84. package/dist/parser-context.d.ts +1 -2
  85. package/dist/register-track.d.ts +1 -1
  86. package/dist/state/can-skip-tracks.d.ts +9 -0
  87. package/dist/state/can-skip-tracks.js +33 -0
  88. package/dist/state/has-tracks-section.d.ts +6 -0
  89. package/dist/state/has-tracks-section.js +21 -0
  90. package/dist/state/parser-state.d.ts +51 -0
  91. package/dist/state/parser-state.js +170 -0
  92. package/dist/version.d.ts +1 -1
  93. package/dist/version.js +1 -1
  94. package/package.json +9 -9
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getClusterSegment = exports.getPrivateData = exports.getBitDepth = exports.getNumberOfChannels = exports.getSampleRate = exports.getAudioSegment = exports.getVideoSegment = exports.getTimescaleSegment = exports.getTracksSegment = exports.getDisplayWidthSegment = exports.getHeightSegment = exports.getWidthSegment = exports.getTrackTypeSegment = exports.getDisplayHeightSegment = exports.getRangeSegment = exports.getPrimariesSegment = exports.getMatrixCoefficientsSegment = exports.getTransferCharacteristicsSegment = exports.getColourSegment = exports.getCodecSegment = exports.getTrackId = exports.getTrackByNumber = exports.getTrackTimestampScale = exports.getTrackCodec = exports.getTrackNumber = exports.getMainSegment = void 0;
3
+ exports.getClusterSegment = exports.getPrivateData = exports.getBitDepth = exports.getNumberOfChannels = exports.getSampleRate = exports.getAudioSegment = exports.getVideoSegment = exports.getTimescaleSegment = exports.getTrackWithUid = exports.getTracksSegment = exports.getDisplayWidthSegment = exports.getHeightSegment = exports.getWidthSegment = exports.getTrackTypeSegment = exports.getDisplayHeightSegment = exports.getRangeSegment = exports.getPrimariesSegment = exports.getMatrixCoefficientsSegment = exports.getTransferCharacteristicsSegment = exports.getColourSegment = exports.getCodecSegment = exports.getTrackId = exports.getTrackByNumber = exports.getTrackTimestampScale = exports.getTrackCodec = exports.getTrackNumber = exports.getMainSegment = void 0;
4
4
  const getMainSegment = (segments) => {
5
5
  return segments.find((s) => s.type === 'Segment');
6
6
  };
@@ -164,12 +164,28 @@ const getDisplayWidthSegment = (track) => {
164
164
  exports.getDisplayWidthSegment = getDisplayWidthSegment;
165
165
  const getTracksSegment = (segment) => {
166
166
  const tracksSegment = segment.value.find((b) => b.type === 'Tracks');
167
- if (!tracksSegment || tracksSegment.type !== 'Tracks') {
167
+ if (!tracksSegment) {
168
168
  return null;
169
169
  }
170
170
  return tracksSegment;
171
171
  };
172
172
  exports.getTracksSegment = getTracksSegment;
173
+ const getTrackWithUid = (segment, trackUid) => {
174
+ var _a, _b;
175
+ const tracksSegment = (0, exports.getTracksSegment)(segment);
176
+ if (!tracksSegment) {
177
+ return null;
178
+ }
179
+ const trackEntries = tracksSegment.value.filter((t) => t.type === 'TrackEntry');
180
+ const trackEntry = trackEntries.find((entry) => {
181
+ return entry === null || entry === void 0 ? void 0 : entry.value.find((t) => t.type === 'TrackUID' && t.value === trackUid);
182
+ });
183
+ if (!trackEntry) {
184
+ return null;
185
+ }
186
+ return ((_b = (_a = trackEntry.value.find((t) => t.type === 'TrackNumber')) === null || _a === void 0 ? void 0 : _a.value.value) !== null && _b !== void 0 ? _b : null);
187
+ };
188
+ exports.getTrackWithUid = getTrackWithUid;
173
189
  const getTimescaleSegment = (segment) => {
174
190
  const infoSegment = segment.value.find((b) => b.type === 'Info');
175
191
  if (!infoSegment || infoSegment.type !== 'Info') {
@@ -39,9 +39,11 @@ export declare const getArrayBufferIterator: (initialData: Uint8Array, maxBytes:
39
39
  getUint16: () => number;
40
40
  getUint16Le: () => number;
41
41
  getUint24: () => number;
42
+ getInt24: () => number;
42
43
  getInt16: () => number;
43
44
  getUint32: () => number;
44
45
  getUint64: (littleEndian?: boolean) => bigint;
46
+ getInt64: (littleEndian?: boolean) => bigint;
45
47
  getFixedPointUnsigned1616Number: () => number;
46
48
  getFixedPointSigned1616Number: () => number;
47
49
  getFixedPointSigned230Number: () => number;
@@ -49,6 +51,7 @@ export declare const getArrayBufferIterator: (initialData: Uint8Array, maxBytes:
49
51
  getUint(length: number): number;
50
52
  getByteString(length: number): string;
51
53
  getFloat64: () => number;
54
+ readUntilNullTerminator: () => string;
52
55
  getFloat32: () => number;
53
56
  getUint32Le: () => number;
54
57
  getInt32Le: () => number;
@@ -92,6 +92,15 @@ const getArrayBufferIterator = (initialData, maxBytes) => {
92
92
  const discard = (length) => {
93
93
  counter.increment(length);
94
94
  };
95
+ const readUntilNullTerminator = () => {
96
+ const bytes = [];
97
+ let byte;
98
+ while ((byte = getUint8()) !== 0) {
99
+ bytes.push(byte);
100
+ }
101
+ counter.decrement(1);
102
+ return new TextDecoder().decode(new Uint8Array(bytes));
103
+ };
95
104
  const getUint8 = () => {
96
105
  const val = view.getUint8(counter.getDiscardedOffset());
97
106
  counter.increment(1);
@@ -155,6 +164,11 @@ const getArrayBufferIterator = (initialData, maxBytes) => {
155
164
  counter.increment(8);
156
165
  return val;
157
166
  };
167
+ const getInt64 = (littleEndian = false) => {
168
+ const val = view.getBigInt64(counter.getDiscardedOffset(), littleEndian);
169
+ counter.increment(8);
170
+ return val;
171
+ };
158
172
  const startBox = (size) => {
159
173
  const startOffset = counter.getOffset();
160
174
  return {
@@ -439,6 +453,13 @@ const getArrayBufferIterator = (initialData, maxBytes) => {
439
453
  counter.increment(3);
440
454
  return (val1 << 16) | (val2 << 8) | val3;
441
455
  },
456
+ getInt24: () => {
457
+ const val1 = view.getInt8(counter.getDiscardedOffset());
458
+ const val2 = view.getUint8(counter.getDiscardedOffset() + 1);
459
+ const val3 = view.getUint8(counter.getDiscardedOffset() + 2);
460
+ counter.increment(3);
461
+ return (val1 << 16) | (val2 << 8) | val3;
462
+ },
442
463
  getInt16: () => {
443
464
  const val = view.getInt16(counter.getDiscardedOffset());
444
465
  counter.increment(2);
@@ -446,6 +467,7 @@ const getArrayBufferIterator = (initialData, maxBytes) => {
446
467
  },
447
468
  getUint32,
448
469
  getUint64,
470
+ getInt64,
449
471
  // https://developer.apple.com/documentation/quicktime-file-format/sound_sample_description_version_1
450
472
  // A 32-bit unsigned fixed-point number (16.16) that indicates the rate at which the sound samples were obtained.
451
473
  getFixedPointUnsigned1616Number: () => {
@@ -478,6 +500,7 @@ const getArrayBufferIterator = (initialData, maxBytes) => {
478
500
  counter.increment(8);
479
501
  return val;
480
502
  },
503
+ readUntilNullTerminator,
481
504
  getFloat32: () => {
482
505
  const val = view.getFloat32(counter.getDiscardedOffset());
483
506
  counter.increment(4);
@@ -36,23 +36,7 @@ const createMp4a = ({ sampleRate, channelCount, avgBitrate, maxBitrate, codecPri
36
36
  (0, primitives_1.numberTo32BitUIntOrInt)(avgBitrate),
37
37
  // DecoderSpecificInfoTag
38
38
  new Uint8Array([5]),
39
- // codec private, for example [17, 144]
40
- // audioObjectType = 2 = 'AAC LC'
41
- // samplingFrequencyIndex = 3 = '48000 Hz'
42
- // channelConfiguration = 2 = '2 channels'
43
- /**
44
- * Byte 1 (17): 0001 0001
45
- ^^^^^ ^^^^
46
- | |
47
- | +-- Start of samplingFrequencyIndex (3)
48
- +-- audioConfigType (2)
49
-
50
- Byte 2 (144): 1001 0000
51
- ^^^^ ^^^^
52
- | |
53
- | +-- Remaining bits/padding
54
- +-- channelConfiguration (2)
55
- */
39
+ // see create-aac-codecprivate.ts
56
40
  (0, primitives_1.addLeading128Size)(codecPrivate),
57
41
  ])),
58
42
  // SLConfigDescrTag
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createPaddedMoovAtom = void 0;
4
+ const version_1 = require("../../version");
4
5
  const create_ilst_1 = require("./create-ilst");
5
6
  const create_moov_1 = require("./create-moov");
6
7
  const create_mvhd_1 = require("./create-mvhd");
@@ -39,7 +40,7 @@ const createPaddedMoovAtom = ({ durationInUnits, trackInfo, timescale, }) => {
39
40
  hdlr: (0, create_hdlr_1.createHdlr)('mdir'),
40
41
  ilst: (0, create_ilst_1.createIlst)([
41
42
  (0, create_too_1.createToo)('WebCodecs'),
42
- (0, create_cmt_1.createCmt)('Made with @remotion/webcodecs'),
43
+ (0, create_cmt_1.createCmt)(`Made with @remotion/webcodecs ${version_1.VERSION}`),
43
44
  ]),
44
45
  })),
45
46
  }), HEADER_LENGTH);
@@ -1,6 +1,6 @@
1
1
  import type { AllParseMediaFields, Options, ParseMediaCallbacks, ParseMediaFields, ParseMediaResult } from './options';
2
2
  import type { ParseResult, Structure } from './parse-result';
3
- import type { ParserState } from './parser-state';
3
+ import type { ParserState } from './state/parser-state';
4
4
  export declare const emitAvailableInfo: ({ hasInfo, parseResult, moreFields, state, returnValue, contentLength, name, }: {
5
5
  hasInfo: Record<keyof Options<ParseMediaFields>, boolean>;
6
6
  parseResult: ParseResult<Structure> | null;
@@ -9,6 +9,7 @@ const get_fps_1 = require("./get-fps");
9
9
  const get_is_hdr_1 = require("./get-is-hdr");
10
10
  const get_tracks_1 = require("./get-tracks");
11
11
  const get_video_codec_1 = require("./get-video-codec");
12
+ const get_metadata_1 = require("./metadata/get-metadata");
12
13
  const emitAvailableInfo = ({ hasInfo, parseResult, moreFields, state, returnValue, contentLength, name, }) => {
13
14
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
14
15
  const keys = Object.keys(hasInfo);
@@ -112,23 +113,23 @@ const emitAvailableInfo = ({ hasInfo, parseResult, moreFields, state, returnValu
112
113
  continue;
113
114
  }
114
115
  if (key === 'internalStats') {
115
- if (hasInfo.internalStats && returnValue.internalStats === undefined) {
116
+ // Special case: Always emitting internal stats at the end
117
+ if (hasInfo.internalStats) {
116
118
  const internalStats = state.getInternalStats();
117
- (_k = moreFields.onInternalStats) === null || _k === void 0 ? void 0 : _k.call(moreFields, internalStats);
118
119
  returnValue.internalStats = internalStats;
119
120
  }
120
121
  continue;
121
122
  }
122
123
  if (key === 'size') {
123
124
  if (returnValue.size === undefined && hasInfo.size) {
124
- (_l = moreFields.onSize) === null || _l === void 0 ? void 0 : _l.call(moreFields, contentLength);
125
+ (_k = moreFields.onSize) === null || _k === void 0 ? void 0 : _k.call(moreFields, contentLength);
125
126
  returnValue.size = contentLength;
126
127
  }
127
128
  continue;
128
129
  }
129
130
  if (key === 'name') {
130
131
  if (returnValue.name === undefined && hasInfo.name) {
131
- (_m = moreFields.onName) === null || _m === void 0 ? void 0 : _m.call(moreFields, name);
132
+ (_l = moreFields.onName) === null || _l === void 0 ? void 0 : _l.call(moreFields, name);
132
133
  returnValue.name = name;
133
134
  }
134
135
  continue;
@@ -136,7 +137,7 @@ const emitAvailableInfo = ({ hasInfo, parseResult, moreFields, state, returnValu
136
137
  if (key === 'isHdr') {
137
138
  if (returnValue.isHdr === undefined && hasInfo.isHdr && parseResult) {
138
139
  const isHdr = (0, get_is_hdr_1.getIsHdr)(parseResult.segments, state);
139
- (_o = moreFields.onIsHdr) === null || _o === void 0 ? void 0 : _o.call(moreFields, isHdr);
140
+ (_m = moreFields.onIsHdr) === null || _m === void 0 ? void 0 : _m.call(moreFields, isHdr);
140
141
  returnValue.isHdr = isHdr;
141
142
  }
142
143
  continue;
@@ -146,11 +147,21 @@ const emitAvailableInfo = ({ hasInfo, parseResult, moreFields, state, returnValu
146
147
  hasInfo.container &&
147
148
  parseResult) {
148
149
  const container = (0, get_container_1.getContainer)(parseResult.segments);
149
- (_p = moreFields.onContainer) === null || _p === void 0 ? void 0 : _p.call(moreFields, container);
150
+ (_o = moreFields.onContainer) === null || _o === void 0 ? void 0 : _o.call(moreFields, container);
150
151
  returnValue.container = container;
151
152
  }
152
153
  continue;
153
154
  }
155
+ if (key === 'metadata') {
156
+ if (returnValue.metadata === undefined &&
157
+ hasInfo.metadata &&
158
+ parseResult) {
159
+ const metadata = (0, get_metadata_1.getMetadata)(parseResult.segments);
160
+ (_p = moreFields.onMetadata) === null || _p === void 0 ? void 0 : _p.call(moreFields, metadata);
161
+ returnValue.metadata = metadata;
162
+ }
163
+ continue;
164
+ }
154
165
  throw new Error(`Unhandled key: ${key}`);
155
166
  }
156
167
  };