# Patent

## Title
Low-latency remote display rendering using tile-based rendering systems

## Abstract

Apparatus, systems and methods for low latency remote display rendering using tile-based rendering systems are disclosed. In one implementation, a system includes a network interface and a content source coupled to the network interface. The content source being capable of rendering at least one tile of a tiled image, encoding the at least one tile, and providing the at least one encoded tile to the network interface before all tiles of the tiled image are rendered.

## Background
BACKGROUND
In a remote display rendering system a remote server may send image data over a network for viewing by a user on a local display. Typically, a remote software application associated with the server renders, encodes and transmits the image data one frame at a time. The local user then decodes and displays the frames as they are received. The rate at which the local user receives the image frames is limited in part by the latency of the network. Some applications that use remote display rendering, such as 3D games, may demand low-latency timing between a user's input (i.e., the user pressing a controller button) and the displaying of the resulting action (i.e., user's game character changes orientation). In such circumstances excessive network latency may impair the end-user game experience when game scene images are transmitted frame-by-frame.



BRIEF DESCRIPTION OF THE DRAWINGS
The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate one or more implementations consistent with the principles of the invention and, together with the description, explain such implementations. The drawings are not necessarily to scale, the emphasis instead being placed upon illustrating the principles of the invention. In the drawings,
FIG. 1 illustrates an example system;
FIG. 2 is a flow chart illustrating an example process of providing and transmitting encoded image tiles; and
FIG. 3 is a flow chart illustrating an example process of receiving encoded image tiles.



