CN102523443A - 用于图像压缩的熵编码器 - Google Patents

用于图像压缩的熵编码器 Download PDF

Info

Publication number
CN102523443A
CN102523443A CN2011103077764A CN201110307776A CN102523443A CN 102523443 A CN102523443 A CN 102523443A CN 2011103077764 A CN2011103077764 A CN 2011103077764A CN 201110307776 A CN201110307776 A CN 201110307776A CN 102523443 A CN102523443 A CN 102523443A
Authority
CN
China
Prior art keywords
data
computer
graph data
value
session
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN2011103077764A
Other languages
English (en)
Inventor
N·Y·阿布多
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN102523443A publication Critical patent/CN102523443A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/93Run-length coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/41Bandwidth or redundancy reduction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/164Feedback from the receiver or from the transmission channel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/156Availability of hardware or computational resources, e.g. encoding based on power-saving criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Transfer Between Computers (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明涉及用于图像压缩的熵编码器。本发明的示例实施例提供了在实时图像压缩中使用的快速熵编码器/解码器。一种处理用于传送到远程计算设备的图形数据的方法可包括接收表示将被呈现的客户机屏幕的图形数据,接收指示用于传送的可用带宽的信息,并且基于该信息确定可用带宽满足预定的阈值,并使用固定位大小的编码流对图形数据进行熵编码,其中行程0以固定位大小的可变数量的单位编码,并且使用最近使用过的文字值的高速缓存中的条目或者固定位大小的可变数量的单位二者中的一个对文字值进行编码。

Description

用于图像压缩的熵编码器
技术领域
本发明涉及图像压缩,尤其是图像压缩中使用的熵编码器。
背景技术
网络通信的一种日益增加的流行形式一般被称为远程呈现系统,其能使用诸如远程桌面协议(RDP)以及独立计算体系结构(ICA)来与远程客户机共享在服务器上的桌面和在服务器上执行的其他应用。这样的计算系统通常将键盘按压和鼠标点击或选择从客户机传送到服务器,通过网络连接(例如,因特网)在另一方向上转播回屏幕更新。由此,当实际上仅仅向客户机设备发送如在服务器侧上显现的桌面或应用的屏幕截图时,用户具有好像他的或她的机器正在完全地本地操作的体验。
在远程桌面环境中,表示将要传送给客户机的图形的数据通常由服务器压缩,通过网络从服务器传送到客户机,并由客户机解压缩并且显示在本地用户显示器上。对数据进行编码的处理通常需要相当大的处理器计算周期来压缩和解压缩数据。这样的处理需求可能对从服务器到客户机的编码和解码等待时间产生直接的影响并且对远程用户体验造成负面影响。
发明内容
远程呈现系统的一个问题是此类系统往往偏爱以处理器性能为代价的数据压缩。很多系统假定带宽更有可能受到限制,并由此牺牲处理器性能以便获得更高级别的数据压缩,由此减少需要通过受限带宽数据链接传送的数据量。但是,如今很多远程呈现客户机是可使用较低速度处理器但可访问充足带宽的低端设备。在这种情况下,即使意味着减少压缩,也可使用更简单的压缩器和较少计算需求的压缩技术来改善整体性能和用户体验。
在各个实施例中,公开了用于在实时图像压缩中使用的快速熵编码器/解码器的方法和系统。例如,一种处理用于传送到远程计算设备的图形数据的方法可包括接收表示将被呈现的客户机屏幕的图形数据,接收指示用于传送的可用带宽的信息,并且基于该信息确定出可用带宽满足预定的阈值,并使用固定位大小的编码流来对图形数据进行熵编码,其中行程0以固定位大小的可变数量的单位编码,并且使用最近使用过的文字值的高速缓存中的条目或者固定位大小的可变数量的单位二者中的一个对文字值进行编码。
附图说明
参考附图来进一步描述根据本说明书的用于处理图像数据以供传输到远程计算设备的系统、方法和计算机可读介质,在附图中:
参考附图来进一步描述根据本说明书的用于在虚拟环境内更改视图观点的系统、方法和计算机可读介质,在附图中:
图1和2描绘了其中可实现本发明的各方面的示例计算机系统。
图3描绘了用于实施本发明的各方面的操作环境。
图4描绘了用于实施本发明的各方面的操作环境。
图5示出了包括用于实现远程桌面服务的电路的计算机系统。
图6示出了包括用于实现远程服务的电路的计算机系统。
图7示出了解码过程的示例。
图8示出了编码过程的示例。
图9示出了用于处理要传送到客户计算机的图形数据的操作过程的示例。
图10示出了用于处理要传送到客户计算机的图形数据的操作过程的示例。
图11示出了用于处理要传送到客户计算机的图形数据的示例系统。
具体实施方式
概括的计算环境
在以下描述和附图中阐明了某些具体细节,以提供对本发明的各个实施例的全面理解。通常与计算和软件技术相关联的某些公知细节将不在以下公开中描述,以避免不必要地使本发明的各实施例晦涩难懂。此外,相关领域的普通技术人员可以理解,他们可以无需以下描述的细节中的一个或多个而实现本发明的其它实施例。最后,尽管在以下公开中参考了步骤和序列来描述各个方法,但是如此的描述是为了提供本发明的实施例的清楚实现,且步骤以及步骤序列不应被认为是实现本发明所必需的。
应该理解,此处描述的各种技术可以结合硬件或软件,或在适当时结合两者的组合来实现。因此,本发明的方法和装置或其某些方面或部分,可以采用包含在诸如软盘、CD-ROM、硬盘驱动器或任何其它机器可读存储介质等有形介质中的程序代码(即,指令)的形式,其中,当程序代码被加载至诸如计算机等机器并由其运行时,该机器成为用于实现本发明的装置。在程序代码在可编程计算机上执行的情况下,计算设备通常包括处理器、该处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备、以及至少一个输出设备。一个或多个程序可以例如,通过使用API、可重用控件等来实现或利用结合本发明描述的过程。这样的程序优选地用高级过程语言或面向对象编程语言来实现,以与计算机系统通信。然而,如果需要,该程序可以用汇编语言或机器语言来实现。在任何情形中,语言可以是编译语言或解释语言,且与硬件实现相结合。
远程桌面系统是维护可由客户计算机系统远程地执行的应用程序的计算机系统。输入是在客户计算机系统处被输入的,并通过网络(例如,使用基于国际电信联盟(ITU)T.120系列协议等协议,如远程桌面协议(RDP))传送到终端服务器上的应用程序。该应用程序如同该输入是在终端服务器处送入的那样来处理该输入。该应用程序响应于所接收到的输入生成输出,并且通过网络将该输出传送到客户机。
实施例可在一个或多个计算机上执行。图1和2以及下面的讨论旨在提供其中可实现本发明的合适的计算环境的简要概括描述。本领域的技术人员可以理解,计算机系统200、300可具有参照图1和2的计算机100描述的组件中的一部分或全部。
贯穿本发明使用的术语电路可包括诸如硬件中断控制器、硬盘驱动器、网络适配器、图形处理器、基于硬件的视频/音频编解码器等硬件组件,以及用于操作这些硬件的固件/软件。术语电路还可包括被配置成通过固件或通过开关集来以特定方式执行功能的微处理器,或一个或多个逻辑处理器,例如,多核通用处理单元的一个或多个核。此示例中的逻辑处理器可以通过从存储器,例如,RAM、ROM、固件和/或虚拟存储器中加载的体现可操作以执行功能的逻辑的软件指令来配置。在其中电路包括硬件和软件的组合的示例实施例中,实现者可以编写具体化逻辑的源代码,该源代码随后被编译成可由逻辑处理器执行的机器可读代码。因为本领域技术人员可以明白现有技术已经进化到硬件、软件或硬件/软件的组合之间几乎没有差别的地步,因而选择硬件还是软件来实现功能只是一个设计选择。因此,由于本领域的技术人员可以理解软件进程可被变换成等效的硬件结构,且硬件结构本身可被变换成等效的软件进程,因此选择硬件实现或是软件实现是无足轻重的且留给了实现者。
图1描绘了以本发明的各方面来配置的计算系统的示例。计算系统可包括计算机20等,其中包括处理单元21、系统存储器22,以及将包括系统存储器在内的各种系统组件耦合到处理单元21的系统总线23。系统总线23可以是若干类型的总线结构中的任一种,包括使用各种总线体系结构中的任一种的存储器总线或存储器控制器、外围总线,以及局部总线。系统存储器包括只读存储器(ROM)24和随机存取存储器(RAM)25。基本输入/输出系统26(BIOS)被存储在ROM 24中,该基本输入/输出系统26包含了诸如在启动期间帮助在计算机20内的元件之间传输信息的基本例程。计算机20还可包括用于对硬盘(未示出)进行读写的硬盘驱动器27,用于对可移动磁盘29进行读写的磁盘驱动器28,以及用于对可移动光盘31,如CD ROM或其它光介质进行读写的光盘驱动器30。在一些示例实施例中,实施本发明的各方面的计算机可执行指令可存储在ROM 24、硬盘(未示出)、RAM 25、可移动磁盘29、光盘31和/或处理单元21的高速缓存中。硬盘驱动器27、磁盘驱动器28,以及光盘驱动器30分别通过硬盘驱动器接口32、磁盘驱动器接口33,以及光盘驱动器接口34连接到系统总线23。驱动器以及它们相关联的计算机可读介质为计算机20提供了对计算机可读指令、数据结构、程序模块,及其他数据的非易失性存储。虽然此处所描述的环境使用了硬盘、可移动磁盘29、以及可移动光盘31,但是,那些本领域普通技术人员应该理解,在操作环境中也可以使用诸如盒式磁带、闪存卡、数字视频盘、伯努利磁带盒、随机存取存储器(RAM)、只读存储器(ROM)等等之类的可以存储可由计算机进行访问的数据的其他类型的计算机可读介质。
可以有若干个程序模块存储在硬盘、磁盘29、光盘31、ROM 24,或RAM25上,包括操作系统35、一个或多个应用程序36、其他程序模块37、以及程序数据38。用户可以通过诸如键盘40和指向设备42之类的输入设备向计算机20中输入命令和信息。其它输入设备(未示出)可包括话筒、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等。这些和其它输入设备常通过耦合到系统总线的串行端口接口46连接到处理单元21,但也可通过其它接口连接,如并行端口、游戏端口或通用串行总线(USB)。显示器47或其他类型的显示设备也可经由诸如视频适配器48等接口连接至系统总线23。除了显示器47之外,计算机通常还包括其他外围输出设备(未示出),如扬声器和打印机。图1的系统也包括主机适配器55、小型计算机系统接口(SCSI)总线56,以及连接到SCSI总线56的外部存储设备62。
计算机20可使用至诸如远程计算机49之类的一个或多个远程计算机的逻辑连接在网络化环境中操作。远程计算机49可以是另一计算机、服务器、路由器、网络PC、对等设备或其他常见的网络节点、虚拟机,并通常包括上文相对于计算机20所描述的许多或全部元件,但是在图1中只示出了存储器存储设备50。图1所描绘的逻辑连接可以包括局域网(LAN)51和广域网(WAN)52。这样的网络环境常见于办公室、企业范围计算机网络、内联网和因特网。
当用于LAN网络环境中时,计算机20可通过网络接口或适配器53连接到LAN 51。当用于WAN网络环境中时,计算机20通常包括调制解调器54,或用于通过诸如因特网之类的广域网52建立通信的其他手段。或为内置或为外置的调制解调器54可经由串行端口接口46连接到系统总线23。在联网环境中,相对于计算机20所描述的程序模块或其部分可被存储在远程存储器存储设备中。可以理解,所示出的网络连接只是示例,也可以使用用于在计算机之间建立通信链路的其他装置。此外,虽然可构想本发明的许多实施例尤其适用于计算机系统,然而在本文中不意味着将本发明限于这些实施例的公开。
现在参考图2,描绘了示例性计算系统100的另一实施例。计算机系统100可包括逻辑处理器102,如执行核。尽管示出了一个逻辑处理器102,但在其他实施例中,计算机系统100可具有多个逻辑处理器,例如每一处理器基板有多个执行核,和/或各自可具有多个执行核的多个处理器基板。如图所示,各种计算机可读存储介质110可由一个或多个系统总线互联,系统总线将各种系统组件耦合到逻辑处理器102。系统总线可以是几种类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用各种总线体系结构中的任一种的局部总线。在示例实施例中,计算机可读存储介质110可以包括例如随机存取存储器(RAM)104、存储设备106(例如电机硬盘驱动器、固态硬盘驱动器等)、固件108(例如闪速RAM或ROM)、以及可移动存储设备118(例如CD-ROM、软盘、DVD、闪速驱动器、外部存储设备等)。本领域的技术人员应当理解,可使用其他类型的计算机可读存储介质,如磁带盒、闪存卡、数字视频盘、柏努利盒式磁带。
计算机可读存储介质为计算机100提供了对处理器可执行指令122、数据结构、程序模块和其他数据的非易失性存储。基本输入/输出系统(BIOS)120可被存储在固件108中,它包含帮助在诸如启动期间在计算机系统100内的各元件之间传递信息的基本例程。包括操作系统和/或应用程序的多个程序可被存储在固件108、存储设备106、RAM 104和/或可移动存储设备118上,并且可由逻辑处理器102来执行。
命令和信息可由计算机100通过输入设备116来接收,输入设备可包括但不限于键盘和指向设备。其他输入设备可以包括话筒、操纵杆、游戏手柄、扫描仪等等。这些和其他输入设备常通过耦合到系统总线的串行端口接口连接到逻辑处理器102,但也可通过其他接口连接,如并行端口、游戏端口或通用串行总线(USB)。显示器或其他类型的显示设备也可经由诸如视频适配器等可以是图形处理器112的一部分或可连接到图形处理器112的接口来连接到系统总线。除了显示器之外,计算机通常包括其他外围输出设备(未示出),如扬声器和打印机。图1的示例性系统还可包括主适配器、小型计算机系统接口(SCSI)总线和连接到SCSI总线的外部存储设备。
计算机系统100可使用至一个或多个远程计算机,如远程计算机的逻辑连接在联网环境中操作。远程计算机可以是另一计算机、服务器、路由器、网络PC、对等设备或其他常见的网络节点,并且通常包括上面关于计算机系统100所述的许多或全部元件。
当在LAN或WAN联网环境中使用时,计算机系统100可通过网络接口卡114连接至LAN或WAN。NIC 114可以是内置或外置的,其可以连接到系统总线。在联网环境中,相对于计算机系统100所描述的程序模块或其部分可被储存在远程存储器存储设备中。可以理解,所描述的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其他手段。此外,虽然可构想本发明的许多实施例尤其适用于计算机化的系统,然而在本说明中不意味着将本发明限于那些实施例。
远程桌面系统是维护可由客户机计算机系统远程地执行的应用程序的计算机系统。输入是在客户机计算机系统处被输入的,并通过网络(例如,使用基于国际电信联盟(ITU)T.120系列协议等协议,如远程桌面协议(RDP))传送到终端服务器上的应用程序。该应用程序如同该输入是在终端服务器处送入的那样来处理该输入。该应用程序响应于所接收到的输入生成输出,并且该输出通过网络传送到客户机计算机系统。客户机计算机系统呈现该输出数据。由此,接收输入,并且在客户机计算机系统处呈现输出,而处理实际上是在终端服务器处发生的。会话可包括诸如桌面之类的命令行界面(shell)和用户界面、跟踪该桌面内的鼠标移动的子系统、将图标上的鼠标点击转换成实现程序实例的命令的子系统等等。在另一示例实施例中,会话可包括应用程序。在该示例中,当呈现应用程序时,桌面环境仍可被生成并对用户隐藏。应当理解,前述讨论是示例性的,且当前公开的主题可以在各种客户机/服务器环境中实现且不限于特定终端服务产品。
即使不是全部,也是在大多数远程桌面环境中,输入数据(在客户计算机系统处送入的)通常包括表示对应用的命令的鼠标和键盘数据,且输出数据(由终端服务器处的应用程序生成)通常包括用于在视频输出设备上显示的视频数据。许多远程桌面环境也包括扩展到传输其他类型的数据的功能。
可使用通信信道来通过允许插件经由RDP连接传输数据来扩展RDP协议。存在许多这样的扩展。诸如打印机重定向、剪贴板重定向、端口重定向等特征使用通信信道技术。由此,除了输入和输出数据之外,可以有许多需要来传输数据的通信信道。因此,可能有传输输出数据的偶然请求和传输其他数据的一个或多个信道请求争用可用的网络带宽。
现在参考图3和4,所描绘的是被配置成实现虚拟机的计算机系统的高级框图。如图所示,计算机系统100可包括图1和2中所描述的元件,以及可用于实现虚拟机的组件。一个这样的组件是在本领域中也可被称为虚拟机监控程序的系统管理程序(hypervisor)202。所描绘的实施例中的系统管理程序202可被配置成控制并仲裁对计算机系统100的硬件的访问。广泛而言,系统管理程序202可以生成称为分区的执行环境,如子分区1到子分区N(其中N是大于或等于1的整数)。在各实施例中,子分区可被认为是系统管理程序202所支持的基本隔离单位,即,每一子分区可被映射到在系统管理程序202的控制下的一组硬件资源,例如存储器、设备、逻辑处理器周期等,和/或父分区,并且系统管理程序202可以隔离一个分区使其无法访问另一分区的资源。在各实施例中,系统管理程序202可以是独立软件产品,操作系统的一部分、被嵌入在主板的固件内、专门的集成电路,或其组合。
在以上示例中,计算机系统100包括父分区204,父分区在开源社区中也可被认为是域0。父分区204可被配置成通过使用虚拟化服务提供者228(VSP)来向在子分区1-N中执行的客操作系统提供资源,虚拟化服务提供者在开源社区中也被称为后端驱动程序。在此示例体系结构中,父分区204可以选通对底层硬件的访问。VSP 228可用于通过虚拟化服务客户端(VCS)来复用到硬件资源的接口,虚拟化服务客户端在开源社区中也被称为前端驱动程序。每一子分区可包括一个或多个虚拟处理器,例如客操作系统220到222可管理并调度线程在其上执行的虚拟处理器230到232。一般而言,虚拟处理器230到232是提供带有特定体系结构的物理处理器的表示的可执行指令和相关联状态信息。例如,一个虚拟机可具有带有英特尔x86处理器特性的虚拟处理器,而另一虚拟处理器可具有PowerPC处理器的特性。本例中的虚拟处理器可被映射到计算机系统的逻辑处理器,使得实现虚拟处理器的指令将受到逻辑处理器的支持。如此,在这些示例实施例中,多个虚拟处理器可以同时执行,而同时例如另一逻辑处理器正执行系统管理程序指令。一般而言,且如图所示,分区中的虚拟处理器、各种VCS以及存储器的组合可被认为是虚拟机,如虚拟机240或242。
一般而言,客操作系统220到222可包括诸如,例如,来自
Figure BSA00000590476000081
Figure BSA00000590476000091
开放源代码社区等等的操作系统之类的任何操作系统。客操作系统可包括用户/内核运行模式,并且可具有能包括调度器、存储器管理器等的内核。内核模式可包括逻辑处理器中的执行模式,该执行模式授予对至少特权处理器指令的访问。每一客操作系统220到222可具有相关联的文件系统,该文件系统上存储有诸如终端服务器、电子商务服务器、电子邮件服务器等应用程序以及客操作系统本身。客操作系统220-222可以调度线程来在虚拟处理器230-232上执行,并可以实现这样的应用程序的实例。
现在参考图4,所示是可用于实现虚拟机的替换体系结构。图4描绘了类似于图3的组件,但在该示例实施例中,系统管理程序202可包括虚拟化服务提供者228和设备驱动程序224,并且父分区204可包含配置实用程序236。在该体系结构中,系统管理程序202可执行与图2中的系统管理程序202相同或相似的功能。图4中的系统管理程序202可以是独立的软件产品、操作系统的一部分、被嵌入在主板的固件内,或者系统管理程序202的一部分可以由专用集成电路来实现。在该示例中,父分区204可具有可用于配置系统管理程序202的指令,然而,硬件访问请求可由系统管理程序202来处理而非传递到父分区204。
现在参考图5,计算机100可包括被配置成向连接的客户机提供远程桌面服务的电路。在一示例实施例中,所描绘的操作系统400可直接在硬件上执行,或者客操作系统220或222可以由诸如VM 216或VM 218等虚拟机来实现。底层硬件208、210、234、212和214在所示类型的虚线中指示以标识该硬件可被虚拟化。
远程服务可被提供给诸如客户机401等至少一个客户机(尽管描绘了一个客户机,但远程服务可被提供给更多个客户机)。示例客户机401可包括由被配置成将用户输入定向到远程服务器会话并显示该会话生成的用户界面信息的硬件来实现的计算机终端。在另一实施例中,客户机401可以由一计算机来实现,该计算机包括与图1b的计算机100中的元件相似的元件。在该实施例中,客户机401可包括被配置为实现操作系统的电路以及被配置为模拟终端的功能(例如,可由一个或多个逻辑处理器102执行的远程桌面客户机应用程序)的电路。本领域技术人员能够理解,被配置为实现操作系统的电路也可以包括被配置为模拟终端的电路。
每一连接的客户机可具有允许该客户机访问存储在计算机100上的数据和应用程序的会话(诸如会话404)。一般而言,应用程序和某些操作系统组件可被加载到分配给会话的存储器区域中。由此,在某些实例中,某些OS组件可被派生N次(其中N表示当前会话数)。这些各种OS组件可向操作系统内核418请求服务,操作系统内核例如能够管理存储器,方便盘读/写,并且配置来自每一会话的线程以在逻辑处理器102上执行。可被加载到会话空间的某些示例子系统可包括生成桌面环境的子系统、跟踪桌面内的鼠标移动的子系统、将图标上的鼠标点击转换成实现程序实例的命令的子系统等。实现这些服务,例如跟踪鼠标移动的进程用与该会话相关联的标识符来标记,并且被加载到分配给该会话的存储器区域中。
会话可以由例如进程等会话管理器416来生成。例如,会话管理器416可以通过如下方式来初始化和管理每一远程会话:为会话空间生成会话标识符;向会话空间分配存储器;以及在分配给会话空间的存储器中生成系统环境变量和子系统进程的实例。会话管理器416可在操作系统400接收到对远程桌面会话的请求时被调用。
连接请求可首先由例如远程桌面协议(RDP)栈等传输栈410来处理。传输栈410指令可配置逻辑处理器102来监听特定端口上的连接消息,并将这些消息转发到会话管理器416。当生成会话时,传输栈410可为每一会话实例化远程桌面协议栈实例。栈实例414是可为会话404生成的示例栈实例。一般而言,每一远程桌面协议栈实例可被配置成将输出路由到相关联的客户机,并将客户机输入路由到用于适当的远程会话的环境子系统444。
如图所示,在实施例中,应用程序448(尽管示出了一个,但其他也可执行)可执行并生成位数组。数组可由图形接口446来处理,图形接口进而可呈现可被存储在存储器中的位图,如像素值数组。如图所示,可实例化远程显示子系统420,该子系统可捕捉呈现调用,并通过网络经由用于会话的栈实例414来将该调用发送给客户机401。
除了遥控图形和音频之外,也可实例化即插即用重定向器458以便遥控诸如打印机、mp3播放器、客户机文件系统、CD ROM驱动器等不同设备。即插即用重定向器458可从客户机侧组件接收信息,该信息标识了耦合到客户机401的外围设备。即插即用重定向器458然后可配置操作系统400来加载用于客户机401的外围设备的重定向设备驱动程序。重定向设备驱动程序可接收来自操作系统400的访问外围设备的调用,并通过网络将该调用发送到客户机401。
如上所讨论的,客户机可使用诸如远程桌面协议(RDP)等用于提供远程呈现服务的协议来连接到使用终端服务的资源。当远程桌面客户机经由终端服务器网关连接到终端服务器时,该网关可打开与终端服务器的套接字连接,并将客户机通信重定向到远程呈现端口或专用于远程访问服务的端口。网关还可使用通过HTTPS传送的终端服务器网关协议来执行与客户机的特定的网关专用交换。
转向图6,所描绘的是包括用于实现远程服务并合并本发明的各方面的电路的计算机系统100。如图所示,在实施例中,计算机系统100可包括类似于图2和图5中所描绘的那些组件,并可实现远程呈现会话。在本发明的一个实施例中,远程呈现会话可包括控制台会话的各方面,例如使用计算机系统为用户派生的会话以及远程会话。类似于上述内容,会话管理器416可通过启用/禁用各组件以实现远程呈现会话来初始化并管理远程呈现会话。
可被加载到远程呈现会话中的一组组件是启用高保真遥控的控制台组件,即利用了3D硬件所渲染的3D图形和2D图形的组件。
3D硬件所渲染的3D/2D图形可使用驱动程序模型来访问,该驱动程序模型包括用户模式驱动程序522、API 520、图形内核524以及内核模式驱动程序530。应用程序448(或诸如生成3D图形的用户界面等任何其他进程)可生成API构造并将其发送到诸如来自微软
Figure BSA00000590476000111
的Direct3D等应用程序编程接口520(API)。API 520进而可与用户模式驱动程序522通信,用户模式驱动程序522可生成在被表示为顶点和常量的计算机图形中使用的例如基本几何形状等图元,这些图元被用作用于其他形状的构件块,并将这些图元存储在例如存储器页等缓冲区中。在一个实施例中,应用程序448可以声明它将如何使用该缓冲区,例如它将在缓冲区中存储什么类型的数据。诸如视频游戏等应用程序可使用动态缓冲区来存储用于化身的图元,并可使用静态缓冲区来存储诸如表示建筑物或森林等将不常改变的数据。
继续对驱动程序模型的描述,应用程序可用图元填充缓冲区并发出执行命令。当应用发出执行命令时,缓冲区可由内核模式驱动程序530追加到运行列表,并由图形内核调度器528来调度。例如应用程序或用户界面等每一图形源可具有一上下文及其自己的运行列表。图形内核524可被配置成调度各个上下文来在图形处理单元112上执行。GPU调度器528可由逻辑处理器102执行,并且调度器528可向内核模式驱动器530发出命令来渲染缓冲区的内容。栈实例414可被配置成接收命令并通过网络将缓冲区的内容发送到客户机401,在客户机401处,缓冲区可由客户机的GPU来处理。
现在所示的是结合调用远程呈现服务的应用程序所使用的虚拟化GPU的操作的示例。参考图6,在一实施例中,虚拟机会话可由计算机100生成。例如,会话管理器416可由逻辑处理器102执行并且可初始化包括特定远程组件的远程会话。在该示例中,所派生的会话可包括内核418、图形内核524、用户模式显示驱动程序522和内核模式显示驱动程序530。用户模式驱动程序522可生成可被存储在存储器中的图元。例如,API 520可包括可被展示给诸如用户界面等用于操作系统400或应用程序448的进程的接口。进程可向API 420发送高级API命令,如点列表(Point List)、线列表(Line List)、线带(LineStrip)、三角形列表(Triangle List)、三角形带(Triangle Strip)、或三角形扇(Triangle Fan)。API 520可接收这些命令,并将其转换成用于用户模式驱动程序522的命令,用户模式驱动程序522然后可生成顶点并将其存储在一个或多个缓冲区中。GPU调度器528可运行并确定渲染缓冲区的内容。在该示例中,可捕捉对服务器的图形处理单元112的命令,并且可将缓冲区的内容(图元)经由网络接口卡114发送到客户机401。在一个实施例中,API可由各组件能与其接口的会话管理器416来展示,以确定虚拟GPU是否可用。
在实施例中,诸如图3或图4的虚拟机240等虚拟机可被实例化,并且虚拟机可担当用于操作系统400的执行的平台。在该示例中,客操作系统220可具体化操作系统400。虚拟机可在通过网络接收到连接请求时被实例化。例如,父分区204可包括传输栈410的实例,并且可被配置成接收连接请求。父分区204可响应于连接请求连同包括实现远程会话的能力的客操作系统一起初始化虚拟机。连接请求然后可被传递给客操作系统220的传输栈410。在该示例中,每一远程会话可在由其自己的虚拟机执行的操作系统上被实例化。
在一个实施例中,可实例化虚拟机,并且可执行具体化操作系统400的客操作系统220。类似于上述内容,虚拟机可在通过网络接收到连接请求时被实例化。远程会话可由操作系统生成。会话管理器416可被配置成确定该请求是针对支持3D图形渲染的会话的,并且会话管理器416可加载控制台会话。除了加载控制台会话之外,会话管理器416可为该会话加载栈实例414’并将系统配置成捕捉由用户模式显示驱动程序522生成的图元。
用户模式驱动程序522可生成可被捕捉并存储在传输栈410可访问的缓冲区中的图元。内核模式驱动程序530可将缓冲区追加到应用程序的运行列表,并且GPU调度器528可运行并确定何时对缓冲区发出渲染命令。当调度器528发出渲染命令时,该命令可由例如内核模式驱动程序530捕捉并经由栈实例414’发送到客户机401。
GPU调度器528可执行并确定发出渲染缓冲区的内容的指令。在该示例中,与渲染指令相关联的图元可经由网络接口卡114发送到客户机401。
在一实施例中,至少一个内核模式进程可由至少一个逻辑处理器112执行,并且至少一个逻辑处理器112可同步渲染存储在不同缓冲区中的顶点。例如,可类似于操作系统调度器来操作的图形处理调度器528可调度GPU操作。GPU调度器528可将单独的顶点缓冲区合并成正确的执行次序,使得客户机401的图形处理单元以允许它们被正确地渲染的次序来执行命令。
诸如视频游戏等进程的一个或多个线程可映射多个缓冲区且每一线程可发出绘制命令。顶点的标识信息,例如为每个缓冲区、每个顶点或缓冲区中的每批顶点生成的信息可以被发送到GPU调度器528。信息可与关联于来自相同的或其他进程并用于同步各个缓冲区的渲染的顶点的标识信息一起存储在表中。
诸如文字处理程序等应用程序可执行并声明例如两个缓冲区——一个用于存储用于生成3D菜单的顶点,而另一个存储用于生成将填充该菜单的字母的命令。应用程序可映射缓冲区,并发出绘制命令。GPU调度器528可确定执行两个缓冲区的次序,使得菜单与字母一起以看上去令人满意的方式来渲染。例如,其他进程可以在相同或基本相似的时间发出绘制命令,并且如果顶点不是同步的,则来自不同进程的不同线程的顶点可能在客户机401上异步地渲染,从而使得所显示的最终图像看上去是混乱或混杂的。
可使用批量压缩器450在将数据流发送到客户机401之前压缩图元。在一实施例中,批量压缩器450可以是栈实例414的用户模式(未示出)或内核模式组件,并且可被配置为在被发送到客户机401的数据流中查找相似的模式。在该实施例中,由于批量压缩器450从多个应用程序接收顶点流而不是接收多个API构造,因此批量压缩器450具有较大的顶点数据集来筛选,以便找到压缩的机会。即,由于用于多个进程的顶点而非不同的API调用被遥控,因此存在批量压缩器450将能在给定流中找到相似模式的更大机会。
在实施例中,图形处理单元112可被配置成对存储器使用虚拟寻址而不是物理地址。由此,被用作缓冲区的存储器页可从视频存储器分页到系统RAM或盘。栈实例414’可被配置成获得缓冲区的虚拟地址,并在捕捉到来自图形内核528的渲染命令时发送来自该虚拟地址的内容。
可配置操作系统400,例如可加载各种子系统和驱动程序来捕捉图元并将其发送到诸如客户机401等远程计算机。类似于上述内容,会话管理器416可由逻辑处理器102执行并且包括特定远程组件的会话可被初始化。在该示例中,所派生的会话可包括内核418、图形内核524、用户模式显示驱动程序522和内核模式显示驱动程序530。
图形内核可调度GPU操作。GPU调度器528可将单独的顶点缓冲区合并成正确的执行次序,使得客户机401的图形处理单元以允许它们被正确地渲染的次序来执行命令。
参考图7,根据本发明的一个实施例,表示示出了解码过程的框图。编码过程在图8中示出。首先可将已编码的瓦块穿过RLGR解码器900以生成量化的瓦块系数。这可以在CPU上执行
可使用SSE2指令在CPU上实现解量化705。在解量化之后,瓦块的三个组件的十个子带可被复制到格式L16的三个Direct3D纹理缓冲区中,每个Y、U和V中各一个。这三个纹理可被上载到GPU上,并可由逆DWT阶段710用作输入。
用于实现以上提到的分区的所有这些变体仅仅是示例性实现,并且此处没有一样应被解释为将本发明限于任何特定虚拟化方面。
熵编码器
在虚拟桌面或远程呈现会话中,可在服务器处为每一用户渲染用户图形和视频。然后将所得位图发送到客户机以供显示和交互。为了降低网络上的带宽要求,可在发送到客户机之前对位图进行压缩。期望压缩技术是高效的并且等待时间短。
此处所描述的是用于对位图和其他图形数据进行编码和解码的系统和方法。编码系统可包括具有瓦块化模块的瓦块化系统,该瓦块化模块最初将源图像数据划分成数据瓦块。然后,帧差分模块可仅将经更改的数据瓦块输出到各个处理模块,这些处理模块将经更改的数据瓦块转换成相应的瓦块分量。在实施例中,量化器可根据可调量化参数来对瓦块分量执行压缩过程以生成已压缩的数据。然后,自适应熵编码器选择器可选择多个熵编码器中的一个来执行熵编码过程,由此产生已编码的数据。熵编码器也可利用反馈回路来根据当前传输带宽特性来调整量化参数。此处所涉及的压缩、编码和解码图形数据的过程大致使用在共同转让的、名称为“System And Method For Effectively EncodingAnd Decoding Electronic Information(用于有效地编码和解码电子信息的系统和方法)”的美国专利7,460,725以及在2009年3月6日提交的名称为“FrameCapture,Encoding,And Transmission Management(帧捕捉、编码和传输管理)”的美国专利申请12/399,302中所描述的一个或多个方法和系统,其通过整体引用合并于此。
在此处所公开的各个方法和系统中,可使用对于前述各个过程的处理和操作的改进来提供更高效的处理,并且由此提供更为及时和丰富的用户体验。方法和系统还提供在网络和/或系统资源正提供充足的带宽和/或客户机设备具有较低处理速度或资源时,在提供这样的图像支持方面的改进。此处所公开的用于渲染、编码及传送图形数据的实施例可使用硬件和软件进程的各种组合来实现。在某些实施例中,各功能可完全用硬件来执行。在其他实施例中,各功能可完全用软件来执行。在还有一些实施例中,各功能可使用硬件和软件进程的组合来实现。这些进程还可使用一个或多个CPU和/或诸如图形处理单元(GPU)或其他专用图形渲染设备的一个或多个专用处理器来实现。
此外,尽管以下描述是在远程呈现系统的上下文中提供的,但可以理解可在其中图形数据被编码并压缩以供通过网络进行传递的任何类型的系统中实现所公开的实施例。
各个实施例可包括对离散小波变换(DWT)功能的使用,来将各瓦块的各个YUV分量变换成相应的YUV瓦块子带。量化器功能可通过利用适当的量化技术来执行量化过程以压缩瓦块子带。量化器功能可通过根据可由经由反馈回路从熵编码器接收到的自适应量化参数所指定的具体压缩比来降低瓦块的比特率,来生成已压缩的图像数据。
在一个实施例中,可向GPU提供位图,该位图具有需要被压缩的经改变的矩形。可将该位图进一步划分成逻辑瓦块,并且仅对在已改变的矩形内变化的瓦块进行编码和压缩。以此方式,该过程与维护并显示所得已解码的图像的客户机协同作用,而有效地实现了高速缓存方案。
采用远程呈现压缩算法来将显示流的带宽降低到通过局域网、广域网和低带宽网络进行传送所能接收的水平。这种算法通常在服务器侧的CPU时间与较低的期望带宽之间折衷。
可使用图像压缩器,该图像压缩器可采用称作熵编码器的阶段(phase)。熵编码器功能可执行熵编码过程来生成已编码的数据。在某些实施例中,熵编码过程还通过用适当的代码来替换从量化器接收到的已压缩的图像数据中的相应的位模式,来降低已压缩的图像数据的比特率。
远程呈现系统中所采用的熵编码通常将CPU性能(即,速度)与压缩率进行平衡。可以以合理的CPU速度调节熵编码器以供良好的压缩。典型的熵编码器包括行程长度(Run-Length)、哈夫曼(Huffman)、算术以及Golomb-Rice编码器的变型。为远程呈现应用程序设计高效熵编码器的主要问题之一是要被编码的整数块的统计数据中通常存在较大差异。研究已经表明在大多数情况下,量化之前的数据具有相比高斯分布显著地更集中在0附近的概率分布。本发明是关于实现简化的熵编码器,该熵编码器被配置为提高编码和解码速度而以可压缩性损失为潜在代价。然而,在很多情况下这种折衷是可以接受的,并且在受低速CPU而非带宽限制的场景中是更合乎需要的。最终结果是可以提供比当前编码器/解码器快2或3倍而损失10%到20%可压缩性的编码器/解码器。
这样的编码器/解码器可以是有用的,因为它允许优化处理器速度比节省带宽的每个比特具有更高优先级的场景。例如,使用更简单的压缩器的较低端客户机设备可以获得更好的性能以允许更快的处理。通常优化远程呈现系统以减少带宽,而不考虑CPU成本和功能。在如今很多系统中,带宽可以是充裕的,而客户机设备可以是诸如机顶盒或瘦客户机的更简单的设备。
在一个实施例中,熵编码器可被配置为避免使用可变比特流格式。采用可变比特流进行高效地编码和解码总是更慢的。在实施例中,编码器可被配置为使用半字节大小(又名四位)的代码来实现常规大小的固定大小编码流。通过使用这样的流,对该流解码可以更快,并且以少得多的CPU成本安全地(使用全溢出检查)对其解码。
在一个示例方案中,编码器对以下类型的操作进行编码:
1)行程0(是熵编码器的常见输入)——行程0以与大多数行程非常短的统计观察相匹配的可变数量的四倍编码
2)文字值——文字值或者被编码为可见的最近文字值表(高速缓存)中的最少最近使用(LRU)命中,或者被编码为从较小的值更有可能发生的统计属性中受益的可变数量的四元组。
在这两种情形中,实际上存在两种流:(a)操作码的四元流以及(b)大值流。行程长度或者文字长度的某些操作码仅指示“获得大值流中的下一个值”。
可以使用基本的多字节编码方案对大值流进行编码,该编码方案对较小的值比大的值使用更少的字节,但同时保证仅在固定字节边界上运行。通过使用这样的编码方案,四元流和值流二者可被解码而无需复杂的位移位或可变位解码方案,从而允许比更通用/复杂的熵编码器(例如,基于RLGR或各种哈夫曼的方案)快得多的性能。这样的简化的编码器可被配置为使得可对任意数量的位(例如,从1到32位)进行编码。在更复杂的编码中,由于可变位和必要的处理,解码变得在计算上富有挑战性,必要的处理通常需要很多编码分支以及处理期间的大量簿记。使用该简化的方案通过使用常规大小的结构(例如,四元组)允许对此类复杂度进行最小化。在该方案中,输出符号都不多于四位,并且数据是没有移位或滚动的多个字节。字节可包括如果需要可被并行处理的两段代码。此外,如果已知四元组的数量,则可避免缓冲区溢出。在使用典型远程呈现系统的试验中,测量到使用当前可用的CPU仅损失10-20%的可压缩性而增加2-3倍的性能。
在某些实施例中,可以提供用于在更复杂/慢的熵编码器和此处描述的更简单的熵编码器之间进行切换的逻辑。例如,参考图9,远程呈现系统可以提供至少两个编码器910和920。编码器910可以是诸如实现RLGR的复杂的熵编码器。编码器920可以是根据本发明的简化的编码器。取决于网络930的状况,系统可以选择编码器910或920之一对数据900进行编码。例如,如果网络状况指示网络拥塞并且可用带宽受限,则可以选择复杂的编码器910对数据900进行编码,从而最小化要通过网络930传送的数据量。类似地,如果网络状况指示网络并未拥塞,则可以选择简化的编码器920对数据900进行编码,从而在客户机提供更快的处理器性能。
附件A提供了根据本发明的简化的编码器的示例实现。
图10描绘了用于处理传送到客户机计算机的图形数据的示例性操作过程,包括操作1000、1002、1004和1006。参考图10,操作1000启动该操作过程,并且操作1002示出了接收表示与虚拟机会话相关联的客户机屏幕的图形数据。操作1004示出了接收指示用于所述传送的可用带宽的信息,并且基于该信息,确定可用带宽满足预定的阈值。操作1006示出了使用与字节边界对齐的位令牌的紧凑流对已变换的图形数据的系数进行熵编码。在实施例中,行程0以量程大小的可变数量的倍数编码,使用最近使用过的文字值的高速缓存中的条目对文字值进行编码,并且使用量程大小的最小数量的倍数对其他值进行编码。位令牌可以是定义数据单元的位串。例如,在基于半字节的系统中,使用四位令牌。
在各种实施例中,量程大小可以是半字节。在某些实施例中,操作过程可包括生成对操作码和大值流进行熵编码的流。过程还可包括使用多字节编码方案对大值流进行熵编码,该编码方案对小的值使用比大的值更少的字节,并将所述图形数据划分为数据瓦块,将所述数据瓦块处理为瓦块分量,并在所述瓦块分量上执行所述熵编码。编码方案可被配置为仅在固定字节边界上运行。
图11描绘了如上所述用于处理传送到客户机计算机的图形数据的示例性系统。参考图11,系统1100包括处理器1110和存储器1120。存储器1120还包括被配置为处理传送到远程计算设备的图形数据的计算机指令。框1122示出了接收表示与虚拟机会话相关联的客户机屏幕的图形数据。框1124示出了将所述图形数据划分为数据瓦块。框1126示出了使用与字节边界对齐的位令牌流对已变换的数据瓦块的系数进行熵编码。
以上所提及的方面中的任何一个方面都可以以方法、系统、计算机可读介质或任何类型的产品来实现。例如,计算机可读介质可在其上存储用于处理要传送到客户机计算机的图形数据的计算机可执行指令。这样的介质可包括用于接收表示与虚拟机会话相关联的图形数据的指令的第一子集,以及用于使用与字节边界对齐的位令牌的紧凑流来对已变换的图形数据进行熵编码,以使得可使用基于字节的解码过程对已编码的数据进行解码的指令的第二子集。本领域技术人员可以理解,可以使用附加指令集来捕捉此处所公开的各其他方面,并且根据本发明,两个目前所公开的指令子集可以在细节方面不同。
上述详细描述通过示例和/或操作图阐明了系统和/或过程的各种实施例。就这些框图和/或示例包含一个或多个功能和/或操作而言,本领域技术人员将理解,这些框图或示例中的每一功能和/或操作都可由各种各样的硬件、软件、固件、或实际上其任意组合来单独地和/或共同地实现。
应该理解,此处描述的各种技术可以结合硬件或软件,或在适当时结合两者的组合来实现。因此,本发明的方法和装置或其某些方面或部分,可以采用包含在诸如软盘、CD-ROM、硬盘驱动器或任何其它机器可读存储介质等有形介质中的程序代码(即,指令)的形式,其中,当程序代码被加载至诸如计算机等机器并由其运行时,该机器成为用于实现本发明的装置。在程序代码在可编程计算机上执行的情况下,计算设备通常包括处理器、该处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备、以及至少一个输出设备。一个或多个程序可以例如,通过使用API、可重用控件等来实现或利用结合本发明描述的过程。这样的程序优选地用高级过程语言或面向对象编程语言来实现,以与计算机系统通信。然而,如果需要,该程序可以用汇编语言或机器语言来实现。在任何情形中,语言可以是编译语言或解释语言,且与硬件实现相结合。
尽管具体地参考其优选实施例来示出并描述了本发明,但本领域的技术人员可以理解,可以作出形式和细节上的各种改变而不脱离所附权利要求书中所述的本发明的范围。此外,尽管本发明的各元素可以用单数来描述或要求保护,但构想了复数,除非明确地规定了限于单数。

