Exemple #1
1
        public static int Compress(Stream input, Stream output, int uncompressedSize, Action<long> compressed = null)
        {
            Exceptions.CheckArgumentNull(input, "input");
            Exceptions.CheckArgumentNull(output, "output");
            Exceptions.CheckArgumentOutOfRangeException(uncompressedSize, "uncompressedSize", 0, int.MaxValue);

            byte[] buff = new byte[Math.Min(32 * 1024, uncompressedSize)];
            ZOutputStream writer = new ZOutputStream(output, 6);

            long position = output.Position;

            int readed;
            while (uncompressedSize > 0 && (readed = input.Read(buff, 0, Math.Min(buff.Length, uncompressedSize))) > 0)
            {
                uncompressedSize -= readed;
                writer.Write(buff, 0, readed);
                compressed.NullSafeInvoke(readed);
            }

            writer.finish();

            if (uncompressedSize != 0)
                throw new Exception("Неожиданный конец потока.");

            return (int)(output.Position - position);
        }
Exemple #2
0
        public void Compress()
        {
            //压缩
            byte[] byteData = System.Text.Encoding.UTF8.GetBytes("ul{\"state\":1,\"nick\":\"小龙\",\"sex\":true,\"email\":\"[email protected]\",\"exp\":109040,\"isguest\":false,\"hotpoint\":26,\"money\":7099,\"styletype\":\"stand\",\"style\":\"2/2/2/1\",\"id\":\"2ef38760-9000-4f10-b96b-af4da8c656ae\",\"vertify\":1,\"level\":12,\"sign\":\"小龙\",\"score\":6323}");
            MemoryStream ms = new MemoryStream();
            Stream s = new ZOutputStream(ms, 9);

            s.Write(byteData, 0, byteData.Length);
            s.Close();
            byte[] compressData = (byte[])ms.ToArray();
            ms.Flush();
            ms.Close();
            Console.WriteLine(compressData.Length);

            //解压
            MemoryStream md = new MemoryStream();
            Stream d = new ZOutputStream(md);
            d.Write(compressData, 0, compressData.Length);
            d.Close();
            byte[] dompressData = (byte[])md.ToArray();
            md.Flush();
            md.Close();

            Console.WriteLine(dompressData.Length);
        }
Exemple #3
0
 public void Compress()
 {
     byte[] buffer = m_Stream.GetBuffer();
     ZOutputStream zs = new ZOutputStream(m_Stream);
     zs.Write(buffer, 0, buffer.Length);
     zs.Close();
     Init();
 }
 /// <summary>
 /// Zip compress data with offset and length.
 /// </summary>
 /// <param name="src"></param>
 /// <returns></returns>
 public static byte[] Compress(byte[] src, int offset, int length)
 {
     MemoryStream ms = new MemoryStream();
     Stream s = new ZOutputStream(ms, 9);
     s.Write(src, offset, length);
     s.Close();
     return (byte[])ms.ToArray();
 }
 /// <summary>
 /// Zip uncompress data.
 /// </summary>
 /// <param name="src"></param>
 /// <returns></returns>
 public static byte[] Uncompress(byte[] src)
 {
     MemoryStream md = new MemoryStream();
     Stream d = new ZOutputStream(md);
     d.Write(src, 0, src.Length);
     d.Close();
     return (byte[])md.ToArray();
 }
Exemple #6
0
 public static Stream DecompressFrame(Stream stream, int compressedSize)
 {
     Stream stream1 = new MemoryStream();
     ZOutputStream stream2 = new ZOutputStream(stream1);
     Utils.CopyStream(stream, stream2, compressedSize);
     stream1.Position = 0;
     return stream1;
 }
        /// <summary>
        /// Cache all item templates
        /// </summary>
        /// <param name="fname">
        /// </param>
        /// <returns>
        /// number of cached items
        /// </returns>
        public static int CacheAllNanos(string fname)
        {
            Contract.Requires(!string.IsNullOrEmpty(fname));
            DateTime _now = DateTime.Now;
            NanoList = new Dictionary<int, NanoFormula>();
            Stream sf = new FileStream(fname, FileMode.Open);
            MemoryStream ms = new MemoryStream();

            ZOutputStream sm = new ZOutputStream(ms);
            CopyStream(sf, sm);

            ms.Seek(0, SeekOrigin.Begin);
            BinaryReader br = new BinaryReader(ms);
            byte versionlength = (byte)ms.ReadByte();
            char[] version = new char[versionlength];
            version = br.ReadChars(versionlength);

            // TODO: Check version and print a warning if not same as config.xml's
            Console.WriteLine("Reading Nanos (" + new string(version) + "):");

            MessagePackSerializer<List<NanoFormula>> bf = MessagePackSerializer.Create<List<NanoFormula>>();

            byte[] buffer = new byte[4];
            ms.Read(buffer, 0, 4);
            int packaged = BitConverter.ToInt32(buffer, 0);

            while (true)
            {
                List<NanoFormula> templist;
                try
                {
                    templist = bf.Unpack(ms);
                    foreach (NanoFormula nf in templist)
                    {
                        NanoList.Add(nf.ID, nf);
                    }

                    if (templist.Count != packaged)
                    {
                        break;
                    }
                }
                catch (Exception)
                {
                    throw;
                }

                Console.Write(
                    "Loaded {0} nanos in {1}\r",
                    new object[] { NanoList.Count, new DateTime((DateTime.Now - _now).Ticks).ToString("mm:ss.ff") });
            }

            GC.Collect();
            return NanoList.Count;
        }