DETAILED DESCRIPTION
The following detailed description refers to the accompanying drawings. The same reference numbers may be used in different drawings to identify the same or similar elements. In the following description, for purposes of explanation and not limitation, specific details are set forth such as particular structures, architectures, interfaces, techniques, etc. in order to provide a thorough understanding of the various aspects of the claimed invention. However, it will be apparent to those skilled in the art, having the benefit of the present disclosure, that the various aspects of the invention claimed may be practiced in other examples that depart from these specific details. In certain instances, descriptions of well known devices, circuits, and methods are omitted so as not to obscure the description of the present invention with unnecessary detail.
FIG. 1 illustrates an example system 100 according to one implementation of the invention. System 100 may include a remote graphics and/or video content source 102, a local terminal 104 and a network 106 communicatively coupling source 102 with terminal 104. Source 102 may include a frame buffer 108, a renderer 110, and an encoder 112. A network interface 114 may communicatively couple source 102 to network 106. Terminal 104 may include a network interface 116, a decoder 118, a display controller 120 and a display 122.
Frame buffer 108 may be any device capable of holding and/or storing one or more frames of image data. Although illustrated as a physical device, buffer 108 may be embodied in hardware, software, firmware or any combination thereof without departing from the scope and spirit of the invention. In one implementation, buffer 108 may be provided with image data by a software application (not shown) that creates graphics and/or video data on the fly such as a 3D gaming application, although the invention is not limited in this regard. Alternatively, in another implementation, image frame data may be provided to buffer 108 by a source of stored image data (not shown).
Renderer 110 may be embodied in an integrated circuit (IC) and/or a collection of ICs capable of accepting graphics and/or video content from buffer 108 and rendering the content into a format suitable for transmission to local terminal 104. In another embodiment, renderer 110 may be embodied in software and/or firmware. In one implementation, renderer 110 generates image data in a particular bitmap format such as red-green-blue (RGB), although the invention is not limited in this regard and the claimed invention contemplates other image data formats.
Encoder 112 may convert the image data output of renderer 110 into a compressed format appropriate for efficient communication over network 106 to local terminal 104. In one implementation, encoder 112 may convert the RGB image data provided by renderer 110 into a Joint Photographic Experts Group (JPEG) compatible format, although the invention is not limited in this regard. For example, in one implementation, encoder 112 may convert the RGB image data into a YUV data format and then compress the YUV image data into an JPEG compatible format such as 4:2:2 YUV or 4:1:1 YUV using well known techniques. In another implementation, encoder 112 may use well known techniques to run-length encode the RGB image data provided by renderer 110. Clearly many such combinations of image data format conversion and/or encoding are possible and are contemplated by the claimed invention.
Network interface 114 may communicatively couple source 102 to network 106 and may comprise any network interface such as a wired interface and/or a wireless interface suitable for conveying compressed image data onto network 106. For example, in one implementation, interface 114 may be a wireless local area network (WLAN) interface, although the invention is not limited in this regard.
The components of content source 102 may be embodied in hardware, software, firmware or any combination thereof without departing from the scope and spirit of the invention. Moreover, the components of content source 102 need not be located together in a single device but one or more of buffer 108, renderer 110, and/or encoder 112 may be located in physically separate devices that are communicatively and/or operatively coupled together. Alternatively, content source 102 may be embodied within a single device including one or more ICs that provide the functionality of buffer 108, renderer 110, and/or encoder 112 as described. In one implementation, the components of source 102 may be embodied in a web server. In another implementation, a software application may generate image tiles and supply them directly to renderer 110 without first storing the image tiles in a frame buffer.
Network 106 may be any content delivery network capable of communicating and/or providing compressed image data from content source 102 to terminal 104. In one implementation, network 106 may comprise the global internet or world-wide web. However, the exact nature of network 106 does not limit the present invention. For example, network 106 could be a wired and/or wireless non-global, local area network (LAN) or a wide area network (WAN) without limiting the claimed invention. In implementations where network 106 may be a wired and/or wireless LAN and/or WAN the descriptors “remote” and “local” applied to source 102 and terminal 104 respectively are relative and may signify that source 102 and terminal 104 are physically separated by a relatively short distance. For example, in an implementation where network 106 may be a wireless LAN, source 102 and terminal 104 may only be separated by a few feet.
Network interface 116 may communicatively couple terminal 104 to network 106 and may comprise any network interface such as a wired interface and/or a wireless interface suitable for conveying compressed image data from network 106 to terminal 104. For example, in one implementation, interface 116 may be a wireless local area network (WLAN) interface, although the invention is not limited in this regard.
Decoder 118 may decompress the compressed image data generated by source 102 and received from network 106 via interface 116. In one implementation, decoder 118 may decompress the encoded MPEG-compatible format image data and provides that decompressed data to display controller 120, although the invention is not limited in this regard. For example, in one implementation, decoder 118 may decompress the YUV image data from the sub-sampled 4:2:2 YUV format into fully sampled YUV format using well known techniques. In another implementation, decoder 118 may decompress run-length encoded RGB data using well known techniques. Clearly many such combinations of image decoding are possible and are contemplated by the claimed invention.
Display controller 120 may be any display controller suitable for converting image data provided by decoder 118 into a format appropriate for use by display 122. In one implementation, display controller 120 may convert YUV image data received from decoder 118 into an RGB format, although the invention is not limited in this regard. Likewise, display 122 may be any display capable of displaying image data. In one implementation, display 122 may be a liquid crystal display (LCD) compatible with displaying image data in the RGB format, although the invention is not limited in this regard.
The components of terminal 104 may be embodied in hardware, software, firmware or any combination thereof without departing from the scope and spirit of the claimed invention. Moreover, the components of terminal 104 need not be located together in a single device but one or more of network interface 116, decoder 118, display controller 120 and/or display 122 may be located in physically separate devices that are communicatively and/or operatively coupled together. Alternatively, one or more components of terminal 104 may be embodied within a single device including one or more ICs that provide the functionality of interface 116, decoder 118, display controller 120 and/or display 122 as described. In one implementation, the components of terminal 104 may be embodied in a single personal computing device such as a notebook and/or a desktop computer.
In one implementation, buffer 108 may hold, contain and/or provide graphics and/or video data in a tiled format. For example, an image comprising 640 pixels by 480 pixels may be divided into 300 contiguous tiles each having dimensions of 32 pixels by 32 pixels. In one implementation, renderer 110 may render image data provided by buffer 108 one tile at a time and, once rendered, supply each tile to encoder 112. In this manner content source 102 may provide individual encoded tiles to terminal 104 as will be described in more detail below.
FIG. 2 is a flow chart illustrating a process 200 of providing and transmitting encoded image tiles. Although process 200 may be described with regard to system 100 of FIG. 1, the claimed invention is not limited in this regard. Processing may begin by providing image tiles [act 202]. One way to do this is by having a software application supply a tiled image frame to frame buffer 108. Processing may continue with the rendering of a tile of the image frame [act 204] and the encoding of the rendered tile [act 206]. In one implementation, renderer 110 may render a tile of the tiled image frame provided by buffer 108 and supply that rendered tile to encoder 112 for encoding. Processing may continue with the transmission of the encoded tile [act 208]. This may be done by having encoder 112 supply the encoded tile to network interface 114. Interface 114 may then transmit the encoded tile to terminal 104 over network 106.
Because system 100 my provide graphics and/or video data in tiled format, process 200 may provide for the rendering, encoding and/or transmission of multiple tiles of a tiled image in a pipelined and/or substantially parallel manner. In other words, process 200 may allow network interface 114 to transmit one or more encoded image tiles over network 106 separately from others of the encoded image tiles of the graphics and/or video image data being provided to network interface 114 by encoder 112. Thus, in one implementation, network interface 114 may transmit one or more encoded image tiles over network 106 before renderer 110 has rendered all image tiles of the graphics and/or video data image stored in buffer 108. However, this is merely an example of how process 200 may provide for the rendering, encoding and/or transmission of multiple tiles of a tiled image in a pipelined and/or substantially parallel manner and implementation of the present invention is not limited in these respects. For example, in another implementation, network interface 114 may transmit one or more encoded image tiles over network 106 before encoder 112 has encoded all image tiles of the graphics and/or video data image stored in buffer 108 and rendered by renderer 110.
In one implementation, after renderer 110 has rendered a tile in act 204, processing may continue with the rendering of a next tile [act 210]. Thus, subsequent to rendering a tile in act 204, renderer 110 may render a next tile in act 210. The next tile may then be encoded [act 212] and transmitted [214]. In one implementation, after encoder 112 has encoded the tile in act 206, encoder 112 may encode the next tile in act 212. Similarly, after interface 114 has transmitted the tile in act 208, interface 114 may transmit the next tile in act 214. Process 200 may continue in a similar fashion with the pipelined or substantially parallel rendering, encoding and transmission of all tiles in the image frame until the last tile in the image frame is rendered, encoded and transmitted in acts 216-220.
FIG. 3 is a flow chart illustrating a process 300 of receiving and displaying encoded image tiles. Although process 300 may be described with regard to system 100 of FIG. 1, the claimed invention is not limited in this regard. Processing may begin by receiving an encoded image tile [act 302]. One way to do this is by having network interface 116 receive the encoded image tile from network 106. Processing may continue with the decoding of the encoded image tile [act 304] received in act 302. In one implementation, decoder 118 may decode the encoded image tile provided by network interface 116. Processing may continue with the display of the decoded tile [act 306]. This may be done by having decoder 118 supply the decoded tile to display controller 120. Controller 120 may then process the decoded image tile and supply the resulting image tile data to display 122.
Because system 100 my provide graphics and/or video data in tiled format, process 300 may provide for the reception, decoding and display of multiple tiles of a tiled image in a pipelined and/or substantially parallel manner. In other words, process 300 may allow network interface 116 to receive one or more encoded image tiles from network 106 separately from others of the encoded image tiles of the graphics and/or video image data being transmitted over network 106 by interface 114. Thus, in one implementation, network interface 116 may receive one or more encoded image tiles over network 106 before renderer 110 has rendered all image tiles of the graphics and/or video data image stored in buffer 108. However, this is merely an example of how process 300 may provide for the reception, decoding and/or display of multiple tiles of a tiled image in a pipelined and/or substantially parallel manner and implementation of the present invention is not limited in these respects. For example, in another implementation, network interface 116 may receive one or more encoded image tiles over network 106 before encoder 112 has encoded all image tiles of the graphics and/or video data image stored in buffer 108 and rendered by renderer 110.
In one implementation, after interface 116 has received a tile in act 302, processing may continue with the receiving of a next tile [act 308]. Thus, subsequent to receiving an encoded tile in act 302, interface 116 may receive a next encoded tile in act 308. The next encoded tile may then be decoded [act 310] and displayed [312]. In one implementation, after decoder 118 has decoded [act 304] the first tile received in act 302, decoder 118 may decode the next tile in act 310. Similarly, after controller 120 has processed the decoded image tile for display in act 306, controller 120 may process the next decoded image tile for display in act 312. Process 300 may continue in a similar fashion with the pipelined or substantially parallel receiving, decoding and display of all tiles in the image frame until the last tile in the image frame is received, decoded and displayed in acts 314-318.
The acts shown in FIG. 2 and/or FIG. 3 need not be implemented in the order shown; nor do all of the acts necessarily need to be performed. Also, those acts that are not dependent on other acts may be performed in parallel with the other acts. Further, at least some of the acts in this figure may be implemented as instructions, or groups of instructions, implemented in a machine-readable medium.
The foregoing description of one or more implementations consistent with the principles of the invention provides illustration and description, but is not intended to be exhaustive or to limit the scope of the invention to the precise form disclosed. Modifications and variations are possible in light of the above teachings or may be acquired from practice of various implementations of the invention. For example, the system, apparatus and methods for low latency remote display rendering using tile-based rendering systems is not limited to systems or apparatus providing JPEG-compatible encoding or decoding. Rather, the claimed invention also contemplates other protocols capable of supporting low latency remote display rendering using tile-based rendering systems. Moreover, while FIGS. 2 and 3 and the accompanying text may describe a process for rendering, encoding, transmitting, receiving, decoding and displaying individual tiles, other processes are contemplated by the claimed invention. For example, in one implementation, two or more tiles at a time may be rendered, encoded, transmitted, received, decoded and displayed in a batch process. In other words, for example, two or more image tiles at a time may be rendered in act 204, encoded in act 206, transmitted in act 208, received in act 302, decoded in act 304 and displayed in act 306 and so on. Clearly, many other implementations may be employed to provide low latency remote display rendering using tile-based rendering systems consistent with the claimed invention.
No element, act, or instruction used in the description of the present application should be construed as critical or essential to the invention unless explicitly described as such. Also, as used herein, the article “a” is intended to include one or more items. Variations and modifications may be made to the above-described implementation(s) of the claimed invention without departing substantially from the spirit and principles of the invention. All such modifications and variations are intended to be included herein within the scope of this disclosure and protected by the following claims.

