@remotion/media-parser 4.0.298 → 4.0.301

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 (186) hide show
  1. package/dist/add-avc-profile-to-track.d.ts +2 -2
  2. package/dist/add-avc-profile-to-track.js +7 -1
  3. package/dist/codec-data.d.ts +29 -0
  4. package/dist/codec-data.js +2 -0
  5. package/dist/containers/aac/parse-aac.js +2 -3
  6. package/dist/containers/avc/color.d.ts +6 -6
  7. package/dist/containers/avc/color.js +53 -27
  8. package/dist/containers/avc/interpret-sps.d.ts +2 -2
  9. package/dist/containers/avc/interpret-sps.js +2 -2
  10. package/dist/containers/flac/parse-streaminfo.js +2 -3
  11. package/dist/containers/iso-base-media/collect-sample-positions-from-moof-boxes.d.ts +1 -1
  12. package/dist/containers/iso-base-media/color-to-webcodecs-colors.d.ts +2 -0
  13. package/dist/containers/iso-base-media/color-to-webcodecs-colors.js +12 -0
  14. package/dist/containers/iso-base-media/find-keyframe-before-time.d.ts +2 -2
  15. package/dist/containers/iso-base-media/find-track-to-seek.d.ts +5 -5
  16. package/dist/containers/iso-base-media/find-track-to-seek.js +18 -2
  17. package/dist/containers/iso-base-media/get-actual-number-of-channels.d.ts +3 -2
  18. package/dist/containers/iso-base-media/get-actual-number-of-channels.js +14 -3
  19. package/dist/containers/iso-base-media/get-children.d.ts +2 -2
  20. package/dist/containers/iso-base-media/get-keyframes.js +11 -2
  21. package/dist/containers/iso-base-media/get-mfra-seeking-box.d.ts +4 -4
  22. package/dist/containers/iso-base-media/get-moov-atom.js +1 -1
  23. package/dist/containers/iso-base-media/get-seeking-byte-from-fragmented-mp4.d.ts +9 -5
  24. package/dist/containers/iso-base-media/get-seeking-byte-from-fragmented-mp4.js +17 -4
  25. package/dist/containers/iso-base-media/get-seeking-byte.d.ts +2 -2
  26. package/dist/containers/iso-base-media/get-seeking-byte.js +5 -8
  27. package/dist/containers/iso-base-media/make-track.d.ts +2 -2
  28. package/dist/containers/iso-base-media/make-track.js +18 -17
  29. package/dist/containers/iso-base-media/mfra/find-best-segment-from-tfra.d.ts +2 -2
  30. package/dist/containers/iso-base-media/mfra/get-mfra-atom.d.ts +4 -4
  31. package/dist/containers/iso-base-media/mfra/get-mfro-atom.d.ts +4 -4
  32. package/dist/containers/iso-base-media/moov/moov.d.ts +2 -2
  33. package/dist/containers/iso-base-media/process-box.d.ts +5 -5
  34. package/dist/containers/iso-base-media/stsd/mebx.d.ts +2 -2
  35. package/dist/containers/iso-base-media/stsd/samples.d.ts +3 -3
  36. package/dist/containers/iso-base-media/stsd/stsd.d.ts +2 -2
  37. package/dist/containers/iso-base-media/trak/trak.d.ts +2 -2
  38. package/dist/containers/iso-base-media/traversal.d.ts +1 -0
  39. package/dist/containers/iso-base-media/traversal.js +13 -1
  40. package/dist/containers/m3u/after-manifest-fetch.d.ts +6 -6
  41. package/dist/containers/m3u/after-manifest-fetch.js +1 -1
  42. package/dist/containers/m3u/fetch-m3u8-stream.d.ts +2 -2
  43. package/dist/containers/m3u/first-sample-in-m3u-chunk.d.ts +3 -3
  44. package/dist/containers/m3u/first-sample-in-m3u-chunk.js +2 -8
  45. package/dist/containers/m3u/get-seeking-byte.d.ts +3 -3
  46. package/dist/containers/m3u/get-streams.d.ts +6 -6
  47. package/dist/containers/m3u/get-streams.js +9 -9
  48. package/dist/containers/m3u/parse-stream-inf.js +3 -3
  49. package/dist/containers/m3u/process-m3u-chunk.js +3 -3
  50. package/dist/containers/m3u/run-over-m3u.d.ts +2 -2
  51. package/dist/containers/m3u/sample-sorter.d.ts +7 -7
  52. package/dist/containers/m3u/types.d.ts +3 -3
  53. package/dist/containers/mp3/parse-mpeg-header.js +2 -3
  54. package/dist/containers/mp3/seek/audio-sample-from-cbr.d.ts +2 -2
  55. package/dist/containers/riff/get-tracks-from-avi.d.ts +4 -9
  56. package/dist/containers/riff/get-tracks-from-avi.js +19 -20
  57. package/dist/containers/riff/parse-video-section.js +1 -1
  58. package/dist/containers/riff/seek/fetch-idx1.d.ts +4 -4
  59. package/dist/containers/transport-stream/get-tracks.d.ts +2 -2
  60. package/dist/containers/transport-stream/get-tracks.js +1 -5
  61. package/dist/containers/transport-stream/handle-aac-packet.d.ts +4 -4
  62. package/dist/containers/transport-stream/handle-aac-packet.js +5 -4
  63. package/dist/containers/transport-stream/handle-avc-packet.d.ts +4 -4
  64. package/dist/containers/transport-stream/handle-avc-packet.js +10 -4
  65. package/dist/containers/transport-stream/process-audio.d.ts +5 -5
  66. package/dist/containers/transport-stream/process-stream-buffers.d.ts +8 -8
  67. package/dist/containers/transport-stream/process-video.d.ts +5 -5
  68. package/dist/containers/wav/parse-fmt.js +2 -3
  69. package/dist/containers/webm/color.d.ts +2 -2
  70. package/dist/containers/webm/color.js +6 -25
  71. package/dist/containers/webm/get-ready-tracks.d.ts +3 -3
  72. package/dist/containers/webm/get-sample-from-block.d.ts +7 -7
  73. package/dist/containers/webm/make-track.d.ts +3 -3
  74. package/dist/containers/webm/make-track.js +53 -21
  75. package/dist/containers/webm/parse-webm-header.js +5 -0
  76. package/dist/containers/webm/seek/fetch-web-cues.d.ts +4 -4
  77. package/dist/containers/webm/seek/get-seeking-byte.d.ts +2 -2
  78. package/dist/containers/webm/segments.d.ts +2 -2
  79. package/dist/containers/webm/segments.js +1 -1
  80. package/dist/containers/webm/state-for-processing.d.ts +5 -5
  81. package/dist/containers/webm/traversal.js +2 -1
  82. package/dist/controller/emitter.d.ts +2 -3
  83. package/dist/controller/seek-signal.d.ts +3 -9
  84. package/dist/controller/seek-signal.js +2 -2
  85. package/dist/convert-audio-or-video-sample.d.ts +4 -4
  86. package/dist/download-and-parse-media.js +1 -1
  87. package/dist/emit-available-info.js +9 -9
  88. package/dist/errors.d.ts +4 -18
  89. package/dist/errors.js +1 -15
  90. package/dist/esm/index.mjs +654 -544
  91. package/dist/esm/node.mjs +63 -51
  92. package/dist/esm/server-worker.mjs +13 -34
  93. package/dist/esm/universal.mjs +63 -51
  94. package/dist/esm/worker-server-entry.mjs +500 -388
  95. package/dist/esm/worker-web-entry.mjs +437 -337
  96. package/dist/esm/worker.mjs +14 -35
  97. package/dist/fields.d.ts +2 -2
  98. package/dist/file-types/bmp.d.ts +2 -2
  99. package/dist/file-types/detect-file-type.d.ts +2 -1
  100. package/dist/file-types/detect-file-type.js +1 -6
  101. package/dist/file-types/gif.d.ts +2 -0
  102. package/dist/file-types/gif.js +18 -0
  103. package/dist/file-types/index.js +4 -2
  104. package/dist/file-types/png.d.ts +2 -2
  105. package/dist/file-types/webp.d.ts +2 -2
  106. package/dist/get-audio-codec.d.ts +3 -4
  107. package/dist/get-audio-codec.js +44 -23
  108. package/dist/get-dimensions.d.ts +2 -2
  109. package/dist/get-dimensions.js +6 -3
  110. package/dist/get-duration.js +6 -7
  111. package/dist/get-fields-from-callbacks.js +1 -1
  112. package/dist/get-is-hdr.js +6 -5
  113. package/dist/get-sample-aspect-ratio.d.ts +5 -5
  114. package/dist/get-seeking-byte.d.ts +2 -2
  115. package/dist/get-tracks.d.ts +34 -44
  116. package/dist/get-tracks.js +6 -46
  117. package/dist/get-video-codec.d.ts +4 -3
  118. package/dist/get-video-codec.js +6 -6
  119. package/dist/has-all-info.js +1 -1
  120. package/dist/index.d.ts +114 -55
  121. package/dist/index.js +6 -4
  122. package/dist/init-video.js +4 -11
  123. package/dist/internal-parse-media.js +1 -1
  124. package/dist/log.d.ts +6 -6
  125. package/dist/metadata/get-metadata.js +6 -4
  126. package/dist/options.d.ts +19 -23
  127. package/dist/parse-loop.js +2 -2
  128. package/dist/parse-media-on-worker-entry.js +13 -5
  129. package/dist/parse-media.js +1 -1
  130. package/dist/perform-seek.d.ts +4 -4
  131. package/dist/readers/from-fetch.d.ts +2 -2
  132. package/dist/readers/from-node.d.ts +2 -2
  133. package/dist/readers/from-node.js +64 -55
  134. package/dist/readers/from-web-file.d.ts +2 -2
  135. package/dist/readers/reader.d.ts +5 -5
  136. package/dist/readers/universal.d.ts +2 -2
  137. package/dist/readers/web.d.ts +2 -2
  138. package/dist/register-track.d.ts +12 -12
  139. package/dist/remotion-license-acknowledge.d.ts +2 -2
  140. package/dist/seek-backwards.d.ts +4 -4
  141. package/dist/seek-forwards.d.ts +4 -4
  142. package/dist/state/can-skip-tracks.js +1 -1
  143. package/dist/state/emitted-fields.js +1 -1
  144. package/dist/state/has-tracks-section.d.ts +5 -5
  145. package/dist/state/iso-base-media/cached-sample-positions.d.ts +3 -3
  146. package/dist/state/iso-base-media/cached-sample-positions.js +16 -7
  147. package/dist/state/iso-base-media/iso-state.d.ts +4 -4
  148. package/dist/state/iso-base-media/lazy-mfra-load.d.ts +4 -4
  149. package/dist/state/m3u-state.d.ts +11 -11
  150. package/dist/state/matroska/lazy-cues-fetch.d.ts +4 -4
  151. package/dist/state/matroska/webm.d.ts +4 -4
  152. package/dist/state/matroska/webm.js +1 -1
  153. package/dist/state/may-skip-video-data.d.ts +1 -0
  154. package/dist/state/may-skip-video-data.js +23 -2
  155. package/dist/state/need-samples-for-fields.js +1 -1
  156. package/dist/state/parser-state.d.ts +67 -38
  157. package/dist/state/riff/lazy-idx1-fetch.d.ts +4 -4
  158. package/dist/state/riff/sample-counter.d.ts +3 -3
  159. package/dist/state/riff.d.ts +6 -6
  160. package/dist/state/sample-callbacks.d.ts +12 -12
  161. package/dist/state/sample-callbacks.js +2 -2
  162. package/dist/state/samples-observed/slow-duration-fps.d.ts +3 -3
  163. package/dist/state/transport-stream/last-emitted-sample.d.ts +3 -3
  164. package/dist/state/transport-stream/transport-stream.d.ts +2 -2
  165. package/dist/version.d.ts +1 -1
  166. package/dist/version.js +1 -1
  167. package/dist/webcodec-sample-types.d.ts +21 -10
  168. package/dist/work-on-seek-request.d.ts +4 -4
  169. package/dist/work-on-seek-request.js +40 -43
  170. package/dist/worker/serialize-error.d.ts +2 -2
  171. package/dist/worker/serialize-error.js +7 -25
  172. package/dist/worker/worker-types.d.ts +22 -24
  173. package/dist/worker-server.d.ts +2 -2
  174. package/dist/worker-server.js +5 -5
  175. package/dist/writers/writer.d.ts +2 -2
  176. package/package.json +3 -3
  177. package/dist/containers/iso-base-media/sample-positions.d.ts +0 -25
  178. package/dist/containers/iso-base-media/sample-positions.js +0 -37
  179. package/dist/containers/iso-base-media/turn-sample-positions-into-array.d.ts +0 -19
  180. package/dist/containers/iso-base-media/turn-sample-positions-into-array.js +0 -73
  181. package/dist/containers/m3u/iterate-over-segment-files.d.ts +0 -21
  182. package/dist/containers/m3u/iterate-over-segment-files.js +0 -132
  183. package/dist/containers/mp3/audio-sample-from-cbr.d.ts +0 -11
  184. package/dist/containers/mp3/audio-sample-from-cbr.js +0 -35
  185. package/dist/emit-audio-sample.d.ts +0 -12
  186. package/dist/emit-audio-sample.js +0 -11