Claims (10)

1.一种处理用于传送到远程计算设备的图形数据的方法(1000),所述方法包括:
接收表示与虚拟机会话相关联的客户机屏幕的图形数据(1002);
接收指示用于所述传送的可用带宽的信息,并且基于所述信息,确定所述可用带宽满足预定的阈值(1004),以及
使用构成与字节边界对齐的组的位令牌的紧凑流对已变换的图形数据的系数进行熵编码(1006),其中:
行程0以量程大小的可变数量的倍数进行编码(1000);
使用最近使用过的文字值的高速缓存中的条目对文字值进行编码(1000);并且
使用所述量程大小的最小数量的倍数对其他值进行编码(1000)。
2.如权利要求1所述的方法,其特征在于,还包括生成对操作码和大值流进行熵编码的流(1000)。
3.如权利要求2所述的方法,其特征在于,还包括使用多字节编码方案对所述大值流进行熵编码(1000),所述编码方案对小的值使用比大的值更少的字节。
4.如权利要求3所述的方法,其特征在于,所述编码方案被配置为仅在固定字节边界上运行(1000)。
5.如权利要求3所述的方法,其特征在于,还包括将所述图形数据划分为数据瓦块(1000),将所述数据瓦块处理为瓦块分量,并在所述瓦块分量上执行所述熵编码。
6.一种用于处理供传送到远程计算设备的图形数据的系统(1100),包括:
包括至少一个处理器(1110)的计算设备;
在所述系统(1100)运行时通信地耦合到所述处理器(1110)的存储器(1120),所述存储器(1120)其中存储有计算机指令(1120),所述计算机指令在由所述至少一个处理器(1110)执行时,使得:
接收表示与虚拟机会话相关联的客户机屏幕的图形数据(1122);
将所述图形数据划分为数据瓦块(1124);
使用构成与字节边界对齐的组的位令牌流对已变换的数据瓦块的系数进行熵编码(1126),其中:
行程0以量程大小的可变数量的倍数进行编码(1000);
使用最近使用过的文字值的高速缓存中的条目对文字值进行编码(1000);以及
使用所述量程大小的最小数量的单位对其他值进行编码(1000)。
7.如权利要求6所述的系统,其特征在于,还包括将已编码的系数传送到被配置为基于所述量程大小处理所述已编码的系数的计算设备(1100)。
8.如权利要求6所述的系统,其特征在于,所述已编码的数据可用于由被配置为以每字节为基础对所述已编码的数据进行操作的熵解码过程来进行高效解码(1000)。
9.如权利要求6所述的系统,其特征在于,还包括使用多字节编码方案对所述大值流进行熵编码(1000),所述编码方案对小的值使用比大的值更少的字节。
10.一种其上存储有计算机可执行指令(122)的计算机可读存储介质(110),所述计算机可执行指令用于处理供传送到客户机计算机的图形数据,所述指令用于:
接收表示与虚拟机会话相关联的客户机屏幕的图形数据(1002);以及
使用构成与字节边界对齐的组的位令牌的紧凑流对已变换的图形数据的系数进行熵编码(1006),以使得可使用基于字节的解码过程对已编码的数据进行解码,其中:
行程0以半字节的可变数量的倍数编码进行(1000);
使用最近使用过的文字值的高速缓存中的条目对文字值进行编码(1000);以及
使用半字节的最小数量的倍数对其他值进行编码(1000)。
CN2011103077764A 2010-09-30 2011-09-28 用于图像压缩的熵编码器 Pending CN102523443A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/894,793 US20120082395A1 (en) 2010-09-30 2010-09-30 Entropy Coder for Image Compression
US12/894,793 2010-09-30

