@remotion/media-parser 4.0.208 → 4.0.210

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 (215) hide show
  1. package/buffer.js +2 -0
  2. package/dist/boxes/iso-base-media/get-sample-positions-from-track.js +1 -1
  3. package/dist/boxes/iso-base-media/make-track.js +14 -2
  4. package/dist/boxes/iso-base-media/mdat/mdat.d.ts +2 -1
  5. package/dist/boxes/iso-base-media/mdat/mdat.js +8 -3
  6. package/dist/boxes/iso-base-media/moov/moov.d.ts +2 -1
  7. package/dist/boxes/iso-base-media/moov/moov.js +2 -1
  8. package/dist/boxes/iso-base-media/process-box.d.ts +6 -3
  9. package/dist/boxes/iso-base-media/process-box.js +20 -5
  10. package/dist/boxes/iso-base-media/stsd/avcc.d.ts +1 -1
  11. package/dist/boxes/iso-base-media/stsd/avcc.js +2 -2
  12. package/dist/boxes/iso-base-media/stsd/ctts.js +2 -5
  13. package/dist/boxes/iso-base-media/stsd/hvcc.d.ts +1 -1
  14. package/dist/boxes/iso-base-media/stsd/hvcc.js +2 -2
  15. package/dist/boxes/iso-base-media/stsd/mebx.d.ts +2 -1
  16. package/dist/boxes/iso-base-media/stsd/mebx.js +2 -1
  17. package/dist/boxes/iso-base-media/stsd/samples.d.ts +4 -2
  18. package/dist/boxes/iso-base-media/stsd/samples.js +69 -11
  19. package/dist/boxes/iso-base-media/stsd/stsd.d.ts +2 -1
  20. package/dist/boxes/iso-base-media/stsd/stsd.js +2 -1
  21. package/dist/boxes/iso-base-media/trak/trak.d.ts +2 -1
  22. package/dist/boxes/iso-base-media/trak/trak.js +2 -1
  23. package/dist/boxes/iso-base-media/traversal.d.ts +44 -0
  24. package/dist/boxes/iso-base-media/traversal.js +211 -0
  25. package/dist/boxes/webm/color.d.ts +4 -0
  26. package/dist/boxes/webm/color.js +120 -0
  27. package/dist/boxes/webm/description.js +1 -1
  28. package/dist/boxes/webm/get-ready-tracks.js +3 -3
  29. package/dist/boxes/webm/get-sample-from-block.js +1 -1
  30. package/dist/boxes/webm/get-track.js +16 -1
  31. package/dist/boxes/webm/make-track.d.ts +9 -0
  32. package/dist/boxes/webm/make-track.js +260 -0
  33. package/dist/boxes/webm/parse-ebml.js +5 -2
  34. package/dist/boxes/webm/segments/all-segments.d.ts +36 -3
  35. package/dist/boxes/webm/segments/all-segments.js +34 -6
  36. package/dist/boxes/webm/traversal.d.ts +26 -1
  37. package/dist/boxes/webm/traversal.js +214 -1
  38. package/dist/buffer-iterator.js +6 -0
  39. package/dist/create/cluster-segment.d.ts +1 -1
  40. package/dist/create/cluster-segment.js +3 -5
  41. package/dist/create/cluster.d.ts +13 -0
  42. package/dist/create/cluster.js +54 -0
  43. package/dist/create/create-media.d.ts +4 -2
  44. package/dist/create/create-media.js +87 -47
  45. package/dist/create/cues.d.ts +0 -0
  46. package/dist/create/cues.js +1 -0
  47. package/dist/create/make-duration-with-padding.d.ts +1 -0
  48. package/dist/create/make-duration-with-padding.js +15 -0
  49. package/dist/create/matroska-cues.d.ts +6 -0
  50. package/dist/create/matroska-cues.js +50 -0
  51. package/dist/create/matroska-info.d.ts +1 -2
  52. package/dist/create/matroska-info.js +3 -11
  53. package/dist/create/matroska-seek.d.ts +6 -0
  54. package/dist/create/matroska-seek.js +32 -0
  55. package/dist/create/matroska-segment.d.ts +1 -0
  56. package/dist/create/matroska-segment.js +3 -2
  57. package/dist/create/matroska-trackentry.d.ts +9 -14
  58. package/dist/create/matroska-trackentry.js +79 -94
  59. package/dist/create/timescale.d.ts +1 -0
  60. package/dist/create/timescale.js +4 -0
  61. package/dist/emit-available-info.d.ts +12 -0
  62. package/dist/emit-available-info.js +133 -0
  63. package/dist/esm/buffer.mjs +57 -0
  64. package/dist/esm/from-fetch.mjs +72 -0
  65. package/dist/esm/from-node.mjs +48 -0
  66. package/dist/esm/from-web-file.mjs +48 -0
  67. package/dist/esm/index.mjs +6689 -0
  68. package/dist/esm/web-fs.mjs +67 -0
  69. package/dist/get-audio-codec.d.ts +5 -5
  70. package/dist/get-audio-codec.js +41 -57
  71. package/dist/get-container.d.ts +4 -0
  72. package/dist/get-container.js +26 -0
  73. package/dist/get-duration.js +1 -1
  74. package/dist/get-fps.js +1 -1
  75. package/dist/get-sample-aspect-ratio.d.ts +1 -1
  76. package/dist/get-sample-aspect-ratio.js +19 -19
  77. package/dist/get-tracks.d.ts +13 -0
  78. package/dist/get-tracks.js +8 -8
  79. package/dist/get-video-codec.d.ts +5 -2
  80. package/dist/get-video-codec.js +111 -21
  81. package/dist/has-all-info.d.ts +2 -2
  82. package/dist/has-all-info.js +23 -9
  83. package/dist/index.d.ts +3 -1
  84. package/dist/options.d.ts +97 -30
  85. package/dist/parse-media.js +43 -62
  86. package/dist/parse-video.d.ts +2 -1
  87. package/dist/parse-video.js +3 -1
  88. package/dist/parser-state.js +1 -2
  89. package/dist/readers/from-fetch.js +24 -4
  90. package/dist/readers/from-node.js +13 -3
  91. package/dist/readers/from-web-file.js +14 -2
  92. package/dist/readers/reader.d.ts +6 -1
  93. package/dist/samples-from-moof.js +1 -1
  94. package/dist/traversal.d.ts +0 -21
  95. package/dist/traversal.js +1 -158
  96. package/dist/truthy.d.ts +3 -0
  97. package/dist/truthy.js +7 -0
  98. package/dist/writers/buffer.d.ts +2 -0
  99. package/dist/writers/buffer.js +58 -0
  100. package/dist/writers/web-fs.d.ts +1 -0
  101. package/dist/writers/web-fs.js +42 -18
  102. package/dist/writers/writer.d.ts +4 -2
  103. package/fetch.js +2 -0
  104. package/node.js +2 -0
  105. package/package.json +43 -8
  106. package/web-file.js +2 -0
  107. package/web-fs.js +2 -0
  108. package/.eslintrc +0 -8
  109. package/input.webm +0 -0
  110. package/src/add-new-matroska-tracks.ts +0 -23
  111. package/src/boxes/iso-base-media/base-type.ts +0 -4
  112. package/src/boxes/iso-base-media/esds/decoder-specific-config.ts +0 -68
  113. package/src/boxes/iso-base-media/esds/esds-descriptors.ts +0 -135
  114. package/src/boxes/iso-base-media/esds/esds.ts +0 -49
  115. package/src/boxes/iso-base-media/ftyp.ts +0 -39
  116. package/src/boxes/iso-base-media/get-sample-positions-from-track.ts +0 -69
  117. package/src/boxes/iso-base-media/make-track.ts +0 -116
  118. package/src/boxes/iso-base-media/mdat/mdat.ts +0 -140
  119. package/src/boxes/iso-base-media/mdhd.ts +0 -59
  120. package/src/boxes/iso-base-media/moov/moov.ts +0 -43
  121. package/src/boxes/iso-base-media/mvhd.ts +0 -114
  122. package/src/boxes/iso-base-media/process-box.ts +0 -748
  123. package/src/boxes/iso-base-media/stsd/av1c.ts +0 -19
  124. package/src/boxes/iso-base-media/stsd/avcc.ts +0 -36
  125. package/src/boxes/iso-base-media/stsd/colr.ts +0 -49
  126. package/src/boxes/iso-base-media/stsd/ctts.ts +0 -64
  127. package/src/boxes/iso-base-media/stsd/hvcc.ts +0 -32
  128. package/src/boxes/iso-base-media/stsd/keys.ts +0 -27
  129. package/src/boxes/iso-base-media/stsd/mebx.ts +0 -54
  130. package/src/boxes/iso-base-media/stsd/pasp.ts +0 -32
  131. package/src/boxes/iso-base-media/stsd/samples.ts +0 -359
  132. package/src/boxes/iso-base-media/stsd/stco.ts +0 -52
  133. package/src/boxes/iso-base-media/stsd/stsc.ts +0 -61
  134. package/src/boxes/iso-base-media/stsd/stsd.ts +0 -55
  135. package/src/boxes/iso-base-media/stsd/stss.ts +0 -47
  136. package/src/boxes/iso-base-media/stsd/stsz.ts +0 -75
  137. package/src/boxes/iso-base-media/stsd/stts.ts +0 -62
  138. package/src/boxes/iso-base-media/tfdt.ts +0 -37
  139. package/src/boxes/iso-base-media/tfhd.ts +0 -66
  140. package/src/boxes/iso-base-media/tkhd.ts +0 -150
  141. package/src/boxes/iso-base-media/to-date.ts +0 -9
  142. package/src/boxes/iso-base-media/trak/trak.ts +0 -43
  143. package/src/boxes/iso-base-media/trun.ts +0 -74
  144. package/src/boxes/iso-base-media/void-box.ts +0 -4
  145. package/src/boxes/webm/allowed-partial-segments.ts +0 -1
  146. package/src/boxes/webm/av1-codec-private.ts +0 -113
  147. package/src/boxes/webm/description.ts +0 -104
  148. package/src/boxes/webm/ebml.ts +0 -98
  149. package/src/boxes/webm/get-ready-tracks.ts +0 -36
  150. package/src/boxes/webm/get-sample-from-block.ts +0 -125
  151. package/src/boxes/webm/get-track.ts +0 -257
  152. package/src/boxes/webm/make-header.ts +0 -253
  153. package/src/boxes/webm/parse-ebml.ts +0 -255
  154. package/src/boxes/webm/parse-webm-header.ts +0 -18
  155. package/src/boxes/webm/segments/all-segments.ts +0 -888
  156. package/src/boxes/webm/segments/block-simple-block-flags.ts +0 -52
  157. package/src/boxes/webm/segments/parse-children.ts +0 -144
  158. package/src/boxes/webm/segments/track-entry.ts +0 -38
  159. package/src/boxes/webm/segments.ts +0 -147
  160. package/src/boxes/webm/traversal.ts +0 -45
  161. package/src/buffer-iterator.ts +0 -548
  162. package/src/create/cluster-segment.ts +0 -62
  163. package/src/create/create-media.ts +0 -172
  164. package/src/create/matroska-header.ts +0 -63
  165. package/src/create/matroska-info.ts +0 -46
  166. package/src/create/matroska-segment.ts +0 -10
  167. package/src/create/matroska-trackentry.ts +0 -325
  168. package/src/get-audio-codec.ts +0 -270
  169. package/src/get-dimensions.ts +0 -47
  170. package/src/get-duration.ts +0 -103
  171. package/src/get-fps.ts +0 -113
  172. package/src/get-sample-aspect-ratio.ts +0 -204
  173. package/src/get-sample-positions.ts +0 -93
  174. package/src/get-tracks.ts +0 -147
  175. package/src/get-video-codec.ts +0 -117
  176. package/src/has-all-info.ts +0 -81
  177. package/src/index.ts +0 -18
  178. package/src/make-hvc1-codec-strings.ts +0 -55
  179. package/src/options.ts +0 -118
  180. package/src/parse-media.ts +0 -183
  181. package/src/parse-result.ts +0 -79
  182. package/src/parse-video.ts +0 -83
  183. package/src/parser-context.ts +0 -10
  184. package/src/parser-state.ts +0 -178
  185. package/src/readers/from-fetch.ts +0 -90
  186. package/src/readers/from-node.ts +0 -51
  187. package/src/readers/from-web-file.ts +0 -49
  188. package/src/readers/reader.ts +0 -15
  189. package/src/samples-from-moof.ts +0 -102
  190. package/src/test/aspect-ratio.test.ts +0 -42
  191. package/src/test/av1.test.ts +0 -108
  192. package/src/test/create-matroska.test.ts +0 -287
  193. package/src/test/duration.test.ts +0 -18
  194. package/src/test/keys.test.ts +0 -47
  195. package/src/test/matroska.test.ts +0 -463
  196. package/src/test/mvhd.test.ts +0 -94
  197. package/src/test/parse-esds.test.ts +0 -98
  198. package/src/test/parse-stco.test.ts +0 -61
  199. package/src/test/parse-stsc.test.ts +0 -104
  200. package/src/test/parse-stsz.test.ts +0 -57
  201. package/src/test/parse-stts.test.ts +0 -38
  202. package/src/test/parse-video.test.ts +0 -101
  203. package/src/test/parse-webm.test.ts +0 -17
  204. package/src/test/samples-from-moof.test.ts +0 -2496
  205. package/src/test/stream-local.test.ts +0 -743
  206. package/src/test/stream-remote.test.ts +0 -59
  207. package/src/test/stream-samples.test.ts +0 -181
  208. package/src/test/stsd.test.ts +0 -265
  209. package/src/test/tkhd.test.ts +0 -87
  210. package/src/traversal.ts +0 -528
  211. package/src/webcodec-sample-types.ts +0 -29
  212. package/src/writers/web-fs.ts +0 -50
  213. package/src/writers/writer.ts +0 -12
  214. package/tsconfig.json +0 -14
  215. package/tsconfig.tsbuildinfo +0 -1
