CN102378976B - 使用多个处理器的图像压缩加速 - Google Patents

使用多个处理器的图像压缩加速 Download PDF

Info

Publication number
CN102378976B
CN102378976B CN201080016209.7A CN201080016209A CN102378976B CN 102378976 B CN102378976 B CN 102378976B CN 201080016209 A CN201080016209 A CN 201080016209A CN 102378976 B CN102378976 B CN 102378976B
Authority
CN
China
Prior art keywords
section
image
processor
thread
compressed
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.)
Active
Application number
CN201080016209.7A
Other languages
English (en)
Other versions
CN102378976A (zh
Inventor
N·Y·阿布多
V·A·阿尔布
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 Technology Licensing LLC
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 Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN102378976A publication Critical patent/CN102378976A/zh
Application granted granted Critical
Publication of CN102378976B publication Critical patent/CN102378976B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/08Protocols specially adapted for terminal emulation, e.g. Telnet
    • 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/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

公开了用于加速多处理器计算机上的图像压缩的系统、方法以及计算机可读介质。在一个实施例中,图像被分成多个切片,每一个切片都具有与图像相同的宽度。这些切片被提供给为每一个处理器维护线程的工作管理器。工作管理器将每一个切片分配到线程供以高效的方式进行处理(如对应于第一可用的处理器的线程),当接收到每一个切片的切片已经被压缩的指示时,工作管理器装配压缩的图像。

Description

使用多个处理器的图像压缩加速
背景技术
虽然计算机曾经被隔离并具有最少的或很少的与其他计算机的交互,但是,当今的计算机通过诸如局域网(LAN)和广域网(WAN)之类的通信网络与各种其他计算机进行交互。随着因特网TM的广泛发展,计算机之间的连通性变得越来越重要,并开启了许多新的应用和技术。大规模的网络的发展,以及低成本的个人计算机的广泛的可用性,从根本上改变了许多人工作、交互、通信和玩的方式。
一种联网的越来越流行的形式一般可以被称为虚拟计算系统,其可以使用诸如远程桌面协议(RDP)、独立计算体系结构(ICA)等等之类的协议,来通过远程会话与远程客户机共享桌面及其他应用程序。这样的计算系统通常将对键盘键的按压和鼠标点击或选择从客户端传输到服务器,并通过网络连接(例如,因特网)在相反方向将屏幕更新中继回去。如此,用户具有好像他们的机器作为LAN的一部分来操作的体验,当在现实中客户端设备只发送如在服务器侧显示的应用程序的屏幕截图在。
压缩算法对将远程会话所使用的带宽缩小到通过LAN、无线LAN(wLAN)和WAN进行传输的级别很重要。这些压缩算法在服务器上的处理时间与会话所需的较低的带宽之间折衷。
过高的处理时间量会抑制服务器的可缩放性并延长编码帧所需的时间,这会降低远程会话的总体帧率(FPS)。低的FPS会对用户体验造成负面影响,因为会话可能感觉不平稳,并感觉没有响应。
当前编码系统缺乏利用许多现代的计算机中存在的多个处理器或处理核的方式。这种处理资源的最大化的缺乏导致压缩时间高于应有的压缩时间。
发明内容
在一个实施例中,通过使用每个核地分配物理中央处理单元(CPU)线程的多处理器(或核)工作管理器,可以利用多个处理器的资源。将要被编码的图像被分成一系列的切片—与图像相同宽度的矩形条。工作管理器动态地平衡工作并将工作分配到可用的核,以及收集完成通知以允许最终的已压缩的图像切片被重新装配到连贯的已压缩的图像。工作管理器将切片发送到可用的处理器,如将切片分派到第一可用的处理器。向其分派了切片的处理器独立地压缩切片。工作管理器从每一个相应的核接收每一个切片的完成通知,并将那些已压缩的切片装配为已压缩的图像。
通过利用多个处理器或核,加快了压缩速度。通过分割图像并将图像的切片分配到不同的核,减少缓存颠簸(thrashing)。有各种用于动态地将切片的压缩工作负荷分配到不同的处理器的技术。可以实现对应的技术来解压缩已压缩的图像。
那些本技术技术人员可以理解,本发明的一个或多个各个方面可包括,但不仅限于,用于实行本公开的此处引用的各方面的电路和/或编程;电路和/或编程可以几乎是被配置成取决于系统设计人员的设计选择而达成此处引用的各方面的硬件、软件和/或固件的任何组合。
前面的内容是小结,如此,根据需要,包含简述、概括,省略了详细内容。本领域的技术人员将理解,概述只是说明性的,而不以任何方式作出限制。
附图说明
将参考各个附图进一步描述根据此说明书的系统、方法,以及计算机可读介质,其中:
图1示出了其中可以具体化此处所描述的多处理器图像编码的示例性通用计算环境。
图2描绘了用于实施本公开的各方面的操作环境。
图3示出了通过使用多处理器图像编码的远程桌面协议(RDP)进行通信的客户机和服务器。
图4示出了用于多处理器图像编码的示例性操作过程。
具体实施方式
图1是其中可以使用此处所描述的技术的通用计算设备的框图。计算系统环境120只是合适的计算环境的一个示例,并且不旨在对所公开的主题的使用范围或功能提出任何限制。也不应该将计算环境120解释为对示例性操作环境120中示出的任一组件或其组合有任何依赖性或要求。在一些实施例中,各种所描绘的计算元件可包括被配置成实例化本发明的特定方面的电路。例如,本公开中使用的术语电路可包括被配置成通过固件或开关来执行功能的专用硬件组件。在其他示例实施例中,术语电路可包括通过体现可操作以执行功能的逻辑的软件指令配置的通用处理单元、存储器等等。在其中电路包括硬件和软件的组合的示例实施例中,实施者可以编写体现逻辑的源代码,且源代码可以被编译为可以由通用处理单元处理的机器可读代码。由于所属领域技术人员可以理解,现有技术已经发展到在硬件、软件或硬件/软件的组合之间差别微小的程度,为实现特定功能而选择硬件还是软件是交由实施者处理的设计选择。更具体而言,本领域技术人员可以理解,可以将软件进程转换成等效的硬件结构,也可以将硬件结构本身转换成等效的软件进程。如此,选择硬件实现还是软件实现是一种设计选择,并交由实施者处理。
计算机141通常包括各种计算机可读介质。计算机可读介质可以是可以被计算机141访问的任何可用的介质,并包括易失性和非易失性介质,可移动的和不可移动的介质。系统存储器122包括易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM)123和随机存取存储器(RAM)160。基本输入/输出系统124(BIOS)通常存储在ROM 123中,包含了诸如在启动过程中帮助在计算机141内的元件之间传输信息的基本例程。RAM 160通常包含处理单元159可以立即访问和/或目前正在操作的数据和/或程序模块。作为示例而非限制,图1示出了操作系统125、应用程序126、其他程序模块127,以及程序数据128。
计算机141也可以包括其他可移动的/不可移动的,易失性/非易失性的计算机存储介质。只作为示例,图1示出了读写不可移动、非易失性磁性介质的硬盘驱动器138,读写可移动、非易失性磁盘154的磁盘驱动器139,以及读写诸如CD ROM或其他光学介质之类的可移动的,非易失性光盘153的光盘驱动器140。可以在示例性操作环境中使用的其他可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器138通常由不可移动存储器接口,诸如接口134连接至系统总线121,磁盘驱动器139和光盘驱动器140通常由可移动存储器接口,诸如接口135连接至系统总线121。
上文所讨论的并且在图1中所示出的驱动器以及它们的相关联的计算机存储介质,为计算机141提供了计算机可读的指令、数据结构、程序模块及其他数据的存储。例如,在图1中,硬盘驱动器138被示为存储了操作系统158、应用程序157,其他程序模块156,以及程序数据155。注意,这些组件可以与操作系统125、应用程序126、其他程序模块127和程序数据128相同,也可以与它们不同。此处给操作系统158、应用程序157、其他程序模块156以及程序数据155提供了不同的编号,以说明至少它们是不同的副本。用户可以通过诸如键盘151和指示设备152(通常被称为鼠标、轨迹球或触摸板)之类的输入设备向计算机141中输入命令和信息。其他输入设备(未示出)可以包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等等。这些和其他输入设备通常通过耦合至系统总线的用户输入接口136连接至处理单元159,但也可以由其他接口和总线结构,例如并行端口、游戏端口或通用串行总线(USB)来连接。监视器142或其他类型的显示设备也通过接口,例如视频接口132,连接至系统总线121。除监视器之外,计算机还可以包括可以通过输出外围接口133连接的诸如扬声器144和打印机143之类的其他外围输出设备。
计算机141可以使用到一个或多个远程计算机(如远程计算机146)的逻辑连接,以在联网环境中操作。远程计算机146可以是个人计算机、服务器、路由器、网络PC、对等设备或其他公共网络节点,通常包括上文参考计算机141所描述的许多或全部元件,虽然图1中只示出了存储器设备147。图1中所描绘的逻辑连接包括局域网(LAN)145和广域网(WAN)149,但是,也可以包括其他网络。这样的联网环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。
当在LAN联网环境中使用时,计算机141通过网络接口或适配器137连接至LAN 145。当在WAN联网环境中使用时,计算机141通常包括调制解调器150或用于通过例如因特网等WAN 149建立通信的其他装置。调制解调器150可以是内置或外置的,它可以经由用户输入接口136或其他适当的机制连接至系统总线121。在联网环境中,参考计算机141所描述的程序模块,或其某些部分,可以存储在远程存储器存储设备中。作为示例而非限制,图1示出了驻留在存储器设备147上的远程应用程序148。可以理解,所示出的网络连接只是示例性的,也可以使用用于在计算机之间建立通信链路的其他装置。
现在参考图2,它一般性地示出了其中可以实现本公开的各方面的示例环境。所属领域技术人员可以理解,图2所描绘的示例元件提供用于描述本公开的操作框架。因此,在某些实施例中,取决于不同的实现方案,环境的物理布局可以不同。如此,示例操作框架被视为只是说明性的,决不限制权利要求的范围。所属领域技术人员也可以理解,下面的讨论是介绍性的,在图3到图8的操作过程的讨论内比较详细地描述了由图2所描绘的元件。
一般而言,图2描绘了可以被配置成包括本公开的各方面的终端服务器环境的高级别总览。参考该图,描绘了服务器204,其可包括被配置成实现终端服务器以及例如三个示例客户机201、202以及203(尽管描绘了三个客户机,但是,在各实施例中,服务器204可以服务于较多或较少的客户机)的电路。示例客户机201-203可包括由被配置成将用户输入定向到服务器204并显示由服务器204所生成的用户界面信息的硬件实现的计算机终端。在其他实施例中,客户机201-203可以是包括与图1的计算机20的那些元件类似的元件的计算机。在这些示例实施例中,客户机201-203可包括被配置成实施操作系统的电路和被配置成仿真终端的功能的电路。在这些示例中,所属领域技术人员可以理解,被配置成实现操作系统的电路也可以包括被配置成仿真终端的电路。
在所描绘的示例中,服务器204可以被配置成生成用于连接客户机201、202和203的一个或多个会话,如会话1到N(其中,N是大于1的整数)。简单来说,本公开的示例实施例中的会话一般可以包括由多个子系统(例如,软件代码)实现的操作环境,这些子系统被配置成实现执行环境并与操作系统214的内核218进行交互。例如,会话可包括诸如桌面之类的外壳和用户界面、跟踪桌面内的鼠标移动的子系统、将对图标的鼠标点击转换为实现程序的实例的命令的子系统等等。在另一示例实施例中,会话可包括应用程序。在此示例中,在呈现应用程序时,仍可以生成桌面环境,其对用户隐藏。此示例中的会话可包括与上文所描述的会话类似的子系统。一般而言,当例如服务器204通过网络连接从诸如客户机201之类的客户机接收连接请求时,会话可以由服务器204逐个用户地生成。一般而言,连接请求可以首先由输送逻辑210来处理,输送逻辑210可以例如由服务器204的电路来实现。在某些实施例中,输送逻辑210可以包括网络适配器、固件以及软件,它们可以被配置成侦听连接消息,并将它们转发到引擎212。如图2所示,当生成会话时,输送逻辑210可包括每一个会话的协议堆栈实例。一般而言,每一个协议堆栈实例都可以被配置成将用户界面输出路由到相关联的客户机,并将从相关联的客户机接收到的用户输入路由到适当的会话核244。
如图2所描绘的,在会话生成过程中,引擎212可以被配置成获得会话的许可证。例如,在一个示例实施例中,引擎212可以在会话生成过程期间从客户机201中接收许可证。在其他示例实施例中,引擎212可以从许可证数据库222中接收许可证的副本。在本公开的某些实施例中,许可证数据库222可包括关系型数据库管理程序,该程序可以在诸如图1的计算机20之类的计算机的操作系统上执行。在包括许可证数据库222的一示例实施例中,数据库可以存储一个或多个许可证,当客户机试图从服务器204获取会话时可以检查这些许可证。在另一实施例中,每一个许可证本身都可以与帐户标识符相关联,例如,用户名/密码组合、智能卡标识符等等,并且,只有在存在正确的帐户标识符的情况下才检查每一个许可证。一般而言,服务器204可以生成的连接的数量可以取决于控制服务器204的实体从服务供应商购买的许可证的数量。如果例如实体已经购买了一个许可证,那么,服务器204可以被配置成只允许一个会话。在此示例中,如果许可证与帐户标识符相关联,那么,只有提供了正确的帐户标识符的用户才可以获取会话。
在本公开的示例实施例中,在许可证可以被使用之前,可以由服务供应商262验证每一个许可证。例如,在示例实施例中,服务供应商262可以充当授权和激活许可证和服务器的证书管理机构。在这些实施例中,服务供应商262可以确保许可证不被盗窃、复制或盗版。服务供应商262也可以通过将许可证的副本存储在数据库中并将许可证与服务器204与相关联来确保许可证只能供购买了许可证的服务器204使用。
如图2所示,在本公开的一示例实施例中,配置管理器224可包括计算机可读指令,这些计算机可读指令在被执行时,实例化在会话创建进程期间可以接收许可证并通过与诸如会话管理器216之类的各种子系统接口来确定新衍生的会话的服务级别的进程。在一个实施例中,会话管理器216可以被配置成通过,例如,为会话空间生成会话标识符;将会话标识符添加到表中;向会话空间分配存储器;以及,在被分配给会话空间的存储器中生成系统环境变量以及子系统进程的实例,来初始化和管理每一个会话。如图2所示,在一个实施例中,会话管理器216可以实例化可包括诸如会话核244之类的内核模式部分的诸如运行时子系统240之类的环境子系统。例如,在一个实施例中,环境子系统可以被配置成向应用程序展示服务的子集,并提供到操作系统214的内核218的接入点。如图2所示,在某些实施例中,内核218可包括安全子系统250和资源管理器256。在一示例实施例中,安全子系统250可以通过例如执行运行时对象保护来实施服务器204的安全策略。在这些实施例中,一个实施例中的资源管理器256可以响应于来自运行时子系统240的请求,创建和终止进程和线程。更具体而言,在一个实施例中,运行时子系统240可以请求线程的执行,会话核244可以将请求发送到内核218的执行程序,以为线程分配存储器,并为它们调度执行时间。
继续图2的描述,在一个实施例中,会话核244可包括图形显示界面246(GDI)和输入子系统252。在一示例实施例中,输入子系统252可以被配置成通过与会话相关联的协议堆栈实例来接收来自客户机201的用户输入,并将输入传输到会话核244。在某些实施例中,用户输入可以包括表示绝对和/或相对鼠标移动命令、鼠标坐标、鼠标点击的信号;键盘信号;游戏杆移动信号等等。用户输入,例如,对图标的鼠标双击,可以由会话核244接收,输入子系统252可以被配置成确定图标位于与双击相关联的坐标处。然后,输入子系统252可以被配置成将通知发送到可以为与图标相关联的应用程序执行进程的运行时子系统240。
除接收来自客户机201的输入之外,还可以从应用程序和/或桌面接收绘制命令,并由GDI 246对它们进行处理。一般而言,GDI 246可包括可以生成图形对象绘制命令的进程。在此示例实施例中,GDI 246可以被配置成将命令传递到可以为会话实例化显示驱动程序的远程显示子系统254。在一示例实施例中,远程显示子系统254可以被配置成包括虚拟显示驱动程序,该虚拟显示驱动器可以不与在物理上附接到服务器204的显示器相关联,例如,服务器204可以无头地运行。在此实施例中,虚拟显示驱动程序可以被配置成接收绘制命令,并通过与会话相关联的堆栈实例,将它们传输到客户机201。
图3示出了通过远程会话进行通信的客户机316和服务器302,其中,服务器使用它发送到客户机的图像310的多处理器压缩。
客户机316与服务器302经由远程会话通信,这是由服务器302上的远程服务器304通过通信网络314与客户机316上的远程客户机318通信来实现的。远程客户机318将诸如鼠标移动或键击之类的输入命令发送到远程服务器304,该远程服务器304对它们进行解释,并向客户机318发送对应于该输入的结果的图像数据310。例如,客户机316可以发出鼠标移动和点击以打开视频。服务器304将接收此输入信息,确定作为结果视频将被播放,并将得到的图像310,以及对应于正在被播放的该视频的可能的音频发送到客户机318,以便显示在显示设备320上。
服务器302通常压缩它发送到客户机316的图像310,以便节省带宽。在本系统上,服务器302将每一个图像310发送到工作管理器306,该工作管理器306跨多个处理器308或服务器302上存在的核中的每一个管理每一个图像310的压缩。工作管理器306将接收图像310,并将它分割为一个或多个切片312。典型的远程会话压缩算法可以对瓦片(例如,64x64像素方块)或条带(例如,1680x2像素矩形)进行操作,切片312通常是图像310的大得多的部分(例如,1680x128像素)。切片312可以被选择以便避免处理器308的任何缓存颠簸问题。在压缩的过程中,可以进一步将切片312分割为瓦片或条带,但是,切片312是被分配给处理器308的单位,如此,一个切片312内的所有瓦片或条带仍保持分配给该核。
工作管理器306维护它用来压缩图像310的与每一个处理器308相关联的线程。随着工作管理器306生成切片312,它将每一个切片分派到线程中的一个。工作管理器306可以使用各种技术来最大化线程分派的效率,如通过将切片312分配给第一个可用的线程、使多个切片312在一线程上排队,以使得该线程决不缺少要压缩的切片312。
当在其对应的处理器308上执行线程时,然后,压缩切片312。在一个实施例中,通过行程编码(RLE)压缩方案,压缩切片312。一旦压缩了切片312,工作管理器306就接收这样的指示。当工作管理器306接收到给定图像310中的每一个切片312被压缩的指示时,它将压缩的图像提供给远程服务器304,远程服务器304跨通信网络314将它传输到远程客户机318。远程客户机318接收到压缩的图像,并指示客户机316在显示设备320上显示接收到的图像。
切片312已经被压缩的指示可以包括指向已压缩的切片312驻留的存储器位置的指针。在此实施例中,工作管理器306可以对这些指针排序,以便第一指针指向图像的开始,最后一个指针指向图像的末尾,两者之间的任何指针都被相应地排序。
切片312可以按照任何顺序完成。正是工作管理器306以任何顺序接收这些切片312,在一个实施例中,它构建指向已压缩的切片312的压缩输出缓冲区的指针的有序列表。一旦图像的所有切片312已经被压缩,则该图像被视为完全被压缩。
在一个实施例中,工作管理器306可以检索每一个已压缩的切片312,然后,将已压缩的图像(由那些已压缩的切片312组成)存储在存储器的相邻的范围中。
在一个实施例中,由客户机从已压缩的切片312装配已压缩的图像。服务器向客户机发送每一个已压缩的切片312以及关于它属于哪个图像以及它在图像内属于哪里的某种指示,客户机从该信息装配图像。在一个实施例中,服务器在发送另一个图像之前结束发送一个图像,如此,信息可以包括切片312的总数以及目前发送的切片312是哪一个切片312(如总共五个切片312中的第二个,或者在已经通知客户机总共有五个切片312时信息仅包括第二切片312)。在一个实施例中,服务器可以向客户机发送来自交错的多个图像的切片312,如此,对于每一个切片312的指示可以包括它属于哪一个图像以及它是图像的哪一部分(例如,图像15的总共五个切片312中的第二个)。
在一个实施例中,远程服务器是同步的。在它将图像分派到工作管理器306之后,它同步地阻塞(block),等待图像被压缩,并接收已压缩的图像的输出。
在一个实施例中,远程服务器是异步的。远程服务器将图像分派到工作管理器306,然后,立即进行进一步处理,如解析接收到的客户机输入或生成第二图像供工作管理器306压缩。它稍后从工作管理器306接受异步完成通知,包括图像已经被压缩的指示或经过压缩的图像本身。
图4示出了用于在多处理器系统上压缩图像供通过远程会话传输的示例性操作过程。多处理器系统可以具有多个处理核或多个离散的处理器。在一个实施例中,图像包括远程会话帧,如应用程序窗口或可包括应用程序窗口的整个桌面。在一个实施例中,图像包括位图。在一个实施例中,图像具有宽度,每一个瓦片的宽度都等于图像的宽度。
操作402描绘了将图像分割为多个切片。在一个实施例中,图像是矩形,而每一个切片也是矩形,并与图像具有相同水平尺寸—即宽度。
操作404描绘了对于至少两个处理器的每一个,逐个处理器地关联线程。工作管理器可以为每一个处理器维护它在压缩图像时所使用的线程。
操作406描绘了将每一个切片分配给相关联的线程。工作管理器可以使用各种技术来最大化可用的处理器资源。例如,在一个实施例中,将切片分配到相关联的线程包括将切片分配到对应于具有未使用的处理资源的处理器的相关联的线程。
操作408描绘了对于每一个切片,接收切片已经被处理的指示。在一个实施例中,切片已经被处理的指示包括指向对应的已压缩的输出缓冲区的指针。
操作410描绘了将切片装配成第二图像,该第二图像对应于正在被压缩的图像。
可选操作412描绘了根据远程会话协议将第二图像发送到客户机。在一个实施例中,远程会话协议包括远程桌面协议(RDP)。在一个实施例中,从远程会话堆栈接收图像,远程会话堆栈在提供图像时同步地阻塞,而操作412包括向远程会话堆栈发送图像已经被压缩的指示。
结论
尽管是结合如各种图形所示的优选方面来描述本公开的,但是,应该理解,可以使从其中其他类似的方面,或可以对所描述的各方面进行修改和添加,以便执行本公开的相同功能,而不会产生偏离。因此,本发明不应该仅限于任何单个方面,而是应该在根据所附权利要求书的广度和范围内解释。例如,此处所描述的各种过程可以利用硬件或软件,或者,利用两者的组合来实现。因此,所公开的实施例的方法和装置,或其某些方面或部分,也可以以在有形介质(如软盘、CD-ROM、硬盘驱动器,或任何其他机器可读存储介质)中实现的程序代码(即,指令)的形式来实现。当程序代码被加载到诸如计算机之类的机器中并由它们执行时,机器变为用于所公开的实施例的装置。除此处显式地阐述的特定实现之外,通过考虑此处所公开的说明书,其他方面和实现将对本领域的技术人员显而易见。说明书和所示出的实现只被视为示例。

