UNPKG

kontainer-js

Version:

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

196 lines (137 loc) 5.49 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = undefined; var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray'); var _slicedToArray3 = _interopRequireDefault(_slicedToArray2); var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _Component2 = require('../../core/Component'); var _Component3 = _interopRequireDefault(_Component2); var _Writer = require('../../core/Writer'); var _Writer2 = _interopRequireDefault(_Writer); var _Reader = require('../../core/Reader'); var _Reader2 = _interopRequireDefault(_Reader); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var Box = function (_Component) { (0, _inherits3.default)(Box, _Component); function Box(type, props) { (0, _classCallCheck3.default)(this, Box); var _this = (0, _possibleConstructorReturn3.default)(this, (0, _getPrototypeOf2.default)(Box).call(this, type, props)); _this.size = 0; return _this; } (0, _createClass3.default)(Box, [{ key: 'serialize', value: function serialize(buffer) { var offset = arguments.length <= 1 || arguments[1] === undefined ? 0 : arguments[1]; //console.log('--- Box.serialize enter.'); var size = this.size; var type = this.type; var base = offset; if (size < 4294967296) { base += _Writer2.default.writeNumber(size, buffer, base, 4); } else { console.error('IsoBmff.Box.serialize(' + size + '): largesize(>4GB) is not supported.'); return 0; } base += _Writer2.default.writeString(type, buffer, base, 4); if (type === 'uuid') { base += _Writer2.default.writeString(this.props.extendedType, buffer, base, 16); } this.size = base - offset; //console.log(`--- Box.serialize exit. size=${this.size}`); return this.size; } }, { key: 'getSize', value: function getSize() { return this.size; } }, { key: 'setSize', value: function setSize(size, buffer) { var offset = arguments.length <= 2 || arguments[2] === undefined ? 0 : arguments[2]; if (size < 4294967296) { _Writer2.default.writeNumber(size, buffer, offset, 4); } else { console.error('IsoBmff.Box.setSize(' + size + '): largesize(>4GB) is not supported.'); return 0; } this.size = size; } // Parses buffer and returns props. }], [{ key: 'parse', value: function parse(buffer) { var offset = arguments.length <= 1 || arguments[1] === undefined ? 0 : arguments[1]; var LENGTH = buffer.length; var size = void 0; var type = void 0; var extendedType = void 0; var base = offset; var readNum = void 0; // Read size. var _Reader$readNumber = _Reader2.default.readNumber(buffer, base, 4); var _Reader$readNumber2 = (0, _slicedToArray3.default)(_Reader$readNumber, 2); readNum = _Reader$readNumber2[0]; size = _Reader$readNumber2[1]; base += readNum; // Read boxType. var _Reader$readString = _Reader2.default.readString(buffer, base, 4); var _Reader$readString2 = (0, _slicedToArray3.default)(_Reader$readString, 2); readNum = _Reader$readString2[0]; type = _Reader$readString2[1]; base += readNum; if (size === 0) { // box extends to end of file void 0; } else if (size === 1) { var _Reader$readNumber3 = _Reader2.default.readNumber(buffer, base, 8); // 64bit largesize var _Reader$readNumber4 = (0, _slicedToArray3.default)(_Reader$readNumber3, 2); readNum = _Reader$readNumber4[0]; size = _Reader$readNumber4[1]; base += readNum; } if (type === 'uuid') { var _Reader$readString3 = _Reader2.default.readString(buffer, base, 16); var _Reader$readString4 = (0, _slicedToArray3.default)(_Reader$readString3, 2); readNum = _Reader$readString4[0]; extendedType = _Reader$readString4[1]; base += 16; } return [base - offset, { size: size, type: type, extendedType: extendedType }]; } }, { key: 'getMimeType', value: function getMimeType(element) { var results = element.querySelectorAll('hdlr'); var audioOnly = results.every(function (hdlr) { return hdlr.props.handlerType === 'audio'; }); if (audioOnly) { return 'audio/mp4'; } return 'video/mp4'; } }]); return Box; }(_Component3.default); exports.default = Box; Box.QUANTITY_ANY_NUMBER = _Component3.default.QUANTITY_ANY_NUMBER; Box.QUANTITY_EXACTLY_ONE = _Component3.default.QUANTITY_EXACTLY_ONE; Box.QUANTITY_ZERO_OR_ONE = _Component3.default.QUANTITY_ZERO_OR_ONE;