SYSTEM AND METHOD FOR VIRTUAL 3D GRAPHICS ACCELERATION AND STREAMING MULTIPLE DIFFERENT VIDEO STREAMS
A digital video transmission system that improves performance using 3D graphics acceleration hardware. A first system creates a virtual 3D graphics card for each terminal session executing on a server system that supports multiple users. The virtual 3D graphics card is assigned a share of processing ability on a physical 3D graphics accelerator. The virtual 3D graphics card uses the share of processing ability on the physical 3D graphics accelerator to render 3D graphics in a local screen buffer associated with the terminal session. The local screen buffer is encoded and transmitted to a remote display that recreates the screen display in a video buffer of remote display. A second system operates by using a physical 3D graphics accelerator in a server system to perform transcoding for multiple video streams. To best perform task switching, the task switching is performed on I-frame borders.
1 . A method of transcoding multiple streams of video information, said method comprising:
accessing a first video stream;
transcoding from a first intra-frame to a next infra-frame;
saving process state;
accessing a next video stream; and
repeating said steps of transcoding, saving, and accessing.
2 . The method of transcoding multiple streams of video information as set forth in claim 1 , said method further comprising:
transmitting the transcoded video to a remote terminal system.
3 . The method of transcoding multiple streams of video information as set forth in claim 2 wherein said transcoded video is decoded by a video decoder in said remote terminal system.
4 . The method of transcoding multiple streams of video information as set forth in claim 1 wherein said transcoding is performed by a graphics processing unit (GPU).
5 . The method of transcoding multiple streams of video information as set forth in claim 1 wherein said video streams are associated with multiple different users supported by a single server system.
6 . A server system for serving multiple users, said server system comprising:
a processor and a memory system;
a terminal server module for handling multiple terminal sessions;
a first virtual graphics adapter for handling display requests from a first terminal session;
a first transcoder, said first transcoder receiving a display request comprising a first video stream, said first transcoder transcoding from a first intra-frame to a next infra-frame of said video stream and then saving a process state, said first transcoder accessing a second video stream from a second terminal session and repeating said actions of transcoding, saving, and accessing.
7 . The server system for serving multiple users as set forth in claim 6 , said server system further comprising:
an interface module for transmitting said transcoded video to a remote terminal system.
8 . The server system for serving multiple users as set forth in claim 7 wherein said transcoded video is decoded by a video decoder in said remote terminal system.
9 . The server system for serving multiple users as set forth in claim 6 wherein said transcoding is performed by a graphics processing unit (GPU) in said server system.
10 . The server system for serving multiple users as set forth in claim 5 wherein said video streams are associated with different users supported by said server system.
11 . A method of rendering graphics in a multi-user environment, said method comprising:
creating a first terminal session in a server;
creating a first virtual 3D graphics card for the first terminal session;
assigning a share of physical graphics accelerator device to the first virtual graphics card; and
rendering a virtual desktop using the first virtual graphics card in a frame buffer.
12 . The method as set forth in claim 11 wherein said share of the physical graphics accelerator device comprises a time slice.
13 . The method as set forth in claim 11 wherein said share of the physical graphics accelerator device comprises a thread running on said physical graphics accelerator device.
14 . The method of rendering graphics in a multi-user environment as set forth in claim 9 , said method further comprising:
transmitting the virtual desktop to a remote terminal system.
15 . A server system for serving multiple users, said server system comprising:
a processor and a memory system;
a physical graphics accelerator device;
a terminal server module for handling multiple terminal sessions; and
a first virtual 3D graphics card for the first terminal session, said first virtual 3D graphics card being assigned a share of physical graphics accelerator device, said first virtual 3D graphics card rendering a virtual desktop using the first virtual 3D graphics card in a first frame buffer.
16 . The method as set forth in claim 15 wherein said share of the physical graphics accelerator device comprises a time slice.
17 . The method as set forth in claim 15 wherein said share of the physical graphics accelerator device comprises a thread running on said physical graphics accelerator device.
18 . The method of rendering graphics in a multi-user environment as set forth in claim 15 , said method further comprising:
transmitting the virtual desktop to a remote terminal system.
19 . A server system for serving multiple users, said server system comprising:
a processor and a memory system;
a physical graphics accelerator device;
a terminal server module for handling multiple terminal sessions;
a first virtual 3D graphics card for the first terminal session, said first virtual 3D graphics card being assigned a share of physical graphics accelerator device, said first virtual 3D graphics card rendering a virtual desktop using the first virtual 3D graphics card in a first frame buffer; and
a first transcoder, said first transcoder receiving a display request comprising a first video stream, said first transcoder transcoding from a first intra-frame to a next infra-frame of said video stream and then saving a process state, said first transcoder accessing a second video stream from a second terminal session and repeating said actions of transcoding, saving, and accessing.