Add .gitignore to exclude all node packages and lock files
This commit is contained in:
Generated
Vendored
+78
@@ -0,0 +1,78 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.getSamplesFromMoof = void 0;
|
||||
const traversal_1 = require("./containers/iso-base-media/traversal");
|
||||
const getSamplesFromTraf = (trafSegment, moofOffset, trexBoxes) => {
|
||||
var _a, _b, _c, _d, _e, _f;
|
||||
if (trafSegment.type !== 'regular-box' || trafSegment.boxType !== 'traf') {
|
||||
throw new Error('Expected traf-box');
|
||||
}
|
||||
const tfhdBox = (0, traversal_1.getTfhdBox)(trafSegment);
|
||||
const trexBox = (_a = trexBoxes.find((t) => t.trackId === (tfhdBox === null || tfhdBox === void 0 ? void 0 : tfhdBox.trackId))) !== null && _a !== void 0 ? _a : null;
|
||||
// intentional || instead of ?? to allow for 0, doesn't make sense for duration or size
|
||||
const defaultTrackSampleDuration = (tfhdBox === null || tfhdBox === void 0 ? void 0 : tfhdBox.defaultSampleDuration) || (trexBox === null || trexBox === void 0 ? void 0 : trexBox.defaultSampleDuration) || null;
|
||||
const defaultTrackSampleSize = (tfhdBox === null || tfhdBox === void 0 ? void 0 : tfhdBox.defaultSampleSize) || (trexBox === null || trexBox === void 0 ? void 0 : trexBox.defaultSampleSize) || null;
|
||||
// but flags may just be 0 :)
|
||||
const defaultTrackSampleFlags = (_c = (_b = tfhdBox === null || tfhdBox === void 0 ? void 0 : tfhdBox.defaultSampleFlags) !== null && _b !== void 0 ? _b : trexBox === null || trexBox === void 0 ? void 0 : trexBox.defaultSampleFlags) !== null && _c !== void 0 ? _c : null;
|
||||
const tfdtBox = (0, traversal_1.getTfdtBox)(trafSegment);
|
||||
const trunBoxes = (0, traversal_1.getTrunBoxes)(trafSegment);
|
||||
let time = 0;
|
||||
let offset = 0;
|
||||
let dataOffset = 0;
|
||||
const samples = [];
|
||||
for (const trunBox of trunBoxes) {
|
||||
let i = -1;
|
||||
if (trunBox.dataOffset) {
|
||||
dataOffset = trunBox.dataOffset;
|
||||
offset = 0;
|
||||
}
|
||||
for (const sample of trunBox.samples) {
|
||||
i++;
|
||||
const duration = sample.sampleDuration || defaultTrackSampleDuration;
|
||||
if (duration === null) {
|
||||
throw new Error('Expected duration');
|
||||
}
|
||||
const size = (_d = sample.sampleSize) !== null && _d !== void 0 ? _d : defaultTrackSampleSize;
|
||||
if (size === null) {
|
||||
throw new Error('Expected size');
|
||||
}
|
||||
const isFirstSample = i === 0;
|
||||
const sampleFlags = sample.sampleFlags
|
||||
? sample.sampleFlags
|
||||
: isFirstSample && trunBox.firstSampleFlags !== null
|
||||
? trunBox.firstSampleFlags
|
||||
: defaultTrackSampleFlags;
|
||||
if (sampleFlags === null) {
|
||||
throw new Error('Expected sample flags');
|
||||
}
|
||||
const keyframe = !((sampleFlags >> 16) & 0x1);
|
||||
const dts = time + ((_e = tfdtBox === null || tfdtBox === void 0 ? void 0 : tfdtBox.baseMediaDecodeTime) !== null && _e !== void 0 ? _e : 0);
|
||||
const samplePosition = {
|
||||
offset: offset + (moofOffset !== null && moofOffset !== void 0 ? moofOffset : 0) + (dataOffset !== null && dataOffset !== void 0 ? dataOffset : 0),
|
||||
decodingTimestamp: dts,
|
||||
timestamp: dts + ((_f = sample.sampleCompositionTimeOffset) !== null && _f !== void 0 ? _f : 0),
|
||||
duration,
|
||||
isKeyframe: keyframe,
|
||||
size,
|
||||
chunk: 0,
|
||||
bigEndian: false,
|
||||
chunkSize: null,
|
||||
};
|
||||
samples.push(samplePosition);
|
||||
offset += size;
|
||||
time += duration;
|
||||
}
|
||||
}
|
||||
return samples;
|
||||
};
|
||||
const getSamplesFromMoof = ({ moofBox, trackId, trexBoxes, }) => {
|
||||
const mapped = moofBox.trafBoxes.map((traf) => {
|
||||
const tfhdBox = (0, traversal_1.getTfhdBox)(traf);
|
||||
if (!tfhdBox || tfhdBox.trackId !== trackId) {
|
||||
return [];
|
||||
}
|
||||
return getSamplesFromTraf(traf, moofBox.offset, trexBoxes);
|
||||
});
|
||||
return mapped.flat(1);
|
||||
};
|
||||
exports.getSamplesFromMoof = getSamplesFromMoof;
|
||||
Reference in New Issue
Block a user