@remotion/media-parser 4.0.248 → 4.0.250

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 (162) hide show
  1. package/dist/boxes/avc/key.d.ts +1 -1
  2. package/dist/boxes/iso-base-media/continue-mdat-routine.d.ts +14 -0
  3. package/dist/boxes/iso-base-media/continue-mdat-routine.js +74 -0
  4. package/dist/boxes/iso-base-media/get-children.d.ts +8 -0
  5. package/dist/boxes/iso-base-media/get-children.js +23 -0
  6. package/dist/boxes/iso-base-media/mdat/mdat.d.ts +3 -22
  7. package/dist/boxes/iso-base-media/mdat/mdat.js +80 -121
  8. package/dist/boxes/iso-base-media/moov/moov.d.ts +1 -6
  9. package/dist/boxes/iso-base-media/moov/moov.js +5 -15
  10. package/dist/boxes/iso-base-media/parse-all-children.d.ts +8 -0
  11. package/dist/boxes/iso-base-media/parse-all-children.js +20 -0
  12. package/dist/boxes/iso-base-media/parse-boxes.d.ts +7 -0
  13. package/dist/boxes/iso-base-media/parse-boxes.js +46 -0
  14. package/dist/boxes/iso-base-media/parse-mdat-partially.d.ts +9 -0
  15. package/dist/boxes/iso-base-media/parse-mdat-partially.js +24 -0
  16. package/dist/boxes/iso-base-media/process-box.d.ts +2 -29
  17. package/dist/boxes/iso-base-media/process-box.js +56 -367
  18. package/dist/boxes/iso-base-media/stsd/mebx.d.ts +1 -4
  19. package/dist/boxes/iso-base-media/stsd/mebx.js +5 -15
  20. package/dist/boxes/iso-base-media/stsd/samples.d.ts +4 -12
  21. package/dist/boxes/iso-base-media/stsd/samples.js +24 -70
  22. package/dist/boxes/iso-base-media/stsd/stsd.d.ts +1 -4
  23. package/dist/boxes/iso-base-media/stsd/stsd.js +2 -5
  24. package/dist/boxes/iso-base-media/trak/trak.d.ts +1 -6
  25. package/dist/boxes/iso-base-media/trak/trak.js +5 -15
  26. package/dist/boxes/iso-base-media/traversal.d.ts +0 -2
  27. package/dist/boxes/iso-base-media/traversal.js +1 -12
  28. package/dist/boxes/mp3/get-duration.d.ts +2 -0
  29. package/dist/boxes/mp3/get-duration.js +30 -0
  30. package/dist/boxes/mp3/get-frame-length.d.ts +13 -0
  31. package/dist/boxes/mp3/get-frame-length.js +33 -0
  32. package/dist/boxes/mp3/get-metadata-from-mp3.d.ts +3 -0
  33. package/dist/boxes/mp3/get-metadata-from-mp3.js +8 -0
  34. package/dist/boxes/mp3/get-tracks-from-mp3.d.ts +4 -0
  35. package/dist/boxes/mp3/get-tracks-from-mp3.js +25 -0
  36. package/dist/boxes/mp3/id3-v1.d.ts +2 -0
  37. package/dist/boxes/mp3/id3-v1.js +12 -0
  38. package/dist/boxes/mp3/id3-v2.d.ts +0 -0
  39. package/dist/boxes/mp3/id3-v2.js +1 -0
  40. package/dist/boxes/mp3/id3.d.ts +6 -0
  41. package/dist/boxes/mp3/id3.js +80 -0
  42. package/dist/boxes/mp3/parse-mp3.d.ts +7 -0
  43. package/dist/boxes/mp3/parse-mp3.js +41 -0
  44. package/dist/boxes/mp3/parse-mpeg-header.d.ts +6 -0
  45. package/dist/boxes/mp3/parse-mpeg-header.js +274 -0
  46. package/dist/boxes/mp3/samples-per-mpeg-file.d.ts +4 -0
  47. package/dist/boxes/mp3/samples-per-mpeg-file.js +26 -0
  48. package/dist/boxes/riff/continue-after-riff-result.d.ts +13 -0
  49. package/dist/boxes/riff/continue-after-riff-result.js +34 -0
  50. package/dist/boxes/riff/expect-riff-box.d.ts +1 -7
  51. package/dist/boxes/riff/expect-riff-box.js +47 -24
  52. package/dist/boxes/riff/get-tracks-from-avi.d.ts +1 -1
  53. package/dist/boxes/riff/get-tracks-from-avi.js +6 -10
  54. package/dist/boxes/riff/parse-box.d.ts +1 -7
  55. package/dist/boxes/riff/parse-box.js +4 -120
  56. package/dist/boxes/riff/parse-fmt-box.d.ts +3 -2
  57. package/dist/boxes/riff/parse-fmt-box.js +7 -5
  58. package/dist/boxes/riff/parse-list-box.js +15 -14
  59. package/dist/boxes/riff/parse-movi.d.ts +2 -5
  60. package/dist/boxes/riff/parse-movi.js +34 -56
  61. package/dist/boxes/riff/parse-riff-body.d.ts +7 -0
  62. package/dist/boxes/riff/parse-riff-body.js +25 -0
  63. package/dist/boxes/riff/parse-riff-box.d.ts +1 -2
  64. package/dist/boxes/riff/parse-riff-box.js +2 -6
  65. package/dist/boxes/riff/parse-riff-header.d.ts +7 -0
  66. package/dist/boxes/riff/parse-riff-header.js +23 -0
  67. package/dist/boxes/riff/parse-riff.d.ts +7 -0
  68. package/dist/boxes/riff/parse-riff.js +15 -0
  69. package/dist/boxes/riff/parse-strf.d.ts +4 -4
  70. package/dist/boxes/riff/parse-strf.js +4 -8
  71. package/dist/boxes/riff/parse-strh.js +11 -0
  72. package/dist/boxes/riff/parse-video-section.d.ts +6 -0
  73. package/dist/boxes/riff/parse-video-section.js +20 -0
  74. package/dist/boxes/riff/riff-box.d.ts +4 -5
  75. package/dist/boxes/riff/traversal.d.ts +1 -2
  76. package/dist/boxes/riff/traversal.js +1 -6
  77. package/dist/boxes/transport-stream/get-tracks.d.ts +2 -3
  78. package/dist/boxes/transport-stream/get-tracks.js +4 -3
  79. package/dist/boxes/transport-stream/parse-packet.d.ts +1 -7
  80. package/dist/boxes/transport-stream/parse-packet.js +3 -4
  81. package/dist/boxes/transport-stream/parse-stream-packet.d.ts +1 -5
  82. package/dist/boxes/transport-stream/parse-stream-packet.js +10 -12
  83. package/dist/boxes/transport-stream/parse-transport-stream.d.ts +1 -7
  84. package/dist/boxes/transport-stream/parse-transport-stream.js +19 -49
  85. package/dist/boxes/transport-stream/process-stream-buffers.d.ts +1 -2
  86. package/dist/boxes/transport-stream/process-stream-buffers.js +3 -3
  87. package/dist/boxes/webm/parse-ebml.js +3 -0
  88. package/dist/boxes/webm/parse-webm-header.d.ts +2 -4
  89. package/dist/boxes/webm/parse-webm-header.js +41 -25
  90. package/dist/boxes/webm/segments/parse-children.d.ts +2 -16
  91. package/dist/boxes/webm/segments/parse-children.js +7 -130
  92. package/dist/boxes/webm/segments.d.ts +4 -8
  93. package/dist/boxes/webm/segments.js +41 -123
  94. package/dist/buffer-iterator.d.ts +6 -3
  95. package/dist/buffer-iterator.js +27 -16
  96. package/dist/bun-reader.d.ts +1 -0
  97. package/dist/bun-reader.js +17 -0
  98. package/dist/continue-mdat-routine.d.ts +17 -0
  99. package/dist/continue-mdat-routine.js +92 -0
  100. package/dist/emit-available-info.js +42 -28
  101. package/dist/esm/from-node.mjs +8 -9
  102. package/dist/esm/index.mjs +5133 -5085
  103. package/dist/file-types/detect-file-type.js +6 -2
  104. package/dist/get-audio-codec.d.ts +1 -1
  105. package/dist/get-audio-codec.js +3 -3
  106. package/dist/get-container.js +5 -1
  107. package/dist/get-dimensions.d.ts +1 -1
  108. package/dist/get-dimensions.js +4 -1
  109. package/dist/get-duration.js +6 -2
  110. package/dist/get-fields-from-callbacks.js +1 -0
  111. package/dist/get-fps.js +3 -0
  112. package/dist/get-is-hdr.d.ts +1 -1
  113. package/dist/get-is-hdr.js +3 -3
  114. package/dist/get-keyframes.js +1 -1
  115. package/dist/get-tracks.d.ts +2 -2
  116. package/dist/get-tracks.js +23 -15
  117. package/dist/get-video-codec.d.ts +1 -1
  118. package/dist/get-video-codec.js +3 -3
  119. package/dist/has-all-info.js +4 -3
  120. package/dist/index.d.ts +65 -21
  121. package/dist/index.js +1 -1
  122. package/dist/may-skip-video-data/may-skip-video-data.js +6 -2
  123. package/dist/may-skip-video-data/need-samples-for-fields.js +1 -0
  124. package/dist/metadata/get-metadata.d.ts +1 -0
  125. package/dist/metadata/get-metadata.js +16 -1
  126. package/dist/options.d.ts +12 -5
  127. package/dist/parse-media.js +88 -68
  128. package/dist/parse-result.d.ts +17 -19
  129. package/dist/parse-video.d.ts +3 -17
  130. package/dist/parse-video.js +52 -40
  131. package/dist/readers/from-node.js +7 -8
  132. package/dist/state/can-skip-tracks.d.ts +8 -1
  133. package/dist/state/can-skip-tracks.js +38 -26
  134. package/dist/state/emitted-fields.js +1 -0
  135. package/dist/state/images.d.ts +9 -0
  136. package/dist/state/images.js +14 -0
  137. package/dist/state/iso-base-media/cached-sample-positions.d.ts +15 -0
  138. package/dist/state/iso-base-media/cached-sample-positions.js +42 -0
  139. package/dist/state/iso-base-media/iso-state.d.ts +8 -0
  140. package/dist/state/iso-base-media/iso-state.js +15 -0
  141. package/dist/state/iso-state.d.ts +4 -0
  142. package/dist/state/iso-state.js +13 -0
  143. package/dist/state/mp3.d.ts +11 -0
  144. package/dist/state/mp3.js +13 -0
  145. package/dist/state/parser-state.d.ts +57 -11
  146. package/dist/state/parser-state.js +17 -2
  147. package/dist/state/sample-callbacks.d.ts +5 -1
  148. package/dist/state/sample-callbacks.js +8 -2
  149. package/dist/state/slow-duration-fps.d.ts +2 -1
  150. package/dist/state/slow-duration-fps.js +52 -18
  151. package/dist/state/transport-stream.d.ts +8 -0
  152. package/dist/state/transport-stream.js +11 -0
  153. package/dist/state/video-section.d.ts +16 -0
  154. package/dist/state/video-section.js +37 -0
  155. package/dist/state/webm.d.ts +15 -0
  156. package/dist/state/webm.js +32 -0
  157. package/dist/throttled-progress.d.ts +14 -0
  158. package/dist/throttled-progress.js +44 -0
  159. package/dist/version.d.ts +1 -1
  160. package/dist/version.js +1 -1
  161. package/package.json +3 -3
  162. package/test.json +663 -0
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ /**
3
+ * Keeps track of in which section of the file the video is playing
4
+ * Usually this section is in a different format and it is the only section
5
+ * that can be read partially
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.videoSectionState = void 0;
9
+ const videoSectionState = () => {
10
+ let videoSection = null;
11
+ const setVideoSection = (section) => {
12
+ videoSection = section;
13
+ };
14
+ const getVideoSection = () => {
15
+ if (!videoSection) {
16
+ throw new Error('No video section defined');
17
+ }
18
+ return videoSection;
19
+ };
20
+ const isInVideoSectionState = (iterator) => {
21
+ if (!videoSection) {
22
+ return 'no-section-defined';
23
+ }
24
+ const offset = iterator.counter.getOffset();
25
+ if (offset >= videoSection.start &&
26
+ offset < videoSection.start + videoSection.size) {
27
+ return 'in-section';
28
+ }
29
+ return 'outside-section';
30
+ };
31
+ return {
32
+ setVideoSection,
33
+ getVideoSection,
34
+ isInVideoSectionState,
35
+ };
36
+ };
37
+ exports.videoSectionState = videoSectionState;
@@ -1,5 +1,16 @@
1
1
  import type { OnTrackEntrySegment } from '../boxes/webm/segments';
2
2
  import type { TrackInfo } from '../boxes/webm/segments/track-entry';
3
+ import type { BufferIterator } from '../buffer-iterator';
4
+ export type SegmentSection = {
5
+ start: number;
6
+ size: number;
7
+ index: number;
8
+ };
9
+ export type ClusterSection = {
10
+ start: number;
11
+ size: number;
12
+ segment: number;
13
+ };
3
14
  export declare const webmState: () => {
4
15
  onTrackEntrySegment: OnTrackEntrySegment;
5
16
  getTrackInfoByNumber: (id: number) => TrackInfo;
@@ -8,4 +19,8 @@ export declare const webmState: () => {
8
19
  timescale: null;
9
20
  getTimescale: () => number;
10
21
  setTimescale: (newTimescale: number) => void;
22
+ addSegment: (seg: Omit<SegmentSection, "index">) => void;
23
+ addCluster: (cluster: ClusterSection) => void;
24
+ isInsideSegment: (iterator: BufferIterator) => SegmentSection | null;
25
+ isInsideCluster: (iterator: BufferIterator) => ClusterSection | null;
11
26
  };
@@ -54,6 +54,8 @@ const webmState = () => {
54
54
  }
55
55
  return timescale;
56
56
  };
57
+ const segments = [];
58
+ const clusters = [];
57
59
  return {
58
60
  onTrackEntrySegment,
59
61
  getTrackInfoByNumber: (id) => trackEntries[id],
@@ -62,6 +64,36 @@ const webmState = () => {
62
64
  timescale,
63
65
  getTimescale,
64
66
  setTimescale,
67
+ addSegment: (seg) => {
68
+ const segment = {
69
+ ...seg,
70
+ index: segments.length,
71
+ };
72
+ segments.push(segment);
73
+ },
74
+ addCluster: (cluster) => {
75
+ clusters.push(cluster);
76
+ },
77
+ isInsideSegment: (iterator) => {
78
+ var _a;
79
+ const offset = iterator.counter.getOffset();
80
+ const insideClusters = segments.filter((cluster) => {
81
+ return (offset >= cluster.start && offset <= cluster.start + cluster.size);
82
+ });
83
+ if (insideClusters.length > 1) {
84
+ throw new Error('Expected to only be inside 1 cluster');
85
+ }
86
+ return (_a = insideClusters[0]) !== null && _a !== void 0 ? _a : null;
87
+ },
88
+ isInsideCluster: (iterator) => {
89
+ for (const cluster of clusters) {
90
+ const offset = iterator.counter.getOffset();
91
+ if (offset >= cluster.start && offset <= cluster.start + cluster.size) {
92
+ return cluster;
93
+ }
94
+ }
95
+ return null;
96
+ },
65
97
  };
66
98
  };
67
99
  exports.webmState = webmState;
@@ -0,0 +1,14 @@
1
+ import type { ParseMediaOnProgress, ParseMediaProgress } from './options';
2
+ type ReturnType = {
3
+ get: () => ParseMediaProgress;
4
+ update: ParseMediaProgressFn | null;
5
+ stopAndGetLastProgress: () => void;
6
+ };
7
+ export type ParseMediaProgressFn = (state: (prevState: ParseMediaProgress) => ParseMediaProgress) => void;
8
+ export declare const throttledStateUpdate: ({ updateFn, everyMilliseconds, signal, }: {
9
+ updateFn: ParseMediaOnProgress | null;
10
+ everyMilliseconds: number;
11
+ signal: AbortSignal | undefined;
12
+ totalBytes: number | null;
13
+ }) => ReturnType;
14
+ export {};
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.throttledStateUpdate = void 0;
4
+ const throttledStateUpdate = ({ updateFn, everyMilliseconds, signal, }) => {
5
+ let currentState = {
6
+ bytes: 0,
7
+ percentage: null,
8
+ totalBytes: null,
9
+ };
10
+ if (!updateFn) {
11
+ return {
12
+ get: () => currentState,
13
+ update: null,
14
+ stopAndGetLastProgress: () => { },
15
+ };
16
+ }
17
+ let lastUpdated = null;
18
+ const callUpdateIfChanged = () => {
19
+ if (currentState === lastUpdated) {
20
+ return;
21
+ }
22
+ updateFn(currentState);
23
+ lastUpdated = currentState;
24
+ };
25
+ const interval = setInterval(() => {
26
+ callUpdateIfChanged();
27
+ }, everyMilliseconds);
28
+ const onAbort = () => {
29
+ clearInterval(interval);
30
+ };
31
+ signal === null || signal === void 0 ? void 0 : signal.addEventListener('abort', onAbort, { once: true });
32
+ return {
33
+ get: () => currentState,
34
+ update: (fn) => {
35
+ currentState = fn(currentState);
36
+ },
37
+ stopAndGetLastProgress: () => {
38
+ clearInterval(interval);
39
+ signal === null || signal === void 0 ? void 0 : signal.removeEventListener('abort', onAbort);
40
+ return currentState;
41
+ },
42
+ };
43
+ };
44
+ exports.throttledStateUpdate = throttledStateUpdate;
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const VERSION = "4.0.248";
1
+ export declare const VERSION = "4.0.250";
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.248';
5
+ exports.VERSION = '4.0.250';
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.248",
6
+ "version": "4.0.250",
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.248",
13
- "@remotion/eslint-config-internal": "4.0.248"
12
+ "@remotion/eslint-config-internal": "4.0.250",
13
+ "@remotion/example-videos": "4.0.250"
14
14
  },
15
15
  "publishConfig": {
16
16
  "access": "public"