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发送到共享终端的控制终端。
9.根据权利要求8所述的桌面共享系统,其特征在于:所述共享终端安装有Mirror driver、GDI函数、WH_CBT系统全局钩子。
10.根据权利要求8所述的桌面共享系统,其特征在于:所述控制终端安装有WH_MOUSE_LL系统全局钩子。
桌面共享方法及系统 \n技术领域\n[0001] 本发明涉及桌面共享领域,具体涉及桌面共享方法及系统。 \n背景技术\n[0002] 随着信息技术的快速发展,网络已经成为信息传播的重要途径。远程控制和互动作为一种新的交互方式,不需要处于同一个环境便可以完成身临其境的互动,可以实现异地的观看与操作。 \n[0003] 桌面共享是数据共享中的一种重要应用,在网络视频会议中经常被用于文档展示、操作演示、问题协同解决等,是音视频、文本消息等交互方式重要且有效的补充。 [0004] VNC是比较成熟的桌面共享系统的实现,由一个服务端(共享端),多个客户端(观看端)组成。VNC在服务端采集时,只采集变化的区域的图像,在客户端也只更新变化的区域。这种方式一定程度上节省了系统资源,加快了采集速度,但是图像性能不稳定,当服务端的桌面图像高速变化时,客户端观看到的图像容易失真且不连贯,比如在服务端播放电影时,客户端观看的效果非常差,而且不能采集到DirectX加速显示的画面。同时,在远程控制方面,VNC在触摸屏等设备上的双击效果差。 \n发明内容\n[0005] 本发明的目的在于克服现有技术的上述缺点和不足,提供一种桌面共享方法,本发明实现了桌面共享系统中的观看终端可以浏览流畅的远程的桌面图像,同时远程的控制终端可以对共享终端进行操作,并将操作事件真实地反映为对共享终端的操作,共享终端可以顺利采集到DirectX加速显示的画面,同时在远程控制方面,本发明中针对触摸屏等设备作了专门处理,避免了VNC在触摸屏等设备上的双击效果差等问题,具有良好的互动效果。 \n[0006] 本发明的目的还在于提供实现上述桌面共享方法的系统。 \n[0007] 本发明目的通过下述技术方案实现:本桌面共享方法,包括以下步骤: [0008] (1)本地的共享终端采集本地鼠标的位置和状态信息(该状态信息包括鼠标点击信息、移动信息),作为协议参数填充在自定义的协议头中;同时本地的共享终端采集本地桌面图像,接着对采集到的单位帧桌面图像源进行编码压缩成便于网络传输的单位帧桌面图像数据,然后对每帧桌面图像数据进行分块,将每块数据加上自定义的协议头(这个协议头包含了采集这帧桌面图像时采集到的当前的鼠标的位置和状态信息、该帧图像的参数信息,比如图像分辨率大小、颜色位值、帧号、包号等)打包成一个适合于在当前网络传输的网络数据包;接着采用RTP/RTCP协议将每帧的网络数据包经MCU分别转发到远程的观看终端、远程的控制终端,其中的RTCP协议使每帧的网络数据包按顺序传输; [0009] (2)控制终端接收来自共享终端有序的网络数据包,当接收到一个完整的数据帧后便将该帧的所有网络数据包去掉自定义的协议头,从而得到一个完整的单位帧桌面图像数据,然后对该单位帧桌面图像数据进行解码解压出一副桌面图像,并用GID函数在控制终端桌面共享的窗口中绘画出来;然后控制终端直接将其本地的鼠标显示在显示有共享终端桌面图像的桌面共享窗口中; \n[0010] 控制终端对桌面共享窗口绘画出来的桌面图像进行鼠标操作事件、键盘操作事件中的任意一种或两种操作事件;对于鼠标操作事件,控制终端采集该鼠标操作事件并根据控制终端的桌面共享窗口与共享终端屏幕的比例关系对该鼠标操作事件进行处理,然后控制终端将操作事件封装成自定义的操作事件网络数据包采用TCP协议经MCU转发到共享终端;对于键盘操作事件,控制终端采集该键盘操作事件;然后控制终端将操作事件封装成自定义的操作事件网络数据包采用TCP协议经MCU转发到共享终端; \n[0011] (3)共享终端首先使用单独的接收线程接收控制终端传来的操作事件;对于鼠标操作事件,首先根据共享终端的系统处理能力申请分配固定大小的内存空间作为自定义的指针循环链表,接收线程将鼠标操作事件存储在自定义的指针循环链表中,然后使用独立的处理线程从自定义的指针循环链表中取出鼠标操作事件数据并进行解析,然后对鼠标操作事件进行模拟处理,最后显示在共享终端的桌面共享窗口中,当处理线程从指针循环链表中取出了一个鼠标操作事件并处理完后,则将此鼠标操作事件对应的内存设置为可用,这样接收线程就能重复使用这块内存;对于键盘操作事件,接收线程将接收到的键盘操作事件直接使用独立的处理线程对键盘操作事件进行模拟处理,最后显示在共享终端的桌面共享窗口中; \n[0012] 根据上述步骤(1)所述,共享终端采集的本地鼠标的位置、状态信息以及本地桌面图像是打包在一起传送的,即当前桌面的图像和当前的鼠标信息是绑定的,所以在观看终端还原时可以保证看到的图像和看到的鼠标是同步正确的。 \n[0013] 为了更好的实现本发明,本地鼠标的位置和状态信息经MCU转发到远程的观看终端、网络数据包经MCU分别转发到远程的观看终端后,观看终端接收来自共享终端有序的网络数据包,当接收到一个完整的数据帧后便将该帧的所有网络数据包去掉自定义的协议头,从而得到一个完整的单位帧桌面图像数据,然后对该单位帧桌面图像数据进行解码解压出一副桌面图像,并用GID函数在观看终端桌面共享的窗口中绘画出来;同时从自定义的协议头中得到来自共享终端的鼠标的位置和状态信息,并根据该鼠标的位置和状态信息计算出观看终端的桌面共享窗口与接收到的桌面图像的比例将鼠标图像在桌面共享的窗口中绘画出来,该观看终端的桌面共享窗口与共享终端传来的桌面图像的比例包括观看终端桌面共享窗口和共享终端传来的桌面图像沿X轴、Y轴的比例。 \n[0014] 上述方法中,步骤(1)所述本地的共享终端采集本地桌面图像,是采用镜像驱动(Mirror driver)采集为缺省采集方法、GDI函数采集为备份采集方法的混合采集方法,该混合采集方法的具体操作如下: \n[0015] 系统启动后,图像采集线程首先运行作为共享终端缺省的采集方法Mirrordriver,同时暂时将鼠标隐藏,以使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函数进行采集; \n[0016] 在GDI函数进行采集桌面图像的同时,WH_CBT系统全局钩子枚举系统进程名称,当检测到常见的播放器软件运行且播放器窗口正常显示或者最大化显示时,WH_CBT系统全局钩子通知监测线程对采集到的桌面图像进行检测,如果发现该播放器窗口区域有连续的大范围像素点都呈现黑色时,监测线程则认定GDI函数不能正确采集到桌面图像,将通知图像采集线程切换到Mirror driver进行采集;\n[0017] 若监测线程监测到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采集方式不能采集到正确的桌面图像,此时,通过修改显示设备的注册表信息,并重新加载系统的显示属性强制使系统硬件加速停止来采集桌面图像。 \n[0018] 所述通过修改显示设备的注册表信息,并重新加载系统的显示属性强制使系统硬件加速停止来采集桌面图像,其具体操作如下: \n[0019] 首先,在注册表中HKEY_LOCAL_MACHINE的主键下查找到HARDWARE\DEVICEMAP\VIDEO子键中\Device\Video0键名对应的值,这个值保存了当前的显示设备的硬件加速状态在注册表中表示的路径,在这个路径对应的注册表子键下,添加Acceleration.Level的键名,并设置值为4,调用ChangeDisplaySettings函数重新加载系统的显示属性,便取消了系统硬件加速。 \n[0020] 所述混合采集方法的具体操作中的暂时将鼠标隐藏,以使Mirror driver采集到的桌面图像不包括鼠标指针图像,该隐藏鼠标的具体操作如下: \n[0021] 当共享终端的操作系统采用自定义的鼠标指针在驱动程序层通过Mirror driver中调用Windows DDK中的DrvMovePointer函数来移动鼠标指针,使GDI 绘图不干涉到镜像中的图像,从而使在采集到的桌面图像中不包含自定义鼠标指针图像即隐藏了鼠标指针; [0022] 当共享终端的操作系统采用系统默认的鼠标指针时,在采集每幅桌面图像之前,在应用程序层使用自定义的空白透明鼠标指针代替系统默认的鼠标指针,从而使在采集到的桌面图像中不包含系统默认的鼠标指针图像,即隐藏了鼠标指针; \n[0023] 因此,通过上述隐藏鼠标指针,使Mirror driver采集到的桌面图像不包括鼠标指针图像。 \n[0024] 上述方法中,步骤(2)所述鼠标操作事件包括鼠标位置事件和鼠标点击事件。 [0025] 上述方法中,所述控制终端还安装有WH_MOUSE_LL系统全局钩子,在系统初始化时,WH_MOUSE_LL系统全局钩子捕获控制终端的鼠标操作事件并判断该鼠标操作事件的类型,然后判断控制终端所运行在的设备类型;若判断出该鼠标操作事件是LLMHF_INJECTED类型,则是注入类型,则该鼠标操作事件是触摸屏等设备模拟产生的,则控制终端运行在触摸屏设备作为显示设备的设备中;若判断出该鼠标操作事件不是LLMHF_INJECTED类型,则该鼠标操作事件是PC等设备产生的,则控制终端运行在PC等设备中;控制终端记录上述控制终端所运行在的设备类型;然后对鼠标操作事件具体进行以下A、B中任一种操作: [0026] A、当控制终端运行在PC设备上时,步骤(2)所述控制终端对鼠标操作事件的具体操作如下: \n[0027] 控制终端通过在窗口过程函数(WindowProc)中采集所有在桌面共享窗口中产生的鼠标事件并将采集到的所有位置点存储在队列中; \n[0028] 控制终端根据共享终端的系统处理能力和速度,在控制终端设定一个处理操作事件的单位时间,每过一个单位时间便对队列存储的鼠标位置事件取出来,用比较丢弃算法取出最有价值的鼠标位置事件,然后根据控制终端的桌面共享窗口与共享终端屏幕的比例关系将取出的鼠标位置事件转换为共享终端屏幕中的鼠标位置事件,然后通过定义枚举类型来对应鼠标操作事件、定义结构体来封装鼠标事件,将转换后的鼠标位置事件与窗口过程函数(WindowProc)采集的鼠标点击事件等鼠标操作事件封装成操作事件网络数据包,再采用TCP协议经MCU转发到共享终端; \n[0029] 上述用比较丢弃算法取出最有价值的鼠标位置事件的具体操作为:如果当前鼠标移动平缓,单位时间内只存储单个的鼠标移动位置点,将其取出;如果存储有多个鼠标移动位置点,则根据前一次发送的鼠标移动位置点和当前存储的鼠标移动轨迹,选择取出几个最能反应鼠标移动轨迹的鼠标移动位置点;如果当前鼠标移动非常快且连续,单位时间内将累积存储非常多的鼠标移动位置点,则直接取出队列中居中的鼠标移动位置点。 [0030] B、当控制终端运行在以触摸屏作为显示设备的设备上时,步骤(2)所述控制终端对鼠标操作事件的具体操作如下:触摸屏捕获到屏幕上的点击或移动位置,通过触摸屏驱动程序通知系统模拟产生相应的鼠标操作事件;控制终端在窗口过程函数(WindowProc)中采集鼠标操作事件,和运行在PC上的采集方式相同,鼠标单击和移动事件的处理也和运行在PC上的处理方式相同,但是对于双击事件的处理方式不同,在触摸屏上,控制终端将采集到的鼠标双击事件中的第一次鼠标单击事件包装成自定义的鼠标双击事件类型传输至共享终端,而控制终端将采集到的鼠标双击事件中的第二次鼠标单击事件丢弃不作处理,当共享终端接收到自定义的鼠标双击事件类型的消息,将连续模拟两次单击事件来还原双击事件。 \n[0031] 上述桌面共享方法中,步骤(1)所述共享终端对采集到的单位帧桌面图像源进行编码压缩,具体是采用H.264算法进行编码压缩。 \n[0032] 上述桌面共享方法中,步骤(2)所述控制终端对接收到的单位帧桌面图像数据进行解码解压,具体是采用H.264算法来进行解码解压。 \n[0033] 上述桌面共享方法中,所述观看终端对接收到的单位帧桌面图像数据进行解码解压,具体是采用H.264算法来进行解码解压。 \n[0034] 实现上述桌面共享方法的桌面共享系统包括: \n[0035] 用于采集桌面图像、鼠标的位置和状态信息并进行编码压缩后发送出去,以及接收来自控制终端的操作事件并进行处理后回放显示的共享终端; \n[0036] 用于桌面图像和操作事件转发的多媒体多点控制单元(MCU); \n[0037] 用于接收来自共享终端的桌面图像、鼠标的位置和状态信息并经过解码解压后回放显示的观看终端; \n[0038] 用于接收来自共享终端的桌面图像并经过解码解压后回放显示,同时还对共享终端传来的桌面图像进行操作并将操作事件经MCU发送到共享终端的控制终端。 [0039] 所述共享终端设置有对采集到的桌面图像进行编码的编码器,该编码器为H.264编码器。 \n[0040] 所述观看终端和控制终端都设置有对接收到的桌面图像数据进行解码的解码器,该解码器为H.264解码器。 \n[0041] 所述共享终端安装有镜像驱动(Mirror driver)、GDI函数、WH_CBT系统全局钩子。 \n[0042] 所述控制终端安装有WH_MOUSE_LL系统全局钩子。 \n[0043] 本发明相对于现有技术具有以下优点: \n[0044] 1、本发明中的共享终端采用镜像驱动(Mirror driver)采集为缺省采集方法、GDI函数采集为备份采集方法的混合采集方法采集本地桌面图像,在共享终端能采集到变化速度快的图像,而共享终端采集的本地鼠标的位置、状态信息以及本地桌面图像是打包在一起传送的,即当前桌面的图像和当前的鼠标信息是绑定的,所以在观看终端还原时可以保证看到的图像和看到的鼠标是同步正确的,能在观看终端能观看到流畅的图像; [0045] 2、本发明通过在共享终端采集全屏图像并发送到观看终端,能够以图像帧的播放方式在观看终端还原; \n[0046] 3、本发明中共享终端采用镜像驱动(Mirror driver)采集为缺省采集方法、GDI函数采集为备份采集方法的混合采集方法采集本地桌面图像,获取DirectX的图像缓冲区或调整系统的硬件加速属性,在共享终端能采集到包括透明图像、硬件加速显示的图像等所有类型的图像; \n[0047] 4、本发明的共享终端对采集到的单位帧桌面图像源进行编码压缩采用H.264高效的编码压缩算法进行编码压缩,最大性能上压缩图像数据,减少了图像数据的传输数据量; \n[0048] 5、本发明采用RTP和RTCP协议进行图像数据的传输,同时利用图像数据的网络数据包中的自定义的协议头检测数据包,减少图像帧的丢失,避免图像的不连贯; [0049] 6、本发明采用TCP传输鼠标、键盘的控制事件,确保在控制终端产生的所有控制事件都能发送到共享终端,确保远程控制的事件的准确性; \n[0050] 7、本发明方法中,当在控制终端的鼠标操作事件异常频繁时,在共享终端将采取丢弃的优化处理,合理丢弃某些中间步骤地操作,最大程度还原连贯的操作,同时也避免了事件过多,处理不过来导致的延迟,确保远程控制的事件 的连贯性; \n[0051] 8、本发明方法中,当控制终端运行在触摸屏设备上时,控制终端对双击的鼠标事件作了特殊处理,确保了控制终端运行在触摸屏设备上不会丢弃鼠标操作事件; [0052] 9、本发明在控制终端控制远程的共享终端时,看到和使用的是本地的鼠标,所以远程操作时可以获得操作本地同样的流畅性。 \n附图说明\n[0053] 图1为本发明桌面共享系统的结构示意图; \n[0054] 图2为本发明桌面共享方法的流程图。 \n具体实施方式\n[0055] 下面结合实施例及附图,对本发明作进一步地详细说明,但本发明的实施方式不限于此。 \n[0056] 实施例 \n[0057] 如图1所示,本发明桌面共享系统包括: \n[0058] 用于采集桌面图像、鼠标的位置和状态信息并进行编码压缩后发送出去,以及接收来自控制终端的操作事件并进行处理后回放显示的共享终端; \n[0059] 用于桌面图像和操作事件转发的多媒体多点控制单元(MCU); \n[0060] 用于接收来自共享终端的桌面图像、鼠标的位置和状态信息并经过解码解压后回放显示的观看终端; \n[0061] 用于接收来自共享终端的桌面图像并经过解码解压后回放显示,同时还对共享终端传来的桌面图像进行操作并将操作事件经MCU发送到共享终端的控制终端。 [0062] 为了更好地实现本发明,本实施例的桌面共享系统中包括1个控制终端、1个共享终端和2个观看终端。 \n[0063] 同时,共享终端设置有对采集到的桌面图像进行编码的编码器,该编码器为H.264编码器,观看终端和控制终端都设置有对接收到的桌面图像数据进行解码的解码器,该解码器为H.264解码器,同时,共享终端该安装有镜像驱动(Mirror driver)、GDI函数、WH_CBT系统全局钩子;控制终端安装有WH_MOUSE_LL系统全局钩子。 \n[0064] 如图2所示,通过本桌面共享终端系统进行桌面共享的方法,包括以下步骤: [0065] (1)本地的共享终端采集本地鼠标的位置和状态信息(该状态信息包括鼠标点击信息、移动信息),作为协议参数填充在自定义的协议头中;同时本地的共享终端采集本地桌面图像,接着对采集到的单位帧桌面图像源进行编码压缩成便于网络传输的单位帧桌面图像数据,然后对每帧桌面图像数据进行分块,将每块数据加上自定义的协议头(这个协议头包含了采集这帧桌面图像时采集到的当前的鼠标的位置和状态信息,该帧图像的参数信息,比如图像分辨率大小、颜色位值、帧号、包号等)打包成一个适合于在当前网络传输的网络数据包;接着采用RTP/RTCP协议将每帧的网络数据包经MCU分别转发到远程的观看终端、远程的控制终端,其中的RTCP协议使每帧的网络数据包按顺序传输; [0066] (2)控制终端接收来自共享终端有序的网络数据包,当接收到一个完整的数据帧后便将该帧的所有网络数据包去掉自定义的协议头,从而得到一个完整的单位帧桌面图像数据,然后对该单位帧桌面图像数据进行解码解压出一副桌面图像,并用GID函数在控制终端桌面共享的窗口中绘画出来;然后控制终端直接将其本地的鼠标显示在显示有共享终端桌面图像的桌面共享窗口中; \n[0067] 控制终端对桌面共享窗口绘画出来的桌面图像进行鼠标操作事件、键盘操作事件中的任意一种或两种操作事件;对于鼠标操作事件,控制终端采集该鼠标操作事件并根据控制终端的桌面共享窗口与共享终端屏幕的比例关系对该鼠标操作事件进行处理,然后控制终端将操作事件封装成自定义的操作事件网络数据包采用TCP协议经MCU转发到共享终端;对于键盘操作事件,控制终端采集该键盘操作事件;然后控制终端将操作事件封装成自定义的操作事件网络数据包采用TCP协议经MCU转发到共享终端; \n[0068] (3)共享终端首先使用单独的接收线程接收控制终端传来的操作事件;对于鼠标操作事件,首先根据共享终端的系统处理能力申请分配固定大小的内存空间作为自定义的指针循环链表,该链链表中的元素可以循环使用,这样避免过多的内存分配和释放操作,也减少了内存碎片,当存储的鼠标操作事件过多使得链表空间不够时,再申请新的内存空间; \n[0069] 接收线程将鼠标操作事件存储在自定义的指针循环链表中,然后使用独立的处理线程从自定义的指针循环链表中取出鼠标操作事件数据并进行解析,然后调用mouse event函数或SendInput函数对鼠标操作事件进行模拟处理;最后显示在共享终端的桌面共享窗口中,当处理线程从指针循环链表中取出了一个鼠标操作事件并处理完后,则将此鼠标操作事件对应的内存设置为可用,这样接收线程就能重复使用这块内存;对于键盘操作事件,通过控制终端桌面共享窗口的PreTranslateMessage函数中捕获后转发到共享终端,共享终端接收线程将接收到的键盘操作事件不进行存储,这是因为键盘操作事件不像鼠标操作事件那样快速频繁而导致系统处理不过来,然后将键盘操作事件直接使用独立的处理线程对键盘操作事件进行模拟处理,具体为通过处理程序解析出键盘操作事件并使用keybd_event模拟出一次键盘操作;\n[0070] 根据上述步骤(1)所述,共享终端采集的本地鼠标的位置、状态信息以及本地桌面图像是打包在一起传送的,即当前桌面的图像和当前的鼠标信息是绑定的,所以在观看终端还原时可以保证看到的图像和看到的鼠标是同步正确的。 \n[0071] 为了更好的实现本发明,本地鼠标的位置和状态信息经MCU转发到远程的观看终端、网络数据包经MCU分别转发到远程的观看终端后,观看终端接收来自共享终端有序的网络数据包,当接收到一个完整的数据帧后便将该帧的所有网络数据包去掉自定义的协议头,从而得到一个完整的单位帧桌面图像数据,然后对该单位帧桌面图像数据进行解码解压出一副桌面图像,并用GID函数在观看终端桌面共享的窗口中绘画出来;同时从自定义的协议头中得到来自共享终端的鼠标的位置和状态信息,并根据该鼠标的位置和状态信息计算出观看终端的桌面共享窗口与接收到的桌面图像的比例将鼠标图像在桌面共享的窗口中绘画出来,该观看终端的桌面共享窗口与共享终端传来的桌面图像的比例包括观看终端桌面共享窗口和共享终端传来的桌面图像沿X轴、Y轴的比例,并保留在处理远程控制时使用。 \n[0072] 上述方法中,步骤(1)所述本地的共享终端采集本地桌面图像,是采用镜像驱动(Mirror driver)采集为缺省采集方法、GDI函数采集为备份采集方法的混合采集方法。 [0073] Mirror driver是Windows NT下的一种镜像驱动,系统发往物理显卡的所有命令也同样发送给Mirror driver,可以在Mirror driver中模拟出当前系统的显示内容,因此称之为mirror。利用这个特性,就能很方便的捕获到系统当前屏幕的内容以及系统要绘制的区域(变化部分),是一种速度很快的截屏方法。不过Mirror driver也有缺陷,不支持DirectX硬件加速,所以采集不到DirectX显示的图像,本发明中使用Mirror driver采集方法式作为共享终端缺省的也是主要的 采集方法。 \n[0074] 而GDI函数采集方法,则是利用GDI函数,视桌面为窗口,将桌面窗口的DC拷贝到内存DC,绘画到内存BitMap中,并从中取出保存有桌面图像数据的BMP结构的内存数据。\nGDI函数采集方法的效率比Mirror driver的采集方法低,而且在硬件加速的系统中,采集不到播放器中的图像,本发明中使用GDI函数采集方法作为共享终端备份的也是辅助的采集方法。 \n[0075] 共享终端在图像采集线程中完成所有桌面图像的采集工作,并在镜像驱动(Mirror driver)采集方法、GDI函数采集法之间切换。 \n[0076] 上述该混合采集方法的具体操作如下: \n[0077] 系统启动后,图像采集线程首先运行作为共享终端缺省的采集方法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函数进行采集; \n[0078] 在GDI函数进行采集桌面图像的同时,WH_CBT系统全局钩子枚举系统进程名称,当检测到常见的播放器软件运行且播放器窗口正常显示或者最大化显示时,WH_CBT系统全局钩子通知监测线程对采集到的桌面图像进行检测,如果发现该播放器窗口区域有连续的大范围像素点都呈现黑色时,监测线程则认定GDI函数不能正确采集到桌面图像,将通知图像采集线程切换到Mirror driver进行采集; \n[0079] 若监测线程监测到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采集方式不能采集到正确的桌面图像,此时,通过修改显示设备的注册表信息,并重新加载系统的显示属性强制使系统硬件加速停止来采集桌面图像。 \n[0080] 所述通过修改显示设备的注册表信息,并重新加载系统的显示属性强制使系统硬件加速停止来采集桌面图像,其具体操作如下: \n[0081] 首先,在注册表中HKEY_LOCAL_MACHINE的主键下查找到HARDWARE\DEVICEMAP/VIDEO子键中\Device\Video0键名对应的值,这个值保存了当前的显示设备的硬件加速状态在注册表中表示的路径,在这个路径对应的注册表子键下,添加Acceleration.Level的键名,并设置值为4,调用ChangeDisplaySettings函数重新加载系统的显示属性,便取消了系统硬件加速。 \n[0082] 所述混合采集方法的具体操作中的暂时将鼠标隐藏,以使Mirror driver采集到的桌面图像不包括鼠标指针图像,该隐藏鼠标的具体操作如下: \n[0083] 当共享终端的操作系统采用自定义的鼠标指针在驱动程序层通过Mirrordriver中调用WindowsDDK中的DrvMovePointer函数来移动鼠标指针,使GDI绘图不干涉到镜像中的图像,从而使在采集到的桌面图像中不包含自定义鼠标指针图像即隐藏了鼠标指针; [0084] 当共享终端的操作系统采用系统默认的鼠标指针时,在采集每幅桌面图像之前,在应用程序层使用自定义的空白透明鼠标指针代替系统默认的鼠标指针,从而使在采集到的桌面图像中不包含系统默认的鼠标指针图像即隐藏了鼠标指针; \n[0085] 因此,通过上述隐藏鼠标指针,使Mirror driver采集到的桌面图像不包括鼠 标指针图像。 \n[0086] 上述方法中,步骤(2)所述鼠标操作事件包括鼠标位置事件和鼠标点击事件。 [0087] 上述方法中,由于控制终端在桌面共享窗口进行快速鼠标移动等高频率的鼠标操作时,经过采集-网络发送-模拟处理这个复杂的过程,在共享终端将会有明显的延迟,甚至在共享终端出现事件处理不过来的情况,给用户的感觉就是远程操作的延时,甚至不连贯,影响远程互动的效果。所以,本发明打破传统的方式,采用比较丢弃算法,在处理高频率的鼠标操作时,不是将所有的操作都作处理,而是根据鼠标的运动规律和轨迹找到最有价值的鼠标位置时间发送给共享终端进行模拟处理,从而可以在基本保持事件连续性的基础上,避免延迟的产生。 \n[0088] 上述方法中,所述控制终端还安装有WH_MOUSE_LL系统全局钩子,在系统初始化时,WH_MOUSE_LL系统全局钩子捕获控制终端的鼠标操作事件并判断该鼠标操作事件的类型,然后判断控制终端所运行在的设备类型;若判断出该鼠标操作事件是LLMHF_INJECTED类型,则是注入类型,则该鼠标操作事件是触摸屏等设备模拟产生的,则控制终端运行在触摸屏设备作为显示设备的设备中;若判断出该鼠标操作事件不是LLMHF_INJECTED类型,则该鼠标操作事件是PC等设备产生的,则控制终端运行在PC等设备设备中;控制终端记录上述控制终端所运行在的设备类型;然后对鼠标操作事件具体进行以下A、B中任一种操作: [0089] A、当控制终端运行在PC设备上时,步骤(2)所述控制终端对鼠标操作事件的具体操作如下: \n[0090] 控制终端通过在窗口过程函数(WindowProc)中采集所有在桌面共享窗口中产生的鼠标事件并将采集到的所有位置点存储在队列中; \n[0091] 控制终端根据共享终端的系统处理能力和速度,在控制终端设定一个处理操作事件的单位时间,每过一个单位时间便对队列存储的鼠标位置事件取出来,用比较丢弃算法取出最有价值的鼠标位置事件,然后根据控制终端的桌面共享窗口与共享终端屏幕的比例关系将取出的鼠标位置事件转换为共享终端屏幕中的鼠标位置事件,然后通过定义枚举类型来对应鼠标操作事件、定义结构体来封装鼠标事件,将转换后的鼠标位置事件与窗口过程函数(WindowProc)采集的鼠标点击事件等鼠标操作事件封装成操作事件网络数据包,再采用TCP协议 经MCU转发到共享终端。所述用比较丢弃算法取出最有价值的鼠标位置事件的具体操作为:如果当前鼠标移动平缓,单位时间内只存储单个的鼠标移动位置点,将其取出;如果存储有多个鼠标移动位置点,则根据前一次发送的鼠标移动位置点和当前存储的鼠标移动轨迹,选择取出几个最能反应鼠标移动轨迹的鼠标移动位置点;如果当前鼠标移动非常快且连续,单位时间内将累积存储非常多的鼠标移动位置点,则直接取出队列中居中的鼠标移动位置点。 \n[0092] 其中,本发明定义枚举类型MouseMsgType对应系统鼠标操作事件的类型;定义结构体MOUSECOMMANDPACKAGE来封装鼠标操作事件,以便于通过自定义的协议在网络上传输并被解析。 \n[0093] 控制终端从窗口过程函数(WindowProc)中捕获鼠标操作事件消息时,WindowProc函数的参数message标示事件的类型,wParam是附加信息,标示虚拟键是否按下等额外信息,lParam标志鼠标坐标位置信息,其中低字节标示鼠标在控制终端的桌面共享窗口中X轴的位置,高字节标示鼠标在控制终端的桌面共享窗口中Y轴的位置。因为窗口坐标和屏幕坐标不同,所以需要将控制窗口坐标中的鼠标位置转换为共享终端的屏幕坐标中的位置。远程控制时,鼠标只在桌面共享窗口中移动有效,转换后共享终端的的鼠标屏幕坐标应减去应用程序共享窗口在整个窗口的偏移量。然后转换桌面共享窗口和图像对应的比例,其转换的计算公式为: \n[0094] 鼠标点在共享终端沿X轴的位置=(鼠标点的屏幕坐标沿X轴的位置+桌面共享窗口的滚动条位置沿X轴的位置-桌面共享窗口在系统屏幕中的偏移位置的沿X轴的位置)/窗口宽度和图像宽度的比例; \n[0095] 鼠标点在共享终端沿Y轴的位置=(鼠标点的屏幕坐标沿Y轴的位置+桌面共享窗口的滚动条位置沿Y轴的位置-桌面共享窗口在系统屏幕中的偏移位置的沿Y轴的位置)/窗口高度和图像高度的比例; \n[0096] 当计算出来的远程坐标位置的X轴位置小于0或Y轴位置小于0时,将其置为0,如果X轴位置和Y轴位置同时小于0,将其这个远程坐标位置认为是错误的,不传输到远程的共享终端。 \n[0097] B、当控制终端运行在以触摸屏作为显示设备的设备上时,触摸屏捕获到屏幕上的点击或移动位置,通过触摸屏驱动程序通知系统模拟产生相应的鼠标操作事件;控制终端在窗口过程函数(WindowProc)中采集鼠标操作事件,和运行在PC上的采集方式相同,鼠标单击和移动事件的处理也和运行在PC上的处 理方式相同,但是对于双击事件的处理方式不同,这是因为触摸屏设备的鼠标事件产生不是由鼠标这个硬件设备来产生系统事件,而是通过触摸屏捕获到鼠标的点击或移动位置,通知系统模拟产生鼠标操作事件,这样将降低鼠标事件的处理速度,当在触摸屏上产生一个鼠标双击事件,首先需要触摸屏驱动程序捕获并解析,通知系统模拟一个鼠标双击事件,这时应用程序共享系统的控制终端才能捕获到系统发出的鼠标双击事件,因为鼠标双击事件实际上是两次连续的鼠标单击事件,所以控制终端采集到的两次鼠标单击事件将有过多的隔阂事件,将这两次鼠标单击事件传输至共享终端,再由共享终端处理时,将可能认为这是两次鼠标单击事件。所以,本发明对以触摸屏作为显示设备的设备作特殊的处理。系统对鼠标双击的反应事件是由用户设定,本发明不建议改变终端的系统设置。所以,在本发明中,控制终端将采集到的鼠标双击事件中的第一次鼠标单击事件包装成自定义的鼠标双击事件传输至共享终端,而控制终端将采集到的鼠标双击事件中的第二次鼠标单击事件丢弃不作处理,当共享终端接收到自定义的鼠标双击事件类型的消息,将连续模拟两次单击事件来还原双击事件。因此,对于鼠标双击事件,在PC上和触摸屏系统中将有不同的处理。 \n[0098] 上述桌面共享方法中,步骤(1)所述共享终端对采集到的单位帧桌面图像源进行编码压缩,具体是采用H.264算法进行编码压缩。 \n[0099] 上述桌面共享方法中,步骤(2)所述控制终端对接收到的单位帧桌面图像数据进行解码解压,具体是采用H.264算法来进行解码解压。 \n[0100] 上述桌面共享方法中,所述观看终端对接收到的单位帧桌面图像数据进行解码解压,具体是采用H.264算法来进行解码解压。 \n[0101] 步骤(3)所述共享终端调用mouse_event函数或SendInput函数对鼠标操作事件进行模拟处理;其具体操作如下: \n[0102] 首先通过计算映射鼠标在共享终端屏幕上对应的像素点位置,利用GetSystemMetrics(SM_CXSCREEN)函数得到共享终端屏幕的水平尺寸大小,利用GetSystemMetrics(SM_CYSCREEN)函数获取共享终端屏幕的垂直尺寸大小。使用如下公式计算出鼠标位置相对于屏幕像素位置的比例: \n[0103] 沿X轴的相对比例=65535.0/(屏幕的水平尺寸大小-1); \n[0104] 沿Y轴的相对比例=65535.0/(屏幕的垂直尺寸大小-1); \n[0105] 屏幕的水平尺寸大小和屏幕的垂直尺寸大小构成了屏幕的区域大小,当鼠标操作事件中的鼠标位置点处于屏幕区域中时,通过比例转换得到鼠标点在屏 幕中的像素位置,计算公式如下: \n[0106] 鼠标点在屏幕中沿X轴的像素位置=鼠标沿X轴位置点*沿X轴的相对比例; [0107] 鼠标点在屏幕中沿Y轴的像素位置=鼠标沿Y轴位置点*沿Y轴的相对比例; [0108] 使用mouse_event函数便可模拟处理经过位置转换的鼠标操作事件。 [0109] 如果鼠标事件中的鼠标位置点不在屏幕区域中时,在Win2K以上的系统中,将使用SendInput函数来模拟处理经过位置转换的鼠标操作事件。 \n[0110] 上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
法律信息
- 2018-12-11
未缴年费专利权终止
IPC(主分类): H04L 29/06
专利号: ZL 200810220423.9
申请日: 2008.12.25
授权公告日: 2012.07.11
- 2017-06-16
专利权人的姓名或者名称、地址的变更
专利权人由广东威创视讯科技股份有限公司变更为威创集团股份有限公司
地址由510663 广东省广州市广州高新技术产业开发区彩频路6号变更为510670 广东省广州高新技术产业开发区科珠路233号
- 2012-07-11
- 2009-07-29
- 2009-06-03
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有引用任何外部专利数据! |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |