IP Library Granted Patent US 10,303,497
Granted Patent B2
US 10,303,497 · App. 15/630,556 · Granted May 28, 2019

Hybrid software and GPU encoding for UI remoting

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,303,497
App. No.
15/630,556
Granted
May 28, 2019
Kind
B2
Abstract

Frames of a virtual desktop are encoded using a hybrid approach that combines the strength of software encoding by a central processing unit (CPU) and hardware encoding by a graphics processing unit (GPU). A method of encoding frame data of one or more virtual desktops in hardware and in software and transmitting the encoded frame data to one or more client devices, includes the steps of encoding a first portion of the frame data in the GPU to generate a first encoded frame data, encoding a second portion of the frame data in software, i.e., programmed CPU, during encoding of the first portion, to generate a second encoded frame data, and transmitting the first encoded frame data and the second encoded frame data from a host computer of the one or more virtual desktops to the one or more client devices as separate video streams.

Claims (30)

1. A method of encoding frame data of one or more virtual desktops in hardware and in software and transmitting the encoded frame data to one or more client devices, said method comprising:

determining that a first portion of the frame data contains either a video or a 3D image;

encoding the first portion of the frame data in hardware to generate a first encoded frame data;

during encoding of the first portion, encoding a second portion of the frame data in software to generate a second encoded frame data; and

transmitting the first encoded frame data and the second encoded frame data from a host computer of the one or more virtual desktops to the one or more client devices as separate data streams.

2. The method of claim 1 , wherein the host computer includes a central processing unit (CPU) and a graphics processing unit (GPU), and the first portion is encoded in hardware by the GPU and the second portion is encoded by software being executed by the CPU.

3. The method of claim 2 , wherein the first and second portions of the frame data are portions of a single virtual desktop.

4. The method of claim 2 , wherein the video is decoded in hardware by the GPU and the 3D image is rendered in hardware by the GPU and the decoded video and the rendered 3D image are encoded in hardware by the GPU to generate the first encoded frame data.

5. The method of claim 2 , wherein the first and second portions of the frame data are portions of different virtual desktops.

6. The method of claim 5 , wherein the different virtual desktops include a first virtual desktop and a second virtual desktop, and the first portion includes frame data of the entire first virtual desktop and the second portion includes frame data of the entire second virtual desktop.

7. The method of claim 1 , wherein the encoding of the first and second portions is carried out using the same video encoding format.

8. The method of claim 1 , wherein the encoding of the first portion is carried out using a first video encoding format and the encoding of the second portion is carried out using a second video encoding format that is different from the first video encoding format.

9. A non-transitory computer readable medium comprising instructions executable in a host computer in which virtual desktops are running, wherein the instructions when executed in the host computer cause the host computer to perform a method of encoding frame data of one or more of the virtual desktops in hardware and in software and transmitting the encoded frame data to one or more client devices, said method comprising:

determining that a first portion of the frame data contains either a video or a 3D image;

encoding the first portion of the frame data in hardware to generate a first encoded frame data;

during encoding of the first portion, encoding a second portion of the frame data in software to generate a second encoded frame data; and

transmitting the first encoded frame data and the second encoded frame data from the host computer to the one or more client devices as separate video streams.

10. The non-transitory computer readable medium of claim 9 , wherein the host computer includes a central processing unit (CPU) and a graphics processing unit (GPU), and the first portion is encoded in hardware by the GPU and the second portion is encoded by software being executed by the CPU.

11. The non-transitory computer readable medium of claim 10 , wherein the first and second portions of the frame data are portions of a single virtual desktop.

12. The non-transitory computer readable medium of claim 10 , wherein the video is decoded in hardware by the GPU and the 3D image is rendered in hardware by the GPU and the decoded video and the rendered 3D image are encoded in hardware by the GPU to generate the first encoded frame data.

13. The non-transitory computer readable medium of claim 10 , wherein the first and second portions of the frame data are portions of different virtual desktops.

14. The non-transitory computer readable medium of claim 13 , wherein the different virtual desktops include a first virtual desktop and a second virtual desktop, and the first portion includes frame data of the entire first virtual desktop and the second portion includes frame data of the entire second virtual desktop.

15. The non-transitory computer readable medium of claim 9 , wherein the encoding of the first and second portions is carried out using the same video encoding format.

16. The non-transitory computer readable medium of claim 9 , wherein the encoding of the first portion is carried out using a first video encoding format and the encoding of the second portion is carried out using a second video encoding format that is different from the first video encoding format.

17. A computer system connected to a plurality of client devices over a network, the computer system comprising:

a central processing unit (CPU) programmed to generate frame data of one or more virtual desktops of one or more of the client devices;

a graphics processing unit (GPU) configured to encode portions of the frame data; and

a network interface controller (NIC),

wherein the CPU is programmed to determine that a first portion of the frame data contains either a video or a 3D image, to instruct the GPU to encode the first portion of the frame data in hardware to generate a first encoded frame data, to encode a second portion of the frame data in software to generate a second encoded frame data, and to instruct the NIC to transmit the first encoded frame data and the second encoded frame data to the one or more client devices as separate video streams.

18. The computer system of claim 17 , wherein the first and second portions of the frame data are portions of a single virtual desktop, and the first portion of the frame data corresponds to a portion of the virtual desktop that contains either video that is decoded in hardware by the GPU or a 3D image that is rendered in hardware by the GPU and the decoded video or the rendered 3D image is encoded in hardware by the GPU to generate the first encoded frame data.

Assignments (4)
PATENT ASSIGNMENT Recorded Aug 5, 2024
From: VMWARE LLC
To: OMNISSA, LLC
Reel/Frame 068327/0365 →
SECURITY INTEREST Recorded Jul 3, 2024
From: OMNISSA, LLC
To: UBS AG, STAMFORD BRANCH
Reel/Frame 068118/0004 →
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 22, 2017
From: ABIEZZI, SALIM; MOIRON, SANDRO
To: VMWARE, INC.
Reel/Frame 042790/0170 →