IP Library Granted Patent US 9,582,272
Granted Patent B1
US 9,582,272 · App. 13/523,407 · Granted Feb 28, 2017

Method and system for remote computing session management

Inventors: Daniel Jean Donat Doucette (Port Moody, CA); Kurt Rien Fennig (Port Moody, CA); David Victor Hobbs (Surrey, CA)
Assignee: Teradici Corporation
G06F9/00G06F3/1438G06F9/4445G06F2009/4557G06F2209/509
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 9,582,272
App. No.
13/523,407
Granted
Feb 28, 2017
Kind
B1
Abstract

A method and apparatus for image encoding. In one embodiment, the method comprises encoding a first image portion by a first encoder associated with a first processor at a host system; dynamically determining a requirement to encode a second image portion by the first encoder or by a second encoder associated with a second processor at the host system; and encoding, based on the requirement, the second image portion by the first encoder or the second encoder.

Claims (33)

1. A method for image encoding, comprising:

encoding a first image portion by a first encoder associated with a first processor at a host system;

dynamically determining a requirement to encode a second image portion by the first encoder associated with the first processor or by an offload encoder associated with a User Interface (UI) session processor at the host system, wherein the UI session processor comprises a hardware-optimized image encoding pipeline; and

encoding, based on the requirement, the second image portion by the first encoder or the offload encoder; and

transferring, when the offload encoder is used, compressed data representing the encoded second image portion from the UI session processor to the first processor, for network transmission,

wherein the requirement indicates which of using the first encoder or the offload encoder for encoding the second image portion maximizes resource utilization of the host system.

2. The method of claim 1 , wherein the second image portion is encoded by the offload encoder to generate an encoded second image portion, and wherein the second encoded image portion is transmitted via the first processor to a remote system remotely located from the host system.

3. The method of claim 1 , wherein the requirement is determined based on usage of at least one resource associated with the UI session processor.

4. The method of claim 1 , wherein the requirement is determined based on at least one of (i) an assigned priority of a virtual machine (VM) with respect to a plurality of VMs at the host system, wherein the VM comprises the first encoder, or (ii) an image rendering activity level.

5. The method of claim 1 , further comprising monitoring the first processor, wherein the requirement is determined based on data obtained by monitoring the first processor.

6. The method of claim 1 , wherein the requirement is further determined based on at least one of characteristics of a network coupling the host system to a remotely located remote system, or administrator settings.

7. The method of claim 1 , wherein the requirement is determined based on ongoing statistics of the UI session processor.

8. The method of claim 7 , wherein the statistics comprise at least one of queue lengths, frame update rates, aggregate encoded image quality information, power consumption information, or retransmission statistics.

9. The method of claim 1 , wherein the first encoder is a software encoder and the offload encoder comprises hardware-optimized imaging functions not found in the first encoder.

10. The method of claim 1 , further comprising:

dynamically determining, when the second image portion is encoded by the offload encoder, a second requirement to encode a third image portion by the first encoder; and

encoding the third image portion by the first encoder.

11. The method of claim 10 , wherein the second requirement is determined based on at least one of a change in update rate of an image stream, reduced availability of at least one resource associated with the UI session processor, a need for a second virtual machine (VM) having a higher priority than a first VM comprising the first encoder to utilize the offload encoder, or receipt of a status parameter of the offload encoder.

12. The method of claim 1 , wherein the requirement is determined by management software managing a plurality of virtual machines (VMs) at the host system, wherein a first VM of the plurality of VMs comprises the first encoder.

13. The method of claim 12 , further comprising notifying, by the management software, the first VM of the requirement.

14. The method of claim 1 , wherein the first image portion and the second image portion are rendered, encoded and communicated to a remote computer as part of a remote computing session with the remote computer.

15. The method of claim 1 , wherein the first processor comprises at least one core of a Central Processing Unit (CPU) and a Graphics Processing Unit (GPU), the first processor executing instructions to render the first image portion, and the UI session processor comprises a hardware-optimized image encoder in the hardware optimized image encoding pipeline.

16. The method of claim 1 , wherein the first image portion and the second image portion are display images from a software application of a Virtual Machine (VM).

17. The method of claim 1 , wherein the first processor comprises a plurality of processing cores of a server.

18. An apparatus for image encoding, comprising:

a first encoder, associated with a first processor at a host system, for encoding a first image portion;

an offload encoder associated with a User Interface (UI) session processor at the host system, wherein the UI session processor comprises a hardware-optimized image encoding pipeline; and

an application, associated with the first processor, for:

dynamically determining a requirement to encode a second image portion by the first encoder or by the offload encoder, wherein the second image portion is subsequently encoded, based on the requirement, by the first encoder or the offload encoder; and

transferring, when the offload encoder is used, compressed data representing the encoded second image portion from the UI session processor to the first processor, for network transmission,

wherein the requirement indicates which of using the first encoder or the offload encoder for encoding the second image portion maximizes resource utilization of the host system.

19. The apparatus of claim 18 , wherein the second image portion is encoded by the offload encoder to generate an encoded second image portion, and wherein the second encoded image portion is transmitted via the first processor to a remote system remotely located from the host system.

20. The apparatus of claim 18 , wherein the requirement is determined based on usage of at least one resource associated with the UI session processor.

Assignments (6)
RELEASE OF SECURITY INTEREST Recorded Mar 4, 2019
From: WF FUND IV LIMITED PARTNERSHIP
To: TERADICI CORPORATION
Reel/Frame 048499/0800 →
RELEASE OF SECURITY INTEREST Recorded Feb 28, 2019
From: BEEDIE CAPITAL PARTNERS FUND I LIMITED PARTNERSHIP
To: TERADICI CORPORATION
Reel/Frame 048473/0846 →
SECURITY INTEREST Recorded Feb 27, 2019
From: TERADICI CORPORATION
To: COMERICA BANK
Reel/Frame 048454/0895 →
SECURITY INTEREST Recorded Mar 3, 2016
From: TERADICI CORPORATION
To: BEEDIE CAPITAL PARTNERS FUND I LIMITED PARTNERSHIP
Reel/Frame 037988/0364 →
SECURITY AGREEMENT Recorded Feb 12, 2013
From: TERADICI CORPORATION
To: WF FUND IV LIMITED PARTNERSHIP
Reel/Frame 029800/0593 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 18, 2012
From: DOUCETTE, DANIEL JEAN DONAT; FENNIG, KURT RIEN; HOBBS, DAVID VICTOR
To: TERADICI CORPORATION
Reel/Frame 028392/0953 →
Continuity (2)
Continuation 12657695 · Jan 26, 2010
Provisional Application 61147445 · Jan 26, 2009