NYAN CAT 264affa76f Update
Added remotedesktop + process manager
2019-02-07 15:47:12 -08:00

68 lines
2.0 KiB
C#

using StreamLibrary.src;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Text;
namespace StreamLibrary.Codecs
{
/// <summary>
/// The M-JPG codec is not very efficient for networking as it is just a very simple codec
/// </summary>
public class MJPGCodec : IVideoCodec
{
public override event IVideoCodec.VideoCodeProgress onVideoStreamCoding;
public override event IVideoCodec.VideoDecodeProgress onVideoStreamDecoding;
public override event IVideoCodec.VideoDebugScanningDelegate onCodeDebugScan;
public override event IVideoCodec.VideoDebugScanningDelegate onDecodeDebugScan;
public override ulong CachedSize
{
get { return 0; }
internal set { }
}
public override int BufferCount
{
get { return 0; }
}
public override CodecOption CodecOptions
{
get { return CodecOption.None; }
}
public MJPGCodec(int ImageQuality = 100)
: base(ImageQuality)
{
}
public override void CodeImage(Bitmap bitmap, Stream outStream)
{
lock (base.jpgCompression)
{
byte[] data = base.jpgCompression.Compress(bitmap);
outStream.Write(BitConverter.GetBytes(data.Length), 0, 4);
outStream.Write(data, 0, data.Length);
}
}
public override Bitmap DecodeData(Stream inStream)
{
lock (base.jpgCompression)
{
if (!inStream.CanRead)
throw new Exception("Must have access to Read in the Stream");
byte[] temp = new byte[4];
inStream.Read(temp, 0, temp.Length);
int DataLength = BitConverter.ToInt32(temp, 0);
temp = new byte[DataLength];
inStream.Read(temp, 0, temp.Length);
return (Bitmap)Bitmap.FromStream(new MemoryStream(temp));
}
}
}
}