Graphics applications generate image frames for display on a local or remote computer monitor. The amount of change between subsequent image frames may be great or small. For example, the amount of change may vary depending on how much of each image frame corresponds to still images (e.g., text or fixed graphics) and how much of each image frame corresponds to moving images (e.g., animated graphics or video). Updating the content on a remote computer monitor screen typically involves various resource consuming operations referred to herein as “remoting operations.” Unfortunately, remoting operations demand a considerably amount of resources (e.g., network bandwidth, memory bandwidth, and processor cycles).
For a detailed description of exemplary embodiments of the invention, reference will now be made to the accompanying drawings in which:
Certain terms are used throughout the following description and claims to refer to particular system components. As one skilled in the art will appreciate, computer companies may refer to a component by different names. This document does not intend to distinguish between components that differ in name but not function. In the following discussion and in the claims, the terms “including” and “comprising” are used in an open-ended fashion, and thus should be interpreted to mean “including, but not limited to . . . .” Also, the term “couple” or “couples” is intended to mean either an indirect, direct, optical or wireless electrical connection. Thus, if a first device couples to a second device, that connection may be through a direct electrical connection, through an indirect electrical connection via other devices and connections, through an optical electrical connection, or through a wireless electrical connection.
The following discussion is directed to various embodiments of the invention. Although one or more of these embodiments may be preferred, the embodiments disclosed should not be interpreted, or otherwise used, as limiting the scope of the disclosure, including the claims. In addition, one skilled in the art will understand that the following description has broad application, and the discussion of any embodiment is meant only to be exemplary of that embodiment, and not intended to intimate that the scope of the disclosure, including the claims, is limited to that embodiment.
As described herein, embodiments of the disclosure reduce resource consumption, when updating content on a computer monitor's screen, by partitioning (sub-dividing) a display surface into multiple regions and performing remoting operations (e.g., “GRAB” operations, “COMPARE” operations, and “SEND” operations) for the different partitions at different rates. As used herein, “display surface” refers to a memory representation of a computer monitor's screen (i.e., each pixel of the screen is represented in memory). As used herein, a GRAB operation refers to reading at least some of an image frame from the display surface. As used herein, a COMPARE operation refers to comparing a current image frame with a previous image frame. As used herein, a SEND operation refers to transmitting image frame updates to a remote computer monitor. In some embodiments, a SEND operation includes compressing the image frame updates. The techniques described herein were developed for use in a remote graphics environment in which a “sender” system transmits graphics content to one or more remote “receiver” systems. However, these techniques are not limited to any particular embodiment and are applicable to any system with a graphic user interface (GUI).
In alternative embodiments, the first region 112 and the second region 114 are defined by “learned” information regarding the content to be displayed. The learned information identifies still (or slow moving) content and fast moving content by tracking the amount of display surface change that occurs over time. As an example, a tracking algorithm may keep a history for each of a plurality of display surface sub-blocks (e.g., the entire display surface may be divided into sub-blocks, each representing 8×8 pixels or another size). “High-motion” sub-blocks are those having more than a threshold amount of change over a predetermined amount of image frames (e.g., over 10 frames, the average number of pixels that change per frame is more than half the pixels in the sub-block). Upon detection, high-motion sub-blocks are preferably assigned to the second region 114. Meanwhile, “low-motion” sub-blocks are those having less than a threshold amount of change over the predetermined amount of image frames. Upon detection, low-motion sub-blocks are preferably assigned to the second region 114. In different embodiments, the threshold change amount, the history length tracked, and/or the size for the sub-blocks may vary. Further, the threshold change amount may consider color change thresholds as well (e.g., only color changes that are significant count as a change).
In at least some embodiments, sub-blocks are coalesced into larger blocks to form the second region 114. As an example, the second region 114 may correspond to the smallest rectangle that encompasses all of the detected high-motion sub-blocks. Alternatively, the second region 114 corresponds to multiple rectangles (joined or separated) of coalesced high-motion sub-blocks. In accordance with some embodiments, when relying on learned information, the shape and size of the second region 114 is dynamic and may vary over time.
Once the first region 112 and the second region 114 have been defined by the partitioning operation, the display surface management technique 100 performs first region remoting operations and second region remoting operations to update the content displayed on a computer monitor 130. In at least some embodiments, the remoting operations for both the first region 112 and the second region 114 comprise GRAB, COMPARE, and SEND operations as previously described. The frequency at which the first region remoting operations are performed differs from the frequency at which the second region remoting operations are performed. For example, the first region remoting operations may be performed at a predetermined update rate selected for fixed or slow-moving images (e.g., 1 to 5 frames per second) and the second region remoting operations may be performed at a predetermined update rate selected for fast-moving images (e.g., more than 20 frames per second).
Additionally or alternatively, for embodiments that rely on learned information to identify the first region 112 and the second region 114, the remoting operations rates assigned to each region may be customized and dynamic (e.g., based on an average amount of image change detected for the second region 114 and/or the first region 112). In other words, the region defining boundaries as well as each region's remoting operations rates may be selectively fixed or dynamic. As an example, predetermined default boundaries may be employed unless certain image change thresholds are surpassed (i.e., the image change thresholds indicate that the boundaries of the first region 112 and the second region 114 need to be adjusted). Similarly, predetermined default rates for remoting operations may be employed unless certain image change thresholds are surpassed (e.g., the image change thresholds indicate that the rates of remoting operations for the first region 112 and/or the second region 114 need to be adjusted).
In the display surface management technique 100 of
In
As shown, the graphics control unit 210 comprises a display surface 212, which is a memory representation of each pixel of the monitor's screen. The graphics control unit 210 also comprises a partition management module 214, which performs the display surface management technique 100 of
Although the graphics control unit 210 of
In at least some embodiments, the graphics control unit 210 and/or the system memory 204 stores instructions that, when executed, cause the processor 202 (or another processor) to generate boundaries for a first region and a second region of a display screen memory representation. For example, the instructions may cause the processor 202 to generate the boundaries based on predetermined information regarding content to be displayed on a display screen. Alternatively, the instructions may cause the processor 202 to dynamically generate the boundaries by tracking a history of content displayed on a display screen. The instructions further cause the processor 202 to assign a first rate to remoting operations associated with the first region and to assign a second rate to remoting operations associated with the second region. The first and second rates are different and are selected to in order to efficiently utilize system resources. In accordance with at least some embodiments, the instructions further cause the processor 202 to dynamically adjust at least one of the first rate and the second rate as needed to more efficiently utilize system resources,
As shown, the sender 304 performs various input operations 306 and output operations 308. In at least some embodiments, the input operations 306 comprise decrypting and applying user input events from the receiver 310. For example, the user input events may correspond to keyboard commands, mouse commands, instructions received from a Universal Serial Bus (USB) device (e.g., a flash drive) or other user input events that originate at the receiver 310. Such user input events may affect, for example, which graphics application (or applications) is being executed by the sender 304 for use by the receiver 310. The user input events also may affect various options supported by each executed graphics application.
As shown, the output operations 308 comprise capturing image frames from at least one graphics application. The output operations 308 further comprise providing partition management of a display surface. As previously described for
At the receiver 310, various input operations 312 and output operations 314 are performed. In at least some embodiments, the input operations 312 comprise decompressing, decrypting and displaying graphics content received from the sender 304. Meanwhile, the output operations 314 comprise capturing user input events (e.g., keyboard commands, mouse commands, voice commands, instructions received from a flash drive or a smart card, or other user input events) that originate at the receiver 310. The output operations 314 also may comprise encrypting captured user input user input events for transmission to the sender 304 via the network connection 320.
In the embodiment of
As shown, the receiver 310 comprises a remote receive module 430, which handles communications to and from the sender 304. In at least some embodiments, the remote receive module 430 comprises a security component 432 that manages encryption and decryption for the receiver 310, a CODEC component 434 that manages decompression of content received from the second 304, a display management component 436 that manages display options (e.g., resolution, color, or other options) of at least one monitor 450 coupled to the receiver 310. The remote receive module 430 also comprises an input management component 438 that manages user input events received from input devices 460 (e.g., keyboard, mouse, or USB devices) coupled to the receiver 310. The remote receive module 430 also comprises drivers 440 to enable hardware components that are coupled to or are part of the receiver 310 to support the remote graphics technique described herein.
In accordance with at least some embodiments, the method 500 may comprise additional or fewer steps. As an example of additional steps, the method 500 may comprise generating boundaries for the first and second regions by accessing predetermined display surface information (e.g., information identifying the format/positioning of content to be displayed). Additionally, the method 500 may comprise dynamically modifying the boundaries of the first and second regions (e.g., by tracking content changes). Additionally, the method 500 may comprise selectively modifying the first rate and/or the second rate.
The above discussion is meant to be illustrative of the principles and various embodiments of the present invention. Numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/US2009/038139 | 3/24/2009 | WO | 00 | 8/30/2011 |