用于无损编码的多像素高速缓存方案制造技术

技术编号:20987970 阅读:24 留言:0更新日期:2019-04-29 20:26
提供了用于无损编码器编码多像素高速缓存方案的系统和方法。该系统和方法可以包括:获得像素序列;确定该像素序列的由单重复像素组成的重复子序列和该像素序列的非重复子序列;响应于该确定,使用重复像素的游程长度对重复子序列进行编码,并且使用多像素高速缓存对非重复子序列进行编码,其中使用多像素高速缓存的编码包括:将存储在多像素高速缓冲中的非重复子序列编码为多像素高速缓存中的非重复子序列的位置,并且使用非重复子序列中的像素的值对未存储在多像素高速缓存中的非重复子序列进行编码。

Multi-Pixel Cache Scheme for Lossless Coding

A system and method for coding multi-pixel cache scheme of lossless coder are provided. The system and method may include: obtaining a sequence of pixels; determining a repetitive subsequence of the sequence of pixels consisting of a single repetitive pixel and a non-repetitive subsequence of the sequence of pixels; in response to this determination, encoding the repetitive subsequence using the run length of the repetitive pixel, and encoding the non-repetitive subsequence using a multi-pixel cache, in which a multi-pixel high-speed is used The encoding of memory includes encoding the non-repetitive sub-sequence stored in the multi-pixel cache into the position of the non-repetitive sub-sequence in the multi-pixel cache, and encoding the non-repetitive sub-sequence not stored in the multi-pixel cache using the value of the pixels in the non-repetitive sub-sequence.

