桌面共享方法及系统的制作方法

文档序号:7926766阅读:255来源:国知局
专利名称:桌面共享方法及系统的制作方法
技术领域
本发明涉及桌面共享领域,具体涉及桌面共享方法及系统。
背景技术
随着信息技术的快速发展,网络己经成为信息传播的重要途径。远程控制 和互动作为一种新的交互方式,不需要处于同一个环境便可以完成身临其境的 互动,可以实现异地的观看与操作。
桌面共享是数据共享中的一种重要应用,在网络视频会议中经常被用于文 档展示、操作演示、问题协同解决等,是音视频、文本消息等交互方式重要且 有效的补充。
VNC是比较成熟的桌面共享系统的实现,由一个服务端(共享端),多个客 户端(观看端)组成。VNC在服务端采集时,只采集变化的区域的图像,在客 户端也只更新变化的区域。这种方式一定程度上节省了系统资源,加快了采集 速度,但是图像性能不稳定,当服务端的桌面图像高速变化时,客户端观看到 的图像容易失真且不连贯,比如在服务端播放电影时,客户端观看的效果非常 差,而且不能采集到DirectX加速显示的画面。同时,在远程控制方面,VNC 在触摸屏等设备上的双击效果差。

发明内容
本发明的目的在于克服现有技术的上述缺点和不足,提供一种桌面共享方 法,本发明实现了桌面共享系统中的观看终端可以浏览流畅的远程的桌面图像, 同时远程的控制终端可以对共享终端进行操作,并将操作事件真实地反映为对 共享终端的操作,共享终端可以顺利采集到DirectX加速显示的画面,同时在远 程控制方面,本发明中针对触摸屏等设备作了专门处理,避免了VNC在触摸屏 等设备上的双击效果差等问题,具有良好的互动效果。
本发明的目的还在于提供实现上述桌面共享方法的系统。 本发明目的通过下述技术方案实现本桌面共享方法,包括以下步骤(1) 本地的共享终端采集本地鼠标的位置和状态信总(该状态信息包括鼠 标点击信息、移动信息),作为协议参数填充在自定义的协议头中;同时本地的 共享终端采集本地桌面图像,接着对釆集到的单位帧桌面图像源进行编码压縮 成便于网络传输的单位帧桌面图像数据,然后对每帧桌面图像数据进行分块, 将每块数据加上自定义的协议头(这个协议头包含了采集这帧桌面图像时采集 到的当前的鼠标的位置和状态信息、该帧图像的参数信息,比如图像分辨率大 小、颜色位值、帧号、包号等)打包成一个适合于在当前网络传输的网络数据
包;接着采用RTP/RTCP协议将每帧的网络数据包经MCU分别转发到远程的观 看终端、远程的控制终端,其中的RTCP协议使每帧的网络数据包按顺序传输;
(2) 控制终端接收来自共享终端有序的网络数据包,当接收到一个完整的
数据帧后便将该帧的所有网络数据包去掉自定义的协议头,从而得到 -个完整 的单位帧桌面图像数据,然后对该单位帧桌面图像数据进行解码解压出一副桌
面图像,并用GID函数在控制终端桌面共享的窗口中绘画出来;然后控制终端 直接将其本地的鼠标显示在显示有共享终端桌面图像的桌面共享窗口中;
控制终端对桌面共享窗口绘画出来的桌面图像进行鼠标操作事件、键盘操 作事件中的任意一种或两种操作事件;对于鼠标操作事件,控制终端采集该鼠 标操作事件并根据控制终端的桌面共享窗口与共享终端屏幕的比例关系对该鼠 标操作事件进行处理,然后控制终端将操作事件封装成自定义的操作事件网络 数据包采用TCP协议经MCU转发到共享终端;对于键盘操作事件,控制终端 采集该键盘操作事件;然后控制终端将操作事件封装成自定义的操作事件网络 数据包采用TCP协议经MCU转发到共享终端;
(3) 共享终端首先使用单独的接收线程接收控制终端传来的操作事件;对 于鼠标操作事件,首先根据共享终端的系统处理能力申请分配固定大小的内存 空间作为自定义的指针循环链表,接收线程将鼠标操作事件存储在自定义的指 针循环链表中,然后使用独立的处理线程从自定义的指针循环链表中取出鼠标 操作事件数据并进行解析,然后对鼠标操作事件进行模拟处理,最后显示在共 享终端的桌面共享窗口中,当处理线程从指针循环链表中取出了一个鼠标操作 事件并处理完后,则将此鼠标操作事件对应的内存设置为可用,这样接收线程 就能重复使用这块内存;对于键盘操作事件,接收线程将接收到的键盘操作事 件直接使用独立的处理线程对鼠标操作事件进行模拟处理,最后显示在共享终 端的桌面共享窗口中;根据上述歩骤(1)所述,共享终端采集的本地鼠标的位置、状态信息以及 本地桌面图像是打包在一起传送的,即当前桌面的图像和当前的鼠标信息是绑 定的,所以在观看终端还原时可以保证看到的图像和看到的鼠标是同歩正确的。 为了更好的实现本发明,本地鼠标的位置和状态信息经MCU转发到远程的 观看终端、网络数据包经MCU分别转发到远程的观看终端后,观看终端接收来 自共享终端有序的网络数据包,当接收到一个完整的数据帧后便将该帧的所有 网络数据包去掉自定义的协议头,从而得到一个完整的单位帧桌面图像数据,
然后对该单位帧桌面图像数据进行解码解压出一副桌面图像,并用GID函数在
观看终端桌面共享的窗口中绘画出来;同时从自定义的协议头中得到来自共享 终端的鼠标的位置和状态信息,并根据该鼠标的位置和状态信息计算出观看终 端的桌面共享窗口与接收到的桌面图像的比例将鼠标图像在桌面共享的窗口中 绘画出来,该观看终端的桌面共享窗口与共享终端传来的桌面图像的比例包括 观看终端桌面共享窗口和共享终端传来的桌面图像沿X轴、Y轴的比例。
上述方法中,步骤(1)所述本地的共享终端采集本地桌面图像,是采用镜 像驱动(Mirror driver)采集为缺省采集方法、GDI函数采集为备份采集方法的 混合采集方法,该混合采集方法的具体操作如下
系统启动后,图像采集线程首先运行作为共享终端缺省的采集方法Mirror driver,同时暂时将鼠标隐藏,以使Mirror driver采集到的桌面图像不包括鼠标 指针图像,然后Mirror driver开始采集桌面图像;同时,WH—CBT系统全局钩 子检测系统进程中是否有使用了 Ddraw.dll等DirectX相关动态库的进程,当 WH—CBT系统全局钩子检测到有Ddraw.dll等DirectX相关动态库的进程的窗口 正常显示或者最大化显示时,便将该Ddraw.dll等DirectX相关动态库的进程记 录在列表中,同时WH—CBT系统全局钩子通知监控线程缓存一幅采集到的桌面 图像,对桌面图像中的每个像素的颜色值进行分析,如果发现该进程的窗口区 域有连续的大范围像素点都呈现白色时,监测线程则认定当前采集的窗口使用 了 DirectX来显示绘画图像、Mirror driver不能正确采集当前的桌面图像,这是 因为Mirror driver不支持DirectX硬件加速,所以采集不到DirectX显示的图像, 所以在当前采集到的桌面图像的相应区域呈现出一片空白,监测线程将通知图 像采集线程切换到GDI函数进行采集;
在GDI函数进行采集桌面图像的同时,WH_CBT系统全局钩子枚举系统进 程名称,当检测到常见的播放器软件运行且播放器窗口正常显示或者最大化显示时,WH一CBT系统全局钩子通知监测线程对采集到的桌面图像进行检测,如 果发现该播放器窗口区域有连续的大范围像素点都呈现黑色时,监测线程则认
定GDI函数不能正确采集到桌面图像,将通知图像采集线程切换到Mirror driver 进行采集;
若监测线程监测到Mirror driver、 GDI函数均不能正确当前的桌面图像时, 图像采集线程将运行GDI采集方法,通知WH—CBT系统全局钩子检测当前的播 放器窗口是否为全屏;若当前的播放器窗口全屏,且不是Windows Media Player(因为Windows Media Player进程中不能枚举到Ddraw.dll),将在钩子中枚 举该播放器进程的动态库,若该播放器进程使用了 Ddraw.dll,则钩住此动态库, 分析其函数地址表,找到ID3DXSprite接口中的Draw函数的地址,用自定义的 Draw函数地址替代调用的函数地址表中的ID3DXSprite接口中的Draw函数的 地址,使对Draw函数的调用转移到调用自定义的函数中来,Draw函数中的第 一个参数pTexture是LPDIRECT3DTEXTURE9类型,其中保存了当前的纹理, 也就是当前要显示的图像,拷贝一份当前的纹理,便取得了桌面图像,然后再 调用Ddraw.dll中的Draw函数,让所述取得的桌面图像在播放器中绘画出来。 如果当前的播放器窗口不是全屏或者在全屏的播放器进程中不能枚举到 Ddraw.dll,此时通过修改系统的属性来满足釆集到正确的桌面图像,因为系统 硬件加速导致GDI采集方式不能采集到正确的桌面图像,此时,通过修改显示 设备的注册表信息,并重新加载系统的显示属性强制使系统硬件加速停止来采 集桌面图像。
所述通过修改显示设备的注册表信息,并重新加载系统的显示属性强制使 系统硬件加速停止来采集桌面图像,其具体操作如下
首先,在注册表中HKEY—LOCAL—MACHINE的主键下查找到 HARDWARE\DEVICEMAP\VIDEO子键中VDeviceWideo0键名对应的值,这个
值保存了当前的显示设备的硬件加速状态在注册表中表示的路径,在这个路径 对应的注册表子键下,添加Acceleration丄evel的键名,并设置值为4,调用 ChangeDisplaySettings函数重新加载系统的显示属性,便取消了系统硬件加速。 所述混合采集方法的具体操作屮的暂时将鼠标隐藏,以使Mirror driver采集
到的桌面图像不包括鼠标指针图像,该隐藏鼠标的具体操作如下
当共享终端的操作系统采用自定义的鼠标指针在驱动程序层通过Mirror
driver中调用Windows DDK中的DrvMovePointer函数来移动鼠标指针,使GDI绘图不干涉到镜像中的图像,从而使在采集到的桌面图像中不包含自定义鼠标 指针图像即隐藏了鼠标指针;
当共享终端的操作系统采用系统默认的鼠标指针时,在采集每幅桌面图像 之前,在应用程序层使用自定义的空白透明鼠标指针代替系统默认的鼠标指针, 从而使在采集到的桌面图像中不包含系统默认的鼠标指针图像,即隐藏了鼠标 指针;
因此,通过上述隐藏鼠标指针,使Mirror driver采集到的桌面图像不包括鼠 标指针图像。
上述方法中,步骤(2)所述鼠标操作事件包括鼠标位置事件和鼠标点击事件。
上述方法中,所述控制终端还安装有WH—MOUSE—LL系统全局钩子,在系 统初始化时,WH—MOUSE—LL系统全局钩子捕获控制终端的鼠标操作事件并判 断该鼠标操作事件的类型,然后判断控制终端所运行在的设备类型;若判断出 该鼠标操作事件是LLMHF—INJECTED类型,则是注入类型,则该鼠标操作事 件是触摸屏等设备模拟产生的,则控制终端运行在触摸屏设备作为显示设备的 设备中;若判断出该鼠标操作事件不是LLMHF_INJECTED类型,则该鼠标操 作事件是PC等设备产生的,则控制终端运行在PC等设备中;控制终端记录上 述控制终端所运行在的设备类型;然后对鼠标操作事件具体进行以下A、 B中任 一种操作
A、当控制终端运行在PC设备上时,步骤(2)所述控制终端对鼠标操作 事件的具体操作如下
控制终端通过在窗口过程函数(WindowProc)中采集所有在桌面共享窗口 中产生的鼠标事件并将采集到的所有位置点存储在队列中;
控制终端根据共享终端的系统处理能力和速度,在控制终端设定一个处理 操作事件的单位时间,每过一个单位时间便对队列存储的鼠标位置事件取出来, 用比较丢弃算法取出最有价值的鼠标位置事件,然后根据控制终端的桌面共享 窗口与共享终端屏幕的比例关系将取出的鼠标位置事件转换为共享终端屏幕中 的鼠标位置事件,然后通过定义枚举类型来对应鼠标操作事件、定义结构体来 封装鼠标事件,将转换后的鼠标位置事件与窗口过程函数(WindowProc)采集 的鼠标点击事件等鼠标操作事件封装成操作事件网络数据包,再采用TCP协议 经MCU转发到共享终端;上述用比较丢弃算法取出最有价值的鼠标位置事件的具体操作为如果当 前鼠标移动平缓,单位时间内只存储单个的鼠标移动位置点,将其取出;如果 存储有多个鼠标移动位置点,则根据前一次发送的鼠标移动位置点和当前存储 的鼠标移动轨迹,选择取出几个最能反应鼠标移动轨迹的鼠标移动位置点;如 果当前鼠标移动非常快且连续,单位时间内将累积存储非常多的鼠标移动位置 点,则直接取出队列中居中的鼠标移动位置点。
B、当控制终端运行在以触摸屏作为显示设备的设备上时,步骤(2)所述
控制终端对鼠标操作事件的具体操作如下触摸屏捕获到屏幕上的点击或移动 位置,通过触摸屏驱动程序通知系统模拟产生相应的鼠标操作事件;控制终端 在窗口过程函数(WindowProc)中采集鼠标操作事件,和运行在PC上的采集 方式相同,鼠标单击和移动事件的处理也和运行在PC上的处理方式相同,但是 对于双击事件的处理方式不同,在触摸屏上,控制终端将采集到的鼠标双击事 件中的第一次鼠标单击事件包装成自定义的鼠标双击事件类型传输至共享终 端,而控制终端将采集到的鼠标双击事件中的第二次鼠标单击事件丢弃不作处 理,当共享终端接收到自定义的鼠标双击事件类型的消息,将连续模拟两次单 击事件来还原双击事件。
上述桌面共享方法中,步骤(1)所述共享终端对采集到的单位帧桌面图像 源进行编码压縮,具体是采用H.264算法进行编码压縮。
上述桌面共享方法中,步骤(2)所述控制终端对接收到的单位帧桌面图像 数据进行解码解压,具体是采用H.264算法来进行解码解压。
上述桌面共享方法中,所述观看终端对接收到的单位帧桌面图像数据进行 解码解压,具体是采用11.264算法来进行解码解压。
实现上述桌面共享方法的桌面共享系统包括
用于采集桌面图像、鼠标的位置和状态信息并进行编码压縮后发送出去,
以及接收来自控制终端的操作事件并进行处理后回放显示的共享终端; 用于桌面图像和操作事件转发的多媒体多点控制单元(MCU); 用于接收来自共享终端的桌面图像、鼠标的位置和状态信息并经过解码解
压后回放显示的观看终端;
用于接收来自共享终端的桌面图像并经过解码解压后回放显示,同时还对
共享终端传来的桌面图像进行操作并将操作事件经MCU发送到共享终端的控
制终端。所述共享终端设置有对采集到的桌面图像进行编码的编码器,该编码器为
R264编码器。
所述观看终端和控制终端都设置有对接收到的桌面图像数据进行解码的解
码器,该解码器为H.264解码器。
所述共享终端安装有镜像驱动(Mirror driver)、 GDI函数、WH_CBT系统
全局钩子。
所述控制终端安装有WH—MOUSE一LL系统全局钩子。 本发明相对于现有技术具有以下优点
1 、本发明中的共享终端采用镜像驱动(Mirror driver)采集为缺省采集方法、 GDI函数采集为备份采集方法的混合采集方法采集本地桌面图像,在共享终端 能采集到变化速度快的图像,而共享终端采集的本地鼠标的位置、状态信息以 及本地桌面图像是打包在一起传送的,即当前桌面的图像和当前的鼠标信息是 绑定的,所以在观看终端还原时可以保证看到的图像和看到的鼠标是同步正确 的,能在观看终端能观看到流畅的图像;
2、 本发明通过在共享终端采集全屏图像并发送到观看终端,能够以图像帧 的播放方式在观看终端还原;
3、 本发明中共享终端采用镜像驱动(Mirrordriver)采集为缺省采集方法、 GDI函数采集为备份采集方法的混合采集方法采集本地桌面图像,获取DirectX 的图像缓冲区或调整系统的硬件加速属性,在共享终端能采集到包括透明图像、 硬件加速显示的图像等所有类型的图像;
4、 本发明的共享终端对采集到的单位帧桌面图像源进行编码压縮采用 H.264高效的编码压縮算法进行编码压縮,最大性能上压縮图像数据,减少了图 像数据的传输数据量;
5、 本发明采用RTP和RTCP协议进行图像数据的传输,同时利用图像数据 的网络数据包中的自定义的协议头检测数据包,减少图像帧的丢失,避免图像 的不连贯;
6、 本发明采用TCP传输鼠标、键盘的控制事件,确保在控制终端产生的所 有控制事件都能发送到共享终端,确保远程控制的事件的准确性;
7、 本发明方法中,当在控制终端的鼠标操作事件异常频繁时,在共享终端 将采取丢弃的优化处理,合理丢弃某些中间步骤地操作,最大程度还原连贯的 操作,同时也避免了事件过多,处理不过来导致的延迟,确保远程控制的事件的连贯性;
8、 本发明方法中,当控制终端运行在触摸屏设备上时,控制终端对双击的
鼠标事件作了特殊处理,确保了控制终端运行在触摸屏设备上不会丢弃鼠标操
作事件;
9、 本发明在控制终端控制远程的共享终端时,看到和使用的是本地的鼠标, 所以远程操作时可以获得操作本地同样的流畅性。


