Esempio n. 1
0
        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;
                }
            }
        }
Esempio n. 2
0
        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;
                }
            }
        }
Esempio n. 3
0
        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;
                }
            }
        }
Esempio n. 4
0
        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;
                }
            }
        }
Esempio n. 5
0
        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();
            }
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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();
            }
        }
Esempio n. 8
0
        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();
            }
        }
Esempio n. 9
0
        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();
            }
        }
Esempio n. 10
0
        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;
                }
            }
        }
Esempio n. 11
0
        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;
                }
            }
        }
Esempio n. 12
0
        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();
            }
        }
Esempio n. 13
0
        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;
                }
            }
        }
Esempio n. 14
0
        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();
            }
        }
Esempio n. 15
0
        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;
                }
            }
        }
Esempio n. 16
0
        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;
                }
            }
        }
Esempio n. 17
0
        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;
                }
            }
        }
Esempio n. 18
0
        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;
                }
            }
        }
Esempio n. 19
0
        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();
            }
        }
Esempio n. 20
0
        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();
            }
        }
Esempio n. 21
0
        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();
            }
        }
Esempio n. 22
0
        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();
            }
        }
Esempio n. 23
0
        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;
                }
            }
        }
Esempio n. 24
0
        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;
                }
            }
        }
Esempio n. 25
0
        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();
            }
        }
Esempio n. 26
0
        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();
            }
        }
Esempio n. 27
0
        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;
                }
            }
        }
Esempio n. 28
0
        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();
            }
        }
Esempio n. 29
0
        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();
            }
        }
Esempio n. 30
0
        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();
            }
        }