@@ -1,52 +0,0 @@
1
- import type {BufferIterator} from '../../../buffer-iterator';
2
- import {matroskaElements} from './all-segments';
3
-
4
- type BlockFlags = {
5
- invisible: boolean;
6
- lacing: number;
7
- keyframe: boolean | null;
8
- };
9
-
10
- export const parseBlockFlags = (
11
- iterator: BufferIterator,
12
- type:
13
- | (typeof matroskaElements)['Block']
14
- | (typeof matroskaElements)['SimpleBlock'],
15
- ): BlockFlags => {
16
- if (type === matroskaElements.Block) {
17
- iterator.startReadingBits();
18
- // Reserved
19
- iterator.getBits(4);
20
- const invisible = Boolean(iterator.getBits(1));
21
- const lacing = iterator.getBits(2);
22
- // unused
23
- iterator.getBits(1);
24
- iterator.stopReadingBits();
25
- return {
26
- invisible,
27
- lacing,
28
- keyframe: null,
29
- };
30
- }
31
-
32
- if (type === matroskaElements.SimpleBlock) {
33
- iterator.startReadingBits();
34
-
35
- const keyframe = Boolean(iterator.getBits(1));
36
- // Reserved
37
- iterator.getBits(3);
38
- const invisible = Boolean(iterator.getBits(1));
39
- const lacing = iterator.getBits(2);
40
- iterator.getBits(1);
41
-
42
- iterator.stopReadingBits();
43
-
44
- return {
45
- invisible,
46
- lacing,
47
- keyframe,
48
- };
49
- }
50
-
51
- throw new Error('Unexpected type');
52
- };
@@ -1,144 +0,0 @@
1
- import type {BufferIterator} from '../../../buffer-iterator';
2
- import type {ParseResult} from '../../../parse-result';
3
- import type {ParserContext} from '../../../parser-context';
4
- import type {MatroskaSegment} from '../segments';
5
- import {expectSegment} from '../segments';
6
-
7
- type WrapChildren = (segments: MatroskaSegment[]) => MatroskaSegment;
8
-
9
- const processParseResult = ({
10
- parseResult,
11
- children,
12
- wrap,
13
- }: {
14
- children: MatroskaSegment[];
15
- parseResult: ParseResult;
16
- wrap: WrapChildren | null;
17
- }): ParseResult => {
18
- if (parseResult.status === 'incomplete') {
19
- // No need to decrement because expectSegment already does it
20
- return {
21
- status: 'incomplete',
22
- segments: [],
23
- continueParsing: async () => {
24
- const newParseResult = await parseResult.continueParsing();
25
- return processParseResult({
26
- children,
27
- parseResult: newParseResult,
28
- wrap,
29
- });
30
- },
31
- skipTo: null,
32
- };
33
- }
34
-
35
- for (const segment of parseResult.segments) {
36
- children.push(segment as MatroskaSegment);
37
- }
38
-
39
- return {
40
- status: 'done',
41
- segments: wrap ? [wrap(children)] : children,
42
- };
43
- };
44
-
45
- const continueParsingfunction =
46
- ({
47
- result,
48
- iterator,
49
- children,
50
- wrap,
51
- parserContext,
52
- length,
53
- }: {
54
- result: ParseResult;
55
- iterator: BufferIterator;
56
- children: MatroskaSegment[];
57
- wrap: WrapChildren | null;
58
- parserContext: ParserContext;
59
- length: number;
60
- }) =>
61
- async (): Promise<ParseResult> => {
62
- if (result.status !== 'incomplete') {
63
- throw new Error('expected incomplete');
64
- }
65
-
66
- const offset = iterator.counter.getOffset();
67
-
68
- const continued = await result.continueParsing();
69
- if (continued.status === 'incomplete') {
70
- return {
71
- status: 'incomplete',
72
- continueParsing: continueParsingfunction({
73
- result: continued,
74
- iterator,
75
- children,
76
- wrap,
77
- parserContext,
78
- length: length - (iterator.counter.getOffset() - offset),
79
- }),
80
- skipTo: continued.skipTo,
81
- segments: wrap ? [wrap(children)] : children,
82
- };
83
- }
84
-
85
- return expectChildren({
86
- iterator,
87
- length: length - (iterator.counter.getOffset() - offset),
88
- initialChildren: children,
89
- wrap,
90
- parserContext,
91
- });
92
- };
93
-
94
- export const expectChildren = async ({
95
- iterator,
96
- length,
97
- initialChildren,
98
- wrap,
99
- parserContext,
100
- }: {
101
- iterator: BufferIterator;
102
- length: number;
103
- initialChildren: MatroskaSegment[];
104
- wrap: WrapChildren | null;
105
- parserContext: ParserContext;
106
- }): Promise<ParseResult> => {
107
- const children: MatroskaSegment[] = [...initialChildren];
108
- const startOffset = iterator.counter.getOffset();
109
-
110
- while (iterator.counter.getOffset() < startOffset + length) {
111
- if (iterator.bytesRemaining() === 0) {
112
- break;
113
- }
114
-
115
- const parseResult = await expectSegment(iterator, parserContext);
116
-
117
- const child = processParseResult({
118
- children,
119
- parseResult,
120
- wrap,
121
- });
122
-
123
- if (child.status === 'incomplete') {
124
- return {
125
- status: 'incomplete',
126
- continueParsing: continueParsingfunction({
127
- result: child,
128
- iterator,
129
- children,
130
- wrap,
131
- parserContext,
132
- length: length - (iterator.counter.getOffset() - startOffset),
133
- }),
134
- skipTo: child.skipTo,
135
- segments: wrap ? [wrap(children)] : children,
136
- };
137
- }
138
- }
139
-
140
- return {
141
- status: 'done',
142
- segments: wrap ? [wrap(children)] : children,
143
- };
144
- };
@@ -1,38 +0,0 @@
1
- import type {TrackEntry} from './all-segments';
2
-
3
- export type TrackInfo = {
4
- codec: string;
5
- trackTimescale: number | null;
6
- };
7
-
8
- type TrackType =
9
- | 'video'
10
- | 'audio'
11
- | 'complex'
12
- | 'subtitle'
13
- | 'button'
14
- | 'control'
15
- | 'metadata';
16
-
17
- export const trackTypeToString = (trackType: number): TrackType => {
18
- switch (trackType) {
19
- case 1:
20
- return 'video';
21
- case 2:
22
- return 'audio';
23
- case 3:
24
- return 'complex';
25
- case 4:
26
- return 'subtitle';
27
- case 5:
28
- return 'button';
29
- case 6:
30
- return 'control';
31
- case 7:
32
- return 'metadata';
33
- default:
34
- throw new Error(`Unknown track type: ${trackType}`);
35
- }
36
- };
37
-
38
- export type GetTracks = () => TrackEntry[];
@@ -1,147 +0,0 @@
1
- import type {BufferIterator} from '../../buffer-iterator';
2
- import type {ParseResult} from '../../parse-result';
3
- import type {ParserContext} from '../../parser-context';
4
- import {parseEbml, postprocessEbml} from './parse-ebml';
5
- import type {PossibleEbml, TrackEntry} from './segments/all-segments';
6
- import {expectChildren} from './segments/parse-children';
7
-
8
- export type MatroskaSegment = PossibleEbml;
9
-
10
- export type OnTrackEntrySegment = (trackEntry: TrackEntry) => void;
11
-
12
- const parseSegment = async ({
13
- segmentId,
14
- iterator,
15
- length,
16
- parserContext,
17
- headerReadSoFar,
18
- }: {
19
- segmentId: string;
20
- iterator: BufferIterator;
21
- length: number;
22
- parserContext: ParserContext;
23
- headerReadSoFar: number;
24
- }): Promise<Promise<MatroskaSegment> | MatroskaSegment> => {
25
- if (length < 0) {
26
- throw new Error(`Expected length of ${segmentId} to be greater or equal 0`);
27
- }
28
-
29
- iterator.counter.decrement(headerReadSoFar);
30
-
31
- const offset = iterator.counter.getOffset();
32
- const ebml = await parseEbml(iterator, parserContext);
33
- const remapped = await postprocessEbml({offset, ebml, parserContext});
34
-
35
- return remapped;
36
- };
37
-
38
- export const expectSegment = async (
39
- iterator: BufferIterator,
40
- parserContext: ParserContext,
41
- ): Promise<ParseResult> => {
42
- const offset = iterator.counter.getOffset();
43
- if (iterator.bytesRemaining() === 0) {
44
- return {
45
- status: 'incomplete',
46
- segments: [],
47
- continueParsing: () => {
48
- return Promise.resolve(expectSegment(iterator, parserContext));
49
- },
50
- skipTo: null,
51
- };
52
- }
53
-
54
- const segmentId = iterator.getMatroskaSegmentId();
55
-
56
- if (segmentId === null) {
57
- iterator.counter.decrement(iterator.counter.getOffset() - offset);
58
- return {
59
- status: 'incomplete',
60
- segments: [],
61
- continueParsing: () => {
62
- return Promise.resolve(expectSegment(iterator, parserContext));
63
- },
64
- skipTo: null,
65
- };
66
- }
67
-
68
- const offsetBeforeVInt = iterator.counter.getOffset();
69
- const length = iterator.getVint();
70
- const offsetAfterVInt = iterator.counter.getOffset();
71
-
72
- if (length === null) {
73
- iterator.counter.decrement(iterator.counter.getOffset() - offset);
74
- return {
75
- status: 'incomplete',
76
- segments: [],
77
- continueParsing: () => {
78
- return Promise.resolve(expectSegment(iterator, parserContext));
79
- },
80
- skipTo: null,
81
- };
82
- }
83
-
84
- const bytesRemainingNow =
85
- iterator.byteLength() - iterator.counter.getOffset();
86
-
87
- if (segmentId === '0x18538067' || segmentId === '0x1f43b675') {
88
- const main = await expectChildren({
89
- iterator,
90
- length,
91
- initialChildren: [],
92
- wrap:
93
- segmentId === '0x18538067'
94
- ? (s) => ({
95
- type: 'Segment',
96
- value: s,
97
- minVintWidth: offsetAfterVInt - offsetBeforeVInt,
98
- })
99
- : (s) => ({
100
- type: 'Cluster',
101
- value: s,
102
- minVintWidth: offsetAfterVInt - offsetBeforeVInt,
103
- }),
104
- parserContext,
105
- });
106
-
107
- if (main.status === 'incomplete') {
108
- return {
109
- status: 'incomplete',
110
- segments: main.segments,
111
- skipTo: null,
112
- continueParsing: main.continueParsing,
113
- };
114
- }
115
-
116
- return {
117
- status: 'done',
118
- segments: main.segments,
119
- };
120
- }
121
-
122
- if (bytesRemainingNow < length) {
123
- const bytesRead = iterator.counter.getOffset() - offset;
124
- iterator.counter.decrement(bytesRead);
125
- return {
126
- status: 'incomplete',
127
- segments: [],
128
- continueParsing: () => {
129
- return Promise.resolve(expectSegment(iterator, parserContext));
130
- },
131
- skipTo: null,
132
- };
133
- }
134
-
135
- const segment = await parseSegment({
136
- segmentId,
137
- iterator,
138
- length,
139
- parserContext,
140
- headerReadSoFar: iterator.counter.getOffset() - offset,
141
- });
142
-
143
- return {
144
- status: 'done',
145
- segments: [segment],
146
- };
147
- };
@@ -1,45 +0,0 @@
1
- import type {AnySegment} from '../../parse-result';
2
- import type {
3
- CodecIdSegment,
4
- MainSegment,
5
- TrackEntry,
6
- TrackNumberSegment,
7
- } from './segments/all-segments';
8
-
9
- export const getMainSegment = (segments: AnySegment[]): MainSegment | null => {
10
- return segments.find((s) => s.type === 'Segment') as MainSegment | null;
11
- };
12
-
13
- export const getTrackNumber = (track: TrackEntry) => {
14
- const child = track.value.find(
15
- (b) => b.type === 'TrackNumber',
16
- ) as TrackNumberSegment | null;
17
- return child?.value ?? null;
18
- };
19
-
20
- export const getTrackCodec = (track: TrackEntry) => {
21
- const child = track.value.find(
22
- (b) => b.type === 'CodecID',
23
- ) as CodecIdSegment | null;
24
- return child ?? null;
25
- };
26
-
27
- export const getTrackTimestampScale = (track: TrackEntry) => {
28
- const child = track.value.find((b) => b.type === 'TrackTimestampScale');
29
- if (!child) {
30
- return null;
31
- }
32
-
33
- if (child.type !== 'TrackTimestampScale') {
34
- throw new Error('Expected TrackTimestampScale');
35
- }
36
-
37
- return child.value;
38
- };
39
-
40
- export const getTrackByNumber = (tracks: TrackEntry[], id: number) => {
41
- return tracks.find((track) => {
42
- const trackNumber = getTrackNumber(track);
43
- return trackNumber?.value === id;
44
- });
45
- };