From 6e18081f5188576b1500552771c70e121097ca87 Mon Sep 17 00:00:00 2001 From: Anthony Jones Date: Wed, 16 Mar 2022 17:06:46 +1300 Subject: [PATCH] fix: added support for 64 bit atom sizes --- lib/mp4/find-box.js | 14 ++++++++++++++ lib/tools/mp4-inspector.js | 5 +++++ 2 files changed, 19 insertions(+) diff --git a/lib/mp4/find-box.js b/lib/mp4/find-box.js index eced28d1..32cf533d 100644 --- a/lib/mp4/find-box.js +++ b/lib/mp4/find-box.js @@ -18,6 +18,20 @@ var findBox = function(data, path) { type = parseType(data.subarray(i + 4, i + 8)); + if (size === 1) { + size = toUnsigned( + data[i + 8] << 56 | + data[i + 9] << 48 | + data[i + 10] << 40 | + data[i + 11] << 32 | + data[i + 12] << 24 | + data[i + 13] << 16 | + data[i + 14] << 8 | + data[i + 15]); + i += 8; + size -= 8; + } + end = size > 1 ? i + size : data.byteLength; if (type === path[0]) { diff --git a/lib/tools/mp4-inspector.js b/lib/tools/mp4-inspector.js index 0acecb46..650eb4a7 100644 --- a/lib/tools/mp4-inspector.js +++ b/lib/tools/mp4-inspector.js @@ -661,6 +661,11 @@ inspectMp4 = function(data) { // parse box data size = view.getUint32(i); type = parseType(data.subarray(i + 4, i + 8)); + if (size === 1) { + size = getUint64(data.subarray(i + 8)); + i += 8; + size -= 8; + } end = size > 1 ? i + size : data.byteLength; // parse type-specific data