@@ -5,11 +5,12 @@ const get_audio_codec_1 = require("../../get-audio-codec");
5
5
  const get_fps_1 = require("../../get-fps");
6
6
  const get_sample_aspect_ratio_1 = require("../../get-sample-aspect-ratio");
7
7
  const get_video_codec_1 = require("../../get-video-codec");
8
+ const color_to_webcodecs_colors_1 = require("./color-to-webcodecs-colors");
8
9
  const get_actual_number_of_channels_1 = require("./get-actual-number-of-channels");
9
10
  const get_video_codec_from_iso_track_1 = require("./get-video-codec-from-iso-track");
10
11
  const traversal_1 = require("./traversal");
11
12
  const makeBaseMediaTrack = (trakBox) => {
12
- var _a, _b, _c, _d;
13
+ var _a, _b, _c, _d, _e;
13
14
  const tkhdBox = (0, traversal_1.getTkhdBox)(trakBox);
14
15
  const videoDescriptors = (0, traversal_1.getVideoDescriptors)(trakBox);
15
16
  const timescaleAndDuration = (0, get_fps_1.getTimescaleAndDuration)(trakBox);
@@ -30,10 +31,10 @@ const makeBaseMediaTrack = (trakBox) => {
30
31
  }
31
32
  const { codecString, description } = (0, get_audio_codec_1.getAudioCodecStringFromTrak)(trakBox);
32
33
  const codecPrivate = (_b = (_a = (0, get_audio_codec_1.getCodecPrivateFromTrak)(trakBox)) !== null && _a !== void 0 ? _a : description) !== null && _b !== void 0 ? _b : null;
33
- const codecWithoutConfig = (0, get_audio_codec_1.getAudioCodecFromTrack)(trakBox);
34
+ const codecEnum = (0, get_audio_codec_1.getAudioCodecFromTrack)(trakBox);
34
35
  const actual = (0, get_actual_number_of_channels_1.getActualDecoderParameters)({
35
- audioCodec: codecWithoutConfig,
36
- codecPrivate,
36
+ audioCodec: codecEnum,
37
+ codecPrivate: codecPrivate !== null && codecPrivate !== void 0 ? codecPrivate : null,
37
38
  numberOfChannels,
38
39
  sampleRate,
39
40
  });
@@ -44,10 +45,9 @@ const makeBaseMediaTrack = (trakBox) => {
44
45
  codec: codecString,
45
46
  numberOfChannels: actual.numberOfChannels,
46
47
  sampleRate: actual.sampleRate,
47
- description: (_c = actual.codecPrivate) !== null && _c !== void 0 ? _c : undefined,
48
- trakBox,
49
- codecPrivate: actual.codecPrivate,
50
- codecWithoutConfig,
48
+ description: (_d = (_c = actual.codecPrivate) === null || _c === void 0 ? void 0 : _c.data) !== null && _d !== void 0 ? _d : undefined,
49
+ codecData: actual.codecPrivate,
50
+ codecEnum,
51
51
  };
52
52
  }
