00001 00015 #ifndef _Q_LibQEnc_h 00016 #define _Q_LibQEnc_h 00017 00018 #include "./FrameInput.h" 00019 #include "./FrameOutput.h" 00020 #include "./FrameResult.h" 00021 #include "./Settings.h" 00022 #include "./FeedbackInterface.h" 00023 #include "./EncoderCallback.h" 00024 00025 #include "../common/FormatInfo.h" 00026 00027 00030 class EncoderInterface 00031 { 00032 public: 00036 static EncoderInterface* create(); 00037 00040 static void destroy(EncoderInterface* pIQEncoderInterface); 00041 00042 protected: 00043 virtual ~EncoderInterface() {} 00044 00045 public: 00046 00049 virtual Settings* getSettingsApi() = 0; 00050 00054 virtual void setFeedback(FeedbackInterface* pFeedbackInterface) = 0; 00055 00056 virtual void setEncoderCallback(EncoderCallback* pCallback) = 0; 00057 00060 virtual const char* getVersionInfo() const = 0; 00061 00065 virtual void setFormatInput(const FormatInfo* pFormatInfo) = 0; 00066 00071 virtual bool getFormatInput(FormatInfo* pFormatInfo) const = 0; 00072 00077 virtual bool getFormatOutput(FormatInfo* pFormatInfo) const = 0; 00078 00079 public: // Delivery API 00080 00086 virtual void deliverFrame(const FrameInput* pFrameInput) = 0; 00087 00088 public: // Bitstream API #1 00089 00095 virtual bool encodeFrame(FrameOutput* pFrameOutput, FrameResult* pFrameResult=0) = 0; 00096 00097 public: // Bitstream API #2 00098 00105 virtual bool encode(FrameOutput* pFrameOutput, FrameResult* pFrameResult=0) = 0; 00106 }; 00107 00108 00109 #endif