UNPKG

ebml-stream

Version:
285 lines (284 loc) 15.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const EbmlTagId_1 = require("./enums/EbmlTagId"); const EbmlMasterTag_1 = require("./tags/EbmlMasterTag"); const EbmlDataTag_1 = require("./tags/EbmlDataTag"); const Block_1 = require("./tags/Block"); const SimpleBlock_1 = require("./tags/SimpleBlock"); const EbmlElementType_1 = require("./enums/EbmlElementType"); class EbmlTagFactory { static create(id, type) { if (EbmlTagId_1.EbmlTagId[id] !== undefined) { let foundType; switch (id) { case EbmlTagId_1.EbmlTagId.Block: return new Block_1.Block(); case EbmlTagId_1.EbmlTagId.SimpleBlock: return new SimpleBlock_1.SimpleBlock(); case EbmlTagId_1.EbmlTagId.ChapterDisplay: case EbmlTagId_1.EbmlTagId.ContentCompression: case EbmlTagId_1.EbmlTagId.ContentEncryption: case EbmlTagId_1.EbmlTagId.SilentTracks: case EbmlTagId_1.EbmlTagId.ContentEncoding: case EbmlTagId_1.EbmlTagId.TrackTranslate: case EbmlTagId_1.EbmlTagId.ChapProcessCommand: case EbmlTagId_1.EbmlTagId.ChapterTranslate: case EbmlTagId_1.EbmlTagId.ChapProcess: case EbmlTagId_1.EbmlTagId.Tag: case EbmlTagId_1.EbmlTagId.Segment: case EbmlTagId_1.EbmlTagId.SimpleTag: case EbmlTagId_1.EbmlTagId.Targets: case EbmlTagId_1.EbmlTagId.Tags: case EbmlTagId_1.EbmlTagId.ChapterTrack: case EbmlTagId_1.EbmlTagId.ChapterAtom: case EbmlTagId_1.EbmlTagId.EditionEntry: case EbmlTagId_1.EbmlTagId.Chapters: case EbmlTagId_1.EbmlTagId.AttachedFile: case EbmlTagId_1.EbmlTagId.Attachments: case EbmlTagId_1.EbmlTagId.CueReference: case EbmlTagId_1.EbmlTagId.CueTrackPositions: case EbmlTagId_1.EbmlTagId.CuePoint: case EbmlTagId_1.EbmlTagId.Cues: case EbmlTagId_1.EbmlTagId.ContentEncAESSettings: case EbmlTagId_1.EbmlTagId.ContentEncodings: case EbmlTagId_1.EbmlTagId.TrackJoinBlocks: case EbmlTagId_1.EbmlTagId.TrackPlane: case EbmlTagId_1.EbmlTagId.TrackCombinePlanes: case EbmlTagId_1.EbmlTagId.TrackOperation: case EbmlTagId_1.EbmlTagId.Audio: case EbmlTagId_1.EbmlTagId.Video: case EbmlTagId_1.EbmlTagId.TrackEntry: case EbmlTagId_1.EbmlTagId.Tracks: case EbmlTagId_1.EbmlTagId.ReferenceFrame: case EbmlTagId_1.EbmlTagId.TimeSlice: case EbmlTagId_1.EbmlTagId.Slices: case EbmlTagId_1.EbmlTagId.BlockMore: case EbmlTagId_1.EbmlTagId.BlockAdditions: case EbmlTagId_1.EbmlTagId.BlockGroup: case EbmlTagId_1.EbmlTagId.Cluster: case EbmlTagId_1.EbmlTagId.Info: case EbmlTagId_1.EbmlTagId.Seek: case EbmlTagId_1.EbmlTagId.SeekHead: case EbmlTagId_1.EbmlTagId.SignatureElementList: case EbmlTagId_1.EbmlTagId.SignatureElements: case EbmlTagId_1.EbmlTagId.SignatureSlot: case EbmlTagId_1.EbmlTagId.EBML: foundType = EbmlElementType_1.EbmlElementType.Master; break; case EbmlTagId_1.EbmlTagId.TrackType: case EbmlTagId_1.EbmlTagId.FlagDefault: case EbmlTagId_1.EbmlTagId.ChapterTrackNumber: case EbmlTagId_1.EbmlTagId.ChapterTimeStart: case EbmlTagId_1.EbmlTagId.ChapterTimeEnd: case EbmlTagId_1.EbmlTagId.CueRefTime: case EbmlTagId_1.EbmlTagId.CueRefCluster: case EbmlTagId_1.EbmlTagId.ChapterFlagHidden: case EbmlTagId_1.EbmlTagId.ContentCompAlgo: case EbmlTagId_1.EbmlTagId.DocTypeReadVersion: case EbmlTagId_1.EbmlTagId.EBMLVersion: case EbmlTagId_1.EbmlTagId.DocTypeVersion: case EbmlTagId_1.EbmlTagId.TagDefault: case EbmlTagId_1.EbmlTagId.ChapterFlagEnabled: case EbmlTagId_1.EbmlTagId.FileUsedStartTime: case EbmlTagId_1.EbmlTagId.FileUsedEndTime: case EbmlTagId_1.EbmlTagId.ContentEncodingOrder: case EbmlTagId_1.EbmlTagId.ContentEncodingScope: case EbmlTagId_1.EbmlTagId.ContentEncodingType: case EbmlTagId_1.EbmlTagId.CueBlockNumber: case EbmlTagId_1.EbmlTagId.BitDepth: case EbmlTagId_1.EbmlTagId.ChapProcessTime: case EbmlTagId_1.EbmlTagId.ChapProcessCodecID: case EbmlTagId_1.EbmlTagId.AttachmentLink: case EbmlTagId_1.EbmlTagId.TagAttachmentUID: case EbmlTagId_1.EbmlTagId.TagChapterUID: case EbmlTagId_1.EbmlTagId.TagEditionUID: case EbmlTagId_1.EbmlTagId.TagTrackUID: case EbmlTagId_1.EbmlTagId.TargetTypeValue: case EbmlTagId_1.EbmlTagId.ChapterPhysicalEquiv: case EbmlTagId_1.EbmlTagId.ChapterSegmentEditionUID: case EbmlTagId_1.EbmlTagId.ChapterUID: case EbmlTagId_1.EbmlTagId.EditionFlagOrdered: case EbmlTagId_1.EbmlTagId.EditionFlagDefault: case EbmlTagId_1.EbmlTagId.EditionFlagHidden: case EbmlTagId_1.EbmlTagId.EditionUID: case EbmlTagId_1.EbmlTagId.FileUID: case EbmlTagId_1.EbmlTagId.CueRefCodecState: case EbmlTagId_1.EbmlTagId.CueRefNumber: case EbmlTagId_1.EbmlTagId.CueCodecState: case EbmlTagId_1.EbmlTagId.CueDuration: case EbmlTagId_1.EbmlTagId.CueRelativePosition: case EbmlTagId_1.EbmlTagId.CueClusterPosition: case EbmlTagId_1.EbmlTagId.CueTrack: case EbmlTagId_1.EbmlTagId.CueTime: case EbmlTagId_1.EbmlTagId.AESSettingsCipherMode: case EbmlTagId_1.EbmlTagId.ContentSigHashAlgo: case EbmlTagId_1.EbmlTagId.ContentSigAlgo: case EbmlTagId_1.EbmlTagId.ContentEncAlgo: case EbmlTagId_1.EbmlTagId.TrickMasterTrackUID: case EbmlTagId_1.EbmlTagId.TrickTrackFlag: case EbmlTagId_1.EbmlTagId.TrickTrackUID: case EbmlTagId_1.EbmlTagId.TrackJoinUID: case EbmlTagId_1.EbmlTagId.TrackPlaneType: case EbmlTagId_1.EbmlTagId.TrackPlaneUID: case EbmlTagId_1.EbmlTagId.Channels: case EbmlTagId_1.EbmlTagId.AspectRatioType: case EbmlTagId_1.EbmlTagId.DisplayUnit: case EbmlTagId_1.EbmlTagId.DisplayHeight: case EbmlTagId_1.EbmlTagId.DisplayWidth: case EbmlTagId_1.EbmlTagId.PixelCropRight: case EbmlTagId_1.EbmlTagId.PixelCropLeft: case EbmlTagId_1.EbmlTagId.PixelCropTop: case EbmlTagId_1.EbmlTagId.PixelCropBottom: case EbmlTagId_1.EbmlTagId.PixelHeight: case EbmlTagId_1.EbmlTagId.PixelWidth: case EbmlTagId_1.EbmlTagId.OldStereoMode: case EbmlTagId_1.EbmlTagId.AlphaMode: case EbmlTagId_1.EbmlTagId.StereoMode: case EbmlTagId_1.EbmlTagId.FlagInterlaced: case EbmlTagId_1.EbmlTagId.TrackTranslateCodec: case EbmlTagId_1.EbmlTagId.TrackTranslateEditionUID: case EbmlTagId_1.EbmlTagId.SeekPreRoll: case EbmlTagId_1.EbmlTagId.CodecDelay: case EbmlTagId_1.EbmlTagId.TrackOverlay: case EbmlTagId_1.EbmlTagId.CodecDecodeAll: case EbmlTagId_1.EbmlTagId.MaxBlockAdditionID: case EbmlTagId_1.EbmlTagId.DefaultDecodedFieldDuration: case EbmlTagId_1.EbmlTagId.DefaultDuration: case EbmlTagId_1.EbmlTagId.MaxCache: case EbmlTagId_1.EbmlTagId.MinCache: case EbmlTagId_1.EbmlTagId.FlagLacing: case EbmlTagId_1.EbmlTagId.FlagForced: case EbmlTagId_1.EbmlTagId.FlagEnabled: case EbmlTagId_1.EbmlTagId.TrackUID: case EbmlTagId_1.EbmlTagId.TrackNumber: case EbmlTagId_1.EbmlTagId.ReferenceTimeCode: case EbmlTagId_1.EbmlTagId.ReferenceOffset: case EbmlTagId_1.EbmlTagId.SliceDuration: case EbmlTagId_1.EbmlTagId.Delay: case EbmlTagId_1.EbmlTagId.BlockAdditionID: case EbmlTagId_1.EbmlTagId.FrameNumber: case EbmlTagId_1.EbmlTagId.LaceNumber: case EbmlTagId_1.EbmlTagId.ReferencePriority: case EbmlTagId_1.EbmlTagId.BlockDuration: case EbmlTagId_1.EbmlTagId.BlockAddID: case EbmlTagId_1.EbmlTagId.PrevSize: case EbmlTagId_1.EbmlTagId.Position: case EbmlTagId_1.EbmlTagId.SilentTrackNumber: case EbmlTagId_1.EbmlTagId.Timecode: case EbmlTagId_1.EbmlTagId.TimecodeScaleDenominator: case EbmlTagId_1.EbmlTagId.TimecodeScale: case EbmlTagId_1.EbmlTagId.ChapterTranslateCodec: case EbmlTagId_1.EbmlTagId.ChapterTranslateEditionUID: case EbmlTagId_1.EbmlTagId.SeekPosition: case EbmlTagId_1.EbmlTagId.SignatureHash: case EbmlTagId_1.EbmlTagId.SignatureAlgo: case EbmlTagId_1.EbmlTagId.EBMLMaxSizeLength: case EbmlTagId_1.EbmlTagId.EBMLMaxIDLength: case EbmlTagId_1.EbmlTagId.EBMLReadVersion: foundType = EbmlElementType_1.EbmlElementType.UnsignedInt; break; case EbmlTagId_1.EbmlTagId.TrackOffset: case EbmlTagId_1.EbmlTagId.DiscardPadding: case EbmlTagId_1.EbmlTagId.ReferenceVirtual: case EbmlTagId_1.EbmlTagId.ReferenceBlock: foundType = EbmlElementType_1.EbmlElementType.Integer; break; case EbmlTagId_1.EbmlTagId.CodecID: case EbmlTagId_1.EbmlTagId.DocType: case EbmlTagId_1.EbmlTagId.FileMimeType: case EbmlTagId_1.EbmlTagId.TagLanguage: case EbmlTagId_1.EbmlTagId.TargetType: case EbmlTagId_1.EbmlTagId.ChapCountry: case EbmlTagId_1.EbmlTagId.ChapLanguage: case EbmlTagId_1.EbmlTagId.CodecDownloadURL: case EbmlTagId_1.EbmlTagId.CodecInfoURL: case EbmlTagId_1.EbmlTagId.Language: foundType = EbmlElementType_1.EbmlElementType.String; break; case EbmlTagId_1.EbmlTagId.ChapString: case EbmlTagId_1.EbmlTagId.TagString: case EbmlTagId_1.EbmlTagId.ChapterStringUID: case EbmlTagId_1.EbmlTagId.WritingApp: case EbmlTagId_1.EbmlTagId.SegmentFilename: case EbmlTagId_1.EbmlTagId.CodecName: case EbmlTagId_1.EbmlTagId.TagName: case EbmlTagId_1.EbmlTagId.FileName: case EbmlTagId_1.EbmlTagId.FileDescription: case EbmlTagId_1.EbmlTagId.CodecSettings: case EbmlTagId_1.EbmlTagId.Name: case EbmlTagId_1.EbmlTagId.MuxingApp: case EbmlTagId_1.EbmlTagId.Title: case EbmlTagId_1.EbmlTagId.NextFilename: case EbmlTagId_1.EbmlTagId.PrevFilename: foundType = EbmlElementType_1.EbmlElementType.UTF8; break; case EbmlTagId_1.EbmlTagId.ContentCompSettings: case EbmlTagId_1.EbmlTagId.SegmentFamily: case EbmlTagId_1.EbmlTagId.TagBinary: case EbmlTagId_1.EbmlTagId.FileReferral: case EbmlTagId_1.EbmlTagId.SignedElement: case EbmlTagId_1.EbmlTagId.ChapProcessData: case EbmlTagId_1.EbmlTagId.ChapProcessPrivate: case EbmlTagId_1.EbmlTagId.ChapterSegmentUID: case EbmlTagId_1.EbmlTagId.FileData: case EbmlTagId_1.EbmlTagId.ContentSigKeyID: case EbmlTagId_1.EbmlTagId.ContentSignature: case EbmlTagId_1.EbmlTagId.ContentEncKeyID: case EbmlTagId_1.EbmlTagId.TrickMasterTrackSegmentUID: case EbmlTagId_1.EbmlTagId.TrickTrackSegmentUID: case EbmlTagId_1.EbmlTagId.ChannelPositions: case EbmlTagId_1.EbmlTagId.ColourSpace: case EbmlTagId_1.EbmlTagId.TrackTranslateTrackID: case EbmlTagId_1.EbmlTagId.CodecPrivate: case EbmlTagId_1.EbmlTagId.EncryptedBlock: case EbmlTagId_1.EbmlTagId.CodecState: case EbmlTagId_1.EbmlTagId.BlockAdditional: case EbmlTagId_1.EbmlTagId.BlockVirtual: case EbmlTagId_1.EbmlTagId.ChapterTranslateID: case EbmlTagId_1.EbmlTagId.NextUID: case EbmlTagId_1.EbmlTagId.PrevUID: case EbmlTagId_1.EbmlTagId.SegmentUID: case EbmlTagId_1.EbmlTagId.SeekID: case EbmlTagId_1.EbmlTagId.Signature: case EbmlTagId_1.EbmlTagId.SignaturePublicKey: case EbmlTagId_1.EbmlTagId.CRC32: case EbmlTagId_1.EbmlTagId.Void: foundType = EbmlElementType_1.EbmlElementType.Binary; break; case EbmlTagId_1.EbmlTagId.Duration: case EbmlTagId_1.EbmlTagId.OutputSamplingFrequency: case EbmlTagId_1.EbmlTagId.SamplingFrequency: case EbmlTagId_1.EbmlTagId.FrameRate: case EbmlTagId_1.EbmlTagId.GammaValue: case EbmlTagId_1.EbmlTagId.TrackTimecodeScale: foundType = EbmlElementType_1.EbmlElementType.Float; break; case EbmlTagId_1.EbmlTagId.DateUTC: foundType = EbmlElementType_1.EbmlElementType.Date; break; } if (type === undefined) { type = foundType; } else { if (type !== foundType) { throw new Error(`Trying to create tag of well-known type "${EbmlTagId_1.EbmlTagId[id]}" using content type "${type}" (which is incorrect). Either pass the correct type or ignore the type parameter to EbmlTag.create()`); } } } switch (type) { case EbmlElementType_1.EbmlElementType.Master: return new EbmlMasterTag_1.EbmlMasterTag(id); case EbmlElementType_1.EbmlElementType.UTF8: case EbmlElementType_1.EbmlElementType.Binary: case EbmlElementType_1.EbmlElementType.Date: case EbmlElementType_1.EbmlElementType.Float: case EbmlElementType_1.EbmlElementType.Integer: case EbmlElementType_1.EbmlElementType.String: case EbmlElementType_1.EbmlElementType.UnsignedInt: default: return new EbmlDataTag_1.EbmlDataTag(id, type); } } } exports.EbmlTagFactory = EbmlTagFactory;