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