Пример #1
0
        public static void Optimize(EBMLDocType ebmlDoc, Stream source, Stream target)
        {
            var dataSrc = new EBMLStreamDataSource(source);
            var dataTrg = new EBMLStreamDataSource(target);

            while(source.Position != source.Length) {
                var id = dataSrc.ReadIdentifier();
                var length = dataSrc.ReadVInt();
                var docElem = ebmlDoc.RetrieveDocElement(id);

                dataTrg.WriteIdentifier(id);
                dataTrg.WriteVInt(length);

                if(docElem.Type != EBMLElementType.Master) {
                    var offset = 0L;
                    var b = dataSrc.GetData(length, out offset);
                    dataTrg.Write(b, (Int32)offset, b.Length);
                }
            }
        }