UNPKG

kontainer-js

Version:

A media file format generator/parser that exposes a React-like API.

106 lines (74 loc) 2.93 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray'); var _slicedToArray3 = _interopRequireDefault(_slicedToArray2); var _Element = require('./EBMLElement/Element'); var _Element2 = _interopRequireDefault(_Element); var _ElementLookup = require('./ElementLookup'); var _ElementLookup2 = _interopRequireDefault(_ElementLookup); var _Reader = require('../core/Reader'); var _Reader2 = _interopRequireDefault(_Reader); var _Util = require('../core/Util'); var _Error = require('../core/Error'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function getComponentClass(name) { return _ElementLookup2.default.lookupByName(name); } function parseTypeAndSize(buffer, offset) { var options = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2]; var _Element$parse = _Element2.default.parse(buffer, offset); var _Element$parse2 = (0, _slicedToArray3.default)(_Element$parse, 2); var readBytesNum = _Element$parse2[0]; var props = _Element$parse2[1]; var elementClass = _ElementLookup2.default.lookupById(props.elementId, !!options.ignoreUnknown); return [readBytesNum, elementClass, props.size === -1 ? -1 : readBytesNum + props.size]; } function getRootWrapperClass() { return _ElementLookup2.default.lookupByName('File'); } function skipBytes(buffer, offset) { for (var i = offset; i < buffer.length; i++) { try { var _Element$parse3 = _Element2.default.parse(buffer, i); var _Element$parse4 = (0, _slicedToArray3.default)(_Element$parse3, 2); var readBytesNum = _Element$parse4[0]; var props = _Element$parse4[1]; var elementClass = _ElementLookup2.default.lookupById(props.elementId, true); return i - offset; } catch (e) { continue; } } (0, _Util.throwException)('Matroska.skipBytes: Reached the end of buffer.'); } function canParse(buffer, offset) { var readBytesNum = void 0, componentClass = void 0; try { var _parseTypeAndSize = parseTypeAndSize(buffer, offset); var _parseTypeAndSize2 = (0, _slicedToArray3.default)(_parseTypeAndSize, 2); readBytesNum = _parseTypeAndSize2[0]; componentClass = _parseTypeAndSize2[1]; if (componentClass) { var _componentClass$parse = componentClass.parse(buffer, offset); var _componentClass$parse2 = (0, _slicedToArray3.default)(_componentClass$parse, 1); readBytesNum = _componentClass$parse2[0]; return true; } } catch (err) { if (componentClass && err.message === _Error.BufferReadError.ERROR_MESSAGE) { return true; } } return false; } exports.default = { name: 'webm', getComponentClass: getComponentClass, parseTypeAndSize: parseTypeAndSize, getRootWrapperClass: getRootWrapperClass, skipBytes: skipBytes, canParse: canParse };