#pragma once #include #ifdef _DECODER_INTERFACE_EXPORT_ #define _DECODER_INTERFACE_ _declspec(dllexport) #else #define _DECODER_INTERFACE_ _declspec(dllimport) #endif typedef enum DecoderType { DEC_SOFTWARE = 0, DEC_HARDWARE = 1, }EnumDecoderType; typedef void (*DecodeCallbackFun)(unsigned char* data,int width,int height); class _DECODER_INTERFACE_ DecoderInterface { public: DecoderInterface(void){}; ~DecoderInterface(void){}; virtual bool init(int srcWth,int srcHth,int dstWth = 0,int dstHth = 0,int oPixFmt = 0,HWND hwnd = 0) = 0; virtual void decoding(unsigned char* in_buf,int in_len) = 0; virtual void release() = 0; virtual void setDecodingCallback(DecodeCallbackFun fun) = 0; }; class _DECODER_INTERFACE_ DecoderFactory { public: DecoderFactory(void); ~DecoderFactory(void); static DecoderInterface* CreateDecoder(EnumDecoderType type = DEC_SOFTWARE); static void DestroyDecoder(DecoderInterface* deoder); };