Esempio n. 1
0
        /// <summary>
        ///     Constructs a <see cref="Track" /> parsing from provided
        ///     file data.
        ///     Parsing will be done reading from _file at position references by
        ///     parent element's data section.
        /// </summary>
        /// <param name="_file"><see cref="File" /> instance to read from.</param>
        /// <param name="element">Parent <see cref="EBMLreader" />.</param>
        public Track(File _file, EBMLreader element)
        {
            ulong i = 0;

            while (i < element.DataSize)
            {
                var child = new EBMLreader(_file, element.DataOffset + i);

                var matroska_id = child.ID;

                switch (matroska_id)
                {
                case MatroskaID.TrackNumber:
                    track_number = child.ReadULong();
                    break;

                case MatroskaID.TrackUID:
                    _UID = child.ReadULong();
                    break;

                case MatroskaID.CodecID:
                    track_codec_id = child.ReadString();
                    break;

                case MatroskaID.CodecName:
                    track_codec_name = child.ReadString();
                    break;

                case MatroskaID.TrackName:
                    track_name = child.ReadString();
                    break;

                case MatroskaID.TrackLanguage:
                    track_language = child.ReadString();
                    break;

                case MatroskaID.TrackFlagEnabled:
                    track_enabled = child.ReadBool();
                    break;

                case MatroskaID.TrackFlagDefault:
                    track_default = child.ReadBool();
                    break;

                case MatroskaID.CodecPrivate:
                    codec_data = child.ReadBytes();
                    break;

                default:
                    UnknownElements.Add(child);
                    break;
                }

                i += child.Size;
            }
        }
Esempio n. 2
0
        private void ReadHeader(EBMLreader element)
        {
            string doctype = null;
            ulong  i       = 0;

            while (i < element.DataSize)
            {
                var child = new EBMLreader(element, element.DataOffset + i);

                var ebml_id = (EBMLID)child.ID;

                switch (ebml_id)
                {
                case EBMLID.EBMLDocType:
                    doctype = child.ReadString();
                    break;
                }

                i += child.Size;
            }

            // Check DocType
            if (string.IsNullOrEmpty(doctype) || doctype != "matroska" && doctype != "webm")
            {
                throw new UnsupportedFormatException("DocType is not matroska or webm");
            }
        }
Esempio n. 3
0
        private void ReadAttachedFile(EBMLreader element, ReadStyle propertiesStyle)
        {
            ulong i = 0;

#pragma warning disable 219 // Assigned, never read
            string     file_name = null, file_mime = null, file_desc = null;
            EBMLreader file_data = null;
            ulong      file_uid  = 0;
#pragma warning restore 219

            while (i < element.DataSize)
            {
                var child = new EBMLreader(element, element.DataOffset + i);

                var matroska_id = child.ID;

                switch (matroska_id)
                {
                case MatroskaID.FileName:
                    file_name = child.ReadString();
                    break;

                case MatroskaID.FileMimeType:
                    file_mime = child.ReadString();
                    break;

                case MatroskaID.FileDescription:
                    file_desc = child.ReadString();
                    break;

                case MatroskaID.FileData:
                    file_data = child;
                    break;

                case MatroskaID.FileUID:
                    file_uid = child.ReadULong();
                    break;
                }

                i += child.Size;
            }
        }