@remotion/media-parser 4.0.193 → 4.0.195

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 (266) 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/make-track.d.ts +3 -0
  10. package/dist/boxes/iso-base-media/make-track.js +112 -0
  11. package/dist/boxes/iso-base-media/mdat/mdat.d.ts +16 -0
  12. package/dist/boxes/iso-base-media/mdat/mdat.js +97 -0
  13. package/dist/boxes/iso-base-media/moov/moov.d.ts +4 -2
  14. package/dist/boxes/iso-base-media/moov/moov.js +4 -2
  15. package/dist/boxes/iso-base-media/mvhd.js +7 -1
  16. package/dist/boxes/iso-base-media/process-box.d.ts +20 -3
  17. package/dist/boxes/iso-base-media/process-box.js +356 -18
  18. package/dist/boxes/iso-base-media/stsd/av1c.d.ts +9 -0
  19. package/dist/boxes/iso-base-media/stsd/av1c.js +10 -0
  20. package/dist/boxes/iso-base-media/stsd/avcc-hvcc.d.ts +20 -0
  21. package/dist/boxes/iso-base-media/stsd/avcc-hvcc.js +73 -0
  22. package/dist/boxes/iso-base-media/stsd/avcc.d.ts +10 -0
  23. package/dist/boxes/iso-base-media/stsd/avcc.js +21 -0
  24. package/dist/boxes/iso-base-media/stsd/colr.d.ts +11 -0
  25. package/dist/boxes/iso-base-media/stsd/colr.js +35 -0
  26. package/dist/boxes/iso-base-media/stsd/ctts.d.ts +19 -0
  27. package/dist/boxes/iso-base-media/stsd/ctts.js +30 -0
  28. package/dist/boxes/iso-base-media/stsd/hvcc.d.ts +11 -0
  29. package/dist/boxes/iso-base-media/stsd/hvcc.js +17 -0
  30. package/dist/boxes/iso-base-media/stsd/keys.js +1 -0
  31. package/dist/boxes/iso-base-media/stsd/mebx.d.ts +4 -2
  32. package/dist/boxes/iso-base-media/stsd/mebx.js +4 -2
  33. package/dist/boxes/iso-base-media/stsd/pasp.d.ts +12 -0
  34. package/dist/boxes/iso-base-media/stsd/pasp.js +17 -0
  35. package/dist/boxes/iso-base-media/stsd/samples.d.ts +12 -5
  36. package/dist/boxes/iso-base-media/stsd/samples.js +27 -10
  37. package/dist/boxes/iso-base-media/stsd/stco.d.ts +14 -0
  38. package/dist/boxes/iso-base-media/stsd/stco.js +30 -0
  39. package/dist/boxes/iso-base-media/stsd/stsc.d.ts +19 -0
  40. package/dist/boxes/iso-base-media/stsd/stsc.js +34 -0
  41. package/dist/boxes/iso-base-media/stsd/stsd.d.ts +4 -2
  42. package/dist/boxes/iso-base-media/stsd/stsd.js +6 -2
  43. package/dist/boxes/iso-base-media/stsd/stss.d.ts +13 -0
  44. package/dist/boxes/iso-base-media/stsd/stss.js +28 -0
  45. package/dist/boxes/iso-base-media/stsd/stsz.d.ts +21 -0
  46. package/dist/boxes/iso-base-media/stsd/stsz.js +44 -0
  47. package/dist/boxes/iso-base-media/stsd/stts.d.ts +15 -0
  48. package/dist/boxes/iso-base-media/stsd/stts.js +35 -0
  49. package/dist/boxes/iso-base-media/tkhd.d.ts +3 -0
  50. package/dist/boxes/iso-base-media/tkhd.js +41 -14
  51. package/dist/boxes/iso-base-media/trak/trak.d.ts +4 -2
  52. package/dist/boxes/iso-base-media/trak/trak.js +4 -2
  53. package/dist/boxes/iso-base-media/void-box.d.ts +4 -0
  54. package/dist/boxes/iso-base-media/void-box.js +2 -0
  55. package/dist/boxes/webm/allowed-partial-segments.d.ts +1 -0
  56. package/dist/boxes/webm/allowed-partial-segments.js +4 -0
  57. package/dist/boxes/webm/av1-codec-private.d.ts +2 -0
  58. package/dist/boxes/webm/av1-codec-private.js +95 -0
  59. package/dist/boxes/webm/bitstream/av1/bitstream-frame-header.d.ts +14 -0
  60. package/dist/boxes/webm/bitstream/av1/bitstream-frame-header.js +67 -0
  61. package/dist/boxes/webm/bitstream/av1/bitstream-frame.d.ts +11 -0
  62. package/dist/boxes/webm/bitstream/av1/bitstream-frame.js +14 -0
  63. package/dist/boxes/webm/bitstream/av1/chroma-sample-position.d.ts +6 -0
  64. package/dist/boxes/webm/bitstream/av1/chroma-sample-position.js +9 -0
  65. package/dist/boxes/webm/bitstream/av1/color-config.d.ts +16 -0
  66. package/dist/boxes/webm/bitstream/av1/color-config.js +103 -0
  67. package/dist/boxes/webm/bitstream/av1/color-primaries.d.ts +14 -0
  68. package/dist/boxes/webm/bitstream/av1/color-primaries.js +17 -0
  69. package/dist/boxes/webm/bitstream/av1/decoder-model-info.d.ts +9 -0
  70. package/dist/boxes/webm/bitstream/av1/decoder-model-info.js +17 -0
  71. package/dist/boxes/webm/bitstream/av1/frame.d.ts +0 -0
  72. package/dist/boxes/webm/bitstream/av1/frame.js +1 -0
  73. package/dist/boxes/webm/bitstream/av1/header-segment.d.ts +51 -0
  74. package/dist/boxes/webm/bitstream/av1/header-segment.js +183 -0
  75. package/dist/boxes/webm/bitstream/av1/matrix-coefficients.d.ts +17 -0
  76. package/dist/boxes/webm/bitstream/av1/matrix-coefficients.js +20 -0
  77. package/dist/boxes/webm/bitstream/av1/operating-parameters-info.d.ts +10 -0
  78. package/dist/boxes/webm/bitstream/av1/operating-parameters-info.js +15 -0
  79. package/dist/boxes/webm/bitstream/av1/temporal-point-info.d.ts +5 -0
  80. package/dist/boxes/webm/bitstream/av1/temporal-point-info.js +8 -0
  81. package/dist/boxes/webm/bitstream/av1/timing-info.d.ts +8 -0
  82. package/dist/boxes/webm/bitstream/av1/timing-info.js +20 -0
  83. package/dist/boxes/webm/bitstream/av1/transfer-characteristics.d.ts +21 -0
  84. package/dist/boxes/webm/bitstream/av1/transfer-characteristics.js +24 -0
  85. package/dist/boxes/webm/bitstream/av1/uvlc.d.ts +2 -0
  86. package/dist/boxes/webm/bitstream/av1/uvlc.js +20 -0
  87. package/dist/boxes/webm/bitstream/av1.d.ts +20 -0
  88. package/dist/boxes/webm/bitstream/av1.js +118 -0
  89. package/dist/boxes/webm/bitstream/h264/get-h264-descriptor.d.ts +0 -0
  90. package/dist/boxes/webm/bitstream/h264/get-h264-descriptor.js +1 -0
  91. package/dist/boxes/webm/description.d.ts +2 -0
  92. package/dist/boxes/webm/description.js +83 -0
  93. package/dist/boxes/webm/get-ready-tracks.d.ts +3 -0
  94. package/dist/boxes/webm/get-ready-tracks.js +29 -0
  95. package/dist/boxes/webm/get-track.d.ts +6 -0
  96. package/dist/boxes/webm/get-track.js +183 -0
  97. package/dist/boxes/webm/parse-webm-header.d.ts +2 -1
  98. package/dist/boxes/webm/parse-webm-header.js +2 -2
  99. package/dist/boxes/webm/segments/all-segments.d.ts +269 -0
  100. package/dist/boxes/webm/segments/all-segments.js +277 -0
  101. package/dist/boxes/webm/segments/duration.d.ts +1 -1
  102. package/dist/boxes/webm/segments/duration.js +13 -9
  103. package/dist/boxes/webm/segments/info.d.ts +2 -1
  104. package/dist/boxes/webm/segments/info.js +12 -4
  105. package/dist/boxes/webm/segments/main.d.ts +0 -2
  106. package/dist/boxes/webm/segments/main.js +0 -11
  107. package/dist/boxes/webm/segments/muxing.d.ts +1 -1
  108. package/dist/boxes/webm/segments/muxing.js +1 -2
  109. package/dist/boxes/webm/segments/parse-children.d.ts +11 -1
  110. package/dist/boxes/webm/segments/parse-children.js +82 -6
  111. package/dist/boxes/webm/segments/seek-head.d.ts +2 -1
  112. package/dist/boxes/webm/segments/seek-head.js +12 -3
  113. package/dist/boxes/webm/segments/seek-position.d.ts +1 -1
  114. package/dist/boxes/webm/segments/seek-position.js +1 -2
  115. package/dist/boxes/webm/segments/seek.d.ts +7 -2
  116. package/dist/boxes/webm/segments/seek.js +22 -9
  117. package/dist/boxes/webm/segments/track-entry.d.ts +102 -22
  118. package/dist/boxes/webm/segments/track-entry.js +269 -57
  119. package/dist/boxes/webm/segments/tracks.d.ts +2 -1
  120. package/dist/boxes/webm/segments/tracks.js +12 -4
  121. package/dist/boxes/webm/segments/void.d.ts +1 -1
  122. package/dist/boxes/webm/segments/void.js +1 -2
  123. package/dist/boxes/webm/segments/writing.d.ts +1 -1
  124. package/dist/boxes/webm/segments/writing.js +1 -2
  125. package/dist/boxes/webm/segments.d.ts +8 -4
  126. package/dist/boxes/webm/segments.js +176 -40
  127. package/dist/boxes/webm/traversal.d.ts +7 -0
  128. package/dist/boxes/webm/traversal.js +25 -0
  129. package/dist/buffer-iterator.d.ts +16 -1
  130. package/dist/buffer-iterator.js +124 -41
  131. package/dist/combine-uint8array.d.ts +1 -0
  132. package/dist/combine-uint8array.js +13 -0
  133. package/dist/from-fetch.d.ts +2 -0
  134. package/dist/from-fetch.js +54 -0
  135. package/dist/from-node.js +12 -2
  136. package/dist/from-web-file.d.ts +2 -0
  137. package/dist/from-web-file.js +34 -0
  138. package/dist/get-audio-codec.d.ts +19 -0
  139. package/dist/get-audio-codec.js +153 -60
  140. package/dist/get-dimensions.d.ts +8 -2
  141. package/dist/get-dimensions.js +13 -91
  142. package/dist/get-duration.js +4 -7
  143. package/dist/get-fps.d.ts +4 -3
  144. package/dist/get-fps.js +17 -116
  145. package/dist/get-sample-aspect-ratio.d.ts +37 -0
  146. package/dist/get-sample-aspect-ratio.js +137 -0
  147. package/dist/get-sample-positions.d.ts +22 -0
  148. package/dist/get-sample-positions.js +54 -0
  149. package/dist/get-tracks.d.ts +49 -0
  150. package/dist/get-tracks.js +84 -0
  151. package/dist/get-video-codec.d.ts +2 -0
  152. package/dist/get-video-codec.js +47 -31
  153. package/dist/has-all-info.d.ts +2 -1
  154. package/dist/has-all-info.js +14 -5
  155. package/dist/index.d.ts +1 -0
  156. package/dist/make-hvc1-codec-strings.d.ts +2 -0
  157. package/dist/make-hvc1-codec-strings.js +47 -0
  158. package/dist/options.d.ts +26 -4
  159. package/dist/parse-media.js +76 -20
  160. package/dist/parse-result.d.ts +17 -5
  161. package/dist/parse-video.d.ts +12 -2
  162. package/dist/parse-video.js +15 -6
  163. package/dist/parser-context.d.ts +8 -0
  164. package/dist/parser-context.js +2 -0
  165. package/dist/parser-state.d.ts +23 -0
  166. package/dist/parser-state.js +112 -0
  167. package/dist/reader.d.ts +2 -2
  168. package/dist/traversal.d.ts +56 -0
  169. package/dist/traversal.js +331 -0
  170. package/dist/understand-vorbis.d.ts +1 -0
  171. package/dist/understand-vorbis.js +12 -0
  172. package/dist/webcodec-sample-types.d.ts +21 -0
  173. package/dist/webcodec-sample-types.js +2 -0
  174. package/package.json +10 -2
  175. package/src/add-new-matroska-tracks.ts +23 -0
  176. package/src/boxes/iso-base-media/esds/decoder-specific-config.ts +61 -0
  177. package/src/boxes/iso-base-media/esds/esds-descriptors.ts +33 -2
  178. package/src/boxes/iso-base-media/make-track.ts +157 -0
  179. package/src/boxes/iso-base-media/mdat/mdat.ts +131 -0
  180. package/src/boxes/iso-base-media/moov/moov.ts +8 -3
  181. package/src/boxes/iso-base-media/mvhd.ts +7 -1
  182. package/src/boxes/iso-base-media/process-box.ts +426 -21
  183. package/src/boxes/iso-base-media/stsd/av1c.ts +19 -0
  184. package/src/boxes/iso-base-media/stsd/avcc.ts +36 -0
  185. package/src/boxes/iso-base-media/stsd/colr.ts +49 -0
  186. package/src/boxes/iso-base-media/stsd/ctts.ts +55 -0
  187. package/src/boxes/iso-base-media/stsd/hvcc.ts +32 -0
  188. package/src/boxes/iso-base-media/stsd/keys.ts +2 -0
  189. package/src/boxes/iso-base-media/stsd/mebx.ts +8 -3
  190. package/src/boxes/iso-base-media/stsd/pasp.ts +32 -0
  191. package/src/boxes/iso-base-media/stsd/samples.ts +43 -16
  192. package/src/boxes/iso-base-media/stsd/stco.ts +50 -0
  193. package/src/boxes/iso-base-media/stsd/stsc.ts +61 -0
  194. package/src/boxes/iso-base-media/stsd/stsd.ts +10 -3
  195. package/src/boxes/iso-base-media/stsd/stss.ts +47 -0
  196. package/src/boxes/iso-base-media/stsd/stsz.ts +75 -0
  197. package/src/boxes/iso-base-media/tkhd.ts +63 -16
  198. package/src/boxes/iso-base-media/trak/trak.ts +8 -3
  199. package/src/boxes/iso-base-media/void-box.ts +4 -0
  200. package/src/boxes/webm/allowed-partial-segments.ts +1 -0
  201. package/src/boxes/webm/av1-codec-private.ts +113 -0
  202. package/src/boxes/webm/description.ts +101 -0
  203. package/src/boxes/webm/get-ready-tracks.ts +36 -0
  204. package/src/boxes/webm/get-track.ts +250 -0
  205. package/src/boxes/webm/parse-webm-header.ts +6 -2
  206. package/src/boxes/webm/segments/all-segments.ts +285 -0
  207. package/src/boxes/webm/segments/duration.ts +15 -8
  208. package/src/boxes/webm/segments/info.ts +18 -4
  209. package/src/boxes/webm/segments/main.ts +0 -13
  210. package/src/boxes/webm/segments/muxing.ts +1 -1
  211. package/src/boxes/webm/segments/parse-children.ts +132 -9
  212. package/src/boxes/webm/segments/seek-head.ts +17 -4
  213. package/src/boxes/webm/segments/seek-position.ts +1 -2
  214. package/src/boxes/webm/segments/seek.ts +31 -9
  215. package/src/boxes/webm/segments/track-entry.ts +475 -65
  216. package/src/boxes/webm/segments/tracks.ts +17 -7
  217. package/src/boxes/webm/segments/void.ts +4 -2
  218. package/src/boxes/webm/segments/writing.ts +1 -1
  219. package/src/boxes/webm/segments.ts +266 -42
  220. package/src/boxes/webm/traversal.ts +32 -0
  221. package/src/buffer-iterator.ts +155 -40
  222. package/src/combine-uint8array.ts +13 -0
  223. package/src/{from-web.ts → from-fetch.ts} +18 -7
  224. package/src/from-node.ts +15 -2
  225. package/src/from-web-file.ts +39 -0
  226. package/src/get-audio-codec.ts +213 -84
  227. package/src/get-dimensions.ts +25 -132
  228. package/src/get-duration.ts +4 -8
  229. package/src/get-fps.ts +27 -172
  230. package/src/get-sample-aspect-ratio.ts +204 -0
  231. package/src/get-sample-positions.ts +93 -0
  232. package/src/get-tracks.ts +147 -0
  233. package/src/get-video-codec.ts +62 -47
  234. package/src/has-all-info.ts +35 -5
  235. package/src/index.ts +8 -0
  236. package/src/make-hvc1-codec-strings.ts +55 -0
  237. package/src/options.ts +48 -9
  238. package/src/parse-media.ts +112 -25
  239. package/src/parse-result.ts +29 -4
  240. package/src/parse-video.ts +32 -7
  241. package/src/parser-context.ts +9 -0
  242. package/src/parser-state.ts +151 -0
  243. package/src/reader.ts +3 -3
  244. package/src/test/aspect-ratio.test.ts +42 -0
  245. package/src/test/av1.test.ts +108 -0
  246. package/src/test/duration.test.ts +5 -21
  247. package/src/test/matroska.test.ts +350 -31
  248. package/src/test/mvhd.test.ts +6 -1
  249. package/src/test/parse-esds.test.ts +29 -6
  250. package/src/test/parse-stco.test.ts +59 -0
  251. package/src/test/parse-stsc.test.ts +104 -0
  252. package/src/test/parse-stsz.test.ts +57 -0
  253. package/src/test/parse-stts.test.ts +1 -1
  254. package/src/test/parse-video.test.ts +23 -35
  255. package/src/test/parse-webm.test.ts +5 -5
  256. package/src/test/stream-local.test.ts +543 -47
  257. package/src/test/stream-remote.test.ts +15 -13
  258. package/src/test/stream-samples.test.ts +259 -0
  259. package/src/test/stsd.test.ts +60 -8
  260. package/src/test/tkhd.test.ts +4 -1
  261. package/src/traversal.ts +496 -0
  262. package/src/webcodec-sample-types.ts +30 -0
  263. package/tsconfig.json +5 -1
  264. package/tsconfig.tsbuildinfo +1 -1
  265. package/boxes.json +0 -1
  266. /package/src/boxes/iso-base-media/{stts → stsd}/stts.ts +0 -0
