@remotion/media-parser 4.0.313 → 4.0.315

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.
@@ -1,10 +1,11 @@
1
1
  import type { BufferIterator } from '../../iterator/buffer-iterator';
2
+ import type { MediaParserLogLevel } from '../../log';
2
3
  import type { PossibleEbml } from './segments/all-segments';
3
4
  import type { WebmRequiredStatesForProcessing } from './state-for-processing';
4
5
  export type Prettify<T> = {
5
6
  [K in keyof T]: T[K];
6
7
  } & {};
7
- export declare const parseEbml: (iterator: BufferIterator, statesForProcessing: WebmRequiredStatesForProcessing | null) => Promise<Prettify<PossibleEbml>>;
8
+ export declare const parseEbml: (iterator: BufferIterator, statesForProcessing: WebmRequiredStatesForProcessing | null, logLevel: MediaParserLogLevel) => Promise<Prettify<PossibleEbml> | null>;
8
9
  export declare const postprocessEbml: ({ offset, ebml, statesForProcessing: { webmState, callbacks, logLevel, onAudioTrack, onVideoTrack, structureState, avcState, }, }: {
9
10
  offset: number;
10
11
  ebml: Prettify<PossibleEbml>;
@@ -1,25 +1,28 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.postprocessEbml = exports.parseEbml = void 0;
4
+ const log_1 = require("../../log");
4
5
  const register_track_1 = require("../../register-track");
5
6
  const get_sample_from_block_1 = require("./get-sample-from-block");
6
7
  const make_track_1 = require("./make-track");
7
8
  const all_segments_1 = require("./segments/all-segments");
8
- const parseEbml = async (iterator, statesForProcessing) => {
9
+ const parseEbml = async (iterator, statesForProcessing, logLevel) => {
9
10
  const hex = iterator.getMatroskaSegmentId();
10
11
  if (hex === null) {
11
12
  throw new Error('Not enough bytes left to parse EBML - this should not happen');
12
13
  }
13
- const hasInMap = all_segments_1.ebmlMap[hex];
14
- if (!hasInMap) {
15
- throw new Error(`Don't know how to parse EBML hex ID ${JSON.stringify(hex)}`);
16
- }
17
14
  const off = iterator.counter.getOffset();
18
15
  const size = iterator.getVint();
19
16
  const minVintWidth = iterator.counter.getOffset() - off;
20
17
  if (size === null) {
21
18
  throw new Error('Not enough bytes left to parse EBML - this should not happen');
22
19
  }
20
+ const hasInMap = all_segments_1.ebmlMap[hex];
21
+ if (!hasInMap) {
22
+ log_1.Log.verbose(logLevel, `Unknown EBML hex ID ${JSON.stringify(hex)}`);
23
+ iterator.discard(size);
24
+ return null;
25
+ }
23
26
  if (hasInMap.type === 'uint') {
24
27
  const beforeUintOffset = iterator.counter.getOffset();
25
28
  const value = size === 0 ? 0 : iterator.getUint(size);
@@ -83,16 +86,18 @@ const parseEbml = async (iterator, statesForProcessing) => {
83
86
  break;
84
87
  }
85
88
  const offset = iterator.counter.getOffset();
86
- const value = await (0, exports.parseEbml)(iterator, statesForProcessing);
87
- const remapped = statesForProcessing
88
- ? // eslint-disable-next-line @typescript-eslint/no-use-before-define
89
- await (0, exports.postprocessEbml)({
90
- offset,
91
- ebml: value,
92
- statesForProcessing,
93
- })
94
- : value;
95
- children.push(remapped);
89
+ const value = await (0, exports.parseEbml)(iterator, statesForProcessing, logLevel);
90
+ if (value) {
91
+ const remapped = statesForProcessing
92
+ ? // eslint-disable-next-line @typescript-eslint/no-use-before-define
93
+ await (0, exports.postprocessEbml)({
94
+ offset,
95
+ ebml: value,
96
+ statesForProcessing,
97
+ })
98
+ : value;
99
+ children.push(remapped);
100
+ }
96
101
  const offsetNow = iterator.counter.getOffset();
97
102
  if (offsetNow - startOffset > size) {
98
103
  throw new Error(`Offset ${offsetNow - startOffset} is larger than the length of the hex ${size}`);
@@ -75,17 +75,21 @@ const expectSegment = async ({ statesForProcessing, isInsideSegment, iterator, l
75
75
  headerReadSoFar: iterator.counter.getOffset() - offset,
76
76
  statesForProcessing,
77
77
  iterator,
78
+ logLevel,
78
79
  });
79
80
  return segment;
80
81
  };
81
82
  exports.expectSegment = expectSegment;
82
- const parseSegment = async ({ segmentId, length, iterator, headerReadSoFar, statesForProcessing, }) => {
83
+ const parseSegment = async ({ segmentId, length, iterator, headerReadSoFar, statesForProcessing, logLevel, }) => {
83
84
  if (length < 0) {
84
85
  throw new Error(`Expected length of ${segmentId} to be greater or equal 0`);
85
86
  }
86
87
  iterator.counter.decrement(headerReadSoFar);
87
88
  const offset = iterator.counter.getOffset();
88
- const ebml = await (0, parse_ebml_1.parseEbml)(iterator, statesForProcessing);
89
+ const ebml = await (0, parse_ebml_1.parseEbml)(iterator, statesForProcessing, logLevel);
90
+ if (ebml === null) {
91
+ return null;
92
+ }
89
93
  if (!statesForProcessing) {
90
94
  return ebml;
91
95
  }
@@ -6473,21 +6473,23 @@ var getSampleFromBlock = async ({
6473
6473
  };
6474
6474
 
6475
6475
  // src/containers/webm/parse-ebml.ts
6476
- var parseEbml = async (iterator, statesForProcessing) => {
6476
+ var parseEbml = async (iterator, statesForProcessing, logLevel) => {
6477
6477
  const hex = iterator.getMatroskaSegmentId();
6478
6478
  if (hex === null) {
6479
6479
  throw new Error("Not enough bytes left to parse EBML - this should not happen");
6480
6480
  }
6481
- const hasInMap = ebmlMap[hex];
6482
- if (!hasInMap) {
6483
- throw new Error(`Don't know how to parse EBML hex ID ${JSON.stringify(hex)}`);
6484
- }
6485
6481
  const off = iterator.counter.getOffset();
6486
6482
  const size = iterator.getVint();
6487
6483
  const minVintWidth = iterator.counter.getOffset() - off;
6488
6484
  if (size === null) {
6489
6485
  throw new Error("Not enough bytes left to parse EBML - this should not happen");
6490
6486
  }
6487
+ const hasInMap = ebmlMap[hex];
6488
+ if (!hasInMap) {
6489
+ Log.verbose(logLevel, `Unknown EBML hex ID ${JSON.stringify(hex)}`);
6490
+ iterator.discard(size);
6491
+ return null;
6492
+ }
6491
6493
  if (hasInMap.type === "uint") {
6492
6494
  const beforeUintOffset = iterator.counter.getOffset();
6493
6495
  const value = size === 0 ? 0 : iterator.getUint(size);
@@ -6542,13 +6544,15 @@ var parseEbml = async (iterator, statesForProcessing) => {
6542
6544
  break;
6543
6545
  }
6544
6546
  const offset = iterator.counter.getOffset();
6545
- const value = await parseEbml(iterator, statesForProcessing);
6546
- const remapped = statesForProcessing ? await postprocessEbml({
6547
- offset,
6548
- ebml: value,
6549
- statesForProcessing
6550
- }) : value;
6551
- children.push(remapped);
6547
+ const value = await parseEbml(iterator, statesForProcessing, logLevel);
6548
+ if (value) {
6549
+ const remapped = statesForProcessing ? await postprocessEbml({
6550
+ offset,
6551
+ ebml: value,
6552
+ statesForProcessing
6553
+ }) : value;
6554
+ children.push(remapped);
6555
+ }
6552
6556
  const offsetNow = iterator.counter.getOffset();
6553
6557
  if (offsetNow - startOffset > size) {
6554
6558
  throw new Error(`Offset ${offsetNow - startOffset} is larger than the length of the hex ${size}`);
@@ -15363,7 +15367,8 @@ var expectSegment = async ({
15363
15367
  length: size,
15364
15368
  headerReadSoFar: iterator.counter.getOffset() - offset,
15365
15369
  statesForProcessing,
15366
- iterator
15370
+ iterator,
15371
+ logLevel
15367
15372
  });
15368
15373
  return segment;
15369
15374
  };
@@ -15372,14 +15377,18 @@ var parseSegment = async ({
15372
15377
  length,
15373
15378
  iterator,
15374
15379
  headerReadSoFar,
15375
- statesForProcessing
15380
+ statesForProcessing,
15381
+ logLevel
15376
15382
  }) => {
15377
15383
  if (length < 0) {
15378
15384
  throw new Error(`Expected length of ${segmentId} to be greater or equal 0`);
15379
15385
  }
15380
15386
  iterator.counter.decrement(headerReadSoFar);
15381
15387
  const offset = iterator.counter.getOffset();
15382
- const ebml = await parseEbml(iterator, statesForProcessing);
15388
+ const ebml = await parseEbml(iterator, statesForProcessing, logLevel);
15389
+ if (ebml === null) {
15390
+ return null;
15391
+ }
15383
15392
  if (!statesForProcessing) {
15384
15393
  return ebml;
15385
15394
  }
@@ -17870,7 +17879,7 @@ var downloadAndParseMedia = async (options) => {
17870
17879
  return returnValue;
17871
17880
  };
17872
17881
  // src/version.ts
17873
- var VERSION = "4.0.313";
17882
+ var VERSION = "4.0.315";
17874
17883
 
17875
17884
  // src/index.ts
17876
17885
  var MediaParserInternals = {
@@ -15200,21 +15200,23 @@ var getSampleFromBlock = async ({
15200
15200
  };
15201
15201
 
15202
15202
  // src/containers/webm/parse-ebml.ts
15203
- var parseEbml = async (iterator, statesForProcessing) => {
15203
+ var parseEbml = async (iterator, statesForProcessing, logLevel) => {
15204
15204
  const hex = iterator.getMatroskaSegmentId();
15205
15205
  if (hex === null) {
15206
15206
  throw new Error("Not enough bytes left to parse EBML - this should not happen");
15207
15207
  }
15208
- const hasInMap = ebmlMap[hex];
15209
- if (!hasInMap) {
15210
- throw new Error(`Don't know how to parse EBML hex ID ${JSON.stringify(hex)}`);
15211
- }
15212
15208
  const off = iterator.counter.getOffset();
15213
15209
  const size = iterator.getVint();
15214
15210
  const minVintWidth = iterator.counter.getOffset() - off;
15215
15211
  if (size === null) {
15216
15212
  throw new Error("Not enough bytes left to parse EBML - this should not happen");
15217
15213
  }
15214
+ const hasInMap = ebmlMap[hex];
15215
+ if (!hasInMap) {
15216
+ Log.verbose(logLevel, `Unknown EBML hex ID ${JSON.stringify(hex)}`);
15217
+ iterator.discard(size);
15218
+ return null;
15219
+ }
15218
15220
  if (hasInMap.type === "uint") {
15219
15221
  const beforeUintOffset = iterator.counter.getOffset();
15220
15222
  const value = size === 0 ? 0 : iterator.getUint(size);
@@ -15269,13 +15271,15 @@ var parseEbml = async (iterator, statesForProcessing) => {
15269
15271
  break;
15270
15272
  }
15271
15273
  const offset = iterator.counter.getOffset();
15272
- const value = await parseEbml(iterator, statesForProcessing);
15273
- const remapped = statesForProcessing ? await postprocessEbml({
15274
- offset,
15275
- ebml: value,
15276
- statesForProcessing
15277
- }) : value;
15278
- children.push(remapped);
15274
+ const value = await parseEbml(iterator, statesForProcessing, logLevel);
15275
+ if (value) {
15276
+ const remapped = statesForProcessing ? await postprocessEbml({
15277
+ offset,
15278
+ ebml: value,
15279
+ statesForProcessing
15280
+ }) : value;
15281
+ children.push(remapped);
15282
+ }
15279
15283
  const offsetNow = iterator.counter.getOffset();
15280
15284
  if (offsetNow - startOffset > size) {
15281
15285
  throw new Error(`Offset ${offsetNow - startOffset} is larger than the length of the hex ${size}`);
@@ -15491,7 +15495,8 @@ var expectSegment = async ({
15491
15495
  length: size,
15492
15496
  headerReadSoFar: iterator.counter.getOffset() - offset,
15493
15497
  statesForProcessing,
15494
- iterator
15498
+ iterator,
15499
+ logLevel
15495
15500
  });
15496
15501
  return segment;
15497
15502
  };
@@ -15500,14 +15505,18 @@ var parseSegment = async ({
15500
15505
  length,
15501
15506
  iterator,
15502
15507
  headerReadSoFar,
15503
- statesForProcessing
15508
+ statesForProcessing,
15509
+ logLevel
15504
15510
  }) => {
15505
15511
  if (length < 0) {
15506
15512
  throw new Error(`Expected length of ${segmentId} to be greater or equal 0`);
15507
15513
  }
15508
15514
  iterator.counter.decrement(headerReadSoFar);
15509
15515
  const offset = iterator.counter.getOffset();
15510
- const ebml = await parseEbml(iterator, statesForProcessing);
15516
+ const ebml = await parseEbml(iterator, statesForProcessing, logLevel);
15517
+ if (ebml === null) {
15518
+ return null;
15519
+ }
15511
15520
  if (!statesForProcessing) {
15512
15521
  return ebml;
15513
15522
  }
@@ -15069,21 +15069,23 @@ var getSampleFromBlock = async ({
15069
15069
  };
15070
15070
 
15071
15071
  // src/containers/webm/parse-ebml.ts
15072
- var parseEbml = async (iterator, statesForProcessing) => {
15072
+ var parseEbml = async (iterator, statesForProcessing, logLevel) => {
15073
15073
  const hex = iterator.getMatroskaSegmentId();
15074
15074
  if (hex === null) {
15075
15075
  throw new Error("Not enough bytes left to parse EBML - this should not happen");
15076
15076
  }
15077
- const hasInMap = ebmlMap[hex];
15078
- if (!hasInMap) {
15079
- throw new Error(`Don't know how to parse EBML hex ID ${JSON.stringify(hex)}`);
15080
- }
15081
15077
  const off = iterator.counter.getOffset();
15082
15078
  const size = iterator.getVint();
15083
15079
  const minVintWidth = iterator.counter.getOffset() - off;
15084
15080
  if (size === null) {
15085
15081
  throw new Error("Not enough bytes left to parse EBML - this should not happen");
15086
15082
  }
15083
+ const hasInMap = ebmlMap[hex];
15084
+ if (!hasInMap) {
15085
+ Log.verbose(logLevel, `Unknown EBML hex ID ${JSON.stringify(hex)}`);
15086
+ iterator.discard(size);
15087
+ return null;
15088
+ }
15087
15089
  if (hasInMap.type === "uint") {
15088
15090
  const beforeUintOffset = iterator.counter.getOffset();
15089
15091
  const value = size === 0 ? 0 : iterator.getUint(size);
@@ -15138,13 +15140,15 @@ var parseEbml = async (iterator, statesForProcessing) => {
15138
15140
  break;
15139
15141
  }
15140
15142
  const offset = iterator.counter.getOffset();
15141
- const value = await parseEbml(iterator, statesForProcessing);
15142
- const remapped = statesForProcessing ? await postprocessEbml({
15143
- offset,
15144
- ebml: value,
15145
- statesForProcessing
15146
- }) : value;
15147
- children.push(remapped);
15143
+ const value = await parseEbml(iterator, statesForProcessing, logLevel);
15144
+ if (value) {
15145
+ const remapped = statesForProcessing ? await postprocessEbml({
15146
+ offset,
15147
+ ebml: value,
15148
+ statesForProcessing
15149
+ }) : value;
15150
+ children.push(remapped);
15151
+ }
15148
15152
  const offsetNow = iterator.counter.getOffset();
15149
15153
  if (offsetNow - startOffset > size) {
15150
15154
  throw new Error(`Offset ${offsetNow - startOffset} is larger than the length of the hex ${size}`);
@@ -15360,7 +15364,8 @@ var expectSegment = async ({
15360
15364
  length: size,
15361
15365
  headerReadSoFar: iterator.counter.getOffset() - offset,
15362
15366
  statesForProcessing,
15363
- iterator
15367
+ iterator,
15368
+ logLevel
15364
15369
  });
15365
15370
  return segment;
15366
15371
  };
@@ -15369,14 +15374,18 @@ var parseSegment = async ({
15369
15374
  length,
15370
15375
  iterator,
15371
15376
  headerReadSoFar,
15372
- statesForProcessing
15377
+ statesForProcessing,
15378
+ logLevel
15373
15379
  }) => {
15374
15380
  if (length < 0) {
15375
15381
  throw new Error(`Expected length of ${segmentId} to be greater or equal 0`);
15376
15382
  }
15377
15383
  iterator.counter.decrement(headerReadSoFar);
15378
15384
  const offset = iterator.counter.getOffset();
15379
- const ebml = await parseEbml(iterator, statesForProcessing);
15385
+ const ebml = await parseEbml(iterator, statesForProcessing, logLevel);
15386
+ if (ebml === null) {
15387
+ return null;
15388
+ }
15380
15389
  if (!statesForProcessing) {
15381
15390
  return ebml;
15382
15391
  }
package/dist/index.d.ts CHANGED
@@ -1260,7 +1260,7 @@ export declare const MediaParserInternals: {
1260
1260
  size: number;
1261
1261
  offset: number;
1262
1262
  }) => import("./containers/iso-base-media/ftyp").FtypBox;
1263
- parseEbml: (iterator: import("./iterator/buffer-iterator").BufferIterator, statesForProcessing: import("./containers/webm/state-for-processing").WebmRequiredStatesForProcessing | null) => Promise<import("./containers/webm/parse-ebml").Prettify<PossibleEbml>>;
1263
+ parseEbml: (iterator: import("./iterator/buffer-iterator").BufferIterator, statesForProcessing: import("./containers/webm/state-for-processing").WebmRequiredStatesForProcessing | null, logLevel: MediaParserLogLevel) => Promise<import("./containers/webm/parse-ebml").Prettify<PossibleEbml> | null>;
1264
1264
  parseMvhd: ({ iterator, offset, size, }: {
1265
1265
  iterator: import("./iterator/buffer-iterator").BufferIterator;
1266
1266
  offset: number;
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const VERSION = "4.0.313";
1
+ export declare const VERSION = "4.0.315";
package/dist/version.js CHANGED
@@ -2,4 +2,4 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
4
  // Automatically generated on publish
5
- exports.VERSION = '4.0.313';
5
+ exports.VERSION = '4.0.315';
package/package.json CHANGED
@@ -3,15 +3,15 @@
3
3
  "url": "https://github.com/remotion-dev/remotion/tree/main/packages/media-parser"
4
4
  },
5
5
  "name": "@remotion/media-parser",
6
- "version": "4.0.313",
6
+ "version": "4.0.315",
7
7
  "main": "dist/index.js",
8
8
  "sideEffects": false,
9
9
  "devDependencies": {
10
10
  "@types/wicg-file-system-access": "2023.10.5",
11
11
  "eslint": "9.19.0",
12
12
  "@types/bun": "1.2.8",
13
- "@remotion/example-videos": "4.0.313",
14
- "@remotion/eslint-config-internal": "4.0.313"
13
+ "@remotion/example-videos": "4.0.315",
14
+ "@remotion/eslint-config-internal": "4.0.315"
15
15
  },
16
16
  "publishConfig": {
17
17
  "access": "public"