Publications (1)

Publication Number Publication Date
CN102523443A true CN102523443A (zh) 2012-06-27

Family

ID=45889897

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2011103077764A Pending CN102523443A (zh) 2010-09-30 2011-09-28 用于图像压缩的熵编码器

Country Status (10)

Country Link
US (1) US20120082395A1 (zh)
EP (1) EP2622507A4 (zh)
JP (1) JP2013541295A (zh)
KR (1) KR20140006778A (zh)
CN (1) CN102523443A (zh)
AU (1) AU2011314228B2 (zh)
BR (1) BR112013007612A2 (zh)
CA (1) CA2812740A1 (zh)
MX (1) MX2013003615A (zh)
WO (1) WO2012050722A2 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102833583A (zh) * 2012-07-27 2012-12-19 北京视博云科技有限公司 一种视频图像的处理方法及装置
CN108475440A (zh) * 2016-02-17 2018-08-31 英特尔公司 用于在计算装置处高效处理图形数据的光线压缩
CN109660261A (zh) * 2017-10-06 2019-04-19 想象技术有限公司 数据压缩
CN111107127A (zh) * 2018-10-26 2020-05-05 辉达公司 适用于远程桌面应用程序的个体应用程序窗口的流式传输
CN111801712A (zh) * 2018-04-12 2020-10-20 谷歌有限责任公司 针对改进的渐进网格压缩的编码成本感知边缘选择
CN111937006A (zh) * 2018-03-12 2020-11-13 头旋公司 基于熵值来确定性能的系统
CN115460182A (zh) * 2021-05-21 2022-12-09 华为技术有限公司 编解码方法、装置、设备、存储介质及计算机程序

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8886699B2 (en) * 2011-01-21 2014-11-11 Cloudium Systems Limited Offloading the processing of signals
US11935190B2 (en) 2012-06-10 2024-03-19 Apple Inc. Representing traffic along a route
US10119831B2 (en) 2012-06-10 2018-11-06 Apple Inc. Representing traffic along a route
KR101597637B1 (ko) * 2013-09-02 2016-02-29 주식회사 쏠리드 Fpga 이미지 다운로드시 네트워크 부하를 경감하기 위한 압축 방법
US10007612B2 (en) * 2015-10-21 2018-06-26 Dell Products L.P. Systems and methods for pre-population of graphics image cache in virtual desktop environment
US9875076B1 (en) * 2016-07-26 2018-01-23 Wyse Technology L.L.C. Remoting client having GPU off-loader

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5689255A (en) * 1995-08-22 1997-11-18 Hewlett-Packard Company Method and apparatus for compressing and decompressing image data
US20090140894A1 (en) * 2007-11-30 2009-06-04 Schneider James P Adaptive entropy coding compression output formats
CN101601307A (zh) * 2006-11-09 2009-12-09 微软公司 用于有效地编码和解码电子信息的系统和方法
US20100111410A1 (en) * 2008-10-30 2010-05-06 Microsoft Corporation Remote computing platforms providing high-fidelity display and interactivity for clients
US20100226441A1 (en) * 2009-03-06 2010-09-09 Microsoft Corporation Frame Capture, Encoding, and Transmission Management

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5784631A (en) * 1992-06-30 1998-07-21 Discovision Associates Huffman decoder
CA2187018C (en) * 1995-02-03 2005-10-18 David Edward Penna Video image colour encoding
US5710719A (en) * 1995-10-19 1998-01-20 America Online, Inc. Apparatus and method for 2-dimensional data compression
US6618506B1 (en) * 1997-09-23 2003-09-09 International Business Machines Corporation Method and apparatus for improved compression and decompression
US6356660B1 (en) * 1997-10-15 2002-03-12 Hewlett-Packard Co. Method for compressing raster data
JP3676078B2 (ja) * 1998-05-07 2005-07-27 株式会社リコー ランレングス符号化方法及び圧縮装置
US6298164B1 (en) * 1998-10-02 2001-10-02 Canon Kabushiki Kaisha PCL conversion of JETSEND images
US20020026391A1 (en) * 2000-07-13 2002-02-28 Laster Scott A. Method and system for collecting rich inventory via computer system
CN101448162B (zh) * 2001-12-17 2013-01-02 微软公司 处理视频图像的方法
US7149360B2 (en) * 2002-01-09 2006-12-12 Hewlett-Packard Development Company, L.P. Method for using a JPEG engine to assist in efficiently constructing MPEG I-frames
US7373008B2 (en) * 2002-03-28 2008-05-13 Hewlett-Packard Development Company, L.P. Grayscale and binary image data compression
US7016547B1 (en) * 2002-06-28 2006-03-21 Microsoft Corporation Adaptive entropy encoding/decoding for screen capture content
US7606314B2 (en) * 2002-08-29 2009-10-20 Raritan America, Inc. Method and apparatus for caching, compressing and transmitting video signals
US7039247B2 (en) * 2003-01-31 2006-05-02 Sony Corporation Graphic codec for network transmission
US6919825B2 (en) * 2003-09-25 2005-07-19 Peerless Systems Corporation Split runlength encoding method and apparatus
TW595124B (en) * 2003-10-08 2004-06-21 Mediatek Inc Method and apparatus for encoding video signals
US7602850B2 (en) * 2003-12-19 2009-10-13 Intel Corporation Content adaptive variable length coding (CAVLC) decoding
US7471840B2 (en) * 2004-08-18 2008-12-30 Cisco Technology, Inc. Two-dimensional variable length coding of runs of zero and non-zero transform coefficients for image compression
US20060176953A1 (en) * 2005-02-04 2006-08-10 Nader Mohsenian Method and system for video encoding with rate control
US20060195464A1 (en) * 2005-02-28 2006-08-31 Microsoft Corporation Dynamic data delivery
US8171169B2 (en) * 2005-03-14 2012-05-01 Citrix Systems, Inc. Method and apparatus for updating a graphical display in a distributed processing environment
US7822278B1 (en) * 2005-09-20 2010-10-26 Teradici Corporation Methods and apparatus for encoding a digital video signal
JP4618436B2 (ja) * 2006-02-10 2011-01-26 富士ゼロックス株式会社 符号化装置、復号化装置、符号化方法、復号化方法、及びプログラム
US8135071B2 (en) * 2007-01-16 2012-03-13 Cisco Technology, Inc. Breakpoint determining for hybrid variable length coding using relationship to neighboring blocks
US7827237B2 (en) * 2007-03-12 2010-11-02 Citrix Systems, Inc. Systems and methods for identifying long matches of data in a compression history
US7501964B2 (en) * 2007-04-16 2009-03-10 Texas Instruments Incorporated Entropy coding for digital codecs
US20110196849A1 (en) * 2008-10-27 2011-08-11 Micro Motion, Inc. Method and apparatus for compressing and decompressing data records
US20100225655A1 (en) * 2009-03-06 2010-09-09 Microsoft Corporation Concurrent Encoding/Decoding of Tiled Data
US20110052087A1 (en) * 2009-08-27 2011-03-03 Debargha Mukherjee Method and system for coding images
US8255528B2 (en) * 2009-12-23 2012-08-28 Citrix Systems, Inc. Systems and methods for GSLB spillover

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5689255A (en) * 1995-08-22 1997-11-18 Hewlett-Packard Company Method and apparatus for compressing and decompressing image data
CN101601307A (zh) * 2006-11-09 2009-12-09 微软公司 用于有效地编码和解码电子信息的系统和方法
US20090140894A1 (en) * 2007-11-30 2009-06-04 Schneider James P Adaptive entropy coding compression output formats
US20100111410A1 (en) * 2008-10-30 2010-05-06 Microsoft Corporation Remote computing platforms providing high-fidelity display and interactivity for clients
US20100226441A1 (en) * 2009-03-06 2010-09-09 Microsoft Corporation Frame Capture, Encoding, and Transmission Management

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102833583A (zh) * 2012-07-27 2012-12-19 北京视博云科技有限公司 一种视频图像的处理方法及装置
CN102833583B (zh) * 2012-07-27 2015-07-01 北京视博云科技有限公司 一种视频图像的处理方法及装置
CN108475440A (zh) * 2016-02-17 2018-08-31 英特尔公司 用于在计算装置处高效处理图形数据的光线压缩
CN108475440B (zh) * 2016-02-17 2024-03-01 英特尔公司 用于在计算装置处高效处理图形数据的光线压缩
CN109660261A (zh) * 2017-10-06 2019-04-19 想象技术有限公司 数据压缩
CN109660261B (zh) * 2017-10-06 2023-11-21 想象技术有限公司 数据压缩方法和装置、数据解压缩方法和装置
CN111937006A (zh) * 2018-03-12 2020-11-13 头旋公司 基于熵值来确定性能的系统
CN111937006B (zh) * 2018-03-12 2024-01-26 头旋公司 基于熵值来确定性能的系统
CN111801712A (zh) * 2018-04-12 2020-10-20 谷歌有限责任公司 针对改进的渐进网格压缩的编码成本感知边缘选择
CN111107127A (zh) * 2018-10-26 2020-05-05 辉达公司 适用于远程桌面应用程序的个体应用程序窗口的流式传输
CN115460182A (zh) * 2021-05-21 2022-12-09 华为技术有限公司 编解码方法、装置、设备、存储介质及计算机程序