图1为本发明桌面共享系统的结构示意图; 图2为本发明桌面共享方法的流程图。
具体实施例方式
下面结合实施例及附图,对本发明作进一步地详细说明,但本发明的实施 方式不限于此。 实施例
如图1所示,本发明桌面共享系统包括
用于采集桌面图像、鼠标的位置和状态信息并进行编码压縮后发送出去, 以及接收来自控制终端的操作事件并进行处理后回放显示的共享终端;
用于桌面图像和操作事件转发的多媒体多点控制单元(MCU);
用于接收来自共享终端的桌面图像、鼠标的位置和状态信息并经过解码解 压后回放显示的观看终端;
用于接收来自共享终端的桌面图像并经过解码解压后回放显示,同时还对 共享终端传来的桌面图像进行操作并将操作事件经MCU发送到共享终端的控 制终端。
为了更好地实现本发明,本实施例的桌面共享系统中包括1个控制终端、1 个共享终端和2个观看终端。
同时,共享终端设置有对采集到的桌面图像进行编码的编码器,该编码器 为H.264编码器,观看终端和控制终端都设置有对接收到的桌面图像数据进行 解码的解码器,该解码器为H.264解码器,同时,共享终端该安装有镜像驱动 (Mirror driver)、 GDI函数、WH—CBT系统全局钩子;控制终端安装有 WH—MOUSE—LL系统全局钩子。如图2所示,通过本桌面共享终端系统进行桌面共享的方法,包括以下步

