UNPKG

@isomp4/box-moof

Version:

Implements encoding and decoding of the moof box type

54 lines (53 loc) 1.8 kB
import { FullBoxEncoding, readSafeUInt64BE } from "@isomp4/core"; class TrackFragmentBaseMediaDecodeTimeBoxEncoding extends FullBoxEncoding { constructor() { super("tfdt"); } encodingLength(obj) { return super.encodingLength(obj); // TODO implement } encodeTo(obj, buffer) { const requiredBytes = super.encodeTo(obj, buffer); if (requiredBytes > 0) { return requiredBytes; } // let offset = this.encodedBytes; // // TODO implementing encoding // this.encodedBytes = offset; return 0; } decode(buffer, header) { const superBox = super.decode(buffer, header); if (typeof superBox === "number") { return superBox; } let baseMediaDecodeTime; let offset = this.decodedBytes; switch (superBox.version) { case 0: // 32-bit time if (buffer.length < offset + 4) { return offset + 4; } baseMediaDecodeTime = buffer.readUInt32BE(offset); offset += 4; break; case 1: // 64-bit time if (buffer.length < offset + 8) { return offset + 8; } baseMediaDecodeTime = readSafeUInt64BE(buffer, offset); offset += 8; break; default: throw new Error("Unsupported version of tfdt box: " + superBox.version); } this.decodedBytes = offset; return { ...superBox, baseMediaDecodeTime, }; } } export const tfdt = new TrackFragmentBaseMediaDecodeTimeBoxEncoding();