IP Library › Granted Patent US 11,701,584
Granted Patent B2
US 11,701,584 · App. 17/468,512 · Granted Jul 18, 2023

Dynamic client buffering and usage of received video frames for cloud gaming

Inventors: Mark E. Cerny (Los Angeles, CA); Kelvin M. Yong (Irvine, CA)
Assignee: Sony Interactive Entertainment Inc.
A63F13/355A63F13/335A63F13/358A63F13/44G07F17/3225H04L65/70H04L65/80H04L67/10H04L67/1095H04L67/131H04N21/2343H04N21/242H04N21/4302H04N21/4402H04N21/4424H04N21/4781H04N21/8547A63F2300/534A63F2300/538A63F2300/638
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 11,701,584
App. No.
17/468,512
Granted
Jul 18, 2023
Kind
B2
Abstract

A method is disclosed including setting, at a server, a server VSYNC signal to a server VSYNC frequency defining a plurality of frame periods. The server VSYNC signal corresponding to generation of a plurality of video frames at the server during the plurality of frame periods. The method including setting, at a client, a client VSYNC signal to a client VSYNC frequency. The method including sending a plurality of compressed video frames based on the plurality of video frames from the server to the client over a network using the server VSYNC signal. The method including decoding and displaying, at the client, the plurality of compressed video frames. The method including analyzing the timing of one or more client operations to set the amount of frame buffering used by the client, as the client receives the plurality of compressed video frames.

Claims (70)

1. A method, comprising:

receiving over a network at a client from a server a plurality of compressed video frames;

receiving at the client a plurality of server timestamps corresponding to a plurality of vertical synchronization (VSYNC) signals defining a plurality of frame periods during which a plurality of video frames is generated at the server, the plurality of video frames being compressed at the server to generate the plurality of compressed video frames;

decoding at the client the plurality of compressed video frames to generate a plurality of decoded video frames;

generating at the client a plurality of client timestamps corresponding to when each of the plurality of compressed video frames is decoded;

setting at the client a number of frame buffers based on the plurality of server timestamps and the plurality of client timestamps.

2. The method of claim 1 ,

wherein each of the plurality of VSYNC signals indicates timing of an occurrence of a corresponding VSYNC signal immediately before scan-out of a corresponding video frame, or

wherein the plurality of VSYNC signals indicates a plurality of flip times associated with generation of the plurality of video frames at the server.

3. The method of claim 1 , further comprising:

generating at the client a plurality of decode timestamps indicating when each of the plurality of decoded video frames is available for display at the client based on a plurality of client VSYNC signals, relative to timing of the plurality of VSYNC signals indicating desired display times for the plurality of video frames;

building a histogram indicating timing of the plurality of decode timestamps;

measuring a width of the histogram, wherein the width is measured in time; and

dynamically setting the number of frame buffers based on the width of the histogram and a frame period of the plurality of frame periods.

4. The method of claim 3 , wherein the generating at the client the plurality of decode timestamps includes:

for each of the plurality of decode timestamps, subtracting a corresponding server timestamp from a corresponding client timestamp.

5. The method of claim 4 , further comprising:

normalizing the each of the plurality of decode timestamps.

6. The method of claim 3 , further comprising:

determining that a decoded video frame has a decode timestamp that exceeds a threshold indicating that the number of frame buffers is insufficient for buffering the decoded video frame for display; and

skipping display of the decoded video frame based on the determining that the decode timestamp exceeds the threshold.

7. The method of claim 1 , further comprising:

adjusting relative timing between the plurality of VSYNC signals and a plurality of client VSYNC signals used for timing display of the plurality of decoded video frames at a display associated with the client.

8. A non-transitory computer-readable medium storing a computer program for performing a method, the computer-readable medium comprising:

program instructions for receiving over a network at a client from a server a plurality of compressed video frames;

program instructions for receiving at the client a plurality of server timestamps corresponding to a plurality of vertical synchronization (VSYNC) signals defining a plurality of frame periods during which a plurality of video frames is generated at the server, the plurality of video frames being compressed at the server to generate the plurality of compressed video frames;

program instructions for decoding at the client the plurality of compressed video frames to generate a plurality of decoded video frames;

program instructions for generating at the client a plurality of client timestamps corresponding to when each of the plurality of compressed video frames is decoded;

program instructions for setting at the client a number of frame buffers based on the plurality of server timestamps and the plurality of client timestamps.

9. The non-transitory computer-readable medium of claim 8 ,

