一种USB设备重定向数据传输方法、数据传输装置、本地装置和远程服务器与流程

文档序号:16673881发布日期:2019-01-18 23:47阅读:270来源:国知局
一种USB设备重定向数据传输方法、数据传输装置、本地装置和远程服务器与流程

本发明涉及移动通信领域,尤其涉及一种usb设备重定向数据传输方法、数据传输装置、本地装置和远程服务器。



背景技术:

随着虚拟化与云计算的广泛普及,用户越来越多的采用usb视频设备等本地终端连接到部署在云端的服务器进行使用。视频数据既量大又相当频繁,在网络传输中占据相当大的带宽资源,且数据收发的滞后又对用户的体验造成非常严重的影响。

应对大量数据的传输,普遍采用各种压缩算法来优化网络数据传输。具体到usb视频设备重定向方面,现有的压缩算法包括有损算法和无损算法,其中有损压缩要优于无损压缩,运动图像压缩又要优于静止图像压缩。目前运动图像有损压缩算法主要有h264、mpeg4、vp8等,由于采用时需要同时兼顾速度与效率,即速度越快越好,压缩效率越高越好。

要进行图像压缩,就要先得到图像数据。采集usb视频设备视频图像数据的方式,决定了在远程登陆用户的桌面操作系统环境下展示usb视频设备与视频图像的方式。在采集usb视频设备视频图像数据方式,包括:1、直接透传usb命令,此方式对设备与应用软件的适应性最强;2、通过操作系统api获取一帧帧图像的方式,此方式调用起来最方便,但随图像附带的一些信息丢失,对设备与应用软件的适应性随之降低。



技术实现要素:

本发明提供一种usb设备重定向数据传输方法、数据传输装置、本地装置和远程服务器,用以解决现有技术中由于usb设备的图像数据传输量大导致的网络带宽占用较大的问题。

依据本发明的一个方面,提供一种usb设备重定向数据传输方法,所述方法包括:

获取usb图像数据;

根据重定向信息,将所述usb图像数据进行压缩,获取usb图像压缩数据,所述重定向信息包括用于重定向传输数据的信息;

根据所述usb图像压缩数据重构usb重定向传输消息;

将所述usb重定向传输消息发送至远程服务器。

依据本发明的一个方面,提供还一种usb设备重定向数据传输方法,所述方法包括:

接收并解析本地装置发送的usb重定向传输消息,获取所述usb重定向传输消息中的usb图像压缩数据;

根据重定向信息将所述usb图像压缩数据进行解压,获取usb图像数据,所述重定向信息包括用于重定向传输数据的分辨率信息和/或图像格式信息;

根据所述usb图像数据重构usb传输消息;

输出所述usb传输消息。

本发明还提供一种usb设备重定向数据传输方法,所述方法包括:

接收并解析usb重定向装置发送的usb重定向传输消息,获取所述usb重定向传输消息中的usb图像压缩数据;

根据重定向信息将所述usb图像压缩数据进行解压,获取usb图像数据,所述重定向信息包括用于重定向传输数据的分辨率信息;

根据所述usb图像数据重构usb传输消息;

输出所述usb传输消息。

本发明还提供一种本地装置,包括:

usb图像数据获取模块,用于获取usb图像数据;

压缩数据获取模块,用于根据重定向信息,将所述usb图像数据进行压缩,获取usb图像压缩数据,所述重定向信息包括用于重定向传输数据的信息;

重定向传输消息重构模块,用于根据所述usb图像压缩数据重构usb重定向传输消息;

发送模块,用于将所述usb重定向传输消息发送至远程服务器。

本发明还提供一种远程服务器,包括:

usb重定向传输消息获取模块,用于接收并解析本地装置发送的usb重定向传输消息,获取所述usb重定向传输消息中的usb图像压缩数据;

解压模块,用于根据重定向信息将所述usb图像压缩数据进行解压,获取usb图像数据,所述重定向信息包括用于重定向传输数据的分辨率信息和/或图像格式信息;

重构模块,用于根据所述usb图像数据重构usb传输消息;

输出模块,用于输出所述usb传输消息。

根据本发明所提供的usb设备重定向数据传输方法,将获取到的usb图像数据根据重定向的分辨率信息和/或图像格式信息等进行压缩后,重构usb重定向传输消息,并发送给远程服务器,通过重构的usb重定向传输消息中携带的压缩后的图像信息,提高了图像信息在usb终端获取的图像数据在usb重定向传输网络中的传输速率,并且可以与usb视频设备进行无缝对接。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1为本发明方法实施例1的本地装置侧usb设备重定向数据传输方法的流程图;

图2为本发明方法实施例2的本地装置侧获取应用层数据的,usb设备重定向数据传输方法的流程图;

图3为本发明方法实施例3的本地装置侧获取usb传输消息的,usb设备重定向数据传输方法的流程图;

图4为本发明方法实施例4的本地装置侧对图像数据拼接后再压缩的,usb设备重定向数据传输方法的流程图;

图5为本发明方法实施例5的本地装置侧对分辨率进行设置的,usb设备重定向数据传输方法的流程图;

图6为本发明方法实施例6的本地装置侧对usb设备的显示信息进行修改的,usb设备重定向数据传输方法的流程图;

图7为本发明方法实施例7的远程服务器侧usb设备重定向数据传输方法的流程图;

图8为本发明方法实施例8的远程服务器侧对分辨率进行设置的,usb设备重定向数据传输方法的流程图;

图9为本发明方法实施例9的本地装置的结构示意图;

图10为本发明方法实施例10的远程服务器的结构示意图;

图11为本发明方法实施例11的usb设备重定向数据传输方法的流程图;

图12为本发明方法实施例12的usb设备重定向数据传输方法中传输压缩盒参数调整的流程图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

