@remotion/media-parser 4.0.286 → 4.0.288

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 (243) hide show
  1. package/dist/containers/flac/get-channel-count.d.ts +1 -1
  2. package/dist/containers/flac/get-seeking-byte.d.ts +6 -0
  3. package/dist/containers/flac/get-seeking-byte.js +26 -0
  4. package/dist/containers/flac/parse-meta.d.ts +6 -0
  5. package/dist/containers/flac/parse-meta.js +31 -0
  6. package/dist/containers/flac/seeking-hints.d.ts +15 -0
  7. package/dist/containers/flac/seeking-hints.js +19 -0
  8. package/dist/containers/iso-base-media/collect-sample-positions-from-moof-boxes.d.ts +2 -2
  9. package/dist/containers/iso-base-media/collect-sample-positions-from-moof-boxes.js +6 -3
  10. package/dist/containers/iso-base-media/collect-sample-positions-from-trak.js +7 -5
  11. package/dist/containers/iso-base-media/get-keyframes.js +1 -1
  12. package/dist/containers/iso-base-media/get-sample-positions-from-track.d.ts +2 -2
  13. package/dist/containers/iso-base-media/get-seeking-byte.d.ts +15 -0
  14. package/dist/containers/iso-base-media/{get-seeking-from-mp4.js → get-seeking-byte.js} +16 -2
  15. package/dist/containers/iso-base-media/mdat/mdat.js +13 -5
  16. package/dist/containers/iso-base-media/mdat/postprocess-bytes.d.ts +5 -0
  17. package/dist/containers/iso-base-media/mdat/postprocess-bytes.js +25 -0
  18. package/dist/containers/iso-base-media/process-box.js +5 -3
  19. package/dist/containers/iso-base-media/{get-seeking-info-from-mp4.d.ts → seeking-hints.d.ts} +8 -3
  20. package/dist/containers/iso-base-media/seeking-hints.js +53 -0
  21. package/dist/containers/iso-base-media/should-group-audio-samples.d.ts +6 -0
  22. package/dist/containers/iso-base-media/should-group-audio-samples.js +16 -0
  23. package/dist/containers/iso-base-media/traversal.d.ts +4 -2
  24. package/dist/containers/iso-base-media/traversal.js +6 -5
  25. package/dist/containers/m3u/iterate-over-segment-files.js +23 -20
  26. package/dist/containers/riff/parse-video-section.js +1 -1
  27. package/dist/containers/transport-stream/handle-aac-packet.js +4 -1
  28. package/dist/containers/transport-stream/handle-avc-packet.js +4 -1
  29. package/dist/containers/transport-stream/seeking-hints.d.ts +9 -0
  30. package/dist/containers/transport-stream/seeking-hints.js +26 -0
  31. package/dist/containers/wav/get-seeking-byte.d.ts +2 -2
  32. package/dist/containers/wav/get-seeking-byte.js +2 -2
  33. package/dist/containers/wav/seeking-hints.d.ts +12 -0
  34. package/dist/containers/wav/seeking-hints.js +25 -0
  35. package/dist/containers/webm/seek/get-seeking-byte.d.ts +3 -5
  36. package/dist/containers/webm/seek/get-seeking-byte.js +5 -5
  37. package/dist/containers/webm/seek/seeking-hints.d.ts +10 -0
  38. package/dist/containers/webm/seek/seeking-hints.js +28 -0
  39. package/dist/controller/media-parser-controller.d.ts +3 -0
  40. package/dist/controller/media-parser-controller.js +15 -0
  41. package/dist/download-and-parse-media.js +2 -1
  42. package/dist/emit-available-info.js +1 -1
  43. package/dist/esm/index.mjs +491 -208
  44. package/dist/esm/node-writer.mjs +1 -2
  45. package/dist/esm/node.mjs +1 -2
  46. package/dist/esm/server-worker.mjs +46 -1
  47. package/dist/esm/universal.mjs +2 -4
  48. package/dist/esm/web.mjs +1 -2
  49. package/dist/esm/worker-server-entry.mjs +527 -215
  50. package/dist/esm/worker-web-entry.mjs +526 -213
  51. package/dist/esm/worker.mjs +46 -1
  52. package/dist/{forward-controller.d.ts → forward-controller-pause-resume-abort.d.ts} +1 -1
  53. package/dist/{forward-controller.js → forward-controller-pause-resume-abort.js} +3 -3
  54. package/dist/get-audio-codec.d.ts +1 -0
  55. package/dist/get-audio-codec.js +15 -4
  56. package/dist/get-dimensions.js +1 -1
  57. package/dist/get-duration.js +3 -2
  58. package/dist/get-fps.js +1 -0
  59. package/dist/get-is-hdr.js +2 -2
  60. package/dist/get-keyframes.js +1 -1
  61. package/dist/get-sample-positions-from-mp4.d.ts +4 -1
  62. package/dist/get-sample-positions-from-mp4.js +3 -1
  63. package/dist/get-sample-positions.d.ts +2 -0
  64. package/dist/get-sample-positions.js +2 -0
  65. package/dist/get-seeking-byte.d.ts +7 -5
  66. package/dist/get-seeking-byte.js +13 -12
  67. package/dist/{get-seeking-info.d.ts → get-seeking-hints.d.ts} +7 -3
  68. package/dist/get-seeking-hints.js +35 -0
  69. package/dist/get-tracks.d.ts +4 -4
  70. package/dist/get-tracks.js +8 -6
  71. package/dist/get-video-codec.js +2 -2
  72. package/dist/has-all-info.js +1 -1
  73. package/dist/index.d.ts +31 -3
  74. package/dist/internal-parse-media.js +16 -1
  75. package/dist/iterator/buffer-iterator.js +3 -4
  76. package/dist/metadata/metadata-from-iso.js +1 -0
  77. package/dist/options.d.ts +2 -0
  78. package/dist/parse-media-on-worker-entry.js +51 -1
  79. package/dist/parse-media.js +2 -1
  80. package/dist/samples-from-moof.d.ts +2 -2
  81. package/dist/samples-from-moof.js +7 -8
  82. package/dist/seeking-hints.d.ts +39 -0
  83. package/dist/set-seeking-hints.d.ts +6 -0
  84. package/dist/set-seeking-hints.js +27 -0
  85. package/dist/state/audio-sample-map.d.ts +11 -0
  86. package/dist/state/audio-sample-map.js +21 -0
  87. package/dist/state/has-tracks-section.js +3 -1
  88. package/dist/state/iso-base-media/cached-sample-positions.js +1 -1
  89. package/dist/state/iso-base-media/iso-state.d.ts +18 -2
  90. package/dist/state/iso-base-media/iso-state.js +4 -0
  91. package/dist/state/iso-base-media/lazy-mfra-load.d.ts +3 -0
  92. package/dist/state/iso-base-media/lazy-mfra-load.js +13 -0
  93. package/dist/state/iso-base-media/moov-box.d.ts +7 -2
  94. package/dist/state/iso-base-media/moov-box.js +1 -1
  95. package/dist/state/iso-base-media/precomputed-moof.d.ts +11 -0
  96. package/dist/state/iso-base-media/precomputed-moof.js +28 -0
  97. package/dist/state/iso-base-media/precomputed-tfra.d.ts +6 -0
  98. package/dist/state/iso-base-media/precomputed-tfra.js +17 -0
  99. package/dist/state/keyframes.d.ts +2 -0
  100. package/dist/state/keyframes.js +17 -9
  101. package/dist/state/matroska/lazy-cues-fetch.d.ts +7 -1
  102. package/dist/state/matroska/lazy-cues-fetch.js +21 -0
  103. package/dist/state/matroska/webm.d.ts +7 -0
  104. package/dist/state/matroska/webm.js +9 -1
  105. package/dist/state/parser-state.d.ts +31 -3
  106. package/dist/state/samples-observed/slow-duration-fps.js +0 -3
  107. package/dist/state/transport-stream/observed-pes-header.d.ts +2 -0
  108. package/dist/state/transport-stream/observed-pes-header.js +22 -12
  109. package/dist/state/transport-stream/pts-start-offset.d.ts +4 -1
  110. package/dist/state/transport-stream/pts-start-offset.js +1 -1
  111. package/dist/state/transport-stream/transport-stream.d.ts +5 -1
  112. package/dist/version.d.ts +1 -1
  113. package/dist/version.js +1 -1
  114. package/dist/with-resolvers.d.ts +5 -0
  115. package/dist/work-on-seek-request.js +8 -5
  116. package/dist/worker/{forward-controller.js → forward-controller-to-worker.js} +17 -0
  117. package/dist/worker/serialize-error.d.ts +6 -1
  118. package/dist/worker/serialize-error.js +2 -1
  119. package/dist/worker/worker-types.d.ts +12 -2
  120. package/dist/worker-server.js +16 -5
  121. package/package.json +3 -3
  122. package/dist/containers/iso-base-media/get-mfra-atom.d.ts +0 -9
  123. package/dist/containers/iso-base-media/get-mfra-atom.js +0 -12
  124. package/dist/containers/iso-base-media/get-seeking-from-mp4.d.ts +0 -11
  125. package/dist/containers/iso-base-media/get-seeking-info-from-mp4.js +0 -25
  126. package/dist/containers/iso-base-media/mfra/mfra.d.ts +0 -2
  127. package/dist/containers/iso-base-media/mfra/mfra.js +0 -11
  128. package/dist/containers/transport-stream/get-seeking-info.d.ts +0 -4
  129. package/dist/containers/transport-stream/get-seeking-info.js +0 -17
  130. package/dist/containers/transport-stream/next-pes-header-store.d.ts +0 -6
  131. package/dist/containers/transport-stream/next-pes-header-store.js +0 -18
  132. package/dist/containers/transport-stream/start-offset.d.ts +0 -4
  133. package/dist/containers/transport-stream/start-offset.js +0 -13
  134. package/dist/containers/wav/get-seeking-info.d.ts +0 -7
  135. package/dist/containers/wav/get-seeking-info.js +0 -20
  136. package/dist/containers/wav/parse-video-section.d.ts +0 -5
  137. package/dist/containers/wav/parse-video-section.js +0 -41
  138. package/dist/containers/webm/cues/fetch-web-cues.d.ts +0 -12
  139. package/dist/containers/webm/cues/fetch-web-cues.js +0 -32
  140. package/dist/containers/webm/cues/format-cues.d.ts +0 -8
  141. package/dist/containers/webm/cues/format-cues.js +0 -41
  142. package/dist/containers/webm/cues/get-seeking-byte.d.ts +0 -14
  143. package/dist/containers/webm/cues/get-seeking-byte.js +0 -91
  144. package/dist/containers/webm/fetch-web-cues.d.ts +0 -12
  145. package/dist/containers/webm/fetch-web-cues.js +0 -29
  146. package/dist/containers/webm/get-seeking-byte.d.ts +0 -14
  147. package/dist/containers/webm/get-seeking-byte.js +0 -91
  148. package/dist/containers/webm/get-seeking-info.d.ts +0 -3
  149. package/dist/containers/webm/get-seeking-info.js +0 -17
  150. package/dist/containers/webm/seek/get-seeking-info.d.ts +0 -3
  151. package/dist/containers/webm/seek/get-seeking-info.js +0 -17
  152. package/dist/emitter.d.ts +0 -33
  153. package/dist/emitter.js +0 -65
  154. package/dist/get-sample-positions-from-lpcm.d.ts +0 -3
  155. package/dist/get-sample-positions-from-lpcm.js +0 -46
  156. package/dist/get-seeking-info.js +0 -35
  157. package/dist/media-parser-controller.d.ts +0 -21
  158. package/dist/media-parser-controller.js +0 -38
  159. package/dist/pause-signal.d.ts +0 -11
  160. package/dist/pause-signal.js +0 -38
  161. package/dist/readers/state/aac-state.d.ts +0 -13
  162. package/dist/readers/state/aac-state.js +0 -17
  163. package/dist/readers/state/can-skip-tracks.d.ts +0 -16
  164. package/dist/readers/state/can-skip-tracks.js +0 -60
  165. package/dist/readers/state/current-reader.d.ts +0 -6
  166. package/dist/readers/state/current-reader.js +0 -13
  167. package/dist/readers/state/emitted-fields.d.ts +0 -1
  168. package/dist/readers/state/emitted-fields.js +0 -37
  169. package/dist/readers/state/flac-state.d.ts +0 -4
  170. package/dist/readers/state/flac-state.js +0 -13
  171. package/dist/readers/state/has-tracks-section.d.ts +0 -14
  172. package/dist/readers/state/has-tracks-section.js +0 -37
  173. package/dist/readers/state/images.d.ts +0 -9
  174. package/dist/readers/state/images.js +0 -14
  175. package/dist/readers/state/iso-base-media/cached-sample-positions.d.ts +0 -12
  176. package/dist/readers/state/iso-base-media/cached-sample-positions.js +0 -46
  177. package/dist/readers/state/iso-base-media/iso-state.d.ts +0 -24
  178. package/dist/readers/state/iso-base-media/iso-state.js +0 -20
  179. package/dist/readers/state/iso-base-media/lazy-mfra-load.d.ts +0 -13
  180. package/dist/readers/state/iso-base-media/lazy-mfra-load.js +0 -29
  181. package/dist/readers/state/iso-base-media/moov-box.d.ts +0 -5
  182. package/dist/readers/state/iso-base-media/moov-box.js +0 -13
  183. package/dist/readers/state/keyframes.d.ts +0 -6
  184. package/dist/readers/state/keyframes.js +0 -15
  185. package/dist/readers/state/m3u-state.d.ts +0 -44
  186. package/dist/readers/state/m3u-state.js +0 -124
  187. package/dist/readers/state/may-skip-video-data.d.ts +0 -4
  188. package/dist/readers/state/may-skip-video-data.js +0 -18
  189. package/dist/readers/state/mp3.d.ts +0 -15
  190. package/dist/readers/state/mp3.js +0 -19
  191. package/dist/readers/state/need-samples-for-fields.d.ts +0 -6
  192. package/dist/readers/state/need-samples-for-fields.js +0 -39
  193. package/dist/readers/state/parser-state.d.ts +0 -252
  194. package/dist/readers/state/parser-state.js +0 -124
  195. package/dist/readers/state/riff.d.ts +0 -10
  196. package/dist/readers/state/riff.js +0 -32
  197. package/dist/readers/state/sample-callbacks.d.ts +0 -44
  198. package/dist/readers/state/sample-callbacks.js +0 -118
  199. package/dist/readers/state/seek-infinite-loop.d.ts +0 -5
  200. package/dist/readers/state/seek-infinite-loop.js +0 -22
  201. package/dist/readers/state/slow-duration-fps.d.ts +0 -11
  202. package/dist/readers/state/slow-duration-fps.js +0 -86
  203. package/dist/readers/state/structure.d.ts +0 -15
  204. package/dist/readers/state/structure.js +0 -78
  205. package/dist/readers/state/timings.d.ts +0 -8
  206. package/dist/readers/state/timings.js +0 -13
  207. package/dist/readers/state/transport-stream/last-emitted-sample.d.ts +0 -6
  208. package/dist/readers/state/transport-stream/last-emitted-sample.js +0 -16
  209. package/dist/readers/state/transport-stream/next-pes-header-store.d.ts +0 -6
  210. package/dist/readers/state/transport-stream/next-pes-header-store.js +0 -18
  211. package/dist/readers/state/transport-stream/start-offset.d.ts +0 -4
  212. package/dist/readers/state/transport-stream/start-offset.js +0 -13
  213. package/dist/readers/state/transport-stream/transport-stream.d.ts +0 -19
  214. package/dist/readers/state/transport-stream/transport-stream.js +0 -25
  215. package/dist/readers/state/video-section.d.ts +0 -33
  216. package/dist/readers/state/video-section.js +0 -65
  217. package/dist/readers/state/webm.d.ts +0 -28
  218. package/dist/readers/state/webm.js +0 -109
  219. package/dist/seek-signal.d.ts +0 -19
  220. package/dist/seek-signal.js +0 -24
  221. package/dist/seeking-info.d.ts +0 -31
  222. package/dist/server-worker.module.d.ts +0 -2
  223. package/dist/server-worker.module.js +0 -12
  224. package/dist/state/matroska/lazy-seek-fetch.d.ts +0 -1
  225. package/dist/state/matroska/lazy-seek-fetch.js +0 -5
  226. package/dist/state/matroska.d.ts +0 -0
  227. package/dist/state/matroska.js +0 -1
  228. package/dist/state/slow-duration-fps.d.ts +0 -11
  229. package/dist/state/slow-duration-fps.js +0 -86
  230. package/dist/state/transport-stream/start-offset.d.ts +0 -5
  231. package/dist/state/transport-stream/start-offset.js +0 -13
  232. package/dist/state/transport-stream.d.ts +0 -8
  233. package/dist/state/transport-stream.js +0 -11
  234. package/dist/state/uml.d.ts +0 -32
  235. package/dist/state/uml.js +0 -52
  236. package/dist/state/webm.d.ts +0 -30
  237. package/dist/state/webm.js +0 -109
  238. package/dist/state/work-on-seek-request-options.d.ts +0 -3
  239. package/dist/state/work-on-seek-request-options.js +0 -26
  240. package/dist/worker.module.d.ts +0 -4
  241. package/dist/worker.module.js +0 -12
  242. /package/dist/{seeking-info.js → seeking-hints.js} +0 -0
  243. /package/dist/worker/{forward-controller.d.ts → forward-controller-to-worker.d.ts} +0 -0
