Streaming application environment with recovery of lost or delayed input events

US11366586B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-11366586-B2
Application numberUS-201615368531-A
CountryUS
Kind codeB2
Filing dateDec 2, 2016
Priority dateNov 18, 2016
Publication dateJun 21, 2022
Grant dateJun 21, 2022

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

In a streaming application environment coupled to a remote device over a packet-switching network, correction events may be synthesized from input events received from the remote device and injected into a virtual streaming application to account for lost or delayed input events. In addition, trailing events may be reissued by a remote device in frames during which no new input events are generated.

First claim

Opening claim text (preview).

What is claimed is: 1. A method, comprising, in a streaming application environment including one or more processors: interfacing a virtual streaming application with a remote device coupled to the streaming application environment over a packet-switched network, including: receiving, from the packet-switched network, input generated at the remote device, and streaming an output display representation generated by the virtual streaming application in response to the received input over the packet-switched network to the remote device, the output display representation comprising a plurality of frames; receiving a plurality of input events from the remote device, each of the input events, of the plurality of input events, being associated with an input generated on the remote device during rendering of the frames of the output display representation, and each input event, of the plurality of input events, being associated with a corresponding timestamp; synthesizing at least one correction event from the plurality of received input events, the at least one correction event corresponding to a lost or delayed input event, of the plurality of input events, generated at the remote device during the rendering of the frames of the output display representation, the at least one correction event associated with a correction event timestamp for the at least one correction event, and in response to the input generated on the remote device; generating a priority queue, of the plurality of input events and the at least one correction event, wherein generating the priority queue is based on the corresponding timestamps of the plurality of received input events and based on the correction event timestamp for the at least one correction event; and controlling injection of the plurality of received input events and the at least one correction event into the virtual streaming application to synchronize, within the virtual streaming application and according to the corresponding timestamp for each input event in the priority queue and the correction event timestamp for the at least one correction event included in the priority queue, the plurality of received input events and the at least one correction event. 2. The method of claim 1 , wherein the plurality of received input events include gesture start, gesture stop, and gesture move events associated with user gestures received by the remote device, the method further comprising tracking a state of the user gestures. 3. The method of claim 2 , wherein the user gestures are associated with touching of a touchscreen, wherein the gesture start event is a touch down event, the gesture stop event is a touch up event, and the gesture move event is a touch move event. 4. The method of claim 2 , wherein tracking the state of the user gestures includes determining whether the gesture is started or completed. 5. The method of claim 4 , wherein synthesizing the at least one correction event corresponding to lost or delayed input event includes, in response to detecting a gesture start event when tracking of the state of the user gestures indicates that the gesture is started, synthesizing a gesture stop event to be injected prior to the detected gesture start event. 6. The method of claim 5 , wherein synthesizing the gesture stop event includes generating a duplicated event from the detected gesture start event, setting an action for the duplicated event to stop, setting coordinates for the duplicated event with last injected coordinates, and setting a timestamp for the duplicated event to a last gesture started timestamp. 7. The method of claim 4 , wherein synthesizing the at least one correction event corresponding to lost or delayed input event includes, in response to detecting a gesture stop event or a gesture move event when tracking of the state of the user gestures indicates that the gesture is completed, synthesizing a gesture start event to be injected prior to the detected gesture stop event or gesture move event. 8. The method of claim 7 , wherein synthesizing the gesture start event includes generating a duplicated event from the detected gesture stop event or gesture move event and setting an action for the duplicated event to start. 9. The method of claim 4 , further comprising tracking a last gesture started timestamp, wherein synthesizing the at least one correction event corresponding to lost or delayed input event includes, in response to detecting a gesture stop event or a gesture move event when tracking of the state of the user gestures indicates that the gesture is started and detecting that the corresponding timestamp of a matching gesture start event is different from the last gesture started timestamp, synthesizing a pair of gesture stop and gesture start events to be injected prior to the detected gesture stop event or gesture move event. 10. The method of claim 2 , further comprising synthesizing at least one companion gesture move event for injection following a received gesture start event. 11. The method of claim 2 , further comprising synthesizing at least one companion gesture move event for injection preceding a received gesture stop event. 12. The method of claim 2 , further comprising: receiving, from the remote device, a trailing event generated during a frame of the remote device during which no gesture start, gesture stop, or gesture move events are generated; and injecting the trailing event into the virtual streaming application as a last event of a virtual frame corresponding to the frame of the remote device in response to determining that a timestamp of the trailing event is later than the corresponding timestamp of a last input event injected into the virtual streaming application. 13. The method of claim 1 , wherein synthesizing the at least one correction event from at least one of the plurality of input events comprises: inferring the at least one correction event based on at least a first input event, of the plurality of received input events, that is injected into the virtual streaming application on schedule according to the priority queue. 14. A system comprising one or more processors and memory operably coupled with the one or more processors, wherein the memory stores instructions that, in response to execution of the instructions by the one or more processors, cause the one or more processors to: interface a virtual streaming application with a remote device coupled to the streaming application environment over a packet-switched network, including: receiving from the packet-switched network input generated at the remote device, and streaming an output display representation generated by the virtual streaming application in response to the received input over the packet-switched network to the remote device, the output display representation comprising a plurality of frames; receive a plurality of input events from the remote device, each of the input events, of the plurality of input events, being associated with an input generated on the remote device during rendering of the frames of the output display representation, and each input event, of the plurality of input events, being associated with a corresponding timestamp; synthesize at least one correction event from the plurality of received input events, the at least one correction event corresponding to a lost or delayed input event, of the plurality of input events, generated at the remote device during the rendering of the frames of the output display representation, the at least one correction event associated with a correction event timestamp for the at least one correction event, and in response

Assignees

Inventors

Classifications

  • Touch pad or touch panel provided on the remote control · CPC title

  • with means for local support of applications that increase the functionality · CPC title

  • Remote input, i.e. interface arrangements in which the signals generated by a pointing device are transmitted to a PC at a remote location, e.g. to a PC in a LAN · CPC title

  • Remote windowing, e.g. X-Window System, desktop virtualisation (protocols for virtual reality H04L67/131) · CPC title

  • G06F9/451Primary

    Execution arrangements for user interfaces · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US11366586B2 cover?
In a streaming application environment coupled to a remote device over a packet-switching network, correction events may be synthesized from input events received from the remote device and injected into a virtual streaming application to account for lost or delayed input events. In addition, trailing events may be reissued by a remote device in frames during which no new input events are gener…
Who is the assignee on this patent?
Google Inc, Google Llc
What technology area does this patent fall under?
Primary CPC classification G06F9/451. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Jun 21 2022 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 12 related publications on this page (citations in our corpus or others sharing the same primary CPC).