图1为本发明方法实施例1的本地装置侧usb设备重定向数据传输方法的流程图,如图1所示的实施例1的本地装置侧usb设备重定向数据传输方法,包括:

步骤100,获取usb图像数据。

具体地,所述usb图像数据,包括视频数据、拍照数据等。所述获取usb图像数据,包括解析usb传输消息中的图像数据,还包括从usb终端的上层应用程序中直接获取图像数据。

步骤200,根据重定向信息,将所述usb图像数据进行压缩,获取usb图像压缩数据,所述重定向信息包括用于重定向传输数据的信息。

具体地,在将usb终端进行重定向的应用中,利用一个本地装置与所述usb终端进行连接后,获取usb图像数据,再通过所述本地装置与远程服务器的连接,将所述获取到的usb图像数据传送至远程服务器中的操作系统后,由操作系统进行响应,为用户提供服务。所述重定向信息,包括将所述usb图像数据传送至所述远程服务器时,用于重定向传输数据的分辨率信息和/或图像格式信息,包括:接口序列号、格式序列号、帧序列号、分辨率宽与高的关系,usb视频设备格式/分辨率参数、最高分辨率、目标分辨率、最低分辨率、默认分辨率、锚定分辨率其中的一种或任意组合。

将所述usb图像数据按照所述重定向信息中设定的相关分辨率进行压缩,以对运动图像进行压缩为例,如果所述重定向信息中设定为锚定分辨率(将高分辨率视频缩放或将低分辨率扩放为该锚定分辨率)时,需要将所述usb图像数据进行缩放或扩放再传入运动图像压缩编码算法接口,进行压缩,压缩后的数据为usb图像压缩数据。

优选的,所述重定向信息包括:用于重定向传输数据的分辨率信息和/或图像格式信息。

步骤300,根据所述usb图像压缩数据重构usb重定向传输消息。

具体地,优选的,所述usb重定向传输消息包括:usb重定向同步传输消息或usb重定向批量传输消息。

所述usb重定向传输消息包括usb消息中的:同步传输消息(isochronoustransferin的返回结果)或批量传输消息(bulktransferin返回结果)。

所述根据所述usb图像压缩数据进行重构,当所述获取到usb图像数据为解析usb传输消息中的图像数据时,所述重构usb重定向传输消息,包括将同步传输消息(isochronoustransferin的返回结果)或批量传输消息(bulktransferin返回结果)中的图像数据替换为压缩后的图像数据;

当所述获取到usb图像数据为从usb终端的上层应用程序中直接获取图像数据时,需要根据所述同步传输消息(isochronoustransferin的返回结果)或批量传输消息(bulktransferin返回结果)的消息格式,将所述usb图像压缩数据放入相应的字段后,重构所述同步传输消息(isochronoustransferin的返回结果)或批量传输消息(bulktransferin返回结果)。

在其中一个实施例中,所述根据所述usb图像压缩数据和usb传输消息格式,重构所述usb重定向传输消息,包括:获取所述usb传输消息格式;

将所述usb图像压缩数据封装于所述usb传输消息格式中用于传输数据包的字段,获取所述usb重定向传输消息。

步骤400,将所述usb重定向传输消息发送至远程服务器。

具体地,将重构的usb重定向传输消息压入待发送队列后,发送至远程服务器,完成usb图像数据的传送。

在实际应用中,可以通过设置待压缩队列和待发送队列的方式实现usb图像数据的压缩和发送,将所述usb图像数据压入待压缩队列,置位通知数据到达信号,并从后续的待发送队列中取得新的结果覆盖当前结果,如果待发送队列为空,则将当前结果中内容置空并将返回长度置零,并将最后的结果转发,同时另一线程收到数据到达信号后,处理待压缩队列中数据。

本实施例所提供的usb设备重定向数据传输方法,将获取到的usb图像数据根据重定向的分辨率信息和/或图像格式信息等进行压缩后,重构usb重定向传输消息,并发送给远程服务器,通过重构的usb重定向传输消息中携带的压缩后的图像信息,提高了图像信息在usb终端获取的图像数据在usb重定向传输网络中的传输速率,由于重构了usb传输消息,可以与usb视频设备进行无缝对接。

本发明还提供一个实施例为当用户操作远程服务器侧的应用程序进行拍照时,在根据重定向信息,将所述usb图像数据进行压缩,获取usb图像压缩数据的步骤之前,所述方法还包括:接收拍照信息;所述根据重定向信息,将所述usb图像数据进行压缩,获取usb图像压缩数据,还包括:根据重定向信息、所述拍照信息,将所述usb图像数据进行压缩,获取usb图像压缩数据。

具体地,接收到的所述拍照信息,包括接收到videostreamingrequests-stillimagetriggercontrol消息,如果使用的usb终端为摄像头,其获取拍照信息的方式包括从usb图像信息中,提取相应的图像作为拍照结果,其后续的流程同上述实施例1。远程服务器侧,也根据相应的流程进行解析后,提取拍照信息即可。

在本实施例中,通过对接收到的拍照信息,对usb图像数据进行压缩后重构usb传输消息,实现了对于usb图像数据进行拍照信息的获取,提高了本发明所提供的usb设备重定向数据传输方法的实用性,并提高了拍照信息的传送效率。

图2为本发明方法实施例2的本地装置侧获取应用层数据的,usb设备重定向数据传输方法的流程图,如图2所示的本发明方法实施例2的本地装置侧获取应用层数据的,usb设备重定向数据传输方法,包括:

步骤100a,接收并解析usb终端的应用层数据,获取usb图像数据。

具体地,在usb终端的实际使用过程中,通过应用程序调用所述usb终端后获取图像数据的方式比较普遍,而通过所述的应用程序不能直接获取所述usb终端的usb传输消息,从而解析出所述usb传输消息中的图像数据,可以通过所述应用程序直接获取到usb终端的usb图像数据。

步骤200a,根据重定向信息,将所述usb图像数据进行压缩,获取usb图像压缩数据。

具体地,同实施例1的步骤200。且所述重定向信息中,包括usb终端的设备信息等,在后续的usb传输消息重构的步骤中需要使用到的各种信息。所述重定向信息的获取,可以通过预先设定的方式,也可以通过当所述usb终端插入时进行获取。

步骤300a,根据所述usb图像压缩数据和usb传输消息格式,重构所述usb重定向传输消息,所述usb重定向传输消息包括同步传输消息或批量传输消息。

具体地,由于不是通过解析usb传输消息的方式获取到的usb图像数据,因此,需要根据usb传输消息格式,将所述压缩后的usb图像压缩数据填入,重构一个usb传输消息。

步骤400a,将所述usb重定向传输消息发送至远程服务器。

具体地,同实施例1的步骤400。

在本实施例中,通过usb终端的上层应用程序,直接获取图像数据,进行压缩后,根据usb传输消息的消息格式,填入所述压缩后的图像数据,重构usb传输消息,将usb图像数据传送至远程服务器,由于进行了图像数据的压缩,使得usb重定向传输数据传输图像数据的效率大大提供,又由于usb消息的重构,在本地装置和远程服务器之间,采用usb消息进行交互,使得用户可以通过远程服务器直接无缝操作使用连接至本地装置上的usb终端,而不用再通过其他的协议进行转换,也解决了不能直接操作usb终端的问题。

图3为本发明方法实施例3的本地装置侧获取usb传输消息的,usb设备重定向数据传输方法的流程图,如图3所示的本发明方法实施例3的本地装置侧获取usb传输消息的,usb设备重定向数据传输方法,包括:

步骤100b,接收并解析所述usb终端发送的usb传输消息,获取usb图像数据。

具体地,当所述本地装置连接了usb终端后,可通过透传所述usb终端的usb消息的方式,与远程服务器进行通信。在接收到的usb终端发送的usb传输消息后,解析所述usb传输消息,并获取其中的图像数据。

步骤200b,根据重定向信息,将所述usb图像数据进行压缩,获取usb图像压缩数据。

具体地,同实施例1的步骤200。且所述重定向信息中,包括usb终端的设备信息等,在后续的usb传输消息重构的步骤中需要使用到的各种信息。所述重定向信息的获取,可以通过预先设定的方式,也可以通过当所述usb终端插入时进行获取。

步骤300b,将所述usb传输消息中的所述usb图像数据替换为所述usb图像压缩数据,重构所述usb重定向传输消息,所述usb重定向传输消息包括同步传输消息或批量传输消息。

具体地,由于压缩前的图像数据,是从接收到的usb终端发送的usb传输消息中获取到的,因此,在重构所述usb重定向传输消息时,可以通过将所述usb传输消息中的压缩前的图像数据,替换为压缩后的图像数据的方式,对所述usb传输消息进行重构,获取usb重定向传输消息。根据需求,可以将压缩前的多个usb传输消息中的图像数据,压缩后放入重构后的一个或多个usb重定向传输消息。

步骤400b,将所述usb重定向传输消息发送至远程服务器。

具体地,同实施例1的步骤400。

在本实施例中,通过解析usb终端发送的usb传输消息,获取图像数据,进行压缩后,将所述usb传输消息中的压缩前的图像数据,替换为所述压缩后的图像数据,重构usb传输消息,再将usb图像数据传送至远程服务器,由于进行了图像数据的压缩,使得usb重定向传输数据传输图像数据的效率大大提供。

图4为本发明方法实施例4的本地装置侧对图像数据拼接后再压缩的,usb设备重定向数据传输方法的流程图,如图4所示的本发明方法实施例4的本地装置侧对图像数据拼接后再压缩的,usb设备重定向数据传输方法,包括:

步骤100c,获取usb图像数据。

具体地,同实施例1的步骤100。

步骤200c,根据所述usb图像数据和图像拼接信息,获取usb图像拼接数据,所述图像拼接信息包括所述usb图像数据拼接后的长度信息.

具体地,为了提高对图像数据的压缩效率,可以根据预设的图像拼接长度,将多个usb传输消息中的usb图像数据拼接后再进行压缩。例如,可以将usb图像数据拼满一帧后,后续进行压缩。

同理,当获取图像数据的方式为通过上层应用程序获取时,如果获取到的图像数据的可能已经为一帧图像,则可以直接进行压缩,如图像数据小于一帧,则可以拼满一帧后,进行压缩。

步骤300c,根据重定向信息,将所述usb图像拼接数据进行压缩,获取usb图像压缩数据.

具体地,同实施例1的步骤200。

步骤400c,根据所述usb图像压缩数据重构usb重定向传输消息,所述usb重定向传输消息包括同步传输消息或批量传输消息。

具体地,同实施例1的步骤300。

步骤500c,将所述usb重定向传输消息发送至远程服务器。

具体地,同实施例1的步骤400。

在本实施例在对usb图像数据进行压缩的之前,通过对图像数据进行拼接的方式,提高图像数据的压缩效率,进一步提高了usb重定向传输数据传输图像数据的效率。

图5为本发明方法实施例5的本地装置侧对分辨率进行设置的,usb设备重定向数据传输方法的流程图,如图5所示的本发明方法实施例5的本地装置侧对分辨率进行设置的,usb设备重定向数据传输方法,在实施例1的方法之后,还包括:

步骤10,接收并解析所述远程服务器发送的修改设置消息,获取所述修改设置消息的序列号和修改内容信息,所述修改内容信息包括分辨率和/或图像格式修改内容信息。

具体地,当用户需要改变分辨率时,经过远程服务器提供的应用程序的接口,将图像的显示分辨率进行更改,当用户操作摄像头播放程序界面修改分辨率时,远程服务器会发送相应的消息到本地装置,如发送videostreamingrequests-videoprobeandcommitcontrols消息。

步骤20,根据所述修改内容信息更新所述重定向信息,获取重定向更新信息。

具体地,根据所述videostreamingrequests-videoprobeandcommitcontrols消息,本地装置会修改重定向信息,修改包括:接口序列号、格式序列号、帧序列号、分辨率宽与高的关系,usb视频设备格式/分辨率参数、最高分辨率、目标分辨率、最低分辨率、默认分辨率、锚定分辨率其中的一种或任意组合,修改后获取重定向更新信息。

步骤30,将序列号大于所述修改设置消息的序列号的所述usb图像压缩数据,根据所述重定向更新信息重新进行压缩,获取usb图像压缩修改数据。

具体地,由于用户修改了分辨率,在实际的使用中,为提高用户的使用感受,通常采用将图像数据缓存后压缩和传送的方式时,缓存方式下,就需要将修改分辨率后的已经缓存好的图像数据,按照修改后的分辨率重新进行压缩和传送。具体方式包括:通过获取所述videostreamingrequests-videoprobeandcommitcontrols消息的序列号,将大于所述videostreamingrequests-videoprobeandcommitcontrols消息的序列号的已经缓存的图像数据,进行重新的压缩。

步骤40,根据所述usb图像压缩修改数据重构usb重定向传输消息,获取usb重定向传输修改消息。

具体地,根据所述重新压缩后的图像数据,重构usb重定向传输消息,所述重构usb重定向传输消息,同实施例1的步骤300。

步骤50,将所述usb重定向传输修改消息发送至远程服务器。

具体地,同实施例1的步骤400。

在本实施例中,通过获取到的远程服务器发送的分辨率设置信息,可以对重定向信息进行修改,并对已传送的图像数据进行重新压缩后,再次重构usb传输消息并传送给远程服务器后,按照用户修改后的分辨率播放,由于提供了分辨率的修改功能,本实施例可以再提高usb图像数据传送效率的同时,提供更加灵活的图像数据的播放等应用。

图6为本发明方法实施例6的本地装置侧对usb设备的显示信息进行修改的,usb设备重定向数据传输方法的流程图,如图6所示的本发明方法实施例6的本地装置侧对usb设备的显示信息进行修改的,usb设备重定向数据传输方法,包括:

步骤9a,接收并解析所述usb终端发送的插入消息,获取所述插入消息中的初始设备信息。

具体地,当usb终端首次插入本地装置时,会发送相应的插入消息,以便本地装置根据所述插入消息为usb终端建立设备对象后,安装加载相应的驱动程序后使用所述usb终端。所述插入消息包括standarddevicerequests-getdescriptor返回消息,且所述standarddevicerequests-getdescriptor返回消息中包括所述usb终端的设备类型及所述usb终端的分辨率列表信息。

步骤10a,根据所述初始设备消息和设备显示修改信息,获取设备显示信息,所述设备显示修改信息包括对所述远程服务器侧显示的所述usb终端的设备信息进行修改的信息。

具体地,所述设备显示修改信息,包括可供选择的分辨率列表,为远程服务器侧提供给用户显示的usb终端的显示分辨率信息等,为更好的利用网络传输带宽,避免不必要的大数据量的传送,当所述usb终端的分辨率过高,超出用户的使用需求时,远程服务器侧只为用户提供限定范围内的分辨率信息,避免用户选择超出使用需求的分辨率而浪费传输带宽。

当设备显示修改信息中的分辨率列表,与usb终端插入消息中提供的初始设备信息中的分辨率列表不一致时,需要将所述初始设备信息与所述设备显示修改信息中的分辨率进行对应,获取设备显示信息,并记录修改前和修改后的分辨率信息对应关系。

步骤20a,接收并解析所述远程服务器发送的修改设置消息。

具体地,同实施例5的步骤10。

步骤30a,根据所述修改设置消息、所述设备显示信息,确定所述usb终端的图像采集信息,所述图像采集信息包括采集分辨率和/或图像采集格式。

具体地,由于用户修改了分辨率,分辨率设置信息videostreamingrequests-videoprobeandcommitcontrols消息,需要将分辨率的修改传送至usb终端,以使usb终端根据新的分辨率信息采集图像数据。

例如,对设备插入消息standarddevicerequests-getdescriptor返回结果进行解析,并索引接口序列号(binterfacenumber)、格式序列号(bformatindex)、帧序列号(bframeindex)、分辨率宽(wwidth)与高(wheight)的关系,如果需要调整usb视频设备格式/分辨率参数(根据videostreaminginterfacedescriptors-payloadformatdescriptors/videoframedescriptor定义修改值)、或者降低最高分辨率(根据videostreaminginterfacedescriptors-payloadformatdescriptors/videoframedescriptor定义删除小于目标分辨率的frame并重新排序帧序列号bframeindex)、或者提高最低分辨率(根据videostreaminginterfacedescriptors-payloadformatdescriptors/videoframedescriptor定义删除大于目标分辨率的frame并重新排序帧序列号bframeindex)、或者修改默认分辨率(根据videostreaminginterfacedescriptors-payloadformatdescriptors/videoframedescriptor定义重新排序帧序列号bframeindex,将默认分辨率所在的帧videoframedescriptor排在第一位,即bframeindex为1的位置,同时修改格式payloadformatdescriptors里默认帧序号bdefaultframeindex值为1)、或者为了锚定分辨率增加高分辨率或低分辨率(根据videostreaminginterfacedescriptors-payloadformatdescriptors/videoframedescriptor定义增加目标分辨率的frame并重新排序帧序列号bframeindex)等等,也在这里对standarddevicerequests-getdescriptor返回结果进行修改,并记录索引修改后结果与修改前结果的对应关系。