Exemple #8
0
 /// <summary>
 /// Deflate a string using zlib.net library since IronRuby's Deflate module is buggy, f**k
 /// </summary>
 /// <param name="data">The string to compress</param>
 /// <returns>The decompressed string as a Ruby string</returns>
 public static MutableString ZlibDeflate(string data)
 {
     using (MemoryStream outMemoryStream = new MemoryStream())
       using (ZOutputStream outZStream = new ZOutputStream(outMemoryStream, zlibConst.Z_BEST_COMPRESSION))
       {
     byte[] bytes = Encoding.UTF8.GetBytes(data);
     outZStream.Write(bytes, 0, bytes.Length);
     outZStream.finish();
     return MutableString.CreateBinary(outMemoryStream.ToArray());
       }
 }
 public static byte[] CompressData(byte[] inData)
 {
     using (MemoryStream outMemoryStream = new MemoryStream())
     using (ZOutputStream outZStream = new ZOutputStream(outMemoryStream, zlibConst.Z_DEFAULT_COMPRESSION))
     using (Stream inMemoryStream = new MemoryStream(inData))
     {
         CopyStream(inMemoryStream, outZStream);
         outZStream.finish();
         return outMemoryStream.ToArray();
     }
 }
 public static byte[] DecompressData(byte[] inData)
 {
     using (MemoryStream outMemoryStream = new MemoryStream())
     using (ZOutputStream outZStream = new ZOutputStream(outMemoryStream))
     using (Stream inMemoryStream = new MemoryStream(inData))
     {
         CopyStream(inMemoryStream, outZStream);
         outZStream.finish();
         return outMemoryStream.ToArray();
     }
 }
Exemple #11
0
 public static void Decompress(Stream compressed, Stream target)
 {
     var zip = new ZOutputStream(target);
     int readBytes;
     var buffer = new byte[512];
     do {
         readBytes = compressed.Read(buffer, 0, buffer.Length);
         zip.Write(buffer, 0, readBytes);
     } while (readBytes > 0);
     zip.Flush();
     target.Seek(0, SeekOrigin.Begin);
 }
Exemple #12
0
 public static void Compress(Stream uncompressed, Stream target)
 {
     var buffer = new byte[4096];
     int readBytes;
     var zip = new ZOutputStream(target, zlibConst.Z_BEST_COMPRESSION);
     do {
         readBytes = uncompressed.Read(buffer, 0, buffer.Length);
         zip.Write(buffer, 0, readBytes);
     } while (readBytes > 0);
     zip.finish();
     zip.Flush();
 }
Exemple #13
0
        /// <summary>
        /// Cache all item templates
        /// </summary>
        /// <param name="fname">
        /// File to load from
        /// </param>
        /// <returns>
        /// Number of cached items
        /// </returns>
        public static int CacheAllItems(string fname)
        {
            Contract.Requires(!string.IsNullOrEmpty(fname));
            DateTime _now = DateTime.UtcNow;
            ItemList = new Dictionary<int, ItemTemplate>();
            Stream fileStream = new FileStream(fname, FileMode.Open);
            MemoryStream memoryStream = new MemoryStream();

            ZOutputStream zOutputStream = new ZOutputStream(memoryStream);
            CopyStream(fileStream, zOutputStream);

            memoryStream.Seek(0, SeekOrigin.Begin);
            BinaryReader binaryReader = new BinaryReader(memoryStream);
            byte versionlength = (byte)memoryStream.ReadByte();
            char[] version = new char[versionlength];
            version = binaryReader.ReadChars(versionlength);

            // TODO: Check version and print a warning if not same as config.xml's
            MessagePackSerializer<List<ItemTemplate>> messagePackSerializer =
                MessagePackSerializer.Create<List<ItemTemplate>>();

            var buffer = new byte[4];
            memoryStream.Read(buffer, 0, 4);
            int packaged = BitConverter.ToInt32(buffer, 0);
            Console.WriteLine("Reading Items (" + new string(version) + "):");
            while (true)
            {
                try
                {
                    List<ItemTemplate> templates = messagePackSerializer.Unpack(memoryStream);
                    foreach (ItemTemplate template in templates)
                    {
                        ItemList.Add(template.ID, template);
                    }

                    if (templates.Count != packaged)
                    {
                        break;
                    }
                }
                catch (Exception)
                {
                    throw;
                }

                Console.Write(
                    "Loaded {0} items in {1}\r",
                    new object[] { ItemList.Count, new DateTime((DateTime.UtcNow - _now).Ticks).ToString("mm:ss.ff") });
            }

            GC.Collect();
            return ItemList.Count;
        }
