Latency reduction in remote rendering with adaptive phase shifting
AssigneeMicrosoft Technologly Licensing, LLC
InventorsChristian Voss-Wolff, Florian Bagar, Dag Birger Frommhold
Life of this patent
Estimating the term…
Abstract
Sending streamed data packets from a producer to a consumer. A method includes, at a first entity, sending consumable data packets from the first entity to a second entity at a first consumable packet rate. The method further includes receiving a first phase delta from the second entity, wherein the first phase delta is computed from transmission jitter, computed from timing information in the consumable data packets. The method further includes sending from the first entity consumable data packets at a second consumable packet rate, the second consumable packet rate being dependent on the first phase delta.
Claims14
A computer system enabled to send consumable data packets at variable packet rates based upon measured latency, the system comprising:
- one or more processors;
- and
- one or more computer-readable media having stored thereon instructions that are executable by the one or more processors to configure the computer system to send streamed data packets from a producer to a consumer, including instructions that are executable to configure the computer system to perform at least the following:
- at a first entity, send consumable data packets from the first entity to a second entity at a first consumable packet rate, each consumable data packet comprising a timestamp enabling the consumer to identify when the each consumable data packet had been sent by the first entity;
- receive a first phase delta from the second entity, wherein the first phase delta is computed at least from transmission jitter, computed from timing information in the consumable data packets, including the included timestamps and information identifying when the each consumable data packet was received at the second entity, the second entity having computed a frequency at which packets are sent from the first entity and the first phase delta being computed to minimize latency, latency being a difference in time between an arrival time of a packet and a beginning time of processing of the packet;
- compute a second consumable packet rate based upon the received first phase delta;
- and
- send from the first entity consumable data packets at second consumable packet rate, the second consumable packet rate being dependent on the first phase delta;
- wherein the data in the consumable data packets is dependent on state data of the second entity provided to the first entity;
- wherein the consumable data packets are video packets, the second entity is a consumer of video packets, the first entity is a producer of video packets, and the state data comprises telemetry data.
In a computing environment, a method of receiving streamed data packets from a producer to a consumer, the data packets being dependent on state from the consumer, the method comprising:
- at a second entity, receiving consumable data packets from a first entity at a first consumable packet rate, each consumable data packet comprising a timestamp enabling the second entity to identify when the each consumable data packet had been sent by the first entity;
- computing transmission jitter based at least on timing information in the consumable data packets;
- computing a first phase delta based at least on the jitter, the first phase delta computed from the timing information, including the included timestamps and information identifying when the each consumable data packet was received at the second entity, and the first phase delta defining timing differences between when consumable data packets are sent from the first entity, the second entity having computed a frequency at which packets are sent from the first entity and the first phase delta being computed to minimize latency, latency being a difference in time between an arrival time of a packet and a beginning time of processing of the packet;
- providing the first phase delta to the first entity;
- and
- receiving from the first entity consumable data packets at a second consumable packet rate, the second consumable packet rate being dependent on the first phase delta;
- wherein the data in the consumable data packets is dependent on state data of the second entity provided to the first entity;
- wherein the consumable data packets are video packets, the second entity is a consumer of video packets, the first entity is a producer of video packets, and the state data comprises telemetry data.
In a computing environment, a method of sending consumable data packets from a producer to a consumer at variable packet rates based upon measured latency, the method comprising:
- at a first entity, sending consumable data packets from the first entity to a second entity at a first consumable packet rate, each consumable data packet comprising a timestamp enabling the consumer to identify when the each consumable data packet had been sent by the first entity;
- receiving a first phase delta from the second entity, wherein the first phase delta is computed at least from transmission jitter, computed from timing information in the consumable data packets, including the included timestamps and information identifying when the each consumable data packet was received at the second entity, the second entity having computed a frequency at which packets are sent from the first entity and the first phase delta being computed to minimize latency, latency being a difference in time between an arrival time of a packet and a beginning time of processing of the packet;
- computing a second consumable packet rate based upon the received first phase delta;
- and
- sending from the first entity consumable data packets at a second consumable packet rate, the second consumable packet rate being dependent on the first phase delta;
- wherein the data in the consumable data packets is dependent on state data of the second entity provided to the first entity;
- wherein the consumable data packets are video packets, the second entity is a consumer of video packets, the first entity is a producer of video packets, and the state data comprises telemetry data.
Dependencies are inferred from the claim text.