步骤40a,将所述图像采集信息,发送至所述usb终端,以使所述usb终端根据所述图像采集信息调整采集图像数据的采集分辨率和/或所述图像采集格式。

在本实施例中,通过将usb终端的显示信息按照需求进行设定,并建立其与usb终端插入时给出的初始设备信息之间的对应关系,可以避免用户使用超出其需求的图像传输,从而提高传输带宽的使用效率。当用户对分辨率进行修改时,也支持修改后的分辨率与原始分辨率之间进行重新对应,提高本实施例的实用性。

本发明还提供一个实施例为:当所述usb终端中包括非重定向子装置时,根据所述usb终端的插入信息中的初始设备信息,获取所述非重定向子装置的信息,并根据所述非重定向子装置的信息,在所述usb重定向传输消息中删除所述非重定向子装置。

具体地,例如所述usb终端是带麦克风或者其他子设备的并且系统要求这些子设备不重定向时,则在standarddevicerequests-getdescriptor返回结果中找到麦克风或者其他子设备的interfaceassociationdescriptor,删除从这个interfaceassociationdescriptor开始到下一个其他设备的interfaceassociationdescriptor为止或者直到整个standarddevicerequests-getdescriptor返回结果最末尾的数据。

本实施例所提供的usb设备重定向数据传输方法,通过在重构的usb重定向传输消息中,删除非重定向子装置,满足usb终端的各种使用需求。

图7为本发明方法实施例7的远程服务器侧usb设备重定向数据传输方法的流程图,如图7所示的本发明方法实施例7的远程服务器侧usb设备重定向数据传输方法,包括:

步骤1a,接收并解析本地装置发送的usb重定向传输消息,获取所述usb重定向传输消息中的usb图像压缩数据。

具体地,通过接收并解析连接usb终端的本地装置发送的usb重定向传输消息,获取其中经过压缩的usb图像压缩数据。

步骤2a,根据重定向信息将所述usb图像压缩数据进行解压,获取usb图像数据,所述重定向信息包括用于重定向传输数据的分辨率信息和/或图像格式信息。

具体地,根据重定向信息,将所述usb图像压缩数据进行解压,且所述重定向信息与本地终端中的重定向信息相同,与本地装置中的重定向信息保持实时同步,其存放方式可分别存放于本地装置与远程服务器,也可存放于一个存储介质中,供双方读取。

步骤3a,根据所述usb图像数据重构usb传输消息。

具体地,将解压出来的usb图像数据,重构usb传输消息,所述usb传输消息,包括同步传输消息或批量传输消息。因此,当本地装置获取所述图像数据的方式为直接接收所述usb终端发送的usb传输消息时,远程服务器重构出的所述usb传输消息,重现了本地装置测的usb传输消息。当本地装置获取所述图像数据的方式为接收并解析usb终端的应用层数据时,远程服务器重构出的所述usb传输消息,能够与所述usb终端无缝对接。

步骤4a,输出所述usb传输消息。

具体地,输出所述usb传输消息后,传送给所述远程服务器上的usb设备驱动,供所述usb设备驱动播放所述usb传输消息中的图像数据。

本实施例所提供的远程服务器侧usb设备重定向数据传输方法,将接收到的usb重定向传输消息,按照与本地装置相同的重定向信息进行解压后,获取usb图像数据并进行输出,通过重构的usb重定向传输消息中携带的压缩后的图像信息,提高了图像信息在usb终端获取的图像数据在usb重定向传输网络中的传输速率,由于重构了usb传输消息,可以与usb视频设备进行无缝对接。

图8为本发明方法实施例8的远程服务器侧对分辨率进行设置的,usb设备重定向数据传输方法的流程图,如图8所示的本发明方法实施例8的远程服务器侧对分辨率进行设置的,usb设备重定向数据传输方法,包括:

步骤1b,接收修改内容信息,并根据所述修改内容信息更新所述重定向信息,获取重定向更新信息,所述修改内容信息包括分辨率和/或图像格式修改信息。

具体地,当用户需要修改分辨率信息时,所述远程服务器的应用程序会接收到用户输入的分辨率设置信息。具体描述同实施例5步骤10。

步骤2b,根据所述修改内容信息生成修改设置消息发送至所述本地装置。

步骤3b,接收并解析所述本地装置发送的usb重定向传输修改消息,获取所述usb重定向传输修改消息中的usb图像压缩修改数据。

具体地,接收所述本地装置发送的进行了分辨率修改后的usb重定向传输修改消息,解析后获取其中的usb图像压缩数据。

步骤4b,根据所述重定向更新信息将所述usb图像压缩修改数据进行解压,获取usb图像数据。

步骤5b,根据所述usb图像数据重构usb传输消息。

具体地,同实施例8的步骤3a。

步骤6b,输出所述usb传输消息。

具体地,同实施例8的步骤4a。

在本实施例中,通过获取的分辨率设置信息,远程服务器可以对重定向信息进行修改,并发送至本地装置对已传送的图像数据进行重新压缩后,再次重构usb传输消息并传送给远程服务器,远程服务器按照用户修改后的分辨率播放,由于提供了分辨率的修改功能,本实施例可以再提高usb图像数据传送效率的同时,提供更加灵活的图像数据的播放等应用。

图9为本发明方法实施例9的本地装置的结构示意图,如图9所示的本发明实施例9的本地装置包括:

usb图像数据获取模块100,用于获取usb图像数据;包括第一usb图像数据获取单元,用于接收并解析usb终端的应用层数据,获取usb图像数据;包括第二usb图像数据获取单元,用于接收并解析所述usb终端发送的usb传输消息,获取usb图像数据。