Claims (14)

1.一种用于在具有多个处理器的系统上压缩图像(310)的方法,包括:
将所述图像分割为多个切片(312)(402),其中所述切片被选择以避免所述处理器的缓存颠簸问题;
对于至少两个处理器(308)中的每一个,逐个处理器地关联线程(404),使得所述线程仅在其对应的处理器上执行;
将切片分配到相关联的线程(406),包括将切片分配到对应于具有未使用的处理资源的处理器的相关联的线程;
对于每一个已分配的切片,在所述切片被压缩后接收所述切片已经被处理的指示(408);
将每一个未分配的切片分配给第一个可用的线程,使得该切片仅在所述第一个可用的线程所对应的处理器上被处理;以及
当接收到每一个切片的切片已经被处理的指示时,将所述切片装配成第二图像,所述第二图像对应于正在被压缩的所述图像(410)。
2.如权利要求1所述的方法,其特征在于,还包括:
根据远程会话协议将所述第二图像发送到客户机。
3.如权利要求1所述的方法,其特征在于,所述图像包括远程会话帧。
4.如权利要求1所述的方法,其特征在于,所述图像具有宽度,每一个瓦片的宽度都等于所述图像的所述宽度。
5.如权利要求1所述的方法,其特征在于,还包括:
通过远程会话,跨通信网络将所述第二图像发送到客户机。
6.如权利要求5所述的方法,其特征在于,所述远程会话包括远程桌面协议(RDP)。
7.如权利要求5所述的方法,其特征在于,从远程会话堆栈接收所述图像,所述远程会话堆栈在提供所述图像时同步地阻塞,还包括:
向所述远程会话堆栈发送所述图像已经被压缩的指示。
8.如权利要求5所述的方法,其特征在于,从远程会话堆栈接收所述图像,所述远程会话堆栈在提供所述图像时异步地阻塞,还包括:
向所述远程会话堆栈发送所述图像已经被压缩的指示。
9.如权利要求1所述的方法,其特征在于,所述切片已经被处理的指示包括指向对应的已压缩的输出缓冲区的指针。
10.如权利要求1所述的方法,其特征在于,所述图像包括位图。
11.一种用于在具有多个处理器的系统上压缩图像压缩图像(31)的设备,包括:
用于将所述图像分割为多个切片的装置,其中所述切片被选择以避免所述处理器的缓存颠簸问题;
用于对于所述多个处理器中的至少两个处理器中的每一个,逐个处理器地关联线程的装置,使得所述线程仅在其对应的处理器上执行;
用于将切片分配到相关联的线程的装置,包括用于将切片分配到对应于具有未使用的处理资源的处理器的相关联的线程的装置;
用于对于每一个已分配的切片,在所述切片被压缩后接收所述切片已经被处理的指示的装置;
用于将每一个未分配的切片分配给第一个可用的线程,使得该切片仅在所述第一个可用的线程所对应的处理器上被处理的装置;以及
用于将每一个已处理的切片发送到客户机的装置。
12.如权利要求11所述的设备,其特征在于,所述用于将每一个已处理的切片发送到客户机的装置包括:
用于发送每一个切片以及该切片表示所述图像的什么部分的对应的指示的装置。
13.如权利要求11所述的设备,其特征在于,所述用于将每一个已处理的切片发送到客户机的装置包括:
用于向所述客户机发送已压缩的图像的装置,所述已压缩的图像包括每一个切片。
14.如权利要求11所述的设备,其特征在于,所述用于将每一个已处理的切片发送到客户机的装置包括:
用于通过远程会话将每一个已处理的切片发送到所述客户机的装置。
CN201080016209.7A 2009-04-01 2010-04-01 使用多个处理器的图像压缩加速 Active CN102378976B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/416,791 2009-04-01
US12/416,791 US8705879B2 (en) 2009-04-01 2009-04-01 Image compression acceleration using multiple processors
PCT/US2010/029710 WO2010115057A2 (en) 2009-04-01 2010-04-01 Image compression acceleration using multiple processors

