System and method for compressing video based on latency measurements and other feedback
First Claim
1. A computer-implemented method for performing video compression and delivery of video from an online hosted video game comprising:
- receiving a request by a first server from a client device over a network for playing a low latency video game at a hosting service center comprised of a plurality of hosting servers including the first server;
receiving control signals by the first server, the control signals being received from the client device over the network to a first the first server, the control signals indicating user input to the client device as the user is playing the video game and responsively executing the video game by the first server to generate video output comprising sequences of video images of the video game;
detecting an initial channel characteristic of a first network communication channel between the first server and the client device, the initial channel characteristic including a detected latency and a supported data rate of the first network communication channel;
encoding the video output to generate a first plurality of compressed video frames or portions thereof based on the initial channel characteristic;
transmitting the first plurality of compressed video frames or portions thereof to the client device over the first network communication channel, the compressed video frames or portions thereof configured to be decoded by a decoder on the client device and configured to be rendered on the client device as the user plays the video game;
wherein the operations of receiving control signals by the first server, executing the video game, encoding the video output and transmitting the first plurality of compressed video frames to the client device, and decoding the first plurality of compressed video frames on the client device is performed with a latency such that the user has the perception that the selected video game is responding instantly to the control signals received from the client device;
receiving feedback information from the client device, the feedback information usable to determine a current channel characteristic of the first network communication channel between the first server and the client device;
encoding the video output to generate a second plurality of compressed video frames or portions thereof based on the current channel characteristic, the second plurality of video frames being compressed differently than the first plurality of video frames based on the differences between the initial channel characteristic and the current channel characteristic;
transmitting the second plurality of compressed video frames or portions thereof to the client device over the first network communication channel, the second plurality of compressed video frames or portions thereof being configured to be decoded by the decoder on the client device and configured to be rendered by the client device as the user plays the video game;
wherein the operations of receiving control signals by the first server, executing the video game, encoding the video output to generate the second plurality of compressed video frames and transmitting the second plurality of compressed video frames to the client device over the first network communication channel, and decoding the second plurality of compressed video frames on the client device is also performed with the latency such that the user has the perception that the selected video game is responding instantly to the control signals received from the client device; and
wherein transmitting the first plurality of compressed video frames and the second plurality of compressed video frames includes mitigating a channel bandwidth peak by distributing large compressed video frames over a sequence of successive frame times including dividing each one of the lame compressed video frames into a plurality of tiles including at least one I tile and at least one P tile and all of the remaining tiles of the plurality of tiles being only P tiles.
6 Assignments
0 Petitions
Accused Products
Abstract
A system and method for performing video compression and streaming video from an online hosted video game or application. The online hosted video game or application is streamed to the client with a latency such that the user has the perception that the selected video game or application is responding instantly to the control signals received from the client device. In addition, feedback information received from the client device is used to determine characteristics of a communication channel between a server and the client. The video stream encoding is adjusted based on the detected communication channel characteristics, while maintaining a latency such that the user has the perception that the selected video game or application is responding instantly.
-
Citations
39 Claims
-
1. A computer-implemented method for performing video compression and delivery of video from an online hosted video game comprising:
-
receiving a request by a first server from a client device over a network for playing a low latency video game at a hosting service center comprised of a plurality of hosting servers including the first server; receiving control signals by the first server, the control signals being received from the client device over the network to a first the first server, the control signals indicating user input to the client device as the user is playing the video game and responsively executing the video game by the first server to generate video output comprising sequences of video images of the video game; detecting an initial channel characteristic of a first network communication channel between the first server and the client device, the initial channel characteristic including a detected latency and a supported data rate of the first network communication channel; encoding the video output to generate a first plurality of compressed video frames or portions thereof based on the initial channel characteristic; transmitting the first plurality of compressed video frames or portions thereof to the client device over the first network communication channel, the compressed video frames or portions thereof configured to be decoded by a decoder on the client device and configured to be rendered on the client device as the user plays the video game; wherein the operations of receiving control signals by the first server, executing the video game, encoding the video output and transmitting the first plurality of compressed video frames to the client device, and decoding the first plurality of compressed video frames on the client device is performed with a latency such that the user has the perception that the selected video game is responding instantly to the control signals received from the client device; receiving feedback information from the client device, the feedback information usable to determine a current channel characteristic of the first network communication channel between the first server and the client device; encoding the video output to generate a second plurality of compressed video frames or portions thereof based on the current channel characteristic, the second plurality of video frames being compressed differently than the first plurality of video frames based on the differences between the initial channel characteristic and the current channel characteristic; transmitting the second plurality of compressed video frames or portions thereof to the client device over the first network communication channel, the second plurality of compressed video frames or portions thereof being configured to be decoded by the decoder on the client device and configured to be rendered by the client device as the user plays the video game; wherein the operations of receiving control signals by the first server, executing the video game, encoding the video output to generate the second plurality of compressed video frames and transmitting the second plurality of compressed video frames to the client device over the first network communication channel, and decoding the second plurality of compressed video frames on the client device is also performed with the latency such that the user has the perception that the selected video game is responding instantly to the control signals received from the client device; and wherein transmitting the first plurality of compressed video frames and the second plurality of compressed video frames includes mitigating a channel bandwidth peak by distributing large compressed video frames over a sequence of successive frame times including dividing each one of the lame compressed video frames into a plurality of tiles including at least one I tile and at least one P tile and all of the remaining tiles of the plurality of tiles being only P tiles. - View Dependent Claims (2, 3, 4, 5, 6, 7, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37)
-
-
8. A system comprising a memory for storing program code and a processor for processing the program code to perform the operations of:
-
receiving a request by a first server from a client device over a network for playing a low latency video game at a hosting service center comprised of a plurality of hosting servers including the first server; receiving control signals by the first server, the control signals being received from the client device over the network to the first server, the control signals indicating user input to the client device as the user is playing the video game and responsively executing the video game on by the first server to generate video output comprising sequences of video images of the video game; detecting an initial channel characteristic of a first network communication channel between the first server and the client device, the initial channel characteristic including a detected latency and a supported data rate of the first network communication channel; encoding the video output to generate a first plurality of compressed video frames or portions thereof based on the initial channel characteristic; transmitting the first plurality of compressed video frames or portions thereof to the client device over the first network communication channel, the compressed video frames or portions thereof configured to be decoded by a decoder on the client device and configured to be rendered on the client device as the user plays the video game; wherein the operations of receiving control signals by the first server, executing the video game, encoding the video output and transmitting the first plurality of compressed video frames to the client device, and decoding the first plurality of compressed video frames on the client device is performed with a latency such that the user has the perception that the selected video game is responding instantly to the control signals received from the client device; receiving feedback information from the client device, the feedback information usable to determine a current channel characteristic of the first network communication channel between the first server and the client device; and encoding the video output to generate a second plurality of compressed video frames based on the current channel characteristic, the second plurality of video frames being compressed differently than the first plurality of video frames based on the differences between the initial channel characteristic and the current channel characteristic; and transmitting the second plurality of compressed video frames or portions thereof to the client device over the first network communication channel, the second plurality of compressed video frames or portions thereof configured to be decoded by the decoder on the client device and configured to be rendered by the client device as the user plays the video game; wherein the operations of receiving control signals by the first server, executing the video game, encoding the video output to generate the second plurality of compressed video frames and transmitting the second plurality of compressed video frames to the client device over the first network communication channel, and decoding the second plurality of compressed video frames on the client device is also performed with the latency such that the user has the perception that the selected video game is responding instantly to the control signals received from the client device; and wherein transmitting the first plurality of compressed video frames and the second plurality of compressed video frames includes mitigating a channel bandwidth peak by distributing large compressed video frames over a sequence of successive frame times including dividing each one of the large compressed video frames into a plurality of tiles including at least one I tile and at least one P tile and all of the remaining tiles of the plurality of tiles being only P tiles. - View Dependent Claims (9, 10, 11, 12, 13, 14, 38)
-
-
15. A machine-readable medium having program code stored thereon which, when executed by a machine, causes the machine to perform the operations of:
-
receiving a request by a first server from a client device over a network for playing a low latency video game at a hosting service center comprised of a plurality of hosting servers including the first server; receiving control signals by the first server, the control signals being received from the client device over the network to the first server, the control signals indicating user input to the client device as the user is playing the video game and responsively executing the video game by the first server to generate video output comprising sequences of video images of the video game; detecting an initial channel characteristic of a first network communication channel between the first server and the client device, the initial channel characteristic including a detected latency and a supported data rate of the first network communication channel; encoding the video output to generate a first plurality of compressed video frames or portions thereof based on the initial channel characteristic; transmitting the first plurality of compressed video frames or portions thereof to a client device over the first network communication channel, the compressed video frames or portions thereof configured to be decoded by a decoder on the client device and configured to be rendered on the client device as the user plays the video game; wherein the operations of receiving control signals by the first server, executing the video game, encoding the video output and transmitting the first plurality of compressed video frames to the client device, and decoding the first plurality of compressed video frames on the client device is performed with a latency such that the user has the perception that the selected video game is responding instantly to the control signals received from the client device; receiving feedback information from the client device, the feedback information usable to determine current a current channel characteristic of the first network communication channel between the first server and the client device; and encoding the video output to generate a second plurality of compressed video frames or portions thereof based on the current channel characteristic, the second plurality of video frames being compressed differently than the first plurality of video frames based on the differences between the initial channel characteristic and the current channel characteristic; and transmitting the second plurality of compressed video frames or portions thereof to the client device over the first network communication channel, the second plurality of compressed video frames or portions thereof configured to be decoded by the decoder on the client device and configured to be rendered by the client device as the user plays the video game; wherein the operations of receiving control signals by the first server, executing the video game, encoding the video output to generate the second plurality of compressed video frames and transmitting the second plurality of compressed video frames to the client device over the first network communication channel, and decoding the second plurality of compressed video frames on the client device is also performed with the latency such that the user has the perception that the selected video game is responding instantly to the control signals received from the client device; and wherein transmitting the first plurality of compressed video frames and the second plurality of compressed video frames includes mitigating a channel bandwidth peak by distributing large compressed video frames over a sequence of successive frame times including dividing each one of the large compressed video frames into a plurality of tiles including at least one I tile and at least one P tile and all of the remaining tiles of the plurality of tiles being only P tiles. - View Dependent Claims (16, 17, 18, 19, 20, 21, 39)
-
Specification