压缩数据获取模块200,用于根据重定向信息,将所述usb图像数据进行压缩,获取usb图像压缩数据,所述重定向信息包括用于重定向传输数据的分辨率信息和/或图像格式信息;还用于根据重定向信息,将所述usb图像拼接数据进行压缩,获取usb图像压缩数据;还用于将序列号大于所述修改设置消息的序列号的所述usb图像压缩数据,根据所述重定向更新信息重新进行压缩,获取usb图像压缩修改数据。

重定向传输消息重构模块300,用于根据所述usb图像压缩数据重构usb重定向传输消息,所述usb重定向传输消息包括同步传输消息或批量传输消息;包括第一重定向传输消息重构单元,用于根据所述usb图像压缩数据和usb传输消息格式,重构所述usb重定向传输消息;包括第二重定向传输消息重构单元,用于将所述usb传输消息中的所述usb图像数据替换为所述usb图像压缩数据,重构所述usb重定向传输消息;还用于根据所述usb图像压缩修改数据重构usb重定向传输消息,获取usb重定向传输修改消息。

发送模块400,用于将所述usb重定向传输消息发送至远程服务器;将所述usb重定向传输修改消息发送至远程服务器;还用于将所述图像采集信息,发送至所述usb终端,以使所述usb终端根据所述图像采集信息调整采集图像数据的采集分辨率和/或所述图像采集格式。

图像拼接模块500,用于根据所述usb图像数据和图像拼接信息,获取usb图像拼接数据,所述图像拼接信息包括所述usb图像数据拼接后的长度信息。

修改设置消息获取模块100b,用于接收并解析所述远程服务器发送的修改设置消息,获取所述修改设置消息的序列号和修改内容信息,所述修改内容信息包括分辨率和/或图像格式修改内容信息。

重定向更新信息获取模块200b,用于根据所述修改内容信息更新所述重定向信息,获取重定向更新信息。

初始设备信息获取模块100a,用于接收并解析所述usb终端发送的插入消息,获取所述插入消息中的初始设备信息。

设备显示信息获取模块200a,用于根据所述初始设备消息和设备显示修改信息,获取设备显示信息,所述设备显示修改信息包括对所述远程服务器侧显示的所述usb终端的设备信息进行修改的信息。

图像采集信息获取模块300a,用于根据所述修改设置消息、所述设备显示信息,确定所述usb终端的图像采集信息,所述图像采集信息包括采集分辨率和/或图像采集格式。

在本发明提供的一个实施例中,上述的功能模块可以根据硬件设置的需求,进行整合,其中:所述usb图像数据获取模块100、所述压缩数据获取模块200、所述图像拼接模块500、所述分辨率设置信息获取模块100b、所述重定向更新信息获取模块200b、所述初始设备信息获取模块100a、所述设备显示信息获取模块200a、所述图像采集分辨率获取模块300a,在实际中的功能通常由内核模块2完成;所述发送模块400的功能由终端重定向—通信模块4完成;所述重定向传输消息重构模块300的功能由终端重定向—缓存压缩重构模块3完成;且所述终端重定向—缓存压缩重构模块3可以独立于终端重定向—通信模块4,也可以将两者合并设置为一个功能模块;为最大程度的保留现有的功能结构,可将所述终端重定向—缓存压缩重构模块3单独连接至所述终端重定向—通信模块4。另外,usb视频终端1与所述内核模块2连接。

本实施例所提供的本地装置,将获取到的usb图像数据根据重定向的分辨率信息等进行压缩后,重构usb重定向传输消息,并发送给远程服务器,通过重构的usb重定向传输消息中携带的压缩后的图像信息,提高了图像信息在usb终端获取的图像数据在usb重定向传输网络中的传输速率,由于重构了usb传输消息,可以与usb视频设备进行无缝对接。

图10为本发明方法实施例10的远程服务器的结构示意图,如图10所示的本发明方法实施例10的远程服务器,包括:

usb重定向传输消息获取模块10,用于接收并解析本地装置发送的usb重定向传输消息,获取所述usb重定向传输消息中的usb图像压缩数据;还用于接收并解析所述本地装置发送的usb重定向传输修改消息,获取所述usb重定向传输修改消息中的usb图像压缩修改数据。

解压模块20,用于根据重定向信息将所述usb图像压缩数据进行解压,获取usb图像数据,所述重定向信息包括用于重定向传输数据的分辨率信息和/或图像格式信息;还用于根据所述重定向更新信息将所述usb图像压缩修改数据进行解压,获取usb图像数据。

重构模块30,用于根据所述usb图像数据重构usb传输消息;

输出模块40,用于输出所述usb传输消息。

重定向更新信息获取模块50,用于接收修改内容信息,并根据所述修改内容信息更新所述重定向信息,获取重定向更新信息,所述修改内容信息包括分辨率和/或图像格式修改信息。

发送模块60,用于根据所述修改内容信息生成修改设置消息发送至所述本地装置。

本实施例所提供的远程服务器,将接收到的usb重定向传输消息,按照与本地装置相同的重定向信息进行解压后,获取usb图像数据并进行输出,通过重构的usb重定向传输消息中携带的压缩后的图像信息,提高了图像信息在usb终端获取的图像数据在usb重定向传输网络中的传输速率,由于重构了usb传输消息,可以与usb视频设备进行无缝对接。

在本发明提供的一个实施例中,上述的功能模块可以根据硬件设置的需求,进行整合,其中:所述usb重定向传输消息获取模块10、所述发送模块50的功能由重定向服务通信模块5完成;所述解压模块20的功能由重定向服务—缓存解压还原模块6完成;所述重定向更新信息获取模块40的功能由设备映射内核(驱动)模块7完成,所述播放模块30的功能由用户应用(层)程序9完成;且所述远程服务器还包括(上层)设备驱动程序8,用于加载所述usb视频设备的驱动程序。

