Optimized key frame caching for remote interface rendering
First Claim
1. A method for managing a cache, comprising:
- providing current graphical frame data for a current frame to a client by a server over a network;
identifying a new frame by the server to be rendered at the client;
determining that dirty rectangles associated with changes between the new frame and the current frame exceed a first threshold to determine that the changes are associated with a full frame update;
determining whether the new frame is similar to the current frame in response to determining that the changes are associated with a full frame update, including determining whether the difference in pixel data values between the new frame and the current frame is greater than a second threshold;
performing motion encoding logic in response to determining that the new frame is similar to the current frame; and
performing caching logic in response to determining that the new frame is not similar to the current frame, wherein performing the caching logic comprising;
selecting, by the server, a cached frame if the client has a frame cached that is similar to the new frame;
determining a set of difference data associated with the difference between the new frame and the cached similar frame in response to determining that the client has the similar cached frame;
instructing the client to cache the new frame if the client does not have the similar frame; and
transmitting an identifier for the cached similar frame and the set of difference data to the client by the server if the client has the similar cached frame, and instructing the client to select the cached similar frame and apply the set of difference data to the cached similar frame.
2 Assignments
0 Petitions
Accused Products
Abstract
Frames of user interface (UI) graphical data can be remotely rendered more efficiently at a client during a remote session with a server by utilizing graphical data cached at the client to prevent re-sending data to the client that was sent in previous payloads. By using cache memory to remember recurring frames of similar UI data and delta encoding to correct areas that are not similar, encoded payload sizes are greatly reduced. When a cached frame is closer to a new frame than the current frame, the cached frame is selected and delta commands are derived from differences between the selected cache frame and the new frame. The differences between the cached frame and the new frame are then encoded as delta commands and the cache commands and delta commands are sent to the client which receives and applies the commands to render the new frame.
77 Citations
13 Claims
-
1. A method for managing a cache, comprising:
-
providing current graphical frame data for a current frame to a client by a server over a network; identifying a new frame by the server to be rendered at the client; determining that dirty rectangles associated with changes between the new frame and the current frame exceed a first threshold to determine that the changes are associated with a full frame update; determining whether the new frame is similar to the current frame in response to determining that the changes are associated with a full frame update, including determining whether the difference in pixel data values between the new frame and the current frame is greater than a second threshold; performing motion encoding logic in response to determining that the new frame is similar to the current frame; and performing caching logic in response to determining that the new frame is not similar to the current frame, wherein performing the caching logic comprising; selecting, by the server, a cached frame if the client has a frame cached that is similar to the new frame; determining a set of difference data associated with the difference between the new frame and the cached similar frame in response to determining that the client has the similar cached frame; instructing the client to cache the new frame if the client does not have the similar frame; and transmitting an identifier for the cached similar frame and the set of difference data to the client by the server if the client has the similar cached frame, and instructing the client to select the cached similar frame and apply the set of difference data to the cached similar frame. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method for managing a cache, comprising:
-
providing current graphical frame data for a current frame to a client by a server over a network; identifying a new frame by the server to be rendered at the client; determining that the changes between the new frame and the current frame are associated with a full frame update; determining whether the difference in pixel data values between the new frame and the current frame is within a threshold in response to determining that the changes are associated with a full frame update; performing a motion encoding process if the difference in pixel data values between the new frame and the current frame is within the threshold; and performing caching logic if the difference in pixel data values between the new frame and the current frame is not within the threshold, wherein the performing caching logic comprises; determining whether the new frame is similar to a frame that is cached at the client; selecting a cached frame by the server if a similar frame is cached at the client; generating a first cache instruction to select the selected cached frame if the new frame is similar to a frame cached at the client; encoding a set of difference data instructions associated with the difference between the new frame and the selected cached frame if the similar frame is cached at the client; generating a second cache instruction to add the new frame to the cache at the client if the new frame is not a similar to any existing frame cached at the client; and transmitting a payload that includes the first or second cache instruction and the set of difference data instructions if encoded to the client by the server. - View Dependent Claims (11, 12)
-
-
13. A server comprising:
-
a processor; and a processor readable storage device having processor readable code embodied on said processor readable storage device, said processor readable code for programming said processor to; provide current graphical frame data for a current frame from the server to a client over a network; identify a new frame to be rendered at the client; determine that the changes between the new frame and the current frame are associated with a full frame update; determine whether the difference in pixel data values between the new frame and the current frame is within a threshold in response to determining that the changes are associated with a full frame update; perform a motion encoding process if the difference in pixel data values between the new frame and the current frame is within the threshold; and perform caching logic if the difference in pixel data values between the new frame and the current frame is not within the threshold, wherein said processor readable code for programming said processor to perform caching logic comprises processor readable code for programming said processor to; determine whether the new frame is similar to a frame that is cached at the client; select a cached frame by the server if a similar frame is cached at the client; generate a first cache instruction to select the similar frame if the new frame is similar to a frame cached at the client; encode a set of difference data instructions associated with the difference between the new frame and the similar cached frame if the similar frame is cached at the client; generate a second cache instruction to add the new frame to the cache at the client if the new frame is not a similar to any existing frame cached at the client; and transmit a payload from the server to the client that includes the first cache instruction or the second cache instruction and the set of difference data instructions if encoded.
-
Specification