@remotion/media-parser 4.0.244 → 4.0.246

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 (169) hide show
  1. package/LICENSE.md +1 -1
  2. package/dist/boxes/avc/create-sps-pps-data.js +10 -4
  3. package/dist/boxes/iso-base-media/mdat/mdat.js +17 -5
  4. package/dist/boxes/iso-base-media/process-box.js +0 -3
  5. package/dist/boxes/iso-base-media/to-date.d.ts +0 -1
  6. package/dist/boxes/iso-base-media/to-date.js +1 -9
  7. package/dist/boxes/transport-stream/adts-header.d.ts +1 -1
  8. package/dist/boxes/transport-stream/discard-rest-of-packet.d.ts +1 -1
  9. package/dist/boxes/transport-stream/parse-stream-packet.js +4 -4
  10. package/dist/boxes/webm/color.d.ts +0 -1
  11. package/dist/boxes/webm/color.js +1 -83
  12. package/dist/boxes/webm/parse-ebml.js +8 -10
  13. package/dist/boxes/webm/segments/all-segments.d.ts +24 -21
  14. package/dist/boxes/webm/segments/all-segments.js +17 -19
  15. package/dist/combine-uint8-arrays.d.ts +1 -0
  16. package/dist/combine-uint8-arrays.js +23 -0
  17. package/dist/emit-available-info.js +1 -11
  18. package/dist/esm/index.mjs +7470 -9782
  19. package/dist/file-types/detect-file-type.js +2 -2
  20. package/dist/index.d.ts +787 -27
  21. package/dist/index.js +19 -13
  22. package/dist/parse-media.js +0 -3
  23. package/dist/state/parser-state.d.ts +1 -3
  24. package/dist/state/parser-state.js +1 -2
  25. package/dist/version.d.ts +1 -1
  26. package/dist/version.js +1 -1
  27. package/package.json +3 -15
  28. package/buffer.js +0 -2
  29. package/dist/boxes/avc/codec-private.d.ts +0 -2
  30. package/dist/boxes/avc/codec-private.js +0 -28
  31. package/dist/boxes/webm/ebml.d.ts +0 -2
  32. package/dist/boxes/webm/ebml.js +0 -94
  33. package/dist/boxes/webm/make-header.d.ts +0 -8
  34. package/dist/boxes/webm/make-header.js +0 -187
  35. package/dist/create/event-emitter.d.ts +0 -31
  36. package/dist/create/event-emitter.js +0 -25
  37. package/dist/create/iso-base-media/codec-specific/avc1.d.ts +0 -2
  38. package/dist/create/iso-base-media/codec-specific/avc1.js +0 -48
  39. package/dist/create/iso-base-media/codec-specific/create-codec-specific-data.d.ts +0 -22
  40. package/dist/create/iso-base-media/codec-specific/create-codec-specific-data.js +0 -36
  41. package/dist/create/iso-base-media/codec-specific/mp4a.d.ts +0 -2
  42. package/dist/create/iso-base-media/codec-specific/mp4a.js +0 -74
  43. package/dist/create/iso-base-media/create-colr.d.ts +0 -6
  44. package/dist/create/iso-base-media/create-colr.js +0 -26
  45. package/dist/create/iso-base-media/create-ftyp.d.ts +0 -10
  46. package/dist/create/iso-base-media/create-ftyp.js +0 -22
  47. package/dist/create/iso-base-media/create-ilst.d.ts +0 -1
  48. package/dist/create/iso-base-media/create-ilst.js +0 -14
  49. package/dist/create/iso-base-media/create-iso-base-media.d.ts +0 -2
  50. package/dist/create/iso-base-media/create-iso-base-media.js +0 -184
  51. package/dist/create/iso-base-media/create-mdia.d.ts +0 -5
  52. package/dist/create/iso-base-media/create-mdia.js +0 -18
  53. package/dist/create/iso-base-media/create-moov.d.ts +0 -5
  54. package/dist/create/iso-base-media/create-moov.js +0 -18
  55. package/dist/create/iso-base-media/create-mvhd.d.ts +0 -10
  56. package/dist/create/iso-base-media/create-mvhd.js +0 -48
  57. package/dist/create/iso-base-media/create-trak.d.ts +0 -4
  58. package/dist/create/iso-base-media/create-trak.js +0 -17
  59. package/dist/create/iso-base-media/create-udta.d.ts +0 -1
  60. package/dist/create/iso-base-media/create-udta.js +0 -14
  61. package/dist/create/iso-base-media/create-url.d.ts +0 -1
  62. package/dist/create/iso-base-media/create-url.js +0 -16
  63. package/dist/create/iso-base-media/example-stts.d.ts +0 -3
  64. package/dist/create/iso-base-media/example-stts.js +0 -2797
  65. package/dist/create/iso-base-media/ilst/create-cmt.d.ts +0 -1
  66. package/dist/create/iso-base-media/ilst/create-cmt.js +0 -26
  67. package/dist/create/iso-base-media/ilst/create-too.d.ts +0 -1
  68. package/dist/create/iso-base-media/ilst/create-too.js +0 -27
  69. package/dist/create/iso-base-media/mdia/create-mdhd.d.ts +0 -6
  70. package/dist/create/iso-base-media/mdia/create-mdhd.js +0 -33
  71. package/dist/create/iso-base-media/mp4-header.d.ts +0 -6
  72. package/dist/create/iso-base-media/mp4-header.js +0 -48
  73. package/dist/create/iso-base-media/primitives.d.ts +0 -15
  74. package/dist/create/iso-base-media/primitives.js +0 -133
  75. package/dist/create/iso-base-media/serialize-track.d.ts +0 -9
  76. package/dist/create/iso-base-media/serialize-track.js +0 -63
  77. package/dist/create/iso-base-media/trak/create-tkhd.d.ts +0 -27
  78. package/dist/create/iso-base-media/trak/create-tkhd.js +0 -97
  79. package/dist/create/iso-base-media/trak/mdia/create-minf.d.ts +0 -4
  80. package/dist/create/iso-base-media/trak/mdia/create-minf.js +0 -19
  81. package/dist/create/iso-base-media/trak/mdia/minf/create-dinf.d.ts +0 -1
  82. package/dist/create/iso-base-media/trak/mdia/minf/create-dinf.js +0 -22
  83. package/dist/create/iso-base-media/trak/mdia/minf/create-smhd.d.ts +0 -1
  84. package/dist/create/iso-base-media/trak/mdia/minf/create-smhd.js +0 -20
  85. package/dist/create/iso-base-media/trak/mdia/minf/create-stbl.d.ts +0 -6
  86. package/dist/create/iso-base-media/trak/mdia/minf/create-stbl.js +0 -41
  87. package/dist/create/iso-base-media/trak/mdia/minf/create-vmhd.d.ts +0 -1
  88. package/dist/create/iso-base-media/trak/mdia/minf/create-vmhd.js +0 -20
  89. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-ctts.d.ts +0 -2
  90. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-ctts.js +0 -45
  91. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stco.d.ts +0 -2
  92. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stco.js +0 -28
  93. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsc.d.ts +0 -2
  94. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsc.js +0 -56
  95. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stss.d.ts +0 -2
  96. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stss.js +0 -23
  97. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsz.d.ts +0 -2
  98. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsz.js +0 -25
  99. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stts.d.ts +0 -2
  100. package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stts.js +0 -51
  101. package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avc1.d.ts +0 -1
  102. package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avc1.js +0 -20
  103. package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avcc.d.ts +0 -1
  104. package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avcc.js +0 -16
  105. package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-pasp.d.ts +0 -1
  106. package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-pasp.js +0 -13
  107. package/dist/create/iso-base-media/udta/create-meta.d.ts +0 -4
  108. package/dist/create/iso-base-media/udta/create-meta.js +0 -20
  109. package/dist/create/iso-base-media/udta/meta/create-hdlr.d.ts +0 -1
  110. package/dist/create/iso-base-media/udta/meta/create-hdlr.js +0 -32
  111. package/dist/create/make-track-info.d.ts +0 -20
  112. package/dist/create/make-track-info.js +0 -2
  113. package/dist/create/matroska/cluster-segment.d.ts +0 -10
  114. package/dist/create/matroska/cluster-segment.js +0 -39
  115. package/dist/create/matroska/cluster.d.ts +0 -25
  116. package/dist/create/matroska/cluster.js +0 -77
  117. package/dist/create/matroska/create-matroska-media.d.ts +0 -2
  118. package/dist/create/matroska/create-matroska-media.js +0 -189
  119. package/dist/create/matroska/make-duration-with-padding.d.ts +0 -1
  120. package/dist/create/matroska/make-duration-with-padding.js +0 -15
  121. package/dist/create/matroska/matroska-cues.d.ts +0 -6
  122. package/dist/create/matroska/matroska-cues.js +0 -49
  123. package/dist/create/matroska/matroska-header.d.ts +0 -1
  124. package/dist/create/matroska/matroska-header.js +0 -66
  125. package/dist/create/matroska/matroska-info.d.ts +0 -3
  126. package/dist/create/matroska/matroska-info.js +0 -33
  127. package/dist/create/matroska/matroska-seek.d.ts +0 -6
  128. package/dist/create/matroska/matroska-seek.js +0 -32
  129. package/dist/create/matroska/matroska-segment.d.ts +0 -3
  130. package/dist/create/matroska/matroska-segment.js +0 -13
  131. package/dist/create/matroska/matroska-trackentry.d.ts +0 -10
  132. package/dist/create/matroska/matroska-trackentry.js +0 -249
  133. package/dist/create/media-fn.d.ts +0 -32
  134. package/dist/create/media-fn.js +0 -2
  135. package/dist/create/progress-tracker.d.ts +0 -9
  136. package/dist/create/progress-tracker.js +0 -67
  137. package/dist/create/timescale.d.ts +0 -1
  138. package/dist/create/timescale.js +0 -4
  139. package/dist/create/wav/create-wav.d.ts +0 -2
  140. package/dist/create/wav/create-wav.js +0 -110
  141. package/dist/create/with-resolvers.d.ts +0 -10
  142. package/dist/create/with-resolvers.js +0 -28
  143. package/dist/errors/detect-file-type.d.ts +0 -1
  144. package/dist/errors/detect-file-type.js +0 -88
  145. package/dist/errors/file-types.d.ts +0 -1
  146. package/dist/errors/file-types.js +0 -88
  147. package/dist/esm/buffer.mjs +0 -56
  148. package/dist/esm/web-fs.mjs +0 -73
  149. package/dist/file-types/get-jpeg-dimensions.d.ts +0 -4
  150. package/dist/file-types/get-jpeg-dimensions.js +0 -32
  151. package/dist/file-types.d.ts +0 -1
  152. package/dist/file-types.js +0 -88
  153. package/dist/parser-context.d.ts +0 -10
  154. package/dist/parser-context.js +0 -2
  155. package/dist/probing/detect-file-type.d.ts +0 -1
  156. package/dist/probing/detect-file-type.js +0 -88
  157. package/dist/probing/get-jpeg-dimensions.d.ts +0 -4
  158. package/dist/probing/get-jpeg-dimensions.js +0 -32
  159. package/dist/state/tracks-and-samples.d.ts +0 -0
  160. package/dist/state/tracks-and-samples.js +0 -1
  161. package/dist/writers/buffer-implementation/writer.d.ts +0 -2
  162. package/dist/writers/buffer-implementation/writer.js +0 -54
  163. package/dist/writers/buffer.d.ts +0 -2
  164. package/dist/writers/buffer.js +0 -7
  165. package/dist/writers/web-fs.d.ts +0 -3
  166. package/dist/writers/web-fs.js +0 -74
  167. package/dist/writers/writer.d.ts +0 -15
  168. package/dist/writers/writer.js +0 -2
  169. package/web-fs.js +0 -2