图11为本发明方法实施例11的usb设备重定向数据传输方法的流程图,如图11所示的本发明方法实施例11的usb设备重定向数据传输方法,包括:

步骤1:终端重定向—缓存压缩重构模块3得到系统通知设备插入事件后,获取设备信息发送到重定向服务—通信模块4;

步骤2:重定向服务—通信模块4将系统通知设备插入事件与设备信息一起发送到设备映射内核模块7;

步骤3:设备映射内核模块7据此创建设备对象;

步骤4:远程服务器操作系统(设备驱动程序8)为此设备对象安装加载设备驱动程序;

步骤5:系统加载设备驱动程序8会对设备映射内核模块7请求standarddevicerequests-getdescriptor;

步骤6:设备映射内核模块7将standarddevicerequests-getdescriptor请求转发给重定向服务—通信模块5;

步骤7:重定向服务—通信模块5将standarddevicerequests-getdescriptor请求转发给重定向服务—缓存解压还原模块6;

步骤8:重定向服务—缓存解压还原模块6记录控制请求类型及其序列号(该记录用于定位该请求响应结果),然后将standarddevicerequests-getdescriptor请求返回重定向服务—通信模块5;

步骤9:重定向服务—通信模块5将standarddevicerequests-getdescriptor请求转发给终端重定向—通信模块4;

步骤10:终端重定向—通信模块4将standarddevicerequests-getdescriptor请求转发给终端重定向—缓存压缩重构模块6;

步骤11:终端重定向—缓存压缩重构模块6记录控制请求类型及其序列号(该记录用于定位该请求响应结果),然后将standarddevicerequests-getdescriptor请求返回终端重定向—通信模块4;

步骤12:如果采用usb透传模式,终端重定向—通信模块4将standarddevicerequests-getdescriptor请求转发给内核模块2;否则,终端重定向—通信模块4将获取设备属性、分辨率列表等信息,根据usb协议与usb视频设备协议自已构造standarddevicerequests-getdescriptor返回结果,跳转步骤16;

步骤13:内核模块2将standarddevicerequests-getdescriptor请求提交设备硬件usb视频设备1;

步骤14:设备硬件usb视频设备1响应请求,内核模块2获取到返回结果;

步骤15:内核模块2将standarddevicerequests-getdescriptor返回结果转发给终端重定向—通信模块4;

步骤16:终端重定向—通信模块4将standarddevicerequests-getdescriptor返回结果转发给终端重定向—缓存压缩重构模块3;

步骤17:终端重定向—缓存压缩重构模块3依据前述记录判断该返回结果为standarddevicerequests-getdescriptor返回结果,然后对其进行解析,并索引接口序列号(binterfacenumber)、格式序列号(bformatindex)、帧序列号(bframeindex)、分辨率宽(wwidth)与高(wheight)的关系,如果需要调整usb视频设备格式/分辨率参数(根据videostreaminginterfacedescriptors-payloadformatdescriptors/videoframedescriptor定义修改值)、或者降低最高分辨率(根据videostreaminginterfacedescriptors-payloadformatdescriptors/videoframedescriptor定义删除小于目标分辨率的frame并重新排序帧序列号bframeindex)、或者提高最低分辨率(根据videostreaminginterfacedescriptors-payloadformatdescriptors/videoframedescriptor定义删除大于目标分辨率的frame并重新排序帧序列号bframeindex)、或者修改默认分辨率(根据videostreaminginterfacedescriptors-payloadformatdescriptors/videoframedescriptor定义重新排序帧序列号bframeindex,将默认分辨率所在的帧videoframedescriptor排在第一位,即bframeindex为1的位置,同时修改格式payloadformatdescriptors里默认帧序号bdefaultframeindex值为1)、或者为了锚定分辨率增加高分辨率或低分辨率(根据videostreaminginterfacedescriptors-payloadformatdescriptors/videoframedescriptor定义增加目标分辨率的frame并重新排序帧序列号bframeindex)等等,也在这里对standarddevicerequests-getdescriptor返回结果进行修改,并记录索引修改后结果与修改前结果的对应关系,如果该摄像头是带麦克风或者其他子设备的并且系统要求这些子设备不重定向时,则在standarddevicerequests-getdescriptor返回结果中找到麦克风或者其他子设备的interfaceassociationdescriptor,删除从这个interfaceassociationdescriptor开始到下一个其他设备的interfaceassociationdescriptor为止或者直到整个standarddevicerequests-getdescriptor返回结果最末尾的数据,将最后的结果转发给终端重定向通信模块;

步骤18:终端重定向—通信模块4将收到的standarddevicerequests-getdescriptor结果转发给重定向—服务通信模块5;

步骤19:重定向—服务通信模块5将收到的standarddevicerequests-getdescriptor结果转发给重定向—服务缓存解压还原模块6;

步骤20:重定向服务—缓存解压还原模块6解析收到的standarddevicerequests-getdescriptor结果,并索引接口序列号(binterfacenumber)、格式序列号(bformatindex)、帧序列号(bframeindex)、分辨率宽(wwidth)与高(wheight)的关系,然后将结果返回给重定向服务—通信模块5;

步骤21:重定向服务—通信模块5将收到的standarddevicerequests-getdescriptor结果转发给设备映射内核模块7;

步骤22:设备映射内核模块7将收到的standarddevicerequests-getdescriptor结果提交给系统设备驱动程序8。

图12为本发明方法实施例12的usb设备重定向数据传输方法中传输压缩和参数调整的流程图,如图12所示的本发明方法实施例12的usb设备重定向数据传输方法中传输压缩和参数调整的流程包括:

步骤10:终端重定向通信模块调用终端重定向缓存压缩重构模块创建函数,并传入usb视频设备标识,初始化终端重定向缓存压缩重构模块usb视频设备标识相关变量(待压缩队列、待发送队列、通知数据到达信号、线程退出信号等),并为该设备创建处理线程,返回成功或失败;