53
53
  if (!(0, get_fps_1.trakBoxContainsVideo)(trakBox)) {
@@ -77,6 +77,12 @@ const makeBaseMediaTrack = (trakBox) => {
77
77
  throw new Error('Could not find video codec');
78
78
  }
79
79
  const privateData = (0, get_video_codec_1.getVideoPrivateData)(trakBox);
80
+ const advancedColor = (_e = (0, get_video_codec_1.getIsoBmColrConfig)(trakBox)) !== null && _e !== void 0 ? _e : {
81
+ fullRange: null,
82
+ matrix: null,
83
+ primaries: null,
84
+ transfer: null,
85
+ };
80
86
  const track = {
81
87
  m3uStreamFormat: null,
82
88
  type: 'video',
@@ -93,15 +99,10 @@ const makeBaseMediaTrack = (trakBox) => {
93
99
  displayAspectWidth,
94
100
  displayAspectHeight,
95
101
  rotation,
96
- trakBox,
97
- codecPrivate: privateData,
98
- color: (_d = (0, get_video_codec_1.getIsoBmColrConfig)(trakBox)) !== null && _d !== void 0 ? _d : {
99
- fullRange: null,
100
- matrixCoefficients: null,
101
- primaries: null,
102
- transferCharacteristics: null,
103
- },
104
- codecWithoutConfig: (0, get_video_codec_from_iso_track_1.getVideoCodecFromIsoTrak)(trakBox),
102
+ codecData: privateData,
103
+ colorSpace: (0, color_to_webcodecs_colors_1.mediaParserAdvancedColorToWebCodecsColor)(advancedColor),
104
+ advancedColor,
105
+ codecEnum: (0, get_video_codec_from_iso_track_1.getVideoCodecFromIsoTrak)(trakBox),
105
106
  fps: (0, get_fps_1.getFpsFromMp4TrakBox)(trakBox),
106
107
  };
107
108
  return track;
@@ -1,9 +1,9 @@
1
- import type { AudioTrack, VideoTrack } from '../../../get-tracks';
1
+ import type { MediaParserAudioTrack, MediaParserVideoTrack } from '../../../get-tracks';
2
2
  import type { IsoBaseMediaBox } from '../base-media-box';
3
3
  export declare const findBestSegmentFromTfra: ({ mfra, time, firstTrack, timescale, }: {
4
4
  mfra: IsoBaseMediaBox[];
5
5
  time: number;
6
- firstTrack: VideoTrack | AudioTrack;
6
+ firstTrack: MediaParserVideoTrack | MediaParserAudioTrack;
7
7
  timescale: number;
8
8
  }) => {
9
9
  start: number;
@@ -1,15 +1,15 @@
1
1
  import type { MediaParserController } from '../../../controller/media-parser-controller';
2
2
  import type { PrefetchCache } from '../../../fetch';
3
- import type { LogLevel } from '../../../log';
3
+ import type { MediaParserLogLevel } from '../../../log';
4
4
  import type { ParseMediaSrc } from '../../../options';
5
- import type { ReaderInterface } from '../../../readers/reader';
5
+ import type { MediaParserReaderInterface } from '../../../readers/reader';
6
6
  export declare const getMfraAtom: ({ src, contentLength, readerInterface, controller, parentSize, logLevel, prefetchCache, }: {
7
7
  src: ParseMediaSrc;
8
8
  contentLength: number;
9
- readerInterface: ReaderInterface;
9
+ readerInterface: MediaParserReaderInterface;
10
10
  controller: MediaParserController;
11
11
  parentSize: number;
12
- logLevel: LogLevel;
12
+ logLevel: MediaParserLogLevel;
13
13
  prefetchCache: PrefetchCache;
14
14
  }) => Promise<{
15
15
  startReadingBits: () => void;
@@ -1,13 +1,13 @@
1
1
  import type { MediaParserController } from '../../../controller/media-parser-controller';
2
2
  import type { PrefetchCache } from '../../../fetch';
3
- import type { LogLevel } from '../../../log';
3
+ import type { MediaParserLogLevel } from '../../../log';
4
4
  import type { ParseMediaSrc } from '../../../options';
5
- import type { ReaderInterface } from '../../../readers/reader';
5
+ import type { MediaParserReaderInterface } from '../../../readers/reader';
6
6
  export declare const getMfroAtom: ({ src, contentLength, readerInterface, controller, logLevel, prefetchCache, }: {
7
7
  src: ParseMediaSrc;
8
8
  contentLength: number;
9
- readerInterface: ReaderInterface;
9
+ readerInterface: MediaParserReaderInterface;
10
10
  controller: MediaParserController;
11
- logLevel: LogLevel;
11
+ logLevel: MediaParserLogLevel;
12
12
  prefetchCache: PrefetchCache;
13
13
  }) => Promise<number | null>;
@@ -1,5 +1,5 @@
1
1
  import type { BufferIterator } from '../../../iterator/buffer-iterator';
2
- import type { LogLevel } from '../../../log';
2
+ import type { MediaParserLogLevel } from '../../../log';
3
3
  import type { AnySegment } from '../../../parse-result';
4
4
  import type { BaseBox } from '../base-type';
5
5
  import type { OnlyIfMoovAtomExpected } from '../process-box';
@@ -12,6 +12,6 @@ export declare const parseMoov: ({ offset, size, onlyIfMoovAtomExpected, iterato
12
12
  size: number;
13
13
  onlyIfMoovAtomExpected: OnlyIfMoovAtomExpected;
14
14
  iterator: BufferIterator;
15
- logLevel: LogLevel;
15
+ logLevel: MediaParserLogLevel;
16
16
  contentLength: number;
17
17
  }) => Promise<MoovBox>;
@@ -1,17 +1,17 @@
1
1
  import type { BufferIterator } from '../../iterator/buffer-iterator';
2
- import type { LogLevel } from '../../log';
2
+ import type { MediaParserLogLevel } from '../../log';
3
3
  import type { FetchMoreData } from '../../skip';
4
4
  import type { TracksState } from '../../state/has-tracks-section';
5
5
  import type { IsoBaseMediaState } from '../../state/iso-base-media/iso-state';
6
6
  import type { CallbacksState } from '../../state/sample-callbacks';
7
7
  import type { MediaSectionState } from '../../state/video-section';
8
- import type { OnAudioTrack, OnVideoTrack } from '../../webcodec-sample-types';
8
+ import type { MediaParserOnAudioTrack, MediaParserOnVideoTrack } from '../../webcodec-sample-types';
9
9
  import type { IsoBaseMediaBox } from './base-media-box';
10
10
  export type OnlyIfMoovAtomExpected = {
11
11
  tracks: TracksState;
12
12
  isoState: IsoBaseMediaState | null;
13
- onVideoTrack: OnVideoTrack | null;
14
- onAudioTrack: OnAudioTrack | null;
13
+ onVideoTrack: MediaParserOnVideoTrack | null;
14
+ onAudioTrack: MediaParserOnAudioTrack | null;
15
15
  registerVideoSampleCallback: CallbacksState['registerVideoSampleCallback'];
16
16
  registerAudioSampleCallback: CallbacksState['registerAudioSampleCallback'];
17
17
  };
@@ -29,7 +29,7 @@ type ProcessBoxResult = {
29
29
  };
30
30
  export declare const processBox: ({ iterator, logLevel, onlyIfMoovAtomExpected, onlyIfMdatAtomExpected, contentLength, }: {
31
31
  iterator: BufferIterator;
32
- logLevel: LogLevel;
32
+ logLevel: MediaParserLogLevel;
33
33
  onlyIfMoovAtomExpected: OnlyIfMoovAtomExpected | null;
34
34
  onlyIfMdatAtomExpected: OnlyIfMdatAtomExpected | null;
35
35
  contentLength: number;
@@ -1,5 +1,5 @@
1
1
  import type { BufferIterator } from '../../../iterator/buffer-iterator';
2
- import type { LogLevel } from '../../../log';
2
+ import type { MediaParserLogLevel } from '../../../log';
3
3
  import type { AnySegment } from '../../../parse-result';
4
4
  import type { BaseBox } from '../base-type';
5
5
  export interface MebxBox extends BaseBox {
@@ -12,6 +12,6 @@ export declare const parseMebx: ({ offset, size, iterator, logLevel, contentLeng
12
12
  offset: number;
13
13
  size: number;
14
14
  iterator: BufferIterator;
15
- logLevel: LogLevel;
15
+ logLevel: MediaParserLogLevel;
16
16
  contentLength: number;
17
17
  }) => Promise<MebxBox>;
@@ -1,5 +1,5 @@
1
1
  import type { BufferIterator } from '../../../iterator/buffer-iterator';
2
- import type { LogLevel } from '../../../log';
2
+ import type { MediaParserLogLevel } from '../../../log';
3
3
  import type { AnySegment } from '../../../parse-result';
4
4
  import type { IsoBaseMediaBox } from '../base-media-box';
5
5
  type SampleBase = {
@@ -51,12 +51,12 @@ type FormatBoxAndNext = {
51
51
  };
52
52
  export declare const processIsoFormatBox: ({ iterator, logLevel, contentLength, }: {
53
53
  iterator: BufferIterator;
54
- logLevel: LogLevel;
54
+ logLevel: MediaParserLogLevel;
55
55
  contentLength: number;
56
56
  }) => Promise<FormatBoxAndNext>;
57
57
  export declare const parseIsoFormatBoxes: ({ maxBytes, logLevel, iterator, contentLength, }: {
58
58
  maxBytes: number;
59
- logLevel: LogLevel;
59
+ logLevel: MediaParserLogLevel;
60
60
  iterator: BufferIterator;
61
61
  contentLength: number;
62
62
  }) => Promise<Sample[]>;
@@ -1,5 +1,5 @@
1
1
  import type { BufferIterator } from '../../../iterator/buffer-iterator';
2
- import type { LogLevel } from '../../../log';
2
+ import type { MediaParserLogLevel } from '../../../log';
3
3
  import type { BaseBox } from '../base-type';
4
4
  import type { Sample } from './samples';
5
5
  export interface StsdBox extends BaseBox {
@@ -11,6 +11,6 @@ export declare const parseStsd: ({ offset, size, iterator, logLevel, contentLeng
11
11
  offset: number;
12
12
  size: number;
13
13
  iterator: BufferIterator;
14
- logLevel: LogLevel;
14
+ logLevel: MediaParserLogLevel;
15
15
  contentLength: number;
16
16
  }) => Promise<StsdBox>;
@@ -1,5 +1,5 @@
1
1
  import type { BufferIterator } from '../../../iterator/buffer-iterator';
2
- import type { LogLevel } from '../../../log';
2
+ import type { MediaParserLogLevel } from '../../../log';
3
3
  import type { AnySegment } from '../../../parse-result';
4
4
  import type { BaseBox } from '../base-type';
5
5
  export interface TrakBox extends BaseBox {
@@ -10,6 +10,6 @@ export declare const parseTrak: ({ size, offsetAtStart, iterator, logLevel, cont
10
10
  size: number;
11
11
  offsetAtStart: number;
12
12
  iterator: BufferIterator;
13
- logLevel: LogLevel;
13
+ logLevel: MediaParserLogLevel;
14
14
  contentLength: number;
15
15
  }) => Promise<TrakBox>;
@@ -48,3 +48,4 @@ export declare const getTfhdBox: (segment: IsoBaseMediaBox) => TfhdBox | null;
48
48
  export declare const getTrunBoxes: (segment: IsoBaseMediaBox) => TrunBox[];
49
49
  export declare const getTfraBoxesFromMfraBoxChildren: (mfraBoxChildren: IsoBaseMediaBox[]) => TfraBox[];
50
50
  export declare const getTfraBoxes: (structure: IsoBaseMediaBox[]) => TfraBox[];
51
+ export declare const getTrakBoxByTrackId: (moovBox: MoovBox, trackId: number) => TrakBox | null;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getTfraBoxes = exports.getTfraBoxesFromMfraBoxChildren = 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;
3
+ exports.getTrakBoxByTrackId = exports.getTfraBoxes = exports.getTfraBoxesFromMfraBoxChildren = 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
4
  const precomputed_moof_1 = require("../../state/iso-base-media/precomputed-moof");
5
5
  const getFtypBox = (segments) => {
6
6
  const ftypBox = segments.find((s) => s.type === 'ftyp-box');
@@ -211,3 +211,15 @@ const getTfraBoxes = (structure) => {
211
211
  return (0, exports.getTfraBoxesFromMfraBoxChildren)(mfraBox.children);
212
212
  };
213
213
  exports.getTfraBoxes = getTfraBoxes;
214
+ const getTrakBoxByTrackId = (moovBox, trackId) => {
215
+ var _a;
216
+ const trakBoxes = (0, exports.getTraks)(moovBox);
217
+ return ((_a = trakBoxes.find((t) => {
218
+ const tkhd = (0, exports.getTkhdBox)(t);
219
+ if (!tkhd) {
220
+ return false;
221
+ }
222
+ return tkhd.trackId === trackId;
223
+ })) !== null && _a !== void 0 ? _a : null);
224
+ };
225
+ exports.getTrakBoxByTrackId = getTrakBoxByTrackId;
@@ -1,8 +1,8 @@
1
- import type { LogLevel } from '../../log';
2
- import type { ReaderInterface } from '../../readers/reader';
1
+ import type { MediaParserLogLevel } from '../../log';
2
+ import type { MediaParserReaderInterface } from '../../readers/reader';
3
3
  import type { CanSkipTracksState } from '../../state/can-skip-tracks';
4
4
  import type { M3uState } from '../../state/m3u-state';
5
- import type { OnAudioTrack } from '../../webcodec-sample-types';
5
+ import type { MediaParserOnAudioTrack } from '../../webcodec-sample-types';
6
6
  import type { SelectM3uAssociatedPlaylistsFn, SelectM3uStreamFn } from './select-stream';
7
7
  import type { M3uStructure } from './types';
8
8
  export declare const afterManifestFetch: ({ structure, m3uState, src, selectM3uStreamFn, logLevel, selectAssociatedPlaylistsFn, readerInterface, onAudioTrack, canSkipTracks, }: {
@@ -11,8 +11,8 @@ export declare const afterManifestFetch: ({ structure, m3uState, src, selectM3uS
11
11
  src: string;
12
12
  selectM3uStreamFn: SelectM3uStreamFn;
13
13
  selectAssociatedPlaylistsFn: SelectM3uAssociatedPlaylistsFn;
14
- logLevel: LogLevel;
15
- readerInterface: ReaderInterface;
16
- onAudioTrack: OnAudioTrack | null;
14
+ logLevel: MediaParserLogLevel;
15
+ readerInterface: MediaParserReaderInterface;
16
+ onAudioTrack: MediaParserOnAudioTrack | null;
17
17
  canSkipTracks: CanSkipTracksState;
18
18
  }) => Promise<void>;
@@ -22,7 +22,7 @@ const afterManifestFetch = async ({ structure, m3uState, src, selectM3uStreamFn,
22
22
  throw new Error('No streams found');
23
23
  }
24
24
  const selectedPlaylist = await (0, select_stream_1.selectStream)({ streams, fn: selectM3uStreamFn });
25
- if (!selectedPlaylist.resolution) {
25
+ if (!selectedPlaylist.dimensions) {
26
26
  throw new Error('Stream does not have a resolution');
27
27
  }
28
28
  m3uState.setSelectedMainPlaylist({
@@ -1,6 +1,6 @@
1
- import type { ReaderInterface } from '../../readers/reader';
1
+ import type { MediaParserReaderInterface } from '../../readers/reader';
2
2
  import type { M3uBox } from './types';
3
3
  export declare const fetchM3u8Stream: ({ url, readerInterface, }: {
4
4
  url: string;
5
- readerInterface: ReaderInterface;
5
+ readerInterface: MediaParserReaderInterface;
6
6
  }) => Promise<M3uBox[]>;
@@ -1,9 +1,9 @@
1
1
  import type { MediaParserController } from '../../controller/media-parser-controller';
2
2
  import type { M3uState } from '../../state/m3u-state';
3
- import type { AudioOrVideoSample } from '../../webcodec-sample-types';
3
+ import type { MediaParserVideoSample } from '../../webcodec-sample-types';
4
4
  export declare const considerSeekBasedOnChunk: ({ sample, parentController, childController, callback, m3uState, playlistUrl, subtractChunks, chunkIndex, }: {
5
- sample: AudioOrVideoSample;
6
- callback: (sample: AudioOrVideoSample) => void | Promise<void>;
5
+ sample: MediaParserVideoSample;
6
+ callback: (sample: MediaParserVideoSample) => void | Promise<void>;
7
7
  parentController: MediaParserController;
8
8
  childController: MediaParserController;
9
9
  playlistUrl: string;
@@ -14,17 +14,11 @@ const considerSeekBasedOnChunk = async ({ sample, parentController, childControl
14
14
  chunkIndex !== null &&
15
15
  chunkIndex > 0) {
16
16
  m3uState.setNextSeekShouldSubtractChunks(playlistUrl, subtractChunks + 1);
17
- parentController.seek({
18
- type: 'keyframe-before-time',
19
- timeInSeconds: pendingSeek.targetTime,
20
- });
17
+ parentController.seek(pendingSeek.targetTime);
21
18
  return;
22
19
  }
23
20
  // We are good, we have not gone too far! Don't emit sample and seek and clear pending seek
24
- childController.seek({
25
- type: 'keyframe-before-time',
26
- timeInSeconds: pendingSeek.targetTime,
27
- });
21
+ childController.seek(pendingSeek.targetTime);
28
22
  m3uState.setNextSeekShouldSubtractChunks(playlistUrl, 0);
29
23
  m3uState.setSeekToSecondsToProcess(playlistUrl, null);
30
24
  };
@@ -1,13 +1,13 @@
1
- import type { LogLevel } from '../../log';
1
+ import type { MediaParserLogLevel } from '../../log';
2
2
  import type { M3uState } from '../../state/m3u-state';
3
3
  import type { SeekResolution } from '../../work-on-seek-request';
4
4
  export declare const clearM3uStateInPrepareForSeek: ({ m3uState, logLevel, }: {
5
5
  m3uState: M3uState;
6
- logLevel: LogLevel;
6
+ logLevel: MediaParserLogLevel;
7
7
  }) => void;
8
8
  export declare const getSeekingByteForM3u8: ({ time, currentPosition, m3uState, logLevel, }: {
9
9
  time: number;
10
10
  currentPosition: number;
11
11
  m3uState: M3uState;
12
- logLevel: LogLevel;
12
+ logLevel: MediaParserLogLevel;
13
13
  }) => SeekResolution;
@@ -1,7 +1,7 @@
1
- import type { Dimensions } from '../../get-dimensions';
1
+ import type { MediaParserDimensions } from '../../get-dimensions';
2
2
  import type { ParseMediaSrc } from '../../options';
3
3
  import type { MediaParserStructureUnstable } from '../../parse-result';
4
- import type { ReaderInterface } from '../../readers/reader';
4
+ import type { MediaParserReaderInterface } from '../../readers/reader';
5
5
  import type { ParserState } from '../../state/parser-state';
6
6
  export type M3uAssociatedPlaylist = {
7
7
  groupId: string;
@@ -16,9 +16,9 @@ export type M3uAssociatedPlaylist = {
16
16
  };
17
17
  export type M3uStream = {
18
18
  src: string;
19
- bandwidth: number | null;
20
- averageBandwidth: number | null;
21
- resolution: Dimensions | null;
19
+ bandwidthInBitsPerSec: number | null;
20
+ averageBandwidthInBitsPerSec: number | null;
21
+ dimensions: MediaParserDimensions | null;
22
22
  codecs: string[] | null;
23
23
  id: number;
24
24
  associatedPlaylists: M3uAssociatedPlaylist[];
@@ -27,6 +27,6 @@ export declare const isIndependentSegments: (structure: MediaParserStructureUnst
27
27
  export declare const getM3uStreams: ({ structure, originalSrc, readerInterface, }: {
28
28
  structure: MediaParserStructureUnstable | null;
29
29
  originalSrc: ParseMediaSrc;
30
- readerInterface: ReaderInterface;
30
+ readerInterface: MediaParserReaderInterface;
31
31
  }) => M3uStream[] | null;
32
32
  export declare const m3uHasStreams: (state: ParserState) => boolean;
@@ -41,10 +41,10 @@ const getM3uStreams = ({ structure, originalSrc, readerInterface, }) => {
41
41
  }
42
42
  boxes.push({
43
43
  src: readerInterface.createAdjacentFileSource(next.value, originalSrc),
44
- averageBandwidth: str.averageBandwidth,
45
- bandwidth: str.bandwidth,
44
+ averageBandwidthInBitsPerSec: str.averageBandwidthInBitsPerSec,
45
+ bandwidthInBitsPerSec: str.bandwidthInBitsPerSec,
46
46
  codecs: str.codecs,
47
- resolution: str.resolution,
47
+ dimensions: str.dimensions,
48
48
  associatedPlaylists,
49
49
  });
50
50
  }
@@ -55,15 +55,15 @@ const getM3uStreams = ({ structure, originalSrc, readerInterface, }) => {
55
55
  }
56
56
  const sorted = boxes.slice().sort((a, b) => {
57
57
  var _a, _b, _c, _d;
58
- const aResolution = a.resolution
59
- ? a.resolution.width * a.resolution.height
58
+ const aResolution = a.dimensions
59
+ ? a.dimensions.width * a.dimensions.height
60
60
  : 0;
61
- const bResolution = b.resolution
62
- ? b.resolution.width * b.resolution.height
61
+ const bResolution = b.dimensions
62
+ ? b.dimensions.width * b.dimensions.height
63
63
  : 0;
64
64
  if (aResolution === bResolution) {
65
- const bandwidthA = (_b = (_a = a.averageBandwidth) !== null && _a !== void 0 ? _a : a.bandwidth) !== null && _b !== void 0 ? _b : 0;
66
- const bandwidthB = (_d = (_c = b.averageBandwidth) !== null && _c !== void 0 ? _c : b.bandwidth) !== null && _d !== void 0 ? _d : 0;
65
+ const bandwidthA = (_b = (_a = a.averageBandwidthInBitsPerSec) !== null && _a !== void 0 ? _a : a.bandwidthInBitsPerSec) !== null && _b !== void 0 ? _b : 0;
66
+ const bandwidthB = (_d = (_c = b.averageBandwidthInBitsPerSec) !== null && _c !== void 0 ? _c : b.bandwidthInBitsPerSec) !== null && _d !== void 0 ? _d : 0;
67
67
  return bandwidthB - bandwidthA;
68
68
  }
69
69
  return bResolution - aResolution;
@@ -45,12 +45,12 @@ const parseStreamInf = (str) => {
45
45
  }
46
46
  return {
47
47
  type: 'm3u-stream-info',
48
- averageBandwidth: map['AVERAGE-BANDWIDTH']
48
+ averageBandwidthInBitsPerSec: map['AVERAGE-BANDWIDTH']
49
49
  ? parseInt(map['AVERAGE-BANDWIDTH'], 10)
50
50
  : null,
51
- bandwidth: map.BANDWIDTH ? parseInt(map.BANDWIDTH, 10) : null,
51
+ bandwidthInBitsPerSec: map.BANDWIDTH ? parseInt(map.BANDWIDTH, 10) : null,
52
52
  codecs: map.CODECS ? map.CODECS.split(',') : null,
53
- resolution: map.RESOLUTION
53
+ dimensions: map.RESOLUTION
54
54
  ? {
55
55
  width: parseInt(map.RESOLUTION.split('x')[0], 10),
56
56
  height: parseInt(map.RESOLUTION.split('x')[1], 10),
@@ -145,7 +145,7 @@ const processM3uChunk = ({ playlistUrl, state, structure, audioDone, videoDone,
145
145
  childController.pause();
146
146
  currentPromise.resolver(makeContinuationFn());
147
147
  },
148
- fields: chunk.isHeader ? { structure: true } : undefined,
148
+ fields: chunk.isHeader ? { slowStructure: true } : undefined,
149
149
  onTracks: () => {
150
150
  if (!state.m3u.hasEmittedDoneWithTracks(playlistUrl)) {
151
151
  state.m3u.setHasEmittedDoneWithTracks(playlistUrl);
@@ -247,10 +247,10 @@ const processM3uChunk = ({ playlistUrl, state, structure, audioDone, videoDone,
247
247
  },
248
248
  });
249
249
  if (chunk.isHeader) {
250
- if (data.structure.type !== 'iso-base-media') {
250
+ if (data.slowStructure.type !== 'iso-base-media') {
251
251
  throw new Error('Expected an mp4 file');
252
252
  }
253
- state.m3u.setMp4HeaderSegment(playlistUrl, data.structure);
253
+ state.m3u.setMp4HeaderSegment(playlistUrl, data.slowStructure);
254
254
  }
255
255
  }
256
256
  catch (e) {
@@ -1,9 +1,9 @@
1
- import type { LogLevel } from '../../log';
1
+ import type { MediaParserLogLevel } from '../../log';
2
2
  import type { ParserState } from '../../state/parser-state';
3
3
  import type { M3uStructure } from './types';
4
4
  export declare const runOverM3u: ({ state, structure, playlistUrl, logLevel, }: {
5
5
  state: ParserState;
6
6
  structure: M3uStructure;
7
7
  playlistUrl: string;
8
- logLevel: LogLevel;
8
+ logLevel: MediaParserLogLevel;
9
9
  }) => Promise<void>;
@@ -1,16 +1,16 @@
1
- import type { LogLevel } from '../../log';
2
- import type { AudioOrVideoSample, OnAudioSample, OnVideoSample } from '../../webcodec-sample-types';
1
+ import type { MediaParserLogLevel } from '../../log';
2
+ import type { MediaParserAudioSample, MediaParserOnAudioSample, MediaParserOnVideoSample, MediaParserVideoSample } from '../../webcodec-sample-types';
3
3
  export declare const sampleSorter: ({ logLevel, getAllChunksProcessedForPlaylist, }: {
4
- logLevel: LogLevel;
4
+ logLevel: MediaParserLogLevel;
5
5
  getAllChunksProcessedForPlaylist: (src: string) => boolean;
6
6
  }) => {
7
7
  clearSamples: () => void;
8
8
  addToStreamWithTrack: (src: string) => void;
9
- addVideoStreamToConsider: (src: string, callback: OnVideoSample) => void;
10
- addAudioStreamToConsider: (src: string, callback: OnAudioSample) => void;
9
+ addVideoStreamToConsider: (src: string, callback: MediaParserOnVideoSample) => void;
10
+ addAudioStreamToConsider: (src: string, callback: MediaParserOnAudioSample) => void;
11
11
  hasAudioStreamToConsider: (src: string) => boolean;
12
12
  hasVideoStreamToConsider: (src: string) => boolean;
13
- addAudioSample: (src: string, sample: AudioOrVideoSample) => Promise<void>;
14
- addVideoSample: (src: string, sample: AudioOrVideoSample) => Promise<void>;
13
+ addAudioSample: (src: string, sample: MediaParserAudioSample) => Promise<void>;
14
+ addVideoSample: (src: string, sample: MediaParserVideoSample) => Promise<void>;
15
15
  getNextStreamToRun: (streams: string[]) => string;
16
16
  };
@@ -49,10 +49,10 @@ export type M3uMap = {
49
49
  };
50
50
  export type M3uStreamInfo = {
51
51
  type: 'm3u-stream-info';
52
- bandwidth: number | null;
53
- averageBandwidth: number | null;
52
+ bandwidthInBitsPerSec: number | null;
53
+ averageBandwidthInBitsPerSec: number | null;
54
54
  codecs: string[] | null;
55
- resolution: {
55
+ dimensions: {
56
56
  width: number;
57
57
  height: number;
58
58
  } | null;
@@ -60,14 +60,13 @@ const parseMpegHeader = async ({ state, }) => {
60
60
  track: {
61
61
  type: 'audio',
62
62
  codec: 'mp3',
63
- codecPrivate: null,
64
- codecWithoutConfig: 'mp3',
63
+ codecData: null,
64
+ codecEnum: 'mp3',
65
65
  description: undefined,
66
66
  numberOfChannels,
67
67
  sampleRate,
68
68
  timescale: 1000000,
69
69
  trackId: 0,
70
- trakBox: null,
71
70
  },
72
71
  registerAudioSampleCallback: state.callbacks.registerAudioSampleCallback,
73
72
  tracks: state.callbacks.tracks,
@@ -1,5 +1,5 @@
1
1
  import type { ParserState } from '../../../state/parser-state';
2
- import type { AudioOrVideoSample } from '../../../webcodec-sample-types';
2
+ import type { MediaParserAudioSample } from '../../../webcodec-sample-types';
3
3
  export declare const getAudioSampleFromCbr: ({ bitrateInKbit, initialOffset, layer, sampleRate, samplesPerFrame, data, state, }: {
4
4
  bitrateInKbit: number;
5
5
  layer: number;
@@ -9,7 +9,7 @@ export declare const getAudioSampleFromCbr: ({ bitrateInKbit, initialOffset, lay
9
9
  data: Uint8Array;
10
10
  state: ParserState;
11
11
  }) => {
12
- audioSample: AudioOrVideoSample;
12
+ audioSample: MediaParserAudioSample;
13
13
  timeInSeconds: number;
14
14
  durationInSeconds: number;
15
15
  };
@@ -1,21 +1,16 @@
1
- import type { AudioTrack, OtherTrack, VideoTrack } from '../../get-tracks';
1
+ import type { MediaParserAudioTrack, MediaParserTrack, MediaParserVideoTrack } from '../../get-tracks';
2
2
  import type { ParserState } from '../../state/parser-state';
3
3
  import type { RiffStructure, StrfBoxAudio, StrfBoxVideo, StrhBox } from './riff-box';
4
- export type AllTracks = {
5
- videoTracks: VideoTrack[];
6
- audioTracks: AudioTrack[];
7
- otherTracks: OtherTrack[];
8
- };
9
4
  export declare const TO_BE_OVERRIDDEN_LATER = "to-be-overriden-later";
10
5
  export declare const getNumberOfTracks: (structure: RiffStructure) => number;
11
6
  export declare const makeAviAudioTrack: ({ strf, index, }: {
12
7
  strf: StrfBoxAudio;
13
8
  index: number;
14
- }) => AudioTrack;
9
+ }) => MediaParserAudioTrack;
15
10
  export declare const makeAviVideoTrack: ({ strh, strf, index, }: {
16
11
  strh: StrhBox;
17
12
  strf: StrfBoxVideo;
18
13
  index: number;
19
- }) => VideoTrack;
20
- export declare const getTracksFromAvi: (structure: RiffStructure, state: ParserState) => AllTracks;
14
+ }) => MediaParserVideoTrack;
15
+ export declare const getTracksFromAvi: (structure: RiffStructure, state: ParserState) => MediaParserTrack[];
21
16
  export declare const hasAllTracksFromAvi: (state: ParserState) => boolean;