UNPKG

@remotion/media-parser

Version:

A pure JavaScript library for parsing video files

41 lines (40 loc) 1.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.maxMacroblockBufferSize = exports.macroBlocksPerFrame = void 0; // https://www.itu.int/rec/T-REC-H.264-202408-I // Table A-1 – Level limits const maxMacroblocksByLevel = { 10: 396, // Level 1.0 11: 900, // Level 1.1 12: 2376, // Level 1.2 13: 2376, // Level 1.3 20: 2376, // Level 2.0 21: 4752, // Level 2.1 22: 8100, // Level 2.2 30: 8100, // Level 3.0 31: 18000, // Level 3.1 32: 20480, // Level 3.2 40: 32768, // Level 4.0 41: 32768, // Level 4.1 42: 34816, // Level 4.2 50: 110400, // Level 5.0 51: 184320, // Level 5.1 52: 184320, // Level 5.2 60: 696320, // Level 6.0 61: 696320, // Level 6.1 62: 696320, // Level 6.2 }; const macroBlocksPerFrame = (sps) => { const { pic_width_in_mbs_minus1, pic_height_in_map_units_minus1 } = sps; return (pic_width_in_mbs_minus1 + 1) * (pic_height_in_map_units_minus1 + 1); }; exports.macroBlocksPerFrame = macroBlocksPerFrame; const maxMacroblockBufferSize = (sps) => { const { level } = sps; const maxMacroblocks = maxMacroblocksByLevel[level]; if (maxMacroblocks === undefined) { throw new Error(`Unsupported level: ${level.toString(16)}`); } return maxMacroblocks; }; exports.maxMacroblockBufferSize = maxMacroblockBufferSize;