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 PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 211
- 238000012545 processing Methods 0.000 claims description 60
- 239000000872 buffer Substances 0.000 claims description 44
- 238000009877 rendering Methods 0.000 claims description 35
- 230000003139 buffering effect Effects 0.000 claims description 31
- 230000001360 synchronised effect Effects 0.000 claims description 24
- 230000004044 response Effects 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 10
- 230000000977 initiatory effect Effects 0.000 claims description 8
- 238000004458 analytical method Methods 0.000 claims description 2
- 230000001934 delay Effects 0.000 claims 1
- 230000001052 transient effect Effects 0.000 claims 1
- 230000005540 biological transmission Effects 0.000 description 27
- 238000010586 diagram Methods 0.000 description 23
- 238000005259 measurement Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 18
- 238000004891 communication Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 10
- 230000002829 reductive effect Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 7
- 238000010606 normalization Methods 0.000 description 7
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 230000006855 networking Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000003247 decreasing effect Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000000737 periodic effect Effects 0.000 description 4
- 241000699670 Mus sp. Species 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 3
- 239000013078 crystal Substances 0.000 description 3
- 230000002452 interceptive effect Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 239000000779 smoke Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000008713 feedback mechanism Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000008570 general process Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
- A63F13/355—Performing 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/4302—Content synchronisation processes, e.g. decoder synchronisation
- H04N21/4305—Synchronising client clock from received content stream, e.g. locking decoder clock with encoder clock, extraction of the PCR packets
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/33—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers using wide area network [WAN] connections
- A63F13/335—Interconnection 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
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
- A63F13/358—Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/40—Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
- A63F13/44—Processing 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
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07F—COIN-FREED OR LIKE APPARATUS
- G07F17/00—Coin-freed apparatus for hiring articles; Coin-freed facilities or services
- G07F17/32—Coin-freed apparatus for hiring articles; Coin-freed facilities or services for games, toys, sports, or amusements
- G07F17/3225—Data transfer within a gaming system, e.g. data sent between gaming machines and users
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/70—Media network packetisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/80—Responding to QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/131—Protocols for games, networked simulations or virtual reality
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/242—Synchronization processes, e.g. processing of PCR [Program Clock References]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/4302—Content synchronisation processes, e.g. decoder synchronisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/44—Processing 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/4402—Processing 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/442—Monitoring 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/4424—Monitoring 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/478—Supplemental services, e.g. displaying phone caller identification, shopping application
- H04N21/4781—Games
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/85—Assembly of content; Generation of multimedia applications
- H04N21/854—Content authoring
- H04N21/8547—Content authoring involving timestamps for synchronizing content
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features 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/50—Features 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/53—Features 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/534—Features 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
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features 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/50—Features 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/53—Features 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/538—Features 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
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features 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/50—Features 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/55—Details of game data or player data management
- A63F2300/5593—Details of game data or player data management involving scheduling aspects
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features 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/60—Methods for processing data by generating or executing the game program
- A63F2300/63—Methods for processing data by generating or executing the game program for controlling the execution of the game in time
- A63F2300/638—Methods 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
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/12—Frame memory handling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/23406—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving management of server-side video buffer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/4302—Content synchronisation processes, e.g. decoder synchronisation
- H04N21/4307—Synchronising 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/44—Processing 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/44004—Processing 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/04—Synchronising
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.
以下の詳細な説明は、例示の目的で多くの特定の詳細を含むが、当業者であれば、以下の詳細に対する多くの変形及び変更が本開示の範囲内にあることを理解するであろう。したがって、以下で説明される本開示の態様は、この説明に続く特許請求の範囲への一般性を失うことなく、また限定を課すことなく示される。 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
さらに、本開示の様々な実施形態が、メディアコンテンツ(例えば、ビデオゲームコンテンツ)をストリーミングする場合など、ソースデバイスとターゲットデバイスとの間の一方向の待ち時間及び/または待ち時間の不安定性を低減するために開示される。説明のみを目的として、一方向の待ち時間及び/または待ち時間の不安定性を低減するための様々な実施形態が、サーバ及びクライアントのネットワーク構成内で説明されている。しかし、一方向の待ち時間及び/または待ち時間の不安定性を低減するために開示された様々な技術は、図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
いくつかの実施形態では、通信は、無線技術を使用して促進され得る。そのような技術には、例えば、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,
That is,
例えば、複数のユーザは、ストリーミングメディアを受信するように構成された対応するクライアントデバイス210を使用して、通信ネットワーク250を介して、クラウドゲームネットワーク290にアクセスすることができる。一実施形態では、クライアントデバイス210は、計算機能(例えば、ゲームタイトル処理エンジン211を含む)を提供するように構成されたバックエンドサーバ(例えば、クラウドゲームネットワーク290のゲームサーバ260)とのインターフェースを提供するシンクライアントとして構成され得る。別の実施形態では、クライアントデバイス210は、ビデオゲームの少なくともいくつかのローカル処理のためのゲームタイトル処理エンジン及びゲームロジックで構成され得るもので、バックエンドサーバで実行されるビデオゲームによって生成されるストリーミングコンテンツを受信するために、またはバックエンドサーバサポートによって提供されるその他のコンテンツ用に、さらに利用され得る。ローカル処理の場合、ゲームタイトル処理エンジンには、ビデオゲームを実行するための基本的なプロセッサベースの機能と、ビデオゲームに関連するサービスが含まれている。ゲームロジックは、ローカルクライアントデバイス210に格納され、ビデオゲームを実行するために使用される。
For example, multiple users may access
特に、対応するユーザ(示さず)のクライアントデバイス210は、インターネットなどの通信ネットワーク250経由でゲームへのアクセスを要求するために、及びゲームサーバ260により実行されるビデオゲームにより生成される表示画像をレンダリングするために構成され、その場合に符号化された画像が対応するユーザと関連する表示のためにクライアントデバイス210へ配信されている。例えば、ユーザは、ゲームサーバ260のゲームプロセッサ上で実行するビデオゲームのインスタンスとクライアントデバイス210を通してインタラクトすることができる。より具体的には、ビデオゲームのインスタンスは、ゲーム作品処理エンジン211により実行される。ビデオゲームを実装する対応するゲームロジック(例えば、実行可能コード)215は、データストア(図示せず)を介して格納及びアクセス可能であり、ビデオゲームを実行するために使用される。ゲームタイトル処理エンジン211は、複数のゲームロジックを使用して複数のビデオゲームをサポートすることができ、それぞれがユーザによって選択可能である。
In particular, a corresponding user's (not shown)
例えば、クライアントデバイス210は、ゲームプレイを駆動するために使用される入力コマンドを介するなどして、対応するユーザのゲームプレイに関連付けられたゲームタイトル処理エンジン211とインタラクトするように構成される。特に、クライアントデバイス210は、ゲームコントローラ、タブレットコンピュータ、キーボードなどの様々な種類の入力デバイスからの入力、ビデオカメラ、マウス、タッチパッドなどにより取り込まれたジェスチャを、受信し得る。クライアントデバイス210は、メモリとプロセッサモジュールとを少なくとも有する任意の種類のコンピューティングデバイスであり得るもので、ネットワーク250を介してゲームサーバ260に接続することができる。
バックエンドゲームタイトル処理エンジン211は、レンダリングされた画像を生成するように構成され、レンダリングされた画像は、クライアントデバイス210に関連する対応するディスプレイに表示するためにネットワーク250を介して配信される。例えば、クラウドベースのサービスを介して、ゲームレンダリングされた画像は、ゲームサーバ260のゲーム実行エンジン211で実行される対応するゲームのインスタンスによって配信され得る。すなわち、クライアントデバイス210は、符号化された画像(例えば、ビデオゲームの実行を通じて生成されたゲームレンダリング画像から符号化された)を受信し、ディスプレイ11のためにレンダリングされた画像を表示するように構成される。一実施形態では、ディスプレイ11は、HMDを含む(例えば、VRコンテンツを表示する)。いくつかの実施形態では、レンダリングされた画像は、クラウドベースのサービスから直接、またはクライアントデバイス210(例えば、プレイステーション(登録商標)リモートプレイ)を介して、無線または有線でスマートフォンまたはタブレットにストリーミングすることができる。
For example, the
Backend game
一実施形態では、ゲームサーバ260及び/またはゲームタイトル処理エンジン211は、ゲーム及びゲームアプリケーションに関連するサービスを実行するための基本的なプロセッサベースの機能を含む。例えば、プロセッサベースの機能には、2Dまたは3Dレンダリング、物理学、物理シミュレーション、スクリプト、オーディオ、アニメーション、グラフィックス処理、ライティング、シェーディング、ラスター化、レイトレーシング、シャドーイング、カリング、変換、人工知能などが含まれる。さらに、ゲームアプリケーションのサービスには、メモリ管理、マルチスレッド管理、サービス品質(QoS)、帯域幅テスト、ソーシャルネットワーキング、ソーシャルフレンドの管理、ソーシャルネットワークのフレンドとの通信、通信チャネル、テキスティング、インスタントメッセージ、チャットサポートなどが含まれる。
In one embodiment,
一実施形態では、クラウドゲームネットワーク290は、分散型ゲームサーバシステム及び/またはアーキテクチャである。具体的には、ゲームロジックを実行する分散型ゲームエンジンが、対応するゲームの対応するインスタンスとして構成されている。一般に、分散型ゲームエンジンは、ゲームエンジンの各機能を取り込み、それらの機能を分散させて多数の処理エンティティによって実行する。個々の機能は、さらに1つ以上の処理エンティティにわたって分散させることができる。処理エンティティは、物理ハードウェア、及び/または仮想コンポーネントまたは仮想マシン、及び/または仮想コンテナなど、様々な構成で構成され得る。コンテナは、仮想化されたオペレーティングシステム上で動作するゲームアプリケーションのインスタンスを仮想化するものであるため、仮想マシンとは異なる。
処理エンティティは、クラウドゲームネットワーク290の1つ以上のサーバ(計算ノード)上のサーバ及びその基礎となるハードウェアを利用し、及び/またはそれらに依拠してもよく、サーバは1つ以上のラック上に配置され得る。種々の処理エンティティに対するそれらの機能の実行の協調、割り当て、及び管理は、分散同期層によって行われる。そのようにして、それらの機能の実行が分散同期層によって制御されて、プレイヤーによるコントローラ入力に応答して、ゲームアプリケーション用のメディア(例えば、ビデオフレーム、オーディオなど)を生成することが可能になる。分散同期層は、重要なゲームエンジンコンポーネント/機能が、より効率的な処理のために分散されて再構築されるように、分散処理エンティティ全体で(例えば、負荷バランシングを介して)それらの機能を効率的に実行することが可能である。
In one embodiment,
The processing entity may utilize and/or rely on the servers and underlying hardware on one or more servers (computation nodes) of the
ゲームタイトル処理エンジン211は、マルチテナンシーGPU機能を実行するように構成された中央処理装置(CPU)及びグラフィックス処理装置(GPU)グループを含む。別の実施形態では、複数のGPUデバイスを組み合わせて、対応するCPU上で実行されている単一のアプリケーションのグラフィックス処理を実行する。
Game
図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
示されるように、ゲームは、ビデオゲームをプレイしている対応するユーザのクライアントデバイス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
一実施形態では、対応するクライアントデバイス210のゲームタイトル処理エンジン211は、ゲーム及びゲームアプリケーションに関連するサービスを実行するための基本的なプロセッサベースの機能を含む。例えば、プロセッサベースの機能には、2Dまたは3Dレンダリング、物理学、物理シミュレーション、スクリプト、オーディオ、アニメーション、グラフィックス処理、ライティング、シェーディング、ラスター化、レイトレーシング、シャドーイング、カリング、変換、人工知能などが含まれる。さらに、ゲームアプリケーションのサービスには、メモリ管理、マルチスレッド管理、サービス品質(QoS)、帯域幅テスト、ソーシャルネットワーキング、ソーシャルフレンドの管理、ソーシャルネットワークのフレンドとの通信、通信チャネル、テキスティング、インスタントメッセージ、チャットサポートなどが含まれる。
In one embodiment, the game
クライアントデバイス210は、ゲームコントローラ、タブレットコンピュータ、キーボード、ビデオカメラ、マウス、タッチパッドなどによってキャプチャされたジェスチャなどの様々なタイプの入力デバイスから入力を受け取ることができる。クライアントデバイス210は、少なくともメモリ及びプロセッサモジュールを有する任意のタイプのコンピューティングデバイスであり得るもので、ゲームタイトル処理エンジン211によって実行されるレンダリングされた画像を生成し、レンダリングされた画像をディスプレイ(例えば、ディスプレイ11、またはヘッドマウントディスプレイ-HMDを含むディスプレイ11、など)に表示するために構成される。例えば、レンダリングされた画像は、ゲームプレイを駆動するために使用される入力コマンドなどを介して、対応するユーザのゲームプレイを実装するために、クライアントデバイス210上でローカルに実行されるゲームのインスタンスに関連付けられ得る。クライアントデバイス210のいくつかの例として、パーソナルコンピュータ(PC)、ゲーム機、ホームシアターデバイス、汎用コンピュータ、モバイルコンピューティングデバイス、タブレット、電話、または、ゲームのインスタンスを実行することができる任意の他の種類のコンピューティングデバイスが、挙げられる。
図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
In another embodiment, the client VSYNC signal can be adjusted to enforce proper alignment between the
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
例えば、グラフィックスサブシステムは、マルチテナンシー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
As shown, the thick arrows indicate the current delay in sending control information to
At
一方向の待ち時間315は、サーバでのビデオフレームの符号化ユニットへの転送(スキャンアウト302など)の開始から、クライアント307でのビデオフレームの表示の開始まで、待ち時間として定義できる。つまり、一方向の待ち時間は、クライアントのバッファリングを考慮した、サーバのスキャンアウトからクライアントの表示までの時間である。個々のフレームには、スキャンアウト302の開始から復号306の完了までの待ち時間があり、符号化303と送信304、サーバ260と付随するジッタ352を伴うクライアント210間のネットワーク送信、及びクライアントの受信305などのサーバの操作の高い度合の変動により、フレームごとに異なり得る。示されるように、真っ直ぐな太い矢印は、対応するビデオフレームをクライアント210に送信するときの現在の待ち時間を示すが、ジッタ352に起因して、クライアント210でのビデオフレームの到着時間の範囲(例えば、点線の矢印で仕切られた範囲)があり得る。
良好なプレイ体験を実現するには、一方向の待ち時間が比較的安定している(例えば、かなり一貫性が保たれている)必要があるため、従来はバッファリング320が実行され、その結果、待ち時間の少ない個々のフレームの表示(例えば、スキャンアウト302の開始から復号の306の完了まで)は、わずかなフレーム期間遅れる。つまり、ネットワークが不安定な場合、または予測できない符号化/復号時間が発生した場合は、一方向の待ち時間を一定に保つために追加のバッファリングが必要になる。
One-
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
本開示の一実施形態によれば、クラウドゲームサーバとクライアントとの間の一方向の待ち時間は、サーバで実行されるビデオゲームから生成されたビデオフレームをストリーミングするときのクロックドリフトに起因して、変動し得る。すなわち、サーバ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
図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
In one embodiment, adjustment of the
示されるように、図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,
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
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
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
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
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
In one embodiment, the display process 407 (i.e., streaming out to the display device) is performed after the
一実施形態では、サーバ260とクライアント210との間の一方向の待ち時間416は、スキャンアウト402が開始されてからディスプレイ407が開始されるまでの経過時間として定義され得る。本開示の実施形態は、サーバとクライアントとの間のVSYNC信号をアライメントさせ(例えば、周波数を同期させ、オフセットを調整する)、サーバとクライアントとの間の一方向の待ち時間を低減し、サーバとクライアント間の待ち時間の一方向の変動を低減することができる。例えば、本開示の実施形態は、サーバVSYNC信号311とクライアントVSYNC信号312との間のオフセット430に対する最適な調整を計算することができ、その結果、符号化403及び送信404などのサーバの処理に必要な最悪に近い場合の時間のときでも、サーバ260とクライアント210との間の最悪に近い場合のネットワーク待ち時間のときでも、また受信405及び復号406などの最悪に近い場合のクライアント処理のときでも、復号されたレンダリングされたビデオフレームは、表示プロセス407に間に合うように利用可能である。つまり、サーバVSYNCとクライアントVSYNCの間の絶対オフセットを決定する必要はない。復号されたレンダリングされたビデオフレームが表示プロセスに間に合うようにオフセットを調整するだけで十分である。
In one embodiment, one-
特に、サーバ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
サーバとクライアントの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
In this way, the frequency of the
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
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
y軸501はミリ秒単位の時間を示す。x軸502は、時間を分単位で示す。本開示の実施形態では、サーバ260は、圧縮ビデオフレームと共にタイムスタンプ情報をクライアント210に送信するか、またはサーバは、圧縮ビデオフレームとは別にタイムスタンプ情報を送信することができる。
一実施形態では、このタイムスタンプ情報は、サーバ260のピクセルクロックから導出された、対応するビデオフレームのスキャンアウト402の直前のサーバVSYNC信号の発生の時間を表すことができる。つまり、タイムスタンプは、ビデオフレームがすぐに表示されるかどうかなど、対応するビデオフレームの望ましい表示タイミングを示す。
別の実施形態では、このタイムスタンプ情報は、サーバ260のピクセルクロックから導出された、フリップ時間、例えば、対応するビデオフレームのレンダリングの完了の時間を表すことができる。さらに別の実施形態では、サーバVSYNC信号の代わりに通常のフレーム期間が使用され、このタイムスタンプ情報は、サーバ260のピクセルクロックから導出された、対応するフレーム期間の開始または終了の時間を表すことができる。
The y-
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
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
復号406の完了時に、クライアント206は、クライアントのピクセルクロックから導出された時間を記録し、この時間を(サーバから配信された)タイムスタンプから差し引いて、「復号タイムスタンプ」(すなわち、対応するビデオフレームの復号にかかる時間ではなく、復号が完了した時間)を作成する。したがって、復号タイムスタンプは、サーバによって指定された(例えば、タイムスタンプによって示される)望ましい表示時間と比較して、対応するビデオフレームのクライアントでの表示の可用性を示す。図5Aに示されるように、一実施形態では、クライアントによって受信された第1の圧縮ビデオフレームの復号タイムスタンプは、ゼロの値が割り当てられる(すなわち、正規化される)。
また、他のすべての復号タイムスタンプは、正規化を参照して計算される(つまり、減算され、正規化が考慮される)。サーバとクライアントの操作のばらつき、及びネットワーク待ち時間のために、一連の圧縮ビデオフレームに対して測定された復号タイムスタンプは、前述のように、最初の圧縮ビデオフレーム511にゼロの復号タイムスタンプが割り当てられた分布510としてプロットされる場合がある。これらの復号タイムスタンプは、以下でさらに十分に説明する図5Bに示されるように、ヒストグラム515を作成するためにビニングされ得る。測定値520、530、及び540は、クライアントで受信された後続のビデオフレームについて計算された復号タイムスタンプの分布を示している。測定値520、530、及び540の復号タイムスタンプは、第1の圧縮ビデオフレーム511によって定義された正規化を参照して計算される。
Upon completion of
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
図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
特に、後続のビデオフレームについて後で決定された復号タイムスタンプの測定値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
図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
別の実施形態では、サーバは、フレーム期間ごとに(フレーム期間はほぼ等しい長さである)圧縮ビデオフレームを送信し、対応するサーバタイムスタンプ(例えば、復号タイムスタンプの計算で使用される)がサーバからクライアントに送信されるのではなく、代わりに、対応するサーバのタイムスタンプ(受信中の対応するビデオフレームの場合)は、以前に計算されたサーバのタイムスタンプ(例えば、受信された前のビデオフレームの場合)にフレーム期間を追加することによってクライアントによって計算される。初期ビデオフレームの初期サーバタイムスタンプ及び/またはタイミング信号は、タイミングプロセスを開始するためにサーバからクライアントに配信され得る。 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
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
特に、適切なオフセット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
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
特に、図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,
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
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
具体的には、操作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
また、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.
前述のように、タイムスタンプ情報は、復号タイムスタンプを作成するためにクライアントによって使用され、各々は、サーバによって指定された所望の表示時間(タイムスタンプ)と比較して、対応するビデオフレームのクライアントでの表示の可用性を示す。復号タイムスタンプは、対応するサーバベースのタイムスタンプ情報から、対応するビデオフレームの復号の完了を示すクライアントでの時間を差し引くことによって導出することができる。正規化は、復号タイムスタンプを生成するときにも適用できる。 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
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.
サーバとクライアントの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,
図2A~2Dの様々なクライアントデバイス210及び/またはクラウドゲームネットワーク290(例えば、ゲームサーバ260内)の詳細な説明と共に、図7の流れ図700は、本開示の一実施形態による、クラウドゲームサーバとクライアントとの間の一方向の待ち時間を短縮するための代替の方法を示している。特に、流れ図700は、本開示の一実施形態による、サーバでの圧縮ビデオフレームの生成に関連してクライアントVSYNC信号を調整するための方法を示し、ビデオフレームは、同様のサイズのフレーム期間中に生成される。
Along with a detailed description of the
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
前述のように、サーバベースのタイムスタンプ情報は、オフセットの決定に使用される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
Encoding 403,
一連の理論的なタイミング図850Aから850Dが、クライアントVSYNC信号312のために提供され、タイミング図850C(及び付随するディスプレイ407)は、理想的なクライアントVSYNC312Cを示している。クロックまたはタイムスタンプの直接同期がないため(例えば、ユニバーサルクロックなどのサードパーティのタイミングメカニズムを介して)、オフセット430は直接設定されず、代わりに、現在のクライアントVSYNC312は、ヒストグラムの最悪に近い場合のタイミング情報を使用して調整され、前述のように理想的なクライアントVSYNCタイミング312Cになる。または、前述のように、サーバVSYNCを調整して適切なオフセットを作成することもできる。
A series of theoretical timing diagrams 850A through 850D are provided for
サーバのタイムスタンプ情報は、クライアントによって収集及び/または受信される。前述のように、タイムスタンプ情報には、対応するビデオフレームが生成された時刻が含まれる場合がある(例えば、フリップ時間、スキャンアウトが発生したとき、スキャンアウトが発生したときのサーバ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
純粋に説明のために、復号のタイムスタンプは約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
操作601、603、605、611、及び613は、図6Aの流れ図600A及び図6Bの流れ図600Bに関連して以前に説明され、サーバとクライアントのVSYNC信号間の相対的なタイミングの調整を開示する(例えば、周波数を同期し、タイミングオフセットまたは位相を調整する)。要約すると、601で、この方法は、サーバにおいて、サーバVSYNC信号のフレーム期間中のサーバでのビデオフレームの生成に対応するサーバVSYNC信号を周波数に設定することを含む。603で、この方法は、クライアントで、周波数に対応するクライアントVSYNC信号を、クライアントに関連付けられたディスプレイへのレンダリングに使用されるクライアントVSYNC信号を設定することを含む。605で、この方法は、サーバVSYNC信号を使用して、ネットワークを介してサーバからクライアントに生成ビデオフレームに基づいて圧縮ビデオフレームを送信することを含む。
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
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
図2A~2Dの様々なクライアントデバイス210及び/またはクラウドゲームネットワーク290(例えば、ゲームサーバ260内)の詳細な説明と共に、図10の流れ図1000は、本開示の一実施形態による、2つ以上のデバイス間のVSYNC信号間の相対的なタイミングを調整するための方法を示している。特に、流れ図1000は、ドリフトを補償するため、及び/または対応するデバイスの2つ以上のVSYNC信号間のオフセットまたは位相を調整するために使用され得る。
Along with detailed descriptions of the
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
例えば、クラウドゲームアプリケーションのクライアントは、ビデオフレームを受信して復号する。特に、受信操作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
サーバとクライアントとの間の一方向の待ち時間は、ビデオフレームが操作406で完全に復号される前に、クライアント210に操作407でビデオフレームの表示を開始させることによって減らすことができる。特に、ビデオフレームの1つまたは複数の復号されたスライスは、ビデオフレームが完全に復号される前に、ディスプレイにレンダリングするために準備され得る。すなわち、407での表示操作は、406での復号操作と重複する。特に、最初に符号化されたスライス(スライスAなど)は、クライアントのスキャンアウトが表示を開始する前に到着して復号する必要がある。さらに、後続のすべての符号化されたスライスは、それぞれの解凍されたデータがレンダリングされて表示のためにスキャンアウトされる前に、到着して復号される必要がある。
One-way latency between the server and the client can be reduced by having the
さらに、クライアントでの受信及び復号操作の重複に加えて、サーバによって送信された符号化されたビデオフレームがクライアントで完全に受信される前であっても、次いで表示の準備においてレンダリングされる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
一実施形態では、復号タイムスタンプをスライスごとに作成することができ、サーバによって指定された所望の表示時間と比較して、クライアントで表示するためのスライスの可用性を示す。復号タイムスタンプは、クライアントでのスライスの復号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
復号タイムスタンプは、図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
図2A~2Dの様々なクライアントデバイス210及び/またはクラウドゲームネットワーク290(例えば、ゲームサーバ260内)の詳細な説明と共に、本開示の実施形態によれば、図11Bの流れ図1100Bは、符号化されたフレームがサーバからクライアントで受信され、復号されて表示のためにレンダリングされるクラウドゲームの方法を示し、ビデオフレームの復号及び表示は、一方向の待ち時間を短縮する目的で重複することができる。クライアントでの1つまたは複数の操作を重複できることは、図4~10で前述したように、サーバとクライアントとの間の一方向の待ち時間を管理することによって達成される。例えば、サーバとクライアントのVSYNC信号間の相対的なタイミングは、サーバとクライアント間の一方向の待ち時間の変動を低減及び/または最小化するように調整される。
2A-2D, along with a detailed description of the
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
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
様々な実施形態によれば、CPU1202は、1つ以上の処理コアを有する1つ以上の汎用マイクロプロセッサである。さらなる実施形態は、ゲーム実行中のグラフィック処理のために構成されたアプリケーションの、媒体及び双方向エンターテインメントアプリケーションなどのきわめて並列かつ計算集約的なアプリケーションに特に適合されたマイクロプロセッサアーキテクチャを有する1つ以上のCPUを使用し、実装することができる。
According to various embodiments,
メモリ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を介して接続されている。
グラフィックスサブシステム1214はさらに、データバス1222及びデバイス1200の構成要素と接続されている。グラフィックスサブシステム1214は、グラフィック処理ユニット(GPU)1216と、グラフィックスメモリ1218とを含む。グラフィックスメモリ1218は、出力画像の各画素の画素データを格納するために使用される表示メモリ(例えばフレームバッファ)を含む。グラフィックスメモリ1218は、GPU1216と同じデバイスに統合されてもよく、GPU1216と別個のデバイスとして接続されてもよく、かつ/またはメモリ1204内に実装されてもよい。画素データは、直接CPU1202からグラフィックスメモリ1218へ提供され得る。あるいは、CPU1202は、所望の出力画像を定義するデータ及び/または命令をGPU1216に提供し、これによりGPU1216は、1つ以上の出力画像の画素データを生成する。所望の出力画像を定義するデータ及び/または命令は、メモリ1204及び/またはグラフィックスメモリ1218に格納され得る。実施形態において、GPU1216は、シーンの形状、照明、シャドウィング、質感、動き、及び/またはカメラのパラメータを定義する命令及びデータから、出力画像の画素データを生成する3Dレンダリング機能を含む。GPU1216はさらに、シェーダープログラムを実行することができる1つ以上のプログラム可能実行ユニットを含み得る。
グラフィックスサブシステム1214は、グラフィックスメモリ1218から画像の画素データを定期的に出力して、ディスプレイデバイス1210に表示させる、または投影システム(図示せず)により投影させる。ディスプレイデバイス1210は、デバイス1200からの信号に応じて視覚情報を表示することができる任意のデバイスであり得るもので、これにはCRT、LCD、プラズマ、及びOLEDディスプレイが含まれる。デバイス1200は、ディスプレイデバイス1210に、例えばアナログ信号またはデジタル信号を提供することができる。
Graphics subsystem 1214 periodically outputs image pixel data from
グラフィックスサブシステム1214を最適化するための他の実施形態は、GPUインスタンスが複数のアプリケーション間で共有されるマルチテナンシーGPU操作、及び単一のゲームをサポートする分散GPUを含むことができる。グラフィックスサブシステム1214は、1つまたは複数の処理デバイスとして構成することができる。
Other embodiments for optimizing the
例えば、グラフィックスサブシステム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
他の実施形態では、グラフィックスサブシステム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信号を使用して、ネットワークを介して前記サーバから前記クライアントに前記複数のビデオフレームに基づく複数の圧縮ビデオフレームを送信し、
前記クライアントで、前記複数の圧縮ビデオフレームを復号及び表示し、かつ、
前記クライアントが前記複数の圧縮ビデオフレームを受信するときに、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.
前記対応するタイムスタンプは、前記サーバでの対応するフリップ時間、または前記対応するビデオフレームをエンコーダにスキャンするために使用される前記サーバ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つを調整することにより、前記相対的なタイミングを動的に調整することをさらに含む、請求項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周波数を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信号のフレーム期間の垂直帰線区間のラスタースキャンラインを除去または追加する、請求項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.
前記サーバまたは前記クライアントの対応するクロックをオーバークロックまたはアンダークロックする、請求項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.
前記複数のビデオフレームの前記対応するタイムスタンプを前記クライアントに配信し、
前記複数のビデオフレームのそれぞれのタイミングを与えるヒストグラムを構築し、前記ビデオフレームは、前記サーバで提供される前記対応するタイムスタンプに関連する前記クライアントにおける対応する復号時間の前記クライアントに対して生成及び配信されるものであり、
前記複数の圧縮ビデオフレームの閾値パーセンテージが前記クライアントに到着し、前記対応するタイムスタンプによって示される前記クライアント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.
前記サーバまたはクライアントで、前記対応するサーバ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信号のフレーム期間の垂直帰線区間のラスタースキャンラインを除去または追加する、請求項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.
前記サーバまたは前記クライアントの対応するクロックをオーバークロックまたはアンダークロックする、請求項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つ以上のフレーム期間で調整して、前記ドリフトを補償するためのプログラム命令をさらに有する、請求項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信号のフレーム期間の垂直帰線区間のラスタースキャンラインを除去または追加するためのプログラム命令を有する、請求項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.
前記サーバまたは前記クライアントの対応するクロックをオーバークロックまたはアンダークロックするためのプログラム命令を有する、請求項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信号を使用して、ネットワークを介して前記サーバから前記クライアントに前記複数のビデオフレームに基づく複数の圧縮ビデオフレームを送信し、
前記クライアントで、前記複数の圧縮ビデオフレームを復号及び表示し、かつ、
前記クライアントが前記複数の圧縮ビデオフレームを受信するときに、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に記載の方法。 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信号を、サーバで、複数のフレーム期間を定義するサーバの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に記載の非一時的コンピュータ可読媒体。 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信号を、サーバで、複数のフレーム期間を定義するサーバの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に記載のコンピュータシステム。 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.
前記サーバ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.
前記複数の前記複数のデバイスのそれぞれの前記対応するデバイスが、前記対応する複数のビデオフレームを表示し、
前記複数のデバイスでの対応する複数のビデオフレームの表示は同期されている、請求項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.
対応するデバイスの対応するデバイスの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.
対応するデバイスの対応するクロックをオーバークロックまたはアンダークロックすることにより調整される、請求項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のデバイスまたは前記第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信号を使用して、ネットワークを介して前記サーバから前記複数のデバイスに、ビデオフレームに基づく複数の圧縮ビデオフレームを送信するためのプログラム命令を有し、かつ、
複数のデバイスのそれぞれが、複数の圧縮ビデオフレームを復号及び表示するためのプログラム命令をさらに有し、
前記複数のデバイスでの前記複数の圧縮ビデオフレームの前記表示は同期されている、請求項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信号を複数の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.
クライアントで符号化されたビデオフレームを受信し、サーバがアプリケーションを実行してレンダリングされたビデオフレームを生成し、それが次に前記サーバのエンコーダで符号化されたビデオフレームとして符号化され、前記符号化されたビデオフレームは、圧縮された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つまたは複数の符号化されたスライスを完全に復号する前にレンダリングされる前記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信号を使用して、ネットワークを介して前記サーバから前記クライアントに前記複数のレンダリングされたビデオフレームに基づく複数の圧縮ビデオフレームを送信し、
前記クライアントで、前記複数の圧縮ビデオフレームを復号及び表示し、かつ、
前記クライアントが前記複数の圧縮ビデオフレームを受信するときに、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周波数の少なくとも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.
前記サーバ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つまたは複数の符号化されたスライスを完全に復号する前にレンダリングされる前記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信号を使用して、ネットワークを介して前記サーバから前記クライアントに前記複数のレンダリングされたビデオフレームに基づく複数の圧縮ビデオフレームを送信するためのプログラム命令を有し、
前記クライアントで、前記複数の圧縮ビデオフレームを復号及び表示するためのプログラム命令を有し、かつ、
前記クライアントが前記複数の圧縮ビデオフレームを受信するときに、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周波数の少なくとも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.
前記サーバ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つまたは複数の復号されたスライスの表示を開始する、請求項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周波数の少なくとも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信号のフレーム期間の垂直帰線区間のラスタースキャンラインを除去または追加することによって調整される、請求項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.
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)
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)
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 |
-
2019
- 2019-11-26 US US16/696,125 patent/US11110349B2/en active Active
- 2019-11-26 US US16/696,363 patent/US11020661B2/en active Active
- 2019-11-26 US US16/696,214 patent/US11235235B2/en active Active
- 2019-11-26 US US16/696,040 patent/US10974142B1/en active Active
-
2020
- 2020-09-29 WO PCT/US2020/053343 patent/WO2021067317A2/en unknown
- 2020-09-29 CN CN202080081919.1A patent/CN114761096A/en active Pending
- 2020-09-29 EP EP20792830.0A patent/EP4037787B1/en active Active
- 2020-09-29 JP JP2022520318A patent/JP2022551587A/en active Pending
-
2021
- 2021-04-13 US US17/229,808 patent/US11517817B2/en active Active
- 2021-06-01 US US17/336,282 patent/US11826643B2/en active Active
- 2021-09-07 US US17/468,512 patent/US11701584B2/en active Active
-
2022
- 2022-02-01 US US17/590,623 patent/US11801442B2/en active Active
- 2022-12-06 US US18/076,326 patent/US11980811B2/en active Active
-
2023
- 2023-07-18 US US18/354,483 patent/US20230356077A1/en active Pending
- 2023-10-31 US US18/499,125 patent/US20240058695A1/en active Pending
- 2023-11-21 US US18/516,867 patent/US20240082708A1/en active Pending
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 |