步骤20:终端重定向通信模块调用终端重定向缓存压缩重构模块执行函数,并传入usb视频设备标识、数据与控制信息。

步骤31:终端重定向缓存压缩重构模块检查数据与控制信息是否为standarddevicerequests-getdescriptor请求,如果是则记录usb视频设备标识、控制请求类型及其序列号然后直接返回终端重定向通信模块。

步骤32:否则检查数据与控制信息是否为videostreamingrequests-videoprobeandcommitcontrols请求,如果是则记录usb视频设备标识、控制请求类型及其序列号;如果standarddevicerequests-getdescriptor结果前面被修改过,此时还需要根据standarddevicerequests-getdescriptor结果修改后与修改前对应关系的记录索引,将videostreamingrequests-videoprobeandcommitcontrols请求中格式序列号(bformatindex)和帧序列号(bframeindex)调整回standarddevicerequests-getdescriptor修改前结果中记录的对应值;如果系统为锚定分辨率(将高分辨率视频缩放或者将低分辨率视频扩放为该锚定分辨率)时,则此时需要需要根据standarddevicerequests-getdescriptor结果中接口序列号(binterfacenumber)、格式序列号(bformatindex)、帧序列号(bframeindex)、分辨率宽(wwidth)与高(wheight)的索引关系,将videostreamingrequests-videoprobeandcommitcontrols请求中格式序列号(bformatindex)和帧序列号(bframeindex)调整回standarddevicerequests-getdescriptor结果中锚定分辨率对应的值,然后直接返回终端重定向通信模块。

步骤33:否则检查数据与控制信息是否为其他请求,如果是则直接返回终端重定向通信模块。

步骤34:否则依据前述usb视频设备标识、控制请求类型及其序列号记录,检查数据与控制信息是否为standarddevicerequests-getdescriptor返回结果,如果是则然后对其进行解析,并索引接口序列号(binterfacnumber)、格式序列号(bformatindex)、帧序列号(bframeindex)、分辨率宽(wwidth)与高(wheight)的关系,如果需要调整usb视频设备格式/分辨率参数,则根据videostreaminginterfacedescriptors-payloadformatdescriptors/videoframedescriptor定义修改值;如果需要降低最高分辨率,则根据videostreaminginterfacedescriptors-payloadformatdescriptors/videoframedescriptor定义删除小于目标分辨率的frame并重新排序帧序列号bframeindex;如果需要提高最低分辨率,则根据videostreaminginterfacedescriptors-payloadformatdescriptors/videoframedescriptor定义删除大于目标分辨率的frame并重新排序帧序列号bframeindex;如果需要修改默认分辨率,则根据videostreaminginterfacedescriptors-payloadformatdescriptors/videoframedescriptor定义重新排序帧序列号bframeindex,将默认分辨率所在的帧videoframedescriptor排在第一位,即bframeindex为1的位置,同时修改格式payloadformatdescriptors里默认帧序号bdefaultframeindex值为1,并记录索引修改后结果与修改前结果的对应关系;如要需要为了锚定分辨率增加高分辨率或低分辨率,则根据videostreaminginterfacedescriptors-payloadformatdescriptors/videoframedescriptor定义增加目标分辨率的frame并重新排序帧序列号bframeindex;,如果该摄像头是带麦克风或者其他子设备的并且系统要求这些子设备不重定向时,则在standarddevicerequests-getdescriptor返回结果中找到麦克风或者其他子设备的interfaceassociationdescriptor,删除从这个interfaceassociationdescriptor开始到下一个其他设备的interfaceassociationdescriptor为止或者直到整个standarddevicerequests-getdescriptor返回结果最末尾的数据,然后返回终端重定向通信模块。

步骤35:否则依据前述usb视频设备标识、控制请求类型及其序列号记录,检查数据与控制信息是否为videostreamingrequests-videoprobeandcommitcontrols返回结果,如果是则对其进行解析,如果该结果为失败则查找相应记录并删除,然后返回终端重定向通信模块。

步骤36:否则检查数据与控制信息是否为从videostreaminginterface返回的isochronoustransferin或者bulktransferin结果,如果是则将结果复制并压入usb视频设备标识相应的待压缩队列,置位通知数据到达信号,并从usb视频设备标识相应的待发送队列中取得新的结果覆盖当前结果,如果待发送队列为空则将当前结果中内容置空并将返回长度置零,然后返回终端重定向通信模块。

否则直接返回终端重定向通信模块。

步骤40:usb视频设备标识相应的处理线程收到数据到达信号后,处理待压缩队列中数据,将streamheader后的视频数据拼接起来,当拼接的视频数据满一帧后传入运动图像压缩编码算法接口,如果系统为锚定分辨率(将高分辨率视频缩放或者将低分辨率视频扩放为该锚定分辨率)时,则将拼接的一帧视频数据进行缩放或扩放再传入运动图像压缩编码算法接口,将压缩后的视频数据与保存的streamheader(sti置位零)一起重新构造成新的结果并压入待发送队列,当待压缩队列中取得的结果数据序列号大于videostreamingrequests-videoprobeandcommitcontrols记录序列号时,代表分辨率或格式已修改,将待压缩队列与待发送队列清空,重新使用新参数(如videostreamingrequests-videoprobeandcommitcontrols请求中格式序列号bformatindex和帧序列号bframeindex在standarddevicerequests-getdescriptor结果中记录对应的分辨率宽wwidth与高wheight等)调用运动图像压缩编码算法,以产生新格式或新分辨率的压缩数据,然后清除videostreamingrequests-videoprobeandcommitcontrols记录。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:rom、ram、磁盘或光盘等。

总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1