@@ -1,2 +1,2 @@
1
1
  import type { BufferIterator } from '../../iterator/buffer-iterator';
2
- export declare const getChannelCount: (iterator: BufferIterator) => 1 | 2 | 8 | 5 | 4 | 6 | 3 | 7;
2
+ export declare const getChannelCount: (iterator: BufferIterator) => 2 | 8 | 1 | 7 | 3 | 4 | 5 | 6;
@@ -0,0 +1,6 @@
1
+ import type { FlacSeekingHints } from './seeking-hints';
2
+ export declare const getSeekingByteForFlac: ({ time, seekingHints, endOfFile, }: {
3
+ time: number;
4
+ seekingHints: FlacSeekingHints;
5
+ endOfFile: boolean;
6
+ }) => number | null;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSeekingByteForFlac = void 0;
4
+ const getSeekingByteForFlac = ({ time, seekingHints, endOfFile, }) => {
5
+ let bestAudioSample;
6
+ for (const hint of seekingHints.audioSampleMap) {
7
+ if (hint.timeInSeconds > time) {
8
+ continue;
9
+ }
10
+ if (hint.timeInSeconds + hint.durationInSeconds < time && !endOfFile) {
11
+ continue;
12
+ }
13
+ if (!bestAudioSample) {
14
+ bestAudioSample = hint;
15
+ continue;
16
+ }
17
+ if (bestAudioSample.timeInSeconds < hint.timeInSeconds) {
18
+ bestAudioSample = hint;
19
+ }
20
+ }
21
+ if (bestAudioSample) {
22
+ return bestAudioSample.offset;
23
+ }
24
+ return null;
25
+ };
26
+ exports.getSeekingByteForFlac = getSeekingByteForFlac;
@@ -0,0 +1,6 @@
1
+ import type { BufferIterator } from '../../iterator/buffer-iterator';
2
+ import type { ParserState } from '../../state/parser-state';
3
+ export declare const parseMetaBlock: ({ iterator, state, }: {
4
+ iterator: BufferIterator;
5
+ state: ParserState;
6
+ }) => Promise<import("../../parse-result").ParseResult>;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseMetaBlock = void 0;
4
+ const parse_metadata_1 = require("./parse-metadata");
5
+ const parse_streaminfo_1 = require("./parse-streaminfo");
6
+ const parse_unknown_block_1 = require("./parse-unknown-block");
7
+ const flacTypes = {
8
+ streaminfo: 0,
9
+ vorbisComment: 4,
10
+ };
11
+ const parseMetaBlock = ({ iterator, state, }) => {
12
+ iterator.startReadingBits();
13
+ const isLastMetadata = iterator.getBits(1);
14
+ const metaBlockType = iterator.getBits(7);
15
+ iterator.stopReadingBits();
16
+ const size = iterator.getUint24();
17
+ if (isLastMetadata) {
18
+ state.mediaSection.addMediaSection({
19
+ start: iterator.counter.getOffset() + size,
20
+ size: state.contentLength - iterator.counter.getOffset() - size,
21
+ });
22
+ }
23
+ if (metaBlockType === flacTypes.streaminfo) {
24
+ return (0, parse_streaminfo_1.parseStreamInfo)({ iterator, state });
25
+ }
26
+ if (metaBlockType === flacTypes.vorbisComment) {
27
+ return (0, parse_metadata_1.parseVorbisComment)({ iterator, state, size });
28
+ }
29
+ return (0, parse_unknown_block_1.parseFlacUnkownBlock)({ iterator, state, size });
30
+ };
31
+ exports.parseMetaBlock = parseMetaBlock;
@@ -0,0 +1,15 @@
1
+ import type { AudioSampleOffset } from '../../state/audio-sample-map';
2
+ import type { FlacState } from '../../state/flac-state';
3
+ import type { ParserState } from '../../state/parser-state';
4
+ export type FlacSeekingHints = {
5
+ type: 'flac-seeking-hints';
6
+ audioSampleMap: AudioSampleOffset[];
7
+ blockingBitStrategy: number | null;
8
+ };
9
+ export declare const getSeekingHintsForFlac: ({ flacState, }: {
10
+ flacState: FlacState;
11
+ }) => FlacSeekingHints;
12
+ export declare const setSeekingHintsForFlac: ({ hints, state, }: {
13
+ hints: FlacSeekingHints;
14
+ state: ParserState;
15
+ }) => void;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setSeekingHintsForFlac = exports.getSeekingHintsForFlac = void 0;
4
+ const getSeekingHintsForFlac = ({ flacState, }) => {
5
+ var _a;
6
+ return {
7
+ type: 'flac-seeking-hints',
8
+ audioSampleMap: flacState.audioSamples.getSamples(),
9
+ blockingBitStrategy: (_a = flacState.getBlockingBitStrategy()) !== null && _a !== void 0 ? _a : null,
10
+ };
11
+ };
12
+ exports.getSeekingHintsForFlac = getSeekingHintsForFlac;
13
+ const setSeekingHintsForFlac = ({ hints, state, }) => {
14
+ if (hints.blockingBitStrategy !== null) {
15
+ state.flac.setBlockingBitStrategy(hints.blockingBitStrategy);
16
+ }
17
+ state.flac.audioSamples.setFromSeekingHints(hints.audioSampleMap);
18
+ };
19
+ exports.setSeekingHintsForFlac = setSeekingHintsForFlac;
@@ -1,8 +1,8 @@
1
- import type { IsoBaseMediaBox } from './base-media-box';
1
+ import type { MoofBox } from '../../state/iso-base-media/precomputed-moof';
2
2
  import type { TfraBox } from './mfra/tfra';
