#ifndef _unc_H #define _unc_H #include #include #include #include class Unc_Decoder: public IVideoDecoder { const CodecInfo& record; public: Unc_Decoder(const CodecInfo&, const BITMAPINFOHEADER&); virtual ~Unc_Decoder(); virtual void Start(); virtual void Stop(); virtual const BITMAPINFOHEADER& DestFmt(){return m_obh;} virtual int DecodeFrame(char* src, int size, int is_keyframe); virtual int SetDestFmt(int bits, int csp) { if(csp)return -1; switch(bits) { case 15: case 16: case 24: case 32: m_obh.setBits(bits); return 0; default: return -1; } } virtual const CodecInfo& GetCodecInfo() const {return record;} virtual void Restart(){} }; class Unc_Encoder: public IVideoEncoder { BitmapInfo head; const CodecInfo& record; public: Unc_Encoder(const CodecInfo& info, const BITMAPINFOHEADER& header): head(header), record(info){} ~Unc_Encoder(){} virtual void Close(){} virtual void Start(){} virtual void Stop(){} virtual void Restart(){} virtual int QueryOutputSize(){return abs(head.biWidth*head.biHeight)*4;} virtual const BITMAPINFOHEADER& QueryOutputFormat() const {return head;} virtual int EncodeFrame(CImage* src, char* dest, int* is_keyframe, int* size, int* lpckid=0) { if(!src)return -100; memcpy(dest, src->data(), src->bytes()); if(size)*size=src->bytes(); if(is_keyframe)*is_keyframe=16;//AVIIF_KEYFRAME } virtual int SetQuality(int quality){return 0;} virtual int GetQuality() {return 0;} virtual int SetKeyFrame(int frequency) {return 0;} virtual int GetKeyFrame() {return 0;} virtual const CodecInfo& GetCodecInfo() const {return record;} }; #endif