Game Motion Vectors for Low-Latency Remote Video Encoding

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing video encoding methods in real-time gaming environments are inefficient due to high latency caused by computationally intensive motion estimation, which is exacerbated by the separation of video encoding and graphics rendering processes, leading to suboptimal encoding times and quality.

Innovation Solution

Integrating a 3D graphics engine with a video codec engine to provide pre-calculated per-pixel motion vectors, converting them into per-block motion vectors, and injecting these into the encoding process, thereby skipping the motion estimation step and reducing computational overhead.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of substance

If block-based motion estimation is used to reduce encoded video size, then video compression efficiency is improved, but encoding latency increases significantly

Engineering Contradiction:
Improveencoded video sizeVSAvoidencoding latency
Core Design Contradiction:
Loss of substanceVSLoss of time

Solution Approach 1:

The graphics engine pre-calculates per-pixel motion vectors during the rendering process before encoding begins. These motion vectors are computed as a byproduct of the rendering pipeline, eliminating the need for separate motion estimation calculations during encoding, thus reducing encoding latency while maintaining compression efficiency

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The motion vector data is extracted from the graphics rendering pipeline and injected directly into the video encoder. This separates the motion estimation function from the traditional encoding process, allowing the encoder to skip computationally intensive block-based motion estimation while still achieving effective video compression

Inventive Principle:
Principle #2Taking out (Extraction)

2Device complexity

If traditional separate encoding and rendering processes are used, then process simplicity is maintained, but encoding time and computational power increase

Engineering Contradiction:
Improveprocess simplicityVSAvoidencoding speed
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The graphics rendering pipeline and video encoding process are merged into a unified system. The graphics engine generates both the rendered video frames and the corresponding motion vector data simultaneously, allowing the encoder to receive both inputs together and skip the motion estimation step, thereby reducing encoding time and computational power requirements

Inventive Principle:
Principle #5Merging (Combining)

3Manufacturing precision

If block-based motion estimation is used, then motion approximation is achieved, but video quality deteriorates due to latency and computational limitations

Engineering Contradiction:
Improvemotion approximation accuracyVSAvoidencoding time
Core Design Contradiction:
Manufacturing precisionVSLoss of time

Solution Approach 1:

The system changes the granularity of motion data from block-based (macroblock level) to per-pixel level by utilizing motion vectors generated during graphics rendering. This finer granularity provides more accurate motion representation, improving video quality while the pre-calculation aspect reduces encoding time

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS12003756B2Systems and methods for game-generated motion vectors
Publication Date: 2024.06.04 ZENIMAX MEDIA INC
  • US12003756B2 patent drawing
  • US12003756B2 patent drawing
  • US12003756B2 patent drawing

AI summary

Systems and methods for integrated graphics rendering are disclosed. In certain embodiments, the systems and methods utilize a graphics engine, a video encoding engine, and remote client coding engine to render graphics over a network. The systems and methods involve the generation of per-pixel motion vectors, which are converted to per-block motion vectors at the graphics engine. The graphics engine injects these per-block motion vectors into a video encoding engine, such that the video encoding engine may convert those vectors into encoded video data for transmission to the remote client coding engine.