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

原创 2011年04月19日 10:26:00

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

 

thinkvd 视频效果(Thinkvd开发日志)

修改主要BUG如下:1. 在win7带水印转换会失败,2. 水印功能不稳定问题。3. 转换中的透明度不支持4. 转换中的输出比例关系与播放中的保持一致.5. 水印相对位置关系及水印中文字图片前后关系。...
  • notton
  • notton
  • 2010年12月16日 18:01
  • 430

音视频同步问题(thinkvd开发日志)

问题描述:视频文件: A  start_time:100  duration:50 fps: 24视频文件: B  start_time:200  duration:50 fps: 25视频文件: C...
  • notton
  • notton
  • 2010年12月21日 12:40
  • 1193

DVD subtitle (thinkvd开发日志)

当前解决了:1。字幕位置调整2。字幕transparent3. 字幕Front Color and background Color4. 字幕动态切换(还存在问题)由于解码后的subtitle str...
  • notton
  • notton
  • 2010年11月24日 14:13
  • 499

thinkvd开发日志(2010.11.09)

今天状态不是太好,只是把TabWidget及相关的界面调整了一下,感觉工作效果不高。...
  • notton
  • notton
  • 2010年11月09日 19:49
  • 780

SDL内存泄漏跟踪(thinkvd开发日志)

  参与开发thinkvd video converter中,测试发现当itemA,itemB切换播放时,内存在不断增加,每次增加的大小略大于当前视频帧的大小,表明内存存在泄漏问题(通过task Ma...
  • notton
  • notton
  • 2010年12月08日 09:18
  • 1180

带rmvb多个音视频文件合并,播放异常问题(thinkvd开发日志)

     在此把遇到这个问题的过程记录一下。  现象:将一个rmvb视频文件及dvd iso文件视频各截一段,然后转换合并成一个新的视频,这个问题是在测试a+b=c, 然后交换合并顺序b+a=c,交换...
  • notton
  • notton
  • 2011年02月25日 11:18
  • 550

统一接口开发架构,统一接口架构实现封装

在一段时间的代码开发过程中和对同事开发的观察,发现在进行以json数据为返回的数据接口时,经常需要针对于具体的功能编写具体的接口,在实现过程中做了很多的重复工作,所以本人就萌发了做一套统一接口开发的架...
  • u012613934
  • u012613934
  • 2017年06月19日 10:58
  • 891

统一接口服务

统一接口服务 在与其他部门、三方合作完成产品研发的过程中,接口是相互之间完成数据交互的主要手段,为了统一对接口进行管理,以满足本部门不同业务的需求,统一接口服务应运而生。 作用: ...
  • hymcn
  • hymcn
  • 2015年05月31日 13:48
  • 1061

QMessageBox 窗口大小更改问题(thinkvd开发日志)

      QMessageBox的功能很强大、实用及方便,相信用过Qt的开发者都用过它,但它有一个让人不友好的地方,就是不能设置窗口的大小,尤其对自定义界面的窗口风格时,不得不考虑这个不便。这个问题...
  • notton
  • notton
  • 2010年12月04日 18:31
  • 2332

统一编程接口——外观模式

什么是外观模式外观模式是一种使用频率非常高的结构型设计模式,它通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,降低子系统与客户端的耦合度,且客户端调用非常方便...
  • Todo_
  • Todo_
  • 2016年02月27日 12:35
  • 806
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:计划统一播放接口(thinkvd开发日志)
举报原因:
原因补充:

(最多只允许输入30个字)