wherein in the method each of the plurality of VSYNC signals indicates timing of an occurrence of a corresponding VSYNC signal immediately before scan-out of a corresponding video frame, or

wherein in the method the plurality of VSYNC signals indicates a plurality of flip times associated with generation of the plurality of video frames at the server.

10. The non-transitory computer-readable medium of claim 8 , further comprising:

program instructions for generating at the client a plurality of decode timestamps indicating when each of the plurality of decoded video frames is available for display at the client based on a plurality of client VSYNC signals, relative to timing of the plurality of VSYNC signals indicating desired display times for the plurality of video frames;

program instructions for building a histogram indicating timing of the plurality of decode timestamps;

program instructions for measuring a width of the histogram, wherein the width is measured in time; and

program instructions for dynamically setting the number of frame buffers based on the width of the histogram and a frame period of the plurality of frame periods.

11. The non-transitory computer-readable medium of claim 10 , wherein the program instructions for generating at the client the plurality of decode timestamps includes:

program instructions for subtracting a corresponding server timestamp from a corresponding client timestamp for each of the plurality of decode timestamps.

12. The non-transitory computer-readable medium of claim 11 , further comprising:

program instructions for normalizing the each of the plurality of decode timestamps.

13. The non-transitory computer-readable medium of claim 10 , further comprising:

program instructions for determining that a decoded video frame has a decode timestamp that exceeds a threshold indicating that the number of frame buffers is insufficient for buffering the decoded video frame for display; and

program instructions for skipping display of the decoded video frame based on the determining that the decode timestamp exceeds the threshold.

14. The non-transitory computer-readable medium of claim 8 , further comprising:

program instructions for adjusting relative timing between the plurality of VSYNC signals and a plurality of client VSYNC signals used for timing display of the plurality of decoded video frames at a display associated with the client.

15. A computer system comprising:

a processor;

memory coupled to the processor and having stored therein instructions that, if executed by the computer system, cause the computer system to execute a method, comprising:

receiving over a network at a client from a server a plurality of compressed video frames;

receiving at the client a plurality of server timestamps corresponding to a plurality of vertical synchronization (VSYNC) signals defining a plurality of frame periods during which a plurality of video frames is generated at the server, the plurality of video frames being compressed at the server to generate the plurality of compressed video frames;

decoding at the client the plurality of compressed video frames to generate a plurality of decoded video frames;

generating at the client a plurality of client timestamps corresponding to when each of the plurality of compressed video frames is decoded;

setting at the client a number of frame buffers based on the plurality of server timestamps and the plurality of client timestamps.

16. The method of claim 15 ,

wherein each of the plurality of VSYNC signals indicates timing of an occurrence of a corresponding VSYNC signal immediately before scan-out of a corresponding video frame, or

wherein the plurality of VSYNC signals indicates a plurality of flip times associated with generation of the plurality of video frames at the server.

17. The method of claim 15 , further comprising:

generating at the client a plurality of decode timestamps indicating when each of the plurality of decoded video frames is available for display at the client based on a plurality of client VSYNC signals, relative to timing of the plurality of VSYNC signals indicating desired display times for the plurality of video frames;

building a histogram indicating timing of the plurality of decode timestamps;

measuring a width of the histogram, wherein the width is measured in time; and

dynamically setting the number of frame buffers based on the width of the histogram and a frame period of the plurality of frame periods.

18. The method of claim 17 , wherein the generating at the client the plurality of decode timestamps includes:

for each of the plurality of decode timestamps, subtracting a corresponding server timestamp from a corresponding client timestamp; and

normalizing the each of the plurality of decode timestamps.

19. The method of claim 17 , further comprising:

determining that a decoded video frame has a decode timestamp that exceeds a threshold indicating that the number of frame buffers is insufficient for buffering the decoded video frame for display; and

skipping display of the decoded video frame based on the determining that the decode timestamp exceeds the threshold.

20. The method of claim 15 , further comprising:

adjusting relative timing between the plurality of VSYNC signals and a plurality of client VSYNC signals used for timing display of the plurality of decoded video frames at a display associated with the client.

Continuity (6)
Continuation 16696125 · Nov 26, 2019
Provisional Application 62909152 · Oct 1, 2019
Provisional Application 62909118 · Oct 1, 2019
Provisional Application 62909142 · Oct 1, 2019
Provisional Application 62909132 · Oct 1, 2019
Related Publication 20210394056A1 · Dec 23, 2021