Qualified video delivery
First Claim
1. A video server system having a processor for executing program instructions stored in a memory to provide, comprising:
- a client qualifier configured to remotely determine if a client is qualified to receive a video stream configured for display on the client in response to a received request to access a selected video game, the qualification being based on abilities of the client to receive and display the video stream at least at a minimum level of quality;
a monitor configured to assign clients to particular ones of a plurality of video sources, the assignment being made in part based on test results gathered by the client qualifier that confirms the minimum level of quality for the video stream and whether the video source is provisioned with game logic for the selected video game, wherein each video source includes,virtual machines for the provisioned game logic;
virtual drivers associated with the virtual machines;
a non-virtual driver executed on a hardware graphical processing unit (GPU);
a shared memory;
the non-virtual driver is configured for receiving one or more video streams in parallel from the virtual drivers, the hardware GPU is configured for producing video frames, wherein each virtual driver is configured to manage transfer of a respective video stream to the non-virtual driver and manage transfer of video frames for the respective video stream to the shared memory;
an encoder for encoding the video frames, the encoder is defined by one or more dynamic encoding pipelines (DEPs), and each DEP performs the encoding using an H.264 protocol, wherein video frames produced for each virtual driver are processed by a respective DEP having access to the shared memory; and
an I/O device configured for communicating encoded video streams to the client via a communication network.
4 Assignments
0 Petitions
Accused Products
Abstract
A video server is configured to provide streaming video to players of computer games over a computing network. The video server can provided video of different games to different players simultaneously. This is accomplished by rendering several video streams in parallel using a single GPU. The output of the GPU is provided to graphics processing pipelines that are each associated with a specific client/player and are dynamically allocated as needed. A client qualifier may be used to assure that only clients capable of presenting the streaming video to a player at a minimum level of quality receive the video stream.
-
Citations
20 Claims
-
1. A video server system having a processor for executing program instructions stored in a memory to provide, comprising:
-
a client qualifier configured to remotely determine if a client is qualified to receive a video stream configured for display on the client in response to a received request to access a selected video game, the qualification being based on abilities of the client to receive and display the video stream at least at a minimum level of quality; a monitor configured to assign clients to particular ones of a plurality of video sources, the assignment being made in part based on test results gathered by the client qualifier that confirms the minimum level of quality for the video stream and whether the video source is provisioned with game logic for the selected video game, wherein each video source includes, virtual machines for the provisioned game logic; virtual drivers associated with the virtual machines; a non-virtual driver executed on a hardware graphical processing unit (GPU); a shared memory; the non-virtual driver is configured for receiving one or more video streams in parallel from the virtual drivers, the hardware GPU is configured for producing video frames, wherein each virtual driver is configured to manage transfer of a respective video stream to the non-virtual driver and manage transfer of video frames for the respective video stream to the shared memory; an encoder for encoding the video frames, the encoder is defined by one or more dynamic encoding pipelines (DEPs), and each DEP performs the encoding using an H.264 protocol, wherein video frames produced for each virtual driver are processed by a respective DEP having access to the shared memory; and an I/O device configured for communicating encoded video streams to the client via a communication network. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A video server system having a processor for executing program instructions stored in a memory to provide, comprising:
-
a client qualifier configured to remotely determine if a client is qualified to receive a video stream configured for display on the client in response to a received request to access a selected video game, the qualification being based on abilities of the client to receive and display the video stream at least a minimum level of quality; a monitor configured to assign clients to particular ones of a plurality of video sources, assignments being made based on test results gathered by the client qualifier that confirm the minimum level of quality for the video stream and based on selection of a geographic location that is more proximate that other geographic locations of the client that produced the request to access the selected video game, wherein each video source of the video server system includes, (i) virtual machines for provisioning game logic for video games; (ii) virtual drivers associated with the virtual machines; (iii) a non-virtual driver executed on a hardware graphical processing unit (GPU), the non-virtual driver configured for receiving one or more video streams in parallel from the virtual drivers, the hardware GPU configured for producing the video streams; (iv) a shared memory; (v) an encoder for encoding the video frames, and wherein each virtual driver is configured to direct transfer of a respective video stream to the non-virtual driver and direct transfer of video frames for the respective video stream to the shared memory, the encoder is defined by one or more dynamic encoding pipelines (DEPs), and a respective one of the DEP is configured to access the shared memory to encode video frames for respective ones of the virtual drivers; an I/O device for communicating the encoded video frames as encoded video streams to one of the client or other clients, wherein the minimum level of quality identifies when the client is able to decode the encoded video stream that is encoded by the encoder. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18)
-
-
19. A cloud gaming system defined by one or more servers connected to the Internet and having a processor for executing program instructions stored in a memory, comprising:
-
a client qualifier configured to remotely determine if clients are qualified to receive a video stream in response to requests to access select video games, the qualification being based on abilities of the client to receive and display the video stream at least at a minimum level of quality, the select video games being provided via streaming to the clients; a plurality of video sources, each video source being assignable to one or more clients, each video source is defined by at least one virtual machine, wherein select virtual machines are provisioned with access to video game logic for executing ones of select video games, wherein one of the virtual machines is associated with a virtual driver that communicates with a non-virtual driver, the non-virtual driver handling exchange of execution by a graphical processing unit (GPU), the GPU is configured to produce video frames that are encoded by an encoder, the encoder producing the video stream in an encoded format, wherein video frames produced by the GPU are directed to a shared memory by the virtual driver, and the encoder is defined by a dynamic encoding pipeline (DEP) that is configured to access the shared memory for encoding the video frames produced by the GPU; and an I/O device for communicating the video stream that is encoded by the DEP to the client, the client being qualified to decode the encoded format of the video stream. - View Dependent Claims (20)
-
Specification