掌桥专利:专业的专利平台
掌桥专利
首页

本申请是申请日为2020年4月14日、申请号为202080035996.3、发明名称为“用于虚拟桌面底层结构解决方案的自适应实时通信插件”的发明专利申请的分案申请。

背景技术

虚拟化技术从客户端计算设备中抽象出桌面操作系统(OS)和相关联的应用,客户端计算设备被用于访问桌面操作系统(OS)和相关联的应用。例如,虚拟桌面底层结构解决方案(VDI)可以涉及在数据中心的服务器上托管桌面并且通过网络向客户端计算设备递送桌面的图像。然后可以在客户端计算设备上渲染桌面图像,并且客户端计算设备的用户可以直接与图像交互,就好像桌面及其应用在客户端计算设备上本地运行一样。

这种方法使得客户能够通过将用户桌面合并和集中化来精简管理和成本。集中化的好处包括硬件资源优化、软件维护减少和安全性提高。例如,可以在一个实例中针对所有用户应用和测试软件补丁和操作系统迁移。此外,软件资产被集中化,并且因此易于被监控和保护,并且在桌面丢失或被盗的情况下,敏感数据不会受到损害。此外,桌面虚拟化提高了用户从任何地方和任何设备访问虚拟桌面的移动性和自由度。

尽管虚拟化技术提供了许多好处,但是一些应用可能没有针对VDI环境进行优化或者没有在其中得到很好的支持。一个这样的示例是在VDI环境中运行的通信应用,其支持用户之间的实时通信(RTC)(例如

发明内容

本发明内容被提供来以简化形式介绍在下面的具体实施方式中进一步描述的一系列概念。本发明内容不旨在标识要求保护的主题的关键特征或必要特征,也不旨在被用于限制要求保护的主题的范围。

本文描述了用于提高在客户端计算设备上执行的远程桌面客户端的性能以呈现在云计算环境中远程执行的通信应用的用户界面(UI)的方法、系统和计算机程序产品。在实施例中,该方法、系统和计算机程序产品使得远程桌面客户端不是经由远程执行的通信应用而是能够以对等的方式实施与远程计算设备的音频和/或视频通信。进一步根据这种实施例,该方法、系统和计算机程序产品使得远程桌面客户端能够确定客户端计算设备的一种或多种基于硬件的媒体处理能力,并且在实施与远程计算设备的对等音频和/或视频通信时利用这样的一种或多种基于硬件的媒体处理能力,这可以提高这种音频和/或视频通信的质量并且减少客户端计算设备上的处理负担。一种或多种基于硬件的媒体处理能力(例如,可以被用来处理从远程计算设备接收的媒体以用于客户端计算设备渲染)处理从客户端计算设备的媒体源捕获的媒体以传送到远程计算设备,或者作为与远程计算设备协商媒体通信参数的基础。

下面参照附图详细描述本发明的进一步特征和优点,以及各种实施例的结构和操作。需要说明的是,实施例不限于本文描述的具体实施例。这种实施例在本文中仅出于说明的目的而被呈现。基于本文包含的教导,其他实施例对于(多个)相关领域的技术人员将是明显的。

附图说明

并入本文并且形成说明书一部分的附图图示了本申请的实施例,并且与说明书一起进一步用于解释实施例的原理并且使得相关领域的人员能够制作和使用实施例。

图1描绘了根据示例实施例的用于经由在云计算环境中执行的通信应用来实现视频和/或音频通信的示例系统的框图。

图2描绘了根据示例实施例的示例系统的框图,该系统用于在客户端计算设备和远程计算设备之间实现对等音频和/或视频通信,而不是经由通信应用在它们之间实现音频和/或视频通信。

图3描绘了根据示例实施例的包括插件的示例系统的框图,为了实现客户端计算设备和远程计算设备之间的对等音频和/或视频通信,该插件使得能够重定向来自通信应用的通信。

图4描绘了根据另一示例实施例的包括对远程桌面客户端的插件的客户端计算设备的框图,该插件确定客户端计算设备的基于硬件的媒体处理能力并且使用检测的基于硬件的媒体处理能力以处理媒体。

图5示出了根据示例实施例的用于确定客户端计算设备的基于硬件的媒体处理能力并且使用检测到的基于硬件的媒体处理能力以处理媒体的方法的流程图。

图6示出了根据示例实施例的用于基于确定的客户端计算设备的基于硬件的媒体处理能力以与远程计算设备协商媒体通信参数的方法的流程图。

图7示出了根据示例实施例的用于确定客户端计算设备的基于硬件的媒体处理能力并且使用基于硬件的媒体处理能力以处理从客户端计算设备的媒体源捕获的媒体的方法的流程图。

图8是可以被用来实现各种实施例的示例基于处理器的计算机系统的框图。

从下面结合附图进行的详细描述中,本发明的特征和优点将变得更加明显,在附图中,相同的参考标记始终标识对应的元件。在附图中,相似的附图标记通常指示相同、功能相似和/或结构相似的元件。元件第一次出现的附图由对应的附图标记中最左边的数字来指示。

具体实施方式

一、简介

本说明书和附图公开了结合本发明的特征的一个或多个实施例。本发明的范围不限于所公开的实施例。所公开的实施例仅用于举例说明本发明,并且所公开的实施例的修改形式也被本发明所涵盖。本发明的实施例由所附权利要求限定。

说明书中对“一个实施例(one embodiment)”、“一实施例(an embodiment)”、“示例实施例”等的引用指示所描述的实施例可以包括特定的特征、结构或特性,但是每个实施例可以不必包括特定的特征、结构或特性。此外,这样的短语不必指代相同的实施例。此外,当结合实施例描述特定的特征、结构或特性时,无论是否明确描述,都可以认为结合其他实施例来影响这样的特征、结构或特性在本领域技术人员的知识范围内。

在讨论中,除非另有说明,否则诸如“基本上”和“大约”的形容词修饰本公开实施例的一个或多个特征的条件或关系特性,应被理解为意指条件或特性被限定在对于其预期应用的实施例的操作可接受的公差内。

多个示例性实施例被描述如下。应该注意的是,本文提供的任何节/小节标题并非旨在是限制性的。贯穿本文档描述了实施例,并且任何类型的实施例都可以被包括在任何节/小节下。此外,在任何节/小节中公开的实施例可以以任何方式与在相同节/小节和/或不同节/小节中描述的任何其他实施例组合。

二、示例实施例

虚拟化技术从客户端计算设备中抽象出桌面操作系统(OS)和相关联的应用,客户端计算设备被用于访问桌面操作系统(OS)和相关联的应用。例如,虚拟桌面底层结构解决方案(VDI)可以涉及在数据中心的服务器上托管桌面并且通过网络向客户端计算设备递送桌面的图像。然后可以在客户端计算设备上渲染桌面图像,并且客户端计算设备的用户可以直接与图像交互,就好像桌面及其应用在客户端计算设备上本地运行一样。

这种方法使得客户能够通过将用户桌面合并和集中化来精简管理和成本。集中化的好处包括硬件资源优化、软件维护减少和安全性提高。例如,可以在一个实例中针对所有用户应用和测试软件补丁和操作系统迁移。此外,软件资产被集中化,并且因此易于被监控和保护,并且在桌面丢失或被盗的情况下,敏感数据不会受到损害。此外,桌面虚拟化提高了用户从任何地方和任何设备访问虚拟桌面的移动性和自由度。

尽管虚拟化技术提供了许多好处,但是一些应用可能没有针对VDI环境进行优化或者没有在其中得到很好的支持。一个这样的示例是在VDI环境中运行的通信应用,其支持用户之间的实时通信(RTC)(例如

例如,图1描绘了用于经由在云计算环境中执行的通信应用来实现视频和/或音频通信的示例系统100的框图。如图1中所示,系统100包括云计算环境102,其包括虚拟桌面主机104、客户端设备112和远程计算设备114。

出于说明的目的,云计算环境102被示为仅包括单个虚拟桌面主机104,但是可以包括任何数目的资源。例如,云计算环境102可以由在一个或多个云数据中心内和/或关于企业或组织本地运行的资源(例如,服务器)组成。此外,在实施例中,云计算环境102可以包括任何类型和数目的其他资源,包括促进与服务器的通信或其间的通信的资源(例如,网络交换机、网络等)、服务器的存储装置(例如,存储设备等)、管理其他资源的资源(例如,管理虚拟机以向多租户云的租户提供虚拟操作平台的管理程序等)和/或其他类型的资源。在一些实施例中,虚拟桌面主机104可以包括在数据中心或本地服务器中可访问的远程服务器或虚拟机。

此外,客户端计算设备112和远程计算设备114,虽然分别被描画为膝上型计算机和智能电话,但是可以是任何类型的移动或固定计算设备。示例移动计算设备包括但不限于

如图1中进一步所示,客户端计算设备112经由网络108可通信地耦合到云计算环境102,并且远程计算设备114经由网络118可通信地耦合到云计算环境102。网络108和118可以包括一个或多个网络,诸如局域网(LAN)、广域网(WAN)、企业网、互联网等,并且可以包括有线和/或无线部分中的一个或多个部分。在某些场景中,网络108和网络118可以包括相同的网络。

客户端计算设备112、远程计算设备114和虚拟桌面主机104可以包括至少一个网络接口,该至少一个网络接口使得能够通过网络108和118进行通信。这种有线或无线网络接口的示例包括IEEE 802.11无线LAN(WLAN)无线接口、全球微波接入互操作性10(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、Bluetooth

客户端计算设备112还包括远程桌面客户端,该远程桌面客户端被配置为在客户端计算设备112的用户界面内呈现通信应用的用户界面106,该通信应用提供在其用户之间的视频和/或音频通信并且在虚拟桌面主机104上运行。例如,与通信应用的用户界面106相关联的数据可以被传送到客户端计算设备112并且被渲染为客户端计算设备112的屏幕显示中的用户界面。用户110可以与客户端计算设备112上呈现通信应用的用户界面106的用户界面进行的任何交互(例如,鼠标和/或键盘输入)可以被跟踪并且被传送到虚拟桌面主机104。

更具体地,用户110可以通过与客户端计算设备112的用户界面交互(例如,通过点击用户界面中显示的联系人旁边的“电话图标”)来发起与远程计算设备114的用户116的视频和/或音频通信。该交互可以被提供给虚拟桌面主机104,并且在虚拟桌面主机104上运行的通信应用可以发起和执行与用户116的视频和/或音频通信。

在实施例中,在用户110和用户116之间的视频和/或音频通信期间,客户端计算设备112和远程计算设备114上的设备源(诸如,摄像机)可以捕获出现在设备源前面的图像。如图1中所描绘的,用户110和116所捕获的视频可以通过虚拟桌面主机104而被传送到其他用户的计算设备,以用于呈现在其他用户的计算设备的显示屏上。例如,由远程计算设备114上的设备源捕获的用户116的视频可以被传送到虚拟桌面主机104并且在虚拟桌面主机104上被处理(例如,被解码)并且作为通信应用的用户界面106的一部分在本地被渲染。在一些实施例中,屏幕抓取可以被用来收集与在用户界面106中渲染的用户116的视频相关联的屏幕显示数据,以用于在客户端计算设备112的用户界面中渲染用户116的视频,以使得用户110可以同时观看用户116的视频,就像它被设备源捕获一样。

由于通过网络108、虚拟桌面主机104和网络118来传送客户端计算设备112和远程计算设备114之间的视频和/或音频通信,因此上面参考图1描述的这种视频和/或音频通信方法可能会产生时延问题(特别是对于高分辨率视频和音频体验)。此外,该方法可能会增加处理媒体所花费的时间和资源量。例如,当虚拟桌面主机104接收媒体时,媒体可能需要被解码,而当虚拟桌面主机104传送媒体时,媒体可能需要被编码。

在客户端计算设备112和远程计算设备114之间实现对等视频和/或音频通信方法可以减轻上面讨论的时延问题以及减少虚拟桌面主机104上的处理工作负载。例如,图2描绘了用于在与云中的通信应用进行交互的客户端计算设备和远程计算设备之间实现对等音频和/或视频通信的示例系统200的框图。

如上面参考图1所描述的,用户110可以通过与客户端计算设备112的用户界面交互来发起与远程计算设备114的用户116的视频和/或音频通信。该交互可以被提供给虚拟桌面主机104并且提示在虚拟桌面主机104上运行的通信应用发起与远程计算设备114的媒体通信。然而,在图2中,媒体通信呼叫可以被拦截并且被重定向到客户端计算设备112,以实现客户端计算设备112和远程计算设备114之间的对等媒体通信。为了实现客户端计算设备112和远程计算设备114之间的对等音频和/或视频通信的目的,客户端计算设备112的远程桌面客户端被配置为接收从通信应用重定向的通信。

在出于音频和/或视频通信的目的(下面将参考图4和图5更详细地描述的过程)而连接客户端计算设备112和远程计算设备114后,客户端计算设备112和远程计算设备114可以经由网络202(其可以与图1的网络108和118相同、相似或完全不同)来彼此传递视频和/或音频。

通过实现客户端计算设备112和远程计算设备114之间的对等音频和/或视频通信,避免了通过虚拟桌面主机104的媒体通信,从而减少了与这种音频和/或视频通信相关联的时延并且还减少了虚拟桌面主机104上的处理负担。此外,作为将客户端计算设备112和远程计算设备114之间的媒体通信连接转移到对等信道的一部分,本文描述的实施例还使得客户端计算设备112的基于本地硬件的媒体处理能力(例如,基于硬件的视频或音频编解码器)能够被远程桌面客户端发现和利用,从而更好地执行这种通信。如本文中所使用的,术语媒体应被理解为至少涵盖视频、音频或其组合。因为这样的实施例可以利用客户端计算设备112的基于硬件的媒体处理能力,所以与基于软件的媒体处理方法相比,可以提高客户端计算设备112的媒体处理的质量和效率。此外,利用客户端计算设备112的这种基于硬件的媒体处理能力可以减少客户端计算设备112的处理器上的负担,处理器将不需要运行对应的基于软件的媒体处理能力。

现在将继续参考图1和图2来描述图3,以帮助说明将通信从运行在虚拟桌面主机104上的通信应用重定向到客户端计算设备112的过程。图3描绘了示例系统300的框图,为了实现客户端计算设备和远程计算设备之间的对等音频和/或视频通信的目的,该示例系统300用于使得能够重定向来自通信应用的通信。

如图3中所示,云计算环境102包括虚拟桌面主机104和插件302。进一步如图3中所示,插件302包括(多个)重定向垫片(shim)304。(多个)重定向垫片304被配置为拦截由在虚拟桌面主机104上运行的通信应用发起的通信(例如,API调用)并且经由网络108将这样的调用重定向到客户端计算设备112。例如,如果通信应用发起与远程计算设备114的视频和/或音频通信,则(多个)重定向垫片304将拦截视频和/或音频通信请求,如有必要的话修改请求(例如,利用不同的实现替换某些脚本对象),并且将其通过通信信道306(经由网络108)重定向到客户端计算设备112。

在实施例中,如果满足特定条件(例如,如果通信应用在特定虚拟桌面环境上运行并且如果多会话用户被使能),则通信应用可以在运行时加载插件302。一旦被加载,插件302就可以尝试与客户端计算设备112建立通信信道306(例如,建立动态虚拟信道(DVC))以实现虚拟桌面主机104和客户端计算设备112之间的通信。在实施例中,插件302可以使远程过程调用(RPC)通过网络套接字(WebSockets)服务器过程到客户端计算设备112。

为了提供客户端计算设备112的更详细的透视图400,现在将描述图4。图4描绘了包括到远程桌面客户端402的插件404的客户端计算设备112,插件404实现了客户端计算设备112和远程计算设备之间的对等通信,确定客户端计算设备112的基于硬件的媒体处理能力,并且使用检测的基于硬件的媒体处理能力来处理媒体。插件404包括一组非OS特定的并且与任何平台兼容的组件432和一组OS特定的并且需要针对每个平台重新实现的组件430。非OS特定的一组组件432包括:RTC侦听器406、RTC管理器408、窗口管理器410和RTC组件412。

如图4中进一步所示,客户端计算设备112还包括远程桌面客户端402。如前所述,为了实现客户端计算设备112和远程计算设备(例如,图1和图2中的远程计算设备114)之间的对等音频和/或视频通信的目的,客户端计算设备112的远程桌面客户端402被配置为在通信信道306上从通信应用接收重定向的通信(即,通过图3中的云计算环境102的插件302)。

在实现客户端计算设备112和远程计算设备114之间的对等通信的过程中,RTC侦听器406被配置为在通信信道306上侦听重定向通信并且在接收到重定向通信后将重定向通信流提供给RTC管理器408。RTC管理器408被配置为接收重定向通信流(例如,包括序列化的RPC调用信息)并且将其转换为与用于实现实时通信的框架(例如,WebRTC)兼容的格式。RTC管理器408然后向RTC组件412提供转换的通信(例如,WebRTC API调用)。为了基于从RTC管理器408提供的转换的通信进行音频和/或视频通信(例如,WebRTC API调用)的目的,RTC组件412被配置为连接客户端计算设备112和远程计算设备114。为了音频和/或视频通信的目的,RTC组件412可以在客户端计算设备112和远程计算设备114之间建立通信信道436。

插件404的OS特定的一组组件430包括:媒体捕获组件414、媒体渲染器组件416和窗口管理器组件418。在客户端计算设备112和远程计算设备114被连接以用于进行音频和/或视频通信之后,媒体捕获组件414和媒体渲染器组件416可以被用于检测客户端计算设备112的基于硬件的媒体处理能力并且使用基于硬件的媒体处理能力来优化客户端计算设备112和远程计算设备114之间的音频和/或视频通信。

例如,媒体捕获组件414可以通过使用OS特定的API来确定客户端计算设备112上什么是可用的从而确定客户端计算设备112的基于硬件的媒体处理能力。在确定客户端计算设备112上什么是可用的之后,媒体捕获组件414被配置为向源读取器420通知与所捕获的媒体的处理相关的任何信息(诸如,格式化)以及利用基于硬件的媒体处理能力以处理所捕获的媒体所需的任何硬件配置。源读取器420被配置为从摄像机426和客户端计算设备112的其他设备源(例如,麦克风)捕获媒体。

为了帮助说明,假设媒体捕获组件414确定客户端计算设备112具有基于硬件的媒体处理能力以将所捕获的视频转码为较低的分辨率/质量。媒体捕获组件414可以通知源读取器420:原始捕获的媒体需要被解码为中间未压缩格式(例如,针对音频的PCM或针对视频的YUV),然后被编码为目标格式。源读取器420然后可以执行转码并且将处理的视频提供给媒体捕获组件414。在捕获视频时,源读取器420可以充当帧服务器并且将所捕获的视频流式传输到媒体捕获组件414。

媒体捕获组件414还被配置为从源读取器420接收从摄像机426捕获的已处理和/或未处理的媒体,并且将所捕获的媒体提供给RTC组件412。RTC组件412被配置为准备所捕获的媒体以用于传送到远程计算设备114。如图4中所示,RTC组件412可以通过套接字API424通过通信信道436将所捕获的媒体发送到远程计算设备114。

媒体渲染器组件416可以通过使用OS特定的API来确定客户端计算设备112上什么是可用的从而确定客户端计算设备112的基于硬件的媒体处理能力。在确定客户端计算设备112上什么是可用的之后,媒体渲染器组件416被配置为向媒体引擎422通知与处理接收到的媒体相关的任何信息(诸如,格式化)以及利用基于硬件的媒体处理能力以处理接收到的媒体所需的任何硬件配置。

媒体渲染器组件416还被配置为向媒体引擎422提供从RTC组件412接收到的特定媒体源。媒体引擎422然后将建立媒体管道并且设置它以用于渲染。媒体引擎422被配置为向媒体流源428提供特定源(压缩或解压缩)。媒体流源428被配置为向媒体源提供利用基于硬件的媒体处理能力来处理接收到的媒体所需的硬件。在实施例中,媒体流源428可以使用帧服务器方法以用于产生视频媒体。

如图4中所示,媒体流源428连接到硬件解码器438。在一些实施例中,如果接收到的媒体被压缩,那么硬件解码器438可以对接收到的媒体进行解码。此外,媒体流源428可以将接收到的媒体提供给另一基于硬件的媒体处理能力,诸如硬件加速的视频处理(例如,调整帧大小、颜色变换等)或硬件加速的音频处理。如图4中所描绘的,处理的媒体可以被提供给远程桌面客户端402以用于在其用户界面434中被渲染。备选地或附加地,处理的媒体可以在显示器440处被渲染。窗口管理器410和窗口管理器组件418被配置为监视和跟踪需要对用户界面434中渲染的视频执行的任何更改(例如,窗口移动、窗口大小调整、弹出菜单等)。

在下文中关于图5-图7更详细地描述客户端计算设备112。图5示出了用于实现客户端计算设备和远程计算设备之间的对等通信、确定客户端计算设备的基于硬件的媒体处理能力以及使用检测到的基于硬件的媒体能力以处理媒体的方法的流程图500。

流程图500开始于步骤502。在步骤502中,为了实现客户端计算设备和远程计算设备之间的对等音频和/或视频通信的目的,而不是经由通信应用进行音频和/或视频通信,接收来自通信应用的重定向的通信。例如,并且继续参考图4,为了实现客户端计算设备112和远程计算设备114之间的对等音频和/或视频通信的目的,而不是经由通信应用进行音频和/或视频通信,远程桌面客户端402在通信信道306上从通信应用接收重定向的通信。

在步骤504中,为了使用用于实现实时通信的框架基于重定向的通信进行音频和/或视频通信的目的,客户端计算设备与远程计算设备连接。例如,并且继续图4,为了使用用于实现实时通信的框架基于重定向的通信进行音频和/或视频通信的目的,RTC组件412连接客户端计算设备112和远程计算设备114。在一个实施例中,重定向的通信包括从通信应用拦截的WebRTC API调用,并且WebRTC的API和协议是被用于连接客户端计算设备112和远程计算设备114的框架。

在步骤506中,确定客户端计算设备的基于硬件的媒体处理能力。例如,并且继续图4,媒体渲染器组件416通过使用OS特定的API来确定客户端计算设备112上什么是可用的从而确定客户端计算设备112的基于硬件的媒体处理能力。客户端计算设备112的这种基于硬件的媒体处理能力可以包括但不限于,例如视频编解码器(包括视频解码器)、音频编解码器(包括音频解码器)、硬件加速视频处理或硬件加速音频处理。

在步骤508中,接收从远程计算设备传送的媒体。例如,并且继续图4,媒体渲染器组件416从RTC组件412接收从远程计算设备114传送的媒体。

在步骤510中,基于硬件的媒体处理能力被用于处理从远程计算设备接收的媒体以用于客户端计算设备渲染。例如,并且继续图4,媒体流源428使用基于硬件的媒体处理能力来处理从远程计算设备114接收的媒体以用于客户端计算设备112渲染。为了帮助说明,媒体流源428被连接到硬件解码器438。在一些实施例中,如果接收到的媒体被压缩,那么硬件解码器438可以对接收到的媒体进行解码。此外,媒体流源428可以将接收到的媒体提供给另一基于硬件的媒体处理能力,诸如硬件加速的视频处理(例如,调整帧大小、颜色变换等)或硬件加速的音频处理。

图6示出了用于基于所确定的客户端计算设备的基于硬件的媒体处理能力以与远程计算设备协商媒体通信参数的方法的流程图600。流程图600开始于步骤602。在步骤602中,确定客户端计算设备的另一基于硬件的视频处理能力。例如,并且继续图4,RTC管理器408可以确定客户端计算设备112的另一基于硬件的视频处理能力。RTC管理器408可以通过用于实现实时通信的框架的API以确定该另一基于硬件的媒体处理能力。

在步骤604中,基于该另一基于硬件的媒体处理能力以与远程计算设备协商媒体通信参数。例如,并且继续图4,RTC管理器408基于该另一基于硬件的媒体处理能力以与远程计算设备114协商媒体通信参数。例如,RTC管理器408可以确定客户端计算设备112具有远程计算设备114没有的特定解码器(例如,VP9解码器)。RTC管理器408可以与远程计算设备114协商以提供格式与其特定解码器兼容的媒体。

图7示出了用于确定客户端计算设备的基于硬件的媒体处理能力并且使用基于硬件的媒体处理能力以处理从客户端计算设备的媒体源捕获的媒体的方法的流程图700。流程图700开始于步骤702。在步骤702中,确定客户端计算设备的另一基于硬件的媒体处理能力。例如,并且继续图4,媒体捕获组件414确定客户端计算设备112的另一基于硬件的媒体处理能力。媒体捕获组件414可以通过使用特定于客户端计算设备112的OS的API来确定客户端计算设备112的可用的基于硬件的媒体处理能力。客户端计算设备112的这种基于硬件的媒体处理能力可以包括但不限于例如视频编解码器(包括视频编码器)、音频编解码器(包括音频编码器)、硬件加速的视频处理或硬件加速的音频处理。

在步骤704中,使用该另一基于硬件的媒体处理能力来处理从客户端计算设备的媒体源捕获的媒体。例如,基于硬件的视频或音频编码器可以被用于分别对从客户端计算设备112的媒体源捕获的视频或音频进行编码。作为另一示例,硬件加速的视频或音频处理可以被用来加速分别从客户端计算设备112的媒体源捕获的视频或音频的处理。在一些实施例中,并且继续图4,媒体捕获组件414被配置为向源读取器420通知:与所捕获的媒体的处理以及利用基于硬件的媒体处理能力以处理所捕获的媒体所需的任何硬件配置相关的任何信息(诸如,格式化)。

在步骤706中,处理后的媒体被传送到远程计算设备。例如,并且继续图4,RTC组件412通过通信信道436将处理后的媒体传送到远程计算设备114。

虽然前述实施例指的是在虚拟桌面主机上执行的通信应用,但是应当理解,本文描述的技术可以结合从客户端计算设备112远程执行的任何通信应用而被利用,而不管这样的通信应用是运行在虚拟桌面还是其他类型的平台上。也就是说,本文描述的实施例不限于在虚拟桌面上执行的通信应用,而是广泛地涵盖可以在服务器上执行并且实现位于远处的用户和用户设备之间的音频和/或视频通信的任何类型的通信应用。

此外,虽然前述实施例指的是在客户端计算设备112上运行的远程桌面和相关联的插件,但是应当理解,由那些组件提供的功能性可以被封装在具有任何类型结构或架构的任何类型的软件组件中。例如,插件404的功能和特征可以被包括在不一定是插件而是某种其他类型的能够与远程桌面客户端402一起操作的软件组件中。此外,插件404的功能和特征也可以被直接集成到远程桌面客户端402中,以使得除了远程桌面客户端402之外不需要附加的软件组件。另外,远程桌面客户端402和插件404的功能和特征可以被包括在客户端计算设备112的应用或操作系统组件中,其不被指的是远程桌面客户端或插件而是仍然提供与如本文所述的那些组件类似的能力。

三、示例计算机系统实现

云计算环境102、虚拟桌面主机104、插件302、客户端计算设备112、远程桌面客户端402、插件404、流程图500、流程图600和/或流程图700可以以硬件来实现、或者与硬件结合软件和/或固件中的一者或两者来实现。例如,云计算环境102、虚拟桌面主机104、插件302、客户端计算设备112、远程桌面客户端402、插件404、流程图500、流程图600和/或流程图700可以被实现为被配置为将在一个或多个处理器中执行并且存储在计算机可读存储介质中的计算机程序代码/指令。在另一实施例中,云计算环境102、虚拟桌面主机104、插件302、客户端计算设备112、远程桌面客户端402、插件404、流程图500、流程图600和/或流程图700也可以被实现在操作软件即服务(SaaS)或平台即服务(PaaS)的硬件中。备选地,云计算环境102、虚拟桌面主机104、插件302、客户端计算设备112、远程桌面客户端402、插件404、流程图500、流程图600和/或流程图700可以被实现为硬件逻辑/电路。

例如,在实施例中,云计算环境102、虚拟桌面主机104、插件302、客户端计算设备112、远程桌面客户端402、插件404、流程图500、流程图600和/或流程图700中的一个或多个可以以任意组合可以在片上系统(SoC)中一起被实现。SoC可以包括集成电路芯片,该集成电路芯片包括处理器(例如,中央处理单元(CPU)、微控制器、微处理器、数字信号处理器(DSP)等)、存储器、一个或多个通信接口和/或其他电路中的一个或多个,并且可以可选地执行接收到的程序代码和/或包括用于执行功能的嵌入式固件。

图8描绘了在其中可以实现实施例的计算设备800的示例性实现。例如,云计算环境102、虚拟桌面主机104、插件302、客户端计算设备112、远程桌面客户端402、插件404的组件各自都可以在固定或移动计算机实施例中在类似于计算设备800的一个或多个计算设备中被实现,包括计算设备800的一个或多个特征和/或备选特征。本文提供的计算设备800的描述是出于说明的目的而被提供,并非旨在进行限制。实施例可以在其他类型的计算机系统中被实现,如(多个)相关领域的技术人员已知的那样。

如图8中所示,计算设备800包括一个或多个处理器(被称为处理器电路802)、系统存储器804和将包括系统存储器804的各种系统组件耦合到处理器电路802的总线806。处理器电路802是作为中央处理单元(CPU)、微控制器、微处理器和/或其他物理硬件处理器电路在一个或多个物理硬件电子电路设备元件和/或集成电路设备(半导体材料芯片或管芯)中实现的电子和/或光学电路。处理器电路802可以执行存储在计算机可读介质中的程序代码,诸如操作系统830的程序代码、应用程序832、其他程序834等。总线806表示若干类型的总线结构中的一种或多种,包括存储器总线或存储器控制器、外围总线、加速图形端口以及使用各种总线架构中的任何一种的处理器或本地总线。系统存储器804包括只读存储器(ROM)808和随机存取存储器(RAM)810。基本输入/输出系统812(BIOS)被存储在ROM 808中。

计算设备800还具有以下驱动器中的一个或多个驱动器:用于从硬盘读取和向其写入的硬盘驱动器814、用于从可移除磁盘818读取或向其写入的磁盘驱动器816、以及用于从诸如CD ROM、DVD ROM或其他光学介质的可移除光盘822读取或向其写入的光驱820。硬盘驱动器814、磁盘驱动器816和光驱820分别通过硬盘驱动器接口824、磁盘驱动器接口826和光驱接口828连接到总线806。驱动器及其关联的计算机可读介质为计算机提供计算机可读指令、数据结构、程序模块和其他数据的非易失性存储。虽然描述了硬盘、可移动磁盘和可移除光盘,但是也可以使用其他类型的基于硬件的计算机可读存储介质来存储数据,诸如闪存卡、数字视频磁盘、RAM、ROM和其他硬件存储介质。

许多程序模块可以被存储在硬盘、磁盘、光盘、ROM或RAM上。这些程序包括操作系统830、一个或多个应用程序832、其他程序834和程序数据836。应用程序832或其他程序834可以包括例如用于实现虚拟桌面主机104、插件302、远程桌面客户端402、插件404、流程图500、流程图600和/或流程图700(包括流程图500、600和700的任何合适的步骤)和/或本文描述的其他实施例的计算机程序逻辑。

用户可以通过诸如键盘838和定点设备840的输入设备将命令和信息输入到计算设备800中。其他输入设备(未示出)可以包括麦克风、操纵杆、游戏手柄、卫星天线、扫描仪、触摸屏和/或触摸板、接收语音输入的语音识别系统、接收手势输入的手势识别系统等。这些和其他输入设备通常通过耦合到总线806的串行端口接口842而被连接到处理器电路802,但是也可以通过其他接口来被连接,诸如,并行端口、游戏端口或通用串行总线(USB)。

显示屏844也经由诸如视频适配器846的接口而被连接到总线806。显示屏844可以在计算设备800的外部,或者被并入计算设备800中。显示屏844可以显示信息,并且是用于(例如,通过触摸、手指手势、虚拟键盘等)接收用户命令和/或其他信息的用户界面。除了显示屏844之外,计算设备800可以包括其他外围输出设备(未示出),诸如扬声器和打印机。显示屏844和/或任何其他外围输出设备(未示出)可以被用于实现用户界面106和434,和/或本文描述的任何其他实施例。

计算设备800通过适配器或网络接口850、调制解调器852或用于通过网络建立通信的其他部件而被连接到网络848(例如,互联网)。可以是内部的或外部的调制解调器852可以经由串行端口接口842被连接到总线806,如图8中所示,或者可以使用另一接口类型(包括并行接口)而被连接到总线806。

如本文中所使用的,术语“计算机程序介质”、“计算机可读介质”和“计算机可读存储介质”被用来指代物理硬件介质,诸如与硬盘驱动器814相关联的硬盘、可移除磁盘818、可移除光盘822、其他物理硬件介质诸如RAM、ROM、闪存卡、数字视频磁盘、zip磁盘、MEM、基于纳米技术的存储设备以及其他类型的物理/有形硬件存储介质。这种计算机可读存储介质与通信介质不同而且不重叠(不包括通信介质)。通信介质在诸如载波的调制数据信号中包含计算机可读指令、数据结构、程序模块或其他数据。术语“调制数据信号”意味着一种信号,其一个或多个特性以在信号中编码的信息的方式被设置或改变。作为示例而非限制,通信介质包括诸如声学、RF、红外线和其他无线介质的无线介质,以及有线介质。实施例还涉及与涉及计算机可读存储介质的实施例分开且不重叠的这种通信介质。

如上面所指出的,计算机程序和模块(包括应用程序832和其他程序834)可以被存储在硬盘、磁盘、光盘、ROM、RAM或其他硬件存储介质上。这种计算机程序也可以经由网络接口850、串行端口接口842或任何其他接口类型而被接收。这样的计算机程序在由应用执行或加载时使得计算设备800能够实现本文讨论的实施例的特征。因此,这样的计算机程序表示计算设备800的控制器。

实施例还涉及包括存储在任何计算机可读介质上的计算机代码或指令的计算机程序产品。这种计算机程序产品包括硬盘驱动器、光驱动器、存储器设备封装、便携式存储器棒、存储器卡和其他类型的物理存储硬件。

四、附加示例实施例

在第一实施例中,一种客户端计算设备,包括:一个或多个处理器;存储计算机程序逻辑以用于由一个或多个处理器执行的一个或多个存储设备,该计算机程序逻辑包括:远程桌面客户端,该远程桌面客户端被配置为在客户端计算设备内呈现在云计算环境中执行的通信应用的用户界面,该远程桌面客户端还被配置为接收来自通信应用的重定向的通信,以用于实现客户端计算设备和远程计算设备之间的对等音频和/或视频通信,而不是经由通信应用的音频和/或视频通信的目的;以及插件,该插件包括:实时通信管理器,该实时通信管理器被配置为从远程桌面通道组件接收重定向的通信并且将重定向的通信转换为与用于实现实时通信的框架兼容的格式;实时通信组件,该实时通信组件被配置为连接客户端计算设备和远程计算设备,以用于基于转换的通信的音频和/或视频通信通信的目的;以及媒体捕获组件,其被配置为确定客户端计算设备的基于硬件的媒体处理能力,使用基于硬件的媒体处理能力来处理从客户端计算设备的媒体源捕获的媒体,并且将处理的媒体提供给实时通信组件以被传送到远程计算设备。

在一个实施例中,媒体包括视频或音频中的一项。

在一个实施例中,实时通信管理器还被配置为:确定客户端计算设备的另一基于硬件的视频处理能力;以及基于该另一基于硬件的媒体处理能力来与远程计算设备协商媒体通信参数。

在一个实施例中,媒体捕获组件通过客户端计算设备的操作系统的应用编程接口(API)来确定基于硬件的媒体处理能力,并且实时通信管理器通过用于实现实时通信的框架的API来确定该另一基于硬件的媒体处理能力。

在一个实施例中,插件还包括媒体渲染器组件,该媒体渲染器组件被配置为接收经由实时通信组件从远程计算设备传送的媒体并且将接收到的媒体提供给客户端计算设备的媒体引擎以用于在客户端计算设备的用户界面内进行渲染,该视频渲染器组件还被配置为:确定客户端计算设备的另一基于硬件的媒体处理能力;并且使用该另一媒体处理能力来处理从远程计算设备接收到的媒体。

在一个实施例中,基于硬件的媒体处理能力包括视频编解码器或音频编解码器中的一项。

在一个实施例中,基于硬件的媒体处理能力包括硬件加速的视频处理或硬件加速的音频处理中的一项。

在另一实施例中,一种由客户端计算设备的一个或多个处理器执行的方法,该客户端计算设备呈现在云计算环境中执行的通信应用的用户界面,该方法包括:接收来自通信应用的重定向的通信,以用于实现客户端计算设备和远程计算设备之间的对等音频和/或视频通信,而不是与经由通信应用的音频和/或视频通信的目的;连接客户端计算设备和远程计算设备,以用于使用用于实现实时通信的框架、基于重定向的通信的音频和/或视频通信的目的;确定客户端计算设备的基于硬件的媒体处理能力;接收从远程计算设备传送的媒体;并且使用基于硬件的媒体处理能力来处理从远程计算设备接收的媒体以用于客户端计算设备进行渲染。

在一个实施例中,媒体包括视频或音频中的一项。

在一个实施例中,该方法还包括:确定客户端计算设备的另一基于硬件的视频处理能力;以及基于该另一基于硬件的媒体处理能力来与远程计算设备协商媒体通信参数。

在一个实施例中,确定基于硬件的媒体处理能力包括使用客户端计算设备的操作系统的应用编程接口API来确定基于硬件的媒体处理能力;以及其中确定该另一基于硬件的媒体处理能力包括使用用于实现实时通信的框架的API来确定该另一基于硬件的媒体处理能力。

在一个实施例中,该方法还包括:确定客户端计算设备的另一基于硬件的媒体处理能力;使用该另一基于硬件的媒体处理能力来处理从客户端计算设备的媒体源捕获的媒体;并且将经处理的媒体传送到远程计算设备。

在一个实施例中,基于硬件的媒体处理能力包括视频编解码器或音频编解码器中的一项。

在一个实施例中,基于硬件的媒体处理能力包括硬件加速的视频处理或硬件加速的音频处理中的一项。

在另一个实施例中,一种计算机程序产品,该计算机程序产品包括具有其上记录的程序指令的计算机可读存储介质,程序指令在由呈现在云计算环境中执行的通信应用的用户界面的客户端计算设备的至少一个处理器执行时,使至少一个处理器执行包括如下的方法:接收来自通信应用的重定向的通信,以用于实现客户端计算设备和远程计算设备之间的对等音频和/或视频通信,而不是经由通信应用的音频和/或视频通信的目的,;连接客户端计算设备和远程计算设备,以用于使用用于实现实时通信的框架、基于重定向的通信的音频和/或视频通信的目的;确定客户端计算设备的基于硬件的媒体处理能力;并且基于该基于硬件的媒体处理能力来与远程计算设备协商媒体通信参数。

在一个实施例中,媒体包括视频或音频中的一项。

在一个实施例中,该方法还包括:确定客户端计算设备的另一基于硬件的视频处理能力;并且接收从远程计算设备传送的媒体;并且使用该另一基于硬件的媒体处理能力来处理从远程计算设备接收的媒体以用于客户端计算设备渲染。

在一个实施例中,该方法还包括:确定客户端计算设备的另一基于硬件的媒体处理能力;使用该另一基于硬件的媒体处理能力来处理从客户端计算设备的媒体源捕获的媒体;并且将经处理的媒体传送到远程计算设备。

在一个实施例中,基于硬件的媒体处理能力包括视频编解码器或音频编解码器中的一项。

在一个实施例中,基于硬件的媒体处理能力包括硬件加速的视频处理或硬件加速的音频处理中的一项。

五、结论

虽然上面已经描述了本发明的各种实施例,但是应当理解,它们仅通过示例而非限制的方式而被呈现。(一个或多个)相关领域的技术人员将理解,在不背离如所附权利要求所限定的本发明的精神和范围的情况下,可以在形式和细节上进行各种改变。因此,本发明的广度和范围不应受上述示例性实施例中的任何一个实施例的限制,而应仅根据所附权利要求及其等效物来限定。

相关技术
  • 用于虚拟桌面底层结构解决方案的自适应实时通信插件
  • 基于虚拟桌面和虚拟操作系统的自适应云桌面服务系统
技术分类

06120116626431