【技术实现步骤摘要】
【国外来华专利技术】用于无损编码的多像素高速缓存方案
技术介绍
现代计算系统能够运行各种各样的软件应用程序和平台。计算系统可以提供允许在计算系统上执行的应用程序访问计算系统的硬件组件并与之交互的操作系统。通过这种交互,软件应用程序可以接受用户输入并提供输出,输出可以通过呈现在显示设备上的图形用户界面呈现给用户。另外,输出可以被转发到远程计算设备。远程计算技术允许用户使用计算系统而无需物理地位于计算系统处。通过远程访问,用户可以通过公共或专用网络连接到远程计算系统。用户可以使用本地计算系统将输入发送到远程计算系统,并且远程计算系统可以进行响应。虽然没有物理上处于远程计算系统,但是用户可以与远程计算系统交互,就像用户直接使用该系统一样。另外,可视化技术已经广泛用于共享有限的计算机硬件资源。在硬件虚拟化环境(有时也称为平台虚拟化环境)中,一个或多个虚拟机可以模拟具有其自己的操作系统的主机。特别地,在这些虚拟机上执行的软件可以与底层硬件资源分离。因此,在同一主机上运行的虚拟机可以各自拥有其自己的操作系统。例如,运行MicrosoftWindows操作系统的计算机可以托管模拟运行Linux操作系统的计算机的虚拟机,基于该虚拟机可以执行基于Linux的软件。此外,虚拟化技术可以提供通过公共或专用网络对计算机资源的远程访问。用户可以使用各种客户端访问运行在虚拟化环境中的主机上的虚拟桌面或应用程序。这些客户端可以直接连接到主机,或者它们可以通过公共或专用网络连接到虚拟化环境。客户端可以捕获用户输入并通过网络将其传输到主机的虚拟环境。接收用户输入的应用程序可以通过执行某些动作并向用户呈现响应来进行响应。虚拟化允许多个用户共享硬件资源,而不是要求每个用户连接到专用远程计算系统。在远程、本地或虚拟化计算环境中运行的应用程序可以响应用户输入来更新用于显示设备上的显示的输出。应用程序可以向操作系统提供指令以更新图形用户界面。然后,操作系统可以处理命令并且在图形界面上显示更新。在许多当前和过去的系统架构中,应用程序可以通过操作系统直接写入帧缓冲器。除了要显示的帧之外,操作系统还可以提供原始绘制命令和关于更新的显示帧的附加信息,如显示内容的内容类型、输出显示帧的修改区域以及关于该输出显示帧的其他元数据。该信息对于远程技术是有用的,因为系统可以将原始绘制命令和关于显示帧的附加信息组合,以优化发送到远程计算环境的数据,而不是通过网络只发送表示可视显示的带宽密集图形。该优化允许更好的用户体验,同时限制远程计算所需的网络带宽。现代操作系统已经远离过去的显示机制,改为依赖于将用户界面的渲染卸载到图形处理单元。结果,操作系统从应用程序接收更新,使用图形处理单元将这些更新合成为显示帧,并向显示设备或图形系统提供表示合成帧的图形或位图。计算环境的图形系统仅接收最终的合成显示帧而没有任何附加的元数据或绘制命令。因此,将显示转发给远程连接的用户的图形驱动器不再能够从先前提供的信息受益,并且需要提高虚拟和远程计算环境中的显示帧的处理、编码和传送的效率。附图说明下面将参考示出本公开的示例性实施例的附图。在附图中:图1是与本公开一致的实施例的示例性网络环境的框图。图2A-2C是与本公开一致的实施例的示例性计算设备的框图。图3是与本公开一致的实施例的用于编码像素序列的示例性方法的流程图。图4示出与本公开一致的实施例的示例性高速缓存。图5是与本公开一致的实施例的用于编码像素序列的示例性方法的流程图。图6示出与本公开一致的实施例的示例性高速缓存。图7是与本公开的实施例一致的用于解码像素序列的示例性方法的流程图。具体实施方式现在将详细参考根据本公开实现的示例性实施例,其示例在附图中示出。只要有可能,在所有附图中将使用相同的附图标记来表示相同或相似的部分。本文描述的实施例提供用于编码显示帧数据的技术和方法。这些技术可以在虚拟和非虚拟环境中操作,允许优化转发到远程客户端的显示输出。这些技术提供了对编码帧的压缩的改进,并减少了在公共和专用网络上的显示数据传输中的带宽使用。这可以在带宽有限的网络上提供更好的最终用户体验,或者可以降低每个字节付费、按需付费或者使用其他有限数据方案(例如,蜂窝数据计划)的成本。另外,本文描述的技术和方法可以提供有效的编码,而计算资源需求的增加很小或可忽略不计。根据与本公开一致的实施例,可以使用各种编码方法对显示帧数据进行编码。例如,可以使用有损压缩算法(例如,联合图像专家组(“JPEG”)或保持压缩JPEG的标记图像文件格式(TIFF)容器)来编码显示帧的一些区域,以便减少那些区域的存储器占用。此外,显示帧的其他区域可以使用无损压缩算法(例如,每像素数据8位的图形交换格式(“GIF”)、便携式网络图形(“PNG”)、TIFF容器保持PackBits、TrueVisionTGA(“TGA”)或游程长度编码(RunLengthEncoding,“RLE”))进行编码,以保持质量。与有损编码期间实现的压缩比相比,无损编码期间实现的压缩比会显著降低。这需要新的机制来优化显示帧数据的无损编码。与本公开一致的实施例包括用于无损编码器的多像素高速缓存方案的系统和方法。该系统和方法可以包括:获得像素序列;确定该像素序列的由单个重复像素组成的重复子序列和该像素序列的非重复子序列;响应于该确定,使用重复像素的游程长度(run-length)编码该重复子序列,并且使用多像素高速缓存编码该非重复子序列,其中使用多像素高速缓存的编码包括:编码存储在多个像素高速缓存中的非重复子序列作为多像素高速缓存中的非重复子序列的位置,并且使用非重复子序列中的像素的值编码未存储在多像素高速缓存中的非重复子序列。本文描述的实施例可以提供图像和其他数据的改进的编码,以便减少传输所需的带宽,同时对计算机资源消耗增加的需要可忽略。在用于编码视觉数据的系统中,其中每个原始像素使用三个字节的数据来表示(该像素的红色(R)、绿色(G)和蓝色(B)成分每个使用一个字节的数据),与本公开一致的实施例可以利用多像素高速缓存来存储和编码包括许多不同像素的重复序列,仅将两个字节的数据用于该序列。所公开的技术最小化表示像素序列所需的数据的量并且提供对现有无损编码方法的改进。在单个图像或视频帧可以由数百万个像素组成的当前环境中,像素级存储的减少可以产生效率的大幅提高以及在网络上提供编码数据的必要带宽和资源的显著减少。图1是示例性网络环境100的框图。虽然示例性网络环境100针对虚拟网络环境,但是应当理解,网络环境可以是使用数据包进行通信的任何类型的网络。网络环境100可以包括一个或多个客户端设备102A-F、公共网络104、专用网络110、主机构114、分支机构116和数据中心120。一个或多个客户端设备102A-F(统称为102)是可以通过各种手段从数据中心120获取远程服务的设备。客户端设备102A-F可以直接与数据中心120通信(例如,客户端设备102E),或者通过公共网络104(例如,客户端设备102A-D)或专用网络110(例如,客户端设备102F)间接地与数据中心120通信。在一些实施例中,主机构114和分支机构116还可以包括与客户端设备102A-F类似的一个或多个客户端设备。主机构114可以位于例如公司本文档来自技高网...

