KR102358294B1 - 프리-인코딩된 로드 추정 기반 인코더 힌팅을 위한 시스템들 및 방법들 - Google Patents

프리-인코딩된 로드 추정 기반 인코더 힌팅을 위한 시스템들 및 방법들 Download PDF

Info

Publication number
KR102358294B1
KR102358294B1 KR1020217001990A KR20217001990A KR102358294B1 KR 102358294 B1 KR102358294 B1 KR 102358294B1 KR 1020217001990 A KR1020217001990 A KR 1020217001990A KR 20217001990 A KR20217001990 A KR 20217001990A KR 102358294 B1 KR102358294 B1 KR 102358294B1
Authority
KR
South Korea
Prior art keywords
encoder
frames
cell
frame
average
Prior art date
Application number
KR1020217001990A
Other languages
English (en)
Other versions
KR20210010668A (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 제니맥스 미디어 인크.
Priority to KR1020227001835A priority Critical patent/KR102460792B1/ko
Publication of KR20210010668A publication Critical patent/KR20210010668A/ko
Application granted granted Critical
Publication of KR102358294B1 publication Critical patent/KR102358294B1/ko

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/355Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an MPEG-stream for transmitting to a mobile phone or a thin client
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • 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/85Providing additional services to players
    • A63F13/86Watching games played by other players
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/007Transform coding, e.g. discrete cosine transform
    • H04L65/601
    • H04L65/602
    • H04L65/607
    • H04L65/608
    • 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/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/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
    • 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/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
    • H04N19/194Methods 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 involving only two passes
    • 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/196Methods 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 being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • 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/196Methods 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 being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • H04N19/197Methods 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 being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters including determination of the initial value of an encoding parameter
    • 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/196Methods 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 being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • H04N19/198Methods 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 being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters including smoothing of a sequence of encoding parameters, e.g. by averaging, by choice of the maximum, minimum or median value
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/40Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • 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/164Feedback from the receiver or from the transmission channel
    • 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

프리-인코딩된 로드 추정 기반 인코더 힌팅을 위한 시스템들 및 방법들{SYSTEMS AND METHODS FOR PRE-ENCODED LOAD ESTIMATION BASED ENCODER HINTING}
본 출원은 2017년 4월 21일 출원된 미국 임시출원 제62/488,526호, 2018년 3월 23일 출원된 미국 임시출원 제62/647,180호, 및 2018년 4월 11일에 출원된 미국 임시출원 제62/655,901호의 이익을 주장한다.
서버 측 게임이 클라이언트 측 플레이어(player)에 의해 제어되는 원격 게이밍(gaming) 어플리케이션들은 기존의 또는 맞춤화된(customized) 인코더들을 사용하여, 실시간으로 3-차원(3D) 그래픽스 엔진(graphics engine)으로부터의 비디오 출력을 인코딩하도록 시도하였다. 그러나, 비디오 게임들의 대화형 특성, 특히 비디오 출력과 플레이어 입력 사이의 플레이어 피드백 루프(player feedback loop)는 게임 비디오 스트리밍을 전통적인 비디오 스트리밍 보다 대기 시간(latency)에 훨씬 더 민감하게 만든다. 기존의 비디오 코딩 방법들은 인코딩 시간의 감소를 위해, 계산 능력(computational power)을 교환할 수 있으며, 그 밖의 다른 것은 없다. 인코딩 프로세스를 비디오 렌더링 프로세스에 통합하기 위한 새로운 방법들은 인코딩 시간의 현저한 감소를 제공할 수 있으면서, 계산 능력을 낮추고, 인코딩된 비디오의 품질을 개선하며, 기존의 하드웨어 디바이스들의 상호 운용성을 유지하기 위해 오리지널 비트스트림 데이터 형식(original bitstream data format)을 유지할 수 있다.
멀티-패스(multi-pass) 인코딩 프로세스의 첫 번째 패스(pass)에서, 데이터가 연속적인 패스들에 대한 비트레이트(bitrate) 제약 조건(constraint)에 부합하도록 효율적으로 패킹되기 전에, 인코딩의 비용(cost) 또는 각각의 인코딩된 비디오 프레임의 사이즈가 계산된다. 멀티-패스 인코딩의 이점들은 상당하며, 비트레이트 제약 조건에 대해 가능한 최상의 품질을 제공하지만, 기존의 멀티-패스 인코딩은 완전한 비디오 파일로의 액세스(access)를 요구하여, 라이브-스트리밍(live streaming) 어플리케이션들에 적합하지 않다.
일반적으로, 라이브-스트리밍 어플리케이션들은, 비디오를 미리 사용할 수 없으므로, 싱글-패스(single-pass) 인코딩을 사용한다. 라이브-스트림 인코딩에 대한 시간 제약 조건들은, 제한된 비트레이트를 위해 비디오 정보를 효율적으로 패킹하기 위한 인코더의 기능을 방해한다. 인코딩 비용들은 싱글-패스 인코딩으로 계산되지 않기 때문에, 고-엔트로피(high-entropy) 프레임들이 인코딩될 때, 네트워크 트래픽(network traffic)이 급증한다.
실시간 렌더링된 비디오는, 비디오 게임 스트리밍과 같은 라이브-스트리밍 어플리케이션에서 점점 더 많이 사용되고 있으며, 여기서 높은 품질 및 제한된 대역폭이 둘 다 가치가 높다. 렌더링된 비디오는, 기록된 비디오와 달리, 프레임을 인코딩하는 비용을 추정하는 데 재사용될 수 있는 각 프레임에 대한 추가적인 정보에의 액세스를 갖는다. 이러한 방식으로, 멀티-패스 인코딩 방식에서 첫 번째 패스의 결과는, 비트레이트 제약 조건 내에서 최고 품질의 인코딩된 비디오를 얻는 데 가까워질 수 있다. 많은 렌더링 엔진들은, 렌더링될 이미지들에 대한 부분적인 정보들을 갖고, 런타임 동안 사용될 수 있는 인코더 품질 설정(encoder quality setting)들을 사전 생성할 수 있다. 이러한 방식으로, 멀티-패스 인코딩 모드의 이점들이 라이브-스트리밍 환경에서 달성될 수 있다. 그러나, 후술되는 바와 같이, 현재의 컴퓨터 기술은, 증가된 엔트로피로 인한 트래픽 스파이크(spike)들을 보상하면서 높은 품질의 실시간 렌더링된 비디오의 렌더링을 수행하기에 충분한 정도로 인코딩 품질을 추정하는 데, 여전히 부족하다. 더욱이, 현재, 시간적으로가 아니라 공간적으로, 프리-인코딩하여, 실시간 환경에 남아 있는 동안 멀티-패스 인코딩을 복제하는, 인코딩 기술이 없다.
미국 특허 제7,844,002 B2호("'002 특허")는, 일정한 비트레이트를 얻기 위해 정보 룩-어헤드(look-ahead)를 통해 실시간 MPEG 비디오 코딩을 유발하기 위한 시스템들 및 방법들을 개시하고 있다. 시스템은 두 개의 비디오 인코더들로 구성되며, 인코더들 중 하나는 다른 인코더의 룩-어헤드 윈도우에 비해 일정 시간만큼 입력을 지연시킨다. '002특허의 시스템에서, 비디오 인코더들 중 하나가 버퍼(룩-어헤드) 디바이스로서 동작하고, 입력된 비디오 프레임들을 지연시켜서, 정보 콜렉터(collector)/프로세서(processor)로서 역할을 하는 비디오 인코더들 중 두 번째가 관련 정보를 추출하고 비디오 프레임들에 대한 인코딩 전략을 결정하는 데 필요로 되는 시간을 가질 것이다. 일단 그 전략이 결정되면, 코딩 파라미터들은 실행을 위해 인코더 디바이스로 전달된다. '002 특허의 기술은, 적어도 라이브-스트리밍 어플리케이션에서 렌더링된 비디오의 인코딩 프레임들의 비용을 계산하고, 게이밍(gaming) 어플리케이션들을 위한 라이브-스트리밍에 대해 충분히 낮은 대기 시간을 제공하고, 또는 비트레이트 제약 조건들 내에서 인코딩된 비디오를 최대화하기 위해 비디오 데이터를 사용하는 기술들을 제공하기 위한 기술들을 개시하고 있지 않기 때문에, 본 발명과 비교하여 부족하다. 또한, 본 발명은, 무한정으로 재사용될 수 있는, 비디오 데이터에 대한 인코더 설정들을 수집하고 저장하기 때문에, 우수하다.
미국 특허 공개 제US2016/0198166 A1호("'166 공보")는, 실시간 인코딩을 위한 솔류션을 제공하는 슈도(pseudo) 멀티-패스 인코딩 기술들을 위한 시스템들 및 방법들을 개시하고 있다. 개시된 시스템은, 입력된 비디오 프레임들이 픽처(picture)들의 서브 그룹(sub-group)을 형성하도록, 첫 번째 패스에서 다운-샘플링되어 인코딩되는 시스템이다. 그런 다음, 이러한 서브 그룹들은, 두 번째 패스 코딩된 프레임들의 세트를 생성하는 데 사용되는 인코딩 통계(encoding statistic)들을 생성하는 데 사용된다. '166 공보에 기술된 기술들은, 적어도 본 발명이 라이브-스트리밍 어플리케이션에서 렌더링되 비디오의 프레임들을 인코딩하기 위한 특정 비용을 계산하고, 그러한 데이터를 어떤 다운 샘플링 없이 비트레이트 제약 조건들 내에서 인코딩된 비디오를 최대화하는 데 사용하기 위한 기술들을 기재하고 있기 때문에, 본 발명 보다 못하다.
미국 특허 제9,697,280호("'280 특허")는, 정규화된 정보로부터 모바일 미디어 데이터 기록을 생성하고, 세틀먼트 배치(settlement arrangement)를 결정하기 위해 모바일 미디어 데이터를 분석하고, 세틀먼트 배치로부터의 관련 정보를 모바일 미디어 기록에 대표된 파티시펀트(participant)들 중 적어도 일부에 제공하기 위한 시스템들 및 방법들을 개시하고 있다. 시스템들 및 방법들은, 이전 인코더의 출력들이 다음 인코더의 입력들로 데이지 체인 방식으로 연결되어 인코딩된 파일이 소비하기 전에 지연을 발생시키는, 멀티-패스 인코딩을 수행할 수 있다. 동등하게 높은 품질을 달성하면서 순차적인 인코딩과 연관된 대기 시간을 감소시키기 위해, 제1 인코더가 제2 인코더의 입력으로 공급되도록, 연속적인 인코딩 스테이지(stage)들이 파이프라인으로 구성될 수 있고, 따라서, 각 인코더에서의 인코딩이 적은 시간만큼 오프셋되어, 대부분의 인코딩을 병렬로 실행하게 한다. 그리고, 총 대기 시간은 판독된 첫 번째 블록으로부터 기록된 첫 번째 블록까지의 각 인코더의 대기 시간들의 합에 근사될 수 있다. 총 대기 시간은 실시간 멀티-패스 인코딩을 보다 용이하게 할 수 있다. 그러나, 이 섹션에서 기술된 다른 기술들과 유사하게, '280 특허는, 본 발명에 개시된 바와 같은, 라이브-스트리밍 어플리케이션에서 렌더링된 비디오의 프레임들을 인코딩하는 비용을 계산하고, 그러한 데이터 비트레이트 제약 조건들 내에서 인코딩된 비디오를 최대화하는 데 사용하기 위한 기술들을 개시하고 있지 않다.
미국 특허 공개 제US20170155910A1호("'910 공보")는, 경계 아티팩트(boundary artifact)들을 도입하지 않고 미디어 콘텐트의 오디오를 별도의 콘텐트 파일들로 분할하기 위한 시스템들 및 방법들을 개시하고 있다. '910 공보는, 인코더가 오리지널 콘텐트 파일을을 소스 스트림릿(streamlet)들로 분할하고, 예컨대 TV 쇼가 끝나기를 기다리지 않고 각 해당 로(raw) 스트림릿에 대한 여러 카피들(예컨대, 스트림들)의 2-패스 인코딩을 수행하는 시스템을 개시하고 있다. 이와 같이, 웹 서버는, 스트림릿 생성 시스템이 오리지널 콘텐트 파일의 캡처(capture)를 시작한 직후에, 인터넷을 통해 스트림릿들을 스트리밍할 수 있다. 퍼블리셔(publisher)로부터 전송된 라이브-브로드캐스트(live broadcast)와 콘텐트의 가용(availability) 사이의 지연은 호스트들의 컴퓨팅 성능에 따라 다르다. 그러나, '910 공보는, 본 발명에 개시된 바와 같은, 라이브-스트리밍 어플리케이션에서 렌더링된 비디오의 프레임들을 인코딩하는 비용을 계산하고, 게이밍 어플리케이션들을 위한 라이브-스트리밍에 대해 충분히 낮은 대기 시간을 제공하고, 비디오 데이터를 비트레이트 제약 조건들 내에서 인코딩된 비디오를 최대화하는 데 사용하기 위한 기술들을 개시하고 있지 않다.
미국 특허 제9,774,848호("'848 특허")는, 디스플레이 디바이스에서의 비디오 프리젠테이션(video presentation)의 효율 및 품질을 둘 다 개선하기 위해 MPEG 표준의 비디오 인코더 콤포넌트(component)대한 향상을 위한 시스템들 및 방법들을 개시하고 있다. 개시된 기술은, 룩-어헤드 프로세싱을 통해 적응적 비트 할당을 수행함으로써 비디오 압축을 수행하는 것을 기술하고 있다. MPEG 비디오 압축에서, 주어진 개수의 비디오 프레임들(15, 30, 60 등)은 픽처들의 그룹(Group-of-Pictures)(GoP)을 형성하기 위해, 함께 그룹화된다. GoP 내의 픽처들은 I, P 또는 B 픽처들(프레임들)로 코딩된다. 각 GoP에 할당된 비트들의 수는 그에 포함된 프레임들의 수에 비례하게 이루어진다. 시스템은 적응적 비트 할당을 가능하게 하는 통계들을 수집하기 위해, 실시간 룩-어헤드를 수행한다. 또한, 변형된 3D 파이프라인 쉐이더 페이로드(3D pipeline shader payload)들은, 도메인 쉐이더(domain shader)들의 경우 복수의 패치(patch)들을 처리하고, 또는 지오메트리 쉐이더(geometry shader)들의 경우, 프리미티브 객체 인스턴스 카운트(primitive object instance count)가 1 보다 클 때 복수의 프리미티브들을 처리하며, 픽셀 쉐이더(pixel shader)들의 경우, 복수의 트라이앵글(triangle)들을 처리할 수 있다. 모션 추정 엔진은, 비디오 데이터 내의 모션의 방향이나 크기에 민감하거나 적응적인 기능들을 디코딩하고 처리하는 데 비디오를 지원하도록 그래픽스 프로세서 콤포넌트들에 의해 사용된다. 그러나, '848 특허는, 본 발명에 개시된 바와 같은, 라이브-스트리밍 어플리케이션에서 렌더링된 비디오의 프레임들을 디코딩하는 비용을 계산하고, 게이밍 어플리케이션들을 위한 라이브-스트리밍에 대해 충분히 낮은 대기 시간을 제공하고, 비디오 데이터를 비트레이트 제약 조건들 내에서 인코딩된 비디오를 최대화하는 데 사용하기 위한 기술들을 개시하고 있지 않다. 또한, '848 특허는, 최선의, 어시스트(assist)로서 작용하며, 본 발명에 개시된 바와 같은, 공간 방식으로의 프리코딩을 수행하지 않는다. 이와 같이, 본 발명과 동일한 실시간 방식으로 유리한 멀티-패스 인코딩은 복제될 수 없다.
미국 특허 제9,749,642호("'642 특허")는, 비디오 인코더가 하나 이상의 분수-샘플 [모션 벡터(motion vector)] MV 정밀도(precision)들과 정수-샘플 MV 정밀도를 포함하는 복수의 MV 정밀도들 사이에서 비디오의 유닛(unit)에 대한 MV 정밀도를 결정하는 시스템들 및 방법들을 개시하고 있다. 비디오 인코더는 분수-샘플 MV 정밀도를 갖는 MV 값들의 세트를 식별한 다음, 0의 소수 부분을 갖는 MV 값들(세트 내)의 유병률(prevalence)에 적어도 부분적으로 기초하여 유닛에 대한 MV 정밀도를 선택할 수 있다. 또는, 비디오 인코더는 레이트-왜곡 분석(rate-distortion analysis)을 수행할 수 있고, 여기서 레이트-왜곡 분석은 정수-샘플 MV 정밀도를 향해 바이어스된다(biased). 그러나, '642 특허는, 본 발명에 개시된 바와 같은, 라이브-스트리밍 어플리케이션에서 렌더링된 비디오의 프레임들을 인코딩하는 비용을 계산하고, 게이밍 어플리케이션들을 위한 라이브-스트리밍에 대해 충분히 낮은 대기 시간을 제공하고, 비디오 데이터를 비트레이트 제약 조건들 내에서 인코딩된 비디오를 최대화하는 데 사용하기 위한 기술들을 개시하고 있지 않다.
유럽 특허 제EP1820281B1호("'281 특허")는, 듀얼-패스(dual-pass) 인코딩을 위한 시스템들 및 방법들을 개시하고 있다. 개시된 방법들은 단계들: (a) 픽처를 수신하는 단계, (b) 제1 시간에 코딩된 픽처 버퍼의 제1 충만도(degree of fullness)를 계산하는 단계, (c) 제2 시간에 코딩된 픽처 버퍼의 제2 충만도를 리턴하도록, 제1 충만도에서 동작하는 단계, (d) 일정 시간 동안 픽처를 저장하는 단계, (e) 해당 시간 동안, 픽처의 제1 복잡도를 측정하는 단계, (f) 픽처에 대한 바람직한 타겟 사이즈를 리턴하도록, 픽처의 제1 복잡도 및 제2 충만도에서 동작하는 단계, 및 (g) 단계 d에 이어서, 멀티-프로세서 비디오 인코더로 픽처 및 바람직한 타겟 사이즈를 제공하는 단계를 포함하고, 제1 시간은, 코딩된 픽처 버퍼의 전확한 충만도가 계산될 수 있는 가장 최근의 시간에 해당하며, 제2 시간은 제1 시간 후에 발생한다. 그러나, '281 특허는, 본 발명에 개시된 바와 같은, 라이브-스트리밍 어플리케이션에서 렌더링된 비디오의 프레임들을 인코딩하는 비용을 계산하고, 게이밍 어플리케이션들을 위한 라이브-스트리밍에 대해 충분히 낮은 대기 시간을 제공하고, 비디오 데이터를 비트레이트 제약 조건들 내에서 인코딩된 비디오를 최대화하는 데 사용하기 위한 기술들을 개시하고 있지 않다.
일본 특허 제JP06121518B2호("'518 특허")는, 오리지널 비디오 스트림의 선택된 공간 부분을 독립형(stand-alone) 비디오 스트림으로서 인코딩하기 위한 시스템들 및 방법들을 개시하고 있으며, 그 방법은, 선택된 공간 부분에 관계된 픽처 엘리먼트 정보를 획득하는 단계; 선택된 공간 부분의 주변에 있는 상기 오리지널 비디오 스트림의 상보적(complementary) 공간 부분으로부터 도출된 인코딩 힌트들을 획득하는 단계; 및 인코딩 힌트들을 사용하여 선택된 공간 부분을 인코딩하는 단계를 포함한다. 그러나, '518 특허는, 본 발명에 개시된 바와 같은, 라이브-스트리밍 어플리케이션에서 렌더링된 비디오의 프레임들을 인코딩하는 비용을 계산하고, 게이밍 어플리케이션들을 위한 라이브-스트리밍에 대해 충분히 낮은 대기 시간을 제공하고, 비디오 데이터를 비트레이트 제약 조건들 내에서 인코딩된 비디오를 최대화하는 데 사용하기 위한 기술들을 개시하고 있지 않다.
미국 특허 공개 제2006/0230428호(“'428 공보”)는, 복수의 플레이어들이 동시에 참여하는 것을 허용하는 네트워크 비디오게임 시스템에 관한 시스템들 및 방법들을 개시하고 있다. '428 공보는, 압축 가능하고, 게임에 대한 비디오 프레임의 서브섹션들에 대응하는 프리-인코딩된 블록들을 저장할 수 있는 서버를 개시하고 있다. 또한, 시스템은, 게임 내에서 사용자 액션들에 응답하여, 프리-인코딩된 블록들을 사용하여 게임 콘텐트를 생성할 수 있다. 그런 다음, 그 콘텐트는 사용자에 전송될 수 있다. 다시 말해, 이러한 기술은 본 발명에 개시된 바와 같은 공간 방식으로 프리코딩을 수행하지 않고, 유리한 멀티-패스 인코딩을 인코딩을 실시간을 복제할 수 없다. 더욱이, '428 공보의 기술과 달리, 본 발명은, 시스템이 런타임 동안 시간적 시퀀스(예컨대, 해상도)로 프레임들의 모든 부분들에 대한 파라미터들을 변경하고, 게이밍 어플리케이션들을 위한 라이브-스트리밍에 대해 충분히 낮은 대기 시간을 제공하게, 한다.
미국 특허 제8,154,553호("'553 특허")는, 명령들을 렌더링하기 위한 차단 메커니즘, 및 렌더링 엔진의 명령들의 처리, 프리-필터링 모듈 및 비주얼 인코더를 기반으로 하는 피드-포워드 컨트롤 메커니즘을 갖는 스트리밍 게임 서버에 관한 시스템들 및 방법들을 개시하고 있다. '553 특허 기술은, 그래픽스 API를 시각적 복잡성과 씬(scene)에서 객체들의 모션을 참조하여 일련의 오브젝트-레벨 데이터를 추출하는 데 사용한다. 그 정보는 GPU 레벨에서의 렌더링 세부 사항, 비디오 프리-디코더에서의 필터링 레벨 및 비디오 인코더에서의 양자화 레벨을 제어하는 데 사용된다. 또한, 시스템은 비디오 인코더의 타겟 인코딩된 프레임 내 각 매크로블록에 대한 모션 보상 추정치를 계산한다. 본 문서에 기술된 다른 기술들과 유사하게, '553 특허에 개시된 시스템은, 본 발명에 개시된 시간 또는 공간 방식으로 프리코딩을 수행하지 않으며, 실제로 비트레이트 피크들에 응답하여 프레임들을 드롭(drop)시키기 때문에, 유리한 멀티-패스 인코딩을 실시간으로 복제할 수 없다. 더욱이, '428 공보의 기술과 달리, 본 발명은, 시스템이 게이밍 어플리케이션들을 위한 라이브-스트리밍에 대해 충분히 낮은 대기 시간을 제공하게, 한다.
이러한 기술에서의 최신 기술에 대한 상기한 기술로부터 명백한 바와 같이, 이 기술 분야에서 실시간 게임 환경들의 인코딩과 관련된 현재의 컴퓨터 기술에 대한 개선이 필요하다.
따라서, 본 발명의 목적은, 인코더에 힌트를 줌으로써 일정한 비트레이트를 유지하기 위한 시스템들 및 방법들을 개시하는 데 있다. 예시적인 실시예에서, 서버는, 프레임 인코딩에서의 변경들과 관련된 정보를 모니터링하고, 공차 경계(tolerance boundary)들, 롤링(rolling) 평균 프레임 시간 및 프레임 시간의 단기 트렌드(short-term trend)들을 계산하고, 그들 계산 값들을 프레임 시간 피크를 식별하는 데 사용한다. 그리고, 서버는, 프레임 시간 피크의 사이즈에 비례하여 프레임 출력의 품질 설정들을 변조하도록 인코더에 힌트를 준다.
본 발명의 다른 목적은, 인코더에 힌트를 줌으로써 일정한 비트레이트를 유지하기 위한 시스템들 및 방법들을 개시하는 데 있으며, 공차 경계들, 롤링 평균 프레임 시간 및 프레임 시간의 단기 트렌드들의 계산 값들은, 고-엔트로피(high-entropy) 프레임들을 식별하는 데 사용된다.
본 발명의 또 다른 목적은, 인코더에 힌트를 줌으로써 일정한 비트레이트를 유지하기 위한 시스템들 방법들을 개시하는 데 있으며, 서버는, 공차 경계들 외측의 프레임 시간에 대한 품질 스케일링 값(quality scaling value)을 계산하고, 그 계산 값을 프레임 시간 피크를 식별하는 데 사용한다.
본 발명의 또 다른 목적은 인코딩을 위한 시스템들 및 방법들을 개시하는 데 있으며, 렌더러(renderer)는, 게임 환경에서의 하나 이상의 플레이스루(playthrough)들을 기록하고, 하나 이상의 플레이스루들로부터의 복수의 프레임(frame)들을 히트맵(heatmap) 상의 복수의 셀(cell)들로 분류하고, 분류된 프레임들의 리스트를 수집한다. 그리고, 인코더는, 히트맵의 각 셀에 대한 평균 인코딩된 프레임 사이즈(average encoded frame)를 계산하기 위해, 분류된 프레임들의 리스트로부터 하나 이상의 프레임들을 인코딩하고, 각 평균 인코딩된 프레임 사이즈를 셀 당 정규화된 인코더 품질 설정과 연관시킬 수 있다. 또한, 인코더는, 각 셀의 평균 인코딩된 프레임 사이즈로부터 히트맵에 대한 평균 프레임 사이즈를 계산하고, 그들을 비디오 시퀀스를 코딩하기 위한 힌트로서 게임플레이(gameplay) 동안 사용한다.
본 발명의 다른 목적은, 인코딩을 위한 시스템들 및 방법들을 개시하는 데 있으며, 렌더러는 복수의 프레임들로 구성되는 비디오 시퀀스를 기록하고, 인코더는 비디오 시퀀스의 첫 번째 프레임에 대해 인코더 품질 설정들을 최적화하는 멀티-패스 모드에서 비디오 시퀀스를 코딩한다. 그리고, 인코더는, 인코더 품질 설정을 기록할 수 있다. 또한, 렌더러는, 인코더 품질 설정들을 비디오 시퀀스의 첫 번째 프레임으로 정규화하고, 그들을 재생 동안 비디오 시퀀스를 코딩하도록 인코더에 힌드를 주기 위해 사용할 수 있다.
본 발명의 다른 목적은 인코딩을 위한 시스템들 및 방법들을 개시하는 데 있으며, 하나 이상의 프레임들이 싱글-패스로 인코딩된다.
본 발명의 또 다른 목적은, 인코딩을 위한 시스템들 및 방법들을 개시하는 데 있으며, 하나 이상의 플레이스루들로부터 추출된 데이터는 복수의 프레임들 및 프레임들 각각과 연관된 플레이어 위치(player location)를 포함한다.
첨부된 도면과 관련하여 고려될 때, 후술되는 상세한 설명을 참조하여 보다 잘 이해될 수 있으므로, 본 발명의 완전한 이해 및 그에 따른 많은 이점이 쉽게 얻어질 것이다.
도 1은, 실시간 렌더링된 비디오가 원격 뷰어(viewer)로 라이브-스트리밍되는 예시적인 환경의 도면이다;
도 2는 로드 추정 기반 인코더 힌팅의 단계들을 개략적으로 나타내는 흐름도이다;
도 3은 프레임 시간 피크들과 프레임 시간 밸리(valley)들을 검출한 다음, 그에 따라 인코더 설정들을 변경하는 예시적인 구현의 도면이다;
도 4는 라이브-렌더러의 런타임 동안 사전 생성된 인코더 품질 설정들의 사용을 개략적으로 나타내는 예시적인 흐름도이다;
도 5는 본 발명의 일 실시예에 따라, 라이브-렌더링된 시퀀스에 대한 인코더 품질 설정들을 사전 생성하는 단계들을 개략적으로 나타내는 예시적인 흐름도이다;
도 6은 본 발명의 일 실시예에 따라, 결정된 길이의 엔진 내(in-engine) 실시간 컷씬(cutscene)에 대한 인코더 품질 설정들의 예시적인 사전 생성 동안 생성되는 데이터의 도면이다;
도 7은 본 발명의 실시예에 따라, 공간 관련 시퀀스에 대한 인코더 품질 설정들의 예시적인 사전 생성의 도면이다; 그리고
도 8은 본 발명의 실시예에 따라, 정규화된 인코더 품질 설정들이 추출될 수 있는 예시적인 히트맵이다.
도면에 도시된 본 발명의 바람직한 실시예들을 기술함에 있어서, 명확화를 위하여, 특정 용어에 의존될 것이다. 그러나, 본 발명은 이렇게 선택된 특정 용어로 한정되도록 의도되지 않으며, 각각의 특정 용어는 유사한 목적을 달성하기 위해 유사한 방식으로 작동하는 모든 기술적 등가물들을 포함하는 것으로 이해되어야 한다. 본 발명의 몇몇 바람직한 실시예들은 예시의 목적으로 기술되지만, 본 발명은 도면에 구체적으로 도시되지 않은 다른 형태들로 구현될 수 있는 것으로 이해되어야 한다.
초 당 60 프레임들로 실행되는 라이브-스트리밍 비디오 게임의 일반적인 동작 동안, 인코더는 모션 벡터들과 리지듀얼(esidual)들을 계산한다. 비디오 프레임이 새로운 비디오 정보로 인해 이전의 프레임과 크게 다를 때, 인코더에 의해 계산된 리지듀얼들은 정상 보다 클고, 네트워크 대역폭 사용량의 급증(spike)을 야기할 수 있다. 인코더는 이러한 비트레이트 스파이크(spike)들과 같은 팩터(factor)들에 응답하여 라이브-스트리밍 동안 인코더 설정들을 적응시킬 것이나, 설정들을 반응적으로만 조절할 수 있다.
비디오 프레임들이 실시간으로 렌더링되는 경우에, 인코더는 비트레이트 제약 조건에 대해 가능한 최고의 품질을 유지하기 위해, 인코딩 설정들을 우선적으로 적응시키도록 주의할 수 있다. 인코더-선택된 설정들을 무시하기 위해 설정들을 제공하는 프로세스가 힌팅(hinting)이라고 지칭된다. 렌더러는 인코딩되기 전의 프레임들에 대한 정보를 가지고 있기 때문에, 렌더러는 때때로 적절한 인코더 설정들을 선택하는 데 더 적합하며, 이에 따라 인코더에 힌트를 주어야 한다. 들어오는 프레임이 높은 엔트로피 이미지일 때, 들어오는 프레임이 이전의 프레임들과 관련이 없을 때, 또는 큰 리지듀얼들, 품질 저하들 또는 비트레이트 스파이크들을 야기할 수 있는 다른 이유들로, 렌더러는 인코더에 힌트를 줄 수 있다.
도 1은, 실시간 렌더링된 비디오가 원격 뷰어로 라이브-스트리밍되는 예시적인 환경의 도면이다. 서버(100)는 실시간 렌더링 프로세스(102)(본 문서에서 "렌더러"라고도 지칭됨) 및 스트리밍 코덱(104)(본 문서에서 "인코더"라고도 지칭됨)을 동시에 실행할 수 있는 어떤 하드웨어로 구성될 수 있다. 서버(100)는, 후술되는 바와 같이, 원격 측정(telemetry) 측정들을 수행하는 하나 이상의 원격 측정 서버(105)들을 포함하는 하나 이상의 하드웨어 디바이스들로 구성될 수 있다. 서버(100)와 원격 측정 서버(105)는 렌더링 프로세스(102)와 코덱(104)에 대해 로컬 또는 원격일 수 있다. 또한, 코덱(104)은 직접 리포팅 또는 본 기술 분야에 알려진 몇몇의 다른 모니터링 프로세스를 통해 렌더링 프로세스(102)로 인코더 품질 설정들을 다시 통신할 수 있어야 한다. 인코딩된 비디오 스트림은 클라이언트(106) 디바이스로 네트워크를 통해 전송된다. 클라이언트(106)는 비디오 스트림을 디코딩하여 디스플레이할 수 있는 어떤 하드웨어로 구성될 수 있다.
도 2는 로드 추정 기반 인코더 힌팅의 단계들을 개략적으로 나타내는 흐름도이다. "이벤트 모니터링" 단계(200)에서, 렌더러가 비디오를 생성하는 동안, 렌더링 프로세스 또는 몇몇의 다른 서버 측 프로세스는 프레임이 인코딩되는 데 필요한 방법을 변경하는 정보를 모니터링해야 한다. 이는, 이 프레임 동안 렌더러에 대해 이루어진 드로우 콜(draw call)들의 수, 프레임 내에서 제1 시간에 나타나는 픽셀들의 수를 기반으로 하는 인코딩된 리지듀얼들의 사이즈를 계산하기 위한 시도와 같은 정보, 또는 렌더링 성능을 인코더 성능과 연관시키기 위해 시도하는 몇몇의 다른 정보를 포함할 수 있다. 모니터링된 정보는 런타임 렌더링 프로세스 동안 발생하는, 어떤 메시지, 계산 결과, 성과(outcome) 또는 개별적으로 측정 가능한 값을 포함할 수 있다. 인코딩된 프레임 사이즈가 이전 프레임의 인코딩된 프레임 사이즈와 크게 다름을 나타내는 것으로, 정보가 판독될 때, 이러한 정보는 이벤트로 지칭된다.
이벤트는, 도 3에 의해 설명되는 바와 같이, 렌더러에서 시작될 수 있고, 렌더링 프로세스에서 피크 검출 모니터링의 예시적인 구현은 비정상적으로(unusually) 길거나 비정상적으로 짧은 프레임 시간들을 검출하기 위해 각 프레임의 렌더링 시간을 모니터링한다. 이러한 경우, 비정상적인 프레임 렌더링 시간은 이벤트로 간주된다.
“현재 프레임에 대한 인코더 품질 설정들 준비” 단계(202)에서, 렌더러가 이벤트를 수신할 때, 인코더에 힌트를 주기 위한 목적으로, 렌더러에서 요구되는 몇몇의 추가적인 계산들이 있을 수 있다. 이러한 계산들은 이전 단계의 이벤트 모니터링 동안 측정된 정보들을 수정하는 것을 포함할 수 있다. 또한, “각각의 인코딩된 프레임에 대한 인코더 설정들 리포팅” 단계(204)에서, 이러한 계산들은 각 프레임에서 인코더에 의해 렌더러로 리포팅되는 런타임 인코더 품질 설정들을 수정하는 것을 포함할 수 있고, 필요에 따라 이용 가능해야 한다. “준비된 인코더 설정들로 인코더에 힌팅” 단계(206)에서, 생성된 인코더 품질 설정들이 렌더러로부터 인코더로 전송된다. 렌더러는 이후의 프레임들에 대한 이벤트들을 계속해서 모니터링할 것이다.
도 3의 예시에서, 프레임이 렌더링에 비정상적으로 긴 시간이 걸리면, 렌더러는 이 프레임 시간 피크의 사이즈에 비례하여 품질 설정들을 감소시키도록 인코더에 힌트를 줄 것이다. 인코더 품질 설정 값을 준비하기 위해, 렌더러는 현재 프레임으로부터의 측정된 프레임 시간, 몇몇 개수의 이전 프레임들로부터의 측정된 프레임 시간들 및 인코더에 의해 리포팅된 런타임 인코더 품질 설정들을 사용할 것이다. 이러한 계산 값들은 도 3의 설명과 관련하여 보다 상세하게 설명된다.
또한, 서버에서 실행되는 다른 프로세스들은, 인코더 설정들에 힌트를 주기 위해 사용될 수 있는 프레임 정보로의 액세스(access)를 가질 수 있다. 예를 들어, 렌더러를 포함하는 게임 엔진은 인코더 품질 설정들을 감소시키기 위해, 게임에 의해 트리거되는(triggered) 시각적 효과들에 의해 인코딩된 비디오 대역폭에 측정된 임팩트(measured impact)를 사용할 수 있다. 주어진 시각적 효과의 추가적인 인코딩 비용에 대한 정보를 수집하기 위해, 개발자는 다양한 인코더 품질 설정들로 인코딩할 때, 효과를 적용하고, 비트레이트에서의 증가를 측정할 필요가 있다. 이러한 측정들은, 시각적 효과를 포함하는 프레임에 대한 인코딩된 프레임 사이즈가 시각적 효과를 포함하지 않는 이전 프레임과 거의 동일한 인코딩된 프레임 사이즈인 품질을 선택하는 데 사용될 수 있다. 시각적 효과를 위해 선택된 품질 설정과 디폴트(default) 품질 설정 사이의 차이를 설정들 델타(settings delta)로 지칭한다. 인코더는 선택된 품질을 사용하도록 힌트를 주거나, 측정된 설정들 델타만큼 현재 품질을 감소시키도록 힌트를 줄 수 있다. 그 결과는, 시각적 효과 이벤트를 룩업 테이블 또는 다른 타입의 인덱스된(indexed) 배열과 같은 연관된 인코더 힌트로 쉽게 변환할 수 있는 포맷(format)으로 저장되어야 한다.
도 3은 프레임 시간 피크들과 프레임 시간 밸리(valley)들을 검출한 다음, 그에 따라 인코더 설정들을 변경하는 예시적인 구현이다. 이러한 예시는, 비디오 스트림의 비트레이트에 대한 영향을 추정하기 위해, 렌더링 시간과 이미지 엔트로피 사이의 상관도를 사용한다. 프레임이 많은 새로운 시각적 정보, 즉 제1 시간 동안 프레임에 기여하는 추가적 엘리먼트들을 포함하면, 이전 프레임들과 비교할 때, 프레임을 렌더링하는 데 더 많이 시간이 걸릴 수 있다. 예를 들어, 프레임이 이전 프레임과 거의 동일한 시간으로 렌더링되면, 환경은 크게 변경되지 않았을 수 있다. 이러한 암시적 상관도(implied correlation)는 특히 1 인칭 게임/엔진에서 명확하다. 렌더링된 프레임 시간이 갑자기 길어지면, 환경 내에 무언가가 새로 도입되었음을 의미한다. 또한, 인코더는, 스크린을 덮는 갑작스러운 폭발 효과 또는 스크린의 갑작스러운 새로운 지오메트리(geometry)와 같은 어떤 새로운 비디오 정보로 어려움을 겪을 것이다. 이와 유사하게, 프레임의 많은 새로운 정보가 인코더에 의해 계산된 리지듀얼들의 사이즈를 증가시킬 것이다. 따라서, 렌더링 시간에 피크들에 대해 모니터링하는 것은, 높은-엔트로피 이미지들이 비디오 스트림의 비트레이트에 스파이크를 야기하기 전에, 높은-엔트로피 이미지들을 포함할 수 있는 프레임들을 식별할 것이다.
롤링 평균(rolling average)은, 장기 트렌드(long-term trend)들을 고려하면서, 단기 이상점(outlier)들을 식별하기 위한 신호 처리 및 통계 분석에 사용된다. 롤링 평균은, 특정 개수의 이전 데이터 포인트(point)들의 산술 평균을 구함으로써, 계산된다; 롤링 평균을 계산하는 데 사용되는 이전 데이터 포인트들의 세트는 롤링 윈도우(rolling window)로 지칭된다. 라이브-렌더링의 경우, 롤링 평균 프레임 시간으로부터 벗어난 프레임 시간들을 식별하는 것은, 높은 엔트로피 프레임들을 식별할 수 있다. 이러한 예시에서의 롤링 평균 프레임 시간(300)은 이전 롤링 윈도우에 대한 평균 프레임 시간이다. 즉, 프레임 시간들이 롤링 윈도우 내의 각 프레임에 대해 합산된 다음, 그 합은 롤링 윈도우 내의 프레임들의 수로 나뉜다. 롤링 윈도우 사이즈는, 일반적인 데이터 트렌드들을 조사하기 위해 런타임 프로파일링 동안 측정된 장기 프레임 시간 트렌드(long-term frame-time trend)들의 일반적인 빈도를 기반으로 튜닝될 수 있다. 10 개 프레임들의 롤링 윈도우 사이즈의 예에서, 평균 프레임 시간은 이전 10 개 프레임 시간들을 기반으로 계산될 것이다. 어떤 저역 통과 필터(low-pass filter)의 부작용으로, 롤링 윈도우가 너무 작으면, 피크 검출에 있어서 필요한 것 보다 많은 긍정 오류(false-positive)들이 있을 수 있다. 실제로, 더 긴 프레임 시간이 렌더러에서 빈번하게 발생하는 몇몇의 장기적인 행동 패턴으로 설명될 때, 프레임을 "예외적으로 바쁜(exceptionally busy)"으로 분류할 수 있다. 롤링 평균 프레임 시간(300)은 상한 공차(302)와 하한 공차(304)를 동반한다. 공차는, 프레임 시간에서 일반적인 단기 트렌드들을 식별하기 위해 튜닝될 수 있다. 초 당 60 프레임들로 실행되는 실시간 렌더러에 대해, ±1 ms 또는 약 6.25 %의 공차로 충분할 수 있다. 프레임 시간들은, 어떤 인코더 힌팅도 트리거하지 않고, 롤링 평균 프레임 시간의 공차 내에서 변경될 수 있다. 적절한 윈도우 사이즈와 공차 값들을 구하는 것은, 프레임 시간에서 일반적인 트렌드들을 결정하기 위해 몇몇의 런타임 프로파일링을 요구할 수 있다. 예를 들어, 초 당 100 프레임들로 실행되는 게임은 다른 프레임마다 쉐도우(shadow)들만을 업데이트하여, 10 % 보다 큰 공차를 요구할 수 있다. 반대로, 게임은, 0.5 ms에 불과한 가장 까다로운 시각적 효과로 33 ms의 매우 안정적인 프레임 시간에서 초 당 30 프레임들로 수월하게 실행될 수 있고, 공차는 1.5 %로 낮을 수 있다.
현재 프레임에 대한 프레임 시간은 롤링 평균 프레임 시간과 비교된다. 현재 프레임 시간이 공차 경계들 외측에 있으면, 품질이 인코더에서 조절된다. 인접하거나 거의 인접한 프레임들 사이의 프레임 시간에서의 일반적인 변경들(단기 트렌드들) 및 특정 윈도우들에 걸친 프레임 시간에서의 변화(예컨대, 주기적으로 반복되는 패턴들 또는 다른 장기 트렌드들)을 조사하기 위해, 공차 경계들이 프로파일링으로 지칭되는 프로세스를 사용하여, 프레임 시간들을 측정함으로써 계산될 수 있다. 그리고, 높은 엔트로피/바쁜 모먼트(moment)들 동안에는, 인코더 힌팅이 트리거될 때까지, 롤링 윈도우 사이즈 및 공차가 조절될 수 있지만, 플레이어가 주변을 돌아 다니며 환경을 탐험하는 순간들 동안에는, 그렇지 않을 수 있다. "프레임 2"(306)의 예에서와 같이, 프레임 시간이 상한 공차(302)를 초과하면, 인코딩 품질은 감소될 것이다. "프레임 5"(308)의 예에서와 같이, 프레임 시간이 하한 공차(304) 미만이면, 인코더 품질은 증가될 것이다. 특정 실시예들에서, 프레임 시간이 공차 아래로 떨어질 때마다, 인코딩 품질이 최대 용량까지 다시 증가될 수 있다. 또한, 구현에 따라, 시스템은 품질을 낮추는 데 사용되는 것과 유사한 스케일링 방법을 사용하여, 품질을 더 느리게 백업되게 스케일링하도록 선택할 수 있다.
예시적인 힌팅 방법은 상한(310)과 하한(312) 품질 설정 사이에서 품질을 스케일링할 수 있다. 예를 들어, 상한은 디폴트 품질 설정들일 수 있고, 하한은 디폴트 품질의 50 %와 같은 일부 비율일 수 있다. 프레임 시간 피크가 공차를 초과하여 떨어지면, 품질 설정들은 공차를 초과하는 프레임 시간 피크의 사이즈를 기반으로 상한과 하한 사이에서 선형적으로 스케일링된다. 프레임 시간이 공차 미만으로 떨어지면, 품질 설정들은 상한 값으로 돌아갈 수 있다.
공차 외측의 프레임 시간에 대한 품질 스케일링 값을 계산하기 위해, 프레임 시간은 먼저 예시적으로 하기 수학식 1에 따라, 롤링 평균 프레임 시간에 대해 정규화되어야 한다.
Figure 112021007763426-pat00001
정규화된 시간으로부터 1을 빼는 것은, 롤링 평균 프레임 시간으로부터의 프레임의 편차를 초래한다. 편차를 공차로 나눈 다음 1을 빼는 것은, 스케일링 값을 제공한다. 이러한 스케일링 값은 0과 1 사이로 유지되도록 고정되어야 한다; 예시적으로 하기 수학식 2에 따라, 모든 음의 스케일링 값들은 0으로 클램핑되어야(clamped) 하고, 1을 초과하는 모든 값들은 1로 클램핑되어야 한다.
Figure 112021007763426-pat00002
클램핑된 스케일링 값은 상한 품질 설정과 하한 품질 설정 사이를 보간하는(interpolate) 데 사용될 수 있다. 예시적으로 하기 수학식 3에 따라, 클램핑된 스케일링 값 0은 상한 품질을 나타내고, 클램핑된 스케일링 값 1은 하한 품질을 나타낸다.
Figure 112021007763426-pat00003
예시에서, 롤링 평균이 15 ms일 때 “프레임 2”(306)가 16 ms 걸리면, 결과적으로 클램핑된 스케일링 값은 0.025 또는 2.5 %이다. 상한 품질 값이 디폴트 품질 설정들이고 하한이 디폴트 품질의 50 %이면, 이 프레임에 대한 스케일링된 품질 설정은 디폴트 품질의 98.75 %일 것이다.
롤링 평균이 15.25 ms일 때 "프레임 5"(308)가 14.25 ms 걸리면, 프레임 시간은 공차 미만이고, 스케일링 값은 0으로 클램핑될 것이다. 스케일링된 품질 설정은 상한 품질 설정들로 설정될 것이다.
도 4의 단계(406)에 도시된 바와 같이, 집합된(aggregated) 인코더 품질 설정들 값을 힌팅을 위해 인코더에 전송하기 전에, 도 4의 단계(400)에 도시된 바와 같이, 준비 단계로부터의 준비된 인코더 품질 설정들을 결합함으로써, 복수의 인코더 힌팅 방법들이 계층화될(layered) 수 있다. 일 실시예에서, 모든 소스(source)들로부터의 기여들을 동일하게 포함하는 단일 값을 생성하기 위해, 준비된 인코더 품질 설정들의 산술 평균이 구해질 수 있다. 다른 실시예에서, 가중(weighted) 산술 평균이 인코더 힌팅을 위한 인코더 품질 설정 값에 기여할 수 있는 각 소스에 가중치를 할당함으로써 계산될 수 있다. 할당된 가중치들은 하나의 기여하는 소스를 다른 것 보다 더 강하게 평가하는 데 사용될 수 있다. 예를 들어, 프레임 타임 피크 이벤트로부터의 기여들은 단일 시각 효과 이벤트로부터의 기여들과 비교할 때 인코딩된 비트레이트에서의 변경들에 대해 더 강한 상관도를 가질 수 있으므로, 프레임 타임 피크 이벤트로부터의 기여들을 더 높게 평가하는 것이 바람직할 수 있다. 가중 산술 평균은, 예시적으로 하기 수학식 4에 따라, 표준 정의를 사용하여 계산될 수 있으며, 여기서 i=1은 n 개의 품질 설정들의 세트에서 첫 번째 숫자를 나타낸다. 수학적 세트들의 인덱스들은, 0에서 시작하는 프로그래밍 인덱스들과 다르게, 1에서 시작한다.
Figure 112021007763426-pat00004
도 4는 라이브-렌더러의 런타임 동안 사전 생성된 인코더 품질 설정들의 사용을 개략적으로 나타내는 예시적인 흐름도이다. "게임 시퀀스들 모니터링" 단계(400)에서, 렌더러는 한 세트의 사전 생성된 인코더 품질 설정들의 세트를 갖는 시퀀스들을 모니터링해야 한다. 이러한 시퀀스들은, 엔진 내 실시간 컷씬들과 같은 프레임들의 시간적으로 예측 가능한 시퀀스들 또는 플레이어의 위치가 알려졌을 때 런타임 동안 시계열로 변환될 수 있는 공간적으로 예측 가능한 시퀀스들을 포함할 수 있다. 시간적으로 예측 가능한 시퀀스들은, 모든 프레임이 인접한 이웃과 몇몇의 알려진 관계를 갖는 프레임들의 시퀀스들이다. 즉, 프레임들의 시퀀스는, 일정한 길이, 일정한 순서의 것이면, 시간적으로 예측 가능하고, 어떤 두 개의 인접한 프레임들은 픽셀 데이터 및 모션 데이터에서 일관된 관계를 갖는다. 공간적으로 예측 가능한 시퀀스들은, 렌더러의 런타임 동안 가상 공간이 트래버스될(traversed) 때 구성되는 시간적 시퀀스에 대해 추론들을 만드는 데 사용될 수 있는 두 개의 인접한 가상 위치들 사이의 몇몇의 관계를 제공한다. 즉, 가상 카메라가 두 개의 가상 위치들 사이에서 이동할 때 가상 공간에서의 두 개의 위치들이 시간적으로 예측 가능한 시퀀스를 생성하는 경우, 가상 공간에서의 두 개의 위치들은 공간적으로 관련된다. 예를 들어, 비디오 게임에서, 두 개의 위치들 사이에서의 이동이 픽셀 데이터 및 모션 데이터가 어느 정도 일치하는 비디오를 생성하는 경우, 두 개의 인접한 위치들은 시간적으로 관련된다. 이는 일반적으로, 플레이어를 둘러싸는 환경과 배경은 일반적으로 플레이어가 레벨을 통과할 때 고정된 위치들에서 렌더링되므로, 비디오 게임에서 대부분의 3D 레벨들에 해당된다.
인코더 품질 설정들의 사전 생성은 도 5과 관련하여 보다 상세하게 설명된다. 사전 생성된 인코더 품질 설정들은 룩업 테이블이나 히트맵과 같은 런타임 판독 가능 포맷으로 서버의 디스크(disk)에 저장된다. “게임 시퀀스에 대한 사전 생성된 인코더 설정들 찾기” 단계(602)에서, 시퀀스의 시작이 검출될 때, 검출된 게임 시퀀스에 대한 사전 생성된 인코더 품질 설정들이 판독되고 준비된다. 인코더 품질 설정들이 저장 전에 정규화된 경우, 인코더 품질 설정들이 준비될 필요가 있을 수 있다. 준비는 정규화된 인코더 품질 설정들에 런타임 인코더 품질 설정, 타겟(target) 인코더 품질 설정 또는 몇몇의 다른 소스로부터의 인코더 품질 설정을 곱하는 것으로 포함할 수 있다. 특정 실시예들에서, 이벤트의 검출은, 시퀀스들 각각에 대한 사전 생성된 인코더 품질 설정들일 수 있다. 다른 실시예들에서, 각각의 컷씬이 설정들이 존재하는 시퀀스들의 리스트에 있는 지의 여부를 결정하기 시작할 때, 런타임에서 체크(check)가 수행될 수 있다. 사전 생성된 인코더 품질 설정들이 저장 전에 정규화되었으면, 인코더 품질 설정들을 준비하기 위해 곱셈 단계가 있을 것이다. 도 6과 관련하여 설명된 예시에서, 인코더 품질 설정들은 엔진 내 실시간 컷씬에서 프레임에 대해 생성되고 시퀀스의 첫 번째 프레임으로 정규화된다. 이와 같은 정규화된 시간-시리즈(time series)의 경우, 정규화된 값에 시퀀스의 첫 번째 프레임에 대한 런타임 인코더 품질 설정을 곱하는 것에 의해, 인코더 품질 설정들이 준비될 필요가 있을 것이다. “각각의 인코딩된 프레임에 대한 인코더 설정들 리포팅” 단계(604)에서, 인코더 품질 설정들은 각 프레임에서 인코더에 의해 리포팅되고, 필요에 따라 이용 가능해야 한다. 도 7과 관련하여 설명된 예시에서, 인코더 품질 설정들은 맵(map)의 각 위치에 대해 생성되고, 전체 맵의 평균 인코더 품질 설정으로 정규화된다. 이와 같은 정규화된 공간-시리즈(spatial series)의 경우, 정규화된 값들에 시퀀스의 첫 번째 프레임에 대한 런타임 인코더 품질 설정을 곱하는 것에 의해, 인코더 품질 설정들이 준비될 필요가 있을 것이다.
"사전 생성된 인코더 설정들로 인코더에 힌트 주기" 단계(606)에서, 인코더 품질 설정들은 시퀀스의 각 프레임에 대해 인코더로 전송될 것이다. 인코더는, 다음 프레임을 인코딩하기 위해, 렌더러로부터 전송된 인코더 품질 설정들을 사용할 것이다. 렌더러는, 시퀀스가 완료될 때까지, 사전 생성된 인코더 품질 설정들을 준비하고, 각 프레임에서 인코더에 힌트를 주는 것을 계속할 것이다. 시퀀스가 종료될 때, 렌더러는 다음 시퀀스를 계속해서 모니터링할 것이다. 도 6과 관련하여 설명된 엔진 내 실시간 컷신 예시에 대해, 인코더는, 컷씬이 종료될 때까지, 컷씬의 각 프레임에 대해 힌트를 받을 것이다. 도 5와 관련하여 설명된 예시적인 히트맵 방법에 대해, 인코더는, 플레이어가 히트맵에 의해 정의된 영역의 경계들 내에 있는 전체 지속 시간 동안, 힌트를 받을 것이다.
도 5는 라이브-렌더링된 시퀀스에 대한 인코더 품질 설정들을 사전 생성하는 단계들을 개략적으로 나타내는 흐름도이다. 인코더 품질 설정들은, 예측 가능하고 측정 가능한 시간적 또는 공간적 콤포넌트(component)를 갖는 어떤 시퀀스에 대해 사전 생성될 수 있다. 시퀀스는, 플레이어 캐릭터(player character)에 의해 현재 착용되고 있는 아머(armor)를 렌터링할 엔진 내 실시간 컷씬 또는 이벤트들이 진행되는 동안 플레이어들이 움직이거나 둘러볼 수 있도록 허용하는 월드 내(in-world) 컷씬과 같은, 예측할 수 없는 부분들을 가질 수 있다. 엔진 내 실시간 컷씬들과 같은 시간-시리즈에서의 인접-프레임(adjacent-frame) 관계들 또는 비디오 게임 레벨들에서 트래버스 가능한 영역들과 같은 프레임 시퀀스들을 생성하도록 런타임 동안 사용될 가상 공간들에서의 인접-위치 관계들을 찾음으로써, 예측 가능한 부분들을 갖는 시컨스가 식별되어야 한다. "시퀀스 선택" 단계(500)에서, 그러한 시퀀스가 식별되어야 한다.
"시퀀스에 대한 인코더 설정들 생성" 단계(502)에서, 인코더에서, 인코더 품질 설정들은, 일정한 비트레이트를 유지하는 것을 목표로, 시퀀스에 대해 생성되어야 한다. 엔진 내 실시간 컷씬 인코더 품질 설정들은, 컷씬의 비디오를 기록하고 멀티-패스 인코딩 모드로 비디오를 인코딩함으로써, 계산될 수 있다. 멀티-패스 인코딩은 첫 번째 프레임을 인코딩하고, 인코딩된 첫 번째 프레임의 사이즈를 모든 후속 프레임들을 제한하는 데 사용한다. 각 프레임이 인코딩될 때, 인코딩된 사이즈는, 첫 번째 프레임의 인코딩된 사이즈와 비교되고, 품질 설정들은, 인코딩된 프레임 사이즈들이 사이즈에 가까워질 때까지, 현재 프레임에 대해 조절된다. 특정 실시예들에서, 프레임들의 시퀀스는 멀티-패스 인코딩 모드에서 고정된 수의 패스들로 인코딩될 수 있다. 다른 실시예들에서, 시퀀스는, 프레임 당 사이즈들이 값에 정착하여, 최종 인코딩 패스와 최종으로부터 두 번째의 인코딩 패스 사이에서 변경되지 않을 때까지 멀티-패스 인코딩 모드에서 연속적인 패스들을 통해 공급될 수 있다. 인코더 품질 설정들은, 결과의 인코딩된 비디오로부터 생성되거나 추출될 때, 기록될 수 있다. 생성된 인코더 품질 설정들은 주어진 시퀀스 동안 대역폭의 균형을 유지하기 위해 런타임 동안 사용될 것이고, 이로 인해 비트레이트 피크들 및 딥(dip)들을 방지할 것이다. 프리-렌더링된 컷씬의 비디오를 프리-인코딩하여 재생을 위해 저장하는 것과 달리, 이러한 방식으로 인코더 품질 설정들을 생성하는 것은, 사전 생성된 품질 설정들에 의해 제공된 대역폭 균등화(equalization)의 이점을 여전히 누리면서, 엔진 내 실시간 컷씬들이 맞춤형 플레이어 아머(armor), 무기(weapon)들 또는 다른 코스메틱 아이템(consmetic item)들과 같은 컨텍스트 기반 콘텐트를 포함하도록 허용할 것이다.
유사한 프로세스가 공간 관련 시퀀스에 대한 인코더 설정들을 생성하기 위해, 수 차례 반복될 수 있다. 프로세스는 도 7과 관련하여 설명된 예시적인 데이터 플로우에 의해 보다 상세하게 설명된다.
엔진 내 실시간 컷씬에 대해, 각 프레임에 대한 인코더 품질 설정들은, 시퀀스 내 첫 번째 프레임의 인코더 품질 설정 값에 의해 나뉨으로써, 정규화되어야 한다. 이는, 플레이어 아머 또는 코스메틱 아이템들과 같은 시퀀스의 동적 엘리먼트들이 런타임에서 준비된 최종 인코더 품질 설정들에 나타나게 한다. 히트맵으로 저장될 공간 관련 시퀀스들에 대해, 각 인코더 품질 설정은, 각 인코더 품질 설정을 맵-와이드(map-wide) 평균 인코더 품질 설정으로 나눔으로써, 히트맵으로 정의된 전체 영역에 걸쳐 평균 인코더 품질 설정으로 정규화되어야 한다. 예시적인 히트맵이 도 8에 도시되어 있다. “시퀀스의 각 프레임에 대한 인코더 품질 설정들 정규화 및 저장” 단계(504)에서, 렌더링 프로세스에서 생성된 정규화된 인코더 값들은, 각 프레임에 대한 인코더 품질 설정들의 리스트 또는 맵의 각 위치에 대해 인코더 품질 설정을 정의하는 히트맵과 같은 적절한 런타임 판독 가능 포맷으로 구조화되어, 저장된다.
도 6은 결정된 길이의 엔진 내(in-engine) 실시간 컷씬(cutscene)에 대한 인코더 품질 설정들의 예시적인 사전 생성 동안 데이터가 어떻게 생성되는 지를 도시하고 있다. 프리-렌더링된 컷씬들과 같은 엔진 내 실시간 컷씬은 다른 라이브-렌더링된 비디오 출력을 생성하는 데 사용되는 동일한 렌더링 엔진을 사용하여 런타임 동안 생성된다. 또한, 엔진 내 실시간 컷씬은, 플레이어에 의해 착용된 코스메틱 아이템들, 플레이어의 그룹 내 비-플레이어(non-player) 캐릭터들과 같은 게임 상태 또는 플레이어 선택에 의해 제어되는 다른 게임 상태에 대한 상황(contextual) 정보를 포함할 수 있다. 엔진 내 실시간 컷씬들은 프리-렌더링된 컷씬들 보다 품질이 낮았지만, 라이브-렌더링된 시각적 충실도가 프리-렌더링된 시각적 충실도에 가까워짐에 따라, 엔진 내 실시간 컷씬들이 더 일반화되고 있다. 또한, 게임 디스크가 프리-렌더링된 컷씬의 다양한 버전들을 포함하지 않도록, 언어 옵션들, 해상도 옵션들 및 캐릭터 ?춤형 옵션들과 같은 여러 옵션들이 컷씬의 비디오 출력에 영향을 줄 수 있는 엔진 내 실시간 컷씬들이 일반적으로 사용된다.
이러한 예시에서, 초당 60 프레임들로 실행되는 게임을 위해 거의 8 초 길이의 480 프레임들 길이의 엔진 내 실시간 컷씬이 선택된다. 이러한 컷씬은 모든 플레이어들을 위한 동일한 일련의 이벤트들을 재생할 것이다. 컷씬 비디오는 렌더러에서 기록되어, 기록된 시퀀스(600)에 일련의 480 프레임들을 생성한다. 기록된 시퀀스(600)는 멀티-패스 인코딩 모드를 사용하여 인코딩된다. 기록된 시퀀스의 각 프레임을 인코딩하는 동안, 멀티-패스 인코딩 프로세스는, 인코딩된 프레임 사이즈가 첫 번째 프레임의 인코딩된 사이즈와 가까워지도록, 인코더 품질 설정들을 변경할 것이다. 시퀀스의 첫 번째 프레임은, 전체의 인코딩된 시퀀스에 걸쳐 일정한 비트레이트를 보장하기 위해, 프레임 사이즈 레퍼런스(reference)로 사용된다.
멀티-패스 인코더 품질 설정들(602)은 인코더에서의 인코딩 프로세스 동안 기록되거나, 인코더에 의해 생성되는 인코딩된 결과들로부터 추출된다. 인코더 품질 설정들은 순서화된 플로트(float)들의 리스트이다. 플로트 당 4 바이트들에서, 전체의 순서화된 플로트들의 리스트는 1,920 바이트들의 데이터만을 소비한다. 작은 파일 사이즈는, 라이브-렌더러가 런타임 동안 메모리에 사전 생성된 인코더 설정들의 많은 세트들을 저장하도록 허용하고, 메모리 제약 조건으로 실행하지 않고도 모든 게임 시퀀스에 대해 본 문서에 설명된 프로세스를 수행하는 것의 유리한 결과를 야기할 수 있다.
렌더러에서, 인코더 품질 설정들은 예시적으로 하기 수학식 5에 따라 첫 번째 프레임으로 정규화된다.
Figure 112021007763426-pat00005
정규화된 인코더 품질 설정들(604)은, 바람직하게는 인코더에서, 순서화된 플로트들의 리스트로 저장된다.
컷씬이 런타임 동안 플레이를 시작할 때, 순서화된 정규화된 품질 설정들(604)의 리스트가 판독된다. 정규화된 품질 설정들은, 인코더에 의해 렌더링 엔진에 리포팅된 바와 같이 시퀀스의 첫 번째 프레임에 대해 런타임 인코더 품질 설정에 곱해진 다음, 컷씬의 각 후속 프레임에 대해 인코더에 힌트를 주는 데 사용된다. 특정 실시예들에서, 일정 비율 팩터(constant rate factor)(CRF) 모드에서 실행되는 H.264 표준 호환 라이브러리 ffmpeg-crf 스위치를 사용하여 명령 라인(command line)의 오버라이드(override) 양자화 파라미터 값을 수용할 것이다.
인코더 품질 설정들을 정규화하는 것은, 사전 생성된 인코더 품질 설정들이 복수의 다른 컨텍스트들에서 컷씬의 런타임 재생 동안 사용되도록 허용한다. 예를 들어, 정규화된 인코더 설정들(604)을 시퀀스의 첫 번째 프레임에 대해 인코더에 의해 리포팅된 런타임 인코더 품질 설정에 곱하는 것은, 플레이어가 착용하기 위해 선택한 맞춤 가능 플레이어 아머와 관계 없이 전체 컷씬을 대해 일정한 비트레이트를 생성한다. 이와 유사하게, 방법은, 엔진 내 실시간 컷씬이 재생되는, 스크린 해상도와 같은, 다른 렌더링 설정들을 설명한다.
도 7은 플레이어가 비디오 게임의 가상 공간을 통과할 때 런타임에서 생성된 시퀀스와 같은 공간 관련 시퀀스에 대한 인코더 품질 설정들의 예시적인 사전 생성의 도면이다. 비디오 게임에서 플레이어 위치는, 플레이어의 뷰가 인코딩된 비디오 스트림의 비트레이트에 불균형적으로 큰 영향을 주기 때문에, 일반적으로 출력되는 비디오의 이미지 엔트로피와 상관 관계가 있다. 이러한 상관도는, 열린(open) 영역들에서 캡처된 비디오와 좁은(tight) 영역들에서 캡처된 비디오 사이에서 인코딩된 비디오 비트레이트를 비교할 때, 가장 명확하다. 실외 영역들과 같은 열린 영역들은 높은 평균 비트레이트로 비디오를 생성하는 반면, 복도들과 같은 좁은 영역들은 낮는 평균 비트레이트로 비디오를 생성한다. 이러한 관계는, 실외 영역들은 식물의 앰비언트 애니메이션(ambient animation)과 같은 경쟁 모션이 많은 불균일하고 광대한 영역들인 경향이 있는 반면, 실내 영역들은 응집력이 있는 모션 벡터들과 작은 리지듀얼(residual)들을 생성하는 정적인 구성의 지오메트리로 구성되는 경향이 있기 때문에, 발생한다.
맵은 그리드(grid)에 의해 분할될 수 있고, 인코더 품질 설정은 도 5에 도시된 바와 같이, 정규화된 인코더 품질 설정들의 히트맵을 형성하도록 맵의 각 셀에 대해 사전 생성될 수 있다. 주어진 플레이어 위치에 대한 일반적인 인코딩된 비디오 비트레이트는, 복수의 실제 플레이스루(playthrough)들을 사용하여, 또는 절차적으로 생성된 플레이스루들을 통해, 기록될 수 있다. 실제 플레이어들은 예측할 수 없으므로, 플레이어들이 가상 공간을 통과하는 방식들을 정확하게 캡처하는 플레이스루들을 절차적으로 생성하는 것은 불가능하다. 절차적 플레이스루들은, 전체 맵의 커버리지를 빠르게 생성하기 위해 어떤 예측되는 통과-경로들에 대해 생성될 수 있으나, 실제 플레이어들에 의해 발견될 수 있는 어떤 예측되지 않는 통과-경로들을 놓칠 수 있다. 각 접근은 단점들을 가질 것이다: 실제 원격 측정을 추적하는 것은 상당힌 많은 시간이 걸리지만, 절차적으로 생성된 데이터는 실제 플레이 경험들을 정확하게 반영하지 않을 수 있다. 특정 실시예들에서, 두 기록들의 결합이 보다 정확한 히트맵을 제공하는 데 사용될 수 있다.
기록된 비디오는 도 6의 기록된 시퀀스(600)로 나타낸 바와 같은 비디오 프레임들을 포함해야 할 뿐 아니라 각 프레임에 대한 플레이어 위치를 설정할 것이다. 플레이어 위치는 3D 공간 내에 있거나, 톱다운(top-down) 맵으로 표현되는 바와 같은 수평 2D 평면으로 단순화될 수 있다. 두 개의 예시적인 기록된 플레이스루들, 즉 단계(700)에서 “제1 기록된 플레이스루”로 나타낸 제1 기록된 플레이스루 및 단계(702)에서 “제2 기록된 플레이스루”로 나타내는 제2 기록된 플레이스루의 부분들이 도 7과 관련하여 설명된 예시적인 방법에 도시되어 있다. 비디오 프레임들은 플레이어 위치들을 따라 캡처된다. 캡처된 플레이스루의 각 비디오 프레임은 위치에 의해 적절한 셀로 분류된다. 이러한 예시에서, 제1 기록된 플레이스루로부터의 프레임 4는 단계(700)의 “제1 기록된 플레이스루”에 표현되고, 제2 기록된 플레이스루로부터의 프레임2는 단계(702)의 “제2 기록된 플레이스루”에 표현된다. “히트맵” 단계(704)에서, 둘 다 단계(706)에서 “셀 B6”에 셀 B6로 분류된다. 이러한 예시적인 셀이 상당히 크기 때문에, 도 8에 도시된 예시적인 히트맵은 더 큰 해상도에 위해 훨씬 더 작은 셀들을 갖는 히트맵을 나타낸다.
절차적으로 생성된 플레이스루와 실제 플레이스루는 둘 다 렌더러에서 생성되어 기록될 수 있다. 결과의 플레이스루 기록들은 중앙의 렌더러 위치에서 수집될 수 있다. 복수의 플레이스루들이 수집될 때, 히트맵의 각 셀은 셀 내 위치에 기록된 복수의 프레임들을 가질 수 있다. 원격 측정 서버(105)는 이러한 데이터를 수집하기 위해, 디벨롭먼트(develop) 동안 사용될 수 있다. 그리고, 렌더링/게임 엔진은 원격 측정을 생성하고, 중앙 위치로 그것을 전송할 수 있다. 원격 측정 서버(105)는 렌더러에 대해 로컬 또는 원격일 수 있다. 또한, 생성된 원격 측정은 로컬 렌더링 머신으로부터 생성된 원격 측정 파일들을 수동으로 수집함으로써 수동으로 수집되어, 중앙 저장소로 전송될 수 있다. 도 7의 예시는 “셀 B6 프레임들” 단계(708)에서 셀 B6에 속하는 프레임들의 리스트의 시작을 나타내고 있다. 이러한 공간 관련 프레임들의 리스트는, 더 많은 플레이스루 기록들이 수집되거나 생성될수록 커질 것이다.
셀에 속하는 프레임들의 수집은 “타겟 품질 인코딩” 단계(710)에 도시된 타겟 인코더 품질 설정으로 라이브-스트리밍 동안 사용되는 싱글-패스 인코딩 모드를 사용하여 인코딩될 수 있다. 인코딩된 프레임 사이즈는 셀에 속하는 각 프레임에 대해 생성될 것이다. 도 7의 예시는, “셀 B6 프레임들에 대한 인코딩된 프레임 사이즈” 단계(712)에 도시된 셀 B6에 속하는 인코딩된 프레임 사이즈들의 리스트의 시작을 나타내고 있다. 이러한 인코딩된 프레임 사이즈들은, 셀에 대한 평균 인코딩된 프레임 사이즈를 구하기 위해 평균화될 수 있다. 도 7의 예시는, 단계(714)에 도시된 “셀 B6에 대한 평균 인코딩된 프레임 사이즈”에서 셀 B6에 속하는 평균 인코딩된 프레임 사이즈를 나타내고 있다. 각 셀에 대한 평균 인코딩된 프레임 사이즈를 구하기 위해, 히트맵의 모든 셀들에 대해, 프로세스가 반복되어야 한다. 평균 인코딩된 프레임 사이즈들은, 히트맵의 모든 셀에 대한 평균 프레임 사이즈들의 리스트의 표현으로서, 단계(714)에 나타낸 “셀 B6에 대한 평균 인코딩된 프레임 사이즈”에서 셀 B6에 대해 표현되고, 단계(716)에 나타낸 “셀 B7에 대한 평균 인코딩된 프레임 사이즈”에서 셀 B7에 대해 표현된다.
각 셀에 대한 모든 평균 프레임 사이즈들은, 단계(718)에 나타낸 "모든 셀들에 대한 평균 인코딩된 프레임 사이즈"에서 맵-와이드 평균 프레임 사이즈를 구하기 위해, 평균화되어야 한다. 이러한 맵-와이드 평균 프레임 사이즈는 타겟 대역폭으로서 사용될 수 있다. 맵-와이드 평균 보다 큰 평균 인코딩된 프레임 사이즈들을 갖는 셀들은, 평균 셀 프레임 사이즈가 맵-와이드 평균과 거의 동일해질 때까지, 더 낮은 인코더 품질 설정으로 다시 인코딩될 것이다. 이와 유사하게, 맵-와이드 평균 보다 작은 평균 인코딩된 프레임 사이즈를 갖는 셀들은, 평균 셀 프레임 사이즈가 맵-와이드 평균과 거의 동일해질 때까지, 더 높은 인코더 품질 설정으로 다시 인코딩될 것이다. 특정 실시예들에서, 주어진 셀에 대한 프레임들의 시퀀스는 멀티-패스 인코딩 모드에서 고정된 수의 패스들로 인코딩될 수 있다. 다른 실시예들에서, 시퀀스는, 프레임 당 사이즈들이 값에 정착하여, 최종 인코딩 패스와 최종으로부터 두 번째의 인코딩 패스 사이에서 변경되지 않을 때까지, 멀티-패스 인코딩 모드에서 연속적인 패스들을 통해 공급될 수 있다. 도 7의 예시에서, 단계(714)에서의 셀 B6에 대한 평균 인코딩된 프레임 사이즈는, 단계(718)에 나타낸 "모든 셀에 대한 평균 인코딩된 프레임 사이즈"에서의 모든 셀에 대한 평균 인코딩된 프레임 사이즈 보다 높다. "셀 B6 프레임들" 단계(708)에서 셀 B6에 속하는 공간 관련 프레임들은, "셀 B6에 대한 더 낮은 평균 인코딩된 프레임 사이즈" 단계(724)에서의 셀 B6에 대한 평균 인코딩된 프레임 사이즈가 "모든 셀에 대한 평균 인코딩된 프레임 사이즈" 단계(718)에 나타낸 모든 셀에 대한 평균 인코딩된 프레임 사이즈와 거의 동일한 사이즈로 될 때까지, "더 낮은 품질 인코딩" 단계(720)에서, 멀티-패스 인코딩 모드 및 타겟 프레임 사이즈를 사용하여 인코더에서 오리지널 플레이스루 시퀀스의 컨텍스트 내에서 다시 인코딩된다. 프로세스가 모든 셀들에 대해 완료될 때, 셀들에 대한 모든 평균 프레임 사이즈들은 거의 동일한 사이즈여야 한다.
각 셀은, 맵-와이드 평균 인코딩된 프레임 사이즈와 비슷한 사이즈의 셀에 대한 평균 인코딩된 프레임 사이즈를 생성하는 데 사용된 연관된 인코더 품질 설정을 가져야 한다. 셀 당 인코더 품질 설정들은, 예시적으로 하기 수학식 6에 따라, 맵-와이드 평균 인코더 품질 설정에 의해 정규화될 수 있다.
Figure 112021007763426-pat00006
비디오 스트리밍 동안, 게임은 현재의 플레이어 위치에 대응하는 히트맵 셀로부터의 정규화된 인코더 품질 설정을 가져와서, 그것을 품질 설정 오버라이드를 전송함으로써 인코더에 힌트를 주기 위해 사용할 수 있다. 상술된 바와 같이, 특정 실시예들에서, 일정 비율 팩터(CRF) 모드에서 실행되는 H.264 표준 호환 라이브러리 ffmpeg 는 인코더에 힌트를 주기 위해 -crf 스위치를 사용하여 명령 라인의 오버라이드 양자화 파라미터 값을 수용할 것이다. 정규화된 인코더 품질 설정들이 추출될 수 있는 예시적인 히트맵이 도 8에 도시되어 있다.
인코더 품질 설정들이 정규화됨에 따라, 그들은 도 4의 “게임 시퀀스에 대해 사전 생성된 인코더 설정들 찾기” 단계(402)에 의해 설명된 준비 단계 동안, 공간 관련 시퀀스 및 시간 관련 시퀀스와 같은 복수의 소스(source)들로부터 결합될 수 있다. 이러한 단계 전에, 정규화된 값들은 각 소스 시퀀스로부터의 인코딩된 비디오 비트레이트에 대한 영향들을 암시적으로 설명하는 인코더 품질 설정을 생성하기 위해 함께 곱해질 수 있다. 예를 들어, 플레이어의 위치는 히트맵으로부터 사전 생성된 정규화된 인코더 품질 설정을 판독하는 데 사용되고, 플레이어의 무기(weapon)는 시간-시리즈의 사전 생성된 정규화된 인코더 품질 설정을 갖는 파이어링(firing) 시퀀스를 생성한다. 이러한 두 개의 정규화된 값들은, 인코딩된 비디오 비트레이트에 대한 플레이어 위치와 무기 선택의 효과를 통합하기 위해, 준비 단계 동안 함께 곱해진다.
전술된 설명 및 도면은 본 발명의 원리를 단지 예시하는 것으로 간주되어야 한다. 본 발명은 바람직한 실시예에 의해 제한되도록 의도되지 않고, 해당 기술 분야에서 통상의 지식을 가진 자에게 명백한 다양한 방식들로 구현될 수 있다. 본 발명의 다수의 응용들이 해당 기술 분야에서 통상의 지식을 가진 자에게 용이하게 일어날 것이다. 따라서, 개시된 특정 예시들 또는 도시되고 설명된 정확한 구성과 동작으로 본 발명을 제한하는 것은 바람직하지 않다. 오히려, 모든 적합한 수정들 및 균등물들이 본 발명의 범주 내에 속하는 것으로 의지될 수 있다.

Claims (24)

  1. 단계들을 포함하는 데이터를 인코딩하기 위한 컴퓨터로 구현된 방법에 있어서,
    단계들은,
    게임 환경에서의 하나 이상의 플레이스루(playthrough)들을 기록하는 단계;
    상기 하나 이상의 플레이스루들로부터의 복수의 프레임(frame)들을 히트맵(heatmap) 상의 복수의 셀(cell)들로 분류하는 단계 - 상기 분류하는 단계는 상기 히트맵과 연관된 분류된 프레임들의 리스트를 결과로 낳음 -;
    렌더러(renderer)에서, 상기 분류된 프레임들의 리스트를 수집하는 단계;
    상기 히트맵의 각 셀에 대한 평균 인코딩된 프레임 사이즈(average encoded frame size)를 계산하기 위해, 상기 분류된 프레임들의 리스트로부터 하나 이상의 프레임들을 인코딩하는 단계;
    각 셀의 상기 평균 인코딩된 프레임 사이즈로부터 상기 히트맵에 대한 평균 프레임 사이즈를 계산하는 단계;
    상기 각 셀에 대한 평균 인코딩된 프레임 사이즈가 상기 히트맵에 대한 평균 프레임 사이즈에 근접하도록 하는 셀 당(per-cell) 인코더 품질 설정을 기록하는 단계; 및
    상기 셀 당 인코더 품질 설정을 히트맵 평균 인코더 품질 설정에 의해 정규화하는 단계
    를 포함하고,
    상기 하나 이상의 플레이스루들 이후의 게임플레이(gameplay) 동안, 상기 히트맵의 상기 셀에 대응하는 상기 셀 당 정규화된 인코더 품질 설정은,
    비디오 시퀀스(video sequence)를 코딩하도록 인코더에 힌트(hint)를 주기 위해 사용되는, 방법.
  2. 제1 항에 있어서,
    상기 하나 이상의 프레임들은,
    싱글-패스(single pass)로 상기 비디오 시퀀스로 코딩되는, 방법.
  3. 제1 항에 있어서,
    상기 렌더러에서, 상기 셀 당 정규화된 인코더 품질 설정들을 저장하는 단계
    를 더 포함하는, 방법.
  4. 제1 항에 있어서,
    상기 하나 이상의 플레이스루들은,
    원격 측정(telemetry) 서버에 저장되는, 방법.
  5. 제1 항에 있어서,
    상기 하나 이상의 플레이스루들은,
    복수의 프레임들 및 상기 복수의 프레임들 각각과 연관되고 상기 히트맵 내의 셀에 대응하는 플레이어 위치(player location)를 포함하는, 방법.
  6. 제5 항에 있어서,
    상기 플레이어 위치는,
    상기 인코더에 힌트를 주는 상기 셀 당 정규화된 인코더 품질 설정을 선택하는 데 사용되는, 방법.
  7. 제1 항에 있어서,
    상기 셀 당 정규화된 인코더 품질 설정들은,
    하기 수학식
    Figure 112021007763426-pat00007

    에 의해 계산되는, 방법.
  8. 제1 항에 있어서,
    복수의 셀들을 포함하는 공간 관련 시퀀스 및 복수의 프레임들을 포함하는 시간 관련 시퀀스로부터의 상기 셀 당 정규화된 인코더 품질 설정들을 결합하는 단계
    를 더 포함하는, 방법.
  9. 데이터를 인코딩하기 위한 시스템에 있어서,
    렌더러 - 상기 렌더러는,
    게임 환경에서의 하나 이상의 플레이스루들을 기록하고;
    상기 하나 이상의 플레이스루들로부터의 복수의 프레임들을 히트맵 상의 복수의 셀들로 분류하고 - 상기 분류하는 것은, 상기 히트맵과 연관된 분류된 프레임들의 리스트를 결과로 낳음 -;
    상기 분류된 프레임들의 리스트를 수집하고;
    각 셀의 평균 인코딩된 프레임 사이즈로부터 상기 히트맵에 대한 평균 프레임 사이즈를 계산함 -; 및
    인코더 - 상기 인코더는,
    상기 히트맵의 각 셀에 대한 평균 인코딩된 프레임 사이즈를 계산하기 위해, 상기 분류된 프레임들의 리스트로부터 하나 이상의 프레임들을 인코딩하고;
    상기 각 셀에 대한 평균 인코딩된 프레임 사이즈가 상기 히트맵에 대한 평균 프레임 사이즈에 근접하도록 하는 셀 당 인코더 품질 설정을 기록함-
    를 포함하고,
    상기 렌더러는 상기 셀 당 인코더 품질 설정을 히트맵 평균 인코더 품질 설정에 의해 정규화하며,
    상기 하나 이상의 플레이스루들 이후의 게임플레이 동안, 상기 히트맵의 상기 셀에 대응하는 상기 셀 당 정규화된 인코더 품질 설정은,
    비디오 시퀀스를 코딩하도록 상기 인코더에 힌트를 주기 위해 사용되는, 시스템.
  10. 제9 항에 있어서,
    상기 하나 이상의 프레임들은,
    싱글-패스로 상기 비디오 시퀀스로 코딩되는, 시스템.
  11. 제9 항에 있어서,
    상기 렌더러는,
    상기 셀 당 정규화된 인코더 품질 설정들을 저장하는, 시스템.
  12. 제9 항에 있어서,
    상기 하나 이상의 플레이스루들은,
    원격 측정 서버에 저장되는, 시스템.
  13. 제9 항에 있어서,
    상기 하나 이상의 플레이스루들은,
    복수의 프레임들 및 상기 복수의 프레임들 각각과 연관되고 상기 히트맵 내의 셀에 대응하는 플레이어 위치를 포함하는, 시스템.
  14. 제13 항에 있어서,
    상기 플레이어 위치는,
    상기 인코더에 힌트를 주는 상기 셀 당 정규화된 인코더 품질 설정을 선택하는 데 사용되는, 시스템.
  15. 제9 항에 있어서,
    상기 셀 당 정규화된 인코더 품질 설정들은,
    하기 수학식
    Figure 112021007763426-pat00008

    에 의해 계산되는, 시스템.
  16. 제9 항에 있어서,
    상기 셀 당 정규화된 인코더 품질 설정들은,
    복수의 셀들을 포함하는 공간 관련 시퀀스 및 복수의 프레임들을 포함하는 시간 관련 시퀀스로부터 결합되는, 시스템.
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
KR1020217001990A 2017-04-21 2018-04-20 프리-인코딩된 로드 추정 기반 인코더 힌팅을 위한 시스템들 및 방법들 KR102358294B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020227001835A KR102460792B1 (ko) 2017-04-21 2018-04-20 프리-인코딩된 로드 추정 기반 인코더 힌팅을 위한 시스템들 및 방법들

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US201762488526P 2017-04-21 2017-04-21
US62/488,526 2017-04-21
US201862647180P 2018-03-23 2018-03-23
US62/647,180 2018-03-23
US201862655901P 2018-04-11 2018-04-11
US62/655,901 2018-04-11
KR1020197033917A KR20200021047A (ko) 2017-04-21 2018-04-20 렌더링 및 프리-인코딩된 로드 추정 기반 인코더 힌팅을 위한 시스템들 및 방법들
PCT/US2018/028594 WO2018195440A1 (en) 2017-04-21 2018-04-20 Systems and methods for rendering & pre-encoded load estimation based encoder hinting

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020197033917A Division KR20200021047A (ko) 2017-04-21 2018-04-20 렌더링 및 프리-인코딩된 로드 추정 기반 인코더 힌팅을 위한 시스템들 및 방법들

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020227001835A Division KR102460792B1 (ko) 2017-04-21 2018-04-20 프리-인코딩된 로드 추정 기반 인코더 힌팅을 위한 시스템들 및 방법들

Publications (2)

Publication Number Publication Date
KR20210010668A KR20210010668A (ko) 2021-01-27
KR102358294B1 true KR102358294B1 (ko) 2022-02-08

Family

ID=63854317

Family Applications (4)

Application Number Title Priority Date Filing Date
KR1020217001990A KR102358294B1 (ko) 2017-04-21 2018-04-20 프리-인코딩된 로드 추정 기반 인코더 힌팅을 위한 시스템들 및 방법들
KR1020217028704A KR102447074B1 (ko) 2017-04-21 2018-04-20 렌더링 및 프리-인코딩된 로드 추정 기반 인코더 힌팅을 위한 시스템들 및 방법들
KR1020197033917A KR20200021047A (ko) 2017-04-21 2018-04-20 렌더링 및 프리-인코딩된 로드 추정 기반 인코더 힌팅을 위한 시스템들 및 방법들
KR1020227001835A KR102460792B1 (ko) 2017-04-21 2018-04-20 프리-인코딩된 로드 추정 기반 인코더 힌팅을 위한 시스템들 및 방법들

Family Applications After (3)

Application Number Title Priority Date Filing Date
KR1020217028704A KR102447074B1 (ko) 2017-04-21 2018-04-20 렌더링 및 프리-인코딩된 로드 추정 기반 인코더 힌팅을 위한 시스템들 및 방법들
KR1020197033917A KR20200021047A (ko) 2017-04-21 2018-04-20 렌더링 및 프리-인코딩된 로드 추정 기반 인코더 힌팅을 위한 시스템들 및 방법들
KR1020227001835A KR102460792B1 (ko) 2017-04-21 2018-04-20 프리-인코딩된 로드 추정 기반 인코더 힌팅을 위한 시스템들 및 방법들

Country Status (15)

Country Link
US (5) US10225564B2 (ko)
EP (4) EP3635954A4 (ko)
JP (3) JP7145203B2 (ko)
KR (4) KR102358294B1 (ko)
CN (2) CN112153029A (ko)
AU (3) AU2018255414B2 (ko)
BR (1) BR112019021628A2 (ko)
CA (6) CA3059747C (ko)
DE (1) DE112018002112T5 (ko)
GB (6) GB2595029B (ko)
MX (2) MX2020012597A (ko)
RU (3) RU2753157C2 (ko)
TW (4) TWI681666B (ko)
WO (1) WO2018195440A1 (ko)
ZA (3) ZA201907683B (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11146608B2 (en) * 2017-07-20 2021-10-12 Disney Enterprises, Inc. Frame-accurate video seeking via web browsers
US10841356B2 (en) 2018-11-28 2020-11-17 Netflix, Inc. Techniques for encoding a media title while constraining bitrate variations
US10880354B2 (en) * 2018-11-28 2020-12-29 Netflix, Inc. Techniques for encoding a media title while constraining quality variations
CN111632382B (zh) * 2020-05-25 2021-06-25 腾讯科技(深圳)有限公司 游戏数据同步方法、装置、计算机及可读存储介质
CN111954067B (zh) * 2020-09-01 2022-10-04 杭州视洞科技有限公司 一种提高视频渲染效率与用户交互流畅度的方法
JP7024842B2 (ja) 2020-10-16 2022-02-24 日本ポリプロ株式会社 プロピレン単独重合体
KR20230154999A (ko) * 2021-08-16 2023-11-09 구글 엘엘씨 공유 참조 프레임을 사용한 저지연 다중 패스 프레임-레벨 전송률 제어
US20230247205A1 (en) * 2022-01-31 2023-08-03 Sling TV L.L.C. Bandwidth management using dynamic quality factor adjustments
WO2024001621A1 (en) * 2022-06-27 2024-01-04 Mediatek Inc. Multimedia system with dynamic adaptation

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150092856A1 (en) * 2013-10-01 2015-04-02 Ati Technologies Ulc Exploiting Camera Depth Information for Video Encoding
US20160088299A1 (en) * 2014-09-22 2016-03-24 Sony Computer Entertainment Inc. Adaptive picture section encoding mode decision control

Family Cites Families (96)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4501980A (en) 1982-06-04 1985-02-26 Motornetics Corporation High torque robot motor
JPH06129865A (ja) 1992-10-20 1994-05-13 Sumitomo Electric Ind Ltd シングルモ−ドファイバ型デポラライザとその製造方法及び光ファイバジャイロ
JP3265818B2 (ja) * 1994-04-14 2002-03-18 松下電器産業株式会社 動画符号化方法
US5506844A (en) * 1994-05-20 1996-04-09 Compression Labs, Inc. Method for configuring a statistical multiplexer to dynamically allocate communication channel bandwidth
US6118817A (en) * 1997-03-14 2000-09-12 Microsoft Corporation Digital video signal encoder and encoding method having adjustable quantization
EP0919952A1 (en) * 1997-11-28 1999-06-02 Ecole Polytechnique Federale De Lausanne Method for coding/decoding of a digital signal
TW501022B (en) * 1998-03-16 2002-09-01 Mitsubishi Electric Corp Moving picture coding system
US7254116B2 (en) 2000-04-07 2007-08-07 Broadcom Corporation Method and apparatus for transceiver noise reduction in a frame-based communications network
EP1173026B1 (en) * 2000-07-10 2008-07-30 STMicroelectronics S.r.l. A method of compressing digital images
JP2005530250A (ja) 2002-06-12 2005-10-06 ジェナ ジョーダル, 複数階層視座を実現するデータ格納、取り出し、操作、及び表示ツール
CA2491522C (en) 2002-07-01 2014-12-09 E G Technology Inc. Efficient compression and transport of video over a network
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
US8840475B2 (en) * 2002-12-10 2014-09-23 Ol2, Inc. Method for user session transitioning among streaming interactive video servers
US9192859B2 (en) 2002-12-10 2015-11-24 Sony Computer Entertainment America Llc System and method for compressing video based on latency measurements and other feedback
BRPI0411757A (pt) * 2003-06-26 2006-09-19 Thomson Licensing controle de taxa de vìdeo multipasse para casar restrições de canal de janela deslizante
KR101083100B1 (ko) * 2003-07-18 2011-11-16 코닌클리케 필립스 일렉트로닉스 엔.브이. 디지털 비디오 스트림 내의 컨텐트 아이템 검출
JP4180468B2 (ja) * 2003-08-11 2008-11-12 カノープス株式会社 画像圧縮システム及び画像圧縮方法
US7263126B2 (en) * 2003-09-15 2007-08-28 Sharp Laboratories Of America, Inc. System and method for transcoding with adaptive bit rate control
US7408984B2 (en) 2003-09-17 2008-08-05 International Business Machines Corporation Method and system for multiple pass video coding
US8533597B2 (en) 2003-09-30 2013-09-10 Microsoft Corporation Strategies for configuring media processing functionality using a hierarchical ordering of control parameters
US7818444B2 (en) 2004-04-30 2010-10-19 Move Networks, Inc. Apparatus, system, and method for multi-bitrate content streaming
US20060230428A1 (en) 2005-04-11 2006-10-12 Rob Craig Multi-player video game system
JP4996603B2 (ja) * 2005-07-08 2012-08-08 タグ ネットワークス,インコーポレイテッド 事前符号化マクロブロックを使用するビデオゲームシステム
US7773672B2 (en) * 2006-05-30 2010-08-10 Freescale Semiconductor, Inc. Scalable rate control system for a video encoder
US8874725B1 (en) * 2006-11-15 2014-10-28 Conviva Inc. Monitoring the performance of a content player
US20080195664A1 (en) 2006-12-13 2008-08-14 Quickplay Media Inc. Automated Content Tag Processing for Mobile Media
JP4843482B2 (ja) 2006-12-27 2011-12-21 株式会社東芝 情報処理装置およびプログラム
US20080181298A1 (en) * 2007-01-26 2008-07-31 Apple Computer, Inc. Hybrid scalable coding
US8090016B2 (en) * 2007-05-17 2012-01-03 Zoran Corporation Activity normalization for video encoding
US8069258B1 (en) 2007-09-11 2011-11-29 Electronic Arts Inc. Local frame processing to apparently reduce network lag of multiplayer deterministic simulations
WO2009136878A1 (en) 2008-05-08 2009-11-12 Mamoun Al Durra The automatic car cover
US8264493B2 (en) * 2008-05-12 2012-09-11 Playcast Media Systems, Ltd. Method and system for optimized streaming game server
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
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
US8621044B2 (en) * 2009-03-16 2013-12-31 Microsoft Corporation Smooth, stateless client media streaming
JP5342391B2 (ja) * 2009-09-25 2013-11-13 株式会社メガチップス 画像処理装置
US9565439B2 (en) * 2009-10-15 2017-02-07 Nbcuniversal Media, Llc System and method for enhancing data compression using dynamic learning and control
US9338523B2 (en) 2009-12-21 2016-05-10 Echostar Technologies L.L.C. Audio splitting with codec-enforced frame sizes
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
US9456015B2 (en) * 2010-08-10 2016-09-27 Qualcomm Incorporated Representation groups for network streaming of coded multimedia data
US20120057629A1 (en) * 2010-09-02 2012-03-08 Fang Shi Rho-domain Metrics
US8965140B1 (en) * 2011-01-31 2015-02-24 Teradici Corporation Method and apparatus for encoding mixed content image sequences
US8411971B1 (en) * 2011-02-09 2013-04-02 Adobe Systems Incorporated Method and apparatus for normalizing perceptual quality in media compression
US9071841B2 (en) * 2011-05-17 2015-06-30 Microsoft Technology Licensing, Llc Video transcoding with dynamically modifiable spatial resolution
US9426494B2 (en) * 2011-07-18 2016-08-23 Ziilabs Inc., Ltd. Systems and methods with early variance measure used to optimize video encoding
JP5155462B2 (ja) 2011-08-17 2013-03-06 株式会社スクウェア・エニックス・ホールディングス 動画配信サーバ、動画再生装置、制御方法、プログラム、及び記録媒体
US20150082345A1 (en) * 2011-09-29 2015-03-19 Avvasi Inc. System for generating enhanced advertizements and methods for use therewith
JP5977023B2 (ja) 2011-11-07 2016-08-24 株式会社スクウェア・エニックス・ホールディングス 描画システム、プログラム、及び記録媒体
US9110626B2 (en) 2012-02-14 2015-08-18 Microsoft Technology Licensing, Llc Video detection in remote desktop protocols
US9345966B2 (en) * 2012-03-13 2016-05-24 Sony Interactive Entertainment America Llc Sharing recorded gameplay to a social graph
EP2645713A1 (en) * 2012-03-30 2013-10-02 Alcatel Lucent Method and apparatus for encoding a selected spatial portion of a video stream
US9621869B2 (en) * 2012-05-24 2017-04-11 Sony Corporation System and method for rendering affected pixels
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
US9984504B2 (en) * 2012-10-01 2018-05-29 Nvidia Corporation System and method for improving video encoding using content information
CN104685873B (zh) * 2012-10-05 2017-12-15 索尼公司 编码控制设备以及编码控制方法
WO2014120368A1 (en) 2013-01-30 2014-08-07 Intel Corporation Content adaptive entropy coding for next generation video
US9661351B2 (en) 2013-03-15 2017-05-23 Sony Interactive Entertainment America Llc Client side frame prediction for video streams with skipped frames
US10242462B2 (en) * 2013-04-02 2019-03-26 Nvidia Corporation Rate control bit allocation for video streaming based on an attention area of a gamer
US9079108B2 (en) 2013-05-31 2015-07-14 Empire Technology Development Llc Cache-influenced video games
US20150020806A1 (en) * 2013-07-19 2015-01-22 Merck Sharp & Dohme Corp. Dry powder inhaler for delivering multipe agglomerate formulations
AU2014311265B2 (en) * 2013-08-29 2019-05-02 Isee Vc Pty Ltd Quality controller for video image
US9749642B2 (en) 2014-01-08 2017-08-29 Microsoft Technology Licensing, Llc Selection of motion vector precision
US20150208069A1 (en) * 2014-01-23 2015-07-23 Magnum Semiconductor, Inc. Methods and apparatuses for content-adaptive quantization parameter modulation to improve video quality in lossy video coding
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
EP3114835B1 (en) 2014-03-04 2020-04-22 Microsoft Technology Licensing, LLC Encoding strategies for adaptive switching of color spaces
CN104952096B (zh) * 2014-03-31 2018-06-08 中国电信股份有限公司 Cpu和gpu混合云渲染方法、装置和系统
US20150288965A1 (en) * 2014-04-08 2015-10-08 Microsoft Corporation Adaptive quantization for video rate control
US20150296215A1 (en) * 2014-04-11 2015-10-15 Microsoft Corporation Frame encoding using hints
EP2960854A1 (en) 2014-06-27 2015-12-30 Thomson Licensing Method and device for determining a set of modifiable elements in a group of pictures
US9762919B2 (en) 2014-08-28 2017-09-12 Apple Inc. Chroma cache architecture in block processing pipelines
US10264269B2 (en) * 2014-10-13 2019-04-16 Apple Inc. Metadata hints to support best effort decoding for green MPEG applications
US10063866B2 (en) 2015-01-07 2018-08-28 Texas Instruments Incorporated Multi-pass video encoding
US10404986B2 (en) 2015-03-30 2019-09-03 Netflix, Inc. Techniques for optimizing bitrates and resolutions during encoding
TW201642655A (zh) 2015-04-21 2016-12-01 Vid衡器股份有限公司 基於藝術意向之視訊編碼
JP6494439B2 (ja) * 2015-06-05 2019-04-03 キヤノン株式会社 通信装置およびその制御方法
CN105163134B (zh) 2015-08-03 2018-09-07 腾讯科技(深圳)有限公司 直播视频的视频编码参数设置方法、装置及视频编码设备
US9807416B2 (en) 2015-09-21 2017-10-31 Google Inc. Low-latency two-pass video coding
US10425648B2 (en) 2015-09-29 2019-09-24 Qualcomm Incorporated Video intra-prediction using position-dependent prediction combination for video coding
US20170105004A1 (en) * 2015-10-07 2017-04-13 Qualcomm Incorporated Methods and systems of coding a predictive random access picture using a background picture
JP6910130B2 (ja) 2015-11-06 2021-07-28 三星電子株式会社Samsung Electronics Co.,Ltd. 3dレンダリング方法及び3dレンダリング装置
US10163183B2 (en) 2016-01-13 2018-12-25 Rockwell Collins, Inc. Rendering performance using dynamically controlled samples
US10356406B2 (en) 2016-01-19 2019-07-16 Google Llc Real-time video encoder rate control using dynamic resolution switching
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
US9639935B1 (en) 2016-05-25 2017-05-02 Gopro, Inc. Apparatus and methods for camera alignment model calibration
US10244167B2 (en) * 2016-06-17 2019-03-26 Gopro, Inc. Apparatus and methods for image encoding using spatially weighted encoding quality parameters
US10567775B2 (en) * 2016-10-01 2020-02-18 Intel Corporation Method and system of hardware accelerated video coding with per-frame parameter control
US10798404B2 (en) 2016-10-05 2020-10-06 Qualcomm Incorporated Systems and methods of performing improved local illumination compensation
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
US20180176285A1 (en) 2016-12-15 2018-06-21 The Directv Group, Inc. Enhanced transmission of media to client devices
US10812559B2 (en) 2017-01-18 2020-10-20 Amazon Technologies, Inc. Just-in-time variable adaptive encoding and delivery of media content
US10419785B2 (en) * 2017-07-21 2019-09-17 Cisco Technology, Inc. Distributed learning video encoder/decoder
US10045053B1 (en) 2017-08-23 2018-08-07 Amazon Technologies, Inc. Fragment insertion for live media streams

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150092856A1 (en) * 2013-10-01 2015-04-02 Ati Technologies Ulc Exploiting Camera Depth Information for Video Encoding
US20160088299A1 (en) * 2014-09-22 2016-03-24 Sony Computer Entertainment Inc. Adaptive picture section encoding mode decision control

Also Published As

Publication number Publication date
JP7050836B2 (ja) 2022-04-08
CA3106617A1 (en) 2018-10-25
CA3108057A1 (en) 2018-10-25
CN110945849B (zh) 2021-06-08
US10225564B2 (en) 2019-03-05
RU2753157C2 (ru) 2021-08-12
TW201904292A (zh) 2019-01-16
RU2020114319A3 (ko) 2020-07-07
GB202103312D0 (en) 2021-04-21
GB2583826A (en) 2020-11-11
BR112019021628A2 (pt) 2020-05-12
CA3059747A1 (en) 2018-10-25
TWI681666B (zh) 2020-01-01
KR20200021047A (ko) 2020-02-27
EP3720130A1 (en) 2020-10-07
JP2020110608A (ja) 2020-07-27
GB2583825B (en) 2021-05-12
EP3635954A4 (en) 2020-07-15
TWI684358B (zh) 2020-02-01
KR20210010668A (ko) 2021-01-27
US20180309811A1 (en) 2018-10-25
GB2577642A (en) 2020-04-01
CA3159950A1 (en) 2018-10-25
GB202104290D0 (en) 2021-05-12
GB202104855D0 (en) 2021-05-19
CA3159952A1 (en) 2018-10-25
RU2752723C2 (ru) 2021-07-30
US20180310009A1 (en) 2018-10-25
EP3739881A1 (en) 2020-11-18
US11202084B2 (en) 2021-12-14
GB2577642B (en) 2021-05-19
CN110945849A (zh) 2020-03-31
DE112018002112T5 (de) 2020-01-16
MX2020012597A (es) 2021-10-19
ZA202007053B (en) 2022-03-30
GB2591410A (en) 2021-07-28
US20190281313A1 (en) 2019-09-12
TW202017388A (zh) 2020-05-01
ZA202007213B (en) 2022-04-28
WO2018195440A1 (en) 2018-10-25
TWI742510B (zh) 2021-10-11
KR20220012426A (ko) 2022-02-03
JP2022065047A (ja) 2022-04-26
JP7291820B2 (ja) 2023-06-15
US11503313B2 (en) 2022-11-15
GB202002838D0 (en) 2020-04-15
AU2018255414A1 (en) 2019-12-05
EP4109899A1 (en) 2022-12-28
CA3159950C (en) 2024-01-23
GB2593598B (en) 2021-12-29
GB2593598A (en) 2021-09-29
EP3720130B1 (en) 2022-09-28
JP7145203B2 (ja) 2022-09-30
CA3106617C (en) 2023-11-07
GB2595029B (en) 2022-02-09
KR20210114553A (ko) 2021-09-23
US20210058630A1 (en) 2021-02-25
GB202002769D0 (en) 2020-04-15
US10869045B2 (en) 2020-12-15
ZA201907683B (en) 2021-04-28
RU2720067C1 (ru) 2020-04-23
TWI737045B (zh) 2021-08-21
GB201916973D0 (en) 2020-01-08
AU2020289756A1 (en) 2021-01-21
CA3087809C (en) 2021-03-09
KR102460792B1 (ko) 2022-10-28
RU2019138226A (ru) 2019-12-27
US20190158856A1 (en) 2019-05-23
RU2020114319A (ru) 2020-06-18
CA3059747C (en) 2021-03-23
TW202015408A (zh) 2020-04-16
EP3635954A1 (en) 2020-04-15
GB2583825A (en) 2020-11-11
JP2020520204A (ja) 2020-07-02
RU2019138226A3 (ko) 2020-06-30
AU2020289755B2 (en) 2021-11-25
CA3087809A1 (en) 2018-10-25
AU2020289756B2 (en) 2021-11-25
CN112153029A (zh) 2020-12-29
AU2018255414B2 (en) 2021-01-21
GB2595029A (en) 2021-11-17
TW201842778A (zh) 2018-12-01
MX2021004094A (es) 2021-06-08
AU2020289755A1 (en) 2021-01-21
GB2583826B (en) 2021-05-19
US10362320B2 (en) 2019-07-23
KR102447074B1 (ko) 2022-09-23

Similar Documents

Publication Publication Date Title
KR102358294B1 (ko) 프리-인코딩된 로드 추정 기반 인코더 힌팅을 위한 시스템들 및 방법들

Legal Events

Date Code Title Description
A107 Divisional application of patent
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
A107 Divisional application of patent
GRNT Written decision to grant