(1) 本地的共享终端采集本地鼠标的位置和状态信息(该状态信息包括鼠 标点击信息、移动信息),作为协议参数填充在自定义的协议头中;同时本地的 共享终端采集本地桌面图像,接着对采集到的单位帧桌面图像源进行编码压縮 成便于网络传输的单位帧桌面图像数据,然后对每帧桌面图像数据进行分块, 将每块数据加上自定义的协议头(这个协议头包含了采集这帧桌面图像时采集 到的当前的鼠标的位置和状态信息,该帧图像的参数信息,比如图像分辨率大 小、颜色位值、帧号、包号等)打包成一个适合于在当前网络传输的网络数据
包;接着采用RTP/RTCP协议将每帧的网络数据包经MCU分别转发到远程的观 看终端、远程的控制终端,其中的RTCP协议使每帧的网络数据包按顺序传输;
(2) 控制终端接收来自共享终端有序的网络数据包,当接收到一个完整的 数据帧后便将该帧的所有网络数据包去掉自定义的协议头,从而得到一个完整 的单位帧桌面图像数据,然后对该单位帧桌面图像数据进行解码解压出一副桌 面图像,并用GID函数在控制终端桌面共享的窗口中绘画出来;然后控制终端 直接将其本地的鼠标显示在显示有共享终端桌面图像的桌面共享窗口中;
控制终端对桌面共享窗口绘画出来的桌面图像进行鼠标操作事件、键盘操 作事件中的任意一种或两种操作事件;对于鼠标操作事件,控制终端采集该鼠
标操作事件并根据控制终端的桌面共享窗口与共享终端屏幕的比例关系对该鼠 标操作事件进行处理,然后控制终端将操作事件封装成自定义的操作事件网络 数据包采用TCP协议经MCU转发到共享终端;对于键盘操作事件,控制终端 采集该键盘操作事件;然后控制终端将操作事件封装成自定义的操作事件网络 数据包采用TCP协议经MCU转发到共享终端;
(3) 共享终端首先使用单独的接收线程接收控制终端传来的操作事件;对 于鼠标操作事件,首先根据共享终端的系统处理能力申请分配固定大小的内存 空间作为自定义的指针循环链表,该链链表中的元素可以循环使用,这样避免 过多的内存分配和释放操作,也减少了内存碎片,当存储的鼠标操作事件过多 使得链表空间不够时,再申请新的内存空间;
接收线程将鼠标操作事件存储在自定义的指针循环链表中,然后使用独立 的处理线程从自定义的指针循环链表中取出鼠标操作事件数据并进行解析,然 后调用mouse—event函数或Sendlnput函数对鼠标操作事件进行模拟处理;最后显示在共享终端的桌面共享窗口中,当处理线程从指针循环链表中取出了一个 鼠标操作事件并处理完后,则将此鼠标操作事件对应的内存设置为可用,这样 接收线程就能重复使用这块内存;对于键盘操作事件,通过控制终端桌面共享
窗口的PreTranslateMessage函数中捕获后转发到共享终端,共享终端接收线程 将接收到的键盘操作事件不进行存储,这是因为键盘操作事件不像鼠标操作事 件那样快速频繁而导致系统处理不过来,然后将键盘操作事件直接使用独立的 处理线程对鼠标操作事件进行模拟处理,具体为通过处理程序解析出键盘操作 事件并使用keybd—event模拟出一次键盘操作;
根据上述步骤(1)所述,共享终端采集的本地鼠标的位置、状态信息以及 本地桌面图像是打包在一起传送的,即当前桌面的图像和当前的鼠标信息是绑 定的,所以在观看终端还原时可以保证看到的图像和看到的鼠标是同步正确的。
为了更好的实现本发明,本地鼠标的位置和状态信息经MCU转发到远程的 观看终端、网络数据包经MCU分别转发到远程的观看终端后,观看终端接收来 自共享终端有序的网络数据包,当接收到一个完整的数据帧后便将该帧的所有 网络数据包去掉自定义的协议头,从而得到一个完整的单位帧桌面图像数据, 然后对该单位帧桌面图像数据进行解码解压出一副桌面图像,并用GID函数在 观看终端桌面共享的窗口中绘画出来;同时从自定义的协议头中得到来自共享 终端的鼠标的位置和状态信息,并根据该鼠标的位置和状态信息计算出观看终 端的桌面共享窗口与接收到的桌面图像的比例将鼠标图像在桌面共享的窗口中 绘画出来,该观看终端的桌面共享窗口与共享终端传来的桌面图像的比例包括 观看终端桌面共享窗口和共享终端传来的桌面图像沿X轴、Y轴的比例,并保 留在处理远程控制时使用。
上述方法中,步骤(1)所述本地的共享终端采集本地桌面图像,是采用镜 像驱动(Mirror driver)采集为缺省采集方法、GDI函数采集为备份采集方法的 混合采集方法。
Mirror driver是Windows NT下的一种镜像驱动,系统发往物理显卡的所有 命令也同样发送给Mirror driver,可以在Mirror driver中模拟出当前系统的显示 内容,因此称之为mirror 。利用这个特性,就能很方便的捕获到系统当前屏幕 的内容以及系统要绘制的区域(变化部分),是一种速度很快的截屏方法。不过 Mirror driver也有缺陷,不支持DirectX硬件加速,所以采集不到DirectX显示 的图像,本发明中使用Mirror driver采集方法式作为共享终端缺省的也是主要的采集方法。
而GDI函数采集方法,则是利用GDI函数,视桌面为窗口,将桌面窗口的 DC拷贝到内存DC,绘画到内存BitMap中,并从中取出保存有桌面图像数据的 BMP结构的内存数据。GDI函数采集方法的效率比Mirror driver的采集方法低, 而且在硬件加速的系统中,采集不到播放器中的图像,本发明中使用GDI函数 采集方法作为共享终端备份的也是辅助的采集方法。
共享终端在图像采集线程中完成所有桌面图像的釆集工作,并在镜像驱动 (Mirror driver)采集方法、GDI函数采集法之间切换。
上述该混合采集方法的具体操作如下
系统启动后,图像采集线程首先运行作为共享终端缺省的采集方法Mirror driver,同时暂时将鼠标隐藏,以使Mirror driver采集到的桌面图像不包括鼠标 指针图像,然后Mirror driver开始釆集桌面图像;同时,WH—CBT系统全局钩 子检测系统进程巾是否有使用了 Ddraw.dll等DirectX相关动态库的进程,当 WH—CBT系统全局钩子检测到有Ddraw.dll等DirectX相关动态库的进程的窗口 正常显示或者最大化显示时,便将该Ddraw.dll等DirectX相关动态库的进程记 录在列表中,同时WH_CBT系统全局钩子通知监控线程缓存一幅采集到的桌面 图像,对桌面图像中的每个像素的颜色值进行分析,如果发现该进程的窗口区 域有连续的大范围像素点都呈现白色时,监测线程则认定当前采集的窗口使用 了 DirectX来显示绘画图像、Mirror driver不能正确采集当前的桌面图像,这是 因为Mirror driver不支持DirectX硬件加速,所以采集不到DirectX显示的图像, 所以在当前采集到的桌面图像的相应区域呈现出片空白,监测线程将通知图 像采集线程切换到GDI函数进行采集;
在GDI函数进行采集桌面图像的同时,WH一CBT系统全局钩子枚举系统进 程名称,当检测到常见的播放器软件运行且播放器窗口正常显示或者最大化显 示时,WH—CBT系统全局钩子通知监测线程对采集到的桌面图像进行检测,如 果发现该播放器窗口区域有连续的大范围像素点都呈现黑色时,监测线程则认 定GDI函数不能正确采集到桌面图像,将通知图像采集线程切换到Mirror driver 进行采集;
若监测线程监测到Mirror driver、 GDI函数均不能正确当前的桌面图像时, 图像采集线程将运行GDI采集方法,通知WH—CBT系统全局钩子检测当前的播 放器窗口是否为全屏;若当前的播放器窗口全屏,且不是Windows MediaPlayer(因为Windows Media Player进程中不能枚举到Ddraw.dll),将在钩子中枚 举该播放器进程的动态库,若该播放器进程使用了 Ddraw.dll,则钩住此动态库, 分析其函数地址表,找到ID3DXSprite接口中的Draw函数的地址,用自定义的 Draw函数地址替代调用的函数地址表中的ID3DXSprite接口中的Draw函数的 地址,使对Draw函数的调用转移到调用自定义的函数中来,Draw函数中的第 一个参数pTexture是LPDIRECT3DTEXTURE9类型,其中保存了当前的纹理, 也就是当前要显示的图像,拷贝一份当前的纹理,便取得了桌面图像,然后再 调用Ddraw.dll中的Draw函数,让所述取得的桌面图像在播放器中绘画出来。 如果当前的播放器窗口不是全屏或者在全屏的播放器进程中不能枚举到 Ddraw.dll,此时通过修改系统的属性来满足采集到正确的桌面图像,因为系统 硬件加速导致GDI采集方式不能采集到正确的桌面图像,此吋,通过修改显示 设备的注册表信息,并重新加载系统的显示属性强制使系统硬件加速停止来采 集桌面图像。
所述通过修改显示设备的注册表信息,并重新加载系统的显示属性强制使 系统硬件加速停止来采集桌面图像,其具体操作如下
首先,在注册表中HKEY_LOCAL—MACHINE的主键下查找到 HARDWAREVDEVICEMAPWIDEO子键中、DeviceWideo0键名对应的值,这个 值保存了当前的显示设备的硬件加速状态在注册表中表示的路径,在这个路径 对应的注册表子键下,添加Acceleration丄evel的键名,并设置值为4,调用 ChangeDisplaySettings函数重新加载系统的显示属性,便取消了系统硬件加速。
所述混合采集方法的具体操作中的暂时将鼠标隐藏,以使Mirror driver采集 到的桌面图像不包括鼠标指针图像,该隐藏鼠标的具体操作如下
当共享终端的操作系统采用自定义的鼠标指针在驱动程序层通过Mirror driver中调用WindowsDDK中的DrvMovePointer函数来移动鼠标指针,使GDI 绘图不干涉到镜像中的图像,从而使在采集到的桌面图像中不包含自定义鼠标 指针图像即隐藏了鼠标指针;
当共享终端的操作系统采用系统默认的鼠标指针时,在采集每幅桌面图像 之前,在应用程序层使用自定义的空白透明鼠标指针代替系统默认的鼠标指针, 从而使在采集到的桌面图像中不包含系统默认的鼠标指针图像即隐藏了鼠标指 针;
因此,通过上述隐藏鼠标指针,使Mirror driver采集到的桌面图像不包括鼠标指针图像。
上述方法中,步骤(2)所述鼠标操作事件包括鼠标位置事件和鼠标点击事件。
上述方法中,由于控制终端在桌面共享窗口进行快速鼠标移动等高频率的 鼠标操作时,经过采集一网络发送一模拟处理这个复杂的过程,在共享终端将 会有明显的延迟,甚至在共享终端出现事件处理不过来的情况,给用户的感觉 就是远程操作的延时,甚至不连贯,影响远程互动的效果。所以,本发明打破 传统的方式,采用比较丢弃算法,在处理高频率的鼠标操作时,不是将所有的 操作都作处理,而是根据鼠标的运动规律和轨迹找到最有价值的鼠标位置时间 发送给共享终端进行模拟处理,从而可以在基本保持事件连续性的基础上,避 免延迟的产生。
上述方法中,所述控制终端还安装有WH—MOUSE一LL系统全局钩子,在系 统初始化时,WH—MOUSE—LL系统全局钩子捕获控制终端的鼠标操作事件并判 断该鼠标操作事件的类型,然后判断控制终端所运行在的设备类型;若判断出 该鼠标操作事件是LLMHF一INJECTED类型,则是注入类型,则该鼠标操作事 件是触摸屏等设备模拟产生的,则控制终端运行在触摸屏设备作为显示设备的 设备中;若判断出该鼠标操作事件不是LLMHF—INJECTED类型,则该鼠标操 作事件是PC等设备产生的,则控制终端运行在PC等设备设备中;控制终端记 录上述控制终端所运行在的设备类型;然后对鼠标操作事件具体进行以下A、 B 中任一种操作
A、当控制终端运行在PC设备上时,步骤(2)所述控制终端对鼠标操作
事件的具体操作如下-
控制终端通过在窗口过程函数(WindowProc)中采集所有在桌面共享窗口 中产生的鼠标事件并将采集到的所有位置点存储在队列中;
控制终端根据共享终端的系统处理能力和速度,在控制终端设定一个处理
操作事件的单位时间,每过一个单位时间便对队列存储的鼠标位置事件取出来,
用比较丢弃算法取出最有价值的鼠标位置事件,然后根据控制终端的桌面共享 窗口与共享终端屏幕的比例关系将取出的鼠标位置事件转换为共享终端屏幕中
的鼠标位置事件,然后通过定义枚举类型来对应鼠标操作事件、定义结构体来 封装鼠标事件,将转换后的鼠标位置事件与窗口过程函数(WindowProc)采集 的鼠标点击事件等鼠标操作事件封装成操作事件网络数据包,再采用TCP协议经MCU转发到共享终端。所述用比较丢弃算法取出最有价值的鼠标位置事件的 具体操作为如果当前鼠标移动平缓,单位时间内只存储单个的鼠标移动位置 点,将其取出;如果存储有多个鼠标移动位置点,则根据前一次发送的鼠标移 动位置点和当前存储的鼠标移动轨迹,选择取出几个最能反应鼠标移动轨迹的 鼠标移动位置点;如果当前鼠标移动非常快且连续,单位时间内将累积存储非 常多的鼠标移动位置点,则直接取出队列中居中的鼠标移动位置点。
其中,本发明定义枚举类型MouseMsgType对应系统鼠标操作事件的类型; 定义结构体MOUSECOMMANDPACKAGE来封装鼠标操作事件,以便于通过 自定义的协议在网络上传输并被解析。
控制终端从窗口过程函数(WindowProc)中捕获鼠标操作事件消息时, WindowProc函数的参数message标示事件的类型,wParam是附加信息,标示虚 拟键是否按下等额外信息,lParam标志鼠标坐标位置信息,其中低字节标示鼠 标在控制终端的桌面共享窗口中X轴的位置,高字节标示鼠标在控制终端的桌 面共享窗口中Y轴的位置。因为窗口坐标和屏幕坐标不同,所以需要将控制窗 口坐标中的鼠标位置转换为共享终端的屏幕坐标中的位置。远程控制时,鼠标 只在桌面共享窗口中移动有效,转换后共享终端的的鼠标屏幕坐标应减去应用 程序共享窗口在整个窗口的偏移量。然后转换桌面共享窗口和图像对应的比例,
其转换的计算公式为
鼠标点在共享终端沿X轴的位置=(鼠标点的屏幕坐标沿X轴的位置+桌面 共享窗口的滚动条位置沿X轴的位置一桌面共享窗口在系统屏幕中的偏移位置 的沿X轴的位置)/窗口宽度和图像宽度的比例;
鼠标点在共享终端沿Y轴的位置=(鼠标点的屏幕坐标沿Y轴的位置+桌面 共享窗口的滚动条位置沿Y轴的位置一桌面共享窗口在系统屏幕中的偏移位置 的沿Y轴的位置)/窗口高度和图像高度的比例;
当计算出来的远程坐标位置的X轴位置小于0或Y轴位置小于0时,将其 置为0,如果X轴位置和Y轴位置同时小于0,将其这个远程坐标位置认为是 错误的,不传输到远程的共享终端。
B、当控制终端运行在以触摸屏作为显示设备的设备上时,触摸屏捕获到屏 幕上的点击或移动位置,通过触摸屏驱动程序通知系统模拟产生相应的鼠标操 作事件;控制终端在窗口过程函数(WindowProc)中采集鼠标操作事件,和运 行在PC上的采集方式相同,鼠标单击和移动事件的处理也和运行在PC上的处理方式相同,但是对于双击事件的处理方式不同,这是因为触摸屏设备的鼠标 事件产生不是由鼠标这个硬件设备来产生系统事件,而是通过触摸屏捕获到鼠 标的点击或移动位置,通知系统模拟产生鼠标操作事件,这样将降低鼠标事件 的处理速度,当在触摸屏上产生一个鼠标双击事件,首先需要触摸屏驱动程序 捕获并解析,通知系统模拟一个鼠标双击事件,这时应用程序共享系统的控制 终端才能捕获到系统发出的鼠标双击事件,因为鼠标双击事件实际上是两次连 续的鼠标单击事件,所以控制终端采集到的两次鼠标单击事件将有过多的隔阂 事件,将这两次鼠标单击事件传输至共享终端,再由共享终端处理时,将可能 认为这是两次鼠标单击事件。所以,本发明对以触摸屏作为显示设备的设备作 特殊的处理。系统对鼠标双击的反应事件是由用户设定,本发明不建议改变终 端的系统设置。所以,在本发明中,控制终端将采集到的鼠标双击事件中的第 一次鼠标单击事件包装成自定义的鼠标双击事件传输至共享终端,而控制终端 将采集到的鼠标双击事件中的第二次鼠标单击事件丢弃不作处理,当共享终端 接收到自定义的鼠标双击事件类型的消息,将连续模拟两次单击事件来还原双 击事件。因此,对于鼠标双击事件,在PC上和触摸屏系统中将有不同的处理。 上述桌面共享方法中,步骤(1)所述共享终端对采集到的单位帧桌面图像
源进行编码压縮,具体是采用11.264算法进行编码压縮。
上述桌面共享方法中,步骤(2)所述控制终端对接收到的单位帧桌面图像 数据进行解码解压,具体是采用H.264算法来进行解码解压。
上述桌面共享方法中,所述观看终端对接收到的单位帧桌面图像数据进行 解码解压,具体是采用玨264算法来进行解码解压。
步骤(3)所述共享终端调用mouse—event函数或Sendlnput函数对鼠标操作 事件进行模拟处理;其具体操作如下
首先通过计算映射鼠标在共享终端屏幕上对应的像素点位置,利用 GetSystemMetrics(SM一CXSCREEN)函数得到共享终端屏幕的水平尺寸大小,利 用GetSystemMetrics(SM一CYSCREEN)函数获取共享终端屏幕的垂直尺寸大小。
使用如下公式计算出鼠标位置相对于屏幕像素位置的比例 沿X轴的相对比例=65535.0/ (屏幕的水平尺寸大小一 1); 沿¥轴的相对比例=65535.0/ (屏幕的垂直尺寸大小一1); 屏幕的水平尺寸大小和屏幕的垂直尺寸大小构成了屏幕的区域大小,当鼠
标操作事件中的鼠标位置点处于屏幕区域中时,通过比例转换得到鼠标点在屏幕中的像素位置,计算公式如下
鼠标点在屏幕中沿X轴的像素位置=鼠标沿X轴位置点*沿X轴的相对比
例;
鼠标点在屏幕中沿Y轴的像素位置=鼠标沿Y轴位置点*沿Y轴的相对比
例;
使用mouse—event函数便可模拟处理经过位置转换的鼠标操作事件。 如果鼠标事件中的鼠标位置点不在屏幕区域中时,在Win2K以十.的系统中, 将使用Sendlnput函数来模拟处理经过位置转换的鼠标操作事件。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实 施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、 替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
权利要求
1、桌面共享方法,其特征在于,包括以下步骤(1)本地的共享终端采集本地鼠标的位置和状态信息,作为协议参数填充在自定义的协议头中;同时本地的共享终端采集木地桌面图像,接着对采集到的单位帧桌面图像源进行编码压缩成便于网络传输的单位帧桌面图像数据,然后对每帧桌面图像数据进行分块,将每块数据加上自定义的协议头打包成一个适合于在当前网络传输的网络数据包;接着采用RTP/RTCP协议将每帧的网络数据包经MCU分别转发到远程的观看终端、远程的控制终端,其中的RTCP协议使每帧的网络数据包按顺序传输;(2)控制终端接收来自共享终端有序的网络数据包,当接收到一个完整的数据帧后便将该帧的所有网络数据包去掉自定义的协议头,从而得到一个完整的单位帧桌面图像数据,然后对该单位帧桌面图像数据进行解码解压出一副桌面图像,并用GID函数在控制终端桌面共享的窗口中绘画出来;然后控制终端直接将其本地的鼠标显示在显示有共享终端桌面图像的桌面共享窗口中;控制终端对桌面共享窗口绘画出来的桌面图像进行鼠标操作事件、键盘操作事件中的任意一种或两种操作事件;对于鼠标操作事件,控制终端采集该鼠标操作事件并根据控制终端的桌面共享窗口与共享终端屏幕的比例关系对该鼠标操作事件进行处理,然后控制终端将操作事件封装成自定义的操作事件网络数据包采用TCP协议经MCU转发到共享终端;对于键盘操作事件,控制终端采集该键盘操作事件;然后控制终端将操作事件封装成自定义的操作事件网络数据包采用TCP协议经MCU转发到共享终端;(3)共享终端首先使用单独的接收线程接收控制终端传来的操作事件;对于鼠标操作事件,首先根据共享终端的系统处理能力申请分配固定大小的内存空间作为自定义的指针循环链表,接收线程将鼠标操作事件存储在自定义的指针循环链表中,然后使用独立的处理线程从自定义的指针循环链表中取出鼠标操作事件数据并进行解析,然后对鼠标操作事件进行模拟处理,最后显示在共享终端的桌面共享窗口中,当处理线程从指针循环链表中取出了一个鼠标操作事件并处理完后,则将此鼠标操作事件对应的内存设置为可用,这样接收线程就能重复使用这块内存;对于键盘操作事件,接收线程将接收到的键盘操作事件直接使用独立的处理线程对鼠标操作事件进行模拟处理,最后显示在共享终端的桌面共享窗口中;步骤(1)中,当本地鼠标的位置和状态信息经MCU转发到远程的观看终端、网络数据包经MCU分别转发到远程的观看终端后,观看终端接收来自共享终端有序的网络数据包,当接收到一个完整的数据帧后便将该帧的所有网络数据包去掉自定义的协议头,从而得到一个完整的单位帧桌面图像数据,然后对该单位帧桌面图像数据进行解码解压出一副桌面图像,并用GID函数在观看终端桌面共享的窗口中绘画出来;同时从自定义的协议头中得到来自共享终端的鼠标的位置和状态信息,并根据该鼠标的位置和状态信息计算出观看终端的桌面共享窗口与接收到的桌面图像的比例将鼠标图像在桌面共享的窗口中绘画出来,该观看终端的桌面共享窗口与共享终端传来的桌面图像的比例包括观看终端桌面共享窗口和共享终端传来的桌面图像沿X轴、Y轴的比例。
2、根据权利要求1所述的桌面共享方法,其特征在于步骤(1)所述本 地的共享终端采集本地桌面图像,是采用Mirror driver采集为缺省采集方法、 GDI函数采集为备份采集方法的混合采集方法,该混合采集方法的具体操作如 下系统启动后,图像采集线程首先运行作为共享终端缺省的采集方法Mirror driver,同时暂时将鼠标隐藏,以使Mirror driver采集到的桌面图像不包括鼠标 指针图像,然后Mirror driver开始采集桌面图像;同时,WH一CBT系统全局钩 子检测系统进程中是否有使用了 DirectX相关动态库的进程,当WH—CBT系统 全局钩子检测到有DirectX相关动态库的进程的窗口正常显示或者最大化显示 时,便将包括Ddraw.dll的DirectX相关动态库的进程记录在列表中,同时 WH—CBT系统全局钩子通知监控线程缓存一幅采集到的桌面图像,对桌面图像 中的每个像素的颜色值进行分析,如果发现该进程的窗口区域有连续的大范围 像素点都呈现白色时,监测线程则认定当前采集的窗口使用了 DirectX来显示绘 画图像,监测线程将通知图像采集线程切换到GDI函数进行采集;在GDI函数进行采集桌面图像的同时,WH—CBT系统全局钩子枚举系统进 程名称,当检测到常见的播放器软件运行且播放器窗口正常显示或者最大化显 示时,WH—CBT系统全局钩子通知监测线程对采集到的桌面图像进行检测,如 果发现该播放器窗口区域有连续的大范围像素点都呈现黑色时,监测线程则认 定GDI函数不能正确采集到桌面图像,将通知图像采集线程切换到Mirror driver 进行采集;若监测线程监测到Mirror driver、 GDI函数均不能正确当前的桌面图像时, 图像采集线程将运行GDI采集方法,通知WH一CBT系统全局钩子检测当前的播 放器窗口是否为全屏;若当前的播放器窗口全屏,且不是Windows Media Player, 将在钩子中枚举该播放器进程的动态库,若该播放器进程使用了 Ddraw.dll,则 钩住此动态库,分析其函数地址表,找到ID3DXSprite接口中的Draw函数的地 址,用自定义的Draw函数地址替代调用的函数地址表中的ID3DXSprite接口中 的Draw函数的地址,使对Draw函数的调用转移到调用自定义的函数中来,Draw 函数中的第一个参数pTexture是LPDIRECT3DTEXTURE9类型,其中保存了当 前的纹理,也就是当前要显示的图像,拷贝一份当前的纹理,便取得了桌面图 像,然后再调用Ddraw.dll中的Draw函数,让所述取得的桌面图像在播放器中 绘画出来;如果当前的播放器窗口不是全屏或者在全屏的播放器进程中不能枚 举到Ddraw.dll,此时通过修改系统的属性来满足采集到正确的桌面图像,具体 是通过修改显示设备的注册表信息,并重新加载系统的显示属性强制使系统硬 件加速停止来采集桌面图像。
3、 根据权利要求2所述的桌面共享方法,其特征在于所述暂时将鼠标隐藏的具体操作如下当共享终端的操作系统采用自定义的鼠标指针在驱动程序层通过Mirror driver中调用WindowsDDK中的DrvMovePointer函数来移动鼠标指针,使GDI 绘图不干涉到镜像中的图像,从而使在采集到的桌面图像中不包含自定义鼠标 指针图像即隐藏了鼠标指针;当共享终端的操作系统采用系统默认的鼠标指针时,在采集每幅桌面图像 之前,在应用程序层使用自定义的空白透明鼠标指针代替系统默认的鼠标指针, 从而使在采集到的桌面图像中不包含系统默认的鼠标指针图像,即隐藏了鼠标 指针。
4、 根据权利要求1所述的桌面共享方法,其特征在于所述控制终端还安 装有用于判断控制终端所运行在的设备类型的WH—MOUSE一LL系统全局钩子, 控制终端记录上述WH—MOUSE—LL系统全局钩子判断出的控制终端所运行在 的设备类型;然后对鼠标操作事件具体进行以下a、 b中的任一种操作a、当控制终端运行在PC设备上时,步骤(2)所述控制终端对鼠标操作事件的具体操作如下控制终端通过在WindowProc中采集所有在桌面共享窗口中产生的鼠标事件并将釆集到的所有位置点存储在队列中;控制终端根据共享终端的系统处理能力和速度,在控制终端设定一个处理 操作事件的单位时间,每过一个单位时间便对队列存储的鼠标位置事件取出来, 用比较丢弃算法取出最有价值的鼠标位置事件,然后根据控制终端的桌面共享 窗口与共享终端屏幕的比例关系将取出的鼠标位置事件转换为共享终端屏幕中 的鼠标位置事件,然后通过定义枚举类型来对应鼠标操作事件、定义结构体来封装鼠标事件,将转换后的鼠标位置事件与WindowProc采集的鼠标点击事件等 鼠标操作事件封装成操作事件网络数据包,再采用TCP协议经MCU转发到共 享终端;所述用比较丢弃算法取出最有价值的鼠标位置事件的具体操作为如果当 前鼠标移动平缓,单位时间内只存储单个的鼠标移动位置点,将其取出;如果 存储有多个鼠标移动位置点,则根据前一次发送的鼠标移动位置点和当前存储 的鼠标移动轨迹,选择取出几个最能反应鼠标移动轨迹的鼠标移动位置点;如 果当前鼠标移动非常快且连续,单位时间内将累积存储非常多的鼠标移动位置 点,则直接取出队列中居中的鼠标移动位置点;b、当控制终端运行在以触摸屏作为显示设备的设备上时,控制终端通过触 摸屏捕获到鼠标的点击或移动位置,通知系统模拟产生鼠标操作事件,其中控 制终端将采集到的鼠标双击事件中的第一次鼠标单击事件包装成自定义的鼠标 双击事件传输至共享终端,而控制终端将采集到的鼠标双击事件中的第二次鼠 标单击事件丢弃不作处理。
5、 根据权利要求1所述的桌面共享方法,其特征在于步骤(1)所述共 享终端对采集到的单位帧桌面图像源进行编码压縮,具体是采用H.264算法进 行编码压縮。
6、 根据权利要求1所述的桌面共享方法,其特征在于步骤(2)所述控 制终端对接收到的单位帧桌面图像数据进行解码解压,具体是采用H.264算法 来进行解码解压。
7、 根据权利要求1所述的桌面共享方法,其特征在于所述观看终端对接 收到的单位帧桌面图像数据进行解码解压,具体是采用H.264算法来进行解码 解压。
8、 实现权利要求1至7任一项所述桌面共享方法的桌面共享系统,其特征 在于包括用于采集桌面图像、鼠标的位置和状态信息并进行编码压縮后发送出去,以及接收来自控制终端的操作事件并进行处理后回放显示的共享终端; 用于桌面图像和操作事件转发的多媒体多点控制单元;用于接收来自共享终端 的桌面图像、鼠标的位置和状态信息并经过解码解压后回放显示的观看终端; 用于接收来自共享终端的桌面图像并经过解码解压后回放显示,同时还对共享终端传来的桌面图像进行操作并将操作事件经MCU发送到共享终端的控制终 端;同时,所述控制终端安装有WH—MOUSE—LL系统全局钩子。
9、 根据权利要求8所述桌的桌面共享系统,其特征在于所述共享终端安 装有Mirror driver、 GDI函数、WH_CBT系统全局钩子。
10、 根据权利要求8所述桌的桌面共享系统,其特征在于所述控制终端 安装有WH一MOUSEJX系统全局钩子。
全文摘要
本发明为桌面共享方法及系统,本系统包括用于采集桌面图像、鼠标的位置和状态信息并进行编码压缩后发送出去,以及接收来自控制终端的操作事件并进行处理后回放显示的共享终端;用于桌面图像和操作事件转发的多媒体多点控制单元;用于接收来自共享终端的桌面图像、鼠标的位置和状态信息并经过解码解压后回放显示的观看终端;用于接收来自共享终端的桌面图像并经过解码解压后回放显示,同时还对共享终端传来的桌面图像进行操作并将操作事件经MCU发送到共享终端的控制终端。本发明桌面共享系统中的观看终端可浏览流畅的远程的桌面图像,还可通过远程的控制终端对共享终端进行操作,将操作事件真实地反映为对共享终端的操作,具有良好的互动效果。
文档编号H04L29/06GK101447998SQ20081022042
公开日2009年6月3日 申请日期2008年12月25日 优先权日2008年12月25日
发明者徐蜀中, 蔡文波 申请人:广东威创视讯科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1