## Claims

1. A method comprising:
providing a tiled image having multiple tiles; and
sending the entire tiled image to a remote device; said sending comprising
rendering at least one tile of the tiled image;
encoding the at least one tile; and
transmitting the at least one encoded tile before all tiles of the tiled image are rendered;

wherein the at least one tile of the tiled image has a height of multiple pixel rows and a width of multiple pixel columns.

2. The method of claim 1, wherein transmitting the at least one encoded tile comprises transmitting the at least one encoded tile while at least one other tile is being rendered or while at least one other tile is being encoded.

3. The method of claim 1, wherein rendering the at least one tile comprises generating at least one bitmapped tile.

4. The method of claim 3, wherein the at least one bitmapped tile has one of an RGB, YUV or CIELab color format.

5. The method of claim 1, wherein encoding the at least one tile comprises compressing the at least one tile.

6. The method of claim 5, wherein compressing the at least one tile comprises compressing the at least tile in a JPEG-compatible format.

7. The method of claim 1, wherein transmitting the at least one encoded tile comprises transmitting the at least one encoded tile across a network to a terminal.

8. The method of claim 1, further comprising:
receiving the at least one tile;
decoding the at least one tile to generate at least one decoded tile; and
displaying the at least one decoded tile.

9. An article comprising a computer readable medium having stored thereon instructions that, when executed by a computer, cause the computer to:
provide a tiled image having multiple tiles; and
send the entire tiled image to a remote device; said sending comprising
rendering at least one tile of a tiled image;
encoding the at least one tile; and
transmitting the at least one encoded tile before all tiles of the tiled image are rendered;