【技术保护点】
1.一种存储可由计算设备执行的指令的非暂时性计算机可读存储介质,所述计算设备包括一个或多个处理器以使所述计算设备执行包括以下步骤的方法:获得像素序列;确定所述像素序列的非重复子序列和所述像素序列的具有单重复像素的重复子序列;响应于所述确定,使用所述重复像素的游程长度对所述重复子序列进行编码,并且使用多像素高速缓存对所述非重复子序列进行编码,其中使用多像素高速缓存的编码包括将存储在所述多像素高速缓存中的非重复子序列编码为所述多像素高速缓存中的所述非重复子序列的位置。

【技术特征摘要】
【国外来华专利技术】2016.11.16 US 15/353,5341.一种存储可由计算设备执行的指令的非暂时性计算机可读存储介质,所述计算设备包括一个或多个处理器以使所述计算设备执行包括以下步骤的方法:获得像素序列;确定所述像素序列的非重复子序列和所述像素序列的具有单重复像素的重复子序列;响应于所述确定,使用所述重复像素的游程长度对所述重复子序列进行编码,并且使用多像素高速缓存对所述非重复子序列进行编码,其中使用多像素高速缓存的编码包括将存储在所述多像素高速缓存中的非重复子序列编码为所述多像素高速缓存中的所述非重复子序列的位置。2.根据权利要求1所述的非暂时性计算机可读存储介质,其中所述多像素高速缓存包括多个子高速缓存,其中每个子高速缓存被配置为存储表示由不同数量的像素组成的子序列的数据。3.根据权利要求2所述的非暂时性计算机可读存储介质,其中单像素高速缓存是所述多像素高速缓存中的所述多个子高速缓存之一。4.根据权利要求3所述的非暂时性计算机可读存储介质,其中编码未存储在所述多像素高速缓存中的非重复子序列还包括使用所述单像素高速缓存对所述非重复子序列的每个像素进行编码。5.根据权利要求3所述的非暂时性计算机可读存储介质,其中所述多像素高速缓存包括十四个子高速缓存,所述十四个子高速缓存被配置为存储表示由一个和十四个像素之间的长度组成的子序列的数据。6.根据权利要求3所述的非暂时性计算机可读存储介质,其中所述单像素高速缓存中的位置被保留用于对在所述多像素高速缓存中的特定子高速缓存中存储像素子序列进行编码。7.根据权利要求3所述的非暂时性计算机可读存储介质,其中可由所述计算设备执行的所述指令将进一步使所述计算设备执行:将未存储在所述多像素高速缓存中的所述非重复子序列添加到所述多像素高速缓存中,并且将未存储在所述多像素高速缓存中的所述非重复子序列的每个像素添加到所述多像素高速缓存的所述单像素高速缓存。8.根据权利要求1所述的非暂时性计算机可读存储介质,其中使用针对所述子序列计算出的散列值来参考所述多像素高速缓存内的像素子序列的值的存储位置。9.根据权利要求1所述的非暂时性计算机可读存储介质,其中使用表示具有特定值的每个像素的数据的XOR运算来计算包括一个或多个像素的子序列的散列值。10.根据权利要求1所述的非暂时性计算机可读存储介质,其中可由所述计算设备执行的所述指令将进一步使所述计算设备使用所述非重复子序列中的像素的值来执行对未存储在所述多像素高速缓存中的非重复子序列的编码。11.一种用于编码像素序列的第一计算设备,包括:存储多像素高速缓存的至少一个数据存储器,所述多像素高速缓存包括一个或多个子高速缓存,所述子高速缓存被配置为存储不同长度的像素序列,其中子高速缓存包括所述序列的索引和像素值;和编码器,其被配置为:获得像素序列;确定所述像素序列的非重复子序列和所述像素序列的具有单重复像素的重复子序列;响应于所述确定:使用所述重复像素的游程长度编码所述重复子序列...

【专利技术属性】
技术研发人员:穆罕默德·阿夫扎尔·达伍德
申请(专利权)人:思杰系统有限公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1