@isomp4/box-moof
Version:
Implements encoding and decoding of the moof box type
57 lines (56 loc) • 1.89 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.tfdt = void 0;
const core_1 = require("@isomp4/core");
class TrackFragmentBaseMediaDecodeTimeBoxEncoding extends core_1.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 = core_1.readSafeUInt64BE(buffer, offset);
offset += 8;
break;
default:
throw new Error("Unsupported version of tfdt box: " + superBox.version);
}
this.decodedBytes = offset;
return {
...superBox,
baseMediaDecodeTime,
};
}
}
exports.tfdt = new TrackFragmentBaseMediaDecodeTimeBoxEncoding();