技術解決方案swf2video, ppt2video基本完成,但要與原來的視頻播放接口保持一至,這樣就不用處理大量的類似的邏輯問題,具體的有差異邏輯處理再作針對性處理,目前還在構想中。
以前工作中由於不同產品屬於不同的開發小組,它們之間沒有實現真正的技術上的代碼共享,而是各自根據自己的情況來實現,開發的工作量也不小。事實裏面的很多邏輯是一致的,只是具體的並實現方式有些差異,做成同一接口,不同實現。
接口代碼:
#ifndef IMPLAYBASE_H
#define IMPLAYBASE_H
#include "UIApi.h"
#include "UILib.h"
class ImPlayBase
{
public:
ImPlayBase (lpShareMemData data)
:handle(NULL)
,m_lpSMD(data){};
virtual ~ImPlayBase () { }
virtual int init() = 0;
virtual int open() = 0;
virtual int start() = 0;
virtual int pause() = 0;
virtual int resume() = 0;
virtual int stop() = 0;
virtual int close() = 0;
virtual int seek() = 0;
virtual int shotsnap() = 0;
virtual void setVolume() = 0;
virtual int getVolume() = 0;
lpShareMemData getData(){ return m_lpSMD; }
protected:
/* data */
void* handle;
lpShareMemData m_lpSMD;
};
#endif
////////////////////////////////////////////////////////////////////
//ppt header:
class PPTMGR_EXPORT ImPPTPlayer : public ImPlayBase
{
public:
ImPPTPlayer(lpShareMemData data);
~ImPPTPlayer();
int init();
int open();
int start();
int pause();
int resume();
int stop();
int close();
int seek();
int shotsnap();
void setVolume();
int getVolume();
void setListItem(ImListTreeItem *item);
QString getVersion();
bool isInstallPPT();
signals:
protected slots:
private:
HRESULT createPPTEvents();
private:
_ApplicationPtr m_app;
PPTEventSink *m_sink; //Global variables
IConnectionPoint* m_connectPoint;
SlideShowWindowPtr m_sldeWindow;
int m_slideNum;
HWND m_pptHwnd;
lpShareMemData m_lpSMD;
ImListTreeItem *m_listItem;
};
////////////////////////////////////////////////////////////////
// flash header:
class FLASHMGR_EXPORT ImFlashPlayer : public ImPlayBase
{
public:
ImFlashPlayer(lpShareMemData data);
~ImFlashPlayer();
int init();
int open();
int start();
int pause();
int resume();
int stop();
int close();
int seek();
int shotsnap();
void setVolume();
int getVolume();
void setListItem(ImListTreeItem *item);
signals:
protected slots:
private:
private:
ImListTreeItem *m_listItem;
};