我写过的软件之UniversalHst-DVBView

来源:互联网 发布:程序员常去的网站 编辑:程序博客网 时间:2024/05/23 19:18

UniversalHst目前主要有三个View,DVBView主要用于手动测试或者系统测试,TestView完成终端的CT Automation,BSGView则负责根据DVT需要的码流。我做的版本最开始主要是DVBView和TestView。BSGView主要是shao ting完成的。

 

UniversalHst最开始其实是来自于LiteCellHst,因为我自己写了一个叫做LiteCell的智能卡CA Client。在softcell3上并没有做过很久的项目开发,但是对softcell3的代码基本上都研究了一遍,分析了一下softcell3的优缺点。我把softcell3定位为一个过度设计的产品。可能最开始的设计者的意图是好的,但是在实现或者衍化的过程中慢慢变形了,最后就变成一个比较复杂的重量级产品了。曾经想过在保持softcell3外部接口不变的情况下,把softcell3的内部全部重新实现一遍,但是发现softcell3的外部接口就绑定了不少VD、resource、module信息,我的想法基本上是不可行了。就干脆决定做一个全新的轻量级CA Client,故而取名LiteCell。LiteCell完成了基本的CA Client功能,能处理PMT、CAT、ECM和EMM。

 

公司开始做无卡CA,改了几次产品名称,最开始叫做GreatWallClient,后来改成UniversalClient,最后就变成了CloakedCAAgent(CCA)。UniversalClient是用C语言写的,我就把LiteCellHst改了改,改成了UniversalHst,把UniversalClient集成进去,再进一步把DirectShow集成进去,完成解扰并且解码,把基本功能都完善了。之所以叫做UniversalHst,是因为那时候想做一个比较通用而且强大的Hst,同时能配合UniversalClient一起工作。

 

UniversalHst最开始支持输入为本地TS文件,IP或者ASI(利用Dektec的驱动),可以Decode的同时可以把解扰后的结果输出到本地TS文件或者转发到IP,基本上可以当一个Media Gateway。

UniversalHst被我引入到工作中,同时把一个SDC做的类似的工具给废弃了。其实在决定这么做的时候,我大概分析了一下这么做的利弊,感觉利大于弊,但是争议还是非常大的。

UniversalHst用了一个叫做TSParser的模块,TS流的处理主要依赖于这个模块。因为以前写过TSExpert,对TS流的处理已经掌握得比较到位,就弄了这个TSParser模块来处理TS流,算是HST中比较核心的一个模块。

最开始在设计UniversalHst的时候就考虑代码重用以及多个TS流的支持,就用了MFC的多文档框架。第一个版本外观挺丑陋的,后来经过不少兄弟的持续改进,Steven把UI做得更漂亮,Weizhong加入MultiView的功能,现在的版本看上去挺酷的了,可以同时打开多个流,每个流中的视频也可以同时播放。

MultiView一直有一个遗留的问题:多次启动停止视频播放会导致Crash,Weizhong调查过几次,把问题定位为DirectShow的问题,没有解决一直在那里挂着。

年前ST的人提出这个问题对ST automation有影响,自动化测试跑了3、4个小时就会由于这个问题导致crash。我就自己研究了一下这个问题,换了一个思路,避免多次创建DirectShow中的相关组件,问题竟然被解决了...^_^


0 0