@remotion/media-parser 4.0.209 → 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 (213) 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 +2 -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/create/cluster-segment.js +0 -2
  39. package/dist/create/cluster.d.ts +10 -2
  40. package/dist/create/cluster.js +16 -10
  41. package/dist/create/create-media.d.ts +4 -2
  42. package/dist/create/create-media.js +76 -14
  43. package/dist/create/cues.d.ts +0 -0
  44. package/dist/create/cues.js +1 -0
  45. package/dist/create/make-duration-with-padding.d.ts +1 -1
  46. package/dist/create/make-duration-with-padding.js +3 -3
  47. package/dist/create/matroska-cues.d.ts +6 -0
  48. package/dist/create/matroska-cues.js +50 -0
  49. package/dist/create/matroska-info.js +1 -1
  50. package/dist/create/matroska-seek.d.ts +6 -0
  51. package/dist/create/matroska-seek.js +32 -0
  52. package/dist/create/matroska-segment.d.ts +1 -0
  53. package/dist/create/matroska-segment.js +3 -2
  54. package/dist/create/matroska-trackentry.d.ts +9 -14
  55. package/dist/create/matroska-trackentry.js +79 -94
  56. package/dist/emit-available-info.d.ts +12 -0
  57. package/dist/emit-available-info.js +133 -0
  58. package/dist/esm/buffer.mjs +57 -0
  59. package/dist/esm/from-fetch.mjs +72 -0
  60. package/dist/esm/from-node.mjs +48 -0
  61. package/dist/esm/from-web-file.mjs +48 -0
  62. package/dist/esm/index.mjs +6689 -0
  63. package/dist/esm/web-fs.mjs +67 -0
  64. package/dist/get-audio-codec.d.ts +5 -5
  65. package/dist/get-audio-codec.js +41 -57
  66. package/dist/get-container.d.ts +4 -0
  67. package/dist/get-container.js +26 -0
  68. package/dist/get-duration.js +1 -1
  69. package/dist/get-fps.js +1 -1
  70. package/dist/get-sample-aspect-ratio.d.ts +1 -1
  71. package/dist/get-sample-aspect-ratio.js +19 -19
  72. package/dist/get-tracks.d.ts +13 -0
  73. package/dist/get-tracks.js +8 -8
  74. package/dist/get-video-codec.d.ts +5 -2
  75. package/dist/get-video-codec.js +111 -21
  76. package/dist/has-all-info.d.ts +2 -2
  77. package/dist/has-all-info.js +23 -9
  78. package/dist/index.d.ts +3 -1
  79. package/dist/options.d.ts +97 -30
  80. package/dist/parse-media.js +43 -62
  81. package/dist/parse-video.d.ts +2 -1
  82. package/dist/parse-video.js +3 -1
  83. package/dist/parser-state.js +1 -2
  84. package/dist/readers/from-fetch.js +24 -4
  85. package/dist/readers/from-node.js +13 -3
  86. package/dist/readers/from-web-file.js +14 -2
  87. package/dist/readers/reader.d.ts +6 -1
  88. package/dist/samples-from-moof.js +1 -1
  89. package/dist/traversal.d.ts +0 -21
  90. package/dist/traversal.js +1 -158
  91. package/dist/truthy.d.ts +3 -0
  92. package/dist/truthy.js +7 -0
  93. package/dist/writers/buffer.d.ts +2 -0
  94. package/dist/writers/buffer.js +58 -0
  95. package/dist/writers/web-fs.d.ts +1 -0
  96. package/dist/writers/web-fs.js +42 -18
  97. package/dist/writers/writer.d.ts +4 -2
  98. package/fetch.js +2 -0
  99. package/node.js +2 -0
  100. package/package.json +43 -8
  101. package/web-file.js +2 -0
  102. package/web-fs.js +2 -0
  103. package/.eslintrc +0 -8
  104. package/input.webm +0 -0
  105. package/src/add-new-matroska-tracks.ts +0 -23
  106. package/src/boxes/iso-base-media/base-type.ts +0 -4
  107. package/src/boxes/iso-base-media/esds/decoder-specific-config.ts +0 -68
  108. package/src/boxes/iso-base-media/esds/esds-descriptors.ts +0 -135
  109. package/src/boxes/iso-base-media/esds/esds.ts +0 -49
  110. package/src/boxes/iso-base-media/ftyp.ts +0 -39
  111. package/src/boxes/iso-base-media/get-sample-positions-from-track.ts +0 -69
  112. package/src/boxes/iso-base-media/make-track.ts +0 -116
  113. package/src/boxes/iso-base-media/mdat/mdat.ts +0 -140
  114. package/src/boxes/iso-base-media/mdhd.ts +0 -59
  115. package/src/boxes/iso-base-media/moov/moov.ts +0 -43
  116. package/src/boxes/iso-base-media/mvhd.ts +0 -114
  117. package/src/boxes/iso-base-media/process-box.ts +0 -748
  118. package/src/boxes/iso-base-media/stsd/av1c.ts +0 -19
  119. package/src/boxes/iso-base-media/stsd/avcc.ts +0 -36
  120. package/src/boxes/iso-base-media/stsd/colr.ts +0 -49
  121. package/src/boxes/iso-base-media/stsd/ctts.ts +0 -64
  122. package/src/boxes/iso-base-media/stsd/hvcc.ts +0 -32
  123. package/src/boxes/iso-base-media/stsd/keys.ts +0 -27
  124. package/src/boxes/iso-base-media/stsd/mebx.ts +0 -54
  125. package/src/boxes/iso-base-media/stsd/pasp.ts +0 -32
  126. package/src/boxes/iso-base-media/stsd/samples.ts +0 -359
  127. package/src/boxes/iso-base-media/stsd/stco.ts +0 -52
  128. package/src/boxes/iso-base-media/stsd/stsc.ts +0 -61
  129. package/src/boxes/iso-base-media/stsd/stsd.ts +0 -55
  130. package/src/boxes/iso-base-media/stsd/stss.ts +0 -47
  131. package/src/boxes/iso-base-media/stsd/stsz.ts +0 -75
  132. package/src/boxes/iso-base-media/stsd/stts.ts +0 -62
  133. package/src/boxes/iso-base-media/tfdt.ts +0 -37
  134. package/src/boxes/iso-base-media/tfhd.ts +0 -66
  135. package/src/boxes/iso-base-media/tkhd.ts +0 -150
  136. package/src/boxes/iso-base-media/to-date.ts +0 -9
  137. package/src/boxes/iso-base-media/trak/trak.ts +0 -43
  138. package/src/boxes/iso-base-media/trun.ts +0 -74
  139. package/src/boxes/iso-base-media/void-box.ts +0 -4
  140. package/src/boxes/webm/allowed-partial-segments.ts +0 -1
  141. package/src/boxes/webm/av1-codec-private.ts +0 -113
  142. package/src/boxes/webm/description.ts +0 -104
  143. package/src/boxes/webm/ebml.ts +0 -98
  144. package/src/boxes/webm/get-ready-tracks.ts +0 -36
  145. package/src/boxes/webm/get-sample-from-block.ts +0 -125
  146. package/src/boxes/webm/get-track.ts +0 -257
  147. package/src/boxes/webm/make-header.ts +0 -253
  148. package/src/boxes/webm/parse-ebml.ts +0 -259
  149. package/src/boxes/webm/parse-webm-header.ts +0 -18
  150. package/src/boxes/webm/segments/all-segments.ts +0 -888
  151. package/src/boxes/webm/segments/block-simple-block-flags.ts +0 -52
  152. package/src/boxes/webm/segments/parse-children.ts +0 -144
  153. package/src/boxes/webm/segments/track-entry.ts +0 -38
  154. package/src/boxes/webm/segments.ts +0 -147
  155. package/src/boxes/webm/traversal.ts +0 -45
  156. package/src/buffer-iterator.ts +0 -555
  157. package/src/create/cluster-segment.ts +0 -62
  158. package/src/create/cluster.ts +0 -64
  159. package/src/create/create-media.ts +0 -136
  160. package/src/create/make-duration-with-padding.ts +0 -15
  161. package/src/create/matroska-header.ts +0 -63
  162. package/src/create/matroska-info.ts +0 -30
  163. package/src/create/matroska-segment.ts +0 -10
  164. package/src/create/matroska-trackentry.ts +0 -325
  165. package/src/create/timescale.ts +0 -1
  166. package/src/get-audio-codec.ts +0 -270
  167. package/src/get-dimensions.ts +0 -47
  168. package/src/get-duration.ts +0 -103
  169. package/src/get-fps.ts +0 -113
  170. package/src/get-sample-aspect-ratio.ts +0 -204
  171. package/src/get-sample-positions.ts +0 -93
  172. package/src/get-tracks.ts +0 -147
  173. package/src/get-video-codec.ts +0 -117
  174. package/src/has-all-info.ts +0 -81
  175. package/src/index.ts +0 -18
  176. package/src/make-hvc1-codec-strings.ts +0 -55
  177. package/src/options.ts +0 -118
  178. package/src/parse-media.ts +0 -183
  179. package/src/parse-result.ts +0 -79
  180. package/src/parse-video.ts +0 -83
  181. package/src/parser-context.ts +0 -10
  182. package/src/parser-state.ts +0 -178
  183. package/src/readers/from-fetch.ts +0 -90
  184. package/src/readers/from-node.ts +0 -51
  185. package/src/readers/from-web-file.ts +0 -49
  186. package/src/readers/reader.ts +0 -15
  187. package/src/samples-from-moof.ts +0 -102
  188. package/src/test/aspect-ratio.test.ts +0 -42
  189. package/src/test/av1.test.ts +0 -108
  190. package/src/test/create-matroska.test.ts +0 -287
  191. package/src/test/duration.test.ts +0 -18
  192. package/src/test/keys.test.ts +0 -47
  193. package/src/test/matroska.test.ts +0 -463
  194. package/src/test/mvhd.test.ts +0 -94
  195. package/src/test/parse-esds.test.ts +0 -98
  196. package/src/test/parse-stco.test.ts +0 -61
  197. package/src/test/parse-stsc.test.ts +0 -104
  198. package/src/test/parse-stsz.test.ts +0 -57
  199. package/src/test/parse-stts.test.ts +0 -38
  200. package/src/test/parse-video.test.ts +0 -101
  201. package/src/test/parse-webm.test.ts +0 -17
  202. package/src/test/samples-from-moof.test.ts +0 -2496
  203. package/src/test/stream-local.test.ts +0 -743
  204. package/src/test/stream-remote.test.ts +0 -59
  205. package/src/test/stream-samples.test.ts +0 -181
  206. package/src/test/stsd.test.ts +0 -265
  207. package/src/test/tkhd.test.ts +0 -87
  208. package/src/traversal.ts +0 -528
  209. package/src/webcodec-sample-types.ts +0 -29
  210. package/src/writers/web-fs.ts +0 -50
  211. package/src/writers/writer.ts +0 -12
  212. package/tsconfig.json +0 -14
  213. 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
- };