计划统一播放接口(thinkvd开发日志)

    技术2022-05-19  25

      技术解决方案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;

    };

    // video header: class FLASHMGR_EXPORT ImVideoPlayer :  public ImPlayBase  { public: ImVideoPlayer(lpShareMemData data); ~ImVideoPlayer(); 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; }; 目前由于还在处于构想之中,具体实现下一步再做。 参考:C++的多态与适配器模式    http://blog.csdn.net/fjb2080/archive/2010/04/15/5488948.aspx

     


    最新回复(0)