2023-07-29 23:37:10 +05:30

43 lines
1.1 KiB
C#

using System.Drawing;
using System.IO;
using StreamLibrary.src;
namespace StreamLibrary;
public abstract class IVideoCodec
{
public delegate void VideoCodeProgress(Stream stream, Rectangle[] MotionChanges);
public delegate void VideoDecodeProgress(Bitmap bitmap);
public delegate void VideoDebugScanningDelegate(Rectangle ScanArea);
protected JpgCompression jpgCompression;
public abstract ulong CachedSize { get; internal set; }
public int ImageQuality { get; set; }
public abstract int BufferCount { get; }
public abstract CodecOption CodecOptions { get; }
public abstract event VideoCodeProgress onVideoStreamCoding;
public abstract event VideoDecodeProgress onVideoStreamDecoding;
public abstract event VideoDebugScanningDelegate onCodeDebugScan;
public abstract event VideoDebugScanningDelegate onDecodeDebugScan;
public IVideoCodec(int ImageQuality = 100)
{
jpgCompression = new JpgCompression(ImageQuality);
this.ImageQuality = ImageQuality;
}
public abstract void CodeImage(Bitmap bitmap, Stream outStream);
public abstract Bitmap DecodeData(Stream inStream);
}