Exemple #14
0
        private byte[] DecompressFile(byte[] data, int uncompresedSize)
        {
            MemoryStream inputStream  = new MemoryStream(data);
            MemoryStream outputStream = new MemoryStream();

            zlib.ZOutputStream outZStream = new zlib.ZOutputStream(outputStream);

            CopyStream(inputStream, outZStream);

            byte[] result = outputStream.ToArray();

            return(result);
        }
Exemple #15
0
        public void SendChunk(Chunk chunk)
        {
            Transmit(PacketType.PreChunk, chunk.ChunkX, chunk.ChunkZ, (sbyte) 1);

            byte[] uncompressed = chunk.GetBytes();
            MemoryStream mem = new MemoryStream();
            ZOutputStream stream = new ZOutputStream(mem, zlibConst.Z_BEST_COMPRESSION);
            stream.Write(uncompressed, 0, uncompressed.Length);
            stream.Close();
            byte[] data = mem.ToArray();

            Transmit(PacketType.MapChunk, 16 * chunk.ChunkX, (short) 0, 16 * chunk.ChunkZ,
                (sbyte) 15, (sbyte) 127, (sbyte) 15, data.Length, data);
        }
        public void Receive2(string Message)
        {
            MessageEventArgs args = new MessageEventArgs();

            try
            {
                byte[] messagebytes = Helpers.DecodeBase64Byte(Message);
                using (MemoryStream ms = new MemoryStream(messagebytes))
                {
                    using (var output = new MemoryStream())
                        using (var zipStream = new zlib.ZOutputStream(output))
                        {
                            using (ms)
                            {
                                var buffer = new byte[2000];
                                int len;

                                while ((len = ms.Read(buffer, 0, 2000)) > 0)
                                {
                                    zipStream.Write(buffer, 0, len);
                                }
                            }
                            // reset output stream to start so we can read it to a string
                            output.Position = 0;

                            byte[] content = new byte[output.Length];

                            output.Read(content, 0, (int)output.Length);

                            args.Message = Encoding.Default.GetString(content);
                        }
                }
                receivedCount++;
                if (receivedCount >= 10)
                {
                    receivedEvent.Set();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            EventHandler <MessageEventArgs> handler = MessageReceived;

            if (handler != null)
            {
                handler(this, args);
            }
        }
Exemple #17
0
        //导出
        private void exportBtn_Click(object sender, EventArgs e)
        {
            int index = swfListBox.SelectedIndex;
            SwfClass swf = ProcessHandle.getInstence().getSwfClassByIndex(index);

            if (saveFileDialog.ShowDialog() == DialogResult.OK){
                string localFilePath = saveFileDialog.FileName;

                if(checkBox.Checked == false){
                    byte[] fileByte = swf.fileByte;
                    FileStream file = new FileStream(localFilePath, FileMode.Create);
                    file.Write(fileByte, 0, swf.size);
                    file.Flush();
                    file.Close();
                }
                else
                {
                    MemoryStream mStream = new MemoryStream(swf.fileByte.Length);
                    mStream.WriteByte(0x43);
                    mStream.Write(swf.fileByte, 1, 7);

                    MemoryStream getStream = new MemoryStream(swf.fileByte.Length);

                    //ZipOutputStream outPut = new ZipOutputStream(getStream);
                    //ZipEntry entry = new ZipEntry("");
                    //entry.CompressionMethod = CompressionMethod.WinZipAES
                    //outPut.PutNextEntry(entry);
                    //outPut.Write(swf.fileByte, 8, swf.fileByte.Length - 8);
                    //outPut.Finish();

                    ZOutputStream outPut = new ZOutputStream(getStream,zlib.zlibConst.Z_DEFAULT_COMPRESSION);
                    outPut.Write(swf.fileByte, 8, swf.fileByte.Length - 8);
                    outPut.finish();

                    getStream.WriteTo(mStream);

                    outPut.Close();

                    FileStream file = new FileStream(localFilePath, FileMode.Create);
                    file.Write(mStream.ToArray(), 0,(int)mStream.Length);
                    file.Flush();
                    file.Close();

                    MessageBox.Show("导出swf成功,路径:" + localFilePath,"成功");
                }

            }
        }
        public static byte[] CompressData(byte[] inData)
        {
            byte[] byteArray = inData;
            byte[] tmpArray;

            using (MemoryStream ms = new MemoryStream())
            {
                using (zlib.ZOutputStream outZStream = new zlib.ZOutputStream(ms, zlib.zlibConst.Z_DEFAULT_COMPRESSION))
                {
                    outZStream.Write(byteArray, 0, byteArray.Length);
                    outZStream.Flush();
                }
                tmpArray = ms.ToArray();
            }
            return(tmpArray);
        }
Exemple #19
0
 private static void DecompressZLibData(byte[] inData, out byte[] outData)
 {
     // used to work.
     using (MemoryStream outMemoryStream = new MemoryStream(1000000))
     {
         using (ZOutputStream outZStream = new ZOutputStream(outMemoryStream))
         {
             using (Stream inMemoryStream = new MemoryStream(inData))
             {
                 CopyStream(inMemoryStream, outZStream);
                 outZStream.finish();
                 outData = outMemoryStream.ToArray();
             }
         }
     }
 }
Exemple #20
0
		private static void CompressData(byte[] inData, out byte[] outData)
		{
			using (MemoryStream outMemoryStream = new MemoryStream())
			{
				using (ZOutputStream outZStream = new ZOutputStream(outMemoryStream, zlibConst.Z_DEFAULT_COMPRESSION))
				{
					using (Stream inMemoryStream = new MemoryStream(inData))
					{
						CopyStream(inMemoryStream, outZStream);
						outZStream.finish();

						outData = outMemoryStream.ToArray();
					}
				}
			}
		}
Exemple #21
0
        public static MemoryStream Decompress(BinaryReader input, long destLength)
        {
            int bufferLength = 4;

            MemoryStream output = new MemoryStream();
            ZOutputStream zipStream = new ZOutputStream(output);

            byte[] buffer = new byte[bufferLength];

            while (output.Length < destLength)
            {
                input.Read(buffer, 0, bufferLength);
                zipStream.Write(buffer, 0, bufferLength);
            }

            return output;
        }
Exemple #22
0
 private void button1_Click_1(object sender, EventArgs e)
 {
     //Compression.LZW.TestCompress();
     System.IO.FileStream output  = new System.IO.FileStream("CompressedZ1.txt", System.IO.FileMode.Create);
     zlib.ZOutputStream   outputZ = new zlib.ZOutputStream(output, zlib.zlibConst.Z_DEFAULT_COMPRESSION);
     System.IO.FileStream input   = new System.IO.FileStream("InputZ1.txt", System.IO.FileMode.Open);
     try
     {
         CopyStream(input, outputZ);
     }
     finally
     {
         outputZ.Close();
         output.Close();
         input.Close();
     }
 }
    public void Decompress()
    {
        long         msPos = m_memoryStream.Position;
        MemoryStream outMS = new MemoryStream();

        zlib.ZOutputStream outZStream = new zlib.ZOutputStream(outMS);

        CopyStream(m_memoryStream, outZStream);
        outZStream.finish();

        outMS.Position          = 0;
        m_memoryStream.Position = msPos;
        CopyStream(outMS, m_memoryStream);
        m_memoryStream.Position = msPos;

        outMS.Close();
        outZStream.Close();
    }
Exemple #24
0
    public static string Compress(string param)
    {
        byte[] data = System.Text.Encoding.UTF8.GetBytes(param);
        //byte[] data = Convert.FromBase64String(param);
        MemoryStream ms     = new MemoryStream();
        Stream       stream = new zlib.ZOutputStream(ms);

        try
        {
            stream.Write(data, 0, data.Length);
        }
        finally
        {
            stream.Close();
            ms.Close();
        }
        return(Convert.ToBase64String(ms.ToArray()));
    }
 public static byte[] compress(byte[] data)
 {
     for (int l = zlib.zlibConst.Z_BEST_COMPRESSION; l > 0; l--)
     {
         MemoryStream o = new MemoryStream();
         ZOutputStream z = new ZOutputStream(o, l);
         MemoryStream i = new MemoryStream(data);
         CopyStream(i, z);
         z.finish();
         o.Position = 0;
         byte[] res = o.ToArray();
         i.Close();
         z.Close();
         o.Close();
         if (res.Length > 2)
             return res;
     }
     return data;
 }
Exemple #26
0
        /// <summary>
        /// zlib.net 压缩函数
        /// </summary>
        /// <param name="strSource">待压缩数据</param>
        /// <returns>压缩后数据</returns>
        public static byte[] Compress(byte[] bytes)
        {
            MemoryStream outms = new MemoryStream();
            MemoryStream inms  = new MemoryStream(bytes);

            zlib.ZOutputStream outZStream = new zlib.ZOutputStream(outms, zlib.zlibConst.Z_DEFAULT_COMPRESSION);
            try
            {
                CopyStream(inms, outZStream, bytes);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                outZStream.Close();
            }
            return(outms.ToArray());
        }
Exemple #27
0
        public static byte[] Decompress(byte[] input)
        {
            using (MemoryStream output = new MemoryStream())
              {
            using (ZOutputStream zipStream = new ZOutputStream(output))
            {
              using (MemoryStream inputStream = new MemoryStream(input))
              {
            var buffer = new byte[2000];
            int len;

            while ((len = inputStream.Read(buffer, 0, 2000)) > 0)
            {
              zipStream.Write(buffer, 0, len);
            }
              }
            }
            return output.ToArray();
              }
        }
Exemple #28
0
        private void button2_Click(object sender, EventArgs e)
        {
            //Compression.LZW.TestDecompres();
            //System.IO.FileStream outFileStream = new System.IO.FileStream("DecompressedZ1.txt", System.IO.FileMode.Create);
            //zlib.ZOutputStream outZStream = new zlib.ZOutputStream(outFileStream);
            //System.IO.FileStream inFileStream = new System.IO.FileStream("CompressedZ1.txt", System.IO.FileMode.Open);
            System.IO.FileStream outFileStream = new System.IO.FileStream("DecompressedZ2.bin", System.IO.FileMode.Create);
            zlib.ZOutputStream   outZStream    = new zlib.ZOutputStream(outFileStream);
            System.IO.FileStream inFileStream  = new System.IO.FileStream("219outCompressed.bin", System.IO.FileMode.Open);

            try
            {
                CopyStream(inFileStream, outZStream);
            }
            finally
            {
                outZStream.Close();
                outFileStream.Close();
                inFileStream.Close();
            }
        }
Exemple #29
0
        public void ReadSwf(string swfFilePath)
        {
            try
            {
                //using closes and disposes for you
                using (MemoryStream uncompressedZip = new MemoryStream())
                using (ZOutputStream zlibStream = new ZOutputStream(uncompressedZip))
                using (FileStream compressedSwf = new FileInfo(swfFilePath).OpenRead())
                {
                    byte[] firstHeaderBytes = ChompHeaderBytes(compressedSwf);

                    zlibStream.finish();
                }
            }
            catch (IOException ioe)
            {

            }
            catch (Exception e)
            {

            }
        }
Exemple #30
0
        // Compression related
        // partially from http://stackoverflow.com/a/6627194/5343630
        public static void CompressData(string compLevel, byte[] inData, out byte[] outData)
        {
            int cmp_lvl = 0;
            if (compLevel == "789C")
                cmp_lvl = 6;
            else if (compLevel == "7801" || compLevel == "78DA")
                cmp_lvl = 0;
            else
            {
                Console.WriteLine("\nERROR: Unsupported compression flag used.");
                Console.WriteLine("Falling back to default.\n");
                cmp_lvl = zlibConst.Z_DEFAULT_COMPRESSION;
            }

            using (MemoryStream outMemoryStream = new MemoryStream())
            using (ZOutputStream outZStream = new ZOutputStream(outMemoryStream, cmp_lvl))
            using (Stream inMemoryStream = new MemoryStream(inData))
            {
                CopyStream(inMemoryStream, outZStream);
                outZStream.finish();
                outData = outMemoryStream.ToArray();
            }
        }
Exemple #31
0
        public static MemoryStream Decompress(Stream input)
        {
            var output = new MemoryStream();
            var zipStream = new zlib.ZOutputStream(output);

            using (input)
            {
                var buffer = new byte[2000];
                int len;

                while ((len = input.Read(buffer, 0, 2000)) > 0)
                {
                    zipStream.Write(buffer, 0, len);
                }
            }

            output.Position = 0;

            byte[] content = new byte[output.Length];

            output.Read(content, 0, (int)output.Length);

            return output;
        }
Exemple #32
0
        public static MemoryStream Decompress(Stream input)
        {
            var output    = new MemoryStream();
            var zipStream = new zlib.ZOutputStream(output);

            using (input)
            {
                var buffer = new byte[2000];
                int len;

                while ((len = input.Read(buffer, 0, 2000)) > 0)
                {
                    zipStream.Write(buffer, 0, len);
                }
            }

            output.Position = 0;

            byte[] content = new byte[output.Length];

            output.Read(content, 0, (int)output.Length);

            return(output);
        }
        private bool LoadVobSubFromMatroska(MatroskaTrackInfo matroskaSubtitleInfo, MatroskaFile matroska)
        {
            if (matroskaSubtitleInfo.ContentEncodingType == 1)
            {
                MessageBox.Show(this._language.NoSupportEncryptedVobSub);
            }

            this.ShowStatus(this._language.ParsingMatroskaFile);
            this.Refresh();
            Cursor.Current = Cursors.WaitCursor;
            var sub = matroska.GetSubtitle(matroskaSubtitleInfo.TrackNumber, this.MatroskaProgress);
            TaskbarList.SetProgressState(this.Handle, TaskbarButtonProgressFlags.NoProgress);
            Cursor.Current = Cursors.Default;

            this.MakeHistoryForUndo(this._language.BeforeImportFromMatroskaFile);
            this._subtitleListViewIndex = -1;
            this._subtitle.Paragraphs.Clear();

            List<VobSubMergedPack> mergedVobSubPacks = new List<VobSubMergedPack>();
            Idx idx = new Idx(matroskaSubtitleInfo.CodecPrivate.SplitToLines());
            foreach (var p in sub)
            {
                if (matroskaSubtitleInfo.ContentEncodingType == 0)
                {
                    // compressed with zlib
                    bool error = false;
                    MemoryStream outStream = new MemoryStream();
                    var outZStream = new ZOutputStream(outStream);
                    MemoryStream inStream = new MemoryStream(p.Data);
                    byte[] buffer = null;
                    try
                    {
                        CopyStream(inStream, outZStream);
                        buffer = new byte[outZStream.TotalOut];
                        outStream.Position = 0;
                        outStream.Read(buffer, 0, buffer.Length);
                    }
                    catch (Exception exception)
                    {
                        MessageBox.Show(exception.Message + Environment.NewLine + Environment.NewLine + exception.StackTrace);
                        error = true;
                    }
                    finally
                    {
                        outZStream.Close();
                        inStream.Close();
                    }

                    if (!error && buffer.Length > 2)
                    {
                        mergedVobSubPacks.Add(new VobSubMergedPack(buffer, TimeSpan.FromMilliseconds(p.Start), 32, null));
                    }
                }
                else
                {
                    mergedVobSubPacks.Add(new VobSubMergedPack(p.Data, TimeSpan.FromMilliseconds(p.Start), 32, null));
                }

                if (mergedVobSubPacks.Count > 0)
                {
                    mergedVobSubPacks[mergedVobSubPacks.Count - 1].EndTime = TimeSpan.FromMilliseconds(p.End);
                }

                // fix overlapping (some versions of Handbrake makes overlapping time codes - thx Hawke)
                if (mergedVobSubPacks.Count > 1 && mergedVobSubPacks[mergedVobSubPacks.Count - 2].EndTime > mergedVobSubPacks[mergedVobSubPacks.Count - 1].StartTime)
                {
                    mergedVobSubPacks[mergedVobSubPacks.Count - 2].EndTime = TimeSpan.FromMilliseconds(mergedVobSubPacks[mergedVobSubPacks.Count - 1].StartTime.TotalMilliseconds - 1);
                }
            }

            using (var formSubOcr = new VobSubOcr())
            {
                formSubOcr.Initialize(mergedVobSubPacks, idx.Palette, Configuration.Settings.VobSubOcr, null); // TODO: language???
                if (this._loading)
                {
                    formSubOcr.Icon = (Icon)this.Icon.Clone();
                    formSubOcr.ShowInTaskbar = true;
                    formSubOcr.ShowIcon = true;
                }

                if (formSubOcr.ShowDialog(this) == DialogResult.OK)
                {
                    this.ResetSubtitle();
                    this._subtitle.Paragraphs.Clear();
                    this._subtitle.WasLoadedWithFrameNumbers = false;
                    foreach (var p in formSubOcr.SubtitleFromOcr.Paragraphs)
                    {
                        this._subtitle.Paragraphs.Add(p);
                    }

                    this.ShowSource();
                    this.SubtitleListview1.Fill(this._subtitle, this._subtitleAlternate);
                    this._subtitleListViewIndex = -1;
                    this.SubtitleListview1.FirstVisibleIndex = -1;
                    this.SubtitleListview1.SelectIndexAndEnsureVisible(0);

                    this._fileName = Path.GetFileNameWithoutExtension(matroska.Path);
                    this._converted = true;
                    this.Text = this.Title;

                    Configuration.Settings.Save();
                    return true;
                }
            }

            return false;
        }
        private bool LoadBluRaySubFromMatroska(MatroskaTrackInfo matroskaSubtitleInfo, MatroskaFile matroska)
        {
            if (matroskaSubtitleInfo.ContentEncodingType == 1)
            {
                MessageBox.Show(this._language.NoSupportEncryptedVobSub);
            }

            this.ShowStatus(this._language.ParsingMatroskaFile);
            this.Refresh();
            Cursor.Current = Cursors.WaitCursor;
            var sub = matroska.GetSubtitle(matroskaSubtitleInfo.TrackNumber, this.MatroskaProgress);
            TaskbarList.SetProgressState(this.Handle, TaskbarButtonProgressFlags.NoProgress);
            Cursor.Current = Cursors.Default;

            int noOfErrors = 0;
            string lastError = string.Empty;
            this.MakeHistoryForUndo(this._language.BeforeImportFromMatroskaFile);
            this._subtitleListViewIndex = -1;
            this._subtitle.Paragraphs.Clear();
            var subtitles = new List<BluRaySupParser.PcsData>();
            var log = new StringBuilder();
            foreach (var p in sub)
            {
                byte[] buffer = null;
                if (matroskaSubtitleInfo.ContentEncodingType == 0)
                {
                    // compressed with zlib
                    MemoryStream outStream = new MemoryStream();
                    var outZStream = new ZOutputStream(outStream);
                    MemoryStream inStream = new MemoryStream(p.Data);
                    try
                    {
                        CopyStream(inStream, outZStream);
                        buffer = new byte[outZStream.TotalOut];
                        outStream.Position = 0;
                        outStream.Read(buffer, 0, buffer.Length);
                    }
                    catch (Exception exception)
                    {
                        var tc = new TimeCode(p.Start);
                        lastError = tc + ": " + exception.Message + ": " + exception.StackTrace;
                        noOfErrors++;
                    }
                    finally
                    {
                        outZStream.Close();
                        inStream.Close();
                    }
                }
                else
                {
                    buffer = p.Data;
                }

                if (buffer != null && buffer.Length > 100)
                {
                    MemoryStream ms = new MemoryStream(buffer);
                    var list = BluRaySupParser.ParseBluRaySup(ms, log, true);
                    foreach (var sup in list)
                    {
                        sup.StartTime = (long)((p.Start - 1) * 90.0);
                        sup.EndTime = (long)((p.End - 1) * 90.0);
                        subtitles.Add(sup);

                        // fix overlapping
                        if (subtitles.Count > 1 && sub[subtitles.Count - 2].End > sub[subtitles.Count - 1].Start)
                        {
                            subtitles[subtitles.Count - 2].EndTime = subtitles[subtitles.Count - 1].StartTime - 1;
                        }
                    }

                    ms.Close();
                }
                else if (subtitles.Count > 0)
                {
                    var lastSub = subtitles[subtitles.Count - 1];
                    if (lastSub.StartTime == lastSub.EndTime)
                    {
                        lastSub.EndTime = (long)((p.Start - 1) * 90.0);
                        if (lastSub.EndTime - lastSub.StartTime > 1000000)
                        {
                            lastSub.EndTime = lastSub.StartTime;
                        }
                    }
                }
            }

            if (noOfErrors > 0)
            {
                MessageBox.Show(string.Format("{0} error(s) occured during extraction of bdsup\r\n\r\n{1}", noOfErrors, lastError));
            }

            using (var formSubOcr = new VobSubOcr())
            {
                formSubOcr.Initialize(subtitles, Configuration.Settings.VobSubOcr, matroska.Path);
                if (this._loading)
                {
                    formSubOcr.Icon = (Icon)this.Icon.Clone();
                    formSubOcr.ShowInTaskbar = true;
                    formSubOcr.ShowIcon = true;
                }

                if (formSubOcr.ShowDialog(this) == DialogResult.OK)
                {
                    this.MakeHistoryForUndo(this._language.BeforeImportingDvdSubtitle);

                    this._subtitle.Paragraphs.Clear();
                    this.SetCurrentFormat(Configuration.Settings.General.DefaultSubtitleFormat);
                    this._subtitle.WasLoadedWithFrameNumbers = false;
                    this._subtitle.CalculateFrameNumbersFromTimeCodes(this.CurrentFrameRate);
                    foreach (var p in formSubOcr.SubtitleFromOcr.Paragraphs)
                    {
                        this._subtitle.Paragraphs.Add(p);
                    }

                    this.ShowSource();
                    this.SubtitleListview1.Fill(this._subtitle, this._subtitleAlternate);
                    this._subtitleListViewIndex = -1;
                    this.SubtitleListview1.FirstVisibleIndex = -1;
                    this.SubtitleListview1.SelectIndexAndEnsureVisible(0);

                    this._fileName = string.Empty;
                    this.Text = this.Title;

                    Configuration.Settings.Save();
                    return true;
                }
            }

            return false;
        }
Exemple #35
0
        public void SendChunk(Chunk c)
        {
            PreChunk(c.ChunkX, c.ChunkZ, 1);
            // TODO: maybe we can cache some uncompressed chunk
            byte[] uncompressed = c.GetBytes();
            byte[] data;
            using(MemoryStream mem = new MemoryStream()) {
                using(ZOutputStream stream = new ZOutputStream(mem, zlibConst.Z_BEST_COMPRESSION)) {
                    stream.Write(uncompressed, 0, uncompressed.Length);
                }
                data = mem.ToArray();
            }
            CXMineServer.SendLogFile("Sending: MapChunk dimension: " + (data.Length + 18).ToString() + "\r\n");
            Send(new MapChunk(16 * c.ChunkX, (short)0, 16 * c.ChunkZ, 15, 127, 15, data.Length, data));

            //KeepAlive();
        }
Exemple #36
0
        public override void Write(NetworkWriter writer)
        {
            writer.WriteInt32(ChunkX);
            writer.WriteInt16(ChunkY);
            writer.WriteInt32(ChunkZ);
            writer.WriteByte((byte)(Width - 1));
            writer.WriteByte((byte)(Height - 1));
            writer.WriteByte((byte)(Depth - 1));

            var compressed = new MemoryStream(Data.Length); // TODO: use better guess here
            var zlib = new ZOutputStream(compressed, zlibConst.Z_DEFAULT_COMPRESSION);
            zlib.Write(Data, 0, Data.Length);
            zlib.Flush();
            zlib.finish();
            writer.WriteInt32((int)zlib.TotalOut);
            writer.Write(compressed.GetBuffer(), 0, (int)zlib.TotalOut);
            zlib.Close();
            compressed.Close();
        }
Exemple #37
0
        public override void Read(NetworkReader reader)
        {
            ChunkX = reader.ReadInt32();
            ChunkY = reader.ReadInt16();
            ChunkZ = reader.ReadInt32();
            Width = reader.ReadByte() + 1;
            Height = reader.ReadByte() + 1;
            Depth = reader.ReadByte() + 1;

            byte[] data = new byte[reader.ReadInt32()];
            reader.Read(data, 0, data.Length);
            var uncompressed = new MemoryStream(data.Length); // TODO: use better guess here
            var zlib = new ZOutputStream(uncompressed);
            zlib.Write(data, 0, data.Length);
            zlib.Flush();
            zlib.finish();
            Data = new byte[zlib.TotalOut];
            uncompressed.Read(Data, 0, Data.Length);
            zlib.Close();
            uncompressed.Close();
        }
        /// <summary>
        /// Decompresses the block.
        /// </summary>
        /// <param name="compressed">The compressed data.</param>
        /// <param name="type">The type data type contained in the block.</param>
        /// <returns>The decompressed block.</returns>
        private static byte[] DecompressBlock(byte[] compressed, ref DataType type)
        {
            byte[] data;
            using (var decompressed = new MemoryStream())
            {
                using (var decompressor = new ZOutputStream(decompressed))
                {
                    decompressor.Write(compressed, 0, compressed.Length);
                    decompressed.Position = 0;
                    var buf = new byte[4];
                    decompressed.Read(buf, 0, 4);
                    type = (DataType)BitConverter.ToInt32(buf, 0);
                    decompressed.Read(buf, 0, 4);
                    var size = BitConverter.ToInt32(buf, 0);
                    data = new byte[size];
                    decompressed.Read(data, 0, size);
                }
            }

            return data;
        }
Exemple #39
-1
        public static void Deflate(Stream input, Stream output)
        {
            var zoutput = new ZOutputStream(output);
            var inputReader = new BinaryReader(input);

            zoutput.Write(inputReader.ReadBytes((int)input.Length), 0, (int)input.Length);
            zoutput.Flush();
        }