wherein the at least one tile of the tiled image has a height of multiple pixel rows and a width of multiple pixel columns.

10. The article of claim 9, wherein the instructions to transmit the at least one encoded tile, when executed by the computer, cause the computer to transmit the at least one encoded tile while at least one other tile is being rendered or while at least one other tile is being encoded.

11. The article of claim 9, wherein the instructions to render at least one tile, when executed by the computer, cause the computer to generate at least one bitmapped tile.

12. The article of claim 11, wherein the at least one bitmapped tile has one of an RGB, YUV or CIELab color format.

13. The article of claim 9, wherein the instructions to encode the at least one tile, when executed by the computer, cause the computer to compress the at least one tile.

14. The article of claim 13, wherein the instructions to encode the at least one tile, when executed by the computer, cause the computer to compress the at least one tile in a JPEG-compatible format.

15. The article of claim 9, wherein the instructions to transmit the at least one encoded tile, when executed by the computer, cause the computer to transmit the at least one encoded tile across a network to a terminal.

16. A system comprising:
a renderer to render rendering at least one tile of the tiled image;
an encoder to encode encoding the at least one tile; and
a network interface to send the entire tiled image over a network, said sending comprising transmitting the at least one encoded tile over a network before all tiles of the tiled image are rendered;
wherein the at least one tile of the tiled image has a height of multiple pixel rows and a width of multiple pixel columns.

