@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.
- package/dist/containers/flac/get-channel-count.d.ts +1 -1
- package/dist/containers/flac/get-seeking-byte.d.ts +6 -0
- package/dist/containers/flac/get-seeking-byte.js +26 -0
- package/dist/containers/flac/parse-meta.d.ts +6 -0
- package/dist/containers/flac/parse-meta.js +31 -0
- package/dist/containers/flac/seeking-hints.d.ts +15 -0
- package/dist/containers/flac/seeking-hints.js +19 -0
- package/dist/containers/iso-base-media/collect-sample-positions-from-moof-boxes.d.ts +2 -2
- package/dist/containers/iso-base-media/collect-sample-positions-from-moof-boxes.js +6 -3
- package/dist/containers/iso-base-media/collect-sample-positions-from-trak.js +7 -5
- package/dist/containers/iso-base-media/get-keyframes.js +1 -1
- package/dist/containers/iso-base-media/get-sample-positions-from-track.d.ts +2 -2
- package/dist/containers/iso-base-media/get-seeking-byte.d.ts +15 -0
- package/dist/containers/iso-base-media/{get-seeking-from-mp4.js → get-seeking-byte.js} +16 -2
- package/dist/containers/iso-base-media/mdat/mdat.js +13 -5
- package/dist/containers/iso-base-media/mdat/postprocess-bytes.d.ts +5 -0
- package/dist/containers/iso-base-media/mdat/postprocess-bytes.js +25 -0
- package/dist/containers/iso-base-media/process-box.js +5 -3
- package/dist/containers/iso-base-media/{get-seeking-info-from-mp4.d.ts → seeking-hints.d.ts} +8 -3
- package/dist/containers/iso-base-media/seeking-hints.js +53 -0
- package/dist/containers/iso-base-media/should-group-audio-samples.d.ts +6 -0
- package/dist/containers/iso-base-media/should-group-audio-samples.js +16 -0
- package/dist/containers/iso-base-media/traversal.d.ts +4 -2
- package/dist/containers/iso-base-media/traversal.js +6 -5
- package/dist/containers/m3u/iterate-over-segment-files.js +23 -20
- package/dist/containers/riff/parse-video-section.js +1 -1
- package/dist/containers/transport-stream/handle-aac-packet.js +4 -1
- package/dist/containers/transport-stream/handle-avc-packet.js +4 -1
- package/dist/containers/transport-stream/seeking-hints.d.ts +9 -0
- package/dist/containers/transport-stream/seeking-hints.js +26 -0
- package/dist/containers/wav/get-seeking-byte.d.ts +2 -2
- package/dist/containers/wav/get-seeking-byte.js +2 -2
- package/dist/containers/wav/seeking-hints.d.ts +12 -0
- package/dist/containers/wav/seeking-hints.js +25 -0
- package/dist/containers/webm/seek/get-seeking-byte.d.ts +3 -5
- package/dist/containers/webm/seek/get-seeking-byte.js +5 -5
- package/dist/containers/webm/seek/seeking-hints.d.ts +10 -0
- package/dist/containers/webm/seek/seeking-hints.js +28 -0
- package/dist/controller/media-parser-controller.d.ts +3 -0
- package/dist/controller/media-parser-controller.js +15 -0
- package/dist/download-and-parse-media.js +2 -1
- package/dist/emit-available-info.js +1 -1
- package/dist/esm/index.mjs +491 -208
- package/dist/esm/node-writer.mjs +1 -2
- package/dist/esm/node.mjs +1 -2
- package/dist/esm/server-worker.mjs +46 -1
- package/dist/esm/universal.mjs +2 -4
- package/dist/esm/web.mjs +1 -2
- package/dist/esm/worker-server-entry.mjs +527 -215
- package/dist/esm/worker-web-entry.mjs +526 -213
- package/dist/esm/worker.mjs +46 -1
- package/dist/{forward-controller.d.ts → forward-controller-pause-resume-abort.d.ts} +1 -1
- package/dist/{forward-controller.js → forward-controller-pause-resume-abort.js} +3 -3
- package/dist/get-audio-codec.d.ts +1 -0
- package/dist/get-audio-codec.js +15 -4
- package/dist/get-dimensions.js +1 -1
- package/dist/get-duration.js +3 -2
- package/dist/get-fps.js +1 -0
- package/dist/get-is-hdr.js +2 -2
- package/dist/get-keyframes.js +1 -1
- package/dist/get-sample-positions-from-mp4.d.ts +4 -1
- package/dist/get-sample-positions-from-mp4.js +3 -1
- package/dist/get-sample-positions.d.ts +2 -0
- package/dist/get-sample-positions.js +2 -0
- package/dist/get-seeking-byte.d.ts +7 -5
- package/dist/get-seeking-byte.js +13 -12
- package/dist/{get-seeking-info.d.ts → get-seeking-hints.d.ts} +7 -3
- package/dist/get-seeking-hints.js +35 -0
- package/dist/get-tracks.d.ts +4 -4
- package/dist/get-tracks.js +8 -6
- package/dist/get-video-codec.js +2 -2
- package/dist/has-all-info.js +1 -1
- package/dist/index.d.ts +31 -3
- package/dist/internal-parse-media.js +16 -1
- package/dist/iterator/buffer-iterator.js +3 -4
- package/dist/metadata/metadata-from-iso.js +1 -0
- package/dist/options.d.ts +2 -0
- package/dist/parse-media-on-worker-entry.js +51 -1
- package/dist/parse-media.js +2 -1
- package/dist/samples-from-moof.d.ts +2 -2
- package/dist/samples-from-moof.js +7 -8
- package/dist/seeking-hints.d.ts +39 -0
- package/dist/set-seeking-hints.d.ts +6 -0
- package/dist/set-seeking-hints.js +27 -0
- package/dist/state/audio-sample-map.d.ts +11 -0
- package/dist/state/audio-sample-map.js +21 -0
- package/dist/state/has-tracks-section.js +3 -1
- package/dist/state/iso-base-media/cached-sample-positions.js +1 -1
- package/dist/state/iso-base-media/iso-state.d.ts +18 -2
- package/dist/state/iso-base-media/iso-state.js +4 -0
- package/dist/state/iso-base-media/lazy-mfra-load.d.ts +3 -0
- package/dist/state/iso-base-media/lazy-mfra-load.js +13 -0
- package/dist/state/iso-base-media/moov-box.d.ts +7 -2
- package/dist/state/iso-base-media/moov-box.js +1 -1
- package/dist/state/iso-base-media/precomputed-moof.d.ts +11 -0
- package/dist/state/iso-base-media/precomputed-moof.js +28 -0
- package/dist/state/iso-base-media/precomputed-tfra.d.ts +6 -0
- package/dist/state/iso-base-media/precomputed-tfra.js +17 -0
- package/dist/state/keyframes.d.ts +2 -0
- package/dist/state/keyframes.js +17 -9
- package/dist/state/matroska/lazy-cues-fetch.d.ts +7 -1
- package/dist/state/matroska/lazy-cues-fetch.js +21 -0
- package/dist/state/matroska/webm.d.ts +7 -0
- package/dist/state/matroska/webm.js +9 -1
- package/dist/state/parser-state.d.ts +31 -3
- package/dist/state/samples-observed/slow-duration-fps.js +0 -3
- package/dist/state/transport-stream/observed-pes-header.d.ts +2 -0
- package/dist/state/transport-stream/observed-pes-header.js +22 -12
- package/dist/state/transport-stream/pts-start-offset.d.ts +4 -1
- package/dist/state/transport-stream/pts-start-offset.js +1 -1
- package/dist/state/transport-stream/transport-stream.d.ts +5 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/with-resolvers.d.ts +5 -0
- package/dist/work-on-seek-request.js +8 -5
- package/dist/worker/{forward-controller.js → forward-controller-to-worker.js} +17 -0
- package/dist/worker/serialize-error.d.ts +6 -1
- package/dist/worker/serialize-error.js +2 -1
- package/dist/worker/worker-types.d.ts +12 -2
- package/dist/worker-server.js +16 -5
- package/package.json +3 -3
- package/dist/containers/iso-base-media/get-mfra-atom.d.ts +0 -9
- package/dist/containers/iso-base-media/get-mfra-atom.js +0 -12
- package/dist/containers/iso-base-media/get-seeking-from-mp4.d.ts +0 -11
- package/dist/containers/iso-base-media/get-seeking-info-from-mp4.js +0 -25
- package/dist/containers/iso-base-media/mfra/mfra.d.ts +0 -2
- package/dist/containers/iso-base-media/mfra/mfra.js +0 -11
- package/dist/containers/transport-stream/get-seeking-info.d.ts +0 -4
- package/dist/containers/transport-stream/get-seeking-info.js +0 -17
- package/dist/containers/transport-stream/next-pes-header-store.d.ts +0 -6
- package/dist/containers/transport-stream/next-pes-header-store.js +0 -18
- package/dist/containers/transport-stream/start-offset.d.ts +0 -4
- package/dist/containers/transport-stream/start-offset.js +0 -13
- package/dist/containers/wav/get-seeking-info.d.ts +0 -7
- package/dist/containers/wav/get-seeking-info.js +0 -20
- package/dist/containers/wav/parse-video-section.d.ts +0 -5
- package/dist/containers/wav/parse-video-section.js +0 -41
- package/dist/containers/webm/cues/fetch-web-cues.d.ts +0 -12
- package/dist/containers/webm/cues/fetch-web-cues.js +0 -32
- package/dist/containers/webm/cues/format-cues.d.ts +0 -8
- package/dist/containers/webm/cues/format-cues.js +0 -41
- package/dist/containers/webm/cues/get-seeking-byte.d.ts +0 -14
- package/dist/containers/webm/cues/get-seeking-byte.js +0 -91
- package/dist/containers/webm/fetch-web-cues.d.ts +0 -12
- package/dist/containers/webm/fetch-web-cues.js +0 -29
- package/dist/containers/webm/get-seeking-byte.d.ts +0 -14
- package/dist/containers/webm/get-seeking-byte.js +0 -91
- package/dist/containers/webm/get-seeking-info.d.ts +0 -3
- package/dist/containers/webm/get-seeking-info.js +0 -17
- package/dist/containers/webm/seek/get-seeking-info.d.ts +0 -3
- package/dist/containers/webm/seek/get-seeking-info.js +0 -17
- package/dist/emitter.d.ts +0 -33
- package/dist/emitter.js +0 -65
- package/dist/get-sample-positions-from-lpcm.d.ts +0 -3
- package/dist/get-sample-positions-from-lpcm.js +0 -46
- package/dist/get-seeking-info.js +0 -35
- package/dist/media-parser-controller.d.ts +0 -21
- package/dist/media-parser-controller.js +0 -38
- package/dist/pause-signal.d.ts +0 -11
- package/dist/pause-signal.js +0 -38
- package/dist/readers/state/aac-state.d.ts +0 -13
- package/dist/readers/state/aac-state.js +0 -17
- package/dist/readers/state/can-skip-tracks.d.ts +0 -16
- package/dist/readers/state/can-skip-tracks.js +0 -60
- package/dist/readers/state/current-reader.d.ts +0 -6
- package/dist/readers/state/current-reader.js +0 -13
- package/dist/readers/state/emitted-fields.d.ts +0 -1
- package/dist/readers/state/emitted-fields.js +0 -37
- package/dist/readers/state/flac-state.d.ts +0 -4
- package/dist/readers/state/flac-state.js +0 -13
- package/dist/readers/state/has-tracks-section.d.ts +0 -14
- package/dist/readers/state/has-tracks-section.js +0 -37
- package/dist/readers/state/images.d.ts +0 -9
- package/dist/readers/state/images.js +0 -14
- package/dist/readers/state/iso-base-media/cached-sample-positions.d.ts +0 -12
- package/dist/readers/state/iso-base-media/cached-sample-positions.js +0 -46
- package/dist/readers/state/iso-base-media/iso-state.d.ts +0 -24
- package/dist/readers/state/iso-base-media/iso-state.js +0 -20
- package/dist/readers/state/iso-base-media/lazy-mfra-load.d.ts +0 -13
- package/dist/readers/state/iso-base-media/lazy-mfra-load.js +0 -29
- package/dist/readers/state/iso-base-media/moov-box.d.ts +0 -5
- package/dist/readers/state/iso-base-media/moov-box.js +0 -13
- package/dist/readers/state/keyframes.d.ts +0 -6
- package/dist/readers/state/keyframes.js +0 -15
- package/dist/readers/state/m3u-state.d.ts +0 -44
- package/dist/readers/state/m3u-state.js +0 -124
- package/dist/readers/state/may-skip-video-data.d.ts +0 -4
- package/dist/readers/state/may-skip-video-data.js +0 -18
- package/dist/readers/state/mp3.d.ts +0 -15
- package/dist/readers/state/mp3.js +0 -19
- package/dist/readers/state/need-samples-for-fields.d.ts +0 -6
- package/dist/readers/state/need-samples-for-fields.js +0 -39
- package/dist/readers/state/parser-state.d.ts +0 -252
- package/dist/readers/state/parser-state.js +0 -124
- package/dist/readers/state/riff.d.ts +0 -10
- package/dist/readers/state/riff.js +0 -32
- package/dist/readers/state/sample-callbacks.d.ts +0 -44
- package/dist/readers/state/sample-callbacks.js +0 -118
- package/dist/readers/state/seek-infinite-loop.d.ts +0 -5
- package/dist/readers/state/seek-infinite-loop.js +0 -22
- package/dist/readers/state/slow-duration-fps.d.ts +0 -11
- package/dist/readers/state/slow-duration-fps.js +0 -86
- package/dist/readers/state/structure.d.ts +0 -15
- package/dist/readers/state/structure.js +0 -78
- package/dist/readers/state/timings.d.ts +0 -8
- package/dist/readers/state/timings.js +0 -13
- package/dist/readers/state/transport-stream/last-emitted-sample.d.ts +0 -6
- package/dist/readers/state/transport-stream/last-emitted-sample.js +0 -16
- package/dist/readers/state/transport-stream/next-pes-header-store.d.ts +0 -6
- package/dist/readers/state/transport-stream/next-pes-header-store.js +0 -18
- package/dist/readers/state/transport-stream/start-offset.d.ts +0 -4
- package/dist/readers/state/transport-stream/start-offset.js +0 -13
- package/dist/readers/state/transport-stream/transport-stream.d.ts +0 -19
- package/dist/readers/state/transport-stream/transport-stream.js +0 -25
- package/dist/readers/state/video-section.d.ts +0 -33
- package/dist/readers/state/video-section.js +0 -65
- package/dist/readers/state/webm.d.ts +0 -28
- package/dist/readers/state/webm.js +0 -109
- package/dist/seek-signal.d.ts +0 -19
- package/dist/seek-signal.js +0 -24
- package/dist/seeking-info.d.ts +0 -31
- package/dist/server-worker.module.d.ts +0 -2
- package/dist/server-worker.module.js +0 -12
- package/dist/state/matroska/lazy-seek-fetch.d.ts +0 -1
- package/dist/state/matroska/lazy-seek-fetch.js +0 -5
- package/dist/state/matroska.d.ts +0 -0
- package/dist/state/matroska.js +0 -1
- package/dist/state/slow-duration-fps.d.ts +0 -11
- package/dist/state/slow-duration-fps.js +0 -86
- package/dist/state/transport-stream/start-offset.d.ts +0 -5
- package/dist/state/transport-stream/start-offset.js +0 -13
- package/dist/state/transport-stream.d.ts +0 -8
- package/dist/state/transport-stream.js +0 -11
- package/dist/state/uml.d.ts +0 -32
- package/dist/state/uml.js +0 -52
- package/dist/state/webm.d.ts +0 -30
- package/dist/state/webm.js +0 -109
- package/dist/state/work-on-seek-request-options.d.ts +0 -3
- package/dist/state/work-on-seek-request-options.js +0 -26
- package/dist/worker.module.d.ts +0 -4
- package/dist/worker.module.js +0 -12
- /package/dist/{seeking-info.js → seeking-hints.js} +0 -0
- /package/dist/worker/{forward-controller.d.ts → forward-controller-to-worker.d.ts} +0 -0
package/dist/esm/worker.mjs
CHANGED
|
@@ -235,6 +235,7 @@ var parseMediaOnWorkerImplementation = async ({ controller, reader, ...params },
|
|
|
235
235
|
throw new Error(`\`reader\` should not be provided to \`${apiName}\`. If you want to use it in the browser, use parseMediaOnWorker(). If you also want to read files from the file system, use parseMediaOnServerWorker().`);
|
|
236
236
|
}
|
|
237
237
|
post(worker, convertToWorkerPayload(params));
|
|
238
|
+
let workerTerminated = false;
|
|
238
239
|
const { promise, resolve, reject } = withResolvers();
|
|
239
240
|
const onAbort = () => {
|
|
240
241
|
post(worker, { type: "request-abort" });
|
|
@@ -249,15 +250,48 @@ var parseMediaOnWorkerImplementation = async ({ controller, reader, ...params },
|
|
|
249
250
|
post(worker, { type: "request-seek", payload: seek });
|
|
250
251
|
controller?._internals.seekSignal.clearSeekIfStillSame(seek);
|
|
251
252
|
};
|
|
253
|
+
const seekingHintPromises = [];
|
|
254
|
+
let finalSeekingHints = null;
|
|
255
|
+
controller?._internals.attachSeekingHintResolution(() => {
|
|
256
|
+
if (finalSeekingHints) {
|
|
257
|
+
return Promise.resolve(finalSeekingHints);
|
|
258
|
+
}
|
|
259
|
+
if (workerTerminated) {
|
|
260
|
+
return Promise.reject(new Error("Worker terminated"));
|
|
261
|
+
}
|
|
262
|
+
const prom = withResolvers();
|
|
263
|
+
post(worker, { type: "request-get-seeking-hints" });
|
|
264
|
+
seekingHintPromises.push(prom);
|
|
265
|
+
return prom.promise;
|
|
266
|
+
});
|
|
252
267
|
const callbacks = {};
|
|
253
268
|
function onMessage(message) {
|
|
254
269
|
const data = message.data;
|
|
255
270
|
if (data.type === "response-done") {
|
|
256
271
|
resolve(data.payload);
|
|
272
|
+
if (data.seekingHints) {
|
|
273
|
+
finalSeekingHints = data.seekingHints;
|
|
274
|
+
for (const prom of seekingHintPromises) {
|
|
275
|
+
prom.resolve(finalSeekingHints);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
return;
|
|
257
279
|
}
|
|
258
280
|
if (data.type === "response-error") {
|
|
259
281
|
cleanup();
|
|
260
|
-
|
|
282
|
+
const error = deserializeError(data);
|
|
283
|
+
reject(error);
|
|
284
|
+
if (data.errorName === "MediaParserAbortError") {
|
|
285
|
+
finalSeekingHints = data.seekingHints;
|
|
286
|
+
for (const prom of seekingHintPromises) {
|
|
287
|
+
prom.resolve(finalSeekingHints);
|
|
288
|
+
}
|
|
289
|
+
} else {
|
|
290
|
+
for (const prom of seekingHintPromises) {
|
|
291
|
+
prom.reject(error);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
return;
|
|
261
295
|
}
|
|
262
296
|
if (data.type === "response-on-callback-request") {
|
|
263
297
|
Promise.resolve().then(async () => {
|
|
@@ -430,7 +464,17 @@ var parseMediaOnWorkerImplementation = async ({ controller, reader, ...params },
|
|
|
430
464
|
nonce: data.nonce
|
|
431
465
|
});
|
|
432
466
|
});
|
|
467
|
+
return;
|
|
468
|
+
}
|
|
469
|
+
if (data.type === "response-get-seeking-hints") {
|
|
470
|
+
const firstPromise = seekingHintPromises.shift();
|
|
471
|
+
if (!firstPromise) {
|
|
472
|
+
throw new Error("No seeking hint promise found");
|
|
473
|
+
}
|
|
474
|
+
firstPromise.resolve(data.payload);
|
|
475
|
+
return;
|
|
433
476
|
}
|
|
477
|
+
throw new Error(`Unknown response type: ${JSON.stringify(data)}`);
|
|
434
478
|
}
|
|
435
479
|
worker.addEventListener("message", onMessage);
|
|
436
480
|
controller?.addEventListener("abort", onAbort);
|
|
@@ -443,6 +487,7 @@ var parseMediaOnWorkerImplementation = async ({ controller, reader, ...params },
|
|
|
443
487
|
controller?.removeEventListener("resume", onResume);
|
|
444
488
|
controller?.removeEventListener("pause", onPause);
|
|
445
489
|
controller?.removeEventListener("seek", onSeek);
|
|
490
|
+
workerTerminated = true;
|
|
446
491
|
worker.terminate();
|
|
447
492
|
}
|
|
448
493
|
controller?._internals.markAsReadyToEmitEvents();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { MediaParserController } from './controller/media-parser-controller';
|
|
2
|
-
export declare const
|
|
2
|
+
export declare const forwardMediaParserControllerPauseResume: ({ parentController, childController, }: {
|
|
3
3
|
parentController: MediaParserController;
|
|
4
4
|
childController: MediaParserController;
|
|
5
5
|
}) => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
3
|
+
exports.forwardMediaParserControllerPauseResume = void 0;
|
|
4
|
+
const forwardMediaParserControllerPauseResume = ({ parentController, childController, }) => {
|
|
5
5
|
const onAbort = ({ detail }) => {
|
|
6
6
|
childController.abort(detail.reason);
|
|
7
7
|
};
|
|
@@ -22,4 +22,4 @@ const forwardMediaParserController = ({ parentController, childController, }) =>
|
|
|
22
22
|
},
|
|
23
23
|
};
|
|
24
24
|
};
|
|
25
|
-
exports.
|
|
25
|
+
exports.forwardMediaParserControllerPauseResume = forwardMediaParserControllerPauseResume;
|
|
@@ -16,6 +16,7 @@ export declare const getSampleRate: (trak: TrakBox) => number | null;
|
|
|
16
16
|
export declare const getAudioCodecFromTrak: (trak: TrakBox) => AudioCodecInfo | null;
|
|
17
17
|
export declare const isLpcmAudioCodec: (trak: TrakBox) => boolean;
|
|
18
18
|
export declare const isIn24AudioCodec: (trak: TrakBox) => boolean;
|
|
19
|
+
export declare const isTwosAudioCodec: (trak: TrakBox) => boolean;
|
|
19
20
|
export declare const getAudioCodecFromIso: (moov: MoovBox) => AudioCodecInfo | null;
|
|
20
21
|
export declare const getAudioCodecStringFromTrak: (trak: TrakBox) => {
|
|
21
22
|
codecString: string;
|
package/dist/get-audio-codec.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getAudioCodecFromTrack = exports.getAudioCodecStringFromTrak = exports.getAudioCodecFromIso = exports.isIn24AudioCodec = exports.isLpcmAudioCodec = exports.getAudioCodecFromTrak = exports.getSampleRate = exports.getNumberOfChannelsFromTrak = exports.getCodecPrivateFromTrak = exports.hasAudioCodec = exports.getAudioCodec = void 0;
|
|
3
|
+
exports.getAudioCodecFromTrack = exports.getAudioCodecStringFromTrak = exports.getAudioCodecFromIso = exports.isTwosAudioCodec = exports.isIn24AudioCodec = exports.isLpcmAudioCodec = exports.getAudioCodecFromTrak = exports.getSampleRate = exports.getNumberOfChannelsFromTrak = exports.getCodecPrivateFromTrak = exports.hasAudioCodec = exports.getAudioCodec = void 0;
|
|
4
4
|
const traversal_1 = require("./containers/iso-base-media/traversal");
|
|
5
5
|
const get_fps_1 = require("./get-fps");
|
|
6
6
|
const get_tracks_1 = require("./get-tracks");
|
|
7
7
|
const getAudioCodec = (parserState) => {
|
|
8
|
-
const tracks = (0, get_tracks_1.getTracks)(parserState);
|
|
8
|
+
const tracks = (0, get_tracks_1.getTracks)(parserState, true);
|
|
9
9
|
const allTracks = tracks.audioTracks.length +
|
|
10
10
|
tracks.otherTracks.length +
|
|
11
11
|
tracks.videoTracks.length;
|
|
@@ -23,7 +23,7 @@ const getAudioCodec = (parserState) => {
|
|
|
23
23
|
};
|
|
24
24
|
exports.getAudioCodec = getAudioCodec;
|
|
25
25
|
const hasAudioCodec = (state) => {
|
|
26
|
-
return (0, get_tracks_1.getHasTracks)(state);
|
|
26
|
+
return (0, get_tracks_1.getHasTracks)(state, true);
|
|
27
27
|
};
|
|
28
28
|
exports.hasAudioCodec = hasAudioCodec;
|
|
29
29
|
const getCodecSpecificatorFromEsdsBox = ({ child, }) => {
|
|
@@ -153,6 +153,11 @@ const isIn24AudioCodec = (trak) => {
|
|
|
153
153
|
return ((_a = (0, exports.getAudioCodecFromTrak)(trak)) === null || _a === void 0 ? void 0 : _a.format) === 'in24';
|
|
154
154
|
};
|
|
155
155
|
exports.isIn24AudioCodec = isIn24AudioCodec;
|
|
156
|
+
const isTwosAudioCodec = (trak) => {
|
|
157
|
+
var _a;
|
|
158
|
+
return ((_a = (0, exports.getAudioCodecFromTrak)(trak)) === null || _a === void 0 ? void 0 : _a.format) === 'twos';
|
|
159
|
+
};
|
|
160
|
+
exports.isTwosAudioCodec = isTwosAudioCodec;
|
|
156
161
|
const getAudioCodecFromIso = (moov) => {
|
|
157
162
|
const traks = (0, traversal_1.getTraks)(moov);
|
|
158
163
|
const trakBox = traks.find((b) => b.type === 'trak-box' && (0, get_fps_1.trakBoxContainsAudio)(b));
|
|
@@ -173,10 +178,16 @@ const getAudioCodecStringFromTrak = (trak) => {
|
|
|
173
178
|
description: codec.description,
|
|
174
179
|
};
|
|
175
180
|
}
|
|
181
|
+
if (codec.format === 'twos') {
|
|
182
|
+
return {
|
|
183
|
+
codecString: 'pcm-s16',
|
|
184
|
+
description: codec.description,
|
|
185
|
+
};
|
|
186
|
+
}
|
|
176
187
|
if (codec.format === 'in24') {
|
|
177
188
|
return {
|
|
178
189
|
codecString: 'pcm-s24',
|
|
179
|
-
description:
|
|
190
|
+
description: codec.description,
|
|
180
191
|
};
|
|
181
192
|
}
|
|
182
193
|
const codecStringWithoutMp3Exception = [
|
package/dist/get-dimensions.js
CHANGED
|
@@ -8,7 +8,7 @@ const getDimensions = (state) => {
|
|
|
8
8
|
if (structure && (0, is_audio_structure_1.isAudioStructure)(structure)) {
|
|
9
9
|
return null;
|
|
10
10
|
}
|
|
11
|
-
const { videoTracks } = (0, get_tracks_1.getTracks)(state);
|
|
11
|
+
const { videoTracks } = (0, get_tracks_1.getTracks)(state, true);
|
|
12
12
|
if (!videoTracks.length) {
|
|
13
13
|
return null;
|
|
14
14
|
}
|
package/dist/get-duration.js
CHANGED
|
@@ -44,6 +44,7 @@ const getDurationFromIsoBaseMedia = (parserState) => {
|
|
|
44
44
|
structureState: parserState.structure,
|
|
45
45
|
isoState: parserState.iso,
|
|
46
46
|
mp4HeaderSegment: parserState.mp4HeaderSegment,
|
|
47
|
+
mayUsePrecomputed: true,
|
|
47
48
|
});
|
|
48
49
|
if (!moovBox) {
|
|
49
50
|
return null;
|
|
@@ -60,7 +61,7 @@ const getDurationFromIsoBaseMedia = (parserState) => {
|
|
|
60
61
|
if (mvhdBox.durationInSeconds > 0) {
|
|
61
62
|
return mvhdBox.durationInSeconds;
|
|
62
63
|
}
|
|
63
|
-
const tracks = (0, get_tracks_1.getTracks)(parserState);
|
|
64
|
+
const tracks = (0, get_tracks_1.getTracks)(parserState, true);
|
|
64
65
|
const allTracks = [
|
|
65
66
|
...tracks.videoTracks,
|
|
66
67
|
...tracks.audioTracks,
|
|
@@ -127,7 +128,7 @@ const hasDuration = (parserState) => {
|
|
|
127
128
|
if (structure === null) {
|
|
128
129
|
return false;
|
|
129
130
|
}
|
|
130
|
-
return (0, get_tracks_1.getHasTracks)(parserState);
|
|
131
|
+
return (0, get_tracks_1.getHasTracks)(parserState, true);
|
|
131
132
|
};
|
|
132
133
|
exports.hasDuration = hasDuration;
|
|
133
134
|
// `slowDuration` goes through everything, and therefore is false
|
package/dist/get-fps.js
CHANGED
package/dist/get-is-hdr.js
CHANGED
|
@@ -8,11 +8,11 @@ const isVideoTrackHdr = (track) => {
|
|
|
8
8
|
track.color.primaries === 'bt2020');
|
|
9
9
|
};
|
|
10
10
|
const getIsHdr = (state) => {
|
|
11
|
-
const { videoTracks } = (0, get_tracks_1.getTracks)(state);
|
|
11
|
+
const { videoTracks } = (0, get_tracks_1.getTracks)(state, true);
|
|
12
12
|
return videoTracks.some((track) => isVideoTrackHdr(track));
|
|
13
13
|
};
|
|
14
14
|
exports.getIsHdr = getIsHdr;
|
|
15
15
|
const hasHdr = (state) => {
|
|
16
|
-
return (0, get_tracks_1.getHasTracks)(state);
|
|
16
|
+
return (0, get_tracks_1.getHasTracks)(state, true);
|
|
17
17
|
};
|
|
18
18
|
exports.hasHdr = hasHdr;
|
package/dist/get-keyframes.js
CHANGED
|
@@ -14,7 +14,7 @@ exports.getKeyframes = getKeyframes;
|
|
|
14
14
|
const hasKeyframes = (parserState) => {
|
|
15
15
|
const structure = parserState.structure.getStructure();
|
|
16
16
|
if (structure.type === 'iso-base-media') {
|
|
17
|
-
return (0, get_tracks_1.getHasTracks)(parserState);
|
|
17
|
+
return (0, get_tracks_1.getHasTracks)(parserState, true);
|
|
18
18
|
}
|
|
19
19
|
// Has, but will be null
|
|
20
20
|
return true;
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
import type { TrakBox } from './containers/iso-base-media/trak/trak';
|
|
2
2
|
import type { SamplePosition } from './get-sample-positions';
|
|
3
|
-
export declare const getGroupedSamplesPositionsFromMp4: (trakBox
|
|
3
|
+
export declare const getGroupedSamplesPositionsFromMp4: ({ trakBox, bigEndian, }: {
|
|
4
|
+
trakBox: TrakBox;
|
|
5
|
+
bigEndian: boolean;
|
|
6
|
+
}) => SamplePosition[];
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
5
5
|
exports.getGroupedSamplesPositionsFromMp4 = void 0;
|
|
6
6
|
const traversal_1 = require("./containers/iso-base-media/traversal");
|
|
7
7
|
// example video: mehmet.mov
|
|
8
|
-
const getGroupedSamplesPositionsFromMp4 = (trakBox) => {
|
|
8
|
+
const getGroupedSamplesPositionsFromMp4 = ({ trakBox, bigEndian, }) => {
|
|
9
9
|
const stscBox = (0, traversal_1.getStscBox)(trakBox);
|
|
10
10
|
const stszBox = (0, traversal_1.getStszBox)(trakBox);
|
|
11
11
|
const stcoBox = (0, traversal_1.getStcoBox)(trakBox);
|
|
@@ -38,6 +38,8 @@ const getGroupedSamplesPositionsFromMp4 = (trakBox) => {
|
|
|
38
38
|
size: stszBox.sampleSize * stscEntry.samplesPerChunk,
|
|
39
39
|
duration: stscEntry.samplesPerChunk,
|
|
40
40
|
isKeyframe: true,
|
|
41
|
+
bigEndian,
|
|
42
|
+
chunkSize: stszBox.sampleSize,
|
|
41
43
|
});
|
|
42
44
|
timestamp += stscEntry.samplesPerChunk;
|
|
43
45
|
}
|
|
@@ -12,6 +12,8 @@ export type SamplePosition = {
|
|
|
12
12
|
cts: number;
|
|
13
13
|
duration: number;
|
|
14
14
|
chunk: number;
|
|
15
|
+
bigEndian: boolean;
|
|
16
|
+
chunkSize: number | null;
|
|
15
17
|
};
|
|
16
18
|
export declare const getSamplePositions: ({ stcoBox, stszBox, stscBox, stssBox, sttsBox, cttsBox, }: {
|
|
17
19
|
stcoBox: StcoBox;
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import type { LogLevel } from './log';
|
|
2
|
-
import type {
|
|
2
|
+
import type { IsoBaseMediaStructure } from './parse-result';
|
|
3
|
+
import type { SeekingHints } from './seeking-hints';
|
|
3
4
|
import type { IsoBaseMediaState } from './state/iso-base-media/iso-state';
|
|
4
|
-
import type { KeyframesState } from './state/keyframes';
|
|
5
5
|
import type { WebmState } from './state/matroska/webm';
|
|
6
|
+
import type { StructureState } from './state/structure';
|
|
6
7
|
import type { TransportStreamState } from './state/transport-stream/transport-stream';
|
|
7
8
|
import type { MediaSectionState } from './state/video-section';
|
|
8
9
|
import type { SeekResolution } from './work-on-seek-request';
|
|
9
|
-
export declare const getSeekingByte: ({ info, time, logLevel, currentPosition, isoState, transportStream, webmState, mediaSection,
|
|
10
|
-
info:
|
|
10
|
+
export declare const getSeekingByte: ({ info, time, logLevel, currentPosition, isoState, transportStream, webmState, mediaSection, mp4HeaderSegment, structure, }: {
|
|
11
|
+
info: SeekingHints;
|
|
11
12
|
time: number;
|
|
12
13
|
logLevel: LogLevel;
|
|
13
14
|
currentPosition: number;
|
|
@@ -15,5 +16,6 @@ export declare const getSeekingByte: ({ info, time, logLevel, currentPosition, i
|
|
|
15
16
|
transportStream: TransportStreamState;
|
|
16
17
|
webmState: WebmState;
|
|
17
18
|
mediaSection: MediaSectionState;
|
|
18
|
-
|
|
19
|
+
structure: StructureState;
|
|
20
|
+
mp4HeaderSegment: IsoBaseMediaStructure | null;
|
|
19
21
|
}) => Promise<SeekResolution>;
|
package/dist/get-seeking-byte.js
CHANGED
|
@@ -1,38 +1,39 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getSeekingByte = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
4
|
+
const get_seeking_byte_1 = require("./containers/iso-base-media/get-seeking-byte");
|
|
5
|
+
const get_seeking_byte_2 = require("./containers/wav/get-seeking-byte");
|
|
6
|
+
const get_seeking_byte_3 = require("./containers/webm/seek/get-seeking-byte");
|
|
7
7
|
const observed_pes_header_1 = require("./state/transport-stream/observed-pes-header");
|
|
8
|
-
const getSeekingByte = ({ info, time, logLevel, currentPosition, isoState, transportStream, webmState, mediaSection,
|
|
8
|
+
const getSeekingByte = ({ info, time, logLevel, currentPosition, isoState, transportStream, webmState, mediaSection, mp4HeaderSegment, structure, }) => {
|
|
9
9
|
var _a;
|
|
10
|
-
if (info.type === 'iso-base-media-seeking-
|
|
11
|
-
return (0,
|
|
10
|
+
if (info.type === 'iso-base-media-seeking-hints') {
|
|
11
|
+
return (0, get_seeking_byte_1.getSeekingByteFromIsoBaseMedia)({
|
|
12
12
|
info,
|
|
13
13
|
time,
|
|
14
14
|
logLevel,
|
|
15
15
|
currentPosition,
|
|
16
16
|
isoState,
|
|
17
|
+
mp4HeaderSegment,
|
|
18
|
+
structure,
|
|
17
19
|
});
|
|
18
20
|
}
|
|
19
|
-
if (info.type === 'wav-seeking-
|
|
20
|
-
return (0,
|
|
21
|
+
if (info.type === 'wav-seeking-hints') {
|
|
22
|
+
return (0, get_seeking_byte_2.getSeekingByteFromWav)({
|
|
21
23
|
info,
|
|
22
24
|
time,
|
|
23
25
|
});
|
|
24
26
|
}
|
|
25
|
-
if (info.type === 'webm-seeking-
|
|
26
|
-
return (0,
|
|
27
|
+
if (info.type === 'webm-seeking-hints') {
|
|
28
|
+
return (0, get_seeking_byte_3.getSeekingByteFromMatroska)({
|
|
27
29
|
info,
|
|
28
30
|
time,
|
|
29
31
|
webmState,
|
|
30
32
|
logLevel,
|
|
31
33
|
mediaSection,
|
|
32
|
-
keyframes,
|
|
33
34
|
});
|
|
34
35
|
}
|
|
35
|
-
if (info.type === 'transport-stream-seeking-
|
|
36
|
+
if (info.type === 'transport-stream-seeking-hints') {
|
|
36
37
|
const lastKeyframeBeforeTimeInSeconds = (0, observed_pes_header_1.getLastKeyFrameBeforeTimeInSeconds)({
|
|
37
38
|
observedPesHeaders: info.observedPesHeaders,
|
|
38
39
|
timeInSeconds: time,
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
import type { IsoBaseMediaStructure } from './parse-result';
|
|
2
|
-
import type {
|
|
2
|
+
import type { SeekingHints } from './seeking-hints';
|
|
3
3
|
import type { TracksState } from './state/has-tracks-section';
|
|
4
4
|
import type { IsoBaseMediaState } from './state/iso-base-media/iso-state';
|
|
5
|
+
import type { KeyframesState } from './state/keyframes';
|
|
6
|
+
import type { WebmState } from './state/matroska/webm';
|
|
5
7
|
import type { StructureState } from './state/structure';
|
|
6
8
|
import type { TransportStreamState } from './state/transport-stream/transport-stream';
|
|
7
9
|
import type { MediaSectionState } from './state/video-section';
|
|
8
|
-
export declare const
|
|
10
|
+
export declare const getSeekingHints: ({ structureState, mp4HeaderSegment, mediaSectionState, isoState, transportStream, tracksState, keyframesState, webmState, }: {
|
|
9
11
|
structureState: StructureState;
|
|
10
12
|
mp4HeaderSegment: IsoBaseMediaStructure | null;
|
|
11
13
|
mediaSectionState: MediaSectionState;
|
|
12
14
|
isoState: IsoBaseMediaState;
|
|
13
15
|
transportStream: TransportStreamState;
|
|
14
16
|
tracksState: TracksState;
|
|
15
|
-
|
|
17
|
+
keyframesState: KeyframesState;
|
|
18
|
+
webmState: WebmState;
|
|
19
|
+
}) => SeekingHints | null;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getSeekingHints = void 0;
|
|
4
|
+
const seeking_hints_1 = require("./containers/iso-base-media/seeking-hints");
|
|
5
|
+
const seeking_hints_2 = require("./containers/transport-stream/seeking-hints");
|
|
6
|
+
const seeking_hints_3 = require("./containers/wav/seeking-hints");
|
|
7
|
+
const seeking_hints_4 = require("./containers/webm/seek/seeking-hints");
|
|
8
|
+
const getSeekingHints = ({ structureState, mp4HeaderSegment, mediaSectionState, isoState, transportStream, tracksState, keyframesState, webmState, }) => {
|
|
9
|
+
const structure = structureState.getStructureOrNull();
|
|
10
|
+
if (!structure) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
if (structure.type === 'iso-base-media') {
|
|
14
|
+
return (0, seeking_hints_1.getSeekingHintsFromMp4)({
|
|
15
|
+
structureState,
|
|
16
|
+
isoState,
|
|
17
|
+
mp4HeaderSegment,
|
|
18
|
+
mediaSectionState,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
if (structure.type === 'wav') {
|
|
22
|
+
return (0, seeking_hints_3.getSeekingHintsFromWav)({
|
|
23
|
+
structure,
|
|
24
|
+
mediaSectionState,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
if (structure.type === 'matroska') {
|
|
28
|
+
return (0, seeking_hints_4.getSeekingHintsFromMatroska)(tracksState, keyframesState, webmState);
|
|
29
|
+
}
|
|
30
|
+
if (structure.type === 'transport-stream') {
|
|
31
|
+
return (0, seeking_hints_2.getSeekingHintsFromTransportStream)(transportStream, tracksState);
|
|
32
|
+
}
|
|
33
|
+
throw new Error(`Seeking is not supported for this format: ${structure.type}`);
|
|
34
|
+
};
|
|
35
|
+
exports.getSeekingHints = getSeekingHints;
|
package/dist/get-tracks.d.ts
CHANGED
|
@@ -56,19 +56,19 @@ export type OtherTrack = {
|
|
|
56
56
|
};
|
|
57
57
|
export type Track = VideoTrack | AudioTrack | OtherTrack;
|
|
58
58
|
export declare const getNumberOfTracks: (moovBox: MoovBox) => number;
|
|
59
|
-
export declare const isoBaseMediaHasTracks: (state: ParserState) => boolean;
|
|
60
|
-
export declare const getHasTracks: (state: ParserState) => boolean;
|
|
59
|
+
export declare const isoBaseMediaHasTracks: (state: ParserState, mayUsePrecomputed: boolean) => boolean;
|
|
60
|
+
export declare const getHasTracks: (state: ParserState, mayUsePrecomputed: boolean) => boolean;
|
|
61
61
|
export declare const getTracksFromMoovBox: (moovBox: MoovBox) => {
|
|
62
62
|
videoTracks: VideoTrack[];
|
|
63
63
|
audioTracks: AudioTrack[];
|
|
64
64
|
otherTracks: OtherTrack[];
|
|
65
65
|
};
|
|
66
|
-
export declare const getTracksFromIsoBaseMedia: (state: ParserState) => {
|
|
66
|
+
export declare const getTracksFromIsoBaseMedia: (state: ParserState, mayUsePrecomputed: boolean) => {
|
|
67
67
|
videoTracks: VideoTrack[];
|
|
68
68
|
audioTracks: AudioTrack[];
|
|
69
69
|
otherTracks: OtherTrack[];
|
|
70
70
|
};
|
|
71
71
|
export declare const defaultGetTracks: (parserState: ParserState) => AllTracks;
|
|
72
72
|
export declare const defaultHasallTracks: (parserState: ParserState) => boolean;
|
|
73
|
-
export declare const getTracks: (state: ParserState) => AllTracks;
|
|
73
|
+
export declare const getTracks: (state: ParserState, mayUsePrecomputed: boolean) => AllTracks;
|
|
74
74
|
export {};
|
package/dist/get-tracks.js
CHANGED
|
@@ -14,15 +14,16 @@ const getNumberOfTracks = (moovBox) => {
|
|
|
14
14
|
return mvHdBox.nextTrackId - 1;
|
|
15
15
|
};
|
|
16
16
|
exports.getNumberOfTracks = getNumberOfTracks;
|
|
17
|
-
const isoBaseMediaHasTracks = (state) => {
|
|
17
|
+
const isoBaseMediaHasTracks = (state, mayUsePrecomputed) => {
|
|
18
18
|
return Boolean((0, traversal_1.getMoovBoxFromState)({
|
|
19
19
|
structureState: state.structure,
|
|
20
20
|
isoState: state.iso,
|
|
21
21
|
mp4HeaderSegment: state.mp4HeaderSegment,
|
|
22
|
+
mayUsePrecomputed,
|
|
22
23
|
}));
|
|
23
24
|
};
|
|
24
25
|
exports.isoBaseMediaHasTracks = isoBaseMediaHasTracks;
|
|
25
|
-
const getHasTracks = (state) => {
|
|
26
|
+
const getHasTracks = (state, mayUsePrecomputed) => {
|
|
26
27
|
const structure = state.structure.getStructure();
|
|
27
28
|
if (structure.type === 'matroska') {
|
|
28
29
|
return (0, get_ready_tracks_1.matroskaHasTracks)({
|
|
@@ -31,7 +32,7 @@ const getHasTracks = (state) => {
|
|
|
31
32
|
});
|
|
32
33
|
}
|
|
33
34
|
if (structure.type === 'iso-base-media') {
|
|
34
|
-
return (0, exports.isoBaseMediaHasTracks)(state);
|
|
35
|
+
return (0, exports.isoBaseMediaHasTracks)(state, mayUsePrecomputed);
|
|
35
36
|
}
|
|
36
37
|
if (structure.type === 'riff') {
|
|
37
38
|
return (0, get_tracks_from_avi_1.hasAllTracksFromAvi)(state);
|
|
@@ -109,11 +110,12 @@ const getTracksFromMoovBox = (moovBox) => {
|
|
|
109
110
|
};
|
|
110
111
|
};
|
|
111
112
|
exports.getTracksFromMoovBox = getTracksFromMoovBox;
|
|
112
|
-
const getTracksFromIsoBaseMedia = (state) => {
|
|
113
|
+
const getTracksFromIsoBaseMedia = (state, mayUsePrecomputed) => {
|
|
113
114
|
const moovBox = (0, traversal_1.getMoovBoxFromState)({
|
|
114
115
|
structureState: state.structure,
|
|
115
116
|
isoState: state.iso,
|
|
116
117
|
mp4HeaderSegment: state.mp4HeaderSegment,
|
|
118
|
+
mayUsePrecomputed,
|
|
117
119
|
});
|
|
118
120
|
if (!moovBox) {
|
|
119
121
|
return {
|
|
@@ -147,13 +149,13 @@ const defaultHasallTracks = (parserState) => {
|
|
|
147
149
|
}
|
|
148
150
|
};
|
|
149
151
|
exports.defaultHasallTracks = defaultHasallTracks;
|
|
150
|
-
const getTracks = (state) => {
|
|
152
|
+
const getTracks = (state, mayUsePrecomputed) => {
|
|
151
153
|
const structure = state.structure.getStructure();
|
|
152
154
|
if (structure.type === 'matroska') {
|
|
153
155
|
return getCategorizedTracksFromMatroska(state);
|
|
154
156
|
}
|
|
155
157
|
if (structure.type === 'iso-base-media') {
|
|
156
|
-
return (0, exports.getTracksFromIsoBaseMedia)(state);
|
|
158
|
+
return (0, exports.getTracksFromIsoBaseMedia)(state, mayUsePrecomputed);
|
|
157
159
|
}
|
|
158
160
|
if (structure.type === 'riff') {
|
|
159
161
|
return (0, get_tracks_from_avi_1.getTracksFromAvi)(structure, state);
|
package/dist/get-video-codec.js
CHANGED
|
@@ -7,12 +7,12 @@ const get_sample_aspect_ratio_1 = require("./get-sample-aspect-ratio");
|
|
|
7
7
|
const get_tracks_1 = require("./get-tracks");
|
|
8
8
|
const getVideoCodec = (state) => {
|
|
9
9
|
var _a, _b;
|
|
10
|
-
const track = (0, get_tracks_1.getTracks)(state);
|
|
10
|
+
const track = (0, get_tracks_1.getTracks)(state, true);
|
|
11
11
|
return (_b = (_a = track.videoTracks[0]) === null || _a === void 0 ? void 0 : _a.codecWithoutConfig) !== null && _b !== void 0 ? _b : null;
|
|
12
12
|
};
|
|
13
13
|
exports.getVideoCodec = getVideoCodec;
|
|
14
14
|
const hasVideoCodec = (state) => {
|
|
15
|
-
return (0, get_tracks_1.getHasTracks)(state);
|
|
15
|
+
return (0, get_tracks_1.getHasTracks)(state, true);
|
|
16
16
|
};
|
|
17
17
|
exports.hasVideoCodec = hasVideoCodec;
|
|
18
18
|
const getVideoPrivateData = (trakBox) => {
|
package/dist/has-all-info.js
CHANGED
|
@@ -51,7 +51,7 @@ const getAvailableInfo = ({ state, }) => {
|
|
|
51
51
|
return Boolean(structure && (0, get_audio_codec_1.hasAudioCodec)(state));
|
|
52
52
|
}
|
|
53
53
|
if (key === 'tracks') {
|
|
54
|
-
return Boolean(structure && (0, get_tracks_1.getHasTracks)(state));
|
|
54
|
+
return Boolean(structure && (0, get_tracks_1.getHasTracks)(state, true));
|
|
55
55
|
}
|
|
56
56
|
if (key === 'keyframes') {
|
|
57
57
|
return Boolean(structure && (0, get_keyframes_1.hasKeyframes)(state));
|
package/dist/index.d.ts
CHANGED
|
@@ -778,11 +778,15 @@ export declare const MediaParserInternals: {
|
|
|
778
778
|
addPesHeader: (pesHeader: import("./containers/transport-stream/parse-pes").PacketPes) => void;
|
|
779
779
|
markPtsAsKeyframe: (pts: number) => void;
|
|
780
780
|
getPesKeyframeHeaders: () => import("./containers/transport-stream/parse-pes").PacketPes[];
|
|
781
|
+
setPesKeyframesFromSeekingHints: (hints: import("./seeking-hints").TransportStreamSeekingHints) => void;
|
|
781
782
|
};
|
|
782
783
|
streamBuffers: Map<number, import("./containers/transport-stream/process-stream-buffers").TransportStreamPacketBuffer>;
|
|
783
784
|
startOffset: {
|
|
784
785
|
getOffset: (trackId: number) => number;
|
|
785
|
-
setOffset: (
|
|
786
|
+
setOffset: ({ newOffset, trackId }: {
|
|
787
|
+
trackId: number;
|
|
788
|
+
newOffset: number;
|
|
789
|
+
}) => void;
|
|
786
790
|
};
|
|
787
791
|
resetBeforeSeek: () => void;
|
|
788
792
|
lastEmittedSample: {
|
|
@@ -798,11 +802,18 @@ export declare const MediaParserInternals: {
|
|
|
798
802
|
cues: import("./containers/webm/seek/format-cues").MatroskaCue[];
|
|
799
803
|
segmentOffset: number;
|
|
800
804
|
} | null>;
|
|
805
|
+
getIfAlreadyLoaded: () => {
|
|
806
|
+
cues: import("./containers/webm/seek/format-cues").MatroskaCue[];
|
|
807
|
+
segmentOffset: number;
|
|
808
|
+
} | null;
|
|
809
|
+
setFromSeekingHints: (hints: import("./seeking-hints").WebmSeekingHints) => void;
|
|
801
810
|
};
|
|
802
811
|
onTrackEntrySegment: import("./containers/webm/segments").OnTrackEntrySegment;
|
|
803
812
|
getTrackInfoByNumber: (id: number) => import("./containers/webm/segments/track-entry").TrackInfo;
|
|
804
813
|
setTimestampOffset: (byteOffset: number, timestamp: number) => void;
|
|
805
814
|
getTimestampOffsetForByteOffset: (byteOffset: number) => number | undefined;
|
|
815
|
+
getTimeStampMapForSeekingHints: () => Map<number, number>;
|
|
816
|
+
setTimeStampMapForSeekingHints: (newTimestampMap: Map<number, number>) => void;
|
|
806
817
|
getTimescale: () => number;
|
|
807
818
|
setTimescale: (newTimescale: number) => void;
|
|
808
819
|
addSegment: (seg: Omit<import("./state/matroska/webm").SegmentSection, "index">) => void;
|
|
@@ -819,11 +830,27 @@ export declare const MediaParserInternals: {
|
|
|
819
830
|
setSamples: (mdatStart: number, samples: import("./state/iso-base-media/cached-sample-positions").FlatSample[]) => void;
|
|
820
831
|
};
|
|
821
832
|
moov: {
|
|
822
|
-
setMoovBox: (moov:
|
|
823
|
-
|
|
833
|
+
setMoovBox: (moov: {
|
|
834
|
+
moovBox: import("./containers/iso-base-media/moov/moov").MoovBox;
|
|
835
|
+
precomputed: boolean;
|
|
836
|
+
}) => void;
|
|
837
|
+
getMoovBoxAndPrecomputed: () => {
|
|
838
|
+
moovBox: import("./containers/iso-base-media/moov/moov").MoovBox;
|
|
839
|
+
precomputed: boolean;
|
|
840
|
+
} | null;
|
|
824
841
|
};
|
|
825
842
|
mfra: {
|
|
826
843
|
triggerLoad: () => Promise<import("./containers/iso-base-media/base-media-box").IsoBaseMediaBox[] | null>;
|
|
844
|
+
getIfAlreadyLoaded: () => import("./containers/iso-base-media/base-media-box").IsoBaseMediaBox[] | null;
|
|
845
|
+
setFromSeekingHints: (hints: import("./seeking-hints").IsoBaseMediaSeekingHints) => void;
|
|
846
|
+
};
|
|
847
|
+
moof: {
|
|
848
|
+
getMoofBoxes: () => import("./state/iso-base-media/precomputed-moof").MoofBox[];
|
|
849
|
+
setMoofBoxes: (boxes: import("./state/iso-base-media/precomputed-moof").MoofBox[]) => void;
|
|
850
|
+
};
|
|
851
|
+
tfra: {
|
|
852
|
+
getTfraBoxes: () => import("./containers/iso-base-media/mfra/tfra").TfraBox[];
|
|
853
|
+
setTfraBoxes: (boxes: import("./containers/iso-base-media/mfra/tfra").TfraBox[]) => void;
|
|
827
854
|
};
|
|
828
855
|
};
|
|
829
856
|
mp3Info: {
|
|
@@ -923,6 +950,7 @@ export declare const MediaParserInternals: {
|
|
|
923
950
|
keyframes: {
|
|
924
951
|
addKeyframe: (keyframe: import("./options").MediaParserKeyframe) => void;
|
|
925
952
|
getKeyframes: () => import("./options").MediaParserKeyframe[];
|
|
953
|
+
setFromSeekingHints: (hints: import("./seeking-hints").WebmSeekingHints) => void;
|
|
926
954
|
};
|
|
927
955
|
structure: {
|
|
928
956
|
getStructureOrNull: () => import("./parse-result").MediaParserStructureUnstable | null;
|