High-speed low-latency method for streaming real-time interactive images
AssigneeReal-Scan, Inc.
InventorsBenjamin Maison, Dean Lester
Life of this patent
Estimating the term…
Abstract
An optimized ACK-less (“no acknowledgement required”) communication between the client and the server is enabled. Regardless of distance between the client and server, complete synchronization between the mouse movement, or any other updates to the three-dimensional model, and the rendered result is attained. Maximum frame rate is also attained, without requiring the inefficiency, and resulting latency, of acknowledged packets.
Claims15
A method implemented by one or more processors for providing acknowledgment-less server-client communication comprising:
- receiving a packet comprising a category identifier and data;
- determining that no previously added packet in a stack has a same category identifier then adding the packet to a top of the stack;
- determining that a previously added packet in the stack has the same category identifier as the packet;
- determining that the previously added packet in the stack with the same category identifier is locked for processing then adding the packet to the top of the stack;
- determining that the previously added packet in the stack with the same category identifier is not locked for processing then overwriting at a same position in the stack the previously added packet with the same category identifier with the packet;
- and
- processing the packet when the packet reaches a bottom of the stack.
A computing system comprising:
- one or more processing units;
- one or more network interfaces coupled to the one or more processing units and configured to receive, send, or send and receive data over one or more networks;
- a packet receiving module integrated with or coupled to the one or more processing units and configured to receive a packet comprising a category identifier and the data from a computing device via the one or more network interfaces;
- a category comparison module configured to determine if a previously added packet in a stack has a same category identifier as the packet;
- a packet replacement module that overwrites the previously added packet at a position of the previously added packet with the packet if the category comparison module determines that the previously added packet in the stack has the same category identifier as the packet;
- a locking module that locks the previously added packet while the one or more processing units process the previously added packet, wherein the category comparison module and the packet replacement module are configured to ignore the previously added packet if the previously added packet is locked for processing;
- a packet enqueuing module that adds the packet to a top of the stack if the previously added packet is locked for processing and adds the packet to the top of the stack if no previously added packets in the stack have the same category identifier as the packet;
- and
- a stack processing module that processes the packet when the packet reaches a bottom of the stack.
One or more non-transitory computer-readable media storing computer-executable instructions that, when executed on one or more processing units, cause the one or more processing units to perform acts for providing dynamic swapping of queued input packets, the acts comprising:
- receiving a packet comprising a category identifier and data;
- determining if a previously added packet in a stack has a same category identifier as the packet;
- determining if the previously added packed is locked for processing;
- overwriting the previously added packet by writing the packet at a same position in the stack as the previously added packet if the determining indicates that the previously added packet in the stack has the same category identifier as the packet and the previously added packet is not locked;
- adding the packet to a top of the stack in response to (i) determining that the previously added packet in the stack does not have the same category identifier or (ii) determining that the previously added packet in the stack is locked for processing;
- and
- processing the packet when the packet reaches a bottom of the stack.
Dependencies are inferred from the claim text.