UNPKG

@remotion/media-parser

Version:

A pure JavaScript library for parsing video files

55 lines (54 loc) 2.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.maySkipOverSamplesInTheMiddle = exports.maySkipVideoData = exports.missesMatroskaTracks = void 0; const get_ready_tracks_1 = require("../containers/webm/get-ready-tracks"); const traversal_1 = require("../containers/webm/traversal"); const need_samples_for_fields_1 = require("./need-samples-for-fields"); const getHasCallbacks = (state) => { const hasNoTrackHandlers = !state.callbacks.hasAudioTrackHandlers && !state.callbacks.hasVideoTrackHandlers; if (hasNoTrackHandlers) { return false; } const hasAllTracksAndNoCallbacks = !state.callbacks.tracks.hasAllTracks() || Object.values(state.callbacks.videoSampleCallbacks).length > 0 || Object.values(state.callbacks.audioSampleCallbacks).length > 0; return hasAllTracksAndNoCallbacks; }; const missesMatroskaTracks = (state) => { const struct = state.structure.getStructureOrNull(); if (struct === null) { return false; } if (struct.type !== 'matroska') { return false; } const mainSegment = (0, traversal_1.getMainSegment)(struct.boxes); if (mainSegment === null) { return false; } return ((0, get_ready_tracks_1.getTracksFromMatroska)({ structureState: state.structure, webmState: state.webm, }).missingInfo.length > 0); }; exports.missesMatroskaTracks = missesMatroskaTracks; const maySkipVideoData = ({ state }) => { const hasCallbacks = getHasCallbacks(state); return (!hasCallbacks && !(0, need_samples_for_fields_1.needsToIterateOverSamples)({ emittedFields: state.emittedFields, fields: state.fields, }) && !(0, exports.missesMatroskaTracks)(state)); }; exports.maySkipVideoData = maySkipVideoData; const maySkipOverSamplesInTheMiddle = ({ state, }) => { const hasCallbacks = getHasCallbacks(state); return (!hasCallbacks && !(0, need_samples_for_fields_1.needsToIterateOverEverySample)({ emittedFields: state.emittedFields, fields: state.fields, })); }; exports.maySkipOverSamplesInTheMiddle = maySkipOverSamplesInTheMiddle;