IP Library Granted Patent US 12,641,138
Granted Patent B2
US 12,641,138 · App. 18/153,152 · Granted May 26, 2026

Dynamic encoding method modification for optimizing client performance

Inventor: Alan Hourihane (Deganwy, GB)
Assignee: Omnissa, LLC
H04L65/756
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 12,641,138
App. No.
18/153,152
Granted
May 26, 2026
Kind
B2
Abstract

Systems and methods are described for providing ways to optimize client performance during screen data streaming. Periods of time a client takes to render frames can be tracked and the frame rendering times can be analyzed to determine when the client performance is insufficient. If the client rendering performance is determined to be insufficient, the encoding method can be dynamically modified in ways preferable for improving the client rendering performance. Different approaches can be utilized for calculating metrics and determining when to modify the encoding method, such as linear interpolation or by taking averages of frame rendering times in a moving sample window.

Claims (47)

1 . A method for streaming screen data from a server to a client device, comprising:

on the server, encoding the screen data using an encoding method;

conveying the encoded screen data to the client device;

on the client device, decoding the encoded screen data using a decoding process and rendering frames of the screen data using a rendering process;

measuring, for the frames, periods each being between a start time when the decoding process for a respective frame begins and a finish time when the rendering process for a respective frame ends;

sending the periods as measured from the client device to the server; and

modifying, based on the periods as measured by the client device, the encoding method used to encode the screen data on the server by modifying one or more parameters of the encoding method or by switching to a different encoding method.

2 . The method of claim 1 , wherein the server performs the step of modifying in response to determining that performance of the client device is insufficient based on a target frame rendering time.

3 . The method of claim 1 , wherein the server performs the step of modifying in response to determining that performance of the client device is insufficient based on a comparison of an average of the periods for the frames in a predefined sample window to a target frame rendering time.

4 . The method of claim 1 , wherein the server performs the step of modifying in response to determining that performance of the client device is insufficient based on a target frame rendering time, and the target frame rendering time is determined based on one of: a frame rate corresponding to the screen data or a refresh rate of a monitor of the client device.

5 . The method of claim 1 , wherein:

the encoded screen data comprises a graphical user interface (GUI) of a virtual desktop running on the server;

the encoded screen data comprising the virtual desktop GUI is conveyed by a virtual desktop agent to a virtual desktop client on the client device, the virtual desktop client being configured to display the GUI to a user of the client device and to convey user inputs targeting the virtual desktop made on the client device to the virtual desktop agent to be effectuated in the virtual desktop;

the virtual desktop client determines the periods for the frames and conveys the periods to the virtual desktop agent in the virtual desktop; and

the virtual desktop agent modifies the encoding method based on the periods.

6 . A computing system for streaming screen data from a server to a client device, comprising:

at least one processor; and

memory including instructions that, when executed by the at least one processor, cause the computing device to perform the steps of:

on the server, encoding the screen data using an encoding method;

conveying the encoded screen data to the client device;

on the client device, decoding the encoded screen data using a decoding process and rendering frames of the screen data using a rendering process;

measuring, for the frames, periods each being between a start time when the decoding process for a respective frame begins and a finish time when the rendering process for a respective frame ends;

sending the periods as measured from the client device to the server; and

modifying, based on the periods as measured by the client device, the encoding method used to encode the screen data on the server by modifying one or more parameters of the encoding method or by switching to a different encoding method.

7 . The computing system of claim 6 , wherein the server performs the step of modifying in response to determining that performance of the client device is insufficient based on a target frame rendering time.

8 . The computing system of claim 6 , wherein the server performs the step of modifying in response to determining that performance of the client device is insufficient based on a comparison of an average of the periods for the frames in a predefined sample window to a target frame rendering time.

9 . The computing system of claim 6 , wherein the server performs the step of modifying in response to determining that performance of the client device is insufficient based on a target frame rendering time, and the target frame rendering time is determined based on one of: a frame rate corresponding to the screen data or a refresh rate of a monitor of the client device.

10 . The computing system of claim 6 , wherein:

the encoded screen data comprises a graphical user interface (GUI) of a virtual desktop running on the server;

the encoded screen data comprising the virtual desktop GUI is conveyed by a virtual desktop agent to a virtual desktop client on the client device, the virtual desktop client being configured to display the GUI to a user of the client device and to convey user inputs targeting the virtual desktop made on the client device to the virtual desktop agent to be effectuated in the virtual desktop;

the virtual desktop client determines the periods for the frames and conveys the periods to the virtual desktop agent in the virtual desktop; and

the virtual desktop agent modifies the encoding method based on the periods.

11 . A non-transitory computer readable storage medium for streaming screen data from a server to a client device comprising one or more sequences of instructions, the instructions when executed by one or more processors causing the one or more processors to execute the operations of:

on the server, encoding the screen data using an encoding method;

conveying the encoded screen data to the client device;

on the client device, decoding the encoded screen data using a decoding process and rendering frames of the screen data using a rendering process;

measuring, for the frames, periods each being between a start time when the decoding process for a respective frame begins and a finish time when the rendering process for a respective frame ends;

sending the periods as measured from the client device to the server; and

modifying, based on the periods as measured by the client device, the encoding method used to encode the screen data on the server by modifying one or more parameters of the encoding method or by switching to a different encoding method.

12 . The non-transitory computer readable storage medium of claim 11 , wherein the server performs the step of modifying in response to determining that performance of the client device is insufficient based on a target frame rendering time.

13 . The non-transitory computer readable storage medium of claim 11 , wherein the server performs the step of modifying in response to determining that performance of the client device is insufficient based on a comparison of an average of the periods for the frames in a predefined sample window to a target frame rendering time.

14 . The non-transitory computer readable storage medium of claim 11 , wherein the server performs the step of modifying in response to determining that performance of the client device is insufficient based on a target frame rendering time, and the target frame rendering time is determined based on one of: a frame rate corresponding to the screen data or a refresh rate of a monitor of the client device.

15 . The non-transitory computer readable storage medium of claim 11 , wherein:

the encoded screen data comprises a graphical user interface (GUI) of a virtual desktop running on the server;

the encoded screen data comprising the virtual desktop GUI is conveyed by a virtual desktop agent to a virtual desktop client on the client device, the virtual desktop client being configured to display the GUI to a user of the client device and to convey user inputs targeting the virtual desktop made on the client device to the virtual desktop agent to be effectuated in the virtual desktop;

the virtual desktop client determines the periods for the frames and conveys the periods to the virtual desktop agent in the virtual desktop; and

the virtual desktop agent modifies the encoding method based on the periods.

Assignments (5)
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME VMWARE INC TO VMWARE, INC. PREVIOUSLY RECORDED UNDER REEL AND FRAME 062347/0035 ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 20, 2024
From: HOURIHANE, ALAN
To: VMWARE, INC.
Reel/Frame 069406/0592 →
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 25, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067239/0402 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 11, 2023
From: HOURIHANE, ALAN
To: VMWARE INC
Reel/Frame 062347/0035 →