17. The system of claim 16, wherein providing the at least one encoded tile comprises providing the at least one encoded tile while at least one other tile is being rendered or while at least one other tile is being encoded.

18. The system of claim 16, wherein rendering the at least one tile comprises generating at least one bitmapped tile.

19. The system of claim 18, wherein the at least one bitmapped tile has one of an RGB, YUV or CIELab color format.

20. The system of claim 16, wherein encoding the at least one tile comprises compressing the at least one tile.

21. The system of claim 20, wherein compressing the at least one tile comprises compressing the at least tile in a JPEG-compatible format.

22. The system of claim 16, wherein providing the at least one encoded tile comprises providing the at least one encoded tile across a network to a terminal.

23. A method, comprising:
providing a tiled image having multiple tiles; and
sending the entire tiled image to a remote device; said sending comprising
encoding at least a first image tile of the tiled image;
encoding at least a second image tile of the tiled image; and
transmitting the at least a first encoded image tile over a network before encoding the at least a second image tile;

wherein the first image tile of the tiled image has a height of multiple pixel rows and a width of multiple pixel columns; and
wherein the second image tile of the tiled image has a height of multiple pixel rows and a width of multiple pixel columns.

24. The method of claim 23 wherein transmitting the at least first image tile further comprises:
transmitting the at least a first encoded image tile over the network while encoding at least a third image tile of the tiled image.

25. The method of claim 23, wherein encoding the at least a first image tile and encoding the at least a second image tile comprises compressing the at least a first image tile and compressing the at least a second image tile.

26. The method of claim 25, wherein compressing the at least a first image tile and compressing the at least a second image tile comprises compressing the at least a first image tile in a JPEG-compatible format and compressing the at least a second image tile in a JPEG-compatible format.