JP2022551587A - Synchronization and offset of VSYNC between cloud gaming server and client - Google Patents

Synchronization and offset of VSYNC between cloud gaming server and client Download PDF

Info

Publication number
JP2022551587A
JP2022551587A JP2022520318A JP2022520318A JP2022551587A JP 2022551587 A JP2022551587 A JP 2022551587A JP 2022520318 A JP2022520318 A JP 2022520318A JP 2022520318 A JP2022520318 A JP 2022520318A JP 2022551587 A JP2022551587 A JP 2022551587A
Authority
JP
Japan
Prior art keywords
client
server
vsync
video frames
vsync signal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2022520318A
Other languages
Japanese (ja)
Other versions
JPWO2021067317A5 (en
Inventor
イー. サーニー マーク
エム. ヨン ケルビン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Interactive Entertainment Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Interactive Entertainment Inc filed Critical Sony Interactive Entertainment Inc
Publication of JP2022551587A publication Critical patent/JP2022551587A/en
Publication of JPWO2021067317A5 publication Critical patent/JPWO2021067317A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/355Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an encoded video stream for transmitting to a mobile phone or a thin client
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/4302Content synchronisation processes, e.g. decoder synchronisation
    • H04N21/4305Synchronising client clock from received content stream, e.g. locking decoder clock with encoder clock, extraction of the PCR packets
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/33Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using wide area network [WAN] connections
    • A63F13/335Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using wide area network [WAN] connections using Internet
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/358Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/40Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
    • A63F13/44Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment involving timing of operations, e.g. performing an action within a time slot
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F17/00Coin-freed apparatus for hiring articles; Coin-freed facilities or services
    • G07F17/32Coin-freed apparatus for hiring articles; Coin-freed facilities or services for games, toys, sports, or amusements
    • G07F17/3225Data transfer within a gaming system, e.g. data sent between gaming machines and users
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/70Media network packetisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/131Protocols for games, networked simulations or virtual reality
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/242Synchronization processes, e.g. processing of PCR [Program Clock References]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/4302Content synchronisation processes, e.g. decoder synchronisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/4424Monitoring of the internal components or processes of the client device, e.g. CPU or memory load, processing speed, timer, counter or percentage of the hard disk space used
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/478Supplemental services, e.g. displaying phone caller identification, shopping application
    • H04N21/4781Games
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/8547Content authoring involving timestamps for synchronizing content
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/53Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
    • A63F2300/534Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing for network load management, e.g. bandwidth optimization, latency reduction
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/53Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
    • A63F2300/538Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing for performing operations on behalf of the game client, e.g. rendering
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/55Details of game data or player data management
    • A63F2300/5593Details of game data or player data management involving scheduling aspects
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/63Methods for processing data by generating or executing the game program for controlling the execution of the game in time
    • A63F2300/638Methods for processing data by generating or executing the game program for controlling the execution of the game in time according to the timing of operation or a time limit
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/23406Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving management of server-side video buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/4302Content synchronisation processes, e.g. decoder synchronisation
    • H04N21/4307Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44004Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/04Synchronising

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

サーバにおいて、サーバVSYNC信号をサーバVSYNC周波数に設定することを含む方法が開示される。サーバVSYNC信号は、サーバVSYNC周波数の複数のフレーム期間中のビデオフレームの生成に対応する。この方法では、クライアントで、クライアントVSYNC信号をクライアントVSYNC周波数に設定する。この方法では、サーバVSYNC信号を使用して、ネットワークを介してサーバからクライアントに圧縮ビデオフレームを送信し、圧縮ビデオフレームは、生成ビデオフレームに基づいている。この方法では、クライアントで、圧縮ビデオフレームを復号及び表示し、クライアントが複数の圧縮ビデオフレームを受信するときに、1つまたは複数のクライアント操作のタイミングを分析して、サーバVSYNC信号とクライアントVSYNC信号との間の相対的なタイミングを調整する。【選択図】図4A method is disclosed that includes, at a server, setting a server VSYNC signal to a server VSYNC frequency. The server VSYNC signal corresponds to the generation of video frames during multiple frame periods of the server VSYNC frequency. In this method, at the client, the client VSYNC signal is set to the client VSYNC frequency. The method uses the server VSYNC signal to transmit compressed video frames from the server to the client over the network, the compressed video frames being based on generated video frames. The method decodes and displays the compressed video frames at the client, and analyzes the timing of one or more client operations as the client receives the plurality of compressed video frames to generate a server VSYNC signal and a client VSYNC signal. Adjust the relative timing between [Selection drawing] Fig. 4

Description

本開示は、ネットワークを介してコンテンツをストリーミングするように構成されたストリーミングシステム、より具体的には、クラウドゲームサーバとクライアントとの間の待ち時間を短縮するためのクラウドゲームサーバとクライアントとの間の垂直同期(VSYNC)信号の同期に関する。 The present disclosure provides a streaming system configured to stream content over a network, and more specifically between a cloud gaming server and a client for reducing latency between the cloud gaming server and the client. of the vertical synchronization (VSYNC) signal.

近年、クラウドゲームサーバとネットワークを介して接続されたクライアントとの間でストリーミング形式のオンラインまたはクラウドゲームを可能にするオンラインサービスが継続的に推進されている。ストリーミング形式は、オンデマンドのゲームタイトルの利用可能性、マルチプレイヤーゲームのためのプレイヤー間のネットワーク機能、プレイヤー間の資産の共有、プレイヤー及び/または観客間のインスタントエクスペリエンスの共有、友人がフレンドプレイビデオゲームを見ることを可能にする、友人を友人の進行中のゲームプレイに参加させるなどにより、いっそう人気が高まっている。残念ながら、需要は、ネットワーク接続の機能と、クライアントに配信される高品質の画像をレンダリングするのに十分な応答性を備えたサーバとクライアントで実行される処理の制限にも押し上げられている。
例えば、サーバで実行されるすべてのゲームアクティビティの結果は、最高のユーザエクスペリエンスを実現するために、圧縮して、低いミリ秒の待ち時間でクライアントに送り返す必要がある。ラウンドトリップの待ち時間は、ユーザのコントローラ入力からクライアントでのビデオフレームの表示までの全体的な時間として定義できる。これには、コントローラからクライアントへの制御情報の処理と送信、クライアントからサーバへの制御情報の処理と送信、入力に応答するビデオフレームを生成するためのサーバでのその入力の使用、エンコーディングユニットへのビデオフレームの処理と転送(スキャンアウトなど)、ビデオフレームの符号化、クライアントへの符号化されたビデオフレームの送り返し、ビデオフレームの受信と復号、及び表示前のビデオフレームのいずれかの処理またはステージングが含まれる場合がある。
一方向の待ち時間は、サーバでのビデオフレームの符号化ユニットへの転送(スキャンアウトなど)の開始から、クライアントでのビデオフレームの表示の開始までの時間で構成されるラウンドトリップ待ち時間の一部として定義できる。ラウンドトリップ及び一方向の待ち時間の一部は、データストリームが通信ネットワークを介してクライアントからサーバに送信され、サーバからクライアントに送信されるのにかかる時間に関連している。別の部分は、クライアントとサーバでの処理に関連している。フレームの復号と表示に関連する高度な戦略などの、これらの操作の改善により、サーバとクライアント間のラウンドトリップと一方向の待ち時間が大幅に削減され、クラウドゲームサービスのユーザに良質のエクスペリエンスが提供される。
In recent years, online services that enable streaming online or cloud games between a cloud game server and clients connected via a network have been continuously promoted. Streaming formats include the availability of game titles on demand, networking capabilities between players for multiplayer games, sharing of assets between players, instant experience sharing between players and/or spectators, friends playing video Being able to watch games, allowing friends to participate in their ongoing game play, etc. has become more popular. Unfortunately, demand is also driven by the capabilities of network connectivity and the limitations of processing performed on servers and clients that are responsive enough to render high-quality images delivered to clients.
For example, the results of all game activities performed on the server should be compressed and sent back to the client with low millisecond latency for the best user experience. Round-trip latency can be defined as the overall time from the user's controller input to the display of a video frame on the client. This includes the processing and transmission of control information from the controller to the client, the processing and transmission of control information from the client to the server, the use of that input in the server to generate video frames in response to that input, and the encoding unit to the encoding unit. processing and forwarding video frames (e.g., scanning out), encoding video frames, sending encoded video frames back to the client, receiving and decoding video frames, and either processing video frames prior to display or May include staging.
One-way latency is part of the round-trip latency consisting of the time from the start of the transfer (e.g., scanout) of a video frame to the encoding unit at the server to the start of display of the video frame at the client. can be defined as part Part of round-trip and one-way latency relates to the time it takes for a data stream to travel from a client to a server and from a server to a client over a communication network. Another part relates to processing on the client and server. Improvements in these operations, such as advanced strategies related to decoding and displaying frames, significantly reduce round-trips and one-way latencies between server and client, resulting in a better experience for users of cloud gaming services. provided.

本開示の実施形態は、このような背景の下になされたものである。 It is against this background that the embodiments of the present disclosure have been made.

本開示の実施形態は、ネットワークを介してコンテンツ(例えば、ゲーム)をストリーミングするように構成されたストリーミングシステム、より具体的には、クラウドゲームサーバとクライアントとの間の待ち時間を短縮することを目的とした、クラウドゲームサーバとクライアントとの間のVSYNC信号の同期に関する。この特許出願の文脈では、「同期」とは、周波数が一致するように信号を調整することを意味すると解釈されるべきだが、位相は異なる場合がある。「オフセット」は、信号間の時間の遅延を意味すると解釈する必要がある。例えば、一方の信号が最大に達してからもう一方の信号が最大に達するまでの時間である。 Embodiments of the present disclosure seek to reduce latency between streaming systems configured to stream content (e.g., games) over a network, and more specifically, cloud gaming servers, and clients. Aimed at synchronizing VSYNC signals between cloud gaming servers and clients. In the context of this patent application, "synchronization" should be taken to mean adjusting the signals so that they match in frequency, but may differ in phase. "Offset" should be interpreted to mean the time delay between signals. For example, the time from when one signal reaches its maximum to when the other signal reaches its maximum.

本開示の実施形態は、方法を開示する。方法は、サーバで、サーバVSYNC信号をサーバVSYNC周波数に設定し、サーバVSYNC信号がサーバVSYNC周波数の複数のフレーム期間中のサーバでの複数のビデオフレームの生成に対応する、設定することを含む。方法は、クライアントで、クライアントVSYNC信号をクライアントVSYNC周波数に設定することを含む。方法は、サーバVSYNC信号を使用して、ネットワークを介してサーバからクライアントに複数のビデオフレームに基づく複数の圧縮ビデオフレームを送信することを含む。方法は、クライアントで、複数の圧縮ビデオフレームを復号及び表示することを含む。方法は、クライアントが複数の圧縮ビデオフレームを受信するときに、1つまたは複数のクライアント操作のタイミングを分析して、サーバVSYNC信号とクライアントVSYNC信号との間の相対的なタイミングを調整することを含む。 An embodiment of the present disclosure discloses a method. The method includes, at the server, setting a server VSYNC signal to a server VSYNC frequency, the server VSYNC signal corresponding to generation of a plurality of video frames at the server during a plurality of frame periods at the server VSYNC frequency. The method includes, at the client, setting a client VSYNC signal to a client VSYNC frequency. The method includes transmitting a plurality of compressed video frames based on the plurality of video frames from a server to a client over a network using a server VSYNC signal. The method includes decoding and displaying a plurality of compressed video frames at a client. The method includes analyzing the timing of one or more client operations to adjust the relative timing between the server VSYNC signal and the client VSYNC signal as the client receives multiple compressed video frames. include.

本開示の実施形態は、方法を開示する。方法は、フレーム期間がほぼ等しいサイズである、複数のフレーム期間の間にサーバで複数のビデオフレームを生成することを含む。方法は、クライアントで、クライアントVSYNC信号をクライアントVSYNC周波数に設定することを含む。方法は、複数のビデオフレームに基づく複数の圧縮ビデオフレームをサーバからクライアントに送信することを含む。方法は、クライアントで、複数の圧縮ビデオフレームを復号及び表示することを含む。方法は、クライアントが複数の圧縮ビデオフレームを受信するときに、1つまたは複数のクライアント操作のタイミングを分析して、クライアントVSYNC信号の相対的なタイミングを調整し、サーバで複数の圧縮ビデオフレームを生成することを含む。 An embodiment of the present disclosure discloses a method. The method includes generating multiple video frames at a server during multiple frame periods, where the frame periods are of approximately equal size. The method includes, at the client, setting a client VSYNC signal to a client VSYNC frequency. The method includes transmitting from a server to a client a plurality of compressed video frames based on the plurality of video frames. The method includes decoding and displaying a plurality of compressed video frames at a client. The method analyzes the timing of one or more client operations to adjust the relative timing of the client VSYNC signal when the client receives the multiple compressed video frames, and performs the multiple compressed video frames at the server. Including generating.

本開示の他の実施形態は、方法を実行するためのコンピュータプログラムを格納する非一時的コンピュータ可読媒体を開示する。コンピュータ可読媒体は、サーバで、サーバVSYNC信号をサーバVSYNC周波数に設定するためのプログラム命令であって、サーバVSYNC信号がサーバVSYNC周波数の複数のフレーム期間中のサーバでの複数のビデオフレームの生成に対応するプログラム命令を含む。コンピュータ可読媒体は、クライアントで、クライアントVSYNC信号をクライアントVSYNC周波数に設定するためのプログラム命令を含む。コンピュータ可読媒体は、サーバVSYNC信号を使用して、ネットワークを介してサーバからクライアントに複数のビデオフレームに基づく複数の圧縮ビデオフレームを送信するためのプログラム命令を含む。コンピュータ可読媒体は、クライアントで複数の圧縮ビデオフレームを復号及び表示するためのプログラム命令を含む。コンピュータ可読媒体は、クライアントが複数の圧縮ビデオフレームを受信するときに、1つまたは複数のクライアント操作のタイミングを分析して、サーバVSYNC信号とクライアントVSYNC信号との間の相対的なタイミングを調整するためのプログラム命令を含む。 Another embodiment of the present disclosure discloses a non-transitory computer-readable medium storing a computer program for performing the method. The computer readable medium is program instructions for setting a server VSYNC signal to a server VSYNC frequency at a server, the server VSYNC signal for generating a plurality of video frames at the server during a plurality of frames at the server VSYNC frequency. Contains corresponding program instructions. A computer-readable medium includes program instructions for setting a client VSYNC signal to a client VSYNC frequency at a client. The computer readable medium includes program instructions for transmitting a plurality of compressed video frames based on the plurality of video frames from a server to a client over a network using a server VSYNC signal. A computer-readable medium includes program instructions for decoding and displaying a plurality of compressed video frames at a client. A computer readable medium analyzes the timing of one or more client operations and adjusts the relative timing between the server VSYNC signal and the client VSYNC signal as the client receives multiple compressed video frames. Contains program instructions for

本開示の他の実施形態では、プロセッサと、プロセッサに結合されたメモリとを含むコンピュータシステムが開示され、メモリは命令を格納しており、当命令は、コンピュータシステムにより実行されると、方法をコンピュータシステムに実行させる。方法は、サーバで、サーバVSYNC信号をサーバVSYNC周波数に設定し、サーバVSYNC信号がサーバVSYNC周波数の複数のフレーム期間中のサーバでの複数のビデオフレームの生成に対応する、設定することを含む。方法は、クライアントで、クライアントVSYNC信号をクライアントVSYNC周波数に設定することを含む。方法は、サーバVSYNC信号を使用して、ネットワークを介してサーバからクライアントに複数のビデオフレームに基づく複数の圧縮ビデオフレームを送信することを含む。方法は、クライアントで、複数の圧縮ビデオフレームを復号及び表示することを含む。方法は、クライアントが複数の圧縮ビデオフレームを受信するときに、1つまたは複数のクライアント操作のタイミングを分析して、サーバVSYNC信号とクライアントVSYNC信号との間の相対的なタイミングを調整することを含む。 In another embodiment of the present disclosure, a computer system is disclosed that includes a processor and memory coupled to the processor, the memory storing instructions that, when executed by the computer system, perform a method. Have a computer system do it. The method includes, at the server, setting a server VSYNC signal to a server VSYNC frequency, the server VSYNC signal corresponding to generation of a plurality of video frames at the server during a plurality of frame periods at the server VSYNC frequency. The method includes, at the client, setting a client VSYNC signal to a client VSYNC frequency. The method includes transmitting a plurality of compressed video frames based on the plurality of video frames from a server to a client over a network using a server VSYNC signal. The method includes decoding and displaying a plurality of compressed video frames at a client. The method includes analyzing the timing of one or more client operations to adjust the relative timing between the server VSYNC signal and the client VSYNC signal as the client receives multiple compressed video frames. include.

本開示の他の実施形態は、別の方法を開示する。方法は、サーバで、サーバVSYNC信号を複数のフレーム期間を定義するサーバVSYNC周波数に設定し、サーバVSYNC信号が複数のフレーム期間中のサーバでの複数のビデオフレームの生成に対応する、設定することを含む。方法は、クライアントで、クライアントVSYNC信号をクライアントVSYNC周波数に設定することを含む。方法は、サーバVSYNC信号を使用して、ネットワークを介してサーバからクライアントに複数のビデオフレームに基づく複数の圧縮ビデオフレームを送信することを含む。方法は、クライアントで、複数の圧縮ビデオフレームを復号及び表示することを含む。方法は、クライアントが複数の圧縮ビデオフレームを受信するときに、1つまたは複数のクライアント操作のタイミングを分析して、クライアントにより使用されるフレームバッファリングの量を設定することを含む。 Another embodiment of the present disclosure discloses another method. The method comprises, at the server, setting 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. including. The method includes, at the client, setting a client VSYNC signal to a client VSYNC frequency. The method includes transmitting a plurality of compressed video frames based on the plurality of video frames from a server to a client over a network using a server VSYNC signal. The method includes decoding and displaying a plurality of compressed video frames at a client. The method includes analyzing the timing of one or more client operations to set the amount of frame buffering used by the client as the client receives multiple compressed video frames.

本開示の他の実施形態は、方法を実行するためのコンピュータプログラムを格納する非一時的コンピュータ可読媒体を開示する。コンピュータ可読媒体は、サーバで、サーバVSYNC信号を複数のフレーム期間を定義するサーバVSYNC周波数に設定するためのプログラム命令であって、サーバVSYNC信号が複数のフレーム期間中のサーバでの複数のビデオフレームの生成に対応する、設定するためのプログラム命令を含む。コンピュータ可読媒体は、クライアントで、クライアントVSYNC信号をクライアントVSYNC周波数に設定するためのプログラム命令を含む。コンピュータ可読媒体は、サーバVSYNC信号を使用して、ネットワークを介してサーバからクライアントに複数のビデオフレームに基づく複数の圧縮ビデオフレームを送信するためのプログラム命令を含む。コンピュータ可読媒体は、クライアントで複数の圧縮ビデオフレームを復号及び表示するためのプログラム命令を含む。コンピュータ可読媒体は、クライアントが複数の圧縮ビデオフレームを受信するときに、1つまたは複数のクライアント操作のタイミングを分析して、クライアントにより使用されるフレームバッファリングの量を設定するためのプログラム命令を含む。 Another embodiment of the present disclosure discloses a non-transitory computer-readable medium storing a computer program for performing the method. The computer readable medium is program instructions at the server for setting the server VSYNC signal to a server VSYNC frequency defining a plurality of frame periods, wherein the server VSYNC signal corresponds to a plurality of video frames at the server during the plurality of frame periods. contains program instructions for setting, corresponding to the generation of A computer-readable medium includes program instructions for setting a client VSYNC signal to a client VSYNC frequency at a client. The computer readable medium includes program instructions for transmitting a plurality of compressed video frames based on the plurality of video frames from a server to a client over a network using a server VSYNC signal. A computer-readable medium includes program instructions for decoding and displaying a plurality of compressed video frames at a client. The computer readable medium provides program instructions for analyzing the timing of one or more client operations and setting the amount of frame buffering used by the client as the client receives multiple compressed video frames. include.

本開示の他の実施形態では、プロセッサと、プロセッサに結合されたメモリとを含むコンピュータシステムが開示され、メモリは命令を格納しており、当命令は、コンピュータシステムにより実行されると、方法をコンピュータシステムに実行させる。方法は、サーバで、サーバVSYNC信号を複数のフレーム期間を定義するサーバVSYNC周波数に設定し、サーバVSYNC信号が複数のフレーム期間中のサーバでの複数のビデオフレームの生成に対応する、設定することを含む。方法は、クライアントで、クライアントVSYNC信号をクライアントVSYNC周波数に設定することを含む。方法は、サーバVSYNC信号を使用して、ネットワークを介してサーバからクライアントに複数のビデオフレームに基づく複数の圧縮ビデオフレームを送信することを含む。方法は、クライアントで、複数の圧縮ビデオフレームを復号及び表示することを含む。方法は、クライアントが複数の圧縮ビデオフレームを受信するときに、1つまたは複数のクライアント操作のタイミングを分析して、クライアントにより使用されるフレームバッファリングの量を設定することを含む。 In another embodiment of the present disclosure, a computer system is disclosed that includes a processor and a memory coupled to the processor, the memory storing instructions that, when executed by the computer system, perform a method. Have a computer system do it. The method comprises, at the server, setting 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. including. The method includes, at the client, setting a client VSYNC signal to a client VSYNC frequency. The method includes transmitting a plurality of compressed video frames based on the plurality of video frames from a server to a client over a network using a server VSYNC signal. The method includes decoding and displaying a plurality of compressed video frames at a client. The method includes analyzing the timing of one or more client operations to set the amount of frame buffering used by the client as the client receives multiple compressed video frames.

本開示の他の実施形態は、別の方法を開示する。方法は、複数のデバイスにおいて、複数のVSYNC信号を複数のVSYNC周波数に設定することを含み、対応するデバイスの対応するデバイスVSYNC信号は、対応するデバイスVSYNC周波数に設定される。方法は、複数のデバイス間で複数の信号を送信することを含み、これは、少なくとも2つのデバイスの対応するデバイスVSYNC信号間の相対的なタイミングを調整するために分析及び使用される。 Another embodiment of the present disclosure discloses another method. The method includes setting a plurality of VSYNC signals to a plurality of VSYNC frequencies in the plurality of devices, wherein corresponding device VSYNC signals of corresponding devices are set to the corresponding device VSYNC frequencies. The method includes transmitting multiple signals between multiple devices, which are analyzed and used to adjust relative timing between corresponding device VSYNC signals of at least two devices.

本開示の他の実施形態は、方法を実行するためのコンピュータプログラムを格納する非一時的コンピュータ可読媒体を開示する。コンピュータ可読媒体は、複数のデバイスにおいて、複数のVSYNC信号を複数のVSYNC周波数に設定するためのプログラム命令であって、対応するデバイスの対応するデバイスVSYNC信号は、対応するデバイスVSYNC周波数に設定する、プログラム命令を含む。コンピュータ可読媒体は、複数のデバイス間で複数の信号を送信するためのプログラム命令であって、少なくとも2つのデバイスの対応するデバイスVSYNC信号間の相対的なタイミングを調整するために分析及び使用されるプログラム命令を含む。 Another embodiment of the present disclosure discloses a non-transitory computer-readable medium storing a computer program for performing the method. A computer readable medium is program instructions for setting a plurality of VSYNC signals to a plurality of VSYNC frequencies in a plurality of devices, wherein corresponding device VSYNC signals of corresponding devices are set to corresponding device VSYNC frequencies; Contains program instructions. A computer readable medium is program instructions for transmitting a plurality of signals between a plurality of devices analyzed and used to coordinate relative timing between corresponding device VSYNC signals of at least two devices. Contains program instructions.

本開示の他の実施形態では、プロセッサと、プロセッサに結合されたメモリとを含むコンピュータシステムが開示され、メモリは命令を格納しており、当命令は、コンピュータシステムにより実行されると、方法をコンピュータシステムに実行させる。方法は、複数のデバイスにおいて、複数のVSYNC信号を複数のVSYNC周波数に設定することを含み、対応するデバイスの対応するデバイスVSYNC信号は、対応するデバイスVSYNC周波数に設定される。方法は、複数のデバイス間で複数の信号を送信することを含み、これは、少なくとも2つのデバイスの対応するデバイスのVSYNC信号間の相対的なタイミングを調整するために分析及び使用される。 In another embodiment of the present disclosure, a computer system is disclosed that includes a processor and memory coupled to the processor, the memory storing instructions that, when executed by the computer system, perform a method. Have a computer system do it. The method includes setting a plurality of VSYNC signals to a plurality of VSYNC frequencies in the plurality of devices, wherein corresponding device VSYNC signals of corresponding devices are set to the corresponding device VSYNC frequencies. The method includes transmitting multiple signals between multiple devices, which are analyzed and used to adjust relative timing between corresponding device VSYNC signals of at least two devices.

本開示の他の実施形態は、別の方法を開示する。方法は、クライアントで符号化されたビデオフレームを受信することを含み、サーバがアプリケーションを実行してレンダリングされたビデオフレームを生成し、それが次にサーバのエンコーダで符号化されたビデオフレームとして符号化され、符号化されたビデオフレームは、圧縮された1つまたは複数の符号化されたスライスを含む。方法は、1つまたは複数の復号されたスライスを生成するために、クライアントのデコーダで1つまたは複数の符号化されたスライスを復号することを含む。方法は、クライアントで表示するために1つ以上の復号されたスライスをレンダリングすることを含む。方法は、クライアントで1つまたは複数の符号化されたスライスを完全に受信する前にレンダリングされる1つまたは複数の復号されたスライスの表示を開始することを含む。 Another embodiment of the present disclosure discloses another method. The method includes receiving encoded video frames at a client, and a server executing an application to produce rendered video frames, which are then encoded as encoded video frames at an encoder at the server. A encoded video frame includes one or more compressed encoded slices. The method includes decoding one or more encoded slices at a decoder of a client to generate one or more decoded slices. The method includes rendering one or more decoded slices for display at a client. The method includes initiating display of one or more decoded slices to be rendered prior to fully receiving the one or more encoded slices at the client.

本開示の他の実施形態は、方法を実行するためのコンピュータプログラムを格納する非一時的コンピュータ可読媒体を開示する。コンピュータ可読媒体は、クライアントで符号化されたビデオフレームを受信するためのプログラム命令であって、サーバがアプリケーションを実行してレンダリングされたビデオフレームを生成し、それが次にサーバのエンコーダで符号化されたビデオフレームとして符号化され、符号化されたビデオフレームは、圧縮された1つまたは複数の符号化されたスライスを有するものであるプログラム命令を含む。コンピュータ可読媒体は、クライアントのデコーダで1つまたは複数の符号化されたスライスを復号して1つまたは複数の復号されたスライスを生成するためのプログラム命令を含む。コンピュータ可読媒体は、クライアントで表示するために1つまたは複数の復号されたスライスをレンダリングするためのプログラム命令を含む。コンピュータ可読媒体は、クライアントで1つまたは複数の符号化されたスライスを完全に受信する前にレンダリングされる1つまたは複数の復号されたスライスの表示を開始するプログラム命令を含む。 Another embodiment of the present disclosure discloses a non-transitory computer-readable medium storing a computer program for performing the method. The computer readable medium is program instructions for receiving encoded video frames at a client and a server executing an application to produce rendered video frames, which are then encoded at an encoder at the server. The encoded video frame includes program instructions that have one or more encoded slices that have been compressed. A computer-readable medium includes program instructions for decoding one or more encoded slices at a decoder of a client to produce one or more decoded slices. A computer-readable medium includes program instructions for rendering one or more decoded slices for display at a client. The computer-readable medium includes program instructions for initiating display of one or more decoded slices rendered prior to complete reception of one or more encoded slices at a client.

本開示の他の実施形態では、プロセッサと、プロセッサに結合されたメモリとを含むコンピュータシステムが開示され、メモリは命令を格納しており、当命令は、コンピュータシステムにより実行されると、方法をコンピュータシステムに実行させる。方法は、クライアントで符号化されたビデオフレームを受信することを含み、サーバがアプリケーションを実行してレンダリングされたビデオフレームを生成し、それが次にサーバのエンコーダで符号化されたビデオフレームとして符号化され、符号化されたビデオフレームは、圧縮された1つまたは複数の符号化されたスライスを含む。方法は、1つまたは複数の復号されたスライスを生成するために、クライアントのデコーダで1つまたは複数の符号化されたスライスを復号することを含む。方法は、クライアントで表示するために1つ以上の復号されたスライスをレンダリングすることを含む。方法は、クライアントで1つまたは複数の符号化されたスライスを完全に受信する前にレンダリングされる1つまたは複数の復号されたスライスの表示を開始することを含む。 In another embodiment of the present disclosure, a computer system is disclosed that includes a processor and memory coupled to the processor, the memory storing instructions that, when executed by the computer system, perform a method. Have a computer system do it. The method includes receiving encoded video frames at a client, and a server running an application to produce rendered video frames, which are then encoded as encoded video frames at an encoder at the server. A encoded video frame includes one or more compressed encoded slices. The method includes decoding one or more encoded slices at a decoder of a client to generate one or more decoded slices. The method includes rendering one or more decoded slices for display at a client. The method includes initiating display of one or more decoded slices to be rendered prior to fully receiving the one or more encoded slices at the client.

本開示の他の態様は、本開示の原理を例として示す、添付図面を併用して以下の詳細な説明から明らかになるであろう。 Other aspects of the disclosure will become apparent from the following detailed description, taken in conjunction with the accompanying drawings, which illustrate, by way of example, the principles of the disclosure.

本開示は、添付図面と併せて、以下の詳細な説明を参照することにより、最も良く理解することができる。 The present disclosure can best be understood by reference to the following detailed description in conjunction with the accompanying drawings.

図1Aは、本開示の一実施形態による、フレーム期間の開始時のVSYNC信号の図である。図1Bは、本開示の一実施形態による、VSYNC信号の周波数の図である。FIG. 1A is a diagram of the VSYNC signal at the beginning of a frame period, according to one embodiment of the present disclosure. FIG. 1B is a frequency diagram of a VSYNC signal, according to one embodiment of the present disclosure. 本開示の一実施形態による、様々な構成において、1つまたは複数のクラウドゲームサーバと1つまたは複数のクライアントデバイスとの間のネットワークを介してゲームを提供するためのシステムの図であり、VSYNC信号を同期及びオフセットして、一方向の待ち時間を短縮することができる。1 is a diagram of a system for providing games over a network between one or more cloud gaming servers and one or more client devices in various configurations, according to one embodiment of the present disclosure; FIG. Signals can be synchronized and offset to reduce one-way latency. 本開示の一実施形態による、2つ以上のピアデバイス間でのゲームを提供するための図であり、VSYNC信号を同期及びオフセットして、デバイス間のコントローラ及び他の情報の受信の最適なタイミングを達成することができる。FIG. 12 is a diagram for providing gaming between two or more peer devices, synchronizing and offsetting VSYNC signals for optimal timing of receipt of controller and other information between devices, according to an embodiment of the present disclosure; can be achieved. 本開示の一実施形態による、ソースデバイスとターゲットデバイスとの間のVSYNC信号の適切な同期及びオフセットから利益を得る様々なネットワーク構成を示す。4 illustrates various network configurations that benefit from proper synchronization and offset of VSYNC signals between source and target devices, according to an embodiment of the present disclosure; 本開示の一実施形態による、ソースデバイスとターゲットデバイスとの間のVSYNC信号の適切な同期及びオフセットから利益を得る、クラウドゲームサーバと複数のクライアントとの間のマルチテナンシー構成を示す。4 illustrates a multi-tenancy configuration between a cloud gaming server and multiple clients benefiting from proper synchronization and offset of VSYNC signals between source and target devices, according to one embodiment of the present disclosure; 本開示の一実施形態による、サーバ上で実行されるビデオゲームから生成されたビデオフレームをストリーミングするときのクロックドリフトによるクラウドゲームサーバとクライアントとの間の一方向の待ち時間の変動を示す。FIG. 11 illustrates one-way latency variation between a cloud gaming server and a client due to clock drift when streaming video frames generated from a video game running on the server, according to one embodiment of the present disclosure; FIG. 本開示の一実施形態による、サーバ上で実行されるビデオゲームから生成されたビデオフレームをストリーミングするときのクラウドゲームサーバ及びクライアントを含むネットワーク構成を示し、サーバとクライアントとの間のVSYNC信号は、サーバとクライアントでの操作の重複を可能にするために、及びサーバとクライアントとの間の一方向の待ち時間を短縮するために同期及びオフセットされる。1 shows a network configuration including a cloud gaming server and a client when streaming video frames generated from a video game running on the server, according to an embodiment of the present disclosure, wherein the VSYNC signal between the server and the client is: Synchronized and offset to allow duplication of operations on the server and client, and to reduce one-way latency between the server and client. 本開示の一実施形態による、クラウドゲームサーバとクライアントでのそれぞれのクロック間のドリフトによる、サーバによって指定された所望の表示時間に対するクライアントによる復号の完了のタイミングの可能な変動、及びクライアント及びサーバの動作にかかる時間及びネットワーク待ち時間の変動を示す図である。Possible variations in the timing of completion of decoding by the client with respect to the desired display time specified by the server, due to drift between the respective clocks at the cloud gaming server and the client, and the timing of the client and server, according to an embodiment of the present disclosure. FIG. 2 illustrates the variation of operation time and network latency; 本開示の一実施形態による、サーバによって指定された所望の表示時間に対するクライアントによる復号の完了のタイミングを示すヒストグラムを含み、クラウドゲームサーバとクライアントでのそれぞれのクロック間のドリフトによる後続のヒストグラムにおける測定される復号時間の増加を示す。FIG. 12B includes a histogram showing the timing of completion of decoding by the client relative to the desired display time specified by the server, with subsequent measurements in the histogram due to drift between respective clocks at the cloud gaming server and client, according to an embodiment of the present disclosure. increase in decoding time. 本開示の一実施形態による、サーバによって指定された所望の表示時間に対するクライアントによる復号の完了のタイミングを示すヒストグラムを含み、クラウドゲームサーバとクライアントでのそれぞれのクロック間の測定されるドリフトの補償後、後続のヒストグラムにおける復号時間の首尾一貫した測定値を示す。FIG. 12B includes a histogram showing the timing of completion of decoding by the client relative to the desired display time specified by the server, after compensating for the measured drift between the respective clocks at the cloud gaming server and the client, according to an embodiment of the present disclosure; FIG. , show consistent measurements of decoding time in subsequent histograms. 本開示の一実施形態による、一方向の待ち時間を短縮する目的で、クラウドゲームサーバとクライアントとの間でVSYNC信号を調整するための方法を示す流れ図である。[0014] Fig. 4 is a flow diagram illustrating a method for coordinating VSYNC signals between a cloud gaming server and a client for the purpose of reducing one-way latency, according to an embodiment of the present disclosure; 本開示の一実施形態による、サーバによって指定された所望の表示時間に対するクライアントによる復号の完了のタイミングの分布を提供するヒストグラムの構築を含む、一方向の待ち時間を短縮する目的で、クラウドゲームサーバとクライアントとの間でVSYNC信号の調整を実行するときにVSYNC信号をアライメントさせる方法を示す流れ図であり、ヒストグラムがサーバとクライアントでのVSYNC信号間のオフセットの調整を決定するために構成され、ヒストグラムはまた、サーバVSYNC信号とクライアントVSYNC信号の間のドリフトを決定するために構成される。A cloud gaming server for the purpose of reducing one-way latency, including constructing a histogram that provides the distribution of the timing of completion of decoding by the client relative to the desired display time specified by the server, according to one embodiment of the present disclosure. 4 is a flow diagram illustrating a method of aligning VSYNC signals when performing VSYNC signal adjustment between a server and a client, wherein a histogram is configured to determine the adjustment of the offset between the VSYNC signals at the server and the client, the histogram is also configured to determine the drift between the server VSYNC signal and the client VSYNC signal. 本開示の一実施形態による、一方向の待ち時間を短縮する目的で、クラウドゲームサーバとクライアントとの間でVSYNC信号の調整を実行するときにVSYNC信号を同期させるための別の方法を示す流れ図である。4 is a flow diagram illustrating another method for synchronizing VSYNC signals when performing VSYNC signal coordination between a cloud gaming server and a client for the purpose of reducing one-way latency, according to an embodiment of the present disclosure; FIG. is. 本開示の一実施形態による、サーバでの圧縮ビデオフレームの生成に関連してクライアントVSYNC信号を調整するための方法を示す流れ図であり、ビデオフレームは、同様のサイズのフレーム期間中に生成される。FIG. 10 is a flow diagram illustrating a method for adjusting a client VSYNC signal in connection with generating compressed video frames at a server, where the video frames are generated during similarly sized frame durations, in accordance with an embodiment of the present disclosure; FIG. . 本開示の一実施形態による、サーバによって指定された所望の表示時間に対するクライアントによる復号の完了のタイミングの分布を提供するヒストグラムの構築を示す図であり、ヒストグラムが、サーバとクライアントでのVSYNC信号間のオフセットの調整を決定するために構成されている。[0019] Fig. 4 shows the construction of a histogram that provides the distribution of the timing of completion of decoding by the client with respect to the desired display time specified by the server, wherein the histogram is between VSYNC signals at the server and the client, in accordance with an embodiment of the present disclosure; is configured to determine the adjustment of the offset of the 本開示の一実施形態による、サーバによって指定された所望の表示時間に対するクライアントによる復号の完了のタイミングの分布を提供するヒストグラムの図であり、ヒストグラムが、サーバとクライアントでのVSYNC信号間のオフセットの調整を決定するために構成されている。FIG. 4 is an illustration of a histogram providing the distribution of the timing of completion of decoding by a client with respect to the desired display time specified by the server, the histogram showing the offset between the VSYNC signals at the server and the client, according to an embodiment of the present disclosure; Configured to determine reconciliation. サーバによって指定された所望の表示時間に対するクライアントによる復号の完了のタイミングの分布を提供するヒストグラムを構築するための方法を示す流れ図であり、ヒストグラムは、クライアントで復号されたビデオフレームの必要なバッファリングの量を決定するために構成されている。Fig. 10 is a flow diagram illustrating a method for constructing a histogram that provides a distribution of the timing of completion of decoding by a client with respect to a desired display time specified by a server, the histogram representing the required buffering of video frames decoded at the client; is configured to determine the amount of 本開示の一実施形態による、2つ以上のデバイス間のVSYNC信号間の相対的なタイミングを調整するための方法を示す流れ図である。4 is a flow diagram illustrating a method for adjusting relative timing between VSYNC signals between two or more devices, according to one embodiment of the present disclosure; 本開示の一実施形態による、クライアントで表示するための解凍されたビデオフレームの受信、復号、及びレンダリングの重複を示している。4 illustrates duplication of receiving, decoding, and rendering decompressed video frames for display at a client, according to one embodiment of the present disclosure; 本開示の一実施形態による、クラウドゲームの方法を示す流れ図であり、符号化されたフレームがサーバからクライアントで受信され、復号されて表示のためにレンダリングされ、ビデオフレームの復号及び表示は、一方向の待ち時間を短縮する目的で重複することができる。1 is a flow diagram illustrating a method of cloud gaming in which encoded frames are received from a server at a client, decoded and rendered for display, decoding and display of video frames is May be overlapped for the purpose of reducing direction latency. 本開示の様々な実施形態の態様を実行するために使用することができる例示的なデバイスの構成要素を示す。4 illustrates components of an exemplary device that can be used to carry out aspects of various embodiments of the present disclosure;

以下の詳細な説明は、例示の目的で多くの特定の詳細を含むが、当業者であれば、以下の詳細に対する多くの変形及び変更が本開示の範囲内にあることを理解するであろう。したがって、以下で説明される本開示の態様は、この説明に続く特許請求の範囲への一般性を失うことなく、また限定を課すことなく示される。 Although the following detailed description includes many specific details for purposes of illustration, those skilled in the art will appreciate that many variations and modifications to the following details are within the scope of the disclosure. . Accordingly, the aspects of the disclosure described below are presented without loss of generality to, and without imposing limitation on, the claims that follow this description.

概して、本開示の様々な実施形態は、メディアコンテンツをストリーミングするとき(例えば、ビデオゲームからオーディオ及びビデオをストリーミングするとき)、ソースデバイスとターゲットデバイスとの間の待ち時間及び/または待ち時間の不安定性を低減するように構成された方法及びシステムを説明する。特に、本開示のいくつかの実施形態では、クラウドゲームサーバとクライアントとの間のVSYNC信号は同期され、オフセットされる。クラウドゲームサーバとクライアントでのクロックの違いにより、クラウドゲームサーバとクライアントのVSYNC信号が相互にドリフトする。このドリフトは、最大フレーム期間の待ち時間の不安定性につながる。例えば、ゲームがビデオフレーム生成のために60Hzで実行されている場合、経時的に変化する追加の0~16.7ミリ秒の待ち時間がある。クライアントでの圧縮ビデオフレームの最悪または最悪に近い場合の到着時間を分析することにより、クラウドゲームサーバとクライアントの間の理想的なVSYNC関係を決定することができる。この理想的な関係は、クラウドゲームサーバまたはクライアントのいずれかでVSYNC周波数を調整することで確立できるため、待ち時間の不安定性を取り除くことができる。
本開示の他の実施形態では、ゲーム機(例えば、ゲームコンソール)間のVSYNC信号は、同期され、オフセットされて、ピアデバイス間の理想的なVSYNC関係及び最小の一方向の待ち時間を提供する。特に、対面型のゲームにおけるピアデバイス(ゲーム機など)間のクロックの違いにより、それらのVSYNC信号は相互にドリフトし、最大でフレーム期間の待ち時間が不安定になる。例えば、ゲームがビデオフレーム生成のために60Hzで実行されている場合、経時的に変化する追加の0~16.7ミリ秒の待ち時間がある。タイムスタンプ情報を交換することにより、ピアデバイス間の理想的なVSYNC関係を決定することができる。この理想的な関係は、ピアデバイスのいずれかでVSYNC周波数を調整することで確立できるため、待ち時間の不安定性を取り除くことができる。
本開示のさらに他の実施形態では、動的クライアントバッファリング、及びクラウドゲームサーバからクライアントで受信されたビデオフレームの選択された使用は、待ち時間の短縮及び調整をもたらす。ビデオフレームの生成のサーバ側のタイミングに関する知識により、クライアントは各フレームの理想的な表示時間を決定できる。クライアントへの圧縮ビデオフレームの到着時間の変動性に基づいて、フレームのバッファリング(シングルバッファリング、ダブルバッファリング、トリプルバッファリングなど)を動的に調整できる。待ち時間到着フレームの表示をスキップすることを選択するなどの、待ち時間の調整がまた、発生し得る。本開示の他の実施形態では、クラウドゲームサーバとクライアントとの間の一方向の待ち時間は、圧縮ビデオフレームとそれらのディスプレイの復号を重複させることによって低減され得る。クラウドゲームのクライアントは、クラウドゲームサーバから圧縮ビデオフレームを受信し、圧縮ビデオフレームを復号する。フレームがクライアントで完全に受信または復号される前にビデオフレームの表示を開始することにより、一方向の待ち時間を減らすことができる。表示のための送信のタイミングは、圧縮ビデオフレームの受信と復号に必要な残り時間を予測する必要がある。
In general, various embodiments of the present disclosure address latency and/or latency concerns between source and target devices when streaming media content (e.g., when streaming audio and video from a video game). Methods and systems configured to reduce qualitativeness are described. Specifically, in some embodiments of the present disclosure, VSYNC signals between cloud gaming servers and clients are synchronized and offset. Due to clock differences between the cloud game server and the client, the VSYNC signals of the cloud game server and client drift relative to each other. This drift leads to latency instability for the maximum frame period. For example, if the game is running at 60 Hz for video frame generation, there is an additional latency of 0-16.7 milliseconds that varies over time. By analyzing the worst-case or near-worst-case arrival times of compressed video frames at the client, the ideal VSYNC relationship between the cloud gaming server and the client can be determined. This ideal relationship can be established by adjusting the VSYNC frequency at either the cloud gaming server or the client, thus eliminating latency instability.
In other embodiments of the present disclosure, VSYNC signals between game consoles (e.g., game consoles) are synchronized and offset to provide ideal VSYNC relationships and minimal one-way latency between peer devices. . In particular, clock differences between peer devices (such as game consoles) in face-to-face games cause their VSYNC signals to drift relative to each other, resulting in erratic latency of up to a frame period. For example, if the game is running at 60 Hz for video frame generation, there is an additional latency of 0-16.7 milliseconds that varies over time. By exchanging timestamp information, the ideal VSYNC relationship between peer devices can be determined. This ideal relationship can be established by adjusting the VSYNC frequency on either of the peer devices, thus eliminating latency instability.
In still other embodiments of the present disclosure, dynamic client buffering and selective use of video frames received at the client from the cloud gaming server provide latency reduction and coordination. Knowledge of the server-side timing of video frame generation allows the client to determine the ideal display time for each frame. Frame buffering (single buffering, double buffering, triple buffering, etc.) can be dynamically adjusted based on the variability of compressed video frame arrival times at the client. Latency adjustments may also occur, such as choosing to skip display of latency arriving frames. In other embodiments of the present disclosure, one-way latency between the cloud gaming server and client may be reduced by duplicating the decoding of compressed video frames and their display. A cloud gaming client receives the compressed video frames from the cloud gaming server and decodes the compressed video frames. One-way latency can be reduced by starting display of a video frame before the frame is fully received or decoded at the client. Timing of transmission for display should predict the remaining time required to receive and decode a compressed video frame.

特に、サーバで複雑なフレーム(シーンの変更など)を生成するために必要な追加の時間、サーバで複雑なフレームを符号化/圧縮するための時間の増加、ネットワークを介した可変の通信パス、及びクライアントで複雑なフレームを復号するための時間の増加のために、サーバとクライアントの間に待ち時間の不安定性が生じる可能性がある。また、サーバとクライアントのクロックの違いが原因で待ち時間が不安定になることもある。これにより、サーバとクライアントのVSYNC信号がドリフトする。一実施形態では、この待ち時間の不安定性は、サーバVSYNC信号またはクライアントVSYNC信号のいずれかを調整して、サーバVSYNC信号及びクライアントVSYNC信号を同期されたアライメントに戻す(例えば、同じ周波数で動作する)ことによって取り除くことができる。
別の実施形態では、サーバVSYNC信号とクライアントVSYNC信号との間のタイミングオフセットを調整することは、クライアントでビデオフレームを受信及び表示するときの最悪に近い場合の待ち時間の条件を考慮することによって一方向の待ち時間を減らす。さらに別の実施形態では、クライアント側の動的バッファリングは、待ち時間が増加するときにクライアントでより多くの表示バッファを提供し、待ち時間が減少するときに使用する表示バッファを少なくすることによって、追加の待ち時間調整を提供する。別の実施形態では、一方向の待ち時間は、クライアントでのビデオフレームの復号と表示を重複させることによってさらに減らすことができる。
In particular the additional time required to generate complex frames on the server (such as scene changes), the increased time to encode/compress complex frames on the server, variable communication paths through the network, And latency instability can occur between the server and the client due to the increased time to decode complex frames at the client. Latency can also be erratic due to clock differences between the server and client. This causes the server and client VSYNC signals to drift. In one embodiment, this latency instability adjusts either the server VSYNC signal or the client VSYNC signal to bring the server VSYNC signal and the client VSYNC signal back into synchronized alignment (e.g., operate at the same frequency). ) can be removed by
In another embodiment, adjusting the timing offset between the server VSYNC signal and the client VSYNC signal is performed by considering near-worst-case latency requirements when receiving and displaying video frames at the client. Reduce one-way latency. In yet another embodiment, client-side dynamic buffering provides more display buffers at the client when latency increases and uses fewer display buffers when latency decreases. , to provide additional latency adjustments. In another embodiment, one-way latency can be further reduced by overlapping the decoding and display of video frames at the client.

上記の様々な実施形態の全般的な理解により、これより様々な図面を参照して実施形態の例の詳細を説明する。 With the above general understanding of the various embodiments, details of example embodiments will now be described with reference to various drawings.

本明細書全体を通して、「ゲーム」「ビデオゲーム」、または「ゲームアプリケーション」または「アプリケーション」に対する言及は、入力コマンドの実行を通して指示されるいずれかのタイプのインタラクティブアプリケーションを表現することを意味する。例示のみを目的として、対話型アプリケーションは、ゲーミング、文書処理、ビデオ処理、ビデオゲーム処理などのためのアプリケーションを含む。さらに、上で導入されている用語は、交換可能である。 Throughout this specification, references to "game", "video game", or "game application" or "application" are meant to describe any type of interactive application directed through the execution of input commands. By way of example only, interactive applications include applications for gaming, word processing, video processing, video game processing, and the like. Moreover, the terms introduced above are interchangeable.

クラウドゲームには、サーバでビデオゲームを実行して、ゲームでレンダリングされたビデオフレームを生成し、次いでそれをクライアントに送信して表示することが含まれる。サーバとクライアントの両方での操作のタイミングは、それぞれの垂直同期(VSYNC)パラメータに関連付けられている場合がある。VSYNC信号がサーバ及び/またはクライアント間で適切に同期及び/またはオフセットされると、サーバで実行される操作(例えば、1つ以上のフレーム期間にわたるビデオフレームの生成と送信)は、クライアントで実行される操作と同期される(例えば、フレーム期間に対応する表示フレームまたはリフレッシュレートでディスプレイにビデオフレームを表示する)。特に、サーバで生成されたサーバVSYNC信号とクライアントで生成されたクライアントVSYNC信号は、サーバとクライアントでの動作を同期させるために使用され得る。つまり、サーバとクライアントのVSYNC信号が同期及び/またはオフセットされると、サーバは、クライアントがそれらのビデオフレームを表示する方法と同期してビデオフレームを生成及び送信する。 Cloud gaming involves running a video game on a server to generate a game-rendered video frame, which is then sent to a client for display. The timing of operations on both the server and client may be associated with their respective vertical synchronization (VSYNC) parameters. Once the VSYNC signals are properly synchronized and/or offset between the server and/or client, operations performed on the server (e.g., generating and transmitting video frames over one or more frame periods) are performed on the client. (eg, displaying video frames on the display at a display frame or refresh rate corresponding to the frame period). In particular, a server VSYNC signal generated at the server and a client VSYNC signal generated at the client may be used to synchronize operations at the server and client. That is, when the server and client VSYNC signals are synchronized and/or offset, the server generates and transmits video frames in sync with how the client displays those video frames.

サーバとクライアント間でメディアコンテンツをストリーミングするときにビデオフレームを生成し、それらのビデオフレームを表示するために、VSYNCシグナリングと垂直帰線区間(VBI)が組み込まれている。例えば、サーバは、対応するサーバVSYNC信号で定義された1つまたは複数のフレーム期間で、ゲームレンダリングされたビデオフレームを生成しようとし(例えば、フレーム期間が16.7msの場合、フレーム期間ごとにビデオフレームを生成すると、60Hzの動作になり、2つのフレーム期間ごとに1つのビデオフレームを生成すると、30Hzの動作になる)、その後、そのビデオフレームを符号化してクライアントに送信する。クライアントでは、受信した符号化されたビデオフレームが復号されて表示され、クライアントは、対応するクライアントVSYNCで始まる表示用にレンダリングされた各ビデオフレームを表示する。 VSYNC signaling and vertical blanking interval (VBI) are incorporated to generate video frames and display those video frames when streaming media content between server and client. For example, the server will attempt to generate a game-rendered video frame with one or more frame periods defined by the corresponding server VSYNC signal (e.g., if the frame period is 16.7ms, then every frame period will be a video frame). Generating a frame results in 60 Hz operation, generating one video frame every two frame periods results in 30 Hz operation), which is then encoded and sent to the client. At the client, the received encoded video frames are decoded and displayed, and the client displays each video frame rendered for display beginning with the corresponding client VSYNC.

説明のために、図1Aは、VSYNC信号111がフレーム期間の開始をどのように示し得るかを示し、ここで、様々な動作が、サーバ及び/またはクライアントで対応するフレーム期間中に実行され得る。メディアコンテンツをストリーミングする場合、サーバはビデオフレームの生成と符号化にサーバVSYNC信号を使用し、クライアントはビデオフレームの表示にクライアントVSYNC信号を使用する場合がある。VSYNC信号111は、図1Bに示すように、定義されたフレーム期間110に対応する定義された周波数で生成される。さらに、VBI105は、前のフレーム期間に最後のラスターラインがディスプレイに描画されてから最初のラスター線(例えば、上)がディスプレイに描画されるまでの期間を定義する。示されるように、VBI105の後、表示のためにレンダリングされたビデオフレームは、ラスタースキャンライン106を介して表示される(例えば、左から右へのラスターラインごとのラスターライン)。 For illustrative purposes, FIG. 1A shows how VSYNC signal 111 may indicate the start of a frame period, where various operations may be performed at the server and/or client during the corresponding frame period. . When streaming media content, the server may use the server VSYNC signal to generate and encode video frames, and the client may use the client VSYNC signal to display the video frames. A VSYNC signal 111 is generated at a defined frequency corresponding to a defined frame period 110, as shown in FIG. 1B. In addition, VBI 105 defines the period from when the last raster line was drawn to the display during the previous frame period to when the first raster line (eg, top) is drawn to the display. As shown, after VBI 105, the video frames rendered for display are displayed via raster scan lines 106 (eg, raster line by raster line from left to right).

さらに、本開示の様々な実施形態が、メディアコンテンツ(例えば、ビデオゲームコンテンツ)をストリーミングする場合など、ソースデバイスとターゲットデバイスとの間の一方向の待ち時間及び/または待ち時間の不安定性を低減するために開示される。説明のみを目的として、一方向の待ち時間及び/または待ち時間の不安定性を低減するための様々な実施形態が、サーバ及びクライアントのネットワーク構成内で説明されている。しかし、一方向の待ち時間及び/または待ち時間の不安定性を低減するために開示された様々な技術は、図2A~2Dに示されるように、他のネットワーク構成内、及び/またはピアツーピアネットワーク上で実施され得ることが理解される。例えば、一方向の待ち時間及び/または待ち時間の不安定性を低減するために開示される様々な実施形態は、様々な構成(例えば、サーバとクライアント、サーバとサーバ、サーバと複数のクライアント、サーバと複数のサーバ、クライアントとクライアント、クライアントと複数のクライアントなど)におけるサーバ及びクライアントデバイスの1つまたは複数の間で実装され得る。 Additionally, various embodiments of the present disclosure reduce one-way latency and/or latency instability between source and target devices, such as when streaming media content (e.g., video game content). disclosed to do so. For illustrative purposes only, various embodiments for reducing one-way latency and/or latency instability are described within a server and client network configuration. However, the various techniques disclosed for reducing one-way latency and/or latency instability can be implemented in other network configurations and/or over peer-to-peer networks, as shown in FIGS. 2A-2D. It is understood that it can be implemented in For example, various embodiments disclosed for reducing one-way latency and/or latency instability can be implemented in various configurations (e.g., server and client, server and server, server and multiple clients, server and a plurality of servers, a client to a client, a client to a plurality of clients, etc.).

図2Aは、本開示の実施形態により、様々な構成において、1つまたは複数のクラウドゲームネットワーク290及び/またはサーバ260と1つまたは複数のクライアントデバイス210との間のネットワーク250を介してゲームを提供するためのシステム200Aの図であり、サーバ及びクライアントのVSYNC信号を同期及びオフセットさせることができ、及び/または動的バッファリングがクライアントで実行される場合、及び/またはクライアントでの復号及び表示操作を重複させて、サーバ260とクライアント210との間の一方向の待ち時間を短縮することができる。特に、システム200Aは、クラウドゲームネットワーク290を介してゲームを提供し、本開示の一実施形態によれば、ゲームは、ゲームをプレイしている対応するユーザのクライアントデバイス210(例えば、シンクライアント)からリモートで実行されている。システム200Aは、シングルプレイヤーモードまたはマルチプレイヤーモードのいずれかで、ネットワーク250を介してクラウドゲームネットワーク290を介して1つまたは複数のゲームをプレイする1人または複数のユーザにゲームのコントロールをもたらすことができる。いくつかの実施形態において、クラウドゲームネットワーク290は、ホストマシンのハイパーバイザ上で実行する複数の仮想マシン(VM)を含むことができ、1つ以上の仮想マシンは、ホストのハイパーバイザに利用可能であるハードウェアリソースを利用するゲームプロセッサモジュールを実行するように構成される。ネットワーク250は、1つまたは複数の通信技術を含み得る。いくつかの実施形態では、ネットワーク250は、高度な無線通信システムを有する第5世代(5G)ネットワーク技術を含み得る。 FIG. 2A illustrates gaming via network 250 between one or more cloud gaming networks 290 and/or servers 260 and one or more client devices 210 in various configurations, according to embodiments of the present disclosure. 200A is a diagram of a system 200A for providing the VSYNC signals of the server and client can be synchronized and offset and/or if dynamic buffering is performed at the client and/or decoding and display at the client. Operations can be duplicated to reduce one-way latency between server 260 and client 210 . In particular, the system 200A provides games over a cloud gaming network 290, and according to one embodiment of the present disclosure, the games are played by the corresponding user's client device 210 (e.g., thin client) playing the game. is running remotely from System 200A brings control of a game to one or more users playing one or more games over cloud gaming network 290 over network 250, either in single-player mode or multiplayer mode. can be done. In some embodiments, the cloud gaming network 290 may include multiple virtual machines (VMs) running on the host machine's hypervisor, one or more of which are available to the host's hypervisor. is configured to run a game processor module that utilizes hardware resources that are: Network 250 may include one or more communication technologies. In some embodiments, network 250 may include fifth generation (5G) network technology with advanced wireless communication systems.

いくつかの実施形態では、通信は、無線技術を使用して促進され得る。そのような技術には、例えば、5G無線通信技術が含まれ得る。5Gは、セルラーネットワークテクノロジーの第5世代である。5Gネットワークはデジタルセルラーネットワークであり、プロバイダーがカバーするサービスエリアはセルと呼ばれる小さな地理的エリアに分割されている。音と画像を表すアナログ信号は、電話でデジタル化され、アナログデジタルコンバーターによって変換され、ビットのストリームとして送信される。セル内のすべての5Gワイヤレスデバイスは、他のセルで再利用される周波数のプールからトランシーバーによって割り当てられた周波数チャネルを介して、セル内のローカルアンテナアレイ及び低電力自動トランシーバー(送信機兼受信機)と電波で通信する。ローカルアンテナは、高帯域幅光ファイバまたは無線バックホール接続によって、電話網及びインターネットに接続される。他のセルネットワークと同様に、あるセルから別のセルに移動するモバイルデバイスは、新しいセルに自動的に転送される。5Gネットワークは単なる一例のタイプの通信ネットワークであり、本開示の実施形態は、5Gに続く後の世代の有線または無線技術と同様に、前世代の無線または有線通信を利用することができることを理解されたい。 In some embodiments, communications may be facilitated using wireless technology. Such technologies may include, for example, 5G wireless communication technologies. 5G is the fifth generation of cellular network technology. A 5G network is a digital cellular network, where the service area covered by a provider is divided into smaller geographical areas called cells. Analog signals representing sound and images are digitized on the phone, converted by an analog-to-digital converter, and transmitted as a stream of bits. All 5G wireless devices within a cell connect to the cell's local antenna array and low-power automatic transceiver (transmitter and receiver) via frequency channels assigned by the transceiver from a pool of frequencies reused in other cells. ) and radio waves. Local antennas are connected to the telephone network and the Internet by high-bandwidth fiber optic or wireless backhaul connections. As with other cellular networks, mobile devices that move from one cell to another are automatically transferred to the new cell. It is understood that a 5G network is just one example type of communication network, and that embodiments of the present disclosure can utilize previous generations of wireless or wired communications, as well as later generations of wired or wireless technologies following 5G. want to be

示されるように、ゲームネットワーク290は、複数のビデオゲームへのアクセスを提供するゲームサーバ260を含む。ゲームサーバ260は、クラウド内で利用可能な任意の種類のサーバコンピューティングデバイスであり得るもので、1つ以上のホストで実行される1つ以上の仮想マシンとして構成され得る。例えば、ゲームサーバ260は、ユーザのゲームのインスタンスをインスタンス化するゲームプロセッサをサポートする仮想マシンを管理し得る。よって、複数の仮想マシンに対応付けられたゲームサーバ260の複数のゲームプロセッサは、複数のユーザのゲームプレイに関連付けられた1つまたは複数のゲームの複数のインスタンスを実行するように構成される。そのようにして、バックエンドサーバサポートは、複数のゲームアプリケーションのゲームプレイのメディア(例えば、ビデオ、オーディオなど)のストリーミングを、対応する複数のユーザに提供する。
つまり、ゲームサーバ260は、ネットワーク250を介して、データ(例えば、対応するゲームプレイのレンダリングされた画像及び/またはフレーム)を対応するクライアントデバイス210にストリーミング返信するように構成される。そのようにして、クライアントデバイス210によって受信されて転送されたコントローラの入力に応答して、計算の複雑なゲームアプリケーションが、バックエンドサーバで実行し続けることができる。各サーバは、画像及び/またはフレームをレンダリングし、次いでそれらを符号化(例えば、圧縮)して、対応するクライアントデバイスにストリーミングして表示することが可能である。
As shown, game network 290 includes a game server 260 that provides access to multiple video games. Game server 260 may be any type of server computing device available in the cloud and may be configured as one or more virtual machines running on one or more hosts. For example, game server 260 may manage a virtual machine that supports a game processor that instantiates instances of a user's game. Thus, multiple game processors of game server 260 associated with multiple virtual machines are configured to execute multiple instances of one or more games associated with multiple users' gameplay. As such, the backend server support provides streaming of gameplay media (eg, video, audio, etc.) of multiple game applications to corresponding multiple users.
That is, game servers 260 are configured to stream data (eg, rendered images and/or frames of corresponding gameplay) back to corresponding client devices 210 over network 250 . As such, a computationally complex game application can continue to run on the backend server in response to controller input received and forwarded by the client device 210 . Each server can render images and/or frames, then encode (eg, compress) them and stream them to corresponding client devices for display.

例えば、複数のユーザは、ストリーミングメディアを受信するように構成された対応するクライアントデバイス210を使用して、通信ネットワーク250を介して、クラウドゲームネットワーク290にアクセスすることができる。一実施形態では、クライアントデバイス210は、計算機能(例えば、ゲームタイトル処理エンジン211を含む)を提供するように構成されたバックエンドサーバ(例えば、クラウドゲームネットワーク290のゲームサーバ260)とのインターフェースを提供するシンクライアントとして構成され得る。別の実施形態では、クライアントデバイス210は、ビデオゲームの少なくともいくつかのローカル処理のためのゲームタイトル処理エンジン及びゲームロジックで構成され得るもので、バックエンドサーバで実行されるビデオゲームによって生成されるストリーミングコンテンツを受信するために、またはバックエンドサーバサポートによって提供されるその他のコンテンツ用に、さらに利用され得る。ローカル処理の場合、ゲームタイトル処理エンジンには、ビデオゲームを実行するための基本的なプロセッサベースの機能と、ビデオゲームに関連するサービスが含まれている。ゲームロジックは、ローカルクライアントデバイス210に格納され、ビデオゲームを実行するために使用される。 For example, multiple users may access cloud gaming network 290 via communication network 250 using corresponding client devices 210 configured to receive streaming media. In one embodiment, client device 210 interfaces with a backend server (eg, game server 260 of cloud gaming network 290) configured to provide computing functionality (eg, including game title processing engine 211). It can be configured as a thin client that provides In another embodiment, the client device 210 may be configured with a game title processing engine and game logic for local processing of at least some of the video games generated by the video games running on the back end servers. It can be further utilized to receive streaming content or for other content provided by backend server support. For local processing, the game title processing engine includes basic processor-based functions for running the video game and services related to the video game. Game logic is stored on the local client device 210 and used to run the video game.

特に、対応するユーザ(示さず)のクライアントデバイス210は、インターネットなどの通信ネットワーク250経由でゲームへのアクセスを要求するために、及びゲームサーバ260により実行されるビデオゲームにより生成される表示画像をレンダリングするために構成され、その場合に符号化された画像が対応するユーザと関連する表示のためにクライアントデバイス210へ配信されている。例えば、ユーザは、ゲームサーバ260のゲームプロセッサ上で実行するビデオゲームのインスタンスとクライアントデバイス210を通してインタラクトすることができる。より具体的には、ビデオゲームのインスタンスは、ゲーム作品処理エンジン211により実行される。ビデオゲームを実装する対応するゲームロジック(例えば、実行可能コード)215は、データストア(図示せず)を介して格納及びアクセス可能であり、ビデオゲームを実行するために使用される。ゲームタイトル処理エンジン211は、複数のゲームロジックを使用して複数のビデオゲームをサポートすることができ、それぞれがユーザによって選択可能である。 In particular, a corresponding user's (not shown) client device 210 may request access to a game over a communications network 250 such as the Internet and display images generated by a video game executed by a game server 260 . The images configured for rendering, and then encoded, are delivered to the client device 210 for display in association with the corresponding user. For example, a user may interact with an instance of a video game running on a game processor of game server 260 through client device 210 . More specifically, instances of video games are executed by game work processing engine 211 . Corresponding game logic (eg, executable code) 215 implementing the videogame is stored and accessible via a data store (not shown) and used to execute the videogame. The game title processing engine 211 can support multiple video games using multiple game logics, each selectable by the user.

例えば、クライアントデバイス210は、ゲームプレイを駆動するために使用される入力コマンドを介するなどして、対応するユーザのゲームプレイに関連付けられたゲームタイトル処理エンジン211とインタラクトするように構成される。特に、クライアントデバイス210は、ゲームコントローラ、タブレットコンピュータ、キーボードなどの様々な種類の入力デバイスからの入力、ビデオカメラ、マウス、タッチパッドなどにより取り込まれたジェスチャを、受信し得る。クライアントデバイス210は、メモリとプロセッサモジュールとを少なくとも有する任意の種類のコンピューティングデバイスであり得るもので、ネットワーク250を介してゲームサーバ260に接続することができる。
バックエンドゲームタイトル処理エンジン211は、レンダリングされた画像を生成するように構成され、レンダリングされた画像は、クライアントデバイス210に関連する対応するディスプレイに表示するためにネットワーク250を介して配信される。例えば、クラウドベースのサービスを介して、ゲームレンダリングされた画像は、ゲームサーバ260のゲーム実行エンジン211で実行される対応するゲームのインスタンスによって配信され得る。すなわち、クライアントデバイス210は、符号化された画像(例えば、ビデオゲームの実行を通じて生成されたゲームレンダリング画像から符号化された)を受信し、ディスプレイ11のためにレンダリングされた画像を表示するように構成される。一実施形態では、ディスプレイ11は、HMDを含む(例えば、VRコンテンツを表示する)。いくつかの実施形態では、レンダリングされた画像は、クラウドベースのサービスから直接、またはクライアントデバイス210(例えば、プレイステーション(登録商標)リモートプレイ)を介して、無線または有線でスマートフォンまたはタブレットにストリーミングすることができる。
For example, the client device 210 is configured to interact with the game title processing engine 211 associated with the corresponding user's gameplay, such as via input commands used to drive the gameplay. In particular, client device 210 may receive input from various types of input devices such as game controllers, tablet computers, keyboards, gestures captured by video cameras, mice, touch pads, and the like. Client device 210 can be any type of computing device having at least a memory and a processor module and can be connected to game server 260 via network 250 .
Backend game title processing engine 211 is configured to generate rendered images, which are delivered over network 250 for display on corresponding displays associated with client devices 210 . For example, via a cloud-based service, game-rendered images may be delivered by instances of corresponding games running on game execution engine 211 of game server 260 . That is, client device 210 receives encoded images (eg, encoded from game-rendered images generated through execution of a video game) and displays rendered images for display 11 . Configured. In one embodiment, display 11 includes an HMD (eg, displays VR content). In some embodiments, rendered images can be streamed wirelessly or wired to a smartphone or tablet directly from a cloud-based service or via a client device 210 (e.g., PlayStation Remote Play). can be done.

一実施形態では、ゲームサーバ260及び/またはゲームタイトル処理エンジン211は、ゲーム及びゲームアプリケーションに関連するサービスを実行するための基本的なプロセッサベースの機能を含む。例えば、プロセッサベースの機能には、2Dまたは3Dレンダリング、物理学、物理シミュレーション、スクリプト、オーディオ、アニメーション、グラフィックス処理、ライティング、シェーディング、ラスター化、レイトレーシング、シャドーイング、カリング、変換、人工知能などが含まれる。さらに、ゲームアプリケーションのサービスには、メモリ管理、マルチスレッド管理、サービス品質(QoS)、帯域幅テスト、ソーシャルネットワーキング、ソーシャルフレンドの管理、ソーシャルネットワークのフレンドとの通信、通信チャネル、テキスティング、インスタントメッセージ、チャットサポートなどが含まれる。 In one embodiment, game server 260 and/or game title processing engine 211 include basic processor-based functionality for performing services associated with games and game applications. For example, processor-based functions include 2D or 3D rendering, physics, physics simulation, scripting, audio, animation, graphics processing, lighting, shading, rasterization, ray tracing, shadowing, culling, transformations, artificial intelligence, etc. is included. In addition, gaming application services include memory management, multi-thread management, quality of service (QoS), bandwidth testing, social networking, managing social friends, communicating with social network friends, communication channels, texting, instant messaging. , chat support, etc.

一実施形態では、クラウドゲームネットワーク290は、分散型ゲームサーバシステム及び/またはアーキテクチャである。具体的には、ゲームロジックを実行する分散型ゲームエンジンが、対応するゲームの対応するインスタンスとして構成されている。一般に、分散型ゲームエンジンは、ゲームエンジンの各機能を取り込み、それらの機能を分散させて多数の処理エンティティによって実行する。個々の機能は、さらに1つ以上の処理エンティティにわたって分散させることができる。処理エンティティは、物理ハードウェア、及び/または仮想コンポーネントまたは仮想マシン、及び/または仮想コンテナなど、様々な構成で構成され得る。コンテナは、仮想化されたオペレーティングシステム上で動作するゲームアプリケーションのインスタンスを仮想化するものであるため、仮想マシンとは異なる。
処理エンティティは、クラウドゲームネットワーク290の1つ以上のサーバ(計算ノード)上のサーバ及びその基礎となるハードウェアを利用し、及び/またはそれらに依拠してもよく、サーバは1つ以上のラック上に配置され得る。種々の処理エンティティに対するそれらの機能の実行の協調、割り当て、及び管理は、分散同期層によって行われる。そのようにして、それらの機能の実行が分散同期層によって制御されて、プレイヤーによるコントローラ入力に応答して、ゲームアプリケーション用のメディア(例えば、ビデオフレーム、オーディオなど)を生成することが可能になる。分散同期層は、重要なゲームエンジンコンポーネント/機能が、より効率的な処理のために分散されて再構築されるように、分散処理エンティティ全体で(例えば、負荷バランシングを介して)それらの機能を効率的に実行することが可能である。
In one embodiment, cloud gaming network 290 is a distributed gaming server system and/or architecture. Specifically, distributed game engines that execute game logic are configured as corresponding instances of corresponding games. In general, a distributed game engine captures the functions of the game engine and distributes those functions for execution by multiple processing entities. Individual functions may also be distributed across one or more processing entities. A processing entity may be configured in various configurations, such as physical hardware, and/or virtual components or machines, and/or virtual containers. A container is different from a virtual machine because it virtualizes an instance of a game application running on a virtualized operating system.
The processing entity may utilize and/or rely on the servers and underlying hardware on one or more servers (computation nodes) of the cloud gaming network 290, which may be arranged in one or more racks. can be placed on. Coordination, allocation and management of the execution of their functions to the various processing entities is done by the distributed synchronization layer. As such, the execution of those functions is controlled by the distributed synchronization layer, enabling media (e.g., video frames, audio, etc.) to be generated for the game application in response to controller input by the player. . The distributed synchronization layer distributes critical game engine components/functions (e.g., via load balancing) across distributed processing entities so that they can be distributed and restructured for more efficient processing. It can be executed efficiently.

ゲームタイトル処理エンジン211は、マルチテナンシーGPU機能を実行するように構成された中央処理装置(CPU)及びグラフィックス処理装置(GPU)グループを含む。別の実施形態では、複数のGPUデバイスを組み合わせて、対応するCPU上で実行されている単一のアプリケーションのグラフィックス処理を実行する。 Game title processing engine 211 includes a central processing unit (CPU) and graphics processing unit (GPU) group configured to perform multi-tenancy GPU functionality. In another embodiment, multiple GPU devices are combined to perform graphics processing for a single application running on corresponding CPUs.

図2Bは、2つ以上のピアデバイス間でゲームを提供するための図であり、本開示の一実施形態によれば、VSYNC信号を同期及びオフセットして、デバイス間のコントローラ及び他の情報の受信の最適なタイミングを達成することができる。例えば、対面型のゲームは、ネットワーク250を介して、またはピアツーピア通信(例えば、ブルートゥース(登録商標)、ローカルエリアネットワーキングなど)を介して直接接続された2つ以上のピアデバイスを使用して実行され得る。 FIG. 2B is a diagram for providing a game between two or more peer devices, and according to one embodiment of the present disclosure, VSYNC signals are synchronized and offset to synchronize controller and other information between devices. Optimal timing of reception can be achieved. For example, face-to-face games may be performed using two or more peer devices directly connected via network 250 or via peer-to-peer communications (eg, Bluetooth®, local area networking, etc.). obtain.

示されるように、ゲームは、ビデオゲームをプレイしている対応するユーザのクライアントデバイス210(例えば、ゲームコンソール)のそれぞれでローカルに実行されており、クライアントデバイス210は、ピアツーピアネットワーキングを介して通信する。例えば、ビデオゲームのインスタンスは、対応するクライアントデバイス210のゲームタイトル処理エンジン211によって実行されている。ビデオゲームを実施するゲームロジック215(例えば実行可能コード)は、該当クライアントデバイス210に格納され、ゲームを実行するために使用される。例示として、ゲームロジック215は、該当クライアントデバイス210に、ポータブルメディア(例えば光学的メディア)を介して、またはネットワークを介して配信され得る(例えばインターネットを介してゲームプロバイダからダウンロードされ得る)。 As shown, the game is running locally on each of the corresponding user's client devices 210 (e.g., game consoles) playing the video game, which client devices 210 communicate via peer-to-peer networking. . For example, a video game instance is being executed by the game title processing engine 211 of the corresponding client device 210 . Game logic 215 (eg, executable code) implementing the video game is stored on the applicable client device 210 and used to execute the game. By way of example, game logic 215 may be delivered to the applicable client device 210 via portable media (eg, optical media) or via a network (eg, downloaded from a game provider via the Internet).

一実施形態では、対応するクライアントデバイス210のゲームタイトル処理エンジン211は、ゲーム及びゲームアプリケーションに関連するサービスを実行するための基本的なプロセッサベースの機能を含む。例えば、プロセッサベースの機能には、2Dまたは3Dレンダリング、物理学、物理シミュレーション、スクリプト、オーディオ、アニメーション、グラフィックス処理、ライティング、シェーディング、ラスター化、レイトレーシング、シャドーイング、カリング、変換、人工知能などが含まれる。さらに、ゲームアプリケーションのサービスには、メモリ管理、マルチスレッド管理、サービス品質(QoS)、帯域幅テスト、ソーシャルネットワーキング、ソーシャルフレンドの管理、ソーシャルネットワークのフレンドとの通信、通信チャネル、テキスティング、インスタントメッセージ、チャットサポートなどが含まれる。 In one embodiment, the game title processing engine 211 of the corresponding client device 210 includes basic processor-based functionality for performing services associated with games and game applications. For example, processor-based functions include 2D or 3D rendering, physics, physics simulation, scripting, audio, animation, graphics processing, lighting, shading, rasterization, ray tracing, shadowing, culling, transformations, artificial intelligence, etc. is included. In addition, gaming application services include memory management, multi-thread management, quality of service (QoS), bandwidth testing, social networking, managing social friends, communicating with social network friends, communication channels, texting, instant messaging. , chat support, etc.

クライアントデバイス210は、ゲームコントローラ、タブレットコンピュータ、キーボード、ビデオカメラ、マウス、タッチパッドなどによってキャプチャされたジェスチャなどの様々なタイプの入力デバイスから入力を受け取ることができる。クライアントデバイス210は、少なくともメモリ及びプロセッサモジュールを有する任意のタイプのコンピューティングデバイスであり得るもので、ゲームタイトル処理エンジン211によって実行されるレンダリングされた画像を生成し、レンダリングされた画像をディスプレイ(例えば、ディスプレイ11、またはヘッドマウントディスプレイ-HMDを含むディスプレイ11、など)に表示するために構成される。例えば、レンダリングされた画像は、ゲームプレイを駆動するために使用される入力コマンドなどを介して、対応するユーザのゲームプレイを実装するために、クライアントデバイス210上でローカルに実行されるゲームのインスタンスに関連付けられ得る。クライアントデバイス210のいくつかの例として、パーソナルコンピュータ(PC)、ゲーム機、ホームシアターデバイス、汎用コンピュータ、モバイルコンピューティングデバイス、タブレット、電話、または、ゲームのインスタンスを実行することができる任意の他の種類のコンピューティングデバイスが、挙げられる。 Client device 210 can receive input from various types of input devices such as gestures captured by game controllers, tablet computers, keyboards, video cameras, mice, touch pads, and the like. Client device 210 can be any type of computing device having at least a memory and processor module that generates rendered images for execution by game title processing engine 211 and displays the rendered images on a display (e.g. , display 11, or head-mounted display—display 11 including HMD, etc.). For example, a rendered image may be an instance of a game running locally on the client device 210 to implement the corresponding user's gameplay, such as through input commands used to drive the gameplay. can be associated with Some examples of client devices 210 are personal computers (PCs), game consoles, home theater devices, general purpose computers, mobile computing devices, tablets, phones, or any other type capable of running an instance of a game. of computing devices.

図2Cは、本開示の実施形態による、ソースデバイスとターゲットデバイスとの間のVSYNC信号の適切な同期及びオフセットから利益を得る、様々なネットワーク構成を示し、図2A~図2Bに示す構成を含む。特に、様々なネットワーク構成は、サーバとクライアント間の一方向の待ち時間及び/または待ち時間の変動を減らす目的で、サーバとクライアントのVSYNC信号の周波数の適切なアライメント、及びサーバとクライアントのVSYNC信号のタイミングオフセットから利益が得られる。例えば、1つのネットワークデバイス構成には、クラウドゲームサーバ(例えば、ソース)からクライアント(ターゲット)への構成が含まれる。一実施形態では、クライアントは、ウェブブラウザ内でオーディオ及びビデオ通信を提供するように構成されたウェブRTCクライアントを含み得る。別のネットワーク構成には、クライアント(例えば、ソース)からサーバ(ターゲット)への構成が含まれる。さらに別のネットワーク構成には、サーバ(例えば、ソース)からサーバ(例えば、ターゲット)への構成が含まれる。別のネットワークデバイス構成は、クライアント(例えば、ソース)からクライアント(ターゲット)への構成を含み、クライアントはそれぞれ、例えば、対面型のゲームを提供するためのゲームコンソールであり得る。 FIG. 2C illustrates various network configurations that benefit from proper synchronization and offset of VSYNC signals between source and target devices, including the configurations shown in FIGS. 2A-2B, according to embodiments of the present disclosure. . In particular, various network configurations require proper alignment of the frequencies of the server and client VSYNC signals, and the server and client VSYNC signals, in order to reduce one-way latency and/or latency variations between the server and client. benefits from the timing offset of For example, one network device configuration includes a cloud gaming server (eg, source) to client (target) configuration. In one embodiment, the client may include a web RTC client configured to provide audio and video communication within a web browser. Another network configuration includes a client (eg, source) to server (target) configuration. Yet another network configuration includes a server (eg, source) to server (eg, target) configuration. Another network device configuration includes a client (eg, source) to client (target) configuration, where each client may be, for example, a game console for providing face-to-face gaming.

特に、VSYNC信号のアラインメントは、サーバVSYNC信号とクライアントVSYNC信号の周波数の同期を含み、ドリフトを除去する目的で、及び/またはクライアントVSYNC信号とサーバVSYNC信号の間の理想的な関係を維持するために、一方向の待ち時間及び/または待ち時間の変動を減らす目的で、クライアントVSYNC信号とサーバVSYNC信号間のタイミングオフセットを調整することも含み得る。適切なアライメントを達成するために、一実施形態では、サーバ260とクライアント210のペアとの間の適切なアライメントを実施するために、サーバVSYNC信号を調整することができる。
別の実施形態では、サーバ260とクライアント210のペアとの間の適切なアライメントを実施するために、クライアントVSYNC信号を調整することができる。クライアントとサーバのVSYNC信号がアライメントすると、サーバのVSYNC信号とクライアントのVSYNC信号は実質的に同じ周波数で発生し、タイミングオフセットによって互いにオフセットされる。タイミングオフセットは随時調整できる。
別の実施形態では、VSYNC信号のアライメントは、2つのクライアントのVSYNCの周波数を同期させることも可能であり、ドリフトを除去する目的で、それらのVSYNC信号間のタイミングオフセットを調整し、及び/またはコントローラ及びその他の情報の最適なタイミングでの受信を達成することを含み得るもので、どちらのVSYNC信号も、このアライメントを達成するように調整できる。
さらに別の実施形態では、アラインメントは、複数のサーバのVSYNCの周波数を同期させることも可能であり、また、サーバVSYNC信号及びクライアントVSYNC信号の周波数を同期し、例えば対面型のクラウドゲームの場合に、クライアントVSYNCとサーバVSYNC信号との間のタイミングオフセットを調整することを含み得る。サーバからクライアントへの構成及びクライアントからクライアントへの構成では、調整には、サーバVSYNC信号とクライアントVSYNC信号の間の周波数の同期、及びサーバVSYNC信号とクライアントVSYNC信号の間の適切なタイミングオフセットの提供の両方が含まれる場合がある。サーバ間の構成では、アライメントには、タイミングオフセットを設定せずにサーバVSYNC信号とクライアントVSYNC信号の間の周波数の同期が含まれる場合がある。
In particular, alignment of the VSYNC signals includes frequency synchronization of the server VSYNC signal and the client VSYNC signal for purposes of removing drift and/or to maintain an ideal relationship between the client VSYNC signal and the server VSYNC signal. It may also include adjusting the timing offset between the client VSYNC signal and the server VSYNC signal in order to reduce one-way latency and/or latency variation. To achieve proper alignment, in one embodiment, the server VSYNC signal may be adjusted to enforce proper alignment between the server 260 and client 210 pair.
In another embodiment, the client VSYNC signal can be adjusted to enforce proper alignment between the server 260 and client 210 pair. When the client and server VSYNC signals are aligned, the server VSYNC signal and the client VSYNC signal occur at substantially the same frequency and are offset from each other by a timing offset. The timing offset can be adjusted at any time.
In another embodiment, the alignment of the VSYNC signals can also synchronize the frequency of the VSYNCs of two clients, adjust the timing offset between their VSYNC signals for the purpose of removing drift, and/or Either VSYNC signal can be adjusted to achieve this alignment, which may include achieving optimal timing reception of controller and other information.
In yet another embodiment, the alignment can also synchronize the frequency of VSYNC of multiple servers, and synchronize the frequencies of the server VSYNC signal and the client VSYNC signal, for example for face-to-face cloud gaming. , adjusting the timing offset between the client VSYNC and server VSYNC signals. In server-to-client and client-to-client configurations, adjustments include synchronizing the frequency between the server VSYNC signal and the client VSYNC signal, and providing an appropriate timing offset between the server VSYNC signal and the client VSYNC signal. may include both. In a server-to-server configuration, alignment may include frequency synchronization between the server VSYNC signal and the client VSYNC signal without setting a timing offset.

図2Dは、本開示の一実施形態による、ソースデバイスとターゲットデバイスとの間のVSYNC信号の適切な同期及びオフセットから利益を得る、クラウドゲームサーバ260と1つまたは複数のクライアント210との間のマルチテナンシー構成を示す。サーバからクライアントへの構成では、調整には、サーバVSYNC信号とクライアントVSYNC信号の間の周波数の同期、及びサーバVSYNC信号とクライアントVSYNC信号の間の適切なタイミングオフセットの提供の両方が含まれる場合がある。マルチテナンシー構成では、一実施形態では、サーバ260とクライアント210のペアとの間の適切なアラインメントを実装するために、クライアントVSYNC信号が各クライアント210で調整される。 FIG. 2D illustrates the communication between cloud gaming server 260 and one or more clients 210 benefiting from proper synchronization and offset of VSYNC signals between source and target devices, according to one embodiment of the present disclosure. Shows a multi-tenancy configuration. In a server-to-client configuration, coordination may include both synchronizing the frequency between the server and client VSYNC signals and providing an appropriate timing offset between the server and client VSYNC signals. be. In a multi-tenancy configuration, in one embodiment, the client VSYNC signal is coordinated at each client 210 to implement proper alignment between the server 260 and client 210 pair.

例えば、グラフィックスサブシステムは、マルチテナンシーGPU機能を実行するように構成され得るもので、一実施形態では、1つのグラフィックスサブシステムが、複数のゲームのためのグラフィックス及び/またはレンダリングパイプラインを実装し得る。つまり、グラフィックスサブシステムは、実行されている複数のゲーム間で共有される。特に、ゲームタイトル処理エンジンは、マルチテナンシーGPU機能を実行するように構成されたCPU及びGPUグループを含むことも可能であり、一実施形態では、1つのCPU及びGPUグループが複数のゲームのグラフィックス及び/またはレンダリングパイプラインを実装し得る。つまり、CPUとGPUグループは、実行されている複数のゲーム間で共有される。CPU及びGPUグループは、1つ以上の処理デバイスとして構成できる。別の実施形態では、複数のGPUデバイスを組み合わせて、対応するCPU上で実行されている単一のアプリケーションのグラフィックス処理を実行する。 For example, the graphics subsystem may be configured to perform multi-tenancy GPU functions, and in one embodiment, one graphics subsystem provides graphics and/or rendering pipes for multiple games. line can be implemented. That is, the graphics subsystem is shared between multiple games running. In particular, the game title processing engine may also include CPU and GPU groups configured to perform multi-tenancy GPU functionality, and in one embodiment, one CPU and GPU group may provide graphics processing for multiple games. and/or a rendering pipeline. That is, the CPU and GPU groups are shared between multiple games being run. The CPU and GPU groups can be configured as one or more processing devices. In another embodiment, multiple GPU devices are combined to perform graphics processing for a single application running on corresponding CPUs.

図3は、サーバでビデオゲームを実行してゲームレンダリングされたビデオフレームを生成し、それらのビデオフレームをクライアントに送信して表示する一般的なプロセスを示している。従来、ゲームサーバ260及びクライアント210でのいくつかの操作は、それぞれのVSYNC信号によって定義されるフレーム期間内に実行される。例えば、サーバ260は、対応するサーバVSYNC信号311によって定義されるように、1つまたは複数のフレーム期間で、301でゲームレンダリングされたビデオフレームを生成しようとする。ビデオフレームは、操作350で入力デバイスから配信される制御情報(例えば、ユーザの入力コマンド)、または制御情報によって駆動されないゲームロジックのいずれかに応答して、ゲームによって生成される。送信ジッタ351は、制御情報をサーバ260に送信するときに存在することができ、ジッタ351は、クライアントからサーバへのネットワーク待ち時間の変動を測定する(例えば、入力コマンドを送信するとき)。
図示されるように、太い矢印は、制御情報をサーバ260に送信するときの現在の遅延を示しているが、ジッタのために、サーバ260での制御情報の到着時間の範囲(例えば、点線の矢印で囲まれた範囲)があり得る。フリップ時間309で、GPUは、対応するビデオフレームが完全に生成され、サーバ260のフレームバッファに配置されたことを示すフリップコマンドに到達する。その後、サーバ260は、サーバVSYNC信号311によって定義される後続のフレーム期間にわたって、そのビデオフレームに対してスキャンアウト/スキャンイン(操作302、スキャンアウトはVSYNC信号311とアライメントされる場合がある)を実行する(VBIは、わかりやすくするために省略されている)。続いて、ビデオフレームが符号化され(操作303)(例えば、VSYNC信号311の発生後に符号化が開始され、符号化の終わりがVSYNC信号とアライメントされない場合がある)、クライアント210へ送信される(操作304、送信がVSYNC信号311とアライメントされない場合がある)。
クライアント210において、符号化されたビデオフレームは、受信され(操作305、受信はクライアントVSYNC信号312とアライメントされない場合がある)、復号され(操作306、復号はクライアントVSYNC信号312とアライメントされない場合がある)、バッファリングされ、表示される(操作307、表示の開始は、クライアントのVSYNC信号312とアライメントされる場合がある)。特に、クライアント210は、クライアントVSYNC信号312の対応する発生で始まる表示のためにレンダリングされる各ビデオフレームを表示する。
FIG. 3 illustrates the general process of running a video game on a server to generate game-rendered video frames and sending those video frames to a client for display. Conventionally, some operations on game server 260 and client 210 are performed within frame periods defined by their respective VSYNC signals. For example, server 260 attempts to generate game-rendered video frames at 301 for one or more frame periods, as defined by corresponding server VSYNC signal 311 . The video frames are generated by the game in response to either control information delivered from the input device at operation 350 (eg, user input commands) or game logic not driven by control information. Transmission jitter 351 can be present when sending control information to server 260, and jitter 351 measures the variation in network latency from the client to the server (eg, when sending input commands).
As shown, the thick arrows indicate the current delay in sending control information to server 260, but due to jitter, the range of arrival times of control information at server 260 (e.g. range enclosed by arrows). At flip time 309 , the GPU reaches a flip command indicating that the corresponding video frame has been completely generated and placed in the frame buffer of server 260 . Server 260 then scans out/scans in (operation 302 , scan out may be aligned with VSYNC signal 311 ) for that video frame over subsequent frame periods defined by server VSYNC signal 311 . Execute (VBI omitted for clarity). The video frames are then encoded (operation 303) (eg, encoding begins after the occurrence of VSYNC signal 311 and the end of encoding may not be aligned with the VSYNC signal) and sent to client 210 ( Operation 304, the transmission may not be aligned with the VSYNC signal 311).
At client 210, encoded video frames are received (operation 305, reception may not be aligned with client VSYNC signal 312) and decoded (operation 306, decoding may not be aligned with client VSYNC signal 312). ), buffered and displayed (operation 307, start of display may be aligned with the client's VSYNC signal 312). In particular, client 210 displays each video frame rendered for display beginning with the corresponding occurrence of client VSYNC signal 312 .

一方向の待ち時間315は、サーバでのビデオフレームの符号化ユニットへの転送(スキャンアウト302など)の開始から、クライアント307でのビデオフレームの表示の開始まで、待ち時間として定義できる。つまり、一方向の待ち時間は、クライアントのバッファリングを考慮した、サーバのスキャンアウトからクライアントの表示までの時間である。個々のフレームには、スキャンアウト302の開始から復号306の完了までの待ち時間があり、符号化303と送信304、サーバ260と付随するジッタ352を伴うクライアント210間のネットワーク送信、及びクライアントの受信305などのサーバの操作の高い度合の変動により、フレームごとに異なり得る。示されるように、真っ直ぐな太い矢印は、対応するビデオフレームをクライアント210に送信するときの現在の待ち時間を示すが、ジッタ352に起因して、クライアント210でのビデオフレームの到着時間の範囲(例えば、点線の矢印で仕切られた範囲)があり得る。
良好なプレイ体験を実現するには、一方向の待ち時間が比較的安定している(例えば、かなり一貫性が保たれている)必要があるため、従来はバッファリング320が実行され、その結果、待ち時間の少ない個々のフレームの表示(例えば、スキャンアウト302の開始から復号の306の完了まで)は、わずかなフレーム期間遅れる。つまり、ネットワークが不安定な場合、または予測できない符号化/復号時間が発生した場合は、一方向の待ち時間を一定に保つために追加のバッファリングが必要になる。
One-way latency 315 can be defined as the latency from the start of transfer of a video frame to an encoding unit (eg, scanout 302 ) at the server to the start of display of the video frame at client 307 . That is, one-way latency is the time from server scanout to client display, accounting for client buffering. Each frame has latency from the start of scanout 302 to the completion of decoding 306, encoding 303 and transmission 304, network transmission between server 260 and client 210 with attendant jitter 352, and client reception. Due to the high degree of variability in the operation of servers such as 305, it may vary from frame to frame. As shown, the straight thick arrows indicate the current latency in sending the corresponding video frames to client 210, but due to jitter 352, the range of video frame arrival times at client 210 ( For example, the range bounded by the dashed arrow).
Buffering 320 is conventionally performed because one-way latency must be relatively stable (e.g., fairly consistent) for a good playing experience, resulting in , the low-latency display of individual frames (eg, from the start of scanout 302 to the completion of decoding 306) is delayed by a small frame period. This means that if the network is unstable, or if unpredictable encoding/decoding times occur, additional buffering is required to keep the one-way latency constant.

本開示の一実施形態によれば、クラウドゲームサーバとクライアントとの間の一方向の待ち時間は、サーバで実行されるビデオゲームから生成されたビデオフレームをストリーミングするときのクロックドリフトに起因して、変動し得る。すなわち、サーバVSYNC信号311及びクライアントVSYNC信号312の周波数の違いにより、クライアントVSYNC信号は、サーバ260から到着するフレームに対してドリフトする可能性がある。ドリフトは、サーバとクライアントのそれぞれのクロックで使用される水晶発振器のごくわずかな違いが原因である可能性がある。さらに、本開示の実施形態は、サーバとクライアントとの間のアライメントのためにVSYNC信号の1つまたは複数の同期及びオフセットを実行することによって、クライアントに動的バッファリングを提供することによって、及びビデオフレームの復号及びクライアントでの表示を重複させることによって、一方向の待ち時間を短縮する。 According to one embodiment of the present disclosure, one-way latency between a cloud gaming server and a client is due to clock drift when streaming video frames generated from a video game running on the server. , can vary. That is, the client VSYNC signal may drift with respect to frames arriving from server 260 due to the difference in frequency between server VSYNC signal 311 and client VSYNC signal 312 . Drift can be caused by minute differences in the crystal oscillators used by the server and client clocks. Further, embodiments of the present disclosure provide dynamic buffering for the client by performing one or more synchronizations and offsets of the VSYNC signal for alignment between the server and the client, and One-way latency is reduced by duplicating the decoding and presentation of video frames at the client.

図4は、本開示の実施形態による、サーバ上で実行されるビデオゲームから生成されたビデオフレームをストリーミングするときの、高度に最適化されたクラウドゲームサーバ260及び高度に最適化されたクライアント210を含むネットワーク構成を介するデータの流れを示し、サーバの操作とクライアントの操作を重複させて、一方向の待ち時間が減少し、サーバとクライアント間でVSYNC信号を同期及びオフセットさせ、一方向の待ち時間が減少するだけでなく、サーバとクライアント間の一方向の待ち時間の変動も減少している。特に、図4は、サーバとクライアントのVSYNC信号間の望ましいアライメントを示している。
一実施形態では、サーバVSYNC信号311の調整は、サーバ及びクライアントネットワーク構成などにおいて、サーバ及びクライアントVSYNC信号間の適切なアライメントを得るために実行される。別の実施形態では、クライアントVSYNC信号312の調整は、マルチテナントサーバからマルチクライアントネットワーク構成へのように、サーバとクライアントVSYNC信号との間の適切なアラインメントを得るために実行される。説明のために、サーバのVSYNC信号311の調整が図4に記載されている。これは、サーバ及びクライアントのVSYNC信号の周波数を同期させる、及び/または対応するクライアント及びサーバのVSYNC信号間のタイミングオフセットを調整する目的であるが、クライアントVSYNC信号312も調整に使用できることが理解される。
FIG. 4 illustrates a highly optimized cloud gaming server 260 and a highly optimized client 210 when streaming video frames generated from a video game running on the server, according to an embodiment of the present disclosure. , overlaps server and client operations to reduce one-way latency, synchronizes and offsets the VSYNC signal between server and client, and eliminates one-way latency Not only is the time reduced, but the one-way latency variation between server and client is also reduced. In particular, FIG. 4 shows the desired alignment between the server and client VSYNC signals.
In one embodiment, adjustment of the server VSYNC signal 311 is performed to obtain proper alignment between the server and client VSYNC signals, such as in server and client network configurations. In another embodiment, adjustment of the client VSYNC signal 312 is performed to obtain proper alignment between the server and client VSYNC signals, such as from a multi-tenant server to a multi-client network configuration. For purposes of illustration, the adjustment of the server's VSYNC signal 311 is described in FIG. This is for the purpose of synchronizing the frequency of the server and client VSYNC signals and/or adjusting the timing offset between the corresponding client and server VSYNC signals, although it is understood that the client VSYNC signal 312 can also be used for adjustment. be.

示されるように、図4は、本開示の実施形態において、サーバでビデオゲームを実行してレンダリングされたビデオフレームを生成し、それらのビデオフレームを表示のためにクライアントに送信する改善されたプロセスを示す。このプロセスは、サーバとクライアントでの単一のビデオフレームの生成と表示に関して示されている。特に、サーバは401で、ゲームレンダリングされたビデオフレームを生成する。例えば、サーバ260は、ゲームを実行するように構成されたCPU(例えば、ゲームタイトル処理エンジン211)を含む。CPUは、ビデオフレームに対して1つまたは複数のドローコールを生成し、ドローコールは、グラフィックスパイプライン内のサーバ260の対応するGPUによって実行するためにコマンドバッファに配置されたコマンドを含む。グラフィックスパイプラインには、シーン内のオブジェクトの頂点に1つ以上のシェーダープログラムを含めて、表示用のビデオフレームにレンダリングされたテクスチャ値を生成できる。この場合、操作は効率を上げるためにGPUを介して並行して実行される。フリップ時間409で、GPUは、対応するビデオフレームが完全に生成され、及び/またはサーバ260のフレームバッファにレンダリングされて配置されたことを示す、コマンドバッファのフリップコマンドに到達する。 As shown, FIG. 4 illustrates an improved process for running a video game on a server to generate rendered video frames and sending those video frames to a client for display in an embodiment of the present disclosure. indicate. This process is illustrated for the generation and display of a single video frame on the server and client. In particular, the server generates 401 game-rendered video frames. For example, server 260 includes a CPU (eg, game title processing engine 211) configured to execute games. The CPU generates one or more draw calls for a video frame, the draw calls containing commands placed in a command buffer for execution by the corresponding GPU of server 260 in the graphics pipeline. The graphics pipeline can include one or more shader programs at the vertices of objects in the scene to generate texture values that are rendered into video frames for display. In this case, the operations are executed in parallel via the GPU for efficiency. At flip time 409 , the GPU reaches a command buffer flip command indicating that the corresponding video frame has been completely generated and/or rendered and placed in the frame buffer of server 260 .

402で、サーバはゲームでレンダリングされたビデオフレームのスキャンアウトをエンコーダに実行する。特に、スキャンアウトは、スキャンラインごとに、または連続するスキャンラインのグループで実行され、スキャンラインは、例えば、画面の端から画面の端までの表示の単一の水平線を指す。これらのスキャンラインまたは連続するスキャンラインのグループは、スライスと呼ばれることもあり、本明細書ではスクリーンスライスと呼ばれる。特に、スキャンアウト402は、別のフレームバッファでそれをオーバーレイし、または別のフレームバッファからの情報でそれを囲むためにそれを縮小することを含む、ゲームレンダリングフレームを変更するいくつかのプロセスを含み得る。スキャンアウト402の間、次に、修正されたビデオフレームは、圧縮のためにエンコーダにスキャンされる。一実施形態では、スキャンアウト402は、VSYNC信号311の発生311aで実行される。他の実施形態では、スキャンアウト402は、フリップ時間409などで、VSYNC信号311の発生の前に実行され得る。 At 402, the server performs a scanout of the game-rendered video frames to the encoder. In particular, scan-out is performed scanline-by-scanline or in groups of consecutive scanlines, where a scanline refers to a single horizontal line of the display, eg, from screen edge to screen edge. These scanlines or groups of consecutive scanlines are sometimes referred to as slices and are referred to herein as screen slices. In particular, scanout 402 performs several processes that modify a game rendering frame, including overlaying it with another framebuffer or shrinking it to surround it with information from another framebuffer. can contain. During scanout 402, the modified video frames are then scanned into the encoder for compression. In one embodiment, scanout 402 is performed at occurrence 311 a of VSYNC signal 311 . In other embodiments, scanout 402 may be performed prior to generation of VSYNC signal 311 , such as at flip time 409 .

403で、ゲームレンダリングされたビデオフレーム(変更された可能性がある)は、エンコーダでエンコーダスライスごとにエンコーダスライスに符号化されて、1つまたは複数の符号化スライスを生成する。この場合、符号化スライスは、スキャンラインまたはスクリーンスライスとは無関係である。そのため、エンコーダは1つ以上の符号化された(例えば、圧縮された)スライスを生成する。
一実施形態では、符号化プロセスは、対応するビデオフレームのスキャンアウト402のプロセスが完全に終了する前に開始する。さらに、符号化403の開始及び/または終了は、サーバVSYNC信号311とアライメントされてもされなくてもよい。符号化されたスライスの境界は、単一のスキャンラインに制限されず、単一のスキャンラインまたは複数のスキャンラインで構成され得る。さらに、符号化されたスライスの終了及び/または次のエンコーダスライスの開始は、必ずしも表示画面の端で発生するわけではなく(例えば、画面の中央またはスキャンラインの中央のどこかで発生する可能性がある)、符号化されたスライスは、表示画面の端から端まで完全にトラバースする必要はない。示されているように、1つまたは複数の符号化されたスライスは、ハッシュマークを有する圧縮された「符号化されたスライスA」を含めて、圧縮及び/または符号化され得る。
At 403, the game-rendered video frame (possibly modified) is encoded encoder slice by encoder slice at an encoder to generate one or more encoded slices. In this case, the coded slices are independent of scanlines or screen slices. As such, the encoder produces one or more encoded (eg, compressed) slices.
In one embodiment, the encoding process begins before the corresponding video frame scanout 402 process is completely finished. Additionally, the start and/or end of encoding 403 may or may not be aligned with server VSYNC signal 311 . A coded slice boundary is not limited to a single scanline, but may consist of a single scanline or multiple scanlines. Moreover, the end of an encoded slice and/or the start of the next encoder slice do not necessarily occur at the edges of the display screen (e.g., they can occur anywhere in the middle of the screen or in the middle of a scanline). ), the encoded slice need not traverse completely across the display screen. As shown, one or more encoded slices may be compressed and/or encoded, including compressed "encoded slice A" with hash marks.

404で、符号化されたビデオフレームは、サーバからクライアントに送信され、送信は、符号化されたスライスごとに行われ得るもので、各符号化されたスライスは、圧縮されたエンコーダスライスである。一実施形態では、送信プロセス404は、対応するビデオフレームの符号化プロセス403が完全に終了する前に開始する。さらに、送信404の開始及び/または終了は、サーバVSYNC信号311とアライメントされてもされなくてもよい。示されているように、圧縮された符号化されたスライスAは、レンダリングされたビデオフレームの他の圧縮されたエンコーダスライスとは独立してクライアントに送信される。エンコーダスライスは、一度に1つずつ、または並行して送信できる。 At 404, the encoded video frames are transmitted from the server to the client, where the transmission may occur on an encoded slice by encoded slice basis, where each encoded slice is a compressed encoder slice. In one embodiment, the transmission process 404 begins before the encoding process 403 of the corresponding video frame is completely finished. Further, the start and/or end of transmission 404 may or may not be aligned with server VSYNC signal 311 . As shown, compressed encoded slice A is sent to the client independently of other compressed encoder slices of the rendered video frame. Encoder slices can be sent one at a time or in parallel.

405で、クライアントは、再び符号化されたスライスごとに、圧縮ビデオフレームを受信する。さらに、受信405の開始及び/または終了は、クライアントVSYNC信号312とアライメントされ得るか、またはされ得なくてもよい。示されているように、圧縮された符号化されたスライスAがクライアントによって受信される。送信ジッタ452は、サーバ260とクライアント210との間に存在することができ、ジッタ452は、サーバ260からクライアント210へのネットワーク待ち時間の変動を測定する。ジッタの値が低いほど、接続がより安定する。示されるように、太い真っ直ぐな矢印は、対応するビデオフレームをクライアント210に送信するときの現在の待ち時間を示すが、ジッタに起因して、クライアント210でのビデオフレームの到着時間の範囲(例えば、点線の矢印で仕切られた範囲)があり得る。待ち時間の変動は、符号化403や送信404などのサーバでの1つ以上の操作、及びビデオフレームをクライアント210に送信するときに待ち時間をもたらすネットワークの問題が原因である可能性もある。 At 405, the client receives the compressed video frames, re-encoded slice by slice. Further, the start and/or end of receive 405 may or may not be aligned with client VSYNC signal 312 . As shown, compressed encoded slice A is received by the client. Transmission jitter 452 can exist between server 260 and client 210 , jitter 452 measures variations in network latency from server 260 to client 210 . The lower the jitter value, the more stable the connection. As shown, the thick straight arrows indicate the current latency in sending the corresponding video frames to the client 210, but due to jitter, the range of arrival times of the video frames at the client 210 (e.g. , ranges delimited by dotted arrows). Variation in latency can also be due to one or more operations at the server, such as encoding 403 or transmitting 404, and network problems that introduce latency when transmitting video frames to client 210. FIG.

406で、クライアントは、圧縮ビデオフレームを、再び符号化されたスライスごとに復号し、復号されたスライスA(ハッシュマークなしで示される)を生成し、これは、現在、表示の準備ができている。一実施形態では、復号プロセス406は、受信プロセス405が対応するビデオフレームについて完全に完了する前に開始する。さらに、復号406の開始及び/または終了は、クライアントVSYNC信号312とアライメントされ得るか、またはされ得なくてもよい。407で、クライアントは、復号されたレンダリングされたビデオフレームをクライアントのディスプレイに表示する。すなわち、復号されたビデオフレームは、例えば、スキャンラインごとにディスプレイデバイスにストリーミングされるディスプレイバッファに配置される。
一実施形態では、表示プロセス407(すなわち、ディスプレイデバイスへのストリーミングアウト)は、復号プロセス406が対応するビデオフレームに対して完全に終了した後、すなわち、復号されたビデオフレームがディスプレイバッファに完全に常駐した後に開始する。別の実施形態では、表示プロセス407は、復号プロセス406が対応するビデオフレームについて完全に終了する前に開始する。つまり、ディスプレイデバイスへのストリームアウトは、復号されたフレームバッファの一部のみがディスプレイバッファに常駐する時点で、ディスプレイバッファのアドレスから開始される。次に、表示バッファは、表示に間に合うように対応するビデオフレームの残りの部分で更新または満たされ、その結果、表示バッファの更新は、それらの部分がディスプレイにストリームアウトする前に実行される。さらに、ディスプレイ407の開始及び/または終了は、クライアントVSYNC信号312とアライメントされる。
At 406, the client decodes the compressed video frame, again encoded slice by slice, producing decoded slice A (shown without hash marks), which is now ready for display. there is In one embodiment, decoding process 406 begins before receiving process 405 is completely completed for the corresponding video frame. Further, the start and/or end of decoding 406 may or may not be aligned with client VSYNC signal 312 . At 407, the client displays the decoded rendered video frames on the client's display. That is, the decoded video frames are placed, for example, in a display buffer that is streamed to the display device scanline by scanline.
In one embodiment, the display process 407 (i.e., streaming out to the display device) is performed after the decoding process 406 is completely finished for the corresponding video frame, i.e., the decoded video frame is fully in the display buffer. Start after resident. In another embodiment, display process 407 begins before decoding process 406 is completely finished for the corresponding video frame. That is, streaming out to the display device begins at an address in the display buffer at a time when only a portion of the decoded framebuffer resides in the display buffer. The display buffer is then updated or filled with the remaining portions of the corresponding video frame in time for display, so that updating of the display buffer is performed before those portions are streamed out to the display. Additionally, the start and/or end of display 407 is aligned with client VSYNC signal 312 .

一実施形態では、サーバ260とクライアント210との間の一方向の待ち時間416は、スキャンアウト402が開始されてからディスプレイ407が開始されるまでの経過時間として定義され得る。本開示の実施形態は、サーバとクライアントとの間のVSYNC信号をアライメントさせ(例えば、周波数を同期させ、オフセットを調整する)、サーバとクライアントとの間の一方向の待ち時間を低減し、サーバとクライアント間の待ち時間の一方向の変動を低減することができる。例えば、本開示の実施形態は、サーバVSYNC信号311とクライアントVSYNC信号312との間のオフセット430に対する最適な調整を計算することができ、その結果、符号化403及び送信404などのサーバの処理に必要な最悪に近い場合の時間のときでも、サーバ260とクライアント210との間の最悪に近い場合のネットワーク待ち時間のときでも、また受信405及び復号406などの最悪に近い場合のクライアント処理のときでも、復号されたレンダリングされたビデオフレームは、表示プロセス407に間に合うように利用可能である。つまり、サーバVSYNCとクライアントVSYNCの間の絶対オフセットを決定する必要はない。復号されたレンダリングされたビデオフレームが表示プロセスに間に合うようにオフセットを調整するだけで十分である。 In one embodiment, one-way latency 416 between server 260 and client 210 may be defined as the elapsed time from when scanout 402 is initiated to when display 407 is initiated. Embodiments of the present disclosure align VSYNC signals (e.g., synchronize frequencies and adjust offsets) between servers and clients to reduce one-way latency between servers and clients, and the one-way variation in latency between clients. For example, embodiments of the present disclosure can compute an optimal adjustment to the offset 430 between the server VSYNC signal 311 and the client VSYNC signal 312, resulting in server processing such as encoding 403 and transmission 404. When near worst case time required, near worst case network latency between server 260 and client 210, and near worst case client processing such as receive 405 and decode 406. However, the decoded rendered video frames are available in time for display process 407 . That is, there is no need to determine the absolute offset between server VSYNC and client VSYNC. It is sufficient to adjust the offsets so that the decoded rendered video frames are in time for the display process.

特に、サーバVSYNC信号311及びクライアントVSYNC信号312の周波数は、同期によってアライメントされ得る。同期は、サーバのVSYNC信号311またはクライアントのVSYNC信号312を調整することによって実現される。説明のために、調整はサーバのVSYNC信号311に関連して説明されているが、調整は代わりにクライアントのVSYNC信号312で実行され得ることが理解される。例えば、図4に示すように、サーバフレーム期間410(例えば、サーバVSYNC信号311の2つの発生311cと311dの間の時間)は、クライアントフレーム期間415(例えば、クライアントVSYNC信号312の2つの発生312aと312bの間の時間)に実質的に等しい。これは、サーバのVSYNC信号311とクライアントのVSYNC信号312の周波数も実質的に等しいことを示している。 In particular, the frequencies of server VSYNC signal 311 and client VSYNC signal 312 may be aligned by synchronization. Synchronization is accomplished by coordinating the server's VSYNC signal 311 or the client's VSYNC signal 312 . For purposes of explanation, coordination is described in relation to the server's VSYNC signal 311, but it is understood that coordination may alternatively be performed on the client's VSYNC signal 312. FIG. For example, as shown in FIG. 4, a server frame period 410 (eg, the time between two occurrences 311c and 311d of server VSYNC signal 311) corresponds to a client frame period 415 (eg, two occurrences 312a of client VSYNC signal 312). and 312b). This indicates that the frequencies of the server's VSYNC signal 311 and the client's VSYNC signal 312 are also substantially equal.

サーバとクライアントのVSYNC信号の周波数の同期を維持するために、サーバのVSYNC信号311のタイミングを操作することができる。例えば、サーバVSYNC信号311の垂直帰線区間(VBI)は、例えば、サーバVSYNC信号311とクライアントVSYNC信号312との間のドリフトを説明するために、ある期間にわたって増加または減少され得る。VBIにおける垂直帰線(VBLANK)ラインの操作は、サーバVSYNC信号311の1つまたは複数のフレーム期間についてVBLANKに使用されるスキャンラインの数を調整することを実現する。VBLANKのスキャンラインの数が減ると、サーバVSYNC信号311の2つの発生間の対応するフレーム期間(例えば、時間間隔)が短縮される。逆に、VBLANKのスキャンラインの数を増やすと、VSYNC信号311の2つの発生間の対応するフレーム期間(例えば、時間間隔)が増える。
このようにして、サーバVSYNC信号311の周波数は、クライアントとサーバのVSYNC信号311と312との間の周波数が実質的に同じ周波数になるようアライメントすべく調整される。また、サーバとクライアントのVSYNC信号間のオフセットは、VBIを元の値に戻す前に、VBIを短時間増減することで調整できる。一実施形態では、サーバVBIが調整される。
別の実施形態では、クライアントVBIが調整される。さらに別の実施形態では、2つのデバイス(サーバ及びクライアント)の代わりに、複数の接続されたデバイスがあり、それらのそれぞれは、調整された対応するVBIを有し得る。一実施形態では、複数の接続されたデバイスのそれぞれは、独立したピアデバイスであり得る(例えば、サーバデバイスなしで)。別の実施形態では、複数のデバイスは、1つまたは複数のサーバ/クライアントアーキテクチャ、マルチテナントサーバ/クライアント(複数可)アーキテクチャ、またはそれらのいくつかの組み合わせに配置された1つまたは複数のサーバデバイス及び/または1つまたは複数のクライアントデバイスを含み得る。
The timing of the server's VSYNC signal 311 can be manipulated to maintain frequency synchronization of the server and client VSYNC signals. For example, the vertical blanking interval (VBI) of server VSYNC signal 311 may be increased or decreased over a period of time, eg, to account for drift between server VSYNC signal 311 and client VSYNC signal 312 . Manipulation of the vertical blanking (VBLANK) line in VBI provides for adjusting the number of scanlines used for VBLANK for one or more frame periods of the server VSYNC signal 311 . Reducing the number of VBLANK scanlines reduces the corresponding frame period (eg, time interval) between two occurrences of the server VSYNC signal 311 . Conversely, increasing the number of VBLANK scanlines increases the corresponding frame period (eg, time interval) between two occurrences of VSYNC signal 311 .
In this way, the frequency of the server VSYNC signal 311 is adjusted to align the frequencies between the client and server VSYNC signals 311 and 312 to be substantially the same frequency. Also, the offset between the server and client VSYNC signals can be adjusted by briefly increasing or decreasing the VBI before returning it to its original value. In one embodiment, the server VBI is adjusted.
In another embodiment, the client VBI is adjusted. In yet another embodiment, instead of two devices (server and client), there may be multiple connected devices, each of which may have its corresponding VBI adjusted. In one embodiment, each of the multiple connected devices may be an independent peer device (eg, without a server device). In another embodiment, the plurality of devices is one or more server devices arranged in one or more server/client architectures, multi-tenant server/client(s) architecture, or some combination thereof. and/or may include one or more client devices.

あるいは、一実施形態では、サーバのピクセルクロック(例えば、サーバのノースブリッジ/サウスブリッジコアロジックチップセットのサウスブリッジに位置する)を操作して、ある期間にわたってサーバのVSYNC信号311の周波数の大まかな調整及び/または微調整を実行し、サーバとクライアントのVSYNC信号311と312との間の周波数の同期を戻してアライメント状態にすることができる。具体的には、サーバのサウスブリッジのピクセルクロックをオーバークロックまたはアンダークロックして、サーバのVSYNC信号311の全体的な周波数を調整することができる。このようにして、サーバVSYNC信号311の周波数は、クライアントとサーバのVSYNC信号311と312との間の周波数が実質的に同じ周波数になるようアライメントすべく調整される。サーバとクライアントのVSYNC間のオフセットは、クライアントサーバのピクセルクロックを元の値に戻す前に、ピクセルクロックを短時間増減することで調整できる。
一実施形態では、サーバピクセルクロックが調整される。別の実施形態では、クライアントピクセルクロックが調整される。別の実施形態では、クライアントピクセルクロックが調整される。さらに別の実施形態では、2つのデバイス(サーバ及びクライアント)の代わりに、複数の接続されたデバイスがあり、それらのそれぞれは、調整された対応するピクセルクロックを有し得る。一実施形態では、複数の接続されたデバイスのそれぞれは、独立したピアデバイスであり得る(例えば、サーバデバイスなしで)。別の実施形態では、複数の接続されたデバイスは、1つまたは複数のサーバ/クライアントアーキテクチャ、マルチテナントサーバ/クライアント(複数可)アーキテクチャ、またはそれらのいくつかの組み合わせに配置された1つまたは複数のサーバデバイス及び1つまたは複数のクライアントデバイスを含み得る。
Alternatively, in one embodiment, the server's pixel clock (eg, located in the southbridge of the server's northbridge/southbridge core logic chipset) is manipulated to approximate the frequency of the server's VSYNC signal 311 over a period of time. Adjustments and/or fine-tuning may be performed to bring the frequency back into alignment between the server and client VSYNC signals 311 and 312 . Specifically, the server's southbridge pixel clock may be overclocked or underclocked to adjust the overall frequency of the server's VSYNC signal 311 . In this way, the frequency of the server VSYNC signal 311 is adjusted to align the frequencies between the client and server VSYNC signals 311 and 312 to be substantially the same frequency. The offset between VSYNC on the server and client can be adjusted by briefly increasing or decreasing the pixel clock of the client server before resetting the pixel clock of the client server to its original value.
In one embodiment, the server pixel clock is adjusted. In another embodiment, the client pixel clock is adjusted. In another embodiment, the client pixel clock is adjusted. In yet another embodiment, instead of two devices (a server and a client), there are multiple connected devices, each of which may have their corresponding pixel clocks adjusted. In one embodiment, each of the multiple connected devices may be an independent peer device (eg, without a server device). In another embodiment, the plurality of connected devices is one or more arranged in one or more server/client architectures, multi-tenant server/client(s) architecture, or some combination thereof. server device and one or more client devices.

図5Aは、本開示の一実施形態による、クラウドゲームサーバ260のそれぞれのクロックとクライアント210の間のドリフト390、ならびに符号化403及び送信404などのサーバの操作により費やされる時間の変動、ネットワーク待ち時間、及び受信405及び復号406などのクライアントの操作に起因して、サーバ260で実行されたビデオゲームから生成されたビデオフレームをストリーミングするときのクライアント210による復号406の完了のタイミングの可能な変動を示す図である。 FIG. 5A illustrates the drift 390 between the clocks of each of the cloud gaming servers 260 and the clients 210, as well as variations in time spent by server operations such as encoding 403 and transmitting 404, network wait, according to one embodiment of the present disclosure. Possible variations in the timing of completion of decoding 406 by client 210 when streaming video frames generated from a video game executed on server 260 due to time and client operations such as receiving 405 and decoding 406. It is a figure which shows.

y軸501はミリ秒単位の時間を示す。x軸502は、時間を分単位で示す。本開示の実施形態では、サーバ260は、圧縮ビデオフレームと共にタイムスタンプ情報をクライアント210に送信するか、またはサーバは、圧縮ビデオフレームとは別にタイムスタンプ情報を送信することができる。
一実施形態では、このタイムスタンプ情報は、サーバ260のピクセルクロックから導出された、対応するビデオフレームのスキャンアウト402の直前のサーバVSYNC信号の発生の時間を表すことができる。つまり、タイムスタンプは、ビデオフレームがすぐに表示されるかどうかなど、対応するビデオフレームの望ましい表示タイミングを示す。
別の実施形態では、このタイムスタンプ情報は、サーバ260のピクセルクロックから導出された、フリップ時間、例えば、対応するビデオフレームのレンダリングの完了の時間を表すことができる。さらに別の実施形態では、サーバVSYNC信号の代わりに通常のフレーム期間が使用され、このタイムスタンプ情報は、サーバ260のピクセルクロックから導出された、対応するフレーム期間の開始または終了の時間を表すことができる。
The y-axis 501 indicates time in milliseconds. The x-axis 502 indicates time in minutes. In embodiments of the present disclosure, the server 260 may send the timestamp information to the client 210 along with the compressed video frames, or the server may send the timestamp information separately from the compressed video frames.
In one embodiment, this timestamp information may represent the time of occurrence of the server VSYNC signal just prior to scanout 402 of the corresponding video frame, derived from the server 260 pixel clock. That is, the timestamp indicates the desired display timing of the corresponding video frame, such as whether the video frame is to be displayed immediately.
In another embodiment, this timestamp information may represent a flip time, eg, the time of completion of rendering of the corresponding video frame, derived from the pixel clock of server 260 . In yet another embodiment, the normal frame period is used in place of the server VSYNC signal, and this timestamp information represents the start or end time of the corresponding frame period derived from the server 260 pixel clock. can be done.

復号406の完了時に、クライアント206は、クライアントのピクセルクロックから導出された時間を記録し、この時間を(サーバから配信された)タイムスタンプから差し引いて、「復号タイムスタンプ」(すなわち、対応するビデオフレームの復号にかかる時間ではなく、復号が完了した時間)を作成する。したがって、復号タイムスタンプは、サーバによって指定された(例えば、タイムスタンプによって示される)望ましい表示時間と比較して、対応するビデオフレームのクライアントでの表示の可用性を示す。図5Aに示されるように、一実施形態では、クライアントによって受信された第1の圧縮ビデオフレームの復号タイムスタンプは、ゼロの値が割り当てられる(すなわち、正規化される)。
また、他のすべての復号タイムスタンプは、正規化を参照して計算される(つまり、減算され、正規化が考慮される)。サーバとクライアントの操作のばらつき、及びネットワーク待ち時間のために、一連の圧縮ビデオフレームに対して測定された復号タイムスタンプは、前述のように、最初の圧縮ビデオフレーム511にゼロの復号タイムスタンプが割り当てられた分布510としてプロットされる場合がある。これらの復号タイムスタンプは、以下でさらに十分に説明する図5Bに示されるように、ヒストグラム515を作成するためにビニングされ得る。測定値520、530、及び540は、クライアントで受信された後続のビデオフレームについて計算された復号タイムスタンプの分布を示している。測定値520、530、及び540の復号タイムスタンプは、第1の圧縮ビデオフレーム511によって定義された正規化を参照して計算される。
Upon completion of decoding 406, client 206 records a time derived from the client's pixel clock and subtracts this time from the timestamp (delivered by the server) to obtain a "decryption timestamp" (i.e., the corresponding video time to complete the decoding, not the time it takes to decode the frame). The decode timestamps thus indicate the availability of the corresponding video frames for display at the client compared to the desired display times specified by the server (eg, indicated by the timestamps). As shown in FIG. 5A, in one embodiment, the decode timestamp of the first compressed video frame received by the client is assigned a value of zero (ie, normalized).
Also, all other decoding timestamps are calculated with reference to normalization (ie subtracted and normalization taken into account). Due to variability in server and client operation, and network latency, the decode timestamps measured for a series of compressed video frames may differ from the first compressed video frame 511 having a zero decode timestamp, as described above. It may be plotted as assigned distribution 510 . These decoding timestamps may be binned to create a histogram 515 as shown in FIG. 5B, which is described more fully below. Measurements 520, 530, and 540 show the distribution of decode timestamps computed for subsequent video frames received at the client. Decoding timestamps for measurements 520 , 530 and 540 are calculated with reference to the normalization defined by first compressed video frame 511 .

図5Bは、本開示の一実施形態による、サーバによって指定された所望の表示時間に対するクライアントによる復号の完了のタイミング(例えば、対応するタイムスタンプ)を示すヒストグラムを含み、クラウドゲームサーバとクライアントでのそれぞれのクロック間のドリフトによる後続のヒストグラムにおける復号のタイムスタンプの増加を示す。特に、後続のビデオフレームについて後で決定される測定値520、530、及び540のそれぞれの復号タイムスタンプは、対応するヒストグラムを作成するためにビニングされ得る。例えば、測定値520にプロットされた復号タイムスタンプは、ヒストグラム525を作成するためにビニングされ得る。同様に、測定530でプロットされた復号タイムスタンプは、ヒストグラム535を作成するためにビニングされ得るもので、測定540でプロットされた復号タイムスタンプは、ヒストグラム545を作成するためにビニングされ得る。ヒストグラム515、525、535、及び545のそれぞれは、固有の特性を有し得る。示されているように、測定値515、525、535、及び545のそれぞれにおける復号タイムスタンプの分布の幅はほぼ類似しているが、後で決定されたヒストグラムは、VSYNC周波数の生成に使用されるサーバクロックとクライアントクロック間のドリフトなどに起因して、それらがそれぞれ右にシフトされるにつれて復号タイムスタンプの増加を示す。 FIG. 5B includes a histogram showing the timing (e.g., corresponding timestamps) of completion of decoding by the client relative to the desired display times specified by the server, according to one embodiment of the present disclosure; The increase in decoding timestamps in subsequent histograms due to drift between respective clocks is shown. In particular, the decoding timestamps of each of the measurements 520, 530, and 540, determined later for subsequent video frames, may be binned to create a corresponding histogram. For example, the decoding timestamps plotted in measurements 520 may be binned to create histogram 525 . Similarly, the decoding timestamps plotted in measurement 530 may be binned to create histogram 535 and the decoding timestamps plotted in measurement 540 may be binned to create histogram 545. Each of histograms 515, 525, 535, and 545 may have unique characteristics. As shown, the width of the distribution of the decoding timestamps in each of the measurements 515, 525, 535, and 545 is approximately similar, but the later determined histogram was used to generate the VSYNC frequencies. show the decoding timestamps increasing as they are each shifted to the right, due to drift between the server and client clocks, etc.

特に、後続のビデオフレームについて後で決定された復号タイムスタンプの測定値520、530、及び540(及び図5Bに示されるそれらの対応するヒストグラム525、535、及び545)は、サーバVSYNC信号311とクライアントVSYNC信号312(すなわち、図3のドリフト390)の間の違いの作用を示している。サーバクロックとクライアントクロックとの間のドリフト390は、対応するVSYNC信号に反映されるように、図5Bに590として示され得る。例えば、サーバとクライアントでVSYNC周波数を生成するために使用される水晶発振器の不正確さによるサーバとクライアントのクロックの10ppm(parts per million)の違いは、サーバとクライアント間で約30分ごとに1フレーム期間(16.7ms)のドリフトをもたらす。ドリフトは、サーバのVSYNC311がクライアントVSYNC信号312よりもわずかに高い周波数であるか低い周波数であるかに応じて、復号タイムスタンプの減少または増加の形をとることができる。 In particular, decoding timestamp measurements 520, 530, and 540 (and their corresponding histograms 525, 535, and 545 shown in FIG. It shows the effect of the difference between the client VSYNC signal 312 (ie drift 390 in FIG. 3). A drift 390 between the server clock and the client clock can be shown as 590 in FIG. 5B as reflected in the corresponding VSYNC signal. For example, a 10 ppm (parts per million) difference in the server and client clocks due to the inaccuracy of the crystal oscillators used to generate the VSYNC frequencies on the server and client will result in a difference of 1 part per million between the server and client approximately every 30 minutes. This results in a frame period (16.7 ms) drift. Drift can take the form of a decrease or increase in decoding timestamps, depending on whether the server's VSYNC 311 is at a slightly higher or lower frequency than the client VSYNC signal 312 .

図5Cは、本開示の一実施形態による、サーバによって指定された所望の表示時間に対するクライアントによる復号の完了のタイミングを示すヒストグラムを含み、クラウドゲームサーバとクライアントでのそれぞれのクロック間の測定されるドリフトの補償後、後続のヒストグラムにおける復号時間の首尾一貫した測定値を示す。一実施形態では、ヒストグラムを動的に再生成することにより、ドリフトの量を計算することができる。ドリフトの量を知ることで、VSYNC周波数の対応する調整とドリフトの除去が可能になり、経時的に516、526、536、546などのヒストグラムが得られる。そのようにして、プロットされた測定値520、530、及び540は、復号タイムスタンプの増加を示さない(例えば、図5Aのx軸501に沿って垂直に上方にシフトする)が、図5Aでは、測定値510とより水平にアライメントしてプロットされる(すなわち、一方向の待ち時間の増加はない)。これは図5Cに反映されている。この図で、ライン590‘は、サーバクロックとクライアントクロックとの間のゼロドリフトを示し、対応するVSYNC信号に反映される(すなわち、ヒストグラム526、536、及び546の一方向の待ち時間の増加を示さない)。 FIG. 5C includes a histogram showing the timing of completion of decoding by the client relative to the desired display time specified by the server, measured between respective clocks at the cloud gaming server and the client, according to one embodiment of the present disclosure. After compensating for drift, the subsequent histograms show consistent measurements of decoding time. In one embodiment, the amount of drift can be calculated by dynamically regenerating the histogram. Knowing the amount of drift allows corresponding adjustment of the VSYNC frequency and removal of the drift, resulting in histograms of 516, 526, 536, 546, etc. over time. As such, the plotted measurements 520, 530, and 540 do not show an increase in decoding timestamps (e.g., shift vertically upward along the x-axis 501 in FIG. 5A), but in FIG. , are plotted in more horizontal alignment with the measurements 510 (ie, no increase in one-way latency). This is reflected in FIG. 5C. In this figure, line 590' shows zero drift between the server clock and the client clock, reflected in the corresponding VSYNC signal (i.e., an increase in one-way latency in histograms 526, 536, and 546). not shown).

別の実施形態では、サーバは、フレーム期間ごとに(フレーム期間はほぼ等しい長さである)圧縮ビデオフレームを送信し、対応するサーバタイムスタンプ(例えば、復号タイムスタンプの計算で使用される)がサーバからクライアントに送信されるのではなく、代わりに、対応するサーバのタイムスタンプ(受信中の対応するビデオフレームの場合)は、以前に計算されたサーバのタイムスタンプ(例えば、受信された前のビデオフレームの場合)にフレーム期間を追加することによってクライアントによって計算される。初期ビデオフレームの初期サーバタイムスタンプ及び/またはタイミング信号は、タイミングプロセスを開始するためにサーバからクライアントに配信され得る。 In another embodiment, the server transmits a compressed video frame every frame period (where the frame periods are of approximately equal length) and the corresponding server timestamp (e.g., used in the decoding timestamp calculation) is Instead of being sent from the server to the client, the corresponding server timestamp (for the corresponding video frame being received) is instead a previously calculated server timestamp (e.g. the previous received calculated by the client by adding the frame duration to the video frame). An initial server timestamp of an initial video frame and/or a timing signal may be delivered from the server to the client to initiate the timing process.

さらに別の実施形態では、ドリフトは、例えば、タイムスタンプ情報とクライアントでのタイムスタンプ情報の受信のタイミングとの間の分散を分析することによって、圧縮ビデオフレームとは別にまたは一緒に、サーバからクライアントに送信されるタイムスタンプ情報を使用して計算される。さらに他の実施形態では、サーバは、サーバVSYNC信号を使用する代わりに、サイズがほぼ等しいフレーム期間を使用し、クライアントVSYNC(またはその数倍ぶん)に対するサーバフレーム期間のドリフトを計算することができる。そのため、サーバのフレーム期間は、ドリフトの計算に応じて調整できる。 In yet another embodiment, the drift is determined, for example, by analyzing the variance between the timestamp information and the timing of receipt of the timestamp information at the client, separately or together with the compressed video frames, from the server to the client. Calculated using timestamp information sent to In yet another embodiment, instead of using the server VSYNC signal, the server can use frame periods of approximately equal size and calculate the drift of the server frame period relative to the client VSYNC (or several multiples thereof). . Therefore, the server frame period can be adjusted according to the drift calculation.

他の実施形態では、2つのデバイス(サーバ及びクライアント)の代わりに、複数の接続されたデバイスがあり、それらのそれぞれは、1つまたは複数の他のデバイスに対してそれらのドリフトを測定することができる。一実施形態では、複数の接続されたデバイスのそれぞれは、独立したピアデバイスであり得る(例えば、サーバデバイスなしで)。別の実施形態では、複数のデバイスは、1つまたは複数のサーバ/クライアントアーキテクチャ、マルチテナントサーバ/クライアント(複数可)アーキテクチャ、またはそれらのいくつかの組み合わせに配置された1つまたは複数のサーバデバイス及び1つまたは複数のクライアントデバイスを含み得る。 In other embodiments, instead of two devices (server and client), there are multiple connected devices, each of which measures their drift relative to one or more other devices. can be done. In one embodiment, each of the multiple connected devices may be an independent peer device (eg, without a server device). In another embodiment, the plurality of devices is one or more server devices arranged in one or more server/client architectures, multi-tenant server/client(s) architecture, or some combination thereof. and one or more client devices.

したがって、2つのデバイス(例えば、サーバとクライアント、またはサーバ、クライアント、及び独立したピアを備えた複数のネットワークデバイス内の任意の2つのデバイス)間のVSYNC信号の周波数間の測定されたドリフトを使用して、VSYNC信号を1つまたは複数のデバイスに調整できる。調整には、対応するフレーム期間の垂直帰線区間のラスタースキャンラインの除去または追加が含まれる場合がある。調整には、対応するクロックのオーバークロックまたはアンダークロックも含まれる場合がある。調整は動的に実行でき、対応するVSYNC信号の調整は時間と共に変化する。いくつかの実施形態では、サーバは、VSYNC信号を使用する代わりに、サイズがほぼ等しいフレーム期間を使用することができ、サーバフレーム期間は、ドリフトの計算に応答して調整することができる。 Therefore, using the measured drift between frequencies of the VSYNC signal between two devices (e.g., a server and a client, or any two devices in a plurality of network devices with server, client, and independent peers) can be used to condition the VSYNC signal to one or more devices. Adjustments may include removing or adding raster scan lines in the vertical blanking interval of the corresponding frame period. Adjustments may also include overclocking or underclocking the corresponding clocks. The adjustment can be performed dynamically, with the corresponding adjustment of the VSYNC signal changing over time. In some embodiments, instead of using the VSYNC signal, the server may use frame periods of approximately equal size, and the server frame period may be adjusted in response to calculating drift.

さらに、図4に示されるようなサーバ及びクライアントのVSYNC信号のアライメントは、対応するクライアントとサーバのVSYNC信号の間に適切なタイミングオフセット430を設けるようにサーバVSYNC信号311を調整することを含み得る。一実施形態では、ヒストグラムデータ(例えば、少なくとも図5A~5Cに示される)を使用して、受信ビデオフレームの所定の数または閾値(例えば、99.99パーセント)が時間内にクライアントに到着するように、タイミングオフセットを決定することができ、クライアントVSYNC信号312の次の適切な発生時に表示される。
すなわち、タイミングオフセット430(例えば、図4に示される)は、クライアントVSYNC信号312の次の発生までの最小時間に間に合うように、ビデオフレームが表示する準備ができている(例えば、受信され、復号され、クライアントでのストリームアウトのための表示バッファに配置される)ようにビデオフレームの最悪に近い場合のシナリオに対応するように調整される。例として、99.99パーセントの閾値は、サーバ260で生成され、クライアント210で表示される1万のビデオフレームのうちの1つの欠落したビデオフレームを提供する。
Further, alignment of the server and client VSYNC signals as shown in FIG. 4 may include adjusting the server VSYNC signal 311 to provide an appropriate timing offset 430 between the corresponding client and server VSYNC signals. . In one embodiment, histogram data (eg, shown in at least FIGS. 5A-5C) is used to ensure that a predetermined number or threshold (eg, 99.99 percent) of received video frames arrive at the client in time. Additionally, a timing offset can be determined and displayed at the next appropriate occurrence of the client VSYNC signal 312 .
That is, the timing offset 430 (eg, shown in FIG. 4) is such that the video frame is ready for display (eg, received and decoded) in time for the minimum time to the next occurrence of the client VSYNC signal 312. and placed in the display buffer for streaming out at the client) to accommodate near-worst-case scenarios for video frames. As an example, a threshold of 99.99 percent provides 1 missing video frame out of 10,000 video frames generated at server 260 and displayed at client 210 .

特に、適切なオフセット430を確立するために、サーバVSYNC信号311の周波数は、ある期間(例えば、1つまたは複数のフレーム期間)にわたって操作されて、対応するサーバVSYNC信号311の1つまたは複数の発生のタイミングを移動させ、それにより、両方のVSYNC信号がそれぞれの周波数を同期すると、クライアントとサーバのVSYNC信号間の相対的なタイミングオフセットをシフトまたは調整することができる。クライアントVSYNC信号312の周波数も同様に操作して、クライアントとサーバのVSYNC信号の間の相対的なタイミングオフセットを代替的に調整することができる。適切なオフセットの決定は、VSYNC信号の対応する動的操作を使用して、動的に、例えば経時的に繰り返し実行することができる。
他の実施形態では、最初にサーバVSYNC信号とクライアントVSYNC信号との間のドリフトを除去し、次にVSYNC信号間の適切なオフセットを確立するのではなく、代わりに、サーバVSYNC信号またはクライアントVSYNC信号の周波数をより頻繁に操作して相対的なタイミングオフセットを調整することによって、オフセットが維持される。さらに他の実施形態では、サーバは、サーバVSYNC信号を使用する代わりに、サイズがほぼ等しいフレーム期間を使用し、サーバフレーム期間またはクライアントVSYNC信号を操作して、クライアントVSYNC(またはその倍数)について、サーバフレーム期間の相対的なタイミングオフセットを調整することができる。
さらに他の実施形態では、2つのデバイス(サーバ及びクライアント)の代わりに、複数の接続されたデバイスがあり、それらのそれぞれは、自らのVSYNC信号を操作して、1つまたは複数の他のデバイスのVSYNCに関してVSYNCの相対的なタイミングオフセットを調整することができる。一実施形態では、複数の接続されたデバイスのそれぞれは、独立したピアデバイスであり得る(例えば、サーバデバイスなしで)。別の実施形態では、複数のデバイスは、1つまたは複数のサーバ/クライアントアーキテクチャ、マルチテナントサーバ/クライアント(複数可)アーキテクチャ、またはそれらのいくつかの組み合わせに配置された1つまたは複数のサーバデバイス及び1つまたは複数のクライアントデバイスを含み得る。
In particular, to establish the appropriate offset 430, the frequency of server VSYNC signal 311 is manipulated over a period of time (eg, one or more frame periods) such that one or more of the corresponding server VSYNC signal 311 By moving the timing of occurrence so that both VSYNC signals synchronize their respective frequencies, the relative timing offset between the client and server VSYNC signals can be shifted or adjusted. The frequency of the client VSYNC signal 312 can be similarly manipulated to alternatively adjust the relative timing offset between the client and server VSYNC signals. Determining the appropriate offset can be performed dynamically, eg, iteratively over time, using corresponding dynamic manipulation of the VSYNC signal.
In other embodiments, rather than first removing the drift between the server VSYNC signal and the client VSYNC signal and then establishing a suitable offset between the VSYNC signals, instead the server VSYNC signal or the client VSYNC signal The offset is maintained by manipulating the frequency of more frequently to adjust the relative timing offset. In yet another embodiment, instead of using the server VSYNC signal, the server uses frame periods of approximately equal size and manipulates the server frame period or the client VSYNC signal such that for the client VSYNC (or multiples thereof): A relative timing offset of the server frame period can be adjusted.
In still other embodiments, instead of two devices (a server and a client), there are multiple connected devices, each of which manipulates its own VSYNC signal to cause one or more other devices to A relative timing offset of VSYNC can be adjusted with respect to VSYNC of . In one embodiment, each of the multiple connected devices may be an independent peer device (eg, without a server device). In another embodiment, the plurality of devices is one or more server devices arranged in one or more server/client architectures, multi-tenant server/client(s) architecture, or some combination thereof. and one or more client devices.

図2A~2Dの様々なクライアントデバイス210及び/またはクラウドゲームネットワーク290(例えば、ゲームサーバ260内)の詳細な説明と共に、図6A~6Cの流れ図600A、600B、及び600Cは、本開示の一実施形態による、一方向の待ち時間を短縮する目的で、クラウドゲームサーバとクライアントとの間でVSYNC信号を調整するための方法を示す。 Flow diagrams 600A, 600B, and 600C of FIGS. 6A-6C, along with a detailed description of various client devices 210 and/or cloud gaming networks 290 (eg, within game server 260) of FIGS. 2A-2D, illustrate one implementation of the present disclosure. FIG. 10 illustrates a method for coordinating VSYNC signals between a cloud gaming server and a client for the purpose of reducing one-way latency, according to aspects. FIG.

特に、図6Aは、本開示の一実施形態による、一方向の待ち時間を短縮する目的で、クラウドゲームサーバとクライアントのVSYNC信号間の相対的なタイミングを調整するための方法を示す。例えば、流れ図600Aを実行して、図4に示される対応するクライアント及びサーバのVSYNC信号間のタイミングを調整することができる。 In particular, FIG. 6A illustrates a method for adjusting relative timing between cloud gaming server and client VSYNC signals for the purpose of reducing one-way latency, according to one embodiment of the present disclosure. For example, flowchart 600A may be executed to adjust the timing between the corresponding client and server VSYNC signals shown in FIG.

601で、この方法は、サーバで、サーバVSYNC信号をサーバVSYNC周波数に設定することを含む。前述のように、サーバVSYNC信号は、サーバVSYNC周波数の複数のフレーム期間中のサーバでの複数のビデオフレームの生成に対応する。例えば、サーバは、ストリーミングモードでビデオゲームを実行し、サーバのCPUは、ストリーミング用に使用可能なグラフィックスパイプラインを使用してゲームレンダリングされたビデオフレームを生成するために、ユーザからの入力コマンドに応答してビデオゲームを実行することができる。 At 601, the method includes setting a server VSYNC signal to a server VSYNC frequency at the server. As previously mentioned, the server VSYNC signal corresponds to the generation of video frames at the server during frame periods of the server VSYNC frequency. For example, a server runs a video game in streaming mode, and the server's CPU responds to input commands from a user to generate game-rendered video frames using the graphics pipeline enabled for streaming. A video game can be played in response.

603で、この方法は、クライアントで、クライアントVSYNC信号をクライアントVSYNC周波数に設定することを含む。クライアントVSYNC信号は、クライアントに関連付けられたディスプレイへのレンダリングに使用される。つまり、クライアントでビデオフレームをレンダリング及び表示するタイミングは、クライアントVSYNC信号を基準にすることができる。例えば、ビデオフレームは、対応するクライアントVSYNC信号の発生から開始して表示できる。 At 603, the method includes, at the client, setting a client VSYNC signal to a client VSYNC frequency. The client VSYNC signal is used for rendering to the display associated with the client. That is, the timing of rendering and displaying video frames on the client can be based on the client VSYNC signal. For example, a video frame can be displayed beginning with the occurrence of the corresponding client VSYNC signal.

一実施形態では、クライアントVSYNC周波数は、サーバVSYNC周波数にほぼ設定される。例えば、サーバは、制御信号をクライアントに送信することができ、制御信号は、クライアントによって、クライアントのVSYNC信号をサーバのVSYNC信号の見かけの周波数に設定するために使用される。つまり、制御信号には、クライアントVSYNC信号が設定されている見かけの周波数が含まれている場合がある。つまり、クライアントVSYNC周波数は、サーバVSYNC周波数と同じ見かけの周波数に設定されるが、サーバとクライアントのクロックに使用される水晶振動子の違いにより、実際のサーバとクライアントのVSYNC周波数は、一致しない場合がある。 In one embodiment, the client VSYNC frequency is set approximately to the server VSYNC frequency. For example, the server can send a control signal to the client, which is used by the client to set the client's VSYNC signal to the apparent frequency of the server's VSYNC signal. That is, the control signal may include the apparent frequency at which the client VSYNC signal is set. That is, the client VSYNC frequency is set to the same apparent frequency as the server VSYNC frequency, but due to differences in the crystals used to clock the server and client, the actual server and client VSYNC frequencies may not match. There is

605で、この方法は、複数のビデオフレームに基づく複数の圧縮ビデオフレームを、サーバVSYNC信号を使用してネットワークを介してサーバからクライアントに送信することを含む。特に、ストリーミングモードでのサーバによるビデオゲームの処理に応答して生成されたゲームレンダリングされたビデオフレームは、圧縮を実行し、複数の圧縮ビデオフレームを生成するように構成されたエンコーダに配信される(例えば、スキャンアウト402される間に)。前述のように、対応するビデオフレームの符号化の開始は、サーバVSYNC信号の対応する発生とアライメントされる場合もあれば、フリップタイムなどの対応する発生の前に発生する場合もある。圧縮ビデオフレームは、ゲームセッション中に表示するためにクライアントに送信及び/または配信される。ビデオフレームの送信は、サーバVSYNC信号にアライメントさせて開始する必要はなく、図4に示すように、対応するビデオフレームの一部または完全なビデオフレームが符号化されるとすぐ、開始することができる。 At 605, the method includes transmitting a plurality of compressed video frames based on the plurality of video frames from the server to the client over the network using the server VSYNC signal. In particular, game-rendered video frames generated in response to processing a video game by a server in streaming mode are delivered to an encoder configured to perform compression and generate a plurality of compressed video frames. (eg, while being scanned out 402). As previously mentioned, the start of encoding of the corresponding video frame may be aligned with the corresponding occurrence of the server VSYNC signal, or may occur before the corresponding occurrence, such as flip time. Compressed video frames are transmitted and/or delivered to the client for display during the game session. Transmission of a video frame need not start aligned with the server VSYNC signal, but can start as soon as a portion of the corresponding video frame or the complete video frame is encoded, as shown in FIG. can.

607で、この方法は、クライアントで、複数の圧縮ビデオフレームを復号及び表示することを含む。前述のように、クライアントは複数の圧縮ビデオフレームを受信し、それらは次いでクライアントのデコーダによって復号される。例えば、クライアントは、対応する圧縮ビデオフレームの1つ以上の符号化されたスライスを受信する。次に、圧縮ビデオフレームが復号され、ディスプレイバッファに配置される。例えば、次に、対応する圧縮ビデオフレームの符号化されたスライスが復号され、復号されたビデオフレームが表示バッファに配置される。復号中に、復号されたスライスを表示用にレンダリングすることができ、レンダリングには、対応するビデオフレームの復号されたスライスから画面スライス(例えば、スキャンライン)を生成することが含まれ、これはその後、クライアントのディスプレイにストリーミングされる。特に、対応するビデオフレームの復号されたスライスのピクセルデータは、クライアントのディスプレイへのストリーミング(例えば、スキャンラインごと)のために、ディスプレイバッファの適切なアドレスに配置され得る。 At 607, the method includes decoding and displaying a plurality of compressed video frames at the client. As mentioned above, the client receives multiple compressed video frames, which are then decoded by the client's decoder. For example, a client receives one or more encoded slices of corresponding compressed video frames. The compressed video frames are then decoded and placed in the display buffer. For example, a corresponding encoded slice of the compressed video frame is then decoded and the decoded video frame is placed in a display buffer. During decoding, the decoded slices can be rendered for display, rendering includes generating screen slices (e.g., scanlines) from the decoded slices of the corresponding video frames, which is It is then streamed to the client's display. In particular, the pixel data of the decoded slices of the corresponding video frames can be placed at appropriate addresses in the display buffer for streaming (eg, scanline by scanline) to the client's display.

610で、方法は、クライアントが複数の圧縮ビデオフレームを受信するときに、1つまたは複数のクライアント操作のタイミングを分析して、サーバVSYNC信号とクライアントVSYNC信号との間の相対的なタイミングを調整することを含む。例えば、サーバとクライアント間の一方向の待ち時間を減らし、一方向の待ち時間の変動を減らす目的で、サーバとクライアントのVSYNC信号間の適切なアライメント(例えば、周波数の同期とオフセットの調整)を実現するために、相対的なタイミングが調整される。一実施形態では、サーバとクライアントのVSYNC信号の間の適切なタイミングは、サーバVSYNC信号とクライアントVSYNC信号の少なくとも1つを調整することによって達成される。サーバとクライアントのVSYNC信号間の相対的なタイミングを調整することについてのより詳細な議論は、以下の図6B~6Cに提供されている。 At 610, the method analyzes the timing of one or more client operations to adjust the relative timing between the server VSYNC signal and the client VSYNC signal as the client receives multiple compressed video frames. including doing. For example, to reduce one-way latency between server and client, and to reduce one-way latency variation, proper alignment (e.g., frequency synchronization and offset adjustment) between VSYNC signals of server and client Relative timing is adjusted for implementation. In one embodiment, proper timing between the server and client VSYNC signals is achieved by coordinating at least one of the server and client VSYNC signals. A more detailed discussion of adjusting the relative timing between the server and client VSYNC signals is provided in FIGS. 6B-6C below.

図6Bは、本開示の一実施形態による、クラウドゲームサーバとクライアントとの間でVSYNC信号の調整を実行するときにVSYNC信号をアライメントさせるための方法を示す流れ図600Bである。例えば、アライメントには、一方向の待ち時間を減らす目的などでの、周波数の同期、及び/またはサーバVSYNC信号とクライアントVSYNC信号間のオフセットの調整が含まれる。特に、図6Bは、図6Aの操作610に概説されているサーバとクライアントのVSYNC信号の間の相対的なタイミングの調整に関する追加の詳細を提供する。 FIG. 6B is a flow diagram 600B illustrating a method for aligning VSYNC signals when performing VSYNC signal coordination between a cloud gaming server and a client, according to one embodiment of the present disclosure. Alignment includes, for example, synchronizing frequencies and/or adjusting offsets between server and client VSYNC signals, such as to reduce one-way latency. In particular, FIG. 6B provides additional detail regarding the relative timing adjustments between the server and client VSYNC signals outlined in operation 610 of FIG. 6A.

611で、この方法は、複数のビデオフレーム(例えば、ゲームでレンダリングされたビデオフレームとしてサーバによって生成された)に関連するタイムスタンプ情報をサーバからクライアントに送信することを含む。一実施形態では、タイムスタンプ情報は、複数の圧縮ビデオフレームと共にクライアントに送信される。別の実施形態では、タイムスタンプ情報は、複数の圧縮ビデオフレームとは別にクライアントに送信される。 At 611, the method includes transmitting timestamp information associated with a plurality of video frames (eg, generated by the server as game-rendered video frames) from the server to the client. In one embodiment, the timestamp information is sent to the client along with the multiple compressed video frames. In another embodiment, the timestamp information is sent to the client separately from the multiple compressed video frames.

特に、タイムスタンプ情報には、サーバのピクセルクロックによって導出された、サーバで生成された対応するビデオフレームの対応するタイムスタンプが含まれる。一実施態様では、対応するビデオフレームのタイムスタンプは、スキャンアウト中(例えば、対応するビデオフレームのスキャンアウトの直前のサーバVSYNC信号の発生)など、対応するビデオフレームをエンコーダにスキャンするために使用されるサーバVSYNC信号の対応する発生時に発生し得る。別の実施態様では、対応するビデオフレームのタイムスタンプは、サーバでの対応するフリップ時間に発生する可能性がある。タイムスタンプは、ネットワークを介した送信なしで、ローカルディスプレイへのスキャンやストリーミングなど、ビデオゲームによって決定された対応するビデオフレームの望ましい表示タイミングを示す。 In particular, the timestamp information includes the corresponding timestamp of the corresponding video frame generated at the server as derived by the server's pixel clock. In one implementation, the timestamp of the corresponding video frame is used to scan the corresponding video frame into the encoder, such as during scanout (e.g., the occurrence of the server VSYNC signal just prior to scanout of the corresponding video frame). may occur on the corresponding occurrence of the server VSYNC signal to be executed. In another implementation, the corresponding video frame timestamps may occur at the corresponding flip times at the server. The timestamp indicates the desired display timing of the corresponding video frame determined by the video game, such as scanning or streaming to a local display, without transmission over the network.

クライアントが圧縮ビデオフレームを受信して復号すると、タイムスタンプ情報が処理され、サーバによって指定された所望の表示時間(タイムスタンプ)と比較して、対応するビデオフレームのクライアントでの表示の可用性を示す復号タイムスタンプが作成される。前に説明したように、クライアントは、対応するビデオフレームの復号の完了時に、クライアントのピクセルクロックから導出された時間を記録する。この復号の完了時間は、サーバから配信された対応するタイムスタンプから差し引かれ、復号タイムスタンプが作成される。さらに、復号される第1の圧縮ビデオフレームは、その後に測定及び/または計算されるすべての復号時間に適用(例えば、加算または減算)され得る正規化係数を使用して、その復号タイムスタンプがゼロに調整されるように正規化され得るもので、その後クライアントで圧縮ビデオフレームを受信できるようにする。 When a client receives and decodes a compressed video frame, the timestamp information is processed to indicate the client's availability for display of the corresponding video frame compared to the desired display time (timestamp) specified by the server. A decryption timestamp is created. As previously explained, the client records the time derived from the client's pixel clock upon completion of decoding of the corresponding video frame. This decryption completion time is subtracted from the corresponding timestamp delivered by the server to produce the decryption timestamp. In addition, the first compressed video frame to be decoded uses a normalization factor that can be applied (e.g., added or subtracted) to all subsequently measured and/or calculated decoding times so that its decoding timestamp is It can be normalized to be adjusted to zero, after which the client can receive the compressed video frame.

613で、この方法は、測定及び/または計算された復号タイムスタンプに基づいて1つまたは複数のヒストグラムを構築することを含む。特に、対応するヒストグラムは、ある期間にわたってクライアントで受信された圧縮ビデオフレームについて測定された復号タイムスタンプ情報をビニングすることによって作成される。上記のように、対応するビデオフレームに対して測定及び正規化された復号タイムスタンプは、サーバタイムスタンプによって示される所望の表示時間と比較して、復号されたビデオフレームがクライアントでいつ表示可能であるかを示す。このようにして、対応するヒストグラムは、複数のビデオフレームに対してサーバによって指定された所望の表示時間に対するクライアントによる復号の完了のタイミングの分布を提供する。したがって、サーバとクライアント間の一方向の待ち時間及び/または一方向の待ち時間の変動を減らす目的で、1つまたは複数の生成されたヒストグラムを使用して、サーバとクライアントのVSYNC信号間の相対的なタイミングを調整し得る。 At 613, the method includes constructing one or more histograms based on the measured and/or calculated decoding timestamps. In particular, a corresponding histogram is created by binning the decode timestamp information measured for compressed video frames received at the client over a period of time. As noted above, the decoded timestamps measured and normalized to the corresponding video frames compare when the decoded video frames are displayable on the client compared to the desired display time indicated by the server timestamps. indicates that there is In this way, the corresponding histogram provides the distribution of the timing of completion of decoding by the client relative to the desired display times specified by the server for multiple video frames. Therefore, in order to reduce the one-way latency and/or variation in one-way latency between the server and client, one or more generated histograms can be used to determine the relative timing can be adjusted.

615で、サーバとクライアントのVSYNC信号間の相対的なタイミングは、サーバVSYNC信号のサーバVSYNC周波数とクライアントVSYNC信号のクライアントVSYNC周波数とを同期させるように調整される。一実施形態では、ドリフトは、対応するヒストグラムを使用して、サーバVSYNC信号とクライアントVSYNC信号との間で決定される。例えば、クライアントが受信したビデオフレームから生成された1つ以上のヒストグラムは、継続的かつ動的に更新される。ヒストグラムを分析して、サーバVSYNC信号とクライアントVSYNC信号の間のドリフトを判別する。例えば、図5Bは、前述のように、複数のヒストグラムをプロットするときにドリフト(例えば、線590によって反映される)がどのように決定され得るかを示している。 At 615, the relative timing between the server and client VSYNC signals is adjusted to synchronize the server VSYNC frequency of the server VSYNC signal with the client VSYNC frequency of the client VSYNC signal. In one embodiment, drift is determined between the server VSYNC signal and the client VSYNC signal using corresponding histograms. For example, one or more histograms generated from video frames received by the client are continuously and dynamically updated. Analyze the histogram to determine the drift between the server VSYNC signal and the client VSYNC signal. For example, FIG. 5B shows how drift (eg, reflected by line 590) can be determined when plotting multiple histograms, as described above.

サーバとクライアントのVSYNC信号間のドリフトを決定するための代替方法を同期に使用できる。例えば、ある期間にわたる復号タイムスタンプの分析を実行して、復号タイミングの増加または減少の傾向を決定することができ、これを使用してドリフトを決定することができる。別の例では、ドリフトは、サーバで生成されたタイムスタンプ情報と、サーバベースのタイムスタンプ情報の受信のクライアントベースのタイミングとの間の分散を分析することによって計算され得る。また、ドリフトは、ピアツーピアアーキテクチャ、サーバ/クライアントアーキテクチャ、またはそれらの組み合わせで配置された、独立したピアデバイス、サーバとクライアントデバイスであり得る、接続された複数のデバイス間で、測定できる。 Alternative methods for determining the drift between the server and client VSYNC signals can be used for synchronization. For example, analysis of decoding timestamps over time can be performed to determine trends in increasing or decreasing decoding timing, which can be used to determine drift. In another example, drift may be calculated by analyzing the variance between server-generated timestamp information and client-based timing of receipt of the server-based timestamp information. Drift can also be measured between multiple connected devices, which can be independent peer devices, server and client devices, arranged in a peer-to-peer architecture, server/client architecture, or a combination thereof.

さらに、サーバからクライアントに送信されるタイムスタンプ情報に基づいて、サーバVSYNC周波数及びクライアントVSYNC周波数のうちの少なくとも1つを調整して、測定されたドリフトを補償することができる。例えば、サーバVSYNC信号またはクライアントVSYNC信号の周波数は、サーバとクライアントのVSYNC信号の実際の周波数がその期間にわたってほぼ同じになるように、一定期間調整できる。このようにして、サーバとクライアントのVSYNC信号の周波数が同期される。 Further, based on timestamp information sent from the server to the client, at least one of the server VSYNC frequency and the client VSYNC frequency can be adjusted to compensate for the measured drift. For example, the frequency of the server VSYNC signal or the client VSYNC signal can be adjusted over a period of time so that the actual frequencies of the server and client VSYNC signals are approximately the same over that period. In this manner, the frequencies of the VSYNC signals of the server and client are synchronized.

前述のように、対応するサーバまたはクライアントのVSYNC信号の周波数は、対応するフレーム期間の垂直帰線区間のラスタースキャンラインを除去または追加することによって調整することができ、VSYNC信号を一定期間調整することができる。調整には、サーバまたはクライアントの対応するピクセルクロックを、一定期間オーバークロックまたはアンダークロックすることが含まれる場合がある。さらに、調整は、対応するVSYNC信号を経時的に適切に、動的に調整することによって、継続的に実行することができる。 As described above, the frequency of the corresponding server or client VSYNC signal can be adjusted by removing or adding raster scan lines in the vertical blanking interval of the corresponding frame period, adjusting the VSYNC signal for a period of time. be able to. Adjustments may include overclocking or underclocking the corresponding pixel clocks of the server or client for a period of time. Further, adjustments can be performed continuously by dynamically adjusting the corresponding VSYNC signal appropriately over time.

617では、タイムスタンプ情報に基づいてサーバVSYNC信号とクライアントVSYNC信号との間の相対オフセットを調整することにより、サーバとクライアントのVSYNC信号の間の相対的なタイミングが調整される。同様に、サーバとクライアントのVSYNC信号間の相対位相は、タイムスタンプに基づいて調整できる。サーバとクライアントのVSYNC信号の周波数が同期されると、サーバとクライアントのVSYNC信号の相対位相またはオフセットの調整をサーバまたはクライアントのVSYNC信号に適用できる。 At 617, the relative timing between the server and client VSYNC signals is adjusted by adjusting the relative offset between the server and client VSYNC signals based on the timestamp information. Similarly, the relative phase between the server and client VSYNC signals can be adjusted based on the timestamps. Once the frequencies of the server and client VSYNC signals are synchronized, relative phase or offset adjustments of the server and client VSYNC signals can be applied to the server or client VSYNC signals.

特に、サーバVSYNC信号とクライアントVSYNC信号の間のオフセットの調整は、対応するヒストグラムで示される最悪に近い場合の復号タイムスタンプに基づいて決定される。例えば、タイミングオフセットは、受信したビデオフレームの所定の数または閾値(例えば、99.99パーセント)が、クライアントVSYNC信号の次の適切な発生時に復号及び表示される時間内にクライアントに到着するように決定できる。このように、サーバとクライアントのVSYNC信号間のタイミングオフセットを調整するときに、ビデオフレームの一方向の待ち時間の最悪に近いシナリオでも考慮され、最悪に近い場合のシナリオのビデオフレームが受信され、復号され、クライアントディスプレイへのストリームアウトのためにディスプレイバッファでペース調整される。適切なタイミングオフセットを決定することは、図8A~8Bに関連してさらに説明される。 In particular, the adjustment of the offset between the server VSYNC signal and the client VSYNC signal is determined based on the near-worst-case decoding timestamps shown in the corresponding histograms. For example, the timing offset is such that a predetermined number or threshold (e.g., 99.99 percent) of received video frames arrive at the client within the time to be decoded and displayed at the next appropriate occurrence of the client VSYNC signal. can decide. Thus, even near-worst-case scenarios of one-way latency of video frames are taken into account when adjusting the timing offset between the server and client VSYNC signals, and near-worst-case scenario video frames are received; Decoded and paced in the display buffer for streaming out to the client display. Determining appropriate timing offsets is further described in connection with FIGS. 8A-8B.

前述のように、サーバとクライアントのVSYNC信号間のタイミングオフセットの調整は、サーバVSYNC信号またはクライアントVSYNC信号を1つまたは複数のフレーム期間で調整することによって実現できる。例えば、タイミングオフセットの調整は、対応するサーバまたはクライアントのVSYNCの周波数を1つまたは複数のフレーム期間調整することによって実行できる。特に、対応するサーバまたはクライアントのVSYNC信号の周波数は、対応するフレーム期間の垂直帰線区間のラスタースキャンラインを除去または追加するか、サーバまたはクライアントの対応するピクセルクロックをオーバークロックまたはアンダークロックすることによって調整できる。 As previously mentioned, adjusting the timing offset between the server and client VSYNC signals can be accomplished by adjusting the server VSYNC signal or the client VSYNC signal in one or more frame periods. For example, adjusting the timing offset can be performed by adjusting the frequency of the corresponding server or client VSYNC by one or more frame periods. In particular, the frequency of the corresponding server's or client's VSYNC signal can be adjusted by removing or adding raster scan lines in the vertical blanking interval of the corresponding frame period, or by overclocking or underclocking the server's or client's corresponding pixel clock. Adjustable.

いくつかの実施形態では、最初にサーバとクライアントのVSYNC信号の間のドリフトを除去し、次にVSYNC信号間の適切なオフセットを確立するのではなく、代わりに、サーバVSYNC信号またはクライアントVSYNC信号の周波数をより頻繁に操作して相対的なタイミングオフセットを調整することによって、タイミングオフセットが維持される。つまり、サーバVSYNC信号とクライアントVSYNC信号の間のオフセットの調整は、対応するヒストグラムによって示される最悪に近い場合の復号タイムスタンプに基づいて継続的に決定され、ヒストグラムが、タイミングオフセットの頻繁な決定と操作で短い時間にわたり発生され得る。 In some embodiments, rather than first removing the drift between the server and client VSYNC signals and then establishing a suitable offset between the VSYNC signals, instead of either the server VSYNC signal or the client VSYNC signal The timing offset is maintained by manipulating the frequency more frequently to adjust the relative timing offset. That is, the adjustment of the offset between the server VSYNC signal and the client VSYNC signal is continuously determined based on the near-worst-case decoding timestamps indicated by the corresponding histograms, which are used to determine frequent determinations of the timing offsets. It can be generated over a short period of time in operation.

図6Cは、本開示の一実施形態による、一方向の待ち時間を短縮する目的で、クラウドゲームサーバとクライアントとの間でVSYNC信号の調整を実行するときにVSYNC信号をアライメントさせるための別の方法を示す流れ図600Cである。前述のように、アライメントには、一方向の待ち時間を減らす目的などでの、周波数の同期、及び/またはサーバVSYNC信号とクライアントVSYNC信号間のオフセットの調整が含まれる。特に、図6Cは、図6Aの操作610に概説されているサーバとクライアントのVSYNC信号の間の相対的なタイミングの調整に関する追加の詳細を提供する。 FIG. 6C illustrates another method for aligning VSYNC signals when performing VSYNC signal coordination between a cloud gaming server and a client for the purpose of reducing one-way latency, according to an embodiment of the present disclosure. Figure 600C is a flow diagram illustrating a method; As previously mentioned, alignment includes frequency synchronization and/or adjustment of offsets between server and client VSYNC signals, such as to reduce one-way latency. In particular, FIG. 6C provides additional detail regarding the relative timing adjustments between the server and client VSYNC signals outlined in operation 610 of FIG. 6A.

具体的には、操作621及び623を含め、操作620で概説されるように、サーバ及びクライアントのVSYNC信号間のドリフトを決定するための代替方法が同期のために使用される。特に、621で、この方法は、サーバからクライアントにタイミング情報を定期的に送信することを含む。例えば、サーバピクセルクロックから決定されるタイミング情報は、対応するフレーム期間の開始、対応するフレーム期間の時間の長さ、エンコーダへのビデオフレームのスキャンアウトタイミング、対応するビデオフレームのフリップ時間などを含み得る。 Specifically, an alternative method for determining drift between the server and client VSYNC signals is used for synchronization, as outlined in operation 620, including operations 621 and 623. FIG. Specifically, at 621, the method includes periodically transmitting timing information from the server to the client. For example, the timing information determined from the server pixel clock includes the start of the corresponding frame period, the length of time of the corresponding frame period, the scanout timing of the video frame to the encoder, the flip time of the corresponding video frame, etc. obtain.

また、623で、タイミング情報が分析されて、サーバVSYNC信号とクライアントVSYNC信号との間のドリフトが決定される。例えば、ドリフトは、サーバで生成されたタイミング情報と、サーバベースのタイミング情報の受信のクライアントベースのタイミングとの間の分散を分析することによって計算され得る。他の実施形態では、ドリフトは、ビデオフレームを生成するために使用されるサーバフレーム期間について測定され得るもので、サーバフレーム期間のドリフトは、クライアントVSYNC信号、またはその数倍ぶんを参照して測定される。また、ドリフトは、ピアツーピアアーキテクチャ、サーバ/クライアントアーキテクチャ、またはそれらの組み合わせで配置された、独立したピアデバイス、サーバとクライアントデバイスであり得る、接続された複数のデバイス間で、測定できる。 Also, at 623, the timing information is analyzed to determine the drift between the server VSYNC signal and the client VSYNC signal. For example, drift may be calculated by analyzing the variance between server-generated timing information and client-based timing of receipt of the server-based timing information. In other embodiments, the drift may be measured for the server frame period used to generate the video frames, where the server frame period drift is measured with reference to the client VSYNC signal, or some multiple thereof. be done. Drift can also be measured between multiple connected devices, which can be independent peer devices, server and client devices, arranged in a peer-to-peer architecture, server/client architecture, or a combination thereof.

ドリフトが決定されると、サーバVSYNC信号またはクライアントVSYNC信号の周波数を調整してドリフトを補償することができ、調整は一定期間にわたって適用することができる。前述のように、サーバとクライアントのVSYNC信号の周波数間で測定されたドリフトを使用して、サーバまたはクライアントで一定期間VSYNC信号を調整することができる。VSYNC信号の調整には、対応するフレーム期間の垂直帰線区間のラスタースキャンラインの除去または追加が含まれる場合があるか、または、サーバまたはクライアントの対応するピクセルクロックのオーバークロックまたはアンダークロックが含まれる場合がある。 Once the drift is determined, the frequency of the server VSYNC signal or the client VSYNC signal can be adjusted to compensate for the drift, and the adjustments can be applied over a period of time. As described above, the measured drift between the frequencies of the server and client VSYNC signals can be used to adjust the VSYNC signal at the server or client over time. Adjusting the VSYNC signal may include removing or adding raster scan lines in the vertical blanking interval of the corresponding frame period, or overclocking or underclocking the corresponding pixel clocks of the server or client. Sometimes.

サーバとクライアントのVSYNC信号の周波数間のドリフトを補償した後、サーバとクライアントのVSYNC信号間の相対的な位相またはオフセットは、タイムスタンプ情報に基づいて調整でき、調整は、サーバVSYNC信号またはクライアントVSYNC信号に適用できる。特に、相対位相またはオフセットの調整は、サーバで生成されたビデオフレームに関連付けられたタイムスタンプ情報に基づいて実行される。 After compensating for drift between frequencies of the server and client VSYNC signals, the relative phase or offset between the server and client VSYNC signals can be adjusted based on the timestamp information, the adjustment being either the server VSYNC signal or the client VSYNC signal. applicable to signals. In particular, relative phase or offset adjustments are performed based on timestamp information associated with server-generated video frames.

特に、611で、タイムスタンプ情報がサーバからクライアントに送信される。実施形態では、タイムスタンプ情報は、複数のビデオフレームと共に送信されるか、または複数のビデオフレームとは別に送信される。流れ図600Cの操作611は、図6Bの流れ図600Bに関連して以前に説明された。例えば、サーバピクセルクロックによって決定されるタイムスタンプ情報は、対応するビデオフレームをエンコーダにスキャンするために使用されるサーバVSYNC信号の対応する発生のタイミングを示し得る(例えば、スキャンアウト中)。別の実施態様では、タイムスタンプ情報は、対応するビデオフレームの対応するフリップ時間のタイミングを示し得る。 Specifically, at 611, timestamp information is sent from the server to the client. In embodiments, the timestamp information is transmitted with the plurality of video frames or transmitted separately from the plurality of video frames. Operation 611 of flowchart 600C was previously described in conjunction with flowchart 600B of FIG. 6B. For example, the timestamp information determined by the server pixel clock may indicate the timing of the corresponding occurrence of the server VSYNC signal used to scan the corresponding video frame into the encoder (eg, during scanout). In another implementation, the timestamp information may indicate the timing of the corresponding flip times of the corresponding video frames.

前述のように、タイムスタンプ情報は、復号タイムスタンプを作成するためにクライアントによって使用され、各々は、サーバによって指定された所望の表示時間(タイムスタンプ)と比較して、対応するビデオフレームのクライアントでの表示の可用性を示す。復号タイムスタンプは、対応するサーバベースのタイムスタンプ情報から、対応するビデオフレームの復号の完了を示すクライアントでの時間を差し引くことによって導出することができる。正規化は、復号タイムスタンプを生成するときにも適用できる。 As mentioned above, the timestamp information is used by the client to create decoding timestamps, each of which is compared to the desired display time (timestamp) specified by the server for the client's corresponding video frame. Indicate the availability of the display in . The decoding timestamp can be derived by subtracting the time at the client indicating completion of decoding of the corresponding video frame from the corresponding server-based timestamp information. Normalization can also be applied when generating decoding timestamps.

ドリフトはタイムスタンプ情報を使用せずに実行できるため、例えば複数のヒストグラムを生成するために、特定の時間に1つのヒストグラムが生成され、サーバとクライアントのVSYNC信号間のタイミングオフセットを調整するために使用される。つまり、ヒストグラムは、ヒストグラムに含まれる復号タイムスタンプを拡張することによって更新できるが、異なる期間にわたる複数のヒストグラムを生成する必要はない。特に、613-Aでは、ヒストグラムは復号タイムスタンプに基づいて作成される。流れ図600Cの操作613-Aは、図6Bの流れ図600Bに関連して前述した操作613と同様である。例えば、復号タイムスタンプ情報は、経時的にクライアントによって受信及び復号されたビデオフレームに対してビニングされ、サーバによって指定された所望の表示時間(サーバタイムスタンプ情報など)に対するクライアントによる復号の完了のタイミングの分布を提供する。 Drift can be performed without using timestamp information, so for example to generate multiple histograms, one histogram is generated at a particular time and the used. That is, the histogram can be updated by extending the decoding timestamps contained in the histogram, but there is no need to generate multiple histograms over different time periods. Specifically, at 613-A, a histogram is created based on the decoding timestamps. Operation 613-A of flow diagram 600C is similar to operation 613 described above with respect to flow diagram 600B of FIG. 6B. For example, the decoding timestamp information is binned against the video frames received and decoded by the client over time, timing the completion of decoding by the client relative to the desired display time specified by the server (such as the server timestamp information). provides the distribution of

617で、サーバとクライアントのVSYNC信号の間の相対的な位相またはオフセットは、タイムスタンプ情報に基づいて調整され得るもので、調整は、サーバVSYNC信号またはクライアントVSYNC信号に適用され得る。流れ図600Cの操作617は、図6Bの流れ図600Bに関連して以前に説明された。特に、オフセットの調整は、継続的に更新されるヒストグラムによって示される最悪に近い場合の復号タイムスタンプに基づいて決定される。例えば、タイミングオフセットは、受信したビデオフレームの所定の数の閾値(例えば、99.99パーセント)が、クライアントVSYNC信号の次の適切な発生時に復号及び表示される時間内にクライアントに到着するように決定できる。適切なタイミングオフセットの決定は、図8A~8Bに関連してさらに説明される。 At 617, the relative phase or offset between the server and client VSYNC signals may be adjusted based on the timestamp information, and the adjustment may be applied to the server VSYNC signal or the client VSYNC signal. Operation 617 of flowchart 600C was previously described in conjunction with flowchart 600B of FIG. 6B. In particular, offset adjustments are determined based on near-worst-case decoding timestamps as indicated by continuously updated histograms. For example, the timing offset is such that a predetermined number of threshold (e.g., 99.99 percent) of received video frames arrive at the client within the time to be decoded and displayed at the next appropriate occurrence of the client VSYNC signal. can decide. Determining appropriate timing offsets is further described in connection with FIGS. 8A-8B.

サーバとクライアントのVSYNC信号間のタイミングオフセットの調整は、サーバまたはクライアントのVSYNC信号を1つ以上のフレーム期間調整することによって実行される。例えば、調整は、対応するフレーム期間の垂直帰線区間のラスタースキャンラインを除去または追加することによって、またはサーバまたはクライアントの対応するピクセルクロックをオーバークロックまたはアンダークロックすることによって、1つまたは複数のフレーム期間のサーバまたはクライアントのVSYNC信号の周波数を調整することによって実行できる。 Adjustment of the timing offset between the server and client VSYNC signals is performed by adjusting the server or client VSYNC signals by one or more frame periods. For example, adjustments may be made to one or more frames by removing or adding raster scanlines in the vertical blanking interval of the corresponding frame period, or by overclocking or underclocking the corresponding pixel clocks of the server or client. This can be done by adjusting the frequency of the server or client VSYNC signal for a period of time.

いくつかの実施形態では、図6Cのドリフト操作620は、VSYNC信号間に適切なオフセットを確立する場合、実行されない。代わりに、タイミングオフセットは、サーバVSYNC信号またはクライアントVSYNC信号の周波数をより頻繁に操作して、相対的なタイミングオフセットを調整することによって維持される。すなわち、サーバVSYNC信号とクライアントVSYNC信号との間のオフセットへの調整は、対応するヒストグラムによって示される最悪に近い場合の復号タイムスタンプに基づいて継続的に決定され、オフセットへの調整は、短縮された間隔期間で実行され得る。 In some embodiments, drift operation 620 of FIG. 6C is not performed when establishing an appropriate offset between VSYNC signals. Instead, the timing offset is maintained by manipulating the frequency of the server VSYNC signal or the client VSYNC signal more frequently to adjust the relative timing offset. That is, adjustments to the offset between the server VSYNC signal and the client VSYNC signal are continuously determined based on the near-worst-case decoding timestamps indicated by the corresponding histograms, and adjustments to the offset are shortened. can be performed at intervals of time.

図2A~2Dの様々なクライアントデバイス210及び/またはクラウドゲームネットワーク290(例えば、ゲームサーバ260内)の詳細な説明と共に、図7の流れ図700は、本開示の一実施形態による、クラウドゲームサーバとクライアントとの間の一方向の待ち時間を短縮するための代替の方法を示している。特に、流れ図700は、本開示の一実施形態による、サーバでの圧縮ビデオフレームの生成に関連してクライアントVSYNC信号を調整するための方法を示し、ビデオフレームは、同様のサイズのフレーム期間中に生成される。 Along with a detailed description of the various client devices 210 and/or cloud gaming network 290 (eg, within game server 260) of FIGS. 2A-2D, flowchart 700 of FIG. Figure 3 shows an alternative method for reducing one-way latency to and from the client; In particular, flowchart 700 illustrates a method for adjusting a client VSYNC signal in connection with generating compressed video frames at a server, where the video frames are generated during similarly sized frame periods, according to one embodiment of the present disclosure. generated.

710で、方法は、フレーム期間がほぼ等しいサイズである、複数のフレーム期間の間にサーバで複数のビデオフレームを生成することを含む。一実施形態では、ビデオフレームをクライアントにストリーミングするときにサーバに表示する必要がないので、クラウドゲームサーバは、サーバVSYNC信号をオフにするか、または実装しないことができる。代わりに、サーバは、ビデオゲームを処理するときにゲームレンダリングされたビデオフレームの生成中のタイミングに使用される規則的(例えば、周期的)またはほぼ規則的な信号を利用することができる。例えば、サーバは、サーバのVSYNC信号を使用する代わりに、サイズがほぼ等しいフレーム期間を使用する場合がある。複数のビデオフレームの生成は、ゲームレンダリングされたビデオフレームが対応するフレーム期間内に生成されるように、複数のフレーム期間内に発生する。サーバは、ストリーミングモードでビデオゲームを実行し、サーバのCPUは、グラフィックスパイプラインを使用してゲームレンダリングされたビデオフレームを生成するために、ユーザからの入力コマンドに応答してビデオゲームを実行することができる。 At 710, the method includes generating multiple video frames at the server during multiple frame periods, where the frame periods are of approximately equal size. In one embodiment, the cloud gaming server may turn off or not implement the server VSYNC signal as it does not need to be displayed on the server when the video frames are streamed to the client. Alternatively, the server may utilize regular (eg, periodic) or nearly regular signals used for timing during generation of game-rendered video frames when processing a video game. For example, instead of using the server's VSYNC signal, the server may use frame periods of approximately equal size. The generation of the multiple video frames occurs within multiple frame periods such that the game-rendered video frames are generated within the corresponding frame periods. The server runs the video game in streaming mode, and the server's CPU runs the video game in response to input commands from the user to generate game-rendered video frames using the graphics pipeline. be able to.

720で、この方法は、クライアントで、クライアントVSYNC信号をクライアントVSYNC周波数に設定することを含む。クライアントVSYNC信号は、クライアントに関連付けられたディスプレイへのレンダリングに使用される。クライアントでビデオフレームをレンダリング及び表示するタイミングは、クライアントVSYNC信号を基準にすることができ、対応するビデオフレームは、対応するクライアントVSYNC信号の発生から開始して表示できる。 At 720, the method includes setting the client VSYNC signal to the client VSYNC frequency at the client. The client VSYNC signal is used for rendering to the display associated with the client. The timing of rendering and displaying video frames at the client can be referenced to the client VSYNC signal, and the corresponding video frames can be displayed starting with the occurrence of the corresponding client VSYNC signal.

730で、方法は、複数のビデオフレームに基づく複数の圧縮ビデオフレームをサーバからクライアントに送信することを含む。特に、ゲームレンダリングされたビデオフレームは、サーバのエンコーダに(例えば、スキャンアウト402中に)配信され、エンコーダは、ゲームレンダリングされたビデオフレームに対して圧縮を実行するように構成される。複数の圧縮ビデオフレームは、ゲームセッション中などに表示するためにクライアントに送信(例えばストリーミング)される。圧縮ビデオフレームの送信は、フレーム期間と一致している必要はなく、その結果、送信は、対応するビデオフレームの一部であるとすぐに、または完全なビデオフレームが符号化されたときに、行われる可能性がある。 At 730, the method includes transmitting a plurality of compressed video frames based on the plurality of video frames from the server to the client. In particular, game-rendered video frames are delivered to the server's encoder (eg, during scanout 402), and the encoder is configured to perform compression on the game-rendered video frames. Multiple compressed video frames are sent (eg, streamed) to a client for display, such as during a game session. The transmission of a compressed video frame need not coincide with the frame period, so that transmission can occur as soon as it is part of the corresponding video frame, or when a complete video frame has been encoded. may be done.

740で、この方法は、クライアントで、複数の圧縮ビデオフレームを復号及び表示することを含む。前述のように、クライアントは複数の圧縮ビデオフレームを受信して復号する。例えば、クライアントは、対応する圧縮ビデオフレームの1つまたは複数の符号化されたスライスを受信でき、それを復号する。復号されたビデオフレームは、ディスプレイバッファに配置される。復号中に、復号されたスライスを表示用にレンダリングすることができ、レンダリングには、対応するビデオの復号されたスライスから画面スライス(例えば、スキャンライン)を生成することが含まれ、これはその後、クライアントのディスプレイにストリーミングされる。例えば、対応するビデオフレームの復号されたスライスのピクセルデータは、ディスプレイへのストリーミング(例えば、スキャンラインごと)のために、ディスプレイバッファの適切なアドレスに配置され得る。 At 740, the method includes decoding and displaying the plurality of compressed video frames at the client. As described above, the client receives and decodes multiple compressed video frames. For example, a client can receive one or more encoded slices of a corresponding compressed video frame and decode it. The decoded video frames are placed in a display buffer. During decoding, the decoded slices can be rendered for display, rendering involves generating screen slices (e.g., scanlines) from the corresponding decoded slices of video, which are then , streamed to the client's display. For example, the pixel data of the decoded slices of the corresponding video frames may be placed at appropriate addresses in the display buffer for streaming (eg, scanline by scanline) to the display.

750では、この方法は、複数のフレーム期間に関連するタイミング情報をサーバからクライアントに送信することを含む。タイミング情報は、各フレーム期間がサーバでいつ始まるかを示している場合がある。フレーム期間はほぼ等しいため、クライアントに配信される1つのフレーム期間のタイミング(サーバのタイムスタンプなど)により、クライアントは各フレーム期間のタイミングを追跡できる(例えば、最後に計算されたタイムスタンプに定期的にフレーム期間を追加する)。
このようにして、クライアントは、サーバから受信した、またはクライアントで計算したタイミング情報を、クライアントで受信した対応するビデオフレームに相関させることができる。クライアントで決定されたタイミング情報は、ビデオフレームが生成され、理論的にスキャンまたはローカルディスプレイへストリーミングされたときなど、クライアントで実行されているビデオゲームによって決定された対応するビデオフレームの所望の表示タイミングの指標を、ネットワーク経由での送信なしで与えることができる。
At 750, the method includes transmitting timing information associated with multiple frame periods from the server to the client. Timing information may indicate when each frame period begins at the server. Since the frame periods are approximately equal, the timing of one frame period delivered to the client (e.g. server's timestamp) allows the client to track the timing of each frame period (e.g. periodically to the last computed timestamp). ).
In this manner, the client can correlate timing information received from the server or calculated at the client with corresponding video frames received at the client. Client-determined timing information is the desired display timing of the corresponding video frame as determined by the video game running on the client, such as when the video frame was generated and theoretically scanned or streamed to a local display. can be given without transmission over the network.

760で、方法は、1つまたは複数のクライアント操作のタイミングを分析して、クライアントVSYNC信号の相対的なタイミングを調整し、クライアントが複数の圧縮ビデオフレームを受信するときにサーバで複数の圧縮ビデオフレームを生成することを含む。特に、サーバフレーム期間(例えば、持続時間)またはクライアントVSYNC信号は、クライアントVSYNC信号(またはその数倍ぶん)に関してサーバフレーム期間の相対的なタイミングオフセットを調整するように操作され得る。 At 760, the method analyzes the timing of one or more client operations to adjust the relative timing of the client VSYNC signals and reproduces the multiple compressed video frames at the server when the client receives the multiple compressed video frames. Including generating frames. In particular, the server frame period (eg, duration) or the client VSYNC signal can be manipulated to adjust the relative timing offset of the server frame period with respect to the client VSYNC signal (or multiples thereof).

例えば、クライアントが計算したサーバフレーム期間とクライアントVSYNC信号との間のドリフトを決定することができる。ドリフトの補償は、同期のためにサーバフレーム期間またはクライアントVSYNC信号に適用できる。例えば、クライアントでは、クライアントVSYNC信号の周波数は、対応するフレーム期間の垂直平衡間隔のラスタースキャンラインを除去または追加することによって調整することができ、VSYNC信号を一定期間調整することができる。また、調整には、クライアントのピクセルクロックのオーバークロックまたはアンダークロックが含まれる場合がある。さらに、相対オフセットを調整するために、1つまたは複数のヒストグラムをクライアントで作成することができ、oは、サーバでビデオフレームが生成されたときと比較して、復号されたビデオフレームがクライアントでいつ利用可能かを示す(例えば、必要な表示時間)。ヒストグラムは、ビデオフレームがいつ生成され、表示されるかを示すためにクライアントが決定したフレーム期間を使用するなど、わずかな変更を加えて、前述と同じ手法を使用して作成できる。 For example, the drift between the client-calculated server frame period and the client VSYNC signal can be determined. Drift compensation can be applied to the server frame period or the client VSYNC signal for synchronization. For example, at the client, the frequency of the client VSYNC signal can be adjusted by removing or adding raster scan lines in the vertical balance interval of the corresponding frame period, and the VSYNC signal can be adjusted for a period of time. Adjustments may also include overclocking or underclocking the client's pixel clock. In addition, one or more histograms can be created on the client to adjust the relative offsets, o determining how much the decoded video frame will look like on the client compared to when the video frame was generated on the server. Indicate when available (e.g. required display time). Histograms can be constructed using the same technique as described above, with minor modifications such as using client-determined frame periods to indicate when video frames are generated and displayed.

図8Aは、ビデオフレームの復号タイムスタンプの分布を提供するヒストグラム850の構築及び使用を示す図800Aであり、前述のように、サーバによって指定された所望の表示時間に対するビデオフレームのクライアントでの表示の可用性を示し、ヒストグラムは、本開示の一実施形態に従って、サーバとクライアントでのVSYNC信号間の オフセットの調整を決定するために構成される。示されるように、ビデオフレームはサーバで生成され(操作401)、スキャンアウトは、圧縮(操作403)のためにエンコーダ(操作402)にゲームレンダリングされたビデオフレームで実行され、クライアントに送信される(操作404)。クライアントは、符号化されたビデオフレームを受信し(操作405)、符号化されたビデオフレームを解凍し(操作406)、表示のためにビデオフレームをレンダリングする(例えば、操作407において、復号されたビデオフレームをスキャンラインに変換する)。 FIG. 8A is a diagram 800A illustrating the construction and use of a histogram 850 that provides the distribution of the decoding timestamps of video frames and client display of video frames for desired display times specified by the server, as described above. A histogram is constructed to determine the adjustment of the offset between the VSYNC signals at the server and client, according to one embodiment of the present disclosure. As shown, video frames are generated at the server (operation 401) and scanout is performed on the game-rendered video frames to the encoder (operation 402) for compression (operation 403) and sent to the client. (operation 404). The client receives the encoded video frames (operation 405), decompresses the encoded video frames (operation 406), and renders the video frames for display (e.g., the decoded video frames in operation 407). convert video frames to scanlines).

前述のように、サーバベースのタイムスタンプ情報は、オフセットの決定に使用される1つ以上のヒストグラムを作成する目的で、圧縮/符号化されたビデオフレームに関連してクライアントに配信される。タイムスタンプ情報は、サーバによって指定された望ましい表示時間を提供する。サーバは、フレーム期間ごとに圧縮ビデオフレームを送信しない場合がある。特に、ヒストグラムは、サーバによって指定された所望の表示時間(例えば、サーバベースのタイムスタンプ情報)と比較して、ビデオフレームのクライアントでの表示の可用性を示す復号タイムスタンプを含み得る。サーバのタイムスタンプとクライアントのタイムスタンプは、同期されていない個々のクロックによって定義される可能性があるため、復号のタイムスタンプを正規化すると便利な場合がある。例えば、正規化には、すべての復号タイムスタンプから最初の復号タイムスタンプの値を減算することが含まれる場合がある。これにより、最初の復号タイムスタンプはゼロになり、後続のすべてのタイムスタンプはそれに関連する。 As noted above, server-based timestamp information is delivered to the client in association with the compressed/encoded video frames for the purpose of creating one or more histograms used to determine offsets. The timestamp information provides the desired display time specified by the server. A server may not send a compressed video frame every frame period. In particular, the histogram may include decoded timestamps that indicate the availability of video frames for display at the client compared to desired display times specified by the server (eg, server-based timestamp information). Since the server and client timestamps may be defined by individual unsynchronized clocks, it may be useful to normalize the decoding timestamps. For example, normalization may include subtracting the value of the first decoded timestamp from all decoded timestamps. This causes the first decoding timestamp to be zero and all subsequent timestamps to be associated with it.

図8Aに示されるように、構築されたヒストグラム850は、サーバVSYNC信号とクライアントVSYNC信号との間の適切なオフセットを決定するために使用され得る。前述のように、ヒストグラムは復号タイムスタンプの分布を提供する。これは、所望の表示時間に対する表示の可用性を示す。サーバとクライアントとの間のVSYNCオフセット430は、受信されたビデオフレームの所定の数または閾値(例えば、99.99パーセント)がクライアントに到着し、クライアントVSYNC信号の次の適切な発生時に表示されるように時間内に復号されるように存在する。一実施形態では、残りの数(例えば、0.01パーセント)は、表示するには遅すぎて、漏れる可能性がある。言い換えれば、VSYNCオフセット430は、レンダリングされたビデオフレームを受信、復号、及び表示するときに、最悪に近い場合の待ち時間に対応する。
図8Aの符号化403、送信404、受信405、及び復号406は、最悪に近いフレーム(例えば、99.99パーセンタイル)を示している。適切なVSYNCオフセット430が確立されている場合、このフレームの復号とその表示の間にマージンはない。1つまたは複数のクライアントバッファ820は、符号化403、送信404、受信405、及び復号406が早い段階でヒストグラム(例えば、25パーセンタイル未満)においてビニングされるように、復号タイムスタンプが低い(例えば、一方向の待ち時間が最も短いことを示す)ビデオフレームに対応するように実装できる。この特定の例では、4つのバッファが必要で、3つは復号時のフレーム用(3つのバッファ820)、もう1つは現在表示されているフレーム用(図示せず)である。
As shown in FIG. 8A, the constructed histogram 850 can be used to determine the appropriate offset between the server VSYNC signal and the client VSYNC signal. As mentioned above, the histogram provides the distribution of decoding timestamps. This indicates the availability of the display for the desired display time. The VSYNC offset 430 between server and client is indicated when a predetermined number or threshold (eg, 99.99 percent) of received video frames have arrived at the client and the next appropriate occurrence of the client VSYNC signal. exist to be decoded in time. In one embodiment, the remaining number (eg, 0.01 percent) is too late to be displayed and may be missed. In other words, the VSYNC offset 430 corresponds to near-worst-case latency when receiving, decoding, and displaying a rendered video frame.
Encoding 403, transmission 404, reception 405, and decoding 406 of FIG. 8A illustrate near-worst frames (eg, the 99.99th percentile). With the proper VSYNC offset 430 established, there is no margin between decoding this frame and displaying it. One or more client buffers 820 may have a low decode timestamp (e.g., less than the 25th percentile) such that encode 403, send 404, receive 405, and decode 406 are binned early in the histogram (e.g., below the 25th percentile). (which exhibits the lowest latency in one direction). In this particular example, four buffers are required, three for the frames being decoded (three buffers 820) and one for the currently displayed frame (not shown).

一連の理論的なタイミング図850Aから850Dが、クライアントVSYNC信号312のために提供され、タイミング図850C(及び付随するディスプレイ407)は、理想的なクライアントVSYNC312Cを示している。クロックまたはタイムスタンプの直接同期がないため(例えば、ユニバーサルクロックなどのサードパーティのタイミングメカニズムを介して)、オフセット430は直接設定されず、代わりに、現在のクライアントVSYNC312は、ヒストグラムの最悪に近い場合のタイミング情報を使用して調整され、前述のように理想的なクライアントVSYNCタイミング312Cになる。または、前述のように、サーバVSYNCを調整して適切なオフセットを作成することもできる。 A series of theoretical timing diagrams 850A through 850D are provided for client VSYNC signal 312, and timing diagram 850C (and accompanying display 407) shows ideal client VSYNC 312C. Since there is no direct clock or timestamp synchronization (e.g., via a third party timing mechanism such as a universal clock), the offset 430 is not set directly, instead the current client VSYNC 312 uses the near worst case of the histogram , resulting in ideal client VSYNC timing 312C as described above. Alternatively, the server VSYNC can be adjusted to create the appropriate offsets, as described above.

サーバのタイムスタンプ情報は、クライアントによって収集及び/または受信される。前述のように、タイムスタンプ情報には、対応するビデオフレームが生成された時刻が含まれる場合がある(例えば、フリップ時間、スキャンアウトが発生したとき、スキャンアウトが発生したときのサーバVSYNC信号の発生など)。追加情報は、サーバ及び/またはクライアントで収集され、ヒストグラムの作成または解釈に使用される場合があり、以下でより詳細に説明するように、「ヒストグラム情報」と呼ばれる。 Server timestamp information is collected and/or received by the client. As mentioned above, the timestamp information may include the time the corresponding video frame was generated (e.g., flip time, when scanout occurred, the time of the server VSYNC signal when scanout occurred). occurrence, etc.). Additional information may be collected at the server and/or client and used to create or interpret histograms, and is referred to as "histogram information", as described in more detail below.

サーバ側では、追加のヒストグラム情報に、シーンの変化数、Iフレームの符号化時間の平均及び/または標準偏差、及びPフレームの符号化時間の平均及び/または標準偏差のような符号化時間の統計が含まれる場合がある。符号化時間の統計は、サーバからクライアントに定期的なメッセージとして配信される場合がある。さらに、ヒストグラム情報には、エンコーダによってエンコーダスライスを準備する時間が含まれる場合がある。これは、サーバからクライアントに定期的なメッセージとして配信される場合がある。また、ヒストグラム情報には、実際のサーバ側のVSYNCタイミングとターゲットのVSYNCタイミングが含まれる場合があり、これらはパケットヘッダーに追加される場合がある。さらに、ヒストグラム情報は、Iフレーム対Pフレームあたりのスライスの平均数を含み得る。 On the server side, the additional histogram information includes the number of scene changes, encoding time average and/or standard deviation of I-frame encoding times, and average and/or standard deviation of P-frame encoding times. May contain statistics. Encoding time statistics may be delivered as periodic messages from the server to the client. Additionally, the histogram information may include the time to prepare the encoder slices by the encoder. This may be delivered as a periodic message from the server to the client. The histogram information may also include actual server-side VSYNC timing and target VSYNC timing, which may be added to the packet header. Additionally, the histogram information may include the average number of slices per I-frame versus P-frame.

サーバでは、ヒストグラムの情報に、符号化されたスライス(例えば、圧縮されたエンコーダスライス)を送信するための一方向のネットワーク待ち時間を導出するためのラウンドトリップ時間(RTT)測定が含まれる場合がある。RTT測定は、パケットをクライアントに送信するために必要な送信時間を決定するために使用され得る(例えば、復号及びレンダリングなどのクライアントによって実行されるさらなる処理なしで)。例えば、RTTは、ハートビートパケットをサーバからクライアントに送信することによって決定できる。このパケットには、一意の識別子が含まれている。クライアントは、サーバがRTTを計算できるように、一意の識別子と共にハートビート応答をサーバに送り返す。一方向のネットワーク待ち時間は、RTTの約半分である。ヒストグラムを作成するために使用される場合、RTTを定期的に測定することにより、ネットワークまたは伝送ジッタを分析及び/または決定できる(例えば、RTTのスパイク)。例えば、RTTを介して測定された一方向ネットワーク待ち時間の測定値は、次のRTT測定までに受信されたすべてのビデオフレームの送信時間として使用できる。 At the server, the histogram information may include round-trip time (RTT) measurements to derive one-way network latency for transmitting encoded slices (e.g., compressed encoder slices). be. The RTT measurement can be used to determine the transmission time required to send packets to the client (eg, without further processing performed by the client such as decoding and rendering). For example, the RTT can be determined by sending heartbeat packets from the server to the client. This packet contains a unique identifier. The client sends a heartbeat response back to the server with a unique identifier so that the server can calculate the RTT. One-way network latency is about half the RTT. When used to create a histogram, periodic measurements of RTT can be used to analyze and/or determine network or transmission jitter (eg, spikes in RTT). For example, a one-way network latency measurement measured via RTT can be used as the transmission time of all video frames received until the next RTT measurement.

クライアントでは、追加のヒストグラム情報に、受信した符号化されたビデオフレームごとの復号時間が含まれる場合がある。さらに、ヒストグラム情報は、復号されたビデオフレームごとのレンダリング準備時間を含むことができ、レンダリング準備は、復号されたビデオフレームスライスをスキャンラインまたはスクリーンスライスに変換することを含み得る。 At the client, additional histogram information may include the decoding time for each received encoded video frame. Further, the histogram information may include render preparation time for each decoded video frame, and render preparation may include converting decoded video frame slices into scanlines or screen slices.

さらに、サーバでは、追加のヒストグラム情報に、サーバがクライアントに利用可能であると考える総ネットワークスループット(帯域幅など)を定義する最大送信レートが含まれる場合がある。これは、符号化されたビデオフレームのエンコーダスライスを送信できる最大レートを決定するために使用できる。最大レートはクライアントへのネットワーク接続の安定性に基づいて変動し、オフセットは変動に対応するように動的に調整できる。さらに、最大送信速度は、エンコーダのパラメータとは無関係に調整できるため、エンコーダが最大送信速度でスライスを生成しないように構成されている場合、スライスをより迅速に送信できる。 Additionally, for servers, additional histogram information may include a maximum transmission rate that defines the total network throughput (eg, bandwidth) that the server considers available to the client. This can be used to determine the maximum rate at which an encoder slice of an encoded video frame can be sent. The maximum rate fluctuates based on the stability of the network connection to the client, and the offset can be dynamically adjusted to accommodate fluctuations. Furthermore, the maximum transmission rate can be adjusted independently of the encoder parameters, so slices can be transmitted more quickly if the encoder is configured not to produce slices at the maximum transmission rate.

例えば、最大帯域幅または最大送信速度は、クライアントからのフィードバックメカニズムによって決定され得る。これを実行する1つの方法は、クライアントがインクリメンタルシーケンスID(識別子)の範囲またはフレームの範囲で受信したパケットの数を返すようにすることである。例えば、クライアントは、シーケンスID100~250に対して150フレームのうち145フレーム受信したといったことを報告する場合がある。サーバはパケット損失を計算し、その一連のパケット中に送信された帯域幅の量を認識し、クライアントの最大帯域幅を判別できる。送信される帯域幅の量は、可変ビットレート、シーンの複雑さなどのために絶えず変動しているため、クライアントはこの決定を行うことができない。つまり、クライアントは、任意の所与の瞬間、サーバがクライアントが処理できる最大帯域幅を送信しているかどうかわからない。例えば、最大帯域幅は15Mbps(メガビット/秒)だが、ユーザがメニューを表示しているため、シーンの複雑さは低くなる可能性がある(静的ビデオフレームは複雑さが低く、フレーム間の変動がない)。その結果、2Mbpsのみが送信される。したがって、クライアントが0%のパケット損失を報告した場合、クライアントが15Mbpsを依然処理できるかどうかはサーバに通知されない。したがって、サーバが最大帯域幅を送信している場合にのみ、真の最大帯域幅を決定できる。 For example, maximum bandwidth or maximum transmission rate may be determined by a feedback mechanism from the client. One way to do this is to have the client return the number of packets received in a range of incremental sequence IDs (identifiers) or frames. For example, a client may report that it has received 145 out of 150 frames for sequence IDs 100-250. The server can calculate packet loss, know the amount of bandwidth sent in that series of packets, and determine the client's maximum bandwidth. The amount of bandwidth transmitted is constantly fluctuating due to variable bitrates, scene complexity, etc., so the client cannot make this decision. That is, the client does not know whether the server is sending the maximum bandwidth it can handle at any given moment. For example, the maximum bandwidth is 15 Mbps (megabits per second), but the scene complexity can be low because the user is displaying menus (static video frames are low complexity, frame-to-frame variation no). As a result, only 2 Mbps is transmitted. So if the client reports 0% packet loss, the server will not be told if the client can still handle 15 Mbps. Therefore, the true maximum bandwidth can only be determined if the server is sending the maximum bandwidth.

図8Bは、復号タイムスタンプの分布を示すヒストグラム850を示している。この場合、一実施形態では、数値的に最小の復号タイムスタンプにゼロの値が割り当てられるように(例えば、最小の復号タイムスタンプがすべての復号タイムスタンプから差し引かれる)、正規化される。特に、x軸は、0~60ミリ秒(ms)を超えるなど、対応する復号タイムスタンプの時間をミリ秒単位で示す。y軸は、対応する復号タイムスタンプに対してクライアントが受信したビデオフレームの数を示す。 FIG. 8B shows a histogram 850 showing the distribution of decoding timestamps. In this case, in one embodiment, normalization is performed such that the numerically smallest decode timestamp is assigned a value of zero (eg, the smallest decode timestamp is subtracted from all decode timestamps). In particular, the x-axis indicates the time of the corresponding decoding timestamp in milliseconds, such as from 0 to over 60 milliseconds (ms). The y-axis shows the number of video frames received by the client for the corresponding decoding timestamp.

純粋に説明のために、復号のタイムスタンプは約60ミリ秒(ミリ秒)の範囲で変化する可能性があり、サーバによって指定された所望の表示時間と比較して、ビデオフレームのクライアントでの表示の可用性に60ミリ秒の変動があることを示す。つまり、一部のフレームは、他のフレームと比較して約60ms早くまたは遅く表示できる場合がある。表示用の特定のフレームの可用性の変動は、サーバとクライアントの処理の変動、シーンの複雑さ、ネットワークパスの変動、パケット遅延の変動、及びその他の要因が原因である可能性がある。
最悪または最悪に近い復号タイムスタンプを分析することにより、サーバVSYNC信号とクライアントVSYNC信号の間の理想的な関係を決定することができる。つまり、前述のように、クライアントVSYNC信号とサーバVSYNC信号のタイミング間の理想的な相対オフセットを決定して、適切なクライアントVSYNC信号で表示できる受信及び解凍されたビデオフレームの数を、最大化することができる。そのようにして、図800Bは、復号タイムスタンプ755の分布の幅(例えば、約57ミリ秒)を示し、その範囲内で、クライアントによって受信されたビデオフレームの99.99パーセントが到着し、クライアントVSYNC信号の次の適切な発生時に表示するのに間に合うように復号される。
For purely illustrative purposes, the timestamp of decoding can vary in the range of about 60 milliseconds (milliseconds), and the desired display time specified by the server, compared to the desired display time on the client for a video frame. Indicates 60 ms variation in display availability. That is, some frames may be displayed approximately 60ms earlier or later than others. Variations in the availability of a particular frame for display can be due to variations in server and client processing, scene complexity, network path variations, packet delay variations, and other factors.
By analyzing the worst or near-worst decoding timestamps, the ideal relationship between the server and client VSYNC signals can be determined. That is, as described above, determine the ideal relative offset between the timing of the client VSYNC signal and the server VSYNC signal to maximize the number of received and decompressed video frames that can be displayed with the appropriate client VSYNC signal. be able to. As such, diagram 800B shows the width of the distribution of decoding timestamps 755 (eg, approximately 57 milliseconds) within which 99.99 percent of the video frames received by the client arrive and the client It is decoded in time for display at the next appropriate occurrence of the VSYNC signal.

復号タイムスタンプ755の分布のこの幅(最悪に近い場合までのすべての復号タイムスタンプを含むが、それを超えるものを除く)を使用して、復号されたビデオフレームに必要な全体的なバッファリングの必要量を決定することができる。幅755がフレーム期間よりも小さい場合は、2つのバッファが必要である。1つは復号時にフレームに必要であり、もう1つは表示に必要である。例えば、幅が1フレーム期間よりも大きく、2フレーム期間よりも小さい場合は、3つのバッファが必要になる。57msの幅の特定の例では、フレーム期間が16.67msの場合、5つのフレームバッファが必要である。復号タイムスタンプは、所望の表示時間に対する復号されたフレームの可用性を示し、したがって、復号タイムスタンプが低いビデオフレームは、表示前により長い期間バッファに保持され、復号タイムスタンプが高いビデオフレームは、表示前のより短い時間バッファに保持される。 Using this width of the distribution of decoding timestamps 755 (including all decoding timestamps up to the near-worst case, but excluding those beyond), the overall buffering required for the decoded video frame can be determined. If width 755 is less than the frame period, two buffers are required. One is needed for the frame when decoding and the other is needed for display. For example, if the width is greater than one frame period and less than two frame periods, three buffers are required. In the particular example of a width of 57ms, if the frame period is 16.67ms, then 5 frame buffers are required. The decode timestamp indicates the availability of the decoded frame for the desired display time, thus video frames with lower decode timestamps are kept in the buffer for a longer period of time before display, and video frames with higher decode timestamps are not displayed. It is held in the previous shorter time buffer.

一実施形態では、ヒストグラムは動的に再生成される。別の実施形態では、フレームバッファリングの量は、経時的にクライアントによって動的に設定される。さらに別の実施形態では、到着し、復号が遅すぎて所望の表示時間に表示できないフレームはスキップされる(すなわち、表示されない)。 In one embodiment, the histogram is dynamically regenerated. In another embodiment, the amount of frame buffering is set dynamically by the client over time. In yet another embodiment, frames that arrive and are too late to be decoded to be displayed at the desired display time are skipped (ie, not displayed).

図2A~2Dの様々なクライアントデバイス210及び/またはクラウドゲームネットワーク290(例えば、ゲームサーバ260内)の詳細な説明と共に、図9の流れ図900は、本開示の一実施形態による、ビデオフレームがクラウドゲームサーバで生成されてから到着するまで、及び/またはクライアントに表示する準備ができるまでのビデオフレームの経過タイミングの分布を提供するヒストグラムを構築する方法を示し、ヒストグラムは、クライアントでのバッファサイズの決定に対して構成される。前述のように、ヒストグラムは、サーバとクライアントでのVSYNC信号間の適切なオフセットを決定するためにも構成される。 Along with a detailed description of the various client devices 210 and/or cloud gaming networks 290 (eg, within game servers 260) of FIGS. 2A-2D, flowchart 900 of FIG. Shows how to construct a histogram that provides the distribution of the elapsed timings of video frames from being generated on the game server to arriving and/or being ready to be displayed to the client, the histogram being a measure of buffer size on the client. Configured for decisions. As mentioned above, histograms are also constructed to determine the appropriate offset between the VSYNC signals at the server and client.

操作601、603、605、611、及び613は、図6Aの流れ図600A及び図6Bの流れ図600Bに関連して以前に説明され、サーバとクライアントのVSYNC信号間の相対的なタイミングの調整を開示する(例えば、周波数を同期し、タイミングオフセットまたは位相を調整する)。要約すると、601で、この方法は、サーバにおいて、サーバVSYNC信号のフレーム期間中のサーバでのビデオフレームの生成に対応するサーバVSYNC信号を周波数に設定することを含む。603で、この方法は、クライアントで、周波数に対応するクライアントVSYNC信号を、クライアントに関連付けられたディスプレイへのレンダリングに使用されるクライアントVSYNC信号を設定することを含む。605で、この方法は、サーバVSYNC信号を使用して、ネットワークを介してサーバからクライアントに生成ビデオフレームに基づいて圧縮ビデオフレームを送信することを含む。 Operations 601, 603, 605, 611, and 613 were previously described in conjunction with flowchart 600A of FIG. 6A and flowchart 600B of FIG. 6B, and disclose adjusting the relative timing between the server and client VSYNC signals. (e.g. synchronizing frequencies and adjusting timing offsets or phases). In summary, at 601, the method includes setting, at the server, a server VSYNC signal to a frequency corresponding to generation of video frames at the server during frame periods of the server VSYNC signal. At 603, the method includes setting a client VSYNC signal corresponding to a frequency at the client to be used for rendering to a display associated with the client. At 605, the method includes transmitting compressed video frames based on the generated video frames from the server to the client over the network using the server VSYNC signal.

611で、この方法は、圧縮ビデオフレームに関連するタイムスタンプ情報をクライアントに送信することを含む。例えば、タイムスタンプ情報は、圧縮ビデオフレームと共に、またはそれとは別に送信され得るもので、タイムスタンプ情報は、理論的にスキャンまたはローカルディスプレイにストリーミングするときなど、ビデオゲームによって決定されるときに、ネットワーク経由での送信なしで対応するビデオフレームの所望の表示タイミングの指標を与える。クライアントが圧縮ビデオフレームを受信及び復号すると、タイムスタンプ情報が処理され、サーバによって指定された所望の表示時間(例えば、サーバタイムスタンプ)と比較して、対応するビデオフレームのクライアントでの表示の可用性を示す復号タイムスタンプが作成される。一実施形態では、サーバ及びクライアントのタイミングは、同期されていない対応する個々のクロックによって定義され得るので、復号タイムスタンプは正規化され得る。タイムスタンプ情報に関する完全な議論は、図6B~6C、及び8A~8Bに関連して提供され、図9に関連して等しく適用可能である。 At 611, the method includes sending timestamp information associated with the compressed video frames to the client. For example, the timestamp information may be sent with or separately from the compressed video frames, and the timestamp information is theoretically transmitted over the network when determined by the video game, such as when to scan or stream to a local display. gives an indication of the desired display timing of the corresponding video frame without transmission over. When a client receives and decodes a compressed video frame, the timestamp information is processed and compared to the desired display time specified by the server (e.g., server timestamp) to determine the availability of the corresponding video frame for display at the client. A decryption timestamp is created that indicates In one embodiment, the decoding timestamps can be normalized because the server and client timing can be defined by corresponding individual clocks that are not synchronized. A full discussion of timestamp information is provided in connection with FIGS. 6B-6C and 8A-8B and is equally applicable in connection with FIG.

613で、この方法は、クライアントで測定及び/または計算された復号タイムスタンプに基づいてヒストグラムを構築することを含む。例えば、対応するヒストグラムは、ある期間にわたってクライアントで受信及び復号された圧縮ビデオフレームに関連する復号タイムスタンプ情報をビニングすることによって作成され得る。復号タイムスタンプは、サーバによって指定された所望の表示時間(サーバタイムスタンプなど)と比較して、ビデオフレームのクライアントでの表示の可用性を示すことを示しているため、ヒストグラムはサーバ(サーバのタイムスタンプ情報など)によって指定された所望の表示時間に関連してクライアントが受信したビデオフレームの復号完了のタイミングの分布も提供する。タイムスタンプ情報に関する完全な議論は、図6B~6C、及び8A~8Bに関連して提供され、図9に関連して等しく適用可能である。 At 613, the method includes constructing a histogram based on the measured and/or calculated decoding timestamps at the client. For example, a corresponding histogram may be created by binning decode timestamp information associated with compressed video frames received and decoded at the client over a period of time. The histogram shows that the decode timestamp indicates the availability of the video frame for display on the client compared to the desired display time specified by the server (e.g., the server timestamp), so the histogram shows the server (server time It also provides a distribution of the timing of completion of decoding of video frames received by the client relative to the desired display times specified by stamp information, etc.). A full discussion of timestamp information is provided in connection with FIGS. 6B-6C and 8A-8B and is equally applicable in connection with FIG.

910で、この方法は、特定の時点でのヒストグラムの幅を測定することを含む。例えば、ヒストグラムにおける復号タイムスタンプの分布の幅は、受信されたビデオフレームの所定の数または閾値(例えば、99.99パーセント)が、クライアントVSYNC信号312の次の適切な発生時に表示される時間内にクライアントに到着するように測定され得る(明確にするために、受信したビデオフレームの残りの0.01%は、幅を測定するときに含まれていない)。
特に、ヒストグラムの幅は、特定の時点でクライアントが必要とするフレームバッファリングの量を設定するために使用できる。したがって、920で、この方法は、ヒストグラムの幅と、同期されたサーバ及びクライアントVSYNC信号のフレーム期間に基づいて、クライアントに多数の表示バッファを動的に設定し、ヒストグラム750は、時間内の特定の点で生成される。前述のように、幅がフレーム期間未満の場合は、例えば2つのフレームバッファが必要になる。このように、復号タイムスタンプが低いビデオフレームはバッファに長期間保持されるが、ビデオフレームは復号タイムスタンプが高いほど、バッファに保持される期間が短くなる。
At 910, the method includes measuring the width of the histogram at particular points in time. For example, the width of the distribution of decoding timestamps in the histogram is such that a predetermined number or threshold (e.g., 99.99 percent) of received video frames is within the time period indicated at the next appropriate occurrence of client VSYNC signal 312. (for clarity, the remaining 0.01% of the received video frame is not included when measuring width).
In particular, the width of the histogram can be used to set the amount of frame buffering required by the client at any given time. Thus, at 920, the method dynamically sets a number of display buffers on the client based on the width of the histogram and the frame duration of the synchronized server and client VSYNC signals, and the histogram 750 is a specific is generated at the point of As noted above, if the width is less than a frame period, two frame buffers are required, for example. Thus, video frames with lower decode timestamps are retained in the buffer for a longer period of time, while video frames with higher decode timestamps are retained in the buffer for a shorter period of time.

図2A~2Dの様々なクライアントデバイス210及び/またはクラウドゲームネットワーク290(例えば、ゲームサーバ260内)の詳細な説明と共に、図10の流れ図1000は、本開示の一実施形態による、2つ以上のデバイス間のVSYNC信号間の相対的なタイミングを調整するための方法を示している。特に、流れ図1000は、ドリフトを補償するため、及び/または対応するデバイスの2つ以上のVSYNC信号間のオフセットまたは位相を調整するために使用され得る。 Along with detailed descriptions of the various client devices 210 and/or cloud gaming networks 290 (eg, within game servers 260) of FIGS. 2A-2D, flowchart 1000 of FIG. Figure 4 shows a method for adjusting the relative timing between VSYNC signals between devices. In particular, flowchart 1000 may be used to compensate for drift and/or adjust offsets or phases between two or more VSYNC signals of corresponding devices.

1010で、この方法は、複数のデバイスにおいて、複数のVSYNC信号を複数のVSYNC周波数に設定することを含み、対応するデバイスの対応するデバイスVSYNC信号は、対応するデバイスのVSYNC周波数に設定される。つまり、各デバイスは、対応するピクセルクロックを使用して対応するVSYNC信号を設定する。さらに、周波数は、同じ見かけの周波数に設定されるなど、類似している場合があるが、実際の周波数は、様々なピクセルクロック間の差異のために異なる場合がある。これらのVSYNC信号は、ビデオフレームの生成(サーバ/クライアントアーキテクチャのサーバなど)及び/またはビデオフレームの表示(サーバ/クライアントアーキテクチャのクライアントなど)に使用できる。また、これらのVSYNC信号は、ビデオフレームの生成とビデオフレームの表示の両方に使用できる。例えば、各デバイスがローカルでビデオゲームを実行しているピアツーピアアーキテクチャのデバイスでは、そのタイミングはビデオフレームの実行と表示を調整することができる。 At 1010, the method includes setting a plurality of VSYNC signals to a plurality of VSYNC frequencies at the plurality of devices, wherein the corresponding device VSYNC signals of the corresponding devices are set to the VSYNC frequencies of the corresponding devices. That is, each device uses its corresponding pixel clock to set its corresponding VSYNC signal. Further, the frequencies may be similar, such as set to the same apparent frequency, but the actual frequencies may differ due to differences between the various pixel clocks. These VSYNC signals can be used for video frame generation (eg, server in server/client architecture) and/or display of video frames (eg, client in server/client architecture). Also, these VSYNC signals can be used both for generating video frames and for displaying video frames. For example, in peer-to-peer architecture devices, where each device is running a video game locally, the timing can coordinate the execution and display of video frames.

1020で、この方法は、複数のデバイス間で複数の信号を送信することを含み、これは、少なくとも2つのデバイスの対応するデバイスのVSYNC信号間の相対的なタイミングを調整するために分析及び使用される。相対的なタイミングは、サーバ/クライアントアーキテクチャで構成されたデバイス間、またはピアツーピアアーキテクチャで構成されたデバイス間で調整できる。例えば、信号は、前述のように、対応するビデオフレームがいつサーバによって表示されることを意図されているかについての指示を与えるサーバタイムスタンプ情報またはサーバタイミング情報を含み得る。そのようにして、複数のデバイスのVSYNC信号は、少なくとも2つのVSYNC信号間のドリフトを決定することによって同期化され得る(例えば、VSYNC信号の周波数を同期化する)。また、タイミングオフセット及び/またはタイミング位相は、少なくとも2つのVSYNC信号間で調整することができる。 At 1020, the method includes transmitting a plurality of signals among a plurality of devices, which is analyzed and used to adjust relative timing between VSYNC signals of corresponding devices of at least two devices. be done. Relative timing can be coordinated between devices configured in a server/client architecture or between devices configured in a peer-to-peer architecture. For example, the signal may include server timestamp information or server timing information that gives an indication of when the corresponding video frame is intended to be displayed by the server, as described above. As such, the VSYNC signals of multiple devices may be synchronized (eg, synchronizing the frequency of the VSYNC signals) by determining the drift between at least two VSYNC signals. Also, timing offsets and/or timing phases can be adjusted between at least two VSYNC signals.

特に、一実施形態では、デバイスのうちの少なくとも2つは、サーバ/クライアントアーキテクチャで構成され得る。別の実施形態では、デバイスは、マルチテナント構成(例えば、複数のクライアントデバイス用の1つのサーバ)に配置される。例えば、第1のデバイスは、サーバVSYNC信号がサーバVSYNC周波数に設定されるサーバデバイスであり得る。サーバVSYNC信号は、サーバVSYNC周波数の複数のフレーム期間中のサーバデバイスでのアプリケーションの実行中の複数のビデオフレームの生成に対応する。複数の圧縮ビデオフレームが、サーバVSYNC信号に基づいて、ネットワークを介してサーバデバイスから複数のデバイス内の残りのデバイス(クライアントデバイスなど)のそれぞれに送信される。例えば、サーバVSYNC信号は、サーバでのビデオフレームの生成と符号化のタイミングを提供する。圧縮ビデオフレームはサーバデバイスによって生成されているビデオフレームに基づく。各受信デバイス(残りのデバイスなど)は、受信された圧縮ビデオフレームを復号して表示する。復号されたビデオフレームの表示は、各受信デバイス間で同期させることができる。 Specifically, in one embodiment, at least two of the devices may be configured in a server/client architecture. In another embodiment, devices are arranged in a multi-tenant configuration (eg, one server for multiple client devices). For example, the first device may be a server device whose server VSYNC signal is set to the server VSYNC frequency. The server VSYNC signal corresponds to the generation of video frames during execution of an application on the server device during frames on the server VSYNC frequency. A plurality of compressed video frames are transmitted over the network from the server device to each of the remaining devices (such as client devices) in the plurality of devices based on the server VSYNC signal. For example, the server VSYNC signal provides timing for the generation and encoding of video frames at the server. Compressed video frames are based on video frames being generated by the server device. Each receiving device (such as the rest) decodes and displays the received compressed video frames. The display of decoded video frames can be synchronized between each receiving device.

特に、相対タイミングは、ドリフトを補償するために、及び/またはデバイスのVSYNC信号間のタイミングオフセットまたは位相を調整するために、デバイス間で調整され得る。ドリフト及びタイミングオフセットまたは位相の調整は、図6A~6C、7、及び8A~8Bに関連して前述した技法を使用して決定することができる。2つのデバイスのVSYNC信号間の相対的なタイミングの調整は、どちらのデバイスでも発生する可能性があり、対応するデバイスの対応するデバイスVSYNC信号の対応するフレーム周期の垂直帰線区間のラスタースキャンラインを除去または追加することによる周波数の調整、または対応するデバイスの対応するクロックのオーバークロックまたはアンダークロックを含む場合がある。 In particular, relative timing may be adjusted between devices to compensate for drift and/or adjust timing offsets or phases between VSYNC signals of the devices. Drift and timing offsets or phase adjustments can be determined using the techniques described above in connection with FIGS. 6A-6C, 7, and 8A-8B. The adjustment of the relative timing between the VSYNC signals of two devices can occur in either device, and the raster scan lines of the vertical blanking interval of the corresponding frame period of the corresponding device VSYNC signal of the corresponding device. , or overclocking or underclocking the corresponding clock of the corresponding device.

特に、一実施形態では、デバイスのうちの少なくとも2つは、ピアツーピアアーキテクチャで構成され得る。例えば、各デバイスは独立したピアデバイスである場合がある。つまり、どのデバイスもサーバデバイスではない。そのようにして、デバイスは、ピアツーピアゲーム用に構成され得る。各デバイスは、同じビデオゲームを処理することによって複数のビデオフレームを生成している。独立したピアデバイスは、マルチプレイヤーゲームセッションを制御するバックエンドサーバサポートを使用して、特定のビデオゲームのマルチプレイヤーモードで動作している場合がある。
バックエンドサーバは、マルチプレイヤーゲームセッションの各ユーザの状態データを管理することにより、デバイス間の状態共有を可能にすることができる。状態データは、特定箇所における該当ユーザの(ゲームアプリケーションの)ゲームプレイの状態を定義するゲーム状態データを含み得る。例えば、ゲーム状態データには、ゲームキャラクター、ゲームオブジェクト、ゲームオブジェクト属性、ゲーム属性、ゲームオブジェクト状態、グラフィックオーバーレイなどが含まれ得る。このようにして、オブジェクトとキャラクターを、マルチプレイヤーゲームセッションに参加しているユーザの各ゲーム環境に挿入でき、各ユーザのゲームプレイが状態の共有を介して各ユーザにカスタマイズされるようにする。
また、各ユーザのゲームプレイは、状態共有に基づいて同期することができる。すなわち、各デバイスで表示されているビデオフレームは、同期されたゲームプレイに反映されるように同期され得る。このように、あるユーザは、他のユーザのゲームプレイのビデオフレームよりも早く、対応するデバイス上でビデオフレームを継続的に受信及び表示することによって利点を得ることができない場合がある。または、バックエンドサーバは関与せず、この場合ピア間のVSYNC関係は、他のピアからの制御または状態情報の受信と、他のピアから受信した情報を使用するビデオフレームの表示との間の待ち時間を最小限に抑えるように最適化される。
In particular, in one embodiment at least two of the devices may be configured in a peer-to-peer architecture. For example, each device may be an independent peer device. That is, none of the devices are server devices. As such, the device may be configured for peer-to-peer gaming. Each device generates multiple video frames by processing the same video game. An independent peer device may be operating in multiplayer mode for a particular video game with backend server support for controlling multiplayer game sessions.
A backend server can manage state data for each user of a multiplayer game session, thereby enabling state sharing between devices. The state data may include game state data that defines the state of gameplay (of the game application) for that user at a particular point. For example, game state data may include game characters, game objects, game object attributes, game attributes, game object states, graphic overlays, and the like. In this manner, objects and characters can be inserted into each game environment of users participating in a multiplayer game session, allowing each user's gameplay to be customized to each user through shared state.
Also, each user's gameplay can be synchronized based on state sharing. That is, the video frames being displayed on each device can be synchronized to reflect synchronized gameplay. As such, one user may not be able to benefit from continuously receiving and displaying video frames on a corresponding device ahead of other users' gameplay video frames. Alternatively, no backend server is involved, in which case the VSYNC relationship between peers is between receiving control or state information from other peers and displaying video frames using information received from other peers. Optimized to minimize latency.

図11Aは、本開示の一実施形態による、クライアント210で表示するための解凍されたビデオフレームの受信、復号、及びレンダリングの重複を示している。特に、クラウドゲームアプリケーションにおけるサーバ(図示せず)とクライアント210との間の一方向の待ち時間は、特定のビデオフレームの受信、復号、及び表示の重複する操作によって低減され得る。 FIG. 11A illustrates duplication of receiving, decoding, and rendering decompressed video frames for display at client 210, according to one embodiment of the present disclosure. In particular, one-way latency between a server (not shown) and client 210 in a cloud gaming application can be reduced by redundant operations of receiving, decoding, and displaying a particular video frame.

例えば、クラウドゲームアプリケーションのクライアントは、ビデオフレームを受信して復号する。特に、受信操作405で符号化されたビデオフレーム1105を受信するクライアントは、サーバがビデオゲームを実行してゲームレンダリングされたビデオフレームを生成し、次にサーバのエンコーダで符号化され、符号化されたビデオフレーム1105としてクライアントに配信される。符号化されたビデオフレーム1105は、サーバのエンコーダによって圧縮される1つまたは複数の符号化されたスライスを含む。クライアントは、復号操作406で、符号化されたビデオフレーム内の1つまたは複数の符号化されたスライスを復号するように構成されたデコーダを含む。一実施形態では、復号プロセスは、対応するビデオフレームがクライアントで完全に受信される前に開始する。デコーダは、符号化されたスライスごとに復号を実行するため、復号されたビデオフレーム1106は、1つまたは複数のエンコーダスライスを含む。その後、復号されたビデオフレーム1106は、次に、復号されたビデオフレーム1106内の情報をスキャンラインまたはスクリーンスライスにレンダリングするなどの表示のために準備される。その後、クライアントレンダリングされたビデオフレーム1107は、表示の準備ができている。 For example, a cloud gaming application client receives and decodes video frames. In particular, a client that receives encoded video frames 1105 in receive operation 405 expects the server to run the video game to produce game-rendered video frames, which are then encoded in the server's encoder and then encoded. delivered to the client as a video frame 1105. Encoded video frame 1105 includes one or more encoded slices that are compressed by the server's encoder. The client includes a decoder configured to decode one or more encoded slices within an encoded video frame at decoding operation 406 . In one embodiment, the decoding process begins before the corresponding video frame is completely received at the client. A decoded video frame 1106 includes one or more encoder slices because the decoder performs decoding for each encoded slice. The decoded video frame 1106 is then prepared for display, such as by rendering the information in the decoded video frame 1106 into scanlines or screen slices. The client-rendered video frame 1107 is then ready for display.

サーバとクライアントとの間の一方向の待ち時間は、ビデオフレームが操作406で完全に復号される前に、クライアント210に操作407でビデオフレームの表示を開始させることによって減らすことができる。特に、ビデオフレームの1つまたは複数の復号されたスライスは、ビデオフレームが完全に復号される前に、ディスプレイにレンダリングするために準備され得る。すなわち、407での表示操作は、406での復号操作と重複する。特に、最初に符号化されたスライス(スライスAなど)は、クライアントのスキャンアウトが表示を開始する前に到着して復号する必要がある。さらに、後続のすべての符号化されたスライスは、それぞれの解凍されたデータがレンダリングされて表示のためにスキャンアウトされる前に、到着して復号される必要がある。 One-way latency between the server and the client can be reduced by having the client 210 begin displaying the video frame at operation 407 before the video frame is fully decoded at operation 406 . In particular, one or more decoded slices of a video frame may be prepared for rendering on a display before the video frame is fully decoded. That is, the display operation at 407 overlaps the decoding operation at 406 . In particular, the first encoded slice (such as slice A) must arrive and be decoded before the client's scanout can start displaying. Additionally, all subsequent encoded slices must arrive and be decoded before their respective decompressed data can be rendered and scanned out for display.

さらに、クライアントでの受信及び復号操作の重複に加えて、サーバによって送信された符号化されたビデオフレームがクライアントで完全に受信される前であっても、次いで表示の準備においてレンダリングされる1つまたは複数の復号されたスライスの表示が発生する可能性がある。つまり、クライアントでの受信、復号、及び表示操作の1つまたは複数が、対応するビデオフレームに対して重複する場合がある。さらに、サーバとクライアントの両方で複数の操作を重複させている場合、サーバでのスキャンアウト操作が完全に完了する前であっても、表示の準備において次いでレンダリングされるレンダリングされたビデオフレームの1つ以上の復号されたスライスをクライアントで表示でき、この場合一実施形態で、スキャンアウトは、ゲームでレンダリングされたビデオフレームをサーバのエンコーダに配信する。 Furthermore, in addition to duplicating the receiving and decoding operations at the client, even before the encoded video frames transmitted by the server are completely received at the client, one is then rendered in preparation for display. Or multiple decoded slice representations may occur. That is, one or more of the receive, decode, and display operations at the client may overlap for corresponding video frames. Additionally, if you are overlapping multiple operations on both the server and the client, one of the rendered video frames that are then rendered in preparation for display may not be displayed even before the scanout operation on the server is fully completed. One or more decoded slices can be displayed on the client, where in one embodiment the scanout delivers the game-rendered video frames to the encoder on the server.

操作407での表示と操作406での復号の重複は、エンコーダスライスごとに実行することができる。このようにして、1つまたは複数の後続の符号化されたスライスが受信される前に、符号化されたスライスを表示することができる。これを行うには、前方誤り訂正(FEC)データを、対応するビデオフレームの符号化されたスライス間でインターリーブする必要がある。特に、符号化されたスライスは、1つまたは複数のネットワークパケットに分割され得る。FECパケットは、スライスに関連付けられた1つ以上のパケットを修正するために使用できる。そのため、FECパケットは、複数のスライスのパケット間でインターリーブされる場合がある。このようにして、前方誤り訂正を早期に使用して、フレームのパケットのセット全体(例えば、データ及びFEC)がクライアントによって受信されるのを待たずに、スライスの欠落及び/または破損したパケットを訂正できる。これにより、クライアントでの復号操作と表示操作を重複させることができる。 The overlap of displaying at operation 407 and decoding at operation 406 can be performed for each encoder slice. In this way, an encoded slice can be displayed before one or more subsequent encoded slices are received. To do this, forward error correction (FEC) data must be interleaved between coded slices of corresponding video frames. Specifically, an encoded slice may be divided into one or more network packets. A FEC packet can be used to modify one or more packets associated with a slice. As such, FEC packets may be interleaved between packets of multiple slices. In this way, forward error correction can be used early to detect missing slices and/or corrupted packets without waiting for the entire set of packets (e.g., data and FEC) for a frame to be received by the client. can be corrected. As a result, the decryption operation and the display operation on the client can be duplicated.

一実施形態では、復号タイムスタンプをスライスごとに作成することができ、サーバによって指定された所望の表示時間と比較して、クライアントで表示するためのスライスの可用性を示す。復号タイムスタンプは、クライアントでのスライスの復号406の完了時間を取り、フレームの理想的な表示時間を示すサーバから受信したタイムスタンプを差し引き、表示プロセス407内での解凍されたスライスが使用される時間を加算する(つまり、例えば、解凍されたスライスデータがすぐに必要な場合は0msを追加し、16.67msのフレーム期間の途中でスライスデータが必要な場合は8.33msを追加する)ことによって計算することができる。他のすべてのタイムスタンプから最初の復号タイムスタンプを差し引くなど、何らかの方法で復号タイムスタンプを正規化すると便利な場合がある。 In one embodiment, a decryption timestamp can be created for each slice to indicate the slice's availability for display at the client compared to the desired display time specified by the server. The decode timestamp takes the completion time of the slice decoding 406 at the client, minus the timestamp received from the server that indicates the ideal display time of the frame, which decompressed slice is used in the display process 407. Add time (i.e., add 0 ms if you need the decompressed slice data immediately, add 8.33 ms if you need the slice data in the middle of the 16.67 ms frame period, for example). can be calculated by It may be useful to normalize the decryption timestamps in some way, such as subtracting the first decryption timestamp from all other timestamps.

復号タイムスタンプは、図5A~5B及び8A~8Bに示されているものと同様のヒストグラムに配置することができる。ヒストグラムによって決定される最悪の場合または最悪に近い場合(例えば、99.999%)の復号タイムスタンプを使用して、相対的なサーバとクライアントのVSYNCタイミングを調整し、それによって一方向の待ち時間を減らすことができる。スライスが到着して遅れて復号されると、表示バッファの既存のコンテンツが表示に使用され、目に見える破損または「ティアリング」が発生するため、99.999%などの非常に高い閾値が望ましく、サーバ260で生成され、クライアント210で表示されるビデオフレーム10万フレームのうち、1フレームが欠落することを規定する。 The decode timestamps can be arranged in histograms similar to those shown in FIGS. 5A-5B and 8A-8B. Use the worst-case or near-worst-case (e.g., 99.999%) decoding timestamps determined by the histogram to adjust relative server and client VSYNC timings, thereby reducing one-way latency can be reduced. A very high threshold, such as 99.999%, is desirable because if a slice arrives and is decoded late, the existing contents of the display buffer will be used for display, causing visible corruption or "tearing"; It defines that one frame is missing out of 100,000 video frames generated by the server 260 and displayed by the client 210 .

図2A~2Dの様々なクライアントデバイス210及び/またはクラウドゲームネットワーク290(例えば、ゲームサーバ260内)の詳細な説明と共に、本開示の実施形態によれば、図11Bの流れ図1100Bは、符号化されたフレームがサーバからクライアントで受信され、復号されて表示のためにレンダリングされるクラウドゲームの方法を示し、ビデオフレームの復号及び表示は、一方向の待ち時間を短縮する目的で重複することができる。クライアントでの1つまたは複数の操作を重複できることは、図4~10で前述したように、サーバとクライアントとの間の一方向の待ち時間を管理することによって達成される。例えば、サーバとクライアントのVSYNC信号間の相対的なタイミングは、サーバとクライアント間の一方向の待ち時間の変動を低減及び/または最小化するように調整される。 2A-2D, along with a detailed description of the various client devices 210 and/or cloud gaming networks 290 (eg, within game server 260) of FIGS. shows a cloud gaming method in which frames are received at a client from a server, decoded and rendered for display, and the decoding and display of video frames can be overlapped for the purpose of reducing one-way latency. . The ability to overlap one or more operations on the client is achieved by managing one-way latency between the server and the client, as previously described in FIGS. 4-10. For example, the relative timing between server and client VSYNC signals may be adjusted to reduce and/or minimize one-way latency variations between server and client.

1110で、この方法はクライアントで符号化されたビデオフレームを受信することを含み、サーバがアプリケーションを実行してレンダリングされたビデオフレームを生成し、それが次にサーバのエンコーダで符号化されたビデオフレームとして符号化され、符号化されたビデオフレームは、圧縮された1つまたは複数の符号化されたスライスを含む。例えば、サーバはサーバVSYNC信号を使用して複数のビデオフレームを生成する。各ビデオフレームは、圧縮のためにエンコーダに送信することができ、各ビデオフレームは、1つまたは複数の符号化されたスライスに符号化することができる。前述のように、対応するビデオフレームの符号化の開始は、サーバVSYNC信号にアライメントすることができる。次に、圧縮ビデオフレームがクライアントに送信され、送信はサーバVSYNC信号と一致している必要はなく、エンコーダスライスまたは完全なビデオフレームが符号化されるとすぐに開始される。圧縮ビデオフレームはクライアントによって受信される。 At 1110, the method includes receiving encoded video frames at a client, and a server executing an application to produce rendered video frames, which are then encoded at an encoder at the server. A coded video frame, which is coded as a frame, includes one or more coded slices that have been compressed. For example, the server uses the server VSYNC signal to generate multiple video frames. Each video frame may be sent to an encoder for compression, and each video frame may be encoded into one or more coded slices. As mentioned above, the start of encoding of the corresponding video frame can be aligned with the server VSYNC signal. The compressed video frame is then sent to the client, and transmission does not have to coincide with the server VSYNC signal, and begins as soon as an encoder slice or complete video frame is encoded. Compressed video frames are received by a client.

1120で、この方法は、1つまたは複数の復号されたスライスを生成するために、クライアントのデコーダで1つまたは複数の符号化されたスライスを復号することを含む。一実施形態では、1つまたは複数の符号化されたスライスの復号は、クライアントで符号化されたビデオフレームを完全に受信する前に開始することができる。例えば、クライアントは、対応するビデオフレームの1つ以上の符号化されたスライスを受信する。次に、符号化されたスライスのそれぞれが復号され、表示バッファに配置され、復号されたビデオフレームが表示バッファに配置される。 At 1120, the method includes decoding one or more encoded slices at a decoder of a client to generate one or more decoded slices. In one embodiment, decoding of one or more encoded slices may begin prior to receiving a complete encoded video frame at the client. For example, a client receives one or more encoded slices of corresponding video frames. Each of the encoded slices is then decoded and placed in a display buffer, and the decoded video frames are placed in the display buffer.

1130で、この方法は、クライアントで表示するために1つ以上の復号されたスライスをレンダリングすることを含む。特に、復号のプロセスの間に、復号されたスライスを表示用にレンダリングすることができ、レンダリングには、対応するビデオフレームの復号されたスライスから画面スライス(例えば、スキャンライン)を生成することが含まれ、これはその後、クライアントのディスプレイにストリーミングされる。 At 1130, the method includes rendering one or more decoded slices for display at the client. In particular, during the decoding process, decoded slices can be rendered for display, which can include generating screen slices (e.g., scanlines) from the decoded slices of corresponding video frames. included, which is then streamed to the client's display.

1140で、この方法は、一実施形態では、クライアントで1つまたは複数の符号化されたスライスを完全に受信する前にレンダリングされる1つまたは複数の復号されたスライスの表示を開始することを含む。特に、ディスプレイバッファに配置された復号されたスライスは、クライアントのディスプレイにすぐにストリーミングされる場合がある。そのため、受信と表示のクライアント操作が重複する場合がある。 At 1140, the method, in one embodiment, causes the client to begin displaying one or more decoded slices to be rendered before fully receiving the one or more encoded slices. include. In particular, decoded slices placed in the display buffer may be immediately streamed to the client's display. Therefore, client operations for receiving and displaying may overlap.

別の実施形態では、この方法は、1つまたは複数の符号化されたスライスを完全に復号する前に、ディスプレイでレンダリングされる1つまたは複数の復号されたスライスの表示を開始することを含む。特に、ディスプレイバッファに配置された復号されたスライスは、クライアントのディスプレイにすぐにストリーミングされる場合がある。そのため、復号と表示のクライアント操作が重複する場合がある。 In another embodiment, the method includes beginning display of the one or more decoded slices rendered on the display prior to fully decoding the one or more encoded slices. . In particular, decoded slices placed in the display buffer may be immediately streamed to the client's display. Therefore, client operations for decryption and display may overlap.

図12は、本開示の様々な実施形態の態様を実行するために使用することができる例示的なデバイス1200の構成要素を示す。例えば、図12は、本開示の実施形態による、サーバまたはクライアントのVSYNC信号を調整して、サーバとクライアント間のVSYNC信号のオフセットを同期及び/または調整するなど、メディアコンテンツのストリーミング及び/またはストリーミングメディアコンテンツの受信に適し、クライアントで動的バッファリングを提供するのに適し、クライアントでのビデオフレームの重複する復号及び表示に適している例示的なハードウェアシステムを示している。
このブロック図は、各々が本発明の実施形態を実施するために適した、パーソナルコンピュータ、サーバコンピュータ、ゲーム機、モバイル機器、または他のデジタルデバイスを組み込むことができる、またはそれらである場合があるデバイス1200を示す。デバイス1200は、ソフトウェアアプリケーション及び任意選択的にオペレーティングシステムを作動させる中央処理装置(CPU)1202を含む。CPU1202は、1つまたは複数の同種または異種の処理コアで構成され得る。
FIG. 12 illustrates components of an exemplary device 1200 that can be used to carry out aspects of various embodiments of the present disclosure. For example, FIG. 12 illustrates streaming and/or streaming of media content, such as adjusting the VSYNC signal of a server or client to synchronize and/or adjust the offset of the VSYNC signal between the server and client, according to embodiments of the present disclosure. 1 illustrates an exemplary hardware system suitable for receiving media content, suitable for providing dynamic buffering at a client, and suitable for overlapping decoding and display of video frames at the client.
This block diagram may incorporate or be a personal computer, server computer, game console, mobile device, or other digital device, each suitable for implementing embodiments of the present invention. A device 1200 is shown. Device 1200 includes a central processing unit (CPU) 1202 that runs software applications and, optionally, an operating system. CPU 1202 may be comprised of one or more homogeneous or heterogeneous processing cores.

様々な実施形態によれば、CPU1202は、1つ以上の処理コアを有する1つ以上の汎用マイクロプロセッサである。さらなる実施形態は、ゲーム実行中のグラフィック処理のために構成されたアプリケーションの、媒体及び双方向エンターテインメントアプリケーションなどのきわめて並列かつ計算集約的なアプリケーションに特に適合されたマイクロプロセッサアーキテクチャを有する1つ以上のCPUを使用し、実装することができる。 According to various embodiments, CPU 1202 is one or more general-purpose microprocessors having one or more processing cores. Further embodiments have one or more microprocessor architectures specifically adapted for highly parallel and computationally intensive applications, such as media and interactive entertainment applications, applications configured for graphics processing during game execution. It can be implemented using a CPU.

メモリ1204は、CPU1202及びGPU1216が使用するアプリケーション及びデータを格納する。ストレージ1206は、アプリケーション及びデータ用の不揮発性ストレージ及び他のコンピュータ可読媒体を提供し、ストレージ1206には、固定ディスクドライブ、取り外し可能ディスクドライブ、フラッシュメモリデバイス、及びCD‐ROM、DVD‐ROM、Blu‐ray(登録商標)、HD‐DVD、または他の光学記憶デバイス、ならびに信号伝送及び記憶媒体が含まれ得る。ユーザ入力デバイス1208は、1人以上のユーザからのユーザ入力をデバイス1200に伝達するものであり、その例としては、キーボード、マウス、ジョイスティック、タッチパッド、タッチスクリーン、スチルまたはビデオレコーダ/カメラ、及び/またはマイクロフォンがあり得る。
ネットワークインターフェース1209は、デバイス1200が電子通信ネットワークを介して他のコンピュータシステムと通信することを可能にし、かつ、ローカルエリアネットワーク、及びインターネットなどの広域ネットワークを介する有線または無線通信を含み得る。音声プロセッサ1212は、CPU1202、メモリ1204、及び/またはストレージ1206により提供される命令及び/またはデータから、アナログまたはデジタルの音声出力を生成するように適合される。CPU1202、グラフィックスサブシステム1214、例えばGPU1216及びGPUキャッシュ1218、メモリ1204、データストレージ1206、ユーザ入力デバイス1208、ネットワークインターフェース1209、及び音声プロセッサ1212を含むデバイス1200の構成要素は、1つ以上のデータバス1222を介して接続されている。
Memory 1204 stores applications and data used by CPU 1202 and GPU 1216 . Storage 1206 provides non-volatile storage and other computer-readable media for applications and data and includes fixed disk drives, removable disk drives, flash memory devices and CD-ROM, DVD-ROM, Blu-ray, etc. -ray®, HD-DVD, or other optical storage devices, as well as signal transmission and storage media. User input devices 1208 communicate user input from one or more users to device 1200 and include keyboards, mice, joysticks, touchpads, touchscreens, still or video recorders/cameras, and / Or there may be a microphone.
Network interface 1209 allows device 1200 to communicate with other computer systems over electronic communications networks, and may include wired or wireless communications over local area networks and wide area networks such as the Internet. Audio processor 1212 is adapted to generate analog or digital audio output from instructions and/or data provided by CPU 1202 , memory 1204 and/or storage 1206 . The components of device 1200, including CPU 1202, graphics subsystem 1214, e.g. 1222.

グラフィックスサブシステム1214はさらに、データバス1222及びデバイス1200の構成要素と接続されている。グラフィックスサブシステム1214は、グラフィック処理ユニット(GPU)1216と、グラフィックスメモリ1218とを含む。グラフィックスメモリ1218は、出力画像の各画素の画素データを格納するために使用される表示メモリ(例えばフレームバッファ)を含む。グラフィックスメモリ1218は、GPU1216と同じデバイスに統合されてもよく、GPU1216と別個のデバイスとして接続されてもよく、かつ/またはメモリ1204内に実装されてもよい。画素データは、直接CPU1202からグラフィックスメモリ1218へ提供され得る。あるいは、CPU1202は、所望の出力画像を定義するデータ及び/または命令をGPU1216に提供し、これによりGPU1216は、1つ以上の出力画像の画素データを生成する。所望の出力画像を定義するデータ及び/または命令は、メモリ1204及び/またはグラフィックスメモリ1218に格納され得る。実施形態において、GPU1216は、シーンの形状、照明、シャドウィング、質感、動き、及び/またはカメラのパラメータを定義する命令及びデータから、出力画像の画素データを生成する3Dレンダリング機能を含む。GPU1216はさらに、シェーダープログラムを実行することができる1つ以上のプログラム可能実行ユニットを含み得る。 Graphics subsystem 1214 is also connected to data bus 1222 and the components of device 1200 . Graphics subsystem 1214 includes a graphics processing unit (GPU) 1216 and graphics memory 1218 . Graphics memory 1218 includes display memory (eg, a frame buffer) used to store pixel data for each pixel of the output image. Graphics memory 1218 may be integrated into the same device as GPU 1216 , connected as a separate device from GPU 1216 , and/or implemented within memory 1204 . Pixel data may be provided directly from CPU 1202 to graphics memory 1218 . Alternatively, CPU 1202 provides data and/or instructions defining the desired output image to GPU 1216, which causes GPU 1216 to generate pixel data for one or more output images. Data and/or instructions defining a desired output image may be stored in memory 1204 and/or graphics memory 1218 . In embodiments, GPU 1216 includes 3D rendering functionality that generates output image pixel data from instructions and data that define scene geometry, lighting, shadowing, texture, motion, and/or camera parameters. GPU 1216 may further include one or more programmable execution units capable of executing shader programs.

グラフィックスサブシステム1214は、グラフィックスメモリ1218から画像の画素データを定期的に出力して、ディスプレイデバイス1210に表示させる、または投影システム(図示せず)により投影させる。ディスプレイデバイス1210は、デバイス1200からの信号に応じて視覚情報を表示することができる任意のデバイスであり得るもので、これにはCRT、LCD、プラズマ、及びOLEDディスプレイが含まれる。デバイス1200は、ディスプレイデバイス1210に、例えばアナログ信号またはデジタル信号を提供することができる。 Graphics subsystem 1214 periodically outputs image pixel data from graphics memory 1218 for display on display device 1210 or projection by a projection system (not shown). Display device 1210 can be any device capable of displaying visual information in response to signals from device 1200, including CRT, LCD, plasma, and OLED displays. Device 1200 can provide display device 1210 with analog or digital signals, for example.

グラフィックスサブシステム1214を最適化するための他の実施形態は、GPUインスタンスが複数のアプリケーション間で共有されるマルチテナンシーGPU操作、及び単一のゲームをサポートする分散GPUを含むことができる。グラフィックスサブシステム1214は、1つまたは複数の処理デバイスとして構成することができる。 Other embodiments for optimizing the graphics subsystem 1214 may include multi-tenancy GPU operation, where GPU instances are shared among multiple applications, and distributed GPUs supporting a single game. Graphics subsystem 1214 may be configured as one or more processing devices.

例えば、グラフィックスサブシステム1214は、マルチテナンシーGPU機能を実行するように構成され得るもので、一実施形態では、1つのグラフィックスサブシステムが、複数のゲームのためのグラフィックス及び/またはレンダリングパイプラインを実装し得る。つまり、グラフィックスサブシステム1214は、実行されている複数のゲーム間で共有される。 For example, graphics subsystem 1214 may be configured to perform multi-tenancy GPU functionality, and in one embodiment, one graphics subsystem provides graphics and/or rendering for multiple games. Pipelines can be implemented. That is, the graphics subsystem 1214 is shared between multiple games that are running.

他の実施形態では、グラフィックスサブシステム1214は、対応するCPU上で実行されている単一のアプリケーションのためにグラフィック処理を実行するために組み合わされる複数のGPUデバイスを含む。例えば、複数のGPUは、フレームレンダリングの代替形式を実行でき、この場合、例えばGPU1は最初のフレームをレンダリングし、GPU2は2番目のフレームを連続したフレーム期間でレンダリングし、最後のGPUに到達すると、最初のGPUが次のビデオフレームをレンダリングする(例えば、GPUが2つしかない場合、GPU1は3番目のフレームをレンダリングする)。つまり、フレームをレンダリングするときにGPUが回転する。レンダリング操作は重複する可能性があり、それにおいて、GPU1が最初のフレームのレンダリングを終了する前にGPU2が2番目のフレームのレンダリングを開始できる。
別の実施形態では、複数のGPUデバイスに、レンダリング及び/またはグラフィックスパイプラインで異なるシェーダー操作を割り当てることができる。マスターGPUがメインのレンダリングと合成を実行している。例えば、3つのGPUを含むグループでは、マスターGPU1がメインレンダリング(例えば、最初のシェーダー操作)を実行し、スレーブGPU2とスレーブGPU3からの出力の合成を実行でき、スレーブGPU2は2番目のシェーダー(例えば、川などの流体エフェクト)操作を実行でき、スレーブGPU3は3番目のシェーダー(例えば、粒子の煙)操作を実行でき、マスターGPU1は、GPU1、GPU2、及びGPU3のそれぞれからの結果を合成する。このようにして、様々なGPUを割り当てて、様々なシェーダー操作(フラグを振る、風、煙の発生、火など)を実行してビデオフレームをレンダリングできる。さらに別の実施形態では、3つのGPUのそれぞれを、ビデオフレームに対応するシーンの異なるオブジェクト及び/または部分に割り当てることができる。上記の実施形態及び実施態様では、これらの操作は、同じフレーム期間で(同時に並行して)、または異なるフレーム期間で(順次並列に)実行することができる。
In other embodiments, graphics subsystem 1214 includes multiple GPU devices combined to perform graphics processing for a single application running on the corresponding CPU. For example, multiple GPUs can perform an alternative form of frame rendering, where for example GPU1 renders the first frame, GPU2 renders the second frame in consecutive frame periods, and when the last GPU is reached , the first GPU renders the next video frame (eg, GPU1 renders the third frame if there are only two GPUs). That is, the GPU rotates when rendering a frame. Rendering operations can overlap, in which GPU2 can start rendering a second frame before GPU1 finishes rendering the first frame.
In another embodiment, multiple GPU devices may be assigned different shader operations in the rendering and/or graphics pipeline. The master GPU is doing the main rendering and compositing. For example, in a group containing three GPUs, master GPU1 may perform main rendering (e.g., first shader operation) and perform compositing of output from slave GPU2 and slave GPU3, while slave GPU2 may perform second shader (e.g., , rivers, etc.) operations, slave GPU3 can perform a third shader (eg, particle smoke) operation, and master GPU1 combines the results from each of GPU1, GPU2, and GPU3. In this way, different GPUs can be assigned to perform different shader operations (flag waving, wind, smoke generation, fire, etc.) to render video frames. In yet another embodiment, each of the three GPUs can be assigned to different objects and/or portions of the scene corresponding to the video frame. In the above embodiments and implementations, these operations can be performed in the same frame period (concurrently in parallel) or in different frame periods (sequentially in parallel).

したがって、本開示は、サーバまたはクライアントのVSYNC信号を調整してサーバとクライアントとの間のVSYNC信号のオフセットを同期及び/または調整することを含む、メディアコンテンツをストリーミングするため及び/またはストリーミングメディアコンテンツを受信するため、クライアントで動的バッファリングを提供するため、及びクライアントでビデオフレームの復号と表示を重複させるために構成された方法及びシステムを説明する。 Accordingly, the present disclosure provides a method for streaming media content and/or streaming media content, including adjusting the VSYNC signal of a server or client to synchronize and/or adjust the offset of the VSYNC signal between the server and client. , provide dynamic buffering at the client, and overlap decoding and display of video frames at the client.

本明細書で定義される様々な実施形態が、本明細書に開示する様々な特徴を使用し、特定の実施態様に結合され得る、または組み込まれ得ることを理解されたい。したがって、提供される実施例は、いくつかの可能な実施例にすぎず、様々な要素を組み合わせることでより多くの実施態様を定義することが可能な様々な実施態様に限定されない。ある例では、ある実施態様は、開示されたまたは同等の実施態様の趣旨から逸脱することなく、より少ない要素を含んでもよい。 It should be understood that various embodiments defined herein can be combined or incorporated into specific implementations using various features disclosed herein. Accordingly, the examples provided are only a few possible examples, and are not limited to various implementations in which various elements can be combined to define more implementations. In some instances, an implementation may include fewer elements without departing from the spirit of the disclosed or equivalent implementations.

本開示の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースもしくはプログラム可能な消費者向け電気製品、ミニコンピュータ、及びメインフレームコンピュータなどを含む様々なコンピュータシステム構成で実施されてよい。本開示の実施形態はまた、有線ベースネットワークまたは無線ネットワークを介してリンクされる遠隔処理デバイスによりタスクが行われる分散コンピューティング環境においても、実施することができる。 Embodiments of the present disclosure may be practiced with various computer system configurations, including handheld devices, microprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like. Embodiments of the disclosure may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through wire-based or wireless networks.

上記の実施形態を念頭に置いて、本開示の実施形態がコンピュータシステムに格納されたデータを含む様々なコンピュータ実装の動作を使用し得ることを理解されたい。これらの動作は、物理量の物理的操作を要する動作である。本開示の実施形態の一部を形成する、本明細書で説明される動作のうちのいずれも、有用な機械動作である。開示の実施形態はまた、これら動作を実行するためのデバイスまたは装置に関する。装置は、必要な目的のために特別に構築されてもよい。または、装置は、コンピュータに記憶されたコンピュータプログラムにより選択的に起動または構成される汎用コンピュータであってもよい。具体的には、本明細書の教示に従って書かれたコンピュータプログラムと共に様々な汎用マシンを使用することができる、あるいは、必要な動作を実行するためにさらに特化した装置を構築するほうがより好都合である場合もある。 With the above embodiments in mind, it should be understood that embodiments of the disclosure may employ various computer-implemented operations involving data stored in computer systems. These operations are those requiring physical manipulations of physical quantities. Any of the operations described herein that form part of embodiments of the present disclosure are useful machine operations. The disclosed embodiments also relate to devices or apparatus for performing these operations. The device may be specially constructed for the required purpose. Alternatively, the apparatus may be a general purpose computer selectively activated or configured by a computer program stored in the computer. In particular, various general-purpose machines may be used with computer programs written in accordance with the teachings herein, or it may prove more convenient to construct more specialized apparatus to perform the required operations. Sometimes there is.

本開示はまた、コンピュータ可読媒体上のコンピュータ可読コードとしても具現化することができる。コンピュータ可読媒体は、後でコンピュータシステムにより読み出され得るデータを格納できる任意のデータストレージデバイスである。コンピュータ可読媒体の例には、ハードドライブ、ネットクワーク接続ストレージ(NAS)、読み出し専用メモリ、ランダムアクセスメモリ、CD-ROM、CD-R、CD-RW、磁気テープ、並びに他の光学及び非光学データストレージデバイスが含まれる。コンピュータ可読媒体には、コンピュータ可読コードが分散方式で格納され実行されるように、ネットワーク接続されたコンピュータシステムにわたり分散されたコンピュータ可読有形媒体が含まれ得る。 The present disclosure can also be embodied as computer readable code on a computer readable medium. A computer-readable medium is any data storage device that can store data that can later be read by a computer system. Examples of computer-readable media include hard drives, network-attached storage (NAS), read-only memory, random-access memory, CD-ROMs, CD-Rs, CD-RWs, magnetic tapes, and other optical and non-optical data. Includes storage devices. The computer-readable medium can include computer-readable tangible medium distributed over network-connected computer systems so that the computer-readable code is stored and executed in a distributed fashion.

方法の動作を特定の順序で記載したが、オーバーレイ動作の処理が所望の方法で実行される限り、動作間に他のハウスキーピング動作が実行されてよく、または動作がわずかに異なる時間に起こるように調整されてよく、またはシステム内に動作を分散することで、処理に関連する様々な間隔で処理動作が起こることを可能にしてよいことを、理解すべきである。 Although the method operations have been described in a particular order, other housekeeping operations may be performed between the operations, or the operations may occur at slightly different times, so long as the processing of the overlay operations is performed in the desired manner. or may be distributed within the system to allow processing operations to occur at various intervals associated with the processing.

前述の開示は、理解を明確にするためにある程度詳細に説明されたが、添付の特許請求の範囲内で特定の変更及び修正を実施できることは明らかであろう。したがって、本実施形態は、限定ではなく例示としてみなされるべきであり、本開示の実施形態は、本明細書に提供される詳細に限定されるものではなく、添付の特許請求の範囲内及び均等物内で変更されてもよい。 Although the foregoing disclosure has been described in some detail for clarity of understanding, it will be apparent that certain changes and modifications may be practiced within the scope of the appended claims. Accordingly, the embodiments are to be considered illustrative rather than limiting, and the embodiments of the present disclosure are not limited to the details provided herein, but within the scope and equivalents of the appended claims. May be changed within the object.

Claims (94)

サーバで、サーバVSYNC信号をサーバのVSYNC周波数に設定し、前記サーバVSYNC信号が前記サーバVSYNC周波数の複数のフレーム期間中の前記サーバでの複数のビデオフレームの生成に対応し、
クライアントで、クライアントVSYNC信号をクライアントVSYNC周波数に設定し、
前記サーバVSYNC信号を使用して、ネットワークを介して前記サーバから前記クライアントに前記複数のビデオフレームに基づく複数の圧縮ビデオフレームを送信し、
前記クライアントで、前記複数の圧縮ビデオフレームを復号及び表示し、かつ、
前記クライアントが前記複数の圧縮ビデオフレームを受信するときに、1つまたは複数のクライアント操作の前記タイミングを分析して、前記サーバVSYNC信号と前記クライアントVSYNC信号との間の前記相対的なタイミングを調整する、方法。
at a server, setting a server VSYNC signal to the server's VSYNC frequency, said server VSYNC signal corresponding to generation of video frames at said server during frame periods of said server VSYNC frequency;
At the client, set the client VSYNC signal to the client VSYNC frequency,
transmitting 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;
at the client, decode and display the plurality of compressed video frames; and
analyzing the timing of one or more client operations to adjust the relative timing between the server VSYNC signal and the client VSYNC signal as the client receives the plurality of compressed video frames; how to.
さらに、生成された前記複数のビデオフレームに関連するタイムスタンプ情報を前記サーバから前記クライアントに送信する、請求項1に記載の方法。 2. The method of claim 1, further comprising transmitting timestamp information associated with the plurality of generated video frames from the server to the client. 前記タイムスタンプ情報が前記複数の圧縮ビデオフレームと共に送信されるか、または前記タイムスタンプ情報が前記複数の圧縮ビデオフレームとは別に送信される、請求項2に記載の方法。 3. The method of claim 2, wherein the timestamp information is transmitted with the plurality of compressed video frames or the timestamp information is transmitted separately from the plurality of compressed video frames. 前記タイムスタンプ情報は、生成された対応するビデオフレームに対応するタイムスタンプを含み、
前記対応するタイムスタンプは、前記サーバでの対応するフリップ時間、または前記対応するビデオフレームをエンコーダにスキャンするために使用される前記サーバVSYNC信号の対応する発生時に発生する、請求項2に記載の方法。
the timestamp information includes timestamps corresponding to generated corresponding video frames;
3. The method of claim 2, wherein the corresponding timestamps occur at corresponding flip times at the server or at corresponding occurrences of the server VSYNC signal used to scan the corresponding video frames to an encoder. Method.
前記サーバから前記クライアントに送信された前記タイムスタンプ情報に基づいて、前記サーバVSYNC周波数と前記クライアントVSYNC周波数の少なくとも1つを類似するように調整することをさらに含む、請求項2に記載の方法。 3. The method of claim 2, further comprising adjusting at least one of the server VSYNC frequency and the client VSYNC frequency to be similar based on the timestamp information sent from the server to the client. 前記サーバから前記クライアントに送信された前記タイムスタンプ情報に基づいて、前記サーバVSYNC周波数と前記クライアントVSYNC信号の間の前記相対的なオフセットを調整することをさらに含む、請求項2に記載の方法。 3. The method of claim 2, further comprising adjusting the relative offset between the server VSYNC frequency and the client VSYNC signal based on the timestamp information sent from the server to the client. 前記サーバVSYNC信号と前記クライアントVSYNC信号の少なくとも1つを調整して、前記相対的なタイミングを調整することをさらに含む、請求項1に記載の方法。 2. The method of claim 1, further comprising adjusting at least one of the server VSYNC signal and the client VSYNC signal to adjust the relative timing. クライアントの操作の前記タイミングを継続的に分析し、かつ、
前記分析に基づいて、前記サーバVSYNC信号と前記クライアントVSYNC信号の少なくとも1つを調整することにより、前記相対的なタイミングを動的に調整することをさらに含む、請求項1に記載の方法。
continuously analyzing the timing of client operations; and
2. The method of claim 1, further comprising dynamically adjusting the relative timing by adjusting at least one of the server VSYNC signal and the client VSYNC signal based on the analysis.
さらに、前記サーバまたはクライアントで、前記サーバVSYNC周波数と前記クライアントVSYNC周波数の間のドリフトを決定し、かつ、
前記サーバまたはクライアントで、前記対応するサーバVSYNC周波数または前記クライアントVSYNC周波数を1つ以上のフレーム期間で調整して、前記ドリフトを補償する、請求項7に記載の方法。
Further, at the server or client, determine a drift between the server VSYNC frequency and the client VSYNC frequency; and
8. The method of claim 7, wherein the server or client adjusts the corresponding server VSYNC frequency or the client VSYNC frequency in one or more frame periods to compensate for the drift.
前記サーバVSYNC信号または前記クライアントVSYNC信号の少なくとも1つの調整では、
前記サーバVSYNC信号または前記クライアントVSYNC信号のフレーム期間の垂直帰線区間のラスタースキャンラインを除去または追加する、請求項7に記載の方法。
Adjusting at least one of the server VSYNC signal or the client VSYNC signal includes:
8. The method of claim 7, removing or adding a raster scanline in the vertical blanking interval of a frame period of the server VSYNC signal or the client VSYNC signal.
前記サーバVSYNC信号または前記クライアントVSYNC信号の少なくとも1つの前記調整では、
前記サーバまたは前記クライアントの対応するクロックをオーバークロックまたはアンダークロックする、請求項7に記載の方法。
The adjustment of at least one of the server VSYNC signal or the client VSYNC signal includes:
8. The method of claim 7, overclocking or underclocking the corresponding clocks of the server or the client.
前記サーバは、前記複数の圧縮ビデオフレームを生成するためのエンコーダを含み、前記複数の圧縮ビデオフレームは、ストリーミングモードで前記サーバによるアプリケーションの処理に応答して生成され、セッション中に前記クライアントに配信される、請求項1に記載の方法。 The server includes an encoder for generating the plurality of compressed video frames, the plurality of compressed video frames generated in response to processing of an application by the server in streaming mode and delivered to the client during a session. 2. The method of claim 1, wherein: 前記クライアントは、前記クライアントに関連付けられたディスプレイにレンダリングするために、前記複数の圧縮ビデオフレームを受信及び解凍するように構成される、請求項12に記載の方法。 13. The method of Claim 12, wherein the client is configured to receive and decompress the plurality of compressed video frames for rendering on a display associated with the client. 前記複数の圧縮ビデオフレームの前記クライアントによる前記復号のタイミングが分析され、前記サーバVSYNC信号と前記クライアントVSYNC信号との間の前記相対的なタイミングを調整するために使用される、請求項1に記載の方法。 2. The method of claim 1, wherein timing of said decoding by said client of said plurality of compressed video frames is analyzed and used to adjust said relative timing between said server VSYNC signal and said client VSYNC signal. the method of. さらに、前記複数の圧縮ビデオフレーム内の複数の符号化されたスライスの前記クライアントにより前記復号のタイミングを分析し、前記サーバVSYNC信号と前記クライアントVSYNC信号との間の前記相対的なタイミングを調整する、請求項14に記載の方法。 Further, analyzing the timing of the decoding by the client of multiple encoded slices within the multiple compressed video frames and adjusting the relative timing between the server VSYNC signal and the client VSYNC signal. 15. The method of claim 14. 前記複数の圧縮ビデオフレームの最悪に近い場合の復号時間が分析され、前記サーバVSYNC信号と前記クライアントVSYNC信号との間の前記相対的なタイミングを調整する、請求項14に記載の方法。 15. The method of claim 14, wherein near-worst-case decoding times of the plurality of compressed video frames are analyzed to adjust the relative timing between the server VSYNC signal and the client VSYNC signal. 前記最悪に近い場合の復号時間は、前記クライアントで受信された前記複数の圧縮ビデオフレームの復号時間の分布を測定することによって決定される、請求項16に記載の方法。 17. The method of claim 16, wherein the near worst case decoding time is determined by measuring a distribution of decoding times of the plurality of compressed video frames received at the client. 前記対応するビデオフレームの対応するスキャンアウトでエンコーダに生成される前記複数のビデオフレームのそれぞれについて、前記サーバで対応するタイムスタンプを提供し、
前記複数のビデオフレームの前記対応するタイムスタンプを前記クライアントに配信し、
前記複数のビデオフレームのそれぞれのタイミングを与えるヒストグラムを構築し、前記ビデオフレームは、前記サーバで提供される前記対応するタイムスタンプに関連する前記クライアントにおける対応する復号時間の前記クライアントに対して生成及び配信されるものであり、
前記複数の圧縮ビデオフレームの閾値パーセンテージが前記クライアントに到着し、前記対応するタイムスタンプによって示される前記クライアントVSYNC信号の対応する発生時に表示するために時間内に復号されるように、前記サーバVSYNC信号から前記クライアントVSYNC信号をオフセットすることをさらに含む、請求項1に記載の方法。
providing a corresponding timestamp at the server for each of the plurality of video frames produced in an encoder at a corresponding scanout of the corresponding video frame;
deliver the corresponding timestamps of the plurality of video frames to the client;
constructing a histogram giving the timing of each of the plurality of video frames, the video frames generated and generated for the client at corresponding decoding times at the client associated with the corresponding timestamps provided at the server; is to be delivered,
the server VSYNC signal such that a threshold percentage of the plurality of compressed video frames arrive at the client and are decoded in time for display at the corresponding occurrence of the client VSYNC signal indicated by the corresponding timestamp. 2. The method of claim 1, further comprising offsetting the client VSYNC signal from .
フレーム期間がほぼ等しいサイズである複数のフレーム期間の間に前記サーバが複数のビデオフレームを生成し、
クライアントで、クライアントVSYNC信号をクライアントVSYNC周波数に設定し、
前記複数のビデオフレームに基づく複数の圧縮ビデオフレームを前記サーバからゼクライアントに送信し、
前記クライアントで、前記複数の圧縮ビデオフレームを復号及び表示し、かつ、
1つまたは複数のクライアント操作の前記タイミングを分析して、前記クライアントVSYNC信号の前記相対的なタイミングを調整し、前記クライアントが前記複数の圧縮ビデオフレームを受信するときに、前記サーバで前記複数の圧縮ビデオフレームを生成する、方法。
generating a plurality of video frames by the server during a plurality of frame periods, where the frame periods are of approximately equal size;
At the client, set the client VSYNC signal to the client VSYNC frequency,
transmitting from the server to the client a plurality of compressed video frames based on the plurality of video frames;
at the client, decode and display the plurality of compressed video frames; and
analyzing the timing of one or more client operations to adjust the relative timing of the client VSYNC signal; A method for generating compressed video frames.
さらに、前記複数のフレーム期間に関連するタイムスタンプ情報を前記サーバから前記クライアントに定期的に送信する、請求項19に記載の方法。 20. The method of claim 19, further comprising periodically transmitting timestamp information associated with said plurality of frame periods from said server to said client. さらに、前記サーバまたはクライアントで、前記サーバVSYNC周波数と前記クライアントVSYNC周波数の間のドリフトを決定し、かつ、
前記サーバまたはクライアントで、前記対応するサーバVSYNC周波数または前記クライアントVSYNC周波数を1つ以上のフレーム期間で調整して、前記ドリフトを補償する、請求項19に記載の方法。
Further, at the server or client, determine a drift between the server VSYNC frequency and the client VSYNC frequency; and
20. The method of claim 19, wherein the server or client adjusts the corresponding server VSYNC frequency or the client VSYNC frequency in one or more frame periods to compensate for the drift.
前記対応するサーバVSYNC周波数または前記クライアントVSYNC周波数の調整では、
さらに、前記サーバVSYNC信号またはクライアントVSYNC信号のフレーム期間の垂直帰線区間のラスタースキャンラインを除去または追加する、請求項21に記載の方法。
In adjusting the corresponding server VSYNC frequency or the client VSYNC frequency,
22. The method of claim 21, further comprising removing or adding a raster scan line in a vertical blanking interval of a frame period of the server VSYNC signal or client VSYNC signal.
前記対応するサーバVSYNC周波数または前記クライアントVSYNC周波数の前記調整では、
前記サーバまたは前記クライアントの対応するクロックをオーバークロックまたはアンダークロックする、請求項21に記載の方法。
said adjustment of said corresponding server VSYNC frequency or said client VSYNC frequency comprising:
22. The method of claim 21, overclocking or underclocking corresponding clocks of the server or the client.
方法を実行するためのコンピュータプログラムを格納する非一時的なコンピュータ可読媒体であって、
サーバVSYNC信号を、サーバで、サーバのVSYNC周波数に設定するためのプログラム命令を有し、前記サーバVSYNC信号が前記サーバVSYNC周波数の複数のフレーム期間中の前記サーバでの複数のビデオフレームの生成に対応し、
クライアントVSYNC信号を、クライアントで、クライアントVSYNC周波数に設定するためのプログラム命令を有し、
前記サーバVSYNC信号を使用して、ネットワークを介して前記サーバから前記クライアントに前記複数のビデオフレームに基づく複数の圧縮ビデオフレームを送信するためのプログラム命令を有し、
前記クライアントが前記複数の圧縮ビデオフレームを復号及び表示するためのプログラム命令を有し、かつ、
前記クライアントが前記複数の圧縮ビデオフレームを受信するときに、1つまたは複数のクライアント操作の前記タイミングを分析して、前記サーバVSYNC信号と前記クライアントVSYNC信号との間の前記相対的なタイミングを調整するためのプログラム命令を有する、非一時的コンピュータ可読媒体。
A non-transitory computer readable medium storing a computer program for performing the method,
program instructions for setting a server VSYNC signal at a server to a server VSYNC frequency, said server VSYNC signal for generating a plurality of video frames at said server during a plurality of frames at said server VSYNC frequency. Correspondingly,
having program instructions for setting a client VSYNC signal at the client to a client VSYNC frequency;
having program instructions for transmitting 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;
said client having program instructions for decoding and displaying said plurality of compressed video frames; and
analyzing the timing of one or more client operations to adjust the relative timing between the server VSYNC signal and the client VSYNC signal as the client receives the plurality of compressed video frames; A non-transitory computer-readable medium having program instructions for
生成された前記複数のビデオフレームに関連するタイムスタンプ情報を前記サーバから前記クライアントに送信するためのプログラム命令をさらに有し、
前記タイムスタンプ情報は、生成された対応するビデオフレームに対応するタイムスタンプを含み、
前記対応するタイムスタンプは、前記サーバでの対応するフリップ時間、または前記対応するビデオフレームをエンコーダにスキャンするために使用される前記サーバVSYNC信号の対応する発生時に発生する、請求項24に記載の非一時的コンピュータ可読媒体。
further comprising program instructions for transmitting timestamp information associated with the plurality of generated video frames from the server to the client;
the timestamp information includes timestamps corresponding to generated corresponding video frames;
25. The method of claim 24, wherein the corresponding timestamps occur at corresponding flip times at the server or at corresponding occurrences of the server VSYNC signal used to scan the corresponding video frames to an encoder. Non-Transitory Computer-Readable Medium.
さらに、前記サーバから前記クライアントに送信された前記タイムスタンプ情報に基づいて、前記サーバVSYNC周波数と前記クライアントVSYNC周波数の少なくとも1つを類似するように調整する、請求項24に記載の非一時的コンピュータ可読媒体。 25. The non-transitory computer of claim 24, further adjusting at least one of the server VSYNC frequency and the client VSYNC frequency to be similar based on the timestamp information sent from the server to the client. readable medium. 前記サーバから前記クライアントに送信された前記タイムスタンプ情報に基づいて、前記サーバVSYNC周波数と前記クライアントVSYNC信号の間の前記相対的な位相またはオフセットを調整するためのプログラム命令をさらに有する、請求項24に記載の非一時的コンピュータ可読媒体。 25. Further comprising program instructions for adjusting the relative phase or offset between the server VSYNC frequency and the client VSYNC signal based on the timestamp information transmitted from the server to the client. The non-transitory computer-readable medium as described in . 前記サーバVSYNC信号と前記クライアントVSYNC信号の少なくとも1つを調整して、前記相対的なタイミングを調整するためのプログラム命令をさらに有する、請求項24に記載の非一時的コンピュータ可読媒体。 25. The non-transitory computer-readable medium of claim 24, further comprising program instructions for adjusting at least one of said server VSYNC signal and said client VSYNC signal to adjust said relative timing. 前記サーバまたはクライアントで、前記サーバVSYNC周波数と前記クライアントVSYNC周波数の間のドリフトを決定するためのプログラム命令、及び、
前記サーバまたはクライアントで、前記対応するサーバVSYNC周波数または前記クライアントVSYNC周波数を1つ以上のフレーム期間で調整して、前記ドリフトを補償するためのプログラム命令をさらに有する、請求項28に記載の非一時的コンピュータ可読媒体。
program instructions for determining, at the server or client, a drift between the server VSYNC frequency and the client VSYNC frequency; and
29. The non-transient device of claim 28, further comprising program instructions for adjusting, at the server or client, the corresponding server VSYNC frequency or the client VSYNC frequency in one or more frame periods to compensate for the drift. computer-readable medium.
前記サーバVSYNC信号または前記クライアントVSYNC信号の少なくとも1つを調整するための前記プログラム命令は、
対応するサーバVSYNC信号またはクライアントVSYNC信号のフレーム期間の垂直帰線区間のラスタースキャンラインを除去または追加するためのプログラム命令を有する、請求項28に記載の非一時的コンピュータ可読媒体。
The program instructions for adjusting at least one of the server VSYNC signal or the client VSYNC signal comprise:
29. The non-transitory computer-readable medium of claim 28, having program instructions for removing or adding raster scan lines in the vertical blanking interval of a frame period of a corresponding server VSYNC signal or client VSYNC signal.
前記サーバVSYNC信号または前記クライアントVSYNC信号の少なくとも1つを調整するためのプログラム命令は、
前記サーバまたは前記クライアントの対応するクロックをオーバークロックまたはアンダークロックするためのプログラム命令を有する、請求項28に記載の非一時的コンピュータ可読媒体。
Program instructions for adjusting at least one of the server VSYNC signal or the client VSYNC signal comprise:
29. The non-transitory computer-readable medium of claim 28, having program instructions for overclocking or underclocking corresponding clocks of the server or the client.
サーバVSYNC信号を、サーバで、複数のフレーム期間を定義するサーバのVSYNC周波数に設定し、前記サーバVSYNC信号は、前記複数のフレーム期間中の前記サーバでの複数のビデオフレームの生成に対応するものであり、
クライアントで、クライアントVSYNC信号をクライアントVSYNC周波数に設定し、
前記サーバVSYNC信号を使用して、ネットワークを介して前記サーバから前記クライアントに前記複数のビデオフレームに基づく複数の圧縮ビデオフレームを送信し、
前記クライアントで、前記複数の圧縮ビデオフレームを復号及び表示し、かつ、
前記クライアントが前記複数の圧縮ビデオフレームを受信するときに、1つまたは複数のクライアント操作の前記タイミングを分析して、前記クライアントにより使用されるフレームバッファリングの前記量を設定する、方法。
setting a server VSYNC signal at a server to a server VSYNC frequency defining a plurality of frame periods, said server VSYNC signal corresponding to generating a plurality of video frames at said server during said plurality of frame periods. and
At the client, set the client VSYNC signal to the client VSYNC frequency,
transmitting 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;
at the client, decode and display the plurality of compressed video frames; and
and 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.
前記フレームバッファリングの量は、経時的に前記クライアントによって動的に設定される、請求項32に記載の方法。 33. The method of claim 32, wherein the amount of frame buffering is dynamically set by the client over time. 前記フレームバッファリングの量が、前記クライアントでバッファリングするフレームの数を定義する、請求項32に記載の方法。 33. The method of claim 32, wherein the amount of frame buffering defines the number of frames to buffer at the client. さらに、前記1つまたは複数のクライアント操作の前記タイミングに基づいて、前記サーバVSYNC信号と前記クライアントVSYNC信号の間の相対的なタイミングを調整する、請求項32に記載の方法。 33. The method of claim 32, further comprising adjusting relative timing between the server VSYNC signal and the client VSYNC signal based on the timing of the one or more client operations. 前記複数のビデオフレームに関連付けられたタイムスタンプ情報を送信し、
各ビデオフレームの前記タイミングを与えるヒストグラムを構築し、前記ビデオフレームは、前記対応するタイムスタンプ情報に関連する前記クライアントでの対応する復号時間の前記クライアントに対して生成及び配信されるものであり、
ある瞬間の前記ヒストグラムの幅を測定し、かつ、
前記ヒストグラムの前記幅と前記フレーム期間に基づいて、前記クライアントで表示バッファの数を動的に設定する、請求項32に記載の方法。
transmitting timestamp information associated with the plurality of video frames;
constructing a histogram giving the timing of each video frame, the video frame being generated and delivered to the client at a corresponding decoding time at the client associated with the corresponding timestamp information;
measure the width of the histogram at a given moment; and
33. The method of claim 32, dynamically setting a number of display buffers at the client based on the width of the histogram and the frame duration.
対応する生成されたビデオフレームの対応するタイムスタンプ情報は、前記サーバでの対応するフリップタイムで発生するか、または、前記対応するビデオフレームをエンコーダにスキャンするために使用される前記サーバVSYNC信号の対応する発生時に発生する、請求項36に記載の方法。 The corresponding timestamp information of the corresponding generated video frame occurs at the corresponding flip time at the server or at the server VSYNC signal used to scan the corresponding video frame to the encoder. 37. The method of claim 36, occurring upon corresponding occurrence. 前記クライアントによって使用される前記フレームバッファリングの量は、待ち時間調整のための入力であり、前記待ち時間調整は、前記フレームが所定の時間より遅く到着した場合に前記クライアントでのフレームの表示をスキップすることを決定することを有する、請求項32に記載の方法。 The amount of frame buffering used by the client is an input for latency adjustment, which delays display of frames at the client if the frames arrive later than a predetermined time. 33. The method of claim 32, comprising deciding to skip. 復号される前記複数の圧縮ビデオフレームは、前記クライアントVSYNC信号を使用して表示される、請求項32に記載の方法。 33. The method of claim 32, wherein the decoded compressed video frames are displayed using the client VSYNC signal. 方法を実行するためのコンピュータプログラムを格納する非一時的コンピュータ可読媒体であって、
VSYNC信号を、サーバで、複数のフレーム期間を定義するサーバのVSYNC周波数に設定するためのプログラム命令を有し、前記サーバVSYNC信号は、前記複数のフレーム期間中の前記サーバでの複数のビデオフレームの生成に対応するものであり、
クライアントVSYNC信号を、クライアントで、クライアントVSYNC周波数に設定するためのプログラム命令を有し、
前記サーバVSYNC信号を使用して、ネットワークを介して前記サーバから前記クライアントに前記複数のビデオフレームに基づく複数の圧縮ビデオフレームを送信するためのプログラム命令を有し、
前記複数の圧縮ビデオフレームを、前記クライアントで、復号及び表示するためのプログラム命令を有し、かつ、
前記クライアントが前記複数の圧縮ビデオフレームを受信するときに、1つまたは複数のクライアント操作の前記タイミングを分析して、前記クライアントにより使用されるフレームバッファリングの前記量を設定するためのプログラム命令を有する、非一時的コンピュータ可読媒体。
A non-transitory computer-readable medium storing a computer program for performing the method,
program instructions for setting a VSYNC signal at a server to a VSYNC frequency of the server defining a plurality of frame periods, wherein the server VSYNC signal corresponds to a plurality of video frames at the server during the plurality of frame periods. corresponds to the generation of
having program instructions for setting a client VSYNC signal at the client to a client VSYNC frequency;
having program instructions for transmitting 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;
having program instructions for decoding and displaying, at the client, the plurality of compressed video frames; and
program instructions for analyzing the timing of one or more client operations and setting the amount of frame buffering used by the client when the client receives the plurality of compressed video frames; A non-transitory computer-readable medium, comprising:
前記方法において、前記フレームバッファリングの量は、経時的に前記クライアントによって動的に設定される、請求項40に記載の非一時的コンピュータ可読媒体。 41. The non-transitory computer-readable medium of claim 40, wherein in the method the amount of frame buffering is dynamically set by the client over time. 前記方法において、前記フレームバッファリングの量は、前記クライアントで前記バッファリングするフレームの数を定義する、請求項40に記載の非一時的コンピュータ可読媒体。 41. The non-transitory computer-readable medium of claim 40, wherein in the method the amount of frame buffering defines the number of frames to buffer at the client. 前記1つまたは複数のクライアント操作の前記タイミングに基づいて、前記サーバVSYNC信号と前記クライアントVSYNC信号の間の前記相対的なタイミングを調整するためのプログラム命令をさらに有する、請求項40に記載の非一時的コンピュータ可読媒体。 41. The method of claim 40, further comprising program instructions for adjusting the relative timing between the server VSYNC signal and the client VSYNC signal based on the timing of the one or more client operations. Temporary computer-readable medium. 前記複数のビデオフレームに関連付けられたタイムスタンプ情報を送信するためのプログラム命令を有し、
各ビデオフレームの前記タイミングを与えるヒストグラムを構築するためのプログラム命令を有し、前記ビデオフレームは、前記対応するタイムスタンプ情報に関連する前記クライアントでの対応する復号時間の前記クライアントに対して生成及び配信される
ある瞬間の前記ヒストグラムの幅を測定するためのプログラム命令を有し、かつ、
前記ヒストグラムの前記幅と前記フレーム期間に基づいて、前記クライアントで表示バッファの数を動的に設定するためのプログラム命令をさらに有する、請求項40に記載の非一時的コンピュータ可読媒体。
having program instructions for transmitting timestamp information associated with the plurality of video frames;
program instructions for building a histogram giving said timing of each video frame, said video frame being generated and generated for said client at a corresponding decoding time at said client associated with said corresponding timestamp information; having program instructions for measuring the width of said histogram at an instant in time; and
41. The non-transitory computer-readable medium of claim 40, further comprising program instructions for dynamically setting a number of display buffers at the client based on the width of the histogram and the frame duration.
前記方法において、生成される、前記対応するビデオフレームの対応するタイムスタンプ情報は、前記サーバでの対応するフリップタイムで、または前記対応するビデオフレームをエンコーダにスキャンするために使用される前記サーバVSYNC信号の対応する発生時に発生する、請求項44に記載の非一時的コンピュータ可読媒体。 In the method, the corresponding time stamp information of the corresponding video frame generated is VSYNC at the corresponding flip time at the server or at the server VSYNC used to scan the corresponding video frame to an encoder. 45. The non-transitory computer-readable medium of claim 44, occurring upon corresponding occurrence of a signal. 前記方法において、前記クライアントによって使用される前記フレームバッファリングの量は、待ち時間調整のための入力であり、前記待ち時間調整は、前記フレームが所定の時間より遅く到着した場合に前記クライアントでのフレームの表示をスキップすると決定する、請求項40に記載の非一時的コンピュータ可読媒体。 In the method, the amount of frame buffering used by the client is an input for latency adjustment, wherein the latency adjustment is a 41. The non-transitory computer-readable medium of claim 40, determining to skip display of frames. 前記方法において、前記復号される前記複数の圧縮ビデオフレームが、前記クライアントVSYNC信号を使用して表示される、請求項40に記載の非一時的コンピュータ可読媒体。 41. The non-transitory computer-readable medium of claim 40, wherein in the method the decoded compressed video frames are displayed using the client VSYNC signal. コンピュータシステムであって、
プロセッサと、
前記プロセッサに接続され、命令を格納しており、コンピュータシステムにより実行されると、方法を前記コンピュータシステムに実行させるメモリとを含み、前記方法では、
サーバVSYNC信号を、サーバで、複数のフレーム期間を定義するサーバのVSYNC周波数に設定し、前記サーバVSYNC信号は、前記複数のフレーム期間中の前記サーバでの複数のビデオフレームの生成に対応するものであり、
クライアントで、クライアントVSYNC信号をクライアントVSYNC周波数に設定し、
前記サーバVSYNC信号を使用して、ネットワークを介して前記サーバから前記クライアントに前記複数のビデオフレームに基づく複数の圧縮ビデオフレームを送信し、
前記クライアントで、前記複数の圧縮ビデオフレームを復号及び表示し、かつ、
前記クライアントが前記複数の圧縮ビデオフレームを受信するときに、1つまたは複数のクライアント操作の前記タイミングを分析して、前記クライアントにより使用されるフレームバッファリングの前記量を設定する、コンピュータシステム。
a computer system,
a processor;
a memory coupled to the processor and storing instructions that, when executed by a computer system, cause the computer system to perform a method, the method comprising:
setting a server VSYNC signal at a server to a server VSYNC frequency defining a plurality of frame periods, said server VSYNC signal corresponding to generation of a plurality of video frames at said server during said plurality of frame periods. and
At the client, set the client VSYNC signal to the client VSYNC frequency,
transmitting 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;
at the client, decode and display the plurality of compressed video frames; and
A computer system that analyzes the timing of one or more client operations to set the amount of frame buffering used by the client as the client receives the compressed video frames.
前記方法において、前記フレームバッファリングの量は、経時的に前記クライアントによって動的に設定される、請求項48に記載のコンピュータシステム。 49. The computer system of claim 48, wherein in the method the amount of frame buffering is dynamically set by the client over time. 前記方法において、前記フレームバッファリングの量が、前記クライアントでバッファリングするフレームの数を定義する、請求項48に記載のコンピュータシステム。 49. The computer system of claim 48, wherein in the method the amount of frame buffering defines the number of frames to buffer at the client. 前記方法では、さらに、
前記複数のビデオフレームに関連付けられたタイムスタンプ情報を送信し、
各ビデオフレームの前記タイミングを与えるヒストグラムを構築し、前記ビデオフレームは、前記対応するタイムスタンプ情報に関連する前記クライアントでの対応する復号時間の前記クライアントに対して生成及び配信されるものであり、
ある瞬間の前記ヒストグラムの幅を測定し、かつ、
前記ヒストグラムの前記幅と前記フレーム期間に基づいて、前記クライアントで表示バッファの数を動的に設定する、請求項48に記載のコンピュータシステム。
The method further comprises:
transmitting timestamp information associated with the plurality of video frames;
constructing a histogram giving the timing of each video frame, the video frame being generated and delivered to the client at a corresponding decoding time at the client associated with the corresponding timestamp information;
measure the width of the histogram at a given moment; and
49. The computer system of claim 48, dynamically setting the number of display buffers at the client based on the width of the histogram and the frame duration.
方法であって、
複数のデバイスにおいて、複数のVSYNC信号を複数のVSYNC周波数に設定し、対応するデバイスの対応するデバイスVSYNC信号は、対応するデバイスのVSYNC周波数に設定され、
前記複数のデバイス間で複数の信号を送信し、これらの信号は、少なくとも2つのデバイスの対応するデバイスのVSYNC信号間の相対的なタイミングを調整するために分析及び使用される、方法。
a method,
setting the plurality of VSYNC signals to the plurality of VSYNC frequencies in the plurality of devices, the corresponding device VSYNC signals of the corresponding devices being set to the VSYNC frequencies of the corresponding devices;
A method of transmitting a plurality of signals between said plurality of devices, said signals being analyzed and used to adjust relative timing between corresponding device VSYNC signals of at least two devices.
さらに、第1のデバイスはサーバデバイスであり、前記サーバデバイスに対してサーバVSYNC信号をサーバVSYNC周波数に設定し、前記サーバVSYNC信号は、前記サーバVSYNC周波数の前記複数の間にサーバデバイスでアプリケーションを実行する間の複数のフレーム期間のビデオフレームの生成に対応し、
前記サーバVSYNC信号を使用して、ネットワークを介して、前記サーバデバイスから前記複数のデバイスの残りのデバイスのそれぞれに、前記複数のビデオフレームに基づく複数の圧縮ビデオフレームを送信し、かつ、
前記複数のデバイスの前記残りのデバイスのそれぞれが、前記複数の圧縮ビデオフレームを復号及び表示し、
前記複数のデバイスの前記残りのデバイスのそれぞれでの前記複数の圧縮ビデオフレームの前記表示は同期されている、請求項52に記載の方法。
Further, the first device is a server device, for setting a server VSYNC signal to a server VSYNC frequency for said server device, said server VSYNC signal transmitting an application at said server device during said plurality of said server VSYNC frequencies. Supports generation of video frames for multiple frame periods during execution,
using the server VSYNC signal to transmit a plurality of compressed video frames based on the plurality of video frames from the server device to each of the remaining ones of the plurality of devices over a network; and
each of the remaining ones of the plurality of devices decoding and displaying the plurality of compressed video frames;
53. The method of Claim 52, wherein the display of the plurality of compressed video frames on each of the remaining ones of the plurality of devices is synchronized.
前記複数のデバイスの前記残りのデバイスのそれぞれは、サーバ及び前記サーバデバイスを備えたクライアントアーキテクチャで構成されたクライアントデバイスである、請求項53に記載の方法。 54. The method of claim 53, wherein each of said remaining devices of said plurality of devices is a client device configured in a client architecture comprising a server and said server device. 前記サーバデバイスは、前記複数のデバイスのうちの前記残りのデバイスと共にマルチテナント構成で構成される、請求項54に記載の方法。 55. The method of claim 54, wherein said server device is configured in a multi-tenant configuration with said remaining ones of said plurality of devices. さらに、前記複数のデバイスの対応するデバイスでアプリケーションを処理するときに、対応する複数のビデオフレームを生成し、かつ、
前記複数の前記複数のデバイスのそれぞれの前記対応するデバイスが、前記対応する複数のビデオフレームを表示し、
前記複数のデバイスでの対応する複数のビデオフレームの表示は同期されている、請求項52に記載の方法。
further generating a corresponding plurality of video frames when processing an application on a corresponding device of the plurality of devices; and
the corresponding device of each of the plurality of devices displaying the corresponding plurality of video frames;
53. The method of claim 52, wherein display of corresponding video frames on the multiple devices is synchronized.
前記複数のデバイスのそれぞれは、独立したピアデバイスであり、
前記複数のデバイスは、ピアツーピアゲームのためにピアツーピア構成で配置されている、請求項52に記載の方法。
each of the plurality of devices is an independent peer device;
53. The method of claim 52, wherein the plurality of devices are arranged in a peer-to-peer configuration for peer-to-peer gaming.
前記複数の信号のうちの少なくとも1つがタイムスタンプ情報を有する、請求項52に記載の方法。 53. The method of claim 52, wherein at least one of said plurality of signals has timestamp information. 前記複数の信号が分析されて、前記複数のデバイスのデバイスVSYNC信号が同期される、請求項52に記載の方法。 53. The method of claim 52, wherein the plurality of signals are analyzed to synchronize device VSYNC signals of the plurality of devices. 少なくとも2つのデバイスの対応するデバイスVSYNC信号間の前記相対的なタイミングは、
対応するデバイスの対応するデバイスのVSYNC信号の対応するフレーム期間の垂直帰線区間のラスタースキャンラインを除去または追加することによって調整される、請求項59に記載の方法。
the relative timing between corresponding device VSYNC signals of at least two devices comprising:
60. The method of claim 59 adjusted by removing or adding raster scan lines in the vertical blanking interval of the corresponding frame period of the VSYNC signal of the corresponding device of the corresponding device.
少なくとも2つのデバイスの対応するデバイスVSYNC信号間の前記相対的なタイミングは、
対応するデバイスの対応するクロックをオーバークロックまたはアンダークロックすることにより調整される、請求項59に記載の方法。
the relative timing between corresponding device VSYNC signals of at least two devices comprising:
60. The method of claim 59 adjusted by overclocking or underclocking corresponding clocks of corresponding devices.
さらに、第1のデバイスの第1のデバイスのVSYNC周波数と第2のデバイスの第2のデバイスのVSYNC周波数との間のドリフトを決定し、かつ、
前記ドリフトを補償するために、前記第1のデバイスまたは前記第2のデバイスが、対応するデバイスのVSYNC周波数を1つまたは複数のフレーム期間で調整する、請求項52に記載の方法。
further determining the drift between the VSYNC frequency of the first device of the first device and the VSYNC frequency of the second device of the second device;
53. The method of claim 52, wherein the first device or the second device adjusts the VSYNC frequency of the corresponding device in one or more frame periods to compensate for the drift.
方法を実行するためのコンピュータプログラムを格納する非一時的コンピュータ可読媒体であって、
複数のデバイスにおいて、複数のVSYNC信号を複数のVSYNC周波数に設定するためのプログラム命令を有し、対応するデバイスの対応するデバイスVSYNC信号は、対応するデバイスのVSYNC周波数に設定するものであり、かつ、
前記複数のデバイス間で複数の信号を送信するためのプログラム命令を有し、前記複数の信号は、少なくとも2つのデバイスの対応するデバイスVSYNC信号間の前記相対的なタイミングを調整するために分析及び使用される、非一時的コンピュータ可読媒体。
A non-transitory computer-readable medium storing a computer program for performing the method,
having program instructions for setting the plurality of VSYNC signals to the plurality of VSYNC frequencies in the plurality of devices, wherein the corresponding device VSYNC signals of the corresponding devices are to set the VSYNC frequencies of the corresponding devices; ,
comprising program instructions for transmitting a plurality of signals between the plurality of devices, the plurality of signals being analyzed and adjusted to adjust the relative timing between corresponding device VSYNC signals of at least two devices; A non-transitory computer-readable medium used.
サーバVSYNC信号を、サーバで、サーバのVSYNC周波数に設定するためのプログラム命令を有し、前記サーバVSYNC信号が前記サーバVSYNC周波数の複数のフレーム期間中の前記サーバでのアプリケーションの複数のビデオフレームの生成に対応するものであり、
前記サーバVSYNC信号を使用して、ネットワークを介して前記サーバから前記複数のデバイスに、ビデオフレームに基づく複数の圧縮ビデオフレームを送信するためのプログラム命令を有し、かつ、
複数のデバイスのそれぞれが、複数の圧縮ビデオフレームを復号及び表示するためのプログラム命令をさらに有し、
前記複数のデバイスでの前記複数の圧縮ビデオフレームの前記表示は同期されている、請求項63に記載の非一時的コンピュータ可読媒体。
program instructions for setting a server VSYNC signal at a server to a server VSYNC frequency, wherein the server VSYNC signal is for a plurality of video frames of an application at the server during a plurality of frames at the server VSYNC frequency; corresponds to the generation of
having program instructions for transmitting a plurality of compressed video frames based on the video frames from the server to the plurality of devices over a network using the server VSYNC signal; and
each of the plurality of devices further having program instructions for decoding and displaying the plurality of compressed video frames;
64. The non-transitory computer-readable medium of claim 63, wherein said display of said plurality of compressed video frames on said plurality of devices is synchronized.
前記方法では、前記複数のデバイスのそれぞれがクライアントデバイスであり、
前記方法では、前記複数のデバイスのそれぞれがサーバ及びクライアントアーキテクチャで構成される、請求項64に記載の非一時的コンピュータ可読媒体。
In the method, each of the plurality of devices is a client device;
65. The non-transitory computer-readable medium of claim 64, wherein in said method each of said plurality of devices is configured in a server and client architecture.
前記複数のデバイスの対応するデバイスでのアプリケーションの対応する複数のビデオフレームを生成するためのプログラム命令と、及び、
前記複数の複数のデバイスのそれぞれの対応するデバイスが、前記対応する複数のビデオフレームを表示するためのプログラム命令をさらに有し、
前記複数のデバイスでの対応する複数のビデオフレームの表示は同期されている、請求項63に記載の非一時的コンピュータ可読媒体。
program instructions for generating a corresponding plurality of video frames of an application on a corresponding device of the plurality of devices; and
a corresponding device of each of the plurality of devices further comprising program instructions for displaying the corresponding plurality of video frames;
64. The non-transitory computer-readable medium of claim 63, wherein display of corresponding multiple video frames on the multiple devices are synchronized.
前記方法では、前記複数のデバイスのそれぞれは、独立したピアデバイスであり、
前記方法では、前記複数のデバイスは、ピアツーピアゲームのためにピアツーピア構成で配置されている、請求項66に記載の非一時的コンピュータ可読媒体。
wherein each of the plurality of devices is an independent peer device;
67. The non-transitory computer-readable medium of claim 66, wherein in the method the plurality of devices are arranged in a peer-to-peer configuration for peer-to-peer gaming.
前記方法において、前記複数の信号が分析されて、複数のデバイスのデバイスVSYNC信号を同期させる、請求項63に記載の非一時的コンピュータ可読媒体。 64. The non-transitory computer-readable medium of claim 63, wherein the method analyzes the plurality of signals to synchronize device VSYNC signals of a plurality of devices. コンピュータシステムであって、
プロセッサと、
前記プロセッサに接続され、命令を格納しており、前記コンピュータシステムにより実行されると、方法を前記コンピュータシステムに実行させるメモリとを有し、前記方法では、
複数のデバイスにおいて、複数のVSYNC信号を複数のVSYNC周波数に設定し、対応するデバイスの対応するデバイスVSYNC信号は、対応するデバイスのVSYNC周波数に設定し、
前記複数のデバイス間で複数の信号を送信し、前記複数の信号は、少なくとも2つのデバイスの対応するデバイスのVSYNC信号間の相対的なタイミングを調整するために分析及び使用される、コンピュータシステム。
a computer system,
a processor;
a memory coupled to the processor and storing instructions which, when executed by the computer system, cause the computer system to perform a method, the method comprising:
setting the plurality of VSYNC signals to the plurality of VSYNC frequencies in the plurality of devices, setting the corresponding device VSYNC signals of the corresponding devices to the VSYNC frequencies of the corresponding devices;
A computer system for transmitting a plurality of signals between said plurality of devices, said plurality of signals being analyzed and used to adjust relative timing between VSYNC signals of corresponding devices of at least two devices.
前記方法では、さらに、
サーバVSYNC信号を、サーバで、サーバVSYNC周波数に設定し、前記サーバVSYNC信号は、前記サーバVSYNC周波数の複数のフレーム期間中の前記サーバでのアプリケーションの複数のビデオフレームの生成に対応し、
前記サーバVSYNC信号を使用して、ネットワークを介して前記サーバから前記複数のデバイスに、ビデオフレームに基づく複数の圧縮ビデオフレームを送信し、かつ、
複数のデバイスのそれぞれが、複数の圧縮ビデオフレームを復号及び表示し、
前記複数のデバイスでの前記複数の圧縮ビデオフレームの前記表示は同期されている、請求項69に記載のコンピュータシステム。
The method further comprises:
setting a server VSYNC signal at a server to a server VSYNC frequency, said server VSYNC signal corresponding to generation of video frames of an application at said server during frames at said server VSYNC frequency;
using the server VSYNC signal to transmit a plurality of compressed video frames based on the video frames from the server to the plurality of devices over a network; and
each of the multiple devices decoding and displaying multiple compressed video frames;
70. The computer system of Claim 69, wherein said display of said plurality of compressed video frames on said plurality of devices is synchronized.
前記方法では、前記複数のデバイスのそれぞれがクライアントデバイスであり、
前記方法では、前記複数のデバイスのそれぞれがサーバ及びクライアントアーキテクチャで構成される、請求項70に記載のコンピュータシステム。
In the method, each of the plurality of devices is a client device;
71. The computer system of claim 70, wherein in said method each of said plurality of devices is configured in a server and client architecture.
さらに、前記複数のデバイスの対応するデバイスでのアプリケーションの対応する複数のビデオフレームを生成し、かつ、
前記複数の前記複数のデバイスのそれぞれの対応するデバイスが、前記対応する複数のビデオフレームを表示し、
前記複数のデバイスでの対応する複数のビデオフレームの表示は同期されている、請求項69に記載のコンピュータシステム。
further generating a corresponding plurality of video frames of an application on a corresponding device of the plurality of devices; and
each corresponding device of the plurality of the plurality of devices displaying the corresponding plurality of video frames;
70. The computer system of claim 69, wherein display of corresponding video frames on said multiple devices is synchronized.
前記方法では、前記複数のデバイスのそれぞれは、独立したピアデバイスであり、
前記方法では、前記複数のデバイスは、ピアツーピアゲームのためにピアツーピア構成で配置されている、請求項72に記載のコンピュータシステム。
wherein each of the plurality of devices is an independent peer device;
73. The computer system of claim 72, wherein in the method the plurality of devices are arranged in a peer-to-peer configuration for peer-to-peer gaming.
前記方法において、前記複数の信号が分析されて、前記複数のデバイスのデバイスVSYNC信号が同期される、請求項69に記載のコンピュータシステム。 70. The computer system of claim 69, wherein the method analyzes the plurality of signals to synchronize device VSYNC signals of the plurality of devices. クラウドゲームの方法であって、
クライアントで符号化されたビデオフレームを受信し、サーバがアプリケーションを実行してレンダリングされたビデオフレームを生成し、それが次に前記サーバのエンコーダで符号化されたビデオフレームとして符号化され、前記符号化されたビデオフレームは、圧縮された1つまたは複数の符号化されたスライスを有するものであり、
1つまたは複数の復号されたスライスを生成するために、前記クライアントのデコーダで前記1つまたは複数の符号化されたスライスを復号し、
前記クライアントで表示するために前記1つ以上の復号されたスライスをレンダリングし、かつ、
前記クライアントで前記1つまたは複数の符号化されたスライスを完全に受信する前にレンダリングされる前記1つまたは複数の復号されたスライスの表示を開始する、方法。
A method of cloud gaming, comprising:
A client receives an encoded video frame and a server runs an application to produce a rendered video frame, which is then encoded as an encoded video frame in an encoder of said server, said encoding a coded video frame having one or more coded slices that have been compressed;
decoding the one or more encoded slices at a decoder of the client to generate one or more decoded slices;
render the one or more decoded slices for display at the client; and
starting display of the one or more decoded slices to be rendered prior to complete reception of the one or more encoded slices at the client.
前記クライアントで前記符号化されたビデオフレームを完全に受信する前に、前記1つ以上の符号化されたスライスの復号を開始することをさらに有する、請求項75に記載の方法。 76. The method of claim 75, further comprising initiating decoding of the one or more encoded slices prior to receiving the encoded video frame completely at the client. レンダリングされる前記1つまたは複数の復号されたスライスの表示の開始では、
前記1つまたは複数の符号化されたスライスを完全に復号する前にレンダリングされる前記1つまたは複数の復号されたスライスの表示を開始る、請求項75に記載の方法。
At the start of display of the one or more decoded slices to be rendered,
76. The method of claim 75, beginning display of the one or more decoded slices rendered prior to fully decoding the one or more encoded slices.
さらに、前記サーバで、サーバVSYNC信号をサーバのVSYNC周波数に設定し、前記サーバVSYNC信号は、前記サーバVSYNC周波数の複数のフレーム期間中の前記サーバでの複数のレンダリングされたビデオフレームの生成に対応し、
前記クライアントで、クライアントVSYNC信号をクライアントVSYNC周波数に設定し、
前記サーバVSYNC信号を使用して、ネットワークを介して前記サーバから前記クライアントに前記複数のレンダリングされたビデオフレームに基づく複数の圧縮ビデオフレームを送信し、
前記クライアントで、前記複数の圧縮ビデオフレームを復号及び表示し、かつ、
前記クライアントが前記複数の圧縮ビデオフレームを受信するときに、1つまたは複数のクライアント操作の前記タイミングを分析して、前記サーバVSYNC信号と前記クライアントVSYNC信号との間の前記相対的なタイミングを調整する、請求項75に記載の方法。
Further, at the server, setting a server VSYNC signal to a VSYNC frequency of the server, the server VSYNC signal corresponding to generating a plurality of rendered video frames at the server during a plurality of frames at the server VSYNC frequency. death,
at the client, setting a client VSYNC signal to the client VSYNC frequency;
transmitting compressed video frames based on the rendered video frames from the server to the client over a network using the server VSYNC signal;
at the client, decode and display the plurality of compressed video frames; and
analyzing the timing of one or more client operations to adjust the relative timing between the server VSYNC signal and the client VSYNC signal as the client receives the plurality of compressed video frames; 76. The method of claim 75, wherein
前記サーバVSYNC信号と前記クライアントVSYNC信号との間の前記相対的なタイミングの調整がなされ、この調整は、
生成された前記複数のビデオフレームに関連するタイムスタンプ情報を前記サーバから前記クライアントに送信し、ここで、対応するレンダリングされた生成されたビデオフレームの対応するタイムスタンプは、前記サーバでの対応するフリップタイムで、または前記対応するビデオフレームをエンコーダにスキャンするために使用される前記サーバVSYNC信号の対応する発生時に発生するものであり、
前記サーバから前記クライアントに送信された前記タイムスタンプ情報に基づいて、前記サーバVSYNC周波数とクライアントのVSYNC周波数の少なくとも1つを類似するように調整し、かつ、
前記サーバから前記クライアントに送信された前記タイムスタンプ情報に基づいて、前記サーバVSYNC周波数と前記クライアントVSYNC信号の間の前記相対的なオフセットを調整することによって行われる、請求項78に記載の方法。
an adjustment of the relative timing between the server VSYNC signal and the client VSYNC signal is made, the adjustment comprising:
Transmit timestamp information associated with the plurality of generated video frames from the server to the client, wherein corresponding timestamps of corresponding rendered generated video frames correspond to corresponding timestamps at the server. occurring at flip time or at the corresponding occurrence of the server VSYNC signal used to scan the corresponding video frame to the encoder;
adjusting at least one of the server VSYNC frequency and the client VSYNC frequency to be similar based on the timestamp information sent from the server to the client; and
79. The method of claim 78, performed by adjusting the relative offset between the server VSYNC frequency and the client VSYNC signal based on the timestamp information sent from the server to the client.
前記タイムスタンプ情報が前記複数の圧縮ビデオフレームと共に送信されるか、または前記タイムスタンプ情報が前記複数の圧縮ビデオフレームとは別に送信される、請求項79に記載の方法。 80. The method of Claim 79, wherein the timestamp information is transmitted with the plurality of compressed video frames or the timestamp information is transmitted separately from the plurality of compressed video frames. 前記サーバVSYNC信号と前記クライアントVSYNC信号との間の前記相対的なタイミングは、
前記サーバVSYNC信号または前記クライアントVSYNC信号のフレーム期間の垂直帰線区間のラスタースキャンラインを除去または追加することによって調整される、請求項78に記載の方法。
The relative timing between the server VSYNC signal and the client VSYNC signal is
79. The method of claim 78, adjusted by removing or adding raster scan lines in the vertical blanking interval of a frame period of the server VSYNC signal or the client VSYNC signal.
クラウドゲームの方法を実行するためのコンピュータプログラムを格納する非一時的コンピュータ可読媒体であって、
クライアントで符号化されたビデオフレームを受信するためのプログラム命令を有し、サーバがアプリケーションを実行してレンダリングされたビデオフレームを生成し、それが次に前記サーバのエンコーダで前記符号化されたビデオフレームとして符号化され、前記符号化されたビデオフレームは、圧縮された1つまたは複数の符号化されたスライスを有するものであり、
1つまたは複数の復号されたスライスを生成するために、前記クライアントのデコーダで前記1つまたは複数の符号化されたスライスを復号するためのプログラム命令を有し、
前記クライアントで表示するために前記1つまたは複数の復号されたスライスをレンダリングするためのプログラム命令を有し、かつ、
前記クライアントで前記1つまたは複数の符号化されたスライスを完全に受信する前にレンダリングされる前記1つまたは複数の復号されたスライスの表示を開始するためのプログラム命令を有する、非一時的コンピュータ可読媒体。
A non-transitory computer-readable medium storing a computer program for performing the cloud gaming method,
having program instructions for receiving encoded video frames at a client, a server executing an application to generate rendered video frames, which are then encoded at an encoder at the server; encoded as a frame, said encoded video frame comprising one or more encoded slices that have been compressed;
having program instructions for decoding the one or more encoded slices at a decoder of the client to generate one or more decoded slices;
having program instructions for rendering the one or more decoded slices for display at the client; and
A non-transitory computer having program instructions for initiating display of the one or more decoded slices rendered prior to fully receiving the one or more encoded slices at the client. readable medium.
前記クライアントで符号化されたビデオフレームを完全に受信する前に、前記1つ以上の符号化されたスライスの復号を開始するためのプログラム命令をさらに有する、請求項82に記載の非一時的コンピュータ可読媒体。 83. The non-transitory computer of Claim 82, further comprising program instructions for starting decoding of said one or more encoded slices prior to receiving a complete encoded video frame at said client. readable medium. レンダリングされる前記1つまたは複数の復号されたスライスの表示を開始するための前記プログラム命令が、
前記1つまたは複数の符号化されたスライスを完全に復号する前にレンダリングされる前記1つまたは複数の復号されたスライスの表示を開始するためのプログラム命令を有する、請求項82に記載の非一時的コンピュータ可読媒体。
said program instructions for initiating display of said one or more decoded slices to be rendered;
83. The method of claim 82, comprising program instructions for initiating display of the one or more decoded slices rendered prior to fully decoding the one or more encoded slices. Temporary computer-readable medium.
前記サーバで、サーバVSYNC信号をサーバのVSYNC周波数に設定するためのプログラム命令を有し、前記サーバVSYNC信号は、前記サーバVSYNC周波数の複数のフレーム期間中の前記サーバでの複数のレンダリングされたビデオフレームの生成に対応するものであり、
前記クライアントで、クライアントVSYNC信号をクライアントVSYNC周波数に設定するためのプログラム命令を有し、
前記サーバVSYNC信号を使用して、ネットワークを介して前記サーバから前記クライアントに前記複数のレンダリングされたビデオフレームに基づく複数の圧縮ビデオフレームを送信するためのプログラム命令を有し、
前記クライアントで、前記複数の圧縮ビデオフレームを復号及び表示するためのプログラム命令を有し、かつ、
前記クライアントが前記複数の圧縮ビデオフレームを受信するときに、1つまたは複数のクライアント操作の前記タイミングを分析して、前記サーバVSYNC信号と前記クライアントVSYNC信号との間の前記相対的なタイミングを調整するためのプログラム命令をさらに有する、請求項82に記載の非一時的コンピュータ可読媒体。
At the server, having program instructions for setting a server VSYNC signal to a VSYNC frequency of the server, the server VSYNC signal being a plurality of rendered video at the server during a plurality of frame periods of the server VSYNC frequency. corresponds to frame generation,
at the client, comprising program instructions for setting a client VSYNC signal to a client VSYNC frequency;
having program instructions for transmitting a plurality of compressed video frames based on the plurality of rendered video frames from the server to the client over a network using the server VSYNC signal;
having program instructions for decoding and displaying the plurality of compressed video frames at the client; and
analyzing the timing of one or more client operations to adjust the relative timing between the server VSYNC signal and the client VSYNC signal as the client receives the plurality of compressed video frames; 83. The non-transitory computer-readable medium of Claim 82, further comprising program instructions for:
前記プログラム命令において、前記サーバVSYNC信号と前記クライアントVSYNC信号との間の前記相対的なタイミングの調整がなされ、この調整は、
生成された前記複数のレンダリングされたビデオフレームに関連するタイムスタンプ情報を前記サーバから前記クライアントに送信するためのプログラム命令であって、対応するレンダリングされた生成されたビデオフレームの対応するタイムスタンプは、前記サーバでの対応するフリップタイムで、または前記対応するビデオフレームをエンコーダにスキャンするために使用される前記サーバVSYNC信号の対応する発生時に発生するものである、プログラム命令と、
前記サーバから前記クライアントに送信された前記タイムスタンプ情報に基づいて、前記サーバVSYNC周波数と前記クライアントVSYNC周波数の少なくとも1つを類似するように調整するためのプログラム命令と、
前記サーバから前記クライアントに送信された前記タイムスタンプ情報に基づいて、前記サーバVSYNC周波数と前記クライアントVSYNC信号の間の前記相対的な位相またはオフセットを調整するためのプログラム命令と、によって行われる、請求項85に記載の非一時的コンピュータ可読媒体。
In said program instructions, an adjustment of said relative timing between said server VSYNC signal and said client VSYNC signal is made, said adjustment comprising:
Program instructions for transmitting timestamp information associated with the plurality of generated rendered video frames from the server to the client, wherein the corresponding timestamps of corresponding rendered generated video frames are: , at a corresponding flip time at the server or at a corresponding occurrence of the server VSYNC signal used to scan the corresponding video frame to an encoder;
program instructions for adjusting at least one of the server VSYNC frequency and the client VSYNC frequency to be similar based on the timestamp information sent from the server to the client;
and program instructions for adjusting the relative phase or offset between the server VSYNC frequency and the client VSYNC signal based on the timestamp information transmitted from the server to the client. 86. The non-transitory computer-readable medium of Clause 85.
前記方法において、前記タイムスタンプ情報が前記複数の圧縮ビデオフレームと共に送信されるか、または前記タイムスタンプ情報が前記複数の圧縮ビデオフレームとは別に送信される、請求項86に記載の非一時的コンピュータ可読媒体。 87. The non-transitory computer of Claim 86, wherein in said method said timestamp information is transmitted with said plurality of compressed video frames, or said timestamp information is transmitted separately from said plurality of compressed video frames. readable medium. 前記方法において、前記サーバVSYNC信号と前記クライアントVSYNC信号との間の前記相対的なタイミングは、
前記サーバVSYNC信号または前記クライアントVSYNC信号のフレーム期間の垂直帰線区間のラスタースキャンラインを除去または追加することによって調整される、請求項85に記載の非一時的コンピュータ可読媒体。
In the method, the relative timing between the server VSYNC signal and the client VSYNC signal comprises:
86. The non-transitory computer-readable medium of claim 85 adjusted by removing or adding raster scan lines in vertical blanking intervals of frame intervals of the server VSYNC signal or the client VSYNC signal.
コンピュータシステムであって、
プロセッサと、
前記プロセッサに接続され、命令を格納しており、前記コンピュータシステムにより実行されると、クラウドゲームの方法を前記コンピュータシステムに実行させるメモリを含み、前記方法では、
クライアントで符号化されたビデオフレームを受信し、サーバがアプリケーションを実行してレンダリングされたビデオフレームを生成し、それが次に前記サーバのエンコーダで符号化されたビデオフレームとして符号化され、前記符号化されたビデオフレームは、圧縮された1つまたは複数の符号化されたスライスを有するものであり、
1つまたは複数の復号されたスライスを生成するために、前記クライアントのデコーダで前記1つまたは複数の符号化されたスライスを復号し、
前記クライアントで表示するために前記1つ以上の復号されたスライスをレンダリングし、かつ、
前記クライアントで前記1つまたは複数の符号化されたスライスを完全に受信する前にレンダリングされる前記1つまたは複数の復号されたスライスの表示を開始する、コンピュータシステム。
a computer system,
a processor;
a memory coupled to the processor and storing instructions which, when executed by the computer system, cause the computer system to perform a method of cloud gaming, the method comprising:
A client receives an encoded video frame and a server runs an application to produce a rendered video frame, which is then encoded as an encoded video frame in an encoder of said server, said encoding a encoded video frame having one or more encoded slices that have been compressed;
decoding the one or more encoded slices at a decoder of the client to generate one or more decoded slices;
render the one or more decoded slices for display at the client; and
A computer system that initiates display of the one or more decoded slices rendered prior to complete reception of the one or more encoded slices at the client.
前記方法では、
前記クライアントで符号化されたビデオフレームを完全に受信する前に、前記1つ以上の符号化されたスライスの復号を開始することをさらに有する、請求項89に記載のコンピュータシステム。
In said method,
90. The computer system of Claim 89, further comprising initiating decoding of the one or more encoded slices prior to receiving a complete encoded video frame at the client.
前記方法において、レンダリングされる前記1つまたは複数の復号されたスライスの表示の開始では、
前記1つまたは複数の符号化されたスライスを完全に復号する前に前記ディスプレイでレンダリングされる前記1つまたは複数の復号されたスライスの表示を開始する、請求項89に記載のコンピュータシステム。
In the method, at the start of display of the one or more decoded slices to be rendered,
90. The computer system of claim 89, beginning displaying the one or more decoded slices rendered on the display before fully decoding the one or more encoded slices.
前記方法では、さらに、
前記サーバで、サーバVSYNC信号をサーバのVSYNC周波数に設定し、前記サーバVSYNC信号は、前記サーバVSYNC周波数の複数のフレーム期間中の前記サーバでの複数のレンダリングされたビデオフレームの生成に対応するものであり、
前記クライアントで、クライアントVSYNC信号をクライアントVSYNC周波数に設定し、
前記サーバVSYNC信号を使用して、ネットワークを介して前記サーバから前記クライアントに前記複数のレンダリングされたビデオフレームに基づく複数の圧縮ビデオフレームを送信し、
前記クライアントで、前記複数の圧縮ビデオフレームを復号及び表示し、かつ、
前記クライアントが前記複数の圧縮ビデオフレームを受信するときに、1つまたは複数のクライアント操作の前記タイミングを分析して、前記サーバVSYNC信号と前記クライアントVSYNC信号との間の前記相対的なタイミングを調整する、請求項89に記載のコンピュータシステム。
The method further comprises:
at the server, setting a server VSYNC signal to the server's VSYNC frequency, the server VSYNC signal corresponding to generation of a plurality of rendered video frames at the server during a plurality of frame periods of the server VSYNC frequency. and
at the client, setting a client VSYNC signal to the client VSYNC frequency;
transmitting compressed video frames based on the rendered video frames from the server to the client over a network using the server VSYNC signal;
at the client, decode and display the plurality of compressed video frames; and
analyzing the timing of one or more client operations to adjust the relative timing between the server VSYNC signal and the client VSYNC signal as the client receives the plurality of compressed video frames; 90. The computer system of claim 89, wherein:
前記方法において、前記サーバVSYNC信号と前記クライアントVSYNC信号との間の前記相対的なタイミングの調整がなされ、この調整は、
生成された前記複数のビデオフレームに関連するタイムスタンプ情報を前記サーバから前記クライアントに送信し、ここで、対応するレンダリングされた生成されたビデオフレームの対応するタイムスタンプは、前記サーバでの対応するフリップタイムで、または前記対応するビデオフレームをエンコーダにスキャンするために使用される前記サーバVSYNC信号の対応する発生時に発生するものであり、
前記サーバから前記クライアントに送信された前記タイムスタンプ情報に基づいて、前記サーバVSYNC周波数とクライアントのVSYNC周波数の少なくとも1つを類似するように調整し、及び
前記サーバから前記クライアントに送信された前記タイムスタンプ情報に基づいて、前記サーバVSYNC周波数と前記クライアントVSYNC信号の間の前記相対的なオフセットを調整することによって行われる、請求項92に記載のコンピュータシステム。
In the method, an adjustment of the relative timing between the server VSYNC signal and the client VSYNC signal is made, the adjustment comprising:
Transmit timestamp information associated with the plurality of generated video frames from the server to the client, wherein corresponding timestamps of corresponding rendered generated video frames correspond to corresponding timestamps at the server. occurring at flip time or at the corresponding occurrence of the server VSYNC signal used to scan the corresponding video frame to the encoder;
adjusting at least one of the server VSYNC frequency and the client VSYNC frequency to be similar based on the time stamp information sent from the server to the client; and the time sent from the server to the client. 93. The computer system of claim 92, by adjusting the relative offset between the server VSYNC frequency and the client VSYNC signal based on stamp information.
前記方法において、前記サーバVSYNC信号と前記クライアントVSYNC信号との間の前記相対的なタイミングは、
前記サーバVSYNC信号または前記クライアントVSYNC信号のフレーム期間の垂直帰線区間のラスタースキャンラインを除去または追加することによって調整される、請求項92に記載のコンピュータシステム。
In the method, the relative timing between the server VSYNC signal and the client VSYNC signal comprises:
93. The computer system of claim 92 adjusted by removing or adding raster scan lines in the vertical blanking interval of a frame period of the server VSYNC signal or the client VSYNC signal.
JP2022520318A 2019-10-01 2020-09-29 Synchronization and offset of VSYNC between cloud gaming server and client Pending JP2022551587A (en)

Applications Claiming Priority (17)

Application Number Priority Date Filing Date Title
US201962909132P 2019-10-01 2019-10-01
US201962909152P 2019-10-01 2019-10-01
US201962909142P 2019-10-01 2019-10-01
US201962909118P 2019-10-01 2019-10-01
US62/909,118 2019-10-01
US62/909,142 2019-10-01
US62/909,152 2019-10-01
US62/909,132 2019-10-01
US16/696,125 2019-11-26
US16/696,125 US11110349B2 (en) 2019-10-01 2019-11-26 Dynamic client buffering and usage of received video frames for cloud gaming
US16/696,214 US11235235B2 (en) 2019-10-01 2019-11-26 Synchronization and offset of VSYNC between gaming devices
US16/696,214 2019-11-26
US16/696,363 US11020661B2 (en) 2019-10-01 2019-11-26 Reducing latency in cloud gaming applications by overlapping reception and decoding of video frames and their display
US16/696,040 2019-11-26
US16/696,040 US10974142B1 (en) 2019-10-01 2019-11-26 Synchronization and offset of VSYNC between cloud gaming server and client
US16/696,363 2019-11-26
PCT/US2020/053343 WO2021067317A2 (en) 2019-10-01 2020-09-29 Synchronization and offset of vsync between cloud gaming server and client

Publications (2)

Publication Number Publication Date
JP2022551587A true JP2022551587A (en) 2022-12-12
JPWO2021067317A5 JPWO2021067317A5 (en) 2023-07-27

Family

ID=75161623

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022520318A Pending JP2022551587A (en) 2019-10-01 2020-09-29 Synchronization and offset of VSYNC between cloud gaming server and client

Country Status (5)

Country Link
US (12) US11110349B2 (en)
EP (1) EP4037787B1 (en)
JP (1) JP2022551587A (en)
CN (1) CN114761096A (en)
WO (1) WO2021067317A2 (en)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA3135506A1 (en) * 2019-04-10 2020-10-15 Elc Management Llc Reconfigurable container-closure system
US11524230B2 (en) * 2019-10-01 2022-12-13 Sony Interactive Entertainment Inc. Encoder tuning to improve tradeoffs between latency and video quality in cloud gaming applications
CN111265863B (en) * 2020-01-17 2022-05-24 腾讯科技(深圳)有限公司 Target object position correction method, device, equipment and medium
US11418852B2 (en) * 2020-05-28 2022-08-16 Nvidia Corporation Detecting latency anomalies from pipeline components in cloud-based systems
CN115552467A (en) * 2021-05-21 2022-12-30 商汤国际私人有限公司 Edge calculation method and device, edge equipment and storage medium
CN113364767B (en) * 2021-06-03 2022-07-12 北京字节跳动网络技术有限公司 Streaming media data display method and device, electronic equipment and storage medium
EP4131192A1 (en) * 2021-08-04 2023-02-08 Play'n Go Marks Ltd A method for operating a gaming system
WO2024047262A1 (en) * 2022-08-30 2024-03-07 Take Profit Gaming, S.L. Online interaction method that eliminates the effect of network latency
KR20240070084A (en) * 2022-11-14 2024-05-21 에스케이플래닛 주식회사 Terminal appratus, cloud streaming service method
US20240196033A1 (en) * 2022-12-09 2024-06-13 Advanced Micro Devices, Inc. Server-side frame render timing delay to reduce client-side frame present delay

Family Cites Families (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0974566A (en) 1995-09-04 1997-03-18 Sony Corp Compression encoder and recording device for compression encoded data
WO2000028518A2 (en) * 1998-11-09 2000-05-18 Broadcom Corporation Graphics display system
AUPR212600A0 (en) 2000-12-18 2001-01-25 Canon Kabushiki Kaisha Efficient video coding
US7047435B2 (en) 2000-12-19 2006-05-16 Siemens Corporate Research, Inc. System and method for clock-synchronization in distributed systems
US9314691B2 (en) 2002-12-10 2016-04-19 Sony Computer Entertainment America Llc System and method for compressing video frames or portions thereof based on feedback information from a client device
US9108107B2 (en) * 2002-12-10 2015-08-18 Sony Computer Entertainment America Llc Hosting and broadcasting virtual events using streaming interactive video
US8845434B2 (en) 2002-12-10 2014-09-30 Ol2, Inc. System and method for improving the graphics performance of hosted applications
US9077991B2 (en) 2002-12-10 2015-07-07 Sony Computer Entertainment America Llc System and method for utilizing forward error correction with video compression
US10075750B2 (en) 2002-12-10 2018-09-11 Sony Interactive Entertainment America Llc Porting locally processed media data with low latency to a remote client device via various wireless links
US8840477B2 (en) * 2002-12-10 2014-09-23 Ol2, Inc. System and method for improving the graphics performance of hosted applications
US8661496B2 (en) 2002-12-10 2014-02-25 Ol2, Inc. System for combining a plurality of views of real-time streaming interactive video
US7668243B2 (en) 2004-05-18 2010-02-23 Texas Instruments Incorporated Audio and video clock synchronization in a wireless network
CN101036389B (en) * 2004-09-02 2012-05-02 索尼株式会社 Content receiving apparatus, video/audio output timing control method, and content providing system
US8223845B1 (en) 2005-03-16 2012-07-17 Apple Inc. Multithread processing of video frames
US7478256B2 (en) * 2006-01-24 2009-01-13 National Instruments Corporation Coordinating data synchronous triggers on multiple devices
US8613673B2 (en) 2008-12-15 2013-12-24 Sony Computer Entertainment America Llc Intelligent game loading
KR101044065B1 (en) * 2008-12-04 2011-06-23 주식회사 케이티 Method for Synchronizing Time in IPTV Service Network
US9375635B2 (en) 2009-03-23 2016-06-28 Sony Interactive Entertainment America Llc System and method for improving the graphics performance of hosted applications
US8537699B2 (en) 2009-06-16 2013-09-17 Qualcomm Incorporated Managing video adaptation algorithms
US8351437B2 (en) * 2009-11-12 2013-01-08 Sony Mobile Communications Ab Stereo bit clock tuning
US9781477B2 (en) 2010-05-05 2017-10-03 Cavium, Inc. System and method for low-latency multimedia streaming
US9094564B2 (en) 2010-05-07 2015-07-28 Microsoft Technology Licensing, Llc Clock synchronization for shared media playback
US20130039408A1 (en) 2011-02-07 2013-02-14 Screenovate Technologies Ltd Method for enhancing compression and transmission process of a screen image
US9578354B2 (en) 2011-04-18 2017-02-21 Verizon Patent And Licensing Inc. Decoupled slicing and encoding of media content
US8597118B2 (en) * 2011-08-29 2013-12-03 Bally Gaming, Inc. Method, apparatus and system for video tuning of a video switching device for a gaming machine
US9843844B2 (en) 2011-10-05 2017-12-12 Qualcomm Incorporated Network streaming of media data
US8793393B2 (en) 2011-11-23 2014-07-29 Bluespace Corporation Video processing device, video server, client device, and video client-server system with low latency thereof
EP2624486A1 (en) * 2012-02-01 2013-08-07 Sony Ericsson Mobile Communications AB A client communication device, a server communication device, and clock synchronization method therein
CA2774674C (en) * 2012-03-08 2015-11-24 Research In Motion Limited Unified transform coefficient encoding and decoding
US8923372B2 (en) * 2012-04-10 2014-12-30 Insight Scientific International (Shanghai) Ltd. Method and apparatus for improved parallel RF testing of multiple devices
US20140086310A1 (en) 2012-09-21 2014-03-27 Jason D. Tanner Power efficient encoder architecture during static frame or sub-frame detection
JPWO2014054325A1 (en) 2012-10-05 2016-08-25 ソニー株式会社 Encoding control apparatus and encoding control method
US20140187331A1 (en) * 2012-12-27 2014-07-03 Nvidia Corporation Latency reduction by sub-frame encoding and transmission
WO2014107065A1 (en) 2013-01-04 2014-07-10 삼성전자 주식회사 Method for entropy-encoding slice segment and apparatus therefor, and method for entropy-decoding slice segment and apparatus therefor
US9088390B1 (en) * 2013-03-15 2015-07-21 Arris Enterprises, Inc. Re-synchronization of timing between communication devices
WO2014145921A1 (en) * 2013-03-15 2014-09-18 Activevideo Networks, Inc. A multiple-mode system and method for providing user selectable video content
US9036084B2 (en) 2013-04-11 2015-05-19 Qualcomm Incorporated Apparatus and method for synchronous display of video data
US10092834B2 (en) * 2013-05-23 2018-10-09 Kabushiki Kaisha Square Enix Holdings Dynamic allocation of rendering resources in a cloud gaming system
JP5481606B1 (en) 2013-07-22 2014-04-23 株式会社fuzz Image generation system and image generation program
US9826015B2 (en) * 2013-09-04 2017-11-21 Qualcomm Incorporated Dynamic and automatic control of latency buffering for audio/video streaming
US9497358B2 (en) 2013-12-19 2016-11-15 Sony Interactive Entertainment America Llc Video latency reduction
US9691181B2 (en) * 2014-02-24 2017-06-27 Sony Interactive Entertainment Inc. Methods and systems for social sharing head mounted display (HMD) content with a second screen
US9332216B2 (en) 2014-03-12 2016-05-03 Sony Computer Entertainment America, LLC Video frame rate compensation through adjustment of vertical blanking
JP6055433B2 (en) * 2014-04-01 2016-12-27 株式会社ソニー・インタラクティブエンタテインメント Game provision server
US20150296215A1 (en) 2014-04-11 2015-10-15 Microsoft Corporation Frame encoding using hints
US9998634B2 (en) 2014-11-03 2018-06-12 Google Llc Video frame playback scheduling
WO2016118058A1 (en) 2015-01-23 2016-07-28 Telefonaktiebolaget Lm Ericsson (Publ) Vlc-based video frame synchronization
JP2017005611A (en) * 2015-06-15 2017-01-05 富士通株式会社 Dynamic image decoding device and dynamic image decoding method
US11040281B2 (en) 2015-09-30 2021-06-22 Sony Interactive Entertainment LLC Multi-user demo streaming service for cloud gaming
JP6646677B2 (en) * 2015-10-09 2020-02-14 株式会社日立製作所 Audio signal processing method and apparatus
US20170105010A1 (en) * 2015-10-09 2017-04-13 Microsoft Technology Licensing, Llc Receiver-side modifications for reduced video latency
US10238965B2 (en) * 2016-04-28 2019-03-26 Sony Interactive Entertainment America Llc Cloud gaming device handover
US10868848B2 (en) * 2016-07-25 2020-12-15 Peraso Technologies Inc. Wireless multimedia communications system and method
AU2016231584A1 (en) * 2016-09-22 2018-04-05 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding video data
US10306180B2 (en) 2016-10-21 2019-05-28 Liquidsky Software, Inc. Predictive virtual reality content streaming techniques
US10679314B2 (en) 2017-03-15 2020-06-09 Microsoft Technology Licensing, Llc Techniques for reducing perceptible delay in rendering graphics
US10675544B2 (en) * 2017-03-31 2020-06-09 Sony Interactive Entertainment LLC Personalized user interface based on in-application behavior
US10574995B2 (en) 2017-04-10 2020-02-25 Intel Corporation Technology to accelerate scene change detection and achieve adaptive content display
JP7429512B2 (en) * 2019-09-30 2024-02-08 株式会社ソニー・インタラクティブエンタテインメント Image processing device, image data transfer device, image processing method, and image data transfer method
JP7389602B2 (en) * 2019-09-30 2023-11-30 株式会社ソニー・インタラクティブエンタテインメント Image display system, image processing device, and video distribution method

Also Published As

Publication number Publication date
US11826643B2 (en) 2023-11-28
US20210093955A1 (en) 2021-04-01
US20210354031A1 (en) 2021-11-18
US20230103010A1 (en) 2023-03-30
US20220152490A1 (en) 2022-05-19
US11235235B2 (en) 2022-02-01
US20210093966A1 (en) 2021-04-01
US11110349B2 (en) 2021-09-07
US11980811B2 (en) 2024-05-14
US11701584B2 (en) 2023-07-18
EP4037787A2 (en) 2022-08-10
WO2021067317A2 (en) 2021-04-08
US20230356077A1 (en) 2023-11-09
CN114761096A (en) 2022-07-15
US20210228983A1 (en) 2021-07-29
US20210093965A1 (en) 2021-04-01
US10974142B1 (en) 2021-04-13
US20210093956A1 (en) 2021-04-01
EP4037787B1 (en) 2024-05-15
US20240082708A1 (en) 2024-03-14
US11020661B2 (en) 2021-06-01
US20210394056A1 (en) 2021-12-23
US11801442B2 (en) 2023-10-31
US20240058695A1 (en) 2024-02-22
WO2021067317A3 (en) 2021-06-17
US11517817B2 (en) 2022-12-06

Similar Documents

Publication Publication Date Title
US11980811B2 (en) Synchronization of a VSYNC signal of a first device to a VSYNC signal of a second device
US11344799B2 (en) Scene change hint and client bandwidth used at encoder for handling video frames after a scene change in cloud gaming applications
US11539960B2 (en) Game application providing scene change hint for encoding at a cloud gaming server
US11998840B2 (en) Determining targeted display time of a video frame for a client based on server side timing information
JP2022550440A (en) Superposition of encoding and transmission at the server

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230719

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230719