internal Audio(Stream stream) { ElementReader reader = new ElementReader(stream); while (!reader.EOF) { eElement id = reader.readElementId(); switch (id) { case eElement.SamplingFrequency: samplingFrequency = reader.readFloat(8000); break; case eElement.OutputSamplingFrequency: outputSamplingFrequency = reader.readFloat(); break; case eElement.Channels: channels = reader.readUlong(1); break; case eElement.ChannelPositions: channelPositions = Blob.read(reader); break; case eElement.BitDepth: bitDepth = reader.readUlong(); break; default: reader.skipElement(); break; } } }
internal BlockAdditionMapping(Stream stream) { ElementReader reader = new ElementReader(stream); while (!reader.EOF) { eElement id = reader.readElementId(); switch (id) { case eElement.BlockAddIDValue: blockAddIDValue = reader.readUlong(); break; case eElement.BlockAddIDName: blockAddIDName = reader.readAscii(); break; case eElement.BlockAddIDType: blockAddIDType = reader.readUlong(0); break; case eElement.BlockAddIDExtraData: blockAddIDExtraData = Blob.read(reader); break; default: reader.skipElement(); break; } } }
internal CueReference(Stream stream) { cueRefTime = default; cueRefCluster = default; cueRefNumber = 1; cueRefCodecState = 0; ElementReader reader = new ElementReader(stream); while (!reader.EOF) { eElement id = reader.readElementId(); switch (id) { case eElement.CueRefTime: cueRefTime = reader.readUlong(); break; case eElement.CueRefCluster: cueRefCluster = reader.readUlong(); break; case eElement.CueRefNumber: cueRefNumber = reader.readUlong(1); break; case eElement.CueRefCodecState: cueRefCodecState = reader.readUlong(0); break; default: reader.skipElement(); break; } } }
internal ContentEncoding(Stream stream) { ElementReader reader = new ElementReader(stream); while (!reader.EOF) { eElement id = reader.readElementId(); switch (id) { case eElement.ContentEncodingOrder: contentEncodingOrder = reader.readUlong(0); break; case eElement.ContentEncodingScope: contentEncodingScope = (eContentEncodingScope)reader.readByte(1); break; case eElement.ContentEncodingType: contentEncodingType = (eContentEncodingType)reader.readByte(0); break; case eElement.ContentCompression: contentCompression = new ContentCompression(stream); break; case eElement.ContentEncryption: contentEncryption = new ContentEncryption(stream); break; default: reader.skipElement(); break; } } }
internal ChapterTrack(Stream stream) { List <ulong> chapterTrackUIDlist = null; ElementReader reader = new ElementReader(stream); while (!reader.EOF) { eElement id = reader.readElementId(); switch (id) { case eElement.ChapterTrackUID: if (null == chapterTrackUIDlist) { chapterTrackUIDlist = new List <ulong>(); } chapterTrackUIDlist.Add(reader.readUlong()); break; default: reader.skipElement(); break; } } if (chapterTrackUIDlist != null) { chapterTrackUID = chapterTrackUIDlist.ToArray(); } }
internal ClusterPlaceholder(Stream stream, long segmentOffset) { long filePosition = stream.Position - 4; // 4 for the cluster header. segmentPosition = filePosition - segmentOffset; timestamp = default; ElementReader reader = new ElementReader(stream); while (!reader.EOF) { bool fastForward = false; eElement id = reader.readElementId(); switch (id) { case eElement.Timestamp: timestamp = reader.readUlong(); break; default: fastForward = true; break; } if (fastForward) { break; } } stream.Seek(reader.endPosition, SeekOrigin.Begin); }
internal CuePoint(Stream stream) { cueTime = default; cueTrackPositions = default; List <CueTrackPositions> cueTrackPositionslist = null; ElementReader reader = new ElementReader(stream); while (!reader.EOF) { eElement id = reader.readElementId(); switch (id) { case eElement.CueTime: cueTime = reader.readUlong(); break; case eElement.CueTrackPositions: if (null == cueTrackPositionslist) { cueTrackPositionslist = new List <CueTrackPositions>(); } cueTrackPositionslist.Add(new CueTrackPositions(stream)); break; default: reader.skipElement(); break; } } if (cueTrackPositionslist != null) { cueTrackPositions = cueTrackPositionslist.ToArray(); } }
internal SilentTracks(Stream stream) { List <ulong> silentTrackNumberlist = null; ElementReader reader = new ElementReader(stream); while (!reader.EOF) { eElement id = reader.readElementId(); switch (id) { case eElement.SilentTrackNumber: if (null == silentTrackNumberlist) { silentTrackNumberlist = new List <ulong>(); } silentTrackNumberlist.Add(reader.readUlong()); break; default: reader.skipElement(); break; } } if (silentTrackNumberlist != null) { silentTrackNumber = silentTrackNumberlist.ToArray(); } }
internal TrackJoinBlocks(Stream stream) { List <ulong> trackJoinUIDlist = null; ElementReader reader = new ElementReader(stream); while (!reader.EOF) { eElement id = reader.readElementId(); switch (id) { case eElement.TrackJoinUID: if (null == trackJoinUIDlist) { trackJoinUIDlist = new List <ulong>(); } trackJoinUIDlist.Add(reader.readUlong()); break; default: reader.skipElement(); break; } } if (trackJoinUIDlist != null) { trackJoinUID = trackJoinUIDlist.ToArray(); } }
internal AttachedFile(Stream stream) { ElementReader reader = new ElementReader(stream); while (!reader.EOF) { eElement id = reader.readElementId(); switch (id) { case eElement.FileDescription: fileDescription = reader.readUtf8(); break; case eElement.FileName: fileName = reader.readUtf8(); break; case eElement.FileMimeType: fileMimeType = reader.readAscii(); break; case eElement.FileData: fileData = Blob.read(reader); break; case eElement.FileUID: fileUID = reader.readUlong(); break; case eElement.FileReferral: fileReferral = Blob.read(reader); break; case eElement.FileUsedStartTime: fileUsedStartTime = reader.readUlong(); break; case eElement.FileUsedEndTime: fileUsedEndTime = reader.readUlong(); break; default: reader.skipElement(); break; } } }
internal TimeSlice(Stream stream) { laceNumber = 0; frameNumber = 0; blockAdditionID = 0; delay = 0; sliceDuration = 0; ElementReader reader = new ElementReader(stream); while (!reader.EOF) { eElement id = reader.readElementId(); switch (id) { case eElement.LaceNumber: laceNumber = reader.readUlong(0); break; case eElement.FrameNumber: frameNumber = reader.readUlong(0); break; case eElement.BlockAdditionID: blockAdditionID = reader.readUlong(0); break; case eElement.Delay: delay = reader.readUlong(0); break; case eElement.SliceDuration: sliceDuration = reader.readUlong(0); break; default: reader.skipElement(); break; } } }
internal CueTrackPositions(Stream stream) { cueTrack = default; cueClusterPosition = default; cueRelativePosition = default; cueDuration = default; cueBlockNumber = 1; cueCodecState = 0; cueReference = default; List <CueReference> cueReferencelist = null; ElementReader reader = new ElementReader(stream); while (!reader.EOF) { eElement id = reader.readElementId(); switch (id) { case eElement.CueTrack: cueTrack = reader.readUlong(); break; case eElement.CueClusterPosition: cueClusterPosition = reader.readUlong(); break; case eElement.CueRelativePosition: cueRelativePosition = reader.readUlong(); break; case eElement.CueDuration: cueDuration = reader.readUlong(); break; case eElement.CueBlockNumber: cueBlockNumber = reader.readUlong(1); break; case eElement.CueCodecState: cueCodecState = reader.readUlong(0); break; case eElement.CueReference: if (null == cueReferencelist) { cueReferencelist = new List <CueReference>(); } cueReferencelist.Add(new CueReference(stream)); break; default: reader.skipElement(); break; } } if (cueReferencelist != null) { cueReference = cueReferencelist.ToArray(); } }
internal ReferenceFrame(Stream stream) { ElementReader reader = new ElementReader(stream); while (!reader.EOF) { eElement id = reader.readElementId(); switch (id) { case eElement.ReferenceOffset: referenceOffset = reader.readUlong(); break; case eElement.ReferenceTimestamp: referenceTimestamp = reader.readUlong(); break; default: reader.skipElement(); break; } } }
internal EditionEntry(Stream stream) { List <ChapterAtom> chapterAtomlist = null; ElementReader reader = new ElementReader(stream); while (!reader.EOF) { eElement id = reader.readElementId(); switch (id) { case eElement.EditionUID: editionUID = reader.readUlong(); break; case eElement.EditionFlagHidden: editionFlagHidden = (byte)reader.readUint(0); break; case eElement.EditionFlagDefault: editionFlagDefault = (byte)reader.readUint(0); break; case eElement.EditionFlagOrdered: editionFlagOrdered = (byte)reader.readUint(0); break; case eElement.ChapterAtom: if (null == chapterAtomlist) { chapterAtomlist = new List <ChapterAtom>(); } chapterAtomlist.Add(new ChapterAtom(stream)); break; default: reader.skipElement(); break; } } if (chapterAtomlist != null) { chapterAtom = chapterAtomlist.ToArray(); } }
internal BlockMore(Stream stream) { ElementReader reader = new ElementReader(stream); while (!reader.EOF) { eElement id = reader.readElementId(); switch (id) { case eElement.BlockAddID: blockAddID = reader.readUlong(1); break; case eElement.BlockAdditional: blockAdditional = Blob.read(reader); break; default: reader.skipElement(); break; } } }
internal TrackPlane(Stream stream) { ElementReader reader = new ElementReader(stream); while (!reader.EOF) { eElement id = reader.readElementId(); switch (id) { case eElement.TrackPlaneUID: trackPlaneUID = reader.readUlong(); break; case eElement.TrackPlaneType: trackPlaneType = (eTrackPlaneType)reader.readByte(); break; default: reader.skipElement(); break; } } }
internal Seek(Stream stream) { ElementReader reader = new ElementReader(stream); while (!reader.EOF) { eElement id = reader.readElementId(); switch (id) { case eElement.SeekID: seekID = (eElement)reader.readUint(); break; case eElement.SeekPosition: seekPosition = reader.readUlong(); break; default: reader.skipElement(); break; } } }
void readSilentTracks(Stream stream, ref List <ulong> list) { ElementReader reader = new ElementReader(stream); while (!reader.EOF) { eElement id = reader.readElementId(); switch (id) { case eElement.SilentTrackNumber: if (null == list) { list = new List <ulong>(); } list.Add(reader.readUlong()); break; default: reader.skipElement(); break; } } }
internal ChapProcess(Stream stream) { List <ChapProcessCommand> chapProcessCommandlist = null; ElementReader reader = new ElementReader(stream); while (!reader.EOF) { eElement id = reader.readElementId(); switch (id) { case eElement.ChapProcessCodecID: chapProcessCodecID = reader.readUlong(0); break; case eElement.ChapProcessPrivate: chapProcessPrivate = Blob.read(reader); break; case eElement.ChapProcessCommand: if (null == chapProcessCommandlist) { chapProcessCommandlist = new List <ChapProcessCommand>(); } chapProcessCommandlist.Add(new ChapProcessCommand(stream)); break; default: reader.skipElement(); break; } } if (chapProcessCommandlist != null) { chapProcessCommand = chapProcessCommandlist.ToArray(); } }
internal ChapterTranslate(Stream stream) { List <ulong> chapterTranslateEditionUIDlist = null; ElementReader reader = new ElementReader(stream); while (!reader.EOF) { eElement id = reader.readElementId(); switch (id) { case eElement.ChapterTranslateEditionUID: if (null == chapterTranslateEditionUIDlist) { chapterTranslateEditionUIDlist = new List <ulong>(); } chapterTranslateEditionUIDlist.Add(reader.readUlong()); break; case eElement.ChapterTranslateCodec: chapterTranslateCodec = (eChapterTranslateCodec)reader.readByte(); break; case eElement.ChapterTranslateID: chapterTranslateID = reader.readByteArray(); break; default: reader.skipElement(); break; } } if (chapterTranslateEditionUIDlist != null) { chapterTranslateEditionUID = chapterTranslateEditionUIDlist.ToArray(); } }
internal TrackTranslate(Stream stream) { List <ulong> trackTranslateEditionUIDlist = null; ElementReader reader = new ElementReader(stream); while (!reader.EOF) { eElement id = reader.readElementId(); switch (id) { case eElement.TrackTranslateEditionUID: if (null == trackTranslateEditionUIDlist) { trackTranslateEditionUIDlist = new List <ulong>(); } trackTranslateEditionUIDlist.Add(reader.readUlong()); break; case eElement.TrackTranslateCodec: trackTranslateCodec = (eTrackTranslateCodec)reader.readByte(); break; case eElement.TrackTranslateTrackID: trackTranslateTrackID = Blob.read(reader); break; default: reader.skipElement(); break; } } if (trackTranslateEditionUIDlist != null) { trackTranslateEditionUID = trackTranslateEditionUIDlist.ToArray(); } }
internal BlockGroup(Stream stream) { block = default; blockVirtual = default; blockAdditions = default; blockDuration = default; referencePriority = 0; referenceBlock = default; referenceVirtual = default; codecState = default; discardPadding = default; slices = default; referenceFrame = default; List <int> referenceBlocklist = null; ElementReader reader = new ElementReader(stream); while (!reader.EOF) { eElement id = reader.readElementId(); switch (id) { case eElement.Block: block = Blob.read(reader); break; case eElement.BlockVirtual: blockVirtual = Blob.read(reader); break; case eElement.BlockAdditions: blockAdditions = new BlockAdditions(stream); break; case eElement.BlockDuration: blockDuration = reader.readUlong(); break; case eElement.ReferencePriority: referencePriority = reader.readUlong(0); break; case eElement.ReferenceBlock: if (null == referenceBlocklist) { referenceBlocklist = new List <int>(); } referenceBlocklist.Add(reader.readInt()); break; case eElement.ReferenceVirtual: referenceVirtual = reader.readInt(); break; case eElement.CodecState: codecState = reader.readByteArray(); break; case eElement.DiscardPadding: discardPadding = reader.readInt(); break; case eElement.Slices: slices = new Slices(stream); break; case eElement.ReferenceFrame: referenceFrame = new ReferenceFrame(stream); break; default: reader.skipElement(); break; } } if (referenceBlocklist != null) { referenceBlock = referenceBlocklist.ToArray(); } }
internal Video(Stream stream) { ElementReader reader = new ElementReader(stream); while (!reader.EOF) { eElement id = reader.readElementId(); switch (id) { case eElement.FlagInterlaced: flagInterlaced = (eFlagInterlaced)reader.readByte(0); break; case eElement.FieldOrder: fieldOrder = (eFieldOrder)reader.readByte(2); break; case eElement.AlphaMode: alphaMode = reader.readUlong(0); break; case eElement.PixelWidth: pixelWidth = reader.readUint(); break; case eElement.PixelHeight: pixelHeight = reader.readUint(); break; case eElement.PixelCropBottom: pixelCropBottom = reader.readUint(0); break; case eElement.PixelCropTop: pixelCropTop = reader.readUint(0); break; case eElement.PixelCropLeft: pixelCropLeft = reader.readUint(0); break; case eElement.PixelCropRight: pixelCropRight = reader.readUint(0); break; case eElement.DisplayWidth: displayWidth = reader.readUint(); break; case eElement.DisplayHeight: displayHeight = reader.readUint(); break; case eElement.DisplayUnit: displayUnit = (eDisplayUnit)reader.readByte(0); break; case eElement.AspectRatioType: aspectRatioType = (eAspectRatioType)reader.readByte(0); break; case eElement.ColourSpace: colourSpace = reader.readColorSpace(); break; case eElement.GammaValue: gammaValue = reader.readFloat(); break; case eElement.FrameRate: frameRate = reader.readFloat(); break; case eElement.Colour: colour = new Colour(stream); break; case eElement.Projection: projection = new Projection(stream); break; default: reader.skipElement(); break; } } }
internal Colour(Stream stream) { ElementReader reader = new ElementReader(stream); while (!reader.EOF) { eElement id = reader.readElementId(); switch (id) { case eElement.MatrixCoefficients: matrixCoefficients = (eMatrixCoefficients)reader.readByte(2); break; case eElement.BitsPerChannel: bitsPerChannel = reader.readUlong(0); break; case eElement.ChromaSubsamplingHorz: chromaSubsamplingHorz = reader.readUlong(); break; case eElement.ChromaSubsamplingVert: chromaSubsamplingVert = reader.readUlong(); break; case eElement.CbSubsamplingHorz: cbSubsamplingHorz = reader.readUlong(); break; case eElement.CbSubsamplingVert: cbSubsamplingVert = reader.readUlong(); break; case eElement.ChromaSitingHorz: chromaSitingHorz = (eChromaSitingHorz)reader.readByte(0); break; case eElement.ChromaSitingVert: chromaSitingVert = (eChromaSitingVert)reader.readByte(0); break; case eElement.Range: range = (eRange)reader.readByte(0); break; case eElement.TransferCharacteristics: transferCharacteristics = (eTransferCharacteristics)reader.readByte(2); break; case eElement.Primaries: primaries = (ePrimaries)reader.readByte(2); break; case eElement.MaxCLL: maxCLL = reader.readUlong(); break; case eElement.MaxFALL: maxFALL = reader.readUlong(); break; case eElement.MasteringMetadata: masteringMetadata = new MasteringMetadata(stream); break; default: reader.skipElement(); break; } } }
internal TrackEntry(Stream stream) { List <BlockAdditionMapping> blockAdditionMappinglist = null; List <string> codecInfoURLlist = null; List <string> codecDownloadURLlist = null; List <ulong> trackOverlaylist = null; List <TrackTranslate> trackTranslatelist = null; ElementReader reader = new ElementReader(stream); while (!reader.EOF) { eElement id = reader.readElementId(); switch (id) { case eElement.TrackNumber: trackNumber = reader.readUlong(); break; case eElement.TrackUID: trackUID = reader.readUlong(); break; case eElement.TrackType: trackType = (eTrackType)reader.readByte(); break; case eElement.FlagEnabled: flagEnabled = (byte)reader.readUint(1); break; case eElement.FlagDefault: flagDefault = (byte)reader.readUint(1); break; case eElement.FlagForced: flagForced = (byte)reader.readUint(0); break; case eElement.FlagLacing: flagLacing = (byte)reader.readUint(1); break; case eElement.MinCache: minCache = reader.readUlong(0); break; case eElement.MaxCache: maxCache = reader.readUlong(); break; case eElement.DefaultDuration: defaultDuration = reader.readUlong(); break; case eElement.DefaultDecodedFieldDuration: defaultDecodedFieldDuration = reader.readUlong(); break; case eElement.TrackOffset: trackOffset = reader.readInt(0); break; case eElement.MaxBlockAdditionID: maxBlockAdditionID = reader.readUlong(0); break; case eElement.BlockAdditionMapping: if (null == blockAdditionMappinglist) { blockAdditionMappinglist = new List <BlockAdditionMapping>(); } blockAdditionMappinglist.Add(new BlockAdditionMapping(stream)); break; case eElement.Name: name = reader.readUtf8(); break; case eElement.Language: language = reader.readAscii(); break; case eElement.LanguageIETF: languageIETF = reader.readAscii(); break; case eElement.CodecID: codecID = reader.readAscii(); break; case eElement.CodecPrivate: codecPrivate = reader.readByteArray(); break; case eElement.CodecName: codecName = reader.readUtf8(); break; case eElement.AttachmentLink: attachmentLink = reader.readUlong(); break; case eElement.CodecSettings: codecSettings = reader.readUtf8(); break; case eElement.CodecInfoURL: if (null == codecInfoURLlist) { codecInfoURLlist = new List <string>(); } codecInfoURLlist.Add(reader.readAscii()); break; case eElement.CodecDownloadURL: if (null == codecDownloadURLlist) { codecDownloadURLlist = new List <string>(); } codecDownloadURLlist.Add(reader.readAscii()); break; case eElement.CodecDecodeAll: codecDecodeAll = (byte)reader.readUint(1); break; case eElement.TrackOverlay: if (null == trackOverlaylist) { trackOverlaylist = new List <ulong>(); } trackOverlaylist.Add(reader.readUlong()); break; case eElement.CodecDelay: codecDelay = reader.readUlong(0); break; case eElement.SeekPreRoll: seekPreRoll = reader.readUlong(0); break; case eElement.TrackTranslate: if (null == trackTranslatelist) { trackTranslatelist = new List <TrackTranslate>(); } trackTranslatelist.Add(new TrackTranslate(stream)); break; case eElement.Video: video = new Video(stream); break; case eElement.Audio: audio = new Audio(stream); break; case eElement.TrackOperation: trackOperation = new TrackOperation(stream); break; case eElement.TrickTrackUID: trickTrackUID = reader.readUlong(); break; case eElement.TrickTrackSegmentUID: trickTrackSegmentUID = reader.readGuid(); break; case eElement.TrickTrackFlag: trickTrackFlag = reader.readUlong(0); break; case eElement.TrickMasterTrackUID: trickMasterTrackUID = reader.readUlong(); break; case eElement.TrickMasterTrackSegmentUID: trickMasterTrackSegmentUID = reader.readGuid(); break; case eElement.ContentEncodings: contentEncodings = new ContentEncodings(stream); break; default: reader.skipElement(); break; } } if (blockAdditionMappinglist != null) { blockAdditionMapping = blockAdditionMappinglist.ToArray(); } if (codecInfoURLlist != null) { codecInfoURL = codecInfoURLlist.ToArray(); } if (codecDownloadURLlist != null) { codecDownloadURL = codecDownloadURLlist.ToArray(); } if (trackOverlaylist != null) { trackOverlay = trackOverlaylist.ToArray(); } if (trackTranslatelist != null) { trackTranslate = trackTranslatelist.ToArray(); } }
internal ChapterAtom(Stream stream) { List <ChapterDisplay> chapterDisplaylist = null; List <ChapProcess> chapProcesslist = null; ElementReader reader = new ElementReader(stream); while (!reader.EOF) { eElement id = reader.readElementId(); switch (id) { case eElement.ChapterUID: chapterUID = reader.readUlong(); break; case eElement.ChapterStringUID: chapterStringUID = reader.readUtf8(); break; case eElement.ChapterTimeStart: chapterTimeStart = reader.readUlong(); break; case eElement.ChapterTimeEnd: chapterTimeEnd = reader.readUlong(); break; case eElement.ChapterFlagHidden: chapterFlagHidden = (byte)reader.readUint(0); break; case eElement.ChapterFlagEnabled: chapterFlagEnabled = (byte)reader.readUint(1); break; case eElement.ChapterSegmentUID: chapterSegmentUID = reader.readGuid(); break; case eElement.ChapterSegmentEditionUID: chapterSegmentEditionUID = reader.readUlong(); break; case eElement.ChapterPhysicalEquiv: chapterPhysicalEquiv = reader.readUlong(); break; case eElement.ChapterTrack: chapterTrack = new ChapterTrack(stream); break; case eElement.ChapterDisplay: if (null == chapterDisplaylist) { chapterDisplaylist = new List <ChapterDisplay>(); } chapterDisplaylist.Add(new ChapterDisplay(stream)); break; case eElement.ChapProcess: if (null == chapProcesslist) { chapProcesslist = new List <ChapProcess>(); } chapProcesslist.Add(new ChapProcess(stream)); break; default: reader.skipElement(); break; } } if (chapterDisplaylist != null) { chapterDisplay = chapterDisplaylist.ToArray(); } if (chapProcesslist != null) { chapProcess = chapProcesslist.ToArray(); } }
internal void read(Stream stream) { timestamp = default; silentTracks?.Clear(); position = default; prevSize = default; simpleBlock?.Clear(); blockGroup?.Clear(); encryptedBlock?.Clear(); ElementReader reader = new ElementReader(stream); while (!reader.EOF) { eElement id = reader.readElementId(); switch (id) { case eElement.Timestamp: timestamp = reader.readUlong(); break; case eElement.SilentTracks: readSilentTracks(stream, ref silentTracks); break; case eElement.Position: position = reader.readUlong(); break; case eElement.PrevSize: prevSize = reader.readUlong(); break; case eElement.SimpleBlock: if (null == simpleBlock) { simpleBlock = new List <Blob>(); } simpleBlock.Add(Blob.read(reader)); break; case eElement.BlockGroup: if (null == blockGroup) { blockGroup = new List <BlockGroup>(); } blockGroup.Add(new BlockGroup(stream)); break; case eElement.EncryptedBlock: if (null == encryptedBlock) { encryptedBlock = new List <Blob>(); } encryptedBlock.Add(Blob.read(reader)); break; default: reader.skipElement(); break; } } }
internal Cluster(Stream stream) { timestamp = default; silentTracks = default; position = default; prevSize = default; simpleBlock = default; blockGroup = default; encryptedBlock = default; List <Blob> simpleBlocklist = null; List <BlockGroup> blockGrouplist = null; List <Blob> encryptedBlocklist = null; ElementReader reader = new ElementReader(stream); while (!reader.EOF) { eElement id = reader.readElementId(); switch (id) { case eElement.Timestamp: timestamp = reader.readUlong(); break; case eElement.SilentTracks: silentTracks = new SilentTracks(stream); break; case eElement.Position: position = reader.readUlong(); break; case eElement.PrevSize: prevSize = reader.readUlong(); break; case eElement.SimpleBlock: if (null == simpleBlocklist) { simpleBlocklist = new List <Blob>(); } simpleBlocklist.Add(Blob.read(reader)); break; case eElement.BlockGroup: if (null == blockGrouplist) { blockGrouplist = new List <BlockGroup>(); } blockGrouplist.Add(new BlockGroup(stream)); break; case eElement.EncryptedBlock: if (null == encryptedBlocklist) { encryptedBlocklist = new List <Blob>(); } encryptedBlocklist.Add(Blob.read(reader)); break; default: reader.skipElement(); break; } } if (simpleBlocklist != null) { simpleBlock = simpleBlocklist.ToArray(); } if (blockGrouplist != null) { blockGroup = blockGrouplist.ToArray(); } if (encryptedBlocklist != null) { encryptedBlock = encryptedBlocklist.ToArray(); } }
internal Targets(Stream stream) { List <ulong> tagTrackUIDlist = null; List <ulong> tagEditionUIDlist = null; List <ulong> tagChapterUIDlist = null; List <ulong> tagAttachmentUIDlist = null; ElementReader reader = new ElementReader(stream); while (!reader.EOF) { eElement id = reader.readElementId(); switch (id) { case eElement.TargetTypeValue: targetTypeValue = (eTargetTypeValue)reader.readByte(50); break; case eElement.TargetType: targetType = Enum.Parse <eTargetType>(reader.readAscii()); break; case eElement.TagTrackUID: if (null == tagTrackUIDlist) { tagTrackUIDlist = new List <ulong>(); } tagTrackUIDlist.Add(reader.readUlong(0)); break; case eElement.TagEditionUID: if (null == tagEditionUIDlist) { tagEditionUIDlist = new List <ulong>(); } tagEditionUIDlist.Add(reader.readUlong(0)); break; case eElement.TagChapterUID: if (null == tagChapterUIDlist) { tagChapterUIDlist = new List <ulong>(); } tagChapterUIDlist.Add(reader.readUlong(0)); break; case eElement.TagAttachmentUID: if (null == tagAttachmentUIDlist) { tagAttachmentUIDlist = new List <ulong>(); } tagAttachmentUIDlist.Add(reader.readUlong(0)); break; default: reader.skipElement(); break; } } if (tagTrackUIDlist != null) { tagTrackUID = tagTrackUIDlist.ToArray(); } if (tagEditionUIDlist != null) { tagEditionUID = tagEditionUIDlist.ToArray(); } if (tagChapterUIDlist != null) { tagChapterUID = tagChapterUIDlist.ToArray(); } if (tagAttachmentUIDlist != null) { tagAttachmentUID = tagAttachmentUIDlist.ToArray(); } }
internal Info(Stream stream) { List <Guid> segmentFamilylist = null; List <ChapterTranslate> chapterTranslatelist = null; ElementReader reader = new ElementReader(stream); while (!reader.EOF) { eElement id = reader.readElementId(); switch (id) { case eElement.SegmentUID: segmentUID = reader.readGuid(); break; case eElement.SegmentFilename: segmentFilename = reader.readUtf8(); break; case eElement.PrevUID: prevUID = reader.readGuid(); break; case eElement.PrevFilename: prevFilename = reader.readUtf8(); break; case eElement.NextUID: nextUID = reader.readGuid(); break; case eElement.NextFilename: nextFilename = reader.readUtf8(); break; case eElement.SegmentFamily: if (null == segmentFamilylist) { segmentFamilylist = new List <Guid>(); } segmentFamilylist.Add(reader.readGuid()); break; case eElement.ChapterTranslate: if (null == chapterTranslatelist) { chapterTranslatelist = new List <ChapterTranslate>(); } chapterTranslatelist.Add(new ChapterTranslate(stream)); break; case eElement.TimestampScale: timestampScale = reader.readUlong(1000000); break; case eElement.Duration: duration = reader.readFloat(); break; case eElement.DateUTC: dateUTC = reader.readDate(); break; case eElement.Title: title = reader.readUtf8(); break; case eElement.MuxingApp: muxingApp = reader.readUtf8(); break; case eElement.WritingApp: writingApp = reader.readUtf8(); break; default: reader.skipElement(); break; } } if (segmentFamilylist != null) { segmentFamily = segmentFamilylist.ToArray(); } if (chapterTranslatelist != null) { chapterTranslate = chapterTranslatelist.ToArray(); } }