Publications (2)

Publication Number Publication Date
CN102378976A CN102378976A (zh) 2012-03-14
CN102378976B true CN102378976B (zh) 2015-08-26

Family

ID=42826231

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080016209.7A Active CN102378976B (zh) 2009-04-01 2010-04-01 使用多个处理器的图像压缩加速

Country Status (5)

Country Link
US (1) US8705879B2 (zh)
EP (1) EP2414959A4 (zh)
JP (1) JP5788865B2 (zh)
CN (1) CN102378976B (zh)
WO (1) WO2010115057A2 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BR112015004140A8 (pt) 2012-09-26 2023-01-24 Velos Media Int Ltd Método de codificação de imagem, método de decodificação de imagem, aparelho de codificação de imagem, aparelho de decodificação de imagem e aparelho de codificação e decodificação de imagem
BR112015004216B1 (pt) * 2012-09-26 2023-01-17 Sun Patent Trust Método de decodificação de imagem, método de codificação de imagem, aparelho de decodificação de imagem e aparelho de codificação de imagem
US9319483B2 (en) * 2012-11-13 2016-04-19 Karl Storz Imaging, Inc. Asynchronous open task for operating room control system
US20140172452A1 (en) * 2012-12-14 2014-06-19 Advanced Medical Imaging Development S.R.L. System for processing medical data
US11228769B2 (en) 2013-06-03 2022-01-18 Texas Instruments Incorporated Multi-threading in a video hardware engine
US9875723B2 (en) 2013-08-13 2018-01-23 Mediatek Inc. Data processing apparatus for transmitting/receiving randomly accessible compressed pixel data groups over display interface and related data processing method
US10193934B2 (en) * 2015-12-03 2019-01-29 Microsoft Technology Licensing, Llc Data compression for communications signalling
US10073775B2 (en) * 2016-04-01 2018-09-11 Intel Corporation Apparatus and method for triggered prefetching to improve I/O and producer-consumer workload efficiency
US11853394B2 (en) 2018-11-21 2023-12-26 Datalogic Ip Tech S.R.L. Image multiprocessing method for vision systems

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1539202A (zh) * 2000-11-29 2004-10-20 E������¼����������ι�˾ 使用多通道编码信息并在单通道中解码的方法和设备
EP1868384A2 (en) * 1999-10-27 2007-12-19 Sedna Patent Services, LLC Method and apparatus for transmitting video and graphics in a compressed form
CN101282478A (zh) * 2008-04-24 2008-10-08 上海华平信息技术股份有限公司 实现高清视频并行编码的方法及系统

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5138447A (en) 1991-02-11 1992-08-11 General Instrument Corporation Method and apparatus for communicating compressed digital video signals using multiple processors
JP2734465B2 (ja) * 1991-04-10 1998-03-30 三菱電機株式会社 ネットワーク用入出力装置
US6148111A (en) 1998-04-27 2000-11-14 The United States Of America As Represented By The Secretary Of The Navy Parallel digital image compression system for exploiting zerotree redundancies in wavelet coefficients
JP2000295616A (ja) * 1999-04-08 2000-10-20 Matsushita Electric Ind Co Ltd 画像符号化装置、画像復号装置、画像符号化方法、画像復号方法及びプログラム記録媒体
US6625671B1 (en) * 1999-05-03 2003-09-23 Computer Network Technology Corporation Compression of buffered data
US7171444B2 (en) 2001-11-14 2007-01-30 Sharp Laboratories Of America, Inc. Remote desktop protocol compression system
US6978466B2 (en) 2002-01-02 2005-12-20 Intel Corporation Method and system to reduce thrashing in a multi-threaded programming environment
US7365743B1 (en) * 2002-10-08 2008-04-29 Adobe Systems Incorporated Assignments for parallel rasterization
US7636810B2 (en) * 2003-11-26 2009-12-22 Intel Corporation Method, system, and apparatus for memory compression with flexible in-memory cache
US20050235284A1 (en) * 2004-04-14 2005-10-20 International Business Machines Corporation Systems and methods for tracking processing unit usage
US7614075B2 (en) * 2004-08-13 2009-11-03 Microsoft Corporation Dynamically generating video streams for user interfaces
US8549149B2 (en) 2004-12-30 2013-10-01 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP multiplexing
JP4384607B2 (ja) * 2005-01-25 2009-12-16 株式会社日立国際電気 画像処理装置
JP2006340183A (ja) * 2005-06-03 2006-12-14 Canon Inc 画像符号化装置及び画像符号化方法
KR100657331B1 (ko) 2005-08-24 2006-12-14 삼성전자주식회사 멀티 프로세서를 채용한 화상형성장치 및 이를 이용한화상형성방법
US7653749B2 (en) 2005-08-31 2010-01-26 Microsoft Corporation Remote protocol support for communication of large objects in arbitrary format
US7899864B2 (en) 2005-11-01 2011-03-01 Microsoft Corporation Multi-user terminal services accelerator
US7870551B2 (en) * 2006-05-18 2011-01-11 International Business Machines Corporation Optimization of thread wake up for shared processor partitions
US8107669B2 (en) * 2006-06-14 2012-01-31 Samsung Electronics Co., Ltd. Video watermarking apparatus in compression domain and method using the same
US8000388B2 (en) * 2006-07-17 2011-08-16 Sony Corporation Parallel processing apparatus for video compression
US20080267297A1 (en) * 2007-04-26 2008-10-30 Polycom, Inc. De-blocking filter arrangements
KR100801630B1 (ko) 2007-06-15 2008-02-05 디비코 주식회사 멀티코어 프로세서를 이용한 분산 디코딩 처리 장치 및방법
US8649615B2 (en) 2007-06-18 2014-02-11 Canon Kabushiki Kaisha Moving picture compression coding apparatus
US8126262B2 (en) * 2007-06-18 2012-02-28 International Business Machines Corporation Annotating video segments using feature rhythm models
JP5084543B2 (ja) 2008-02-12 2012-11-28 キヤノン株式会社 画像処理装置及び画像処理方法
US9258569B2 (en) * 2008-06-26 2016-02-09 Gvbb Holdings S.A.R.L. Moving image processing method, program and apparatus including slice switching

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1868384A2 (en) * 1999-10-27 2007-12-19 Sedna Patent Services, LLC Method and apparatus for transmitting video and graphics in a compressed form
CN1539202A (zh) * 2000-11-29 2004-10-20 E������¼����������ι�˾ 使用多通道编码信息并在单通道中解码的方法和设备
CN101282478A (zh) * 2008-04-24 2008-10-08 上海华平信息技术股份有限公司 实现高清视频并行编码的方法及系统