package/dist/index.js CHANGED
@@ -2,13 +2,16 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = exports.MediaParserInternals = exports.parseMedia = exports.IsAPdfError = exports.IsAnUnsupportedFileTypeError = exports.IsAnUnsupportedAudioTypeError = exports.IsAnImageError = exports.IsAGifError = void 0;
4
4
  const aac_codecprivate_1 = require("./aac-codecprivate");
5
- const event_emitter_1 = require("./create/event-emitter");
6
- const create_iso_base_media_1 = require("./create/iso-base-media/create-iso-base-media");
7
- const create_matroska_media_1 = require("./create/matroska/create-matroska-media");
8
- const progress_tracker_1 = require("./create/progress-tracker");
9
- const create_wav_1 = require("./create/wav/create-wav");
10
- const with_resolvers_1 = require("./create/with-resolvers");
5
+ const ftyp_1 = require("./boxes/iso-base-media/ftyp");
6
+ const mvhd_1 = require("./boxes/iso-base-media/mvhd");
7
+ const samples_1 = require("./boxes/iso-base-media/stsd/samples");
8
+ const stsd_1 = require("./boxes/iso-base-media/stsd/stsd");
9
+ const tkhd_1 = require("./boxes/iso-base-media/tkhd");
10
+ const parse_ebml_1 = require("./boxes/webm/parse-ebml");
11
+ const all_segments_1 = require("./boxes/webm/segments/all-segments");
12
+ const buffer_iterator_1 = require("./buffer-iterator");
11
13
  const log_1 = require("./log");
