Example #1
0
        public Element Write(FileStream writer, MatroskaFileMetaSeek metaSeek)
        {
            ulong currentbytePositionInFile = (ulong)writer.Position;

            Utility.LogDebug($"Writing matroska cues at file byte position [{currentbytePositionInFile}]");
            ulong numberOfBytesInCueData = cues.WriteElement(writer);

            Utility.LogDebug($"Done writing matroska cues, number of bytes was [{numberOfBytesInCueData}]");

            metaSeek.AddIndexedElement(cues, getPositionRelativeToSegmentEbmlElement(currentbytePositionInFile));

            return(cues);
        }
Example #2
0
        public MatroskaFileWriter(FileStream outputFileStream)
        {
            Writer = outputFileStream;
            writeEBMLHeader();
            writeSegmentHeader();
            ulong endOfSegmentHeader = (ulong)Writer.Position;

            MetaSeek = new MatroskaFileMetaSeek(endOfSegmentHeader);
            CueData  = new MatroskaFileCues(endOfSegmentHeader);
            MetaSeek.Write(Writer);
            SegmentInfoElement = new MatroskaSegmentInfo((ulong)Writer.Position);
            MetaSeek.AddIndexedElement(MatroskaDocTypes.Info.Type, (ulong)Writer.Position);
            SegmentInfoElement.WriteElement(Writer);
            MetaSeek.AddIndexedElement(MatroskaDocTypes.Tracks.Type, (ulong)Writer.Position);
            Tracks = new MatroskaFileTracks(Writer.Position);
            Tracks.WriteTracks(Writer);
            Cluster               = new MatroskaCluster();
            Cluster.SizeLimit     = 128 * 1024;
            Cluster.DurationLimit = 5000;
            MetaSeek.AddIndexedElement(MatroskaDocTypes.Cluster.Type, (ulong)Writer.Position);
        }