@@ -0,0 +1,277 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSegmentName = exports.knownIdsWithThreeLength = exports.knownIdsWithTwoLength = exports.knownIdsWithOneLength = exports.matroskaElements = void 0;
4
+ exports.matroskaElements = {
5
+ EBMLMaxIDLength: '0x42f2',
6
+ EBMLMaxSizeLength: '0x42f3',
7
+ Segment: '0x18538067',
8
+ SeekHead: '0x114d9b74',
9
+ Seek: '0x4dbb',
10
+ SeekID: '0x53ab',
11
+ SeekPosition: '0x53ac',
12
+ Info: '0x1549a966',
13
+ SegmentUUID: '0x73a4',
14
+ SegmentFilename: '0x7384',
15
+ PrevUUID: '0x3cb923',
16
+ PrevFilename: '0x3c83ab',
17
+ NextUUID: '0x3eb923',
18
+ NextFilename: '0x3e83bb',
19
+ SegmentFamily: '0x4444',
20
+ ChapterTranslate: '0x6924',
21
+ ChapterTranslateID: '0x69a5',
22
+ ChapterTranslateCodec: '0x69bf',
23
+ ChapterTranslateEditionUID: '0x69fc',
24
+ TimestampScale: '0x2ad7b1',
25
+ Duration: '0x4489',
26
+ DateUTC: '0x4461',
27
+ Title: '0x7ba9',
28
+ MuxingApp: '0x4d80',
29
+ WritingApp: '0x5741',
30
+ Cluster: '0x1f43b675',
31
+ Timestamp: '0xe7',
32
+ SilentTracks: '0x5854',
33
+ SilentTrackNumber: '0x58d7',
34
+ Position: '0xa7',
35
+ PrevSize: '0xab',
36
+ SimpleBlock: '0xa3',
37
+ BlockGroup: '0xa0',
38
+ Block: '0xa1',
39
+ BlockVirtual: '0xa2',
40
+ BlockAdditions: '0x75a1',
41
+ BlockMore: '0xa6',
42
+ BlockAdditional: '0xa5',
43
+ BlockAddID: '0xee',
44
+ BlockDuration: '0x9b',
45
+ ReferencePriority: '0xfa',
46
+ ReferenceBlock: '0xfb',
47
+ ReferenceVirtual: '0xfd',
48
+ CodecState: '0xa4',
49
+ DiscardPadding: '0x75a2',
50
+ Slices: '0x8e',
51
+ TimeSlice: '0xe8',
52
+ LaceNumber: '0xcc',
53
+ FrameNumber: '0xcd',
54
+ BlockAdditionID: '0xcb',
55
+ Delay: '0xce',
56
+ SliceDuration: '0xcf',
57
+ ReferenceFrame: '0xc8',
58
+ ReferenceOffset: '0xc9',
59
+ ReferenceTimestamp: '0xca',
60
+ EncryptedBlock: '0xaf',
61
+ Tracks: '0x1654ae6b',
62
+ TrackEntry: '0xae',
63
+ TrackNumber: '0xd7',
64
+ TrackUID: '0x73c5',
65
+ TrackType: '0x83',
66
+ FlagEnabled: '0xb9',
67
+ FlagDefault: '0x88',
68
+ FlagForced: '0x55aa',
69
+ FlagHearingImpaired: '0x55ab',
70
+ FlagVisualImpaired: '0x55ac',
71
+ FlagTextDescriptions: '0x55ad',
72
+ FlagOriginal: '0x55ae',
73
+ FlagCommentary: '0x55af',
74
+ FlagLacing: '0x9c',
75
+ MinCache: '0x6de7',
76
+ MaxCache: '0x6df8',
77
+ DefaultDuration: '0x23e383',
78
+ DefaultDecodedFieldDuration: '0x234e7a',
79
+ TrackTimestampScale: '0x23314f',
80
+ TrackOffset: '0x537f',
81
+ MaxBlockAdditionID: '0x55ee',
82
+ BlockAdditionMapping: '0x41e4',
83
+ BlockAddIDValue: '0x41f0',
84
+ BlockAddIDName: '0x41a4',
85
+ BlockAddIDType: '0x41e7',
86
+ BlockAddIDExtraData: '0x41ed',
87
+ Name: '0x536e',
88
+ Language: '0x22b59c',
89
+ LanguageBCP47: '0x22b59d',
90
+ CodecID: '0x86',
91
+ CodecPrivate: '0x63a2',
92
+ CodecName: '0x258688',
93
+ AttachmentLink: '0x7446',
94
+ CodecSettings: '0x3a9697',
95
+ CodecInfoURL: '0x3b4040',
96
+ CodecDownloadURL: '0x26b240',
97
+ CodecDecodeAll: '0xaa',
98
+ TrackOverlay: '0x6fab',
99
+ CodecDelay: '0x56aa',
100
+ SeekPreRoll: '0x56bb',
101
+ TrackTranslate: '0x6624',
102
+ TrackTranslateTrackID: '0x66a5',
103
+ TrackTranslateCodec: '0x66bf',
104
+ TrackTranslateEditionUID: '0x66fc',
105
+ Video: '0xe0',
106
+ FlagInterlaced: '0x9a',
107
+ FieldOrder: '0x9d',
108
+ StereoMode: '0x53b8',
109
+ AlphaMode: '0x53c0',
110
+ OldStereoMode: '0x53b9',
111
+ PixelWidth: '0xb0',
112
+ PixelHeight: '0xba',
113
+ PixelCropBottom: '0x54aa',
114
+ PixelCropTop: '0x54bb',
115
+ PixelCropLeft: '0x54cc',
116
+ PixelCropRight: '0x54dd',
117
+ DisplayWidth: '0x54b0',
118
+ DisplayHeight: '0x54ba',
119
+ DisplayUnit: '0x54b2',
120
+ AspectRatioType: '0x54b3',
121
+ UncompressedFourCC: '0x2eb524',
122
+ GammaValue: '0x2fb523',
123
+ FrameRate: '0x2383e3',
124
+ Colour: '0x55b0',
125
+ MatrixCoefficients: '0x55b1',
126
+ BitsPerChannel: '0x55b2',
127
+ ChromaSubsamplingHorz: '0x55b3',
128
+ ChromaSubsamplingVert: '0x55b4',
129
+ CbSubsamplingHorz: '0x55b5',
130
+ CbSubsamplingVert: '0x55b6',
131
+ ChromaSitingHorz: '0x55b7',
132
+ ChromaSitingVert: '0x55b8',
133
+ Range: '0x55b9',
134
+ TransferCharacteristics: '0x55ba',
135
+ Primaries: '0x55bb',
136
+ MaxCLL: '0x55bc',
137
+ MaxFALL: '0x55bd',
138
+ MasteringMetadata: '0x55d0',
139
+ PrimaryRChromaticityX: '0x55d1',
140
+ PrimaryRChromaticityY: '0x55d2',
141
+ PrimaryGChromaticityX: '0x55d3',
142
+ PrimaryGChromaticityY: '0x55d4',
143
+ PrimaryBChromaticityX: '0x55d5',
144
+ PrimaryBChromaticityY: '0x55d6',
145
+ WhitePointChromaticityX: '0x55d7',
146
+ WhitePointChromaticityY: '0x55d8',
147
+ LuminanceMax: '0x55d9',
148
+ LuminanceMin: '0x55da',
149
+ Projection: '0x7670',
150
+ ProjectionType: '0x7671',
151
+ ProjectionPrivate: '0x7672',
152
+ ProjectionPoseYaw: '0x7673',
153
+ ProjectionPosePitch: '0x7674',
154
+ ProjectionPoseRoll: '0x7675',
155
+ Audio: '0xe1',
156
+ SamplingFrequency: '0xb5',
157
+ OutputSamplingFrequency: '0x78b5',
158
+ Channels: '0x9f',
159
+ ChannelPositions: '0x7d7b',
160
+ BitDepth: '0x6264',
161
+ Emphasis: '0x52f1',
162
+ TrackOperation: '0xe2',
163
+ TrackCombinePlanes: '0xe3',
164
+ TrackPlane: '0xe4',
165
+ TrackPlaneUID: '0xe5',
166
+ TrackPlaneType: '0xe6',
167
+ TrackJoinBlocks: '0xe9',
168
+ TrackJoinUID: '0xed',
169
+ TrickTrackUID: '0xc0',
170
+ TrickTrackSegmentUID: '0xc1',
171
+ TrickTrackFlag: '0xc6',
172
+ TrickMasterTrackUID: '0xc7',
173
+ TrickMasterTrackSegmentUID: '0xc4',
174
+ ContentEncodings: '0x6d80',
175
+ ContentEncoding: '0x6240',
176
+ ContentEncodingOrder: '0x5031',
177
+ ContentEncodingScope: '0x5032',
178
+ ContentEncodingType: '0x5033',
179
+ ContentCompression: '0x5034',
180
+ ContentCompAlgo: '0x4254',
181
+ ContentCompSettings: '0x4255',
182
+ ContentEncryption: '0x5035',
183
+ ContentEncAlgo: '0x47e1',
184
+ ContentEncKeyID: '0x47e2',
185
+ ContentEncAESSettings: '0x47e7',
186
+ AESSettingsCipherMode: '0x47e8',
187
+ ContentSignature: '0x47e3',
188
+ ContentSigKeyID: '0x47e4',
189
+ ContentSigAlgo: '0x47e5',
190
+ ContentSigHashAlgo: '0x47e6',
191
+ Cues: '0x1c53bb6b',
192
+ CuePoint: '0xbb',
193
+ CueTime: '0xb3',
194
+ CueTrackPositions: '0xb7',
195
+ CueTrack: '0xf7',
196
+ CueClusterPosition: '0xf1',
197
+ CueRelativePosition: '0xf0',
198
+ CueDuration: '0xb2',
199
+ CueBlockNumber: '0x5378',
200
+ CueCodecState: '0xea',
201
+ CueReference: '0xdb',
202
+ CueRefTime: '0x96',
203
+ CueRefCluster: '0x97',
204
+ CueRefNumber: '0x535f',
205
+ CueRefCodecState: '0xeb',
206
+ Attachments: '0x1941a469',
207
+ AttachedFile: '0x61a7',
208
+ FileDescription: '0x467e',
209
+ FileName: '0x466e',
210
+ FileMediaType: '0x4660',
211
+ FileData: '0x465c',
212
+ FileUID: '0x46ae',
213
+ FileReferral: '0x4675',
214
+ FileUsedStartTime: '0x4661',
215
+ FileUsedEndTime: '0x4662',
216
+ Chapters: '0x1043a770',
217
+ EditionEntry: '0x45b9',
218
+ EditionUID: '0x45bc',
219
+ EditionFlagHidden: '0x45bd',
220
+ EditionFlagDefault: '0x45db',
221
+ EditionFlagOrdered: '0x45dd',
222
+ EditionDisplay: '0x4520',
223
+ EditionString: '0x4521',
224
+ EditionLanguageIETF: '0x45e4',
225
+ ChapterAtom: '0xb6',
226
+ ChapterUID: '0x73c4',
227
+ ChapterStringUID: '0x5654',
228
+ ChapterTimeStart: '0x91',
229
+ ChapterTimeEnd: '0x92',
230
+ ChapterFlagHidden: '0x98',
231
+ ChapterFlagEnabled: '0x4598',
232
+ ChapterSegmentUUID: '0x6e67',
233
+ ChapterSkipType: '0x4588',
234
+ ChapterSegmentEditionUID: '0x6ebc',
235
+ ChapterPhysicalEquiv: '0x63c3',
236
+ ChapterTrack: '0x8f',
237
+ ChapterTrackUID: '0x89',
238
+ ChapterDisplay: '0x80',
239
+ ChapString: '0x85',
240
+ ChapLanguage: '0x437c',
241
+ ChapLanguageBCP47: '0x437d',
242
+ ChapCountry: '0x437e',
243
+ ChapProcess: '0x6944',
244
+ ChapProcessCodecID: '0x6955',
245
+ ChapProcessPrivate: '0x450d',
246
+ ChapProcessCommand: '0x6911',
247
+ ChapProcessTime: '0x6922',
248
+ ChapProcessData: '0x6933',
249
+ Tags: '0x1254c367',
250
+ Tag: '0x7373',
251
+ Targets: '0x63c0',
252
+ TargetTypeValue: '0x68ca',
253
+ TargetType: '0x63ca',
254
+ TagTrackUID: '0x63c5',
255
+ TagEditionUID: '0x63c9',
256
+ TagChapterUID: '0x63c4',
257
+ TagAttachmentUID: '0x63c6',
258
+ SimpleTag: '0x67c8',
259
+ TagName: '0x45a3',
260
+ TagLanguage: '0x447a',
261
+ TagLanguageBCP47: '0x447b',
262
+ TagDefault: '0x4484',
263
+ TagDefaultBogus: '0x44b4',
264
+ TagString: '0x4487',
265
+ TagBinary: '0x4485',
266
+ Void: '0xec',
267
+ Crc32: '0xbf',
268
+ };
269
+ const matroskaIds = Object.values(exports.matroskaElements);
270
+ exports.knownIdsWithOneLength = matroskaIds.filter((id) => id.length === 4);
271
+ exports.knownIdsWithTwoLength = matroskaIds.filter((id) => id.length === 6);
272
+ exports.knownIdsWithThreeLength = matroskaIds.filter((id) => id.length === 8);
273
+ const getSegmentName = (id) => {
274
+ var _a;
275
+ return (_a = Object.entries(exports.matroskaElements).find(([, value]) => value === id)) === null || _a === void 0 ? void 0 : _a[0];
276
+ };
277
+ exports.getSegmentName = getSegmentName;
@@ -3,4 +3,4 @@ export type DurationSegment = {
3
3
  type: 'duration-segment';
4
4
  duration: number;
5
5
  };