Also Published As

Publication number Publication date
CN102378976A (zh) 2012-03-14
US20100254616A1 (en) 2010-10-07
JP5788865B2 (ja) 2015-10-07
JP2012523176A (ja) 2012-09-27
WO2010115057A3 (en) 2011-01-20
US8705879B2 (en) 2014-04-22
EP2414959A4 (en) 2013-10-16
WO2010115057A2 (en) 2010-10-07
EP2414959A2 (en) 2012-02-08

Similar Documents

Publication Publication Date Title
CN102378976B (zh) 使用多个处理器的图像压缩加速
US9455931B2 (en) Load balancing between processors
CN102946409B (zh) 从多个服务器向客户机递送单个终端用户体验
CN108854055B (zh) 用于远程显示器的基于云的虚拟化图形处理系统和介质
CN102413150B (zh) 服务器、虚拟桌面控制方法以及虚拟桌面控制系统
US9235452B2 (en) Graphics remoting using augmentation data
JP5646518B2 (ja) テアリングのないリモートデスクトッププロトコル(rdp)表示
CN102932324B (zh) 支持降低的网络带宽使用的跨帧渐进损坏
EP3311565B1 (en) Low latency application streaming using temporal frame transformation
CN102447901B (zh) 用于处理要传送到远程计算设备的图形数据的方法和系统
CN103888485A (zh) 云计算资源的分配方法、装置及系统
CN102411786A (zh) 用于基于dwt的系统的运动补偿的低复杂度方法
WO2010077424A1 (en) Command remoting
CN112221127B (zh) 一种云游戏的多点控制方法及装置
CN102195968B (zh) 算法执行输出高速缓存
CN102355489A (zh) 通过网络显示与操作3d游戏的方法、系统、服务器及客户端
WO2011126712A2 (en) Classification and encoder selection based on content
CN104574510A (zh) 三维重建和编辑系统和方法
CN111913768A (zh) 虚拟化云桌面及其构建方法
KR102301393B1 (ko) 서버 블레이드를 이용한 메시 형상의 서비스형 데스크톱 플랫폼 장치
CN113778692B (zh) 一种数据处理的方法及装置、计算机设备和存储介质
US8379963B2 (en) Visual inspection system
Marchetto et al. Resource management policies for cloud-based interactive 3D applications

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150803

C14 Grant of patent or utility model
C41 Transfer of patent application or patent right or utility model
GR01 Patent grant
TA01 Transfer of patent application right

Effective date of registration: 20150803

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.