IP Library Granted Patent US 10,595,040
Granted Patent B2
US 10,595,040 · App. 16/201,686 · Granted Mar 17, 2020

Systems and methods for player input motion compensation by anticipating motion vectors and/or caching repetitive motion vectors

Inventor: Michael Kopietz (Frankfurt, DE)
Assignee: ZeniMax Media Inc.
H04N19/521A63F13/35A63F13/358A63F13/40A63F13/52H04N19/107H04N19/139H04N19/162H04N19/172H04N19/176H04N19/44H04N19/517A63F2300/534A63F2300/538H04N19/527
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 10,595,040
App. No.
16/201,686
Granted
Mar 17, 2020
Kind
B2
Abstract

Systems and methods for reducing latency through motion estimation and compensation techniques are disclosed. The systems and methods include a client device that uses transmitted lookup tables from a remote server to match user input to motion vectors, and tag and sum those motion vectors. When a remote server transmits encoded video frames to the client, the client decodes those video frames and applies the summed motion vectors to the decoded frames to estimate motion in those frames. In certain embodiments, the systems and methods generate motion vectors at a server based on predetermined criteria and transmit the generated motion vectors and one or more invalidators to a client, which caches those motion vectors and invalidators. The server instructs the client to receive input from a user, and use that input to match to cached motion vectors or invalidators. Based on that comparison, the client then applies the matched motion vectors or invalidators to effect motion compensation in a graphic interface. In other embodiments, the systems and methods cache repetitive motion vectors at a server, which transmits a previously generated motion vector library to a client. The client stores the motion vector library, and monitors for user input data. The server instructs the client to calculate a motion estimate from the input data and instructs the client to update the stored motion vector library based on the input data, so that the client applies the stored motion vector library to initiate motion in a graphic interface prior to receiving actual motion vector data from the server. In this manner, latency in video data streams is reduced.

Claims (70)

1. A computer-implemented method for caching motion vectors comprising:

transmitting a previously generated motion vector library from a server to a client, wherein the motion vector library is configured to be stored at the client;

transmitting an instruction to the client to monitor for input data from a user;

transmitting an instruction to the client to calculate a motion estimate from the input data; and

transmitting an instruction to the client to update the stored motion vector library wherein the client applies the stored motion vector library to initiate motion in a graphic interface prior to receiving actual motion vector data from the server.

2. The computer-implemented method of claim 1 , further comprising the step of transmitting a context update from the server to the client to disable application of the stored motion vector library.

3. The computer-implemented method of claim 1 , further comprising the step of transmitting an instruction to apply one or more scaling factors to the motion vector library.

4. The computer-implemented method of claim 3 , wherein the scaling factor is calculated based on the general equation:

playbackSpeedScale

=

cached

animation

time

cached

animation

time

+

delay

.

5. The computer-implemented method of claim 1 , wherein the generated motion vector library is comprised of a plurality of motion vectors.

6. The computer-implemented method of claim 5 , wherein the motion vectors are game-generated.

7. The computer-implemented method of claim 1 , wherein the generated motion vector library is configured to be permanently stored on the client.

8. The computer-implemented method of claim 1 , wherein the motion vector library is generated during the build process.

9. The computer-implemented method of claim 1 , wherein the generated motion vector library is associated with the input data from the user.

10. The computer-implemented method of claim 1 , wherein the instruction to the client to monitor for input data from the user further monitors for a correlation tag, wherein the correlation tag is associated with the input data from the user.

11. A system for caching motion vectors, wherein, over a network, a server:

transmits a previously generated motion vector library to a client, wherein the motion vector library is configured to be stored at the client;

transmits an instruction to the client to monitor for input data from a user;

transmits an instruction to the client to calculate a motion estimate from the input data; and

transmits an instruction to the client to update the stored motion vector library, wherein the client applies the stored motion vector library to initiate motion in a graphic interface prior to receiving actual motion vector data from the server.

12. The system of claim 11 , further comprising the step of transmitting a context update from the server to the client to disable application of the stored motion vector library.

13. The system of claim 11 , wherein the server further transmits an instruction to apply one or more scaling factors to the motion vector library.

14. The system of claim 13 , wherein the scaling factor is calculated based on the general equation:

playbackSpeedScale

=

cached

animation

time

cached

animation

time

+

delay

.

15. The system of claim 11 , wherein the generated motion vector library is comprised of a plurality of motion vectors.

16. The system of claim 15 , wherein the motion vectors are game-generated.

17. The system of claim 11 , wherein the generated motion vector library is configured to be permanently stored on the client.

18. The system of claim 11 , wherein the motion vector library is generated during the build process.

19. The system of claim 11 , wherein the generated motion vector library is associated with the input data from the user.

20. The system of claim 11 , wherein the instruction to the client to monitor for input data from the user further monitors for a correlation tag, wherein the correlation tag is associated with the input data from the user.

Continuity (6)
Continuation 15958919 · Apr 20, 2018
Provisional Application 62644164 · Mar 16, 2018
Provisional Application 62640945 · Mar 9, 2018
Provisional Application 62634464 · Feb 23, 2018
Provisional Application 62488526 · Apr 21, 2017
Related Publication 20190124357A1 · Apr 25, 2019
Cited By (1)
US 12,219,171