2019-05-07 06:25:17 -07:00

44 lines
1.5 KiB
C#

using Client.StreamLibrary.src;
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
namespace Client.StreamLibrary
{
public abstract class IUnsafeCodec
{
protected JpgCompression jpgCompression;
protected LzwCompression lzwCompression;
public abstract ulong CachedSize { get; internal set; }
protected object ImageProcessLock { get; private set; }
private int _imageQuality;
public int ImageQuality
{
get { return _imageQuality; }
set
{
_imageQuality = value;
jpgCompression = new JpgCompression(value);
lzwCompression = new LzwCompression(value);
}
}
public abstract event IVideoCodec.VideoDebugScanningDelegate onCodeDebugScan;
public abstract event IVideoCodec.VideoDebugScanningDelegate onDecodeDebugScan;
public IUnsafeCodec(int ImageQuality = 100)
{
this.ImageQuality = ImageQuality;
this.ImageProcessLock = new object();
}
public abstract int BufferCount { get; }
public abstract CodecOption CodecOptions { get; }
public abstract unsafe void CodeImage(IntPtr Scan0, Rectangle ScanArea, Size ImageSize, PixelFormat Format, Stream outStream);
public abstract unsafe Bitmap DecodeData(Stream inStream);
public abstract unsafe Bitmap DecodeData(IntPtr CodecBuffer, uint Length);
}
}