private void ParseFrames() { using (var process = new TSharkProcess(new FramesQuery(NetworkTrace.FullName, mProtocols))) { var frames = process.StandartOutput.ReadAllFrames(); var packer = new FramePacker(FrameList); int frameIndex = 0; int frameListLength = FrameList.Count; foreach (var frame in frames) { if (frameIndex < frameListLength - 1) { ++frameIndex; } SetStatusMessage(String.Format("Processing frame {0}/{1}", frameIndex, frameListLength)); bool isPacked = packer.PackFrame(frame); //TODO remove frame from the FrameList if not packed Progress = frameIndex * 90 / frameListLength; } } }
public void TestInputNullData() { var packer = new FramePacker(); Exception ex; var data = packer.Input(null, out ex); Assert.AreEqual(0, data); }
public void DecodeTest() { var packer = new FramePacker(); Exception ex; var data = packer.Decode(Arr.Merge(BitConverter.GetBytes(14), Encoding.Default.GetBytes("helloworld")), out ex); Assert.AreEqual("helloworld", Encoding.Default.GetString((byte[])data)); }
public void InputTests() { var packer = new FramePacker(); Exception ex; var length = packer.Input(Arr.Merge(BitConverter.GetBytes(14), Encoding.Default.GetBytes("helloworld")), out ex); Assert.AreEqual(14, length); }
public void TestEncodeNullData() { var packer = new FramePacker(); Exception ex; var data = packer.Encode(null, out ex); Assert.AreEqual(null, data); Assert.AreNotEqual(null, ex); }
public void EncodeTest() { var packer = new FramePacker(); Exception ex; var data = packer.Encode(Encoding.Default.GetBytes("helloworld"), out ex); Assert.AreEqual("14helloworld", BitConverter.ToInt32(Arr.Slice(data, 0, 4), 0) + Encoding.Default.GetString(Arr.Slice(data, 4))); }
private void AddEmote(string emoteName, Library.ILibraryInternal library, string url) { if (loadedEmotes.Contains(emoteName)) { return; } string encodedEmoteName = Utility.EncodeStringForFileName(emoteName); byte[] data = null; if (Library.FolderExists(TWITCH_CACHE_PATH)) { var qualifiedFilename = string.Format("{0}{1}", TWITCH_CACHE_PATH, encodedEmoteName); if (Library.FileExists(qualifiedFilename)) { data = File.ReadAllBytes(Library.GetFilename(qualifiedFilename)); } } MemoryStream imageStream = new MemoryStream(); if (data == null) { data = client.DownloadData(url); var folder = Library.GetFolderName(TWITCH_CACHE_PATH); MagickReadSettings settings = new MagickReadSettings(); settings.ColorSpace = ColorSpace.sRGB; settings.SetDefine(MagickFormat.Png, "format", "png8"); MagickImageInfo mImageInfo = new MagickImageInfo(data); if (mImageInfo.Format != MagickFormat.Gif) { using (MagickImage mImage = new MagickImage(data, settings)) { mImage.Write(imageStream); imageStream.Position = 0; } } else { using (MagickImageCollection mImages = new MagickImageCollection(data, settings)) { //Background is PepePls //SourPls is None var width = mImages.Max(x => x.Page.Width); var height = mImages.Max(y => y.Page.Height); FramePacker.FrameDisposal frameDisposal; switch (mImages[0].GifDisposeMethod) { case GifDisposeMethod.None: frameDisposal = FramePacker.FrameDisposal.Composite; break; case GifDisposeMethod.Undefined: case GifDisposeMethod.Background: case GifDisposeMethod.Previous: default: frameDisposal = FramePacker.FrameDisposal.Replace; break; } var packedImage = FramePacker.PackListOfImagesToMemStream( mImages.Select(imageFrame => new FramePacker.Frame { Image = imageFrame.ToBitmap(ImageFormat.Png), X = imageFrame.Page.X, Y = imageFrame.Page.Y, Width = imageFrame.BaseWidth, Height = imageFrame.BaseHeight }).ToArray(), imageStream, width, height, frameDisposal ); packedImage.FPS = 1 / ((float)mImages.Select(x => x.AnimationDelay).Average() / 100.0f); JsonWriter.Save(packedImage, string.Format("{0}{1}", TWITCH_CACHE_PATH, encodedEmoteName), true); //mImages[0].Write(imageStream); imageStream.Position = 0; } } File.WriteAllBytes(string.Format("{0}/{1}", folder, encodedEmoteName), data = imageStream.ToArray()); } library.AddTexture(string.Format("twitch//{0}", emoteName), imageStream); loadedEmotes.Add(emoteName); }