@remotion/media-parser 4.0.194 → 4.0.196

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 (275) hide show
  1. package/dist/add-new-matroska-tracks.d.ts +8 -0
  2. package/dist/add-new-matroska-tracks.js +14 -0
  3. package/dist/av1-codec-string.d.ts +3 -0
  4. package/dist/av1-codec-string.js +91 -0
  5. package/dist/boxes/iso-base-media/esds/decoder-specific-config.d.ts +14 -0
  6. package/dist/boxes/iso-base-media/esds/decoder-specific-config.js +38 -0
  7. package/dist/boxes/iso-base-media/esds/esds-descriptors.d.ts +8 -0
  8. package/dist/boxes/iso-base-media/esds/esds-descriptors.js +22 -2
  9. package/dist/boxes/iso-base-media/ftype.d.ts +9 -0
  10. package/dist/boxes/iso-base-media/ftype.js +31 -0
  11. package/dist/boxes/iso-base-media/make-track.d.ts +3 -0
  12. package/dist/boxes/iso-base-media/make-track.js +112 -0
  13. package/dist/boxes/iso-base-media/mdat/mdat.d.ts +6 -2
  14. package/dist/boxes/iso-base-media/mdat/mdat.js +90 -6
  15. package/dist/boxes/iso-base-media/moov/moov.d.ts +4 -2
  16. package/dist/boxes/iso-base-media/moov/moov.js +4 -2
  17. package/dist/boxes/iso-base-media/mvhd.js +7 -1
  18. package/dist/boxes/iso-base-media/process-box.d.ts +20 -3
  19. package/dist/boxes/iso-base-media/process-box.js +322 -34
  20. package/dist/boxes/iso-base-media/stsd/av1c.d.ts +9 -0
  21. package/dist/boxes/iso-base-media/stsd/av1c.js +10 -0
  22. package/dist/boxes/iso-base-media/stsd/avcc-hvcc.d.ts +20 -0
  23. package/dist/boxes/iso-base-media/stsd/avcc-hvcc.js +73 -0
  24. package/dist/boxes/iso-base-media/stsd/avcc.d.ts +10 -0
  25. package/dist/boxes/iso-base-media/stsd/avcc.js +21 -0
  26. package/dist/boxes/iso-base-media/stsd/colr.d.ts +11 -0
  27. package/dist/boxes/iso-base-media/stsd/colr.js +35 -0
  28. package/dist/boxes/iso-base-media/stsd/ctts.d.ts +19 -0
  29. package/dist/boxes/iso-base-media/stsd/ctts.js +30 -0
  30. package/dist/boxes/iso-base-media/stsd/hvcc.d.ts +11 -0
  31. package/dist/boxes/iso-base-media/stsd/hvcc.js +17 -0
  32. package/dist/boxes/iso-base-media/stsd/keys.js +1 -0
  33. package/dist/boxes/iso-base-media/stsd/mebx.d.ts +4 -2
  34. package/dist/boxes/iso-base-media/stsd/mebx.js +4 -2
  35. package/dist/boxes/iso-base-media/stsd/pasp.d.ts +12 -0
  36. package/dist/boxes/iso-base-media/stsd/pasp.js +17 -0
  37. package/dist/boxes/iso-base-media/stsd/samples.d.ts +12 -5
  38. package/dist/boxes/iso-base-media/stsd/samples.js +27 -10
  39. package/dist/boxes/iso-base-media/stsd/stsd.d.ts +4 -2
  40. package/dist/boxes/iso-base-media/stsd/stsd.js +6 -2
  41. package/dist/boxes/iso-base-media/stsd/stss.d.ts +13 -0
  42. package/dist/boxes/iso-base-media/stsd/stss.js +28 -0
  43. package/dist/boxes/iso-base-media/stsd/stsz.d.ts +9 -3
  44. package/dist/boxes/iso-base-media/stsd/stsz.js +14 -2
  45. package/dist/boxes/iso-base-media/stsd/stts.d.ts +15 -0
  46. package/dist/boxes/iso-base-media/stsd/stts.js +35 -0
  47. package/dist/boxes/iso-base-media/tkhd.d.ts +3 -0
  48. package/dist/boxes/iso-base-media/tkhd.js +41 -14
  49. package/dist/boxes/iso-base-media/trak/trak.d.ts +4 -2
  50. package/dist/boxes/iso-base-media/trak/trak.js +4 -2
  51. package/dist/boxes/iso-base-media/void-box.d.ts +4 -0
  52. package/dist/boxes/iso-base-media/void-box.js +2 -0
  53. package/dist/boxes/webm/allowed-partial-segments.d.ts +1 -0
  54. package/dist/boxes/webm/allowed-partial-segments.js +4 -0
  55. package/dist/boxes/webm/av1-codec-private.d.ts +2 -0
  56. package/dist/boxes/webm/av1-codec-private.js +95 -0
  57. package/dist/boxes/webm/bitstream/av1/bitstream-frame-header.d.ts +14 -0
  58. package/dist/boxes/webm/bitstream/av1/bitstream-frame-header.js +67 -0
  59. package/dist/boxes/webm/bitstream/av1/bitstream-frame.d.ts +11 -0
  60. package/dist/boxes/webm/bitstream/av1/bitstream-frame.js +14 -0
  61. package/dist/boxes/webm/bitstream/av1/chroma-sample-position.d.ts +6 -0
  62. package/dist/boxes/webm/bitstream/av1/chroma-sample-position.js +9 -0
  63. package/dist/boxes/webm/bitstream/av1/color-config.d.ts +16 -0
  64. package/dist/boxes/webm/bitstream/av1/color-config.js +103 -0
  65. package/dist/boxes/webm/bitstream/av1/color-primaries.d.ts +14 -0
  66. package/dist/boxes/webm/bitstream/av1/color-primaries.js +17 -0
  67. package/dist/boxes/webm/bitstream/av1/decoder-model-info.d.ts +9 -0
  68. package/dist/boxes/webm/bitstream/av1/decoder-model-info.js +17 -0
  69. package/dist/boxes/webm/bitstream/av1/header-segment.d.ts +51 -0
  70. package/dist/boxes/webm/bitstream/av1/header-segment.js +183 -0
  71. package/dist/boxes/webm/bitstream/av1/matrix-coefficients.d.ts +17 -0
  72. package/dist/boxes/webm/bitstream/av1/matrix-coefficients.js +20 -0
  73. package/dist/boxes/webm/bitstream/av1/operating-parameters-info.d.ts +10 -0
  74. package/dist/boxes/webm/bitstream/av1/operating-parameters-info.js +15 -0
  75. package/dist/boxes/webm/bitstream/av1/temporal-point-info.d.ts +5 -0
  76. package/dist/boxes/webm/bitstream/av1/temporal-point-info.js +8 -0
  77. package/dist/boxes/webm/bitstream/av1/timing-info.d.ts +8 -0
  78. package/dist/boxes/webm/bitstream/av1/timing-info.js +20 -0
  79. package/dist/boxes/webm/bitstream/av1/transfer-characteristics.d.ts +21 -0
  80. package/dist/boxes/webm/bitstream/av1/transfer-characteristics.js +24 -0
  81. package/dist/boxes/webm/bitstream/av1/uvlc.d.ts +2 -0
  82. package/dist/boxes/webm/bitstream/av1/uvlc.js +20 -0
  83. package/dist/boxes/webm/bitstream/av1.d.ts +20 -0
  84. package/dist/boxes/webm/bitstream/av1.js +118 -0
  85. package/dist/boxes/webm/bitstream/h264/get-h264-descriptor.d.ts +0 -0
  86. package/dist/boxes/webm/bitstream/h264/get-h264-descriptor.js +1 -0
  87. package/dist/boxes/webm/description.d.ts +2 -0
  88. package/dist/boxes/webm/description.js +83 -0
  89. package/dist/boxes/webm/get-ready-tracks.d.ts +3 -0
  90. package/dist/boxes/webm/get-ready-tracks.js +29 -0
  91. package/dist/boxes/webm/get-track.d.ts +6 -0
  92. package/dist/boxes/webm/get-track.js +183 -0
  93. package/dist/boxes/webm/parse-webm-header.d.ts +2 -1
  94. package/dist/boxes/webm/parse-webm-header.js +2 -2
  95. package/dist/boxes/webm/segments/all-segments.d.ts +269 -0
  96. package/dist/boxes/webm/segments/all-segments.js +277 -0
  97. package/dist/boxes/webm/segments/duration.d.ts +1 -1
  98. package/dist/boxes/webm/segments/duration.js +13 -9
  99. package/dist/boxes/webm/segments/info.d.ts +2 -1
  100. package/dist/boxes/webm/segments/info.js +12 -4
  101. package/dist/boxes/webm/segments/main.d.ts +0 -2
  102. package/dist/boxes/webm/segments/main.js +0 -11
  103. package/dist/boxes/webm/segments/muxing.d.ts +1 -1
  104. package/dist/boxes/webm/segments/muxing.js +1 -2
  105. package/dist/boxes/webm/segments/parse-children.d.ts +11 -1
  106. package/dist/boxes/webm/segments/parse-children.js +82 -6
  107. package/dist/boxes/webm/segments/seek-head.d.ts +2 -1
  108. package/dist/boxes/webm/segments/seek-head.js +12 -3
  109. package/dist/boxes/webm/segments/seek-position.d.ts +1 -1
  110. package/dist/boxes/webm/segments/seek-position.js +1 -2
  111. package/dist/boxes/webm/segments/seek.d.ts +7 -2
  112. package/dist/boxes/webm/segments/seek.js +22 -9
  113. package/dist/boxes/webm/segments/track-entry.d.ts +102 -22
  114. package/dist/boxes/webm/segments/track-entry.js +269 -57
  115. package/dist/boxes/webm/segments/tracks.d.ts +2 -1
  116. package/dist/boxes/webm/segments/tracks.js +12 -4
  117. package/dist/boxes/webm/segments/void.d.ts +1 -1
  118. package/dist/boxes/webm/segments/void.js +1 -2
  119. package/dist/boxes/webm/segments/writing.d.ts +1 -1
  120. package/dist/boxes/webm/segments/writing.js +1 -2
  121. package/dist/boxes/webm/segments.d.ts +8 -4
  122. package/dist/boxes/webm/segments.js +176 -40
  123. package/dist/boxes/webm/traversal.d.ts +7 -0
  124. package/dist/boxes/webm/traversal.js +25 -0
  125. package/dist/buffer-iterator.d.ts +15 -1
  126. package/dist/buffer-iterator.js +115 -46
  127. package/dist/combine-uint8array.d.ts +1 -0
  128. package/dist/combine-uint8array.js +13 -0
  129. package/dist/from-fetch.d.ts +2 -0
  130. package/dist/from-fetch.js +54 -0
  131. package/dist/from-node.js +6 -0
  132. package/dist/from-web-file.d.ts +2 -0
  133. package/dist/from-web-file.js +34 -0
  134. package/dist/from-web.js +6 -9
  135. package/dist/get-audio-codec.d.ts +19 -0
  136. package/dist/get-audio-codec.js +153 -60
  137. package/dist/get-dimensions.d.ts +8 -2
  138. package/dist/get-dimensions.js +13 -91
  139. package/dist/get-duration.js +4 -7
  140. package/dist/get-fps.d.ts +4 -3
  141. package/dist/get-fps.js +17 -116
  142. package/dist/get-sample-aspect-ratio.d.ts +37 -0
  143. package/dist/get-sample-aspect-ratio.js +137 -0
  144. package/dist/get-sample-positions.d.ts +11 -1
  145. package/dist/get-sample-positions.js +31 -2
  146. package/dist/get-tracks.d.ts +44 -5
  147. package/dist/get-tracks.js +66 -48
  148. package/dist/get-video-codec.d.ts +2 -0
  149. package/dist/get-video-codec.js +47 -31
  150. package/dist/get-video-metadata.d.ts +2 -0
  151. package/dist/get-video-metadata.js +44 -0
  152. package/dist/has-all-info.d.ts +2 -1
  153. package/dist/has-all-info.js +14 -5
  154. package/dist/index.d.ts +1 -0
  155. package/dist/make-hvc1-codec-strings.d.ts +2 -0
  156. package/dist/make-hvc1-codec-strings.js +47 -0
  157. package/dist/options.d.ts +26 -4
  158. package/dist/parse-media.js +62 -17
  159. package/dist/parse-result.d.ts +16 -5
  160. package/dist/parse-video.d.ts +11 -2
  161. package/dist/parse-video.js +14 -6
  162. package/dist/parser-context.d.ts +8 -0
  163. package/dist/parser-context.js +2 -0
  164. package/dist/parser-state.d.ts +23 -0
  165. package/dist/parser-state.js +112 -0
  166. package/dist/read-and-increment-offset.d.ts +28 -0
  167. package/dist/read-and-increment-offset.js +177 -0
  168. package/dist/reader.d.ts +2 -2
  169. package/dist/traversal.d.ts +37 -0
  170. package/dist/traversal.js +244 -1
  171. package/dist/understand-vorbis.d.ts +1 -0
  172. package/dist/understand-vorbis.js +12 -0
  173. package/dist/webcodec-sample-types.d.ts +21 -0
  174. package/dist/webcodec-sample-types.js +2 -0
  175. package/package.json +10 -2
  176. package/src/add-new-matroska-tracks.ts +23 -0
  177. package/src/boxes/iso-base-media/esds/decoder-specific-config.ts +61 -0
  178. package/src/boxes/iso-base-media/esds/esds-descriptors.ts +33 -2
  179. package/src/boxes/iso-base-media/make-track.ts +157 -0
  180. package/src/boxes/iso-base-media/mdat/mdat.ts +131 -0
  181. package/src/boxes/iso-base-media/moov/moov.ts +8 -3
  182. package/src/boxes/iso-base-media/mvhd.ts +7 -1
  183. package/src/boxes/iso-base-media/process-box.ts +388 -38
  184. package/src/boxes/iso-base-media/stsd/av1c.ts +19 -0
  185. package/src/boxes/iso-base-media/stsd/avcc.ts +36 -0
  186. package/src/boxes/iso-base-media/stsd/colr.ts +49 -0
  187. package/src/boxes/iso-base-media/stsd/ctts.ts +55 -0
  188. package/src/boxes/iso-base-media/stsd/hvcc.ts +32 -0
  189. package/src/boxes/iso-base-media/stsd/keys.ts +2 -0
  190. package/src/boxes/iso-base-media/stsd/mebx.ts +8 -3
  191. package/src/boxes/iso-base-media/stsd/pasp.ts +32 -0
  192. package/src/boxes/iso-base-media/stsd/samples.ts +43 -16
  193. package/src/boxes/iso-base-media/stsd/stco.ts +50 -0
  194. package/src/boxes/iso-base-media/stsd/stsc.ts +61 -0
  195. package/src/boxes/iso-base-media/stsd/stsd.ts +10 -3
  196. package/src/boxes/iso-base-media/stsd/stss.ts +47 -0
  197. package/src/boxes/iso-base-media/stsd/stsz.ts +75 -0
  198. package/src/boxes/iso-base-media/tkhd.ts +63 -16
  199. package/src/boxes/iso-base-media/trak/trak.ts +8 -3
  200. package/src/boxes/iso-base-media/void-box.ts +4 -0
  201. package/src/boxes/webm/allowed-partial-segments.ts +1 -0
  202. package/src/boxes/webm/av1-codec-private.ts +113 -0
  203. package/src/boxes/webm/description.ts +101 -0
  204. package/src/boxes/webm/get-ready-tracks.ts +36 -0
  205. package/src/boxes/webm/get-track.ts +250 -0
  206. package/src/boxes/webm/parse-webm-header.ts +6 -2
  207. package/src/boxes/webm/segments/all-segments.ts +285 -0
  208. package/src/boxes/webm/segments/duration.ts +15 -8
  209. package/src/boxes/webm/segments/info.ts +18 -4
  210. package/src/boxes/webm/segments/main.ts +0 -13
  211. package/src/boxes/webm/segments/muxing.ts +1 -1
  212. package/src/boxes/webm/segments/parse-children.ts +132 -9
  213. package/src/boxes/webm/segments/seek-head.ts +17 -4
  214. package/src/boxes/webm/segments/seek-position.ts +1 -2
  215. package/src/boxes/webm/segments/seek.ts +31 -9
  216. package/src/boxes/webm/segments/track-entry.ts +475 -65
  217. package/src/boxes/webm/segments/tracks.ts +17 -7
  218. package/src/boxes/webm/segments/void.ts +4 -2
  219. package/src/boxes/webm/segments/writing.ts +1 -1
  220. package/src/boxes/webm/segments.ts +266 -42
  221. package/src/boxes/webm/traversal.ts +32 -0
  222. package/src/buffer-iterator.ts +140 -45
  223. package/src/combine-uint8array.ts +13 -0
  224. package/src/{from-web.ts → from-fetch.ts} +9 -1
  225. package/src/from-node.ts +8 -0
  226. package/src/from-web-file.ts +39 -0
  227. package/src/get-audio-codec.ts +213 -84
  228. package/src/get-dimensions.ts +25 -132
  229. package/src/get-duration.ts +4 -8
  230. package/src/get-fps.ts +27 -172
  231. package/src/get-sample-aspect-ratio.ts +204 -0
  232. package/src/get-sample-positions.ts +93 -0
  233. package/src/get-tracks.ts +147 -0
  234. package/src/get-video-codec.ts +62 -47
  235. package/src/has-all-info.ts +35 -5
  236. package/src/index.ts +8 -0
  237. package/src/make-hvc1-codec-strings.ts +55 -0
  238. package/src/options.ts +48 -9
  239. package/src/parse-media.ts +90 -21
  240. package/src/parse-result.ts +28 -4
  241. package/src/parse-video.ts +30 -7
  242. package/src/parser-context.ts +9 -0
  243. package/src/parser-state.ts +151 -0
  244. package/src/reader.ts +2 -2
  245. package/src/test/aspect-ratio.test.ts +42 -0
  246. package/src/test/av1.test.ts +108 -0
  247. package/src/test/duration.test.ts +5 -21
  248. package/src/test/matroska.test.ts +350 -31
  249. package/src/test/mvhd.test.ts +6 -1
  250. package/src/test/parse-esds.test.ts +29 -6
  251. package/src/test/parse-stco.test.ts +59 -0
  252. package/src/test/parse-stsc.test.ts +104 -0
  253. package/src/test/parse-stsz.test.ts +57 -0
  254. package/src/test/parse-stts.test.ts +1 -1
  255. package/src/test/parse-video.test.ts +23 -35
  256. package/src/test/parse-webm.test.ts +5 -5
  257. package/src/test/stream-local.test.ts +542 -46
  258. package/src/test/stream-remote.test.ts +15 -13
  259. package/src/test/stream-samples.test.ts +259 -0
  260. package/src/test/stsd.test.ts +60 -8
  261. package/src/test/tkhd.test.ts +4 -1
  262. package/src/traversal.ts +496 -0
  263. package/src/webcodec-sample-types.ts +30 -0
  264. package/tsconfig.json +5 -1
  265. package/tsconfig.tsbuildinfo +1 -1
  266. package/boxes.json +0 -1
  267. package/dist/boxes/iso-base-media/esds-descriptors.d.ts +0 -21
  268. package/dist/boxes/iso-base-media/esds-descriptors.js +0 -62
  269. package/dist/boxes/iso-base-media/esds.d.ts +0 -15
  270. package/dist/boxes/iso-base-media/esds.js +0 -27
  271. package/dist/get-codec.d.ts +0 -4
  272. package/dist/get-codec.js +0 -22
  273. /package/dist/{get-samples.d.ts → boxes/webm/bitstream/av1/frame.d.ts} +0 -0
  274. /package/dist/{get-samples.js → boxes/webm/bitstream/av1/frame.js} +0 -0
  275. /package/src/boxes/iso-base-media/{stts → stsd}/stts.ts +0 -0
