Abstract:
A computer-implemented system initiating a new online video game in response to user input from a client device, the online video game being in a first state on a first server when initiated, executing the online video game on the server, thereby causing the online video game to enter into a second state, pausing or terminating the online video game, determining differences between the first state and the second state and generating difference data containing the differences, transmitting the difference data over a network to a second server, the second server, and recreating the second state from the difference data and the first state in response to user input indicating that the user wishes to resume the online video game and in response to the second server being selected as the server on which to execute the video game.
Abstract:
A computer-implemented system and method are described for encoding video For example, a method according to one embodiment comprises selecting a tile size for subdividing each image in a sequence of images based on a specified type of encoding algorithm to be used for encoding the tiles, wherein M tiles are encoded for each image, each tile being encoded according to a first encoding format or a second encoding format, each tile having a designated tile location within each image, specifying a rotating pattern to be used for encoding the tiles over a sequence of N images, the rotating pattern comprising encoding only certain tiles of each image using the first encoding format, and rotating the tile locations selected for the first encoding format over the N images to ensure that all M tiles have been encoded according to the first encoding format across the N images
Abstract:
An application/game server comprising a central processing unit to process application/video game program code and a graphics processing unit (GPU) to process graphics commands and generate a series of video frames for the application/video game; one or more back buffers to store video frames as the video frames are being created in response to the execution of the graphics commands; a front buffer outputting the video frame for display one scan line at a time at a designated scan out frequency, a subset of scan lines stored in the front buffer being associated with a vertical blanking interval (VBI); and a frame processing module to begin copying a newly completed frame from the back buffer to the front buffer before the video data for a prior video frame stored in the front buffer has not been fully scanned out.
Abstract:
A computer-implemented system and method are described for performing video compression. For example, a method according to one embodiment comprises: encoding a plurality of video frames or portions thereof according to a first encoding format, the first encoding format being optimized for transmission to a client device over a current communication channel; transmitting the plurality of encoded video frames or portions to the client device over the communication channel; concurrently encoding the first plurality of video frames according to a second encoding format, the second encoding format having a relatively higher-quality compressed video and/or a lower compression ratio than the first encoding format; storing the first plurality of video frames encoded in the second encoding format on a storage device; and making the first plurality of video frames encoded in the second encoding format available to the client device and other client devices for playback of the video stream.
Abstract:
A system and method for efficiently processing a video stream using limited hardware and/or software resources. For example, one embodiment of a computer-implemented method for efficiently processing a video stream with a processor pipeline having a plurality of pipeline stages, comprises: identifying a bottleneck stage within the processor pipeline the bottleneck stage processing frames of the video stream; receiving a feedback signal from the bottleneck stage at one or more upstream stages, the feedback signal providing an indication of the speed at which the bottleneck stage is processing the frames of the video stream; and responsively adjusting the speed at which the one or more upstream stages are processing frames of the video stream to approximate the speed at which the bottleneck stage is processing the frames of the video stream.
Abstract:
A video game server receiving user inputs related to an online video game to render a sequence of video images, a first stream encoder to compress the sequence of video images and generate a live video stream during a live gaming session with a user of a client device, the first stream encoder receiving channel feedback signals from the client device and responsively adapting compression of the sequence of video images based on channel feedback signals. A second stream encoder to compress the sequence of video images at a specified video quality and/or compression ratio unrelated to the channel feedback signal during the live gaming session with the user, thereby generating a High Quality (HQ) video stream, having a relatively higher video quality and/or lower compression ratio than the live video stream, and a storage device for storing the HQ video stream for subsequent playback to the user of the client device and to other users upon request
Abstract:
A computer-implemented system and method are described for performing video compression. For example, a method according to one embodiment comprises: encoding a plurality of video frames or portions thereof according to a first encoding format; transmitting the plurality of encoded video frames or portions to a client device; receiving feedback information from the client device, the feedback information usable to determine whether data contained in the video frames or portions has not been successfully received and/or decoded; in response to detecting that a video frame or portion thereof has not been successfully received and/or decoded, encoding a video frame or portion thereof according to a second encoding format; and transmitting the video frames or portions thereof to the client device.
Abstract:
A computer-implemented system and method for performing video compression are described. For example, a method according to one embodiment of the invention comprises encoding a plurality of video frames or portions thereof according to a first encoding format; transmitting the plurality of encoded video frames or portions to a client device; receiving feedback information from the client device, the feedback information usable to determine whether data contained in the video frames or portions has been successfully received and/or decoded; determining latency associated with communicating with the client device; in response to detecting that one or more video frames or portions thereof have not been successfully received and/or decoded: (1) if the latency is above a specified threshold, then encoding a new video frame or portion thereof according to a second encoding format, the second encoding format comprising a format which is not dependent on previously-transmitted video frames or portions thereof.
Abstract:
A computer-implemented system and method are described for performing video compression A method according to one embodiment comprises encoding a plurality of video frames or portions according to a first encoding format, transmitting the plurality of encoded video frames or portions to a client device, receiving feedback information from the client device, the feedback information usable to determine whether data contained in the video frames or portions has not been successfully received and/or decoded, in response to detecting that one or more video frames or portions thereof have not been successfully received and/or decoded, and applying FEC coding to selected frames or applying adaptive FEC coding to the frames and transmitting the new video frame or portion thereof to the client device
Abstract:
A computer-implemented system and method for streaming video from a server to a client are described. For example, a method according to one embodiment comprises: receiving at the server a request for video content from the client; in response to the request, determining the hardware/software configuration of the client; generating and/or selecting a temporary decoder based on the hardware/software configuration of the client; transmitting the temporary decoder to the client, the client installing the temporary decoder; encoding and streaming the requested video content from the server to the client, the video content being encoded based on the capabilities of the temporary decoder, the video content being decoded by the temporary decoder and rendered on the client; detecting that the client has ended the session with the server; and in response to detecting that the client has ended the session, temporarily disabling and/or removing the temporary decoder from the client.