KR20200019855A - 모션 벡터들 예측에 의한 플레이어 입력 모션 보상을 위한 시스템들 및 방법들 - Google Patents

모션 벡터들 예측에 의한 플레이어 입력 모션 보상을 위한 시스템들 및 방법들 Download PDF

Info

Publication number
KR20200019855A
KR20200019855A KR1020197033928A KR20197033928A KR20200019855A KR 20200019855 A KR20200019855 A KR 20200019855A KR 1020197033928 A KR1020197033928 A KR 1020197033928A KR 20197033928 A KR20197033928 A KR 20197033928A KR 20200019855 A KR20200019855 A KR 20200019855A
Authority
KR
South Korea
Prior art keywords
motion vectors
client
motion
input
server
Prior art date
Application number
KR1020197033928A
Other languages
English (en)
Other versions
KR102302643B1 (ko
Inventor
미카엘 코피에츠
Original Assignee
제니맥스 미디어 인크.
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 제니맥스 미디어 인크. filed Critical 제니맥스 미디어 인크.
Publication of KR20200019855A publication Critical patent/KR20200019855A/ko
Application granted granted Critical
Publication of KR102302643B1 publication Critical patent/KR102302643B1/ko

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/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
    • 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
    • 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/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
    • 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
    • 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/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

Abstract

모션 추정 및 보상을 통해 대기 시간을 감소시키기 위한 시스템들 및 방법들에는, 모션 벡터들을 매칭, 태깅 및 합산하기 위해 원격 서버로부터의 룩업 테이블들을 사용하는 클라이언트 디바이스가 통합되어 있다. 원격 서버가 인코딩된 비디오 프레임들을 클라이언트에 전송할 때, 클라이언트는 그들을 디코딩하고, 모션을 추정하는 데 합산된 모션 벡터들을 적용한다. 또한, 이 기술은 미리 결정된 기준을 기반으로 모션 벡터들을 생성하고, 그들과 인밸리드에이터들을 그들을 캐싱하는 클라이언트에 전송한다. 서버는 클라이언트에 입력을 수신하도록 지시하고, 그것을 캐싱된 모션 벡터들 또는 인밸리드에이터들과 매칭시키는데 사용한다. 또한, 이 기술은 반복적인 모션 벡터들을 캐싱하고, 이전에 생성된 모션 벡터 라이브러리들을 클라이언트에 전송한다. 서버는 클라이언트에 모션 추정을 계산하도록 지시하고, 클라이언트에 저장된 모션 벡터 라이브러리를 업데이트하도록 지시하고, 따라서, 클라이언트는 실제 모션 벡터 데이터를 수신하기 전에 모션을 시작하도록 저장된 라이브러리를 적용한다.

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호의 이익을 주장한다.
서버 측 게임이 클라이언트 측 플레이어(player)에 의해 제어되는 원격 게이밍(gaming) 어플리케이션들은 기존의 또는 맞춤화된(customized) 인코더들을 사용하여, 실시간으로 3-차원(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)하기 위한 시스템들 및 방법들을 개시하고 있으며, 여기서 스킵된 프레임을 검출하는 것에 응답하여, 클라이언트 디바이스는 압축된 비디오 스트림에서 스킵된 프레임을 대신하는 예측된 프레임을 생성하고, 예측된 프레임은 클라이언트 디바이스에 의해 디코딩된 하나 이상의 이전 프레임들로부터 델타(delta) 정보를 확장시키는 것을 기반으로 생성된다. 이러한 기술에 대해, 하나 이상의 재구성되거나 예측된 프레임들의 클라이언트 측 프레임 예측은, 하나 이상의 선행하는(preceding) 프레이들의 데이터(예컨대, 모션 벡터들, 리지듀얼(residual)들 등)를 기반으로 스킵된 프레임 다음에 사용된다. 또한, 기술은 비트 할당 및/또는 서브피처(subfeature) 인코딩을 우선시한다. 인코딩된 네트워크 추상화 계층 유닛(Encoded Network Abstraction Layer Unit)(NALU)들은, (1) 모션 벡터들 및 (2) 리지듀얼들로 분할될 수 있다. 실제로 프레임을 스킵하는 대신에, 장치는 우선 순위에 따라 단지 최소한의 인코딩 데이터를 전송할 수 있다. 예를 들어, 모션의 우선 순위가 지정되면, 단지 모션 벡터들이 전송될 수 있다. 적어도 '351 특허는 서버로부터 전송된 룩업 테이블들을 사용자 입력을 모션 벡터들과 태그(tag)들에 매칭시키는 데 사용하고, 그들 모션 벡터들을 합산하는 클라이언트 디바이스를 개시하고 있지 않으므로, 본 발명은 '351 특허의 기술 보다 우수하다. 또한, '351 특허는, 디코딩된 프레임들에서의 모션을 추정하기 위해, 그들 프레임들에 대한 그들 합산된 모션 벡터들의 적용을 개시하고 있지 않다. 또한, 본 발명은 입력-피드백 대기 시간을 감소시키기 때문에 우수하며, 이는, 서버가 출력 비디오를 리턴(return)하기를 기다리는 대신에, 플레이어 입력 모션 보상을 사용함으로써, 크게 감소된다.
미국 특허 제8,678,929호(“'929 특허”)는, 네트워크의 대화형 게임 시스템의 동작에 관한 것이다. 개시된 방법들은, 두 방식(two-way) 블렌딩(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 특허는 미리 결정된 기준을 기반으로 서버에서 모션 벡터들을 생성하고, 생성된 모션 벡터들과 하나 이상의 인밸리드에이터(invalidator)들을 클라이언트로 전송하며, 클라이언트가 그들 모션 벡터들과 인밸리드에이터들을 캐싱하는 것을 개시하고 있지 않으므로, 본 발명은 '334 특허에 기술된 기술 보다 우수하다. 또한, '334 특허는, 서버가 사용자로부터 입력을 수신하도록 클라이언트에 지시하고, 그 입력을 캐싱된 모션 벡터들 또는 인밸리드에이터들과 매칭시키는 데 사용하며, 그들 벡터들 또는 인밸리드에이터들이 모션 보상에 사용되는 것을 개시하고 있지 않다. 또한, 본 발명은 입력-피드백 대기 시간을 감소시키기 때문에 우수하며, 이는, 서버가 출력 비디오를 리턴하기를 기다리는 대신에, 플레이어 입력 모션 보상을 사용함으로써, 크게 감소된다.
미국 특허 제9,736,454호(“'454 특허”)는, 텍스처 블록(texture block)과 함께 배치된 깊이 블록(depth block)의 이용 가능성을 검사하고, 함께 배치된 깊이 블록의 이용 가능성에 기초하여 텍스처 블록에 대한 예측 방법을 결정하며, 함께 배치된 깊이 블록의 이용 가능성에 기초하여 텍스처 블록에 대한 제1 예측 블록(first prediction block)들 도출하는 것을 포함하는 인코딩을 위한 시스템들 및 방법들을 개시하고 있다. 적어도 '454 특허는 미리 결정된 기준을 기반으로 서버에서 모션 벡터들을 생성하고, 생성된 모션 벡터들과 하나 이상의 인밸리드에이터들을 클라이언트로 전송하며, 클라이언트가 그들 모션 벡터들과 인밸리드에이터들을 캐싱하는 것을 개시하고 있지 않으므로, 본 발명은 역시 '454 특허에 기술된 기술 보다 우수하다. 또한, '454 특허는, 서버가 사용자로부터 입력을 수신하도록 클라이언트에 지시하고, 그 입력을 캐싱된 모션 벡터들 또는 인밸리드에이터들과 매칭시키는 데 사용하며, 그들 벡터들 또는 인밸리드에이터들이 모션 보상에 사용되는 것을 개시하고 있지 않다. 또한, 본 발명은 입력-피드백 대기 시간을 감소시키기 때문에 우수하며, 이는, 서버가 출력 비디오를 리턴하기를 기다리는 대신에, 플레이어 입력 모션 보상을 사용함으로써, 크게 감소된다.
미국 특허 제9,705,526호(“'526 특허”)는, 미디어(media) 및 이미지 어플리케이션들에서 엔트로피(entropy) 인코딩을 위한 시스템들 및 방법들을 개시하고 있다. 그 기술은, 압축이 지시된 이미지 및/또는 비디오 데이터의 소스를 수신하는 것으로 시작하는 시스템을 개시하고 있다. 그리고, 무손실의(lossless) 압축 방식이 적용된다. 그리고, 예측기(predictor)/델타 계산 유닛(delta computation unit)이 입력을 취하고, 이웃하는 입력 엘리먼트(element)들 사이의 델타 계산을 사용하여 입력 데이터의 리던던시(redundancy)를 감소시키려 한다. 그리고, 그들 값들은, 압축된 이미지 및/또는 비디오 데이터를 생성하기위해, 엔트로피 인코더에서 미리 정의된 통계 모델링을 사용하여 인코딩된다. 상기와 유사하게, 적어도 '526 특허는 미리 결정된 기준을 기반으로 서버에서 모션 벡터들을 생성하고, 생성된 모션 벡터들과 하나 이상의 인밸리드에이터들을 클라이언트로 전송하며, 클라이언트가 그들 모션 벡터들과 인밸리드에이터들을 캐싱하는 것을 개시하고 있지 않으므로, 본 발명은 '526 특허에 기술된 기술 보다 우수하다. 또한, '526 특허는, 서버가 사용자로부터 입력을 수신하도록 클라이언트에 지시하고, 그 입력을 캐싱된 모션 벡터들 또는 인밸리드에이터들과 매칭시키는 데 사용하며, 그들 벡터들 또는 인밸리드에이터들이 모션 보상에 사용되는 것을 개시하고 있지 않다. 또한, 본 발명은 입력-피드백 대기 시간을 감소시키기 때문에 우수하며, 이는, 서버가 출력 비디오를 리턴하기를 기다리는 대신에, 플레이어 입력 모션 보상을 사용함으로써, 크게 감소된다.
미국 특허 제8,873,636B2호(“'626 특허”)는, 게임의 로컬 인스턴스를 실행하는 사용자 PC에 코딩된 미이지 데이터를 제공하는 동영상(moving-image) 배포(distribution) 서버(예컨대, 온라인 게임을 실행하는 서버)에 관한 것이다. 이 프로세스를 구체적으로 수행하기 위해, 사용자 PC의 CPU는 선행하는 프레임 스크린에서 선택된 블록과 연관된 모션 벡터를 디코딩하기 위해 참조될 영역을 지정한다. 그것은, 선택된 블록과 연관된 모션 벡터(제공되는 프리-프로세싱(pre-processing) 정보에 포함된 벡터)를 참조하여 수행하며, 영역의 이미지를 참조 이미지로 추출한다. 다른 참조들의 경우와 마찬가지로, 적어도 '636 특허는 미리 결정된 기준을 기반으로 서버에서 모션 벡터들을 생성하고, 생성된 모션 벡터들과 하나 이상의 인밸리드에이터들을 클라이언트로 전송하며, 클라이언트가 그들 모션 벡터들과 인밸리드에이터들을 캐싱하는 것을 개시하고 있지 않으므로, 본 발명은 '636 특허에 기술된 기술 보다 우수하다. 또한, '636 특허는, 서버가 사용자로부터 입력을 수신하도록 클라이언트에 지시하고, 그 입력을 캐싱된 모션 벡터들 또는 인밸리드에이터들과 매칭시키는 데 사용하며, 그들 벡터들 또는 인밸리드에이터들이 모션 보상에 사용되는 것을 개시하고 있지 않다. 또한, 본 발명은 입력-피드백 대기 시간을 감소시키기 때문에 우수하며, 이는, 서버가 출력 비디오를 리턴하기를 기다리는 대신에, 플레이어 입력 모션 보상을 사용함으로써, 크게 감소된다.
국제 특허 공개 제WO2009138878A2호(“'878 공보”)는, 다양한 렌더링된 객체들의 세부 레벨들 및 포스트-필터링(post-filtering)을 제어하면서, 중앙 집중식 스트리밍 어플리케이션 서버에서 복수의 대화형 어플리케이션들을 프로세싱 및 스트리밍하는 것에 관한 것이다. 시스템에서, 중앙 집중식 스트리밍 어플리케이션 서버는, 그의 비디오 프리-프로세서에서, 압축된 스트림을 디코딩하여 콘텐트를 디스플레이하는 클라이언트 디바이스들로의 오디오-비주얼(audio-visual) 콘텐트의 압축된 스트림을 인코딩하기 전에 프레임 시퀀스에 공간 및 시간 필터링을 수행한다. 중앙 집중식 대화형 어플리케이션 서버의 GPU 커맨트(command) 프로세서는, 비디오 인코더의 타겟 인코딩된 프레임 내 각 매크로블록(macroblock)에 대해 모션 보상 추정을 계산하기도 하는 모듈을 포함한다. 그럼에도 불구하고, 적어도 '878 공보는 미리 결정된 기준을 기반으로 서버에서 모션 벡터들을 생성하고, 생성된 모션 벡터들과 하나 이상의 인밸리드에이터들을 클라이언트로 전송하며, 클라이언트가 그들 모션 벡터들과 인밸리드에이터들을 캐싱하는 것을 개시하고 있지 않으므로, 본 발명은 '878 공보에 기술된 기술 보다 여전히 우수하다. 또한, '878 공보는, 서버가 사용자로부터 입력을 수신하도록 클라이언트에 지시하고, 그 입력을 캐싱된 모션 벡터들 또는 인밸리드에이터들과 매칭시키는 데 사용하며, 그들 벡터들 또는 인밸리드에이터들이 모션 보상에 사용되는 것을 개시하고 있지 않다. 또한, 본 발명은 입력-피드백 대기 시간을 감소시키기 때문에 우수하며, 이는, 서버가 출력 비디오를 리턴하기를 기다리는 대신에, 플레이어 입력 모션 보상을 사용함으로써, 크게 감소된다.
미국 특허 제9,358,466B2호(“'466 특허”)는, 캐싱된 데이터의 재사용을 통해 비디오 게임 성능을 향상시키는 것에 관한 것이다. 개시된 시스템들은, 사용된 디지털 자산을 식별하고 식별된 디지털 자산이 캐시(cache) 내에 있는 지의 여부를 판단함으로써 상이한 생성된 비디오 게임 미션(mission)들의 캐시 성능에 적어도 부분적으로 스코어(score)를 매긴다. 캐시 스코어들은, 이미 캐시에 있는 미션에 대한 디지털 자산의 비율에 해당하는 캐시 재사용률을 기반으로 계산될 수 있다. 캐시 스코어들을 생성하는 다른 기술들은, 이미 캐시에 있는 미션에 대한 결합된 디지털 자산의 전체 사이즈 및/또는 아직 캐시에 없는 미션에 대한 결합된 디지털 자산의 전체 사이즈와 같은 팩터(factor)들을 설명할 수 있다. 이러한 방식으로 데이터를 캐싱함으로써, 그 데이터와 다른 캐싱되지 않은 데이터는 더 효율적이 된다. 적어도 '466 특허는 반복적인 모션 벡터들을 캐싱하거나, 입력 데이터로부터 모션 추정을 계산하거나, 입력 데이터를 기반으로 저장된 모션 벡터 라이브러리(motion vector library)를 업데이트하고, 따라서, 클라이언트가 서버로부터 실제 모션 벡터 데이터를 수신하기 전에 모션을 시작시키기 위해 저장된 모션 벡터 라이브러리를 사용할 수 있는 것을 개시하고 있지 않으므로, 본 발명은 '466 특허에 기술된 기술 보다 여전히 우수하다.
미국 특허 제6,903,662B2호(“'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)들)을 제공할 크로마 모션 보상 스테이지 전의 하나 이상의 스테이지들에서 크로마 캐시 로직에 의해 시작될 수 있다. 그러나, '919 특허는 본 발명에 비해 여전히 부족하다. 적어도 '919 특허는 반복적인 모션 벡터들을 캐싱하거나, 입력 데이터로부터 모션 추정을 계산하거나, 입력 데이터를 기반으로 저장된 모션 벡터 라이브러리를 업데이트하고, 따라서, 클라이언트가 서버로부터 실제 모션 벡터 데이터를 수신하기 전에 모션을 시작시키기 위해 저장된 모션 벡터 라이브러리를 사용할 수 있는 것을 개시하고 있지 않으므로, 본 발명은 '919 특허에 기술된 기술 보다 우수하다.
이러한 기술에서의 최신 기술에 대한 상기한 기술로부터 명백한 바와 같이, 이 기술 분야에서 실시간 게임 환경들의 인코딩과 관련된 현재의 컴퓨터 기술에 대한 개선이 필요하다.
따라서, 본 발명의 목적은, 클라이언트 디바이스가 사용자 입력을 모션 벡터들에 매칭시키는 데 서버로부터의 전송된 룩업 테이블들을 사용하고, 그들 모션 벡터들을 태깅하여 합산하는, 모션 보상 기술들을 통해 대기 시간을 감소시키기 위한 시스템들 및 방법들을 개시하는 데 있다. 원격 서버가 클라이언트로 인코딩된 비디오 프레임들을 전송할 때, 클라이언트는 그들 비디오 프레임들을 디코딩하고, 그들 프레임들 내의 모션을 추정하기 위해 합산된 모션 벡터들을 디코딩된 프레임들에 적용한다.
본 발명의 다른 목적은, 인코딩된 프레임들이 리지듀얼 핸들링(residual handling) 없이, 디코딩되는 시스템들 및 방법들을 개시하는 데 있다.
본 발명의 또 다른 목적은, 클라이언트가 하나 이상의 평활 함수(smoothing function)들을 큐 내의 합산된 태깅된 모션 벡터들에 적용하는, 모션 보상 기술들을 통해 대기 시간을 감소시키기 위한 시스템들 및 방법들을 개시하는 데 있다.
본 발명의 또 다른 목적은, 클라이언트 디바이스에서 모션 벡터들과 연관된 태그들은 실질적으로 시계열(chronological)인, 모션 보상 기술들을 통해 대기 시간을 감소시키기 위한 시스템들 및 방법들을 개시하는 데 있다.
본 발명의 다른 목적은, 미리 결정된 기순을 기반으로 서버에서 모션 벡터들을 생성하고, 클라이언트에 생성된 모션 벡터들과 하나 이상의 인밸리드에이터(invalidator)들을 전송함으로써, 클라이언트가 그들 모션 벡터들과 인밸리드에이터들을 캐싱하는, 입력-피드백 대기 시간을 감소시키기 위한 시스템들 및 방법들을 제공하는 데 있다. 서버는, 사용자로부터 입력을 수신하고, 그 입력을 모션 벡터들 또는 인밸리드에이터들과 매칭시키는 데 사용하도록, 클라이언트에 지시한다. 그리고, 그 비교를 기반으로, 클라이언트는 매칭된 모션 벡터들 또는 인밸리드에이터들을 그래픽 인터페이스(graphic interface)의 이펙트 모션(effect motion) 보상에 적용한다.
본 발명의 다른 목적은, 모션 벡터들을 룩업 테이블에 캐싱함으로써, 입력-피드백 대기 시간을 감소시키기 위한 시스템들 및 방법들을 제공하는 데 있다.
본 발명의 또 다른 목적은, 인밸리드에이터들을 하나 이상의 캐싱된 모션 벡터들과 연관시킴으로써, 입력-피드백 대기 시간을 감소시키기 위한 시스템들 및 방법들을 제공하는 데 있다.
본 발명의 또 다른 목적은, 입력이 하나 이상의 모션 벡터들과 연관된 캐싱된 인밸리드에이터에 매칭되면, 하나 이상의 캐싱된 모션 벡터들을 삭제하도록, 클라이언트에 지시함으로써, 입력-피드백 대기 시간을 감소시키기 위한 시스템들 및 방법들을 제공하는 데 있다.
본 발명의 다른 목적은, 클라이언트에 미리 생성된 모션 벡터 라이브러리(motion vector library)를 전송하는 서버에서, 반복적인(repetitive) 모션 벡터들을 캐싱함으로써, 대기 시간을 감소시키기 위한 시스템들 및 방법들을 개시하는 데 있다. 클라이언트는 모션 벡터 라이브러리를 저장하고, 사용자 입력 데이터를 모니터링한다. 서버는 입력 데이터로부터 모션 추정을 계산하도록 클라이언트에 지시하고, 입력 데이터를 기반으로 저장된 모션 벡터 라이브러리를 업데이트하도록 클라이언트에 지시하고, 따라서, 클라이언트는 서버로부터 실제 모션 벡터 데이터를 수신하기 전에 그래픽 인터페이스의 모션을 시작시키기 위해, 저장된 모션 벡터 라이브러리를 적용한다.
본 발명의 다른 목적은, 서버가 저장된 모션 벡터 라이브러리의 적용을 디스에이블시키기 위해 컨텍스트 업데이트(context update)를 전송하는, 반복적인 모션 벡터들을 캐싱함으로써, 대기 시간을 감소시키기 위한 시스템들 및 방법들을 개시하는 데 있다.
본 발명의 또 다른 목적은, 하나 이상의 스케일링 팩터(scaling factor)들이 모션 벡터 라이브러리에 적용되는, 반복적인 모션 벡터들을 캐싱함으로써, 대기 시간을 감소시키기 위한 시스템들 및 방법들을 개시하는 데 있다.
첨부된 도면과 관련하여 고려될 때, 후술되는 상세한 설명을 참조하여 보다 잘 이해될 수 있으므로, 본 발명의 완전한 이해 및 그에 따른 많은 이점이 쉽게 얻어질 것이다.
도 1은, 비디오 게임이 원격 클라이언트에서의 입력에 의해 제어되면서 서버에서 실행되는 원격 게임 시스템을 예시적으로 도시하는 블록도이다;
도 2는, 적절한 플레이어 입력에 대한 모션 보상을 적용함으로써 게임 스트리밍 어플리케이션들에서 입력-피드백 대기 시간의 감소를 예시적으로 설명하는 흐름도이다;
도 3은, 플레이어 입력 모션 보상을 이용하는 비디오 게임 스트리밍 환경의 런타임 동안의 예시적인 순간을 예시적으로 도시하는 블록도이다;
도 4는, 도 3의 플레이어 입력 모션 보상 동안의 예시적인 매크로블록을 예시적으로 도시하는 도면이다;
도 5는, 클라이언트에서 플레이어 입력 모션 보상 동안 모션 벡터들을 적용하기 위한 대안적인 방법을 예시적으로 도시하는 도면이다;
도 6a, 도 6b 및 도 6c는, 플레이어 입력 모션 보상 및 도 5에 도시된 대안적인 방법에 대한 블렌딩(blending)을 겪는 예시적인 매크로블록을 도시한다;
도 7은, 예측된 모션 벡터들의 런타임 생성을 도시하는 도면이다;
도 8은, 플레이어 입력 모션 보상을 목적으로 하는 예측된 모션 벡터들의 전송 및 클라이언트 측 저장을 예시적으로 도시하는 흐름도이다;
도 9는, 예측된 모션 벡터들을 무효화하는(invalidating) 예시적인 프로세스를 도시하는 도면이다;
도 10은, 모션 벡터 라이브러리를 생성하기 위한 예시적인 방법 및 캐싱 목적들을 위한 예시적인 반복적인 모션 벡터 라이브러리를 도시하는 도면이다;
도 11은, 플레이어 입력 모션 보상을 위해 모션 벡터 라이브러리들을 캐싱, 적용 및 업데이트하기 위한 프로세스를 예시적으로 도시하는 흐름도이다;
도 12는, 어떻게 모션 벡터 매핑이 업데이트될 수 있는 지를 예시적으로 도시하는 도면이다; 그리고
도 13은, 특히 캐싱된 모션 벡터들의 경우에, 플레이어 입력 모션 보상 동안 멀티-프레임 모션 벡터들을 적용하기 위한 예시적인 수정을 도시하는 도면이다.
도면에 도시된 본 발명의 바람직한 실시예들을 기술함에 있어서, 명확화를 위하여, 특정 용어에 의존될 것이다. 그러나, 본 발명은 이렇게 선택된 특정 용어로 한정되도록 의도되지 않으며, 각각의 특정 용어는 유사한 목적을 달성하기 위해 유사한 방식으로 작동하는 모든 기술적 등가물들을 포함하는 것으로 이해되어야 한다. 본 발명의 몇몇 바람직한 실시예들은 예시의 목적으로 기술되지만, 본 발명은 도면에 구체적으로 도시되지 않은 다른 형태들로 구현될 수 있는 것으로 이해되어야 한다.
특정 유형들의 플레이어 입력은 플레이어 입력 모션 보상을 위한 더 나은 후보들을 만든다. 두 개의 팩터(factor)들이 주어진 입력의 적합성(suitability)에 기여한다: 입력-피드백 대기 시간에 대한 플레이어 민감도(sensitivity) 및 상당한 아티팩트(artifact)를 도입하지 않고 플레이어 입력 모션 보상을 구현하는 어려움. 각 입력은, 적합성에 대해 평가될 필요가 있을 것이다. 예를 들어, 1 인칭 슈터 게임(shooter game)에서, 플레이어는 마우스-기반(mouse-based) 뷰 회전에 매우 민감할 것이며, 플레이어 입력과 비디오 출력 사이에서 16 ms 정도로 짧은 몇 분의 1 초의 딜레이(delay)가 인식 가능할 것이다. 그러나, 동일한 상황에서, 게임패드(gamepad) 컨트롤러-기반 뷰 회전은 일반적으로 더 느리고, 플레이어는 입력-피드백 대기 시간에 덜 민감할 수 있다. 뷰 회전은 회전의 반대 방향으로 씬(scene)을 시프트시킴으로써 비슷해질 수 있지만, 회전 방향으로 이미지의 가장자리(edge)를 따라 바람직하지 않은 아티팩트가 있을 수 있다. 스크린 상의 조준(aim)을 조절하는 것과 같은 작은 뷰 회전들에 대해, 플레이어들은 가장자리 아티팩트를 인식하지 못할 수도 있다. 다른 예시에서, 드라이빙 게임(driving game)에서 가속하는 차는 플레이어의 민감성 및/또는 대기 시간에 대한 관성(inertia)의 부족으로 인해, 플레이어 입력 모션 보성에 대해 낮은 우선 순위일 수 있으나, 스티어링(steering) 및 브레이킹(braking) 입력들은 플레이어들이 입력-피드백 대기 시간을 인식할 것이기 때문에, 높은 우선 순위일 수 있다.
플레이어 입력을 수신하는 것과 모션 출력을 디스플레이하는 것 사이의 시간이 플레이어-피드백 대기 시간이다. 모션 보상을 사용함으로써, 추정된 모션은, 플레이어 입력을 처리하도록 서버를 기다리면서, 거의 즉시 피드백을 제공할 수 있다. 이러한 방식으로, 플레이어-피드백 대기 시간은 게임 스트리밍 어플리케이션들에서 크게 감소된다. 게임 스트리밍 어플리케이션에서 플레이어 입력 모션 보상을 구현함으로써, 모션 추정은 다음의 이용 가능한 프레임에서 제공될 수 있다. 대조적으로, 입력이 서버로 이동하고, 프레임을 생성하고, 리턴하는 데 여러 프레임들이 걸린다. 또한, 플레이어 입력 모션 보상은, 게임 엔진 및 렌더러(renderer)가 몇 프레임들의 플레이어-피드백 대기 시간을 가질 수 있는 기존의 스트리밍되지 않는(non-streamed) 게임 어플리케이션들에서 일부 이점을 제공할 수 있다.
클라이언트는 스크린 주위의 객체의 이동을 추적하기 위한 적절한 컨텍스트를 갖지 않을 것이다. 플레이어 입력 모션 보상은, 특정 매크로블록들 또는 비디오 객체들의 위치를 클라이언트가 알 수 없는 경우에 적합하지 않을 것이다. 예를 들어, 2D-플랫폼 게임(platformer game)에서, 캐릭터(character)는 왼쪽에서 오른쪽으로 스크린 주위를 이동할 수 있다. 클라이언트는, 플레이어가 점프 입력(jump input)을 누를 때 캐릭터가 어디에 위치되는 지를 알지 못할 것이다; 따라서, 이러한 경우에 입력-피드백 대기 시간을 감소시키기 위해, 플레이어 입력 모션 보상만이 사용될 수 없다.
일반적으로, 플레이어 입력 모션 보상을 위한 모션 벡터들은 미리 생성되어야 한다. 플레이어 카메라 회전과 같은 모션에 대해, 모션 벡터들은, 어떻게 게임이 입력에 가중치를 부여하는 지를 기반으로, 계산될 수 있다. 특정 실시예들에서, 모션 벡터들은 입력 값에 민감도 가중치(sensitivity weight)를 곱한 것일 수 있다. 애니메이션 이동과 같은 직접 계산될 수 없는 모션에 대해, 모션이 직접 측정되어 저장될 수 있도록, 애니메이션은 디벨롭먼트(development) 동안 트리거될 수 있다. 모션 벡터들을 측정하는 것은, H.264 인코딩 동안 수행되는 동일한 모션 추정 기술들을 통해 달성될 수 있다.
도 1은, 비디오 게임이 원격 클라이언트에 의해 제어되는 예시적인 시스템을 도시하고 있다. 이 시스템에서, 서버(100)는 비디오 게임 소프트웨어(120) 및 비디오 출력을 렌더링하는 그래픽스 엔진(graphics engine)(104)을 호스팅한다(host). 비디오는 코덱(코딩 엔진 또는 인코더로도 지칭됨)(106)에서 인코딩되고, 인코딩된 비디오 데이터(108)는 원격 클라이언트로 전송된다. 서버 아키텍처(server architecture)(100)는, 그래픽스 엔진(104)과 코덱(106) 둘 다의 기능들을 지원할 수 있는 하드웨어 또는 소프트웨어의 어떤 조합일 수 있다. 주어진 예시에서, 그래픽스 엔진(104)은, 예를 들어 몇몇 컴퓨터 판독 가능 메모리(112)에 로딩된 비디오 게임 소프트웨어(120)에 의해 제어되는 GPU(110)로 구현될 수 있는 한편, 코덱(106)은 비디오 인코딩 소프트웨어를 실행하는 CPU(114)로 구현될 수 있다.
원격 클라이언트는, 전송된 인코딩된 비디오 데이터(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)되어야 한다. 일 구현에서, 클라이언트-제어 룩업 테이블은, 바람직하게는 클라이언트에 의해, 플레이어가 일시정지 입력을 선택할 때마다 전환되는, 즉 일시정지 메뉴에서의 사용을 위한 하나와 일시정지 메뉴 이외에서의 사용을 위한 하나의 두 세트들의 입력들을 가질 수 있다. 대안적인 구현에서, 서버는 클라이언트의 캐싱된 룩업 테이블의 콘텐트들을 전환할 수 있다.
클라이언트가 모션 보상을 위한 플레이어 입력을 수신할 때, 단계(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)로 합산된다. 두 벡터 필드들의 합은 필드의 각 포인트(point)에 대한 벡터들의 벡터 합이고, 두 세트들의 모션 벡터덜의 합은 이미지의 각 매크로블록에 대한 벡터 합이다. 두 벡터들의 합은 그들의 성분(component)들의 성분-단위 합으로 정의되고, 이는 {u1, u2} + {v1, v2} = {u1 + v1, u2 + v2}와 같이 표현될 수 있다. 이러한 예시에서, 태그들 “1002” 및 “1003”을 갖는 두 세트들의 모션 벡터들은 큐에 포함된다; 이러한 두 세트들의 모션 벡터들은 합산된다. 태그들은 실질적으로 시계열(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"의 입력에 대한 모션 보상을 포함하는 첫 번째 프레임이다. 또한, 이 출력된 프레임은, 클라이언트가 여전히 서버가 실제 모션 벡터들을 리턴하기를 기다리는 상관 태그 "1002"의 이전 입력에 대한 모션 추정을 포함한다. 또한, 이 출력된 프레임은, 클라이언트가 이미 모션을 추정했던 상관 태그 "1001"의 이전 입력에 대한 실제 모션 벡터들을 포함하는 첫 번째 프레임이다. 결과적으로, 세 가지의 모션 추정 상태들이 이 방법의 이 시점에 존재한다: 새로운 입력들에 대한 새로운 추정 상태; 실제 결과들을 기다리는 계속되는 추정 상태; 및 실제 결과들이 클라이언트에 도달함에 따라 중단된 다른 추정 상태.
도 4는 도 3의 플레이어 입력 모션 보상 동안의 예시적인 매크로블록을 도시하는 도면이다. 플레이어 입력 모션 보상 단계는, 현재 프레임의 매크로블록들이 이전 프레임의 어디로부터 이동된 것인 지를 결정하는 데 디코딩된 모션 벡터들이 사용되는 H.264 디코딩 동안 수행된 프로세스와 절차적으로 유사하다. 플레이어 입력 모션 보상에 대해, 적용된 모션 벡터들은, 플레이어에 출력 비디오를 디스플레이하기 전에 현재 프레임의 매크로블록들을 이동시킴으로써 플레이어 입력에 대한 미래 피드백을 추정할 것이다. 도 4a는 도 3의 단계(308)을 도시하는 예시적인 태깅된 모션 벡터들로부터의 단계(400)에서 큐 내의 두 세트들의 태깅된 모션 벡터들을 도시하고 있다. 이러한 두 세트들은 도 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의 구현과 달리, 이 구현에서, 태깅된 플레이어 입력 모션 벡터들은 한번만 적용된다. 이는, 단계(518)에 도시되는 이전 이미지는 이전의 태깅된 모션 벡터들의 합을 포함할 것이기 때문에, 태깅된 플레이어 입력 모션 벡터들이 큐 내의 모든 태깅된 모션 벡터들과 합산될 필요가 없음을 의미한다. 입력을 수신하는 것과 비디오 출력을 디스플레이하는 것 사이의 시간이 입력-피드백 대기 시간이고, 이는 서버가 출력 비디오를 리턴하기를 기다리는 대신에, 플레이어 입력 모션 보상을 사용하여 크게 감소된다.
단계(500)과 동시에, 단계들(208 및 210)에 도시된 바와 같이, 클라이언트는 서버에 대응하는 태깅된 플레이어 입력을 전송할 것이다. 도 2의 단계(220)에 도시된 바와 같이, 클라이언트는 단계(508)에 도시된 바와 같은 코딩된 비디오를 동일한 태그(510)와 함께 단계(512)의 서버로부터의 비트스트림에서 수신할 것이다. 비디오와 연관된 태그(510)는, 플레이어 입력 모션 보상에 의해 이미 추정된 실제 모션이 단계(508)에 도시된 바와 같은 인코딩된 비디오에 표현된다는 것을 의미한다. 인코딩된 비디오는, H.264 코딩 표준에 의해 정의된 바와 같이, 단계(514)의 엔트로피 디코딩(entropy decoding)을 통과한다. 단계(516)의 역 양자화(inverse quantization) 및 역 변환(inverse transformation)을 통과한다.
상술된 단락들에서 설명된 단계들(508, 510, 512, 514 및 516) 이전에 수행된 이전 플레이어 입력 모션 보상 단계는, 인코딩된 프레임으로부터의 실제 모션 벡터들이 시프트되려고 하는 매크로블록들을 이미 시프트시켰다. 따라서, 실제 모션 벡터들을 직접 적용하는 것은 잘못된 매크로블록들을 시프트시킬 것이다. 비트스트림은 두 개의 관련된 데이터 피스(piece)들을 포함할 것이다; 인코딩된 비디오 프레임 및 상관 태그. 인코딩된 프레임은 단계(514)의 엔트로피 디코딩으로 전송되는 한편, 태그는 단계(520)의 블렌딩 프로세스로 전송된다. 보상하기 위해, 단계(520)의 블렌딩 프로세스는, 매칭된 상관 태그를 가지고, 들어오는 실제 모션 벡터들과 이전에 사용된 플레이어 입력 모션 벡터들(500) 사이의 차이를 계산함으로써, 정정(correction) 모션 벡터들을 공급한다. 그 차이는, 실제 모션 벡터들에 상관 태그에 대한 역 모션 벡터를 추가함으로써, 계산될 수 있고, 도 6과 관련하여 더 상세히 설명된다. 정정 벡터들은 단계(502)의 모션 보상을 위해 디코딩된 모션 벡터들을 대신하여 사용된다. 디코딩 파이프라인(decoding pipeline)의 나머지는 단계(504)의 디블로킹 필터, 단계(506)의 다음 출력 비디오 프레임 및 단계(518)의 출력 버퍼링을 평소와 같이 계속한다. 이러한 단계들은 각 프레임마다 계속 반복될 수 있다. 일반적으로, 단계(520)의 블렌딩 프로세스는 역 양자화(단계(514)) 및 역 변환(단계(516)) 후에 발생하며, 이는 실제 모션 벡터들은 이 시점까지 이용 가능하지 않기 때문이다. 실제 모션 벡터들이 이용 가능해지면, 블렌딩 프로세스는 그들을 사용하여, 실제와 추정된 모션 벡터들 사이의 차이를 계산할 것이다.
도 6은 플레이어 입력 모션 보상 및 블렌딩을 겪는 예시적인 매크로블록을 도시하고 있다. 0 ms 시간에, 플레이어는 좌측으로 카메라 뷰를 회전시키기 위한 입력을 누른다. 룩업 테이블로부터 "PIMC"(600)로 도시된 연관된 플레이어 입력 모션 보상 모션 벡터들이 다음 프레임의 모든 매크로블록들에 적용된다. 도 6a는 우측으로 시프트되는 예시적인 매크로블록을 도시하고 있다. 플레이어 입력 모션 보상의 결과들은 다음 디코딩된 프레임에서 나타나고, 초 당 60 프레임들로 실행되는 비디오에 대해 16 ms(한 프레임의 길이)의 최대 입력-피드백 대기 시간을 야기한다. 다른 구현들에서, 최대 입력-피드백 대기 시간은 초 당 30 프레임들로 실행되는 비디오에 대해 33 ms일 수 있다. 따라서, 본 발명이 다양한 프레임레이트(framerate)들에 걸쳐 동작하여, 최대 입력-피드백 대기 시간을 한 프레임의 길이로 제한하는 것으로 고려된다. 태깅된 비디오들이 서버로부터 리턴될 때, 그것은, 도 6b에 도시된 바와 같이, 서버에 의해 인코딩된 실제 모션 벡터들(602)을 포함한다. 이러한 예시에 대해, 코딩된 비디오는 100 ms 시간에 리턴되나, 이것은 네트워크 대기 시간에 따라 크게 달라질 것이다. 실제 벡터들(602)들은, 플레이어 입력 모션 보상(600) 동안 이미 시프트된 매크로블록들을 참조하므로, 실제 벡터들(602)들은 기존의 프레임에 직접 적용될 수 없다. 대신에, 정정 벡터들(604)이, 실제 벡터들(602)과 플레이어 입력 모션 벡터들(600) 사이의 차이를 구함으로써, 계산될 필요가 있다. 그 차이는, 역 플레이어 입력 모션 벡터들을 실제 모션 벡터들에 추가함으로써, 계산될 수 있다. 이러한 벡터 차이들을 구하는 것은, 도 5의 단계(524)의 블렌딩으로 참조된다. 정정 벡터(604)가 작을수록, 플레이어 입력 모션 보상 방법이 실제 모션 벡터들을 추정하는 데 더 성공적이었다. 예시적인 매크로블록에 대한 도 6c에 도시된 결과 모션(608)은 실제 모션 벡터(602)와 동일하다. 이러한 예시는 플레이어 입력 모션 보상이 플레이어 입력에 대한 비디오 피드백을 어떻게 추정하고, 16 ms와 100 ms 사이의 시간에 대한 결과를 어떻게 보여주는 지를 도시하고 있는 반면, 수정되지 않은 시스템은 플레이어 입력이 수신된 후 116 ms 까지 플레이어-피드백을 디스플레이하지 않을 것이다.
디벨롭먼트(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) 프로세스 동안 하나의 단계로서 이 프로세스를 추가하는 것이 바람직할 수 있다. 어셋 컨디셔닝은 게임 어셋(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)에서, 플레이어 입력이 예측된 모션 벡터들을 무효화하거나, 예측된 모션 벡터들이 미리 결정된 시간 후에 만료되거나, 또는 예측된 모션 벡터들이 한번 적용된 후에 만료되면, 예측된 모션 벡터들은 룩업 테이블로부터 제거되고, 적용되지 않는다.
도 9는 예측된 모션 벡터 세트를 무효화할 수 있는 신호들의 예시적인 방법을 설명하고 있다. 무효화는, 바람직하게는 클라이언트에 캐싱된 룩업 테이블로부터 한 세트의 예측된 모션 벡터들이 제거되는, 룩업 테이블에 대한 업데이트 유형이다. 서버로부터 수신된 업데이트 이벤트들에 응답하는 것에 더하여, 업데이트 메커니즘은 플레이어 입력들을 모니터링하고, 무효화 카운트다운 타이머(countdown timer)들을 포함할 수 있다. 한 세트의 예측된 모션 벡터들가 룩업 테이블에 캐싱될 때, 그 인밸리드에이터가 업데이트 기능/메커니즘으로 등록될 수 있을 것이다. 인밸리드에이터는 룩업 테이블에 대한 무효화 업데이트를 트리거하는 어떤 데이터 신호이다. 예시적인 룩업 테이블, 단계(900)에 도시된 "룩업 테이블"은 세 세트들의 예측된 모션 벡터들을 포함한다: "예측된 도어(door) 애니메이션" 단계(902)에 도시된 예측된 도어 애니메이션, "예측된 렛지-그랩" 단계(904)에 도시된 예측된 렛지-그랩 애니메이션, 및 "예측된 킬 샷(kill shot) 애니메이션" 단계(906)에 도시된 예측된 킬 샷 애니메이션. 예측된 모션 벡터들은 한번 적용된 후에 무효화될 수 있다. 예시에서, "예측된 도어(door) 애니메이션" 단계(902)에 도시된 예측된 도어 애니메이션은, "오픈 도어 입력" 단계(908)에서 플레이어가 입력을 누를 때, 근처의 문을 열도록 적용된다. 동시에, "오픈 도어 입력" 단계(908)에서의 오픈 도어 입력은 등록이 해제되고, "예측된 도어 애니메이션" 단계(902)에 도시된 예측된 도어 애니메이션들은 "사용 후 무효화" 단계(910)에서 룩업 테이블로부터 제거될 수 있다. 이와 유사하게, 다른 입력들이, 그들이 적용되기 전에 예측된 모션 벡터들을 무효화할 수 있다. 예시에서, "예측된 렛지-그랩" 단계(904)에 도시된 렛지-그랩 애니메이션에 대한 한 세트의 예측된 모션 벡터들은 렛지로부터 제한된 거리 내에서만 유효하다.
플레이어가 (“점프 입력” 단계(914)에 도시된 점프 입력을 사용하여) 렛지를 그랩하기 위해 점프하기 전에, 플레이어가 "이동 입력” 단계(912)에 도시된 이동 입력을 사용하여 렛지로부터 멀어지면, “예측된 렛지-그랩” 단계(904)에 도시된 예측된 렛지-그랩 모션 벡터들이 “입력들에 대한 무효화” 단계(916)에서 무효화될 것이다. 무효화하는 입력들의 다른 예시들은, 플레이어가 그래플링 훅(grappling hook) 또는 예측된 모션 벡터들을 무효화하는 몇몇의 다른 이동-기반 무기를 갖고 있는 경우들, 및 플레이어가 특수 능력을 활성화시키는 버튼을 누르는 경우들일 수 있다. 무효화하는 입력들은 컨텍스트에 따라 다르므로, 다른 것들은 특정 구현을 기반으로 명백할 수 있다. 또한, 예측된 모션 벡터들은 시간이 지나면서 만료될 수 있다. 예시에서, 킬 샷 기회가 3 초의 윈도우 동안 플레이어에게 제공될 수 있다. 플레이어가 3 초 윈도우 내에서 “멜레(melee) 입력” 단계(918)에 도시된 멜레 입력을 누르지 않으면, “예측된 킬 샷 애니메이션” 단계(906)에 도시된 예측된 킬 샷 애니메이션에 대한 모션 벡터들이 “만료 타이머에 대한 무효화” 단계(920)에서 무효화될 것이다. 예측된 모션 벡터들은 복수의 인밸리드에이터들과 가질 수 있으며, 그 반대도 가능하다. 예를 들어, 예측된 렛지-그랩은, 이동 입력이 수신되거나 렛지-그랩 모션 벡터들이 사용된 후에 둘 중 빠른 것에 의해, 무효화될 수 있다.
도 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)에 대한 반복적인 모션 벡터 라이브러리의 매우 단순화된 버전이다. 이 예시는 두 개의 간단한 애니메이션들을 포함하도록 단순화된다: 단계(1008)에 도시된 플레이어가 플라즈마 라이플을 발사할 때 재생되는 피드백 애니메이션을 위한 2-프레임 애니메이션, 및 단계(1010)에 도시된 플레이어가 전방으로 걸어갈 때 발생하는 라이플의 보빙 모션(bobbing motion)을 위한 4-프레임 애니메이션. 일반적인 실제 환경(real-world environment)에서, 무기는 더 많은 애니메이션들을 가질 수 있으며, 그 애니메이션들은 네 개의 프레임들 보다 훨씬 길 수 있다.
도 11은 플레이어 입력 모션 보상을 위해 모션 벡터 라이브러리들을 캐싱, 적용 및 업데이트하기 위한 프로세스를 도시하고 있다. “시작 시, 반복적인 모션 벡터 라이브러리들 전송” 단계(1100)에서, 게임이 초기화될 때, 서버는 클라이언트에 사전 생성된 모션 벡터 라이브러리들을 전송할 것이다. “반복적인 모션 벡터들 캐싱” 단계(1102)에서, 클라이언트는 메모리에, 일반적으로 룩업 테이블의 형태로, 모션 벡터 라이브러리들을 저장한다. 이러한 구현에서, 클라이언트는 복수의 스트리밍 게임들의 요구를 제공하도록 일반화된다. 대안적인 구현에서, 게임-특정 클라이언트는, 서버로부터의 반복적인 모션 벡터들을 캐싱할 필요 없이, 모션 벡터 라이브러리들을 영구적으로 저장할 수 있다.
이 시점에서, 클라이언트는, 플레이어 입력을 모니터링하고, 들어오는 입력들을 플레이어 입력 모션 보상 룩업 테이블 내의 엔트리들과 비교하기 시작할 수 있다. “수신된 플레이어 입력 매칭” 단계(1104)에서, 들어오는 입력이 룩업 테이블 내의 매칭된 엔트리를 가질 때, “플레이어 입력 모션 보상 적용” 단계(1106)에서, 플레이어 입력과 연관된 모션 벡터들이 도 1 내지 도 10과 관련하여 예시적으로 설명된 바와 같은 모션 추정을 제공하는 데 사용된다. “캐싱된 반복적인 모션 벡터들 매핑 업데이트” 단계(1112)에서, 특정 입력을 수신하는 것이 룩업 테이블이 변경되도록 요구할 수 있는 특정 경우들이 있을 수 있다. 룩업 테이블을 변경하는 입력의 예시로는, 캐릭터 이동, 무기 발사 애니메이션들 또는 다른 재생-관련 모션들과 같은 플레이어 입력들을 디스에이블시킬 수 있는 일시정지 버튼이 있다. 모션 벡터들을 적용하고 선택적으로 룩업 테이블을 업데이트한 후에, 클라이언트는 플레이어 입력을 계속해서 모니터링할 것이다. “캐싱된 반복적인 모션 벡터 매핑 업데이트” 단계(1112)에서, 룩업 테이블이 업데이트된 후에, 들어오는 플레이어 입력은 룩업 테이블 내의 업데이트된 엔트리들과 비교될 것이다.
게임의 런타임 동안 언제든지, 플레이어에 대한 컨텍스트의 변경은 룩업 테이블이 변경되도록 요구할 수 있다. 예를 들어, 플레이어는, 이전에 보유된 무기로부터 새로운 무기로 전환되도록 캐싱된 모션 라이브러리를 요구하는 무기들을 전환할 수 있다. 예시적인 구현은 특정 게임 이벤트들을 모니터링하는 서버 측 게임을 나타낼 수 있다. 이러한 이벤트들은 게임 디벨롭먼트 동안 이 기술 분야에 알려진 방법들에 의해 구성될 것이며, 게임의 기존 메시징 또는 이벤트 시스템을 통해 전송될 수 있다. “런타임 동안, 이벤트 수신” 단계(1108)에서, 실행되는 게임 인스턴스가 이러한 이벤트들 중 하나를 수신할 때, “컨텍스트 업데이트 전송” 단계(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)로부터 전환된다. 플레이어 입력 모션 보상이 무기 전환 동안 부적절하게 발생하는 것을 방지하기 위해, 두 개의 이벤트들이 무기 전환 애니메이션이 재생되는 동안 플라즈마 라이플 모션 벡터 라이브러리(1210)를 먼저 디스에이블시키도록 동시에 사용된 다음, 무기 전환 애니메이션이 완료된 후에 두 모션 벡터 라이브러리들을 전환할 수 있다.
더 긴 멀티-프레임 모션 벡터들에 대해, 마지막 프레임의 실제 비디오가 서버로부터 수신될 때 마지막 프레임의 모션 벡터들이 적용되도록, 그들의 어플리케이션을 늘어나게 할 수 있다. 이것은, 서버가 클라이언트에 캐싱된 모션 벡터들이 부족할 때 추정된 모션을 따라 잡을 수 있게 할 것이다. 모션 벡터들에 대한 스케일링 팩터는 재생 속도 스케일(playbackSpeedScale)로 정의되며, 예시적으로 하기와 같이 계산된다.
Figure pct00001
여기서, 딜레이는 초기 플레이어 입력 이벤트와 클라이언트에서 실제 비디오를 수신하는 것 사이의 시간으로 정의된다. 이 딜레이는 네트워크를 통해 입력을 전송하는 데 걸리는 시간, 게임 로직, 렌더링 로직, GPU 렌더링 시간 및 인코딩 시간을 포함하여 서버에서 처리하는 시간, 및 플레이어에 비디오를 다시 리턴하기 위한 네트워크 시간을 포함한다. 딜레이는 어떤 게임 스트리밍 환경에서 이미 지속적으로 측정되어야 한다. 플레이어 입력 모션 보상의 바람직한 실시예는, 플레이어 입력과 실제 비디오를 연관시키기 위해, 미국 임시출원들 제62/488,256호 및 제62/634,464호에 기술된 바와 같이, 상관 태그를 사용한다. 들어오는 플레이어 입력이 서버로 전송되기 전에, 상관 태그가 고유한 식별자로서 부여된다. 비디오 프레임이 상관 태그와 함께 서버로부터 리턴될 때, 클라이언트는 고유한 식별자를 이전 입력과 매칭시킨다. 이것은, 연관된 입력에 대한 모션 추정을 중단하거나, 블렌딩 기술들을 통한 이전의 모션 추정을 취소하도록, 클라이언트에 신호를 보낸다. 애니메이션의 캐싱된 부분의 길이나 캐싱된 애니메이션 시간은, 캐싱된 애니메이션의 프레임들의 수에 각 프레임의 길이를 곱함으로써, 계산될 수 있다.
도 13에서, 10 개의 프레임들을 포함하는 예시적인 애니메이션은 10 ms의 딜레이와 함께 초 당 60 프레임들을 실행하는 게임에서 플레이어 입력 모션 보상을 위해 사용된다. 플레이어 입력이 플레이어 입력 모션 보상을 트리거할 때, 재생 속도 스케일이 하기와 같이 캐싱된 모션 벡터들에 대해 계산된다.
Figure pct00002
Figure pct00003
Figure pct00004
플레이어 입력은 0 ms 시간에 수신되었다. 모션 벡터들의 재생 비율은 계산된 재생 속도 스케일에 의해 스케일링된다(1300). 첫 번째 프레임의 모션 벡터들은 서버로부터의 비디오 스트림 내의 이용 가능한 다음 프레임에 적용된다. 스케일링된 모션 벡터 프레임들은 애니메이션 스무스(animation smooth)를 유지하기 위해 보간될 것이다. 모션 벡터 프레임들은 복수의 프레임들에 걸쳐 스케일링되기 때문에, 보간은 어떤 주어진 프레임에 적용할 모션 벡터의 “얼마나 많은”을 계산하는 데 사용될 수 있는 방법이다. 예시적인 구현은 계산된 재생 속도 스케일을 기반으로 선형 보간을 사용할 수 있다. 이 예시에 대해, 계산된 재생 속도 스케일은 0.625이며, 이는 한 세트의 모션 벡터들을 1.6 개의 디스플레이 프레임들 위로 늘릴 것이다. 보간은 얼마나 많은 모션 벡터를 주어진 프레임에 적용할 지를 계산하기 위한 방법이다. 즉, 보간은, 그 세트의 모션 벡터들이 복수의 디스플레이 프레임들 위로 늘어날 때, 얼마나 멀리 매크로블록을 모션 벡터 아래로 이동시킬 지를 계산한다. 제1 스케일링된 모션 벡터들의 일부만이 0.625의 재생 속도 스케일과 동일한, 17 ms에서 제1 디스플레이 프레임에 적용되어야 한다. 33 ms에서의 제2 디스플레이 프레임에, 제1 스케일링된 모션 벡터들의 나머지가 적용되어, 1-0.625=0.375로 계산된 다음, 제2 스케일링된 벡터들의 첫 번째 부분이 적용되어, 재생 속도 스케일에서 제1 스케일링된 모션 벡터들의 나머지 부분을 뺀 값 또는 0.625-0.375=0.25로 계산된다. 50 ms의 제3 디스플레이 프레임에서, 제2 세트의 스케일링된 모션 벡터들이 계속해서 적용되고, 매크로블록들이 모션 벡터들 아래로 다음 62.5 %로 이동된다. 67 ms의 제4 디스플레이 프레임에서, 제2 스케일링된 모션 벡터들의 나머지가 적용되어, 1-0.25-0.625=0.125로 계산되고, 제3 스케일링된 모션 벡터들의 첫 번째 부분이 적용되어, 재생 속도 스케일에서 제2 스케일링된 모션 벡터들의 나머지 부분을 ? 값, 0.625-0.125=0.5로 계산된다. 스케일링된 모션 벡터들이 적용됨에 따라, 선형 보간이 계속된다.
추정된 모션의 각 프레임을 미래 실제 비디오와 연관시키기 위해, 멀티-프레임 모션 벡터들은 캐싱된 애니메이션의 각 프레임에 대한 상관 태그를 전송할 수 있다.
딜레이는 클라이언트와 서버 사이의 네트워크 경로 및 아키텍처에 크게 좌우될 것이다. 이 예제는 100 ms 딜레이를 사용하지만, 수십에서 수백 밀리 초(milliseconds) 사이에서 변할 수 있다. 더 짧은 딜레이들이 더 나은 플레이어 경험을 제공할 것이나, 플레이어 입력 모션 보상 기술들은 특정 경우들에 높은 딜레이 시간들의 영향을 위장하는(disguise) 데 도움이 될 수 있다. 딜레이(1304) 후에, 실제 비디오(1302)가 수신된다. 에지-위치의(edge-located) 서버들 또는 소비자들과 물리적으로 가까운 서버들에 대해, 딜레이 시간들은 30 ms 만큼 낮을 수 있다. 보다 일반적인 서버 위치들에 대해, 100 ms는 더 가능성이 높다. 실제 비디오는, 스케일링되지 않기 때문에, 오리지널 애니메이션 길이(1306)를 유지한다. 실제 비디오는 플레이어 입력 모션 보상 기술들에 따라 적용된다.
클라이언트가 이전 모션 보상을 완벽하게 블렌딩할 수 없으면, H.264 코딩 표준이 어떤 시간적으로 전파되는 에러들을 정정할 수 있는 리던던트 슬라이스 특징(redundant slice feature)을 제공한다. H.264 프로파일 설정들을 기반으로, 각 슬라이스는 인트라 슬라이스(intra slice)(I-슬라이스)로 인코딩되고, 특정 주파수에서 회전 스케줄(rotating schedule)로 전송될 것이다. 인트라 슬라이스들이 모션 벡터들을 포함하지 않을 것이므로, 블렌드 모션 벡터들은 실제 모션 벡터들이 p-슬라이스들에 도달할 때에만 적용되어야 한다. 이것은, 태깅된 프레임이 서버로부터 리턴되기 전에, 블렌드 모션 벡터들이 I-슬라이스에 나타난 매크로블록들에 적용되는 것을 방지할 것이다.
전술된 설명 및 도면은 본 발명의 원리를 단지 예시하는 것으로 간주되어야 한다. 본 발명은 바람직한 실시예에 의해 제한되도록 의도되지 않고, 해당 기술 분야에서 통상의 지식을 가진 자에게 명백한 다양한 방식들로 구현될 수 있다. 본 발명의 다수의 응용들이 해당 기술 분야에서 통상의 지식을 가진 자에게 용이하게 일어날 것이다. 따라서, 개시된 특정 예시들 또는 도시되고 설명된 정확한 구성과 동작으로 본 발명을 제한하는 것은 바람직하지 않다. 오히려, 모든 적합한 수정들 및 균등물들이 본 발명의 범주 내에 속하는 것으로 의지될 수 있다.

Claims (60)

  1. 단계들을 포함하는 컴퓨터로 구현된 모션 추정의 방법에 있어서,
    단계들은,
    하나 이상의 사용자 입력들과 하나 이상의 연관된 모션 벡터(motion vector)들로 구성된 룩업 테이블을 전송하는 단계 - 상기 룩업 테이블은 상기 룩업 테이블을 캐싱하기(caching) 위한 명령어(instruction)와 함께 전송됨 -;
    플레이어 입력의 수신 시, 매칭되는 모션 벡터들에 대해 상기 룩업 테이블에 질의(query)하기 위한 명령어를 전송하는 단계;
    고유한 태그(unique tag)를 상기 룩업 테이블로부터의 상기 매칭되는 모션 벡터들과 연관시키기 위한 명령어를 전송하고, 태깅된 모션 벡터들을 큐(queue)에 추가하는 단계 -상기 태깅된 모션 벡터들은 합산됨 -;
    프레임을 고유한 식별자 태그(identifier tag)와 함께 전송하는 단계 - 상기 태그는, 상기 프레임이 상기 플레이어 입력과 연관된 모션을 포함하는 시계열 지점(chronological point)을 나타냄 -;
    서버로부터 수신된 태깅된 프레임과 연관된 태그를 갖는 상기 큐로부터 모션 벡터들을 제거하기 위한 명령어를 전송하는 단계
    를 포함하고,
    서버가 클라이언트로 인코딩된 비디오 프레임들을 전송할 때, 상기 클라이언트는,
    상기 비디오 프레임들을 디코딩하고, 비디오 출력 이전의 모션을 추정하기 위해 상기 합산된 모션 벡터들을 상기 디코딩된 프레임들에 적용하도록 지시 받는, 컴퓨터로 구현된 방법.
  2. 제1 항에 있어서,
    상기 인코딩된 비디오 프레임들은,
    리지듀얼 핸들링(residual handling) 없이, 디코딩되는, 컴퓨터로 구현된 방법.
  3. 제1 항에 있어서,
    상기 클라이언트에, 하나 이상의 평활 함수(smoothing function)들을 상기 큐 내의 상기 합산된 태깅된 모션 벡터들에 적용하도록 지시하는 단계
    를 더 포함하는, 컴퓨터로 구현된 방법.
  4. 제1 항에 있어서,
    상기 모션 벡터들과 연관된 고유한 태그들은,
    실질적으로 시계열인, 컴퓨터로 구현된 방법.
  5. 제1 항에 있어서,
    상기 합산된 태깅된 모션 벡터들은,
    대응하는 매크로블록(macroblock)과 연관된, 컴퓨터로 구현된 방법.
  6. 제1 항에 있어서,
    상기 캐싱된 룩업 테이블은,
    플레이어 입력을 기반으로 수정되도록 구성된, 컴퓨터로 구현된 방법.
  7. 제1 항에 있어서,
    상기 합산된 태깅된 모션 벡터들은,
    한번 적용되도록 구성된, 컴퓨터로 구현된 방법.
  8. 제1 항에 있어서,
    상기 합산된 태깅된 모션 벡터들은,
    임의 복잡도(complexity)의 모션을 설명하는, 컴퓨터로 구현된 방법.
  9. 제1 항에 있어서,
    상기 합산된 태깅된 모션 벡터들은,
    상기 플레이어 입력에 대한 미래(future) 피드백(feedback)을 추정하는, 컴퓨터로 구현된 방법.
  10. 제1 항에 있어서,
    상기 합산된 태깅된 모션 벡터들은,
    H.264 코딩 표준을 따르는, 컴퓨터로 구현된 방법.
  11. 모션 추정 시스테에 있어서,
    네트워크를 통해, 서버는,
    플레이어 입력의 수신 시, 매칭되는 모션 벡터들에 대해 룩업 테이블에 질의하기 위해, 클라이언트에 명령어를 전송하고;
    고유한 태그를 상기 룩업 테이블로부터의 상기 매칭되는 모션 벡터들과 연관시키기 위해, 상기 클라이언트에 명령어를 전송하고, 태깅된 모션 벡터들을 큐에 추가하고 -상기 태깅된 모션 벡터들은 합산됨 -;
    프레임을 고유한 식별자 태그와 함께 상기 클라이언트에 전송하고 - 상기 태그는, 상기 프레임이 상기 플레이어 입력과 연관된 모션을 포함하는 시계열 지점을 나타냄 -;
    상기 서버로부터 수신된 태깅된 프레임과 연관된 태그를 갖는 상기 큐로부터 모션 벡터들을 제거하기 위해, 상기 클라이언트에 명령어를 전송하고,
    상기 서버가 상기 클라이언트로 인코딩된 비디오 프레임들을 전송할 때, 상기 클라이언트는,
    상기 비디오 프레임들을 디코딩하고, 모션을 추정하기 위해 상기 합산된 모션 벡터들을 상기 디코딩된 프레임들에 적용하도록 지시 받는, 시스템.
  12. 제11 항에 있어서,
    상기 인코딩된 비디오 프레임들은,
    리지듀얼 핸들링 없이, 디코딩되는, 시스템.
  13. 제11 항에 있어서,
    상기 서버는,
    하나 이상의 평활 함수(smoothing function)들을 상기 큐 내의 상기 합산된 태깅된 모션 벡터들에 적용하도록, 상기 클라이언트에 더 지시하는, 시스템.
  14. 제11 항에 있어서,
    상기 모션 벡터들과 연관된 태그들은,
    실질적으로 시계열인, 시스템.
  15. 제11 항에 있어서,
    상기 합산된 태깅된 모션 벡터들은,
    대응하는 매크로블록과 연관된, 시스템.
  16. 제11 항에 있어서,
    상기 캐싱된 룩업 테이블은,
    플레이어 입력을 기반으로 수정되도록 구성된, 시스템.
  17. 제11 항에 있어서,
    상기 합산된 태깅된 모션 벡터들은,
    한번 적용되도록 구성된, 시스템.
  18. 제11 항에 있어서,
    상기 합산된 태깅된 모션 벡터들은,
    임의 복잡도(complexity)의 모션을 설명하는, 시스템.
  19. 제11 항에 있어서,
    상기 합산된 태깅된 모션 벡터들은,
    상기 플레이어 입력에 대한 미래 피드백을 추정하는, 시스템.
  20. 제11 항에 있어서,
    상기 합산된 태깅된 모션 벡터들은,
    H.264 코딩 표준을 따르는, 시스템.
  21. 단계들을 포함하는 모션 벡터들을 캐싱하기 위한 컴퓨터로 구현된 방법에 있어서,
    단계들은,
    서버에서 하나 이상의 모션 벡터들을 생성하는 단계 - 상기 모션 벡터들은 미리 결정된 기준을 기반으로 생성됨 -;
    클라이언트에 상기 생성된 모션 벡터들과 하나 이상의 인밸리드에이터(invalidator)들을 전송하는 단계 - 상기 생성된 모션 벡터들과 인밸리드에이터들은 상기 클라이언트에서 캐싱됨 -;
    사용자로부터 입력을 수신하기 위해, 상기 클라이언트에 명령어를 전송하는 단계 - 상기 클라이언트는 상기 입력을 캐싱된 모션 벡터들 또는 인밸리드에이터들과 매칭시키도록 구성됨 -; 및
    상기 매칭된 모션 벡터들 또는 인밸리드에이터들을 그래픽 인터페이스(graphic interface)의 이펙트 모션(effect motion) 보상에 적용하기 위해, 상기 클라이언트에 명령어를 전송하는 단계
    를 포함하는, 방법.
  22. 제21 항에 있어서,
    상기 모션 벡터들은,
    룩업 테이블에 캐싱되는, 방법.
  23. 제21 항에 있어서,
    상기 하나 이상의 인밸리드에이터들은,
    하나 이상의 캐싱된 모션 벡터들과 연관되는, 방법.
  24. 제23 항에 있어서,
    상기 하나 이상의 인밸리드에이터들은,
    상기 하나 이상의 캐싱된 모션 벡터들을 디스에이블(disable)시키도록 구성된, 방법.
  25. 제21 항에 있어서,
    입력이 하나 이상의 모션 벡터들과 연관된 캐싱된 인밸리드에이터에 매칭되면, 하나 이상의 캐싱된 모션 벡터들을 삭제하도록, 상기 클라이언트에 지시하는 단계
    를 더 포함하는, 방법.
  26. 제21 항에 있어서,
    상기 모션 벡터들은,
    고유하고 예측 가능한, 방법.
  27. 제21 항에 있어서,
    상기 모션 벡터들은,
    미리(ahead of time) 또는 런타임(runtime) 동안 생성되는, 방법.
  28. 제21 항에 있어서,
    상기 모션 벡터들은,
    상기 서버에 저장되고,
    요청 시 캐싱되도록 상기 클라이언트로 전송되는, 방법.
  29. 제21 항에 있어서,
    상기 모션 벡터들은,
    게임에서 생성된(game-generated), 방법.
  30. 제29 항에 있어서,
    상기 게임에서 생성된 모션 벡터들은,
    픽셀 당(per-pixel) 모션 벡터들로 생성되고,
    매크로블록 당(per-macorblock) 모션 벡터들로 변환되는, 방법.
  31. 모션 벡터들을 캐싱하기 위한 시스템에 있어서,
    네트워크를 통해, 서버는,
    하나 이상의 모션 벡터들을 생성하고 - 상기 모션 벡터들은 미리 결정된 기준을 기반으로 생성됨 -;
    클라이언트에 상기 생성된 모션 벡터들과 하나 이상의 인밸리드에이터들을 전송하고 - 상기 생성된 모션 벡터들과 인밸리드에이터들은 상기 클라이언트에서 캐싱됨 -;
    사용자로부터 입력을 수신하기 위해, 상기 클라이언트에 명령어를 전송하고 - 상기 클라이언트는 상기 입력을 캐싱된 모션 벡터들 또는 인밸리드에이터들과 매칭시키도록 구성됨 -;
    상기 매칭된 모션 벡터들 또는 인밸리드에이터들을 그래픽 인터페이스 내 이펙트 모션 보상에 적용하기 위해, 상기 클라이언트에 명령어를 전송하는, 시스템.
  32. 제31 항에 있어서,
    상기 모션 벡터들은,
    룩업 테이블에 캐싱되는, 시스템.
  33. 제31 항에 있어서,
    상기 하나 이상의 인밸리드에이터들은,
    하나 이상의 캐싱된 모션 벡터들과 연관되는, 시스템.
  34. 제33 항에 있어서,
    상기 하나 이상의 인밸리드에이터들은,
    상기 하나 이상의 캐싱된 모션 벡터들을 디스에이블시키도록 구성된, 시스템.
  35. 제31 항에 있어서,
    입력이 하나 이상의 모션 벡터들과 연관된 캐싱된 인밸리드에이터에 매칭되면, 하나 이상의 캐싱된 모션 벡터들을 삭제하도록, 상기 클라이언트에 지시하는 단계
    를 더 포함하는, 시스템.
  36. 제31 항에 있어서,
    상기 모션 벡터들은,
    고유하고 예측 가능한, 시스템.
  37. 제31 항에 있어서,
    상기 모션 벡터들은,
    미리 또는 런타임 동안 생성되는, 시스템.
  38. 제31 항에 있어서,
    상기 모션 벡터들은,
    상기 서버에 저장되고,
    요청 시 캐싱되도록 상기 클라이언트로 전송되는, 시스템.
  39. 제31 항에 있어서,
    상기 모션 벡터들은,
    게임에서 생성된, 시스템.
  40. 제39 항에 있어서,
    상기 게임에서 생성된 모션 벡터들은,
    픽셀 당 모션 벡터들로 생성되고,
    매크로블록 당 모션 벡터들로 변환되는, 시스템.
  41. 모션 벡터들을 캐싱하기 위한 컴퓨터로 구현된 방법에 있어서,
    서버로부터 클라이언트로 미리 생성된 모션 벡터 라이브러리(motion vector library)를 전송하는 단계 - 상기 모션 벡터 라이브러리는 상기 클라이언트에 저장되도록 구성됨 -;
    사용자로부터의 입력 데이터를 모니터링하기 위해, 상기 클라이언트에 명령어를 전송하는 단계;
    상기 입력 데이터로부터 모션 추정을 계산하기 위해, 상기 클라이언트에 명령어를 전송하는 단계; 및
    상기 입력 데이터를 기반으로 상기 저장된 모션 벡터 라이브러리를 업데이트하기 위해, 상기 클라이언트에 명령어를 전송하는 단계
    를 포함하고,
    상기 클라이언트는,
    상기 서버로부터 실제 모션 벡터 데이터를 수신하기 전에 그래픽 인터페이스의 모션을 시작시키기 위해, 상기 저장된 모션 벡터 라이브러리를 적용하도록 구성된, 컴퓨터로 구현된 방법.
  42. 제41 항에 있어서,
    상기 저장된 모션 벡터 라이브러리의 적용을 디스에이블시키기 위해, 상기 서버로부터 상기 클라이언트로 컨텍스트 업데이트(context update)를 전송하는 단계
    를 더 포함하는, 컴퓨터로 구현된 방법.
  43. 제41 항에 있어서,
    하나 이상의 스케일링 팩터(scaling factor)들을 상기 모션 벡터 라이브러리에 적용하기 위한 명령어를 전송하는 단계
    를 더 포함하는, 컴퓨터로 구현된 방법.
  44. 제3 항에 있어서,
    상기 스케일링 팩터는,
    일반 수학식:
    Figure pct00005

    을 기반으로 계산되는, 컴퓨터로 구현된 방법.
  45. 제41 항에 있어서,
    상기 생성된 모션 벡터 라이브러리는,
    복수의 모션 벡터들로 구성된, 컴퓨터로 구현된 방법.
  46. 제45 항에 있어서,
    상기 모션 벡터들은,
    게임에서 생성된, 컴퓨터로 구현된 방법.
  47. 제41 항에 있어서,
    상기 생성된 모션 벡터 라이브러리는,
    상기 클라이언트에 영구적으로 저장되도록 구성된, 컴퓨터로 구현된 방법.
  48. 제41 항에 있어서,
    상기 모션 벡터 라이브러리는,
    빌드 프로세스(build process) 동안 생성되는, 컴퓨터로 구현된 방법.
  49. 제41 항에 있어서,
    상기 생성된 모션 벡터 라이브러리는,
    상기 사용자로부터의 상기 입력 데이터와 연관된, 컴퓨터로 구현된 방법.
  50. 제41 항에 있어서,
    상기 명령어는,
    상관 태그(correlation tag)로 구성되고,
    상기 상관 태그는,
    상기 사용자로부터의 상기 입력 데이터와 연관된, 컴퓨터로 구현된 방법.
  51. 모션 벡터들을 캐싱하기 위한 시스템에 있어서,
    네트워크를 통해, 서버는,
    클라이언트로 미리 생성된 모션 벡터 라이브러리를 전송하고 - 상기 모션 벡터 라이브러리는 상기 클라이언트에 저장되도록 구성됨 -;
    사용자로부터의 입력 데이터를 모니터링하기 위해, 상기 클라이언트에 명령어를 전송하고;
    상기 입력 데이터로부터 모션 추정을 계산하기 위해, 상기 클라이언트에 명령어를 전송하고;
    상기 입력 데이터를 기반으로 상기 저장된 모션 벡터 라이브러리를 업데이트하기 위해, 상기 클라이언트에 명령어를 전송하고,
    상기 클라이언트는,
    상기 서버로부터 실제 모션 벡터 데이터를 수신하기 전에 그래픽 인터페이스의 모션을 시작시키기 위해, 상기 저장된 모션 벡터 라이브러리를 적용하도록 구성된, 시스템.
  52. 제51 항에 있어서,
    상기 저장된 모션 벡터 라이브러리의 적용을 디스에이블시키기 위해, 상기 서버로부터 상기 클라이언트로 컨텍스트 업데이트를 전송하는 단계
    를 더 포함하는, 시스템.
  53. 제51 항에 있어서,
    상기 서버는,
    하나 이상의 스케일링 팩터들을 상기 모션 벡터 라이브러리에 적용하기 위한 명령어를 더 전송하는, 시스템.
  54. 제53 항에 있어서,
    상기 스케일링 팩터는,
    일반 수학식:
    Figure pct00006

    을 기반으로 계산되는, 시스템.
  55. 제51 항에 있어서,
    상기 생성된 모션 벡터 라이브러리는,
    복수의 모션 벡터들로 구성된, 시스템.
  56. 제55 항에 있어서,
    상기 모션 벡터들은,
    게임에서 생성된, 시스템.
  57. 제51 항에 있어서,
    상기 생성된 모션 벡터 라이브러리는,
    상기 클라이언트에 영구적으로 저장되도록 구성된, 시스템.
  58. 제51 항에 있어서,
    상기 모션 벡터 라이브러리는,
    빌드 프로세스 동안 생성되는, 시스템.
  59. 제51 항에 있어서,
    상기 생성된 모션 벡터 라이브러리는,
    상기 사용자로부터의 상기 입력 데이터와 연관된, 시스템.
  60. 제51 항에 있어서,
    상기 명령어는,
    상관 태그로 구성되고,
    상기 상관 태그는,
    상기 사용자로부터의 상기 입력 데이터와 연관된, 시스템.

KR1020197033928A 2017-04-21 2018-04-20 모션 벡터들 예측에 의한 플레이어 입력 모션 보상을 위한 시스템들 및 방법들 KR102302643B1 (ko)

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

Publications (2)

Publication Number Publication Date
KR20200019855A true KR20200019855A (ko) 2020-02-25
KR102302643B1 KR102302643B1 (ko) 2021-09-14

Family

ID=63854344

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197033928A KR102302643B1 (ko) 2017-04-21 2018-04-20 모션 벡터들 예측에 의한 플레이어 입력 모션 보상을 위한 시스템들 및 방법들

Country Status (14)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023101322A1 (ko) * 2021-11-30 2023-06-08 삼성전자 주식회사 서버와 전자 장치 사이의 영상 콘텐트를 스트리밍하는 방법, 영상 콘텐트를 스트리밍하는 서버 및 전자 장치

Families Citing this family (9)

* 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 海信视像科技股份有限公司 一种视频循环播放的处理方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070087165A (ko) * 2004-12-21 2007-08-27 콸콤 인코포레이티드 클라이언트 이용 방화벽 설정
US20160227218A1 (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

Family Cites Families (119)

* 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
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
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 泽尼马克斯媒体公司 通过预期运动矢量的玩家输入运动补偿

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070087165A (ko) * 2004-12-21 2007-08-27 콸콤 인코포레이티드 클라이언트 이용 방화벽 설정
US20160227218A1 (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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023101322A1 (ko) * 2021-11-30 2023-06-08 삼성전자 주식회사 서버와 전자 장치 사이의 영상 콘텐트를 스트리밍하는 방법, 영상 콘텐트를 스트리밍하는 서버 및 전자 장치

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 (ko) 2020-12-01
AU2020203120B2 (en) 2021-10-07
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 (ko) 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
JP6984001B2 (ja) 2021-12-17
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
KR102302643B1 (ko) 모션 벡터들 예측에 의한 플레이어 입력 모션 보상을 위한 시스템들 및 방법들

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant