关于GamingAnywhere整体框架的修改也已经结束了一段时间了,这段时间云游戏项目暂时停滞了,原因是:别的项目组人员不足,上级领导又被boss催的紧,直属上级领导都调去别的组了,so,我也不能幸免。但是,已经做了的东西,一定要把自己的思路与理解记录下来,不然等自己回过头来看的时候又会花很多时间去理解原本已经明白的事情。这一篇涉及到GamingAnywhere整体大的框架,虽然改动的不多,而且现在回过头来看,对它的整个实现框架也很清晰明了了。
在改篇文章中,将会涉及以下内容:
1> GamingAnywhere整体框架修改需求
2> GamingAnywhere整体框架运作流程与修改思路
3> Windows多线程信号通信介绍(互斥锁、条件变量)
第一部分:GamingAnywhere整体框架修改需求
GamingAnywhere整体框架修改的目的是实现捕捉方式的动态可配置性,即GamingAnywhere原有的捕捉方式和当前我们使用的采用nvidia显卡进行捕捉的方式的动态可配置性,具体来说就是我从一款游戏的配置文件中通过设置,可以决定它的捕捉方式,采用或不采用nvidia进行捕捉。
第二部分:GamingAnywhere整体框架运作流程与修改思路
下面我认为是GamingAnywhere最核心的运作流程图(不包含具体捕捉和协议层的通信):
GamingAnywhere中的核心模块拆开来看无非就是这么几个:窗口挂载钩子实现游戏画面捕捉模块、图像格式转换(由rgb转为yuv)模块、数据进行h.264压缩模块以及涉及到协议的通信模块,其中游戏画面捕捉后源数据的存放、图像格式的转换&