JP6984001B2 - 動きベクトル予測のためのプレイヤ入力の動き補償のためのシステムおよび方法 - Google Patents

動きベクトル予測のためのプレイヤ入力の動き補償のためのシステムおよび方法 Download PDF

Info

Publication number
JP6984001B2
JP6984001B2 JP2020507502A JP2020507502A JP6984001B2 JP 6984001 B2 JP6984001 B2 JP 6984001B2 JP 2020507502 A JP2020507502 A JP 2020507502A JP 2020507502 A JP2020507502 A JP 2020507502A JP 6984001 B2 JP6984001 B2 JP 6984001B2
Authority
JP
Japan
Prior art keywords
motion vector
motion
client
input
data
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.)
Active
Application number
JP2020507502A
Other languages
English (en)
Other versions
JP2020518210A (ja
Inventor
コピエッツ,ミヒャエル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zenimax Media Inc
Original Assignee
Zenimax Media Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zenimax Media Inc filed Critical Zenimax Media Inc
Priority to JP2019239577A priority Critical patent/JP6972097B2/ja
Publication of JP2020518210A publication Critical patent/JP2020518210A/ja
Application granted granted Critical
Publication of JP6984001B2 publication Critical patent/JP6984001B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/521Processing of motion vectors for estimating the reliability of the determined motion vectors or motion vector field, e.g. for smoothing the motion vector field or for correcting motion vectors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/207Analysis of motion for motion estimation over a hierarchy of resolutions
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/352Details of game servers involving special game server arrangements, e.g. regional servers connected to a national server or a plurality of servers managing partitions of the game world
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/355Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an MPEG-stream for transmitting to a mobile phone or a thin client
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/358Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/40Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/52Controlling the output signals based on the game progress involving aspects of the displayed game scene
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/85Providing additional services to players
    • A63F13/86Watching games played by other players
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/65Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/70Media network packetisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/762Media network packet handling at the source 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • H04N19/126Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/149Data rate or code amount at the encoder output by estimating the code amount by means of a model, e.g. mathematical model or statistical model
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/154Measured or subjectively estimated visual quality after decoding, e.g. measurement of distortion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/162User input
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/192Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • H04N19/426Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements using memory downsizing methods
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/55Controlling game characters or game objects based on the game progress
    • A63F13/58Controlling game characters or game objects based on the game progress by computing conditions of game characters, e.g. stamina, strength, motivation or energy level
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/53Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
    • A63F2300/534Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing for network load management, e.g. bandwidth optimization, latency reduction
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/53Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
    • A63F2300/538Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing for performing operations on behalf of the game client, e.g. rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/527Global motion vector estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding

Description

本出願は、2017年4月21日に出願された米国仮出願第62/488,526号、2018年2月23日に出願された米国仮出願第62/634,464号、2018年3月9日に出願された米国仮出願第62/640,945号、および2018年3月16日に出願された米国仮出願第62/644,164号の利益を主張する。
サーバ側のゲームがクライアント側のプレイヤによって制御されるリモートゲーミングアプリケーションは、既存のまたはカスタマイズされたエンコーダを使用し、リアルタイムで3Dグラフィックスエンジン(graphics engine)からのビデオ出力をエンコードすることを試みていた。しかし、ビデオゲームの会話形式の特性、特に、ビデオ出力とプレイヤ入力との間のプレイヤフィードバックループ(player feedback loop)は、ゲームビデオストリーミングの待機時間(latency)が一般的なビデオストリーミングよりも極めて長い。既存のビデオコーディング方法は、エンコード時間を減らすために計算能力(computational power)を交換することができるが、その他の方法はない。エンコードプロセスをビデオレンダリングプロセスに統合するための新たな方法は、エンコード時間を著しく減らすことができる上に、計算能力を低め、エンコードされたビデオの品質を改善し、既存のハードウェアデバイスの相互運用性を維持するためにオリジナルビットストリームデータ形式(original bitstream data format)を維持するようになる。
通常のビデオ再生とは異なり、ビデオゲームは、ビデオフィードループ(loop)に固有の(unique)プレイヤ入力が生じる。プレイヤは、入力からビデオ出力までの待機時間(latency)に極めて敏感である。このようなプレイヤ入力フィードバックループにおける長い待機時間は、サーバホストビデオゲームインスタンス(instance)が遠隔のプレイヤによって制御されるビデオゲームストリーミングアプリケーションに対して大きな障害物となる。入力からフィードバックまでの時間を減らすことができるプロセスがあれば、ユーザ経験の直接的な改善に繋がるはずである。
ゲームストリーミング環境において、クライアントハードウェアは多様な水準の計算性能を備えるが、専用H.264ハードウェアデコーダがモバイルおよび他の低電力デバイスにおいて最も普遍的である。ハードウェアデコーダは、動き補償(motion compensation)のようなH.264コーディング標準によって通常的に行われる計算の小さな選択を実行するのに強い。専用コーディングハードウェアの強みは、クライアントの全体計算能力に関係なく、ゲームストリーミング環境において優れたプレイヤ経験を提供できるというところにある。
ローカル(local)、すなわち、ストリーミングされない(non−streamed)レンダリングアプリケーションにおいて、ゲームエンジンは、プレイヤ入力とビデオフィードバックとの間に複数のフレームからなる待機時間を追加する。ゲームストリーミングアプリケーションではプレイヤ入力がネットワークを介してリモートサーバに伝達されなければならず、プレイヤがフィードバックを受信する前に、ビデオ出力がエンコードされて送信されてデコードされなければならないため、追加の待機時間がプレイヤ入力フィードバックサイクルに追加されざるを得ない。いくつかのプレイヤ入力に対し、クライアントは、即時に動き補償を実行してビデオフィードバックに対する結果を推定し、ネットワークの待機時間を減らすことができる。
ビデオゲームがネットワークのクライアントによって遠隔で制御されながらサーバで実行される状況において、入力フィードバック待機時間の減少のために一部のイメージ正確度を犠牲にするために、プレイヤ入力の動き補償は、最も基本的にピクセルのグループをシフト(shift)させる技術である。このような技術は、1人称ゲームにおける、プレイヤビュー(view)の回転のような一定の動きベクトルをもたらす入力に対するプレイヤフィードバック待機時間を減らすのに強い。
ビデオゲームにおいて、プレイヤコンテキストは、以前のプレイヤアクション、入力、および決定の結果である現在のゲーム状態によって定義される。ゲームストリーミングシステムにおいて、クライアントは、プレイヤコンテキストを認知していない。すなわち、クライアントは、ビデオ出力を受信するだけで、特定のプレイヤ入力の結果を決定するゲーム状態情報は受信しないのである。ゲーム状態情報を基盤に、固有でありながらも予測可能な動き成果(outcome)を引き起こす多様な入力がある。このような入力は、プレイヤフィードバック待機時間の減少という利点はあるが、クライアントはプレイヤコンテキスト情報を有さないため、従来のプレイヤ入力の動き補償のためにクライアントにプレキャッシングされることができない。また、プレイヤコンテキストの順列空間は、キャッシングされた、繰り返される動きベクトルのような方法によって動きベクトルを予め生成するため、極めて完全であると言える。このようなシステムおよび方法は、米国仮出願第62/488,526号、第62/634,464号、および第62/640,945号に記載されており、このすべては本明細書に統合される。ゲームサーバは、予測された動きベクトルを生成し、プレイヤコンテキストの変更によってクライアント入力の動き補償キャッシュ(cache)をアップデートすることにより、補償が成り立つ。これは、クライアントが制限されたコンテキスト従属入力のセットに対してプレイヤ入力の動き補償手法を使用することを許容し、入力フィードバック待機時間の減少をもたらす。
米国特許第9,661,351号(‘351特許)は、サーバからクライアントデバイスへの送信の間、フレームをスキップ(skip)するためのシステムおよび方法を開示している。ここで、スキップされたフレームを検出することに応答し、クライアントデバイスは、圧縮されたビデオストリームでスキップされたフレームの代わりとなる予測されたフレームを生成し、予測されたフレームは、クライアントデバイスによってデコードされた1つ以上の以前フレームからデルタ(delta)情報を拡張させることを基盤に生成される。このような技術に対し、1つ以上の再構成されるか予測されたフレームのクライアント側のフレーム予測は、1つ以上の先行する(preceding)プレイのデータ(例えば、動きベクトル、残差(residual)など)を基盤としてスキップされたフレームの次に使用される。また、技術は、ビート割り当ておよび/または補助機能(sub feature)エンコードを優先視する。エンコードされたネットワーク抽象化層ユニット(Encoded Network Abstraction Layer Unit:NALU)は、(1)動きベクトル、および(2)残差に分割される。実際にフレームをスキップする代りに、装置は、優先順位にしたがって最小限のエンコードデータだけを送信することができる。例えば、動きの優先順位が指定されると、動きベクトルだけが送信されるようになる。少なくとも‘351特許には、サーバから送信されたルックアップテーブルを、ユーザ入力を動きベクトルとタグ(tag)にマッチングさせることに使用し、この動きベクトルを合算するクライアントデバイスは開示されていなため、本発明は‘351特許の技術よりも優れていると言える。また、‘351特許には、デコードされたフレームにおける動きを推定するために、このフレームに対するこの合算された動きベクトルを適用することは開示されていない。さらに、本発明は、入力フィードバック待機時間を減少させるのに優れており、これは、サーバが出力ビデオをリターン(return)するのを待つ代りに、プレイヤ入力の動き補償を使用することによって大きく減少される。
米国特許第8,678,929号(‘929特許)は、ネットワークの会話型ゲームシステムの動作に関する。開示される方法は、2つのブレンディング(blending)方式によって共有されたグローバルオブジェクト(global object)に対してコース訂正された位置値を決定することにより、ネットワーク遅延を減少させることにフォーカスを合わせている。この特許に記載された「ブレンディング」は、ローカルコンソール(local console)からローカルプレイヤのポーズ(pose)計算を送信するネットワークシミュレーション(network simulation)段階を含む。コンソールは、ローカルおよびネットワークシミュレーションをブレンディングする。また、方法は、ローカルコンソールで共有されたグローバルオブジェクトに対する位置値を決定するのにローカルプレイヤのブレンディングされたポーズを使用することにより、共有されたグローバルオブジェクトをブレンディングする。少なくとも‘929特許には、サーバから送信されたルックアップテーブルを、ユーザ入力を動きベクトルにマッチングさせることに使用し、この動きベクトルをタギングして合算するクライアントデバイスは開示されていなため、本発明は‘929特許の技術よりも優れていると言える。また、‘929特許には、デコードされたフレームにおける動きを推定するために、このフレームに対するこの合算された動きベクトルを適用することは開示されていない。さらに、本発明は、入力フィードバック待機時間を減少させるのに優れており、これは、サーバが出力ビデオをリターンするのを待つ代りに、プレイヤ入力の動き補償を使用することによって大きく減少される。
米国特許第8,069,258号(‘258特許)は、マルチプレイヤシミュレーションのネットワーク支援を明白に減少させるためにローカルフレーム処理を使用することに関する。ここに記載された方法は、ローカルユーザからの入力をインタセプト(intercept)する段階、以前のゲームフレームからネットワークシミュレーションのリモートオブジェクトの状態データを決定する段階、およびネットワークシミュレーションの一部である複数のゲームシステムから非決定的(nondeterministic)オブジェクトの相互作用(interaction)を決定する段階を含む。この相互作用データは、状態データおよびローカル入力とともに、ビデオフレームのローカルシミュレーションを生成するのに使用される。このような方式により、ローカルおよびネットワークシミュレーションは、単一フレームに対して非同期的に実行されるようになり、各フレームは、ゲーム内の単一時間フェーズ(phase)に対応する。これは、ローカルシミュレーションがネットワークゲームプレイ(gameplay)中にリアルタイムでアップデートされ、ネットワークと(実質的に)同期化されるように許容する。少なくとも‘258特許には、サーバから送信されたルックアップテーブルを、ユーザ入力を動きベクトルにマッチングさせるのに使用し、この動きベクトルをタギングして合算するクライアントデバイスは開示されていないため、本発明は‘258特許の技術よりも優れていると言える。また、‘258特許には、デコードされたフレームにおける動きを推定するために、このフレームに対するこの合算された動きベクトルを適用することは開示されていない。さらに、本発明は、入力フィードバック待機時間を減少させるのに優れており、これは、サーバが出力ビデオをリターンするのを待つ代りに、プレイヤ入力の動き補償を使用することによって大きく減少される。
米国特許第9,665,334B2号(‘334特許)は、ディスプレイ上の結合するグラフィックスをレンダリングするために複数のプロセスと合成器(compositor)を適用するプロトコルをレンダリングするためのシステムおよび方法を開示している。この技術は次のように動作する。サーバが同時に複数のクライアントデバイスにゲームスクリーンを提供するとき、サーバにおけるレンダリングプロセッシングの計算負荷(load)は、例えば、迅速な応答性を求めるゲームコンテンツにおいて過重となる。すなわち、サーバがスクリーンを提供する複数クライアントデバイスは、サーバのレンダリング性能および求められる応答性によって制限される。これとは対照的に、各クライアントデバイスは、サーバとクライアントデバイスとの間にレンダリングプロセスを共有させるために、一般的なレンダリング性能によって実行されるプロセッシングを実行するように制御されるとき、スクリーンはより多くのクライアントデバイスに提供されることができる。また、一般的に、テクスチャマッピング(texture mapping)を適用しなくても、レンダリングされるゲームスクリーンは高い圧縮効率を有し、インターネットのようなネットワークを介してより小さな帯域幅で送信されることができる。少なくとも‘334特許には、予め決定された基準に基づいてサーバで動きベクトルを生成し、生成された動きベクトルと1つ以上のインバリデータ(invalidator)をクライアントに送信し、クライアントがこの動きベクトルとインバリデータをキャッシングすることは開示されていないため、本発明は‘334特許に記載された技術よりも優れていると言える。また、‘334特許には、サーバがユーザから入力を受信するようにクライアントに指示し、その入力をキャッシングされた動きベクトルまたはインバリデータとマッチングさせるのに使用し、このベクトルまたはインバリデータが動き補償に使用されることは開示されていない。さらに、本発明は、入力フィードバック待機時間を減少させるため優れており、これは、サーバが出力ビデオをリターンするのを待つ代りに、プレイヤ入力の動き補償を使用することによって大きく減少される。
米国特許第9,736,454号(‘454特許)は、テクスチャブロック(texture block)とともに配置された深さブロック(depth block)の利用可能性を検査し、ともに配置された深さブロックの利用可能性に基づいてテクスチャブロックに対する予測方法を決定し、ともに配置された深さブロックの利用可能性に基づいてテクスチャブロックに対する第1予測ブロック(first prediction block)を導き出すことを含む、エンコードのためのシステムおよび方法を開示している。少なくとも‘454特許には、予め決定された基準に基づいてサーバで動きベクトルを生成し、生成された動きベクトルと1つ以上のインバリデータをクライアントに送信し、クライアントがこの動きベクトルとインバリデータをキャッシングすることは開示されていないため、本発明は‘454特許に記載された技術よりも優れていると言える。また、‘454特許には、サーバがユーザから入力を受信するようにクライアントに指示し、その入力をキャッシングされた動きベクトルまたはインバリデータとマッチングさせるのに使用し、このベクトルまたはインバリデータが動き補償に使用されることは開示されていない。さらに、本発明は、入力フィードバック待機時間を減少させるのに優れており、これは、サーバが出力ビデオをリターンするのを待つ代りに、プレイヤ入力の動き補償を使用することによって大きく減少される。
米国特許第9,705,526号(‘526特許)は、メディア(media)およびイメージアプリケーションにおけるエントロピ(entropy)エンコードのためのシステムおよび方法を開示している。その技術は、圧縮が指示されたイメージおよび/またはビデオデータのソースを受信することによって始まるシステムを開示している。また、無損失の(lossless)圧縮方式が適用される。また、予測器(predictor)/デルタ計算ユニット(delta computation unit)が入力を採択し、隣接する入力エレメント(element)間のデルタ計算を使用して入力データの余分(redundancy)を減少しようとする。さらに、この値は、圧縮されたイメージおよび/またはビデオデータを生成するために、エントロピエンコーダにおいて予め定義された統計モデリングによってエンコードされる。上述と同じように、少なくとも‘526特許には、予め決定された基準に基づいてサーバで動きベクトルを生成し、生成された動きベクトルと1つ以上のインバリデータをクライアントに送信し、クライアントがこの動きベクトルとインバリデータをキャッシングすることは開示されていないため、本発明は‘526特許に記載された技術よりも優れていると言える。また、‘526特許には、サーバがユーザから入力を受信するようにクライアントに指示し、その入力をキャッシングされた動きベクトルまたはインバリデータとマッチングさせることに使用され、このベクトルまたはインバリデータが動き補償に使用されることは開示されていない。さらに、本発明は、入力フィードバック待機時間を減少させるのに優れており、これは、サーバが出力ビデオをリターンするのを待つ代りに、プレイヤ入力の動き補償を使用することによって大きく減少される。
米国特許第8,873,636B2号(‘626特許)は、ゲームのローカルインスタンスを実行するユーザPCに、コーディングされたイメージデータを提供する動画(moving−image)配布(distribution)サーバ(例えば、オンラインゲームを実行するサーバ)に関する。このプロセスを具体的に実行するために、ユーザPCのCPUは、先行するフレームスクリーンで選択されたブロックと関連する動きベクトルをデコードするために参照される領域を指定する。これは、選択されたブロックと関連する動きベクトル(提供されるプレプロセッシング(pre−processing)情報に含まれたベクトル)を参照して実行され、領域のイメージを参照イメージで抽出する。他の参考文献と同じように、少なくとも‘636特許には、予め決定された基準に基づいてサーバで動きベクトルを生成し、生成された動きベクトルと1つ以上のインバリデータをクライアントに送信し、クライアントがこの動きベクトルとインバリデータをキャッシングすることは開示されていないため、本発明は‘636特許に記載された技術よりも優れていると言える。また、‘636特許には、サーバがユーザから入力を受信するようにクライアントに指示し、その入力をキャッシングされた動きベクトルまたはインバリデータとマッチングさせることに使用し、このベクトルまたはインバリデータが動き補償に使用されることは開示されていない。さらに、本発明は、入力フィードバック待機時間を減少させるのに優れており、これは、サーバが出力ビデオをリターンするのを待つ代りに、プレイヤ入力の動き補償を使用することによって大きく減少される。
国際公開特許第WO2009138878 A2号(‘878公報)は、多様なレンダリングされたオブジェクトの詳細レベルおよびポストフィルタリング(post−filtering)を制御しながら、中央集中式ストリーミングアプリケーションサーバで複数の会話型アプリケーションをプロセッシングおよびストリーミングすることに関する。システムにおいて、中央集中式ストリーミングアプリケーションサーバは、このビデオプレプロセッサにおいて圧縮されたストリームをデコードし、コンテンツをディスプレイするクライアントデバイスへのオーディオビジュアル(audio−visual)コンテンツの圧縮されたストリームをエンコードする前に、フレームシーケンスに空間および時間フィルタリングを実行する。中央集中式の会話型アプリケーションサーバのGPUコマンド(command)プロセッサは、ビデオエンコーダのターゲットエンコードされたフレーム内の各マクロブロック(macroblock)に対して動き補償推定を計算したりするモジュールを含む。これにもかかわらず、少なくとも‘878公報には、予め決定された基準に基づいてサーバで動きベクトルを生成し、生成された動きベクトルと1つ以上のインバリデータをクライアントに送信し、クライアントがこの動きベクトルとインバリデータをキャッシングすることは開示されていないため、本発明は‘878公報に記載された技術よりも優れていると言える。また、‘878公報には、サーバがユーザから入力を受信するようにクライアントに指示し、その入力をキャッシングされた動きベクトルまたはインバリデータとマッチングさせることに使用し、このベクトルまたはインバリデータが動き補償に使用されることは開示されていない。さらに、本発明は、入力フィードバック待機時間を減少させるのに優れており、これは、サーバが出力ビデオをリターンするのを待つ代りに、プレイヤ入力の動き補償を使用することによって大きく減少される。
米国特許第9,358,466B2号(‘466特許)は、キャッシングされたデータを再使用することによってビデオゲーム性能を向上させることに関する。開示されるシステムは、使用されたデジタル資産を識別し、識別されたデジタル資産がキャッシュ(cache)内に存在するか否かを判断することにより、相異して生成されたビデオゲームミッション(mission)のキャッシュ性能に少なくとも部分的にスコア(score)を付与する。キャッシュスコアは、既にキャッシュに存在するミッションに対するデジタル資産の割合に該当するキャッシュ再使用率に基づいて計算される。キャッシュスコアを生成する他の技術は、既にキャッシュに存在するミッションに対する結合されたデジタル資産の全体サイズ、および/またはまだキャッシュに存在しないミッションに対する結合されたデジタル資産の全体サイズのようなファクタ(factor)を説明する。このような方式によってデータをキャッシングすることにより、このデータと異なる、キャッシングされていないデータはより効率的になる。少なくとも‘466特許には、繰り返される動きベクトルをキャッシングしたり、入力データから動き推定を計算したり、入力データに基づいて記録された動きベクトルライブラリ(motion vector library)をアップデートしたりするため、これにより、クライアントがサーバから実際の動きベクトルデータを受信する前に動きを開始させないために、記録された動きベクトルライブラリを使用することができることは開示されていないため、本発明は‘466特許に記載された技術よりも優れていると言える。
米国特許第6,903,662 B2号(‘662特許)は、構成可能なコンピュータ入力デバイス、特に、迅速な応答時間を維持するために入力データをキャッシングする入力デバイスに関する。システムは、特定のキーが以前に識別されたかを確認するために、内部メモリ(またはキャッシュ)に対してキープッシュを確認することにより動作する。この後、この時点よりも前にシステムがキーと通信していなければ、システムはこのキーメモリから入力に対応するデータを検索する。この後、システムは、その内部メモリ(キャッシュ)をキーアイデンティティ(identity)とこれに対応するデータとしてアップデートする。この後、システムは、キーからの入力データをホストコンピュータに送信する。しかし、次に、システムがプッシュされた状態の同一のキーを見つければ、キーメモリから同一のスキャンコードを再検索する代りに、自体のメモリ(キャッシュ)を照会する(query)。少なくとも‘662特許には、繰り返される動きベクトルをキャッシングしたり、入力データから動き推定を計算したり、入力データに基づいて記録された動きベクトルライブラリをアップデートしたりし、これにより、クライアントがサーバから実際の動きベクトルデータを受信する前に動きを開始させるために、記録された動きベクトルライブラリを使用することができることは開示されていないため、本発明は‘622特許に記録された技術よりも優れていると言える。
日本特許第JP6129865B2号(‘865特許)は、ゲームコンテンツデータがリアルタイムゲームプレイ中の必要時に利用可能なように、経路(path)セグメント(segment)のサブセット(subset)に対するレンダリングされたゲームコンテンツデータをローカルキャッシュにキャッシングするための、ゲームクライアントに送信するためのシステムおよび方法を開示している。少なくとも‘865特許は、繰り返される動きベクトルをキャッシングしたり、入力データから動き推定を計算したり、入力データに基づいて記録された動きベクトルライブラリをアップデートしたりし、これにより、クライアントがサーバから実際の動きベクトルデータを受信する前に動きを開始させるために、記録された動きベクトルライブラリを使用することができることは開示されていないため、本発明は‘865特許に記載された技術よりも優れていると言える。
米国特許第9,762,919号(‘919特許)は、ブロックプロセッシングパイプライン(block processing pipeline)において参照データをキャッシングするためのシステムおよび方法を開示している。‘919特許技術は、例えば、SRAM(static random access memory)のようなローカル(パイプライン)メモリで実現されることのできるキャッシュメモリを開示しており、パイプラインの初期ステージ(stage)でマクロブロックに対して決定される動きベクトルに対応するクロマ参照データ(chroma reference data)の部分(例えば、64バイトのメモリブロック)がメモリからプレフェッチ(prefetched)される。クロマキャッシュロジック(chroma chche logic)は、キャッシュを維持することができ、パイプラインの複数のステージに拡張される。パイプラインを通過する与えられたマクロブロックの動きベクトルに対するフェッチ(fetch)は、クロマ動き補償が必要となる前に、メモリからキャッシュに繰り返されるメモリブロックを読み取るため、時間(すなわち、複数のパイプラインサイクル(cycle))を提供するクロマ動き補償ステージの以前の1つ以上のステージでクロマキャッシュロジックによって始めることができる。しかし、‘919特許も、本発明に比べると不足である。少なくとも‘919特許には、繰り返される動きベクトルをキャッシングしたり、入力データから動き推定を計算したり、入力データに基づいて記録された動きベクトルライブラリをアップデートしたりし、これにより、クライアントがサーバから実際の動きベクトルデータを受信する前に動きを開始させるために、記録された動きベクトルライブラリを使用することができることは開示されていないため、本発明は‘919特許に記載された技術よりも優れていると言える。
このような技術における最新技術に関する説明によって明らであるが、リアルタイムゲーム環境のエンコードと関連する現在のコンピュータ技術に対する改善が、本技術分野において求められている。
したがって、本発明の目的は、クライアントデバイスがユーザ入力を動きベクトルにマッチングさせるためにサーバから送信されたルックアップテーブルを使用し、この動きベクトルをタギングして合算する、動き補償手法によって待機時間を減少させるためのシステムおよび方法を開示することにある。リモートサーバがクライアントにエンコードされたビデオフレームを送信するとき、クライアントは、このビデオフレームをデコードし、このフレーム内の動きを推定するために合算された動きベクトルをデコードされたフレームに適用する。
本発明の他の目的は、エンコードされたフレームが残差ハンドリング(residual handling)されることなくデコードされるシステムおよび方法を開示することにある。
本発明のまた他の目的は、クライアントが1つ以上の滑らかな関数(smoothing function)をキュー内の合算されたタギングされた動きベクトルに適用する、動き補償手法によって待機時間を減少させるためのシステムおよび方法を開示することにある。
本発明のさらに他の目的は、クライアントデバイスにおいて、動きベクトルと関連するタグは、実質的に時系列(chronological)である、動き補償手法によって待機時間を減少させるためのシステムおよび方法を開示することにある。
本発明の目的は、予め決定された基準に基づいてサーバで動きベクトルを生成し、クライアントに生成された動きベクトルと1つ以上のインバリデータ(invalidator)を送信することにより、クライアントがこの動きベクトルとインバリデータをキャッシングする、入力フィードバック待機時間を減少させるためのシステムおよび方法を提供することにある。サーバは、ユーザから入力を受信し、この入力を動きベクトルまたはインバリデータとマッチングさせることに使用するようにクライアントに指示する。また、この比較に基づき、クライアントは、マッチングされた動きベクトルまたはインバリデータをグラフィックインタフェース(graphic interface)のエフェクト動き(effect motion)補償に適用する。
本発明の他の目的は、動きベクトルをルックアップテーブルにキャッシングすることにより、入力フィードバック待機時間を減少させるためのシステムおよび方法を提供することにある。
本発明のまた他の目的は、インバリデータを1つ以上のキャッシングされた動きベクトルと関連させることにより、入力フィードバック待機時間を減少させるためのシステムおよび方法を提供することにある。
本発明のさらに他の目的は、入力が1つ以上の動きベクトルと関連するキャッシングされたインバリデータにマッチングされると、1つ以上のキャッシングされた動きベクトルを削除するようにクライアントに指示することにより、入力フィードバック待機時間を減少させるためのシステムおよび方法を提供することにある。
本発明の目的は、クライアントに予め生成された動きベクトルライブラリ(motion vector library)を送信するサーバにおいて、繰り返される(repetitive)動きベクトルをキャッシングすることにより、待機時間を減少させるためのシステムおよび方法を開示することにある。クライアントは、動きベクトルライブラリを記録し、ユーザ入力データをモニタリングする。サーバは、入力データから動き推定を計算するようにクライアントに指示し、入力データに基づいて記録された動きベクトルライブラリをアップデートするようにクライアントに指示する。これにより、クライアントは、サーバから実際の動きベクトルデータを受信する前にグラフィックインタフェースの動きを開始させるために、記録された動きベクトルライブラリを適用する。
本発明の他の目的は、サーバが記録された動きベクトルライブラリの適用をディスエーブルさせるためにコンテキストアップデート(context update)を送信する、繰り返される動きベクトルをキャッシングすることにより、待機時間を減少させるためのシステムおよび方法を開示することにある。
本発明のさらに他の目的は、1つ以上のスケーリングファクタ(scaling factor)が動きベクトルライブラリに適用される、繰り返される動きベクトルをキャッシングすることにより、待機時間を減少させるためのシステムおよび方法を開示することにある。
添付の図面は、後述する詳細な説明を参照することでより適切に理解することができるため、本発明の完全な理解およびこれによる多くの利点を容易に得ることができるであろう。
ビデオゲームがリモートクライアントの入力によって制御されながらサーバで実行される遠隔ゲームシステムを例示的に示したブロック図である。 適切なプレイヤ入力に対する動き補償を適用することにより、ゲームストリーミングアプリケーションにおける入力フィードバック待機時間の減少を例示的に説明示したフローチャートである。 プレイヤ入力の動き補償を利用するビデオゲームストリーミング環境のランタイム中の例示的な瞬間を例示的に示したブロック図である。 図3のプレイヤ入力の動き補償中のマクロブロックを例示的に示した図である。 クライアントにおいてプレイヤ入力の動き補償中の動きベクトルを適用するための代案的な方法を例示的に示した図である。 図6a、図6b、および図6cは、プレイヤ入力の動き補償および図5に示された代案的な方法に対するブレンディング(blending)を経る例示的なマクロブロックを示した図である。 予測された動きベクトルのランタイム生成を示した図である。 プレイヤ入力の動き補償を目的とする予測された動きベクトルの送信およびクライアント側の記録を例示的に示したフローチャートである。 予測された動きベクトルを無効にする(invalidating)例示的なプロセスを示した図である。 動きベクトルライブラリを生成するための例示的な方法およびキャッシング目的のための例示的な繰り返される動きベクトルライブラリを示した図である。 プレイヤ入力の動き補償のために動きベクトルライブラリをキャッシング、適用、およびアップデートするためのプロセスを例示的に示したフローチャートである。 動きベクトルマッピングがアップデートされるか否かを例示的に示した図である。 キャッシングされた動きベクトルの場合に、プレイヤ入力の動き補償中にマルチフレーム動きベクトルを適用するための例示的な修正を示した図である。
図面に示す発明の好ましい実施形態を説明するにあたり、明確化のために、特定の用語に依存することがある。しかし、本発明は、このように選択された特定の用語に限定されることを意図しておらず、それぞれの特定の用語は、類似の目的を達成するために類似の方式で作動するすべての技術的等価物を含むものと理解されなければならない。本発明の好ましい実施形態は、例示の目的として記載されているが、本発明は、図面に具体的に示されていない他の形態によっても実現可能であることが理解されなければならない。
特定の類型のプレイヤ入力は、プレイヤ入力の動き補償のためのより適した候補を生成する。2つのファクタ(factor)が与えられた入力の適合性(suitability)に寄与する。入力フィードバック待機時間に対するプレイヤ敏感度(sensitivity)および相当なアーティファクト(artifact)を導入せずにプレイヤ入力の動き補償を実現するには困難がある。各入力は、適合性に対して評価される必要がある。例えば、1人称シューティングゲーム(shooter game)において、プレイヤは、マウス基盤(mouse−based)のビュー回転に極めて敏感であり、プレイヤ入力からビデオ出力まで約16msという1秒にもならないディレイ(delay)まで認識されるであろう。しかし、同じような状況において、ゲームパッド(gamepad)コントローラ基盤のビュー回転は、一般的にこれよりは遅く、プレイヤは、入力フィードバック待機時間にそれほど敏感でない。ビュー回転は、回転の反対方向にシーン(scene)をシフトさせることによって同じようにすることができるが、回転方向にイメージのエッジ(edge)に沿って好ましくないアーティファクトが存在することがある。スクリーン上の照準(aim)を調節することのような小さなビュー回転に対し、プレイヤは、エッジアーティファクトを認識できないこともある。他の例において、ドライビングゲーム(driving game)において、加速する車は、プレイヤの敏感性および/または待機時間に対する慣性(inertia)の不足によりプレイヤ入力の動き補償に対して低い優先順位となるが、ステアリング(steering)およびブレーキング(braking)入力は、プレイヤが入力フィードバック待機時間を認識するはずであるため、高い優先順位となる。
プレイヤ入力の受信から動き出力がディスプレイされるまでの時間がプレイヤフィードバック待機時間となる。動き補償を使用することによって推定された動きは、プレイヤ入力を処理するようにサーバを待ちながら、ほぼ即時にフィードバックを提供することができる。このような方式により、プレイヤフィードバック待機時間は、ゲームストリーミングアプリケーションにおいて大きく減少される。ゲームストリーミングアプリケーションにおいてプレイヤ入力の動き補償を実現することにより、動き推定は、次の利用可能なフレームで提供されるようになる。これとは対照的に、入力がサーバに移動し、フレームを生成し、リターンされるには、複数のフレームを経るようになる。また、プレイヤ入力の動き補償は、ゲームエンジンおよびレンダラ(renderer)が複数のフレームのプレイヤフィードバック待機時間を有する既存のストリーミングされない(non−streamed)ゲームアプリケーションにおいて利点を提供することができる。
クライアントは、スクリーン周辺のオブジェクトの移動を追跡するための適切なコンテキストを有さないであろう。プレイヤ入力の動き補償は、特定のマクロブロックまたはビデオオブジェクトの位置をクライアントが認知しない場合には適さない。例えば、二次元プラットフォームゲーム(platformer game)において、キャラクタ(character)は、左側から右側にスクリーン周辺を移動する。クライアントは、プレイヤがジャンプを入力(jump input)したとき、キャラクタがどこに位置するか認知することができない。したがって、このような場合に入力フィードバック待機時間を減少させるために、プレイヤ入力の動き補償だけが使用されることはない。
一般的に、プレイヤ入力の動き補償のための動きベクトルは、予め生成されなければならない。プレイヤのカメラ回転のような動きに対し、動きベクトルは、ゲームが入力にどのように加重値を付与するかに基づいて計算されてよい。一例として、動きベクトルは、入力値に感度重み(sensitivity weight)を掛けたものであってよい。アニメーションの移動のような直接に計算することのできない動きに対し、動きが直接に測定されて記録されるように、アニメーションは、デベロップメント(development)中にトリガーされてよい。動きベクトルを測定することは、H.264エンコード中に実行される同一の動き推定技術によって達成されてよい。
図1は、ビデオゲームがリモートクライアントによって制御される例示的なシステムを示した図である。このシステムにおいて、サーバ100は、ビデオゲームソフトウェア120およびビデオ出力をレンダリングするグラフィックスエンジン(graphics engine)104をホスティングする。ビデオは、コーデック(コーディングエンジンまたはエンコーダとも呼ばれる)106でエンコードされ、エンコードされたビデオデータ108はリモートクライアントに送信される。サーバアキテクチャ(server architecture)100は、グラフィックスエンジン104とコーデック106の両方の機能を支援することのできるハードウェアまたはソフトウェアのいずれかの組み合わせであってよい。図に示す例において、グラフィックスエンジン104は、例えば、複数のコンピュータ読み取り可能なメモリ112にロードされたビデオゲームソフトウェア120によって制御されるGPU110で実現されてよく、この反面、コーデック106は、ビデオエンコードソフトウェアを実行するCPU114で実現されてよい。
リモートクライアントは、送信されたエンコードされたビデオデータ108をデコードするためのコーデック118と、プレイヤ入力の動き補償を適用するためのクライアントアプリケーション120を実行することのできるコンピュータシステム116で構成される。また、クライアントコンピュータシステム116は、ディスプレイハードウェア124を実行させるためのディスプレイコントローラ122を含む。クライアント側の入力周辺機器(peripheral)126からの入力は、クライアントアプリケーション120により、サーバ100から実行されるゲームソフトウェア102に再送信されるコントロールデータ128として変換される。また、周辺機器126からの入力は、図2でより詳細に示すように、適用するプレイヤ入力の動き補償があれば、どのようなものであるかを決定するのに使用されるであろう。
図2は、単一(single)入力に対するプレイヤ入力の動き補償を実行するのに求められる段階を説明するためのフローチャートである。クライアントが初期化するとき、段階200において、サーバは、入力と、これと関連する動きベクトルを含むルックアップテーブルを送信する。この後、段階202において、ルックアップテーブルは、クライアントによってキャッシングされる。このような実施形態において、クライアントは、複数のストリーミングゲームの要求を満たすように一般化される。特定の実施形態において、特定のクライアントは、ゲームに対するルックアップテーブルを既に有していることがあるため、段階200および202はスキップされてよい。代案的な実現において、ゲームの特定のクライアントは、サーバからキャッシングされることなく、動きベクトルルックアップテーブルを永久的に記録することも可能である。
段階204において、クライアントがマウス(mouse)またはゲームパッド(gamepad)コントローラのような入力デバイスからプレイヤ入力を受信すると、段階206において、クライアントアプリケーションは、キャッシングされた動きベクトルルックアップテーブルからマッチングされる入力を確認する。マッチングされるプレイヤ入力がなければ、クライアントは、追加のアクション(action)は取らずに、追加の修正なくサーバに入力を送信する。キャッシュ(cache)にマッチングされるプレイヤ入力があれば、クライアントは、プレイヤ入力の動き補償を適用する。選択的に、キャッシュは、プレイヤ入力に基づいてルックアップテーブルでエントリ(entry)を変更してよい。例えば、プレイヤが一時停止ボタン(pause button)を押すと、プレイヤが一時停止スクリーンを終えるまで、すべてのプレイヤ移動入力がディセーブル(disable)されなければならない。一実施形態において、クライアント制御ルックアップテーブルは、好ましくはクライアントにより、プレイヤが一時停止入力を選択するたびに転換される、すなわち、一時停止メニューにおける使用のための1つと、一時停止メニュー以外における使用のための1つである、2つのセットの入力を有するようになる。代案的な実施形態において、サーバは、クライアントのキャッシングされたルックアップテーブルのコンテンツを転換してよい。
クライアントが動き補償のためのプレイヤ入力を受信すると、段階208において、クライアントは、プレイヤ入力と、これと関連する動きベクトルにタグ(tag)を追加する。段階210において、タギングされた入力は、サーバに送信される。タグは、プレイヤ入力を未来(future)フィードバックと関連させることのできる識別子(identifier)である。例えば、タグは、クライアントがプレイヤ入力の動き補償を実行するのに使用される入力を受信するたびに増加する定数(integer)であってよい。タグは、プレイヤ入力と同一のネットワークパケット(network packet)内にメタデータ(metadata)として追加されるか、入力情報と同期化されたタグ情報を維持させる類似のメッセージングパターン内で送信されてよい。段階213において、クライアントは、タギングされたタグの受信を確認する。プレイヤ入力がタギングされて送信される間、段階212において、クライアントは、キャッシングされたルックアップテーブルに含まれた動きベクトルを適用する。このような動きベクトルは、相関タグ(correlation tag)がサーバからリターンされるまで、各受信フレーム(incoming frame)に対して適用される。このような動きベクトルを適用するための方法の詳細な説明は、図3に示すとおりである。
サーバがタギングされたプレイヤ入力を受信すると、段階214において、タギングされたプレイヤ入力は、出力フレームを生成するゲームに伝達される。この後、段階216において、ビデオイメージがエンコードされる。エンコードされたフレームがクライアントに再送信される前に、段階218において、プレイヤ入力タグがエンコードされたフレームに付与される(attached)。これは、プレイヤ入力とともに既に送信されたものと同一のタグであり、出力フレームがプレイヤ入力からの実際のビデオフィードバックを含むことを意味する。エンコードされたフレームにタグを付与することは、タグをメタデータとしてエンコードされたフレームと同一のネットワークパケットに追加することによって達成されてよい。段階220において、タギングされたエンコードされたフレームは、クライアントに再送信される。クライアントがエンコードされたフレームをタグとともに受信すると、クライアントは、そのタグを以前のプレイヤ入力の動き補償に関連させてよい。この後、段階222において、クライアントは、以前の動き補償を適用することを中断する。
図3は、プレイヤ入力の動き補償を利用するビデオゲームストリーミング環境のランタイム中の例示的な瞬間を示した図である。段階300において、クライアントがプレイヤ入力を受信すると、段階302において、プレイヤ入力は、動きベクトルルックアップテーブルと比較される。マッチングするプレイヤ入力があれば、関連する動きベクトルがプレイヤ入力の動き補償のために使用される。段階304の固有の入力タグとして、段階306において、動きベクトルがタギングされる。このような例において、選択されたタグは、定数「1003」である。段階308において、タギングされた動きベクトルは、プレイヤ入力の動き補償のために現在使用されている他のタギングされた動きベクトルを含むキュー(queue)に追加される。
段階320において、次のフレームは、サーバからのビットストリーム(bitstream)に到達する。段階318において、このフレームは、固有の識別子、このような場合は定数「1001」でタギングされるが、これは、フレームがタグ「1001」に対応する入力を含んですべての以前プレイヤ入力の結果動きを含むことを示す。段階322において、タグ「1001」は、このようにタギングされた入力に対して動き補償を適用することを中断できることをクライアントに指示する。この後、段階308において、タグ「1001」を有する動きベクトルは、以前のパケットが損失された場合に、キューに残っている以前のタグを有する動きベクトルとともに、タギングされた動きベクトルキューから除去される。
段階324において、コーディングされたビデオ316は、デコードされる。一方、段階310において、段階308において、動きベクトルキュー内の残り動きのベクトルが合算される。動きベクトルは、一般的に、イメージの各マクロブロックに対するベクトルを有するベクトルフィールド(vector field)である。動きベクトルを合算するために、その結果が各マクロブロックに対するベクトルを有するベクトルフィールドになるように、ベクトルはエレメント単位(element−wise)で合算される。2つのベクトルフィールドの合計は、フィールドの各ポイント(point)に対するベクトルの合計であり、2つのセットの動きベクトルの合計は、イメージの各マクロブロックに対するベクトルの合計である。2つのベクトルの合計は、この成分(component)の成分単位の合計によって定義され、これは{u、u}+{v、v}={u+v、u+v}のように表現されてよい。このような例において、タグ「1002」および「1003」を有する2つのセットの動きベクトルは、キューに含まれる。このような2つのセットの動きベクトルは合算される。タグは実質的に時系列(chronological)であり、これは、以前のタギングされたプレイヤ入力の順序をユーザに認知させる。これは、受信フレームのリターンタグを含むことにより、ユーザがタギングされた動きベクトルを捨てることを許容する。また、上述されたタギングは、さらに複雑な方法よりも計算上において安価である。クランピングアーティファクト(clamping artifact)を防いだり、類似の導入されるアーティファクトを緩和させたりするために、選択的な滑らかな関数(smoothing function)がこの時点に適用されてよい。
クランピングアーティファクトは、マクロブロックがオフスクリーン(offscreen)に移動し、スクリーンの端に垂直のピクセルカラーの滲みとして示されるときに、導入される。滑らかな関数の一例として、外向(outward−pointing)動きベクトルがイメージのエッジに近くなるほど、この強度(strength)を減少させるであろう。外向成分、すなわち、イメージの上側端および下側端に向かう外向ベクトルのy成分およびイメージの左側端および右側端に向かう外向ベクトルのx−成分だけを弱化させる必要がある。境界(border)に向かうベクトルに対し、境界からの距離が0に近くなるとき、ベクトル成分が0に近くなるように、ベクトル成分はエッジからの距離の二乗に掛けられてよい。このような例において、イメージの右側端に向かう外向ベクトルは{x、y}から{x×d×d、y}に変換されるはずであり、ここで、dは、エッジからの距離である。これは、イメージの境界周辺に少しのイメージ歪曲が発生する代りに、クランピングアーティファクトを緩和させるであろう。歪曲は、クランピングアーティファクトよりもプレイヤに認識され難い。
段階324において、デコードプロセスがエンコードされたビデオフレームで完了した後、段階312において、合算された動きベクトルが動き補償に使用される。段階314において、結果ビデオが出力される。この出力はプレイヤ入力の動き補償データを含み、クライアントにディスプレイされるであろう。この出力されたフレームは、相関タグ「1003」の入力に対する動き補償を含む1番目のフレームである。また、この出力されたフレームは、クライアントがサーバから実際の動きベクトルがリターンされるのを待つ相関タグ「1002」の以前の入力に対する動き推定を含む。また、この出力されたフレームは、クライアントが既に動きを推定した相関タグ「1001」の以前の入力に対する実際の動きベクトルを含む1番目のフレームである。結果的に、3種類の動き推定状態が、この方法のこの時点に存在するようになる(新たな入力に対する新たな推定状態、実際の結果を待ち続ける推定状態、および実際の結果がクライアントに到達することによって中断された他の推定状態)。
図4は、図3のプレイヤ入力の動き補償中の例示的なマクロブロックを示した図である。プレイヤ入力の動き補償段階は、現在フレームのマクロブロックが以前フレームのどこから移動されたものであるかを決定するのにデコードされた動きベクトルが使用されるH.264デコード中に実行されたプロセスと、その手順が類似する。プレイヤ入力の動き補償に対し、適用された動きベクトルは、プレイヤに出力ビデオをディスプレイする前に現在フレームのマクロブロックを移動させることにより、プレイヤ入力に対する未来フィードバックを推定するであろう。図4aは、図3の段階308で示した例示的なタギングされた動きベクトルからの、段階400でキュー内の2つのセットのタギングされた動きベクトルを示している。このような2つのセットは、図4bの段階402において一セットの動きベクトルを生成するために、イメージの各マクロブロックに対するベクトルの合計を取ることによって合算される。このセット内において、動きベクトルそれぞれは、現在フレームの各マクロブロックに対する推定された移動を示す。段階402で合算された動きベクトルの各ベクトルに対し、図4cの例示的なイメージの対応するマクロブロックはシフト(shift)されるであろう。一例として、マクロブロックが段階404で対応するプレイヤ入力の動きベクトルによってシフトされるが、これは図4cに示されている。例示的なイメージの各マクロブロックは、このような方式によってシフトされるであろう。図4cの例示的なイメージは、50個のマクロブロックだけを含むが、高画質イメージは数千個のマクロブロックを含むであろう。図4に示した例示的な動きベクトルは、均一な剛体運動(rigid motion)を示すが、説明されたプレイヤ入力動き補償手法は、回転、振動、または該当の技術分野において周知のスクリーン空間における他の複雑な動きを説明するために、任意の複雑度(complexity)の動きベクトルとともに使用されてよい。
図5は、クライアントでプレイヤ入力の動き補償中に動きベクトルを適用するための代案的な方法を示した図である。この方法の特定の実施形態において、ビデオのエンコードおよびデコード間の残差(residual)をハンドリングする必要はない。マッチングするプレイヤ入力がルックアップテーブルから探索された後、段階500において関連する動きベクトルがタギングされ、図2の段階208および212に示すように、プレイヤ入力の動き補償のために使用される。次のフレームにおけるデコードプロセスの間、プレイヤ入力の動きベクトルはデコードされた動きベクトルに追加され、H.264コーディング標準によって定義された、段階502の動き補償段階に追加される。段階504において、H.264コーディング標準によって定義されたようにデブロッキングフィルタ(deblocking filter)が適用されるが、プレイヤ入力の動き補償によって修正されなかったブロックだけに適用されなければならない。段階506に示した結果出力は、プレイヤ入力の動き補償を含み、クライアントにディスプレイされるであろう。次に、段階506と段階518において、出力はバッファリングされ、次のフレームで動き補償に使用するための以前イメージとなる。図3の実施形態とは異なり、この実施形態において、タギングされたプレイヤ入力動きベクトルは1度だけ適用される。これは、段階518に示された以前イメージは、以前のタギングされた動きベクトルの合計を含むため、タギングされたプレイヤ入力の動きベクトルがキュー内のすべてのタギングされた動きベクトルと合算される必要がないことを意味する。入力の受信からビデオ出力のディスプレイまでの時間が入力フィードバック待機時間となり、これは、サーバが出力ビデオをリターンするのを待つ代りに、プレイヤ入力の動き補償を使用することによって大きく減少される。
段階500と同時に、段階208および210に示すように、クライアントは、対応するタギングされたプレイヤ入力をサーバに送信する。図2の段階220に示すように、クライアントは、段階508に示すようなコーディングされたビデオを、同一のタグ510とともに、段階512のサーバからのビットストリームで受信する。ビデオと関連するタグ510は、プレイヤ入力の動き補償によって既に推定された実際の動きが、段階508に示すようなエンコードされたビデオで表現されるということを意味する。エンコードされたビデオは、H.264コーディング標準によって定義されたように、段階514のエントロピデコード(entropy decoding)を通過する。段階516の逆量子化(inverse quantization)および逆変換(inversetransformation)を通過する。
上述した段階508、510、512、514、および516以前に実行された以前プレイヤ入力の動き補償段階は、エンコードされたフレームからの実際の動きベクトルがシフトされようとするマクロブロックを既にシフトさせた。したがって、実際の動きベクトルを直接に適用することは、誤ったマクロブロックをシフトさせることに繋がることになる。ビットストリームは、2つの関連するデータ(エンコードされたビデオフレームおよび相関タグ)ピース(piece)を含むであろう。エンコードされたフレームは、段階514のエントロピデコードに送信される反面、タグは、段階520のブレンディングプロセスに送信される。補償のために、段階520のブレンディングプロセスは、マッチングされた相関タグを有し、追加される実際の動きベクトルと以前に使用されたプレイヤ入力の動きベクトル50との間の差を計算することにより、訂正(correction)動きベクトルを供給する。その差は、実際の動きベクトルに相関タグに対する逆動きベクトルを追加することによって計算されてよいが、これは図6を参照しながらさらに詳しく説明する。訂正ベクトルは、段階502の動き補償のためにデコードされた動きベクトルに代わって使用される。デコードパイプライン(decoding pipeline)の残りは、段階504のデブロッキングフィルタ、段階506の次の出力ビデオフレーム、および段階518の出力バッファリングを通常とおりに続ける。このような段階は、各フレームで継続して繰り返される。一般的に、段階520のブレンディングプロセスは、逆量子化(段階514)および逆変換(段階516)後に発生するが、これは、実際の動きベクトルがこの時点まで利用可能でないためである。実際の動きベクトルが利用可能になれば、ブレンディングプロセスはこれを使用し、実際のものと推定された動きベクトルとの差を計算するであろう。
図6は、プレイヤ入力の動き補償およびブレンディングを経る例示的なマクロブロックを示した図である。0ms時間に、プレイヤは、左側にカメラビューを回転させるために入力をする。ルックアップテーブルから「PIMC」600で示される関連するプレイヤ入力の動き補償動きベクトルが、次のフレームのすべてのマクロブロックに適用される。図6aは、右側にシフトされる例示的なマクロブロックを示している。プレイヤ入力の動き補償の結果は、次のデコードされたフレームに適用され、1秒あたり60フレームで実行されるビデオに対して16ms(一フレームの長さ)の最大入力フィードバック待機時間を発生させる。他の実施形態において、最大入力フィードバック待機時間は、1秒あたり30フレームで実行されるビデオに対して33msとなることがある。したがって、本発明は、多様なフレームレート(framerate)に動作され、最大入力フィードバック待機時間を一フレームの長さに制限するものと考えられる。タギングされたビデオがサーバからリターンされるとき、これは、図6bに示すように、サーバによってエンコードされた実際の動きベクトル602を含む。このような例に対し、コーディングされたビデオは100ms時間にリターンされるが、これは、ネットワーク待機時間によって大きく異なるであろう。実際のベクトル602は、プレイヤ入力の動き補償600で既にシフトされたマクロブロックを参照するため、実際のベクトル602は、既存のフレームに直接適用されることができない。この代わりとなる、訂正ベクトル604が、実際のベクトル602とプレイヤ入力の動きベクトル600との差を求めることによって計算される必要がある。この差は、プレイヤ入力の逆動きベクトルを実際の動きベクトルに追加することによって計算されてよい。このようなベクトルの差を求めることは、図5の段階524のブレンディングによって参照される。訂正ベクトル604が小さいほど、プレイヤ入力の動き補償方法が実際の動きベクトルを推定するのにより成功的であった。例示的なマクロブロックに対する図6cに示された結果動き608は、実際の動きベクトル602と同一である。このような例は、プレイヤ入力の動き補償がプレイヤ入力に対するビデオフィードバックをどのように推定し、16msと100msとの間の時間に対する結果をどのように示すかを示している反面、修正されていないシステムは、プレイヤ入力が受信された後、116msまでプレイヤフィードバックをディスプレイしない。
デベロップメント(development)の間、ゲーム開発者(developer)は、どのような動きとアニメーションがランタイム間に予測された動きベクトルを送信するかを決定する必要がある。固有でありながらも予測可能な動きベクトルは、予測された動きベクトルに対する最適な候補である。範囲型の例では、ジョイント角度(joint angle)を計算するのに運動学方程式(kinematics equation)を使用するアニメーション、時間歪曲されたアニメーション、またはその他に増加するか圧縮されたアニメーションのような、エンジンによって適応的に変更されるアニメーションを含むであろう。例えば、プレイヤが提議されたレッジ(ledge)内に入ってジャンプするとき、レッジグラブ(ledge grab)アニメーションが再生される。レッジグラブアニメーションは、プレイヤの手はレッジの上にあるが、依然としてプレイヤの体に付いているように、増える。アニメーションは、定義された数のフレームで再生され、レッジの上にプレイヤを置く。このような例の開始点は、許容可能な位置と方向の範囲内で可変的である。正確なアニメーションは予め知らされないが、注文型(on−demand)ゲームエンジンによってプログラミング方式で生成されるため、このようなレッジグラブアニメーションは、予測された動きベクトルを生成するのに適した候補である。特に、クライアントは、ゲームストリーミング環境におけるプレイヤ位置に対する状況情報を有さないため、クライアントは、このアニメーションに対する動きベクトルを認知することができない。
予測された動きベクトルは、特定のカメラ位置、小さな時間ウィンドウ、または複数の他の特定プレイヤコンテキストのような制限された状況または時間範囲に対してのみ有用である。各セットの予測された動きベクトルに対し、対応するインバリデータ(invalidator)が生成される必要がある。インバリデータは、クライアントにおいて、予測された動きベクトルが有効となった後に適用されることを防ぐために使用されてよい。特定の実施形態において、インバリデータは、ゲームコンテキストを変更するプレイヤ入力のセットであってよく、したがって、予測された動きベクトルを再生することは、これ以上可能にならない。他の実施形態において、インバリデータは、予測された動きベクトルが有効となる時間ウィンドウであってよい。また他の実施形態において、インバリデータは、無効化(invalidating)入力および時間ウィンドウの組み合わせであってよい。例えば、レッジグラブアニメーションに対して生成された予測された動きベクトルは、制限されたプレイヤ位置と方向内でのみ有効であり、これにより、インバリデータは、並進または回転移動入力を必須で含むようになるであろう。インバリデータは、予測された動きベクトル特徴のデベロップメント中に設計されて実現される必要がある。さらに、予測された動きベクトルは、動き補償のためにキャッシングされた、繰り返される動きベクトルを使用することを説明する図10〜図13を参照しながら後述するように、サーバから送信されたイベント(event)やメッセージによってディセーブルされるかアップデートされてよい。
予測された動きベクトルは、予め生成されてもよいし、ランタイム中に必要に応じて生成されてもよい。例えば、制限された数の順列を有するアニメーションに対し、予測された動きベクトルは、各順列をトリガーし、動きベクトルを記録することによってオフライン(offline)で生成されてよい。特定の実施形態において、一般化されたクライアントに対し、動きベクトルは、サーバ側に記録された後、注文型でキャッシングされるようにクライアントに送信されるであろう。動きベクトルがクライアントに送信されるとき、これは、ルックアップテーブルにキャッシングされる。事前生成された予測された動きベクトルは、サーバに記録され、ゲームのランタイム中にクライアントのルックアップテーブル内にキャッシングされるように、サーバが事前生成された動きベクトルを送信することのできるゲーム読み取り可能なファイル形式で利用可能となる。逆運動学によって計算されたアニメーションのように、ランタイム中に生成されたアニメーションは、個別の数の可能なアニメーション順列がないことがあるため、事前生成されないこともある。逆運動学は、アニメーションを一セットの境界条件内に合わせのために、リアルタイムレンダリングに一般的に使用される方法である。例えば、テレビゲーム内のプレイヤキャラクタは、近くのレッジを、グラブ(grab)を要求し、境界条件は、プレイヤの手がレッジに触れる位置によって定義されるはずであり、レッジグラブアニメーションは、逆運動学によって変更されるであろう。このように適応的に変更されるアニメーションに対し、ゲームは、ランタイム中の可能なアニメーションをオフスクリーン動きベクトルイメージに推論的にレンダリングし、必要に応じて予測された動きベクトルを記録してよい。例えば、プレイヤが掴むことのできるレッジの近くにいれば、ゲームは、プレイヤが直ぐにレッジを掴むものと予想することができ、ゲームは、予測された動きベクトルを生成するようにレッジグラブアニメーションを推論的にレンダリングしてよい。ランタイム中に予測された動きベクトルが生成される必要のある適応的に変更されたアニメーションは、開発者(developer)によって予め識別される必要がある。
プレイヤ位置追跡、スクリプティング(scripting)システム、トリガーボリューム、または経路探索(pathfinding)システムのような、プレイヤコンテキストを説明する従来のゲームシステムは、ゲームがアニメーションを推論的にレンダリングする必要があるときに、信号を送信するイベントを生成するのに使用されてよい。例えば、ゲームは、掴むことのできるレッジに対するプレイヤの接近度(proximity)を追跡し、レッジグラブアニメーションを推論的にレンダリングするようにゲームに信号を送信し、予測された動きベクトルを記録してよい。武器をピックアップしたり、レバーを上げたり、ボタンを押したりするような特定のアニメーションは、相互作用およびプレイヤ方向に対し、プレイヤ接近度に基づいて増やしたり調節されたりしてよい。このようなアニメーションは、事前生成を可能にするには極めて多くの順列を有するが、図7に示すように、ランタイム中に生成されてもよい。常に同じ方式によって発生する動きは、オフラインで生成されて記録されることもある。これらは、一般的に、トリガーされるたびに同一の割合で同じスクリーン空間に発生する動きである。このようなアニメーションに対する動きベクトルは、アニメーションのすべての可能な順列をトリガーし、ゲームで生成された動きベクトルを記録するものであっても、H.264コーデックで使用されるもののような従来の動き推定技術によって動きベクトルを生成することにより、オフラインで記録されるものであってもよい。好ましい実施形態において、図1〜図6を参照しながら説明したようなゲームで生成された動きベクトルは、高品質の動き推定を保障するために使用される。このようなプロセスは、デベロップメント中にいつでも発生されるが、ビルドプロセス(build process)またはミップマップ(mip−map)とディテール水準(level of details:LODs)を事前生成することのような他の従来のアセットコンディショニング(asset−conditioning)プロセスの1つの段階として、このプロセスを追加することが好ましい。アセットコンディショニングは、ゲームアセット(game asset)を人間で読み取り可能なソース形式から機械で読み取り可能形式にコンパイル(compile)するプロセスを含んでよい。例えば、ミップマップは、アーティスト生成されたテクスチャファイルを複数の解像度を含むゲームサポート形式に変換することにより、予め生成されてよい。これと同じように、ディテール水準は、アーティスト生成されたモデルファイルを複数のディテール水準を含むゲームサポート形式に変換することにより、予め生成されてよい。動きベクトル生成は、アーティスト生成されたアニメーション形式をゲームサポート形式に変換する従来のアセットコンディショニングプロセスに追加されてよい。
図7は、オフラインまたはランタイムシナリオで動きベクトルを生成するための例示的な方法を示した図である。アニメーションは、段階700のオフスクリーン表面/イメージとしてレンダリングされてよく、動きベクトルは、即時的な使用のために記録されてよい。移動するスクリーンの部分だけがレンダリングされる必要があり、シーン(scene)の他のオブジェクトは無視されてよい。段階702に示される点線のオブジェクトと、段階704に示される実線のオブジェクトは、以前フレームと現在フレームそれぞれにおけるアニメーションオブジェクトの位置を示す。以前フレームから現在フレームへの移動は、段階706において、段階708に示される動きベクトルの形式でキャプチャされるであろう。動きベクトルは、ゲームで生成された動きベクトルからキャプチャされてもよいし、H.264コーデックで使用されるもののように従来の動き推定技術によってキャプチャされてもよい。好ましい実施形態において、図1〜図6を参照しながら説明したように、ゲームで生成された動きベクトルは、高品質の動きベクトルを保障するのに使用される。動きベクトルが必要なすべてのフレームに対して生成されるまで、段階700〜708に示されたプロセスを繰り返すことにより、与えられたアニメーションに対して多くのフレームの予測された動きベクトルが迅速に計算されるようになる。アニメーションのすべてのフレームが生成される必要はなく、ビデオストリームに追いつくまではクライアントで再生するのに十分に生成される必要がある。生成されたフレームの最小数は、プレイヤ入力を送信するものと、クライアントで結果ビデオストリームを受信するもののディレイによって異なるはずであり、アニメーションの生成された部分の長さは、少なくともディレイの分だけ長くなければならない。予測された動きベクトルフレームは、動き推定にキャッシングされた、繰り返される動きベクトルの使用を説明する図10〜図13を参照しながら後述するように、再生される間、レートスケーリング(rate−scaled)されてよい。予測された動きベクトルフレームの再生がレートスケーリングされれば、ディレイと同一のアニメーションの一部に対する予測された動きベクトルの生成は、50%の再生レート−スケーリングをもたらす。アニメーションのさらに長い部分に対する動きベクトルの生成は、消極的にレートスケーリングされた再生をもたらす。
ビデオエンコードのために使用されたマクロブロックサイズは、動きベクトルを記録するときに考慮されなければならず、マクロブロックごとに動きベクトルがなければならない。好ましい実施形態において、ゲームで生成された動きベクトルは、ピクセルあたりの(per−pixel)動きベクトルで生成され、ピクセルあたりの動きベクトルの各マクロブロックグループに対して算術平均(arithmetic mean)を求めることにより、マクロブロックあたりの(per−macroblock)動きベクトルに変換される。
図8は、プレイヤ入力の動き補償を目的として予測された動きベクトルの送信およびクライアント側の記録を示している。ビデオゲームソフトウェアデベロップメントの間、イベントなどは、近づいてくる(upcoming)入力中心の(input−driven)コンテキストに適する(context−sensitive)信号を送信するように構成される必要がある。例えば、プレイヤがレッジグラブアニメーションを実行するときに予測された動きベクトルが利用可能となるように、ゲーム開発者は、予測された動きベクトルを送信しようとするであろう。開発者は、プレイヤが掴むことのできるレッジを、向い合って掴むことのできるレッジの範囲内にいるたびに、トリガーされるイベントを実現する。このような例において、「ゲームランタイム中のイベント受信」段階800において、プレイヤがゲームをしている間、掴むことのできるレッジに近づくとき、例示的なイベントが受信される。イベント類型は、適応的に変更されたアニメーションの場合のように、予測された動きベクトルが生成される必要があるか否か、または変更はされないが頻繁に再生されるかプレイヤコンテキストに依存するアニメーションの場合のように、予測された動きベクトルがオフラインで事前生成されたか否かを説明するであろう。このような例において、「予測された動きベクトルの生成」段階802において、レッジグラブアニメーションは、プレイヤのレッジからの距離に基づいて増加するが、これは、動きベクトルがランタイムで生成される必要があることを意味する。他の場合、「事前生成された動きベクトルを読み取る」段階804において、動きベクトルは、オフラインで生成され、保存場所から読み取られてよい。
事前生成された動きベクトルの一例として、大きな武器倉庫の武器に転換が生じる場合が挙げられる。可能な武器転換順列の数は大多数である場合があり、この結果、動きベクトルの全体セットのキャッシングを非現実的にさせる。一般的に、動きベクトルが制限されたキャッシュ空間を過度に占めていて頻繁に使用されなくなれば、動きベクトルはプレキャッシングのための主要候補にはならない。「予測された動きベクトルとインバリデータの送信」段階806において、予測された動きベクトルは、クライアントに送信される。「予測された動きベクトルとインバリデータのキャッシング」段階808において、予測された動きベクトルは、動きベクトルルックアップテーブルに追加される。一実施形態において、無効化(invalidation)システムは、ルックアップテーブルに動きベクトルの適用をトリガーするが、この代わりに、動きベクトルをディスエーブルさせるシステムと同じように機能する。動きベクトルとインバリデータのセットが「予測された動きベクトルおよびインバリデータのキャッシング」段階808において受信されるとき、インバリデータは、無効化システムによって登録される必要がある。
図1〜図6を参照しながら説明したようなプレイヤ入力の動き補償方法は、すべてのプレイヤ入力を動きベクトルルックアップテーブル内のエントリーと比較する。上述した例において、「受信されたプレイヤ入力のマッチング」段階810において、プレイヤが、レッジグラブアニメーションを始めるために求められる入力を行うとき、入力は、ルックアップテーブルに予めキャッシングされた入力とマッチングされるであろう。「プレイヤ入力の動き補償の適用」段階812において、キャッシングされた予測された動きベクトルがまだ無効化されていなければ、予測された動きベクトルが適用されるであろう。「無効化」段階814において、プレイヤ入力が予測された動きベクトルを無効にしたり、予測された動きベクトルが予め決定された時間後に満了になったり、または予測された動きベクトルが1度適用された後に満了になったりすれば、予測された動きベクトルはルックアップテーブルから除去され、適用されない。
図9は、予測された動きベクトルセットを無効にすることのできる信号の例示的な方法を説明するための図である。無効化は、好ましくは、クライアントにキャッシングされたルックアップテーブルから一セットの予測された動きベクトルが除去される、ルックアップテーブルに対するアップデート類型である。サーバから受信されたアップデートイベントなどに応答することに加え、アップデートメカニズムは、プレイヤ入力をモニタリングし、無効化カウントダウンタイマー(countdown timer)を含んでよい。一セットの予測された動きベクトルがルックアップテーブルにキャッシングされるとき、このインバリデータがアップデート機能/メカニズムに登録されてよい。インバリデータは、ルックアップテーブルに対する無効化アップデートをトリガーするデータ信号である。ルックアップテーブルの例として、段階900に示された「ルックアップテーブル」は、以下のような3セットの予測された動きベクトルを含む(「予測されたドア(door)アニメーション」段階902に示された予測されたドアアニメーション、「予測されたレッジグラブ」段階904に示された予測されたレッジグラブアニメーション、および「予測されたキルショット(kill shot)アニメーション」段階906に示された予測されたキルショットアニメーション)。予測された動きベクトルは、1度適用された後に無効化されてよい。一例として、「予測されたドア(door)アニメーション」段階902に示された予測されたドアアニメーションは、「オープンドア入力」段階908においてプレイヤが入力を行ったとき、近くのドアを開くように適用される。これと同時に、「オープンドア入力」段階908におけるオープンドア入力の登録は解除され、「予測されたドアアニメーション」段階902に示された予測されたドアアニメーションは、「使用後の無効化」段階910においてルックアップテーブルから除去されてよい。これと同じように、他の入力も、これが適用される前に予測された動きベクトルを無効にしてよい。一例として、「予測されたレッジグラブ」段階904に示されたレッジグラブアニメーションに対する一セットの予測された動きベクトルは、レッジから制限された距離内のみで有効となる。
プレイヤが(「ジャンプ入力」段階914に示されたジャンプ入力を使用して)レッジをグラブするためにジャンプする前に、プレイヤが「移動入力」段階912に示された移動入力を使用してレッジから遠ざかれば、「予測されたレッジグラブ」段階904に示された予測されたレッジグラブの動きベクトルが「入力に対する無効化」段階916において無効となるであろう。無効にする入力の他の例として、プレイヤがグラップリングフック(grappling hook)または予測された動きベクトルを無効にする他の移動基盤の武器を持っている場合、およびプレイヤが特殊能力を活性化させるボタンを押す場合などが挙げられてよい。無効化する入力はコンテキストによって異なるため、他のものは特定の実施形態に基づいて明らかになるであろう。また、予測された動きベクトルは、時間の経過とともに満了となってよい。一例として、キルショットのチャンスが3秒のウィンドウ中にプレイヤに提供されてよい。プレイヤが3秒のウィンドウ中に「メイレイ(melee)入力」段階918に示されたメイレイ入力を押さなかった場合、「予測されたキルショットアニメーション」段階906に示された予測されたキルショットアニメーションに対する動きベクトルは、「満了タイマーに対する無効化」段階920において無効となるであろう。予測された動きベクトルは複数のインバリデータを有してよく、その反対も可能である。例えば、予測されたレッジグラブは、移動入力が受信されるか、レッジグラブの動きベクトルが使用された後という、2つのうちの早い方により、無効化されてよい。
図10は、動きベクトルライブラリを生成するための例示的な方法およびキャッシング目的のための例示的な繰り返される動きベクトルライブラリを示した図である。選択された動きは、実質的に反復性が高いため、これはトリガーされるたびに同一の方式によって再生されるであろう。これは、動きベクトルを予め生成し、これをライブラリとして組職化できるようにする。動きベクトルライブラリ生成は、デベロップメント中にいつでも発生するが、このプロセスをビルドプロセスまたは複数の他のアセットコンディショニングフェーズ(asset conditioning phase)の一段階として追加することが好ましいこともある。このような例において、動きベクトルライブラリは、1人称シュータにおいて利用可能なそれぞれの武器に対して生成されるであろう。「ライブラリ生成」段階1000において、第1武器に対するライブラリ生成が始まるとき、「アニメーショントリガー」段階1002において第1武器アニメーションがトリガーされ、「動きベクトル記録」段階1004において動きベクトルが記録される。動きベクトルは、ゲームで生成されてもよいし、H.264コーデックで使用されるもののような従来の動き推定技術によって生成されてもよい。好ましい実施形態において、本明細書にその全体が統合された米国仮出願第62/488,256号および第62/634,464に記載されるようなゲームで生成された動きベクトルは、高品質の動き推定を保障するために使用される。記録された動きベクトルが正確でないか正確に量子化されなければ、これがプレイヤ入力の動き補償中に使用されるときに、アーティファクトを取り入れるであろう。段階1002および1004は、動きベクトルがライブラリでそれぞれの高い反復性を有するアニメーションに対して記録されるまで繰り返される。ライブラリ生成は、すべてのライブラリが生成されるまで、段階1000で再び始まる。
「動きベクトルライブラリ」段階1006に示された例は、1人称シューターゲームにおけるプラズマライフル武器(plasma rifle weapon)に対する、繰り返される動きベクトルライブラリの極めて単純化されたバージョンである。この例は、2つの簡単なアニメーションを含むように単純化される(段階1008に示されたプレイヤがプラズマライフルを発射するときに再生されるフィードバックアニメーションのための2フレームアニメーション、および段階1010に示されたプレイヤが前方に歩いていくときに発生するライフルのボビングモーション(bobbing motion)のための4フレームアニメーション)。一般的な実世界の環境(real−world environment)において、武器は、より多くのアニメーションを有し、そのアニメーションは4つのフレームよりも相当に長い。
図11は、プレイヤ入力の動き補償のために動きベクトルライブラリをキャッシング、適用、およびアップデートするためのプロセスを示した図である。「始まるときの繰り返される動きベクトルライブラリの送信」段階1100において、ゲームが初期化されるとき、サーバは、クライアントに事前生成された動きベクトルライブラリを送信する。「繰り返される動きベクトルのキャッシング」段階1102において、クライアントは、メモリに、一般的にルックアップテーブルの形態で、動きベクトルライブラリを記録する。このような実施形態おいて、クライアントは、複数のストリーミングゲームの要求を提供するように一般化される。代案的な実施形態において、ゲームの特定クライアントは、サーバからの繰り返される動きベクトルをキャッシングする必要なく、動きベクトルライブラリを永久的に記録してもよい。
この時点において、クライアントは、プレイヤ入力をモニタリングし、入力とプレイヤ入力の動き補償ルックアップテーブル内のエントリーとの比較を開始してよい。「受信されたプレイヤ入力のマッチング」段階1104において、入力がルックアップテーブル内のマッチングされたエントリーを有するとき、「プレイヤ入力の動き補償の適用」段階1106において、プレイヤ入力と関連する動きベクトルは、図1〜図10を参照しながら説明したような動き推定の提供に使用される。「キャッシングされた、繰り返される動きベクトルマッピングのアップデート」段階1112において、特定の入力を受信することが、ルックアップテーブルが変更されるように要求する特定の場合となることがある。ルックアップテーブルを変更する入力の例としては、キャラクタ移動、武器発射アニメーション、または他の再生関連モーションのようなプレイヤ入力をディスエーブルさせることのできる一時停止ボタンがある。動きベクトルを適用して選択的にルックアップテーブルをアップデートした後、クライアントは、プレイヤ入力をモニタリングし続けるであろう。「キャッシングされた、繰り返される動きベクトルマッピングのアップデート」段階1112において、ルックアップテーブルがアップデートされた後に挿入されるプレイヤ入力は、ルックアップテーブル内のアップデートされたエントリーと比較されるであろう。
ゲームのランタイム中にいつでも、プレイヤに対するコンテキストの変更は、ルックアップテーブルが変更されるように要求してよい。例えば、プレイヤは、以前に保有していた武器が新たな武器に転換されるように、キャッシングされた動きライブラリを要求する武器を転換してよい。一例としては、特定のゲームイベントをモニタリングするサーバ側のゲームを示してよい。このようなイベントは、ゲームデベロップメント中に、該当の技術分野で周知の方法によって構成可能であり、ゲームの従来のメッセージングまたはイベントシステムによって送信されてよい。「ランタイム中にイベントを受信」段階1108において、実行されるゲームインスタンスがこのようなイベントのうちの1つを受信するとき、「コンテキストアップデート送信」段階1110において、メッセージが生成されてクライアントに送信されてよい。コンテキストアップデートは、プレイヤ入力とルックアップテーブルに含まれた動きベクトルとの関係を変更するゲームイベントに対して送信されてよい。コンテキストアップデートは、プレイヤ入力が一セットの動きベクトルをトリガーするものをイネーブル(enable)またはディセーブル(disable)させるか、与えられた入力と関連する動きベクトルを変更するか、そうではなければ、プレイヤ入力されたプレイヤ入力の動き補償のための動きベクトルとの関連を追加または除去してよい。「キャッシングされた、繰り返される動きベクトルマッピングのアップデート」段階1112において、メッセージがクライアントに到達するとき、ルックアップテーブルが変更されるコンテキストによって変更される。
図12は、動きベクトルマッピングがどのようにアップデートされるかを示した図である。クライアントのキャッシュ1202に記録されたルックアップテーブル1200は、クライアントにより、与えられたプレイヤ入力と関連する動きベクトルの探索に使用される。状況による変更がプレイヤ入力の行動を変更する、ゲームのランタイム時間がある。例えば、プレイヤが前方に移動したが、壁(wall)のような移動ブロッカー(movement blocker)にぶつかれば、前方移動に対して予測された動きベクトルの適用を中断する必要が生じる。これが発生するとき、サーバは、図11の段階1110に示すように、クライアントにコンテキストアップデートを送信する。このような移動ブロッキングイベント1204が受信されるが、これは、クライアントに前方移動入力1206と対応する動きベクトル1208との連結をディセーブルさせるように信号を送信する。前方移動の動きベクトルは、サーバからの他のイベントが前方移動入力と前方移動の動きベクトルとの連結を再びイネーブルさせるまでプレイヤが前方移動入力を使用するとき、適用を中断する。このような例に対し、ゲームは、プレイヤの移動がアンブロックされる(unblocked)ときにイベントを生成し、前方入力とルックアップテーブル内の前方移動の動きベクトルとの連結を再設定するように、クライアントにコンテキストアップデートを送信する。
他の例において、プレイヤが、プラズマライフルをショットガン(shotgun)に切り換えることが考えられる。プラズマライフルの動きベクトルライブラリ1210は、特定の発射入力1211に対応する発射動きベクトル1209とともにキャッシュに記録される。また、キャッシュは、ショットガン1212とピストル(pistol)1214を含む他の武器に対する動きベクトルライブラリを記録する。クライアントがサーバから武器転換イベント1216を受信すると、プラズマライフルの動きベクトルライブラリ1210がショットガンの動きベクトルライブラリ1212に対してルックアップテーブル1200から転換される。プレイヤ入力の動き補償が武器転換中に不適切に発生することを防ぐために、2つのイベントが、武器転換アニメーションが再生される間にプラズマライフルの動きベクトルライブラリ1210を先にディセーブルさせるように同時に使用された後、武器転換アニメーションが完了した後、2つの動きベクトルライブラリを転換してよい。
さらに長いマルチフレーム動きベクトルに対し、最後のフレームの実際のビデオがサーバから受信されると、最後のフレームの動きベクトルが適用されるように、このアプリケーションを増加させてよい。これにより、サーバがクライアントにキャッシングされた動きベクトルが足りないとき、推定された動きに追いつくようにできるであろう。動きベクトルに対するスケーリングファクタは、再生速度スケール(playback Speed Scale)によって定義され、例示的に下記のように計算される。
Figure 0006984001
ここで、ディレイは、初期プレイヤ入力イベントからクライアントで実際のビデオを受信するまでの時間によって定義される。このディレイは、ネットワークを介して入力を送信するのにかかる時間、ゲームロジック、レンダリングロジック、GPUレンダリング時間、およびエンコード時間を含んでサーバで処理する時間、さらにプレイヤにビデオをリターンするためのネットワーク時間を含む。ディレイは、ゲームストリーミング環境で持続的に測定されなければならない。プレイヤ入力の動き補償の好ましい実施形態は、プレイヤ入力と実際のビデオとを関連させるために、米国仮出願第62/488,256号および第62/634,464号に記載されるように、相関タグを使用する。入力されたプレイヤ入力がサーバに送信される前に、相関タグが固有の識別子として付与される。ビデオフレームが相関タグとともにサーバからリターンされるとき、クライアントは、固有の識別子を以前の入力とマッチングさせる。これは、関連する入力に対する動き推定を中断したり、ブレンディング技術による以前の動き推定を取り消したりするように、クライアントに信号を送る。アニメーションのキャッシングされた部分の長さやキャッシングされたアニメーション時間は、キャッシングされたアニメーションのフレームの数に各フレームの長さを掛けることによって計算されてよい。
図13において、10個のフレームを含むアニメーションの例として、100msのディレイとともに1秒あたり60フレームを実行するゲームにおいてプレイヤ入力の動き補償のために使用される。プレイヤ入力がプレイヤ入力の動き補償をトリガーするとき、再生速度スケールが下記のようにキャッシングされた動きベクトルに対して計算される。
Figure 0006984001
Figure 0006984001
Figure 0006984001
プレイヤ入力は0ms時間に受信された。動きベクトルの再生の割合は、計算された再生速度スケールによってスケーリングされる(1300)。1番目のフレームの動きベクトルは、サーバからのビデオストリーム内の利用可能な次のフレームに適用される。スケーリングされた動きベクトルフレームは、アニメーションスムーズ(animation smooth)を維持するために補間されるであろう。動きベクトルフレームは、複数のフレームにわたってスケーリングされるため、補間は与えられたフレームに適用する動きベクトルが「どれほど多いか」を計算するのに使用可能な方法である。一例として、計算された再生速度スケールに基づいて線形補間を使用してよい。この例に対し、計算された再生速度スケールは0.625であり、これは一セットの動きベクトルを1.6個のディスプレイフレームの上に増やすであろう。補間は、どれほど多くの動きベクトルを与えられたフレームに適用するかを計算するための方法である。すなわち、補間は、このセットの動きベクトルが複数のディスプレイフレームの上に増えるとき、どれほど遠くにマクロブロックを動きベクトルの下に移動させるかを計算する。第1スケーリングされた動きベクトルの一部だけが0.625の再生速度スケールと同一な、17msで第1ディスプレイフレームに適用されなければならない。33msにおける第2ディスプレイフレームに、第1スケーリングされた動きベクトルの残りが適用され、1−0.625=0.375で計算された後、第2スケーリングされたベクトルの1番目の部分が適用され、再生速度スケールから第1スケーリングされた動きベクトルの残り部分を引いた値、または0.625−0.375=0.25で計算される。50msの第3ディスプレイフレームにおいて、第2セットのスケーリングされた動きベクトルが継続して適用され、マクロブロックが動きベクトルの下に62.5%で移動する。67msの第4ディスプレイフレームにおいて、第2スケーリングされた動きベクトルの残りが適用され、1−0.25−0.625=0.125で計算され、第3スケーリングされた動きベクトルの1番目の部分が適用され、再生速度スケールから第2スケーリングされた動きベクトルの残り部分を引いた値、または0.625−0.125=0.5で計算される。スケーリングされた動きベクトルが適用されることにより、線形補間が続く。
推定された動きの各フレームを未来の実際のビデオと関連させるために、マルチフレーム動きベクトルは、キャッシングされたアニメーションの各フレームに対する相関タグを送信してよい。
ディレイは、クライアントとサーバとの間のネットワーク経路およびアキテクチャに大きく左右されるであろう。これは、100msディレイを使用するが、数十から数百ミリ秒(milliseconds)の間で変わる。より短いディレイがより優れたプレイヤ経験を提供するが、プレイヤ入力の動き補償手法は、特定の場合に、高いディレイ時間の影響を偽装(disguise)するのに繋がる。ディレイ1304後に、実際のビデオ1302が受信される。エッジ位置の(edge−located)サーバまたは消費者と物理的に近いサーバに対し、ディレイ時間は約30msと低い。より一般的なサーバ位置に対し、100msはさらに可能性が高い。実際のビデオはスケーリングされないため、オリジナルアニメーションの長さ1306を維持する。実際のビデオは、プレイヤ入力の動き補償手法によって適用される。
クライアントが以前の動き補償を完璧にブレンディングすることができなければ、H.264コーディング標準がいずれかの時間的に伝播されるエラーを訂正することのできるリンダンダントスライス特徴(redundant slice feature)を提供する。H.264プロファイル設定を基盤に、各スライスは、イントラスライス(intra slice)(I−スライス)にエンコードされ、特定の周波数で回転スケジュール(rotating schedule)に送信されるであろう。イントラスライスが動きベクトルを含まないため、ブレンド動きベクトルは、実際の動きベクトルがp−スライスに到達するときだけに適用されなければならない。これは、タギングされたフレームがサーバからリターンされる前に、ブレンド動きベクトルがI−スライスに示したマクロブロックに適用されることを防ぐことができる。
上述した説明および図面は、本発明の原理を例示するためのものに過ぎない。本発明は、好ましい実施形態によって制限されるように意図されてはならず、該当の技術分野において通常の知識を有する者にとって明白である、多様な方式で実現されるであろう。本発明の多数の応用は、該当の技術分野において通常の知識を有する者によって容易に実現されるであろう。したがって、開示された特定の例示または図に示されて説明された正確な構成と動作によって本発明を制限することは好ましくない。むしろ、すべての適切な修正および均等物が、本発明の範囲内に属するものと理解されなければならない。
〔付記1〕
段階を含むコンピュータで実現される動き推定方法であって、
段階は、
1つ以上のユーザ入力と1つ以上の関連する動きベクトル(motion vector)で構成されたルックアップテーブルを送信する段階(前記ルックアップテーブルは、前記ルックアップテーブルをキャッシング(caching)するための命令語(instruction)とともに送信される)、
プレイヤ入力の受信時、マッチングされる動きベクトルに対して前記ルックアップテーブルに質疑(query)するための命令語を送信する段階、
固有のタグ(unique tag)を前記ルックアップテーブルからの前記マッチングされる動きベクトルと関連させるための命令語を送信し、タギングされた動きベクトルをキュー(queue)に追加する段階(前記タギングされた動きベクトルは、合算される)、
フレームを固有の識別子タグ(identifier tag)とともに送信する段階(前記タグは、前記フレームが前記プレイヤ入力と関連する動きを含む時系列地点(chronological point)を示す)、
サーバから受信されたタギングされたフレームと関連するタグを有する前記キューから動きベクトルを除去するための命令語を送信する段階
を含み、
サーバがクライアントにエンコードされたビデオフレームを送信するとき、前記クライアントは、
前記ビデオフレームをデコードし、ビデオ出力以前の動きを推定するために前記合算された動きベクトルを前記デコードされたフレームに適用するように指示を受ける、コンピュータで実現される方法。
〔付記2〕
前記エンコードされたビデオフレームは、
残差ハンドリング(residual handling)されずに、デコードされる、請求項1に記載のコンピュータで実現する方法。
〔付記3〕
前記クライアントに、1つ以上の滑らかな関数(smoothing function)を前記キュー内の前記合算されたタギングされた動きベクトルに適用するように指示する段階
をさらに含む、付記1に記載のコンピュータで実現される方法。
〔付記4〕
前記動きベクトルと関連する固有のタグは、
実質的に時系列である、付記1に記載のコンピュータで実現される方法。
〔付記5〕
前記合算されたタギングされた動きベクトルは、
対応するマクロブロック(macroblock)と関連する、付記1に記載のコンピュータで実現される方法。
〔付記6〕
前記キャッシングされたルックアップテーブルは、
プレイヤ入力に基づいて修正されるように構成される、付記1に記載のコンピュータで実現される方法。
〔付記7〕
前記合算されたタギングされた動きベクトルは、
一度適用されるように構成される、付記1に記載のコンピュータで実現される方法。
〔付記8〕
前記合算されたタギングされた動きベクトルは、
任意複雑度(complexity)の動きを説明する、付記1に記載のコンピュータで実現される方法。
〔付記9〕
前記合算されたタギングされた動きベクトルは、
前記プレイヤ入力に対する未来(future)フィードバック(feedback)を推定する、付記1に記載のコンピュータで実現される方法。
〔付記10〕
前記合算されたタギングされた動きベクトルは、
H.264コーディング標準にしたがう、付記1に記載のコンピュータで実現される方法。
〔付記11〕
動き推定システムであって、
ネットワークを介し、サーバは、
プレイヤ入力の受信時、マッチングされる動きベクトルに対してルックアップテーブルに質疑するために、クライアントに命令語を送信し、
固有のタグを前記ルックアップテーブルからの前記マッチングされる動きベクトルと関連させるために、前記クライアントに命令語を送信し、タギングされた動きベクトルをキューに追加し(前記タギングされた動きベクトルは合算される)、
フレームを固有の識別子タグとともに前記クライアントに送信し(前記タグは、前記フレームが前記プレイヤ入力と関連する動きを含む時系列地点を示す)、
前記サーバから受信されたタギングされたフレームと関連するタグを有する前記キューから動きベクトルを除去するために、前記クライアントに命令語を送信し、
前記サーバが前記クライアントにエンコードされたビデオフレームを送信するとき、前記クライアントは、
前記ビデオフレームをデコードし、動きを推定するために前記合算された動きベクトルを前記デコードされたフレームに適用するように指示を受ける、システム。
〔付記12〕
前記エンコードされたビデオフレームは、
残差ハンドリングされずに、デコードされる、付記11に記載のシステム。
〔付記13〕
前記サーバは、
1つ以上の滑らかな関数(smoothing function)を前記キュー内の前記合算されたタギングされた動きベクトルに適用するように、前記クライアントにさらに指示する、付記11に記載のシステム。
〔付記14〕
前記動きベクトルと関連するタグは、
実質的に時系列である、付記11に記載のシステム。
〔付記15〕
前記合算されたタギングされた動きベクトルは、
対応するマクロブロックと関連する、付記11に記載のシステム。
〔付記16〕
前記キャッシングされたルックアップテーブルは、
プレイヤ入力に基づいて修正されるように構成される、付記11に記載のシステム。
〔付記17〕
前記合算されたタギングされた動きベクトルは、
一度適用されるように構成される、付記11に記載のシステム。
〔付記18〕
前記合算されたタギングされた動きベクトルは、
任意複雑度(complexity)の動きを説明する、付記11に記載のシステム。
〔付記19〕
前記合算されたタギングされた動きベクトルは、
前記プレイヤ入力に対する未来フィードバックを推定する、付記11に記載のシステム。
〔付記20〕
前記合算されたタギングされた動きベクトルは、
H.264コーディング標準にしたがう、付記11に記載のシステム。
〔付記21〕
段階を含む動きベクトルをキャッシングするためのコンピュータで実現される方法であって、
段階は、
サーバで1つ以上の動きベクトルを生成する段階(前記動きベクトルは、予め決定された基準に基づいて生成される)、
クライアントに前記生成された動きベクトルと1つ以上のインバリデータ(invalidator)を送信する段階(前記生成された動きベクトルとインバリデータは、前記クライアントでキャッシングされる)、
ユーザから入力を受信するために、前記クライアントに命令語を送信する段階(前記クライアントは、前記入力をキャッシングされた動きベクトルまたはインバリデータとマッチングさせるように構成される)、および
前記マッチングされた動きベクトルまたはインバリデータをグラフィックインタフェース(graphic interface)のエフェクト動き(effect motion)補償に適用するために、前記クライアントに命令語を送信する段階
を含む、方法。
〔付記22〕
前記動きベクトルは、
ルックアップテーブルにキャッシングされる、付記21に記載の方法。
〔付記23〕
前記1つ以上のインバリデータは、
1つ以上のキャッシングされた動きベクトルと関連する、付記21に記載の方法。
〔付記24〕
前記1つ以上のインバリデータは、
前記1つ以上のキャッシングされた動きベクトルをディセーブル(disable)させるように構成される、付記23に記載の方法。
〔付記25〕
入力が1つ以上の動きベクトルと関連するキャッシングされたインバリデータにマッチングされると、1つ以上のキャッシングされた動きベクトルを削除するように、前記クライアントに指示する段階
をさらに含む、付記21に記載の方法。
〔付記26〕
前記動きベクトルは、
固有であり予測可能である、付記21に記載の方法。
〔付記27〕
前記動きベクトルは、
予め(aheadoftime)またはランタイム(runtime)中に生成される、付記21に記載の方法。
〔付記28〕
前記動きベクトルは、
前記サーバに記録され、
要求時にキャッシングされるように前記クライアントに送信される、付記21に記載の方法。
〔付記29〕
前記動きベクトルは、
ゲームで生成される(game−generated)、付記21に記載の方法。
〔付記30〕
前記ゲームで生成された動きベクトルは、
ピクセルあたりの(per−pixel)動きベクトルで生成され、
マクロブロックあたりの(per−macorblock)動きベクトルに変換される、付記29に記載の方法。
〔付記31〕
動きベクトルをキャッシングするためのシステムであって、
ネットワークを介し、サーバは、
1つ以上の動きベクトルを生成し(前記動きベクトルは、予め決定された基準に基づいて生成される)、
クライアントに前記生成された動きベクトルと1つ以上のインバリデータを送信し(前記生成された動きベクトルとインバリデータは、前記クライアントでキャッシングされる)、
ユーザから入力を受信するために、前記クライアントに命令語を送信し(前記クライアントは、前記入力をキャッシングされた動きベクトルまたはインバリデータとマッチングさせるように構成される)、
前記マッチングされた動きベクトルまたはインバリデータをグラフィックインタフェース内のエフェクト動き補償に適用するために、前記クライアントに命令語を送信する、システム。
〔付記32〕
前記動きベクトルは、
ルックアップテーブルにキャッシングされる、付記31に記載のシステム。
〔付記33〕
前記1つ以上のインバリデータは、
1つ以上のキャッシングされた動きベクトルと関連する、付記31に記載のシステム。
〔付記34〕
前記1つ以上のインバリデータは、
前記1つ以上のキャッシングされた動きベクトルをディセーブルさせるように構成される、付記33に記載のシステム。
〔付記35〕
入力が1つ以上の動きベクトルと関連するキャッシングされたインバリデータにマッチングされると、1つ以上のキャッシングされた動きベクトルを削除するように、前記クライアントに指示する段階
をさらに含む、付記31に記載のシステム。
〔付記36〕
前記動きベクトルは、
固有であり予測可能である、付記31に記載のシステム。
〔付記37〕
前記動きベクトルは、
予めまたはランタイム中に生成される、付記31に記載のシステム。
〔付記38〕
前記動きベクトルは、
前記サーバに記録され、
要求時にキャッシングされるように前記クライアントに送信される、付記31に記載のシステム。
〔付記39〕
前記動きベクトルは、
ゲームで生成される、付記31に記載のシステム。
〔付記40〕
前記ゲームで生成された動きベクトルは、
ピクセルあたりの動きベクトルで生成され、
マクロブロックあたりの動きベクトルに変換される、付記39に記載のシステム。
〔付記41〕
動きベクトルをキャッシングするためのコンピュータで実現される方法であって、
サーバからクライアントに予め生成された動きベクトルライブラリ(motion vector library)を送信する段階(前記動きベクトルライブラリは、前記クライアントに記録されるように構成される)、
ユーザからの入力データをモニタリングするために、前記クライアントに命令語を送信する段階、
前記入力データから動き推定を計算するために、前記クライアントに命令語を送信する段階、および
前記入力データに基づいて前記記録された動きベクトルライブラリをアップデートするために、前記クライアントに命令語を送信する段階
を含み、
前記クライアントは、
前記サーバから実際の動きベクトルデータを受信する前にグラフィックインタフェースの動きを開始させるために、前記記録された動きベクトルライブラリを適用するように構成される、コンピュータで実現される方法。
〔付記42〕
前記記録された動きベクトルライブラリの適用をディセーブルさせるために、前記サーバから前記クライアントにコンテキストアップデート(context update)を送信する段階
をさらに含む、付記41に記載のコンピュータで実現される方法。
〔付記43〕
1つ以上のスケーリングファクタ(scaling factor)を前記動きベクトルライブラリに適用するための命令語を送信する段階
をさらに含む、付記41に記載のコンピュータで実現される方法。
〔付記44〕
前記スケーリングファクタは、
一般数学式:
Figure 0006984001
に基づいて計算される、付記3に記載のコンピュータで実現される方法。
〔付記45〕
前記生成された動きベクトルライブラリは、
複数の動きベクトルで構成される、付記41に記載のコンピュータで実現される方法。
〔付記46〕
前記動きベクトルは、
ゲームで生成される、付記45に記載のコンピュータで実現される方法。
〔付記47〕
前記生成された動きベクトルライブラリは、
前記クライアントに永久的に記録されるように構成される、付記41に記載のコンピュータで実現される方法。
〔付記48〕
前記動きベクトルライブラリは、
ビルドプロセス(buildprocess)中に生成される、付記41に記載のコンピュータに実現された方法。
〔付記49〕
前記生成された動きベクトルライブラリは、
前記ユーザからの前記入力データと関連する、付記41に記載のコンピュータに実現された方法。
〔付記50〕
前記命令語は、
相関タグ(correlation tag)で構成され、
前記相関タグは、
前記ユーザからの前記入力データと関連する、付記41に記載のコンピュータに実現された方法。
〔付記51〕
動きベクトルをキャッシングするためのシステムであって、
ネットワークを介し、サーバは、
クライアントに予め生成された動きベクトルライブラリを送信し(前記動きベクトルライブラリは、前記クライアントに記録されるように構成される)、
ユーザからの入力データをモニタリングするために、前記クライアントに命令語を送信し、
前記入力データから動き推定を計算するために、前記クライアントに命令語を送信し、
前記入力データに基づいて前記記録された動きベクトルライブラリをアップデートするために、前記クライアントに命令語を送信し、
前記クライアントは、
前記サーバから実際の動きベクトルデータを受信する前にグラフィックインタフェースの動きを開始させるために、前記記録された動きベクトルライブラリを適用するように構成される、システム。
〔付記52〕
前記記録された動きベクトルライブラリの適用をディセーブルさせるために、前記サーバから前記クライアントにコンテキストアップデートを送信する段階
をさらに含む、付記51に記載のシステム。
〔付記53〕
前記サーバは、
1つ以上のスケーリングファクタを前記動きベクトルライブラリに適用するための命令語をさらに送信する、付記51に記載のシステム。
〔付記54〕
前記スケーリングファクタは、
一般数学式:
Figure 0006984001
に基づいて計算される、付記53に記載のシステム。
〔付記55〕
前記生成された動きベクトルライブラリは、
複数の動きベクトルで構成される、付記51に記載のシステム。
〔付記56〕
前記動きベクトルは、
ゲームで生成される、付記55に記載のシステム。
〔付記57〕
前記生成された動きベクトルライブラリは、
前記クライアントに永久的に記録されるように構成される、付記51に記載のシステム。
〔付記58〕
前記動きベクトルライブラリは、
ビルドプロセス中に生成される、付記51に記載のシステム。
〔付記59〕
前記生成された動きベクトルライブラリは、
前記ユーザからの前記入力データと関連する、付記51に記載のシステム。
〔付記60〕
前記命令語は、
相関タグで構成され、
前記相関タグは、
前記ユーザからの前記入力データと関連する、付記51に記載のシステム。

Claims (15)

  1. 動きベクトル(motion vector)をキャッシングするためのコンピュータで実現される方法であって、
    サーバで1つ以上の動きベクトルを生成する段階であって、前記動きベクトルは、予め決定された基準に基づいて生成される、段階と
    クライアントに前記生成された動きベクトルと1つ以上のインバリデータ(invalidator)を送信する段階であって、各インバリデータは、前記動きベクトルが有効となる条件又は無効となる条件に対応し、前記生成された動きベクトルとインバリデータは、前記クライアントでキャッシングされる、段階と
    ユーザから入力を受信するために、前記クライアントに命令語を送信する段階であって、前記クライアントは、前記入力をキャッシングされた動きベクトルまたはインバリデータとマッチングさせるように構成される、段階と
    前記マッチングされた動きベクトルまたはインバリデータを適用してグラフィックインタフェース(graphic interface)の動き補償に作用させるために、前記クライアントに命令語を送信する段階
    を含む、方法。
  2. 前記動きベクトルは、
    ルックアップテーブルにキャッシングされる、請求項1に記載の方法。
  3. 前記1つ以上のインバリデータは、
    1つ以上のキャッシングされた動きベクトルと関連する、請求項1に記載の方法。
  4. 前記1つ以上のインバリデータは、
    前記1つ以上のキャッシングされた動きベクトルをディセーブル(disable)させるように構成される、請求項3に記載の方法。
  5. 入力が1つ以上の動きベクトルと関連するキャッシングされたインバリデータにマッチングされると、1つ以上のキャッシングされた動きベクトルを削除するように、前記クライアントに指示する段階
    をさらに含む、請求項1に記載の方法。
  6. 前記動きベクトルは、
    前記サーバに記録され、
    要求時にキャッシングされるように前記クライアントに送信される、請求項1に記載の方法。
  7. 前記動きベクトルは、
    ゲームで生成される(game−generated)、請求項1に記載の方法。
  8. 前記ゲームで生成された動きベクトルは、
    ピクセルあたりの(per−pixel)動きベクトルで生成され、
    マクロブロックあたりの(per−macorblock)動きベクトルに変換される、請求項7に記載の方法。
  9. 動きベクトルをキャッシングするためのシステムであって、
    ネットワークを介し、サーバは、
    1つ以上の動きベクトルを生成することであって、前記動きベクトルは、予め決定された基準に基づいて生成される、生成することと
    クライアントに前記生成された動きベクトルと1つ以上のインバリデータを送信することであって、各インバリデータは、前記動きベクトルが有効となる条件又は無効となる条件に対応し、前記生成された動きベクトルとインバリデータは、前記クライアントでキャッシングされる、送信することと
    ユーザから入力を受信するために、前記クライアントに命令語を送信することであって、前記クライアントは、前記入力をキャッシングされた動きベクトルまたはインバリデータとマッチングさせるように構成される、送信することと
    前記マッチングされた動きベクトルまたはインバリデータを適用してグラフィックインタフェース内の動き補償に作用させるために、前記クライアントに命令語を送信することと
    を行う、システム。
  10. 前記動きベクトルは、
    ルックアップテーブルにキャッシングされる、請求項9に記載のシステム。
  11. 前記1つ以上のインバリデータは、
    1つ以上のキャッシングされた動きベクトルと関連する、請求項9に記載のシステム。
  12. 前記1つ以上のインバリデータは、
    前記1つ以上のキャッシングされた動きベクトルをディセーブルさせるように構成される、請求項11に記載のシステム。
  13. 入力が1つ以上の動きベクトルと関連するキャッシングされたインバリデータにマッチングされると、1つ以上のキャッシングされた動きベクトルを削除するように、前記クライアントに指示する段階
    をさらに含む、請求項9に記載のシステム。
  14. 前記動きベクトルは、
    ゲームで生成される、請求項9に記載のシステム。
  15. 前記インバリデータは、
    プレイヤ入力と時間ウィンドウ(time window)のうちの1つまたはその組み合わせである、請求項9に記載のシステム。
JP2020507502A 2017-04-21 2018-04-20 動きベクトル予測のためのプレイヤ入力の動き補償のためのシステムおよび方法 Active JP6984001B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019239577A JP6972097B2 (ja) 2017-04-21 2019-12-27 プレイヤ入力の動き補償のためのシステムおよび方法

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201762488526P 2017-04-21 2017-04-21
US62/488,526 2017-04-21
US201862634464P 2018-02-23 2018-02-23
US62/634,464 2018-02-23
US201862640945P 2018-03-09 2018-03-09
US62/640,945 2018-03-09
US201862644164P 2018-03-16 2018-03-16
US62/644,164 2018-03-16
PCT/US2018/028620 WO2018195461A1 (en) 2017-04-21 2018-04-20 Player input motion compensation by anticipating motion vectors

Related Child Applications (2)

Application Number Title Priority Date Filing Date
JP2019239578A Division JP7039546B2 (ja) 2017-04-21 2019-12-27 繰り返される動きベクトルキャッシングによるプレイヤ入力の動き補償のためのシステムおよび方法
JP2019239577A Division JP6972097B2 (ja) 2017-04-21 2019-12-27 プレイヤ入力の動き補償のためのシステムおよび方法

Publications (2)

Publication Number Publication Date
JP2020518210A JP2020518210A (ja) 2020-06-18
JP6984001B2 true JP6984001B2 (ja) 2021-12-17

Family

ID=63854344

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2020507502A Active JP6984001B2 (ja) 2017-04-21 2018-04-20 動きベクトル予測のためのプレイヤ入力の動き補償のためのシステムおよび方法
JP2019239578A Active JP7039546B2 (ja) 2017-04-21 2019-12-27 繰り返される動きベクトルキャッシングによるプレイヤ入力の動き補償のためのシステムおよび方法
JP2019239577A Active JP6972097B2 (ja) 2017-04-21 2019-12-27 プレイヤ入力の動き補償のためのシステムおよび方法

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP2019239578A Active JP7039546B2 (ja) 2017-04-21 2019-12-27 繰り返される動きベクトルキャッシングによるプレイヤ入力の動き補償のためのシステムおよび方法
JP2019239577A Active JP6972097B2 (ja) 2017-04-21 2019-12-27 プレイヤ入力の動き補償のためのシステムおよび方法

Country Status (14)

Country Link
US (12) US10148978B2 (ja)
EP (3) EP3723370B8 (ja)
JP (3) JP6984001B2 (ja)
KR (1) KR102302643B1 (ja)
CN (2) CN113628240A (ja)
AU (4) AU2018255983B2 (ja)
BR (1) BR112019022004A2 (ja)
CA (3) CA3194408A1 (ja)
DE (3) DE112018002562B3 (ja)
GB (4) GB2590034B (ja)
RU (3) RU2742221C2 (ja)
TW (9) TWI788772B (ja)
WO (1) WO2018195461A1 (ja)
ZA (6) ZA201907686B (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113628240A (zh) 2017-04-21 2021-11-09 泽尼马克斯媒体公司 通过预期运动矢量的玩家输入运动补偿
JP7145643B2 (ja) 2018-05-17 2022-10-03 株式会社ディスコ 検査治具及び検査方法
JP7322341B2 (ja) * 2019-03-12 2023-08-08 株式会社コナミデジタルエンタテインメント ゲーム装置、及び、ゲームシステム
US10926177B2 (en) * 2019-03-15 2021-02-23 Sony Interactive Entertainment Inc. Systems and methods for predicting states by using a distributed game engine
US11207594B2 (en) * 2019-03-29 2021-12-28 Electronic Arts Inc. State stream game engine
CN110138769B (zh) * 2019-05-09 2021-06-15 深圳市腾讯网域计算机网络有限公司 一种图像传输的方法以及相关装置
US11033813B2 (en) * 2019-06-07 2021-06-15 Microsoft Technology Licensing, Llc Latency erasure
US20220068013A1 (en) * 2020-08-28 2022-03-03 Nvidia Corporation System and method for image generation using jittered motion vectors
CN115209208A (zh) * 2021-04-08 2022-10-18 海信视像科技股份有限公司 一种视频循环播放的处理方法及装置
KR20230081402A (ko) * 2021-11-30 2023-06-07 삼성전자주식회사 서버와 전자 장치 사이의 영상 콘텐트를 스트리밍하는 방법, 영상 콘텐트를 스트리밍하는 서버 및 전자 장치

Family Cites Families (121)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS56117640A (en) 1980-02-22 1981-09-16 Mitsubishi Motors Corp Molding board for car
US4501980A (en) 1982-06-04 1985-02-26 Motornetics Corporation High torque robot motor
JPH01277055A (ja) * 1988-04-28 1989-11-07 Dainippon Screen Mfg Co Ltd 多値描画のためのラスターデータ生成方法
JPH06129865A (ja) 1992-10-20 1994-05-13 Sumitomo Electric Ind Ltd シングルモ−ドファイバ型デポラライザとその製造方法及び光ファイバジャイロ
JPH0974568A (ja) 1995-09-06 1997-03-18 Nippon Telegr & Teleph Corp <Ntt> 動画像の動き補償予測符号化方法
US5838823A (en) * 1996-02-29 1998-11-17 Electronic Arts, Inc. Video image compression and decompression
US6057847A (en) 1996-12-20 2000-05-02 Jenkins; Barry System and method of image generation and encoding using primitive reprojection
WO2005099423A2 (en) 2004-04-16 2005-10-27 Aman James A Automatic event videoing, tracking and content generation system
JP3344345B2 (ja) 1998-12-15 2002-11-11 日本電気株式会社 共有メモリ型ベクトル処理システムとその制御方法及びベクトル処理の制御プログラムを格納する記憶媒体
US6507618B1 (en) * 2000-04-25 2003-01-14 Hewlett-Packard Company Compressed video signal including independently coded regions
US7091975B1 (en) 2000-07-21 2006-08-15 Microsoft Corporation Shape and animation methods and systems using examples
US6884171B2 (en) * 2000-09-18 2005-04-26 Nintendo Co., Ltd. Video game distribution network
JP4011327B2 (ja) * 2000-11-15 2007-11-21 株式会社レクサー・リサーチ 表示オブジェクト提供装置、表示オブジェクト提供方式及び表示オブジェクト提供プログラム
US6761636B2 (en) 2001-01-16 2004-07-13 Fucom Company, Ltd. Real time data exchange system
GB2375673A (en) * 2001-05-14 2002-11-20 Salgen Systems Ltd Image compression method using a table of hash values corresponding to motion vectors
US20030189980A1 (en) * 2001-07-02 2003-10-09 Moonlight Cordless Ltd. Method and apparatus for motion estimation between video frames
CA2491522C (en) 2002-07-01 2014-12-09 E G Technology Inc. Efficient compression and transport of video over a network
US7391409B2 (en) 2002-07-27 2008-06-24 Sony Computer Entertainment America Inc. Method and system for applying gearing effects to multi-channel mixed input
US7546534B1 (en) * 2002-08-26 2009-06-09 Microsoft Corporation Personalizing access of game web site based on user configuration
US6903662B2 (en) 2002-09-19 2005-06-07 Ergodex Computer input device with individually positionable and programmable input members
US8054880B2 (en) 2004-12-10 2011-11-08 Tut Systems, Inc. Parallel rate control for digital video encoder with multi-processor architecture and picture-based look-ahead window
US20050195975A1 (en) * 2003-01-21 2005-09-08 Kevin Kawakita Digital media distribution cryptography using media ticket smart cards
US7408984B2 (en) 2003-09-17 2008-08-05 International Business Machines Corporation Method and system for multiple pass video coding
US7129951B2 (en) 2004-05-06 2006-10-31 Valve Corporation Method and system for performing speculative collisions for a video game
US8902971B2 (en) 2004-07-30 2014-12-02 Euclid Discoveries, Llc Video compression repository and model reuse
KR100899903B1 (ko) * 2004-12-21 2009-05-28 콸콤 인코포레이티드 클라이언트 이용 방화벽 설정
US20060230428A1 (en) 2005-04-11 2006-10-12 Rob Craig Multi-player video game system
US20070009042A1 (en) * 2005-07-08 2007-01-11 Robert Craig Video game system using pre-encoded macro-blocks in an I-frame
US8118676B2 (en) 2005-07-08 2012-02-21 Activevideo Networks, Inc. Video game system using pre-encoded macro-blocks
US9060101B2 (en) * 2005-07-08 2015-06-16 Activevideo Networks, Inc. Video game system having an infinite playing field
JP4996603B2 (ja) * 2005-07-08 2012-08-08 タグ ネットワークス,インコーポレイテッド 事前符号化マクロブロックを使用するビデオゲームシステム
US8787460B1 (en) 2005-07-28 2014-07-22 Teradici Corporation Method and apparatus for motion vector estimation for an image sequence
JP4722936B2 (ja) * 2005-09-30 2011-07-13 シャープ株式会社 画像表示装置及び方法
US8020029B2 (en) 2006-02-17 2011-09-13 Alcatel Lucent Method and apparatus for rendering game assets in distributed systems
JP4961850B2 (ja) 2006-06-15 2012-06-27 ソニー株式会社 動き検出方法、動き検出方法のプログラム、動き検出方法のプログラムを記録した記録媒体及び動き検出装置
US8160056B2 (en) * 2006-09-08 2012-04-17 At&T Intellectual Property Ii, Lp Systems, devices, and methods for network routing
JP4319211B2 (ja) 2006-09-21 2009-08-26 株式会社スクウェア・エニックス ビデオゲーム処理装置、およびビデオゲーム処理プログラム
US8218640B2 (en) * 2006-10-31 2012-07-10 Sony Computer Entertainment Inc. Picture decoding using same-picture reference for pixel reconstruction
US20080195664A1 (en) 2006-12-13 2008-08-14 Quickplay Media Inc. Automated Content Tag Processing for Mobile Media
US8874655B2 (en) 2006-12-13 2014-10-28 Napo Enterprises, Llc Matching participants in a P2P recommendation network loosely coupled to a subscription service
US8804829B2 (en) 2006-12-20 2014-08-12 Microsoft Corporation Offline motion description for video generation
US20090017910A1 (en) * 2007-06-22 2009-01-15 Broadcom Corporation Position and motion tracking of an object
JP4931223B2 (ja) * 2007-03-30 2012-05-16 株式会社バンダイナムコゲームス 動きベクトル探索プログラム、情報記憶媒体、動きベクトル探索装置、及び、ネットワークシステム
US8069258B1 (en) * 2007-09-11 2011-11-29 Electronic Arts Inc. Local frame processing to apparently reduce network lag of multiplayer deterministic simulations
US8127233B2 (en) 2007-09-24 2012-02-28 Microsoft Corporation Remote user interface updates using difference and motion encoding
US20090172565A1 (en) * 2007-12-26 2009-07-02 John Clarke Jackson Systems, Devices, and Methods for Sharing Content
US8681870B2 (en) * 2008-02-14 2014-03-25 Nec Corporation Motion vector detection device
US8154553B2 (en) 2008-05-22 2012-04-10 Playcast Media System, Ltd. Centralized streaming game server
EP2364190B1 (en) * 2008-05-12 2018-11-21 GameFly Israel Ltd. Centralized streaming game server
US8571106B2 (en) * 2008-05-22 2013-10-29 Microsoft Corporation Digital video compression acceleration based on motion vectors produced by cameras
JP4545809B2 (ja) 2008-06-05 2010-09-15 株式会社スクウェア・エニックス ゲーム装置及びプログラム
JP4613990B2 (ja) 2008-07-31 2011-01-19 ソニー株式会社 画像処理装置、画像処理方法、プログラム
US8678929B1 (en) 2008-08-01 2014-03-25 Electronics Arts Inc. Client-side prediction of a local game object to reduce apparent network lag of multiplayer simulations
US10192389B2 (en) 2008-09-01 2019-01-29 New Bis Safe Luxco S.À.R.L. Methods, apparatus and systems for determining an adjustment value of a gaming device
KR100997541B1 (ko) * 2008-10-08 2010-11-30 인하대학교 산학협력단 신상품 추천문제 해결을 위한 내용기반 필터링과 협업 필터링을 혼합한 사용자 프로파일 기반 이미지 추천 방법 및 장치
US10235832B2 (en) 2008-10-17 2019-03-19 Igt Post certification metering for diverse game machines
FR2940736B1 (fr) 2008-12-30 2011-04-08 Sagem Comm Systeme et procede de codage video
JP4718622B2 (ja) * 2009-03-24 2011-07-06 株式会社スクウェア・エニックス ゲーム装置、ゲームの進行方法、ゲームプログラム及び記録媒体
CN101583025B (zh) * 2009-06-11 2011-05-11 中兴通讯股份有限公司 一种流媒体播放方法及装置
US8854376B1 (en) * 2009-07-30 2014-10-07 Lucasfilm Entertainment Company Ltd. Generating animation from actor performance
US9338523B2 (en) 2009-12-21 2016-05-10 Echostar Technologies L.L.C. Audio splitting with codec-enforced frame sizes
US8553982B2 (en) * 2009-12-23 2013-10-08 Intel Corporation Model-based play field registration
CA2786812C (en) * 2010-01-18 2018-03-20 Telefonaktiebolaget L M Ericsson (Publ) Method and arrangement for supporting playout of content
US20110250948A1 (en) 2010-04-08 2011-10-13 Wms Gaming, Inc. Video compression in gaming machines
US20110261885A1 (en) 2010-04-27 2011-10-27 De Rivaz Peter Francis Chevalley Method and system for bandwidth reduction through integration of motion estimation and macroblock encoding
JP5218995B2 (ja) 2010-05-14 2013-06-26 Necシステムテクノロジー株式会社 動画再生端末,動画再生方法及びプログラム
US9789392B1 (en) 2010-07-09 2017-10-17 Open Invention Network Llc Action or position triggers in a game play mode
JP2012043158A (ja) 2010-08-18 2012-03-01 Sony Computer Entertainment Inc 情報処理装置、情報処理端末、情報処理システム、情報処理方法、情報処理プログラム
US8924544B2 (en) * 2010-12-07 2014-12-30 Samsung Electronics Co., Ltd. Techniques for sessionless reporting by device management client
CN103404122B (zh) * 2011-01-28 2017-03-22 皇家飞利浦电子股份有限公司 基于运动矢量的运动对象比较
KR20120088488A (ko) * 2011-01-31 2012-08-08 한국전자통신연구원 시간적 움직임 벡터 저장 방법 및 그 장치
JP5883431B2 (ja) 2011-02-25 2016-03-15 パナソニック インテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America 画像符号化方法および画像復号化方法
US9122609B2 (en) 2011-03-07 2015-09-01 Texas Instruments Incorporated Caching method and system for video coding
JP5155462B2 (ja) * 2011-08-17 2013-03-06 株式会社スクウェア・エニックス・ホールディングス 動画配信サーバ、動画再生装置、制御方法、プログラム、及び記録媒体
EP2563038A1 (en) * 2011-08-26 2013-02-27 Streamtainment Systems OÜ Method for transmitting video signals from an application on a server over an IP network to a client device
US9578336B2 (en) * 2011-08-31 2017-02-21 Texas Instruments Incorporated Hybrid video and graphics system with automatic content detection process, and other circuits, processes, and systems
US8913664B2 (en) * 2011-09-16 2014-12-16 Sony Computer Entertainment Inc. Three-dimensional motion mapping for cloud gaming
US9734167B2 (en) * 2011-09-21 2017-08-15 Horsetooth Ventures, LLC Interactive image display and selection system
CN109985308B (zh) * 2011-09-30 2023-11-28 尼科索亚股份有限公司 用于影响血压的高血压治疗植入单元
JP5977023B2 (ja) 2011-11-07 2016-08-24 株式会社スクウェア・エニックス・ホールディングス 描画システム、プログラム、及び記録媒体
WO2013084078A1 (en) * 2011-12-09 2013-06-13 Empire Technology Development Llc Predictive caching of game content data
EP2645713A1 (en) 2012-03-30 2013-10-02 Alcatel Lucent Method and apparatus for encoding a selected spatial portion of a video stream
KR102126886B1 (ko) * 2012-05-14 2020-06-26 루카 로사토 단계적 계층에서의 신호 인코딩, 디코딩 및 재구성 동안의 잔차 데이터의 압축해제
CN108600752B (zh) * 2012-06-11 2021-09-21 三星电子株式会社 视频编码方法和设备以及计算机可读存储介质
EP2859729B1 (en) 2012-06-12 2020-09-16 Coherent Logix, Incorporated A distributed architecture for encoding and delivering video content
JP5586718B2 (ja) 2012-06-19 2014-09-10 株式会社東芝 制御プログラム、ホスト装置の制御方法、情報処理装置およびホスト装置
GB201211994D0 (en) * 2012-07-05 2012-08-22 Sensewhere Ltd Method of estimating position of user device
US8737460B2 (en) 2012-07-16 2014-05-27 Seagate Technology, Llc Equalizer and detector arrangement employing joint entropy-based calibration
BR112015006178B1 (pt) 2012-09-21 2022-11-16 Nokia Technologies Oy Métodos, aparelhos e meio não transitório legível por computador para codificação e decodificação de vídeo
JP6306512B2 (ja) 2012-11-05 2018-04-04 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置
JP6151909B2 (ja) * 2012-12-12 2017-06-21 キヤノン株式会社 動画像符号化装置、方法およびプログラム
US10715817B2 (en) * 2012-12-19 2020-07-14 Nvidia Corporation Apparatus and method for enhancing motion estimation based on user input
WO2014120368A1 (en) 2013-01-30 2014-08-07 Intel Corporation Content adaptive entropy coding for next generation video
US9257092B2 (en) 2013-02-12 2016-02-09 Vmware, Inc. Method and system for enhancing user experience for remoting technologies
US9564102B2 (en) * 2013-03-14 2017-02-07 Microsoft Technology Licensing, Llc Client side processing of player movement in a remote gaming environment
US9661351B2 (en) 2013-03-15 2017-05-23 Sony Interactive Entertainment America Llc Client side frame prediction for video streams with skipped frames
US9079108B2 (en) 2013-05-31 2015-07-14 Empire Technology Development Llc Cache-influenced video games
US20150088942A1 (en) * 2013-09-25 2015-03-26 Westell Technologies, Inc. Methods and Systems for Providing File Services
US9192863B2 (en) * 2013-10-29 2015-11-24 Disney Enterprises, Inc. Selective caching of interactive objects
US9749642B2 (en) 2014-01-08 2017-08-29 Microsoft Technology Licensing, Llc Selection of motion vector precision
US20150228106A1 (en) 2014-02-13 2015-08-13 Vixs Systems Inc. Low latency video texture mapping via tight integration of codec engine with 3d graphics engine
US9762919B2 (en) 2014-08-28 2017-09-12 Apple Inc. Chroma cache architecture in block processing pipelines
US10063866B2 (en) 2015-01-07 2018-08-28 Texas Instruments Incorporated Multi-pass video encoding
US11477477B2 (en) 2015-01-26 2022-10-18 Qualcomm Incorporated Sub-prediction unit based advanced temporal motion vector prediction
CA2958254A1 (en) 2015-01-29 2016-08-04 Ecole De Technologie Superieure Methods and systems for determining motion vectors in a motion estimation process of a video encoder
TW201642655A (zh) * 2015-04-21 2016-12-01 Vid衡器股份有限公司 基於藝術意向之視訊編碼
CN104811721B (zh) 2015-05-26 2017-09-22 珠海全志科技股份有限公司 视频解码数据存储方法及运动向量数据的计算方法
JP6910130B2 (ja) 2015-11-06 2021-07-28 三星電子株式会社Samsung Electronics Co.,Ltd. 3dレンダリング方法及び3dレンダリング装置
US9426543B1 (en) * 2015-12-18 2016-08-23 Vuclip (Singapore) Pte. Ltd. Server-based video stitching
US10163183B2 (en) 2016-01-13 2018-12-25 Rockwell Collins, Inc. Rendering performance using dynamically controlled samples
US10306258B2 (en) 2016-01-29 2019-05-28 Google Llc Last frame motion vector partitioning
US9705526B1 (en) 2016-03-17 2017-07-11 Intel Corporation Entropy encoding and decoding of media applications
US10109100B2 (en) 2016-03-25 2018-10-23 Outward, Inc. Adaptive sampling of pixels
CN109416613A (zh) 2016-07-15 2019-03-01 爱迪德技术有限公司 获取用户输入
US9875552B1 (en) * 2016-07-26 2018-01-23 Teradici Corporation Content independent method of motion determination using sparse matrices
US10514799B2 (en) 2016-09-08 2019-12-24 Google Llc Deep machine learning to perform touch motion prediction
US10049481B2 (en) * 2016-09-12 2018-08-14 Disney Enterprises, Inc. Direct manipulation interpolation and ghost wedging for distributed node-based interactive workflows
US10719447B2 (en) 2016-09-26 2020-07-21 Intel Corporation Cache and compression interoperability in a graphics processor pipeline
US10306180B2 (en) 2016-10-21 2019-05-28 Liquidsky Software, Inc. Predictive virtual reality content streaming techniques
US10463964B2 (en) 2016-11-17 2019-11-05 Activision Publishing, Inc. Systems and methods for the real-time generation of in-game, locally accessible heatmaps
CN113628240A (zh) 2017-04-21 2021-11-09 泽尼马克斯媒体公司 通过预期运动矢量的玩家输入运动补偿

Also Published As

Publication number Publication date
GB202012029D0 (en) 2020-09-16
RU2742221C2 (ru) 2021-02-03
EP3613014A4 (en) 2020-07-22
US11330291B2 (en) 2022-05-10
TWI788772B (zh) 2023-01-01
RU2020121361A (ru) 2020-09-02
US20180311577A1 (en) 2018-11-01
ZA202007215B (en) 2022-03-30
KR102302643B1 (ko) 2021-09-14
TWI721670B (zh) 2021-03-11
AU2020201834A1 (en) 2020-04-02
RU2020121361A3 (ja) 2020-12-01
AU2020203120B2 (en) 2021-10-07
KR20200019855A (ko) 2020-02-25
TWI721677B (zh) 2021-03-11
RU2019138605A (ru) 2020-04-17
AU2020201835B2 (en) 2021-07-29
ZA202007217B (en) 2022-04-28
GB2578527A (en) 2020-05-13
ZA202007216B (en) 2022-04-28
GB2590034A (en) 2021-06-16
ZA202003699B (en) 2021-08-25
JP6972097B2 (ja) 2021-11-24
JP2020091874A (ja) 2020-06-11
AU2018255983B2 (en) 2020-04-23
US20200186829A1 (en) 2020-06-11
TW202016882A (zh) 2020-05-01
GB201916978D0 (en) 2020-01-08
AU2020201834B2 (en) 2021-04-29
GB202105234D0 (en) 2021-05-26
GB2590034B (en) 2021-12-22
TWI780682B (zh) 2022-10-11
RU2019138605A3 (ja) 2020-06-01
GB202103296D0 (en) 2021-04-21
GB2591059A (en) 2021-07-14
TW202145144A (zh) 2021-12-01
US20190222861A1 (en) 2019-07-18
BR112019022004A2 (pt) 2020-05-12
US10148978B2 (en) 2018-12-04
US20210235112A1 (en) 2021-07-29
US10595040B2 (en) 2020-03-17
CN113628240A (zh) 2021-11-09
TW202131692A (zh) 2021-08-16
US10469867B2 (en) 2019-11-05
JP7039546B2 (ja) 2022-03-22
TW202015416A (zh) 2020-04-16
US10341678B2 (en) 2019-07-02
US11323740B2 (en) 2022-05-03
US11695951B2 (en) 2023-07-04
TW202011745A (zh) 2020-03-16
CA3194408A1 (en) 2018-10-25
RU2726284C1 (ru) 2020-07-10
TW202131691A (zh) 2021-08-16
TW201907363A (zh) 2019-02-16
TWI797549B (zh) 2023-04-01
EP3723370B1 (en) 2023-12-06
CN111052182A (zh) 2020-04-21
GB2585145A (en) 2020-12-30
JP2020518210A (ja) 2020-06-18
EP3613014B1 (en) 2023-10-18
CA3194309A1 (en) 2018-10-25
EP3723370B8 (en) 2024-01-17
US20210195233A1 (en) 2021-06-24
EP3723370A1 (en) 2020-10-14
US20200053383A1 (en) 2020-02-13
AU2020203120A1 (en) 2020-05-28
TW201844003A (zh) 2018-12-16
CA3060089C (en) 2023-06-13
GB2578527B (en) 2021-04-28
TWI729288B (zh) 2021-06-01
EP3613014A1 (en) 2020-02-26
US10595041B2 (en) 2020-03-17
US11533504B2 (en) 2022-12-20
CA3060089A1 (en) 2018-10-25
DE112018002096T5 (de) 2020-01-09
JP2020078080A (ja) 2020-05-21
TWI729607B (zh) 2021-06-01
CN111052182B (zh) 2021-07-13
RU2729705C2 (ru) 2020-08-11
EP3723045B1 (en) 2023-10-18
TWI684357B (zh) 2020-02-01
GB2591059B (en) 2022-02-16
DE112018002562B3 (de) 2022-01-05
US20190364297A1 (en) 2019-11-28
US20230269393A1 (en) 2023-08-24
US11601670B2 (en) 2023-03-07
US20180310020A1 (en) 2018-10-25
AU2018255983A1 (en) 2019-12-12
GB2585145B (en) 2021-05-26
AU2020201834B9 (en) 2021-07-01
US20180310019A1 (en) 2018-10-25
US20200204821A1 (en) 2020-06-25
TWI681669B (zh) 2020-01-01
DE112018002561B3 (de) 2022-01-05
US20190124357A1 (en) 2019-04-25
ZA202003698B (en) 2021-08-25
US11503332B2 (en) 2022-11-15
WO2018195461A1 (en) 2018-10-25
ZA201907686B (en) 2021-04-28
TW201907725A (zh) 2019-02-16
AU2020201835A1 (en) 2020-04-02
EP3723045A1 (en) 2020-10-14

Similar Documents

Publication Publication Date Title
JP6972097B2 (ja) プレイヤ入力の動き補償のためのシステムおよび方法
RU2813614C2 (ru) Системы и способы компенсации движения на основании ввода игрока

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200423

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200423

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210427

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20210513

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20210514

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210706

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211004

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211026

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211124

R150 Certificate of patent or registration of utility model

Ref document number: 6984001

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150