UNPKG

kontainer-js

Version:

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

215 lines (197 loc) 11.9 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _Util = require('../core/Util'); var _Unknown = require('./EBMLElement/Unknown'); var _Unknown2 = _interopRequireDefault(_Unknown); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var clazz = { 'File': require('./EBMLElement/File').default, // Level-0 element - EBML 'EBML': require('./EBMLElement/EBML').default, 'EBMLVersion': require('./EBMLElement/EBMLVersion').default, 'EBMLReadVersion': require('./EBMLElement/EBMLReadVersion').default, 'EBMLMaxIDLength': require('./EBMLElement/EBMLMaxIDLength').default, 'EBMLMaxSizeLength': require('./EBMLElement/EBMLMaxSizeLength').default, 'DocType': require('./EBMLElement/DocType').default, 'DocTypeVersion': require('./EBMLElement/DocTypeVersion').default, 'DocTypeReadVersion': require('./EBMLElement/DocTypeReadVersion').default, // Global element - Void 'Void': require('./EBMLElement/Void').default, // Level-0 element - Segment 'Segment': require('./EBMLElement/Segment').default, // Level-1 element - SeekHead 'SeekHead': require('./EBMLElement/SeekHead').default, 'Seek': require('./EBMLElement/Seek').default, 'SeekID': require('./EBMLElement/SeekID').default, 'SeekPosition': require('./EBMLElement/SeekPosition').default, // Level-1 element - Info 'Info': require('./EBMLElement/Info').default, 'SegmentUID': require('./EBMLElement/SegmentUID').default, 'TimecodeScale': require('./EBMLElement/TimecodeScale').default, 'Duration': require('./EBMLElement/Duration').default, 'DateUTC': require('./EBMLElement/DateUTC').default, 'Title': require('./EBMLElement/Title').default, 'MuxingApp': require('./EBMLElement/MuxingApp').default, 'WritingApp': require('./EBMLElement/WritingApp').default, // Level-1 element - Cluster 'Cluster': require('./EBMLElement/Cluster').default, 'Timecode': require('./EBMLElement/Timecode').default, 'PrevSize': require('./EBMLElement/PrevSize').default, 'SimpleBlock': require('./EBMLElement/SimpleBlock').default, 'BlockGroup': require('./EBMLElement/BlockGroup').default, 'Block': require('./EBMLElement/Block').default, 'BlockAdditions': require('./EBMLElement/BlockAdditions').default, 'BlockMore': require('./EBMLElement/BlockMore').default, 'BlockAddID': require('./EBMLElement/BlockAddID').default, 'BlockAdditional': require('./EBMLElement/BlockAdditional').default, 'BlockDuration': require('./EBMLElement/BlockDuration').default, 'ReferenceBlock': require('./EBMLElement/ReferenceBlock').default, 'DiscardPadding': require('./EBMLElement/DiscardPadding').default, // Level-1 element - Tracks 'Tracks': require('./EBMLElement/Tracks').default, 'TrackEntry': require('./EBMLElement/TrackEntry').default, 'TrackNumber': require('./EBMLElement/TrackNumber').default, 'TrackUID': require('./EBMLElement/TrackUID').default, 'TrackType': require('./EBMLElement/TrackType').default, 'FlagEnabled': require('./EBMLElement/FlagEnabled').default, 'FlagDefault': require('./EBMLElement/FlagDefault').default, 'FlagForced': require('./EBMLElement/FlagForced').default, 'FlagLacing': require('./EBMLElement/FlagLacing').default, 'DefaultDuration': require('./EBMLElement/DefaultDuration').default, 'Name': require('./EBMLElement/Name').default, 'Language': require('./EBMLElement/Language').default, 'CodecID': require('./EBMLElement/CodecID').default, 'CodecPrivate': require('./EBMLElement/CodecPrivate').default, 'CodecName': require('./EBMLElement/CodecName').default, 'CodecDelay': require('./EBMLElement/CodecDelay').default, 'SeekPreRoll': require('./EBMLElement/SeekPreRoll').default, 'Video': require('./EBMLElement/Video').default, 'FlagInterlaced': require('./EBMLElement/FlagInterlaced').default, 'StereoMode': require('./EBMLElement/StereoMode').default, 'AlphaMode': require('./EBMLElement/AlphaMode').default, 'PixelWidth': require('./EBMLElement/PixelWidth').default, 'PixelHeight': require('./EBMLElement/PixelHeight').default, 'PixelCropBottom': require('./EBMLElement/PixelCropBottom').default, 'PixelCropTop': require('./EBMLElement/PixelCropTop').default, 'PixelCropLeft': require('./EBMLElement/PixelCropLeft').default, 'PixelCropRight': require('./EBMLElement/PixelCropRight').default, 'DisplayWidth': require('./EBMLElement/DisplayWidth').default, 'DisplayHeight': require('./EBMLElement/DisplayHeight').default, 'DisplayUnit': require('./EBMLElement/DisplayUnit').default, 'AspectRatioType': require('./EBMLElement/AspectRatioType').default, 'Audio': require('./EBMLElement/Audio').default, 'SamplingFrequency': require('./EBMLElement/SamplingFrequency').default, 'OutputSamplingFrequency': require('./EBMLElement/OutputSamplingFrequency').default, 'Channels': require('./EBMLElement/Channels').default, 'BitDepth': require('./EBMLElement/BitDepth').default, 'ContentEncodings': require('./EBMLElement/ContentEncodings').default, 'ContentEncoding': require('./EBMLElement/ContentEncoding').default, 'ContentEncodingOrder': require('./EBMLElement/ContentEncodingOrder').default, 'ContentEncodingScope': require('./EBMLElement/ContentEncodingScope').default, 'ContentEncodingType': require('./EBMLElement/ContentEncodingType').default, 'ContentEncryption': require('./EBMLElement/ContentEncryption').default, 'ContentEncAlgo': require('./EBMLElement/ContentEncAlgo').default, 'ContentEncKeyID': require('./EBMLElement/ContentEncKeyID').default, 'ContentEncAESSettings': require('./EBMLElement/ContentEncAESSettings').default, 'AESSettingsCipherMode': require('./EBMLElement/AESSettingsCipherMode').default, // Level-1 element - Cues 'Cues': require('./EBMLElement/Cues').default, 'CuePoint': require('./EBMLElement/CuePoint').default, 'CueTime': require('./EBMLElement/CueTime').default, 'CueTrackPositions': require('./EBMLElement/CueTrackPositions').default, 'CueTrack': require('./EBMLElement/CueTrack').default, 'CueClusterPosition': require('./EBMLElement/CueClusterPosition').default, 'CueRelativePosition': require('./EBMLElement/CueRelativePosition').default, 'CueDuration': require('./EBMLElement/CueDuration').default, 'CueBlockNumber': require('./EBMLElement/CueBlockNumber').default, // Level-1 element - Chapters 'Chapters': require('./EBMLElement/Chapters').default, 'EditionEntry': require('./EBMLElement/EditionEntry').default, 'ChapterAtom': require('./EBMLElement/ChapterAtom').default, 'ChapterUID': require('./EBMLElement/ChapterUID').default, 'ChapterStringUID': require('./EBMLElement/ChapterStringUID').default, 'ChapterTimeStart': require('./EBMLElement/ChapterTimeStart').default, 'ChapterTimeEnd': require('./EBMLElement/ChapterTimeEnd').default, 'ChapterDisplay': require('./EBMLElement/ChapterDisplay').default, 'ChapString': require('./EBMLElement/ChapString').default, 'ChapLanguage': require('./EBMLElement/ChapLanguage').default, 'ChapCountry': require('./EBMLElement/ChapCountry').default, // Level-1 element - Tags 'Tags': require('./EBMLElement/Tags').default, 'Tag': require('./EBMLElement/Tag').default, 'Targets': require('./EBMLElement/Targets').default, 'TargetTypeValue': require('./EBMLElement/TargetTypeValue').default, 'TargetType': require('./EBMLElement/TargetType').default, 'TagTrackUID': require('./EBMLElement/TagTrackUID').default, 'SimpleTag': require('./EBMLElement/SimpleTag').default, 'TagName': require('./EBMLElement/TagName').default, 'TagLanguage': require('./EBMLElement/TagLanguage').default, 'TagDefault': require('./EBMLElement/TagDefault').default, 'TagString': require('./EBMLElement/TagString').default, 'TagBinary': require('./EBMLElement/TagBinary').default }; var CLASS_D_IDS = [clazz['EBML'], clazz['Segment'], clazz['SeekHead'], clazz['Info'], clazz['Cluster'], clazz['Tracks'], clazz['Cues'], clazz['Chapters'], clazz['Tags']]; var CLASS_C_IDS = [clazz['TimecodeScale'], clazz['DefaultDuration'], clazz['Language'], clazz['CodecName']]; var CLASS_B_IDS = [clazz['EBMLVersion'], clazz['EBMLReadVersion'], clazz['EBMLMaxIDLength'], clazz['EBMLMaxSizeLength'], clazz['DocType'], clazz['DocTypeVersion'], clazz['DocTypeReadVersion'], clazz['Seek'], clazz['SeekID'], clazz['SeekPosition'], clazz['SegmentUID'], clazz['Duration'], clazz['DateUTC'], clazz['Title'], clazz['MuxingApp'], clazz['WritingApp'], clazz['BlockAdditions'], clazz['DiscardPadding'], clazz['TrackUID'], clazz['FlagForced'], clazz['Name'], clazz['CodecPrivate'], clazz['CodecDelay'], clazz['SeekPreRoll'], clazz['StereoMode'], clazz['AlphaMode'], clazz['PixelCropBottom'], clazz['PixelCropTop'], clazz['PixelCropLeft'], clazz['PixelCropRight'], clazz['DisplayWidth'], clazz['DisplayHeight'], clazz['DisplayUnit'], clazz['AspectRatioType'], clazz['OutputSamplingFrequency'], clazz['BitDepth'], clazz['ContentEncodings'], clazz['ContentEncoding'], clazz['ContentEncodingOrder'], clazz['ContentEncodingScope'], clazz['ContentEncodingType'], clazz['ContentEncryption'], clazz['ContentEncAlgo'], clazz['ContentEncKeyID'], clazz['ContentEncAESSettings'], clazz['AESSettingsCipherMode'], clazz['CueBlockNumber'], clazz['EditionEntry'], clazz['ChapterUID'], clazz['ChapterStringUID'], clazz['ChapLanguage'], clazz['ChapCountry'], clazz['Tag'], clazz['Targets'], clazz['TargetTypeValue'], clazz['TargetType'], clazz['TagTrackUID'], clazz['SimpleTag'], clazz['TagName'], clazz['TagLanguage'], clazz['TagDefault'], clazz['TagString'], clazz['TagBinary']]; var CLASS_A_IDS = [clazz['Void'], clazz['Timecode'], clazz['PrevSize'], clazz['SimpleBlock'], clazz['BlockGroup'], clazz['Block'], clazz['BlockMore'], clazz['BlockAddID'], clazz['BlockAdditional'], clazz['BlockDuration'], clazz['ReferenceBlock'], clazz['TrackEntry'], clazz['TrackNumber'], clazz['TrackType'], clazz['FlagEnabled'], clazz['FlagDefault'], clazz['FlagLacing'], clazz['CodecID'], clazz['Video'], clazz['FlagInterlaced'], clazz['PixelWidth'], clazz['PixelHeight'], clazz['Audio'], clazz['SamplingFrequency'], clazz['Channels'], clazz['CuePoint'], clazz['CueTime'], clazz['CueTrackPositions'], clazz['CueTrack'], clazz['CueClusterPosition'], clazz['CueRelativePosition'], clazz['CueDuration'], clazz['ChapterAtom'], clazz['ChapterTimeStart'], clazz['ChapterTimeEnd'], clazz['ChapterDisplay'], clazz['ChapString']]; var CLASS_A_INDICES = CLASS_A_IDS.map(function (item) { return item.ELEMENT_ID[0]; }); var CLASS_B_INDICES = null; var CLASS_C_INDICES = CLASS_C_IDS.map(function (item) { return item.ELEMENT_ID[0]; }); var CLASS_D_INDICES = CLASS_D_IDS.map(function (item) { return item.ELEMENT_ID[0]; }); var CLASS_LOOKUP_TABLE = [{ indices: CLASS_A_INDICES, idList: CLASS_A_IDS }, { indices: CLASS_B_INDICES, idList: CLASS_B_IDS }, { indices: CLASS_C_INDICES, idList: CLASS_C_IDS }, { indices: CLASS_D_INDICES, idList: CLASS_D_IDS }]; function lookupByName(name) { return clazz[name]; } function lookupById(id) { var failIfUnknown = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1]; var table = CLASS_LOOKUP_TABLE[id.length - 1]; var indices = table.indices; var elementClass = void 0; if (indices) { var index = indices.indexOf(id[0]); if (index !== -1) { elementClass = table.idList[index]; } } else { elementClass = table.idList.find(function (item) { var bytes = item.ELEMENT_ID; for (var i = 0; i < bytes.length; i++) { if (bytes[i] !== id[i]) { return false; } } return true; }); } if (!elementClass) { if (failIfUnknown) { (0, _Util.throwException)('Matroska.lookupById: Unknown element id ' + id); } return (0, _Unknown2.default)(id); } return elementClass; } exports.default = { lookupByName: lookupByName, lookupById: lookupById };