3
3
  import type { TkhdBox } from './tkhd';
4
4
  export declare const collectSamplePositionsFromMoofBoxes: ({ moofBoxes, tfraBoxes, tkhdBox, }: {
5
- moofBoxes: IsoBaseMediaBox[];
5
+ moofBoxes: MoofBox[];
6
6
  tfraBoxes: TfraBox[];
7
7
  tkhdBox: TkhdBox;
8
8
  }) => {
@@ -5,9 +5,12 @@ const samples_from_moof_1 = require("../../samples-from-moof");
5
5
  const collectSamplePositionsFromMoofBoxes = ({ moofBoxes, tfraBoxes, tkhdBox, }) => {
6
6
  const isComplete = tfraBoxes.length > 0 &&
7
7
  tfraBoxes.every((t) => t.entries.length === moofBoxes.length);
8
- const samplePositions_ = moofBoxes.map((m) => {
9
- return (0, samples_from_moof_1.getSamplesFromMoof)({ moofBox: m, trackId: tkhdBox.trackId });
8
+ const samplePositions = moofBoxes.map((m) => {
9
+ return (0, samples_from_moof_1.getSamplesFromMoof)({
10
+ moofBox: m,
11
+ trackId: tkhdBox.trackId,
12
+ });
10
13
  });
11
- return { samplePositions: samplePositions_, isComplete };
14
+ return { samplePositions, isComplete };
12
15
  };
13
16
  exports.collectSamplePositionsFromMoofBoxes = collectSamplePositionsFromMoofBoxes;
@@ -1,17 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.collectSamplePositionsFromTrak = void 0;
4
- const get_audio_codec_1 = require("../../get-audio-codec");
5
4
  const get_fps_1 = require("../../get-fps");
6
5
  const get_sample_positions_1 = require("../../get-sample-positions");
7
6
  const get_sample_positions_from_mp4_1 = require("../../get-sample-positions-from-mp4");
7
+ const should_group_audio_samples_1 = require("./should-group-audio-samples");
8
8
  const traversal_1 = require("./traversal");
9
9
  const collectSamplePositionsFromTrak = (trakBox) => {
10
- const isLpcm = (0, get_audio_codec_1.isLpcmAudioCodec)(trakBox);
10
+ const shouldGroupSamples = (0, should_group_audio_samples_1.shouldGroupAudioSamples)(trakBox);
11
11
  const timescaleAndDuration = (0, get_fps_1.getTimescaleAndDuration)(trakBox);
12
- const isIn24 = (0, get_audio_codec_1.isIn24AudioCodec)(trakBox);
13
- if (isLpcm || isIn24) {
14
- return (0, get_sample_positions_from_mp4_1.getGroupedSamplesPositionsFromMp4)(trakBox);
12
+ if (shouldGroupSamples) {
13
+ return (0, get_sample_positions_from_mp4_1.getGroupedSamplesPositionsFromMp4)({
14
+ trakBox,
15
+ bigEndian: shouldGroupSamples.bigEndian,
16
+ });
15
17
  }
16
18
  const stszBox = (0, traversal_1.getStszBox)(trakBox);
17
19
  const stcoBox = (0, traversal_1.getStcoBox)(trakBox);
@@ -5,7 +5,7 @@ const get_tracks_1 = require("../../get-tracks");
5
5
  const get_sample_positions_from_track_1 = require("./get-sample-positions-from-track");
6
6
  const traversal_1 = require("./traversal");
7
7
  const getKeyframesFromIsoBaseMedia = (state) => {
8
- const { videoTracks } = (0, get_tracks_1.getTracksFromIsoBaseMedia)(state);
8
+ const { videoTracks } = (0, get_tracks_1.getTracksFromIsoBaseMedia)(state, true);
9
9
  const structure = state.structure.getIsoStructure();
10
10
  const moofBoxes = (0, traversal_1.getMoofBoxes)(structure.boxes);
11
11
  const tfraBoxes = (0, traversal_1.getTfraBoxes)(structure);
@@ -1,10 +1,10 @@
1
1
  import type { SamplePosition } from '../../get-sample-positions';
2
- import type { IsoBaseMediaBox } from './base-media-box';
2
+ import type { MoofBox } from '../../state/iso-base-media/precomputed-moof';
3
3
  import type { TfraBox } from './mfra/tfra';
4
4
  import type { TrakBox } from './trak/trak';
5
5
  export declare const getSamplePositionsFromTrack: ({ trakBox, moofBoxes, tfraBoxes, }: {
6
6
  trakBox: TrakBox;
7
- moofBoxes: IsoBaseMediaBox[];
7
+ moofBoxes: MoofBox[];
8
8
  tfraBoxes: TfraBox[];
9
9
  }) => {
10
10
  samplePositions: SamplePosition[];
@@ -0,0 +1,15 @@
1
+ import type { LogLevel } from '../../log';
2
+ import type { IsoBaseMediaStructure } from '../../parse-result';
3
+ import type { IsoBaseMediaSeekingHints } from '../../seeking-hints';
4
+ import type { IsoBaseMediaState } from '../../state/iso-base-media/iso-state';
5
+ import type { StructureState } from '../../state/structure';
6
+ import type { SeekResolution } from '../../work-on-seek-request';
7
+ export declare const getSeekingByteFromIsoBaseMedia: ({ info, time, logLevel, currentPosition, isoState, mp4HeaderSegment, structure, }: {
8
+ info: IsoBaseMediaSeekingHints;
9
+ time: number;
10
+ logLevel: LogLevel;
11
+ currentPosition: number;
12
+ isoState: IsoBaseMediaState;
13
+ mp4HeaderSegment: IsoBaseMediaStructure | null;
14
+ structure: StructureState;
15
+ }) => Promise<SeekResolution>;
@@ -10,13 +10,25 @@ const get_sample_position_bounds_1 = require("./get-sample-position-bounds");
10
10
  const get_sample_positions_from_track_1 = require("./get-sample-positions-from-track");
11
11
  const find_best_segment_from_tfra_1 = require("./mfra/find-best-segment-from-tfra");
12
12
  const traversal_1 = require("./traversal");
13
- const getSeekingByteFromIsoBaseMedia = async ({ info, time, logLevel, currentPosition, isoState, }) => {
13
+ const getSeekingByteFromIsoBaseMedia = async ({ info, time, logLevel, currentPosition, isoState, mp4HeaderSegment, structure, }) => {
14
14
  const tracks = (0, get_tracks_1.getTracksFromMoovBox)(info.moovBox);
15
15
  const allTracks = [
16
16
  ...tracks.videoTracks,
17
17
  ...tracks.audioTracks,
18
18
  ...tracks.otherTracks,
19
19
  ];
20
+ const hasMoov = Boolean((0, traversal_1.getMoovBoxFromState)({
21
+ mp4HeaderSegment,
22
+ structureState: structure,
23
+ isoState,
24
+ mayUsePrecomputed: false,
25
+ }));
26
+ if (!hasMoov) {
27
+ log_1.Log.trace(logLevel, 'No moov box found, must wait');
28
+ return {
29
+ type: 'valid-but-must-wait',
30
+ };
31
+ }
20
32
  const firstVideoTrack = allTracks.find((t) => t.type === 'video');
21
33
  if (!firstVideoTrack) {
22
34
  throw new Error('No video track found');
@@ -52,7 +64,9 @@ const getSeekingByteFromIsoBaseMedia = async ({ info, time, logLevel, currentPos
52
64
  }
53
65
  }
54
66
  }
55
- const atom = await isoState.mfra.triggerLoad();
67
+ const atom = await (info.mfraAlreadyLoaded
68
+ ? Promise.resolve(info.mfraAlreadyLoaded)
69
+ : isoState.mfra.triggerLoad());
56
70
  if (atom) {
57
71
  const moofOffset = (0, find_best_segment_from_tfra_1.findBestSegmentFromTfra)({
58
72
  mfra: atom,
@@ -9,6 +9,7 @@ const cached_sample_positions_1 = require("../../../state/iso-base-media/cached-
9
9
  const may_skip_video_data_1 = require("../../../state/may-skip-video-data");
10
10
  const video_section_1 = require("../../../state/video-section");
11
11
  const get_moov_atom_1 = require("../get-moov-atom");
12
+ const postprocess_bytes_1 = require("./postprocess-bytes");
12
13
  const parseMdatSection = async (state) => {
13
14
  const mediaSection = (0, video_section_1.getCurrentMediaSection)({
14
15
  offset: state.iterator.counter.getOffset(),
@@ -22,13 +23,16 @@ const parseMdatSection = async (state) => {
22
23
  if ((0, may_skip_video_data_1.maySkipVideoData)({ state })) {
23
24
  return (0, skip_1.makeSkip)(endOfMdat);
24
25
  }
25
- const alreadyHas = (0, get_tracks_1.getHasTracks)(state);
26
- if (!alreadyHas) {
26
+ const alreadyHasMoov = (0, get_tracks_1.getHasTracks)(state, true);
27
+ if (!alreadyHasMoov) {
27
28
  const moov = await (0, get_moov_atom_1.getMoovAtom)({
28
29
  endOfMdat,
29
30
  state,
30
31
  });
31
- state.iso.moov.setMoovBox(moov);
32
+ state.iso.moov.setMoovBox({
33
+ moovBox: moov,
34
+ precomputed: false,
35
+ });
32
36
  state.callbacks.tracks.setIsDone(state.logLevel);
33
37
  state.structure.getIsoStructure().boxes.push(moov);
34
38
  return (0, exports.parseMdatSection)(state);
@@ -59,8 +63,12 @@ const parseMdatSection = async (state) => {
59
63
  if (iterator.bytesRemaining() < samplesWithIndex.samplePosition.size) {
60
64
  return null;
61
65
  }
62
- const bytes = iterator.getSlice(samplesWithIndex.samplePosition.size);
63
- const { cts, dts, duration, isKeyframe, offset } = samplesWithIndex.samplePosition;
66
+ const { cts, dts, duration, isKeyframe, offset, bigEndian, chunkSize } = samplesWithIndex.samplePosition;
67
+ const bytes = (0, postprocess_bytes_1.postprocessBytes)({
68
+ bytes: iterator.getSlice(samplesWithIndex.samplePosition.size),
69
+ bigEndian,
70
+ chunkSize,
71
+ });
64
72
  if (samplesWithIndex.track.type === 'audio') {
65
73
  await (0, emit_audio_sample_1.emitAudioSample)({
66
74
  trackId: samplesWithIndex.track.trackId,
@@ -0,0 +1,5 @@
1
+ export declare const postprocessBytes: ({ bytes, bigEndian, chunkSize, }: {
2
+ bytes: Uint8Array;
3
+ bigEndian: boolean;
4
+ chunkSize: number | null;
5
+ }) => Uint8Array<ArrayBufferLike>;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ // Addressing the issue of audio that is stored in big-endian format!
3
+ // If a "twos" atom is present, that is the case.
4
+ // The samples are stored internally in small chunks, like 4 bytes
5
+ // but WebCodecs does not accept such small chunks.
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.postprocessBytes = void 0;
8
+ // When entering this function, they are already concatenated, but in litte endian order.
9
+ // This function reverses the bytes in each chunk, so that they are in big-endian order.
10
+ const postprocessBytes = ({ bytes, bigEndian, chunkSize, }) => {
11
+ if (!bigEndian) {
12
+ return bytes;
13
+ }
14
+ if (chunkSize === null) {
15
+ return bytes;
16
+ }
17
+ const newBuffer = new Uint8Array(bytes);
18
+ for (let i = 0; i < newBuffer.length; i += chunkSize) {
19
+ const slice = newBuffer.slice(i, i + chunkSize);
20
+ slice.reverse();
21
+ newBuffer.set(slice, i);
22
+ }
23
+ return newBuffer;
24
+ };
25
+ exports.postprocessBytes = postprocessBytes;
@@ -33,7 +33,7 @@ const tkhd_1 = require("./tkhd");
33
33
  const trak_1 = require("./trak/trak");
34
34
  const trun_1 = require("./trun");
35
35
  const processBox = async ({ iterator, logLevel, onlyIfMoovAtomExpected, onlyIfMdatAtomExpected, }) => {
36
- var _a;
36
+ var _a, _b;
37
37
  const fileOffset = iterator.counter.getOffset();
38
38
  const { returnToCheckpoint } = iterator.startCheckpoint();
39
39
  const bytesRemaining = iterator.bytesRemaining();
@@ -179,7 +179,9 @@ const processBox = async ({ iterator, logLevel, onlyIfMoovAtomExpected, onlyIfMd
179
179
  iterator.discard(boxSize - 8);
180
180
  return null;
181
181
  }
182
- if (isoState && isoState.moov.getMoovBox()) {
182
+ if (isoState &&
183
+ isoState.moov.getMoovBoxAndPrecomputed() &&
184
+ !((_a = isoState.moov.getMoovBoxAndPrecomputed()) === null || _a === void 0 ? void 0 : _a.precomputed)) {
183
185
  log_1.Log.verbose(logLevel, 'Moov box already parsed, skipping');
184
186
  iterator.discard(boxSize - 8);
185
187
  return null;
@@ -276,7 +278,7 @@ const processBox = async ({ iterator, logLevel, onlyIfMoovAtomExpected, onlyIfMd
276
278
  });
277
279
  }
278
280
  if (boxType === 'moof') {
279
- (_a = onlyIfMoovAtomExpected === null || onlyIfMoovAtomExpected === void 0 ? void 0 : onlyIfMoovAtomExpected.isoState) === null || _a === void 0 ? void 0 : _a.mfra.triggerLoad();
281
+ (_b = onlyIfMoovAtomExpected === null || onlyIfMoovAtomExpected === void 0 ? void 0 : onlyIfMoovAtomExpected.isoState) === null || _b === void 0 ? void 0 : _b.mfra.triggerLoad();
280
282
  }
281
283
  if (boxType === 'mdia' ||
282
284
  boxType === 'minf' ||
@@ -1,11 +1,16 @@
1
1
  import type { IsoBaseMediaStructure } from '../../parse-result';
2
- import type { IsoBaseMediaSeekingInfo } from '../../seeking-info';
2
+ import type { IsoBaseMediaSeekingHints } from '../../seeking-hints';
3
3
  import type { IsoBaseMediaState } from '../../state/iso-base-media/iso-state';
4
+ import type { ParserState } from '../../state/parser-state';
4
5
  import type { StructureState } from '../../state/structure';
5
6
  import type { MediaSectionState } from '../../state/video-section';
6
- export declare const getSeekingInfoFromMp4: ({ structureState, isoState, mp4HeaderSegment, mediaSectionState, }: {
7
+ export declare const getSeekingHintsFromMp4: ({ structureState, isoState, mp4HeaderSegment, mediaSectionState, }: {
7
8
  structureState: StructureState;
8
9
  isoState: IsoBaseMediaState;
9
10
  mp4HeaderSegment: IsoBaseMediaStructure | null;
10
11
  mediaSectionState: MediaSectionState;
11
- }) => IsoBaseMediaSeekingInfo | null;
12
+ }) => IsoBaseMediaSeekingHints | null;
13
+ export declare const setSeekingHintsForMp4: ({ hints, state, }: {
14
+ hints: IsoBaseMediaSeekingHints;
15
+ state: ParserState;
16
+ }) => void;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setSeekingHintsForMp4 = exports.getSeekingHintsFromMp4 = void 0;
4
+ const precomputed_moof_1 = require("../../state/iso-base-media/precomputed-moof");
5
+ const precomputed_tfra_1 = require("../../state/iso-base-media/precomputed-tfra");
6
+ const traversal_1 = require("./traversal");
7
+ const getSeekingHintsFromMp4 = ({ structureState, isoState, mp4HeaderSegment, mediaSectionState, }) => {
8
+ const structure = structureState.getIsoStructure();
9
+ const moovAtom = (0, traversal_1.getMoovBoxFromState)({
10
+ isoState,
11
+ mp4HeaderSegment,
12
+ structureState,
13
+ mayUsePrecomputed: true,
14
+ });
15
+ const moofBoxes = (0, precomputed_moof_1.deduplicateMoofBoxesByOffset)([
16
+ ...isoState.moof.getMoofBoxes(),
17
+ ...(0, traversal_1.getMoofBoxes)(structure.boxes),
18
+ ]);
19
+ const tfraBoxes = (0, precomputed_tfra_1.deduplicateTfraBoxesByOffset)([
20
+ ...isoState.tfra.getTfraBoxes(),
21
+ ...(0, traversal_1.getTfraBoxes)(structure),
22
+ ]);
23
+ if (!moovAtom) {
24
+ return null;
25
+ }
26
+ return {
27
+ type: 'iso-base-media-seeking-hints',
28
+ moovBox: moovAtom,
29
+ moofBoxes,
30
+ tfraBoxes,
31
+ mediaSections: mediaSectionState.getMediaSections(),
32
+ mfraAlreadyLoaded: isoState.mfra.getIfAlreadyLoaded(),
33
+ };
34
+ };
35
+ exports.getSeekingHintsFromMp4 = getSeekingHintsFromMp4;
36
+ // eslint-disable-next-line no-empty-pattern
37
+ const setSeekingHintsForMp4 = ({}) => {
38
+ // state.iso.moov.setMoovBox({
39
+ // moovBox: hints.moovBox,
40
+ // precomputed: true,
41
+ // });
42
+ // state.iso.mfra.setFromSeekingHints(hints);
43
+ // state.iso.moof.setMoofBoxes(hints.moofBoxes);
44
+ // TODO: Make use of these seeking hints and make tests pass
45
+ /*
46
+ // state.iso.tfra.setTfraBoxes(hints.tfraBoxes);
47
+
48
+ for (const mediaSection of hints.mediaSections) {
49
+ // state.mediaSection.addMediaSection(mediaSection);
50
+ }
51
+ */
52
+ };
53
+ exports.setSeekingHintsForMp4 = setSeekingHintsForMp4;
@@ -0,0 +1,6 @@
1
+ import type { TrakBox } from './trak/trak';
2
+ type ShouldGroup = {
3
+ bigEndian: boolean;
4
+ };
5
+ export declare const shouldGroupAudioSamples: (trakBox: TrakBox) => ShouldGroup | null;
6
+ export {};
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.shouldGroupAudioSamples = void 0;
4
+ const get_audio_codec_1 = require("../../get-audio-codec");
5
+ const shouldGroupAudioSamples = (trakBox) => {
6
+ const isLpcm = (0, get_audio_codec_1.isLpcmAudioCodec)(trakBox);
7
+ const isIn24 = (0, get_audio_codec_1.isIn24AudioCodec)(trakBox);
8
+ const isTwos = (0, get_audio_codec_1.isTwosAudioCodec)(trakBox);
9
+ if (isLpcm || isIn24 || isTwos) {
10
+ return {
11
+ bigEndian: isTwos || isIn24,
12
+ };
13
+ }
14
+ return null;
15
+ };
16
+ exports.shouldGroupAudioSamples = shouldGroupAudioSamples;
@@ -1,5 +1,6 @@
1
1
  import type { AnySegment, IsoBaseMediaStructure } from '../../parse-result';
2
2
  import type { IsoBaseMediaState } from '../../state/iso-base-media/iso-state';
3
+ import type { MoofBox } from '../../state/iso-base-media/precomputed-moof';
3
4
  import type { StructureState } from '../../state/structure';
4
5
  import type { IsoBaseMediaBox, RegularBox } from './base-media-box';
5
6
  import type { FtypBox } from './ftyp';
@@ -21,12 +22,13 @@ import type { TrakBox } from './trak/trak';
21
22
  import type { TrunBox } from './trun';
22
23
  export declare const getFtypBox: (segments: AnySegment[]) => FtypBox | null;
23
24
  export declare const getMoovFromFromIsoStructure: (structure: IsoBaseMediaStructure) => MoovBox | null;
24
- export declare const getMoovBoxFromState: ({ structureState, isoState, mp4HeaderSegment, }: {
25
+ export declare const getMoovBoxFromState: ({ structureState, isoState, mp4HeaderSegment, mayUsePrecomputed, }: {
25
26
  structureState: StructureState;
26
27
  isoState: IsoBaseMediaState;
27
28
  mp4HeaderSegment: IsoBaseMediaStructure | null;
29
+ mayUsePrecomputed: boolean;
28
30
  }) => MoovBox | null;
29
- export declare const getMoofBoxes: (main: AnySegment[]) => IsoBaseMediaBox[];
31
+ export declare const getMoofBoxes: (main: AnySegment[]) => MoofBox[];
30
32
  export declare const getMvhdBox: (moovBox: MoovBox) => MvhdBox | null;
31
33
  export declare const getTraks: (moovBox: MoovBox) => TrakBox[];
32
34
  export declare const getTkhdBox: (trakBox: TrakBox) => TkhdBox | null;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getTfraBoxes = exports.getTrunBoxes = exports.getTfhdBox = exports.getTfdtBox = exports.getStssBox = exports.getStscBox = exports.getStszBox = exports.getCttsBox = exports.getSttsBox = exports.getStcoBox = exports.getVideoDescriptors = exports.getStsdBox = exports.getStblBox = exports.getMdhdBox = exports.getMdiaBox = exports.getTkhdBox = exports.getTraks = exports.getMvhdBox = exports.getMoofBoxes = exports.getMoovBoxFromState = exports.getMoovFromFromIsoStructure = exports.getFtypBox = void 0;
4
+ const precomputed_moof_1 = require("../../state/iso-base-media/precomputed-moof");
4
5
  const getFtypBox = (segments) => {
5
6
  const ftypBox = segments.find((s) => s.type === 'ftyp-box');
6
7
  if (!ftypBox || ftypBox.type !== 'ftyp-box') {
@@ -17,10 +18,10 @@ const getMoovFromFromIsoStructure = (structure) => {
17
18
  return moovBox;
18
19
  };
19
20
  exports.getMoovFromFromIsoStructure = getMoovFromFromIsoStructure;
20
- const getMoovBoxFromState = ({ structureState, isoState, mp4HeaderSegment, }) => {
21
- const got = isoState.moov.getMoovBox();
22
- if (got) {
23
- return got;
21
+ const getMoovBoxFromState = ({ structureState, isoState, mp4HeaderSegment, mayUsePrecomputed, }) => {
22
+ const got = isoState.moov.getMoovBoxAndPrecomputed();
23
+ if (got && (mayUsePrecomputed || !got.precomputed)) {
24
+ return got.moovBox;
24
25
  }
25
26
  if (mp4HeaderSegment) {
26
27
  return (0, exports.getMoovFromFromIsoStructure)(mp4HeaderSegment);
@@ -31,7 +32,7 @@ const getMoovBoxFromState = ({ structureState, isoState, mp4HeaderSegment, }) =>
31
32
  exports.getMoovBoxFromState = getMoovBoxFromState;
32
33
  const getMoofBoxes = (main) => {
33
34
  const moofBoxes = main.filter((s) => s.type === 'regular-box' && s.boxType === 'moof');
34
- return moofBoxes;
35
+ return moofBoxes.map((m) => (0, precomputed_moof_1.toMoofBox)(m));
35
36
  };
36
37
  exports.getMoofBoxes = getMoofBoxes;
37
38
  const getMvhdBox = (moovBox) => {
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.iteratorOverSegmentFiles = void 0;
4
4
  const media_parser_controller_1 = require("../../controller/media-parser-controller");
5
- const forward_controller_1 = require("../../forward-controller");
5
+ const forward_controller_pause_resume_abort_1 = require("../../forward-controller-pause-resume-abort");
6
6
  const parse_media_1 = require("../../parse-media");
7
7
  const with_resolvers_1 = require("../../with-resolvers");
8
8
  const get_chunks_1 = require("./get-chunks");
@@ -13,26 +13,29 @@ const iteratorOverSegmentFiles = async ({ structure, onVideoTrack, m3uState, onA
13
13
  let resolver = onInitialProgress;
14
14
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
15
15
  let rejector = (_e) => { };
16
- const childController = (0, media_parser_controller_1.mediaParserController)();
17
- const forwarded = (0, forward_controller_1.forwardMediaParserController)({
18
- childController,
19
- parentController,
20
- });
21
- const makeContinuationFn = () => {
22
- return {
23
- continue() {
24
- const { promise, reject, resolve } = (0, with_resolvers_1.withResolvers)();
25
- resolver = resolve;
26
- rejector = reject;
27
- childController.resume();
28
- return promise;
29
- },
30
- abort() {
31
- childController.abort();
32
- },
33
- };
34
- };
35
16
  for (const chunk of chunks) {
17
+ resolver = onInitialProgress;
18
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
19
+ rejector = (_e) => { };
20
+ const childController = (0, media_parser_controller_1.mediaParserController)();
21
+ const forwarded = (0, forward_controller_pause_resume_abort_1.forwardMediaParserControllerPauseResume)({
22
+ childController,
23
+ parentController,
24
+ });
25
+ const makeContinuationFn = () => {
26
+ return {
27
+ continue() {
28
+ const { promise, reject, resolve } = (0, with_resolvers_1.withResolvers)();
29
+ resolver = resolve;
30
+ rejector = reject;
31
+ childController.resume();
32
+ return promise;
33
+ },
34
+ abort() {
35
+ childController.abort();
36
+ },
37
+ };
38
+ };
36
39
  const isLastChunk = chunk === chunks[chunks.length - 1];
37
40
  await childController._internals.checkForAbortAndPause();
38
41
  const src = readerInterface.createAdjacentFileSource(chunk.url, playlistUrl);
@@ -8,7 +8,7 @@ const parseMediaSection = async (state) => {
8
8
  await (0, parse_movi_1.parseMovi)({
9
9
  state,
10
10
  });
11
- const tracks = (0, get_tracks_1.getTracks)(state);
11
+ const tracks = (0, get_tracks_1.getTracks)(state, false);
12
12
  if (!tracks.videoTracks.some((t) => t.codec === get_tracks_from_avi_1.TO_BE_OVERRIDDEN_LATER) &&
13
13
  !state.callbacks.tracks.getIsDone()) {
14
14
  state.callbacks.tracks.setIsDone(state.logLevel);
@@ -21,7 +21,10 @@ const handleAacPacket = async ({ streamBuffer, programId, offset, sampleCallback
21
21
  const startOffset = makeSamplesStartAtZero
22
22
  ? Math.min(streamBuffer.pesHeader.pts, (_a = streamBuffer.pesHeader.dts) !== null && _a !== void 0 ? _a : Infinity)
23
23
  : 0;
24
- transportStream.startOffset.setOffset(programId, startOffset);
24
+ transportStream.startOffset.setOffset({
25
+ trackId: programId,
26
+ newOffset: startOffset,
27
+ });
25
28
  const track = {
26
29
  type: 'audio',
27
30
  codecPrivate,
@@ -24,7 +24,10 @@ const handleAvcPacket = async ({ streamBuffer, programId, offset, sampleCallback
24
24
  const startOffset = makeSamplesStartAtZero
25
25
  ? Math.min(streamBuffer.pesHeader.pts, (_a = streamBuffer.pesHeader.dts) !== null && _a !== void 0 ? _a : Infinity)
26
26
  : 0;
27
- transportStream.startOffset.setOffset(programId, startOffset);
27
+ transportStream.startOffset.setOffset({
28
+ trackId: programId,
29
+ newOffset: startOffset,
30
+ });
28
31
  const track = {
29
32
  m3uStreamFormat: null,
30
33
  rotation: 0,
@@ -0,0 +1,9 @@
1
+ import type { TransportStreamSeekingHints } from '../../seeking-hints';
2
+ import type { TracksState } from '../../state/has-tracks-section';
3
+ import type { ParserState } from '../../state/parser-state';
4
+ import type { TransportStreamState } from '../../state/transport-stream/transport-stream';
5
+ export declare const getSeekingHintsFromTransportStream: (transportStream: TransportStreamState, tracksState: TracksState) => TransportStreamSeekingHints | null;
6
+ export declare const setSeekingHintsForTransportStream: ({ hints, state, }: {
7
+ hints: TransportStreamSeekingHints;
8
+ state: ParserState;
9
+ }) => void;