Also Published As

Publication number Publication date
RU2013114349A (ru) 2014-10-10
JP2013541295A (ja) 2013-11-07
EP2622507A4 (en) 2015-08-26
WO2012050722A3 (en) 2012-07-19
US20120082395A1 (en) 2012-04-05
WO2012050722A2 (en) 2012-04-19
AU2011314228B2 (en) 2014-07-31
BR112013007612A2 (pt) 2019-09-24
EP2622507A2 (en) 2013-08-07
CA2812740A1 (en) 2012-04-19
AU2011314228A1 (en) 2013-03-28
KR20140006778A (ko) 2014-01-16
MX2013003615A (es) 2013-05-09

Similar Documents

Publication Publication Date Title
CN102523443A (zh) 用于图像压缩的熵编码器
US10230565B2 (en) Allocation of GPU resources across multiple clients
EP2344957B1 (en) Remote computing platforms providing high-fidelity display and interactivity for clients
US9075560B2 (en) Real-time compression with GPU/CPU
KR101697411B1 (ko) 상태 비보존형 압축을 사용하는 합성 비디오 스트리밍
CN102447901B (zh) 用于处理要传送到远程计算设备的图形数据的方法和系统
US20100231599A1 (en) Frame Buffer Management
US20110141123A1 (en) Push Pull Adaptive Capture
TW200948088A (en) System and method for virtual 3D graphics acceleration and streaming multiple different video streams
WO2022257699A1 (zh) 图像画面显示方法、装置、设备、存储介质及程序产品
CN103688240A (zh) 用于发送数字场景描述数据的方法以及发送器和接收器场景处理设备
CN102148824A (zh) 用于遥控桌面图形的容损协议
CN102378976A (zh) 使用多个处理器的图像压缩加速
EP3806462A1 (en) Image encoding and decoding method , related device and storage medium
WO2023011033A1 (zh) 图像处理方法、装置、计算机设备及存储介质
US20120218292A1 (en) System and method for multistage optimized jpeg output
WO2023104186A1 (zh) 一种高效低成本的云游戏系统
CN114938408A (zh) 一种云手机的数据传输方法、系统、设备及介质
RU2575679C2 (ru) Энтропийный кодер для сжатия изображения
CN117938823A (zh) 云游戏画面分享方法、装置、设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1170876

Country of ref document: HK

ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150805

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150805

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

AD01 Patent right deemed abandoned

Effective date of abandoning: 20161228

C20 Patent right or utility model deemed to be abandoned or is abandoned