@@ -2,16 +2,92 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.expectChildren = void 0;
4
4
  const segments_1 = require("../segments");
5
- const expectChildren = (iterator, length) => {
6
- const children = [];
5
+ const processParseResult = ({ parseResult, children, wrap, }) => {
6
+ if (parseResult.status === 'incomplete') {
7
+ // No need to decrement because expectSegment already does it
8
+ return {
9
+ status: 'incomplete',
10
+ segments: [],
11
+ continueParsing: async () => {
12
+ const newParseResult = await parseResult.continueParsing();
13
+ return processParseResult({
14
+ children,
15
+ parseResult: newParseResult,
16
+ wrap,
17
+ });
18
+ },
19
+ skipTo: null,
20
+ };
21
+ }
22
+ for (const segment of parseResult.segments) {
23
+ children.push(segment);
24
+ }
25
+ return {
26
+ status: 'done',
27
+ segments: wrap ? [wrap(children)] : children,
28
+ };
29
+ };
30
+ const continueParsingfunction = ({ result, iterator, children, wrap, parserContext, length, }) => async () => {
31
+ if (result.status !== 'incomplete') {
32
+ throw new Error('expected incomplete');
33
+ }
34
+ const offset = iterator.counter.getOffset();
35
+ const continued = await result.continueParsing();
36
+ if (continued.status === 'incomplete') {
37
+ return {
38
+ status: 'incomplete',
39
+ continueParsing: continueParsingfunction({
40
+ result: continued,
41
+ iterator,
42
+ children,
43
+ wrap,
44
+ parserContext,
45
+ length: length - (iterator.counter.getOffset() - offset),
46
+ }),
47
+ skipTo: continued.skipTo,
48
+ segments: wrap ? [wrap(children)] : children,
49
+ };
50
+ }
51
+ return (0, exports.expectChildren)({
52
+ iterator,
53
+ length: length - (iterator.counter.getOffset() - offset),
54
+ initialChildren: children,
55
+ wrap,
56
+ parserContext,
57
+ });
58
+ };
59
+ const expectChildren = async ({ iterator, length, initialChildren, wrap, parserContext, }) => {
60
+ const children = [...initialChildren];
7
61
  const startOffset = iterator.counter.getOffset();
8
62
  while (iterator.counter.getOffset() < startOffset + length) {
9
- const child = (0, segments_1.expectSegment)(iterator);
10
- children.push(child);
11
- if (child.type === 'unknown-segment') {
63
+ if (iterator.bytesRemaining() === 0) {
12
64
  break;
13
65
  }
66
+ const parseResult = await (0, segments_1.expectSegment)(iterator, parserContext);
67
+ const child = processParseResult({
68
+ children,
69
+ parseResult,
70
+ wrap,
71
+ });
72
+ if (child.status === 'incomplete') {
73
+ return {
74
+ status: 'incomplete',
75
+ continueParsing: continueParsingfunction({
76
+ result: child,
77
+ iterator,
78
+ children,
79
+ wrap,
80
+ parserContext,
81
+ length: length - (iterator.counter.getOffset() - startOffset),
82
+ }),
83
+ skipTo: child.skipTo,
84
+ segments: wrap ? [wrap(children)] : children,
85
+ };
86
+ }
14
87
  }
15
- return children;
88
+ return {
89
+ status: 'done',
90
+ segments: wrap ? [wrap(children)] : children,
91
+ };
16
92
  };
17
93
  exports.expectChildren = expectChildren;
@@ -1,8 +1,9 @@
1
1
  import type { BufferIterator } from '../../../buffer-iterator';
2
+ import type { ParserContext } from '../../../parser-context';
2
3
  import { type MatroskaSegment } from '../segments';
3
4
  export type SeekHeadSegment = {
4
5
  type: 'seek-head-segment';
5
6
  children: MatroskaSegment[];
6
7
  length: number;
7
8
  };
8
- export declare const parseSeekHeadSegment: (iterator: BufferIterator) => SeekHeadSegment;
9
+ export declare const parseSeekHeadSegment: (iterator: BufferIterator, length: number, parserContext: ParserContext) => Promise<SeekHeadSegment>;
@@ -2,12 +2,21 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseSeekHeadSegment = void 0;
4
4
  const parse_children_1 = require("./parse-children");
5
- const parseSeekHeadSegment = (iterator) => {
6
- const length = iterator.getVint();
5
+ const parseSeekHeadSegment = async (iterator, length, parserContext) => {
6
+ const children = await (0, parse_children_1.expectChildren)({
7
+ iterator,
8
+ length,
9
+ initialChildren: [],
10
+ wrap: null,
11
+ parserContext,
12
+ });
13
+ if (children.status === 'incomplete') {
14
+ throw new Error('Incomplete children');
15
+ }
7
16
  return {
8
17
  type: 'seek-head-segment',
9
18
  length,
10
- children: (0, parse_children_1.expectChildren)(iterator, length),
19
+ children: children.segments,
11
20
  };
12
21
  };
13
22
  exports.parseSeekHeadSegment = parseSeekHeadSegment;
@@ -3,4 +3,4 @@ export type SeekPositionSegment = {
3
3
  type: 'seek-position-segment';
4
4
  seekPosition: number;
5
5
  };
6
- export declare const parseSeekPositionSegment: (iterator: BufferIterator) => SeekPositionSegment;
6
+ export declare const parseSeekPositionSegment: (iterator: BufferIterator, length: number) => SeekPositionSegment;
@@ -1,8 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseSeekPositionSegment = void 0;
4
- const parseSeekPositionSegment = (iterator) => {
5
- const length = iterator.getVint();
4
+ const parseSeekPositionSegment = (iterator, length) => {
6
5
  const seekPosition = iterator.getDecimalBytes(length);
7
6
  return {
8
7
  type: 'seek-position-segment',
@@ -1,8 +1,13 @@
1
1
  import type { BufferIterator } from '../../../buffer-iterator';
2
+ import type { ParserContext } from '../../../parser-context';
2
3
  import type { MatroskaSegment } from '../segments';
3
4
  export type SeekSegment = {
4
5
  type: 'seek-segment';
6
+ children: MatroskaSegment[];
7
+ };
8
+ export declare const parseSeekSegment: (iterator: BufferIterator, length: number, parserContext: ParserContext) => Promise<SeekSegment>;
9
+ export type SeekIdSegment = {
10
+ type: 'seek-id-segment';
5
11
  seekId: string;
6
- child: MatroskaSegment;
7
12
  };
8
- export declare const parseSeekSegment: (iterator: BufferIterator) => SeekSegment;
13
+ export declare const parseSeekIdSegment: (iterator: BufferIterator) => SeekIdSegment;
@@ -1,16 +1,29 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseSeekSegment = void 0;
4
- const segments_1 = require("../segments");
5
- const parseSeekSegment = (iterator) => {
6
- // length
7
- iterator.discard(4);
8
- const seekId = iterator.getMatroskaSegmentId();
9
- const child = (0, segments_1.expectSegment)(iterator);
3
+ exports.parseSeekIdSegment = exports.parseSeekSegment = void 0;
4
+ const parse_children_1 = require("./parse-children");
5
+ const parseSeekSegment = async (iterator, length, parserContext) => {
6
+ const children = await (0, parse_children_1.expectChildren)({
7
+ iterator,
8
+ length,
9
+ initialChildren: [],
10
+ wrap: null,
11
+ parserContext,
12
+ });
13
+ if (children.status === 'incomplete') {
14
+ throw new Error('Incomplete children');
15
+ }
10
16
  return {
11
17
  type: 'seek-segment',
12
- seekId,
13
- child,
18
+ children: children.segments,
14
19
  };
15
20
  };
16
21
  exports.parseSeekSegment = parseSeekSegment;
22
+ const parseSeekIdSegment = (iterator) => {
23
+ const seekId = iterator.getMatroskaSegmentId();
24
+ return {
25
+ type: 'seek-id-segment',
26
+ seekId,
27
+ };
28
+ };
29
+ exports.parseSeekIdSegment = parseSeekIdSegment;
@@ -1,101 +1,181 @@
1
1
  import type { BufferIterator } from '../../../buffer-iterator';
2
+ import type { ParserContext } from '../../../parser-context';
2
3
  import type { MatroskaSegment } from '../segments';
3
4
  export type TrackEntrySegment = {
4
5
  type: 'track-entry-segment';
5
6
  children: MatroskaSegment[];
6
7
  };
7
- export declare const parseTrackEntry: (iterator: BufferIterator) => TrackEntrySegment;
8
+ export declare const parseTrackEntry: (iterator: BufferIterator, length: number, parserContext: ParserContext) => Promise<TrackEntrySegment>;
8
9
  export type TrackNumberSegment = {
9
10
  type: 'track-number-segment';
10
11
  trackNumber: number;
11
12
  };
12
- export declare const parseTrackNumber: (iterator: BufferIterator) => TrackNumberSegment;
13
13
  export type TrackUIDSegment = {
14
14
  type: 'track-uid-segment';
15
15
  trackUid: string;
16
16
  };
17
- export declare const parseTrackUID: (iterator: BufferIterator) => TrackUIDSegment;
17
+ export declare const parseTrackUID: (iterator: BufferIterator, length: number) => TrackUIDSegment;
18
18
  export type FlagLacingSegment = {
19
19
  type: 'flag-lacing-segment';
20
20
  lacing: boolean;
21
21
  };
22
- export declare const parseFlagLacing: (iterator: BufferIterator) => FlagLacingSegment;
22
+ export declare const parseFlagLacing: (iterator: BufferIterator, length: number) => FlagLacingSegment;
23
23
  export type LanguageSegment = {
24
24
  type: 'language-segment';
25
25
  language: string;
26
26
  };
27
- export declare const parseLanguageSegment: (iterator: BufferIterator) => LanguageSegment;
27
+ export declare const parseLanguageSegment: (iterator: BufferIterator, length: number) => LanguageSegment;
28
28
  export type CodecSegment = {
29
29
  type: 'codec-segment';
30
30
  codec: string;
31
31
  };
32
- export declare const parseCodecSegment: (iterator: BufferIterator) => CodecSegment;
32
+ export declare const parseCodecSegment: (iterator: BufferIterator, length: number) => CodecSegment;
33
+ type TrackType = 'video' | 'audio' | 'complex' | 'subtitle' | 'button' | 'control' | 'metadata';
33
34
  export type TrackTypeSegment = {
34
35
  type: 'track-type-segment';
35
- trackType: number;
36
+ trackType: TrackType;
36
37
  };
37
- export declare const parseTrackTypeSegment: (iterator: BufferIterator) => TrackTypeSegment;
38
+ export declare const parseTrackTypeSegment: (iterator: BufferIterator, length: number) => TrackTypeSegment;
38
39
  export type DefaultDurationSegment = {
39
40
  type: 'default-duration-segment';
40
41
  defaultDuration: number;
41
42
  };
42
- export declare const parseDefaultDurationSegment: (iterator: BufferIterator) => DefaultDurationSegment;
43
+ export declare const parseDefaultDurationSegment: (iterator: BufferIterator, length: number) => DefaultDurationSegment;
43
44
  export type VideoSegment = {
44
45
  type: 'video-segment';
45
46
  children: MatroskaSegment[];
46
47
  };
47
- export declare const parseVideoSegment: (iterator: BufferIterator) => VideoSegment;
48
+ export declare const parseVideoSegment: (iterator: BufferIterator, length: number, parserContext: ParserContext) => Promise<VideoSegment>;
49
+ export type AudioSegment = {
50
+ type: 'audio-segment';
51
+ children: MatroskaSegment[];
52
+ };
53
+ export declare const parseAudioSegment: (iterator: BufferIterator, length: number, parserContext: ParserContext) => Promise<AudioSegment>;
48
54
  export type WidthSegment = {
49
55
  type: 'width-segment';
50
56
  width: number;
51
57
  };
52
- export declare const parseWidthSegment: (iterator: BufferIterator) => WidthSegment;
58
+ export declare const parseWidthSegment: (iterator: BufferIterator, length: number) => WidthSegment;
53
59
  export type HeightSegment = {
54
60
  type: 'height-segment';
55
61
  height: number;
56
62
  };
57
- export declare const parseHeightSegment: (iterator: BufferIterator) => HeightSegment;
63
+ export declare const parseHeightSegment: (iterator: BufferIterator, length: number) => HeightSegment;
64
+ export type DisplayWidthSegment = {
65
+ type: 'display-width-segment';
66
+ displayWidth: number;
67
+ };
68
+ export declare const parseDisplayWidthSegment: (iterator: BufferIterator, length: number) => DisplayWidthSegment;
69
+ export type DisplayHeightSegment = {
70
+ type: 'display-height-segment';
71
+ displayHeight: number;
72
+ };
73
+ export declare const parseDisplayHeightSegment: (iterator: BufferIterator, length: number) => DisplayHeightSegment;
58
74
  export type AlphaModeSegment = {
59
75
  type: 'alpha-mode-segment';
60
76
  alphaMode: number;
61
77
  };
62
- export declare const parseAlphaModeSegment: (iterator: BufferIterator) => AlphaModeSegment;
78
+ export declare const parseAlphaModeSegment: (iterator: BufferIterator, length: number) => AlphaModeSegment;
63
79
  export type MaxBlockAdditionId = {
64
80
  type: 'max-block-addition-id-segment';
65
81
  maxBlockAdditionId: number;
66
82
  };
67
- export declare const parseMaxBlockAdditionId: (iterator: BufferIterator) => MaxBlockAdditionId;
83
+ export declare const parseMaxBlockAdditionId: (iterator: BufferIterator, length: number) => MaxBlockAdditionId;
68
84
  export type ColorSegment = {
69
85
  type: 'color-segment';
86
+ length: number;
70
87
  };
71
- export declare const parseColorSegment: (iterator: BufferIterator) => ColorSegment;
88
+ export declare const parseColorSegment: (iterator: BufferIterator, length: number) => ColorSegment;
72
89
  export type TitleSegment = {
73
90
  type: 'title-segment';
74
91
  title: string;
75
92
  };
76
- export declare const parseTitleSegment: (iterator: BufferIterator) => TitleSegment;
93
+ export declare const parseTitleSegment: (iterator: BufferIterator, length: number) => TitleSegment;
77
94
  export type InterlacedSegment = {
78
95
  type: 'interlaced-segment';
79
96
  interlaced: boolean;
80
97
  };
81
- export declare const parseInterlacedSegment: (iterator: BufferIterator) => InterlacedSegment;
98
+ export declare const parseInterlacedSegment: (iterator: BufferIterator, length: number) => InterlacedSegment;
82
99
  export type CodecPrivateSegment = {
83
100
  type: 'codec-private-segment';
84
- codecPrivateData: number[];
101
+ codecPrivateData: Uint8Array;
85
102
  };
86
- export declare const parseCodecPrivateSegment: (iterator: BufferIterator) => CodecPrivateSegment;
103
+ export declare const parseCodecPrivateSegment: (iterator: BufferIterator, length: number) => CodecPrivateSegment;
87
104
  export type Crc32Segment = {
88
105
  type: 'crc32-segment';
89
106
  crc32: number[];
90
107
  };
91
- export declare const parseCrc32Segment: (iterator: BufferIterator) => Crc32Segment;
108
+ export declare const parseCrc32Segment: (iterator: BufferIterator, length: number) => Crc32Segment;
92
109
  export type SegmentUUIDSegment = {
93
110
  type: 'segment-uuid-segment';
94
111
  segmentUUID: string;
95
112
  };
96
- export declare const parseSegmentUUIDSegment: (iterator: BufferIterator) => SegmentUUIDSegment;
113
+ export declare const parseSegmentUUIDSegment: (iterator: BufferIterator, length: number) => SegmentUUIDSegment;
97
114
  export type DefaultFlagSegment = {
98
115
  type: 'default-flag-segment';
99
116
  defaultFlag: boolean;
100
117
  };
101
- export declare const parseDefaultFlagSegment: (iterator: BufferIterator) => DefaultFlagSegment;
118
+ export declare const parseDefaultFlagSegment: (iterator: BufferIterator, length: number) => DefaultFlagSegment;
119
+ export type TagsSegment = {
120
+ type: 'tags-segment';
121
+ children: MatroskaSegment[];
122
+ };
123
+ export declare const parseTagsSegment: (iterator: BufferIterator, length: number, parserContext: ParserContext) => Promise<TagsSegment>;
124
+ export type TagSegment = {
125
+ type: 'tag-segment';
126
+ length: number;
127
+ };
128
+ export declare const parseTagSegment: (iterator: BufferIterator, length: number) => TagSegment;
129
+ export type ClusterSegment = {
130
+ type: 'cluster-segment';
131
+ children: MatroskaSegment[];
132
+ };
133
+ export type TimestampSegment = {
134
+ type: 'timestamp-segment';
135
+ timestamp: number;
136
+ };
137
+ export declare const parseTimestampSegment: (iterator: BufferIterator, length: number) => TimestampSegment;
138
+ export type SimpleBlockSegment = {
139
+ type: 'simple-block-segment';
140
+ length: number;
141
+ trackNumber: number;
142
+ timecode: number;
143
+ headerFlags: number;
144
+ keyframe: boolean;
145
+ lacing: [number, number];
146
+ invisible: boolean;
147
+ children: MatroskaSegment[];
148
+ };
149
+ export type GetTracks = () => TrackEntrySegment[];
150
+ export declare const parseSimpleBlockSegment: ({ iterator, length, parserContext, }: {
151
+ iterator: BufferIterator;
152
+ length: number;
153
+ parserContext: ParserContext;
154
+ }) => Promise<SimpleBlockSegment>;
155
+ export declare const parseTrackNumber: (iterator: BufferIterator, length: number) => TrackNumberSegment;
156
+ export type BlockGroupSegment = {
157
+ type: 'block-group-segment';
158
+ children: MatroskaSegment[];
159
+ };
160
+ export declare const parseBlockGroupSegment: (iterator: BufferIterator, length: number, parserContext: ParserContext) => Promise<BlockGroupSegment>;
161
+ export type BlockElement = {
162
+ type: 'block-element-segment';
163
+ length: number;
164
+ };
165
+ export declare const parseBlockElementSegment: (iterator: BufferIterator, length: number) => BlockElement;
166
+ export type SamplingFrequencySegment = {
167
+ type: 'sampling-frequency-segment';
168
+ samplingFrequency: number;
169
+ };
170
+ export declare const parseSamplingFrequencySegment: (iterator: BufferIterator, length: number) => SamplingFrequencySegment;
171
+ export type ChannelsSegment = {
172
+ type: 'channels-segment';
173
+ channels: number;
174
+ };
175
+ export declare const parseChannelsSegment: (iterator: BufferIterator, length: number) => ChannelsSegment;
176
+ export type BitDepthSegment = {
177
+ type: 'bit-depth-segment';
178
+ bitDepth: number;
179
+ };
180
+ export declare const parseBitDepthSegment: (iterator: BufferIterator, length: number) => BitDepthSegment;
181
+ export {};