IP Library Granted Patent US 8,638,337
Granted Patent B2
US 8,638,337 · App. 12/405,034 · Granted Jan 28, 2014

Image frame buffer management

Inventors: Jackson Tung (Saratoga, CA); Thomas Young (Foster City, CA); Kai Chee Li (Fremont, CA); Jeff B. Widergren (Mount View, CA); Hao Guo (Cupertino, CA); Francis A. Palita (Goodyear, AZ); Hua Zhou (San Jose, CA)
Assignee: Microsoft Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,638,337
App. No.
12/405,034
Granted
Jan 28, 2014
Kind
B2
Abstract

Disclosed are methods and systems for tracking which data tiles have changed within an image frame. In an embodiment, each cell of a tile change list buffer may contain a frame number and updated when a tile is received from encoder. The frame number may be used as a base pointer for a particular frame buffer. When a frame is decoded, the contents of the tile change list buffer may be copied from the current tile change list buffer to the next buffer. This process may reduce memory traffic because the unchanged tile data does not have to be copied from frame to frame.

Claims (36)

1. In a system comprising a processor and memory, a method for decoding graphics data for use by a client computer, the method comprising:

receiving encoded graphics data, the encoded graphics data representing source graphics data associated with an image frame of a virtual machine session and encoded by dividing said source graphics into data tiles comprising contiguous sections of the source graphics data, transforming said data tiles into tile components, and encoding the tile components to produce said encoded graphics data;

decoding the encoded graphics data to extract the tile components;

transforming the tile components into the data tiles;

storing said data tiles in a plurality of frame buffers, each of the frame buffers corresponding to one image frame of a group of successive image frames, and maintaining tracking data for each of said data tiles, said tracking data identifying which one of said plurality of frame buffers stores said data tiles and which of said data tiles are associated with said image frame; and

determining most recently updated stored data tiles for each tile position as a function of said tracking data to render an image, the determined most recently updated stored data tiles selected so that one complete image frame is rendered using the most recently updated stored data tiles from the plurality of frame buffers.

2. The method of claim 1 , wherein the tile components are YUV components.

3. The method of claim 1 , wherein said decoding is entropy decoding.

4. The method of claim 3 , further comprising performing a dequantization process on an output of said entropy decoding.

5. The method of claim 4 , further comprising performing an inverse discrete wavelet transformation on an output of said dequantization process.

6. The method of claim 1 , wherein each of said tile components are divided into a quantity of data slices corresponding to a number of concurrent processes for encoding the data slices, and said decoding comprises concurrently decoding the data slices.

7. The method of claim 1 wherein said plurality of frame buffers comprises four frame buffers.

8. The method of claim 1 wherein said tracking data comprises a frame identifier and a frame buffer identifier.

9. A system configured to process graphics data, comprising:

at least one processor; and

at least one memory communicatively coupled to said at least one processor, the system configured to perform the following acts:

receiving encoded graphics data, the encoded graphics data representing source graphics data associated with an image frame and divided into data tiles comprising contiguous sections of the source graphics data;

decoding the encoded graphics data to extract tile components;

transforming the tile components into the data tiles;

storing said data tiles in a plurality of frame buffers, each of the frame buffers corresponding to one image frame of a group of successive image frames, and maintaining tracking data for each of said data tiles; and

determining most recently updated stored data tiles for each tile position as a function of said tracking data to render an image, the determined most recently updated stored data tiles selected so that one complete image frame is rendered using the most recently updated stored data tiles from the plurality of frame buffers.

10. The system of claim 9 , wherein the encoded graphics data is encoded by transforming said data tiles into tile components and encoding the tile components to produce said encoded graphics data.

11. The system of claim 9 , wherein said tracking data identifies which one of said plurality of frame buffers stores said data tiles and which of said data tiles are associated with said image frame.

12. The system of claim 9 , wherein said image frame is associated with a virtual machine session.

13. The system of claim 9 , wherein said encoded graphics data is received using Remote Desktop Protocol.

14. The system of claim 9 , wherein the system is a client computing device further comprising a display.

15. The system of claim 9 , wherein said plurality of frame buffers comprises four frame buffers.

16. The system of claim 9 wherein said tracking data comprises a frame identifier and a frame buffer identifier.

17. A system for decoding graphics data, comprising:

means for receiving encoded graphics data, the encoded graphics data representing source graphics data associated with an image frame divided into data tiles comprising contiguous sections of the source graphics data;

means for decoding the encoded graphics data to extract the data tiles;

means for storing said data tiles in a plurality of frame buffers, each of the frame buffers corresponding to one image frame of a group of successive image frames, and maintaining tracking data for each of said data tiles; and

means for determining most recently updated stored data tiles for each tile position as a function of said tracking data to render an image, the determined most recently updated stored data tiles selected so that one complete image frame is rendered using the most recently updated stored data tiles from the plurality of frame buffers.

18. The system of claim 17 , wherein the encoded graphics data is encoded by transforming said data tiles into tile components, and encoding the tile components to produce said encoded graphics data.

19. The system of claim 17 , wherein said tracking data identifies which one of said plurality of frame buffers stores said data tiles and which of said data tiles are associated with said image frame.

20. The system of claim 17 , wherein said plurality of frame buffers is four frame buffers.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034564/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 22, 2010
From: TUNG, JACKSON; LI, KAI CHEE; YOUNG, THOMAS; WIDERGREN, JEFF B.; PALITA, FRANCIS A.; ZHOU, HUA; GUO, HAO
To: MICROSOFT CORPORATION
Reel/Frame 023972/0224 →
Continuity (1)
Related Publication 20100231599A1 · Sep 16, 2010