isobmff-inspector
Version:
Simple ISOBMFF parser, compatible with JavaScript and Node.JS
59 lines (51 loc) • 1.86 kB
JavaScript
const SYSTEM_IDS = {
"1077EFECC0B24D02ACE33C1E52E2FB4B": "cenc",
"1F83E1E86EE94F0DBA2F5EC4E3ED1A66": "SecureMedia",
"35BF197B530E42D78B651B4BF415070F": "DivX DRM",
"45D481CB8FE049C0ADA9AB2D2455B2F2": "CoreCrypt",
"5E629AF538DA4063897797FFBD9902D4": "Marlin",
"616C7469636173742D50726F74656374": "AltiProtect",
"644FE7B5260F4FAD949A0762FFB054B4": "CMLA",
"69F908AF481646EA910CCD5DCCCB0A3A": "Marlin",
"6A99532D869F59229A91113AB7B1E2F3": "MobiDRM",
"80A6BE7E14484C379E70D5AEBE04C8D2": "Irdeto",
"94CE86FB07FF4F43ADB893D2FA968CA2": "FairPlay",
"992C46E6C4374899B6A050FA91AD0E39": "SteelKnot",
"9A04F07998404286AB92E65BE0885F95": "PlayReady",
"9A27DD82FDE247258CBC4234AA06EC09": "Verimatrix VCAS",
"A68129D3575B4F1A9CBA3223846CF7C3": "VideoGuard Everywhere",
"ADB41C242DBF4A6D958B4457C0D27B95": "Nagra",
"B4413586C58CFFB094A5D4896C1AF6C3": "Viaccess-Orca",
"DCF4E3E362F158187BA60A6FE33FF3DD": "DigiCAP",
"E2719D58A985B3C9781AB030AF78D30E": "ClearKey",
"EDEF8BA979D64ACEA3C827DCD51D21ED": "Widevine",
"F239E769EFA348509C16A903C6932EFB": "PrimeTime",
};
export default {
name: "Protection System Specific Header",
description: "",
parser(reader) {
const ret = {};
ret.version = reader.bytesToInt(1);
if (ret.version > 1) {
throw new Error("invalid version");
}
ret.flags = reader.bytesToInt(3);
ret.systemID = reader.bytesToHex(16);
const systemIDName = SYSTEM_IDS[ret.systemID];
if (systemIDName) {
ret.systemID += ` (${systemIDName})`;
}
if (ret.version === 1) {
ret.KID_count = reader.bytesToInt(4);
ret.KIDs = [];
let i = ret.KID_count;
while (i--) {
ret.KIDs.push([reader.bytesToHex(16)]);
}
}
ret.data_length = reader.bytesToInt(4);
ret.data = reader.bytesToHex(ret.data_length);
return ret;
},
};