6
- export declare const parseDurationSegment: (iterator: BufferIterator) => DurationSegment;
6
+ export declare const parseDurationSegment: (iterator: BufferIterator, length: number) => DurationSegment;
@@ -1,15 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseDurationSegment = void 0;
4
- const parseDurationSegment = (iterator) => {
5
- const length = iterator.getVint();
6
- if (length !== 8) {
7
- throw new Error('Expected duration segment to be 8 bytes');
4
+ const parseDurationSegment = (iterator, length) => {
5
+ if (length === 8) {
6
+ return {
7
+ type: 'duration-segment',
8
+ duration: iterator.getFloat64(),
9
+ };
8
10
  }
9
- const duration = iterator.getFloat64();
10
- return {
11
- type: 'duration-segment',
12
- duration,
13
- };
11
+ if (length === 4) {
12
+ return {
13
+ type: 'duration-segment',
14
+ duration: iterator.getFloat32(),
15
+ };
16
+ }
17
+ throw new Error('Expected duration segment to be 4 or 8 bytes, but it is ' + length);
14
18
  };
15
19
  exports.parseDurationSegment = parseDurationSegment;
@@ -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 InfoSegment = {
4
5
  type: 'info-segment';
5
6
  length: number;
6
7
  children: MatroskaSegment[];
7
8
  };
8
- export declare const parseInfoSegment: (iterator: BufferIterator) => InfoSegment;
9
+ export declare const parseInfoSegment: (iterator: BufferIterator, length: number, parserContext: ParserContext) => Promise<InfoSegment>;
@@ -2,13 +2,21 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseInfoSegment = void 0;
4
4
  const parse_children_1 = require("./parse-children");
5
- const parseInfoSegment = (iterator) => {
6
- const length = iterator.getVint();
7
- const children = (0, parse_children_1.expectChildren)(iterator, length);
5
+ const parseInfoSegment = 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
+ }
8
16
  return {
9
17
  type: 'info-segment',
10
18
  length,
11
- children,
19
+ children: children.segments,
12
20
  };
13
21
  };
14
22
  exports.parseInfoSegment = parseInfoSegment;
@@ -1,7 +1,5 @@
1
- import type { BufferIterator } from '../../../buffer-iterator';
2
1
  import { type MatroskaSegment } from '../segments';
3
2
  export type MainSegment = {
4
3
  type: 'main-segment';
5
4
  children: MatroskaSegment[];
6
5
  };
7
- export declare const parseMainSegment: (iterator: BufferIterator) => MainSegment;
@@ -1,13 +1,2 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseMainSegment = void 0;
4
- const parse_children_1 = require("./parse-children");
5
- const parseMainSegment = (iterator) => {
6
- const length = iterator.getVint();
7
- const children = (0, parse_children_1.expectChildren)(iterator, length);
8
- return {
9
- type: 'main-segment',
10
- children,
11
- };
12
- };
13
- exports.parseMainSegment = parseMainSegment;
@@ -3,4 +3,4 @@ export type MuxingAppSegment = {
3
3
  type: 'muxing-app-segment';
4
4
  value: string;
5
5
  };
6
- export declare const parseMuxingSegment: (iterator: BufferIterator) => MuxingAppSegment;
6
+ export declare const parseMuxingSegment: (iterator: BufferIterator, length: number) => MuxingAppSegment;
@@ -1,8 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseMuxingSegment = void 0;
4
- const parseMuxingSegment = (iterator) => {
5
- const length = iterator.getVint();
4
+ const parseMuxingSegment = (iterator, length) => {
6
5
  const value = iterator.getByteString(length);
7
6
  return {
8
7
  type: 'muxing-app-segment',
@@ -1,3 +1,13 @@
1
1
  import type { BufferIterator } from '../../../buffer-iterator';
2
+ import type { ParseResult } from '../../../parse-result';
3
+ import type { ParserContext } from '../../../parser-context';
2
4
  import type { MatroskaSegment } from '../segments';
3
- export declare const expectChildren: (iterator: BufferIterator, length: number) => MatroskaSegment[];
5
+ type WrapChildren = (segments: MatroskaSegment[]) => MatroskaSegment;
6
+ export declare const expectChildren: ({ iterator, length, initialChildren, wrap, parserContext, }: {
7
+ iterator: BufferIterator;
8
+ length: number;
9
+ initialChildren: MatroskaSegment[];
10
+ wrap: WrapChildren | null;
11
+ parserContext: ParserContext;
12
+ }) => Promise<ParseResult>;
13
+ export {};
@@ -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;