14
+ const parser_state_1 = require("./state/parser-state");
12
15
  var errors_1 = require("./errors");
13
16
  Object.defineProperty(exports, "IsAGifError", { enumerable: true, get: function () { return errors_1.IsAGifError; } });
14
17
  Object.defineProperty(exports, "IsAnImageError", { enumerable: true, get: function () { return errors_1.IsAnImageError; } });
@@ -18,15 +21,18 @@ Object.defineProperty(exports, "IsAPdfError", { enumerable: true, get: function
18
21
  var parse_media_1 = require("./parse-media");
19
22
  Object.defineProperty(exports, "parseMedia", { enumerable: true, get: function () { return parse_media_1.parseMedia; } });
20
23
  exports.MediaParserInternals = {
21
- createMatroskaMedia: create_matroska_media_1.createMatroskaMedia,
22
- createIsoBaseMedia: create_iso_base_media_1.createIsoBaseMedia,
23
- createWav: create_wav_1.createWav,
24
24
  Log: log_1.Log,
25
- IoEventEmitter: event_emitter_1.IoEventEmitter,
26
- makeProgressTracker: progress_tracker_1.makeProgressTracker,
27
- withResolvers: with_resolvers_1.withResolvers,
28
- withResolversAndWaitForReturn: with_resolvers_1.withResolversAndWaitForReturn,
29
25
  createAacCodecPrivate: aac_codecprivate_1.createAacCodecPrivate,
26
+ matroskaElements: all_segments_1.matroskaElements,
27
+ ebmlMap: all_segments_1.ebmlMap,
28
+ parseTkhd: tkhd_1.parseTkhd,
29
+ getArrayBufferIterator: buffer_iterator_1.getArrayBufferIterator,
30
+ parseStsd: stsd_1.parseStsd,
31
+ makeParserState: parser_state_1.makeParserState,
32
+ processSample: samples_1.processSample,
33
+ parseFtyp: ftyp_1.parseFtyp,
34
+ parseEbml: parse_ebml_1.parseEbml,
35
+ parseMvhd: mvhd_1.parseMvhd,
30
36
  };
31
37
  var version_1 = require("./version");
32
38
  Object.defineProperty(exports, "VERSION", { enumerable: true, get: function () { return version_1.VERSION; } });
@@ -30,9 +30,6 @@ const parseMedia = async function ({ src, fields: _fieldsInReturnValue, reader:
30
30
  fields,
31
31
  onAudioTrack: onAudioTrack !== null && onAudioTrack !== void 0 ? onAudioTrack : null,
32
32
  onVideoTrack: onVideoTrack !== null && onVideoTrack !== void 0 ? onVideoTrack : null,
33
- nullifySamples: !(typeof process !== 'undefined' &&
34
- typeof process.env !== 'undefined' &&
35
- process.env.KEEP_SAMPLES === 'true'),
36
33
  supportsContentRange,
37
34
  });
38
35
  let currentReader = reader;
@@ -10,13 +10,12 @@ export type SpsAndPps = {
10
10
  sps: AvcProfileInfo;
11
11
  pps: AvcPPs;
12
12
  };
13
- export declare const makeParserState: ({ hasAudioTrackHandlers, hasVideoTrackHandlers, signal, getIterator, fields, nullifySamples, onAudioTrack, onVideoTrack, supportsContentRange, }: {
13
+ export declare const makeParserState: ({ hasAudioTrackHandlers, hasVideoTrackHandlers, signal, getIterator, fields, onAudioTrack, onVideoTrack, supportsContentRange, }: {
14
14
  hasAudioTrackHandlers: boolean;
15
15
  hasVideoTrackHandlers: boolean;
16
16
  signal: AbortSignal | undefined;
17
17
  getIterator: () => BufferIterator | null;
18
18
  fields: Options<ParseMediaFields>;
19
- nullifySamples: boolean;
20
19
  supportsContentRange: boolean;
21
20
  onAudioTrack: OnAudioTrack | null;
22
21
  onVideoTrack: OnVideoTrack | null;
@@ -59,7 +58,6 @@ export declare const makeParserState: ({ hasAudioTrackHandlers, hasVideoTrackHan
59
58
  getStructure: () => import("../parse-result").Structure;
60
59
  setStructure: (value: import("../parse-result").Structure) => void;
61
60
  };
62
- nullifySamples: boolean;
63
61
  onAudioTrack: OnAudioTrack | null;
64
62
  onVideoTrack: OnVideoTrack | null;
65
63
  supportsContentRange: boolean;
@@ -8,7 +8,7 @@ const sample_callbacks_1 = require("./sample-callbacks");
8
8
  const slow_duration_fps_1 = require("./slow-duration-fps");
9
9
  const structure_1 = require("./structure");
10
10
  const webm_1 = require("./webm");
11
- const makeParserState = ({ hasAudioTrackHandlers, hasVideoTrackHandlers, signal, getIterator, fields, nullifySamples, onAudioTrack, onVideoTrack, supportsContentRange, }) => {
11
+ const makeParserState = ({ hasAudioTrackHandlers, hasVideoTrackHandlers, signal, getIterator, fields, onAudioTrack, onVideoTrack, supportsContentRange, }) => {
12
12
  let skippedBytes = 0;
13
13
  const increaseSkippedBytes = (bytes) => {
14
14
  skippedBytes += bytes;
@@ -39,7 +39,6 @@ const makeParserState = ({ hasAudioTrackHandlers, hasVideoTrackHandlers, signal,
39
39
  increaseSkippedBytes,
40
40
  keyframes,
41
41
  structure,
42
- nullifySamples,
43
42
  onAudioTrack,
44
43
  onVideoTrack,
45
44
  supportsContentRange,
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const VERSION = "4.0.244";
1
+ export declare const VERSION = "4.0.246";
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.244';
5
+ exports.VERSION = '4.0.246';
package/package.json CHANGED
@@ -3,14 +3,14 @@
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.244",
6
+ "version": "4.0.246",
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.14.0",
12
- "@remotion/example-videos": "4.0.244",
13
- "@remotion/eslint-config-internal": "4.0.244"
12
+ "@remotion/example-videos": "4.0.246",
13
+ "@remotion/eslint-config-internal": "4.0.246"
14
14
  },
15
15
  "publishConfig": {
16
16
  "access": "public"
@@ -43,18 +43,6 @@
43
43
  "module": "./dist/esm/from-web-file.mjs",
44
44
  "import": "./dist/esm/from-web-file.mjs"
45
45
  },
46
- "./web-fs": {
47
- "types": "./dist/writers/web-fs.d.ts",
48
- "require": "./dist/writers/web-fs.js",
49
- "module": "./dist/esm/web-fs.mjs",
50
- "import": "./dist/esm/web-fs.mjs"
51
- },
52
- "./buffer": {
53
- "types": "./dist/writers/buffer.d.ts",
54
- "require": "./dist/writers/buffer.js",
55
- "module": "./dist/esm/buffer.mjs",
56
- "import": "./dist/esm/buffer.mjs"
57
- },
58
46
  "./package.json": "./package.json"
59
47
  },
60
48
  "typesVersions": {
package/buffer.js DELETED
@@ -1,2 +0,0 @@
1
- // For backwards compatibility when you use Metro
2
- module.exports = require('./dist/writers/buffer');
@@ -1,2 +0,0 @@
1
- import type { SpsAndPps } from '../../state/parser-state';
2
- export declare const getAvccBoxContent: (avc1Profile: SpsAndPps) => Uint8Array<ArrayBufferLike>;
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getAvccBoxContent = void 0;
4
- const make_header_1 = require("../webm/make-header");
5
- const getAvccBoxContent = (avc1Profile) => {
6
- return (0, make_header_1.combineUint8Arrays)([
7
- new Uint8Array([
8
- // https://gist.github.com/uupaa/8493378ec15f644a3d2b
9
- 1, // version
10
- avc1Profile.sps.spsData.profile,
11
- avc1Profile.sps.spsData.compatibility,
12
- avc1Profile.sps.spsData.level,
13
- 0xff,
14
- 0xe1,
15
- ]),
16
- // sequence parameter set length
17
- (0, make_header_1.serializeUint16)(avc1Profile.sps.sps.length),
18
- // sequence parameter set
19
- avc1Profile.sps.sps,
20
- // num of PPS
21
- new Uint8Array([0x01]),
22
- // picture parameter set length
23
- (0, make_header_1.serializeUint16)(avc1Profile.pps.pps.length),
24
- // PPS
25
- avc1Profile.pps.pps,
26
- ]);
27
- };
28
- exports.getAvccBoxContent = getAvccBoxContent;
@@ -1,2 +0,0 @@
1
- export declare const measureEBMLVarInt: (value: number) => 4 | 2 | 1 | 3 | 5 | 6;
2
- export declare const getVariableInt: (value: number, minWidth: number | null) => Uint8Array;
@@ -1,94 +0,0 @@
1
- "use strict";
2
- // https://github.com/Vanilagy/webm-muxer/blob/main/src/ebml.ts#L101
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.getVariableInt = exports.measureEBMLVarInt = void 0;
5
- const measureEBMLVarInt = (value) => {
6
- if (value < (1 << 7) - 1) {
7
- /** Top bit is set, leaving 7 bits to hold the integer, but we can't store
8
- * 127 because "all bits set to one" is a reserved value. Same thing for the
9
- * other cases below:
10
- */
11
- return 1;
12
- }
13
- if (value < (1 << 14) - 1) {
14
- return 2;
15
- }
16
- if (value < (1 << 21) - 1) {
17
- return 3;
18
- }
19
- if (value < (1 << 28) - 1) {
20
- return 4;
21
- }
22
- if (value < 2 ** 35 - 1) {
23
- return 5;
24
- }
25
- if (value < 2 ** 42 - 1) {
26
- return 6;
27
- }
28
- throw new Error('EBML VINT size not supported ' + value);
29
- };
30
- exports.measureEBMLVarInt = measureEBMLVarInt;
31
- const getVariableInt = (value, minWidth) => {
32
- const width = Math.max((0, exports.measureEBMLVarInt)(value), minWidth !== null && minWidth !== void 0 ? minWidth : 0);
33
- switch (width) {
34
- case 1:
35
- return new Uint8Array([(1 << 7) | value]);
36
- case 2:
37
- return new Uint8Array([(1 << 6) | (value >> 8), value]);
38
- case 3:
39
- return new Uint8Array([(1 << 5) | (value >> 16), value >> 8, value]);
40
- case 4:
41
- return new Uint8Array([
42
- (1 << 4) | (value >> 24),
43
- value >> 16,
44
- value >> 8,
45
- value,
46
- ]);
47
- case 5:
48
- /**
49
- * JavaScript converts its doubles to 32-bit integers for bitwise
50
- * operations, so we need to do a division by 2^32 instead of a
51
- * right-shift of 32 to retain those top 3 bits
52
- */
53
- return new Uint8Array([
54
- (1 << 3) | ((value / 2 ** 32) & 0x7),
55
- value >> 24,
56
- value >> 16,
57
- value >> 8,
58
- value,
59
- ]);
60
- case 6:
61
- return new Uint8Array([
62
- (1 << 2) | ((value / 2 ** 40) & 0x3),
63
- (value / 2 ** 32) | 0,
64
- value >> 24,
65
- value >> 16,
66
- value >> 8,
67
- value,
68
- ]);
69
- case 7:
70
- return new Uint8Array([
71
- (1 << 1) | ((value / 2 ** 48) & 0x1),
72
- (value / 2 ** 40) | 0,
73
- (value / 2 ** 32) | 0,
74
- value >> 24,
75
- value >> 16,
76
- value >> 8,
77
- value,
78
- ]);
79
- case 8:
80
- return new Uint8Array([
81
- (1 << 0) | ((value / 2 ** 56) & 0x1),
82
- (value / 2 ** 48) | 0,
83
- (value / 2 ** 40) | 0,
84
- (value / 2 ** 32) | 0,
85
- value >> 24,
86
- value >> 16,
87
- value >> 8,
88
- value,
89
- ]);
90
- default:
91
- throw new Error('Bad EBML VINT size ' + width);
92
- }
93
- };
94
- exports.getVariableInt = getVariableInt;
@@ -1,8 +0,0 @@
1
- import type { BytesAndOffset, PossibleEbmlOrUint8Array } from './segments/all-segments';
2
- import { matroskaElements } from './segments/all-segments';
3
- export declare const webmPattern: Uint8Array<ArrayBuffer>;
4
- export declare const matroskaToHex: (matrId: (typeof matroskaElements)[keyof typeof matroskaElements]) => Uint8Array<ArrayBufferLike>;
5
- export declare const makeMatroskaBytes: (fields: PossibleEbmlOrUint8Array) => BytesAndOffset;
6
- export declare const padMatroskaBytes: (fields: PossibleEbmlOrUint8Array, totalLength: number) => BytesAndOffset[];
7
- export declare const combineUint8Arrays: (arrays: Uint8Array[]) => Uint8Array<ArrayBufferLike>;
8
- export declare function serializeUint16(value: number): Uint8Array;
@@ -1,187 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.combineUint8Arrays = exports.padMatroskaBytes = exports.makeMatroskaBytes = exports.matroskaToHex = exports.webmPattern = void 0;
4
- exports.serializeUint16 = serializeUint16;
5
- /* eslint-disable @typescript-eslint/no-use-before-define */
6
- const ebml_1 = require("./ebml");
7
- const all_segments_1 = require("./segments/all-segments");
8
- exports.webmPattern = new Uint8Array([0x1a, 0x45, 0xdf, 0xa3]);
9
- const matroskaToHex = (matrId) => {
10
- const numbers = new Uint8Array((matrId.length - 2) / 2);
11
- for (let i = 2; i < matrId.length; i += 2) {
12
- const hex = matrId.substring(i, i + 2);
13
- numbers[(i - 2) / 2] = parseInt(hex, 16);
14
- }
15
- return numbers;
16
- };
17
- exports.matroskaToHex = matroskaToHex;
18
- function putUintDynamic(number, minimumLength) {
19
- if (number < 0) {
20
- throw new Error('This function is designed for non-negative integers only.');
21
- }
22
- // Calculate the minimum number of bytes needed to store the integer
23
- const length = Math.max(minimumLength !== null && minimumLength !== void 0 ? minimumLength : 0, Math.ceil(Math.log2(number + 1) / 8));
24
- const bytes = new Uint8Array(length);
25
- for (let i = 0; i < length; i++) {
26
- // Extract each byte from the number
27
- bytes[length - 1 - i] = (number >> (8 * i)) & 0xff;
28
- }
29
- return bytes;
30
- }
31
- const makeFromStructure = (fields) => {
32
- if ('bytes' in fields) {
33
- return fields;
34
- }
35
- const arrays = [];
36
- const struct = all_segments_1.ebmlMap[(0, all_segments_1.getIdForName)(fields.type)];
37
- if (struct.type === 'uint8array') {
38
- return {
39
- bytes: fields.value,
40
- offsets: { offset: 0, children: [], field: fields.type },
41
- };
42
- }
43
- if (struct.type === 'children') {
44
- const children = [];
45
- let bytesWritten = 0;
46
- for (const item of fields.value) {
47
- const { bytes, offsets } = (0, exports.makeMatroskaBytes)(item);
48
- arrays.push(bytes);
49
- children.push((0, all_segments_1.incrementOffsetAndChildren)(offsets, bytesWritten));
50
- bytesWritten += bytes.byteLength;
51
- }
52
- return {
53
- bytes: (0, exports.combineUint8Arrays)(arrays),
54
- offsets: { offset: 0, children, field: fields.type },
55
- };
56
- }
57
- if (struct.type === 'string') {
58
- return {
59
- bytes: new TextEncoder().encode(fields.value),
60
- offsets: {
61
- children: [],
62
- offset: 0,
63
- field: fields.type,
64
- },
65
- };
66
- }
67
- if (struct.type === 'uint') {
68
- return {
69
- bytes: putUintDynamic(fields.value.value, fields.value.byteLength),
70
- offsets: {
71
- children: [],
72
- offset: 0,
73
- field: fields.type,
74
- },
75
- };
76
- }
77
- if (struct.type === 'hex-string') {
78
- const hex = fields.value.substring(2);
79
- const arr = new Uint8Array(hex.length / 2);
80
- for (let i = 0; i < hex.length; i += 2) {
81
- const byte = parseInt(hex.substring(i, i + 2), 16);
82
- arr[i / 2] = byte;
83
- }
84
- return {
85
- bytes: arr,
86
- offsets: {
87
- children: [],
88
- offset: 0,
89
- field: fields.type,
90
- },
91
- };
92
- }
93
- if (struct.type === 'float') {
94
- const value = fields.value;
95
- if (value.size === '32') {
96
- const dataView = new DataView(new ArrayBuffer(4));
97
- dataView.setFloat32(0, value.value);
98
- return {
99
- bytes: new Uint8Array(dataView.buffer),
100
- offsets: {
101
- children: [],
102
- offset: 0,
103
- field: fields.type,
104
- },
105
- };
106
- }
107
- const dataView2 = new DataView(new ArrayBuffer(8));
108
- dataView2.setFloat64(0, value.value);
109
- return {
110
- bytes: new Uint8Array(dataView2.buffer),
111
- offsets: {
112
- children: [],
113
- offset: 0,
114
- field: fields.type,
115
- },
116
- };
117
- }
118
- throw new Error('Unexpected type');
119
- };
120
- const makeMatroskaBytes = (fields) => {
121
- if ('bytes' in fields) {
122
- return fields;
123
- }
124
- const value = makeFromStructure(fields);
125
- const header = (0, exports.matroskaToHex)((0, all_segments_1.getIdForName)(fields.type));
126
- const size = (0, ebml_1.getVariableInt)(value.bytes.length, fields.minVintWidth);
127
- const bytes = (0, exports.combineUint8Arrays)([header, size, value.bytes]);
128
- return {
129
- bytes,
130
- offsets: {
131
- offset: value.offsets.offset,
132
- field: value.offsets.field,
133
- children: value.offsets.children.map((c) => {
134
- return (0, all_segments_1.incrementOffsetAndChildren)(c, header.byteLength + size.byteLength);
135
- }),
136
- },
137
- };
138
- };
139
- exports.makeMatroskaBytes = makeMatroskaBytes;
140
- const padMatroskaBytes = (fields, totalLength) => {
141
- const regular = (0, exports.makeMatroskaBytes)(fields);
142
- const paddingLength = totalLength -
143
- regular.bytes.byteLength -
144
- (0, exports.matroskaToHex)(all_segments_1.matroskaElements.Void).byteLength;
145
- if (paddingLength < 0) {
146
- throw new Error('ooops');
147
- }
148
- const padding = (0, exports.makeMatroskaBytes)({
149
- type: 'Void',
150
- value: new Uint8Array(paddingLength).fill(0),
151
- minVintWidth: null,
152
- });
153
- return [
154
- regular,
155
- {
156
- bytes: padding.bytes,
157
- offsets: (0, all_segments_1.incrementOffsetAndChildren)(padding.offsets, regular.bytes.length),
158
- },
159
- ];
160
- };
161
- exports.padMatroskaBytes = padMatroskaBytes;
162
- const combineUint8Arrays = (arrays) => {
163
- if (arrays.length === 0) {
164
- return new Uint8Array([]);
165
- }
166
- if (arrays.length === 1) {
167
- return arrays[0];
168
- }
169
- let totalLength = 0;
170
- for (const array of arrays) {
171
- totalLength += array.length;
172
- }
173
- const result = new Uint8Array(totalLength);
174
- let offset = 0;
175
- for (const array of arrays) {
176
- result.set(array, offset);
177
- offset += array.length;
178
- }
179
- return result;
180
- };
181
- exports.combineUint8Arrays = combineUint8Arrays;
182
- function serializeUint16(value) {
183
- const buffer = new ArrayBuffer(2);
184
- const view = new DataView(buffer);
185
- view.setUint16(0, value);
186
- return new Uint8Array(buffer);
187
- }
@@ -1,31 +0,0 @@
1
- type Input = {
2
- timestamp: number;
3
- keyFrame: boolean;
4
- };
5
- type Output = {
6
- timestamp: number;
7
- };
8
- type Processed = {};
9
- type Progress = {
10
- smallestProgress: number;
11
- };
12
- type IoEventMap = {
13
- input: Input;
14
- output: Output;
15
- processed: Processed;
16
- progress: Progress;
17
- };
18
- export type IoEventTypes = keyof IoEventMap;
19
- export type CallbackListener<T extends IoEventTypes> = (data: {
20
- detail: IoEventMap[T];
21
- }) => void;
22
- type IoListeners = {
23
- [EventType in IoEventTypes]: CallbackListener<EventType>[];
24
- };
25
- export declare class IoEventEmitter {
26
- listeners: IoListeners;
27
- addEventListener<Q extends IoEventTypes>(name: Q, callback: CallbackListener<Q>): void;
28
- removeEventListener<Q extends IoEventTypes>(name: Q, callback: CallbackListener<Q>): void;
29
- dispatchEvent<T extends IoEventTypes>(dispatchName: T, context: IoEventMap[T]): void;
30
- }
31
- export {};
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IoEventEmitter = void 0;
4
- class IoEventEmitter {
5
- constructor() {
6
- this.listeners = {
7
- input: [],
8
- output: [],
9
- processed: [],
10
- progress: [],
11
- };
12
- }
13
- addEventListener(name, callback) {
14
- this.listeners[name].push(callback);
15
- }
16
- removeEventListener(name, callback) {
17
- this.listeners[name] = this.listeners[name].filter((l) => l !== callback);
18
- }
19
- dispatchEvent(dispatchName, context) {
20
- this.listeners[dispatchName].forEach((callback) => {
21
- callback({ detail: context });
22
- });
23
- }
24
- }
25
- exports.IoEventEmitter = IoEventEmitter;
@@ -1,2 +0,0 @@
1
- import type { Avc1Data } from './create-codec-specific-data';
2
- export declare const createAvc1Data: ({ avccBox, pasp, width, height, horizontalResolution, verticalResolution, compressorName, depth, }: Avc1Data) => Uint8Array<ArrayBufferLike>;
@@ -1,48 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createAvc1Data = void 0;
4
- const make_header_1 = require("../../../boxes/webm/make-header");
5
- const primitives_1 = require("../primitives");
6
- const createAvc1Data = ({ avccBox, pasp, width, height, horizontalResolution, verticalResolution, compressorName, depth, }) => {
7
- return (0, primitives_1.addSize)((0, make_header_1.combineUint8Arrays)([
8
- // type
9
- (0, primitives_1.stringsToUint8Array)('avc1'),
10
- // reserved
11
- new Uint8Array([0, 0, 0, 0, 0, 0]),
12
- // data_reference_index
13
- new Uint8Array([0, 1]),
14
- // version
15
- new Uint8Array([0, 0]),
16
- // revisionLevel
17
- new Uint8Array([0, 0]),
18
- // vendor
19
- new Uint8Array([0, 0, 0, 0]),
20
- // temporalQuality
21
- new Uint8Array([0, 0, 0, 0]),
22
- // spatialQuality
23
- new Uint8Array([0, 0, 0, 0]),
24
- // width
25
- (0, primitives_1.numberTo16BitUIntOrInt)(width),
26
- // height
27
- (0, primitives_1.numberTo16BitUIntOrInt)(height),
28
- // horizontalResolution
29
- (0, primitives_1.setFixedPointSignedOrUnsigned1616Number)(horizontalResolution),
30
- // verticalResolution
31
- (0, primitives_1.setFixedPointSignedOrUnsigned1616Number)(verticalResolution),
32
- // dataSize
33
- new Uint8Array([0, 0, 0, 0]),
34
- // frame count per sample
35
- (0, primitives_1.numberTo16BitUIntOrInt)(1),
36
- // compressor name
37
- (0, primitives_1.stringToPascalString)(compressorName),
38
- // depth
39
- (0, primitives_1.numberTo16BitUIntOrInt)(depth),
40
- // colorTableId
41
- (0, primitives_1.numberTo16BitUIntOrInt)(-1),
42
- // avcc box
43
- avccBox,
44
- // pasp
45
- pasp,
46
- ]));
47
- };
48
- exports.createAvc1Data = createAvc1Data;
@@ -1,22 +0,0 @@
1
- import type { MakeTrackAudio, MakeTrackVideo } from '../../make-track-info';
2
- export type Avc1Data = {
3
- pasp: Uint8Array;
4
- avccBox: Uint8Array;
5
- width: number;
6
- height: number;
7
- horizontalResolution: number;
8
- verticalResolution: number;
9
- compressorName: string;
10
- depth: number;
11
- type: 'avc1-data';
12
- };
13
- export type Mp4aData = {
14
- type: 'mp4a-data';
15
- sampleRate: number;
16
- channelCount: number;
17
- maxBitrate: number;
18
- avgBitrate: number;
19
- codecPrivate: Uint8Array | null;
20
- };
21
- export type CodecSpecificData = Avc1Data | Mp4aData;
22
- export declare const createCodecSpecificData: (track: MakeTrackAudio | MakeTrackVideo) => Uint8Array<ArrayBufferLike>;
@@ -1,36 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createCodecSpecificData = void 0;
4
- const create_avcc_1 = require("../trak/mdia/minf/stbl/stsd/create-avcc");
5
- const create_pasp_1 = require("../trak/mdia/minf/stbl/stsd/create-pasp");
6
- const avc1_1 = require("./avc1");
7
- const mp4a_1 = require("./mp4a");
8
- const createCodecSpecificData = (track) => {
9
- if (track.type === 'video') {
10
- return (0, avc1_1.createAvc1Data)({
11
- avccBox: (0, create_avcc_1.createAvccBox)(track.codecPrivate),
12
- compressorName: 'WebCodecs',
13
- depth: 24,
14
- horizontalResolution: 72,
15
- verticalResolution: 72,
16
- height: track.height,
17
- width: track.width,
18
- pasp: (0, create_pasp_1.createPasp)(1, 1),
19
- type: 'avc1-data',
20
- });
21
- }
22
- if (track.type === 'audio') {
23
- return (0, mp4a_1.createMp4a)({
24
- type: 'mp4a-data',
25
- // TODO: Put in values based on real data,
26
- // this seems to work though
27
- avgBitrate: 128 * 1024,
28
- maxBitrate: 128 * 1024,
29
- channelCount: track.numberOfChannels,
30
- sampleRate: track.sampleRate,
31
- codecPrivate: track.codecPrivate,
32
- });
33
- }
34
- throw new Error('Unsupported codec specific data ' + track);
35
- };
36
- exports.createCodecSpecificData = createCodecSpecificData;
@@ -1,2 +0,0 @@
1
- import type { Mp4aData } from './create-codec-specific-data';
2
- export declare const createMp4a: ({ sampleRate, channelCount, avgBitrate, maxBitrate, codecPrivate, }: Mp4aData) => Uint8Array<ArrayBufferLike>;